Too Cool for Internet Explorer

The IT Crowd, segunda temporada 5

Hora y Fecha: Agosto 29, 2007 @ 10:46 pm Autor: Moisés Maciá
Categorías:
309 views

Acabo de ver el primer episodio de la segunda temporada y todavía estoy limpiándome los lagrimones de la risa. Para mi la serie tocó techo en el episodio de la primera temporada en el que Richmond se transformaba en gótico/no-muerto, hasta hoy. No voy a spoilear nada pero la segunda temporada empieza fuertecito :)

Como la serie no la van a emitir en España ni poniéndole una pistola en la sien a los programadores de tv, la podéis encontrar en los canales habituales.



Nuevas métricas en PHPUnit 0

Hora y Fecha: Agosto 27, 2007 @ 10:05 pm Autor: Moisés Maciá
Categorías:
328 views

Mientras el blog ardía

La semana pasada entró en el repositorio de PHPUnit una nueva métrica de software que sirve para detectar el índice de código duplicado de un proyecto (el típico copy&paste), así que poco a poco PHPUnit deja de ser una herramienta “sólo para tests unitarios”.

Esta nueva métrica se une al extenso abanico de las ya existentes y pueden utilizarse a modo informativo o como restricciones a la hora de programar. Para ello, PHPUnit es capaz de integrarse con otra herramienta bien conocida en el mundo Java :) , CruiseControl.



Sobre Java 35

Hora y Fecha: Agosto 19, 2007 @ 10:13 pm Autor: Moisés Maciá
Categorías:
569 views

Voy a responder con un post enterito a javangeligo que el otro día me decía en un comentario que acabaría utilizando Java tarde o temprano. Bien, el caso es que ya utilizo Java; no tanto como PHP y JavaScript, pero si lo suficiente como para discutir las cosas que no me gustan de él.

Para empezar Java es mastodóntico, tan grande que se hace imposible utilizarlo efectivamente sin recurrir a un IDE que escriba código por ti (véase Eclipse, Net Beans, Sun Studio, etc. ). De esto adolece también .Net + Visual Studio: a ver quien es el guapo que programa sin utilizar el IntelliSense!

Aunque claro, es mas sencillo poner a una docena de juntaletras con los conocimientos básicos delante de un Visual Studio/Eclipse y que buceen por la API de cientos de clases "con el punto" a ver cual es la combinación correcta, antes que encontrar a doce tios que se hayan empapado del Code Complete, Pragmatic Programmer, los ensayos de Joel Spolsky, los posts de Jeff Atwood, que sepan qué diablos es un patrón de diseño y que tengan un mínimo de sentido crítico al hacer su trabajo para ver qué herramienta utilizar en cada caso. Pero bueno esa es otra batalla …

Creo que la productividad viene de mano del programador y su manera de hacer las cosas no del lenguaje o el IDE utilizados; y ojo, no digo que no ayuden ni que no sean útiles, pero los IDEs no son la panacea: si no hay metodología ni rigor la misma mierda sale del notepad que del Eclipse.

El código de alto nivel se hizo para que lo leyeran (y entendieran) los seres humanos no las máquinas, entonces ¿por que Java (y su copia, .Net) se empeña en hacerlo todo tan exageradamente abstracto? ¿Cuando van a quitar los cientos de deprecated del JDK que se arrastran desde el JDK 1.1 o el 1.2? ¿los getters y setters que tanto abundan no chocaban frontalmente con el principio de encapsulación del diseño orientado a objetos?

Cito a Rich Skrenta:

El código es malo. Apesta. Requiere mantenimiento periódico. Tiene fallos que requieren ser encontrados. Nuevas funcionalidades significan que el viejo código tiene que ser adaptado. Cuanto más código tienes, más sitios hay dónde pueden esconderse los bugs. Todo el tiempo que tarda en compilar. Todo el tiempo que tarda un nuevo empleado en encontrar sentido a tu sistema. Si tienes que refactorizar hay un montón de cosas que mover de un sitio a otro.

El código lo producen ingenieros. Para producir más código necesitas más ingenieros. Los ingenieros tienen un coste en comunicaciones de n², y todo el código que añaden al sistema, mientras expanden su capacidad, también incrementa los costes. Deberías hacer lo posible por incrementar la productividad individual de tus programadores en términos de la expresividad y potencia de lo que escriben. Menos código hace lo mismo (y posiblemente mejor). Menos programadores que contratar. Menos costes en la organización de las comunicaciones.

Y es que el mejor código posible es el que no escribes.

No voy a decir que Java es un mierda porque no es así y sería de imbéciles siquiera pretenderlo, pero lo que está claro que no es una bala de plata.

Por ejemplo, durante este mes he estado programando varios applets y sólo $DEITY sabe lo mucho que he tenido presente a la familia del que ideó el retorcido sistema de layouts para los GUI en Java, y eso que empleaba Swing que representa un adelanto bastante importante frente a AWT.

En un principio no parece tan horrible, hasta que lo comparas con el mejor sistema para diseñar GUIs: Qt (también disponible para Java), que no sólo hace el código más sencillo y legible sino que además es mucho más compacto. Lastima que no me dejen meter Jambi como dependencia :(

En fin para qué vamos a discutir … me mola más el tipado débil y multi paradigma, que le vamos a hacer.



Quality Assurance en PHP 2

Hora y Fecha: Agosto 17, 2007 @ 9:18 pm Autor: Moisés Maciá
Categorías:
384 views

Algunos apuntes rápidos sobre tecnologías que hacen que este verano esté trabajando en lugar de estar tumbado bajo una palmera sorbiendo licor de un coco con sombrilla:

Xdebug

Un depurador, perfilador y analizador de trazas para PHP con posibilidad de realizar code coverage (no me atrevo a traducirlo :)

Lo mejor de esta herramienta son los volcados de pila y variables en memoria, una auténtica gozada después de sufrir durante años los echo, los var_dump y los printr.

El tema del perfilado de código también es bastante interesante de cara a ver dónde se pierden ciclos en los scripts. En Linux se puede ver el árbol de llamadas del código con el KCacheGrind de toda la vida (viene con KDE-devel en todas las distros); para los que sufren Windows está el port WinCacheGrind, pero ya aviso que es lento y pesado a más no poder. Para OSX ni idea, imagino que habrá un port de KCacheGrind o como mínimo se podrá utilizar la instrumentación de valgrind/callgrind a pelo, no se.

También se puede integrar con Eclipse + PDT para depurar sin salir del IDE, aunque es un poco patatero todavía.

Para instalar Xdebug lo mejor es tirar de los repositorios PEAR/PECL y compilarlo. No hay paquetes para Ubuntu ni para Debian de momento.

PHPUnit

Un framework para realizar tests unitarios de manera tan sencilla que da reparo no hacerlos :)

Antes utilizaba SimpleTest pero este me gusta mucho más por la versatilidad que ofrece y el rápido desarrollo. Está completamente orientado a objetos y puede funcionar conjuntamente con Xdebug para realizar unos bonitos informes de cobertura.

PHPUnit es una herramienta sobre la que se está trabajando muy activamente. Entre las cosas interesantes que se pueden hacer (a parte de lo que he dicho) quizá destacaría el mutation testing y el test para bases de datos PHPDBUnit que es un port directo del DBUnit de Java.

Estas funcionalidades no están publicadas actualmente pero los ansiosos pueden hacer un checkout del svn de PHPUnit para empezar a hackear, están en /phpunit/branches/mutation_testing y /phpunit/branches/dbunit respectivamente.

Otra herramienta increíble que puede interactuar con PHPUnit es Selenium del que ya hablé por aquí hace un tiempo. Con estas dos joyitas se puede construir un sistema de tests de aceptación completo para aplicaciones web.

Para instalar PHPUnit, lo mejor de nuevo, es tirar de Pear porque la versión que viene empaquetada en Debian/Ubuntu es bastante antigua.

Phing

¿Habeis utilizado alguna vez Apache Ant en Java? pues Phing es lo mismito pero para PHP; guarda una cierta compatibilidad con la sintáxis de Ant pero incorporando algunos targets útiles para PHP,como por ejemplo la integración con PHPUnit :) o el acceso a Subversion.

Tampoco es que me guste mucho utilizar XML para hacer los scripts de los despliegues … porque el XML tiende a hacer las cosas complicadas imposibles, pero para las tareas habituales no se requieren más de una docena de lineas.

Para instalarlo, más Pear.




Bad Behavior has blocked 323 access attempts in the last 7 days.