Archive for August, 2008

  • Como Resetear Una Palm Treo 680

    3

    Hoy me mande un moco con mi Palm Treo asi que tuve que hacer un hard reset. Aqui la tecnica.

    No hay boton de reset en el Treo 680 como en otras Palm, entonces hay que hacer lo siguiente.

    1. Mantene pulsado el boton de Power mientras removes la bateria. Importante, nunca dejes de presionar el Power

    2. Espera unos segundos y pone la bateria nuevamente, la Palm se va a reiniciar. Recordar no sacar el dedo del boton Power.

    3. Mantene tu dedo en el boton de power hasta que veas la pantalla “Palm Powered

    4. Como ultimo saca el dedo del boton Power y segui las instrucciones de pantalla.

    Ojo! si haces el reset esto va a borrar todo de tu palm, mejor que tengas un backup.

  • Como usar JDOM para tus documentos XML

    0

    Las APIs basadas en Tree como DOM son super utiles cuando queres manejar documents en memoria todo al mismo tiempo. Lamentablemente DOM tiene algo tan bueno que lo hace no muy bueno, ser sumamente generico. Seguramente has usado DOM en .NET, Java e incluso JavaScript. El ser tan generico hace que a veces DOM no sea lo mas intuitivo y util para programar en Java.

    Por eso hoy vamos a conocer JDOM, una API para trabajar con documentos XML en memoria enteramente adaptada a Java.

    Primero que nada necesitamos el jar file de JDOM y lo podemos obtener aca.

    Despues de tener el jar en tu CLASSPATH en tu IDE podemos empezar a poner unas lineas de codigo. Primero vamos a ver la creacion de un elemento y luego su serializacion

    El objetivo es obtener este output

    
    

    El codigo necesario para esto es el siguiente

    Element person = new Element("person");
    person.setAttribute("name", "Rodrigo");
    

    Ahora si queremos tener child nodes hacemos esto

    Element person = new Element("person");
    person.setAttribute("name", "Rodrigo");
    Element child = new Element("child");
    child.setText("some value");
    person.addContent(child);
    

    Y el resultado seria este

    
    		some value
    	
    

    Para poder serializer este elemento simplemente utilizamos una funcion de Element

    Element person = new Element("person");
    person.setAttribute("name", "Rodrigo");
    XMLOutputter out = new XMLOutputter();
    String xml = out.outputString(person);
    

    Por estas horas JDOM es mi API para manejar documentos en memoria de eleccion. Es rapida, simple y gratis. Algo mas ?

    Download JDOM

  • Algo de PHP

    0

    Siempre buscando ser mejor persona trato diariamente de ser una persona abierta. Como ustedes ya saben yo soy especialista en Java y siempre voy a tirar para ese lado. Ahora en el tema de la apertura mental. No voy a ser necio y decir que PHP es muy malo, todo lo contrario, es excelente, pero solo para algunas cosas.

     

    PHP esta tremendamente difundido, creo que es el lenguage mas usado en la web por su facil aprendizaje y facil instalacion. A pesar de esto, sigo creyendo que no es un lenguage Enterprise Ready por su arquitectura. En el mejor de los casos tenes tus PHP libraries en otro directorio al lado de tus CSS.

    Pero obviamente estoy tomando ventaja de su difusion y la cantidad de aplicaciones Open Source que hay dando vueltas. Ayer instale un CRM que es muy bueno. SugarCRM el cual me permite manejar clientes y bugs al mismo tiempo, hacer campañas de email, etc. Tambien instale el MediaWiki que es el wiki de Wikipedia.

    La verdad que la instalacion fue super sencilla, y encima no fue el camino tradicional (APACHE PHP) sino que fue Lighttpd PHP ya que en todos los reviews que vi Lighttpd era mucho mas sencillo, con un pequeño footprint de memoria y igual de facil de instalar.

    Llendo un poco a la parte mala nunca eligiria desarrollar un proyecto Enterprise en PHP el cual incluya varias capas como un scheduler, webservices, desktop y web. Primero porque no se puede (No puedo hacer nada desktop en PHP) y segundo la arquitectura de PHP no es muy buena en relacion al concepto MVC.

    PHP tiene cosas muy buenas como las que mencione arriba, a mi particularmente me sirve muchisimo para no reinventar la rueda nuevamente y asi dar soporte a necesidades de mi negocio. Actualmente lo estoy usando en aplicaciones como CRM, Wiki (help) y Blog.

     

  • Como Nombrar Packages en tu Aplicacion Java

    0

    Los modismos en Java existen como en cualquiero otro lenguage de programacion. Estos hacen claramente mas facil la vida de todos los programadores en particular aquellos que mantienen las aplicaciones y tienen que lidiar con el codigo escrito por otros. Usar convenciones de un lenguage en particular es mostrar compasion por aquellos mantenedores que en el futuro cercano van a tocar y retocar el codigo escrito originalmente.

    En este articulo vamos a ver como nombrar packages en java.

    Primero vamos a mostrar los 2 tipos de agrupaciones de clases que creo son mas comunes.

    Package by Layer (por capas)

    • com.wow.dao
    • com.wow.util
    • com.wow.file

    Package by Feature (por categoria)

    • com.wow.customer
    • com.wow.seller
    • com.wow.product

    Ahora.. que diferencia hay entre estas dos clasificaciones ? Basicamente si tu cerebro esta poblado por mas de una neurona, este va a darse cuenta que toda aplicacion hace cosas basicas, lo cual va a requerir que tengas un set de funciones base para quiza todas ellas. Que es esto ? un framework, si, un set de funciones basicas las cuales pueden ser portadas a traves de varias aplicaciones sin ser modificado ni adaptado para cada una de ellas.

    En tu framework vas a tener que hacer clases reusables y agruparlas por Layer ya que no vas a tener ningun codigo especifico de alguna aplicacion en especifico. Tus clases ahi seran DatabasePool, StringUtil, FileWriter, etc. Nada que tenga que ver con la aplicacion en si.

    Ahora, imaginate que estas haciendo una aplicacion de Stock, entonces vamos a usar aqui, con las clases especificas de tu app la clasificacion segunda, package by Feature. Porque ? porque desde estos packages especificos vas a llamar y utilizar el framework, pero es altamente probable que estas clases no sean reutilizadas ni extensibles para otros desarrollos.

    Saludos.