A continuación encontrará las páginas asociadas a “programming”
agosto 11, 2009
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.
octubre 15, 2008
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.
function FNV1a32_hash($str) { $prime = "16777619"; $h = "2166136261"; $i = 0; $s = strlen($str); while ($i<$s) { $h = gmp_xor($h, ord($str[$i++])); $h = gmp_mul($h, $prime); } return dechex((float)gmp_strval(gmp_and($h, "0x00000000ffffffff"))); }
septiembre 2, 2008
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
julio 8, 2008
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.
Así que yo me he hecho mi mini versión, thumbr, en shell script que hace lo mismo o algo parecido (la primera idea ha sido otra vez exponerlo como servicio web, pero te puede torrar la máquina si te despistas).
mayo 6, 2008
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»
Que ha sido refraseada, quizá para evitar demasiadas interpretaciones, muchas veces así:
«Sé conservador con lo que envías, sé liberal con lo que recibas»
Que quizá tiene un poco más de contexto de redes. Parece algo fácil de entender y con lo que no estar muy en desacuerdo.
marzo 16, 2008
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.
enero 29, 2008
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).
octubre 9, 2007
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.
Se hacen eco de la noticia unos cuantos que han seguido el desarrollo como: Joe Gregorio, [John Panzer](https://journals.
septiembre 26, 2007
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.
agosto 22, 2007
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()
octubre 27, 2006
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).
Para hacerlo tenemos que declarar antes los namespaces y luego usar los prefijos asignados:
Map namespaces = new TreeMap(); namespaces.put("x", "https://xmpp.org/namespaces/xxxx"); DocumentFactory.getInstance().setXPathNamespaceURIs(namespaces); Y luego tendremos que prefijar todos los elementos de la búsqueda XPath que estén dentro de ese espacio de nombres:
septiembre 14, 2006
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.
Antes de que a alguno se le ocurriese lo de complicar un poco la sintaxis de Python para poder hacer algunas de las filigranas que se pueden hacer en otros lenguajes (básicamente hacer el código mucho menos legible), ya han añadido una curiosa funcionalidad:
septiembre 15, 2005
Programando juegos con Python
Otro claro ejemplo de la facilidad y sencillez de hacer algunas cosas con Python.
julio 17, 2005
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.
Ahora llega Termite, un Lisp para computación distribuida.
Vía Lambda the Ultimate.
mayo 12, 2005
Viciado
Como diría Javi: escuchando compulsivamente la inspiración divina para superar el nivel 6 del Python Challenge. Os lo recomiendo.