viernes, 29 de enero de 2010

Python Regular Expressions

Bueno, me complace anunciarles mi pequeño aporte a la comunidad pythónica:


Python Regular Expressions

El sitio aún es beta, revienta en unos cuantos lugares. Pero lo voy a seguir puliendo en mis ratos libres.

Espero que les guste y les sea útil!

miércoles, 27 de enero de 2010

If en los templates de Django 1.2 (alpha)

Una de las cosas que mencioné en el post anterior sobre frameworks web, fue que en Django el sistema de templates tenía algunas cosas que no me terminaban de convencer.

Más específicamente, no me agradaba demasiado que sea bastante limitado (aunque sea intencionalmente), y que redefinía una sintaxis a veces rara para cosas que eran comunes, y que todos estamos acostumbrados a hacer de otra manera.

Ejemplo: si queríamos hacer un If comparando si dos variables son iguales, en lugar de un clásico "if a == b", teníamos que escribir algo como "ifequals a b" (una sintaxis que me recuerda más a LISP que a Python, jeje).


En estos días se liberó la versión 1.2 alpha 1 de Django, y para mi felicidad, descubrí que el tag "if" de los templates está muy renovado. Ahora lo veo mucho más natural y Pythónico!


Entre otras cosas, permite hacer cosas como "if a == b", "if a < b", o con cualquier otro operador de la lista normal de operadores de comparación.

También permite mezclar ands y ors en la misma sentencia, algo que antes no se permitía y limitaba un poco.


Notas de release de Django 1.2 alpha 1.

Link directo a la sección sobre el tag if.

lunes, 25 de enero de 2010

Rails, Django, Web2py

No voy a hacer una comparación objetiva. Lo aclaro desde el principio.

Lo que quiero escribir en este post es simplemente un breve resumen de mi opinión sobre los tres frameworks basado en mi propia experiencia. Es super subjetiva, y estoy abierto a que me cuenten los demás qué opinan.


No quiero con esto convencer a nadie de usar uno u otro framework. Creo que lo mejor es que cada uno experimente y decida por sí mismo.


Por razones de longitud, no voy a incluir las cosas buenas o malas que son comunes a los tres frameworks. Ya todos sabemos que plantean metodologías avanzadas, agilizan el desarrollo, etc. Voy a destacar solo lo que en mi experiencia, diferenció (para bien o para mal) a cada uno.


Rails



  • Fue mi puerta de entrada al mundo del desarrollo web, tengo que reconocerle eso. Si no fuese por Rails nunca me hubiese agradado ese mundo.

  • Tiene algunas utilidades que para un novato pueden ayudar mucho, aunque después no se usen tanto. Ej: scaffolds.

  • Posee una comunidad muy activa y abierta, que lo hace conocer y avanzar mucho. Y además es una comunidad muy distendida, agradable.

  • Su documentación es muy buena, detallada y con ejemplos útiles. Realmente ayuda a aprenderlo.

  • Me obligaba a hacer las cosas de una determinada manera, cuando a veces prefería hacerlas de otra. No me dejaba demasiada libertad para elegir cómo hacer las cosas.

  • En algunos aspectos suele ser complicado innecesariamente (IMHO). En especial, las migrations y la estructura de archivos, que opino pueden simplificarse enormemente sin perder funcionalidad.


Django



  • Muy flexible. Propone una manera de hacer las cosas pero deja casi total libertad para hacerlas como uno considere mejor, y sin tener que "romper" nada o meterse en código extraño.

  • Enfoque más simplista, pero sin dejar de ser explícito y potente. (me gusta que sea explícito porque me ayuda a entender lo que sucede, y no tener que confiar en la "magia")

  • Aprovecha mucho el dinamismo de Python. Los CRUD de la aplicación de administración son un excelente ejemplo: detectan la estructura de los modelos y arman los forms y listados de forma dinámica.

  • Comunidad activa, abierta y agradable como la de Rails, y a veces bastante delirante.

  • Exelente documentación e información. El Django Book y la documentación oficiales son muy buenos.

  • No me termina de cerrar el sistema de templates. Entiendo el argumento de los diseñadores y la separación de lógica de presentación, pero creo que se le podría dar más potencia. Aunque me gusta muchísimo el sistema de bloques, da mucha flexibilidad.



Web2py



  • Muy, muy sencillo de instalar y poner en marcha por primera vez. En eso es ideal para novatos. Django y Rails están lejos en este aspecto.

  • También es muy sencillo de aprender y utilizar, a veces bastante más que Django o Rails.

  • Me gustó mucho la idea de poder editar los archivos del sitio, desde el sitio mismo. En tiempo de desarrollo resulta muy útil.

  • Pero su simplicidad se logra ocultando al desarrollador muchas de las cosas que suceden. Cuando surge un problema, no siempre se llega a comprender lo que está pasando.

  • Similar a lo que sucedía con Rails, suele obligar a hacer las cosas de una determinada manera y dificulta hacerlas de otra forma.

  • Prefiero mucho más un ORM como ActiveRecord o el ORM de Django, antes que la DAL que provee web2py.

  • Su desarrollo es cerrado. Todos pueden aportar ideas o parches, pero hay una única persona que es dueña del proyecto y que decide su destino, y el destino del aporte de cada uno.

  • Poca documentación. El libro oficial solo puede verse gratuitamente en scribd (muy molesto), y si se quiere el PDF hay que pagarlo.