Pintando la casa Parte 1

Bueno este fin de semana me di el gusto de pintar unos pequeños murales en mi casa 🙂

Bambú de Oficina

Om mani pade jinx

Om mani pade jinx

Primeros pasos desarrollando para Blackberry

Me ha tocado iniciar a caminar por el desarrollo para terminales móviles de Blackberry. Lo primero bueno que encontré es que es basado en JavaME y ya que tengo conocimientos en dicha plataforma, no debiera ser mucho problema. El primer obstaculo que me encontré, es que no hay disponible libros para desarrollar en Blackberry o RIM (por sus siglas en inglés Research in Motion, empresa que desarrolló el Blackberry). Aunque hay buena documentación en el sitio oficial para desarrolladores de BlackBerry, los PDFs muestran extractos de código, que si bien sirven, a veces uno ocupa el contexto para comprender mejor como utilizar uno u otro componente. Por ejemplo, queria hacer una pantalla que desplegara un menú. La documentación decía que hay que utilizar el objeto MenuItem y luego agregarlo… pero no decia a que. Si ponía en Google “menuitem blackberry” me encontraba entradas sobre algo llamado ApplicationMenuItem que pareciera mas para agregar algo al menú del teléfono y no al menú de mi aplicación. Ahi mas adelante me encontré mas información que me sirvió para poder hacer lo que queria. Primero hay que hacer un objeto tipo MainScreen, ya que es la única clase que permite agregarle Items y crear, ya sea como una anonymous o una inner class los menú items que se ocupen.

	import net.rim.device.api.ui.MenuItem;
	import net.rim.device.api.ui.component.RichTextField;
	import net.rim.device.api.ui.container.MainScreen;
	public class MyMainScreen extends MainScreen {
	  public MyMainScreen() {
	 add(new RichTextField("Main Screen")); // solo para mostrar algo
	 addMenuItem(new MyMenuItem());
	 }
	 private class MyMenuItem extends MenuItem {
	 public MyMenuItem() {
	 super("Menu 1", 110, 10);
	 }
	 public void run() {
	 // hacer algo
	 }
	 }
	}

Schematic Touchwall

Para el Festival de Cannes Lion, Schematic preparo una enorme pantalla multitouch en la cual los visitantes podian obtener información sobre el evento de una manera totalmente interactiva. Los identificadores que se les dio a cada participante los identificaba con la pantalla tan pronto ellos se acercaban (gracias la tecnologia RFID). La pantalla que cubria una pared entera estuvo a disposición durante el evento permitiendo  interacción entre varios usuarios simultaneamente. Más información en: http://gizmodo.com/5293991/schematic-touchwall-is-multitouch-multi+user-freakin-huge (inglés)

Fechas validas y java.util.Date

Pues leyendo el Javadoc de la clase java.util.Date, me encontre la sorpresa de que uno puede crear fechas “invalidas”, por ejemplo Diciembre 32. Para bien o para mal, cuando se crea el objecto Date (usando DateFormat por ejemplo) en vez de generar una excepción, lo que hace Java con Diciembre 32, es convertirlo en Enero 1. Puede que en algunos casos, esto sirva de mucho, y evite un dolor de cabeza, al hacer esta conversión de manera automática. EL problema se da cuando ocupamos validad que la fecha ingresada sea válida en todos los sentidos. Me encontre por ahi un codigo que nos ayudaria a resolver el problema, la verdad la solución es bastante sencilla.

     public Date getDate() {
        // Fechas serian de la forma 20091231
        DateFormat formatter = new SimpleDateFormat("yyyyMMdd");

        Date myDate = formatter.parse("20091232");

        // myDate ahora seria 2010-01-01, al compararla con la fecha original 
        // nos damos cuenta que vario, es decir ocupo ajuste. Podemos decir 
        // que la fecha ingresada no es valida y tirar una excepción
        if (! formatter.format(myDate).equals("20091232")){
            throw new ParseException("Date is invalid",0);
        }
        return myDate;

Esta es una manera ingeniosa de resolver este problema. Si tienen otras soluciones, agradeceria que las agregaran en sus comentarios. -fr4gus