Sigueme en Twitter

Archivo de artículos en la categoría "Tips"

Ir al inicio

¿Que es un número mágico?

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

1 Comentario

Como abrir OpenXML (docx) con OpenOffice

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.

Voilà

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

4 Comentarios

“Access to restricted URI denied” y jQuery

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

2 Comentarios

Errores CRC y File Roller

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.

Error CRC

1 Comentario

Como mostrar y vaciar la cola de postfix

11/07/2008

Tip rapidísimo de postfix.

Para mostrar que emails están en cola, osea, aun no se han enviado:

mailq

Para borrar un email de la cola:

postsuper -d queue_id

Para borrar todos esos emails de la cola:

postsuper -d ALL
2 Comentarios

Ignorando archivos en Subversion

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

calculator
debug_log*

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

Sin Comentarios

Escuchando en diferentes puertos con Lighttpd

1/04/2008

Tip del día.

La variable $SERVER['socket'] en Lighttpd es la onda, te permite poner a escuchar el servidor en otros puertos ademas del que la variable server.port especifica, en mi caso permitió poner a escuchar al servidor en diferentes puertos y dependiendo del puerto cambiar el directorio por default, pero obviamente dentro de su condicional puedes hacer lo que desees.

1
2
3
$SERVER["socket"] == ":81" {
    server.document-root = "/path/to/anything"
}

Ignoro si funciona con host virtuales, pero no esta de mas probar.

Sin Comentarios

Dolores de cabeza con los espacios blancos

1/04/2008

En CakePHP, una situación muy común es que se te vaya una linea en blanco después de que has cerrado los tags de PHP en prácticamente cualquier archivo que este incluido en el framework, ya sea un helper, view, controller, component.. lo que sea.

Normalmente esto no trae problemas, pero cuando necesitas que lo que imprimes en pantalla sea absolutamente lo primero, como las declaraciones de un feed XML o un header para imprimir una imagen, si que afecta y es un dolor de cabeza buscar de archivo por archivo donde esta el espacio en blanco si tu proyecto a crecido demasiado.

Por ahi en la lista de cake, alguien público una expresión regular con sed que recursivamente busca por cualquier archivo de PHP con lineas vacías al final y las elimina:

find -name “*.php” | xargs sed -i -e :a -e ‘/^\n*$/{$d;N;ba’ -e ‘}’

Recomendaría que solo la utilizaras si tu código esta en un repositorio, para que te des cuenta de cuales archivos a modificado y donde exactamente.

4 Comentarios

Epson Stylus CX5900 en Ubuntu

25/10/2007

Xsane

Este multifuncional tiene un problema tanto en Feisty (7.04) como en Gutsy Gibbon (7.10), la impresión no necesita de nada mas que conectar a la PC para que funcione, pero la función de scaning no ha sido arreglada y es un problema ya conocido y reportado.

Para hacerlo funcionar con Xsane tienes que hacer lo siguiente:

1. Instala el paquete libsane-extras
2. Agrega la siguiente línea en /etc/udev/rules.d/45-libsane.rules

# Epson CX-5900
SYSFS{idVendor}==”04b8″, SYSFS{idProduct}==”082e”, MODE=”664″, GROUP=”scanner”

3. Reinicia (o solo los servicios adecuados, no tengo idea cuales sean)
4. Agrega la siguiente línea a /etc/sane.d/epson.conf

usb 0×04b8 0×082e

Listo ya puedes usarlo con Xsane :) (Applications -> Graphics)

Si tienes un modelo ligeramente diferente, talvez funcione también para ti, solo sustituye los parametros idVendor y idProduct con los adecuados, puedes averiguarlos instalando el paquete sane-utils, y utilizando el comando sane-find-scanner.

Sin Comentarios

Suavizando fuentes en Ubuntu

24/08/2007

Una de las tantas (y tontas) patentes que no deberían de ser patentes, es el suavizado de fuentes por parte de Apple. Es una de las grandes razones por las que OSX se ve tan bien.

Uno de los muchos tips que se encuentra uno en los foros de Ubuntu, y que hago en toda nueva instalación, es activar el suavizado de fuentes de la siguiente manera:

Editar/Crear el archivo ~/.fonts.conf con el siguiente contenido.

Salte e inicia sesión y notaras la diferencia.

Antes

Sin suavizar

Después

Suavizado

Es un pequeño detalle que para mi hace una gran diferencia, no puedo trabajar a gusto sino estoy cómodo con lo que veo en pantalla :D

10 Comentarios