Suspendiendo procesos
23 Octubre, 2007
No… no se trata de ponerles mala nota a los procesos, se trata de pausar momentáneamente la ejecución de un proceso y reanudarla más tarde.
Esto puede ser útil en varios casos:
- Uno de tus programas empieza a hacer “trashing” y necesitas realizar alguna acción urgente con el PC.
- Tienes una aplicación que lleva 5h realizando cálculos, pero que usa el 100% de tu CPU y necesitas pausarlo para realizar otras acciones.
- Estás compilando una aplicación y no quieres tener que parar el proceso para ponerte ha jugar (te ha entrado mono
Y cualquier otra situación que se te ocurra, la idea es siempre la misma, pausar un proceso que consuma muchos recursos para realizar otras tareas que necesitan menos tiempo, pero necesitan ejecutarse AHORA.
En linux podemos suspender un proceso mediante dos sencillos métodos.
Con kill:
kill -STOP PID
Por ejemplo:
#kill -STOP 39584
Para continuar con la ejecución:
kill -CONT 39584
Otro método es utilizando ctrl+z, si estás ejecutando el programa en la shell actual. Verás que aparece algo como:
[1]+ Stopped top
Para recuperarlo tan sólo tienes que ejecutar el comando “fg”.
Esto también es posible en sistemas windows, pero necesitaremos una aplicación adicional. Hay varias, pero una llamada de forma original como “Command Line Process Viewer/Killer/Suspender” está bastante bien y es gratuita.
Migrar de PHP4 a PHP5
25 Julio, 2007
Dado que ya tiene fecha para el funeral nuestro querido PHP4 me decidí a migrar el servidor a PHP5. La instalación se hizo en un par de minutos gracias a la colaboración de Debian y Aptitude. PHP5 viene con el soporte para MySQL desactivado así que había que activarlo en php.ini
Llegaba el momento de comprobar el resultado, todas las webs iban bien menos una (siempre tiene que haber alguien para joder la marrana), daba problemas con los Warnings. Según parece PHP4 viene con estos avisos desactivados mientras que PHP5 si los muestra. La solución era fácil, editar el php.ini.
Después de esto y algunos pequeños cambios más en el archivo de configuración (a gusto del consumidor) la migración ha sido un éxito, supongo que en parte porque casi todas las webs se basan en scripts precocinados y preparados para PHP5 aunque el único problema seria con los TAGS de PHP.
Error con php y magic.mime
9 Junio, 2007
Recientemente he actualizado mi distribución debian (unstable) y ahora al ejecutar cualquier script php siempre aparece el siguiente error:
PHP Warning: mime_magic: type search/400 \\input text/x-tex invalid in Unknown on line 0
PHP Warning: mime_magic: type search/400 \\section text/x-tex invalid in Unknown on line 0
PHP Warning: mime_magic: type search/400 \\setlength text/x-tex invalid in Unknown on line 0
PHP Warning: mime_magic: type search/400 \\documentstyle text/x-tex invalid in Unknown on line 0
PHP Warning: mime_magic: type search/400 \\chapter text/x-tex invalid in Unknown on line 0
PHP Warning: mime_magic: type search/400 \\documentclass text/x-tex invalid in Unknown on line 0
PHP Warning: mime_magic: type regex [Cc]onstant[[:space:]]+[Ss]torytext/x-inform invalid in Unknown on line 0
La solución es bien sencilla, hay que ir al fichero /usr/share/file/magic.mime y comentar las siguientes líneas (ponerle un # delante):
#0 search/400 \\input text/x-tex
#0 search/400 \\section text/x-tex
#0 search/400 \\setlength text/x-tex
#0 search/400 \\documentstyle text/x-tex
#0 search/400 \\chapter text/x-tex
#0 search/400 \\documentclass text/x-tex
Y esta:
#0 regex [Cc]onstant[[:space:]]+[Ss]tory text/x-inform
Una vez guardado el archivo ya no ocurrirá más.
Firebug: La evolución del desarrollo web
4 Junio, 2007
Si alguna vez has tenido que desarrollar alguna aplicación web con gran cantidad de código JavaScript seguro que te has encontrado con algún error. Seguramente te habrás dado cuenta de que en esos casos IE no es tu mejor aliado. Los mensajes de error que genera el IE son bastante malos en mi opinión, en algunos casos no acierta ni la línea que contiene el error.
Si en vez de IE pruebas suerte con firefox, almenos tienes una consola donde aparece un error mucho más detallado y al hacer doble click en él vas al código problemático directamente.
Pero aún así, esto se puede mejorar muchísimo, gracias a firebug, una extensión de firefox que permite ver errores de javascript detalladamente, ejecutar código al vuelo, ver todo el árbol DOM, añadir breakpoints, observar variables,ver las peticiones HTTP, incluso las de AJAX (esto es realmente útil) y hasta puedes ver cómo evoluciona el uso del ancho de banda que genera tu web al cargarse. También es de gran utilidad la herramienta “Inspect”, que te permite mediante el ratón seleccionar un área de la web y visualizar instantaneamente el código referente a ella. Otra característica a destacar es que puedes editar CSS al vuelo y se aplica instantaneamente en la web, ideal para hacer pruebas y dar espaciados, cambiar colores, tamaños, etc.
Te recomiendo que la pruebes, es totalmente libre y gratuita y te permitirá avanzar mucho más rápido en el desarrollo de tus páginas web.
Si no puedes desarrollar con firefox también puedes probar la versión especial de firebug para otros navegadores, incluido IE.
Diseñando diagramas con Dia
3 Junio, 2007
Recientemente he tenido la necesidad de dibujar algún que otro diagrama y para no entretenerme en buscar he utilizado el Photoshop (el recurso fácil). Pero hoy, con más tiempo, he preferido buscar otro programa más especializado en este tipo de gráficos.
De los que he probado el que más me ha gustado ha sido Dia (también para Windows). Las otras alternativas eran Tgif y xfig, que a pesar de que no las he probado de forma exhaustiva, me ha convencido más Dia. Sólo he contemplado programas libres y disponibles en el repositorio de Debian, pues quería utilizarlo en esta distribución, seguramente, en el ámbito del software privado debe haber muchas otras aplicaciones.
Dia me ha gustado porque es muy sencillo de usar y tiene una interfaz muy clara, te permite hacer diagramas simples con facilidad pero también es capaz de dibujar diagramas complejos y hasta tiene soporte para scripting en Python, lo que te permite crear gráficos avanzados con realtiva facilidad. Además, posee un gran repertorio de elementos especializados en varios campos, redes, UML, electrónica, etc.
En Debian sólo tienes que hacer:
# apt-get install dia
A continuación una captura del programa funcionando:
Forzar la tarjeta de red ethernet a 10Mbps
2 Junio, 2007
Las tarjetas de red suelen soportar varios modos, 10Mbps HD (Half Duplex), 10Mbps FD (Full Duplex), 100Mbps HD, 100Mbps FD, etc. Por defecto siempre utilizan el modo más alto que consiguen negociar con el enlace, que puede ser otro PC, un HUB o un Switch. Salvo que tengamos algún problema no necesitaremos forzar la tarjeta de red a alguno de estos modos, ella sola se ajustará al que más convenga.
En linux podemos forzar alguno de estos modos utilizando la herramienta ethtool o mii-tool. La primera, ethtool, permite muchísimas más opciones, pero para cambiar únicamente el modo de funcionamiento de la tarjeta prefiero mii-tool, que es mucho más sencilla, tiene menos opciones, pero es mucho más fácil de usar. Ni siquiera es necesario especificar el interfaz.
Para configurar la tarjeta de red en modo 10Mbps FD sólo tenemos que poner:
# mii-tool -A 10baseT-FD
Y automáticamente negociará con el enlace el modo de 10Mbps FD. También tenemos disponibles los demás modos: 100baseT4, 100baseTx-FD, 100baseTx-HD, 10baseT-FD, 10baseT-HD, 100baseTx y 10baseT.
Jugando a ser dioses (o medicos) con la PS3
28 Marzo, 2007
Yo siempre he pensando que las videoconsolas eran para matar marcianos pero ahora Sony le ha dado la vuelta. Los que posean una PS3 podrán dedicarse a jugar a médicos y curar enfermedades a modo de House.
¿Como es posible esto? Es fácil, solo hay que comprar el Kit Matasanos. Este esta compuesto por una motosierra oxidada, un bote de pegamento Loctite y muchos rollos de hilo junto con alguna aguja. ¡Ahora solo nos faltaba el paciente!
La otra posibilidad es apuntarse al proyecto Folding@Home
Todopoderosa Wikipedia dice:
Folding@home es un proyecto de computación distribuida diseñado para realizar simulaciones por ordenador de plegamiento de proteínas, principalmente utilizando la técnica de dinámica molecular. Fue iniciado el 1 de octubre de 2000 y está actualmente dirigido por el Grupo Pande, en el departamento de Química de la Universidad de Stanford, bajo la supervisión del profesor Vijay S. Pande. Folding@home es el segundo proyecto de computación distribuida más grande del mundo, solamente por detrás de SETI@home. El 8 de marzo de 2004, el proyecto genome@home concluyó y fue fusionado con folding@home.
Resulta que Sony ha lanzado un cliente para poder colaborar con la causa y ademas, debido a los super procesadores Cell de Taitanos Cores, Sony se esta llevando el gato al agua y esta superando con unas pocas consolas a miles de PC domésticos. Con solo un 10% de todos los equipos que están ayudando con esta noble causa la PS3 esta haciendo mas de la mitad de los cálculos.
Ya ya puestos a comentar deciros que podéis uniros al proyecto ya sea desde Windows, Linux, Mac… ¡Que no solo con PS3 se ayuda!

Los Bytes Mágicos
26 Enero, 2007
¿Cómo podemos distinguir un tipo de fichero de otro? Por ejemplo, un mp3 de un archivo de vídeo. Sí, ya sé, mirando la extensión, pero qué ocurre si borramos la extensión del nombre de archivo, ¿Cómo podemos saberlo entonces?
Sí, podemos abrir el archivo en un reproductor y ver qué pasa, pero, ¿Y si no tenemos ni idea de qué puede ser el archivo? no podemos ir probando con todos los programas que tengamos a ver si el fichero se abre.
Para solucionar esto existen los Magic Bytes (Bytes Mágicos), que son nada más y nada menos que una serie de bytes que nos permiten identificar inequívocamente un archivo. Por ejemplo un mp3 contendrá las cabeceras que todo fichero mp3 debe tener, lo mismo sucederá con un archivo mpeg o un fichero ejecutable.
Una utilidad muy interesante en linux es el comando “file” que nos permite identificar ficheros sin hacer caso a la extensión. Por ejemplo:
$ file unarchivo.zip
unarchivo.zip: Zip archive data, at least v2.0 to extract
Le cambiamos el nombre y sigue saliendo lo mismo:
$ mv unarchivo.zip unarchivo
$ file unarchivo
unarchivo: Zip archive data, at least v2.0 to extract
Si probamos con un archivo avi incluso nos dirá las propiedades de este:
$ file video.avi
video.avi: RIFF (little-endian) data, AVI, 640 x 480, 23.98 fps, video: XviD, audio: MPEG-1 Layer 3 (stereo, 48000 Hz)
¡Y hasta identifica ficheros de código!
$ file otroarchivo
otroarchivo: PHP script text
Escritorio remoto con VNC
24 Enero, 2007
Actualmente es bastante frecuente dejar un PC casero encendido las 24h, descargando cosas, haciendo de servidor http o incluso, para utilizarlo desde cualquier parte del mundo como si estuvieras en tu casa, gracias a VNC.
Hay básicamente dos formas de utilizar un escritorio remoto, de forma compartida (almenos en linux) o de forma dedicada. Es decir, podemos hacer que nuestra sesión de X (o de Windows) sea compartida y otros usuarios puedan conectar a ella o podemos iniciar un escritorio al que únicamente se podrá acceder via vnc (hasta dónde yo sé esto sólo es posible en linux).
Para el primer caso, si queremos compartir nuestro actual escritorio, podemos utilizar x11vnc (apt-get install x11vnc en linux). Iniciamos el entorno gráfico (el que sea, kde, gnome, xfce, fluxbox … ) y abrimos una consola, para escribir:
x11vnc -storepasswd
Nos preguntará por una contraseña y nos dirá si la queremos guardar, introduciremos una contraseña y diremos que sí a guardar. Por defecto la guardará en ~/.vnc/passwd así que usaremos ese archivo en el siguiente comando:
x11vnc -rfbauth ~/.vnc/passwd
¡Ya está! ¡Así de fácil! Tenemos el entorno X actual disponible para acceder desde cualquier PC conectado a internet (eso sí, procura tener mapeado el puerto 5900 en tu router). Ahora sólo necesitas el visor, que puedes encontrar en la web oficial de vnc o puedes instalarlo via tu sistema de paquetes favorito (en debian apt-get install xvncviewer).
Ahora sólo te queda ejecutar el xvncviewer e indicar la ip y el escritorio, que por defecto es el 0. Si el PC donde está compartido el escritorio tiene la ip 192.168.0.4 pues pondrás en el xvncviewer 192.168.0.4:0
Si lo que quieres es crear un nuevo entorno gráfico dedicado a vnc entonces tendrás que instalar vnc4server (apt-get install vnc4server) y hacer lo siguiente:
vncpasswd
vnc4server -depth 16 -geometry 1024×768
Con el parámetro depth indicas la profundiad de color y con geometry la resolución del nuevo escritorio. Al ejecutar este comando verás algo parecido a esto:
New ‘hostname:2 (usuario)’ desktop is hostname:2
El “:2″ es el número de escritorio, es lo que tendrás que utilizar cuando lances el xvncviewer y además, mapear el puerto 5900+2 en el router, es decir, el 5902.
Para cerrar un servidor vnc sólo tienes que hacer vnc4server -kill :2 (o el número que sea).
Gnope, el Instalador de PHP-GTK
17 Enero, 2007
¿Te imaginas poder bajar, instalar, organizar y por supuesto, ejecutar todas las aplicaciones desde un mismo gestor? ¿Te imaginas poder modificar el código fuente de tu aplicación favorita en un instante y volver a ejecutarla con facilidad? Y además de todo esto, ¿Que pueda funcionar en cualquier plataforma?
Aunque en realidad no es todo tan bonito, y el dicho gestor ya está disponible en las distribuciones de Linux (apt, synaptic, yum), algo que se acerca bastante a la idea inicial es Gnope.
Sí, con Gnope puedes bajar, instalar, organizar y lanzar aplicaciones hechas en PHP-GTK. Con Gnope también puedes modificar el código fuente de la aplicación que te bajes, puesto que es PHP, volver a ejecutar la aplicación modificada y disfrutar de los cambios. Entonces, ¿Qué es lo que falla en Gnope? Pues la calidad. Tanto del gestor de aplicaciones como de las aplicaciones disponibles. En el instalador aparacen fallos durante la instalación (en la consola que se abre, aunque no afectan a la instalación, según parece) y luego, las aplicaciones que hay disponibles, además de ser pocas, son de baja calidad/utilidad y por supuesto, el hecho de que son interpretadas hace que las aplicaciones sean mucho más lentas de lo habitual.
Eso sí, hay que tener en cuenta que Gnope tiene poco más de 1 año de vida y es posible que en un futuro empecemos a ver aplicaciones útiles y más depuradas.
Si sueles programar en PHP y te interesa realizar aplicaciones “de sobremesa” con tu lenguaje favorito te recomiendo que eches un vistazo a la web de Gnope y la de PHP-GTK.
