Introducción a NetKit( II ): creando redes

Introducción_a_Netkit(I):Instalación
Introducción_a_NetKit(_III
):switches_y_enrutado
Introducción_a_NetKit
(IV):_Un_puente_a_Internet

Lo dicho es hecho, y a lo hecho...  seguimos con la segunda parte de la introducción a NetKit, ahora veremos como crear y configurar laboratorios pequeños ( sin routers, que es lo mismo pero hay que enrutar ), las conexiones hacia internet se demorarán probablemente hasta el fin de semana ya que se necesitan permisos de root en el host :P .

Nota: Recordad que las variables de entorno PATH y NETKIT_HOME tienen que estar como se especifica en la primera parte, la del man es opcional.

Por comodidad supondremos que tenemos un directorio solamente para esto ( mkdir ~/netkit ), $HOME/netkit/, desde ahí haremos y desharemos.

Por ahora nos limitaremos a un montaje mínimo, vamos a crear un laboratorio con dos máquinas ( m1 y m2 ) conectadas a un hub ( lo que aquí llaman un dominio de colisión ).

Arkanoid con Pygame

Este juego lo había escrito para un concurso de programación hace varios meses, pero no conseguí que las colisiones funcionaran bien, ahora que ya he conseguido arreglarlo minimamente y he añadido un par de cambios, este es el resultado:  

Aquí [ game_ark.zip ] está el código, solo hay que ejecutar pyng.py

No espereis gran cosa, fue sobretodo un acercamiento a la programación de juegos, pero tenía ganas de verlo funcionar :P .

Hasta otra

PyIC ( Librería IRC para python ) 0.2

Pues eso, habemus nueva versión de PyIC ( una librería para clientes IRC ), ya está subida en GitHub [ https://github.com/kenkeiras/PyIC ]

Se puede ver como quedan las funciones en el README, pero los cambios básicamente son estos:

  • Lee el 'MOTD' automáticamente, se puede recuperar con irc.get_motd( ).
  • irc.get_users( ) devuelve la lista de usuarios, no hace falta leerlos a mano.
  • Lo mismo para irc.get_channels( ), que devuelve un array de tuplas( 'canal', 'número de usuarios', 'tema' ).
  • irc.get_topic( ) lo mismo, devuelve una string con el tema.
  • Y para no variar, lo mismo para irc.whois( ) y irc.whowas( ) , que devuelven un diccionario como este: { 'server_info': Información del servidor 'idle': 'seconds idle, signon time' 'real_name': Nombre real del usuario 'channels': Array de canales 'nick': Nick del usuario 'host': Dirección del host 'user': Nombre del usuario 'time': Tiempo conectado 'server': Server donde está conectado }

Enfín, por ejemplo:

!/usr/bin/env python

--

Nueva versión de GUIml, añadido Tktinter

Pues eso, que ya está listo el soporte para Tkinter en GUIml:

Desluce un poco al lado de los otros,¿verdad? 

Solo resaltar una cosa, da "X Window System error" cuando las ventanas de "About" no se cierran antes que el programa principal ( no pongais about's y todos contentos ), esto se arreglará cuando sepa que lo provoca.

Se puede descargar desde aquí: guiml02.zip

ps: está en camino una batería de nuevas versiones, stay tuned

Hasta pronto.

Disionario morrasense en fortunes [ desvarío ]

Bue, hoy vamos a dejar de hablar de programación y si me apuras vamos a hacer un cambio temporal de público objetivo, que no creo que nadie de la 5ª provincia lea esto :P así que...

Presentamos la fortune del "Disionario_da_revolusionaria_academia_morrasense_da lingua:morrasense-_jodechincho". 

El archivos es este: disionario ( dadle a "download" ) Para instalarlo hay que seguir estos pasos:

1.- Lo descargamos y guardamos como "disionario"

-- Esto se hace desde el terminal, se puede abrir desde Accesorios>Terminal --

2.- Usamos "sudo apt-get install fortunes" para instalar el programa que las muestra 3.- La convertimos a la forma que necesitamos con "strfile disionario" 4.- Los copiamos a la carpeta del programa "sudo cp disionario* /usr/share/ games/fortunes/" 5.- Hacemos que las pueda leer cualquiera "sudo chmod +r/usr/share/games/ fortunes/disionario"

Añadiendo el Wiimote a los scripts de PyGame

Pues eso, veamos como podemos hacer para añadir de forma fácil la posibilidad de usar el Wiimote en los scripts que usan PyGame modificando mínimamente el código.

La idea es muy simple, el sistema de eventos de PyGame permite añadir eventos desde fuera, mezclando eso con el sistema de callbacks de cwiid ( la librería para manejar el Wiimote ) podemos hacer como si se pulsasen teclas del teclado desde el Wiimote, los eventos se pueden crear así:

ev = pygame.event.Event( , { "key": } )

Y después solo hay que añadirlos con:

pygame.event.post( ev )

Entonces el script quedaría algo como esto [ wii4pygame.py ], solo hay que hacer bind_wiimote(), opcionalmente mandando el número del led a activar ( 1 por defecto ), por ejemplo:

import wii4pygame

print "Pulsa [1] y [2]"

wmote = wii4pygame.bind_wiimote( ) # Salvar el wiimote del recolector de basura

Y ya se puede usar el wiimote, pygame capturará los eventos

for event in pygame.event.get():

...

Controlando el reproductor Totem desde el Wiimote

Al principio la idea no era exactamente esa, de hecho era sobre rhythmbox... pero empecemos desde el principio.

Hablando con un colega sobre nosequé salió la idea de controlar el Rhythmbox ( reproductor de música de gnome bastante usado ). Al volver sobre la idea días ¿ semanas ? más tarde, leyendo la documentación sobre como hacer un plugin llegue a esta web: http://redjunasun.blogspot.com/2010/11/wiimote-for- controlling-rhythmbox.html a ver... compila perfectamente con "gcc archivo.c - o loquesea -lcwiid" y funciona bien.

Y no es un plugin, hmmm... parece ser que lo que usa para controlarlo es el DBus y uno pensando que solo servía para cosas de bajo nivel, mola controlar el reproductor así, enfin, eso ya está hecho, habrá que buscar otra cosa, probemos con el Totem.

Montando un sistema de descargas oculto ( 2 ): cifrando y pensando a lo grande

[ Montando_un_sistema_de_descargas_oculto_(1):_las_bases ]

Seguimos avanzando, está claro que aunque los datos se ocultan dentro de una imágen, si tiras de esteganografía para esto, dejar los datos simplement así es casi como que vayan en *, si alguien busca datos ocultos en una imágen LSB es lo primero que se probaría, hay  que reforzarlo con un cifrado, con un simple ARC4 con una clave segura y suficiente padding basta para darle en los morros a los cotillas y para desalentar a algun bot que analice la red en busca de algo sospechoso, este_cifrado_ya_se_explico_anteriormente, así que vamos con lo siguiente.

Cambiando seriesyonkis por Twitter

Después de ver cosas como este_post_en_Freesoftwareando uno no puede menos que intentar estirar un poco más la goma, si ellos consiguieron subir tantos enlaces a twitter, aquí presento un programa que permite acceder a ellos directamente... vaaale, solo una excusa para probar el twitter4j.

Por partes, si quieres compilar tu mismo el programa, vas a necesitar el mentado twitter4j, aquí ya se explicó como hacerlo ( y sin compilarlo tampoco estoy seguro que se pueda prescindir de el, así que va también en el paquete ) . El programa se puede descargar aquí [ twlinks.zip ] y estas son las fuentes [ TwLinks_src.zip ] Para ejecutarlo hay que descomprimirlo y ejecutar el jar.

El funcionamiento del programa no tiene ningún misterio, introduce los términos de búsqueda en la entrada de texto ( el hashtag #enlazareslegal se añade por defecto ) y pulsa buscar:

Esto mostará la lista de resultados ( limitada a los 10 primeros, creo )

Instalando twitter4j en Gnu/Linux

Twitter4j es un envoltorio (wrapper) del API de twitter para Java, veamos como instalarlo rápidamente:

Lo primero es instalar maven, esto se puede hacer con

sudo apt-get install maven2

Descargamos la última versión desde Twitter4j_-_GitHub

Ahora hay que descomprimirlo y ejecutar el package.sh

bash package.sh

Y por último copiar los .jar que se generaron en el directorio "twitter4j- core/target/" al directorio de librerías de java, en mi caso ( openjdk-6 ) sería:

sudo cp *.jar  /usr/lib/jvm/java-6-openjdk/jre/lib/ext/

Y dar permisos de lectura ( no vaya a ser )

sudo chmod +r /usr/lib/jvm/java-6-openjdk/jre/lib/ext/twitter4j*.jar

Ya podemos usar esta librería tan completa en nuestro código.

Newer posts Older posts