viernes, 19 de noviembre de 2010

Ya pueden acceder a nuestro blog desde PDAs, móviles y celulares

Traducir / Translate

Hemos implementado una versión para PDA / Móvil / Celular de nuestro blog para que lo puedan leer más cómodamente. No hay que hacer nada para ver la nueva versión: el blog detecta automáticamente desde qué tipo de dispositivo se accede y se adapta rápidamente.

Nuestra url sigue siendo la misma: http://webosencastellano.blogspot.com

¡Esperamos sus comentarios!

Resumen de noticias de los viernes: 19-Nov-2010

Traducir / Translate

Los viernes son días de más relax. En la semana os enviamos artículos de interés propios. Hoy os enviamos un resumen de las noticias más interesantes que han ocurrido dentro y fuera de las fronteras de nuestro blog.


webOS Developer Days: Enyo, el nuevo framework para desarrollo en Javascript para HP webOS.

Se trata de un framework de nueva generación para la programación de aplicaciones en JavaScript para webOS. Desgraciadamente no hay más información disponible. Estaremos pendientes.

Enlace a la noticia en Precentral.net



Palm Store comienza a vender el Pre 2 en España por 499 EUR.

Ya tenemos disponible la nueva versión mejorada del Palm Pre. Detalles en este enlace:

Enlace a la noticia en nuestro blog.

jueves, 18 de noviembre de 2010

Código liberado: EventListenHelper

Traducir / Translate

La libreria EventListenHelper guarda y ejecuta las asignaciones de manejo de eventos para luego desactivarlas más fácilmente y sin tener que recordarlas previamente.

Normalmente los widgets se crean en la rutina de setup del asistente y luego se relacionan con sus handlers y eventos. Al final en la rutina cleanup se hace el trabajo inverso, que es eliminar todas las relaciones widgets-eventos-handlers.

La operación de limpieza es muy importante para no dejar cabos sueltos en la aplicación (¡no nos olvidemos que estamos en una aplicación de JavaScript!) y además optimiza el manejo de recursos, tanto de memoria como de ciclos de CPU para la ejecución de eventos.

Normalmente el problema se produce en la rutina de cleanup, porque hay que ser exacto en la limpieza de todas esas relaciones widget-evento-handler. La librería EventListenHelper hace todo ese trabajo con una simple línea como esta:



SampleAssistant.prototype.cleanup = function(event) {
this.event_helper.stopListening();
}


La forma de utilizar la rutina es igualmente sencilla:


SampleAssistant.prototype.setup = function() {

/***
el codigo de la creacion del Widget y de la rutina de setup ha
sido eliminado pues no es importante para el ejemplo en sí.
***/

//este handler es la rutina que manejará el evento
this.firstHandler = this.first.bind(this);

//definición del event_helper
//(se reutiliza para todos los eventos de este asistente!)
this.event_helper = new EventListenHelper(this);

//listen: utiliza tres parametros:
//el nombre del widget, la propiedad y el handle de la rutina.
this.event_helper.listen("firstWgt",Mojo.Event.tap, this.firstHandler);

}


Para descargar el código de la libreria y un ejemplo, aquí les dejo este enlace:

EventListenHelper (código en Google Docs)

miércoles, 17 de noviembre de 2010

Lecciones: Herencia de Clases en JavaScript para webOS (parte 1 de 3)

Traducir / Translate

Comenzamos esta serie de artículos sobre la herencia de clases en JavaScript para webOS. Realmente trataremos de explicar el manejo de la herencia de forma práctica en Mojo, el framework de JavaScript utilizado en HP webOS. La primera parte mostrará los comandos básicos para crear herencia de clases y el reemplazo de métodos heredados. La segunda parte versará sobre la invocación de métodos de la clase padre y otras operaciones frecuentes en el uso de la herencia. La tercera parte contendrá una serie de advertencias sobre el uso y el abuso de la herencia de clases.

Recordemos que las principales ventajas del uso de la herencia de clases son:

1.- Reutilización y encapsulamiento del código. No hay que reescribir clases parecidas. Tampoco es preciso copiar el código de las clases padre.
2.- Facilita las pruebas del código. Generalmente las clases hijas no necesitan testear tan a fondo el funcionamiento del código que han heredado, reduciendo la cantidad de posibles errores.
3.- Crea el sitio perfecto para documentar las clases y los métodos, fuera de las rutinas principales de ejecución del código.

Dicho todo esto, entramos en materia.

Parte 1: Comandos básicos para crear herencia de clases en Mojo y el reemplazo de métodos heredados.

La forma más primitiva de crear clases en JavaScript es la siguiente:

objeto1 = new Object(); // se crea el objeto
objeto1.propiedad1 = 4; // se define una propiedad
objeto1.metodo1=function(){ this.propiedad1++; } //se define un método
objeto1.metodo1(); //almacena un 5 en propiedad1.


Esto funciona, pero no es recomendable salvo para la creación rápida de clases de poco uso debido a que carece de una definición formal, lo que dificulta su uso, prueba y reutilización.  Utilizando la técnica de los prototipos, siendo más formales en las definiciones e introduciendo el concepto de constructor, llegamos al siguiente ejemplo:


function Clase1(valor1)  { //definimos el constructor de la clase
this.propiedad1 = valor1;
}
//definimos un método
Clase1.prototype.metodo1 = function() { this.propiedad1++; }
objeto1 = new Clase1(10); //nueva instancia de la clase
objeto2 = new Clase1(20); //nueva instancia de la clase
objeto1.metodo1(); //almacena un 11 en propiedad1 de objeto1.
objeto2.metodo1(); //almacena un 21 en propiedad1 de objeto2.


Podemos directamente modificar el objeto2 para crear nuevos métodos, pero seria cometer de nuevo los errores iniciales. En Mojo podemos usar una forma de herencia de clases más práctica. La idea proviene del framework Prototype:


Clase1 = Class.create(); //definimos la clase
Clase1.addMethod( initialize : function ($super, valor1) { 
 //definimos el constructor
$super();
this.propiedad1 = valor1; //definimos la propiedad
}});
Clase1.addMethod( metodo1 : function($super) { 
 //definimos un metodo
$super();
 this.propiedad1++;
}});
objeto1 = new Clase1(10); //nueva instancia de la clase
objeto2 = new Clase1(20); //nueva instancia de la clase
objeto1.metodo1(); //almacena un 11 en propiedad1 de objeto1.
objeto2.metodo1(); //almacena un 21 en propiedad1 de objeto2.


Hay varias cosas importantes aquí:
1.- La creacion de la clase y el constructor están divididas.
2.- La sintaxis del comando addMethod es tipo JSON, es decir, usando llaves.

Ahora vamos a lo interesante, que es la creación de una clase hija:


Clase2 = Class.create(Clase1); //define la clase como hija de Clase1
Clase2.addMethod( initialize : function($super,valor1,valor2) { 
 //definimos el constructor de Clase2
$super(valor1); //esto llama al constructor de la clase padre
this.propiedad2 = valor2; //definimos la propiedad2
}});
Clase2.addMethod( metodo2 : function($super) { 
 //definimos un nuevo metodo
$super();
 this.propiedad2--;
}});
objeto2 = new Clase2(10,20); //nueva instancia de la Clase2
objeto2.metodo1(); //almacena un 11 en propiedad1
objeto2.metodo2(); //almacena un 19 en propiedad2



Ahora vamos a reemplazar el metodo1 en la clase2:

Clase2.addMethod( metodo1 : function($super) { 
 //definimos un nuevo metodo
$super();
 this.propiedad1 = -this.propiedad1;
}});
objeto3 = new Clase2(30,40); //nueva instancia de la Clase2
objeto3.metodo1(); //almacena un -30 en propiedad1 del objeto3
objeto2.metodo1(); //almacena un -11 en propiedad1 del objeto2

Aquí hay más cosas importantes:
1.- Tanto la creación como el reemplazo de métodos se hacen con addMethods, y de la misma forma.
2.- addMethods es dinámico y funciona en todas las instancias de la clase modificada. En el ejemplo se aprecia como el cambio afectó también al objeto2, aún habiendo sido definido antes del cambio de metodo1.
3.- El punto 2 aplica igualmente a modificaciones en clases padres. Todas las clases hijas heredan el cambio, a menos que hayan reemplazado por sí mismas el método heredado.

La sintaxis completa de Class.create y addMethods puede consultarse en Prototype.


Nos vemos en la parte 2!

martes, 16 de noviembre de 2010

Noticias: Palm Store comienza a vender el Pre 2 en España por 499 EUR

Traducir / Translate


















Ya está en Palm Store para España el teléfono Palm Pre 2 sin SIM por 499 EUR. Recordemos que este es el   primero de la familia Pre con cámara de 5 MP (antes 3 MP), CPU de 1 Ghz (antes 600 Mhz), RAM de 200 Mhz (antes 160 Mhz) y la esperadísima nueva versión 2.0 de HP webOS que cuenta además por primera vez con soporte de Flash 10.1, Skype Mobile y QuickOffice!.

Enlace: Comprar teléfono Pre 2 en Palm Store

Enlace: Características del teléfono Palm Pre 2 (Página oficial)

Recursos: Utilización de librerías GWT (Java) de Google en webOS

Traducir / Translate



Las librerias GWT (Google Web Toolkit) permiten a los programadores utilizar Java como lenguaje y crear aplicaciones que después son convertidas automáticamente a HTML/JavaScript y que pueden cargarse con facilidad en HP webOS.

Este formidable artículo escrito por Josh Marinacci describe su funcionamiento y los pasos básicos para aprender a utilizar este tecnología y crear nuevas aplicaciones Web 2.0 con facilidad.

El texto incluye multitud de enlaces a tutoriales, recursos y hasta una aplicación de ejemplo que explica muy bien todo el funcionamiento hasta su instalación en un teléfono Palm Pre.



Enlace: Ir al artículo Using Java on webOS using GWT

Noticias: Palm Store continua vendiendo teléfonos Pre sin SIM en España

Traducir / Translate















La tienda Palm Store para España aún tiene dentro de su catálogo el teléfono Palm Pre. En USA ya fue descontinuada su venta esta semana por Sprint. El precio para España del teléfono sin SIM es de 355 EUR (IVA inc.). En Francia ya cuentan con el modelo PRE 2 (el primero con HP webOS 2.0!) y está muy próxima su entrada en UK y Alemania.

Enlace: Ver el teléfono Palm Pre SIM-free en Palm Store para España

Libros: Practical Palm Pre WebOS Projects

Traducir / Translate




Practical Palm Pre WebOS Projects


Este es un libro extraordinario para aquellos principiantes en webOS que tengan  conocimientos previos (buenos) de HTML y JavaScript, junto con un gran deseo de comenzar a hacer proyectos de webOS.
El autor es Frank Zammetti que tiene muchos buenos libros técnicos en su haber y relacionados con este tema.
Se trata de una publicación relativamente reciente (diciembre de 2009) por lo que el código y los ejemplos siguen siendo válidos en todas las versiones iguales o anteriores a la 1.4.5.

Idioma: Inglés.
Editorial: Appress
Publicación: Dic.2009 (1ra. Ed.)
ISBN:  1430226749
ISBN-13: 978-1430226741
Precio: 26 US$ (pero puede conseguirse usado desde 3 US$ en Amazon.com)

Enlace: Ver libro y contenido en http://www.Amazon.com

Inauguración del blog "HP (Palm) webOS en Castellano"

Traducir / Translate

El mundo de los móviles ha visto el sistema operativo webOS (antiguo Palm webOS ahora HP webOS) como una increíble innovación en la utilización de teléfonos móviles o celulares, que ya reemplazan en muchos aspectos a las PDAs, y que poco a poco se han convertido en elementos indispensables de nuestra vida.

La innovación procede de la implantación del HTML5 como base fundamental de todas las aplicaciones (que a la fecha ya superan las 4000!) así como de la utilización de un núcleo de GNU/Linux, totalmente abierto, que permite el aprovechamiento de un vasto volumen de conocimientos y de desarrolladores de todo el mundo.

El objetivo de este blog es compartir estos conocimientos principalmente en idioma español (o castellano, que es lo mismo!) y acercar a muchas más personas las bondades y capacidades de este sistema operativo. El uso del idioma Inglés es inevitable en algunas ocasiones, pero además nos permite también apoyarnos en los muchos recursos disponibles en ese idioma.

Algunos contenidos no son estrictamente sobre webOS sino de programación, o sobre el entorno que rodea a todas estas tecnologías. No se trata de ser puristas, sino de aprovechar al máximo todo lo que nos ofrecen y obtener aún más fomentando la sinergia entre todas las partes.

Saludos,
Herman.