Los valores Booleanos en PHP

La lógina Booleana es muy importante para las estructuras de flujo de control. Estos valores son utilizados para definir que conjunto de instruciones van a ser procesadas en función de la condición que se determine, en otras palabras ante una encrucijada que decisión se toma.

Dentro de la lógica Booleana, dos valores toman especial relevancia TRUE y FASLSE (verdadero y falso). En PHP no es necesario convertir a estos valores determinados resultados para obtener el mismo efecto. Los siguientes valores serán tomados como el FALSE Booleano:

  • [ 0 ] El entero cero.
  • [ 0.0 ] El número flotante cero punto cero.
  • [ » » ] Las cadenas vacias.
  • [ «0» ] La cadena cero.
  • [ array() ] Un array vacio.
  • [ object{} ] Un objeto vacío.
  • [ NULL ] El tipo especial null, incluyendo todas las variables no establecidas.

Todos los demás valores serán considerados TRUE. Hay que tener en cuenta que la evaluación de una expresión como TRUE o FALSE dependerá del resultado y no de los valores que se comparan. Por ejemplo si establecemos $a = 3 y $b = 7, ambas variables serán evaluadas como TRUE. Pero si preguntamos si $a es mayor que $b el resultado será FALSE.

También hay que tener en cuenta que cuando asignamos un valor Booleano a una variable (por ejemplo: $var = false) y la mostramos por pantalla veremos un valor numérico (en el ejemplo echo $var mostrará 0).

Archivo de log de Qmail con Plesk

Normalmente es posible encontrar el archivo de log de Qmail en la las siguientes rutas:

  • /var/log/qmail/current
  • /var/log/mail/
  • /var/log/maillog

Pero cuando tenemos instalado Qmail a través de Plesk la ruta por defecto del log se establece en el directorio de Plesk (/usr/local/psa/). Así podremos encontrar el archivo de log de Qmail en la siguiente ruta /usr/local/psa/var/log/maillog

Frameworks PHP: Zend vs Symfony

Cuando uno se plantea por primera vez el uso de un framework en PHP comienza a darle vueltas a las posibilidades que ofrecen unos y otros. Aunque la curva de aprendizaje en el uso de un framework es dura, todo el tiempo que le dediquemos a conocer a fondo aquel por el que nos decidamos será el tiempo mejor invertido en formarnos como desarrolladores.

En este caso quiero plantear una comparación entre dos de los frameworks más extendidos Zend y Symfony.

Documentación y aprendizaje. Com he dicho la curva de aprendizaje para poder usar correctamente y con soltura un framework necesita de un esfuerzo, mucho más si llevamos años programando sin usarlo. Symfony dispone de guias y manuales en abundancia, y además cuenta con numerosos foros en varios idiomas donde la comundad va resolviendo dudas. En el caso de Zend, a pesar de ser el framework de la empresa que está detrás de PHP, la comunidad es algo escasa, por tanto su documentación también.

Pruebas unitarias. Symfony dispone de tareas por linea de comandos para realizar testing, y además genera una clase vacia con cada nuevo controdalor desde el que poder realizar las pruebas. Zend no dispone de esta funcionalidad, algo que me parece muy importante a la hora de lanzar una aplicación a un entorno de producción.

Plantillas y plugins. Al sistema de plantillas de Zend le queda todavía un largo camino que recorer, mientras que en Symfony el sistema está ya muy avanzado, con la posibilidad de agragar módulos. Y otro tanto ocurre con los plugins, en Symfony es posible aumentar sus funcionalidades a base de plugins, mientras que Zend carece de esta característica.

Bases de datos. El trabajo con base de datos en Zend se limita a usar ActiveRecord (que no digo que esté mal), pero en Symfony tienes la posibilidad de usar el motor de base de datos que quieras, incluyendo el propio Zend_Db, algo que aporta una enorme flexibilidad al desarrollador que puede elegir en cada proyecto cual es la mejor opción.

Como conclusión a lo dicho quiero añadir, para todos aquellos que quieran dar el salto a hacer desarrollos basados en un framework, que a pesar de que al principio pueda resultar un poco engorroso con el tiempo os ayudará a mantener una limpieza de código y un mantenimiento de aplicaciones mucho más sencillo.

Utilidad y uso de EXPLAIN en MySQL

logo_mysql

A la hora de realizar una buena optimización de las consultas de MySQL habrá que prestar mucha atención a lo que dice la cláusula EXPLAIN. Su sintaxis es muy sencilla, basta anteponerlo a la consulta que queremos realizar para obtener toda la información.

EXPLAIN SELECT columna1, columna2 FROM tabla1 WHERE columna3 = ‘2’\G

El resultado que obtendremos será el plan de ejecución de la consulta a la base de datos. Una explicación de como accederá MySQL a las diferentes columnas involucradas en la consulta. EXPLAIN devolverá:

  • id: Es el identificador que EXPLAIN asignará a la consulta.
  • select_type: Tipo de consulta a analizar. Por ejemplo, si se trata de una consulta sencilla su valor será SIMPLE.
  • table: Nombre de la tabla a la que hacen referencia el resto de datos en la fila. Hay que tener en cuenta que el orden de las filas será el que utilizará MySQL para acceder a los datos.
  • type: Indica como MySQL combinará los datos de esa tabla.
  • possible_keys: Lista de los indices que se podrían utilizar, aunque podría no usarse ninguno.
  • key: Índice que finalmente se usará, si no se usa ninguno el valor del campo será NULL.
  • key_len: Tamaño del indice utilizado, si no se usó ninguno contendrá NULL.
  • ref: Muestra con que campo está relacionado el índice seleccionado.
  • rows: Número de registros que se tendrán que recuperar para ejecutar la consulta.
  • extra: Información adicional sobre la forma en que se obtendrán los datos.

Con esta información es posible encontrar donde se producen los cuellos de botella en las consultas que realizamos a la base de datos, y nos permitirá optimizarlas para evitar que una consulta lenta provoque un retraso injustificado en la devolución de resultados a los usuarios. En el manual de MySQL puedes encontrar más información.

Galite organiza unha xornada de Software Libre en Foz

cartelcursodrupalGalite, o Grupo Asociado pola Libre Información e a Tecnoloxía, organiza o vindeiro 21 de marzo unha xornada sobre software libre no Concello de Foz. O encontro terá lugar na Casa da Xuventude da vila e estará aberta á participación de calquera persoa interesada en iniciarse ou afondar no coñecemento das tecnoloxías e os estándares abertos.

A xornada iniciarase ás 12:00 horas coa presentación do Galinux, o sistema operativo libre e en galego promovido pola Dirección Xeral de Promoción Industrial e da Sociedade da Información e enmarcada no Plano Estratéxico Galego da Sociedade da Información (PEGSI 2007-2010).

A continuación impartirase un obradoiro titulado «Introdución a Drupal», no que se abordará a instalación deste sistema de xestión de contidos (CMS), así como a súa configuración para a creación dunha web particular, empresarial ou unha comunidade online.

Herramientas para WordPress

wordpress-logoA través del blog de Andrés Nieto me entero de una recopilación de herramientas que han hecho en SixRevisions. Algunas de ellas ya las conocia, pero otras no y me han parecido de utilidad, así que aquí dejo el listado:

  • ScribeFire. Convierte a Firefox en un editor enriquecido conectado a tu blog.
  • WordPress Helper. La documentación de WordPress disponible en Firefox, muy recomendable para poder echar un vistazo en cuanto lo necesites.
  • Screen Grab to WordPress. Permite hacer capturas de pantalla y enviarlas directamente a WordPress.
  • WordPress Scanner. Revisa la seguiridad de tu blog, nunca se sabe cuando puedes recibir un ataque que destroce todo el trabajo realizado.
  • Broken Link Checker. Con este plugin puedes revisar los enlaces que tengas en tu blog y saber cuales ya no están diponibles. Muy útil cuando tienes muchos enlaces.
  • Google Syntactic Hichlighter. Mejora la visiulización de tus artículos.
  • Insights. Abre tu blog a los nuevos servicios disponibles en la red como Flickr, Youtube o la Wikipedia.
  • Windows Live Writer. Con la aplicación de Microsoft podemos crear nuestros artículos offline. Aunque yo no le veo mucha utilidad, ¿será porque soy usuario de Linux?
  • Revision Control. Este plugin nos permitirá llevar un control de las revisiones que se realizan de cada artículo, muy útil en blogs con varios autores.
  • Organize Series. Si estabas pensando en crear un tutorial que va a llevar muchos artículos, este es el complento ideal, te permite hacer una serie de artículos relacionados entre si.
  • WordPress Comment Moderation Notifiers. Herramienta que te ayudará a controlar los comentarios.
  • WordPress Comment Ninja. Si quieres extender las posibilidades de control sobre los comentarios.
  • Adserve. Controla la publicidad de tu wordpress.
  • Simple Tags. Si cuando escribes un artículo no sabes que tags lo describen, esta herramienta de hará algunas sugerencias.
  • Twitter Tools. Este herramienta te permitirá lanzar a Twitter un micropost cada vez que escribas un artículo.

Replicación en MySQL 5.0

La replicación en MySQL se realiza entre un servidor Maestro (el que contine los datos originales) y uno o varios servidores Esclavos (los que replican los datos). Se realiza utilizando el log binario de MySQL, cuando se realiza un cambio en la base de datos del servidor Maestro, esto cambios son enviados al Esclavo para que los actualice. Hay que tener en cuenta que la replicación sólo se puede realizar en una dirección, del Maestro hacia el Esclavo, y no bidireccinalmente.

El servidor Esclavo mantiene una conexión permanentemente abierta con el Maestro y se comprueba la ultima posición escrita en el log binario del Maestro, cuando se detectan cambios estos se replican el las tablas del servidor Esclavo.

Antes de ponerse a configurar MySQL con una replicación, hay que tener en cuenta la compatibilidad entre versiones. Como norma general debería de intentarse que la versión de MySQL del Maestro y del Esclavo fuesen la misma, y lo más actualizada posible. De todos modos, un Esclavo con una versión más actualizada que el Maestro suele funcionar, pero no al contrario.

Una vez que conocemos como funciona, y realizadas las comprobaciones de versiones podemos configurar Maestro y Esclavo para que ejecuten la replicación. Comenzaremos por la configuración del Maestro. Debemos editar el fichero my.cnf que encontraremos normalmente en /etc/my.cnf o en /etc/mysql/my.cnf dependiendo del sistema que usemos.

Sigue leyendo Replicación en MySQL 5.0