Entradas Etiquetadas con: ‘nipkowtv

28
jul
08

Como Funciona Google?

Muchos nos hemos preguntado muchas veces como trabaja Google, pues bien, a continuación trataré de explicar un poco como es que este excelente buscador nos entrega las busquedas más exactas.

Primero hay que saber que Google cuenta con una granja de muchisimo mas de 60000 servidores divididos en clusters de 2000 cada uno, así mismo, cada cluster tiene una tasa de trasnferencia de 2 Gbps y almacena mas de 1 Petabyte de datos (1 Petabyte = 1024 Terabyte, 1 Terabyte = 1024 Gigabyte). Esto hace que la probabilidad de fallo sea de 1 o 2 servidores al día. Considerando estos fallos, Google posee redundancia de toda su infraestructura (redes, servidores, discos, etc). Por lo general todos sus equipos son de marcas desconocidas y economicas. Así mismo el sistema operativo es basicamente Linux.

 

 

 

El siguiente es un documento propio de Maldita Internet, a quien agradecemos por la informacion mostrada en su web

Anatomia del sistema

En la siguiente figura se muestra un esquema general de la arquitectura del sistema:

Descripcion general

El motor de indexación de Google esta implementado en C/C++ por razones de eficiencia y puede correr tanto sobre Solaris como sobre Linux. En Google, el proceso de exploración (descargar las páginas a indexar) es realizado por varios exploradores distribuidos. Existe un proceso URLserver que envía listas de URLs a ser descargados a los exploradores. Las páginas que son descargadas son enviadas luego al storeserver. El storeserver comprime y guarda las páginas en un repositorio. Toda página tiene asociado un ID denominado docID que es asignado cada vez que un nuevo URL es interpretado desde una página. La función de indexación es llevada a cabo por un proceso indexador y un clasificador. El indexador lleva a cabo varias funciones: Lee el repositorio, descomprime los documentos y los interpreta, cada documento es convertido en un conjunto de ocurrencias de palabras llamadas hits o aciertos. Cada acierto registra la palabra, posición en el documento y una aproximación del tamaño de la fuente y si está o no en mayúsculas. El indexador distribuye estos aciertos en una serie de “barriles” (barrels) creando un índice. Además, el indexador interpreta todos los enlaces en cada página y guarda información importante sobre los mismos en un archivo llamado anchors, este archivo contiene información suficiente sobre origen y el destino del enlace, y cual es el texto del mismo.

El URLresolver lee registros del archivo de enlaces y convierte URLs relativos en URLs absolutos (por ejemplo si el enlace es desde http://foo.bar/index.htm hacia images/bar.gif el URL absoluto es http://foo.bar/images/bar.gif). Luego convierte los URLs absolutos en docIDs. Pasa el texto del enlace al índice y los asocia con el docID apuntado por el enlace. También genera una base de enlaces que son simplemente pares de docIDs de la forma “desde-hasta”. La base de enlaces es luego usada por el algoritmo de PageRanking para determinar la importancia de cada documento.

El proceso clasificador toma los barrels que están ordenados por docId y los reordena por wordID para generar un índice invertido. Esto es realizado en el mismo lugar para ahorrar espacio auxiliar. El clasificador produce también una lista de wordIDs y desplazamientos al índice invertido. Un programa denominado DumpLexicon toma la lista junto con el léxico producido por el indexador y genera un nuevo léxico para ser usado por el buscador. El buscador es invocado por el servidor web y usa el léxico construido por DumpLexicon junto con el índice invertido y los PageRanks para resolver las búsquedas.

Estructuras de datos

Las estructuras de datos de Google están optimizadas de forma tal que enormes colecciones de documentos puedan ser exploradas, indexadas y buscadas con poco o casi ningún costo.

BigFiles

Un BigFile es un archivo que puede ocupar varios sistemas de ficheros y que se puede direccionar por un desplazamiento de 64 bits, la distribución del archivo en múltiples sistemas de ficheros es manejada automáticamente por la biblioteca de Bigfiles. La biblioteca da al programador una interfaz abstracta que permite manejar los BigFiles como si fueran archivos comunes encargándose de todo el proceso interno necesario para almacenar archivos inmensos.

Repositorio

El repositorio contiene el HTML completo de cada página. Cada página es comprimida usando Zlib. En el repositorio, los documentos se almacenan comprimidos uno a continuación del otro en un archivo secuencial simple y esta prefijados por el docId, longitud y URL como puede verse en la figura 2. El repositorio no requiere otras estructuras para ser usado y accedido. Esto ayuda a darle consistencia al sistema ya que todo el motor de Google y toda la base pueden reconstruirse únicamente a partir del repositorio. Así mismo, el repositorio permite que toda página devuelta por el buscador luego de una consulta pueda ser mostrada al usuario aunque ya no esté disponible en línea. Esto se logra con la opción cached-page del buscador, sumamente útil para sitios antiguos que ya no están, o fueron actualizados, o incluso para los que están fuera de línea en el momento de hacer la consulta.

Document Index

El document index guarda información sobre cada documento. Es un archivo secuencial indexado ISAM ordenado por docID. La información almacenada en cada entrada incluye el estado del documento, una referencia al documento dentro del repositorio, un checksum y varias estadísticas. Si el documento que ha sido explorado contiene también un puntero a un archivo de tamaño variable llamado docinfo que contiene el URL y el título del documento. En el caso contrario, el puntero apunta al URLlist que contiene sólo el URL. Adicionalmente, existe un archivo que es usado para traducir URLs en docIDs, es una lista de URL checksums con sus correspondientes docIds y está ordenada por checksum. Para encontrar el docId de un URL especifico se calcula el checksum del URL y luego se hace una búsqueda binaria dentro de este archivo para encontrar el docID que corresponda al checksum. Los URLs puede ser convertidos en docIDs en lotes haciendo un refundido con este archivo. Esta técnica es usada por el URLresolver para convertir URLs en docIDs. Este modo lotes de actualización es crucial en cuanto a la eficiencia del sistema.

Lexico

El léxico tiene varios formatos diferentes. Un cambio importante es que el léxico puede manejarse en memoria a un precio razonable. El léxico consta de 14 millones de palabras y esta implementado en 2 partes. Una lista de palabras concatenadas entre sí y separadas por NULLs, Y una tabla de hash (dispersión) de punteros. Para varias funciones adicionales, la lista de palabras tiene alguna información auxiliar que esta mas allá del nivel de explicación de este informe.

Hit Lists

Las hit lists (lista de aciertos) es una lista con las ocurrencias de una determinada palabra en un documento en particular incluyendo la posición, fuente y si está o no en mayúsculas. Las hit lists ocupan la mayoría del espacio necesario para los índices, por tal razón deben almacenarse en forma eficiente. Los detalles de codificación de las hit lists se muestran en la siguiente figura:

Este formato de codificación usa dos bytes por cada hit. Hay dos tipos de hits, fancy-hits y plain-hits. Fancy-hits son aquellos que ocurren dentro de una URL, titulo, anchor o meta-tag. Plain-hits son todos los demás. Un plain-hit consiste en un bit que indica si la palabra esta en mayúsculas o minúsculas, tamaño de la fuente y 12 bits para la posición de la palabra en el documento. Todas las posiciones mayores a 4095 se rotulan 4096. El tamaño de la fuente se representa en forma relativa al resto del documento usando 3 bits. Solo 3 valores se usan porque 111 representa un fancy-hit. Un fancy-hit almacena el bit de mayúsculas/minúsculas, el tamaño de la fuente fijada en 111, 4 bits para indicar el tipo de fancy-hit y 8 bits para la posición del mismo. Para enlaces, los 8 bits de posición se separan en 4 bits de posición dentro del texto del anchor y 4 bits para un clave (hash) del docId del documento en el cual esta el enlace.

La longitud de cada hit-list es alamcenada antes de la lista misma.

El índice

El índice sin invertir está en realidad parcialmente ordenado. Está distribuido en barrels (se usan 64 barrels). Cada barrel guarda un rango de wordIDs. Si un documento contiene palabras que corresponden a un determinado barrel, los docIds son registrados en el barrel seguidos de una lista de wordIDs con hit-lists que corresponden a dichas palabras. Este esquema requiere un poco mas de espacio al duplicar los docIDs, pero la diferencia es muy chica por un numero razonable de buckets y salva mucho tiempo y complejidad de programación en la fase final de indexación.

El índice invertido

El índice invertido consiste en los mismos barrels que el índice pero ya procesado por el clasificador. Para cada wordId válido, el léxico contiene un puntero al barrel correspondiente a la palabra. El puntero apunta a una lista de docIDs junto con sus correspondientes hit-lists. Esta lista representa las ocurrencias de la palabra en todos los documentos indexados.

Procesos

Exploración (crawling)

Ejecutar los web exploradores es un proceso complejo. Hay asuntos altamente intrincados referidos al rendimiento y confiabilidad de los procesos y hasta existen problemas sociales involucrados. El proceso de exploración es sin dudas la más frágil de las aplicaciones ya que implica interactuar con cientos de miles de servidores web y servidores de nombre que están mas allá del campo de control del sistema. Para escalar a miles de millones de páginas, Google usa un sistema veloz de exploración distribuido. Un solo URLserver sirve listas de URLs a un numero de exploradores (típicamente 3). Tanto el URLserver como los exploradores están implementados en Python. Cada explorador abre unas 300 conexiones HTTP simultáneamente, esto es necesario para poder bajar páginas a un ritmo razonable. En momentos pico el sistema puede descargar 100 páginas por segundo usando 4 exploradores. Esto implica unos 600KBytes por segundo de datos. Un punto mayor de estrés es el DNS lookup, cada explorador mantiene su propio cache de DNS de forma tal de no tener que hacer un DNS lookup antes de explorar cada documento. Cada una de las cientos de conexiones puede estar en un determinado estado: looking up DNS, conectándose al servidor, enviando solicitud o recibiendo respuesta. Estos factores hacen del explorador un componente complejo en el sistema. Se usa IO asincrónica para manejar eventos y un numero de colas para mover las URLs solicitados de un estado a otro.

Los exploradores utilizados por Google respetan estrictamente el protocolo “robots.txt” para exclusión de robots en algunos sitios y, además, esperan 1 segundo entre conexión y conexión para un mismo servidor web de forma tal de no alterar significativamente el rendimiento de los mismos.

Indexación

Lo primero necesario para indexar páginas web es interpretarlas. El proceso de interpretación debe contemplar un gran, enorme, numero de posibles errores que varían desde errores en etiquetas HTML, miles de ceros en medio de un tag, caracteres no-ASCII, etiquetas mal anidadas y no cerradas, etiquetas anidados en forma casi infinita y gran variedad de otros errores. Para maximizar la velocidad Google usa flex para generar un analizador léxico que se alimenta con su propia pila. El desarrollo de este intérprete, que debe correr a una velocidad razonable y ser muy robusto, involucra gran cantidad de trabajo. Una vez interpretado cada documento es codificado en los barrels. Cada palabra es convertida en un Word-Id usando una tabla de hashing mantenida en memoria, o sea, el léxico. Nuevos agregados a la tabla de hashing del léxico son registrados en un archivo. Una vez que las palabras son convertidas en wordIDs sus ocurrencias en el documento son traducidas a hit-lists y son almacenadas en los barrels. La mayor dificultad con la paralelización de la fase de indexado es que el léxico debe compartirse. En lugar de compartir el léxico, Google escribe un registro de todas las palabras extras que no están en el léxico base que se fijó en 14 millones de palabras. De esta forma múltiples indexadores pueden ejecutarse en paralelo y luego el archivo de registro puede ser procesado por el último indexador.

Para generar el índice invertido, el indexador toma cada uno de los barrels ordenándolo por wordID para producir un barrel invertido. El proceso de ordenamiento también es paralelizado para usar tantas máquinas como se pueda simplemente corriendo múltiples ordenadores que pueden procesar diferentes buckets al mismo tiempo. Dado que los barrels no caben en memoria, el clasificador los subdivide en baskets ordenando cada basket en memoria y volcando el contenido combinado al barrel.

Búsqueda (Searching)

El objetivo del proceso de búsqueda es proveer una búsqueda de calidad y eficiente. Muchos de los grandes buscadores comerciales han hecho grandes progresos en cuanto a la eficiencia, por lo que Google se ha concentrado en proveer calidad en los resultados. El proceso de consultas de Google involucra 4 pasos: interpretar la consulta, convertir palabras en wordIDs, buscar el principio de la doclist en el barrel que corresponde a cada palabra. Buscar en los doclists hasta que se encuentre un documento que contiene todos los términos buscados y finalmente computar el orden (ranking) correspondiente de cada documento.

El sistema de ranking

Para ordenar documentos (decidir su importancia respecto de una consulta) Google utiliza un algoritmo propio denominado PageRank. El algoritmo de PageRank está basado en el grafo de enlaces de la web que como tal es un recurso sumamente importante y largamente ignorado en la mayoría de los buscadores. Google dispone de tablas con miles de millones de enlaces de la forma (docID desde-docID hasta), lo cual constituye una buena representación de la web como un grafo de enlaces.

El concepto básico del algoritmo PageRank es que una página es más importante en la medida en que mas páginas apuntan hacia ella. El algoritmo de PageRank extiende este concepto computando no solamente la cantidad de enlaces, sino también normalizando de acuerdo a la cantidad de enlaces en una página, y propagando infinitamente de forma tal que la importancia de una página depende de: cuantas páginas apuntan a ella, de la cantidad de enlaces en estas páginas, y de cuantas y que tan importantes son las páginas que apuntan a las que apuntan a la página. El algoritmo se resume así:

Asumimos que una página “A” tiene páginas T1..Tn que la apuntan. El parámetro d es un parámetro probabilístico que vale entre 0 y 1. Google usa d=0.85. Se define C(A) como la cantidad de enlaces que salen de la página (A). El PageRank de A se calcula como PR(A)=(1-d)+d(PR(T1)/C(T1)+ … + PR(Tn)/C(Tn))

Notar que los PageRanks forman una distribución probabilística sobre las páginas, la suma de los PageRanks de todas las páginas da 1. El PageRank de una página puede calcularse usando un simple algoritmo iterativo, el PageRank de 26 millones de páginas se puede calcular en pocas horas en una maquina modesta. Dadas n páginas se comienza con PR(Ai)=1/n y luego simplemente se corren x pasadas del algoritmo que calcula el PageRank de cada página hasta que los valores se estabilizan, esta es una técnica comúnmente usada en algoritmia para simplificar algoritmos recursivos.

Justificación intuitiva

El método de PageRank puede verse como un modelo del comportamiento del usuario. Supongamos que tenemos a un navegador aleatorio (random surfer) que dada una página aleatoria elige enlaces y clickea sin usar el botón back, pero eventualmente se aburre y comienza desde otra página aleatoria. ¡La probabilidad de que el visitante llegue a una página es su PageRank!. Y el valor d es la probabilidad de que en una página dada el visitante se aburra y empiece de nuevo desde otra página.

Conclusiones

Google esta diseñado para ser una herramienta de búsqueda escalable eficiente y con un sistema altamente avanzado de ranking de páginas. El uso del algoritmo de PageRank le da una gran calidad a los resultados de búsquedas “comunes”, la enorme cantidad de datos, de lejos la colección mas grande de páginas web del mundo, le permiten resolver eficazmente búsquedas “difíciles” mientras que el repositorio de páginas asegura que los resultados devueltos pueden ser accedidos y consultados por el usuario siendo a su vez de enorme valor como una colección histórica de los documentos en la web.

Fuente: Maldita Internet

25
jul
08

Eterna Competencia: AMD vs Intel

Muchos nos hemos preguntado antes de comprar una computadora si armarla en Intel o en AMD, pues aquí trataré de hacer unas comparaciones para que uds puedan tenerla más clara y elegir a su criterio.

AMD: 

AMD con un solo nucleo consigue los rendimientos similares a los de INTEL pero con menores ciclos de reloj en un aproximado 1:1.60 y con mucho menos memoria cache pero por un tema de marketing al nombre de sus procesadores le colocan la velocidad que puede rendir por ejemplo un Athlon XP64 3800+ trabaja a 2400 Mhz.

Con AMD tenemos una amplia gama de procesadores los cuales son: Athlon 64 (un núcleo), Athlon 64 x2 (doble núcleo), Athlon Phenom (4 núcleos).

Otras tecnologías con las que cuenta AMD son:

Hypertransport.- Es un vínculo punto a punto de baja latencia y alta velocidad. Aumenta la velocidad de comunicación entre los diferentes circuitos del ordenador (NorthBridge, SouthBridge, memoria…), reduciendo el número de buses y cuellos de botella y dando un mayor ancho de banda. 
AMD64.- Permite la información simultanea en 32 y 64 bits sin pérdida de rendimiento. 
AMD Virtual.-Extensión para la ejecución de programas virtuales. Trabaja con programas tales como Microsoft Virtual PC y Microsoft Virtual Server. 
Cool ‘n’ Quiet.- Regula la frecuencia del microprocesador en relación a la potencia requerida. Reduce el consumo, la generación de calor y, por consiguiente, el ruido generado, al permitir que los ventiladores giren a menor velocidad cuando no sea necesario su máximo rendimiento. 
Protección mejorada antivirus.- Esta protección funciona solamente con Windows XP SP2, Linux, Solaris y BSD Unix. Separa parte de la memoria RAM, designando esas áreas separadas como ”solo datos”, haciendo que en esas áreas solo se pueda leer y escribir, pero NO ejecutar los códigos que contengan. 
Instrucciones 3D y multimedia.- Los procesadores ADM son compatibles con las instrucciones AMD 3DNow!, MMX, SSE, SSE2 y dependiendo del procesador SSE3. 

INTEL:

Intel es la primera empresa fabricante de microprocesadores con una gama excesivamente amplia y con procesadores muy rápidos y con más memoria cache.

Intel tambien fabrica otras tarjetas como mainboard y chipset especiales para sus productos. 

Una parte de su familia son los P4 de un nucleo, los Pentium D, Pentium Extreme, Core2Duo, Core2Quad, Core2Extreme.

Las tecnologías empleadas por intel son:

Hiper Threading.- Consiste en el uso de dos procesadores lógicos a partir de un solo procesador físico, permitiendo la ejecución de instrucciones en paralelo. Necesita tanto software como hardware diseñado para su uso. Consigue una mejora en el rendimiento de aprox. un 20-25% sobre el mismo procesador sin esta tecnología. 
INTEL64.- Conjunto de extensiones de 64bits. Muy similar (casi idéntico) a AMD64. 
INTEL VT (Tegnología Intel de Virtualización)l.-Extensión para la ejecución de programas virtuales. Trabaja con programas tales como Microsoft Virtual PC y Microsoft Virtual Server. 
SpeedStep.- Regula la frecuencia del microprocesador en relación a la potencia requerida. Reduce el consumo, la generación de calor y, por consiguiente, el ruido generado, al permitir que los ventiladores giren a menor velocidad cuando no sea necesario su máximo rendimiento. 
Bit de desactivación de ejecución.- Protección contra ataques maliciosos. Funciona exactamente igual que la protección mejorada antivirus de AMD. Funciona con un SO compatible con esta tecnología (aunque INTEL no señala ninguno en concreto). 
Instrucciones 3D y multimedia.- Los procesadores INTEL son compatibles con las instrucciones MMX, SSE, SSE2 y dependiendo del procesador SSE3. 

 

Con varias pruebas Benchmark hechas se determinó que Intel es superior debido a la elevada Cache que posee, asimismo otro tema es de la elevada temperatura generada por los AMD.

Les dejamos un video en que se muestran estas diferencias de velocidades

24
jul
08

Grandes fabricantes respaldan estándar WHDI para alta definición inalámbrica

Los fabricantes de productos electrónicos Sony, Samsung, Hitachi y Motorola han decidido respaldar conjuntamente el desarrollo del estándar WHDI para la transmisión inalámbrica de vídeo de alta definición en los hogares, anunció hoy la compañía Amimon, promotora de esa tecnología.

Ese respaldo conjunto será un fuerte impulso para la tecnología WHDI, que permite transmitir grandes cantidades de información a gran velocidad sin comprimir la imagen o el sonido, con lo que no hace falta un decodificador, se eliminan los retardos y la calidad original se mantiene.

“La tecnología WHDI complementa otros estándares inalámbricos y con cables con un nuevo tipo de conectividad para toda la casa”, explicó el fundador de ese protocolo y miembro del Consejo de Administración de Amimon, David Lee.

Fuente: http://www.lostiempos.com/noticias/23-07-08/23_07_08_ultimas_vyf10.php

23
jul
08

NKLabs: Curso de UBUNTU en sinwindows

Para los que aún no estan enterados, Windows no es el unico sistema operativo en el mundo, existen otras muy buenas alternativas que podemos usar, inclusive mas estables y de codigo abierto, no gratuitas pero si libres.

Ubuntu es una distribución de Linux la cual cuenta con excelente soporte y muchas ventajas que nos ayudaran a olvidarnos de Windows.

En este excelente blog tenemos disponible un manual de usuario para que nuestro cambio no sea tan inentendible.

Este completo manual para usuarios de escritorio es una excelente guía que nos enseña desde la instalación hasta los programas alternativos que podemos utilizar en Ubuntu, ademas en este blog podremos preguntar nuestras dudas para que sean resueltas por sus autores. Asi mismo, este blog posee algunas otras novedades que no debemos dejar de probar.

Desde el propio sitio de Ubuntu podemos descargar las isos para instalación o si se nos es mas comodo pedirlas para que te la envien a tu casa en cualquier parte del mundo y lo mejor de todo sin costo, yo lo pedí y en menos de un mes los CD’s estaban en la puerta de mi trabajo.

Sitios relacionados: http://sinwindows.wordpress.com

http://www.ubuntu.com

23
jul
08

Blackberry ya dice “Tu-cu-Tin”

No necesitaras PDA’s, ni PC’s de escritorio ni siquiera tu XBOX 360 para comunicarte con tus contactos de Windows Live Messenger pues a partir de esta semana los usuarios de Blackberry podran acceder a los servicios de Windows Live Hotmail y Windows Live Messenger de Microsoft de manera gratuita.

Los Servicios de Windows Live ya se pueden descargar desde www.blackberry.com/windowslive y se prevee que para las proximas versiones vendra integrado en el dispositivo a traves de un icono del mismo en el menú. Para acceder al servicio solo debes colocar tu usuario y contraseña.

El buzon de blackberry se sincroniza automaticamente con Windows Live para que los contactos esten siempre actualizados. Los correos de WL tendran una casilla aparte pero si el usuario quiere podría desviarlos todos al mismo buzón.

Con esto, ya vas a poder estar conectado siempre al Messenger y disfrutar conversando con tus amigos. Para aquellos adictos al Messenger y que poseen blackberry, este sueño se les hizo realidad, inclusive nos cuentan que hasta se pueden enviar emoticon’s.

Ahora, se imaginan que con los Blackberry con camara, se pueda utilizar esta para hacer videollamadas por el WLM?. Es solo una idea…

Lee un poco mas aquí

23
jul
08

NipKowTV: Aplastando la Televisión

Esta es una pequeña animación hecha en After Effects 6.5 solo con los plugins por defecto. Esto para que vean lo grandioso de este Software que para muchos es aún desconocido.

Con este impresionante software podemos realizar el trabajo de post-producción de nuestros videos de una manera profesional.

SI googleamos encontraremos excelentes manuales y videotutoriales que nos explican su funcionamiento.

23
jul
08

Google Compraría ZAO Begun por $140 Millones

El viernes ultimo Google anunció que compraría a Internet Rambler Media, compañia de publicidad por internet , ZAO Begun por tan solo $140 Millones.

Esto, según Google para mejorar el servicio que ofrece a sus usuarios, anunciantes en Rusia. ZAO Begun a contextualizado anuncios para aproximadamente 40.000 anunciantes y para alrededor de 140.000 paginas en ruso.

Asimismo Rambler dijo que es muy probable que utilicen la Tecnología AdSense de Google en su sitio web. Como Rambler no es dueño del 100% de ZAO Begun, dijo que espera comprarle la otra parte de la empresa a Bannatyne Ltd. y con esto ganar unos $50 millones por el trato.

Fuente: http://www.pcwla.com/pcwla2.nsf/flash/1

22
jul
08

Gane Google AdSense

Con Google AdSense usted podra tener ingresos por visitas a su web de manera sencilla y configurando algunas opciones básicas como criterios relacionados a su blog.

Google AdSense
Google AdSense

Esta es otra maravillosa herramienta de Google Inc. quienes en la actualidad cuentan con más de 20 herramientas que te facilitaran la vida pero de eso hablaremos en unas proximas entradas. Si lo tuyo es navegar, Google es tu solución.

22
jul
08

Licuan al IPhone 3G

Una compañia que se dedica a la fabricación y venta de licuadoras superpotentes acaba de publicar un video en el que literalmente se licua un IPHONE 3G recien salido de tienda. Ojo que este videito no es apto para amantes de Apple.

Por favor, el siguiente video puede herir su suceptibilidad




 

junio 2012
L M X J V S D
« sep    
 123
45678910
11121314151617
18192021222324
252627282930  

Posts Más Vistos

  • Ninguna

Album Adriana Sophia – 1 Mes

Estadisticas

  • 2,451 hits

Comunidades

Mira de donde nos visitan:


Seguir

Get every new post delivered to your Inbox.