10 consejos para recodificar una web

8 comentarios · Escrito el 18-Jul-2008 · 400 lecturas · programacion

Cuando nos dedicamos a la programación de un sitio web, llegará un momento en el que tenemos que renovar la estructura (aquí hablamos de HTML), la presentación (hablamos de CSS) y la codificación y programación interna (hablamos de PHP).

redesign

A continuación una serie de consejos para depurar y realizar una recodificación y rediseño efectivo:

1. Realinear, no rediseñar

Aunque en muchas ocasiones hay necesidad de un rediseño profundo, como resultado de un cambio de estrategia debido a algún factor especial, por norma general es mucho mejor mantener el objetivo de realineación que el de rediseño.

Esto proporciona un efecto más positivo de presentación, en el que estamos manteniendo la mayoría de los elementos en su lugar original (no despista a los usuarios), renovandolo visualmente.

En A List Apart se puede encontrar un claro ejemplo de este punto: Buenos diseñadores rediseñan, Grandes diseñados realinean.

2. Calcula el tiempo que tarda en cargar tu web

A pesar de tener otros sistemas externos como Pingdom, en este caso me refiero al tiempo de generación de código, internamente.

La forma tradicional es aquella en la que, mediante un timestamp UNIX capturado al final de todo, le restamos otro capturado al inicio. Generalmente se utiliza la función microtime.

NOTA: A partir de PHP5, a esta función se le puede pasar un booleano como parámetro para indicar que devuelva un número flotante que indique los microsegundos. En caso contrario devuelve una lista de parámetros (microsegundos y segundos). Ojo a los que aún usen PHP4.

3. Calcula la memoria utilizada en tu web

Análogamente al punto anterior, sería ideal establecer un echo temporal que nos vaya avisando de la memoria consumida en el procesamiento de nuestro script PHP. También podemos establecer unos puntos de control para saber que partes consumen demasiado. Ver punto 6 posterior (Profiling o Debugger).

Para calcular la memoria nos ayudaremos de la función memory_get_usage de PHP. En otros artículos como ¿Cuánta memoria RAM consume mi servidor? o Reducir uso de CPU y memoria del servidor hablo más sobre el tema.

4. La función isset()

Una buena técnica de programación es comprobar siempre la existencia de las variables con la función isset(), una función que nos devuelve un booleano (verdadero si existe la variable o falso en caso contrario), pudiendonos saltar fragmentos de código (y sus correspondientes recursos de proceso) en el caso de que ciertas variables no existan.

Pueden utilizarse para evaluar la existencia de varias variables en cortocircuito, esto es, con una lista de variables, desde que encuentre una que no exista, devuelve FALSE.

5. La directiva error_reporting()

Unos buenos amigos en PHP, son los niveles de error. Con ellos podremos establecer la forma de detección de errores en nuestro código de una manera sencilla y fácil.

En el fichero php.ini se puede establecer de forma general, aunque quizás es más práctico utilizar la funcion error_reporting() para hacerlo en tiempo de ejecución. Con el parámetro E_ALL mostrará todos los errores y warnings en el fichero error_log. Ver punto 8 posterior (error_log).

En Niveles de error PHP puedes encontrar una lista de todos los niveles posibles.

6. Profiling o Debugger

Utiliza un sistema de profiling o depuración de código. Un Profiler es un sistema que se ubica entre el programador y la máquina y le va informando al primero con las estructuras apropiadas y ciertas estadísticas del funcionamiento del código.

Generalmente, los buenos programadores ya hacen buen código. Pero los programadores que usan profilers son aún mejores. Extensiones como APD (Advanced PHP Debugger) pueden ayudarnos mucho, ya que permiten crear hasta una estructura árbol con las funciones utilizadas y el tiempo o memoria consumida.

En LinuxJournal podemos ver algunos ejemplos del APD y la técnica de Profiling en general.

7. Complejidad

Los bucles. Uno de los aspectos más básicos de la programación, y no por ello de los más sencillos, es reducir la complejidad de los procedimientos que llevamos a cabo.

Para ello, lo mejor es partir de la idea más simple y genérica: Localiza todos los bucles (for, while, foreach...) e intenta realizar cuantas operaciones puedas (funciones) fuera del bucle.

Un ejemplo típico es el siguiente bucle:

while (strlen($a) < ($b+$c)) {
echo "valor b: $b c: $c";
$b++;
$c++;
}

Como podemos ver, la variable $a no se modifica dentro del bucle, por lo tanto la función strlen($a) (que da la longitud de la cadena $a) siempre devolverá la misma cantidad en todas las iteraciones del bucle.

La complejidad se reduciría en el siguiente ejemplo:

$d = strlen($a);
while ($d < ($b+$c)) {
echo "valor b: $b c: $c";
$b++;
$c++;
}

Evidentemente, este ejemplo es algo inapreciable. Pero con funciones más complejas y extensas, el resultado puede notarse bastante.

8. El fichero error_log

A parte del fichero access_log de Apache, donde quedan registradas todas las peticiones HTTP de los diferentes usuarios, existe otro fichero muy interesante e importante para estrategias de depuración, error_log.

Dependiendo del nivel de error establecido (Ver punto 5) serán volcados distintos tipos de error, entre los que destaco los siguientes:

  • PHP Notice: Avisos poco importantes como petición de ficheros inexistentes, variables no definidas...
  • PHP Warning: Errores importantes como permisos, funciones no definidas, ejecuciones terminadas...
  • PHP Fatal error: Errores graves como finalización por memoria insuficiente, etc...
  • ModSecurity: Errores de seguridad. Ver artículo ModSecurity.

9. Inclusiones y exclusiones

Otro de los puntos importantes en la programación web es saber excluir o incluir partes de código que son o no necesarias.

Un ejemplo: En el apartado que muestra los artículos por categoría un blog, no es necesario funciones o código para mostrar comentarios, o en un artículo que tiene menos de 25 comentarios (suponiendo que 25 es el máximo por página) no es necesario las funciones para paginación. En muchos casos, esto puede disminuir el proceso de tiempo y memoria consumida en gran proporción.

Además, organizando un poco la codificación se puede evitar el uso de funciones include_once o require_once (incluir si no han sido ya incluidas) en favor de sus respectivas include y require puede ahorrar bastantes recursos.

10. Consultas SQL sin buffer

Generalmente, para la recuperación de consultas SQL en PHP (hablamos de la gestión de una base de datos MySQL) se utiliza mysql_query(). Sin embargo, en ciertos casos se puede hacer uso de la función mysql_unbuffered_query().

Las diferencias es que, al contrario que la primera, la segunda función no utiliza buffer para almacenar todas las filas resultantes de la consulta. Esto produce un ahorro de memoria significativo y también mayor rapidez, ya que permite comenzar a trabajar nada más devuelva la primera fila (no es necesario esperar a que termine por completo).

Es importante recalcar que con este tipo de recuperación no se pueden anidar varias consultas dentro de otras y que tampoco se pueden utilizar funciones como mysql_num_rows() ni mysql_data_seek().

Más o menos estos son los pasos que me han parecido más importantes para recalcar en la recodificación de una aplicación web. Como habrán visto, Emezeta blog ha «sufrido» una en los últimos días, y aunque el cambio de diseño no es demasiado grande, el de rendimiento si debería serlo.

Tags:

Vida mensajera (despues de MSN Messenger)

11 comentarios · Escrito el 13-Jul-2008 · 765 lecturas · cortos

Kulugulugu producciones son un grupo de amigos que han realizado un corto llamado vida mensajera para el concurso Fricorto de Las Palmas de Gran Canaria, en el que podemos ver una parodia acerca de la mensajería instantánea, tan utilizada entre los jovenes.

Video (Objeto multimedia)

El vídeo no se pudo presentar finalmente al concurso por falta de tiempo y algunos viajes, sin embargo, se terminó poco más tarde y fue todo un éxito. En poco tiempo se propagó por Youtube, Tuenti, ElRellano, foros y algunas redes sociales con gran aceptación.

[...] Nos encantó la idea de un MSN Messenger llevado a la vida real, con un transfondo de crítica a la «pérdida de las relaciones en persona y el quedar en el parque con los colegas»[...]

Dailos Batista

Los componentes del grupo son Dailos Batista (el «trenzas») e Idafen Santana (el «de telde»), informáticos e impulsores del proyecto. Además, también participaron Ruben Quesada (el «colega»), Abian Marrero (el que aparece disfrazado de chica) y Yisa Ortega (el «pesao»), informáticos también excepto el último, que es batería profesional.

kulugulugu producciones

Dailos, Yisa, Idafen, Rubén y Abian

El vídeo está repleto de detalles graciosos y «personificaciones», como la transferencia de ficheros a través de MSN Messenger, el uso de programas P2P, las opciones No conectado de mensajería, el uso de los emoticonos en los mensajes, entre muchos otros, todo ello aderezado con el típico dialecto Canario.

¡Enhorabuena chicos! A mi, sinceramente, me ha encantado.

Making Of


Unas cuantas fotos en el rodaje del video. Las chicas que aparecen en el video y ayudaron en la producción son Eva, Dafne, Yanira y Cathy.

vida mensajera making of

Tags:

Como confundir a un idiota

19 comentarios · Escrito el 10-Jul-2008 · 1.110 lecturas · videos

¡Genial! Un trabajo denominado en su versión original How to confuse an idiot, que es sin lugar a dudas, de lo mejorcito que he visto ultimamente...

youtube confundir idiota video

Tags:

Kill Dash Nine (Kill menos nueve)

8 comentarios · Escrito el 8-Jul-2008 · 996 lecturas · musica

Hace algunos años hablé del Nerdcore, un estilo musical que hace mezclas tan sorprendentes como unir el rap o el hiphop con términos informáticos.

Aunque muchos no lo crean, existen muchos artístas de este género, como por ejemplo MC Frontalot, MC Lars (al que ya hice referencia una vez con su Download this song), MC Plus+ o Monzy (el que nos trae a este artículo) entre muchos otros.

Kill dash nine es un perfecto ejemplo de lo que es el género nerdcore, una canción que sin duda dejará perplejos a los informáticos que no se pierdan entre sus vocablos... A continuación el video con el subtitulado completo en español.

Video (Objeto multimedia)
  • Canción: Kill dash nine (Kill menos nueve)
  • Autor: Monzy
  • Género: Nerdcore

Supongo que tendré que cerrarte bien esta vez,
ya lo he intentado con un SIGQUIT, ahora con un KILL -9.
Deberias saber cuando pausar un "thread"
estaba dormido, sin funcionar y ahora su destino está claro
Tendré tu proceso fuera de la cola, sin ejecución
porque mi flujo es de entrada y salida, trabaja en multitarea.
Tus tristes rimas giran como en un interbloqueo,
Eres un socket síncrono, que no sabe cuando bloquear
así que saco mi teclado, y saco mi arma
desmonto a tu chica y la monto en /proc
tengo tu puto PID y tu última linea
es mejor que no te despiertes o sino Kill -9...

KILL -9
No más tiempo de CPU
Yo ejecuto KILL -9
Y tu proceso es mío.
Ejecuto KILL -9
Es mi hora de brillar
Ni un paso en falso o...
KILL -9

No es cosa de los Benjamins, los Pentiums o los Athlons
pero rapeas 50 metros, mientras yo escupo en decathlons.
Tu mierda es vieja y cutre, lo mio es lo que mola
Tu eres como el CLR y yo soy CLRS
Tu ejecutas csh, mi shell está en bash,
Tu eres almacenamiento terciario, yo soy caché L1
yo soy un robot crawler web y tu en Internet un mosquito
crees que un modelo de 7 capas se refiere a un burrito

Eres una conexión telefónica, yo soy gigabit LAN.
Yo soy el hombre del mes; tu no duras ni un minuto
Yo ejecuto Thunderbird y tu aún atascado con Pine,
Por eso yo te digo que es el momento de KILL -9...

KILL -9
No más tiempo de CPU
porque KILL -9
y tu proceso es mío
Yo digo KILL -9
Es mi hora de brillar
Ni un paso "outline" o...
KILL -9

Mi estilo filtra perdedores como un agujero en un cubo
Yo codificaba mierda en MIPS mientras tu jugabas a Space Invaders
Con mis dedos, disparo y ejecuto un ./configure
¡Este paquete es grande! pero MI paquete es más grande.
Yo me lio un peta mientras utilizo el splay,
Y me lo fumo antes de que escriba un array
Soy Loc'd Out escribiendo KLOCS al día
porque es escribir o morir, imbecil ¿que puedo decir entonces?
Tengo 26 años, ¿veré algo a los 28?
Algunos dias me pregunto si llegaré a graduarme
pero ¡hey!, esto es genial, no me rendiré nunca
Y si alguien intenta evitarlo entonces KILL -9

¡Si! Es KILL -9
No más tiempo de CPU
Es KILL -9
Y tu proceso es mío
Yo digo KILL -9
Porque es mi hora de brillar
Ningun paso en falso o...
KILL -9

fs sa rlidwka
Yo hago "chown" en tu home y tengo acceso remoto
Vengo directamente desde Stanford, no hay nadie más duro
Ctrl-X, Ctrl-C, Y borro tu puto buffer
Estás fuera de tu ámbito, tío, cierra esas llaves
porque yo descarto tu culo como un modem descarta paquetes
Vuelca tu puto núcleo, y haz una traza de tu pila
porque donde tu trasero ha llegado, no se llama ni por parámetro
mirame... mi estilo es divino, y mi codificación es sublime
mi carrera solo asciende y la tuya desciende
Escribo un define y te asigno como mío
Asi que mejora esas rimas o borra tu signo más

KILL -9
No más tiempo de CPU
porque KILL -9
Y tu proceso es mío
Yo digo KILL -9
porque es mi hora de brillar
Mantente inactivo o sino...
¡KILL -9!

Ojo, que la mayoría de las gracias de la canción se pierden en la traducción. He intentado utilizar los nombres técnicos (y añadir enlaces) para que se guarde el concepto original, aunque la rima no se mantenga.

En Kill dash nine lyrics pueden echar un vistazo a la letra original (en inglés), visitar la web del autor, la entrada acerca de la actuación en Geekapalooza o descargarse el killdashnine.mp3.

Tags:

Páginas: 1 2 3 4 ... 253