• Programación

    Volviendo a PHP

    Hace fácil 5 años que no hago nada serio en PHP, empezando desde cero. Mayormente me ha tocado retocar cosas andando o parchar bugs boludos. Sin embargo el otro día tuve que hacer un demo chiquitito en PHP. El principal limitante era el tiempo, por lo que tenía que hacerlo rápido. Al principio intenté el viejo HTML+PHP all-in-one con ifs $_GET, $_POST, etc. Una locura, no podía avanzar. Mi mente me decía «esto va en el controlador, esto en el view» :D. Borre todo y empecé de nuevo. Pensé dos segundos y dije «tiene que haber algo». No, CakePHP no es ese «algo». Era mucha config al pedo, bloated y…

  • Programación

    Migrando datos desde PHP a Rails

    Por esas cosas de la vida me encontré todo el día de hoy migrando datos viejos de un sistema hecho en PHP a uno hecho en Rails. Las cosas venían bastante simples definiendo modelos de ActiveRecord para las tablas de la base de datos vieja y reinsertando con modelos apuntando a las tablas nuevas. Pero … siempre hay un pero. Resulta que el hermoso sistema anterior para evitar tener muchas tablas (o vaya a saber por qué) tenía en una parte un tabla donde cada field era un gran TEXT que contenía un array de PHP serializado. class UserTextField user = UserTextField.find(3) $> user.folders # => 'a:2:{i:0;s:4:"bkps";i:1;s:6:"listas";' Justo cuando estaba…

  • Programación

    Refactoring de «Fat Methods» – Episodio 5

    Pasar programadores PHP a Ruby no siempre es una tarea trivial, mayormente porque lo primero que tratan de hacer es escribir código en lugar de pensar que es lo que quieren hacer :). No es que me queje, a todos nos pasa que resolvemos el problema como primero sale (más aún cuando las fechas de entrega son apretadas :). El otro día queriendo modificar un código me encuentro con este before_filter en un controller : def setprofile @viewer = false if (!params['id'] && !params['profile_id']) @profile = @passport else if params['profile_id'] pid = params['profile_id'] else pid = params['id'] end @profile = Passport.find_by_id(pid) if (!@profile) redirect_to(:controller => 'my3dg', :action => 'show') and…

  • General,  GNU+Linux,  Programación

    Do it right! – Manejo de dependencias

    En estos días he tenido varias discusiones sobre algunas prácticas muy acostumbradas en varios proyectos, que a mi parecer están muy lejos de lo útil. Es por eso que decidí escribir un par de artículos denominados «Do it right!» (hazlo bien!, si mi inglés no es tan malo como pienso :D). En esta primer entrega voy a tratar el tema de manejo de dependencias. Escenario Muchas veces uno se encuentra con un software que necesita y le es útil. Vamos a suponer de entrada que no tiene paquete para su distribución y/o sistema operativo favorito. En al leer el README vemos que depende de muchas cosas : alguna biblioteca de…