Archivo de la categoría: Herramientas

Herramientas o utilidades para el desarrollo.

Travis: Integración Contínua con Github

En este post (tuvimos que desempolvar el dashboard de entradas de Bonus4Code debido al parón vacacional…) vamos a comentar una forma sencilla y gratuita para llevar a cabo prácticas de integración continua(CI del inglés Continuous Integration) sin necesidad de montar vuestro propio servidor (Jenkins o similares).

Travis CI

Travis es un servicio alojado de integración continua que se integra con Github. Esto permite loguearnos con nuestra cuenta de Github e importar aquellos proyectos para los que queramos ejecutar tareas de IC.

Tiene especial soporte para los siguientes lenguajes: C, C++, Clojure, Erlang, Go, Groovy, Haskell, Java, JS (Node.js), Objective-C, Perl, PHP, Python, Ruby y por último (pero no por ello menos importante…para nada,vamos :P) Scala.

Cada vez que realizamos un push a nuestro repositorio de Github, Travis detecta dicho cambio y ejecuta las tareas que tenga planificadas.

¿Cómo lo configuramos?

  • Paso 1: Entramos en travis-ci.org y nos logueamos con nuestra cuenta de Github. En este caso se mostrarán los repositorios públicos de nuestra cuenta de Github. En caso de que quisiéramos realizar la misma tarea pero para nuestros repositorios privados, el proceso sería el mismo sólo que accediendo a través de travis-ci.com.
  • Paso 2: Una vez nos hemos logueado y se sincronizan los repos desde Github, accedemos a la página de nuestro perfil para proyectos open-souce o privados (dependiendo del paso anterior). A partir de aquí, podremos habilitar el service hook para aquellos repositorios de los que tenemos acceso administrativo. Cambiamos de OFF a ON aquellos repositorios que queramos habilitar
  • Paso 3: Añadimos fichero de configuración .travis.yml en la raíz de nuestro proyecto en Github. En este fichero de configuración indicaremos a Travis qué tareas queremos que se ejecuten en nuestro proceso de integración continua. Para un proyecto Scala tendría el siguiente aspecto:
    language: scala
    scala:
      - "2.10.3"
    jdk:
      - oraclejdk7
    script:
      - sbt $TASKS
    env:
      - TASKS='test'
    notifications:
      email:
        - myemail@somehost.com
    

    Cómo se puede ver, la lectura es bastante sencilla: Definimos el lenguaje del proyecto (Scala), la versión que utilizaremos del compilador (Scala 2.10.3), el JDK a descargar (oraclejdk7), los scripts que se ejecutarán (en este caso sólo uno, que es ejecutar SBT), las variables de entorno y el mail donde se notificará el resultado.

  • Paso 4: Comprobar que se ejecuta por primera vez. Una vez añadido el fichero .travis.yml al repositorio, realizamos un push sobre el repositorio en Github. Esto debería añadir el primer build a la cola de Travis y empezará tan pronto como haya un nodo disponible para el lenguaje de programación de tu proyecto.
    Para empezar un proceso de construcción, se puede hacer un push con cambios en el proyecto, o ir a la página de Github ‘Webhooks y servicios‘ y usar el botón Test Hook para Travis (Este método solo funciona a partir del primer build).
    Una vez ejecutado el proceso, desde la página de administración de Travis deberíamos poder ver algo del siguiente estilo:
    Captura
  • Paso 5: Indicar el estado de CI en el Readme.md de tu proyecto. Para indicar el estado de integración continua basta con añadir al fichero Readme.md de tu proyecto lo siguiente:
    Title1
    ======================
    
    [![Build Status](https://travis-ci.org/your-user/your-project.svg?branch=master)](https://travis-ci.org/your-user/your-project)
    
    This is some introduction text ...
    
    

Conclusiones

Si todo el proceso de configuración ha ido correctamente, veremos el estado de CI en la página principal de nuestro proyecto de Github. Por ejemplo, en el siguiente proyecto se indica que el building es correcto (Build Passing) :

Captura2

Hasta el próximo post amijos 🙂

 

Deja un comentario

Archivado bajo Herramientas, Tutoriales

¿Eres un buen programador?

En la actualidad, uno de los mayores retos para las empresas de recruiting a la hora de seleccionar candidatos válidos para ser endorsados a un cliente es la de probar la valía de los individuos en base a lo que saben de programación (o dicen saber). Es por eso que surge Codility, una empresa cuya andadura comenzó en China, cuando su director ejecutivo diseñó una herramienta para ayudar a su equipo a elegir el mejor candidato en entrevistas técnicas. La idea evolucionó para convertirse en una startup que desarrolla y paquetiza dicho software. logo2 ¿El producto? Un sistema de evaluación que consiste en plantear un problema al candidato que debe resolver en menos de un tiempo estipulado usando el lenguaje en cuyas habilidades que el examinador/recruiter quiere comprobar que el candidato pilota. La herramienta cuenta con compilador/intérprete para los lenguajes más populares como C, C++, C#, Java, JavaScript, Pascal, Perl, PHP, Ruby, Python, VB.NET, SQL y Scala. Además permite añadir casos de prueba específicos para probar la solución al problema. 60301v2 Una vez implementada la solución para el problema (ojo que en muchos casos para obtener la solución perfecta se exige que la implementación cumpla ciertas restricciones de complejidad espacio/temporales) se procede a publicar la respuesta, la cual llega directamente al recruiter que solicitó la prueba, generando un informe del siguiente estilo: KNjj3 Actualmente Codility es muy habitual en empresas de recruiting de UK y US; y puede probarse para testar tus habilidades mediante la demo o en la sección «Challenge yourself».

Y si el tener en cuenta el tiempo te parece mucha presión …

Para los pacientes, los que no tengan prisa y que simplemente quieran un desafío está el Proyecto Euler. Si bien no sirve para medir la calidad de tus toneladas de líneas, este proyecto sirve para ejercitar tus habilidades de programación y consta de una serie de problemas matemáticos y/o programación que suponen un reto, ya que requieren algo más que nociones matemáticas para ser resueltos. pe_banner_light La motivación del Proyecto Euler es la de proveer de una plataforma para introducir a aquellas personas que así lo deseen en áreas poco familiares y el aprendizaje de nuevos conceptos de una manera divertida. La plataforma permite registrarse de manera gratuita e ir publicando las soluciones a los, hasta ahora publicados, 455 problemas; de manera que siguiendo un sistema de logros se busca mantener el interés del usuario en la resolución de los citados problemas matemáticos.

En resumidas cuentas …

Mientra que Codility te permite tener una visión más detallada sobre el grado cualitativo de las soluciones que aportas a determinados problemas, ProjectEuler te permite ejercitar poco a poco tus habilidades como programador, mantenerlas al día y libre de oxidación. ¡Happy coding!

Deja un comentario

Archivado bajo Herramientas

Sublime Text

sublime-text-logoi bien es cierto que todo el mundo tiene un IDE preferido para programar en cualquier lenguaje, los hay que son más osados y que viven al límite. Y es por eso que deciden echarse al monte con un editor de texto y el compilador de turno (he visto rayos-C y programadores tirando de vi y javac más allá de la puerta de Tannhauser). Muchas veces es por friquismo, por minimalismo y otras es porque simplemente el IDE se queda corto cuando quieres exprimir el lenguaje sin necesidad de florituras. En este post me gustaría hablar de Sublime Text, un editor de texto en toda regla, esencial cuando aprendes a usarlo.

La criatura en cuestión ve su primera versión en enero de 2008 de la mano de su creador Jon Skinner y desde entonces viene distribuyéndose de manera gratuita, aunque para evitar un molesto aviso de que no has pagado la licencia (¡cómo se te ocurre!) es preciso aportar una pequeña cantidad que ronda actualmente los 70 dólares americanos. Con esa salvedad, la funcionalidad es completa desde el primer momento.

Características principales

En realidad enumerarlas todas sería para escribir un blog entero (mmm espera …) pero entre las más usadas  y más destacadas, se encuentran las siguientes:

  • Multicursor (Ctrl + clic)  permite seleccionar múltiples cursores a lo largo del texto y poder escribir, borrar o seleccionar sobre todos ellos simultáneamente
  • Multiselección (Ctrl + D) cada vez que se presiona, se selecciona la siguiente coincidencia del texto seleccionado.
  • Resaltado de sintaxis configurable
  • Minimapa del documento (muestra en miniatura el documento actual para desplazarse por él más rápidamente).
  • Keybindings configurable
  • Búsqueda de símbolos (Ctrl + P) permite buscar símbolos/ficheros dado el conjunto de proyectos disponibles

    sublime-text

    Búsqueda de símbolo

  • Resaltado de indentación (Ctrl + Shift + M) selecciona el contenido que se encuentra encerrado entre dos llaves, paréntesis, corchetes.
  • Build systems (Da soporte nativo a la compilación de proyectos Java, Python, C++,Haskell,Ruby, …) que permite configurar la compilación de los ficheros que creemos/editemos con Sublime Text

Plugins

Ni que decir tiene, que Sublime cuenta además con una API basada en Python, que permite la implementación de plugins. A través del Package Control se pueden instalar plugins disponibles a través de repositorios Github o BitBucket.

Instalación paquete Sublime

Ejemplo de instalación de paquete desde Package Control

En resumidas cuentas …

Por todo lo antes mencionado, y dado que es multi-plataforma y que se puede combinar su uso con el de cualquier compilador (a veces sin que esto sea realmente necesario); considero esta como una de las herramientas indispensables para el desarrollo de software en la era actual. ¡El editor suizo de todo buen programador! Preparado para recibir escarnio público por parte de la gente UNIX que programa con consola. En 3 … 2 … 1 …

1 comentario

Archivado bajo Herramientas