Enyo FAQ en Español

Logo de Enyo

Logo de Enyo

Una de las mejores cosas que tiene el escribir en un blog, es que algunas personas dediquen parte de su tiempo a leer tus desvaríos. Si encima te dicen algo, ya sea por Twitter, en persona, o mandándote un correo es una sensación muy especial. Y hay veces en las que te piden que les ayudes con algo, porque piensan que eres un experto en el tema. Palabras mayores, porque yo toco muchos campos, y de algunos voy sabiendo algo, pero de ahí a considerarme experto…

El caso es que Nicolás me escribió desde Argentina. Está interesado en el Framework Enyo y al parecer leyó mi post Aprendiendo a aprender Informática (y JavaScript), tiene una TouchPad y quiere desarrollar para webOS. Pero claro, está la barrera del idioma: la documentación de Enyo es muy escasa, y está toda en Inglés. No existe documentación en Español, y creo que en España casi que nos conocemos personalmente los dos o tres locos que hacemos Apps para la TouchPad (te estoy mirando a tí, Daniel 🙂 ).

Yo tengo ganas de seguir activamente con Enyo, aunque en los últimos meses he estado programando principalmente para iOS / Objective C. Pero quiero profundizar en JavaScript y CSS3, y disponer de una herramienta (Aplicaciones HTML5) que se ejecutan en muchas plataformas, por no decir en todas. Además, todo el movimiento que está llevando hacia Open webOS 1.0 y Enyo 2 me resulta muy interesante.

Respondo las preguntas de Nicolás, que es lo que me ha llevado a escribir esto:

1. ¿Que necesito para programar en webOS? ¿Conocimientos en que lenguaje debo tener?

Para programar en webOS se usa el malllamado HTML5, ya que webOS se basa en los estándares de las aplicaciones web. Digo malllamado porque realmente HTML no escribes para nada: es todo CSS3 y JavaScript. Luego lo principal es aprender el lenguaje JavaScript. Para eso, se pueden seguir las instrucciones del post antes mencionado.

2. ¿Qué IDE se utiliza?

Una App Enyo es un conjunto de ficheros de texto JavaScript, las hojas de estilo CSS, algún fichero de configuración y un index.html. Además de los recursos que utilices (sonidos, imágenes, etc.). Todo ello en una estructura concreta de carpetas. Por ello, realmente puedes usar el IDE que te resulte más sencillo para editar JavaScript.

Si usara una máquina Windows, creo que mi opción sería NotePad++, que es Software Libre, es gratis y es una pequeña maravilla. Al final vas a estar escribiendo código en varios ficheros, luego cualquier editor con «pestañas» sirve. En mi Mac, primero lo intenté con Aptana Studio, que es una versión adaptada de Eclipse para trabajar con HTML5. Incluso había un plugin para hacer Apps webOS, pero por desgracia usaba Mojo (el framework que se usa para los teléfonos de Palm, que es más antiguo que Enyo y con el que no he trabajado). Pero fallaba mucho, y era muy pesado.

Según avancé, me di cuenta de que Safari (o Chrome), cualquier navegador basado en WebKit puede depurar una App Enyo, ya que activas el modo desarrollo y dispones de un inspector que es una maravilla. Desde el inspector puedes establecer puntos de ruptura y depurar, ver el valor de las variables, consultar qué hay almacenado en Local Storage, o cambiar el CSS en el navegador hasta que tenga el aspecto que quieres, directamente, sin recargar ni grabar. Obviamente todo esto se puede hacer también con Firefox, pero dado que webOS se basa en WebKit, me pareció más adecuado.

Modo Desarrollo de Safari

Modo Desarrollo de Safari

Así que en el Mac terminé usando DashBoard (el editor que se usa para crear los widgets del Mac, que son HTML5 por cierto). Aunque podía haber usado vi, o cualquier otro. Realmente lo importante es tener un buen editor de textos con resalte de sintaxis. No vas a tener «proyectos», sino que vas a trabajar directamente sobre las carpetas y ficheros que uses. Y, claro, estarás usando algún sistema de control de versiones, ¿no? 😀

3. ¿Que es Ares?

Ares es un IDE que corre en el navegador. Es decir, uno inicia sesión en ARES y desde ahí puedes crear una App, editar el código fuente. Incluso puedes depurarla. Problema: que Ares 1 funciona con Mojo, no con Enyo. Luego no puedes hacer aplicaciones Enyo con Ares 1. Pero ya están trabajando en Ares 2, que está en GitHub, y aunque no funcione demasiado bien de momento, promete bastante. En cualquier caso, de momento usaría un editor de texto para hacer las Apps, como he comentado antes.

Ares

Ares

4. ¿Desde Ares se pueden crear aplicaciones? ¿Cómo se compilan o como se las lleva a la tableta?

Sí, desde Ares en teoría se podrá depurar en el dispositivo. Hoy en día, para pasar una App a tu touchpad debes primero ponerlo en modo de desarrollo, que es tan sencillo como buscar la cadena «webOS20090606». Te aparecerá un icono de una App llamado «Developer Mode». Lo pulsas, activas el modo de desarrollo y con las herramientas de la línea de comandos que vienen con el SDK de la TouchPad puedes instalar una App así:

palm-install com.femtocoders.feedreader_1.0.0_all.ipk

Obviamente, antes necesitas empaquetar la App con palm-package. Toda la información sobre estas herramientas está en el SDK de webOS (nota: si vas a hacer Apps HTML5, necesitas el SDK, el PDK es para hacer Apps que corren código nativo y se escriben en C++, como los juegos)

5. ¿Que es Enyo?

Enyo es el framework que se usa para hacer Apps HTML5 en webOS. Incluye a muchos otros frameworks JavaScript, y te permite acceder al hardware de la TouchPad (al GPS, por ejemplo). Con webOS venía Enyo 1, que ahora ya es Software Libre. Pero Enyo 1 estaba muy influenciado por la TouchPad, su licencia era para usarlo sólo con webOS y estaba basado en WebKit. Con Enyo 2 se intenta disponer de un framework más genérico para cualquier dispositivo móvil (o de escritorio) que soporte HTML5, y pensado desde el minuto uno para ser Software Libre.

Podemos bajar ambas versiones (Enyo 1 y Enyo 2) de la página de descargas de Enyo. Han creado un tutorial para Enyo 2 y hay un Playground donde podemos editar y probar el código de Enyo directamente en el navegador.

6. Las aplicaciones creadas en Enyo son multiplataforma?

Sí, las creadas con Enyo 1 se prueban y depuran en el navegador de escritorio. Luego ¡tienen que ser multiplataforma!. Pero con Enyo 1 se hacía referencia al hardware de la TouchPad (ver si hay conexión WiFi, o consultar al GPS, etc.). Con Enyo 2 las Apps creadas van a ser aún más multiplataforma si cabe. Luego es una buena opción para crear el interfaz y el esqueleto de tu App HTML5. Y luego, por supuesto, puedes añadir los frameworks JS que te apetezcan, que para eso todo es JS.

Dejo aquí la respuesta y espero que esta FAQ le sirva a alguien. Si hay dudas, planteadlas en los comentarios e iré actualizando este post. Y, claro, siempre hay que leerse las FAQs oficiales de Palm sobre Enyo.

Keep coding!

j j j

Cómo ver el canal Veo7 en Ubuntu 9.10 con Firefox

Este pasado Sábado vi unos tweets de María Barceló pidiendo ayuda. Trataba de ver un programa del canal Veo7 a través de Internet, con su Ubuntu, y no podía. Realicé una rápida búsqueda con Google y me encontré con este bug, documentado en el Launchpad de Ubuntu. Por cierto, Launchpad es el sitio web donde se registran y comentan los errores de una distribución Ubuntu concreta y de sus distintas versiones. Es lo que los iniciados llaman un bug tracker y los ITILeros una herramienta de registro de incidentes.

Bueno, al grano. Leyendo los comentarios me encontré con que el bug todavía existía, y no tenía una solución oficial por parte de Canonical. De nuevo, es lo que los ITILeros llamarían un error conocido, o Known Error: un problema cuya causa raíz es conocida, pero al que no se ha metido mano por la razón que sea. El caso es que uno de los comentarios me llevó a una web en cirílico donde, entre los demás caracteres que no podía comprender me encontré con una secuencia de comandos Linux:

sudo apt-get install gecko-mediaplayer

Línea que viene a decir: «pídeme la clave de administrador del equipo, y en su nombre instala el paquete gecko-mediaplayer». Con esto lo que conseguimos es disponer de un plug-in para el navegador Firefox que entiende bien la codificación del streaming de vídeo de Veo7. Vamos, que instalamos un pequeño programa que usará Firefox para mostrarnos el canal de tele o lo que queramos ver. Pero falta un paso.

Hay que indicarle a Firefox que lo utilice, para lo que nos vamos a la opción de menú Herramientas -> Gestionar elementos de contenido y nos aparece una pantalla con todos los plugins disponibles (o si la hemos abierto con la web en cuestión que no funciona por delante, pulsando en elementos en uso veremos sólo el plug-in que falla). Hay que indicarle a Firefox que utilice nuestro nuevo gecko-mediaplayer, en lugar del que trae por defecto, que normalmente es Totem. Por seguridad, reinicia el navegador (lo cierras del todo y lo vuelves a abrir) y listo.

¡Espero que a alguien más le sirva!

j j j

Conseguir que Mac OS X suene «a-la-Windows» al insertar un dispositivo USB

Escribo este post por una pregunta que me ha llegado a la lista de correo del GUM Sevilla. Concretamente la pregunta era:

Tengo una consulta sobre Growl y eventos de sonido. Quisiera que, cuando pincho un dispositivo USB, al igual que sucede en Windows, suene un sonidito en mi MacOs Snow leopard.
¿Es esto posible?

Growl es un sistema de notificaciones en pantalla que se controla mediante un panel de preferencias. Si vamos a las Preferencias del Sistema veremos a Growl en la parte final «Complementos». Un click y lo abrimos. Se nos mostrará la pestaña General. Vamos a la pestaña Applications. Ahí disponemos de una lista de aplicaciones que tenemos instaladas y que soportan el sistema de notificaciones de Growl. Es decir, estas aplicaciones, cuando tienen algo que contarnos, le mandan ese mensaje a Growl y el se encarga de ponerlo en pantalla, tocar un sonido, etc.

En el caso que nos ocupa, como es un tema hardware (conectar un dispositivo USB), buscaremos la aplicación Hardware Growler. Comprobaremos que está instalada en nuestro sistema (la hemos copiado desde el DMG de instalación de Growl a la carpeta Aplicaciones) y que está habilitada en Growl (enabled) y pulsaremos en Configure. Tras esto nos aparece una pantalla como la siguiente:

Configuración de GrowlPulsando en Notifications (tal y como se muestra antes), basta con seleccionar el sonido deseado en el último cuadro desplegable: Play Sound.

Y casi listo. Nos falta lanzar Hardware Growler para que monitorice todos los eventos anteriores de hardware y, cuando suceda alguno, nos muestre la notificación growl correspondiente. Funciona en Mac OS X 10.6.2 Snow Leopard. Supongo que en el resto también funcionará.

¿Que por qué cuento esto aquí y no en la lista de correo del GUM?. Porque esa lista no permite imágenes adjuntas :-).

j j j

Eliminar el icono de MobileMe de la barra de menú de Leopard

Yo no uso MobileMe (un servicio de sincronización de Apple, de pago, que te permite tener tus contactos, citas, correo, etc. sincronizados en varios ordenadores, tu iPhone, …) pero aún así tenía que sufrir en silencio el iconito en la barra de menú superior.

Hoy Googleando me he encontrado con la forma de quitar el icono: basta con pulsar la tecla comando, pulsar y arrastrar fuera de la barra de menú el icono: se borra solo. A veces se tarda más en saber cómo hacer algo que en hacerlo 🙂

Actualización 04/01/2010

He visto (bueno, escuchado) en el Podcast Macniacos #60 que también se puede hacer lanzando iSync y mirando en sus Propiedades. Hay una opción que podemos desactivar llamada «Mostrar estado en la barra de Menus»

j j j

Instalar a mano el plugin Java para Firefox en Linux

Una vez más, me he sentado en un ordenador con Debian instalada y al intentar ejecutar un Applet me ha aparecido la pantalla «te faltan plugins adicionales, etc. etc.». Con mi cerebro pilotando en modo automático, abrí Synaptic desde una consola pero lo cerré inmediatamente. Recordaba que en esa máquina había una máquina virtual de Java instalada en /opt. El JRE incluye los plugins que necesita Firefox y todo se resume en crear un enlace simbólico al fichero correcto en la carpeta adecuada. Lo de siempre, vamos.

 Tras un par de segundos buscando las carpetas y ficheros adecuados con el tabulador desde una consola, la secuencia es la siguiente:

$ cd $HOME/.mozilla/plugin
$ ln -s /opt/jdk1.5.0_07/jre/plugin/i386/ns7/libjavaplugin_oji.so

Suponiendo, claro, que el JRE está instalado en /opt. Si no, cambia adecuadamentela línea y listo.

Me lo apunto aquí, no vaya a ser que se me olvide… otra vez.

j j j

Creando un fichero PDF a partir de varias imágenes

Hoy he tenido que montar un fichero PDF con páginas escaneadas de diferentes fuentes. Muchos programas de escaneo permiten crear directamente un único fichero PDF con las diferentes sesiones y páginas capturadas, pero éste no había sido el caso. Me habían pasado una carpeta con 103 ficheros en formato JPG.

Bueno, al menos el reto estaba claro: convertir uno a uno estos ficheros en PDF y luego unirlos. Bueno, un momento ¿porqué en este orden? Porque yo ya conocía la herramienta para unir varios PDF en uno: pdftk.

El caso es que abrí una terminal en mi Linux y pensé ¿cómo convierto de JPG a PDF?. Una búsqueda rápida en Synaptic me llevó a sam2p, un pequeño programa que convierte cualquier fichero en formato Raster (Bitmap) a PDF. Por ejemplo, convierte GIF, JPG/JPEG, y PNG a PDF y a PS (PostScript). Pero claro, convertir uno a uno…

Para eso se inventaron los bucles for. Un bucle for de la bash nos permite, entre otras cosas, iterar por una lista de ficheros aplicando la misma acción a los diferentes ficheros. Así, que, si vamos al grano bastará con hacer:

 for f in `ls *.jpg`;do  sam2p $f PDF: $f.pdf ; done

Esto recorre todos los ficheros que aparecen como resultado de hacer un ls *.jpg. En cada iteración la variable f toma el valor de uno de los nombres de fichero. Así que llamamos a sam2p, que convierte los JPG en PDF.

pdftk *.pdf cat output resultado.pdf

Y una vez que tenemos múltiples ficheros PDF, pdftk los une en uno llamado resultado.

j j j

Estructura del if en la bash

if list; then list; [ elif list; then list; ] ... [ else list; ] fi

The if list is executed. If its exit status is zero, the then
list is executed. Otherwise, each elif list is executed in
turn, and if its exit status is zero, the corresponding then
list is executed and the command completes. Otherwise, the else
list is executed, if present. The exit status is the exit sta-
tus of the last command executed, or zero if no condition tested
true.

j j j

Error al instalar NFS: invoke-rc.d: initscript nfs-kernel-server, action «restart» failed.

Tras actualizar el servidor NFS nfs-kernel-daemon, nos encontramos con éste error.Este error se debe muchas veces a la prisa con la que se instalan los paquetes. Probablemente hemos dejado los ficheros de configuración que ya teníamos y no los que trae el nuevo paquete. Si no cambiamos nada, el nuevo NFS intenta utilizar el servidor sgss, que si no está configurado hace que no se inicie el servidor nfs.
Para solucionarlo iremos a la carpeta /etc/defaults que es donde nfsd guarda su configuración. Una vez allí, es posible que tengamos un fichero llamado nfs-kernel-server y otro nfs-kernel-server.dpkg-dist. Este último es el que nos ha instalado apt-get, con la configuración del paquete. En el caso que nos ocupa, no vamos a usar gssd, pero no se lo hemos dicho (en el fichero de configuración antiguo no lo teniamos). La solución:
NEED_SVCGSSD=no

j j j