Optimizar tus aplicaciones/scripts de PHP

Hay miles de artículos que explican como optimizar una aplicación. Desde los básicos que te hablan del sentido común que hay que tener cuando programás (optimizar estructuras, uso de variables, etc) hasta las específicas por como está implementado el lenguaje.

Encontré este artículo “40 Tips for optimizing your php Code” (40 consejos para optimizar tu código PHP), que la verdad es muy interesante. Y me tomo el trabajo de traducir algunas de las que me parecieron sumamente curiosas e importantes.

Continúa leyendo Optimizar tus aplicaciones/scripts de PHP

SQL Join : entendiendo visualmente

SQL JoinPor aquí me encuentro con este post: Explicación visual de los SQL Join.

La verdad es que es muy interesante y es de gran ayuda para entender la clave de las bases de datos relacionales.

Combinar información de dos o más tablas es un proceso clave a la hora utilizar los datos almacenados en una base de datos. Pero es sumamente importante hacerlo bien, porque una mala sentencia SQL en una base de datos con una cantidad importante de registros, simplemente pueden hacerla colapsar.

Asi que si todavía andás con dudas acerca de como combinar datos en una sentencia SQL, este post es para vos.

Configurar varios sitios con XAMPP en Windows

XAMPP es una distribución que te permite instalar a golpe de un solo click, el Apache, PHP, MySQL, Perl y algunas otras extensiones útiles para el desarrollo web.

Voy a asumir que ya tienes instalado y funcionando el XAMPP en tu PC. Por ahora, solo puedes acceder al sitio web por defecto en XAMPP que ha sido creado en la instalación bajo http://localhost

En el mundo del desarrollo web es súmamente importante ser organizado, y con ello, saber organizar sus proyectos, carpetas y archivos (en este orden).

Y también, sería interesante poder probar nuestros proyectos individualmente en la misma carpeta en donde desarrollamos, por ejemplo:

http://miproyecto/

Y no tener que recurrir a:

http://localhost/miproyecto/

Aparte de esto, la primera opción nos permite tener un mejor control de cada proyecto, de los archivos, etc. Mienstra que con la segunda forma, todos los archivos deberían ir a parar a una carpeta predeterminada del XAMPP.

Continúa leyendo Configurar varios sitios con XAMPP en Windows

El Litoral y su sitio web

Estaba tratando de entrar al sitio web de El Litoral, uno de los diarios de Santa Fe. Y me encuentro con esto:

Errores de la página web del El Litoral

Hoy en la provincia de Santa Fe estamos siendo literalmente azotados por lluvias, y se afirma que en todo la provincia hay más de 5.000 evacuados a las 19:00 del hoy (28 de Marzo).

Esto supongo que acapara la atención de todo el mundo y acuden a uno de los medios de la capital santafesina, casualmente el sitio web del diario El Litoral.

Lo que me sorprende es que, un diario medianamente importante, no tenga implementado mecanismos de contingencia o algún modo de cachear las páginas para casos como estos, y evitar cosas como las que aparecen en esta página.

De última, se un poco más profesionales y evitar errores de este tipo, que revelan algunos detalles sobre la implementación del sitio web y puede llevar a comprometer la seguridad del sitio web.

Volviendo a programar como antes

Me acuerdo que cuando comencé a programar, allá por el 1996 con Basic, se cuidaba cada línea de código, cada variable, cada campo para que no ocuparan más espacio del que se debiera. Recuerdo armar las estructuras de los archivos para que sean lo más pequeño posibles, por dos razones: espacio en disco, y la memoria del sistema.

Sin embargo, con la aparición de máquinas más potentes, megas y megas de memoria RAM y grandes discos, eso parecía que dejó de ser un problema. Las aplicaciones de escritorio se destacaban por la cantidad de líneas de código, variables, imágenes y cuanta cosa quisieras ponerle a tu programa.

He visto código fuente que sinceramente es para llorar. Eficiencia 0. Al hacer la crítica simplemente te contestaban que no era necesario optimizar tanto la cosa porque con el hardware disponible hoy en día, el programa corre sin mayores problemas.

Sin embargo, en el campo en el que estoy trabajando, la web, la optimización del código fuente es la clave para que tu sitio web sobreviva o no. Sobre todo si tienes una alta demanda. Asi que hoy tienes que considerar muy bien el tema de la programación orientada a objetos, usar plantillas, separación del código, etc. Simplemente porque cualquier “cosita” demás, hará que tu aplicación simplemente colapse, o tendras que irte a un servidor dedicado.

Hace un tiempo empecé a utilizar Smarty en mis proyectos. La verdad es que es fantástico, pero me parece que es redundante. Tranquilamente puedes montar las plantillas con código PHP, y te ahorras de aprender un nuevo seudo-lenguaje como el que implementa Smarty.

Estoy de acuerdo con lo que comenta Ricardo Galli en su blog con respecto a las plantillas: no son soluciones máginas. Si puede que te hagan un poco la vida más fácil, pero no más que eso y su precio (que a veces puede ser demasiado caro).

Igualmente en mis proyectos uso plantillas en algunos casos, como en TuSecreto, por la simple razón que uso un core para toda la aplicación, que es usado por cada uno de los sitios de TuSecreto, y para manejar la presentación visual uso plantillas en PHP que manejo con includes.

En otros proyectos simplemente no uso plantillas. Incrusto mi código PHP directamente en la página PHP, obviamente sin hacer esas mezclas que puedes encontrarte en PHP Nuke (lo peor que he visto hasta ahora). Básicamente procuro tener dos capas:

  • Capa de Procesos: El código que maneja todos los datos, consultas, procesos, etc.
  • Capa de Presentación: El código para la presentación visual, o sea las páginas en sí.

Mi política, es que el código de la Capa 1 no tenga nada que ver con el HTML. Ninguna de mis funciones te vuelve algo en HTML. Cuando más, en XML, pero nada más que eso. De eso se encarga la Capa de Presentación.

La Capa de Presentación se maneja con muchos includes, cache de objetos (para casos puntuales) y compilación de CSS y JS (para que usen menos espacio o vayan compactados al cliente).

Y así es como me manejo. Ni más ni menos.