Otro de mis pequeños proyectos

PHP Conference 2009. Dí­a 2

Y, con mucha tristeza, ya ha terminado la PHP Conference 2009. Tristeza porque se acaba, pero creo que el balance final hay sido muy muy positivo y me voy realmente contento.

Al igual que hice ayer, voy a realizar un pequeño resumen de las conferencias a las que he asistido, que también prometí­an.

Eso sí­, no me quedo sin comentar lo bien que nos lo hemos pasado en el sorteo final y entrega de premios. Como colofón a la PHP Conference 2009, la organización realizó un sorteo en que entreban 7 packs de libro de O’Reilly + elePHPant, más 3 XBOX 360. Para empezar, muchas de las personas que esperaban participar en el sorteo se encontraron con que no podí­an hacerlo puesto que no habí­an completado la encuesta. Las probabilidades de que nos tocase algo aumentaron mucho 🙂

Tras todo esto, para entregar los premios oparon por un método que me pareció de lo más original y que, de alguna forma u otra, adoptaré, jeje. Se trataba de obtener tantos números de forma aleatoria como premios habí­a y para ello usaron http://www.random.org. Los números obtenidos eran los ids numéricos de las personas que habí­an contestado la encuesta.

Tras varios intentos frustrados por parte de Buenosvinos de dominar al MAC que le habí­an dejado para tal efecto (si por algo los MAC OS X tienen nombres de fieras xDD), sacaron los nombres. Arkaitz se llevó un libro + elePHPant e Iván una XBOX 360. Yo no tuve tanta suerte, pero bueno, 2 de 3 🙂

Por lo menos, he aprovechado la oferta de O’Reilly para comprarme un libro de git con un 35% de descuento 😀

Y bueno, estas han sido las conferencias a las que he asistido hoy:

  • PHundamental Security by Hans Zaunere
  • The State of Quality Assurance Tools for PHP by Sebastian Bergmann
  • Técnicas y Herramientas para una API con REST by Àlex Puig
  • Symfony 2.0 a sneak peak by Fabien Potencier
  • Open Classifieds by Chema Garrido

Y he aquí­ unn pequeño resumen:

PHundamental Security

Hans nos dio una buena charla cargada de otra buena cantidad de frases para apuntar y grabar a fuego sobre aspectos relacionados con la seguridad de nuestros servidores y PHP.

Sus comentarios inicialmente partí­an de sistemas en los que tenemos mucho control, pudiendo decidir hasta la forma de compilar los módulos. Algo que en algunos casos puede ser excesivo, pero desde luego tenemos que tener la oportunidad de decidir los módulos que están instalados.

Me quedo principalmente con estas dos frases (que no son las mejores, pero realmente creo que dicen mucho en poco espacio):

Let PHP do its magic inly whe you want it to – not by chance

Mayority «PHP security flaws» could be avoided by casting to int

The State of Quality Assurance Tools for PHP

http://www.slideshare.net/sebastian_bergmann/the-state-of-qa-tools-for-php-2389795

La charla de Bergmann tuvo, en mi opinión dos partes bien diferenciadas, la primera que me pareció hasta aburrida ya que eran conceptos demasiado básicos para una charla de este estilo, pero en la segunda parte (mitad-final) estuvo plagada de buenos ejemplos, herramientas y enlaces veerdaderamente útiles e interesantes.

Muy buen sabor de boca pese a ser una persona que odia los Singleton sn excepción :p

Técnicas y Herramientas para una API con REST

Charla introductoria a REST que contaba, partiendo de lo más básico, cómo realizar una API y cómo montar tu aplicación. Desde mi punto de vista, todo iba bien hasta que entró a explicarlo con un MVC y dar ciertas explicaciones dentro de un contexto más personal que general.

Interesante charla como introducción aunque a mi personalmente se me quedó algo corta.

Symfony 2.0 a sneak peak

http://www.slideshare.net/fabpot/symfony-20-on-php-53

Contando con la presencia de Fabien Potencier como ponente, mostró lo que va a ser el nuevo Symfony 2, orientado principalmente a las nuevas incorporaciones. Cabe destacar que funcionará únicamente para PHP 5.3 y será una reealidad inicialmente a finales de 2010. El respaso fue demasiado exhaustivo entrando quiás demasiado a poner ejemplos con código, algo que creo que no ayudó mucho a mostrar el potencial de algunos apartados.

Cotnamos con una completa explicación de Event Dispatcher, Request Handler, Templating Framework y Dependency Injection Container.

Esperábamos haber visto algo de Twig, pero no salió nada del tema.

Open Classifieds

De esta charla tengo que decir que alabo las ganas que le echó el ponente por dar a conocer su proyecto, pero predicar con el hecho de que hay que seguir el concepto KISS y que se ha venido de controlar la programación en Java a PHP para decir que no se usa un framework para hacer tu código más efectivo, hacer código spaguetthi y considerarlo bueno y mantenible… creo que te has confundido de sitio.

9 comentarios

  1. Chema

    Hola,

    Soy el ponente de Open Classifieds.

    Gracias por asistir.

    ¿Por que me he confundido de sitio? No creo ser el único en esta conferencia defendiendo concepto KISS, demostrado sobradamente de beneficios que esto puede llevar.

    Ojo que no estoy en contra del uso de frameworks (cuando yo era uno de los que usaban) simplemente me gusta tener un control mas completo sobre todo lo que está ahí­ funcionando sin funcionalidades extras y optimizando lo máximo posible.

    saludos!

  2. tatai

    Hola Chema,

    Permí­teme aclarar un par de cosas.

    Creo que confundes los términos. Yo también intento practicar KISS todo lo posible y no te digo que no sea una buena idea hacerlo. Recordemos que es KISS: Keep It Simple, Stupid. La wikipedia lo explica perfectamente (http://es.wikipedia.org/wiki/Principio_KISS): «El principio KISS es aquel que recomienda el desarrollo empleando partes sencillas, comprensibles y con errores de fácil detección y corrección, rechazando lo enrevesado e innecesario en el desarrollo de sistemas complejos en ingenierí­a.»

    Por otro lado, el uso de frameworks. Tienes opiniones para todos los gustos es estos temas. Desde gente que los defiende a capa y espada (pongamos por ejemplo a Fabien Potencier, creador de Symfony), como gente que no les gusta, aunque con matices (creo que el mejor ejemplo es Rasmus Lerdorf, creador de PHP). El uso o no de frameworks no implica que no puedas (de hecho, deberí­as) organizar tu código, crear una serie de capas. El uso de framework «genéricos» implica que vas a meter cosas que es posible que no uses nunca, o capas que vengan de más y por eso el no uso de frameworks, para hacer tu código más eficiente, pero no sin seguir los principios básicos.

    Mi comentario a tu charla tiene que ver con todo esto. Proclamas seguir el principio KISS y que no usas ningún framework. Ok, todo perfecto, nadie tiene nada en contra de esto, hay opiniones para todos los gustos. El problema es cuando entramos a mirar el código que tiene Open Classifieds. Sólo tuve que ver el index.php de raí­z para ver que eso no es un código KISS, es lo que se denomina un código spaghetti. Ok, de acuerdo, a ti te puede parecer sencillo, pero no es mantenible ni sigues el principio KISS. Mezclas en el mismo index.php el include de cabecera y pie junto con html y php e incluso queries a la base de datos! No hace falta que uses un framework (aunque sinceramente, te recomendarí­a que mirases algo de Zend o PEAR) pero separa mí­nimamente las capas de datos, base de datos y visualización, crea unos cuantos objetos que materialicen y desmaterialicen tu información de la base de datos, etc, etc.

    En mi opinión, para empezar, separa la parte de código PHP de la de HTML (lo más sencillo, XTemplates), usa una capa de abstracción de la base de datos (por ejemplo, MDB2 de PEAR) y crea un objeto para cada elemento que tenga tu sistema y una clase que realice las acciones con la base de datos. Esto es lo más sencillo y no es ningún framework, serí­a el framework de tu aplicación, totalmente optimizado a tu trabajo. De aquí­ en adelante, todo lo que te quieras «complicar» seguro que es bienvenido, pero separa.

    PHP es un lenguaje que te permite hacer todas las guarradas que quieras, pero también te permite hacer las cosas bien. Hay que optar por el segundo camino.

    Creo que tu aplicación puede ser muy potente, de hecho asistí­ a tu conferencia con la idea de ver si podí­a servirme para varios de los clientes que tenemos en el trabajo, pero tras ver la implementación, es inviable, al menos desde mi punto de vista.

    Y no me entiendas mal, alabo tus ganas y tu interés, no todo el mundo es capaz de querer dar una charla en un evento como el PHPConference, pero no se puede predicar con algo que luego no se sigue. Por cierto, intenta evitar el «efecto demo», te ayudará a captar más adeptos 😉

    Un saludo y suerte!

  3. epplestun

    Amen.

    Yo también asistí­ a la charla, y he de corroborar todo lo que dice tatai.

    Como consejo para tu aplicación, yo deistribuirí­a el desarrollo basandolo en objetos (si vienes del mundo Java te será mucho más fácil e intuitivo) y sin dudarlo usarí­a MDB2 de PEAR para la abstracción de BBDD, Cache_Lite para el cacheo y como dice tatai, XTemplates para separar la visualización (HTML).

    Recuerda que las crí­ticas siempre son constructivas y se tiene que aprender de ellas (yo he aprendido mucho a base de crí­ticas de otros, y es de agradecer)

  4. Chema

    Todo lo contrario, me parece super interesante lo que comentáis. Las criticas constructivas son geniales, tener otros puntos de vista es muy de agradecer. Antes de nada gracias 😉

    Empiezo:

    Sigo todo lo que tatai me propone, ya no verí­a el código tan simple.

    No se si me explico, pero tatai mismo ha abierto un sólo fichero y ha encontrado todo de golpe. Eso no es simple?

    Que es una guarrada, amén por ello es cierto.

    Lo que no quiero es que se convierta en un WP. Que te tienes que leer su propia documentación para poder desarrollar sobre él :S

    No logro entender, por que es mas sencillo separar datos control y visualización (MVC), si tal y como está ahora, abro un fichero y ya tengo todo ahí­ y no tengo que hacerme «pajas» mentales de como funciona el código. Lo veo mas rápido y mas simple.

    Es complicado, quizás sea mi punto de rebeldí­a hací­a un trabajo muy muy muy organizado que hací­a en antaño. Y ahora veo que por velocidad de desarrollo y simplicidad me gusta mas así­.

    Recordemos que este soft realmente no es ningún tipo de negocio, sino lo dirí­a para que engañarnos, y plantearme un tipo de desarrollo (a mi parecer) mas costoso, ahora mismo no es viable.

    Como bien decí­s hay gente que le gustará así­ y a los que no.

    De nuevo gracias! espero vuestros comentarios o esta ayuda que es muy buena!

  5. Chema

    Yo de nuevo 😉

    Debo de defender un punto, tatai dices que yo uso spaguetti code pero por la definición de lo que comentan en wikipedia http://en.wikipedia.org/wiki/Spaghetti_code , yo no veo que OC este programado de esa manera, es código estructurado http://en.wikipedia.org/wiki/Structured_programming. ¿no?

    Por cierto es curioso lo de Lasagna code para los MVC xD hay nombres para todo.

  6. tatai

    Hola de nuevo Chema,

    Perdona por el retraso en contestar, pero estoy que no paro.

    Creo que hay un tema importante a tener en cuenta: simple no es lo mismo que mantenible o escalable. Efectivamente, ver todo en un index.php podemos considerarlo como «simple», está ahí­, nadie lo puede negar, pero en poco tiempo comprobarás que cada vez que tienes que hacer un cambio la cosa se va complicando más y más hasta llegar a un punto en que ciertos cambios que deberia ser una chorrada, se convierten en horas y horas. Yo te lo digo por decir, yo creo que todos alguna vez hemos pasado por eso y se descubre antes o después. Creo que lo bueno es que te avisen y que lo veas cuanto antes 🙂

    No te estoy diciendo que debas de hacerlo todo perfectamente estructurado, separando todas las capas, etc, etc. Hacerlo estoy seguro de que es muy bueno, pero creo que también es bueno ir paso a paso. Yo personalmente en algunos trabajos pequeños que he hecho, no lo tengo todo estrictamente separado y estructurado, pero sí­ que al menos hay cierta sepación, como las que te decí­a en el comentario anterior, por lo menos separar el PHP del HTML e intentar sacar un par de capas sencillas (base de datos y acceso a ella). Eso como mí­nimo para empezar a generar un código aceptable.

    Y, jeje, sobre el tema del código spaghetti, desde el punto de vista más purista (hasta lí­mites insospechados) viene definido como dices. No lo llamemos spaghetti, pongamosle un nombre más castizo que seguramente no esté en la wikipedia: código churro. No en referencia a lo bueno o malo que sea, sino al hecho de ser largo y, aunque tenga orientación a objetos, tener métodos muy largos, etc.

    Un saludo!

  7. Chema

    Gracias tatai, si vamos todos super liados.

    Hoy por hoy el soft se va a quedar tal y como está en el momento que hacer un cambio empiece a hacerse tedioso, no dudaré en cambios claro.

    He visto que eres de pamplona, suleo ir de vez en cuando tengo como «familia»
    ahí­, me encanta damre alguna escapada y desconectar.

    Te he hecho follow en twitter! hablamos!

  8. tatai

    Hola Chema,

    Ok, te me habí­as escapado en el twitter! Te hago follow yo también y así­ estamos en contacto.

    Si estas por Pamplona avisa y nos echamos una cerveza! Así­ podemos hablar más tranquilamente, me parece una charla interesante.

    Un saludo!!

  9. Chema

    bueno birra no pero si un vinillo, y tanto que te digo algo.

    Disfruta de las vacaciones!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *