Ya se encuentran disponibles las primeras versiones publicas de las Aplicaciones para Nodos (Ambiente Distribuidos para la Creación Colaborativa) las cuales permiten controlar dispositivos que soporte el protocolo OSC (Open Sound Control) a través de una aplicación de escritorio o móvil a manera de control remoto, permitiendo el control de aplicaciones que permitan la comunicación con OSC, dispositivos como sintetizadores que soporten el protocolo y aplicaciones que sirvan de puente entre OSC y otros protocolos de control.
Camaleon Desktop Editor 0.7.1
Las aplicaciones de Nodos esta dividia en tres grandes productos :
Camaleon Desktop Editor :
Editor de interfaces graficas que pemite crear los archivos que contienen las descripciones de los controles a ser visualizados en la aplicación de control. Permite la creación de interfaces con controles como Sliders, PushButtons, ToggleButtons, XY, MultiSliders, MultiToggles, Rotary, Labels http://www.sensorlab.org/nodos/sitio/camaleon/desktop-editor
Camaleon Desktop Player :
Aplicación de Escritorio que hace las veces de control remoto para el manejo de las aplicaciones con soporte OSC. Utiliza las interfaces generadas por el editor para controlar diferentes aplicaciones y dispositivos. http://www.sensorlab.org/nodos/sitio/camaleon/desktop-player
Camaleon Android Player :
Aplicación para dispositivos moviles basados en la plataforma Android que pemite el control remoto de aplicaciones con soporte OSC que esten en la misma red inalambrica que el dispositivo movil. http://www.sensorlab.org/nodos/sitio/camaleon/android-player
Las versiones del Player y el Editor pueden ser ejecutadas rápidamente a través de Java Web Start (se necesita instalar Java para su funcionamiento)
Ya se encuentran disponibles las primeras versiones publicas de las Aplicaciones para Nodos (Ambiente Distribuidos para la Creación Colaborativa) las cuales permiten controlar dispositivos que soporte el protocolo OSC (Open Sound Control) a través de una aplicación de escritorio o móvil a manera de control remoto, permitiendo el control de aplicaciones que permitan la comunicación con OSC, dispositivos como sintetizadores que soporten el protocolo y aplicaciones que sirvan de puente entre OSC y otros protocolos de control.
Camaleon Desktop Editor 0.7.1
Las aplicaciones de Nodos esta dividia en tres grandes productos :
Camaleon Desktop Editor :
Editor de interfaces graficas que pemite crear los archivos que contienen las descripciones de los controles a ser visualizados en la aplicación de control. Permite la creación de interfaces con controles como Sliders, PushButtons, ToggleButtons, XY, MultiSliders, MultiToggles, Rotary, Labels http://www.sensorlab.org/nodos/sitio/camaleon/desktop-editor
Camaleon Desktop Player :
Aplicación de Escritorio que hace las veces de control remoto para el manejo de las aplicaciones con soporte OSC. Utiliza las interfaces generadas por el editor para controlar diferentes aplicaciones y dispositivos. http://www.sensorlab.org/nodos/sitio/camaleon/desktop-player
Camaleon Android Player :
Aplicación para dispositivos moviles basados en la plataforma Android que pemite el control remoto de aplicaciones con soporte OSC que esten en la misma red inalambrica que el dispositivo movil. http://www.sensorlab.org/nodos/sitio/camaleon/android-player
Las versiones del Player y el Editor pueden ser ejecutadas rápidamente a través de Java Web Start (se necesita instalar Java para su funcionamiento)
Hace poco me di a la tarea de desarrollar un prototipo de una aplicación en Windows Azure con el propósito de conocer la plataforma y conocer las herramientas y el proceso de desarrollo bajo esta plataforma, buscando que hacer y tratando de adicionarle elementos de aplicación móvil para crear el cliente en Windows Phone 7, recordé el proyecto que desarrollamos hace ya varios años con Alexander Parrales y Martin Estrada el cual llamamos Ciudad Digital y me di a la tarea de crear un nuevo prototipo.
Ciudad Digital (rebautizado como MCity) es un proyecto en el cual las ciudades están llenas de historias que los ciudadanos cuentan desde sus teléfonos móviles, permitiendo contar cualquier tipo de anécdota o suceso que suceda dentro de la ciudad con solo tomar el teléfono móvil y publicando desde el lugar de los hechos una descripcion de lo que le sucedio, o una imagen o un sonido; esta historia es almacenada para que despues otros ciudadanos cuando lleguen cerca al lugar puedan leer las historias de otros ciudadanos que han pasado por ahi.
La aplicación tiene un componente servidor donde se almacenan las historias, con su titulo, descripción y posición geográfica (latitud y longitud) y las cuales son enviadas y consultadas desde los dispositivos móviles usando WebServices, para el caso de la implementacion en Azure se implemento una solucion en Azure con tres proyectos :
MCityAzure
MCityModel
Modelo de Datos de la aplicación
Basado en el servicio de almacenamiento de Azure de Tablas
MCityServices
Modelo de Servicios
Servicio Web basado en SOAP para el registro y listado de historias
MCityWeb
Aplicación web para la publicación del web service y la administración
El cliente móvil de la aplicación se implemento bajo la plataforma Windows Phone 7 el cual incluye :
MCityMobile
Envio de Historias
Permite enviar historias al servidor para su almacenamiento
Utiliza el servicio de localización para determinar la posición geográfica del usuario
Adiciona la posición a las historias que el usuario quiere publicar
Visualizacion de Historias
Permite visualizar las historias usando un mapa del servicio Bing donde se muestran marcadores por cada historia los cuales pueden ser tocados para visualizar la historia completa
La aplicación móvil utiliza una fachada que permite acceder al webservice en el servidor y a los servicios de localización.
Los proyectos se desarrollaron en Microsoft Visual Web Developer Express 2010 y Microsoft Visual Studio 2010 Express for Windows Phone.
Versiones :
Version 0.1 (2011.01.26)
Monousuario
Listado de historias e interface web sencilla
El movil solo permite publicar historias no se incluía la posicion geografica
Version 0.2 (2011.01.31)
Monousuario
Listado de historias e interface web sencilla
El móvil permite publicar historias con la posición geográfica tomada del GPS del teléfono
Visualizar historias en un mapa via Bing desde el movil
Futuras Versiones :
Adicionar imagen o sonido a la historia
Multiusuario
Categorizacion de las historias
y mucho mas ...
Visualizar Texto dentro de objeto (también llamado Prim) dentro de un mundo virtual como Second Life parecería fácil, desafortunadamente no existen funciones que permitan escribir directamente texto sobre un objeto y no existe forma de cargar una textura generada dinamicamente con el contenido texto, tampoco existe una forma de generar la imagen de forma externa y cargarla directamente dentro del objeto; por este motivo mucho del contenido encontrado dentro de los mundos virtuales son imágenes con el texto a visualizar que son generadas con editores de imagen y que son subidas al simulador de Second Life por $10 Lindens cada una, pero afortunadamente existe una forma de visualizar texto dentro de un objeto en Second Life.
Probando Scripts para la Visualizacion de Texto
Algunas Formas :
Un letra por Objeto :
Crear una textura (imagen de 512x512 pixeles) con los caracteres del abacedario a utilizar en la fuente a utilizar, se pueden crear una textura mas grande si el conjunto de letras es muy extenso o varias texturas con diferentes conjuntos de letras, como también se pueden crear texturas por cada fuente a utilizar aunque se recomienda utilizar fuentes donde los caracteres tengan las mismas dimensiones ya que todos aparecerán dentro de objetos del mismo tamaño que conforma el mensaje a utilizar. Luego se debe crear un script que asigne a cada objeto la letra que se quiere visualizar, calculado su posición dentro de la textura y aplicarla al objeto. Lo malo de esta estrategia es que para mostrar el mensaje "Hola Mundo" se necesitarían diez objetos para la construcción del visor, así que si queremos un tablero de 180 caracteres debemos tener 180 objetos lo cual es una gran cantidad debido a que este recurso es limitado y degrada el desempeño del servidor del mundo virtual.
Una Letra por Lado del Objeto :
Esta estrategia permite colocar varias letras dentro del mismo objeto, esto se logra tomando el objeto cubo que tiene seis caras (en cada cara se puede colocar una textura diferente) y aplanando este, para que por un lado se puedan ver hasta cinco texturas, esto se logra deformando el cubo con las herramientas de edición, una vez que tenemos el cubo podemos colocar un carácter en cada cara, logrando tener un máximo de cinco caracteres por cada objeto, de esta manera podemos colocar el mensaje "Hola Mundo" utilizando dos objetos lo que reduce en una quinta parte el uso de prims y se reduce a una textura con el conjunto de caracteres a visualizar.
Varias Letras por Lado del Objeto :
Otra estrategia a utilizar es colocar dos caracteres por cada cara del objeto, en este caso podríamos obtener diez caracteres y nueva mente reducimos a la mitad el consumo de objetos para la visualización de texto, aunque aumenta el numero de texturas a utilizar ya que debemos crear todas las posibles combinaciones de dos letras lo cual nos demanda una gran cantidad de texturas pero reduciendo el numero de objetos a utilizar. Esta ultima estrategia es la mas usada en la visualización de texto dentro de objetos de SecondLife y de cual existen varios scripts.
ZZText
Permite visualizar 10 caracteres en un prim, usa 35 texturas
Se puede crear texturas propias con caracteres especiales
Mas rápida y eficiente que otras versiones http://wiki.secondlife.com/wiki/ZZText
XyzzyText Permite visualizar 10 caracteres en un prim, usa 66 texturas
Se deben nombrar cada celda con nombres especificos
Versión mas Eficiente que XyText http://wiki.secondlife.com/wiki/XyzzyText
XyyyyzText
Permite visualizar 10 caracteres en un prim, usa 66 texturas
No se necesitan renombrar las celdas, enlace automático, multilinea
Versión mas Eficiente que XyText http://wiki.secondlife.com/wiki/XyyyyzText
Existen gran cantidad de soluciones para este problema, algunas utilizan mas recursos como prims y scripts lo que puede causar que el rendimiento del simulador se vea afectado (LAG), mientras otras versiones utilizan mas recursos como texturas que no afectan el funcionamiento del simulador pero afectan al cliente, el cual debe descargar gran cantidad de texturas para poder visualizar la información, otro problema adicional es la necesidad de crear nuevas texturas de acuerdo al conjunto de caracteres que se necesitan y aunque los scripts con soporte de UTF mejoran el uso de caracteres especiales, se deben crear las texturas necesarias para su visualización.
Se tomo la decisión de probar XyyyyzText para la creacion basica de los tableros de texto mas adelante se explorara con mas detalle la creación dinámica de texto utilizando otras herramientas.
Teniendo en cuenta las características del Servidor de Desarrolla a utilizar en Pulsar Project que fueron brevemente descritas en anteriores entradas (Pulsar Project : Servidor Desarrollo) se procedió a realizar la instalación básica del servidor que cumpliera con la mayoría de estas.
Seleccionar el tipo de sistema operativo Linux ya l version Ubuntu
Se puede dejar los 512 MB de memoria RAM (se recomienda aumentarlo a 1024)
Crear un disco virtual con la información por defecto (8 GB de espacio)
Finalizar la creación de la maquina virtual
Cambios en la Configuración Inicial :
Presionar el botón Settings
Habilitar el PAE/NX en la sección Processor de System
Ir a Settings -> Storage
Remover el disco duro del arbol de dispositivos, seleccionarlo y utilizar el boton con el menos
Remover el controlador SATA dando click sobre el Storage Controller ya que este no se utilizara
Adicionar el disco duro como IDE haciendo click sobre el controlador y adicionando un nuevo disco
Montar CD de instalación :
Seleccionar en la pantalla el CD Empty
Adicionar el archivo iso al manejador de medios virtuales
Enlazarlo al CD
Iniciar la Maquina
Instalación de Ubuntu Server
Seleccionar el idioma
Presionar la tecla F4 y seleccionar minimal virtual machine
Seleccionar la opción Install Ubuntu Server
Seleccionar el idioma de instalación
Seleccionar el Pais
Detectar la distribución del teclado
Suministrar el nombre del servidor : pulsarproject
Configurar la zona horaria
Particionar el disco utilizando la opción guiada
Se realiza la instalación base del sistema
Suministrar información del usuario
Nombre de usuario : pulsar
Clave : pulsar2010
No encriptar directorio home
No realizar actualizaciones automáticas
Seleccionar el Software a Instalar :
Basic Ubuntu Server
LAMP Server
Mail Server
OpenSSH Server
Suministrar la clave de administrador de MySQL
Configurar servidor de correo como Internet Site con el nombre pulsarproject
Instalar el GRUB
Terminar la instalación
Reiniciar (Recuerde quitar el archivo ISO como archivo del CD)
La imagen de disco creado por VirtualBox es de 845 MB para esta maquina virtual.
Esta guía cubre los pasos de una forma breve y sencilla, para mayor información acerca de la instalación del servidor de desarrollo se realizo un vídeo el cual contiene imágenes de todos los pasos realizados durante la instalación.
El servidor de desarrollo para el Pulsar Project esta destinado como plataforma para el desarrollo de las herramientas y aplicaciones para el apoyo a la educación en los mundos virtuales, este debe contar con el software necesario para permitir el desarrollo, así como tambien para realizar pruebas de las mismas, por este motivo el servidor debe contar con las siguientes caracteristicas :
Poderse mover de una maquina a otra para no depender de una maquina o una única instalación
Servir de linea base para la documentación de instalación y configuración de servicios
Permitir volver a versiones anteriores del estado del servidor
Facilitar el proceso de pruebas de las herramientas desarrolladas, permitiendo el cambio de configuraciones y componentes instalados
Permitir a otros usuarios la descarga desde Internet del servidor para que estos prueben las herramientas desarrolladas
Ser muy liviano para ejecutarse en maquinas con pocos recursos
Tener un tamaño pequeño para permitir la descarga rápida desde Internet o su copia entre maquinas
Ser software libre lo que permita su utilización sin requerimientos de licencia por parte de los usuarios.
Al analizar todas las características del servidor se tomaron las siguientes decisiones :
Crear un maquina virtual lo cual permite mover y ejecutar la maquina virtual en diferentes computadores de una forma fácil y rápida, como también permite volver a estados previamente almacenados y puede ser distribuida para que otros usuarios la puedan utilizar,
Instalar en la maquina virtual con un Servidor Linux para lo cual se selecciono la plataforma Ubuntu Server 10.04 gracias a la gran experiencia que se tiene en el uso de esta plataforma y a que provee todas las herramientas necesarias para desarrollar el proyecto.
Realizar una instalación mínima de maquina virtual la cual permite crear una maquina virtual que ocupa poco espacio en disco gracias a que solo instala los componentes necesarios para su ejecucion, ademas de tener un núcleo diseñado especialmente para ejecutarse en ambientes virtualizados.
Se selecciono VirtualBox como plataforma de virtualizacion por su fácil, rápida y liviana instalación, ademas de ser multiplataforma lo que permite utilizar cualquier computadora como potencial servidor de pruebas.
En cuanto a la plataforma de desarrollo el servidor debe contar con los siguientes servicios y plataformas de desarrollo :
Servidor Web para la publicación de la aplicación web de soporte a las herramientas de los mundos virtuales y aplicaciones de terceros que se comunicaran con las herramientas en los mundos virtuales.
Servidor de base de datos para la aplicación web y las aplicaciones de terceros.
Servidor de correo para permitir el envió local de mensajes entre aplicaciones.
Se han seleccionado las siguientes herramientas básicas para comenzar el desarrollo del proyecto, las cuales cumplen con las características necesarias para el desarrollo de proyecto.
Servidor de Terminal Segura OpenSSH, el cual permite realizar conexiones seguras para la administración remota del servidor y el envió de archivos.
Servidor de Base de Datos MySQL muy popular en el mundo del software libre y el cual utilizan muchas de las herramientas a utilizar dentro del proyecto.
Servidor Web Apache2 con soporte para PHP, el cual permite desarrollar e instalar aplicaciones muy populares en el mundo del software libre.
Servidor de Correo Postfix para el envío y recepción de correo.
Hasta el momento se han seleccionado las herramientas tecnológicas que responden en su mayoría a herramientas de software libre que pueden ser usadas y modificadas, así como también herramientas sencillas de manejar y ampliamente utilizadas en el mundo del desarrollo de software.
Hace ya algún tiempo no hacia algo de desarrollo para Mobile Processing (de todas formas en este tiempo en la Universidad he dado algunos mini cursos y también algunas conferencias), algunas de las librerías ya están lo suficientemente maduras y no por motivos de tiempo no había podido pensar en otras cosas para adicionar hasta el viernes que me dispuse a leer sobre la versión para Android de Processing (pronto estare hablando de este proyecto), principal competencia ahora de Mobile Processing y que pronto se convertirá en el estandard para móviles abriendo las puertas del mausoleo para Mobile Processing.
En la pagina de Processing para Android, en la parte de instalación se debe descargar una versión especial de Processing que trae el modo Android para el desarrollo de aplicaciones móviles y que para que todo funcione debe descargarse el SDK de Android, pero que este en un futuro sera adicionado a la distribución evitando la necesidad de descargar el software esto siguiendo los lineamientos de Processing de mantener la herramienta simple y fácil de usar. Recorde que ese mismo dia me habia contado un estudiante que habia tenido problemas con la instalacion del ambiente en Windows y que tambien he sido victima de la instalacion dispendiosa de los requerimientos del mismo.
Mobile Processing esta basado en el ambiente de desarrollo de Processing el cual esta desarrollado bajo Java y utiliza Jikes como compilador Java, de tal modo que utiliza el JRE solo para la ejecucion del editor, la version Mobile adiciona la necesidad de un ambiente de desarrollo para J2ME lo cual cubria el Wireless Toolkit que necesitaba de un JDK; sumando todo esto para instalar el ambiente de desarrollo se necesitaba instalar un JDK y el WTK y luego expandir el archivo de Mobile, ejecutar y configurar el ambiente de desarrollo para utilizar el WTK.
La idea era crear una distribucion que al igual que Processing la cual solo fuera expandir y ejecutar, para esto se utilizo de base el directorio de Mobile Processing al cual se le adiciono el directorio java, donde se instalo el JDK 6 Update 20, ademas de instalar en el directorio wtk la version 2.5.2 del Wireless Toolkit el cual debio ser modificado para que utilizara la version de java instalada anteriormente, adicionamente se modifico el codigo del llamado al verificar y emulador utilizado en Mobile para que tomara el WTK instalado desde la primera ejecucion del ambiente, estos pasos fueron relativamente faciles y se crearon las versiones para Windows y Linux de 32 bits, las cuales se probaron satisfactoriamente en maquinas virtuales sin software pre instalado de Windows XP, Windows 7 y Ubuntu 10.04 con esto se crearon las distribuciones respectivas las cuales tenian un tamaño de 109 MB, pero teniendo en cuenta que en Google Code el maximo de tamaño permitido por archivo es de 100 MB se procedio a quitar documentacion y ejemplos del WTK y el JDK llegando a un tamaño de 78 MB.
Demasiadas explicaciones, pero es mejor documentar todo el proceso,
Para los que estaban esperando ansiosos los links de descarga aqui estan :
Ya llevo unas 14 horas de trabajo con el Yii Framework y la verdad me ha gustado, se parece mucho a Prado, se pueden hacer componentes, el MVC es facil de desarrollar, la configuracion es rapida y el desempeño tambien, solo he tenido un problema con la intenacionalizacion de los nombres en las formas y que todavia no tiene un esquema de pruebas unitarias.
Pero esta entrada no es para hablar de Yii si no de la busqueda de un editor de PHP que por fin llego a su fin (como tambien la busqueda del Framework). Resulta que hace tambien algunos dias andaba buscando un editor para PHP, que me permitiera hacer todas esas cosas que hacen hoy en dia para otros lenguajes como Java; estuve probando editores de codigo como el BlueFish y el Notepad++ los cuales son muy utiles cuando no se tiene o no se puede instalar un IDE como tal, pero queria un IDE de esos de verdad entonces mire Eclipse que no me termina de gustar y Aptana que tiene un soporte muy bueno para PHP pero de nuevo es Eclipse, asi que me dio por probar NetBeans 6.5 con soporte para PHP y me gusto, todavia no tiene todas las caracteristicas que tiene para Java, pero el soporte basico es bueno, eso si instale la version solo con PHP por que si instalo la J2EE y los plugins mi pobre maquina no aguanta asi que estoy utilizando el NetBeans de 36MB y funciona muy rapido. Algunas cosas que si me hacen falta es el Refactor y la generacion de pruebas unitarias.
Despues de unas merecidas vacaciones las cuales aproveche para ver muchas peliculas, vuelvo al camino del desarrollo buscando un Framework para PHP para comenzar a desarrollar algunos proyectos que tengo en la cabeza. Desde mediados del año pasado ando buscando un buen Framework que me permita crear componentes reutilizables, que es una de las principales caracteristicas que busco, pues la idea es crear una serie de componentes y servicios reutilizables en PHP lo que trate de hacer con el Thunder (mi propio Framework ) que no aguanto tanto voltaje de la Web2.0 y que ya esta obsoleto ... Larga vida al Thunder (OOPS, ahora si se firmo el acta de defuncion).
He estado mirando varias alternativas entre ellas: CakePHP, Zend, CodeIgniter, Symfony, Yii y Prado; este ultimo es el que he estado usando para uno de los proyectos de la Universidad y es el que mas me gusta, desafortunadamente tiene tantas cosas y es tan bueno, que eso mismo lo vuelve pesado y al momento de tener aplicaciones robusta su desempeño comienza a decaer, por tal motivo no me he decidido por el. Esta semana pude probar CodeIgniter que me gusto por su simplicidad y recorde los primeros dias de Thunder, es util para realizar proyectos pequeños pues permite hacer cosas bastante rapido, segui buscando y me di cuenta que todos los frameworks interesantes se pasaron al MVC (Modelo-Visor-Controlador), que habia utilizado en el desarrollo de Thunder y por eso no he tenido problemas en el uso de estos (aunque el Prado es mas orientado a eventos), pero creo que necesito algo mas potente que el CodeIgniter aunque me gusto.
Asi que voy a probar Yii que es la continuacion de Prado pero con MVC, con mejoras en el rendimiento y tambien es mas sencillo, asi que hare mi primera aplicacion en Yii de la cual estare contando aqui.