viernes, 15 de marzo de 2013

[Solution] Removing the Server-Tag from your homemade python's web server

( applies to BasicHTTPServer / SimpleHTTPServer / CGIHTTPServer )
Sometimes when you're playing to be a ninja in python and you got the crazy and sticky idea of build your own web server just for pass the time ;-). You may find some tricky things in the fly, things that maybe you would like to change like the “Server-tag” of your homemade python's web server :-) (that in my case says that is “Server: SimpleHTTP/0.6 Python/2.7.3”) so if you're stuck with that, here i pasted my python's script and leave my solution, i hope and it could be useful to you. :)
#!/usr/bin/env python

import SocketServer
from SimpleHTTPServer import SimpleHTTPRequestHandler

class http_handler(SimpleHTTPRequestHandler):
    def send_response(self, code, message=None):
        """\
        this is a copy-and-pase of the function send_response method in
        '/usr/lib/python2.7/BaseHTTPServer.py' file.
        in the code below i just edited the line
        "self.send_header('Server', self.version_string())"
        for my own to remove the Server-Tag in the Header. ;-)
        """
        self.log_request(code)
        if message is None:
            if code in self.responses:
                message = self.responses[code][0]
            else:
                message = ''
        if self.request_version != 'HTTP/0.9':
            self.wfile.write("%s %d %s\r\n" %
                                (self.protocol_version, code, message))
            # print (self.protocol_version, code, message)
        self.send_header('Server', "jimmy's python web server") # <= this line was edited 'cause i didn't
                                                                #    like the default Server-Tag in the Header
        self.send_header('Date', self.date_time_string())

server_addr = ('',8000)
httpd = SocketServer.TCPServer(server_addr, http_handler)
httpd.serve_forever()
My solution:
you must to override the send_response method (i copied it and pasted it all that code from it sources in /usr/lib/python2.7/BaseHTTPServer.py, so don't be scary ;) ) and overrode this line
self.send_header('Server', self.version_string())
with my own putting attention to the syntax. so This is my new line
self.send_header('Server', "jimmy's python web server")
if you have a linux distro, you can use the curl command to verify the changes when your server been running with this command in your linux terminal:
curl -v localhost:8000
and that's it!, hope to help. Feel free to left commentaries, doubts or corrections :)
see ya'!

[Solution] “socket.error: Address already in use” in python

yesterday in the evening i was writing a simple web server in python (2.7) and i got a socket error when i tried restart my “simple web server” so i digged a lot and few time later i found the answer, so here leave my python's script to fix that error.
#!/usr/bin/env python

import SocketServer
from SimpleHTTPServer import SimpleHTTPRequestHandler

class http_handler(SimpleHTTPRequestHandler):
    pass

class TCPServer(SocketServer.TCPServer):
    """
    this is a variable that may be overridden by derived classes or
    instances
    i found it at '/usr/lib/python2.7/SocketServer.py'
    """
    allow_reuse_address = True

server_addr = ('127.0.0.1',8000)
httpd = TCPServer(server_addr, http_handler)
print "listening on: %s:%d" % (server_addr[0], server_addr[1])
httpd.serve_forever()
and here is the explanation:
some forums says that you have to set the variable “allow_reuse_address” hosted in the TCPServer class to “True” with a magical
“myTCPServerInstance.allow_reuse_address  = True”
Note: that it comes from the very base class socket, where that variable it's a synonym of “socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR, True)” to set the socket address in reuse mode.
But it doesn't work! as easy like they says, so digging a few in the python's help (SocketServer's help) i watched that you must to override the variable “allow_reuse_address “ hosted in the TCPServer class with a value of True because by default it's False so here is the code that i overrode:
class TCPServer(SocketServer.TCPServer):
    """
    this is a variable that may be overridden by derived classes or
    instances
    i found this at '/usr/lib/python2.7/SocketServer.py'
    """
    allow_reuse_address = True
and that's it! to run the script you should use:
python webserver.py
in your terminal

lunes, 30 de julio de 2012

Mi gestor de ventanas (xfce) en xubuntu 12.04 recién instalado no reconoce los temas xfwm4!!! [SOLUCIONADO]

Solución a problemas detectados después de instalar xubuntu 12.04 (Parte 2)

Hola que tal como comente en el post pasado “recientemente instale en mi portátil (Gateway NV57H26u, IntelCore i5) xubuntu por la sencilla razón de evitar utilizar el gestor de ventanas unity o Gnome3 (no entrare en detalles que son obvios sobre el porque de esta decisión ;-) )“.
Este problema se presento al querer cambiar la apariencia de mi gestor de ventanas (por defecto xubuntu maneja xfce) y el tema que este maneja es “Greybird” que al parecer trabaja basado en Gtk2 lo cual me pareció muy bueno pero dada la escasez de estos, busqué nuevos temas en la red y por suerte me tope con este sitio http://www.xfce-look.org donde uno puede encontrar nuevos temas de escritorio, iconos, fonts entre otras cosas. Buscando en las FAQs del sitio web de xubuntu noté que brindan instrucciones muy sencillas para instalarlos en nuestro sistema ([1]Descomprimir el paquete tar.gz, [2] mover el contenido al directorio /usr/share/themes y listo! tema instalado). Una ves dicho y hecho esto algunos temas no funcionaron correctamente, ya que estos solamente están diseñados solamente para xfwm4.
Así que aquí escribo la solución para corregir esto y así poder mejorar la apariencia de nuestro escritorio.

Configuración volátil (para ver resultados inmediatos sin que estos afecten nuestro sistema al reiniciar nuestro equipo)
paso 1: remplazar nuestro gestor de ventanas gtk2 por xfwm4
$ sudo -b xfwm4 --replace   # activa el gestor de ventanas xfwm4
paso 2: instalar temas adicionales (opcional, solo para tener variedad ;-))
$ sudo aptitude install -y xfwm4-themes
paso 3: el nombre lo dice todo ;-)
$ sudo xfwm4-settings

Configuración permanente (para que los cambios tengan efecto incluso después de reiniciar el sistema ;-))
paso 1: editar nuestro archivo /etc/sudoers para que el comando /usr/bin/xfwm4 pueda ser ejecutado como root sin necesidad de ingresar una contraseña cada ves que se requiera.
$ sudo nano /etc/sudoers
# agregar la siguiente linea (hasta el final del archivo):
# sinatxis:  ALL=NOPASSWORD: [,]
tester ALL=PASSWORD: /usr/bin/xfwm4

paso 2: hacer que el comando “sudo xfwm4 --replace“ se ejecute al arrancar el entorno grafico, para esto seguimos la siguiente secuencia de clics (por asi decirlo):
Menú_De_Aplicaciones => Configuración => Administrador_De_Configuración => Sesión_e_Inicio => Auto-arranque_De_Aplicaciones => Añadir:
[Nombre]:           xfwm4
[Descripción]:    Gestor de ventanas xfwm4
[Comando]:         sudo xfwm4 --replace
[Aceptar]

Seguir los pasos 2 y 3 de la "configuración volátil" (mostrada justo arriba), reiniciar el sistema y listo, eso seria todo para que su configuracion siga activa aun despues de reiniciar :-)

Espero y esto te pueda servir. Gracias por visitar mi blog :-).

Problema al cambiar brillo en pantalla con tecla [Fn] en xubuntu/ubuntu 12.04 [SOLUCIONADO]

Solución a problemas detectados después de instalar xubuntu 12.04 (Parte 1)

Hola que tal, recientemente instale en mi portátil (Gateway NV57H26u, IntelCore i5) xubuntu por la sencilla razón de evitar utilizar el gestor de ventanas unity o Gnome3 (no entrare en detalles que son obvios sobre el porque de esta decisión ;-) ). El caso es que una ves instalado el sistema en mi portátil me encontré con la sorpresa de que el control de brillo con con la tecla [Fn] no funcionaba en lo absoluto, así que después de buscar un poco por la red y hacer algunas pruebas la soluciones que me funciono para este problema fue la siguiente:

paso 1: editar el archivo /etc/default/grub
$ sudo nano /etc/default/grub
paso 2: Buscar la linea con el siguiente contenido:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
y anexarle las siguientes opciones del kernel "acpi_backlight=vendor acpi_osi=Linux"
(quedando finalmente de la siguiente forma):
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_backlight=vendor acpi_osi=Linux"
para finalizar la edición del archivo solamente basta con grabar (Ctrl+x, presionar “Y” para confirmar grabación) y listo

paso 3: Finalmente hay que actualizar e grup con el comando update-grup
$ sudo update-grub
una ves concretados estos pasos es necesario reiniciar su equipo y listo el control de brillo la tecla [Fn] estará funcionando nuevamente.

Espero y esto te pueda servir. Gracias por visitar mi blog :-).

viernes, 4 de marzo de 2011

SOLUCIÓN A: mis audifonos no funcionan en UBUNTU 10.10!

Este fallo lo vengo teniendo en mi laptop gateway NV53 desde ya hace tiempo y por asares del destino ya sea por falta de tiempo, suerte etc. no había encontrado la solución pero creo que HOY FUE MI DIA DE SUERTE!, me tope con este foro foro y "sarmadzhiev" propuso esta solución la cual es la que al fin me sirvo para que mis audífonos funcionaran nuevamente.

Aqui adjunto la sugerencia de "sarmadzhiev" para quien le pueda servir. Saludos!

----------------------------------------------------------------------------------
-- Texto original
----------------------------------------------------------------------------------
Re: No Microphone Recording with Gateway NV53
This bug seems to be plague all hda SBx00 microphones
I saw a bug 480815 and the user gilianphilippo had a working solution. I have tweak it a little and tested it works on NV53

Add following
options snd_hda_intel model=laptop
options snd-hda-intel position_fix=1 enable=yes
to /etc/modprobe.d/alsa-base.conf

ans restart
----------------------------------------------------------------------------------

martes, 12 de octubre de 2010

SOLUCION para VMware Server 2.0.2 "vmnet0 is not running"!!! Ubuntu Desktop 10.04, kernel 2.6.32-25

Bueno esta solución debo admitir que me causo un dolor de cabeza pero después de mentarle a "la autora de sus días" a VMware Server 2.0.2 bajo kernel 2.6.32-25 utilizando Ubuntu 10.04, al fin idee esta forma de poder hacer funcionar la interfaz vmnet0 cuando nos aparece "vmnet0 is not running" sin necesidad de parchar el vmware-config.pl o reinstalar vmware y no se que tantas cosas mas postearon en algunos foros que la verdad gracias por las atenciones, que si bien no me dieron la respuesta correcta me hicieron comprender el comportamiento que vmware lleva a cabo de una forma no visible al ojo humano.
en fin ya fue mucho intro.

Espero mi humilde aporte pueda ayudarlos en sus días de insomnio y continuo aprendizaje ya que sin este par elementos que tendría de divertido esto? ;)

los pasos son los siguientes:

1ER EJEMPLO PUENTE CON TARJETA INALÁMBRICA
Paso 1.- crear un puente con la interfaz que deseamos utilizar

sudo /usr/bin/vmnet-bridge -n 2 -d /var/run/vmnet2-bridge-0.pid -i wlan0

Paso 2.- levantar la interfaz que se desea utilizar

sudo /usr/bin/vmnet-netifup -d /var/run/vmnet-netifup-vmnet2.pid /dev/vmnet2 vmnet2

NOTA1: En el Paso 1, por que utilice el valor 2 en el parámetro -n ?. Simple es el ID que le corresponde a mi interfaz bridge para la red inalámbrica que se crea al hacer la instalación de VMware Server,
NOTA2: en el Paso 2, utilizo /dev/vmnet2 ya que vmnet1 pertenece a HostOnly y vmnet8 a NAT

2DO EJEMPLO PUENTE CON TARJETA ETHERNET
Paso 1.- crear un puente con la interfaz que deseamos utilizar

sudo /usr/bin/vmnet-bridge -n 0 -d /var/run/vmnet0-bridge-0.pid -i eth0

Paso 2.- levantar la interfaz que se desea utilizar

sudo /usr/bin/vmnet-netifup -d /var/run/vmnet-netifup-vmnet0.pid /dev/vmnet0 vmnet0

Bien solo me queda decir que no es necesario reiniciar nada en VMware, solo aclarar que es necesario que las maquinas virtuales estén apagadas antes de llevar a cabo este procedimiento, y claro!!!! MUY IMPORTANTE!!! agradecer no cuesta nada deja un comentario siempre son bienvenidas las dudas, comentarios y/o sugerencias. :)

por el momento es todo y repito espero poder haber ayudado a alguien con este post (Hora de redacción 12:13AM jejejeje )

Saludos desde Hermosillo Sonora, México

martes, 5 de octubre de 2010

Conversión de Archivos VDI a VMDK (discos duros virtuales de VirtualBox a VMware)

Los comandos utilizados para este procedimiento serian los siguientes:

VBoxManage internalcommands converttoraw <src_file.vdi> <dst_file.raw>
qemu-img convert -O vmdk <dst_file.raw> <dst_file.vmdk>
rm <dst_file.raw>

un ejemplo seria:

VBoxManage internalcommands converttoraw mi_disco_vbox.vdi disco_temporal.raw
qemu-img convert -O vmdk disco_temporal.raw mi_disco_vmware.vmdk
rm disco_temporal.raw

un detalle curioso a observar es que el disco raw por lo general pesa 2 veces mas que los discos vmdk y vdi. No es que tenga mucha importancia para lo que queremos hacer pero si seria algo a tomar en cuenta si andamos cortos de espacio en disco duro y necesitamos convertir un archivo de 50GB!!! jajajaja.

En fin después de repetir este proceso un par de veces seguidas empieza a hacerse tedioso y tardado. Así que para agilizar el proceso desarrolle el siguiente script bash para automatizar la tarea.


#!/bin/bash
####################################################################3
#
# Conversor de archivos VDI a VMDK
#
# util para cambiar de formato discos duros de equipos virtuales de VirtualBox
# al formato vmdk que pertenece a vmware.
# 4/Oct/2010
# Ing. Jaime Alday C.
# email: jimm_x[at]hotmail.com
#

QEMU_IMG="/usr/bin/qemu-img"
VBOXMANAGE="/usr/bin/VBoxManage"

NOTE="not exists, to install usage:\n\t sudo apt-get -y install"
[ ! -f $QEMU_IMG ] && echo -e "\"qemu\" $NOTE qemu"
[ ! -f $VBOXMANAGE ] && echo -e "\"virtualbox\" $NOTE virtualbox-3.2"

if [ $# -ge 1 ] && [ -f $1 ]; then
FILE_NAME=`echo $1 | cut -d '.' -f 1`
echo 'Esto puede tomar unos minutos, porfavor espere.'
echo '* Convirtiendo archivo vdi a raw'
$VBOXMANAGE internalcommands converttoraw $1 $FILE_NAME.raw &&
echo '* Convirtiendo raw a vmdk' &&
$QEMU_IMG convert -O vmdk $FILE_NAME.raw $FILE_NAME.vmdk &&
echo done
else
echo "Usage: ./converter.sh <src_file.vdi>"
fi

I M P O R T A N T E
Para que este script funcione es necesario tener instalado el siguiente software
  • VirtualBox
  • qemu
y una observacion seria es que despues de hace la conversion de sus archivos desinstalen qemu ya que el kvm ocasiona conflictos con vmware, cosa que me llevo como 8 horas entenderlo. el error es que las máquinas virtuales arrancan y se traban en el 95%.
asi que ahora si es todo. DESINSTALEN QEMU DESPUES DE HACER ESTO!!!! ;)
De cualquier forma para no hacer otra entrada en el blog si a alguien se le presenta este problema puede tmb eliminar los modilos "kvm_intel" y "kvm" utilizando los comandos lsmod y rmmod
ej:

rmmod kvm_intell
rmmod kvm
y listo veras que sin chistar rapidito cargaran las maquinas viturles :)

por el momento es todo, espero y esto te sea de ayuda. Saludos! :)
PD1: si tienes dudas comentarios o sugerencias con gusto responderé. Otra cosa: "Agradecer no cuesta nada ;)"
PD2: También pueden descargar el script desde el siguiente link:

Descargar script

Saludos! =)