Origen del término Informático “Bug”

March 2nd, 2010

Recientemente me preguntaron cual era el origen que se le llamara "bug" a las fallas en los programas informáticos, lo cual intentaré explicar a continuación:

Cuando las primeras computadoras fueron construidas alrededor de la decada de los 40s, la gente que trabajaba con estas encontraba insectos (bugs en inglés) en el hardware de las máquinas.

Pero no fue hasta en 1947 que los ingenieros que trabajaban en la computadora Mark II en la Universidad de Harvard encontraron una polilla atrapada en dicho equipo. Entonces pegaron el insecto a la bitácora y la etiquetaron "Primer caso de bug encontrado". Desde entonces los términos "bug" y "debug" se volvieron comunes en el lenguaje informático.

Y de prueba, unas imágenes de la bitácora del Mark II:

Primer caso de bug encontrado

Primer caso de bug encontrado

Cuando terminamos el proyecto?

February 17th, 2010

Una ingeniosa respuesta a esta pregunta frecuente hacia los informáticos:

Convirtiendo fecha Unix a fecha regular

February 4th, 2010

Algunos logs de ciertos servicios solamente proveen fecha Unix, lo cual hace un poco difícil hacerse la idea de que fecha/hora exactamente se trata.

Pero la conversión en la consola es sumamente sencilla:

Convirtiendo fecha Unix a fecha regular:

$ date -d @1265312185

Convirtiendo una fecha específica a fecha Unix:

$ date --date "Thu Feb  4 13:36:25 CST 2010" +%s

Convirtiendo fecha actual a fecha unix:

$ date +%s

Script rápido para ver uso de memoria por programa

January 29th, 2010

Hace un buen tiempo alguien me mostró un mini script con el cual se visualiza el uso de memoria en un equipo con GNU/Linux , el cual es el siguiente:

$ ps aux  | awk '{print $6" "$11,$12,$13,$14}' | egrep -v "0.*\[.*\]" | awk '{print $1/1024" Mb --> "$2,$3,$4,$5}' | sort -g

Cuya salida es parecida a la siguiente:
....
6.39062 Mb --> gnome-screensaver
6.85547 Mb --> /usr/libexec/vino-server --sm-disable
7.22656 Mb --> /usr/libexec/multiload-applet-2 --oaf-activate-iid=OAFIID:GNOME_MultiLoadApplet_Factory --oaf-ior-fd=18
7.27344 Mb --> /usr/libexec/gnome-settings-daemon
7.98438 Mb --> C:\windows\system32\explorer.exe /desktop
8.35547 Mb --> /usr/libexec/gnome-volume-manager --sm-disable
10.8438 Mb --> metacity
11.1094 Mb --> c:\Archivos de programa\Alcatel\A4980\Alcatel 4980\a4980.exe
14.7305 Mb --> vinagre
20.1914 Mb --> gnome-terminal
20.6758 Mb --> planner
21.2227 Mb --> c:\Archivos de programa\Alcatel\A4980\Alcatel 4980\a4980.exe
24.2578 Mb --> gnome-panel
25.5977 Mb --> nautilus
31.6602 Mb --> claws-mail
91.875 Mb --> gedit
109.188 Mb --> /usr/bin/X :0 -audit 0
144.84 Mb --> /usr/bin/firefox

Por cierto no recuerdo quien fue el autor original de dicho script, y si lo conocen haganmelo saber para darle crédito :D

Curiosa imitación de Windows 3.11

January 24th, 2010

Yo comencé a utilizar computadoras  con el añejo Windows 3.1x, y recuerdo que a pesar de todo, era muy estable como sistema operativo.

Pues bien, resulta que encontré por ahí un link con una imitación de Windows 3.11 el cual ha utilizado JavaScript, XHTML y Ajax y me sorprende el hecho de los grandes pasos que ha dado la informática desde los inicios de los 90s.

Y bueno, el sitio en cuestión es http://www.michaelv.org/ . Es obvio que no imita completamente el comportamiento de Windows 3.11 , pero al utilizar la "interfaz" da la sensación de estar en el viejo 3.11 .

Y me compré una cámara fotográfica

January 8th, 2010

Bueno, al fin compré una cámara y después de mucho preguntar me hice de una Canon Powershot SX120 IS , la cual es suficiente para un novato en el mundo de la fotografía como yo :D .

Canon SX120 IS

Para ser sincero, realmente desconozco el tema de las fotografías así que si alguien tiene alguna guía puntual para este mundo fotográfico, se lo agradecería mucho.

Además cree una cuenta de flickr, donde espero poner fotos de vez en cuando, he aquí una foto:

December 23rd, 2009

Seguramente muchos se sentirán identificados...howfanboysseeoperatingsystems...aunque la verdad, no deja de ser gracioso

Activando soporte Oracle Instant Client + PHP5 en Debian Linux

November 27th, 2009

Para conectarse a una base de datos Oracle con PHP 5, se puede hacer a través del "Oracle Instant Client" y el modulo oci8 de pear.

Primero se debe descargar los paquetes "Basic" y "SDK" desde http://www.oracle.com/technology/tech/oci/instantclient/instantclient.html. En mi caso, los archivos fueron

  • instantclient-basic-linux32-10.2.0.3-20061115.zip
  • instantclient-sdk-linux32-10.2.0.3-20061115.zip

Creamos directorios y descomprimimos

# mkdir -p /opt/oracle/instantclient
# cd /opt/oracle/instantclient
# unzip instantclient-basic-linux32-10.2.0.3-20061115.zip
# unzip instantclient-sdk-linux32-10.2.0.3-20061115.zip

Agregamos las librerías de oracle a las librerías del sistema

# echo /opt/oracle/instantclient >> /etc/ld.so.conf
# ldconfig

Creamos los vínculos simbólicos en caso de que el comando anterior no lo haya hecho:

# cd instantclient_10_2
# ln -s libclntsh.so.10.1 libclntsh.so
# ln -s libocci.so.10.1 libocci.so

Instalamos paquetes necesarios para la configuración del módulo oci8, entre ellos Pear

# apt-get install php-pear php5-dev build-essential

En teoría el comando pecl install oci8 debería de funcionar, pero aparentemente no puede trabajar con las librerías de Oracle Instanclient, así que procedemos a ejecutar los pasos manualmente

# mkdir -p /usr/local/src
# cd /usr/local/src
# pecl download oci8
# tar xfz oci8-1.3.5.tgz
# cd oci8-1.3.5
# phpize
# ./configure --with-oci8=shared,instantclient,/opt/oracle/instantclient/instantclient_10_2
# make
# make install

El nombre del archivo oci8-1.3.5.tgz cambiará dependiendo de nuevas versiones

Luego activamos el módulo oci8 en el archivo php.ini (/etc/php5/apache2/php.ini and /etc/php5/cli/php.ini), con la siguiente línea:

extension=oci8.so

Este paso tarde o temprano tendrá que ejecutarse, asi que mejor de una vez configuramos el archivo  tnsnames.ora

#  mkdir -p /opt/oracle/instantclient/instantclient_10_2/network/admin

Editamos el tnsnames.ora de acuerdo a nuestras necesidades.

# vi /opt/oracle/instantclient/instantclient_10_2/network/admin/tnsnames.ora

Ahora se procede a reiniciar Apache y listo :) , podemos auxiliarnos de phpinfo() para comprobar que el módulo oci8 está cargado.

Desactivando el “beep” o “pitido” de la consola

November 23rd, 2009

Algunas distribuciones Linux traen activado por defecto el "pitido" de la consola el cual despu és de un tiempo se hace un poco molesto.

La solución es sencilla y consiste en agregar o descomentar la siguiente linea del archivo /etc/inputrc

set bell-style none

Detalle de la instalación de snmpd en Debian

November 14th, 2009

La instalación y configuración del servicio de snmp es de lo más sencillo, pero en mi caso personal se complicó más de la cuenta en un servidor Debian.

El caso era que no funcionaba snmpwalk desde ningún otro host que no fuera el propio servidor, para lo cual revisé y modifiqué numerosas veces /etc/snmp/snmpd.conf , además de hacer múltiples pruebas para ver si había problemas con el tráfico UDP.

La solución vino del lugar más inesperado, en específico del archivo /etc/default/snmpd el cual contiene la siguiente línea:

SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid 127.0.0.1'

Ese 127.0.0.1 hace que el servicio solamente funcione en localhost , ignorando cualquier directiva agentaddress que pudiera estar en /etc/snmp/snmpd.conf .

Como se puede sospechar, la solución es un

# sed -i -e 's/127.0.0.1//g' /etc/default/snmpd

Lo que me llama la atención es la posible intención de la persona que mantiene este paquete,  al hacer un cambio de este tipo sin ninguna notificación al momento de instalar snmpd.

Será que no estoy acostumbrado al modo Debian de hacer las cosas?