30.1.09

Los "Tags" en lanacion.com estan de adorno

No se que hacen! Creo que no hacen nada y son para agregarle un par de palabras a la nota. Deberian comportarse de otra manera. No entiendo. Quiero tocarlos y que me lleven a notas con los mismos tags!

23.1.09

Indentacion y Tab en vim

A pedido de rober, copio un pedazo de mi configuracion del vim en donde pongo que tanto los tab como los comandos para indentar en vim (que son '>' y '<') sean de cuatro espacios en vez de ocho. Editen su archivo vimrc (en su home ~/.vimrc o en /etc/vim/vimrc) y agreguen lo siguiente:
set softtabstop=4
set shiftwidth=4
set tabstop=4

19.1.09

4mil

La semana pasada mi bici cumplio sus 4000KM contados, asi que en un ataque de disipar toda la alegria y felicidad que me dio, les digo: hay que andar en bicicleta. Mas alla de que no contamine (sonora ni ambientalmente), sea saludable, un metodo de transporte rapido en las ciudades y seguro (al lado de los salvajes que manejan carruajes de mas de 300Kg generandores de calor) sino por que tambien es divertido. Ho! =D

Y como DeLa-arruga inaguro la bicisenda por la ciudad capital, queremos que Macri la recorra toda mientras la gente lo saluda. Tiene que tener un casco bien bala. Y retar a los policias que no les hacen multas a los incivilizados que se estaciona ahi.

Tendra que tomar sol o tiene un dispositivo que le calienta la sangre?

13.1.09

Dump de MySQL con Stored Procedures

Vengo guardando cositas que estuve usando/encontrando ultimamente. Me encontre en la necesidad de hacer un dump de una base de datos MySQL que tenia stored procedures, pero 'mysqldump' no lo hace por defecto asi que hay que pasar el parameto '-R' de la siguiente manera:

mysqldump -R -h host -u username -p my_db > my_db.sql

Siend 'host' el hostname o direccion IP de la base de datos, 'username' el nombre de usuario y 'my_db' el nombre de nuestra base de datos.

Mas informacion en 4.5.4. mysqldump — A Database Backup Program

7.1.09

Como encontrar los archivos mas grandes de un directorio en linux

Haciendo uso de tres comandos podemos saber cuales son los archivos que mas ocupan en el directorio y subdirectorios (recurse!) desde donde estamos parados. Tipeen en una terminal lo siguiente (si queren resultados rapidos asegurense de estar parados en un directorio que no tenga muchas cosas):

du | sort -rn | head

El primer comando ('du') lista (recursivamente) cuanto pesa cada archivo que esta en el directorio, en bytes. El segundo comando ('sort -rn') ordena este listado haciendo una comparacion numerica (-n) y ordena de mayor a menor (-r, reverse). El ultimo comando ('head', que viene a ser el gemelo malvado de 'tail') devuelve solo las primeras 10 lineas de la lista.

Podemos cantidad la cantidad de archivos que queremos ver utilizando el parametro '-n' de 'head' de la siguiente manera:

$ du | sort -rn | head -n 5
81416 .
34188 ./nuoveXT.2.2
21336 ./gnome
9104 ./gnome/scalable
6460 ./hicolor

Estoy reviviendo unos Drafts que tenia archivados por ahi y no se como llegaron a parar en donde sea que estaban. Proximamente: como formatear un salero.

24.12.08

Cicloturismo Express por Entre Rios

El ultimo fin de semana largo (que ya no puedo marcar en el calendario, oh! volatilidad!) incursione en tierras Entrerrianas en bici junto con Machunga. Salimos el viernes a la tardenoche desde Retiro y llegamos a Victoria con varias horas de atraso. A esas horas de atraso le sumamos horas de estar perdidos en Victoria interpretando mapas en calles oscuras llenas de peligros imaginarios y exaltacion (ambas cosas fueron aplacadas por un mini-shop de una estacion de servicio).

No quiero volcar un journal aca, solo una sintesis. Una sintesis que cuente como armamos la carpa en un camping municipal a las 6AM, o que diga que recorrimos Victoria todo el sabado (pasando por la Abadia Benedictina y el Ombusal), fuimos pedaleando para la Reserva Pre-Delta -y entramos a ella furtivos en la noche- y luego a Parana (en donde, entre otras cosas, descubrimos junto a Ciro la posta de la movida alien-benedictina despues de varios documentales sobre OVNIs y Chernobyl mas el conocimiento acumulado durante el viaje.

Dejo a continuacion alguns imagenes del viaje: http://picasaweb.google.com/cacopatane/TouringEntreRios

No conocia Entre Rios como lo conoci ese finde, me gusto mucho -sobre todo el tipo de paisaje de la reserva-. La unica advertencia que tengo para hacerles a los ciclistas es que las rutas de Entre Rios son un sube-y-baja gigante destructor rodeadas de hermosos paisajes sojeros.

12.11.08

Resaltar busquedas en vim

Para que queden resaltadas las coincidencias de patron de busqueda en vi tenemos que activar 'hlsearch' ya sea enviando el comando directamente a vim:

:set hlsearch

O agregando a nuestro ~/.vimrc (o /etc/vim/vimrc, para que funcione para todos los usuarios del sistema) la siguiente linea:

set hlsearch

Cuando busquemos, por ejemplo, el string Blog (escribiendo en modo normal del vim /Blog) nos va a mostrar lo siguiente:


Y vamos ser muy felices.

10.11.08

Convertir palabras a mayusculas y minusculas en vim

Un par de ejemplos practicos para convertir palabras/lineas a mayusculas/minusculas (uppercase/lowercase) en vim. Para convertir una palabra a mayusculas, nos paramos al principio de la palabra y escribimos:
gUw

En caso de querer convertir una palabra a minusculas:
guw

Supongamos que queremos convertir 5 palabras que estan en mayusculas a minusculas:
gu5w

Y a mayusculas:
gU5w

Por ultimo, si queremos convertir toda la linea a mayusculas:
gU$

Y a minusculas:
gu$

Hay mas informacion acerca de como convertir cosas a mayusculas y minusculas en la pagina del vim.

30.9.08

Ignorar archivos en GIT

Supongamos que estamos desarrollando una aplicacion en Python y queremos que el versionador GIT no nos muestre como "Untracked" los archivos con extension '.pyc' que se generan al ejecutar los archivos '.py'.

Parados en el raiz del repositorio de nuestro proyecto, editamos el archivos '.git/info/exclude' y despues de las lineas comentadas agragamos '*.pyc'.

# git-ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~
*.pyc

Con esto, cuando ejecutemos 'git status' para ver es estado del repositorio, los patrones de archivos definidos en '.git/info/exclude' van a ser ignorados. Otra manera de excluir/ignorar archivos es utilizando '.gitignore'. Consulten la pagina del manual de gitignore para mas informacion.

16.9.08

Escuchar Online

En la ultima semana estuve aprendiendo a usar Django, un framework web para Python. El sitio tiene unos scripts en Python que buscan referencias a archivos de audio, revisan los tags ID3 y siguiendo ciertos criterios los almacenan en la base de datos. La interface del usuario permite buscar temas de musica para escuchar y, en algunos casos, escuchar un CD entero de una banda (la funcionalidad que estaba buscando en un sitio que me habia gustado y le faltaba!). El desarrollo de la interface al usuario fue muy rapido (muy facil de integrar templates), el administrador que genera es util y la documentacion me fue llevando bien (pegue unos saltos en algunas partes que luego lamente!).

Ya hay una demo usable en http://escucharonline.homelinux.org/, de a poco estoy subiendole mas datos y correcciones. Y la eterna duda con el disenio.

Este fin de semana me voy de vacaciones asi que no voy a poder seguirlo mucho, seguro cuando vuelva voy a estar sediento de programar y kab00M: zombismo electronico.

3.9.08

Maximizar el MSN

Es tan pero tan de cyber usar el MSN maximizado. No lo hagan. Menosuno a etiqueta, resta tres puntos de gloria y menosdos a todas las tiradas de destreza (por exceso lipidico).

1.9.08

Horror ancestral javascriptoso microsoftero

Estoy modificando un site para un laburo y en el codigo me encuentro con esto:

<script language="JavaScript1.2" fptype="dynamicanimation" src="file:///C:/Archivos%20de%20programa/Microsoft%20Office/Office10/fpclass/animate.js">
</script>

JASHKAJFHVSDQWDPOCXZXMVCNALuhGHTTT!!!

Cabe aclarar que el site es muy viejo y hecho "a la antigua" con FrontPage (que debe ser el causante de esa linea que se ve tan mal).

29.7.08

Como reducir el tiempo de compilacion en Flex usando fcsh bajo linux

Hace muy poco comenze a ver Flex como una manera de agregar algunos chiches a Webs usando linux. Empece a hacer unos experimentos en mi maquina, luego lo pase a un servidor chico (Pentium 4 de 1.6GHz) que usamos para desarrollar y los tiempos de compilacion se fueron de 8 a 20 segundos.

Hoy estuve probando fcsh para achicar los tiempos de compilacion y funciona. Evitando cargar la JVM cada vez que compilamos y guardando informacion que le es util en memoria fsch nos ahorra preciado tiempo a hora de compilar desde la terminal. Despues de decir un par de "que bueno!" con bastante emocion, paso directamente a hacer una prueba y poner los resultados a continuacion.

Creamos un archivo mxml con un reducidisimo "Hola Mundo!" en nuestro directorio "bin" de Flex. Vamos a ponerle testfcsh.mxml:

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" width="300" height="300">
<mx:Panel title="Mi prueba">
<mx:Label text="Hooooooooooooooooooooooola!"/>
</mx:Panel>
</mx:Application>

Ahora lo compilamos usando "mxmlc" con la opcion '-benchmark', mi copia de Flex esta en mi home dentro de los directorios ~/dev/flex/ y, tanto el compilador como fcsh, se encuentran en el directorio 'bin' dentro del de Flex:
caco@square05 ~/dev/flex/bin $ ./mxmlc -benchmark=true testfcsh.mxml 
Loading configuration file /home/caco/dev/flex/frameworks/flex-config.xml
Initial setup: 327ms
Loaded 8 SWCs: 838ms
Files: 327 Time: 3893ms
Linking... 107ms
Optimizing... 409ms
SWF Encoding... 81ms
/home/caco/dev/flex/bin/testfcsh.swf (158538 bytes)
Total time: 5679ms
Peak memory usage: 52 MB (Heap: 28, Non-Heap: 24)

Vemos que en total tardo 5.6 segundos, ahora probemos con fcsh. Primero ejecutamos fcsh:
caco@square05 ~/dev/flex/bin $ ./fcsh                
Adobe Flex Compiler SHell (fcsh)
Version 3.0.0 build 477
Copyright (c) 2004-2007 Adobe Systems, Inc. All rights reserved.

(fcsh)

En el prompt (fcsh) vamos a escribir el mismo comando que usamos para compilar con el mxmlc:

(fcsh) mxmlc -benchmark=true testfcsh.mxml
fcsh: Assigned 1 as the compile target id
Loading configuration file /home/caco/dev/flex/frameworks/flex-config.xml
Initial setup: 324ms
Loaded 8 SWCs: 788ms
Files: 327 Time: 3649ms
Linking... 57ms
Optimizing... 399ms
SWF Encoding... 97ms
/home/caco/dev/flex/bin/testfcsh.swf (158537 bytes)
Total time: 5324ms
Peak memory usage: 54 MB (Heap: 30, Non-Heap: 24)

El tiempo de compilacion es casi igual pero ahora, cada vez que recompilemos, vamos a estar haciendo uso recursos que ya estan en memoria y veremos como acortan los tiempos de compilacion. Para compilar nuevamente la misma aplicacion podemos enviarle a fsch el comando "compile" utilizando el id "1" que se le asigno a nuestro testfcsh.mxml cuando enviamos el primer comando. Voy a cambiar el string "Hooooooola mundo!" que uso en el ejemplo (fcsh detecta si no cambio ningun archivo, y nosotros queremos recompilarlo) y compilamos:

(fcsh) compile 1
Loading configuration file /home/caco/dev/flex/frameworks/flex-config.xml
Initial setup: 12ms
Loaded 8 SWCs: 17ms
Recompile: /home/caco/dev/flex/bin/testfcsh.mxml
Reason: The source file or one of the included files has been updated.
Files changed: 1 Files affected: 0
Files: 327 Time: 423ms
Total time: 453ms
Peak memory usage: 58 MB (Heap: 34, Non-Heap: 24)
Linking... 12ms
Optimizing... 171ms
SWF Encoding... 64ms
/home/caco/dev/flex/bin/testfcsh.swf (158546 bytes)
Total time: 250ms
Peak memory usage: 52 MB (Heap: 28, Non-Heap: 24)

Lo hizo en menos de un segundo, unas siete veces mas rapido que con el primer metodo! Estas pruebas las hice en un Pentium 4 HT de 2.80GHz, hago a pedido las mismas pruebas en una maquina mas lenta pero no ahora.

Tener abierta la terminal fcsh me esta consumiendo aproximadamente 65MB de memoria. Cabe aclarar, tambien, que quienes usan Flex Builder ya hacen uso de fcsh. En caso de no tener el fcsh, pueden bajarlo de la pagina de Adobe y para mas informacion visiten la documentacion de fcsh.

22.7.08

Mensajeria Memorable (no tanto)

Dump pre-eliminacion de emisiones varias desde y hacia mi persona. Para que no se esfumen los momentos volatiles que se sostienen a rayos en miniatura:

(Nicko) Loco no me anda la placa wailer

(Nicko) La placa wailer loco!

(Nessie) Estoy nuclear en ramos

(Machunga) No pasa el subte. Retroceda 5 casilleros.

(Nessie) Hay un dibujo animado peronista. Los peques se llama

(Caco_Patane) Caverna Sambayon!

(+813) Personal le informa que ha detectado un error en su domicilio de facturacion declarado Por favor comuniquese al *111 s/cargo para actualizar el mismo Gracias

(Nessie) E goacheen awante la keius majjjiiii!

(Caco_Patane) Hay una locavudu gritandole al jesus de al lado

. volatilvolatilvolatil .

1.7.08

Milanesa vencida

Betty! Esos muniequitos que dejaste atendiendo tu fiambreria me encajaron un sanguche de milanesa muy caduco. Me rendi en la mitad de la batalla. Que vuelva la ternura al paladar, las mandibulas quieren mantecas!

16.6.08

La cerveza artesanal Gilbert no esta buena

Esto forma parte de una nota mental que encontre hace un rato. El mensaje es simple, la cerveza Gilbert no tiene casi nada de lo rico que tienen las cervezas artesanales. No esta buena. Si la ven ahi, y se quieren tomar un vasito... bien, pero no se hagan ilusiones. Yo me las hice y lo amargo no fue solo la cerveza. Me gusta muchisimo mas la cerveza artesanal de Cossab y no tengo que irme hasta el sur para tomarla.

9.6.08

Si a los carriles exclusivos

No a los taxis que te encierran y despues te putean amparandose en "estoy laburando, pibe". Que frenan en la bicisenda y cuando les decis que no pueden estacionar ahi te ignoran, que andan a 5km/h y despues te matan a bocinazos por mas que estes llendo a 40km/h prendido fuego con la bici.

Hagan paro, va a ser apreciable un dia sin tanto ruido y humo. Los taxis NO SON transportes eficientes, economicos, sanos ni ecologicos. Puede ser un dia feliz.

2.6.08

Generando ID unicos (UUID) en MySQL

La funcion UUID() de MySQL nos devuelve un Identificador Unico Universal que podemos utilizar como ID unico en nuestras aplicaciones.

Podemos probarlo ejecutando la siguiente consulta:

select uuid() as uid;

El resultado esta compuesto por 5 grupos de caracteres hexadecimales separados por un guion:


+--------------------------------------+
| uid |
+--------------------------------------+
| 107782ca-8250-102b-bae9-001a92ba7031 |
+--------------------------------------+


Si estan usando PHP pueden validar el UUID con la funcion ValidateMySqlUid();

Validando UUID de MySQL en PHP

Funcion de PHP para validar (regexp de fede) los IDs unicos generados por MySQL:
function ValidateMySqlUid($string) {
if (strlen($string) == 36) {
if (preg_match('/[0-9a-f]{8,8}-([0-9a-f]{4,4}-){3}[0-9a-f]{12,12}/', $string)) {
return true;
}
}
return false;
}

31.5.08

"Ketchup Hot" es puro Marketing


Cientificos de nuestros laboratorios nos informan que el llamado "Ketchup Hot" fabricado por "La Campagnola" es mentira y no tiene nada de hot. Y todo esto, no fue solo validado por la ciencia: religiosos del picante estan uniendose para dar conferencias sobre el fraude desestabilizador que este producto mentiroso esta causando al universo del picor.

Si quieren comer algo parecido al "Ketchup Hot", de igual gusto, calidad (baja) y sabor pero picante, pueden agregar el "Aji Picante" (Adhereso a base de aji picante) de Knorr. Una solucion menos groncha seria conseguir algun picante decente.