Pecesama.Net [weblog]

Programación web y TI

Diseñador web

Andamos en busca de un diseñador freelancer para proyectos Web (de esos que tienen un dos un punto y un cero).

Al inicio es por eso que llaman amor al arte, pero con grandes posibilidades de crecimiento y visibilidad.

Si alguien se interesa mandenme un correo.




El día de hoy les recomendaré una serie de televisión que en lo particular me gusta mucho, y más después de ver la final de 4 capítulos de la tercera temporada.

Se trata de Avatar: The Last Airbender. En México se conoce como Avatar: la leyenda de Aang.

Avatar: The Last Airbender

Avatar: La Leyenda de Aang (también conocido como Avatar: El Último Maestro Aire) es una galardonada serie de televisión animada producida por la cadena televisiva Nickelodeon.

La historia transcurre en un mundo de influencia principalmente asiática, donde predominan las artes marciales y la manipulación de los elementos en combinación con el misticismo oriental, dando seguimiento a las aventuras de Aang, el más reciente sucesor de una larga línea de avatares, y sus amigos en un intento por salvar su místico mundo de la despiadada Nación del Fuego que busca conquistar a las demás naciones.

En el 2010 veremos la primera película de una trilogía basada en las 3 temporadas de la serie, pero con actores reales, espero que no pierda calidad.




AbbrrMe! 0.2

El otro día Pablo liberaba una extensión de Firefox para el servicio Abbrr de mi buen amigo Victor Bracco.

Como el servicio de Abbrr me gusta mucho (como deben recordar) inmediatamente la instalé (la extensión) y realmente su simplicidad me gustó mucho, sólo basta dar un clic derecho sobre una página y en el menú contextual seleccionar AbbrrMe! y listo ya tenemos nuestra URL corta en el portapapeles (clipboard).

Pensé que seria útil agregarle la funcionalidad que si da clic derecho sobre un enlace sea ese enlace el que se acorte por lo que me puse manos a la obra y unas cuantas líneas de JS y XUL después ya tenia una nueva versión que agrega una nueva opción al menú contextual cuando estas sobre un enlace. Pablo tiene un post sobre AbbrrMe 0.2 pasen por alla para descargar esta nueva versión.




El artículo Ten XML Schemas you should know en el sitio de IBM es uno de los que debemos tener impresos junto a nuestro espacio de trabajo.




Cómo confundir a un idiota

 Cómo confundir a un idiota

Vía Microsiervos




Un meme de Zombies

Stan me ha pasado un meme que lleva por titulo: ¿Qué harías en caso de un Ataque de los Zombies?

El escenario que pone es el siguiente:

Te encuentras en un centro comercial, cuando sin aviso alguno, los Zombies comienzan a atacar, tú tienes:

  1. Un arma
  2. Una canción sonando a todo volumen en las bocinas.
  3. Una persona famosa peleando a tu lado.

Mis elecciones

  1. El Arma: Definitivamente la mejor arma para matar zombies es la Wii Zapper.

  2. La Canción: La favorita de los mata zombies, Iron Man de Black Sabbath
  3. Una persona famosa peleando a tu lado: Jennifer Garner interpretando a Elektra

Le paso este meme a Nazul, a Frago y a quien lo quiera tomar.

Actualización: Si el escenario planteado arriba llegara a ocurrir, esta es la forma en que se verá twitter.




Kaspersky Rescue Disk

Kaspersky lab tiene una fabulosa herramienta que nos puede sacar de un buen problema con ese dolor de cabeza que son los virus (sobre todo esos molestos que llegan por USB drives), se trata del Kaspersky Rescue Disk un Live CD que utiliza el motor de Kaspersky Antivirus PC en busca de virus (trojanos, etc.) y eliminarlos.

Y lo mejor de todo es que te puedes descargarlo de forma gratuita:

http://ftp.kaspersky.com/devbuilds/RescueDisk/

Lo malo es que no puedes actualizarlo, pero supongo que constantemente suben imágenes actualizadas ya que la actual es de Junio 28, hace apenas 2 días.




Parece que por fin esta comenzando a generarse movimiento en México por parte de la comunidad de desarrolladores para los que formamos parte del web 2.0 mexicano.

Por un lado el 23 de Junio tendremos el Developer Day de Google, al cual espero asistir (ya tengo confirmado mi lugar).

También Sosa ha comentado sobre un congreso de web 2.0 en México y el cual ya tiene nombre MexicoWeb2, todo parece indicar que va a ser un congreso que valga la pena.

Espero que estos eventos sean cada vez más comunes.




Continuando con la serie de patrones de diseño en PHP5, veamos ahora uno de los patrones que más me llaman la atención: el strategy pattern (patrón estrategia).

Este patrón se usa generalmente cuando se desea cambiar entre diferentes versiones de un algoritmo. Es decir, si tenemos un código que genera un archivo comprimido, bajo ciertas circunstancias, podemos querer un archivo .ZIP y bajo circunstancias diferentes, queremos crear un archivo .TAR.GZ.

Para implementar este patrón debemos declarar una interface (o bien una clase abstracta) base con un método para el algoritmo, el cual es implementado heredando desde las clases concretas.

En el código de nuestro sistema, debemos decidir cual estrategia concreta es la relevante, la cual debe ser instanciada para ser usada.

El ejemplo que usaré para mostrar este patrón, es la selección del idioma del contenido al abrir una página Web. Por simplicidad, asumiré que si la palabra “es” existe en $_SERVER["HTTP_ACCEPT_LANGUAGE"], estamos frente a un usuario que habla español, de otra forma, estamos frente a un usuario que prefiere el inglés.

PHP:
  1. < ?php
  2. interface langStrategy {
  3.         public function helloWorld();
  4. }
  5.  
  6. class enLang implements langStrategy {
  7.     public function helloWorld() {
  8.         return "Hello World";
  9.     }
  10. }
  11.  
  12. class esLang implements langStrategy {
  13.     public function helloWorld() {
  14.         return "Hola Mundo";
  15.     }
  16. }
  17.  
  18. $ln = explode(';',$_SERVER[HTTP_ACCEPT_LANGUAGE]);
  19. if (preg_match('/es/',$ln[0])) {
  20.     $langObj = new esLang();
  21. } else {
  22.     $langObj = new enLang();
  23. }
  24.  
  25. echo $langObj->helloWorld();
  26. ?>

El patrón estrategia es usado a menudo al mismo tiempo que el patrón factory, el cual se encargaría de elegir la estrategia correcta. La siguiente entrega vendrá con este patrón.




El Domain Model Pattern (algo así como ”Patrón del Modelo de Dominio”), consiste en una clase que representa objetos o responsabilidades particulares en nuestro software.

Por ejemplo, para trabajar con usuarios, cada usuario sería una instancia de una clase “Usuario”.

Normalmente al usar el Domain Model se representan los datos en una o más tablas de una base de datos. Por ejemplo, para la tabla de usuarios de un sistema.

SQL:
  1. CREATE TABLE `usuarios` (
  2.   `id_usuario` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3.   `nombre` varchar(100) DEFAULT NULL,
  4.   `login` varchar(100) NOT NULL DEFAULT '',
  5.   `password` varchar(64) NOT NULL DEFAULT '',
  6.   `email` varchar(100) DEFAULT NULL,
  7.   PRIMARY KEY  (`id_usuario`)
  8. ) ENGINE = MYISAM ;

Entonces escribimos una clase que represente a cada usuario y sus atributos; es decir el Domain Model:

PHP:
  1. < ?php
  2. class Usuario {
  3.     public $id_usuario;
  4.     public $nombre;
  5.     public $login;
  6.     public $password;
  7.     public $email;
  8.  
  9.     // metodos para obtener de la BD
  10.     // los datos y asignarlos a las propiedades.
  11. }
  12. ?>

Para usarla debemos instanciarla:

PHP:
  1. < ?php
  2. $fulano = new Usuario();
  3. echo $fulano->nombre;
  4. ?>

De esta forma dispondremos de las propiedades de los usuarios en nuestros objetos.

Este patrón es el que usamos principalmente en la actual arquitectura de gelato. Pero es importante tener especial cuidado en no caer en el anti-patrón Anemic Domain Model que como todos los anti-patrones hace que se pierdan los beneficios del uso de patrones en nuestro diseño.




« Previous Entries