A continuación encontrará las páginas asociadas a “Programming”
Kevent, python y FreeBSD
Para la posteridad:
#!/usr/bin/python26
# kevent proc demo - luis peralta
# https://www.ziritione.org
#
# tested on python 2.6 % freebsd 7.2
import sys
import select
if __name__ == '__main__':
print sys.argv
kq = select.kqueue()
ke = select.kevent(int(sys.argv[1]),
select.KQ_FILTER_PROC,
select.KQ_EV_ADD|select.KQ_EV_ADD,
select.KQ_NOTE_FORK|select.KQ_NOTE_EXEC|select.KQ_NOTE_TRACK, select.KQ_NOTE_EXIT)
events = kq.control([ke], 0, 0)
while True:
events = kq.control([], 1, 0)
if len(events) > 0:
for event in events:
if event.fflags & select.KQ_NOTE_FORK:
print event.ident, "forked"
if event.fflags & select.KQ_NOTE_EXEC:
print event.ident, "called exec"
if event.fflags & select.KQ_NOTE_EXIT:
print event.ident, "exited"
if event.fflags & select.KQ_NOTE_CHILD:
print event.ident, "is child, parent ", event.data
Se puede probar así: python2.6 kevent-test.py $$ &
Hash FNV con php
Hace un tiempo conté cómo generar un hash FNV con Python, esta vez le ha tocado al PHP. En principio la traducción debería haber sido directa, salvo porque el cabroncete del PHP y las operaciones sobre bits con número de tamaño mayor a 32 bits no se llevan nada bien. Vamos, es que es básico. Así que solución apoyándonos en la librería GMP y su extensión para PHP.
Moviendo repositorios subversion
Camarada, dump
y load
son tus amigos:
$ svnadmin dump /ruta/repo/viejo > /tmp/repo.dump
$ svnadmin create /ruta/repo/nuevo
$ svnadmin load /ruta/repo/nuevo < /tmp/repo.dump
Thumbr command line script
Después de ver esto, que es un programita para Mac que te saca un mosaico a partir de frames de un vídeo. Como bien dicen, utilidad tiene poca más que curiosear.
La ley de Postel
La supuesta ley, establecida por Jon Postel (uno de los gurús de los primeros estándares de internet), dice:
«Sé conservador en lo que haces, sé liberal al aceptar lo de otros»
pygooglechart y tus ciudades en 11870.com
El tener una API en 11870.com
permite, entre otras cosas, el prototipado rápido de chorradas varias sin
mucho esfuerzo. Así que hoy me ha dado por probar un poco otra API: Google
Chart API
(API de gráficas de Google) y que menos que explotar algún dato de los que hay
en 11870.com. Ya se sabe, una imagen vale más que mil palabras, así que me he
decidido a pintar las ciudades donde tengo sitios guardados.
Hash FNV con python
Los hashes o resúmenes FNV (de Fowler / Noll / Vo) son útiles por varias razones:
- Es muy rápido generarlos
- El tamaño del hash es fácilmente manipulable
- Se portan muy bien, es decir, producen pocas colisiones
Pues hoy necesitaba usarlos con mi querido Python y curiosamente nadie lo había implementado. Así que no me ha quedado más remedio que ponerme (no sé quién me ha dicho esta tarde que eso sería sólo un algoritmo , que no tendría complicación… en cuanto lo recuerde se va a acordar). Por si a alguien le viene bien:
RFC 5023: Atom Publishing Protocol
Ayer el borrador 17 de la especificación del Atom Publishing Protocol pasó a estándar como RFC 5023. Es sin duda un paso importante a la hora de estandarizar la publicación de contenidos. Lo que este estándar hace muy bien es reaprovechar otros estándares y no intentar reinventar la rueda: Atom syndication format (RFC 4287) para el contenedor de datos y HTTP (RFC 2616) para el transporte.
Beautiful Code
Mi lectura técnica de este verano recién terminado ha sido Beautiful Code. Se trata de un tipo de libro poco común desde mi punto de vista, porque el planteamiento del editor fue «voy a buscar a un tío que me cuente qué trozo de código ha escrito o leído por el que se sienta orgullo o tenga una especial admiración». Y así la friolera de 33 capítulos, treinta y trés.
Geoclue, python y dbus
Para que no se olvide:
#!/usr/bin/python
import dbus
bus = dbus.SessionBus()
proxy_obj = bus.get_object('org.freedesktop.geoclue.position.hostip','/org/freedesktop/geoclue/position/hostip')
geoclue_iface = dbus.Interface(proxy_obj, 'org.freedesktop.geoclue.position')
coordinates = geoclue_iface.current_position()
dom4j, xpath y namespaces
Por si a alguien le sirve, que a mí me ha traído de cabeza últimamente… Al utilizar expresiones XPath con dom4j, si éstas tienen namespaces (espacios de nombres, xmlns=“xmpp:xxx” …), hay que usar siempre los prefijos o no funcionarán las búsquedas (al contrario que si usamos DOM pelado).
from __future__ import braces
Es bien conocido que algunos lenguajes de programación prefieren utilizar una sintaxis sencilla y eliminar el uso de llaves y otras marcas para identificar ámbitos y bloques de código. Uno de estos lenguajes es Python. Un ejemplo de lenguaje que prefiere marcado un poco más sofisticado es Perl.
Programando juegos con Python
Otro claro ejemplo de la facilidad y sencillez de hacer algunas cosas con Python.
Termite
Hace un tiempo leí acerca de porqué un desarrollo de un servidor de póker online en Lisp se había parado para ser reprogramado en Erlang. Básicamente, para poder hacer fácilmente aquellas cosas que en Erlang son muy fáciles: desarrollos tolerantes a fallos y distribuilbles.
Viciado
Como diría Javi: escuchando compulsivamente la inspiración divina para superar el nivel 6 del Python Challenge. Os lo recomiendo.