Monday, July 23, 2007

Harry Potter and the Deathly Hallows



Bueno como todos saben el pasado sabado salio a a la venta el tan esperado titulo. Despues de tantos años la serie esta completa, y finalmente no queda -al menos eso parece- más que descubrir. De cualquier manera tan magnificos libros seran releidos una y otra vez con el pasar de los años (personalmente yo voy por 7 veces los 4 primeros y por 2 el 5to y sexto, EN SERIO!!!)...

Lo unico que no me ha gustado de todo el lanzamiento es que los hispano hablantes no han podido adquirirlos en su lengua, la autora ha dicho que desea que los niños que han crecido leyendo a Harry descubran por si solos el fin de su gran aventura, llamando asi a que los por arte de magia se han leido el libro antes de la salida o en apenas horas (si hubiesen visto wikipedia el sabado verian a que me refiero) no comenten de que trata. Pero entonces la otra gran mitad de los niños tienen que esperar, casi 6 meses cuando llegado el momento todo el mundo sabra que Harry NO MUERE (ups), desde luego no es justo!!!

Pero como todos los que leemos a Harry estamos conectados por la magia, solo basta hacer un encantamiento convocador para traer a tu navegador aquello-que-no-puede-ser-nombrado: accio septimo libro!!!

Tuesday, July 03, 2007

Buscando archivos en directorios.

El otro dia estaba viendo procedimientos que necesitan ejecutarse en un segundo hilo para no bloquear la aplicacion, e implemente algo muy sencillo para buscar archivos de manera "iterativa":



using System;
using System.Collection.Generic;
using System.IO;

public class FileSeeker
{

public static string[] RetrieveFilesFrom(string directory, string searchPattern,int level)
{
List filenames = new List();
Stack directories = new Stack()

directories.Push(directory);

while(directories.count!=0)
{
string currentDirectory = directoriesStack.Pop();

foreach(string file in Directory.GetFiles(currentDirectory,searchPattern))
filenames.Add(file);


if((level==-1) || (directories.count != level))
{
foreach(string subDirectory in Directory.GetDirectories(currentDirectory))
directories.Push(subDirectory);
}

}
return filenames.ToArray();
}

}

public class Program
{

public static void Main(string[] args)
{
foreach(string path in FileSeeker.RetrieveFilensFrom(@"C:\Program Files\", "*.exe",-1)
Console.WriteLine(path);
Console.Read();
}

}




Estoy encapsulando todo en un componente con muchas mas funcionalidades, como buscar mediante expresiones regulares, tamaño, fecha de creación, etc. En cuanto lo termine hago un articulo para el sitio de elguille

Has oido hablar de Prado?



Desde que utilize WebForms con ASP.NET supe que ese era el tipo de programacion web que realmente queria hacer, lo llaman basado en eventos (event driven). Quien necesita preocuparse de los tags html si tenemos el viestate y toda la infraestructura que trabaja en el.



Cuando comence mi etapa de practicas, empece a usar PHP con Ajax usando el framework Xajax, realmente buenos momentos con tan genial framework (creanme lo es) no paraba de decirle a mis compañeros de trabajo: ...una especie de code behind en php...
Todos mis paginas web utilizaban eventos en el cliente que disparaban metodos en el servidor: mediante unas cuantas lineas en javascript y el motor de xajax, pero...



Las ultimas dos semanas comence a oir acerca de Prado en mi(en ese mometo futuro) trabajo, PRADO ... es un framework que gano la competencia de Zend ... hay que verlo! ... lei sobre él en la web ... oh esta inspirado en ASP.NET 2.0!!! entonces ... si soporta todas esas magnificas caracteristicas podremos programar basado en eventos con php de manera transparente? ... la respuesta es SI!!!



Pero los eventos no es todo. Si te gusta trabajar con componentes de software (como a mi) y en la manera punto net (como a mi) estaras complacido de saber que Prado basado en componentes y provee:



Una especie de token "using" (implementado como un metodo estatico en una clase principal) para compensar la falta de namespaces en php:



Prado::using('This.Is.Del.I.Cio.Us.MyClass');

Propiedades con metodos set y get:



class TControl extends TComponent {
public function getID() {
...
}
public function setID($value) {
...
}
}


usados asi:



$id = $component->ID;
$component->ID = $id;


or
$id = $component->getID();
$component->setID( $id );


Eventos:

$callback = 'myFunctionName';
or
$callback = array($unsub,'myFunctionName');


$MyComponent->OnClick = $callback;
$MyComponent->OnClick->add( $callback );
$MyComponent->OnClick[] = $callback;
$MyComponent->attachEventHandler( 'OnClick' , $callback );


Esto es solo la punta del iceberg, PRADO es un framework único, deberias probarlo. No soporta el patron MVC pero trae los eventos en web a php de una manera facil y divertida. De que otra forma iba a ser?, si esa inspirado en ASP.NET :-).



Prado esta aqui!