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.
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!
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!
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)
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!
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.
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!
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!
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!!
bueno birra no pero si un vinillo, y tanto que te digo algo.
Disfruta de las vacaciones!