tag:blogger.com,1999:blog-43630034080104629142009-04-24T08:58:14.453-06:00PHP y MySQLInterGraphicDESIGNShttp://www.blogger.com/profile/04282302770207311617noreply@blogger.comBlogger10125tag:blogger.com,1999:blog-4363003408010462914.post-80372830592551983502009-01-15T14:39:00.003-06:002009-01-15T15:16:28.196-06:00Guía para comprimir archivos CSS con PHP?Traducción del artículo en inglés tomado de: <a href="http://www.catswhocode.com/blog/3-ways-to-compress-css-files-using-php">http://www.catswhocode.com/blog/3-ways-to-compress-css-files-using-php</a><br /><br />Cuando usted se encuentra desarrollando un diseño sofisticado, los archivos CSS rápidamente pueden volverse grandes y requerir de tiempo para cargar. En este artículo se han recopilado 3 formas interesantes para comprimir archivos CSS utilizando PHP.<br /><br /><span style="font-weight: bold;">El método de Paul Stamatiou</span><br /><br />Para que usted pueda aplicar este método, primero debe renombrar todos sus archivos .css a .css.php<br /><br />Además, asegúrese de importar los archivos en su html utilizando su nuevo nombre:<br /><code><br /><span style="font-family: courier new;">&lt;link rel=”stylesheet” type=”text/css” media=”screen” href=”style.css.php” /&gt;</span><br /></code><br /><br />Cuando usted haya renombrado sus archivos css, edítelos y agregue la siguiente porción de código al inicio del archivo:<br /><br />Seguidamente, agregue la siguiente línea al final del archivo y guárdelo:<br /><br /><code><br /><span style="font-family: courier new;">&lt;?php if(extension_loaded('zlib')){ob_start('ob_gzhandler');} header("Content-type: text/css"); ?&gt;</span><br /></code><br /><br />Eso es todo. Este método es útil y eficiente.<br /><br /><span style="font-weight: bold;">El método Perishable Press</span><br /><br />Básicamente, este método funciona igual que el de Paul Stamatiou, al renombrar sus archivos .css en .css.php (o solamente .php) y agregando esta pequeña porción de código al inicio de su archivo CSS:<br /><br /><code><br /><span style="font-family: courier new;">&lt;?php</span><br /><br /><span style="font-family: courier new;"> ob_start ("ob_gzhandler");</span><br /><br /><span style="font-family: courier new;"> header ("content-type: text/css; charset: UTF-8");</span><br /><br /><span style="font-family: courier new;"> header ("cache-control: must-revalidate");</span><br /><br /><span style="font-family: courier new;"> $offset = 60 * 60;</span><br /><br /><span style="font-family: courier new;"> $expire = "expires: " . gmdate ("D, d M Y H:i:s", time() + $offset) . " GMT";</span><br /><br /><span style="font-family: courier new;"> header ($expire);</span><br /><br /><span style="font-family: courier new;">?&gt;</span><br /></code><br />Este método se recomienda más que el descrito por Paul Stamatiou debido a que usted no tendrá que editar tanto el inicio como el final del archivo CSS.<br /><br /><span style="font-weight: bold;">El método Reinhold Weber</span><br /><br />Este método fue creado por el desarrollador alemán Reinhold Weber. Lo mínimo que se puede decir es que es el mejor de los 3 métodos de este artículo.<br /><br /><code><br />&lt;?php<br /><br />header('Content-type: text/css');<br /><br />ob_start("compress");<br /><br />function compress($buffer) {<br /><br /> /* remove comments */<br /><br /> $buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);<br /><br /> /* remove tabs, spaces, newlines, etc. */<br /><br /> $buffer = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $buffer);<br /><br /> return $buffer;<br /><br />}<br /><br /><br /><br />/* your css files */<br /><br />include('master.css');<br /><br />include('typography.css');<br /><br />include('grid.css');<br /><br />include('print.css');<br /><br />include('handheld.css');<br /><br /><br /><br />ob_end_flush();<br /><br />?&gt;<br /></code><br />¿Por qué este método es el mejor? Porque es el único de los 3 métodos que no requiere renombrar sus archivos .css a .php ni modificarlos. Muy factible de utilizar en un sitio en producción. Adicionalmente, la expresión utilizada para comprimir los comentarios del archivo CSS es también muy buena.<br /><br /><span style="font-weight: bold;">Observaciones de InterGraphicDESIGNS:</span><br /><br />A pesar del aprovechamiento que se le puede dar a estos métodos, tenemos que tomar en cuenta que los archivos css se comprimen cada vez que la página es cargada (con excepción de las páginas que habiliten algún caché), lo que podría provocar procesamiento extra del CPU en un sitio con mucho tráfico.<br /><br />Algo que puede resultar de utilidad es elaborar un script en PHP que, usando cualquiera de estos 3 métodos, genere los archivos finales CSS comprimidos y éstos sean leídos directamente por las páginas para evitar que el servidor esté comprimiendo los archivos CSS cada vez que se cargan dichas páginas. Con esto conseguiríamos también “ofuscar” de alguna manera nuestros CSS haciendo un tanto difícil para el usuario en Internet leer los mismos.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4363003408010462914-8037283059255198350?l=www.intergraphicdesigns.com%2Fblog%2Fphp-mysql'/></div>InterGraphicDESIGNShttp://www.blogger.com/profile/04282302770207311617noreply@blogger.com0tag:blogger.com,1999:blog-4363003408010462914.post-48752141359875527762008-11-20T10:00:00.004-06:002008-11-20T10:30:07.660-06:00Tips para evaluar velocidad de scripts de PHPNo todos los scripts PHP son igual de rápidos aunque funcionalmente logren el mismo objetivo, el sitio web "<a href="http://www.phpbench.com/">The PHP Benchmark</a>" 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.<br /><br />El proyecto es encabezado por Chris Vincent, y utiliza la <a href="http://cr.php.net/microtime">función microtime() de PHP</a> para publicar este tipo de resultados.<br /><br /><span style="font-style: italic;">Algunos ejemplos interesantes:</span><br /><br /><span style="font-weight: bold;">Utilizar for ($i=0; $i<$size; $i++)" en vez de utilizar "for ($i=0; $i<sizeof($x);><br /><br /></sizeof($x);></span><span><sizeof($x);>Pues el cálculo de la función sizeOf o count toma mucho tiempo de ejecución.<br /><br /><span style="font-style: italic;">Resultados:</span><br /><br />Precalculando el tamaño del array: 132 milisegundos.<br />Calculando el tamaño del array en cada iteración: <span>57296 milsegundos</span></sizeof($x);></span><span style="font-weight: bold;"><sizeof($x);><br /><br /><span style="font-weight: bold;">Resultados interesantes con la función echo():</span><br /><br /></sizeof($x);></span><span><sizeof($x);>echo 'aaaaaaaaaaaaaaaaaaaaaaaaaaaa': 139 milisegundos.<br />echo 'aaaaaaa','aaaaaaa','aaaaaaa','aaaaaaa': 278 milisegundos.</sizeof($x);></span><span style="font-weight: bold;"><sizeof($x);><br /><br /><span style="font-weight: bold;">Utilizar foreach en vez de utilizar while:</span><br /><br /></sizeof($x);></span><span><sizeof($x);>foreach($aHash as $val); 14 milisegundos.<br /><br />while(list($key) = each($aHash)) $tmp[] = $aHash[$key]; 98 milisegundos.<br /><br />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.</sizeof($x);></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4363003408010462914-4875214135987552776?l=www.intergraphicdesigns.com%2Fblog%2Fphp-mysql'/></div>InterGraphicDESIGNShttp://www.blogger.com/profile/04282302770207311617noreply@blogger.com0tag:blogger.com,1999:blog-4363003408010462914.post-28258638881822981772008-09-29T12:31:00.004-06:002008-09-29T12:35:26.705-06:00Resumen sobre ventajas de utilizar SubVersionEl presente es el artículo escrito por Rolando Vindas de InterGraphicDESIGNS, el cual fue publicado por la revista <a href="http://www.radarti.com/inside.php?id=377&amp;categoria=35&amp;mail=&amp;action=more_details">RadarTI</a> en su primera versión impresa.<br /><br /><span style="font-weight: bold;" class="Letratituloazulinside">Trabajo colaborativo: Subversion, una opción efectiva para controlar y ordenar el desarrollo</span><br /><br />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.<br /><br />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.<br /><br />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.<br /><br />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.<br /><br />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”.<br /><br /><span style="font-weight: bold;">Visibilidad del cambio</span><br /><br />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.<br /><br />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.<br /><br />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.<br /><br />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.<br /><br /><span style="font-weight: bold;">Características</span><br /><br />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.<br /><br />Entre los métodos más conocidos para acceder a los repositorios, podemos enumerar:<br /><br /><ul><li> Servidor Web de Apache mediante la utilización del módulo WebDAV (http y https).</li><li> Servicio svnserve, propio de Subversion, que permite también el acceso mediante una conexión segura establecida con el protocolo SSH.</li><li>Acceso utilizando direcciones tipo URL, directos en caso de que el repositorio resida en la máquina local (por ejemplo: file:///).</li></ul><br /><span style="font-weight: bold;">Versión a versión</span><br /><br />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.<br /><br />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.<br /><br />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.<br /><br />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.<br /><br /><span style="font-weight: bold;">Subversion y los diferentes actores</span><br /><br />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.<br /><br />En un caso común, podríamos tener en el entorno de un proyecto a:<br /><br /><ul><li> El equipo de desarrolladores.</li><li> El administrador del proyecto.</li><li> El administrador del repositorio de Subversión.</li><li> El administrador de la red.</li><li> Desarrollo</li></ul>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.<br /><br />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.<br /><br />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.<br /><br /><span style="font-weight: bold;">Administración</span><br /><br />Este software permite al administrador 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.<br /><br />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.<br /><br />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.<br /><br />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.<br /><br />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.<br /><br />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.<br /><br />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.<br /><br /><span style="font-weight: bold;">Experiencias con Subversion en Proyectos Web</span><br /><br />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).<br /><br />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.<br /><br />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.<br /><br />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.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4363003408010462914-2825863888182298177?l=www.intergraphicdesigns.com%2Fblog%2Fphp-mysql'/></div>InterGraphicDESIGNShttp://www.blogger.com/profile/04282302770207311617noreply@blogger.com0tag:blogger.com,1999:blog-4363003408010462914.post-71356038119709819182008-08-01T13:51:00.003-06:002008-08-01T14:01:38.252-06:00Lanzamiento de php 5.3 alfa 1El equipo de php ha anunciado en su <a href="http://www.php.net/index.php#id2008-08-01-1">sitio web </a>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.<br />Los cambios más importantes incluyen <a href="http://wiki.php.net/rfc/closures">funciones lambda y closure</a>, recolector cíclico de basura, adición de las extensiones <a href="http://php.net/book.intl">intl</a>, <a href="http://php.net/book.phar">phar</a>, <a href="http://php.net/book.fileinfo">fileinfo</a>, <a href="http://php.net/book.sqlite3">sqlite3 </a>entre otros.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4363003408010462914-7135603811970981918?l=www.intergraphicdesigns.com%2Fblog%2Fphp-mysql'/></div>Juan Moránnoreply@blogger.com0tag:blogger.com,1999:blog-4363003408010462914.post-74682637231125032392008-07-09T09:47:00.002-06:002008-07-09T09:53:26.678-06:00TurboDbAdmin, administre sus BD via web, con este módulo AjaxTurboDbAdmin es una excelente forma de administrar sus bases de datos de una forma rápida vía web, las ventajas sobre otras conocidas aplicaciones de este tipo, como phpMyAdmin, es el no tener que usar botones "Submit" ni refrescamientos de página, al tener todo al estilo Ajax es mucho más rápido hacer ediciones, insertar filas, ejecutar consultas SQL, etc; como si estuviéramos en una aplicación de escritorio.<br /><br />Requiere PHP 4.3 o superior y MySQL 3 o superior.<br /><br />Ha superado las pruebas de testing en Firefox y en IE 6.0 o superior.<br /><br />El producto aún tiene en desarrollo varias tareas esenciales en la administración de bases de datos, por lo que la recomendación iría en tener esta herramienta como apoyo a otros editores de BD.<br /><br />Ir al sitio oficial de <a href="http://www.turboajax.com/products/turbodbadmin/">TurboDbAdmin</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4363003408010462914-7468263723112503239?l=www.intergraphicdesigns.com%2Fblog%2Fphp-mysql'/></div>InterGraphicDESIGNShttp://www.blogger.com/profile/04282302770207311617noreply@blogger.com0tag:blogger.com,1999:blog-4363003408010462914.post-57860336706865252472008-05-31T21:36:00.003-06:002008-05-31T21:51:39.530-06:00Comentarios y ejemplo con xajax - PHP Class LibraryXAJaX 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.<br /><br />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.<br /><br />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.<br /><br />Para consultar información más detallada de esta librería, la página oficial del proyecto es: <a href="http://www.xajaxproject.org/">http://www.xajaxproject.org</a><br /><br />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.<br /><br />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:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.intergraphicdesigns.com/blog/php-mysql/uploaded_images/estructura_ejemplo_xajax-722262.gif"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://www.intergraphicdesigns.com/blog/php-mysql/uploaded_images/estructura_ejemplo_xajax-722260.gif" alt="" border="0" /></a>Primeramente vamos a crear nuestro archivo principal index.php que contiene los objetos HTML a ser actualizados dinámicamente:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.intergraphicdesigns.com/blog/php-mysql/uploaded_images/index-798996.gif"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://www.intergraphicdesigns.com/blog/php-mysql/uploaded_images/index-798988.gif" alt="" border="0" /></a>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):<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.intergraphicdesigns.com/blog/php-mysql/uploaded_images/xajax-761905.gif"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://www.intergraphicdesigns.com/blog/php-mysql/uploaded_images/xajax-761867.gif" alt="" border="0" /></a>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).<br /><br />Descargar acá el ejemplo completo: <a href="http://www.intergraphicdesigns.com/blog/php-mysql/ejemplo_xajax.zip">ejemplo_xajax.zip</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4363003408010462914-5786033670686525247?l=www.intergraphicdesigns.com%2Fblog%2Fphp-mysql'/></div>InterGraphicDESIGNShttp://www.blogger.com/profile/04282302770207311617noreply@blogger.com2tag:blogger.com,1999:blog-4363003408010462914.post-53553455792826142592008-05-26T18:12:00.002-06:002008-05-26T18:29:22.871-06:00Las ventajas de documentar en PHP con phpDocumentorSegún el sitio <a href="http://www.phpdoc.org/">http://www.phpdoc.org/</a>, 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.<br /><br />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.<br /><br />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.<br /><br />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, <a href="http://www.phpdoc.org/features.php">consulte el listado completo de características (en Inglés)</a><br /><br />Puede leer más sobre phpDocumentor en algunos de los siguientes enlaces:<br /><ul><li><a href="http://www.epsilon-eridani.com/p2D/ap/p2D.php/accion/ver_doc/doc/phpDoc927/plantilla.htm">phpDocumentor -Documentar código nunca fue tan sencillo</a></li><li><a href="http://www.phpdoc.org/">Página oficial de phpDocumentor</a></li></ul><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4363003408010462914-5355345579282614259?l=www.intergraphicdesigns.com%2Fblog%2Fphp-mysql'/></div>InterGraphicDESIGNShttp://www.blogger.com/profile/04282302770207311617noreply@blogger.com0tag:blogger.com,1999:blog-4363003408010462914.post-88958322394519733322008-04-25T17:15:00.003-06:002008-04-25T17:20:44.893-06:00PHP testFest 2008Queremos 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.<br /><br />Se está invitando a todas aquellas personas entusiastas de PHP, o que quieran conocer más sobre el mismo.<br /><br />Próximamente se estará actualizando el Wiki y el calendario de eventos de PHP.<br /><br />Para más información:<br /><br /><a href="http://wiki.php.net/qa/testfest" target="_blank">http://wiki.php.net/qa/testfest</a><br /><a href="http://www.costaricaphp.org/">http://www.costaricaphp.org</a><br /><a href="http://qa.php.net/testfest.php">http://qa.php.net/testfest.php</a><br /><br />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<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4363003408010462914-8895832239451973332?l=www.intergraphicdesigns.com%2Fblog%2Fphp-mysql'/></div>InterGraphicDESIGNShttp://www.blogger.com/profile/04282302770207311617noreply@blogger.com0tag:blogger.com,1999:blog-4363003408010462914.post-2368702205304272412008-04-05T22:42:00.005-06:002008-04-05T22:57:25.552-06:00¿Por qué la mascota de PHP es un elefante?<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.intergraphicdesigns.com/blog/php-mysql/uploaded_images/php-logo-php-721782.gif"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://www.intergraphicdesigns.com/blog/php-mysql/uploaded_images/php-logo-php-721780.gif" alt="" border="0" /></a>A pesar de no ser un tema técnico, la pregunta sobre por qué la mascota de PHP es un elefante es algo que muchos desarrolladores no conocen. La imagen de arriba presenta como los creadores de la mascota generaron al elefante.<br /><br />Adicionalmente, leyendo este artículo sobre el logo y otras curiosidades de PHP, encontré también que existen hasta peluches del elePHPhant; a pesar de que parece un tema sin mucha importancia, este tipo de elementos sirven en ocasiones para "evangelizar" sobre el uso de PHP, dar más presencia al tema de PHP en centros de trabajo, etc.<br /><br />Les presento algunas imágenes del elePHPant y algunos enlaces en caso de que quieran obtener más información sobre cómo comprarlo y de dónde viene toda esta temática.<br /><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.intergraphicdesigns.com/blog/php-mysql/uploaded_images/DSCN5594.JPG-770787.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://www.intergraphicdesigns.com/blog/php-mysql/uploaded_images/DSCN5594.JPG-770783.jpg" alt="" border="0" /></a><br /><a href="http://www.nexen.net/elephpant.php">Conocer más del elePHPant y dónde comprarlo</a><br /><br /><a href="http://www.cafepress.com/buy/php/">Más mercadería de PHP</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4363003408010462914-236870220530427241?l=www.intergraphicdesigns.com%2Fblog%2Fphp-mysql'/></div>InterGraphicDESIGNShttp://www.blogger.com/profile/04282302770207311617noreply@blogger.com0tag:blogger.com,1999:blog-4363003408010462914.post-26854484620378645192008-04-01T11:15:00.000-06:002008-04-01T11:19:37.956-06:00Inicios del grupo PHP Costa RicaCon gusto hemos presenciado como empieza a consolidarse una buena comunidad de desarrolladores PHP Costa Rica. La iniciativa nace en el grupo PHP Costa Rica que inició hace pocos meses con las primeras reuniones del grupo. En cada reunión se tocan temas de interés para la comunidad, otros beneficios de pertenecer al grupo es mantenerse actualizado con charlas de interés general, consultas en el foro de desarrolladores, y más. Es un gusto presenciar esta iniciativa y nos unimos a esta comunidad de programadores PHP Costa Rica con el objetivo de obtener más aprendizaje, retroalimentación, promover el uso de PHP y más. Para más información del grupo, visitar: <a href="http://www.costaricaphp.org/">http://www.costaricaphp.org/</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4363003408010462914-2685448462037864519?l=www.intergraphicdesigns.com%2Fblog%2Fphp-mysql'/></div>InterGraphicDESIGNShttp://www.blogger.com/profile/04282302770207311617noreply@blogger.com1