Regalo estos libros

Hoy me puse a ordenar/tirar papeles. Esta vez le tocó a mis cosas de estudio. Tiré un montón de libros, tuve que darle rosca de lo lindo a la destructora de papel, me divertí con diagramas de diseño, apuntes y cosas viejas y tengo un montón de libros para regalar.

OJO leer bien, son casi todos impresos en laser o fotocopias

  • Managing and Maintaining a MS Windows server 2003 environment.
  • Administering a MS SQL Server 2000. (estos dos estoy pensando en tirarlos directamente)
  • Access 2000 (para IBM y compatibles). Carlos Boqué. (que feo!!)
  • Manual de administración de Windows 2000 server de Compumagazine.

Estos ya encontraron nuevo dueño: UPDATE: 17/2/2015

  • Dictadura del diseño. Notas para estudiantes molestos. Carlos Carpintero.
  • Thinking in java (fouth edition), Bruce Eckel. tomos 1 y 2 (enormes).
  • Python para todos. Raúl González Duque.
  • Object oriented Analysis and Desing with applications, third edition. Boch, jacobson, Rumbaugh.
  • Probabilidad y estadística aplicadas a la ingenieria. Douglas Montgomery.
  • Estructura y diseño de computadores. David A. Patterson, John L Hennessy.
  • Métodos orientados a objetos: consideraciones prácticas. James Marin, James J Odell.
  • Matemáticas Discretas, cuarta edición. Richard Johnsonbaugh.

Creo que los de MS van a ir a la basura como corresponde ;)

Estoy a punto de directamente tirarlos. Pero tal vez alguno sirve y tal vez hay algún que otro caso raro que quiere uno de esos. Por ejemplo los de MS serían unas excelentes patas de cama.

Todos excepto los de MS son fotocopias. Si te interesa alguno escribime a mail at gilgamezh.me.

ramen!

HowTo (stress)test a website with Apache Benchmark

Hoy por la mañana @reydelhumo queria probar un sitio que tiene en una raspy, yo le recomendé que use ab para hacer algunas pruebas básicas de load.

Usar ab es muy simple, pero es mucho más lindo poder hacer gráficos de los resultados, así que aproveché el momento para armar este post.

El objetivo es poder hacer varios tests contra una URL usando diferentes valores de concurrencia/cantidad de requests y gráficar la salida.

Primero hay que ejecutar las pruebas con ab:

ab -c 3 -n 100 -v 2 -g out1.tsv -H "Accept-Encoding: gzip,deflate"  http://python.org.ar/

Leer más…

Cómo usar un tunel SSH como proxy para HTTP

Es muy común estar en un lugar donde tenemos problemas o limitaciones para navegar por internet y que necesitemos una alternativa. Sea por un proxy que bloquea cosas, un DNS que resuelve mal o porque no queremos ser espiados.

La manera más simple es hacer un tunel SSH contra un equipo al que nos podamos conectar y usarlo como puente (proxy) para salir a Internet.

Hay 2 maneras de usar un tunel SSH la más conocida es un tunel para un único puerto.

Por ejemplo. Estoy en mi notebook llamada trator.local y quiero llegar al puerto 1982 de la maquina terminus.midominio.com. Pero no puedo porque ese puerto está cerrado en mi red.

Pero sí puedo llegar al puerto 22 (SSH) de la maquina puente.midominio.com. Entonces puedo hacer un tunel contra puente.midominio.com redireccionando el puerto 1982 de mi maquina al 1982 de terminus.midominio.com utilizando puente.midominio.com como tunel.

1982[trantor]---SSH(((internet)))--->[puente]---(((INTERNET)))--1982--->[terminus]

Para esto hay que ejecutar::

ssh -L 1982:terminus.midominio.com:1982 mi_usuario_en_puente@puente.midominio.com

Luego puedo conectarme al puerto 1982 de mi maquina (127.0.0.1:1982) y voy a estar accediendo a terminus.

Ahora bien, usar esta manera para navegar por internet es muy molesto, ya que sería imposible estar haciendo un tunel para cada equipo al que quiero llegar. Para poder sacar todo el tráfico de mi browser por tunel.midominio.com puedo crear un tunel 'especial' que usa el protocolo SOCKS, y luego configurar mi firefox para que lo utilice.

Primero se genera el tunel:

ssh -N -D 1917 mi_usuario_en_puente@puente.midominio.com

Luego en firefox se configura de la siguiente manera.

/images/firefox_proxy.png

Con eso ya podemos navegar con nuestro proxy. Una buena manera de validar es ingresar a http://ifconfig.me y validar la IP por la que estamos llegando.

Incognitosis y la PEP8

Hace un tiempo trabajando con fades Facu me propuso "estirar" el "Maximum Line Length" para probar si resultaba un poco más cómodo. A mi me pareció perfecto ya que entiendo que deben quedar muy pocas terminales de 80 columnas. Eso sí antes de dar un paso adelante confirmamos con la PEP8 que se puede llevar hasta 100 caracteres, sin romper esta santa ¿ley?.

Some teams strongly prefer a longer line length. For code maintained exclusively or primarily by a team that can reach agreement on this issue, it is okay to increase the nominal line length from 80 to 100 characters (effectively increasing the maximum length to 99 characters), provided that comments and docstrings are still wrapped at 72 characters.

Así que ahí fuimos. Como yo tengo una linea que me marca ese límite esto fue lo que cambié en mi .vimrc

function! ConditionalLoad()
highlight ColorColumn guibg=PaleTurquoise1
if getcwd() =~ $HOME . "/code/fades/*"
    set colorcolumn=99
else
    set colorcolumn=80
endif
endfunction
autocmd BufRead *.py call ConditionalLoad()
autocmd BufRead *.rst call ConditionalLoad()

El código de esa función es de Facundo.

El punto del cual tomé especial nota es que para los comentarios y docstrings la PEP8 recomienda mantenerse dentro de los 72 caracteres

that comments and docstrings are still wrapped at 72 characters.

Hoy hice click en mi RSS sobre una nota de Incognitosis (a quién normalmente leo por RSS) y me llamó la atención el hermoso diseño del blog. Así que dejé un comentario. Apenas termine de escribir el comentario me acordé de los 72 chars y fui a comprobarlo

/images/javipass_pep8.png

Efectivamente la causa de que el blog de Javi Pastor sea tan cómodo para la lectura es su respeto por la PEP8!!

Ya que estamos les recomiendo que no dejen de prestarle un ojo a Incognitosis, es una de los pocos blogs que llevo años leyendo.

Día internacional de la Mujer Trabajadora

El 8 de marzo se festeja justamente lo que dice el titulo de este post. no es el día de las Legrand, las thatcher, las Alfano, etc. Es un buen momento también para recordar que no es únicamente una cuestión de género.

Feliz día!

Si Dios fuera una mujer

¿Y si Dios fuera mujer?
pregunta Juan sin inmutarse,
vaya, vaya si Dios fuera mujer
es posible que agnósticos y ateos
no dijéramos no con la cabeza
y dijéramos sí con las entrañas.

Tal vez nos acercáramos a su divina desnudez
para besar sus pies no de bronce,
su pubis no de piedra,
sus pechos no de mármol,
sus labios no de yeso.

Si Dios fuera mujer la abrazaríamos
para arrancarla de su lontananza
y no habría que jurar
hasta que la muerte nos separe
ya que sería inmortal por antonomasia
y en vez de transmitirnos SIDA o pánico
nos contagiaría su inmortalidad.

Si Dios fuera mujer no se instalaría
lejana en el reino de los cielos,
sino que nos aguardaría en el zaguán del infierno,
con sus brazos no cerrados,
su rosa no de plástico
y su amor no de ángeles.

Ay Dios mío, Dios mío
si hasta siempre y desde siempre
fueras una mujer
qué lindo escándalo sería,
qué venturosa, espléndida, imposible,
prodigiosa blasfemia.

Fades 2.0

Fueron (creo) unas 2 semanas desde que salió el release 1.0 de Fades las que demoramos en sacar el 2.0 :). El ritmo estuvo muy bueno y sobre todo largas charlas de qué camino tomar. Cuándo salió la 1.0 Robert Collins nos hizo algunos comentarios sobre xattr , y después de una linda charla via IRC fades empezó a hacer honor a la primer palabra de su sigla para mutar a una caché de virtualenvs en lugar de tener uno por cada script. De paso se arreglaron varios errores y se mejoraron muchas cosas.

¿Qué hay de nuevo en esta release?

  • Tiene un cache para virtualenvs creados en el sistema; mejora la reutilización y velocidad.
  • Como resultado del feature anterior, ya no guarda metadata por script (en el script).
  • Permite indicar el nombre del projecto si es diferente al del módulo (ej: "import bs4 # fades.pypi beautifulsoup4 == 3.5")
  • Soporta requerimientos complejos de versión: (ej: "<2.6,>1.3,!=1.9")
  • Maneja paquetes a los que pip les cambia el nombre
  • Otros cambios y correcciones menores.

Mas info: https://github.com/PyAr/fades/releases/tag/2.0

Compilar versión vieja de PHP para Archlinux

Archlinux siempre tiene la versión más nueva de todo, eso tiene muchas cosas positivas. Algo que suele pasar es que tenemos que usar algo que está productivo y que tiene una versión mucho más vieja que la instalada. Hace poco tuve que laburar con un Drupal que estaba usando PHP 5.3 y no me quedó otra que compilarlo. Así que acá dejo los pasos de cómo hacerlo (básicamente la linea del configure).

  • Descargar el source en /usr/local/src.

  • Hacer un symlink en /usr/include/freetype2/freetype/freetype.h -> ../freetype.h (sin esto da un error porque no encuentra freetype.h)

  • Ejecutar configure, make y make install:

    ./configure --enable-mbstring --with-mysql --with-mysqli --with-zlib \
    --with-png-dir=/usr --with-jpeg-dir=/usr \
    --with-freetype-dir=/usr/include/freetype2/ --with-curl --with-gettext \
    --with-pdo-mysql --with-pdo-sqlite --with-bz2 \
    --prefix=/usr/local/php-5.3.29 --with-libdir=lib64 --with-gd \
    --with-libdir=lib64 --enable-cgi --enable-sockets --with-mcrypt \
    --with-xpm-dir=/usr
    
    make
    make install
    
  • Hacer un symlink de /usr/local/php-5.3.29 a /usr/local/php

  • Copiar el php.ini que tengamos a /usr/local/php/lib

  • Si usamos Apache en httpd.conf hay que hacer un Include de /etc/httpd/conf/extra/httpd-fastcgid.conf

HP Pavilion dv5 1251nr

En el último mes decidí cambiar la notebook y ahí ando evaluando modelos. Sacando cuentas me acordaba maso menos que la que tengo ahora tiene unos 5 años. Lo que me parece una linda cantidad de tiempo para una notebook.

Siempre me acordaba que yo había sacado una foto el día que la compré. Así que hoy la busqué y la pongo acá para no perderla.

/images/paviliondv5.jpg

El CD de Ubuntu está ahí porque no dejé que windows arranque ni una sola vez en la maquina (tenia un windows vista). Arranqué con el Live CD, elimine toda partición e instalé. :)

fades: FAst DEpendencies for Scripts

En el viaje a PyConAr 2014 fui y volví en auto con Facu Batista. En esas horas charlamos sin para un minuto, y entre cosa y cosa se nos ocurrió un proyectito muy divertido que dimos a llamar fades. Hace unas semanas hicimos el release 1.0. así que acá la gacetilla :)

Hola a todas y todos,

Estamos contentos de anunciar la liberación de fades 1.0. fades (en inglés: FAst DEpendencies for Scripts) es un sistema que maneja automáticamente los virtualenvs en los casos simples que uno normalmente encuentra al escribir scripts o programas pequeños.

Crea automáticamente un nuevo virtualenv (o reusa uno creado previamente para ese script), instalando o actualizando las dependencias necesarias, y ejecutando el script dentro de ese virtualenv.

Todo lo que necesitás hacer es ejecutar el script con fades (en lugar de Python) y también marcar las dependencias necesarias. Más detalles acá:

https://github.com/PyAr/fades/

Para obtenerlo:

Leer más…