Python Gmail script (smtp)


A veces nos gustaría que nuestro computador nos enviara un email informándonos de algo, por ejemplo:

  1. - Que nos envíe un email cuando terminamos de descargar una imagen iso en Bittorrent. (deluge)
  2. - Que nos envíe un email cuando nuestra webcam detectó movimiento. (motion)
  3. etc.

Si no sabes como correr un script visita “Mi primer programa en Python

Con este script podemos hacer eso y muchas otras cosas más.

(more…)

¡Ojo al charqui!


La internacionalización en Firefox 3.6.8 “no se habrá ido al chancho:P

Firefox3.6.8

Firefox3.6.8

La motivación detrás del software libre


Software Libre: son aquellas herramientas computacionales desarrolladas en base a 2 principios fundamentales, la libertad y la colaboración.


Visto en Bioinformatiquillo

Bricscad V10 for Linux beta (Disponible)


Hoy he recibido una grata sorpresa en mi correo, el anuncio que Bricsys ha lanzado una versión nativa de Briscad para Linux, quizás para muchos usuarios de escritorio esto no es importante, pero para gente que en verdad a adoptado los sistemas basados en GNU/Linux como una plataforma válida para trabajar, esta es una herramienta CAD con soporte de archivos DWG por mucho tiempo esperada.

Briscad V10 Linux

Briscad V10 Linux

(more…)

Convertir videos para ver en reproductor MP4 Fujitel


Llevo un par de meses aprendiendo a programar en python, yo no soy informático por lo que este script dista mucho de ser pythonico, pero pretendo ir mejorando en el futuro.

Script para transformar videos compatibles con reproductor MP4:

MP4 2GB FUJITEL 80MP4TV2 MP4-TV (AVIConverter_320X240_20FPS_EN Setup.exe)
Requiere:
    - ffmpeg - mencoder
Extras:
    Divide video en partes de 10 min
    Agrega subtítulos si existe el archivo file_name.srt
Uso:
    $ avi2mp4.py file_name.avi

Instrucciones para usar el script en Ubuntu:
# Instalar ffmpeg y mencoder
$ sudo aptitude install ffmpeg mencoder
# Abrir un editor y copiar el contenido del script
$ nano avi2mp4.py
# Ejecutar el script
$ python avi2mp4.py video_de_prueba.avi

El código lo pueden descargar desde aquí o lo pueden revisar aquí.

Crear GeoTiff de una cuenca con herramientas libres


Howto generate drainage basins from ASTER GDEM Project data.

Existen varias fuentes para obtener DEM de forma gratuita, pero la página de ASTER GDEM es la que me ha dado mejores resultados ya que entrega una precisión de 30 m. para Chile. Existe información adicional que se puede descargar desde WIST, donde podemos usar la misma cuenta creada para ASTER GDEM.

Lamentablemente para crear el shape de la cuenca aún no he podido investigar si se puede hacer con los módulos de Grass, como por ejemplo r.watershed , r.water.outlet , etc. Por lo que tuve que recurrir al software privativo WMS 7.1 , siguiendo el manual que nos pasaron en el curso de Hidrología CI41C. Este software trabaja archivo en formato GridFloat, por lo que aprovechamos bajar los DEM desde la USGS los cuales tienen una precisión de sólo 90 m. Con esto podemos crear 3 shapes: _arc.shp (líneas con los cauces) , _poly.shp (polígono con la divisoria de aguas) y _pt.shp de la cuenca (punto salida de la cuenca).

Con el polígono con la divisoria de aguas es posible “cortar” desde el Geotiff de la zona la información referente sólo a la cuenca. Para cual debemos seguir los siguientes pasos.

  • Descargar los geotiff de la zona desde la página de ASTER GDEM , los cuales descargaremos en pedazos de 1 grado x 1 grado, por ejemplo ASTGTM_S29W071_dem.tif contiene la información del cuadrante comprendido entre S29 – S28 , W071 – W072. Junto a los archivos _dem se encuentra un archivo _num que corresponde al error de la medición.
  • Ahora nos toca unir todos los pedazos en uno que incluya toda la cuenca. Para eso no ayudaremos con el comando gdal_merge

# Con el siguiente comando unimos los archivos ASTGTM_S29W068_dem.tif , ASTGTM_S30W071_dem.tif y ASTGTM_S32W069_dem.tif , etc. y los guardamos en el archivo elqui-mosaico.tif ,  en este caso los archivos .tif están en el mismo directorio donde estamos trabajando.
$ gdal_merge.py -o elqui-mosaico.tif ASTGTM_S29W068_dem.tif ASTGTM_S30W071_dem.tif ASTGTM_S32W069_dem.tif
# Para ver la información de los archivos .tif , en este caso gdalinfo usamos el archivo que generamos.
$ gdalinfo elqui-mosaico.tif

Driver: GTiff/GeoTIFF
Files: elqui-mosaico.tif
Size is 14401, 14401
Coordinate System is:
GEOGCS["WGS 84",
DATUM["WGS_1984",
SPHEROID["WGS 84",6378137,298.2572235630016,
AUTHORITY["EPSG","7030"]],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich",0],
UNIT["degree",0.0174532925199433],
AUTHORITY["EPSG","4326"]]
Origin = (-71.000138888888884,-27.999861111111112)
Pixel Size = (0.000277777777778,-0.000277777777778)
Metadata:
AREA_OR_POINT=Area
Image Structure Metadata:
INTERLEAVE=BAND
Corner Coordinates:
Upper Left  ( -71.0001389, -27.9998611) ( 71d 0’0.50″W, 27d59’59.50″S)
Lower Left  ( -71.0001389, -32.0001389) ( 71d 0’0.50″W, 32d 0’0.50″S)
Upper Right ( -66.9998611, -27.9998611) ( 66d59’59.50″W, 27d59’59.50″S)
Lower Right ( -66.9998611, -32.0001389) ( 66d59’59.50″W, 32d 0’0.50″S)
Center      ( -69.0000000, -30.0000000) ( 69d 0’0.00″W, 30d 0’0.00″S)
Band 1 Block=14401×1 Type=Int16, ColorInterp=Gray

Donde podemos ver mucha información interesante, como por ejemplo: Formato GTiff/GeoTIFF, Coordenadas geodésicas Datum WGS 84 , el origen, las coordenadas de las esquinas y más abajo las Bandas de información en este caso sólo 1 del tipo Int16, la cual correspondería a las elevaciones.
Podemos abrir nuestro mosaico verlo en Qgis, en propiedades cambiamos el mapa de color a pseudocolor y podremos ver algo como esto:

Imagen GeoTiff del sector

Ya tenemos nuestro archivo mosaico listo para recortar la información de la cuenca, momento …. no es tan fácil, resulta que cuando trabajamos en WMS transformamos nuestro DEM a WGS 84 / UTM zone 19S y los shapes de las cuencas quedaron en esa proyección.

# Para ver la información de los shapes, usamos el comando ogrinfo, en este caso la divisoria de aguas de la cuenca en el archivo estacion01_poly.sh:

$ ogrinfo -al -geom=NO estacion01_poly.shp

INFO: Open of `estacion01_poly.shp’
using driver `ESRI Shapefile’ successful.
Layer name: estacion01_poly
Geometry: Polygon
Feature Count: 4
Extent: (392889.046537, 6679377.052909) – (415780.512166, 6711932.273227)
Layer SRS WKT:
PROJCS["WGS 84 / UTM zone 19S",
GEOGCS["WGS 84",
DATUM["WGS_1984",
SPHEROID["WGS 84",6378137,298.257223563,
AUTHORITY["EPSG","7030"]],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],
UNIT["degree",0.01745329251994328,
AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4326"]],
UNIT["metre",1,
AUTHORITY["EPSG","9001"]],
PROJECTION["Transverse_Mercator"],
PARAMETER["latitude_of_origin",0],
PARAMETER["central_meridian",-69],
PARAMETER["scale_factor",0.9996],
PARAMETER["false_easting",500000],
PARAMETER["false_northing",10000000],
AUTHORITY["EPSG","32719"],
AXIS["Easting",EAST],
AXIS["Northing",NORTH]]
OGRFeature(estacion01_poly):0
OGRFeature(estacion01_poly):1
OGRFeature(estacion01_poly):2
OGRFeature(estacion01_poly):3

  • Con esta información de los EPSG ya somos capaces de reproyectar el tif desde “EPSG”,”4326″ a “EPSG”,”32719″ con el comando gdalwarp :

$ gdalwarp -s_srs EPSG:4326 -t_srs EPSG:32719 elqui-mosaico.tif elqui-mosaico_r.tif

  • Necesitamos generar el metadato de su Datum “EPSG”,”32719″, para nuestro shape de la divisoria de aguas de la cuenca estacion01_poly.shp con el comando epsg_tr.py :

$ epsg_tr.py -wkt 32719 > estacion01_poly.prj

  • Ya estamos listos para emascarar los datos que están fuera del polígono definido por nuestro shape en este caso el de a divisoria de aguas de la cuenca estacion01_poly.shp , con el comando gdalwarp -cutline :

$ gdalwarp -cutline estacion01_poly.shp elqui-mosaico_r.tif elqui-mosaico_re.tif

Con esto queda un archivo tif con las dimensiones del original, pero fuera de este la elevación está en cero.
Para recortar el archivo tif con las dimensiones del shape, podemos utilizar el comando gdalwarp -te si recordamos que las dimensiones del shape estacion01_poly.shp eran Extent: (392889.046537, 6679377.052909) – (415780.512166, 6711932.273227) , ¿No me creen? revisen más arriba lo que les dio ogrinfo:
$ gdalwarp -te 392889.046537 6679377.052909 415780.512166 6711932.273227 elqui-mosaico_re.tif elqui-mosaico_rer.tif

  • Para crear un shape llamado contour_250.shp con las curvas de nivel cada 250 mts. ocupamos el comando gdal_contour -a elev :

$ gdal_contour -a elev elqui-mosaico_rer.tif contour_250.shp -i 250.0

Luego visualizamos el resultado en Qgis:

Geotiff de la cuenca con curvas de nivel cada 250 mts.

BONUS: con el comando listgeo que nos entregan información interesante de los archivos Geotiff:
$ listgeo -no_norm ASTGTM_S29W068_dem.tif
$ listgeo -proj4 ASTGTM_S29W068_dem.tif
$ listgeo -t tabledir ASTGTM_S29W068_dem.tif

Referencias:
Manejando información SRTM con GDAL
Como instalar las herramientas acá utilizadas revisar: Software libre para Hidrología

Soporte situacional


Mientras estudiaba una de las lecturas del Curso de RRHH IN50A, los capítulos 8 y 9 del libro “Administración del comportamiento organizacional: liderazgo situacional” me fui dando cuenta que el concepto que planteaban como Liderazgo se podía asimilar al Soporte, así que se me ocurrió traspasar algunas ideas del libro, a mi proceso de comprensión y entendimiento de lo que significa el Soporte Colaborativo.

Una de las conclusiones de este artículo que me gustaría adelantar es que:

El Soporte Colaborativo, es sólo uno de los posibles estilos de soportes y por consiguiente plantea el desafío de ir definiendo los otros estilos de soporte, para generar una metodología integral de soporte.

Figura 1

Figura 1

Para ir aclarando el tema, voy a agregar la Figura 1, la cual trata de integrar los 3 componentes que involucra el modelo de Liderazgo Situacional®:

  1. Comportamiento de tarea.
  2. Comportamiento de relaciones personales.
  3. Nivel de capacidades y disposición del líder y los seguidores.

La base del modelo es que la elección del estilo de liderazgo (S1, …, S4), depende de la combinación de estos 3 componentes.

¿Qué es un estilo de liderazgo?

Es aquella metodología que utiliza una persona cuando pretende ejercer influenciar en otra.

¿Para qué sirve este modelo?

Nos enseña que los primero que debemos hacer antes de influenciar a una personas es diagnosticar el estado de estos 3 componentes, pues eso define el estilo que con mayor probabilidad nos generará buenos resultados.

Ahora aterrizando este modelo al Soporte Situacional:

¿Qué es un estilo de Soporte?

Es aquella metodología que utiliza una persona cuando pretende transmitir conocimiento a otra.

Pongamos algunos ejemplos de Soporte Situacional:

Ejemplo 1: Cuando el típico hijo “computín” le enseña a revisar el e-mail a su madre.

Primero evaluar la preparación de ambos, el hijo es power user ( capaz y confiado ) y la madre ( incapaz e insegura ), en este caso el estilo recomendado a utilizar es el Soporte S1, es decir el hijo debe centrarse más en la tarea y decirle lo básico que debe hacer su madre. Ella debe estar enfrente del computador, nunca el hijo debe tomar el ratón. Cada tarea debe realizarse paso a paso, con pequeñas explicaciones (mueve la flecha hacia arriba, abajo, presiona el botón). Con la repetición de las tareas la madre va a ir ganando habilidades y experiencia, para realizar lo que necesita, sin que se frustre por no entender o se asuste con un exceso de información.

Supongamos que el escenario evoluciona, pero el hijo es power user ( capaz y confiado ) y la madre ( incapaz y motivada ), en este caso hay que aprovechar motivar las preguntas, además de explicar las tareas paso a paso y verificar que se entienda. Explorar habilidades relacionadas, para potenciar nuevas capacidades.

Ejemplo 2: Cuando el típico usuario avanzado de XP, que se pasó a Ubuntu, ingresa una consulta al foro de ubuntu-cl.

Primero evaluar la preparación de ambos, el colaborador ( incapaz y motivado ) y el usuario ( incapaz y seguro ), el colaborador debería demostrarle el compromiso y confianza dándole una cordial bienvenida, dado que la personas sólo le faltan conocimientos y experiencia, pero tiene las habilidades es recomendable enviarlo a leer la documentación recomendada. Para luego pueda participar de la solución de su problema a través del Soporte Colaborativo.

¿Como llegar a un estilo de Soporte Colaborativo?

En la primeras etapas (R1 y R2) cuando el usuario del foro no tiene las capacidades y la disposición, es importante que la comunidad se concentre en educación a adquirir esas capacidades y disposición. Esta es la etapa de presentación de lo que es Ubuntu GNU/Linux y una comunidad de software libre, si la persona se motiva es capaz de avanzar en busca de más conocimiento.

Es aquí en (R3) cuando se aplica el Soporte Colaborativo, el cual se centra en el aprendizaje, donde el que colaborador y el usuario tienen un nivel similar de capacidad y disposición, es decir son capaces de participar de manera colaborativa en la resolución de los problemas. Este es el estado óptimo de funcionamiento del foro, pues se maximiza el comportamiento de relación y los usuarios adquieren los capacidades moderadas de acuerdo a sus motivaciones y no son obligados a aprender aquelllo que no les interesa.

La etapa (R4) ya se aleja del objetivo del foro, pues corresponde a un usuario muy capacitado, pero con bajo comportamiento de relación, es decir alguien que soluciona problemas pero no genera ( participación, alienta, colabora y compromete ). Esa persona en general, puede saltar a un nivel superior de Soporte, como por ejemplo comenzar a participar en Launchpad o en las listas de correo de desarrolladores, donde por el grado de capacidad del entorno volverá el Soporte Colaborativo, con gente con mayor motivación y conocimientos por la computación.

Conclusiones:

Las capacidades y disposición son relativas a nuestro entorno, en este caso no es lo mismo un usuario nuevo de Ubuntu con un de la lista de correo de Gentoo.

Para dar soporte se necesitan habilidades conversacionales y sociales, no solamente capacidades técnicas. Es decir participar en un foro de soporte es una muy buena experiencia formativa.

Entrevista Jaap Karssenberg el desarrollador de Zim


Dado que soy un fanático del programa Zim – un wiki de escritorio, donde incluso e participado traduciendo parte de la aplicación al castellano, se me ocurrió hacerle una entrevista al desarrollador del programa, el cual amablemente me ayudó hace un par de años a configurar el corrector ortográfico, cuando trabajaba con las primeras versiones de Zim.

Publicar esta entrevista es mi forma de reconocer el aporte que Jaap ha hecho por la comunidad de software libre:

Versión de la entrevista traducida al Castellano:

Empecemos hablando un poco de tí. ¿Que te llevó al mundo de la computación?

Jaap:
Difícil identificar sólo una razón. Mi padre llegó con una computadora cerca del ’89 en ese tiempo recuerdo que me muy luego permitieron jugar con ella. Una vez que empecé a entender un poco acerca de la electrónica, la complejidad de los computadores me comenzó a fascinar.

¿Cuánto tiempo llevas siendo una programador de codigo abierto?

Jaap:
Mi primer gran encuentro con la comunidad de código abierto fue cerca del 2001, cuando yo vivía en el campus y un gran encuentro de hackers se llevó a cabo en los pastos en frente de los departamentos de estudiantes. El primer código que liberé fue en el 2002, después pasé varios meses tratando de aprender como funcionaba Perl por dentro. Me conecté fuertemente con la comunidad después de hacer un viaje a la conferencia europea de Perl YAPC.

¿Cómo te sientes acerca del progreso del prouyecto Zim?

Jaap:
Usualmente estoy muy impaciente con él. De alguna manera siempre estoy trabajando en una función que necesitaba el año pasado … Sin embargo, desde una perspectiva más realista creo que se está haciendo OK. Al menos el proyecto es bastante estable ahora para uso diario y llegar a poner en una nueva característica de vez en cuando. Desde el principio yo esperaba algo más de colaboración con otros programadores, pero durante el último año parece que hay una comunidad de usuarios emergente. Estoy muy feliz por ejemplo con las personas que ponen algo de esfuerzo para mantener las traducciones actualizadas.

¿Talvez nos puedas contar que te llevó a Perl durante tu trabajo diario? y ¿Por qué ahora estás interesado en Python?

Jaap:
Puro accidente, el tipo que me enseñó a programar resultó que usaba Perl. Lo que realmente me gusta de Perl es la flexibilidad de las expresiones, lo que es genial cuando tu estás jugando. Sin embargo cuando se trata de dar soporte a un proyecto a lo largo de varios años una de las primeras cosas que haces es restringir la flexibilidad para poder mantener las cosas. Lo cual destruye el propósito. Estoy probando Python, porque ahora parece tener una comunidad más grande detrás de él, para aplicaciones de escritorio y la barrera de entrada es mucho menor para las personas que sólo quieren hacer un pequeño parche. Otra consideración es el OO framework más fuerte en Python. Por supuesto, mi esperanza sigue estando fijada en Perl6 para la gran reconciliación ;)

¿Qué piensas acerca de Ubuntu? ¿Alguna vez haz utilizado una máquina con Ubuntu? ¿Te gustó?

Jaap:
Ubuntu es mi actual distro de elección y la corro en la mayoría de mis máquinas. He pasado por media docena de diferentes distribuciones de linux en los últimos 6 años y no tengo una real preferencia para un sistema u otro. Ubuntu parece ser una de las distribuciones mejor soportadas en este momento, que es la razón por la que yo la uso.

¿Qué piensas acerca del Futuro del FLOSS?

Jaap:
Para mí es algo que hago en mi tiempo libre, yo no programo para vivir. Por lo tanto, tengo poco conocimiento en la forma en que el software libre / de código abierto lo están haciendo en el entorno corporativo. No tengo un profundo sentimiento de problema con el uso de software propietario, siempre y cuando haga lo que necesito. Sin embargo, tengo una picazón cuando el software no hace lo que necesito que haga y quiero ser capaz de arreglarlo. Supongo que el código abierto, estará presente siempre que hayan personas interesadas en mejorar el software que ejecuta, pero no me lo imagino teniendo la principal cuota de mercado en cualquier momento, sin antes el respaldo corporativo fuerte.

¿Es importante el rol del desarrollo del código abierto en el trabajo de la investigación científica?

Jaap:
La comunidad científica tiene una tradición de compartir los resultados a través de publicaciones que permita a las personas aprovecharlas en otras investigaciones. Mi punto es que, al menos en el mundo académico el código abierto tiene un perfecto sentido.
Si no confían en los resultados de las mediciones si no eres capaz de reproducirlas, ¿Por qué la confianza, por ejemplo, en una simulación sin verificar el código? El código de simulación que escribí para mi tesis de maestría se publicó bajo licencia GPL y creo que fue uno de los factores que me permitió la cooperación con otros grupos de investigación.

Saludos

Muchas Gracias Jaap por la entrevista e invito a todas las personas a probar Zim:
# Instalación en Ubuntu Hardy
$ sudo aptitude install zim

Para quienes estén interesados, pronto voy a ver la forma de habilitar la traducción al castellano, en la versión instalada a través de los repositorios. Ya que la versión descargada desde Bazaar funciona perfectamente en español.
Cualquier sugerencia sobre la traducción de la entrevista es bienvenida :P y los invito a agradecerles a los programadores de su aplicación preferida.

(more…)

¡Ha llegado el Firefox 3 Download Day!


¡Ha llegado el Download Day!
Establece un récord mundial Guinness
Disfruta una web mejor

Es buen trato, ¿no? Todo lo que tienes que hacer es ayudarnos a conseguir el récord al software más descargado en 24 horas descargando Firefox 3 ahora – es así de fácil. No te estamos pidiendo que te tragues una espada o coloques 30 cucharas en tu cara, aunque eso sería increíble.

Por favor descarga Firefox 3 antes de las 17:00 UTC del 18 de junio de 2008.Eso son las 10:00 en Mountain View, 13:00 en Toronto, 14:00 en Río de Janeiro, 19:00 en París, Madrid, Roma y Varsovia, 21:00 en Moscú y el 19 de junio de 2008 a la 1:00 en Pekín y a las 2:00 en Tokio.

Análisis de Ubuntu como proyecto colaborativo


El proyecto Ubuntu

El proyecto Ubuntu tiene muchas facetas el puntapié inicial lo dio su líder Mark Shuttleworth, el tipo tuvo gran acierto y ganó muy buen dinero gracias al software privativo. Con esa base monetaria para emprender un proyecto y dado que había participado de la comunidad de software libre y le gustaba el tema se embarcó en el proyecto Ubuntu GNU/Linux.

Desconozco las motivaciones de Mark, pero de lo que he observado está atacando algunos puntos flacos de las comunidades de software libre, que eran formadas por desarrolladores y fanáticos de linux:

  • Desarrollar una plataforma para optimizar la colaboración. ( Eso es launchpad )
  • Desarrollar aún más las comunidades, gran parte de los esfuerzos van en busca de consolidar los grupos locales ( Local Teams ) El encargado de esto es Jono Bacon.
  • Masificar en serio una distribución para desktop basada en Software Libre a nivel global.
  • Buscar una forma de hacer rentable liderar el proyecto ( Ojalá sepan implementar una forma transparente y razonable de plantear esto a los usuarios ) Hasta ahora han hecho bien las cosas, por ejemplo en el último open week fue sincero sobre este tema.
  • Mantengan y desarrollen los canales eficientes de comunicación y retroalimentación. ( Sintonía líderes y comunidad )

Yo he participado muy activamente en el proyecto local de Ubuntu-cl, pero fallé en implementar los consejos para hacer sustentable la participación en actividades colaborativas, así que tuve que congelar mi participación en la comunidad para volver a mis estudios. Sería importante que los jóvenes que comienzan a participar de las actividades de la comunidad, tengan claro estos consejos, para que aprovechen las cosas positivas y no tropiecen con la misma piedra.

Recuerdo cuando fue la primera Junta Ubuntera y algunos hablaban usando un vocabulario muy empresarial, otros un vocabulario de una agrupación tipo ONG y otros como un grupo de amigos. Con el pasar del tiempo se fueron definiendo alguno de estos temas.

Hoy tenemos nuestros objetivos, pero quizás aún falte definir mejor nuestras bases, entre antes mejor.

Hay que consolidar a los líderes que hagan sustentable a la comunidad y ojalá también lean los consejos del artículo anterior.

Les deseo mucha sabiduría y fuerza para que puedan seguir con el proyecto Ubuntu-cl.

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 140 seguidores