20 Noviembre 2008

Tips para evaluar velocidad de scripts de PHP

No todos los scripts PHP son igual de rápidos aunque funcionalmente logren el mismo objetivo, el sitio web “The PHP Benchmark” es una iniciativa que pretende evaluar diferentes prácticas de programación en PHP y demostrar cuántos milisegundos toma realizar la misma acción pero ejecutando funciones diferentes.

El proyecto es encabezado por Chris Vincent, y utiliza la función microtime() de PHP para publicar este tipo de resultados.

Algunos ejemplos interesantes:

Utilizar for ($i=0; $i<$size; $i++)" en vez de utilizar "for ($i=0; $i

Pues el cálculo de la función sizeOf o count toma mucho tiempo de ejecución.

Resultados:

Precalculando el tamaño del array: 132 milisegundos.
Calculando el tamaño del array en cada iteración: 57296 milsegundos

Resultados interesantes con la función echo():

echo ‘aaaaaaaaaaaaaaaaaaaaaaaaaaaa’: 139 milisegundos.
echo ‘aaaaaaa’,'aaaaaaa’,'aaaaaaa’,'aaaaaaa’: 278 milisegundos.

Utilizar foreach en vez de utilizar while:

foreach($aHash as $val); 14 milisegundos.

while(list($key) = each($aHash)) $tmp[] = $aHash[$key]; 98 milisegundos.

Le invitamos a leer más conclusiones en el sitio web y hacer sus propias estimaciones utilizando la función microtime() en sus propias aplicaciones.



29 Septiembre 2008

Resumen sobre ventajas de utilizar SubVersion

El presente es el artículo escrito por Rolando Vindas de InterGraphicDESIGNS, el cual fue publicado por la revista RadarTI en su primera versión impresa.

Trabajo colaborativo: Subversion, una opción efectiva para controlar y ordenar el desarrollo

Antes de existir las herramientas para controlar las versiones de su proyecto, era común escuchar entre los desarrolladores frases tales como: “¿Quién me cambió esta línea de código?”, “sobrescribí los cambios y ahora no recuerdo cómo devolverme”, “esto ya lo había resuelto y no recuerdo el cambio que había hecho”, entre otras. De ahí que sea indispensable contar con una herramienta que facilite el control de versiones.

Subversion se ha ido posicionando como una de las herramientas de control de versiones más populares. En este artículo presentamos los beneficios que hemos experimentado en InterGraphicDESIGNS desde que iniciamos su uso, especialmente en proyectos de desarrollo Web donde interactúan varios desarrolladores, tanto del área de informática como de diseño gráfico.

Es necesario recalcar que la tecnología actual promueve intensamente el trabajo en equipo y la colaboración entre grupos. Por supuesto, el análisis apropiado del entorno y la utilización de las herramientas adecuadas pueden garantizar una administración sana y controlada de los proyectos en su equipo de trabajo.

Subversion, también conocido con las siglas SVN, es un sistema de control de versiones que permite administrar las versiones (valga la redundancia) de los archivos de un proyecto, promoviendo con esto la colaboración entre los miembros de un equipo de trabajo y, de una manera muy cómoda, coordinar las tareas entre ellos.

La herramienta permite acceso a los archivos de un proyecto, observar el trabajo, realizar cambios y guardar estos cambios en su repositorio, donde se almacenan todos los archivos involucrados. Al finalizar una acción de guardar cambios, se considera que se ha creado una nueva “revisión”.

Visibilidad del cambio

En términos de visibilidad, facilita mantener involucrada a cada persona de su equipo en el proyecto, ya que los cambios son visibles para todos una vez que son realizados.

Cada persona utiliza la herramienta de una manera diferente. A algunos les gusta guardar los cambios en el repositorio varias veces al día, otros prefieren trabajar en sus proyectos y solamente guardar los cambios al final de la jornada. Mucho de ello depende del tipo de proyecto en el que se esté trabajando, la etapa del ciclo de vida en la que se encuentre y si son pocas o muchas las personas involucradas. La recomendación siempre ha sido de guardar los cambios en el repositorio al menos una vez al día.

También ayuda a medir la calidad y cantidad del trabajo realizado en una unidad de tiempo. Esta visibilidad instantánea nos permite observar la productividad del equipo de trabajo, así como los beneficios a escala administrativa para un líder de grupo.

La selección de las herramientas adecuadas que interactúan con Subversion puede tener un impacto importante en el desarrollo de los proyectos e incidir grandemente en la facilidad de uso y comprensión, así como el tiempo invertido en funciones que no son específicas del proyecto. Esto debido a que Subversion también puede ser utilizado directamente con los comandos desde la consola que, si bien es cierto, brinda el mayor control de los repositorios, a la vez implica que la curva de aprendizaje sea alta.

Características

Este software lleva a cabo el proceso de guardar los cambios, llamado comúnmente como commit, en un repositorio de manera atómica es decir, dicho proceso se realiza de manera completa o no se realiza del todo. Esto permite deshacer un proceso guardado en caso de que ocurran problemas durante dicha tarea, lo que significa que si el proceso de guardado de cambios es interrumpido por alguna razón, no provocará inconsistencias en el repositorio.

Entre los métodos más conocidos para acceder a los repositorios, podemos enumerar:

  • Servidor Web de Apache mediante la utilización del módulo WebDAV (http y https).
  • Servicio svnserve, propio de Subversion, que permite también el acceso mediante una conexión segura establecida con el protocolo SSH.
  • Acceso utilizando direcciones tipo URL, directos en caso de que el repositorio resida en la máquina local (por ejemplo: file:///).

Versión a versión

Con respecto a las diferencias de versión a versión, utiliza un algoritmo de diferenciación binaria cuando almacena el historial de versiones, el cual trabaja igual tanto en archivos de texto como archivos binarios. Esto significa que utiliza exactamente el mismo proceso para “versionar” cualquiera de estos tipos de archivos. Cabe destacar que Subversion guardará únicamente las diferencias de una versión a otra en el servidor, en contraposición con sistemas como CVS que, para cada versión, hace una copia completa del archivo original.

Subversion fue hecho para ser eficiente, tanto en una red como en el propio medio de almacenamiento donde residen los repositorios, hace lo posible por enviar la menor cantidad de información a través de la red, así como la que guarda en el disco duro cada vez que se lleva a cabo un proceso de guardado, logrando enviar únicamente las diferencias que han existentes desde la última versión registrada.

Con esto, podemos decir que el costo de cada proceso de guardado es proporcional al tamaño del cambio y no al tamaño de los archivos, convirtiéndose en una ventaja significativa con respecto a otros sistemas de control de versiones.

Existe una amplia gama de aplicaciones cliente que interactúan con Subversion, con lo cual usted tiene la oportunidad de elegir la aplicación que más se ajusta a las necesidades de su entorno.

Subversion y los diferentes actores

Ahora, es importante considerar a Subversion desde la perspectiva de los usuarios que interactúan con él y que se encuentran involucrados en cada uno de los proyectos.

En un caso común, podríamos tener en el entorno de un proyecto a:

  • El equipo de desarrolladores.
  • El administrador del proyecto.
  • El administrador del repositorio de Subversión.
  • El administrador de la red.
  • Desarrollo

Los desarrolladores se encuentran relacionados con este software debido a que el trabajo realizado se refleja en los cambios y versiones que se guardan en el repositorio. Esto implica que ellos necesitan tener la capacidad de ubicar los recursos, comparar las diferencias entre versiones y trabajar en distintos proyectos simultáneamente.

Es necesario rescatar que la flexibilidad provista a los desarrolladores consiste en que pueden escoger libremente la aplicación cliente por utilizar. El equipo de desarrollo puede elegir la metodología deseada en el flujo de su trabajo al interactuar con un repositorio, permitiéndoles utilizar su propia estrategia y proceso de desarrollo.

Más allá de la típica interacción con el repositorio durante el proceso de desarrollo, los desarrolladores necesitan saber quién realizó los cambios o quién borró determinado archivo, poder regresar a una versión anterior de un archivo o carpeta, revertir los cambios actuales a la última revisión del código, entre otro diverso conjunto de operaciones, dependiendo de la metodología escogida para trabajar.

Administración

Este software permite al ad
ministrador del proyecto observar la productividad de su equipo de trabajo, así como visualizar el historial de cambios de un producto, permitiendo una mejor administración. Esto también le da la opción de trabajar en múltiples secciones de forma paralela, dentro del mismo proyecto, mediante las ramificaciones que maneja.

La simplicidad tampoco puede quedar de lado para el administrador del proyecto, ya que este no necesita conocer a fondo la herramienta de “versionamiento” utilizada para interactuar con ella de manera fácil y simple.

En cuanto al administrador del repositorio, le resulta importarle no solo la gestión del repositorio, también la administración de los permisos de acceso al mismo.

La flexibilidad de Subversion otorga al administrador de los repositorios la elección propia de la estructura y diseño del repositorio por utilizar en cada proyecto.

Respecto a los permisos, el administrador puede escoger el esquema que más se ajuste a su entorno de trabajo, que depende del protocolo de acceso que esté utilizando para sus repositorios. Adicionalmente, las herramientas y métodos que provee para llevar a cabo el respaldo y restauración de repositorios son realmente simples de utilizar.

Finalmente, el administrador de la red, en la cual se usa este software, ve facilitado su trabajo debido a las capacidades de este sistema de control de versiones, ya que se podrá acceder a un repositorio aunque se encuentre detrás de un firewall o un proxy, sin tener que crear reglas de acceso o abrir los puertos en el hardware de red.

Debido a que nos es intrusivo, puede ser instalado sin requerir ajustes específicos a la red del entorno de trabajo, por lo que puede ser implementado de una manera muy fácil y segura.

Experiencias con Subversion en Proyectos Web

En el caso específico de InterGraphicDESIGNS, nuestros proyectos demandan la colaboración interdisciplinaria de profesionales en el campo de la informática (edición de archivos de texto, por lo general PHP), así como de diseñadores gráficos (también edición de archivos de texto HTML, CSS y Javascript, entre otros).

Esto hace de Subversion una herramienta ideal para el control de versiones, pues permite mantener en repositorios, relativamente pequeños, gran cantidad de información acerca de las mejoras realizadas a los proyectos Web de nuestros clientes, comentarios de nuestro equipo de trabajo para cada cambio realizado, entre otros.

Los beneficios que hemos experimentado son una mejora en el tiempo de desarrollo, debido a la minimización de posibles retrasos causados por una mala administración de versiones, minimizamos los riesgos de pérdida de datos, centralizamos de una forma flexible gran cantidad de conocimiento sobre cada proyecto, entre otros.

Nuestra experiencia también ha sido útil al demostrar en la práctica que el tema del control de versiones no es exclusivo de profesionales en el área de informática, sino que, con la debida capacitación, es totalmente aplicable para otras disciplinas profesionales.



1 Agosto 2008

Lanzamiento de php 5.3 alfa 1

El equipo de php ha anunciado en su sitio web el lanzamiento de la nueva versión alpha de php la cual no se recomienda para utilizar en producción, sólo a manera de revisión y experimentación.
Los cambios más importantes incluyen funciones lambda y closure, recolector cíclico de basura, adición de las extensiones intl, phar, fileinfo, sqlite3 entre otros.



31 Mayo 2008

Comentarios y ejemplo con xajax - PHP Class Library

XAJaX es una librería de clases de código abierto elaborada en PHP que permite utilizar Ajax en aplicaciones web sin tener que programar directamente en JavaScript. Esto no significa que no se pueda utilizar JavaScript en una aplicación que esté utilizando XAJaX.

El programador simplemente elabora en PHP las funciones que actualizan el contenido de un objeto HTML (un DIV o un INPUT por ejemplo) y XAJaX se encarga de generar el código Javascript AJaX correspondiente a esas funciones en el momento de cargar la página.

En mi caso específico, he tenido la oportunidad de trabajar con esta librería y me ha gustado el hecho de no tener que elaborar el código Javascript para AjaX. En ocasiones he tenido que elaborar funciones que no actualizan contenido HTML sino más bien realizan únicamente operaciones en base de datos.

Para consultar información más detallada de esta librería, la página oficial del proyecto es: http://www.xajaxproject.org

Vamos a realizar un ejemplo sumamente sencillo de cómo puede utilizarse esta librería para actualizar dinámicamente el contenido de un objecto INPUT y de un objeto DIV.

El primer paso consiste en descargar la librería XajAx desde la página oficial (para este ejemplo se utilizó la versión 0.5 beta4 Compiled) y descomprimirla en una subcarpeta llamada xajax en la raíz donde vamos a ubicar los archivos de nuestro ejemplo. Los archivos que vamos a elaborar para nuestro ejemplo son: index.php (archivo principal que contiene los objetos HTML) y entorno_xajax.php (archivo con las funciones y el entorno XAJaX). La estructura de directorios y archivos de nuestro ejemplo sería la siguiente:

Primeramente vamos a crear nuestro archivo principal index.php que contiene los objetos HTML a ser actualizados dinámicamente:

Seguidamente vamos a crear el entorno de XAJaX (entorno_xajax.php) con las funciones encargadas de actualizar los contenidos de los objetos HTML (Archivo entorno_xajax.php):

Este ha sido un ejemplo muy sencillo de la utilización de XAJaX. Sin embargo, hay más cosas que se pueden llevar a cabo con esta librería (tema que está más allá del alcance de este artículo).

Descargar acá el ejemplo completo: ejemplo_xajax.zip



26 Mayo 2008

Las ventajas de documentar en PHP con phpDocumentor

Según el sitio http://www.phpdoc.org/, phpDocumentor es la herramienta estándar para auto-documentación en PHP; es decir, se puede generar documentación de forma automática tomando como base el código fuente. Usualmente esta herramienta es comparada con lo que Javadoc hace en Java.

Algunas de las ventajas de usar phpDocumentor son la ayuda obvia que recibe el programador para que todas sus aplicaciones tengan un formato de documentación similar, que además, es el mismo formato de documentación de cientos de programadores PHP, si todos usáramos el mismo formato de documentación sería bastante más sencillo tomar un código fuente iniciado por otra persona; además, usando este tipo de herramientas el programador “se obliga” a ir llenando los campos necesarios para documentar y seguir una serie de “buenas prácticas” que posiblemente pasaría por alto si no contara con la herramienta. Finalmente, es muy sencillo pasar de comentarios en el código fuente a tener preparado un documento (por ejemplo en HTML) con todo el detalle de los archivos, clases, funciones, etc. que utiliza una aplicación, explicando los parámetros de entrada, los valores de retorno, etc.

Con phpDocumentor es fácil estandarizar por ejemplo la documentación sobre qué hace una función, qué parámetros recibe, que valores devuelve, cómo se lleva a cabo cada paso, por qué algo se programó de una forma y no de otra, etc.

Algunas de las funcionalidades de phpDocumentor es que logra exportar todos estos comentarios a formato PDF, HTML u otros; tiene interfaz web o por medio de línea de comandos, manejo automático para los README/CHANGELOG/INSTALL/FAQ, consulte el listado completo de características (en Inglés)

Puede leer más sobre phpDocumentor en algunos de los siguientes enlaces:



25 Abril 2008

PHP testFest 2008

Queremos aprovechar este medio para anunciar a la comunidad de desarrolladores PHP que visitan nuestro blog, que este próximo Sábado 10 de mayo de 10am a 3pm, en la Universidad Nacional, se estará realizando el PHP testFest 2008.

Se está invitando a todas aquellas personas entusiastas de PHP, o que quieran conocer más sobre el mismo.

Próximamente se estará actualizando el Wiki y el calendario de eventos de PHP.

Para más información:

http://wiki.php.net/qa/testfest
http://www.costaricaphp.org
http://qa.php.net/testfest.php

InterGraphicDESIGNS se une a los esfuerzos de convocatoria de esta iniciativa y motivamos para que gran parte de la comunidad de PHP Costa Rica se haga presente



« Entradas más recientesEntradas más antiguas »