Posts

Desarrollar aplicaciones para Android no es tan ágil como con otras tecnologías. Montar la aplicación configurando cada uno de los ficheros XML (cosa que está bien pensada y tal) es un poco pesado y lo peor es que cuando lo quieres probar para ver el resultado tienes que esperar mucho y encima lo más seguro es que casque y que la aplicación se pare de forma inesperada. Voy a dejar aquí algunos consejillos que espero resulten útiles.

Ya la hemos liado

Sin ánimo de entrar en polémicas sobre si es mejor usar un IDE u otro. IMHO (no, no es un entorno ni un dios egipcio, es una forma de decir que esto no es más que una opinión nada autorizada) todos los entornos se te harán igual de lentos. Eclipse, Netbeans, Intelijidea, están hechos en java y ya se sabe, java... chupa. Que sí, que igual alguno va algo mejor en no sé qué sistema con no sé qué configuración, pero al final... poco puedes hacer. En mi caso, en eclipse suelo crear un workspace totalmente vacío para asegurarme que toda la atención de eclipse se centre en un proyecto (seguramente se puede configurar para eso pero en fin).

Eclipse ftw, pero sin más

En cuanto al entorno, por mucho que netbeans lo puedas configurar para programar en android, francamente no es nada personal, pero eclipse fue el elegido y el que te trae todo montado. Y últimamente soy más partidario de mira, déjame dedicarme a programar aplicaciones, no a trabajar para netbeans. Esto es como usar Gentoo, pues sí, mola mucho pero al final yo prefiero un sistema operativo que trabaje para mí y no al revés. El ordenador siempre a mi servicio, que con el colega y el familiar al que le arreglas el XP ya tenemos bastante.


Local Storage

Los navegadores modernos van disfrutando de nuevas capacidades impulsadas por HTML5. Una de las más llamativas es la posibilidad del almacenamiento local, en el cliente, que viene en dos formas: por un lado en dos arrays relacionales que nos permiten guardar datos con un límite supuesto de 5Mb (al estilo del $_SESSION de php pero en el cliente) y por otra parte la posibilidad de tener una base de datos en el cliente. Está última, que un principio parecía iba a ser SQLite finalmente parece que será IndexedDB, puro JS. Otro día.


Para poder hacer cosas básicas en la consola con node tenemos un objeto predefinido llamado process que nos provee de todo los necesario, desde jugar con la stdin, stdout, stderr hasta terminar la ejecución. En un alarde de originalidad, aquí tienes una calculadora muy simple en la que se deben introducir dos números y un operador.

/**
* calc.js
* Trying to code the good ol' calc with node event driven way
* @author Pello Xabier Altadill Izura
* @greetz for you
* An easy/obvious/quick way to discover what comes in an object (events, props):
* console.log(process);  console.log(process.stdin); ...
* Or just check the api online
* http://nodejs.org/api/process.html
*/


    

Hay gente que con la imposición vital esa de que hay que probar de todo va y se mete ketamina. Otros preferimos echar un vistazo a nodejs, en pleno viernes y después de haber visto Guerra Mundial Z. No estaba mal.

nodejs logo

Bueno, definiciones decentes de nodejs tendrás mejores, pero básicamente, aquel javascript que se supone que había para servidor ahora ya no es una especie de mito, ahora es algo completamente viable. Nodejs es una plataforma de desarrollo de aplicaciones de javascript que podemos usar en un servidor para eso, para dar servicio. Y promete un edén de rendimiento y escalabilidad. Una de sus claves es que está orientado a eventos por lo que tienes que cambiar la forma de diseñar las aplicaciones. En node hay un único hilo de ejecución, pero lo petas de eventos. Seguramente habrás visto que te haces un servidor web con 4 líneas de código: es cierto.


Tengo pendiente crear una sección labs en la página para estas cosas. En fin, seguramente esto que puedes ver a continuación ya existe y tal, pero ya se sabe, el reinventing the wheel es una mala/buena costumbre. Se trata de un simple formulario en el que elegimos algunas propiedades para nuestro botón. El botón en principio no es más que un simple enlace. Al pulsar el botón generate se aplican los estilos css mediante un (horrible y mejorable) script de jquery y conseguimos una especie de botón.

Esto no ha sido más que una diversión con un par de objetivos:
  1. Probar algunos campos de formulario de HTML5
  2. Probar algunas propiedades de CSS3: redondeos, sombras en texto y cajas, y gradientes

Los gestores de bases de datos relaciones parecían algo eterno e inamovible en al informática por mucho que aparecieran nuevos lenguajes y entornos de programación. Pero las cosas cambian. Ahora las grandes BBDD no son sola las del gobierno y los bancos, ahora hay muchas aplicaciones que presentan un perfil distinto al de las aplicaciones tradicionales: son aplicaciones que también manejan muchos datos pero en los que sobre todo se hace mucha consulta. Y para acelerar al máximo el servicio de esas consultas el modo tradicional de servir los datos ha cambiado. El modelo entidad relación salta por los aires y se habla de cosas como noSQL.


Arrays
Se dice arrays o arreglos? en fin.
En c++ podemos definir y usar los arrays casi como en C. Ademas tenemos la ventaja de poder crear arrays de objetos. Veamos un programa en c++ que juega con los arrays:
/**
* ArrayEjemplo.cpp
* Clase que inicializa y maneja algunos arrays
*
* Pello Xabier Altadill Izura
*
* Compilado: g++ ArrayEjemplo.cpp -o ArrayEjemplo
*/


    

Una de las razones por las que nacio este codeblog era precisamente para apuntar recetas concretas en algún sitio para luego poder consultarlas, como por ejemplo establecer usuarios en mysql, la típica tontería que nunca te aprendes de memoria porque siempre la consultas. Hoy toca darle al android ya que...

...conectar el móvil android a un linux para poder usarlo como herramienta de desarrollo no es simple, o al menos no es plug-and-play. En mi caso se trata de un móvil LG-E430 sobre un Ubuntu 10.10.

Previamente, antes de enchufar nada si listamos los dispositivos USB con el comando lsusb vemos esto:

linux:~# lsusb
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 0458:003a KYE Systems Corp. (Mouse Systems)
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 003: ID 064e:a102 Suyin Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
linux:~#

Crear un proyecto con Maven es relativamente fácil, una vez que lo inicias, te ajustas a su manera de organizar los directorios y todo son ventajas. Otra cosa útil es que podemos crear proyectos independientes que luego podemos unir/reutilizar en proyectos más complejos. Lo que vamos a hacer en este ejemplo es crear tres proyectos, y uno de ellos, el main o principal, hará uso de los otros dos. No tiene que ver con proyectos padre-hijo y herencia, aquí se trata de proyectos totalmente independientes. De paso revisaremos algunos goals útiles de Maven


HSQLDB es un gestor de bases de datos escrito íntegramente en java, con soporte a la última para SQL, bla bla y afirman ser los líderes en su terreno, los más guapos, los más rápidos,... aunque no dicen nada de H2 por si acaso.

Tiene tres modos de funcionamiento:

  • Memoria: todas las tablas se guardan en la memoria RAM. Acceso local claro está.
  • Fichero: los datos se almacenan en ficheros. Acceso local obviamente.
  • Modo servidor: el acceso puede ser remoto.

Puedes iniciar una conexión a una BD y si no existe la crea al vuelo.

¿Qué utilidad puede tener una cosa así? ¡Todo parece que está en el aire! Como poco, puede resultar muy útil en un entorno de desarrollo o un entorno para hacer pruebas. No precisa instalar un servidor ni poner en marcha nada en concreto, en ese sentido es como una BD SQLite. Otra cosa interesante es que puedes meterle funciones propias... ¡¡hechas en java!! al final todo queda en casa Este gestor de BD te lo encuentras muchas veces cuando ves ejemplos de Hibernate o de aplicaciones java con acceso a BD.

Si te descargas HSQLDB trae una serie de utilidades y una "útil" aunque algo espartana es hsqldb-databasemanagerswing. También tienes la versión awt si eres más espartano que Leonidas. En la distribución linux dispones directamente de ese comando si no es así lo tienes que invocar a mano.

hsqldb manager screen
Ahí creas una BD al vuelo, en este caso una BD llamada example con una tabla llamada table1.

subscribe via RSS