This is my blog, more about me at marianoguerra.github.io
🦋 @marianoguerra.org 🐘 @marianoguerra@hachyderm.io 🐦 @warianoguerra
lista de lecturas 27/08/11
lista de lecturas 20/08/11
Lista de lecturas 13/08/11
- Central Planning and The Fall of the US Empire
- Cramming For College At Beijing's Second High agradecido de haber nacido en sudamerica :P
500 posts intrascendentes...
...de un blog intrascendente.
si seniores, pensar que hace varios anios cree este blog cuando mi hermano se compro su primera camara compacta para postear fotos*.
el experimento no duro mucho y empece a variar entre informacion interesante, rants de odio hacia el software :P, la etapa de postear screenshots de mi desktop, la etapa de quotear y repostear cosas y ahora que es simplemente un log de lo que considero vale la pena eternizar para cuando este viejo y solo y ya me haya leido todos los mails y chats de gmail en orden cronologico (?) y me ponga a ver que pavadas decia "cuando era joven".
al menos vino ian curtis y nos tomamos una pepsi
* mi hermano ahora labura de fotografo en berlin, para que se den una idea del paso del tiempo, pasen y vean que bonitas fotografias: http://kaig-hu-arg.com/
...then you win...
recien leo esto:
http://www.zdnet.com/blog/open-source/linux-snickers-at-microsofts-victory-declaration/9405
habla de que exceptuando desktops, linux es la fuerza mayoritaria en cloud, servers, mobile y 2da en tablets.
y que como el desktop esta en salida* linux es la fuerza dominante o el segundo en casi todos los segmentos.
esto me hizo acordar dos cosas:
y que por estas epocas hace 10 anios instalaba por primera vez linux en mi maquina :)
feliz decada linux
ahora hay que ponerse a ver cual es el sistema operativo que destrone a linux, no vaya a ser que se quede dormido en los laureles
a la espera del proximo rey**, viva la diversidad :)
* si ya se, tiene para rato
** que el nuevo rey sea libre
me gane una mochila un libro y un titulo de ingeniero en sistemas
dia de regalos, se anunciaron los ganadores del spawnfest y gane en la categoria "Best Web Library Prize" por qrly
el premio es una mochila de erlang solutions y un libro de Erlang OTP in action (IRL!)
la UTN por haber aguantado 6 anios asistiendo a sus aulas le entrego a mi viejo por cuestiones geograficas (el E5 no llega hasta Inglaterra todavia) un titulo de ingeniero en sistemas de informacion.
demasiados premios para un dia
lista de lecturas 06/08/11
mlog, logging for human beings
siempre empiezo un modulo y empiezo a poner prints, pienso "tendría que usar logging", pero el hecho de no poder recordar como se configura un logger y tanta verbositud hace que siempre termine usando prints.
peor cuando tengo que cambiar a logging tengo que leer la documentación y termino haciendo copy paste del código de los ejemplos.
para eso cree un wrapper que me hace la vida mas simple en mis casos de uso simples.
pego acá parte del readme del modulo (en ingles por fiaca a traducirlo).
si les gusta el código esta acá:
https://github.com/marianoguerra/doodles/tree/master/python
si ven algún error, problema o tienen alguna observación para hacer son bienvenidos, nunca termino de entender el modelo de logging ya sea en python o en java (el único que entiendo es console.log y console.error de js :D)
acá va un ejemplo de uso:
import timerunning it produces the following output (and files):
import mlog
# create a logger for the console with default logging level, default format
# and default everything (but nice defaults)
log = mlog.console()
# log some stuff
log.info("hey!")
log.warn("warning...")
log.error("something went wrong! (no it didn't just testing log.error)")
# add a file handler to the logger we where using (see how I pass the logger?)
# if I don't pass the logger instance I get a brand new logger that is
# unrelated to the last one, but in this case I add a handler to the one I have
mlog.file("mlog.log", logger=log)
# log some more stuff
log.debug("I'm on a file now!")
log.info("of course I'm on both")
# who wants file loggers without rotation?
# I give you a nice notation to specify the rotation policy
# add this handler to the logger I already have
mlog.file("every-minute.log", when=mlog.every(1, mlog.MINUTE), logger=log)
log.info("im on a file that rotates every minute")
# give time so it rotates
time.sleep(65)
log.info("65 seconds passed!")
# this is a new logger not related with the others
# change the module name so it's not in the same hierarchy
# as the other ones
other_log = mlog.file("unrelated.log", name="test_mlog_1")
# log something
other_log.info("unrelated logger is unrelated")
$ python test_mlog.py
[2011-08-12 11:44:30,491] test_mlog INFO: hey!
[2011-08-12 11:44:30,491] test_mlog WARNING: warning...
[2011-08-12 11:44:30,491] test_mlog ERROR: something went wrong! (no it didn't just testing log.error)
[2011-08-12 11:44:30,492] test_mlog INFO: of course I'm on both
[2011-08-12 11:44:30,492] test_mlog INFO: im on a file that rotates every minute
[2011-08-12 11:45:35,491] test_mlog INFO: 65 seconds passed!
$ ls
README.rst mlog.log test_mlog.py
every-minute.log mlog.py unrelated.log
every-minute.log.2011-08-12_11-44 mlog.pyc
$ cat mlog.log
[2011-08-12 11:44:30,491] test_mlog DEBUG: I'm on a file now!
[2011-08-12 11:44:30,492] test_mlog INFO: of course I'm on both
[2011-08-12 11:44:30,492] test_mlog INFO: im on a file that rotates every minute
[2011-08-12 11:45:35,491] test_mlog INFO: 65 seconds passed!
$ cat every-minute.log
[2011-08-12 11:45:35,491] test_mlog INFO: 65 seconds passed!
$ cat every-minute.log.2011-08-12_11-44
[2011-08-12 11:44:30,492] test_mlog INFO: im on a file that rotates every minute
$ cat unrelated.log
[2011-08-12 11:45:35,495] test_mlog_1 INFO: unrelated logger is unrelated
csv table to rst table -- python <3
problema, documentar estructura de tablas sql en algun lado
preferiblemente:
* formato editable con editor de texto
* versionable
* facil de escribir y bonito de leer
la forma mas facil de escribir es algo asi como un csv, pero la forma mas facil de leer es algun formato tabular, el wiki de github soporta varios markup pero el markup para tablas siempre es un perno, asi que elegi escribir un conversor de csv a tablas restructured text.
el resultado esta aca
ejemplo:
$ cat personas.csv
dni, nombre, apellido, observacion
1, bob, esponja, vive en una pinia debajo del mar
2, patricio, estrella, amigo de bob que perno seria tener que escribir el markup para una columna tan larga no?
$ python csv2table.py personas.csv > tablas.rst
$ echo >> tablas.rst
$ python csv2table.py personas.csv "Personas con titulo (la tabla no las personas)" >> tablas.rst
$ rst2html tablas.rst > tablas.html
resultado rst (si, rompi todos los estilos de la tierra):
=== ========= ========= =========================================================================================
dni nombre apellido observacion
=== ========= ========= =========================================================================================
1 bob esponja vive en una pinia debajo del mar
2 patricio estrella amigo de bob que perno seria tener que escribir el markup para una columna tan larga no?
=== ========= ========= =========================================================================================
Personas con titulo (la tabla no las personas)
==============================================
=== ========= ========= =========================================================================================
dni nombre apellido observacion
=== ========= ========= =========================================================================================
1 bob esponja vive en una pinia debajo del mar
2 patricio estrella amigo de bob que perno seria tener que escribir el markup para una columna tan larga no?
=== ========= ========= =========================================================================================
resultado html:
dni | nombre | apellido | observacion |
---|---|---|---|
1 | bob | esponja | vive en una pinia debajo del mar |
2 | patricio | estrella | amigo de bob que perno seria tener que escribir el markup para una columna tan larga no? |
Personas con titulo (la tabla no las personas)
dni | nombre | apellido | observacion |
---|---|---|---|
1 | bob | esponja | vive en una pinia debajo del mar |
2 | patricio | estrella | amigo de bob que perno seria tener que escribir el markup para una columna tan larga no? |