|

Optimizaciones para Apache y PHP

La gente de IBM nos vuelve a ofrecer un artículo en el que nos explican como optimizar nuestro Apache y PHP para obtener mejores resultados en nuestras aplicaciones web.
El artículo está dividido en dos partes: una para configurar Apache y la otra para PHP, existe un documento anterior en el que explican la arquitectura LAMP y como configurar Linux.
Inicialmente para Apache nos explica cómo configurar el MPM (Multi-Processing Modules), el cual ayuda a manejar las conexiones entrantes y las salientes, podremos indicar el número máximo de clientes y el número de peticiones por hijo que tratará, entre otras cosas.
Algo también muy importante es configurar eficientemente las opciones o controles que se indican en los ficheros de configuración, y que controlan las reglas que debe seguir el servidor web con cada petición.
Por último, habrá que tener en cuenta en la configuración el número de conexiones que permanecerán activas para una llamada HTTP, así como el envío de la respuesta de forma comprimida (de esto ya hemos hablado en otras ocasiones, hay que decidir entre CPU usada en el servidor o respuestas más rápidas).
Sobre PHP nos indican la necesidad de usar opcode cache, representación binaria del script PHP que puede ser ejecutada. Para ello existen varios cachés disponibles, aunque recomiendan el uso de eAccelerator.
El resto de las recomendaciones se refieren a la configuración del tiempo máximo de ejecución, el tiempo máximo de espera de la entrada, la memoria máxima utilizada y al tamaño del buffer.
Optimizing Apache and PHP
Vía / Good PHP Tutorials

links for 2007-05-29

Pros y contras de MySQL

MySQL es una de las bases de datos más populares que hay dentro del desarrollo web. Hay gente que la defiende, y otros que no la tienen entre sus BD favoritas. Para aquellos que tengan que decidirse en la elección de MySQL como BD de su sistema, esta lista de pros y contras le puede ser de mucha utilidad.

Pros

  • Es muy popular: el hecho de que mucha gente la use y que esté tan presente en gran parte de los desarrollos web, hace que los proveedores de software intenten que sus aplicaciones sean compatibles con esta BD, pudiendo así encontrar muchas aplicaciones para MySQL.
  • Es simple: es fácil de aprender comparada con otras BDs, no es necesario emplear mucho tiempo o dinero en formar a los trabajadores o en contratar a gente cualificada. El que sea sencilla conlleva que también sea rápida, aunque hay algunos desarrolladores que echan en falta algunas funcionalidades (a mi parecer, cada vez menos).
  • Es barata: aunque pertenece a MySQL AB, MySQL es open source, que sea barata implica que al inicio del proyecto el gasto vaya a otras partes que puedan necesitarlo, en vez de gastar dinero en licencias.
  • Tiene soporte: uno de los inconvenientes que suelen presentar los clientes hacia el open source es que no dispone de soporte. MySQL ofrece licencia con servicios de soporte y mantenimiento, además también es posible obtener atención técnica 24/7.
  • Es flexible y escalable: dispone de muchos tipos de almacenamiento, pudiendo seleccionar el que más nos convenga, y os procedimientos almacenados nos permiten escalabilidad.
  • Librerías nativas para lenguajes: ofrece librerías para lenguajes como PHP y Ruby.

Contras

Yo no estoy personalmente de acuerdo con todas ellas, pero quien escribe el artículo tiene sus razones para indicarlas y hay que tenerlas en cuenta.

  • Licencia GPL: en algunos entornos, la licencia BSD es más adecuada.
  • Falta de integración con entornos existentes: existen muchas circustancias en los que los DBA no tienen un entorno con el que tratar con MySQL.
  • Falta de madurez: en comparación con otras BDs como Oracle (que cumple 30 años), le falta madurez, lo que indica posicionamiento y estabilidad.
  • Falta de características: hay características importantes, que aunque a veces no son muy utilizadas, pueden acabar con un proyecto debido a la necesidad de uso.
  • Certificación: a muchas empresas les gusta la certificación, aunque ofrecer certificación, esta está muy lejos de parecerse a la de Oracle o MS-SQL Server.

Five Compelling Reasons to Use MySQL

Eight Sound Reasons Not to Use MySQL

Vía / dzone

|

Listado de tutoriales de gestión de errores en PHP

Algo fundamental en cualquier aplicación web es la gestión de errores. Poder controlar los errores que se producen, no mostrar esos errores por pantalla, y poder hacer un seguimiento del error que se ha producido para poder solucionarlo, son cosas totalmente necesarias y que normalmente se suelen dejar a lado o solo usar en la época de desarrollo.

Para aquellos que quieran implementarse una clase que gestione los errores de su aplicación en PHP, le vendrá bien esta lista de tutoriales:

links for 2007-05-27

|

Microsoft Expression Web: al menos lo intenté

msexpressionweb.pngMe entero por Error500 que Microsoft ha sacado nuevos productos y entre ellos el sustituto del FrontPage, programa del cual cualquiera que sepa algo de desarrollo web suelta pestes. Intrigado por esta nueva aplicación, por las posibilidades que pueda ofrecer, porque en la página web de MS habla de la “pasión por los estándares” (¡increible!) y porque el ordenador no es mío, decido instalarlo, aun cuando yo uso el PSPad Editor y tan contento.
Aquí llegan los primeros problemas, ocupa poco más de 200 megas (demasiado, ¿no?) y necesita el XP SP2 mínimo (demasiado, ¿no?). Por lo que debido a ello me tengo que bajar unos 500 megas entre el SP2 y el Expression, 200 de cada y afortunadamente los 25 megas del .NET ya me los bajé en otra ocasión. Después de bajarme la versión en español, francés e inglés del SP2 (826.074.296 bytes), tres versiones distintas ya que cada vez que me bajaba una me decía que no podía porque el idioma es distinto al que tengo instalado (y no me funciona el Windows Update por política de redes), el español es el idioma en el que me aparece el XP, el francés el del cliente, por lo que era de suponer que sería la opción más lógica, y el inglés que ha sido la que me ha funcionado.
Para bajarme la versión trial del Expression Web me registro en Microsoft, prometiendo que solo lo usaré 30 días de prueba y que durante ese periodo me mandarán 3 emails para preguntarme que tal va la cosa.
Una vez ya tengo instalado el SP2, me pongo a instalar los 200 megas del programa en cuestión. Después de un buen rato descomprimiendo y comprobando cosas, me pregunta que si quiero instalación estándar o personalizada. Como “experto” que me considero en instalaciones, selecciono la personalizada, en la cual me ofrece instalar el Expression Web, herramientas para Office y herramientas compartidas con Office y algo para Access. Decido no meter mucha cosa, porque aunque el ordenador no es mío, trabajo con él, por lo que elijo solo el Expression Web.
Se está instalando y cuando acaba y lo ejecuto me muestra un mensaje de Opciones de Privacidad que me pregunta que si quiero actualizar periódicamente un fichero que me ayudará a determinar problemas del sistema. Algo muy confuso y que da cierto miedo, por lo que como iba a desinstalar el programa nada más probarlo, no acepto la opción que me muestran. De todas formas, no entiendo que problemas del sistema me podría encontrar, ya me veía yo el olvidado pantallazo azul apareciendo cada 15 días.
Arranco el programa y … ¡no me deja hacer nada!, es imposible crear un nuevo documento, todas las opciones del menú están desactivadas. Bueno, todas no, la de abrir archivo si está disponible, por lo que abro un html que tenía por un directorio y nada, no aparece nada de nada.
Pienso que quizás es mi culpa y que debía haber instalado las opciones de Office que no instalé (la verdad es que no las leí todas) y que son necesarias para que funcione la aplicación. Curioso, ¿no?, si selecciono instalar el programa me debería decir: “mira, debes instalar tal o cual porque si no lo haces no vas a poder hacer nada de nada con los 200 megas de aplicación”. Pero bueno, da igual, yo sigo ilusionado con probar la aplicación para poder escribir algo en Sentido Web, así que vuelvo a ejecutar el programa de instalación, indico que quiero añadir más opciones a la instalación actual y selecciono todo lo seleccionable.
Acaba la re-instalación, ejecuto el programa, las opciones del menú aparecen activadas, me emociono, sigue con la carga del programa, está a punto de acabar, ya está, voy a poder usarlo… pero no, imposible, me aparece un precioso mensaje:
msexpressionweb2.png
“La versión beta del software ha caducado.
Utilice Agregar o quitar programas en el Panel de control para quitar la versión beta del software del equipo.”

Al menos te indican cómo desinstalarlo, por si un casual se te había olvidado.
Siento este post fuera de lo normal de Sentido Web, pero es que no podía callarme.

|

Paso a paso de un diseño web

La gente de SitePoint han publicado un gran artículo en el que explican cómo hacer un diseño (layout) mediante XHTML y CSS.
Hace tiempo alguien nos preguntaba por un comentario en un artículo cómo podía pasar de su forma de diseñar por tablas a diseñar sin tablas. Creo que con este artículo podrá aprender la transición de forma muy sencilla y rápida.
Empieza explicándonos los pasos que hay que llevar a cabo para la fase inicial de nuestro diseño. Dibujar los contenidos (cabecera, panel, contenido, pie de página) y cómo crear la estructura de capas y sus estilos.
Después nos indica como añadir fondos y contenidos a las distintas partes de nuestra página, como por ejemplo las imágenes con float. No solo se centra en lo estrictamente desarrollo, sino también un poco en diseño. Añade imágenes de fondo al pie y a la cabecera que realmente quedan bastante bien.
Y por último nos indica como dividir el contenido en rejillas para darle un aspecto más uniforme.
Breaking Out of the Box

8 consejos para mejorar la usabilidad

8 buenos consejos para que podamos mejorar la usabilidad de nuestras aplicaciones web, algo que a veces se ignora pero que hace sufrir a algún que otro usuario.

  • Cuanta más interacción se necesite para realizar una tarea, más difícil se vuelve: cuando se necesite realizar una acción hay que evitar pedir todas las posibles características de la acción, simplemente pide lo estrictamente necesario. Por ejemplo, un buscador, puedes pedir que te ofrezcan la categoría, el número de resultados, el criterio de orden, … o simplemente pedir la palabra a buscar y si se quiere ofrecer una búsqueda avanzada para quien quiera refinar la búsqueda.
  • Cuanto mayor tiempo de concentración se necesite para realizar una tarea, menor es la usabilidad: intenta que la aplicación responda lo más rápido posible para que el usuario mantenga su atención.
  • Cuanto más tenga que trabajar el usuario, menos efectiva es la interfaz: lo que nos lleva a otro punto, haz la interfaz intuitiva.
  • No vayas en contra de lo que espera el usuario: el usuario está acostumbrado a una serie de herramientas: botón para volver, recargar, … Diseña la aplicación teniendo en cuenta que el usuario está acostumbrado a algo y es lo que espera encontrar. El mal uso de Ajax a veces va en contra de esta premisa.
  • Las páginas de error no gustan: nada es peor que mostrar uno o dos errores al usuario al mismo tiempo.
  • Permite al usuario modificar la interfaz: a todo el mundo le gusta modificar los colores y el aspecto del entorno de trabajo. Que la gente se sienta cómodo con los colores es también algo a tener en cuenta.
  • No esperes que los usuarios lean las instrucciones: debido a ello, la interfaz debe ser lo más parecido a lo que se está acostumbrado, para que cuando se encuentren con lo que tienen que hacer sea igual o muy parecido que lo de siempre.
  • Mantén al usuario libre de errores: por ejemplo, una página 404 no dice nada, en vez de ello ofrece alternativas.

5 (+3) tips to increase web application usability

Vía / dzone

Más consejos para mejorar la velocidad de tu web

Ya en otras ocasiones hemos hablado sobre cómo mejorar la velocidad de tu web, en esta ocasión os presentamos otra lista que han publicado en Ask Apache, algunas nuevas, otras ya conocidas y otras un tanto curiosas (como la recomendación de un hosting del que quizás algunos tienen una opinión diferente).

Para no repetir contenido, voy a comentar tan solo las nuevas o las que no hemos repetido demasiado:

  • Usa XHTML y no uses estilos en las propias etiquetas.
  • Usa subdominios separados para alojar las imágenes estáticas y los ficheros de caché. En este caso yo creo que no se trata de subdominios virtuales, porque estaríamos en las mismas, supongo que pretenden tener un propio servidor para este tipo de contenido, para no sobrecargar el mismo servidor web.
  • Usa direcciones IP estáticas para tu dominio web y subdominios.
  • Usa CDN (Content Delivery Network), una red de servidores conectados entre sí en Internet que envían el contenido al usuario de forma transparente, sobre todo contenidos multimedia que suelen pesar mucho más. Algo parecido sería usar balanceo de carga, técnica que también se usa en el CDN.
  • Evita el uso de ETags.
  • Crea Ajax que permita caché y que sea sencillo.
  • Yo añadiría separar en tres servidores: aplicaciones, web y base de datos.

Parecen buenos consejos, pero claro, en la mayoría de los casos no podremos llevarlas a cabo por falta de recursos, así que lo mejor es elegir un buen hosting para suplir la imposibilidad de tener un CDN o IPs estáticas u otras más.

Top methods for faster, speedier web sites

| |

W3C: fallos de accesibilidad (I)

Hoy vamos a empezar una serie de artículos en los que pretendemos explicar los fallos que se cometen en accesibilidad cuando se realizan aplicaciones web y las técnicas que debemos usar para evitar estos fallos. Para ello nos basamos en lo que especifica la W3C en su WCAG 2.0 (aún en estado borrador).

Error 1: modificar el significado del contenido debido al posicionamiento mediante CSS

Se trata de cambiar el significado semántico de una etiqueta, modificando su posicionamiento mediante CSS. Por ejemplo, si queremos crearnos una lista de elementos:

  • Elemento 1
    • Elemento 1.1
    • Elemento 1.2
    • Elemento 1.3
  • Elemento 2
    • Elemento 2.1
    • Elemento 2.2


El fallo consiste en usar etiquetas no destinadas a ese sentido, cambiarle los estilos y representarlas como queremos. Por ejemplo podemos usar span para representar cada elemento y disponerlos en la posición que nos conviene:

<span class="cab1">Elemento 1</span>
<span class="cab2">Elemento 2</span>
<span class="ele1">Elemento 1.1</span>
<span class="ele2">Elemento 2.1</span>
<span class="ele3">Elemento 1.2</span>
<span class="ele4">Elemento 2.3</span>

Y con los estilos siguientes:

.cab1 {
position: absolute;
top: 0px;
left: 0px;
}
.cab2 {
position: absolute;
top: 0px;
left: 200px;
}
.ele1 {
position: absolute;
top: 20px;
left: 0px;
}
.ele2 {
position: absolute;
top: 20px;
left: 200px;
}
.ele3 {
position: absolute;
top: 40px;
left: 0px;
}
.ele4 {
position: absolute;
top: 40px;
left: 200px;
}

obtendríamos el mismo resultado visual, pero si quitaramos los estilos obtendríamos lo siguiente:

Elemento 1 Elemento 2 Elemento 1.1 Elemento 2.1 Elemento 1.2 Elemento 2.3

lo cual no tendría mucho sentido.

Error 2: modificar el aspecto del texto para mostrar algo que ya representa una etiqueta

Existen varias etiquetas de texto que tiene diferentes funcionalidades, pero aún así es típico encontrarse textos con sus estilos modificados para mostrar el resultado de una etiqueta ya existente. Un ejemplo muy común es este:

<span class="negrita">Título</span>
.negrita {
font-weight: bold;
}

Lo correcto sería usar la etiqueta strong.

Más información