26/04/2011
Al desarrollar para móviles un problema común es reproducir el tipo de conexiones que estos tienen, es decir, lentas e inestables.
En Mac, una solución común es utilizar ipfirewall, o sino quieres ensuciarte las manos en la terminal, entonces speedlimit.
Yo utilizo Charles [1], que además de poder limitar el ancho de banda y aumentar la latencia como hacen los anteriores, también es un proxy que monitorea las peticiones por HTTP.

No es gratis, pero vale cada centavo. Y el plus es que es multiplataforma.
1. Que me recomendó hace mucho el amigo Dani.
21/03/2009
Una constante es una representación de un valor, ya sea una cadena o un número, que nunca cambia.
En PHP tipicamente utilizamos la función define para declararlas.
define('HOLA', '¡Hola mundo!');
echo HOLA;
Pero si estamos programando orientado a objetos utilizaremos constantes de clase, que funcionan con la palabra reservada const.
1
2
3
4
| class Prueba
{
const estatica = 'Soy un contenido estatico';
} |
Para utilizarlas dentro de la clase utilizamos el keyword self. Y claro, si queremos proveerlas fuera de la clase por medio de un objeto, el valor tiene que ser obtenido con una función.
1
2
3
4
5
6
7
8
9
10
11
12
| class Prueba
{
const estatica = 'Soy un contenido estatico';
function probar()
{
echo self::estatica;
}
}
$obj = new Prueba();
$obj->probar(); |
O podemos accesarlas directamente como si fueran variables o métodos estáticos.
13/03/2009
Kenshi Muto (asi le voy a poner a mi hijo) desarrollo una herramienta que revisa tu hardware y busca entre los drivers existentes por el mas apropiado. Útil cuando andas totalmente perdido.
Funciona sobre el output de lspci y su base de datos interna.
5/03/2009
Un script muy útil pero no tan comúnmente utilizado es apt-file. Te permite buscar archivos dentro de los paquetes que tiene tu repositorio de apt. Esto es muy útil cuando necesitas una librería o cualquier archivo pero no sabes específicamente quien la provee.
En Ubuntu por ej. si necesitamos la librería bt829_drv.so, primero instalamos y actualizamos apt-file.
sudo aptitude install apt-file
sudo apt-file update
Y entonces podemos buscar por cualquier archivo.
apt-file search bt829_drv
Y el resultado será una lista de paquetes que contienen nuestra librería.
xserver-xorg-air-core: usr/lib/xorg-air/modules/multimedia/bt829_drv.so
xserver-xorg-core: usr/lib/xorg/modules/multimedia/bt829_drv.so
4/03/2009
Baron Schwartz ha escrito 10 excelentes puntos a considerar al elegir un sistema de respaldos con MySQL. Una excelente lectura y no solo una odiosa lista más.
Me tomo la libertad de robarlo traducirlo aquí:
- ¿Requiere apagar MySQL? si no, cual es el impacto en el servidor que ya esta corriendo? ¿bloqueo? ¿carga I/O? ¿cache?
- ¿Cuál es la técnica utilizada para el respaldo? Es mysqldump o un producto personalizado que hace algo similar? ¿Es una copia de archivos?
- ¿El sistema de respaldo entiende que no se puede respaldar InnoDB simplemente copiando sus archivos?
- ¿El respaldo utiliza FLUSH TABLES, LOCK TABLES o FLUSH TABLES WITH READ LOCK? Todos ellos interrumpen el procesamiento.
- ¿Que otros efectos tiene en MySQL? He visto sistemas que hacen un RESET MASTER, el cual inmediatamente rompe la replicación. ¿Utiliza otros comandos de FLUSH como FLUSH LOGS?
- ¿Como garantiza que puedes realizar una recuperación point-in-time?
- ¿Como garantiza consistencia con el log binario, log de InnoDB y replicación?
- ¿Puedes utilizarlo para configurar nuevos esclavos de replicación? ¿Cómo?
- ¿Verifica que el respaldo es utilizable? i.e. ¿Ejecuta una recuperación InnoDB antes de declarar un respaldo como exitoso?
- ¿Alguien esta detrás de el con soporte, y garantía de respaldos funcionables y recuperables? ¿Qué tan fuerte es la garantía legal y cuanto seguro tienen?
Personalmente utilizo Zmanda, pero hay muchas opciones disponibles para automatizar respaldos y no confiarte solamente de tus scripts que ejecutan mysqldump.
27/02/2009
Mini-tip vía Carlos Leopoldo.
Para eliminar una sola URL de tu historial de Firefox (aquellas que aparecen en la barra del buscador) sin tener que eliminar todo de jalón, solo tienes que posicionarte sobre la URL que quieras y en Mac presionar “Command + Shift + Delete” o en Windows (supongo que Linux es igual) “Shift + Delete”

24/02/2009
Si utilizas el buen Textmate y CakePHP, te agradará utilizar bundles (auto-completar, snippets) específicos para este framework.
Matthew Harris inicio este proyecto y sigue siendo actualizados por otros usuarios. Todo lo que tienes que hacer es bajarlo con subversion.
cd ~/Library/Application\ Support/TextMate/Bundles
$ svn co http://macromates.com/svn/Bundles/trunk/Review/Bundles/PHP\ Cake.tmbundle
Si no existe la carpeta de Bundles anteriormente, solo créala. Reinicias Textmate y listo.

20/02/2009
La primer cosa que hago al instalar MySQL es dejarlo listo para datos en UTF8.
En el archivo de configuración my.cnf cambiamos tanto el character-set del cliente y servidor.
[client]
default-character-set=utf8
[mysqld]
character-set-server = utf8
Después de reiniciar el servidor y conectarnos de nuevo podemos verificar que nuestra conexión este trabajando con UTF8 correctamente.
show variables like ‘character_set%’;
show variables like ‘collation%’;

Esto hace que por defecto las conexiones trabajen con UTF8 pero también puedes cambiar la configuración de la conexión “al vuelo”, con consultas como set names, set character set, etc.
Si ya tienes el problema de haber combinado diferentes tipos de caracteres, como el latin1 de defecto, y necesitas migrar Derek Sivers escribió sus experiencias hace un par de años, que siguen siendo oro puro.
11/02/2009
Ademas de instalar las muchas herramientas de trabajo -o de ocio- estas son cosas que hago justo después de instalar Ubuntu.
Evitar que ’sudo’ pida contraseña
Y cambias una línea para que todos los usuarios del grupo admin no necesiten contraseña.
%admin ALL=(ALL) ALL #antes
%admin ALL=NOPASSWD: ALL #despues
Utilizar fuentes de TrueType Microsoft
Todos sabemos que el niño dios llora cuando instalamos cosas que no son libres. Pero para un linuxero que trabaja en sistemas web, es crítico ver las webs como las ven los usuarios finales. Y esto incluye tener fuentes de Microsoft.
sudo aptitude install msttcorefonts
Suavizado de fuentes
Esto es puro gusto personal y lo que menos me importa de estos puntos. Pero me gusta trabajar con suavizado de fuentes.
Opciones avanzadas de Compiz Fusion
Me facilitan la vida algunas efectos del escritorio -como las capturas de pantalla- que solo están disponibles si las configuras aparte.
sudo aptitude install compizconfig-settings-manager
Emerald para Compiz Fusion
Otro punto meramente visual. Me gusta cambiar de cuiando en cuando el tema del escritorio, y con el «Emerald Theme Manager» consigues temas muy buenos.
sudo aptitude install emerald
Servidores DNS
Los DNS de Telmex suelen alentarse en ocasiones, así que mejor configuro con el servicio de OpenDNS. Algunos prefieren correr su propio servidor DNS local, pero yo lo prefiero así.
¿Algo más?
Utilizo Ubuntu porque facilita mucho la vida; Amarok te ayuda a instalar el soporte para MP3 con un solo clic, Firefox también instala Flash con un solo clic y hasta mi driver de video para Nvidia es instalado con un solo clic.
Mas tiempo produciendo, menos tiempo configurando.
4/02/2009
La diferencia entre comillas simples y dobles en PHP es que las dobles interpretan caracteres especiales que se encuentran dentro de la cadena. El uso de variables dentro de la cadena es el ejemplo mas común.
1
2
3
4
5
6
7
8
| $one = "miercoles";
$two = "jueves";
/* Despliega: Hoy es $one y mañana $two */
echo 'Hoy es $one y mañana $two';
/* Despliega: Hoy es miercoles y mañana jueves */
echo "Hoy es $one y mañana $two"; |
Hace tiempo cuando cuando PHP 4 era la novedad, el uso de comillas simples se prefería sobre el uso de comillas dobles si su uso era intensivo, ya que el trabajo extra del interprete con las comillas dobles lo hacia significativamente mas lento.
Con PHP 5 esa diferencia en rendimiento ya no existe.
O bien existe, pero la diferencia es demasiado pequeña para ser realmente apreciable. Es un error recomendar el evitar comillas dobles argumentando que tienen pobre rendimiento. Haces mejor evitando micro-optimizar en pro de escribir un código mas legible. Una mejora de mili-segundos sobre miles de iteraciones no te significará una mejora apreciable.
1
2
3
4
5
| /* Las comillas dobles hacen mas legibles las concatenaciones */
$test = " $one $two {$three}{$four} $five ";
/* Las comillas simples.. no tanto */
$test = ' ' . $one . ' ' . $two . ' ' . $three . $four . ' ' . $five . ' '; |
Si realmente te importan ese par de mili-segundos, deberías de preguntarte si PHP es el lenguaje que debes de utilizar.