se me ocurrió ayer (mejor dicho lo necesite ayer), no lo encontré y lo hice.
básicamente es un script que periodicamente chequea en los proyectos de una lista* las versiones y si se actualizaron las agrega a una lista y genera un feed atom y rss, tambien provee una pagina web para ver los ultimos 100 updates, con links y posibilidad de ver detalles y comentar en cada release individual.
todo sin backend, solo generacion de archivos estaticos y javascript en el cliente.
la pagina esta acá: releases!
si querés que agregue alguna librería avisame por algún lado.
* proyectos que tienen un archivo package.json
martes, junio 26, 2012
ya migraste tu modulo a python 3? (aka migrando feedformatter a python 3)
resulta que ayer me puse a hacer una cosa que me hacia falta pero no era "critica" así que decidí hacerla en python3, supuse que a esta altura todo iba a estar mejor, pero me encontré con el primer escollo al buscar un modulo para generar un feed atom ya que feedformatter no anda en python 3.
en lugar de quejarme y volver al querido python 2, me puse un par de horas y lo migre a python 3 y viendo que no era muy difícil hice que el mismo modulo ande para python >= 2.5 (no se si anda en python 2.4 porque no tengo uno a mano)
los invito a mirarlo/probarlo/ayudarme en https://github.com/marianoguerra/feedformatter/
el modulo es bastante simple (y no muy lindamente programado) pero me hacia falta y no estaba.
así que los invito a hacer algo parecido, esta bueno para ejercitar, contribuir algo de vuelta y ayudar a que la gente considere python 3 mas seguido.
ahora lo que me falta es ver si puedo subir el cambio a pypi, no se como se hace y dado que el proyecto no tiene tests no se si rompi algo (mas que probar lo simple), pero bue, es lo que hay.
como me podes ayudar?
* probalo si usaste feedformatter
* bajalo y probalo y fijate si se rompe
* escribí una pequenia guia de uso al estilo pymtw[1] (y avisame)
* agregale unittests!
[1] http://www.doughellmann.com/PyMOTW/py-modindex.html
en lugar de quejarme y volver al querido python 2, me puse un par de horas y lo migre a python 3 y viendo que no era muy difícil hice que el mismo modulo ande para python >= 2.5 (no se si anda en python 2.4 porque no tengo uno a mano)
los invito a mirarlo/probarlo/ayudarme en https://github.com/marianoguerra/feedformatter/
el modulo es bastante simple (y no muy lindamente programado) pero me hacia falta y no estaba.
así que los invito a hacer algo parecido, esta bueno para ejercitar, contribuir algo de vuelta y ayudar a que la gente considere python 3 mas seguido.
ahora lo que me falta es ver si puedo subir el cambio a pypi, no se como se hace y dado que el proyecto no tiene tests no se si rompi algo (mas que probar lo simple), pero bue, es lo que hay.
como me podes ayudar?
* probalo si usaste feedformatter
* bajalo y probalo y fijate si se rompe
* escribí una pequenia guia de uso al estilo pymtw[1] (y avisame)
* agregale unittests!
[1] http://www.doughellmann.com/PyMOTW/py-modindex.html
miércoles, junio 20, 2012
Sobre criticar
In many ways, the work of a critic is easy. We risk very little yet enjoy a position over those who offer up their work and their selves to our judgment. We thrive on negative criticism, which is fun to write and to read.
But the bitter truth we critics must face, is that in the grand scheme of things, the average piece of junk is probably more meaningful than our criticism designating it so.
But there are times when a critic truly risks something, and that is in the discovery and defense of the new.
The world is often unkind to new talent, new creations, the new needs friends
la fuente es la pelicula ratatouille, la cual no vi pero vi el quote por ahi.
sábado, junio 16, 2012
camino a nantes, motorhome, camping, castillos y casamiento
una argentina de los pagos de Florencio Varela conoce a un francés de un pueblo cercano a Nantes ...fast forward... y se casan (no es una biografía de la pareja).
en el medio me conocen por aleatoriedades influenciadas por la agencia de intercambio alemana, lo que motiva por razones desconocidas la invitación de este indigno ser a su casamiento.
la ubicación se establece en un pueblo cercano al origen del futuro esposo, razón por la cual se organizan los amigos provenientes de Stuttgart para cruzar Francia de este a oeste, y aprovechando dicho evento, conocer lugares intermedios.
al protagonista y escritor de este post le toca viajar en una combi totalmente acondicionada para este tipo de actividades con la compañia de su novia y 3 amigos.
el viaje comienza un jueves a bajas horas de la mañana como resultado de una reorganización de ultimo momento por causas desconocidas.
...acá pasan cosas que el autor desconoce ya que durmió como morsa las primeras horas del viaje...
a mitad de camino (y mitad de Francia) comienza una región que se caracteriza por su alta concentración de castillos, razón por la cual aprovechamos para visitar aquellos que no requieran el pago de entrada o que realmente lo justifiquen.
luego de pasear y sacar fotos nos dedicamos a buscar un camping y aprovisionarnos de elementos para realizar, dados los limitados recursos, algo así como un asado.
luego del mismo nos retiramos a descansar para comenzar el día siguiente con visitas a castillos y continuando hacia Nantes.
allí nos hospedamos en algo llamado gite que es algo así como una casa de campo grande que alquila habitaciones.
superadas las limitaciones comunicacionales nos establecemos y desayunamos exitosamente para luego ir hacia el casamiento a realizarse en la cuna del vino Muscadet donde ingerimos cantidades industriales de comida y vino para luego festejar e irnos a dormir.
al día siguiente temprano emprendimos un regreso acelerado debido a la necesidad de algunos de los personajes de esta historia de volver a trabajar al día siguiente.
fin.
en el medio me conocen por aleatoriedades influenciadas por la agencia de intercambio alemana, lo que motiva por razones desconocidas la invitación de este indigno ser a su casamiento.
la ubicación se establece en un pueblo cercano al origen del futuro esposo, razón por la cual se organizan los amigos provenientes de Stuttgart para cruzar Francia de este a oeste, y aprovechando dicho evento, conocer lugares intermedios.
al protagonista y escritor de este post le toca viajar en una combi totalmente acondicionada para este tipo de actividades con la compañia de su novia y 3 amigos.
el viaje comienza un jueves a bajas horas de la mañana como resultado de una reorganización de ultimo momento por causas desconocidas.
...acá pasan cosas que el autor desconoce ya que durmió como morsa las primeras horas del viaje...
a mitad de camino (y mitad de Francia) comienza una región que se caracteriza por su alta concentración de castillos, razón por la cual aprovechamos para visitar aquellos que no requieran el pago de entrada o que realmente lo justifiquen.
luego de pasear y sacar fotos nos dedicamos a buscar un camping y aprovisionarnos de elementos para realizar, dados los limitados recursos, algo así como un asado.
luego del mismo nos retiramos a descansar para comenzar el día siguiente con visitas a castillos y continuando hacia Nantes.
allí nos hospedamos en algo llamado gite que es algo así como una casa de campo grande que alquila habitaciones.
superadas las limitaciones comunicacionales nos establecemos y desayunamos exitosamente para luego ir hacia el casamiento a realizarse en la cuna del vino Muscadet donde ingerimos cantidades industriales de comida y vino para luego festejar e irnos a dormir.
al día siguiente temprano emprendimos un regreso acelerado debido a la necesidad de algunos de los personajes de esta historia de volver a trabajar al día siguiente.
fin.
jueves, junio 14, 2012
sorprende a tus amigos, se el alma de la fiesta, vos tambien podes ser un chico rfc!
se te acabaron las conversaciones en una fiesta?
querés impresionar a tus amigos con tus conocimientos detallados de cuando usar "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" y "OPTIONAL"?
querés interrumpir a alguien para decirle "well actually" y demostrarle que vos sabes mas de algo que el?
entonces este post es para vos!
ya no tenes que googlear un RFC o leerlo online, la solucion esta a un apt-get de distacia!
y a leer!
si la razón de todo esto es leer un rfc que esta en xml (porque todo lo que un humano lee y edita tiene que estar en xml, porque es fácil para los humanos, hagamos las cosas fáciles para las computadoras y difíciles para los humanos) entonces:
y despues de verlo fallar con el error:
y pelear y googlear, cambio la linea por:
y anda. ahora a leer el bendito rfc.
para evitar que la gran audiencia de este blog (?) vaya a lanata a decir "queremos preguntar", aca un corto FAQ:
porque demonios?
porque estoy haciendo un proyecto y quiero estar al dia con la ultima version del draft que va a salir "pronto".
que odias ademas de xml?
la pagina de edición de posts de blogger.
querés impresionar a tus amigos con tus conocimientos detallados de cuando usar "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" y "OPTIONAL"?
querés interrumpir a alguien para decirle "well actually" y demostrarle que vos sabes mas de algo que el?
entonces este post es para vos!
ya no tenes que googlear un RFC o leerlo online, la solucion esta a un apt-get de distacia!
sudo apt-get install doc-rfc{,-experimental,-informational,-misc,-old-std,-others,-std,-std-proposed} xml2rfc
y a leer!
zmore /usr/share/doc/RFC/informational/rfc2324.txt.gz
si la razón de todo esto es leer un rfc que esta en xml (porque todo lo que un humano lee y edita tiene que estar en xml, porque es fácil para los humanos, hagamos las cosas fáciles para las computadoras y difíciles para los humanos) entonces:
xml2rfc draft-zyp-json-schema-04.xml
y despues de verlo fallar con el error:
ml2rfc: error: I can't synthesize a date in 2010 around input line 24 key not known while executing "::${basename}::pkgconfig get scriptdir,runtime"
y pelear y googlear, cambio la linea por:
<date year="2012" month="June" day="14"/>
y anda. ahora a leer el bendito rfc.
para evitar que la gran audiencia de este blog (?) vaya a lanata a decir "queremos preguntar", aca un corto FAQ:
porque demonios?
porque estoy haciendo un proyecto y quiero estar al dia con la ultima version del draft que va a salir "pronto".
que odias ademas de xml?
la pagina de edición de posts de blogger.
miércoles, junio 13, 2012
vim: mejor indentacion para javascript
me estaba cansando que en algunos casos vim no me indentaba automáticamente el código, tendía a ser si estaba adentro de un json literal o algo así.
leyendo un poco me entere que es porque por defecto vim usa el indentador de C para javascript y cuando ve cosas que no entiende hace lo que todos hariamos:
busque un poco y encontre este plugin:
https://github.com/pangloss/vim-javascript
que promete no solo indentar javascript en archivos .js sino dentro del html, para ello lo instale con pathogen:
y como todo usuario atolondrado pegue lo que vi mas abajo en mi .vimrc
ahora vamos a ver como anda, por lo pronto me indenta bien en el html cosa que es muy util (aunque uno nunca deberia escribir js en html :)
edit:
despues de usarlo un poco me di cuenta que no me estaba indentando igual en html y en archivos .js me fui a leer y me di con que hay que correr rake install en el directorio despues de traerlo para que instale la sintaxis y el indentador:
leyendo un poco me entere que es porque por defecto vim usa el indentador de C para javascript y cuando ve cosas que no entiende hace lo que todos hariamos:
busque un poco y encontre este plugin:
https://github.com/pangloss/vim-javascript
que promete no solo indentar javascript en archivos .js sino dentro del html, para ello lo instale con pathogen:
cd ~/.vim/bundle
git clone https://github.com/pangloss/vim-javascript.git
y como todo usuario atolondrado pegue lo que vi mas abajo en mi .vimrc
let g:html_indent_inctags = "html,body,head,tbody" let g:html_indent_script1 = "inc" let g:html_indent_style1 = "inc"
ahora vamos a ver como anda, por lo pronto me indenta bien en el html cosa que es muy util (aunque uno nunca deberia escribir js en html :)
edit:
despues de usarlo un poco me di cuenta que no me estaba indentando igual en html y en archivos .js me fui a leer y me di con que hay que correr rake install en el directorio despues de traerlo para que instale la sintaxis y el indentador:
sudo apt-get install rake cd ~/.vim/bundle/vim-javascript rake install
martes, junio 05, 2012
pylint en vim y como decirle que no sea tan denso
para tener pylint en vim (o para el caso cualquier linter de casi cualquier lenguaje) instala syntastic.
https://github.com/scrooloose/syntastic
hacelo por este caballo:
para decirle que no sea tan denso podes empezar dumpeando un pylintrc en la ubicación por defecto:
y editandolo a conciencia
EDIT: acá esta mi pylintrc
para decirle asyntastic que use pylint y no pyflake o similar agrega esta linea en tu vimrc:
y todos felices, incluso serj tankian
https://github.com/scrooloose/syntastic
hacelo por este caballo:
, / \,,_ .'| ,{{| /}}}}/_.' _____________________________________________ }}}}` '{{' '. / \ {{{{{ _ ;, \ / Gentlemen, \ ,}}}}}} /o`\ ` ;) | | {{{{{{ / ( | this is ... | }}}}}} | \ | | {{{{{{{{ \ \ | | }}}}}}}}} '.__ _ | | _____ __ __ _ | {{{{{{{{ /`._ (_\ / | / ___/__ ______ / /_____ ______/ /_(_)____ | }}}}}}' | //___/ --=: \__ \/ / / / __ \/ __/ __ `/ ___/ __/ / ___/ | jgs `{{{{` | '--' | ___/ / /_/ / / / / /_/ /_/ (__ ) /_/ / /__ | }}}` | /____/\__, /_/ /_/\__/\__,_/____/\__/_/\___/ | | /____/ | | / \_____________________________________________/
para decirle que no sea tan denso podes empezar dumpeando un pylintrc en la ubicación por defecto:
pylint --generate-rcfile > .pylintrc
y editandolo a conciencia
EDIT: acá esta mi pylintrc
para decirle asyntastic que use pylint y no pyflake o similar agrega esta linea en tu vimrc:
let g:syntastic_python_checker = 'pylint'
y todos felices, incluso serj tankian
domingo, junio 03, 2012
achicar pdf en linux
con ghostscript
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
con image magic
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
con image magic
convert -compress JPEG -quality 90 input.pdf output.pdf
Suscribirse a:
Entradas (Atom)
Seguidores
Archivo del Blog
-
▼
2012
(32)
-
▼
junio
(8)
- releases! una unica pagina para seguir las release...
- ya migraste tu modulo a python 3? (aka migrando fe...
- Sobre criticar
- camino a nantes, motorhome, camping, castillos y c...
- sorprende a tus amigos, se el alma de la fiesta, v...
- vim: mejor indentacion para javascript
- pylint en vim y como decirle que no sea tan denso
- achicar pdf en linux
-
▼
junio
(8)
-
►
2011
(74)
- ► septiembre (4)
-
►
2010
(111)
- ► septiembre (8)
-
►
2009
(96)
- ► septiembre (3)
-
►
2008
(60)
- ► septiembre (8)
-
►
2007
(64)
- ► septiembre (1)
-
►
2006
(81)
- ► septiembre (1)