Crudgen fue mi proyecto de tesis de grado que culminé a medidados del 2009, el mismo consiste en un generador de páginas para realizar operaciones CRUD (Create, Report, Update y Delete) en una base de datos Postgres a través de phppgadmin, el mejor gestor web para administrar este tipo de base de datos. Para ese entonces modifiqué el código fuente de varias partes de la aplicación, dificultando su integración en el programa, al año siguiente (2010) decidí reescribirlo y modificar su uso siguiendo las sugerencias del equipo, sin embargo, por falta de tiempo lo abandoné. En agosto de 2011, se agregó soporte para complementos por parte de Leonardo Sápiras al participar en el Google Summer of Code, permitiendo escribir un plugin con esta funcionalidad sin modificar el código fuente del programa.En el último año, cuando tenía tiempo libre me puse a rescribir (por tercera vez) el programa y hasta hace poco logré finalizarlo.
El plugin permite a través de pocos pasos, generar páginas web para realizar operaciones sobre las tablas seleccionadas de una base de datos. El código generadoson funciones PHP para realizar las acciones, las cuales son llamadas desde una plantilla HTML, esta plantilla, puede ser programada fácilmente o fácil de adaptar desde un diseño un existente, permitiendo obtener resultados con diseños personalizados (a diferencia de las otras soluciones donde todos los resultados tienen la misma apariencia).
Respecto al código del lado del servidor, soporta las bibliotecas PGSQL o PDO_PGSL brindando posibilidad al usuario de elegir la que mas le convezca (debería usarse siemper PDO para mayor seguridad), posee seguridad respecto a ataques de inyección SQL, usa PHP5 de fácil lectura y con flexibilidad para adaptarla a los requisitos del programador. Centraliza funciones comunes entre las páginas y mucho mas.
Si les interesa, les invito a ver este vídeo en inglés (me di cuenta que necesito prácticar) donde explico todo el funcionamiento del programa, sino entienden el idioma, no importa, pueden ver todo el proceso y ver lo que genera el plugin.
Crudgen 0.1: A CRUD generator plugin for Postgres with phppgadmin
Espero que lo utilicen, compartan esta información, reporten bugs, se unan al proyecto y aporten código al mismo.
Para utilizarlo pueden descargarlo desde la página de Crudgen en Github.
Ya a estas alturas todos deberíamos conocer sobre Android, en mi opinión, su popularidad ha sido gracias a su licencia abierta pues permite tanto a empresas como a la comunidad realizar modificaciones al sistema operativo para: adaptarlo a ciertos sectores del mercado, diferenciarse de otras compañías inversoras en esta tecnología, realizar ciertas optimizaciones, tener mayor control del software y hardware, por mencionar algunos.
Cuando compras un teléfono el sistema Android que incluye por defecto fue desarrollado por la compañía fabricante (Samsung, HTC, Motorola, entre otros). Éste sistema tuvo que pasar por una serie de pruebas o certificaciones realizadas por Google y la compañía mencionada para garantizar el buen funcionamiento y estabilidad con el fin de mantener una buena imagen de Android, por ello, muchas modificaciones o funcionalidades deseadas no se encuentran presentes porque pueden sacrificar el rendimiento y/o estabilidad, afectando la imagen de ambas compañías. También por la misma razón, las compañías no suele actualizar la versión de android de los teléfonos por el tiempo que lleva: desarrollar los cambios, probarlos, certificar el resultado por Google y el dinero que consume realizar todo este proceso.
Cyanogenmod es una firmware realizado por la comunidad y soportado en una gran cantidad de dispositivos, la ventaja de este firmware son: inclusión de características y mejoras no soportadas por el resto de firmwares, permite a tu teléfono la última versión de Android a pesar de que no existan planes o versiones oficiales (si la compañía fabricante dice que no va a actualizar tu teléfono a la última versión gracias a Cyanogen puedes), incrementa el tiempo de duración de la batería gracias a la activación de control de la frecuencia del CPU, inclusión de buenas aplicaciones extra como el navegador de archivos y reproductor multimedia, soporte de temas, mas opciones de personalización y mas.
Mi experiencia con Cyanogenmod la he disfrutado en 3 teléfonos:
Motorola Milestone: Cyanogen 6 y 7 no oficial porque Motorola no actualizó el teléfono a las últimas versiones de Android.
Samsung Spica: Cyanogen 7 no oficial porque era la única ROM con Android 2.3 que funcionaba para ese teléfono.
Nexus S: Cyanogen oficial 7.0,7.1, 9, 9.1 y 10.
Si observan, son teléfonos distintos y dice algo de versiones oficiales, resulta que la comunidad de Cyanogenmod da soporte una gran lista de teléfonos, pero aquellos no incluidos allí, pueden tener un firmware adaptado por un tercero permitiendo disfrutar del firmware (El caso del Motorola Milestone y Samsung Spica). El problema de las versiones no oficiales de Cyanogenmod, es la poca estabilidad del sistema, bien sea por: problemas de migración, drivers cerrados e incompatibles con otra versión, limitaciones, etc.
En el caso de Nexus S, he podido disfrutar las versiones oficiales tanto de Google como de Cyanogenmod. La ventaja de usar las oficiales de Google es la estabilidad del sistema, Android 4 (Ice Cream Sandwish) la use como por 8 meses y tuve como 1 reinicio y mas nada, además las actualizaciones al realizarse por OTA, no tuve que perder datos ni instalar aplicaciones al actualizar pero tiene las limitaciones mejoradas anteriormente.
Ventajas
Al instalar Cyanogen estable, pude darme cuenta la diferencia, se siente como un teléfono nuevo. El rendimiento es ligeramente superior (la mayoría de los usuarios no se darán cuenta), agrega mas opciones de personalización como temas, mas métodos de desbloqueo, permite editar parámetros avanzados como: velocidad de procesador, modo de rendimiento (en demanda, rendimiento, entre otros), manejo de la memoria, notificaciones a través de la iluminación del teclado y una característica llamada Deep Idle, éste último duerme todos los servicios y baja el consumo del procesador al mínimo cuando se apaga la pantalla, incrementado enormemente el uso de la batería (en mi caso un 70% aproximado de mas tiempo). También si utilizan su dispositivo para escuchar música mientras estas en el carro o mientras hacen ejercicio, podrán notar lo difícil de estar mirando cada vez que desean cambiar la canción, con este firmware pueden utilizar los controles de volumen para cambiar entre pistas. También su launcher tiene ligeras modificaciones, como controles en la barra de notificaciones para activar y/o desactivar servicios, notificaciones mejoradas: permite usar las de Jelly Bean en versiones anteriores y algunas cosas extras como responder un SMS desde esta pantalla.
Desventajas
Las desventajas son pocas, la principal es el hecho que para instalarla se debe tener conocimientos de: obtener root en tu teléfono, modificar el bootloader (en algunos casos), instalar recoverys personalizados, respaldos NAND y otros. Cosas que no conocer el usuario promedio de Android y en los casos donde lo haces mal borras todo el contenido del teléfono. Sin embargo, existen guías explicando paso a paso para evitar este tipo de situaciones. Respecto a la estabilidad depende principal de 2 motivos: si la ROM es oficial del proyecto Cyanogenmod y de si existen los drivers del dispositivos para esa versión de Android. Si las dos se cumplen, te aseguro que correrá sin problemas, tal vez un reinicio rara vez pero es muy usable, de lo contrario puedes tener reinicios constantes o algún dispositivo del teléfono que no funcione.
Conclusiones
Realmente les recomiendo instalar Cyanogenmod si existe para su teléfono, la experiencia es superior a la ROM oficial de Google (no he usado las de HTC o Samsung), si tienen conocimientos de Linux, pueden jugar con la sección de «Rendimiento» y modificar los valores para obtener mayor tiempo de duración de la pila, ademas las mejoras visuales y de accesibilidad son muy buenas.
Para conocer del proyecto, visiten su sitio oficial: https://www.cyanogenmod.org/
Edición al 24/01/2017: El proyecto original ha cerrado y ahora se le conoce como LineageOS
De hecho, al principio advierte sobre el uso de ejemplos usando porciones de código: recomiendan leerlos con calma hasta entenderlo correctamente, comparar modificaciones realizadas con el original y otros. Por mi parte, me pareció muy interesante pues uno aprende a reconocer fácilmente errores cometidos y ver como se deberían hacer, además los ejemplos suelen estar en varios lenguajes de programación entendibles por cualquier profesional, pero si no te gusta programar este libro no es para ti.
El libro está divido en capítulos, en cada uno de ellos, se habla de un tema en específico como funciones, comentarios, objetos y estructuras, entre otros. Por ejemplo, el de comentarios (uno de los que mas me gustó) expresa como se debe documentar el código, casos en los que no es necesario, métodos, uso de Javadoc, ejemplos de malos comentarios y mas. El de funciones explica los casos en que se deben crear funciones, como nombrarlas, casos en los que deben crearse funciones y mas. En otras palabras, solo se habla de un tema y se explica todo lo que se puede de él, al pasar a un nuevo capítulo se repite el mismo proceso para el nuevo concepto.
Un aspecto interesante, es como el autor logra explicar muchos conceptos de desarrollo de software o programación usando ejemplos de la vida cotidiana, por ejemplo, analogías de mantenimiento de la limpieza / mantenimiento de ventanas de un edificio con el mantenimiento de un sistema. Así que no deben ser unos estudiados en el tema para entenderlos, cualquier persona con una vida normal los entenderán (tal vez existan programadores que no han visitado un taller o han visto un edificio).
Es un buen libro, no me pareció muy bueno como Code Complete o The Pragmatic Programmer, pero se los recomiendo si son programadores, aprenderán nuevas técnicas, formas de escribir mejor código y mas. También al igual que con otros libros mencionados en este blog, opino que todo profesional debe leerlos cuanto antes para mejorar su forma de escribir código.
En el pasado LinuxCon se grabó una canción que refleja el espíritu de desarrollo de Linux, es una versión de We’re not gonna take it (No vamos a dejarnos en español), una canción muy conocida en la decáda de los ochentas (el intérprete original es Twisted Sister). En el vídeo podemos encontrar a Linus Torvald y Robin Bergeron (a quien pude conocer en el FudCon) junto a los desarrolladores mas importantes de Linux.
Disfruten ahora de este vídeo para escuchar cuando estes programando, trabajando en Linux, o lo que sea.
Epic Linux Community Song Featuring Linus Torvalds