Jul
28

logo_facebookEstoy seguro de que en mayor o menor medida conocerás facebook, la red social que ha revolcionado internet y hecho de Mark Zuckerberg uno de los multimillonarios más jóvenes de la historia, si no el que más.

Para los que anden una poco más apartados del tema Facebook es una red social (la primera y la que más éxito tiene en la actualidad) que nació inicialemente como un sitio exclusivo para los estudiantes de Hardvard, pero que en la acualidad admite la creación de cuentas de todo aquel que disponga de una cuenta de correo electrónico, es decir todo el mundo, ya que éstas son gratuitas.

Pues bien, vamos a ver como algo que nació para un grupo reducido de personas ha ido creciendo poco a poco gracias a los ingenieros que trabajan día a día en la misma.

Antes de nada comentar que los datos que voy a utilizar en este artículo los he sacado de una presentación (que he encontrado en Pensamientos Ágiles) de Aditya Agarwal, el director de ingeniería de facebook.

Facebook está programado principalmente en PHP, MySQL y Memcache (LAMP), esto es así lógicamente porque es el conjunto de herramientas con las que comenzó la aplicación (por aquello de que iba a ser una aplicación y tal, supongo), y aunque hoy en día para grandes aplicaciones suele utilizarse lenguajes como .NET (que es un lenguaje que permite una mayor interacción con los procesos del equipo), los del equipo de desarrollo han sabido ingeniárslas para poder sacar adelante el proyecto, aunque para ello hayan tenido que hechar mano de varios tipos de lenguajes (C++, Java, erlang)…

Estadísticas de facebook:

  • Más de 120 millones de usuarios activos.
  • Más de 5 billones de páginas vistas (50 billones del sistema ingles).
  • Más de 1 billón de fotos subidas a sus servidores (10 billones en el sistema inglés).
  • Más de 1.000 millones de conexiones.
  • Más de 50.000 aplicaciones hechas para Facebook.
  • Cuenta con el apoyo de más de 400.000 desarrolladores.

PHP (impresiones varias, antes y después):php

  • Definen inicialmente PHP como un lenguaje rápido, bueno y que cuenta con una gran comunidad de desarrolladores y de librerías.
  • Es un lenguaje no tipado lo que dificulta el entendimiento del código y de la pila de ejecución.
  • Es un lenguaje con malas opciones de escalabilidad y optimización.
  • Cada archivo incluido aumenta la complejidad de manera lineal.

MySQL:mysql_logo

  • Una de sus mayores impresiones con el sistema es que es “realmente rápido”.
  • Utilizan pares <key, value> (clave, valor) para almacenar los datos en las bases de datos.
  • No realizan ningún join en producción, ya que al tratarse de una base de datos distribuida, consume recursos innecesariamente.
  • Los datos más antiguos se archivan, ya que éstos son los que menos probabilidades tienen de ser accedidos.
  • A pesar de que la mayor parte de d los datos tienen consistencia, éste no es un hecho que les preocupe mucho, ya que no hace falta ningún tipo de inconsistencia para la maoyoría de los datos.
  • Hay una base de datos que contiene un grafo de los usuarios del sitio, para así poder acceder fácilmente a los datos de cada usuario.
  • Las modificaciones que han hecho en MySQL son prácticamente nulos.

Memcache:

  • Este sistema dota a Facebook de la velocidad que lo caracteriza.
  • Dota a facebook con una latencia < 200 ms.
  • Cuentan con 25TB (1TB = 1024GB) de memoria.
  • Hacen uso de multi-gets.
  • Han cambiado el protocolo de comunicación, que pasa de ser TCP a UDP para reducir al máximo el cosumo de memoria por los buffers.
  • Han modificado el núcleo de Linux (sistema operativo sobre el que corre facebook) para permitir que Memcache trabaje con equipos de más de un núcleo.

Inconvenientes de PHP y otras cuestiones:

PHP no es precisamente el lenguaje más rápido que existe, ya que se trata de un lenguaje interpretado y si a eso le sumamos que hay ciertas tareas que no se pueden llevar a cabo sólo con el uso de PHP, llegamos a la conclusión de que quizá no haya sido una buena elección para este tipo de aplicación, lo que les ha llevado a intentar migrar el núcleo de facebook a python vaias veces, pero ninguna de ellas llegó a tener el resultado esperado.

Por este motivo, el equipo de facebook creó Thrift, un sistema que permite (de forma más eficiente que otros similares) hacer que PHP interactue con otros lenguajes de programación, como Java, C++,…

Otra característica importante es que si ya existe una librería en Java y no en PHP no se preocupan en migrarla, directamente hacen uso de ella, como por ejemplo la librería para realizar el envío de SMS.

Todo este rollo ha venido inspirado por una serie de conversaciones que tengo con gente de mi entorno en las que discutimos si PHP merece o no la pena, lo que me ha hecho investigar un poco, y si bien no he cambiado de opinión tras averiguar algo más sobre Facebook, he de reconocer que puede llegar a ser un fastidio tener que recurrir a otros lenguajes de programación en determinadas ocasiones, así como que se trata de un lenguaje interpretado y no es el más rápido ni mucho menos o que simplemente se trata de un lenguaje no tipado, lo que puede dificultar un poco la interpretación de código, de manera que a la hora de enfrentarnos con proyectos con un prebisible importante crecimiento, tengamos que plantearnos otras tecnologías, como son .NET y Java.

Tags: , , ,
Categoría Web | 2 Comentarios »
Jul
27

logo_contrastScribd es una página web que cuenta con un tiempo ya a sus espaldas que se dedica a poner a disposición de sus visitantes libros completos y presentaciones online de manera totalmente gratuita.

La página dispone de un visor hecho en flash para leer los libros/presentaciones online si así lo deseamos, pero (cosa importante) también nos permite descargarnos los libros en el formato que deseemos:

  • *.pdf
  • *.doc
  • *.txt
Categoría Web | 2 Comentarios »
Jul
16

El éxito es aprender a ir de fracaso en fracaso sin desesperarse

Winston Churchill

Categoría Frases célebres | Sé el primero en comentar!
Jul
11

Hoy os traigo un vídeo en el que nos cuentan como ser un buen orador/presentador, tal y como lo hace Seteve Jobs.

Está en inglés, espero que no sea un gran inconveniente…

Tags:
Categoría Curiosidades | Sé el primero en comentar!
Jul
9

iPod Touch 3.0Lejos de lo que suelen hablar los post con el mismo título, me gustaría comentar los problemas con los que me he topado a la hora de actualizar mi iPod Touch de la versión 1.1 a la 3.0.

Tras leer bastante sobre las bondades de la versión 2.0 y 3.0 del iPod Touch y iPhone, me decidí al fin a pagar los 7.99€ que cuesta senda actualización, tras hacer el pago, empieza automáticamente la descarga de la actualización, y 10 minutos después se empieza a actualizar sólo, hasta aquí todo bien.

Bien ahora vamos a analizar como estoy actualizando el iPod, como ya sabréis uso Linux como sistema operativo por defecto, por lo que utilicé el VMWare 6.5 para emular un Windows XP SP3 y actualizarlo con iTunes.

Pues bien, una vez da comienzo la actualización (después de generarse la copia de seguridad y demás), comenzó a reiniciarse sólo el iPod por el mero hecho de estar instalando la actualización, lo que causó que al llegar a cierto punto (siempre el mismo) se quede colgado el Windows XP virtualizado, así como el Linux que uso como SO principal, de lo que deduje que era conveniente instalar la actualización en un Windows instalado en el disco duro y no virtualizado.

Una vez cargado un Windows XP instalado en otro equipo me encuentro en con la sorpresa de que tengo que pagar otra vez los 7,99€ por la actualización del iPod si quiero instalarlo desde otro PC, ya que no me dejaba bajármela sin tener que pagarla de nuevo ni tampoco he recibido hasta la fecha (han pasado 2 días desde que hice el pago) ningún email de los de Apple que certifique que he pagado por la actualización.

Tras un rato de buscar la carpeta del equipo en la que descarga iTunes los archivos de iTunes Store (para coger el archivo que ya he pagado y así poder intentar actualizar el iPod que hasta el momento estaba muerto), encontré la carpeta en cuestión, antes de nada hemos de habilitar la visión de archivos ocultos:

Mi PC>Herramientas>Opciones de carpeta…>Ver

y en el listado seleccionar Mostrar todos los archivos y carpetas ocultos.

Una vez hemos hecho esto, hemos de dirigirnos a la carpeta en la que iTunes almacena sus datos:

C:\Documents and Settings\[tu usuario]\Datos de Programa\Apple Computer\iTunes

Ahora, si deseamos hacer una copia de seguridad de las aplicaciones que nos hemos descargado, bastará con copiar la carpeta/archivos necesarios, en este caso hemos de entrar en la carpeta iPod Software Updates y hacer una copia de seguridad de la actualización (en mi caso el archivo se llama:  iPod1,1_3.0_7A341_Restore.ipsw) en un pincho USB o equivalente.

Por último en caso de querer instalar este software en nuestro iPod Touch desde otro equipo simplemente deberemos copiar el archivo en la misma ruta del segundo ordenador.

Tags: , ,
Categoría Programas, Windows | Sé el primero en comentar!
2 pages