Archive for July, 2007

Pattern Singleton en PHP4

A pesar de sus limitaciones en cuanto a orientación a objetos, PHP4 permite implementar un pattern del tipo Singleton.

Por defecto, en PHP4 (y a diferencia de PHP5) los objetos se devuelven/asignan por valor (una copia), por ello es necesario indicar expresamente que deseamos devolver/asignar una referencia del objeto en cuestión.

Una de las formas más elegantes de implemetar este pattern es:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// Clase de la cual deseamos que exista
// una única instancia en todo el programa
class Config
{
   var $message = null;

   function set($message)
   {
      $this->message = $message;
   }

   function get()
   {
      return $this->message;
   }
}

// Pattern que se ocupará de devolver
// la única instancia de la clase Config
class Singleton
{
   // Método que devuelve una referencia al objeto
   function &get()
   {      
      static $instance;
     
      if ( ! isset($instance) )
      {
         $instance = new Config();
         print "instancia creada.\n";
      }
     
      return $instance;      
   }
}

// Forma de uso
$config =& Singleton::get();
$config->set('hello world.');
printf("%s\n", $config->get());

$config =& Singleton::get();
printf("%s\n", $config->get());

Salida del programa

instancia creada.
hello world.
hello world.

Tags: , ,

Montar un directorio remoto usando SSHFS

Instalar sshfs

sudo apt-get install sshfs

Cargar el módulo fuse (lsmod | grep fuse)

sudo modprobe fuse

Agregar el usuario user al grupo fuse y cambiar el grupo a/dev/fuse

sudo chgrp /dev/fuse fuse

Finalmente, montar el directorio remoto

sshfs user@remote_server:/remote_folder ~/local_folder

Para desmontar

fusermount -u ~/local_folder

Tags: ,

The Bongo Project

How do you connect to the Internet? Dialup? Cable modem? How about Bongo Drums???

Bongo Drums
Dial-up has never looked so good! – classmate

http://eagle.auc.ca/~dreid/

Tags:

“Use ReiserFS or I will F’n kill you”

t-shirt for H.Reiser

Relacionada: El que existan bases de datos es un síntoma de que hay algo mal

Tags: ,

Javascript no intrusivo

Forma de usar Javascript fuera del flujo HTML:

1
2
3
4
5
6
7
8
9
10
11
12
<head>
  <script type="text/javascript">
    window.onload = function() {
      var reloj = document.getElementById("reloj");
      var fecha = (new Date()).toLocaleString();
      reloj.innerHTML = fecha;
    }
  </script>
</head>
<body>
  <div id="reloj">No te puedo mostrar la hora</div>
</body>

Tags: , ,

8-ɟʇn ǝp opuɐsnqɐ

UTF-8 da para opoʇ !!! :P

Funciona en pidgin, aunque los compañeros que usan msn no ven mi nuevo nick. O_o

Conversor: http://www.revfad.com/flip.html
Nota original: http://sushiknights.org/2007/07/z_q_p_s_b_u_sns.html

Tags:

El Zen de Python

Hace mucho tiempo el entusiasta de Python Tim Peters plasmó de forma concisa los principios de diseño por los que guiarse al escribir en Python según el BDFL (NT: Benevolent Dictator for Life o Dictador Benévolo de por Vida, en este caso Guido van Rossum, el creador de Python) en 20 aforismos, de los cuales sólo 19 han pasado a forma escrita.

  1. Hermoso es mejor que feo.
  2. Explícito es mejor que implícito.
  3. Simple es mejor que complejo.
  4. Complejo es mejor que complicado.
  5. Plano es mejor que anidado.
  6. Disperso es mejor que denso.
  7. La legibilidad cuenta.
  8. Los casos especiales no son suficientemente especiales como para romper las reglas.
  9. Aunque lo pragmático gana a la pureza.
  10. Los errores nunca deberían dejarse pasar silenciosamente.
  11. A menos que se silencien explícitamente.
  12. Cuando te enfrentes a la ambigüedad, rechaza la tentación de adivinar.
  13. Debería haber una — y preferiblemente sólo una — manera obvia de hacerlo.
  14. Aunque puede que no sea obvia a primera vista a menos que seas holandés. (NT: Guido van Rossum es holandés)
  15. Ahora es mejor que nunca.
  16. Aunque muchas veces nunca es mejor que *ahora mismo*.
  17. Si la implementación es difícil de explicar, es una mala idea.
  18. Si la implementación es sencilla de explicar, puede que sea una buena idea.
  19. Los espacios de nombres son una gran idea — ¡tengamos más de esas!

Tags: