Por varios motivos estoy migrando mis repositorios Subversion a Git.
Uno de estos motivos son las insoportables carpetas .svn que Subversion genera en toda la estructura de nuestro código.
De manera de tener nuestro repositorio limpio y listo para migrar a Git podemos eliminar recursivamente todos los directorios .svn mediante el siguiente comando bash desde nuestro Terminal en Mac OS X (Applications -> Utilities -> Terminal):
rm -rf `find . -type d -name .svn`

Posted: April 18th, 2008 | Author: lichi | Filed under: git, mac, subversion | 2 Comments »
No se porqué, pero Sequel Pro (Que es una excelente herramienta y recomiendo) no permite modificar el charset de una tabla una vez creada.
Sin embargo podemos hacerlo mediante una simple linea en la consola MySQL:
ALTER TABLE `mi_tabla` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
En este ejemplo estoy seteando un charset utf8 y collation utf8_general_ci para la tabla “mi_tabla”.
Para un listado completo de los charset/collations soportados por MySQL vean este articulo.
Posted: April 16th, 2008 | Author: lichi | Filed under: mysql | Tags: charset, collation, mysql | No Comments »
Bueno, desde hace un tiempo que venía buscando la forma de modificar el comportamiento de Evolution para que siempre utilice una única instancia.
Muchas veces me pasaba que entre tantas ventanas abiertas, me olvidaba que Evolution estaba minimizado y, al intentar abrirlo nuevamente desde el menú, en lugar de maximizar la instancia previamente activa, abría una nueva.
Para solucionar este comportamiento indeseado (por lo menos en mi caso) creé el siguiente script en Perl, basado en Evonotify [1].
# EvoLauncher was created by Lisandro Grassini
# based on Evonotify created by Oliver Grawert
#
# This script is free software; you can redistribute it and/or modify it
# under the terms of the GNU Library General Public License
#!/usr/bin/perl
use Gnome2;
use Gnome2::Wnck;
Gtk2->init();
$stamp = time;
$screen = Gnome2::Wnck::Screen->get_default();
$screen->force_update();
foreach $window ($screen->get_windows()) {
if ($window->get_name =~ /Evolution/) {
$evolution = $window;
}
}
if($evolution) {
$evolution->unminimize($stamp);
$evolution->get_workspace->activate($stamp);
$evolution->activate($stamp);
print $evolution->get_geometry;
}
else {
system('evolution');
}
Gtk2->main_iteration() while (Gtk2->events_pending());
Gtk2->main();
[1] http://www.grawert.net/software/evonotify/index.html
Espero les sea útil como a mi.
Posted: August 10th, 2007 | Author: lichi | Filed under: linux | Tags: debian, linux, ubuntu | 2 Comments »
Streamripper, es por lejos para mi gusto la mejor aplicación para ripear (grabar directamente una señal de audio / video al disco rígido) radios online.
Supongamos que queremos grabar en nuestro disco algunos temas de Soma FM, para poder escucharlos cuando estemos offline:
1) Bajar + Instalar la última versión de Streamripper para nuestra plataforma (Win, Linux, Mac OS, FreeBSD, etc) desde http://streamripper.sourceforge.net/
Para Windows podemos bajar el stand-alone o el plugin para Winamp.
2) Llegó el momento de “rippear”. Si usamos el stand-alone podemos ejecutarlo de la siguiente forma:
streamripper.exe url -d E:\Personal\Music\
Al ejecutar la aplicación con estos parámetros Streamripper comenzará a rippear directamente la señal de la radio especificada (url) y grabará cada uno de los tacks en nuestro directorio local “E:\Personal\Music\”
Veamos un ejemplo real:
streamripper.exe http://steady.somafm.com:8388 -d E:\Personal\Music\
Este ejemplo descargará los temas (tracks) de Soma FM a medida que se van reproduciendo en nuestro directorio “E:\Personal\Music\”
Streamripper tiene muchos mas parámetros que se pueden pasar al momento de ejecutar la aplicación como por ejemplo el parámetro “-r” (relay) el cual convierte a nuestro Streamripper en un servidor de stream local. Muy útil si queremos escuchar y ripear al mismo tiempo:
streamripper.exe http://steady.somafm.com:8388 -r -d E:\Personal\Music\
Para escuchar nuestro relay por ejemplo con Winamp bastará con:
1) Play
2) URL
3) http://localhost
Esto es todo, para mas info recomiendo leer el manual oficial de Streamripper en:
http://streamripper.sourceforge.net/tutorialconsole.php
Posted: April 10th, 2007 | Author: lichi | Filed under: music, software | Tags: music, software, streamripper | 1 Comment »
Una de las cosas que mas extraño a la hora de desarrollar en PHP es poder Sobrecargar métodos. Dado que PHP no lo soporta, al menos en sus versiones 4.x.
La sobrecarga es la habilidad que tienen muchos lenguajes OOP para poder definir varios métodos con el mismo nombre pero con diferentes números/tipos de parámetros. De esta manera se ejecuta uno u otro dependiendo la cantidad y los tipos de parámetros pasados.
Sin embargo podemos recurrir a un pequeño truco para poder sobrecargar métodos dependiendo el número de parámetros. La sobrecarga por tipos de datos no se puede hacer dado que no hay tipos de datos en PHP.
class MiClase {
function MiClase() {
$nombre="MiClase".func_num_args();
$this->$nombre();
}
function MiClase1($x) {
//código;
}
function MiClase2($x,$y) {
//código;
}
}
De esta manera, con func_num_args() obtenemos el numero de parámetros pasados al constructor de MiClase, y en base a ese valor generamos el nombre de la función a llamar en $nombre. Fácil, no? ;)
Posted: March 26th, 2007 | Author: lichi | Filed under: development, php | Tags: development, php | No Comments »
Desarrollando una aplicación PHP contra una DB Postgre, me encontré con un pequeño problema a la hora de hacer la paginación de resultados.
Dado que estoy usando la clase ezSQL para manipular la base de datos desde una capa abstraída, decidí, también, utilizar la clase de paginación EZ Results. Ambas creadas por JV Multimedia [1].
El problema es que esta clase no tiene soporte para Postgre, dado que el manejo de la clausula LIMIT es distinto a MySQL.
No hubo mucho de que preocuparse. Simplemente buscamos la linea donde se hace referencia al LIMIT de la consulta y la modificamos de la siguiente manera:
Original:
LIMIT {$_REQUEST['BRSR']},$this->num_results_per_page
Modificamos por:
OFFSET {$_REQUEST['BRSR']} LIMIT $this->num_results_per_page
Luego, desde el archivo donde queremos paginar nuestros resultados simplemente:
include_once “lib/ez_results.php”;
$ezr->query_mysql(“select campo1, campo2 from tabla”);
$ezr->display();
Fácil, ¿no? ;)
[1] http://www.woyano.com/jv/ezsql
Lisandro Grassini
Posted: March 9th, 2007 | Author: lichi | Filed under: development, php, postgre | Tags: development, php, postgre | 1 Comment »
Tener el daemon Sendmail instalado y corriendo en Debian es realmente muy fácil:
Como root o con sudo:
# apt-get install sendmail
Eso es todo, si todo fue bien podemos probar de enviar un email con:
# mail -s “Algun subject” algun@mail.com < /dev/null
(Para utilizar el comando mail debemos tener instalado el paquete “mailx”, si no lo tienen instalado simplemente: # apt-get install mailx”
El log de eventos de Sendmail en Debian esta en /var/log/mail.log
Si ocurre algún problema con el envío de mails pueden acudir a dicho log para tener una idea aproximada de que esta pasando.
Slds!
Posted: April 11th, 2006 | Author: lichi | Filed under: debian, linux | Tags: debian, linux, sendmail | No Comments »
Estuve a las vueltas a la hora de recuperar valores de un campo timestamp de una DB MySQL desde VB.Net.
En algunas ocasiones me devolvía este error: Unable to convert MySQL date/time value to System.DateTime.
El problema se da solo cuando nuestro registro no tiene valor para el campo timestamp. Es decir, su valor es: “0000-00-00″.
Para solucionar este pequeño inconveniente podemos hacer alguna de las siguientes modificaciones:
1) Setear un valor timestamp válido, a todos los registros cuyo timestamp no representa una fecha real.
o …
2) Agregar: Allow Zero Datetime=true al ConnectionString :
Dim strConnString As String
strConnString = "server=" & Settings.Default.host & "; " & _
"user id=" & Settings.Default.user & "; " & _
"password=" & Settings.Default.password & "; " & _
"database=" & Settings.Default.db & ";" & _
"Allow Zero Datetime=True;"
Posted: January 6th, 2006 | Author: lichi | Filed under: mysql, vb.net | Tags: .net, mysql, vb.net | No Comments »