Novedades: actualmente estoy impulsando el proyecto Argentina en Python, desde aquí (ver mapa)

GREP_OPTIONS is the evil

Note

Este post no es el original, sino una migración de Wordpress a Nikola. Si no se visualiza correctamente, podés ir al original (en Wordpress) haciendo click aquí

Sí, cómo dice el título: no es nada bueno tener la variable de entorno GREP_OPTIONS configurada en el entorno en el que se está trabajando.

La semana pasada tuve varios problemas por esta misteriosa variable, pero vamos de a poco contando porqué la configuré y porqué me causó tantos problemas.

El motivo por el cuál configuré esta variable es porque me gustan un par de opciones de grep y no las quiero escribir cada vez que lo uso a este comando, es similar a un alias, pero funciona de otra forma.

Por ejemplo, si configuro un alias de esta forma:

alias grep='grep --color'

cuando ejecuto grep en la terminal, bash hace la sustición de "grep" por "grep --color" antes de ejecutar el comando "grep".

Por el contrario, si seteamos la variable GREP_OPTIONS de esta forma:

export GREP_OPTIONS='--color'

cuando ejecutemos en una terminal "grep" bash ni se entera de que está esta variable configurada y es el comando grep quién lee esta variable para tomar las configuraciones del entorno.

Normalmente, esto no causa ningún problema, siempre y cuando configuremos opciones de grep que no modifiquen la salida. En cambio, si usamos opciones como --line-number que agrega el número de la línea en dónde matcheo la expresión que pusimos esto puede causa problemas.

Hay programas, scripts, y demás, que esperan una salida en particular de un comando y a esta se la entuba (mediante un pipe |) y posiblemente luego se la pase mediante un sed para tomar la parte relevante. Entonces, ¿qué pasa si agregamos un número de línea al principio de cada línea en la que la expresión regular matchea? es simple: el programa crashea.

Esto me paso utilizando virtualenvwrapper, ya que utiliza este comando para ubicar el PATH de virtualenv:

humitos@eulogia:~$ (\which virtualenv | grep -v "not found")  /usr/bin/virtualenv  humitos@eulogia:~$

Ahora, si activamos esta variable para que muestre el número de línea... Veamos que pasa y porqué falla:

humitos@eulogia:~$ export GREP_OPTIONS='--line-number'  humitos@eulogia:~$ (\which virtualenv | grep -v "not found")  1:/usr/bin/virtualenv  humitos@eulogia:~$

Lo mismo sucede si creamos un alias:

humitos@eulogia:~$ unset GREP_OPTIONS  humitos@eulogia:~$ alias grep='grep --line-number'  humitos@eulogia:~$ (\which virtualenv | grep -v "not found")  1:/usr/bin/virtualenv  humitos@eulogia:~$

Sinceramente, este problema es muy básico, pero en diferentes scripts de configuración del sistema operativo o en scripts que se utilizan para compilar programas y librerías, te aseguro que puede ser un gran dolor de cabeza debuggear porqué no está funcionando como uno espera.

Referencias y links:


Odio registrarme para dejar un post en un blog

Note

Este post no es el original, sino una migración de Wordpress a Nikola. Si no se visualiza correctamente, podés ir al original (en Wordpress) haciendo click aquí

Pero claro, todo el mundo dice que es muy fácil registrarse, que lo puede hacer cualquiera y lleva dos segundos. Con esto el dueño del blog se ahorra de un montón de SPAM para revisar todos los días, digamos, quizás hay 3 comentarios de humanos y 23478 de SPAM, entonces se vuelve tedioso revisar todos estos comentarios.

Es por esto que utilizan algún sistema de registración para que los humanos dejen comentarios, pero nunca había visto uno como este: tenía tan pocos pasos que ni siquiera te dejaba registrarte:

me: po! hay que estar registrado para dejar un comentario en tu  blog  que aburridp

César: jajajaja habia spammers pero la registracion es indolora
openid y esas cosas manejas en wordpress me gustaria usarlo para
eviatar que si tenes registrado tu uenta, ya lo uses

me: ni siquiera hay un link para registrarse :D

César: naaaa

me: por eso no  tenés comentarios en el blog!!! jajajajajajaja

César: mira vos!

me: tengo que  decirlo, perdón

César: recien me  doy cuenta

me: sos un  HDP!!!!!

César: jajajaja

me: jajajaja

César: yo le puse  el plugin antispam

me: jajajajajaja  no puedo parar de reírme

César: no sabia que sacaba el link de registrarse!!!!  es plug on

me: es un  plug-suck

JDownloader sin conexión a internet en Debian

Note

Este post no es el original, sino una migración de Wordpress a Nikola. Si no se visualiza correctamente, podés ir al original (en Wordpress) haciendo click aquí

Después de actualizar Debian a una versión nueva, digamos, no estoy seguro bien qué se cambió y por ahora tampoco tenga muchas ganas de buscar cuál fue el paquete que hizo este cambio, se me rompieron las aplicaciones Java que usaban internet y por lo tanto el JDownloader.

Comencé la búsqueda ayer por la tarde y hoy me dí con este link:

Esto solucionó el problema que tenía :)

Actualizado:

Buscando un poco más en Google encontré el bug:


virtualenvwrapper con documentación en Español

Note

Este post no es el original, sino una migración de Wordpress a Nikola. Si no se visualiza correctamente, podés ir al original (en Wordpress) haciendo click aquí

Sí sí, estoy haciendo un post en mi blog: cualquier eso, pero bue. La cuestión es que quiero anunciar, casi obligado por haber hecho algo en dónde han publicado la dirección de mi blog, que terminé la traducción de virtualenvwrapper en estas semanas y estoy muy contento.

virtualenvwrapper es una suite de funciones que facilitan el trabajo con virtualevn, pero... ¿Para qué les voy a contar más si lo pueden leer de la documentación oficial?

Quiero agraderle a Doug Hellmann la buena onda que tuvo durante este tiempo conmigo y la paciencia, es un grande el flaco la verdad!

Aquí dejo el repositorio del código en el cuál hice la traducción, es un fork de su repo en Bitbucket.org

Gracias totales.