Perdón a los que les estoy rallando con esto de los tips, son cosas que cuando no se te ocurren no sabes de donde sacarlas, pero ya escritas son simples y obvias, sin más dilación:
def bitN(i):
return len(bin(i)[2:])
Me explico, se pasa a binario bin(i), se separa el número del indicador de formato [2:] (0b) y se muestra su longitud len( )
Saludos
Mostrando entradas con la etiqueta tips. Mostrar todas las entradas
Mostrando entradas con la etiqueta tips. Mostrar todas las entradas
miércoles, 23 de marzo de 2011
Obtener el número de bits de un número en Python [tip]
lunes, 14 de marzo de 2011
Como monitorear un terminal desde otro [tip]
En el terminal que se quiere monitorear
mkfifo tunel
script -q -f tunel
En el terminal donde se quiere mostrar ( se podría enviar a través de la red o lo que fuera )
cat tunel
Una ventaja (o un inconveniente) es que el que monitorea no puede hacer cambios en el terminal. Por otro lado, si se hace esto, el comando script no devuelve el control hasta que alguien se conecte.
ps: si solo quisieramos guardar las sesiones, sin monitorearlas, solo habría que hacer script -f <archivo de log>
A portarse bien ;)
mkfifo tunel
script -q -f tunel
En el terminal donde se quiere mostrar ( se podría enviar a través de la red o lo que fuera )
cat tunel
Una ventaja (o un inconveniente) es que el que monitorea no puede hacer cambios en el terminal. Por otro lado, si se hace esto, el comando script no devuelve el control hasta que alguien se conecte.
ps: si solo quisieramos guardar las sesiones, sin monitorearlas, solo habría que hacer script -f <archivo de log>
A portarse bien ;)
viernes, 11 de marzo de 2011
Escapando caracteres especiales en Python [tip]
Supongamos que tenemos un texto como este:
def miniscape(s):
return str([s])[2:-2]
Resultado:
\nBla\nblablabla\\ /\nblabla\n
Y para darle la vuelta?
def miniunscape(s):
i = 0
while True:
try:
x = s.index("\\x", i)
if not((x > 0) and (s[x-1] == "\\")):
s = s[:x]+chr(int(s[x+2:x+4],16))+s[x+4:]
i = x + 1
except:
break
reptable = [("\\\\","\\"),("\\n","\n"),("\\'","'"),("\\a","\a"),
("\\b","\b"),("\\f","\f"),("\\r","\r"),("\\t","\t"),
("\\v","\v")]
for r in reptable:
i = 0
while True:
try:
x = s.index(r[0], i)
if not((x > 0) and (s[x-1] == "\\")):
s = s[:x]+r[1]+s[x+2:]
i = x + 1
except:
break
return s
En pastebin [ http://pastebin.com/5uvf3tBK ]
Y ya está, nos vemos
BlaY queremos representarlo todo en una línea sin perder información, como hacerlo?
blablabla\ /
blabla
def miniscape(s):
return str([s])[2:-2]
Resultado:
\nBla\nblablabla\\ /\nblabla\n
Y para darle la vuelta?
def miniunscape(s):
i = 0
while True:
try:
x = s.index("\\x", i)
if not((x > 0) and (s[x-1] == "\\")):
s = s[:x]+chr(int(s[x+2:x+4],16))+s[x+4:]
i = x + 1
except:
break
reptable = [("\\\\","\\"),("\\n","\n"),("\\'","'"),("\\a","\a"),
("\\b","\b"),("\\f","\f"),("\\r","\r"),("\\t","\t"),
("\\v","\v")]
for r in reptable:
i = 0
while True:
try:
x = s.index(r[0], i)
if not((x > 0) and (s[x-1] == "\\")):
s = s[:x]+r[1]+s[x+2:]
i = x + 1
except:
break
return s
En pastebin [ http://pastebin.com/5uvf3tBK ]
Y ya está, nos vemos
viernes, 18 de febrero de 2011
Como evitar que un hilo de pyGTK bloquee a los demás [ tip ]
Si alguien ha intentado programar un script que use pyGTK lanzándolo en un hilo aparte se habrá dado cuenta de que bloquea a todo el proceso, lo que es bastante molesto. La solución es hacer esto desde ese hilo antes de levantar la interfaz:
gtk.gdk.threads_init()
Hay más sobre hilos y pyGTK ( esto en concreto no ) en: http://unpythonic.blogspot.com/2007/08/using-threads-in-pygtk.html
Saludos
gtk.gdk.threads_init()
Hay más sobre hilos y pyGTK ( esto en concreto no ) en: http://unpythonic.blogspot.com/2007/08/using-threads-in-pygtk.html
Saludos
martes, 4 de enero de 2011
Acelerenado `route`, `netstat` y parecidos [tip]
Los comandos de red como `route`, `netstat`, e incluso programas como `nmap` tienen la constumbre de intentar convertir las IP's en nombres de red después de realizar su función principal. Por muy útil que sea a veces, en otros momentos es excesivamente pesado, por ejemplo si utilizamos:
netstat
Para descubrir las conexiones activas, después de obtenerlas intentará convertir las IP en nombres de red, y en muchos normales no resultará en nada útil (seguramente acabe mostrando las IP o nombres genéricos).
Estos mismos comandos suelen aceptar el flag -n que evita esa resolución, el cambio salta a la vista:
Hasta otra
netstat
Para descubrir las conexiones activas, después de obtenerlas intentará convertir las IP en nombres de red, y en muchos normales no resultará en nada útil (seguramente acabe mostrando las IP o nombres genéricos).
Estos mismos comandos suelen aceptar el flag -n que evita esa resolución, el cambio salta a la vista:
Hasta otra
Suscribirse a:
Entradas (Atom)