Noviembre 28 2008

Consejos para comentar el código fuente

Leo en el blog variablenotfound un post que incluye 13 buenos consejos para comentar el código fuente de las aplicaciones.

Quizás me quede con esta frase… contribuirán a hacerlo más inteligible y por tanto a incrementar su mantenibilidad a lo largo del tiempo, algo que muchas veces no ocurre y crea muchos problemas a la hora de realizar un mínimo mantenimiento evolutivo de cualquier aplicación.

Feliz Viernes!

Noviembre 26 2008

Subversion (SVN) - Control de Versiones

Estoy tirado en el sofá de casa después de un largo día de trabajo y entonces… me pongo a escribir sobre Subversion… cosas del frikismo.

La definición de “control de versiones” según la wikipedia es: Una versión, revisión o edición de un producto, es el estado en el se encuentra en un momento dado en su desarrollo o modificación. Se llama control de versiones a la gestión de los diversos cambios que se realizan sobre los elementos de algún producto o una configuración del mismo. En castellano “antiguo”, una herramienta imprescindible en cualquier proyecto de desarrollo de software, sobre todo si participa más de una persona.

Subversion

Existen distintas herramientas que permiten la gestión de versiones, las dos más conocidas son CVS y Subversion (SVN). Posiblemente todo vaya según gustos personales, en mi caso prefiero Subversion, una evolución de CVS bajo licencia “Apache/BSD” (es decir, libre).

Existen dos razones fundamentales para el uso de una herramienta de control de versiones:

  • Gestionar las modificaciones durante el desarrollo
  • Permitir que varias personas trabajen sobre los mismos ficheros
  • Estas dos razones deberían ser motivo suficiente para su implantación en cualquier proyecto; todavía me resulta increíble ver numerosos casos en los cuales no se utiliza ninguna herramienta de este tipo.

    Entrando en detalle, Subversion es una aplicación de tipo cliente/servidor, es decir, necesitaremos por un lado un servidor que atienda las peticiones y almacene los proyectos y por otro lado uno o varios clientes que accedan a los repositorios (un repositorio es el lugar donde se almacena un proyecto).

    Existen dos vías para la implantación del servidor de SVN: su propio servidor (svnserve) o como módulo de Apache 2.0 (mod_dav_svn). Aunque svnserve es ligeramente más sencillo de configurar, recomiendo ejecutarlo como módulo de Apache. El manual es sencillo en el capítulo que explica como configurarlo, se puede encontrar aquí.

    Si hablamos de los clientes, no tenemos muchas opciones… tenemos muchísimas. Podremos elegir clientes dependiendo de nuestra plataforma (Windows, Linux, Mac) o bien algún cliente Java multiplataforma. Los tendremos que se integran con la shell (en el caso de Windows) o totalmente independientes. Como para gustos colores… os dejo una lista con los dos clientes más conocidos para Windows:

  • tortoisesvn (windows)
  • rapidsvn (multiplataforma)
  • Otro día prometo hace un pequeño post sobre la integración de Subversion y el IDE de desarrollo Eclipse… como nos facilita la vida a todos los que programamos…

    Noviembre 24 2008

    Trabajando con XML y Java - JDOM

    Existen distintas formas de trabajar con XML desde Java, posiblemente la más conocida sea SAX (Simple API for XML) que se ha convertido en una especie de estándar “de facto”.

    Sin embargo, existen otras librerías que permiten la manipulación de ficheros XML de forma más optimizada, un claro ejemplo es JDOM. Se trata de una librería creada específicamente para su uso con Java por lo que su implementación resultará muy cómoda e intuitiva para los programadores de dicho lenguaje, doy fé de ello.

    Como con la mayor parte de librerías, se incorpora en el proyecto como fichero .jar, por lo que los primeros pasos son muy sencillos. Un ejemplo de implementación para la escritura de un fichero a partir de una colección de datos en el este enlace.

    Espero que os sirva :)

    Noviembre 19 2008

    Información Interesante - 18/11/2008

    Un pequeño resumen de información que he encontrado hoy.

    Publicadas las especificaciones de USB 3.0. Relacionadas: engadget y 25gb en 70 segundos, de Gizmologia

    7 lugares donde encontrar código para tus proyectos (inglés)

    20 cosas a hacer después de instalar Ubuntu (inglés)

    SkyDrive y Hotmail ofrecerán 50GB de almacenamiento gratuito, más información en este post de Genbeta

    Realizar búsquedas de voz en Google desde nuestro iPhone ya es posible, más información en este post de Soy una Marca

    Y por último, pero no menos importante, soporte nativo para el reproductor flash en sistemas operativos de 64-bit, una gran noticia para todos aquellos que hemos tenido que recurrir a trucos caseros con rendimiento más bien pobre…

    Noviembre 18 2008

    Almacenando datos de intercambio - SQLite

    En más de una ocasión nos encontramos ante la necesidad de almacenar datos que podríamos definir como pseudo-temporales, es decir, datos de intercambio. Esto es, datos que SQLitetendremos que almacenar durante algun tiempo (minutos, horas, quizás días…) y a los que tendremos que acceder con relativa rapidez y que incluso pueden tener un tamaño considerable (en número de registros).

    Cuando no podemos/queremos depender de ninguna aplicación extra (tal y como puede ser un servidor de base de datos SQL), se tiende a pensar en la mayor parte de las ocasiones en el uso de ficheros de texto plano donde almacenar la información. Personalmente, no me gusta, en cuanto se tiene una cantidad decente de información, los accesos se vuelven lentos, y no mencionemos la poca seguridad en cuanto a integridad se refiere…

    Existe una segunda opción, el uso de ficheros XML. Mejoramos la organización y acceso a los mismos, pero vuelve a existir el problema con el volumen de información… al fin y al cabo es un fichero de texto.

    Llega la tercera opción, el uso de SQLite. Según leemos en la página web, SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. SQLite is the most widely deployed SQL database engine in the world. Esto es, una librería que incluye un motor SQL sin necesidad de instalar ningún servidor, con soporte transaccional y sin configuración.

    SQLite cumple los requisitos que hemos puesto en cuanto al no uso de servidores añadidos ni extrañas configuraciones que puedan no estar soportadas en servidores externos. También cumple los requisitos con respecto al uso de ficheros de texto plano, dado que al ser un motor SQL, se utiliza como tal.

    Existen “bindings” para la mayor parte de lenguajes de programación utilizados en mayor o menor medida, con una lista oficiosa que puede ser consultada en http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers.

    Este post no pretende ser un manual de uso de SQLite, por lo que a continuación dejo algunos enlaces con más información para su uso:

  • http://www.sqlite.org/quickstart.html
  • http://www.sqlitemanager.org/
  • http://es.wikipedia.org/wiki/SQLite
  • Noviembre 17 2008

    233grados.com - Mejor Blog Periodístico 2008

    Mi enhorabuena a mis compañeros que llevan a diario el blog 233grados.com por el merecido premio al Mejor Blog Periodístico 2008. Han publicado un post dedicado a este premio.

    Aunque llevo pocos días con vosotros, gracias por vuestro cariño.

    Noviembre 16 2008

    ¿Es dificil trabajar en un Desktop Linux?

    Sé que este tema está muy discutido, mucho se ha escrito sobre el… y no pretendo encender otro flame que no lleve a ningún sitio. Sin embargo, quiero dar mi opinión personal.

    Por casualidad y posiblemente por suerte, en esta nueva etapa profesional trabajo con escritorio GNU/Linux, digamos que tuve esa elección entre Windows y Linux y me quedé con el segundo. Para mayor información, instalé Ubuntu 8.10.

    Mil veces he oído y he leído que instalar aplicaciones en Linux es complicado, incluso hoy en día se sigue diciendo que es más complicado instalar aplicaciones bajo este S.O. que bajo su homologo Windows. Pues yo que queréis que os diga… es que sigo sin encontrar las ventajas de Windows en este aspecto.

    Sé que instalar una aplicación en Windows no es dificil; pongamos el simple ejemplo de instalar MySQL, el servidor de base de datos más utilizado hoy en día. Vamos a la página del fabricante, lo descargamos… y lo instalamos. Sencillo, no hay dificultades aparentes. Ahora nos vamos al otro escenario, nuestro Ubuntu 8.10. Abrimos nuestro gestor de paquetes, Synaptic en el caso de Ubuntu, buscamos MySQL, seleccionamos y… le damos a instalar. El solo selecciona las dependencias (si existen) y lo instala. ¿Hay alguna diferencia? Pues no… si acaso en el caso de Ubuntu es más sencillo pues evitamos entrar en la página del fabricante, buscar el enlace de descarga…

    ¿En algún momento apareció la linea de comandos? ¿Algún comando escrito? Pues no… aunque también se podría hacer de esa forma, con un simple sudo aptitude install paquete

    ¿Todavía sigues sin querer probar GNU/Linux? Pues por si acaso… puedes descargar Ubuntu, por ejemplo, y probarla sin tener que modificar nada en tu ordenador, sólo ejecutándola desde el propio cd.

    Que cada uno trabaje con el sistema que quiera… pero empecemos a deshacernos de leyendas urbanas que hoy en día no tienen ningún sentido.