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.
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.
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).
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 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.
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.
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)
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))
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.
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.
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
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/