2/02/2009
Hay varios proyectos -en linux siempre puedes escoger el sabor que mas te guste- para visualizar archivos CHM (Microsoft Compiled HTML Help). No me gusta nada el formato pero cuando no tengo de otra utilizo GnoCHM para verlos. Es bastante simple en lo que hace y lo hace bien.

Como siempre, si utilizas Debian / Ubuntu, se encuentra en los repositorios.
sudo apt-get install gnochm
30/01/2009
El checar varias veces antes de borrar datos con una consulta SQL es una de esas cosas que uno siempre sabe que es «lo correcto», pero en realidad nunca lo toma suficientemente en serio hasta que te pasa algo grave.
Puede parecer tonto, pero el simple hecho de escribir la condición de la consulta primero, o comenzar con un select comentando el delete, puede ahorrarte muchos dolores de cabeza.
1
2
3
4
| SELECT *
--delete
FROM tabla
WHERE xxx |
Nunca subestimes tu poder de distracción cuando tienes prisa.
24/01/2009
El comando «lsb_release» nos provee información de la distribución que estamos usando. Podemos pedirle toda la información de una vez con el parámetro «a».

Como dato cultural, si te preguntas ¿a que viene esto de LSB? es por un proyecto de la Fundación Linux llamado «Linux Standard Base» que busca estandarizar la estructura usada para el software en sistemas operativos Linux.
Es una de las propuestas que ayuda a que las diferentes distribuciones sean mas compatibles entre ellas.
21/01/2009
Casi cualquier tarjeta madre moderna trae bastantes sensores para monitorear el estado de tus componentes. En Linux puedes hacer uso de lm-sensors para sacar esa información, se encuentra en los repositorios de Ubuntu.
sudo apt-get install lm-sensors
sudo sensors-detect
Al correr «sensors-detect», tratará de reconocer los sensores que tiene habilitados tu PC, sino estas seguro de las preguntas es seguro responder a todo con las opciones de defecto.
Si ha detectado correctamente y ya haz cargado los módulos que te indico, entonces ya notaras que corriendo el comando «sensors», te devuelve información acerca de tus componentes.
Hay varias interfaces de usuario para KDE y Gnome que te sirven para ver esta información de una manera mas sencilla. A mi me gusta utilizar el applet para Gnome.
sudo apt-get install libsensors3 sensors-applet
Después de instalarlo, lo puedes agregar como siempre haciendo clic derecho sobre un panel: «Add To Panel» -> «Hardware Sensors Monitors»
Esto te mostrara un lindo applet, como este donde mi PC se esta tostando y el ventilador haciendo su ruido de turbina.

Es capaz de mostrar voltajes de la tarjeta madre, revoluciones por minuto de los ventiladores y temperatura del CPU y GPU.
30/12/2008
En términos de programación, se le llama «número mágico» a la mala practica de utilizar números directamente en el código. Esto si bien no tiene ninguna consecuencia en el desempeño del código, si tiene malas consecuencias en su mantenimiento.
Citando el ejemplo de la wikipedia en pseudocodigo:
for i from 1 to 52
j := i + randomInt(53 - i) - 1
a.swapEntries(i, j)
Vemos que esto no nos dice absolutamente nada, el hecho de utilizar 52 y 53 en el código hara que solamente el autor lo entienda.
constant int deckSize := 52
for i from 1 to deckSize
j := i + randomInt(deckSize + 1 - i) - 1
a.swapEntries(i, j)
En cambio al contener el número estatico en una variable, fácilmente nos damos cuenta que se trata de un juego de cartas por el simple nombre de la variable, donde 52 es el número total de ellas.
Evita esta practica como si se tratara de la peste.
Enlace | Magic number
17/10/2008
Todos sabemos que no debemos apoyar el uso de formatos impuestos por empresas privativas como Microsoft y su Office 2007, el niño dios llora cuando lo hacemos. Pero para todos aquellos que no vivimos en el mundo mágico de Richard M. Stallman esto se nos ofrecerá alguna que otra vez.

Hay varios formas de convertir estos archivos con el OdfConverter de Novell. Pero lo que voy a explicar aquí es como relacionarlos con OpenOffice para abrirlos directamente ahí. Es para Ubuntu pero fácil lo adaptas a otra distribución.
Descomprime este archivo y copia 3 de sus contenidos:
- sudo cp OdfConverter /usr/lib/openoffice/program/
- sudo cp MOOXFilter_cpp.xcu /usr/lib/openoffice/share/registry/modules/org/openoffice/TypeDetection/Filter/
- sudo cp MOOXTypeDetection.xcu /usr/lib/openoffice/share/registry/modules/org/openoffice/TypeDetection/Types/
Voilà!
Vía | Mypapit
11/10/2008
Ignoro si pasaba en versiones anteriores, pero Firefox 3 tiene una protección contra el cross site scripting que te impide cargar datos en JSON desde otro dominio. La “solución” común es hacer la petición con un lenguaje del lado del servidor (como PHP) y enseguida pasarle los datos a javascript (lo cual apesta).
jQuery tiene una forma de solucionar esto también, ajustando el parametro “dataType” con el valor “jsonp” o pasando directamente un callback para jsonp en la url.
Justo de esta forma:
“myurl?callback=?”
Mas información en docs.jquery.com
28/09/2008
Escenario:
- Tienes una descarga que viene como un rar en muchas partes.
- Ese rar te pide un password. Pero solo hasta después de que intento descomprimir el archivo
Si utilizas Gnome y por lo tanto File Roller, el que te pida un password es un error incorrecto, es muy probable que en realidad hubo un fallo en el chequeo de CRC (comprobación de integridad de datos).
Solución:
Utiliza unrar en la línea de comandos con la bandera -ierr. Te dirá exactamente que parte es defectuosa y así solo tendrás que descargar esa de nuevo.

11/07/2008
Tip rapidísimo de postfix.
Para mostrar que emails están en cola, osea, aun no se han enviado:
Para borrar un email de la cola:
Para borrar todos esos emails de la cola:
5/06/2008
Una propiedad de Subversion que viene bien cuando tienes muchos archivos ajenos a tu repositorio mezclados con tu código, es el svn:ignore.
Al hacer un svn status en lugar de tener un resultado con un montón de archivos inservibles ..
$ svn status calc
M calc/button.c
? calc/calculator
? calc/data.c
? calc/debug_log
? calc/debug_log.1
? calc/debug_log.2.gz
? calc/debug_log.3.gz
.. puedes tener un resultado con solo los archivos que te interesan filtrando los indeseados, solo tenemos que agregar la propiedad ignore al directorio calc ..
svn propedit svn:ignore calc
.. esto te abrirá un editor donde agregas un patrón (ojo, no es una expresión regular) que en nuestro ejemplo ignorara a todo menos a archivo data.c
Y listo, ahora el resultado de svn status solo es lo que nos importa.
$ svn status
M calc
M calc/button.c
? calc/data.c
Enlace | SVN Book