Archive for the ‘Programación’ category

Thumbnails para mis epub

June 27th, 2010

Después de varios problemas con mi Papyre (más que nada por comprarlo afuera, y que tuvo que viajar España-Argentina-España-Argentina en manos de conocidos), finalmente lo puedo usar tranquilamente :D

A medida que me instruí en los libros electrónicos, aprendí que uno de los mejores formatos para los archivos es epub, así que empecé a migrar mi colección. La decepción llegó cuando me dí cuenta que Nautilus no era capaz de mostrar la tapa de los libros con un thumbnail, como sí hace con los pdf. Así que, después de leer un poco cómo funciona la cosa, y metiendo un par de líneas de Python, escribí epub-thumbnailer. Evidentemente, a nadie le importa o me esto perdiendo de algo, porque no encontré a nadie que se queje de esto en ningún lado… pero por las dudas lo libero ;)

Compartí:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Netvibes
  • StumbleUpon
  • Technorati
  • Twitter

Contraseñas seguras

April 19th, 2010

Los involucrados en el mundo digital (sea como desarrolladores o usuarios) conocemos la importancia y la dificultad de mantener contraseñas seguras para los sistemas en los que debemos autenticarnos.

La siguiente lista puede proveer algunas novedades y obviedades al respecto:

  • Usar contraseñas dificiles de adivinar y fáciles de recordar
  • Usar letras (mayúsculas/minúsculas), números y símbolos
  • Chequear la fuerza de la contraseña con alguna métrica
  • No usar la misma contraseña para varias cosas
  • No decirle tus contraseñas a nadie
  • Una contraseña larga ayuda a evitar ataques de fuerza bruta

Sin embargo, y siguiendo a Neri, me animo a plantearles mi propio sistema/algoritmo “original” (desconozco si lo es… pero una vez se me ocurrió y anda perfecto. Edit: Como bien dice el propio Neri en su comentario, el algoritmo es MUY similar al suyo, sólo que agrega la parte de los reemplazos manuales) para generación de contraseñas. Este sistema se denomina “Once upon a time” y hace hincapié en los primeros puntos de la lista anterior:

  • Elegir alguna frase (o frases) de una canción o libro que tenga al menos ocho palabras
  • Tomar la primer letra de cada palabra de la frase elegida
  • Reemplazar las letras que les recuerden a números o símbolos por esos números o símbolos (esta es la parte más dificil y creativa)
  • Pasar algunas de las letras a mayúsculas (puede ser una por medio, o las primeras o las últimas)
  • Si la contraseña es débil, agregar algún símbolo extra al final

Como verán, el algoritmo deja bastante del lado del usuario, pero creo que es un buen comienzo para que empiecen. A continuación un ejemplo:

Voy a usar los primeros dos versos de “Stairway to Heaven”, de Led Zeppelin:

There’s a lady who’s sure
All that glitters is gold

Las primeras letras serían talwsatgig (fuerza según The Password Meter: very weak).

A continuación, reemplazo la primer “a” por un 1 (hay UNA dama), puedo reemplazar “all” por un 8 (hey.. es mi algoritmo.. para mi 8 es un “infinito” parado.. así que me representa el “todo”). Por último “glitter” (brilla/reluce) lo reemplazo por un * (¡como una estrella!). Hasta ahora queda:

t1lws8t*ig (fuerza según The Password Meter: strong).

Agregando un par de mayúsculas, nos queda:

t1LwS8t*Ig (fuerza según The Password Meter: very strong).

Como verán, la contraseña resultante no es fácil de adivinar, y tampoco de recordar, PERO si uno recuerda la frase y el algoritmo, a la tercera vez de usarla, ya queda grabada en la mente perfectamente :D

Compartí:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Netvibes
  • StumbleUpon
  • Technorati
  • Twitter

No sólo Rails en la Conferencia Rails

April 7th, 2010

Aprovechando un día de cama, estoy mirando unos videos que hace tiempo que tenía esperándome: los de la Conferencia Rails de Madrid de 2009

Les dejo una LT que me gustó mucho, ya que deja varios mensajes importantes (y es graciosa):

Además, rescaté cosas interesantes como:

  • Bluepill: Un monitor de procesos con una API un poco más linda que la de God
  • Teambox: Una herramienta para manejar la comunicación entre miembros de un proyecto
  • El sistema 6×50, 1×25 de Bebanjo (6 porciones de 50 minutos de trabajo ininterrumpido por dia, y 1 de 25 minutos para un proyecto propio)
  • Básica, pero que siempre vale la pena recordar, la charla sobre cómo lidiar con código legacy

Pueden encontrar todos los videos en AgoraNews

Como comentario final, voy a putear contra LocosXRails, evento al que asistí el año pasado, por no haber subido nunca los videos de las charlas, como prometieron… (algunos, igual, se pueden conseguir)

Compartí:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Netvibes
  • StumbleUpon
  • Technorati
  • Twitter

Gráficos Dia en Latex

March 21st, 2010

Un problema que siempre encontré a la hora de usar gráficos hechos en Dia en mis documentos Latex, es que se ven borrosos (puede ser por mi ignorancia al incluir la imagen, pero me pasa sólo con lo exportado desde ese programa… con otros gráficos no tengo problemas):

Dia > png > Latex = borroso

Hace un tiempo, en el blog de Aurelianito, encontré la forma de exportar desde Dia a una macro TGF, y de ahí incluirlo en el documento (exportar como “LaTeX PGF macros”). El resultado:

Dia > PGF macro > Latex = nítido

La magia se debe al paquete tikz:

\usepackage{tikz}

Y después, simplemente:

\input{archivo_exportado_de_dia.tex}
Compartí:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Netvibes
  • StumbleUpon
  • Technorati
  • Twitter

Principios de los Nudos

March 16th, 2010

Reef Knot, by katiedee

En general, me gusta tomar principios o ideas de una disciplina e intentar aplicarlos en otra, y ver si aplican o no. Creo que algo que puede ser transpolado de esa manera y superar la prueba, es mucho más fuerte de lo que uno podría suponer.

En los últimos días, en particular, estuve pensando en el armado de nudos (sí, los de soga) y cómo relacionar sus principios con la vida en general, y el desarrollo de software en particular. Los tres principios básicos de un buen nudo son:

  1. Que sea fácil de armar
  2. Que cumpla su cometido
  3. Que sea fácil de desarmar

Fácil de Armar

K.I.S.S (el principio, no la banda) es algo que debería ser conocido para todos. Hay que mantener las cosas simples y fáciles de hacer. La navaja de Occam pasa rasante por acá, recordándonos que de varias soluciones posibles, la más simple es la que debería ser elegida.

Si algo es complicado de hacer, también lo será de analizar, entender, modificar, etc.

Cumplimiento de Cometido

Un nudo puede servir para muchas cosas: prolongar una soga, acortarla (sin necesidad de cortarla), unir una soga a algo, amarrar dos objetos, servir como elemento decorativo, etc. Sea cual sea el cometido del nudo, uno que sea bueno tiene que cumplirlo.

De la misma manera, cualquier software, para cumplir con este principio, debe satisfacer su cometido.

Fácil de Desarmar

Por más que haya cumplido su cometido, si un nudo no puede ser desarmado cuando se lo quiera desarmar, no es bueno. Debe ser posible deshacerlo en caso de voler a necesitar la cuerda usada, o si el propósito que cumplía ya no es necesario. Transladar este principo al software no es tan sencillo, pero alcanza con pensar el “desarmar” como “destripar”, y así poder analizar el funcionamiento interno de algo. También, se puede ver como “desacoplar”, a fin de reutilizar partes, o reemplazar módulos de ser necesario.

De esta forma, tenemos una nueva forma de ayudarnos a corroborar si lo que estamos haciendo tiene buena pinta o no.

Compartí:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Netvibes
  • StumbleUpon
  • Technorati
  • Twitter

UML 2.0

February 27th, 2010

Hacer diagramas de clases siempre me resultó una tarea tediosa y complicada en cuanto al layout (pasé por varias herramientas, como ArgoUML, StarUML, Dia, y un par más). Sin embargo, siempre recalco la importancia de usar gráficos para representar ideas (cliché del día: “Una imágen vale más que mil palabras”). Por ese motivo, durante la preparación de la presentación de Apps Informáticas, empecé a usar yUML para ayudarme:

Si bien lo veo imposible de usar para diagramas grandes, los resultados son más que vistosos, los ejemplos muy ilustrativos y la sintaxis suficientemente sencilla y completa.

En fin, una herramienta recomendable para los que estén en el mundo del desarrollo de software :D

Compartí:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Netvibes
  • StumbleUpon
  • Technorati
  • Twitter

The Final Word on the Final Keyword

February 22nd, 2010

Hace tiempo que leí el artículo (técnico) “The Final Word on the Final Keyword“, de Renaud Waldura. Es una interesante lectura, no sólo para los javeros, sino para todos los desarrolladores, ya que habla, además de las ventajas de performance, de cómo puede comunicar intenciones y ser explícito.

Compartí:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Netvibes
  • StumbleUpon
  • Technorati
  • Twitter

Ley de Linus

December 28th, 2009

Pensada originalmente en un contexto de Desarrollo de Software, la siguiente “ley” de Linus Torvalds (un loco lindo conocido, entre otras cosas – como diseñar Git -, por ser el iniciador del Kernel de Linux), podría ser transpolada sin problemas a otros ámbitos de la vida:

Dado un número suficientemente elevado de ojos, todos los errores se convierten en obvios

Linus Torvalds

De yapa, otra de Linus:

Don’t claim to have a config option, if you don’t actually have the UI to change it.

más, en Wikipedia

via Hackelare

Compartí:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Netvibes
  • StumbleUpon
  • Technorati
  • Twitter

Google DevFest 09

November 19th, 2009

google_devfest_invite

Antes de ayer estuvimos con Dari (y gracias a que nuestro PL nos dejó ausentarnos un rato) en el Google DevFest 2009. Tras un rico desayuno con medialunas, fuimos a ver la Keynote, a cargo de Patrick Chanezon, encargado de que a todos se nos caiga la baba con HTML5,   geolocalización, y todas las magias que después se vieron a lo largo del día (estas son las cosas que él mostró).

A continuación, pasé por el “Geo Web Track”, en donde mostraron una introducción a las 10+ APIs que tiene google para mapas/geolocalización y compañìa (la que más me llamó la atención fue la API para flash, ya que la desconocía). También, contaron algunos truquitos sobre KML y la forma de hacer que Google indexe el contenido de los mapas. Sobre el final, presentaron una demo de Bondicom (el sistema de predicción de arribo de colectivos) con una interfaz reducida de Ojos del Cielo (el backend de monitoreo de Bondicom).

Antes de irme, le tocó el turno al “Development Tools Track”, en donde Christian Schalk habló sobre el Google App Engine, una solución completa para el hosteo de aplicaciones (Python o Java), dejando en sus manos toda la infraestructura. Sobre el final, hubo una demo sobre cómo construir un robot para Google Wave, y hostearlo ahí (que, de hecho, es la única forma de hacerlo).

Lo bueno: se ve que hubo mucha organización (y plata) puesta en este evento. Trajeron conferencistas copados que le pusieron mucha onda, mostrando cosas realmente interesantes.

Lo malo: Sentí que si me quedaba un rato más, venía un hombre de rojo a hacerme firmar el contrato por mi alma. Fue DEMASIADO marketinero para mi gusto (¿nadie de los que fué notó el logo de la gran G girando todo el tiempo al costado de los escenarios?). La movida de Google viene por el lado de hacer que todos programemos con sus APIs, en su infraestructura, para sus plataformas, en su sistema operativo y hasta en su lenguaje (monopolio, anyone?). Los productos que vimos hasta ahora son buenos (algunos excelentes), pero la idea de lanzar cosas verdes y aprovechar a la comunidad para hacerlas madurar y seguir quedándose con el nombre no me parece muy buena.

En esta otra reseña, pueden encontrar links a las presentaciones y a las demos mostradas ;)

Compartí:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Netvibes
  • StumbleUpon
  • Technorati
  • Twitter

Cuando no queda otra (o “usando Windows”)

November 10th, 2009

En “On Software and Languages” hay algunos trucos para cuando se necesitan las herramientas GNU disponibles en Linux (grep, cat, etc), en Windows.

Otra cosa que no se nombra ahí, pero que puede ser útil es el comando subst, que mapea un directorio contra una unidad de disco (cuando hay rutas absolutas que no se pueden evitar, por ejemplo).

Para los extremistas, que no quieren usar los comandos de Windows que “se portan como los de Unix”, también existe Cygwin, que permite usar directamente muchos comandos con un look&feel bien Linux.

Compartí:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Netvibes
  • StumbleUpon
  • Technorati
  • Twitter