en: Desarrollo Web
La escalabilidad es la habilidad de un sitio web de poder hacerse mas grande sin perder llegar a perder calidad, en la gran mayoría de casos la pérdida de calidad viene dada por la ralentización de los tiempos de acceso y la perdida de funcionalidades.
Uno de los grandes errores que se puede cometer a la [...]
en: Desarrollo Web
1 – Inicializa las variables antes de utilizarlas.
2 – Dedica tiempo a estudiar PHP, está es un lenguaje en continuo proceso de crecimiento y sus características van cambiando con el tiempo.
3 – Incrementar una variable en un método es lo mas rápido, del mismo modo que hacerlo en una función.
4 – Incrementar una variable global es dos veces mas lento que una variable local.
5 – Incrementar una variable local en un método es lo más rápido. Casi lo mismo que llamar a una variable local en una función.
6 – Incrementar una variable indefinida es 9 ó 10 veces más lento que una ya pre-declarada.
7 – El hecho de declarar una variable global a pesar de que no la utilices en ninguna función realentiza tu script, PHP tiene que chequear si la variable existe.
8 – La llamada a una función con un parametro toma aproximadamente el mismo tiempo que de 7 a 8 operaciones con variables locales, y esa misma llamada a un método supondrían unas 15 operaciones.
9 – Si necesitas saber el timestamp de acceso a un script, considera utilizar $_SERVER['REQUEST_TIME'] en lugar de time().
10 – $row['id'] es hasta 7 veces más rápido que $row[id].
11 – $localvar++ es hasta 15 veces más rápido que function inc(){ $localvar++; }.
12 – Los scripts PHP se “compilan” cada vez que son ejecutados a menos que se guarde el código objeto en un cache. Las diferentes herramientas de compilación de PHP incrementan el rendimiento hasta un 100%.
Hace algún tiempo leí un estudio que indicaba que los usuarios de Gmail son más jóvenes y más ricos que los del resto de los servicios de correo, el 54% de los usuarios de Gmail tienen entre 18 y 34 años por un 42% de Yahoo! Mail y un 44% de Hotmail.
Estudio Hiwise
En cuánto a [...]
Estas son algunas reglas básicas a la hora de desarrollar un buen “producto web”, probablemente si desarrollas aplicaciones con asiduidad tienes en cuenta algunas de ellas pero si no las conoces y te gustaría empezar un proyecto seguro que te vendrá bien echarle un vistazo.
Suena duro pero es la verdad, no quiero decir con esta afirmación que todos los usuarios sean maliciosos pero lo que si es cierto es que mientras más desconfies más preparado estarás cuando algo no deseado suceda, intenta comprometer lo menos posible tu aplicación evitando todos aquellos agujeros de seguridad que esten en tu mano, tambien es importante que no te centres unicamente en la seguridad… ten en cuenta que muchos usuarios por desconocimiento de la aplicación harán un uso incorrecto de la misma, un buen ejemplo de ello lo tenemos a la hora de rellenar los formularios, hay que asegurarse y validar todos los datos introducidos por los usuarios.
en: Desarrollo Web| Internet
Los usuarios visualizan de manera rápida y superficial los sitios web que visitan, este tipo de comportamiento a menudo provoca el abandono inmediato de la página en caso de que no se adecue o no le parezca relevante al usuario.
Además de ello tenemos el problema de los tiempos de espera, la percepción de los tiempos de espera según datos empíricos previos (Miller, 1968):
Como se puede ver Internet es un medio en la que los usuarios quieren resultados inmediatos, cada vez los usuarios tienen menos intención de aprender, leer o esforzarse para obtener los resultados deseados, si a esto le sumamos el gran abánico de alternativas que se ofrecen para cada tipo de necesidad en Internet tenemos un sistema en el que se puede conseguir lo que desees de manera inmediata, por lo tanto necesitamos si desarrollas o administras un sitio web necesitas ofrecer la información de una manera inmediata y disponer de un diseño usable que sea capaz de dar la sensación al usuario de que “este es el sitio que buscabas”, de lo contrario seguramente la visita del usuario durara breves segundos y buscará una alternativa para satisfacer sus necesidades.
Un interesante estudio indica que los usuarios parecen ser más tolerantes con el tiempo de descarga de una web si están cumplimentando un cuestionario (Integrating User-Perceived Quality into Web Server Design). Los usuarios parecen comprender que se requieren ciertos procesos complejos de almacenamiento de la información y no son tan impacientes.
Es interesante también que a menudo los usuarios parecen ser más tolerantes con el tiempo de espera en un sitio web cuando están realizando procesos aparentemente complejos, como puede ser el envio de un formulario, los usuarios parece que comprenden que hay determinados procesos complejos de almacenamiento y no se comportan de manera impaciente, del mismo modo el entorno de la espera también puede llegar a afectar a la percepción que el usuario tiene ante tiempos de espera cortos o largos.
Los usuarios pueden llegar a percibir que la duración del tiempo de espera es mayor o menor de lo que en realidad es, por ejemplo ante un tiempo de espera elevado si ofrecemos información al usuario sobre lo que esta ocurriendo durante el tiempo de espera (barra de progreso ó información sobre el proceso) podemos llegar a conseguir que realmente crea que ha esperado menos tiempo del que realmente ha estado esperando, del mismo modo un entorno que le genere impaciencia o ansiedad hará que piense que ha estado esperando demasiado tiempo.
Depende obviamente del servicio que ofreces, yo pienso que el tiempo de espera máximo para un usuario nuevo que no haya visitado previamente el sitio web el tiempo de espera máximo tolerable es de 2 segundos, si por el contrario lo ha visitado anteriormente seguramente podemos extender ese tiempo hasta 4 segundos.
Tambien debemos tener en cuenta la acción que el usuario está realizando en el sitio web, como hemos explicado anteriormente los usuarios son más tolerables a tiempos de espera altos en aquellos procesos que entienden requieren de un mayor tiempo de ejecución; envios de formulario, búsquedas, descarga de archivos ó imagenes son ejemplos de páginas en las que un usuario seguramente estaría dispuesto a tener tiempos de espera mayores a 10 segundos, siendo fundamental como hemos comentado proveer de mecanismos cómo las barras de progreso que hacen que el usuario no se impaciente, y espere el tiempo necesario para la carga de la página.
Por lo tanto y resumiendo Internet es un medio en el que el usuario espera resultados inmediatos y en casos muy particulares esta dispuesto a esperar para obtener resultados, por ello para fijar y optimizar los requisitos de calidad de nuestro sitio web necesitamos saber el tipo de usuario y el tipo de contenido que ofrecemos que nos va a ayudar a fijar el tiempo máximo de espera al que debemos someter al usuario.
No, no se trata de un baile que mejora el rendimiento de PHP sino de un proyecto Open Source de Facebook que comenzó hace 2 años debido a que las funcionalidades existentes para optimizar PHP se antojaban insuficientes.
HipHop se trata de una especie de transformador de código fuente que toma el PHP y lo convierte en C++ para ser compilado con g++, para explicarlo de una manera rápida y sencilla podríamos decir que HipHop permite que cualquier desarrollador pueda escribir código PHP pero que el código final se ejecute con el rendimiento que ofrecería el código de un programador experto, el resultado es una mejora de rendimiento del 50%.
Y es que Facebook poco a poco irá siendo a PHP lo mismo que Google es a Python, si lo pensamos es realmente positivo cuando una gran empresa que utiliza una tecnología sobre la que depende su negocio se dedica a mejorar dicha tecnología no sólo para beneficiarse ellos mismo sino para beneficiar a la comunidad de desarrolladores y consumidores de dicha tecnología.
Para entenderlo mejor primero hay que saber como funciona PHP, PHP es un lenguaje de programación interpretado como Ruby, Python y Perl, esto es genial para la productividad de los desarrolladores porque no es necesario compilar el código pero tiene por contra unos requerimentos de memoria y consumos de CPU mayores que un lenguaje compilado como es el caso de C++, por lo tanto HipHop al tranformar el código PHP a código C++ nos permite disfrutar de lo mejor de ambos lenguajes.
La mejora de rendimiento de Facebook ha sido probada de manera progresiva en sus propios servidores y ahora un 90% de los servidores de Facebook utilizan HipHop, la mejora cómo hemos vistos se divide en mejoras relacionadas con al Web y relacionadas con el uso de la API, la clave para la diferencia de mejora entre Web y API radica en que la Web requiere operaciones más complejas que la API.
Con HipHop no podrás utilizar funciones como eval() y create_function(), la naturaleza dinámica de estas funciones hace imposible su conversión a código C++, sin embargo estas funciones no son de las más populares entre los desarrolladores de PHP.
Actualmente HipHop no puede ser ejecutado en Apache pero se trabaja en ello.
HipHop será liberado dentro de poco pero por el momento nos tenemos que conformar con la entrada en el blog de Facebook o con esta presentación.
Me gustaría que dejaraís vuestra opinión sobre el tema y si alguien tiene información adicional que la aporte ya que creo que se trata de una excelente noticia y más aún tratándose de PHP que como hemos comentado anteriormente se trata de un lenguaje de programación tremendamente flexible pero muy difícil de escalar cuando hablamos de sitios web de gran tráfico.