Monthly Archives: Agosto 2012

Indalcasa iLearning, cursos de formación online de tecnología

Entre tantas cosas que me rondan siempre por la cabeza hay una que siempre me ha rondado y es la formación. En indalcasa, intento escribir artículos interesantes, algunos polémicos, otros normalitos, pero intento que todos sean productivos. Siempre he visto un gran problema y es que si escribo un post demasiado largo, es aburrido para leerlo y se hace pesado escribirlo, si es demasiado corto, no tiene tanta productividad para los lectores. Por otro lado un blog es eso, un log de lo que escribes, por lo que salvo que entres desde google, vas a encontrar un popurri de cosas que pueden interesarte o no y aquí es donde surge iLearning.

Me he sacado de la manga Indalcasa iLearning, iLearning es un servicio para dar cobertura al blog, básicamente es una página donde crear cursos online de tecnología actualizados con los contenidos que van surgiendo del blog. ¿Por que crear un centro de contenidos si ya esta el blog? Pues bien fácil, porque si escribimos por ejemplo como hacer templates con wordpress, se va a separar en varios artículos, que si se escriben seguidos a la gente les será de utilidad, pero aún así, tienes que ir escribiendo enlaces al pie del artículo indicando cuales son los otros artículos. También si vienes de fuera, al ser artículos sueltos, es mas difícil de un vistazo rápido, ver todo el contenido de los diferentes "cursos".

De momento, Indalcasa iLearning será una versión estática en HTML hasta que vaya teniendo tiempo de dinamizar el contenido. Espero que os guste el resultado, mientras tanto podéis ir viendo las actualizaciones en la web de iLearning.

Organización de trabajo, técnicas pomodoro e indalo

Hace unas semanas estuve en Italia y buscando por internet que significaba pomodoro (tomate), me encontré de casualidad con la técnica pomodoro, que me pareció suficientemente curiosa y que sin saber ya utilizaba. Mirando en la wikipedia, la técnica pomodoro es una técnica en la que nos organizamos el trabajo en pequeñas tareas y nos tomamos descansos entre tareas. Por ejemplo, pongamos una tarea que nos intentamos dividir en tareas menores y nos ponemos unos tiempos para realizar cada tarea de 25 minutos. Con un temporizador, contamos el tiempo y cada 25 minutos, nos tomamos un descanso de 5 o 10 minutos y tras realizar 4 descansos podemos tomarnos un descanso mas largo de 15 o 20 minutos. La verdad es que es una buena técnica para los que vamos  trabajar durante muchas horas seguidas y no queremos morir en el intento.

La variante que yo utilizo es lo que voy a llamar la técnica indalo y es parecida a la técnica pomodoro. En la técnica indalo se intenta defragmentar las tareas en tareas muy pequeñas y relativamente rápidas, cada 4 o 5 tareas, que nos llevaran una media hora, tomamos un descanso de 10 minutos, al ser posible levantarnos del sitio y si queremos mirar algo por internet que sea en otro ordenador. Cuando hacemos 3 o 4 ciclos, según lo cansados que estemos, tomamos una larga pausa de 20 o 30 minutos. Las idea es ser lo mas productivo posible por lo que si una tarea se nos complica y no es bloqueante para hacer otras tareas, pasaremos de largo y continuaremos con la siguiente tarea, de esta forma optimizamos el tiempo en hacer la mayor cantidad de tareas posibles en el menor tiempo.

La técnica indalo (así la he bautizado en honor al blog) la utilizo cuando voy a trabajar durante mucha cantidad de horas seguidas, por ejemplo un sábado que trabaje en casa 15 o 18 horas seguidas, por ello los prolongados descansos. El pasar de una tarea si se complica mucho, es por perspectiva y motivación; si no damos con una solución, al ser tareas muy atomizadas, quizás en un rato tengamos un punto de vista diferente y podamos resolver rápidamente la tarea y si no hay solución fácil, siempre tendremos tiempo para darle vueltas. Atomizar las tareas es muy importante ya que nos dará mucha motivación, si tenemos una larga tarea que nunca termina, nuestra moral estará por los suelos, pero si tenemos esa gran tarea dividida en 10 tareas mucho mas pequeñas, según vamos avanzando y completando tareas, al hacer un análisis nos levantara la moral y nos dará fuerzas para seguir a pesar de llevar muchas horas seguidas.

Lanzar comandos de consola con python y paramiko

A veces, desde una web o un script de python, necesitamos poder ejecutar comandos de consola. Para lanzar comandos tenemos 2 formas, una es ejecutar directamente en la consola mediante system y la otra es utilizar un cliente de ssh como paramiko.

En el paquete os tenemos una función llamada system que ejecuta directamente un comando como en consola pasandole como parámetro el comando a ejecutar. Este es el ejemplo más sencillo que podemos hacer. Aunque hay otras formas como por popen, creo que para cosas sencillas es mas rápido os.system. Recordad que hay que importar el paquete os antes de usarlo.

Otra forma de ejecutar comando de consola es hacer uso de paramiko, un magnífico cliente de ssh para python. Con paramiko, podremos hacer uso desde python de conexiones por ssh y sftp, por lo que podremos trabajar directamente contra servidores linux de una forma sencilla. Decir que paramiko no viene por defecto con python y deberéis instalarlo de la página oficial de paramiko o con pip. Recordad también que para utilizar paramiko es recomendable configurar claves ssh para acceder sin contraseña. Para establecer una conexión por ssh con paramiko utilizaremos paramiko.SSHClient para crear un nuevo cliente ssh al que posteriormente conectaremos a un servidor con unas credenciales y por último utilizaremos client.exec_command con nuestro comando a ejecutar. Como veis esto es muy sencillo, aunque puede complicarse por temas de claves, permisos y demás. Ahora unos ejemplos.

Os dejo a continuación un ejemplo de ejecución de un comando por consola:

import os

os.system("cp -r directorio1 directorio2")

Os dejo un ejemplo de conexión con paramiko:

import paramiko

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect("miserver", username="miusuario", password="mipass")

stdin, stdout, stderr = client.exec_command("cp -r directorio1 directorio2")

Phonegap, programar para móviles en HTML5

Programar para dispositivos móviles a veces es una cuestión complicada ya que cada dispositivo cuenta con sus propias herramientas, lenguajes y peculiaridades. Por ejemplo, si queremos programar en Windows Phone, usaremos HTML o C# (.Net), mientras que para Android lo haremos en Java y en Objetive-C para IOS. ¿Cuantos de nosotros tiene tiempo para aprender todo esto como hobby y no de forma profesional? ¿No sería maravilloso poder hacer las aplicaciones móviles sencillas utilizando HTML?

PhoneGap o también conocido como Apache Cordova es un framework que desarrolla (compró) Adobe y que permite crear aplicaciones para dispositivos móviles utilizando HTML. Realmente PhoneGap crea una vista web donde cargará el contenido de la carpeta www del proyecto, cargando en todo momento páginas web en HTML.

Esto esta muy bien, pero ¿Cómo trabajo con los datos? Es fácil, con Javascript. PhoneGap provee de un API en Javascript para interactuar con el teléfono, por ejemplo para el acceso a base de datos, a la cámara, GPS, contactos, etc. Por tanto trabajar con PhoneGap es como hacer una web utilizando un API de javascript especial. También existe la posibilidad de trabajar nativamente, ya que PhoneGap lo único que hace es crear un proyecto especial para el dispositivo, por lo que creara un proyecto de eclipse para android o un proyecto de xcode para IOS, por lo que podemos utilizar plugins nativos o hacernos nosotros mismos el nuestro.

Por último mencionar que PhoneGap tiene soporte para iPhone/iPad, Android, Windows Phone y BlackBerry y en menor medida tiene soporte de Bada, Symbian y WebOS. Así que si quereis hacer una app para IOS, Android o Windows Phone, es una buena opción echarle un vistazo a PhoneGap.