Archive for the 'PHP' Category

WebSVN sin Enscript… (Pygments!!!)

Tuesday, March 18th, 2008

Aunque esta un poco fuera de lo habitual y se que tengo que continuar con mi serie sobre estructuras bien formadas, esto es algo que anoto para que no se me vuelva a olvidar. Como muchos saben suelo usar Subversion para el control de código fuente (o sea como SCM), aunque no es del todo mi agrado usar Subersion no me queda mucho por escoger en mi oficina, bueno, de eso no se trata el post.

Algunos quizás sepan que hay webapps para poder ver los repositorios de Subversion en el browser y así revisar nuestro repositorio, algunos de ellos son Trac (que es más que un simple repo browser), ViewCV y WebSVN (este último en PHP y usado por su simpleza para ver repositorios en SVN), aquí en la oficina usamos WebSVN para la colección de repositorios, pero si hay algo que irrita de WebSVN es su total incapacidad para resaltar texto en C# o VB.net.

WebSVN no resalta el código en estos lenguajes debido a que depende de Enscript para el resaltado de texto; enscript no posee archivos de sintaxis para C# o VB.net (realmente si tiene para C# pero es realmente malo, nisiquiera resalta palabras claves como namespace o partial). Recuerdo que en la oficina un día aburridos hicimos un paster en Python usando Pylons y para resaltar texto empleamos Pygments, una excelente framework de resaltado de código fuente. Pygments puede usar la línea de comandos para resaltar texto mediante pygmentize así que decidí reemplazar el segmento de código en WebSVN que resalta el código y que en vez de enscript usara pygmentize.

Revisando el código de WebSVN fue algo dificil, el código es algo enmarañado, algo así al estilo de programadores de PHP a quienes les encanta ver acumulaciones de if en el código fuente, bueno, por lo menos no mezclaban HTML con PHP, algo es algo. Luego de revisar el código di como cambiar el resaltado a pygments y resaltar código en VB.net y C#.

En su instalación de WebSVN agreguen soporte para C# y VB.net modificando el archivo include/setup.php, busquen la línea que reza:

$extEnscript = array = ( .ada => ada,

Y agreguen donde quieran (claro, antes que cierre la declaración del arreglo) lo siguiente:

.cs => csharp, .vb => vbnet,

Luego de eso cambiemos de enscript a pygmentize, primero instalemos Pygments, esto es un paso simple (tomando en cuenta que instalaron WebSVN), la documentación esta en el sitio de Pygments.

Ahora busquemos el archivo include/svnlook.php y lleguemos a la línea que reza lo siguiente:

$config->enscript." –language=html". ($l ? "–color –pretty-print=$l" : "")." -o - | ".

En mi instalación particular de WebSVN esta en la línea 584 aproximadamente. Ahora cambiemosla por algo mas simple: (ya sea comentando la anterior o borrandola)

"pygmentize -f html -l " . $l . " -O noclasses=1,style=colorful");

Listo, ahora WebSVN resaltará el código usando Pygments y no tendrá problemas con nuestro VB.net o C#, simple no?

Technorati Tags: ,,,

BDD y PHP

Wednesday, February 13th, 2008

Como muchos sabran PHP es un lenguaje al cual le tengo cariño, bueno, quizás más cariño del que debiera, en gran parte porque fue de mis primeros lenguajes que use exclusivamente para desarrollo web (yep, también puede servir para otras cosas que no sean web, sino revisen mis pocos post de PHP), y aunque ahora PHP es sumamente popular muchos siguen desarrollando de una forma algo “extraña” en PHP, total, digamos que le tengo cariño y punto.

Desde hace muchísimo tiempo soy fanático del desarrollo ágil, me considero a mi mismo agilista y fanático de muchas tendencias que “hasta ahora” estan de moda en muchos circulos de desarrollo, en .Net en general es fácil ser absorvido por prácticas como TDD, BDD, DDD (muchas siglas va?), refactoring, prefactoring, y muchas otras que en realidad le hacen la vida más fácil y placentera al desarrollador, he notado con el transcurso del tiempo que algo extraño sucede en la mayoría de los desarrolladores de PHP y es como que siguen pensando en PHP como “aquel lenguaje web que me hace hacer las cosas rápido sin preocuparme por formalismos”, bien tampoco estoy para hablar de eso hoy (solo queria desahogarme :P).

Una de esas técnicas ya muy usada es BDD, Behavior Driven Development, se trata, en resumen, de un paso más general en la forma de ver el testing de una aplicación, basandose en historias y especificaciones de software. Siempre me había preguntado como crear “Specs” en PHP hasta que hace unos días me topo con el siguiente post http://devzone.zend.com/article/3082-Designing-Klingon-Warships-Using-Behaviour-Driven-Development

Ojo, se basa en el uso de PHPSpec y no de PHPUnit, que aunque se ha publicado posee una extensión para la descripción de historias y especificaciones (http://sebastian-bergmann.de/archives/738-Support-for-BDD-and-Stories-in-PHPUnit-3.3.html) no lo considero una herramienta BDD como tal, sino un simple wrapper y extensión para la definición de especificaciones (sino fíjense en los ejemplos y vean la diferencia entre los dos). Algo interesante acerca de ambas implementaciones es el uso de Fluent Programming para especificar los test, estoy feliz de ver como se ha propagado la programación fluída últimamente :D (del cual también me hice fan desde que leí el articulo de M. Fowler).

Una forma de iniciar con BDD es usando FIT (se menciona bastante en el artículo), en PHP conozco solamente una extensión para el uso de FIT, esta en PEAR por supuesto :P se trata de Testing_FIT

Bueno, lean el artículo y me cuentan que tal les va :D

PHP, .Net o qué?

Thursday, February 7th, 2008

No suelo escribir asuntos personales o similares, pero ustedes son los que de vez en cuando leen mi blog, como sabran de lo que más escribo es de tecnologías relacionadas a .Net, y más que todo me he orientado a conceptos básicos (si, ya se que más que alguien quisiera saber cosas a lo avanzado, pero se han preguntado si ya han afianzado bien lo básico?) y aunque no es de mis lenguajes favoritos digamos que le tengo cariño a PHP, mi pregunta a ustedes se resume en los siguientes puntos:

  • Escribo más sobre PHP o ya no les interesa?
  • Divido todo en dos blogs, uno para PHP y otro para .Net o todo en uno solo?
  • En .Net les interesan mas los temas simples y básicos o quieren que me vaya de una vez a cosas mas marcianas?

Ustedes son mis lectores, ustedes deciden, dejen su comentario y veamos sus impresiones. De ustedes depende de que seguiré escribiendo (algo que ahora ya logré obtener mucho más tiempo para hacerlo aunque sea dos veces a la semana!) :P

Saludos!

Feliz año nuevo y actualiza tu Copyright

Tuesday, January 1st, 2008
A

Cliente PHP para Pownce

Tuesday, November 27th, 2007
A

dBug, var_dump() con estilo

Saturday, September 22nd, 2007

Hace unos poco días encontré un pequeño script php para poder mostrar el contenido e información de alguna variables que indiques, muy similar al funcionamiento de var_dump(), pero con la gran diferencia que despliega la información dentro de tablas HTML y estilos CSS. El script se llama dBug y está disponible bajo licencia GNU GPL.

Por ejemplo, me ha servido para curiosear dentro de las variables de WP-Cache mientras le hago algunas modificaciónes. Usando var_dump() resulta un poco incomodo ya que firefox presenta los datos mal agrupados:

salida de var_dump() vista en firefox

Usando dBug, la información de las variables las presenta así:

PHP dBug

Facilita mucho la lectura e interpretación de las variables. Incluso al hacer clic sobre las filas, estas se encojen para ocultar contenidos que no necesitamos o son muy amplios. Pueden ver algunos ejemplos de dbug y los datos que presenta.

Para usar dBug es tan sencillo como primero tener:

include_once("dBug.php"); 

En alguna parte de nuestro script (como dentro de wp-config.php) y luego hacer la llamada pasando la variable de la cual deseamos obtener más información usando dBug:

new dBug($variable); 

A mi me parece muy útil para enfocarse en depurar o curiosear las variables, sin tener que perder tiempo en presentar los datos en forma leíble.

Etiquetas de búsqueda: , , ,

Agrega tu comentario

PEAR::Service_Webservice

Monday, August 20th, 2007

Desde hace ya varios años soy fiel defensor de la distribución de aplicaciones y la interoperatibilidad usando WebServices, uno de los lenguajes que comencé por explotar con esta tecnología fue PHP, claro, usando PEAR::SOAP, uno de los inconvenientes (en realidad hay varios) de PEAR::SOAP era lo dificil de escribir de cada implementación y lo aún más difícil de “debug” (créanme, a veces pasa a ser toda una pesadilla). Bueno, de unos meses para acá me topo con otro amigo que por lo menos para un par de cosas me facilitó bastante el trabajo, se trata de PEAR::Services_Webservice.

(more…)

El fin de PHP como muchos lo conocen

Thursday, August 16th, 2007

Hace unos meses atrás hablaba con alguien que me contaba lo feliz que se sentia al lograr que aprobaran el uso de “ciertas” librerías PEAR en su trabajo, esto ayudaría a ampliar grandemente su kit de herramientas de trabajo. Claro, le dijeron que si al uso de librerías PEAR pero rebotaron y de forma definitiva su petición para desarrollar sitios en PHP5. Cuando este compañero me conto sobre el caso le comenté sobre la desición de la organización PEAR de no soportar a partir del 1 de enero del año 2008 a cualquier librería que dependiera de PHP menor a la versión 5.0 (http://pear.php.net/news/package.xml.1.0.php), resulta que aunque ya muchos lo veiamos venir, ahora es oficial el anuncio de parte de PHP, a partir del 1 de enero del 2008 tampoco será “soportado” versiones de PHP anteriores a la versión 5, por lo que recomiendan portar sus aplicaciones a la versión 5 como mínimo, (la noticia en la pagina principal de php http://www.php.net). Creo que es ahora un buen momento no solo para portar sus respectivas aplicaciones a PHP5 (que en mi criterio es ahora un lenguaje “muy compentente”) sino también para aprender buenas prácticas en cuanto a técnicas de desarrollo de aplicaciones web.

Cualquier otra cosa y OOXML

Friday, August 10th, 2007

Desde hace un buen tiempo veo el debate y el escándalo (a lo muy personal absurdo, pero otro día con mucho gusto comentaré sobre eso, claro, desde el punto de vista técnico) sobre la aprobación del OOXML (Office Open XML) por parte de la organización ISO. Uno de los debates que hace poco alguien menciono es que uno de los problemas de XML es que sería difícil escribir código que interactuara y manejara este formato de archivo. Bueno, me imagino que el que dijo semejante cosa no era ni en lo mas cercano un desarrollador, para probarlo mi amigo Ricardo Jimenez de Microsoft ha convocado un concurso sobre escribir archivos OOXML. Los dejo con la noticia y espero que participen, el concurso vence el Lunes 13 de Agosto del año 2007 antes de las 8:00 am hora Costa Rica. Luego del concurso les contaré que tal me fue :D

Noticia original: http://blogs.msdn.com/ricardoj/archive/2007/08/10/age-of-empires-halo-shadowrun-fable-concurso-de-fin-de-semana.aspx

Fin del ciclo de vida para PHP4

Friday, July 13th, 2007

Hoy PHP.net anuncia el fin del ciclo de vida para PHP4, luego de tres largos años desde la liberación de PHP5. Los desarrolladores anunciaron de despues de 31 de diciembre de este año ya no habrán más versiones de php4 y que seguirán lanzado exclusivamente versiones de parches de seguridad hasta el 8 de Agostso de 2008.

Este anuncio sumado a la campaña de GO PHP5, son claros indicios de que es hora de moverse definitivamente a php5 y empezar a aprovechar sus bondades.

Etiquetas de búsqueda: , ,