Conceptos básicos de Python en menos de 128 palabras

En Python todo es objeto. Un objeto es un fragmento de código que se caracteriza por:

  • Datos
  • Métodos: Estos son mecanismos para manipular datos

Creación del objeto

Un objeto de cadena de caracteres se crea en el espacio de objetos a través del carácter 'o '.

Las llamadas al método se realizan a través de un punto:

'hola'.upper()

Un nombre de variable permite almacenar una referencia al objeto:

contador 1

La variable llamada contador de referencia del objeto 1

En python el nombre de la variable contiene letras y números, pero no puede comenzar con un número. Una buena práctica es dar un buen nombre de variable.

Ejemplo:

ma_variable 5

Desreferencia:

ma_variable - 'HELLO'

Python es un lenguaje de escritura seguro, el tipo está relacionado con el objeto y no con la variable.

del ma_variable

El control del quita la variable del espacio de las variables. Si el objeto ya no tiene una referencia, se activa un mecanismo para liberar memoria: el recolector de elementos no utilizados.

El lenguaje Python en menos de 128 palabras

Python es un lenguaje de programación que se caracteriza por:

  • su legibilidad: La sintaxis del lenguaje se basa en la presentación (importancia de la sangría)
  • Pragmático: El objetivo es hacer programas eficaces que contengan el menor número posible de líneas de código.

También es de fácil acceso, por lo que puede intercambiar fácilmente con otros programadores.

La primera versión de Python data de 1994, Python 3 data de 2008. El idioma es estable a medida que las versiones anteriores del idioma se siguen manteniendo (actualizado).

Python es portátil, funciona en la mayoría de las plataformas (móvil, PC, MAC, Linux …), hay muchas librerías disponibles.

Python está bajo licencia PSF, el debate sobre la evolución es democrático y está sujeto al creador del lenguaje Guido Van Rossum.

Ciclo hamiltoniano en un gráfico en menos de 128 palabras

Un ciclo Hamiltoniano es un ciclo que contiene todas las tapas del gráfico.

No hay ningún algoritmo general (es decir, válido para cualquier gráfico) y eficaz (es decir, ningún algoritmo en el número de pasos computacionales o un políno del tamaño del gráfico) para averiguar si hay un ciclo hamiltoniano en un gráfico.

Fuente del ciclo hamiltoniano wikipedia

Condición DIRAC: Si para todos los tops u del gráfico G grado (u) 'n /2 entonces G contiene un ciclo hamiltoniano

Condición ORE: Si para cualquier par usted y v de no vecinos deg(u) 'deg(v) 'entonces G contiene un ciclo hamiltorio

Si un gráfico verifica la condición de diraC, entonces verifica la condición orE (la recíproca es false).

Acoplamiento en un gráfico en menos de 128 palabras

Un acoplamiento es un conjunto de crestas de dos a dos independientes: no comparten picos.

Ejemplo de acoplamiento en un gráfico: las 2 paradas rojas no comparten picos (2 a 2 independientes)

Acoplamiento perfecto: Cada parte superior del gráfico está exactamente en una parada del acoplamiento

Ejemplo de acoplamiento perfecto en un gráfico

Un gráfico perfecto tiene un número par de picos (el recíproco no es cierto)

Un acoplamiento perfecto es un acoplamiento de tamaño máximo (imposible de ampliar, no se puede emparejar más), el recíproco no es cierto.

Ejemplo de acoplamiento máximo pero sin tamaño máximo (es decir, es posible hacer, por ejemplo, un acoplamiento con 3 paradas)

Ejemplo de uso: En una empresa de logística, los empleados tienen uno o más permisos que les permiten conducir un determinado tipo de vehículo. El problema se puede representar en un gráfico con los empleados y vehículos de la empresa como su parte superior. Para resolver el problema, entonces tienes que encontrar un emparejamiento de tamaño máximo.

Algoritmo gluttonoso para encontrar el acoplamiento máximo:

Paso 1: Una parada se selecciona al azar y se almacena en una copia del gráfico (izquierda)

Selección de la parada

Paso 2: Se eliminan las paradas de parada que son incidentales en ambas cumbres y otra parada se selecciona aleatoriamente

Paso 3: Las paradas de parada que son incidentales en ambos picos se eliminan, lo que resulta en el acoplamiento máximo

Google AMP en WordPress en menos de 128 palabras

Google AMP es una tecnología de publicación que te permite crear páginas web que se cargan casi al instante en teléfonos móviles.

Debe crear otra versión de su sitio que cumpla con los estándares del proyecto de amplificador. Una vez hecho esto, tu sitio AMP tendrá su propia URL (votresite.com/page/amp) y será compatible con navegadores web como Chrome, FireFox y Safari.

Para configurar mi sitio wordpress entré en Extensiones – Añadir y me canté la palabra clave "AMP" he
instalado y activado la extensión oficial AMP lanzado por AMP Project Contributors (más información sobre el plugin aquí: https://fr.wordpress.org/plugins/amp/)

En la pestaña AMP-General puedes configurar cómo funciona el plugin:

El plug-in se puede configurar para seguir uno de los tres modos de modelo diferentes: Estándar, Transición y Lector.

En el modo estándar, se utiliza AMP como marco para su sitio y no es necesario crear versiones independientes de AMP y no AMP.

En los modos Lector y Transición, una página determinada tendrá una URL canónica y una URL AMP correspondiente (emparejada). El plugin AMP no sirve como un tema móvil; no redirige los dispositivos móviles a la versión AMP. En su lugar, la versión de AMP se presenta a los visitantes móviles cuando encuentran contenido en plataformas como Twitter, Pinterest, Google Search y otros.

El modo Lector solo admite la entrega de AMP para publicaciones, páginas y otros tipos de publicación, mientras que los modos Estándar y Transición admiten todo el sitio en formato AMP.

La Web explicó en menos de 128 palabras

Internet es una red informática, la Web es una red de información que está conectada por hipertexto.

El servidor web proporciona información cuando se le pregunta: consultas realizadas por clientes web.

El navegador le permite ver la información, envía una consulta HTTP a través de Internet.

El motor de búsqueda responde con una lista de URLs. Las páginas Web contienen HTML describe la estructura y el contenido del documento. La hoja de estilos CSS contiene la forma del código.

El navegador interpreta HTML y CSS y el póster legible por el usuario. Los robots del motor de búsqueda se llaman "spiders" y navegan por las páginas web y sus enlaces: hacen rastreo de sitios web.

El algoritmo PageRank en Python

PageRank es un algoritmo utilizado por la Búsqueda de Google para clasificar los sitios web en los resultados de su motor de búsqueda. PageRank es una forma de medir la importancia de las páginas del sitio web.

Este no es el único algoritmo utilizado por Google para ordenar los resultados del motor de búsqueda, pero es el primer algoritmo utilizado por la empresa que es más conocido.

El PageRank de una página se calcula a partir de la suma de la PageRank de páginas con un enlace que entra en la página calculada que se divide por el número de páginas salientes de la página, se aplica un factor de mitigación para simbolizar la probabilidad de que El usuario navega por otra página.

Instalo networkx, es un paquete Python para la creación, manipulación y estudio de estructura, dinámica y funciones de red complejas.

Networkx proporciona estructuras de datos y métodos para almacenar gráficos que utilizo para el algoritmo de pagerank.

importar networkx como nx
importación numpy como np

graphe-nx. Digraph()

TablePages - ra["A","B","C"]ngo de página #Exemple con 3 páginas
graph.add_nodes_from (tablePages) #Ajout parte superior del gráfico

#on añade arcos, tenemos:
#la la página A tiene un enlace a B 
#la página B tiene un enlace a C
#la la página C tiene un enlace a B
#la página C tiene un enlace a A
La página B tiene 2 enlaces entrantes
La página C tiene un enlace entrante 2 enlaces hacia fuera
La página A tiene un enlace que introduce un enlace saliente
graph.add_edges_from([('A','B'), ('C','A'),('B','C'), ('C','B')])
("Cumbres gráficas:")
impresión (graphe.nodes))
imprimir ("Detener el gráfico:")
impresión (graph.edges)
#Si se considera un factor de atenuación de 0,85 'd'
La fórmula de clasificación de página es:
#PR (1-d)/n - Suma de todas las páginas (PR(i) de enlaces entrantes a p/número de enlace que sale de la página que hace referencia p)
PR(A) - (1-0.85)/3 - 0.85 - (PR(C)/2)
PR(B) - (1-0.85)/3 - 0.85 - (PR(A)/1 - PR(C)/2)
PR(C) - (1-0.85)/3 - 0.85 - (PR(B)/1)

pagerank - nx.pagerank
imprimir (pagerank)

Clasificación de inserción de Python en menos de 128 palabras

La clasificación de inserción es una clasificación lenta y estable, en su lugar (trabajamos en la estructura directamente y no en una copia).

La clasificación por inserción es comparable a la clasificación que se realiza de una baraja de cartas. 

def tri_par_insertion (tabla):
	#parcours de todos los elementos de la pintura
	globalnombre_operation
	para i en el rango (1,len(tab)-1):
		#pour cada uno de los elementos de la tabla pasamos por los precedentes y el intercambio
		#on copia de seguridad del valor del elemento actual
		ValueElementCurrent - tabla[i]
		print ("elemento común: " ' ' ' [i]' ' - index i' ' str(i))
		j i
		#on define el índice j y pasamos por los elementos predents siempre y cuando'
		while(j-0 y table-[j-1]valueElementCourant):
			#si el elemento recorrido entre los valores anteriores es mayor que el elemento actual que se inserta en su lugar y una calcomanía sades a la izquierda
			tabla[j] - tabla[j-1]
			J - 1
			nombre_operation '1'
		#lorsqu salimos del bucle colocamos todos los elementos más alto al elemento actual a la derecha de j, entonces debemos poner el elemento actual en la posición j
						
	tabla [j]- valueElementCourant
		
nombre_operation 0
pestaña[3,9,6,1,2,4,7,5,8]
imprimir ("antes de ordenar por inserción: " - str(tab))
tri_par_insertion (pestaña)
imprimir ("después de ordenar por inserción: " - str(tab))
imprimir ("número de operaciones:" - str(nombre_operation))

Glosario en gráficos en poco más de 128 palabras

fuente wikipedia: Gráfico no orientado

Gráfico: Un conjunto de puntos interconectados

Cumbres (vértices, un vértice): Los puntos de un gráfico se denominan cum
bres adyacentesSommets (vértices adyacentes): Dos picos son adyacentes si están conectados
entre sí, Borde: El vínculo entre dos picos se denomina borde si la relación entre dos cumbre no está orientada (no hay noción de precedencia, o el orden en que uno visita las dos cumbres).

fuente wikipedia: gráfico orientado


Arco (arco): El vínculo orientado entre dos cumbres (es una flecha que indica el significado de la relación orientada, hay una noción de orden de ejecución y restricción pa
ra visitar los dos picos)El grado de un vértice: Número de aristas que son a
partir de una cumbre. Orden de un gráfico: el número de tops en u
n gráfico. Gráfico relacionado :: Un gráfico está relacionado si todas las tapas están conectadas por
cualquier cadena. Ruta euleriana: Cadena que toma todos los bordes una vez del gráfico.


Matriz adyacente: La matriz de adyacencia de un gráfico es una matriz cuyas líneas y columnas están indexadas por la parte superior del gráfico, con un 1 en la celda para la fila i y la columna j cuando las tapas i y j son adyacentes , y un 0 si no.

fuente wikipedia: matriz de adyacencia

CookieViz en Mac OS X en más de 128 palabras

CookieViz es una herramienta de visualización que mide el impacto de las cookies en su propia navegación.

https://linc.cnil.fr/fr/cookieviz-une-dataviz-en-temps-reel-du-tracking-de-votre-navigation

La página es git es https://github.com/LINCnil/CookieViz

Instalo MAMP: https://www.mamp.info/en/downloads/

MAMP es una compilación de software gratuito de código abierto para administrar sitios web dinámicos en equipos que ejecutan macOS o Windows: Apache, el servidor web; MySQL, el sistema de gestión de bases de datos; phP, Perl o Python, lenguajes de programación utilizados para el desarrollo web.

Instalar Homebrew: Homebrew es un sistema gratuito de gestión de software de código abierto que simplifica la instalación de software en el sistema operativo macOS y Linux de Apple.

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

El script pide cambiar al modo de superusuario a través del comando sudo y pide que escriba la contraseña varias veces.

Al final de la instalación se obtiene una instalación exitosa!

Instalo mitmdump que está en el paquete mitmproxy

brew instalar mitmproxy

Validar la instalación tocando mitmdump –version

mitmdump --version
 Mitmproxy: 4.0.4
 Python: 3.7.5
 OpenSSL: OpenSSL 1.1.1d 10 Sep 2019
 Plataforma: Darwin-17.7.0-x86_64-i386-64bit

Empiezo MAMP y no MAMP PRO que se paga

Obtengo la página de inicio de mi servidor web Apache que se inicia en el puerto 8888 por defecto puedo llegar escribiendo localhost:8888 como url en mi navegador.

Si envoy en el menú MAMP -Preferencias puedo cambiar los puertos utilizados.

He descargado de la fuente github de cookieViz https://github.com/LINCnil/CookieViz a través del enlace Clonar y descargar. También es posible iniciar un terminal y colocarse en la raíz del servidor WEB Apache.

Por defecto la raíz está en /Applications/MAMP/htdocs/ pero puede cambiarla a través de la interfaz gráfica MAMP

cd /Applications/MAMP/htdocs/
clon git https://github.com/LINCnil/CookieViz.git

De forma predeterminada, el usuario predeterminado de la base de datos es "raíz" y contraseña "raíz
" Para cambiar la contraseña de forma predet
erminada: https://documentation.mamp.info/en/MAMP-Mac/How-Tos/Change-the-password-of-the-MySQL-root-u
ser/ /Applications/MAMP/Library/bin/mysqladmin -u root -p password

Adición de un usuario phpmyadmin – mysql – usuario 'añadir un usuario' pestaña Cuentas de usuario

Agregué un usuario 'cookvi' con la contraseña 'cookvi'

Edité el archivo settings.inc a través de un editor de texto o nano control

/**
 El servidor de bases de datos utilizado por CookieViz.
 El valor predeterminado es 'localhost' y debe estar bien para la mayoría de los casos.
 Si 'localhost' no funciona y la base de datos se ejecuta localmente, pruebe '127.0.0.1'.
 */
definir ('DB_SERVER', '127.0.0.1:8889');

...

definir ('DB_USER', 'cookvi');

/**
 La contraseña del usuario de la base de datos CookieViz.
 */
definir ('DB_PASSWD', 'cookvi');

Luego edité el archivo nano monitor_mitmdump.php del directorio /soft

cd /Applications/MAMP/htdocs/CookieViz/soft/
nano monitor_mitmdump.php 

Fui a http://localhost:8888/phpmyadmin/ y creé una nueva base CookieViz

Hice clic en la base de datos creada y utilicé la función "importar" y cargué el archivo /Applications/MAMP/htdocs/CookieViz/cookieviz/sql/url_referer-1.sql que contiene la estructura de la tabla

Edite los cuatro valores siguie
ntes $PROXY-HOST – "localhost"; Dirección del servidor p
roxy $PROXY-PORT – "8082"; Puerto del servidor p
roxy $PROXY-USER -""; Nombre de u
suario $PROXY-PASS -""; Contraseña

CookieViz es compatible con php5 y no phpt7 debes esperar cambios en el código:

Reemplazar:

$link - mysql_connect ('localhost', '', '') por $link - mysqli_connect ('127.0.0.1:8889', 'cookvi', 'cookvi','CookieViz') 
mysql_select_db (en lo que mysqli_select_db ($link(cookieViz), ('CookieViz')
mysql_error() de mysqli_connect_error()
mysql_query ($query) de mysqli_query ($link, $query)
mysql_fetch_assoc ($result) por mysqli_fetch_assoc ($result) 
mysql_close ($link) por mysqli_close ($link)  

Inicie un mitmdump de servidor en el puerto 8082
: mitmdump -p 8082 -w mitmdump.log

Ahora estoy lanzando el script php /Applications/MAMP/htdocs/CookieViz/soft/monitor_mitmdump.php

En el nivel firefox entré en conjuntos de preferencias de red en la configuración general y configuré el proxy

Encontramos que tenemos conexiones que pasan a través del servido
r proxy escuchando a http://:8081 127.0.0.1:4
9915: clientconnect 127.0.0.1:4991
5: CONNECT www.youtube.com:443< cannot="" establish
="" tls="" with="" client="" (sni:="" www.youtube.com):="" tlsexception("ssl="" handshake="" error:="" error()")=""[(‘SSL routines’, ‘ssl3_read_bytes’, ‘sslv3 alert bad certificate’)] 12
7.0.0.1:49917:="" clientconnect=""
127.0.0.1:49915:="" clientdisconnect=
"" 127.0.0.1:49917:="" get="" http://detectportal.firefox.com/success.txt
="">< 200="" ok="" 8b="" 127.0
.0.1:49919:="" clientconnect="" 127
.0.0.1:49920:="" clientconnect=""
127.0.0.1:49919:="" get="" http://detectportal.firefox.com/success.txt?ipv4=""
>< 200="" ok="" 8b="" 127.0.0.
1:49920:="" get="" http://detectportal.firefox.com/success.txt?ipv6="">< 200 O
K 8b 200="" ok=""></ 200 OK 8b>

Los resultados se pueden ver en el servidor web http://localhost:8888/CookieViz/cookieviz/