Archive | septiembre 2012

Proyecto maven para JavaScript

Estoy aprendiendo JavaScript. Creo que es uno de los lenguajes con más futuro, y no sólo por la web (que da de comer a mucha gente), sino por herramientas como PhoneGap (que te permite crear aplicaciones para iOS, Android, …), y también por la llegada del nuevo Windows 8, ya que se pueden desarrollar aplicaciones en JavaScript que acceden al hardware de la máquina donde esté instalado Windows 8.

Empecé aprendiéndolo gracias a Codecademy, que comenzó el año con unos cursos o clases online, y me llamó mucho la atención la posibilidad de poder ir practicando JavaScript sin tener que instalar nada. Y además, cada semana la herramienta me recordaría que tenía una nueva lección, así no dejaría de practicar.

Pero hace poco tropecé con un pequeño problema, y es que quería aportar una solución escrita en JavaScript al desafío de Compresión en RLE en Solveet (una plataforma donde la gente publica desafíos de programación y otra gente publica sus propias soluciones, muy recomendable y divertido). El problema era que no tenía instalado nada en mi ordenador que me permitiera hacer TDD (lo prefiero para resolver los desafíos, así practico doble: el desafío y la práctica TDD).

Una herramienta que me encanta para gestionar el ciclo de vida de mis proyectos es maven, así que me decidí a buscar algo que me permitiera escribir JavaScript y luego ejecutarlo con comandos de maven.

Y tuve la suerte de encontrar un post de akquinet donde explica cómo crear un proyecto maven para JavaScript. La verdad es que es realmente sencillo porque akquinet se ha currado un archetype para maven que te crea un esqueleto de proyecto para que escribas directamente JavaScript. Simplemente con este comando para ejecutar maven:

mvn archetype:generate \ 
  -DarchetypeArtifactId=javascript-quickstart \ 
  -DarchetypeGroupId=de.akquinet.javascript.archetypes \ 
  -DarchetypeVersion=1.0.0 \ 
  -DgroupId=<enter your groupId> \ 
  -DartifactId=<enter your artifactId>

Con el proyecto creado a partir del archetype de akquinet podrás:

  • Ejecutar tus tests JavaScript con Jasmine
  • Comprimir los ficheros .js y .css de tu proyecto
  • Generar la documentación con Jslint y Jsdoc

Además, al ser un proyecto maven, es muy fácil que lo integres en un servidor de Integración Contínua como Hudson.

Si quieres, puedes ver la solución que aporté en Solveet. El desafío es muy sencillo, y hay muy poco código JavaScript: Compresión RLE en JavaScript, el código completo con los tests.

Enlaces de los martes (18 sept 2012)

Vaya! Se acabó el verano, y parece ser que el mundo vuelve a coger velocidad, y qué velocidad. Espero que estéis preparados para una nueva entrega de enlaces muy interesantes, vamos allá:

  • Code School, vía un tweet de Israel Alcázar: Una magnífica web de cursos de programación online. Muchos de ellos son de pago y todos tienen pinta de tener una altísima calidad en sus contenidos.
  • Tweet de ryah con el que estoy completamente de acuerdo, traduzco libremente:

Si quieres sentirte bien programando, debes aceptar aprender algo nuevo cada día durante el resto de tu vida

  • Cómo expresar tu pasion en tu currículum y en las entrevistas (inglés), de Jobs tips for geeks: Un artículo relacionado más con la vida como desarrollador que un artículo técnico, pero hay que tener conocimiento en varios campos. En resumen, qué demuestra tu pasión como desarrollador (de más a menos): participación en proyectos open source, colaboración en grupos locales de tu tecnología favorita, etc …
  • Continuous Integration for Javascript, de eriwen: ¿Usas Javascript en tus desarrollos? ¿Conoces alguna herramienta de integración contínua? Aquí, Eric te explica cómo montar un entorno de integración contínua para proyectos Javascript. Lectura muy recomendable, muy instructiva y también muy técnica :D.
  • The 4 pillars of a good software developer, de Contended Coder: artículo donde el autor cuenta su visión de los que cree son los cuatro pilares en los que se basa un buen desarrollador software: calidad, corrección, rapidez de ejecución y productividad; cómo mejorarlos y cómo llegar a un equilibrio en ellos.
  • Metodología ágil FDD, de Javier Garzás: consta de dos artículos (I y II) donde Javier nos describe esta metodología, FDD (Feature Driven Development, desarrollo dirigido por funcionalidades). Me llamó la atención por ser una metodología orientada a grandes empresas y grandes proyectos y grandes equipos, en contraposición de metodologías ágiles como Scrum, XP y Kanban que suelen proponerse para equipos pequeños.
  • What have you tried? (inglés), de Matt Gemmell: un artículo donde Matt expone una problemática con la que todos nos hemos tropezado: pedir ayuda en internet. La opinión de Matt al respecto es que antes de pedir ayuda, deberías currartelo un poco, e intentar solucionar el problema por tu cuenta: conociendo más el entorno que te está causando el problema, buscando información, leyendo manuales, FAQs, etc. En definitiva, que cuando te pregunten “¿Qué has intentado?”, tengas algo real que responder para no obtener una respuesta del tipo “Si no has intentado nada, ¿por qué esperas que te vaya a ayudar?”.

Referencias: