miércoles, 16 de diciembre de 2009

Python en Symbian con PyS60


Hoy nos vamos a cambiar de plataforma. Vamos a ver como instalar el intérprete de Python en un teléfono móvil con sistema operativo Symbian S60 y pondré un par de ejemplos sencillos para dar un primer impulso a todos los que estéis interesados en la programación en Python para dispositivos móviles.

En mi caso voy a utilizar un teléfono Nokia E65. Lo primero que debemos hacer es asegurarnos de que edición de S60 tiene nuestro teléfono. Estó lo podremos solucionar visitando esta página. En el caso del Nokia E65 podemos ver que usa S60 3rd Edition. Visto esto nos dispondremos a descargarnos el intérprete de Python para nuestra versión del sistema operativo y la shell interactiva por si nos interesa hacer alguna prueba.

Nos dirigimos a la página del proyecto PyS60 en sourceforge.net y descargamos la versión que corresponda tanto del intérprete como de la shell interactiva. En el caso de mi dispositivo descargué:

   - PythonForS60_1_4_5_3rdEd.sis  ( Interprete de Python )
   - PythonScriptShell_1_4_5_3rdEd.SIS ( Shell interactiva )

Una vez tengamos esto descargado en nuestro ordenador conectamos el teléfono vía USB y cuando nos muestre el tipo de conexión que queremos realizar elegimos "Transferencia de Datos". Primeramente debemos crear una carpeta en "E:" llamada Python (E:\Python, esto solamente es necesario para los dispositivos de la 3ª Edición) que es donde alojaremos nuestros scripts y donde se alojarán además los scripts de prueba que vienen por defecto en la instalación. Hecho esto podemos volver a conectar el móvil usando esta vez la opción Nokia PC Suite. En el menú elegiremos instalar aplicación y buscaremos primero el intérprete de Python y lo instalaremos. Al finalizar su instalación haremos lo propio con la shell interactiva y ya podemos probar el funcionamiento de Python en nuestro teléfono.

Para ello vamos a aplicaciones y seleccionamos Python. Una vez dentro le damos a opciones y luego Run Script. Se nos mostrarán los siguientes scripts de prueba que podremos ejecutar para ver su funcionamiento:

   - ball.py   ( Una bola que podremos mover con las teclas )
   - filebrowser.py   ( Un navegador de archivos simple )
   - gles_demo.py   ( Figuras en 3D en movimiento )
   - imgviewer.py   ( Un visor de imágenes sencillo )
   - simplecube.py   ( Un cubo en 3D girando )
   - snake.py   ( Típico juego de la serpiente escrito en Python )

Todos estos scripts se encuentran en la carpeta creada anteriromente E:\Python

Ahora desde nuestro ordenador podemos crear nuestro propio "Hello World" para nuestro teléfono. Es muy sencillo, basta con éstas dos líneas:

import appuifw

appuifw.note(u"Hello Symbian!", "info")


Para hacerlo más personal podemos añadir una línea más:

import appuifw

nombre = appuifw.query(u"¿Como te llamas? ", "text")
appuifw.note(u"Bienvenido " + nombre, "info")


Ahora solo tendremos que copiarlo a la carpeta E:\Python de nuestro teléfono y ejecutarlo igual que los anteriores. Un detalle importante que cabe destacar antes de que empecéis a desarrollar aplicaciones es que para imprimir cadenas en pantalla es imprescindible tratarlas como unicode, por tanto no os olvidéis de la "u" delante de la cadena, de otra forma no funcionará.


germaNRG

martes, 8 de diciembre de 2009

Gráficas con Ruby en Ubuntu 9.10


Hoy vamos a ver cómo hacer una gráfica de forma muy sencilla mediante Ruby. Para ello necesitaremos instalar el intérprete de Ruby que ya instalamos en posts anteriores así como el comando gems. Además de esto, tendremos que instalar la librería RMagick, necesaria para hacer funcionar a la estrella de hoy:

 -  La librería Gruff Graphs de Ruby

Para las instalaciones lo haremos de la siguiente forma:

    $ sudo apt-get install librmagick-ruby
    $ sudo gem install gruff

Y una vez instalado todo, vamos a ver ejemplos de gráficas sencillas, rápidas y muy útiles!

Primero una simple de barras:

#!/usr/bin/ruby

require 'rubygems'
require 'gruff'

g = Gruff::Bar.new
g.title = 'Una simple de Barras'
g.data('Uno', 5)
g.data('Dos', 3)
g.data('Tres', 15)
g.write('simple_de_barras.png')


Simple de Barras


Ahora una simple de líneas:

#!/usr/bin/ruby

require 'rubygems'
require 'gruff'

g = Gruff::Line.new
g.title = "Una simple de lineas"
g.data("Uno", [24, 25, 18])
g.data("Dos", [17.5, 17, 16.5])
g.data("Tres", [4, 3.5, 9.5])
g.data("Cuatro", [1, 6.5, 2.5])
g.labels = {0 => '2007', 1 => '2008', 2 => '2009'}
g.write('simple_de_lineas.png')


Simple de lineas


Y por último, otra de barras, con un poco más de gracia:

#!/usr/bin/ruby

require 'rubygems'
require 'gruff'

g = Gruff::Bar.new('800x500')
g.sort = false
g.maximum_value = 50
g.minimum_value = 0

g.theme_37signals
g.title = 'Una mejorada de barras'

g.data('Votos', [5, 10, 24])
g.data('Registros', [15, 3, 10])
g.data('Visitas', [38, 15, 32])
g.labels = {0 => 'Hace 2 años', 1 => 'Hace un año', 2 => 'Este año'}
g.write('mejorada_de_barras.png')


Mejorada de barras

germaNRG

domingo, 6 de diciembre de 2009

Mirando al 2010 - USB 3.0


En estas fechas, que mejor que echar un vistazo a lo que se avecina para el próximo año. Vamos ha hablar del USB 3.0. Intel ya presentó este estándar hace algún tiempo en la IDF prometiendo que vería la luz a lo largo del año 2010. Pero, si aún hay algún despistado que no conoce lo que este nuevo estándar puede ofrecernos, vamos ha hacer aquí un pequeño resumen del avance que éste supone.

Para empezar, hablemos de los "problemas" o deficiencias que se han ido notando con el paso del tiempo en nuestro querido USB 2.0:

   - Relativa lentitud de transferencia de datos
   - Poca capacidad de alimentación

Las principal novedad de este nuevo estándar radica en la adición de 5 líneas al cable. Un USB 2.0 disponía de cuatro líneas, dos de datos, una de corriente y otra de toma de tierra. Con el aumento se conseguirá, entre otras cosas, que se usen dos líneas para enviar datos y otras dos para la recepción permitiendo así un flujo de datos bidireccional en ambos sentidos al mismo tiempo y, un punto muy importante, un aumento de la velocidad muy considerable. El récord de velocidad de transmisión de un USB 2.0 se encontraba en 53 MBytes/seg. y con este nuevo estándar se pretenden alcanzar (teóricamente) los 600 MBytes/seg. Enlas primeras pruebas realizadas se han conseguido velocidade de hasta 307 MBytes/seg. y se espera que siga en aumento conforme se acerquen a la versión final. Esto se resume en transferir 50 GB en aproximadamente 2 minutos. De ahí que ya se le conozca también por el nombre de USB SuperSpeed.

Respecto a la alimentación, se ha aumentado 9 veces la actual. La intensidad de la corriente pasará de los 100 miliamperios actuales a 900. Esto nos dará la ventaja de cargar dispositivos más rápidamente o poder cargar un mayor número de dispositivos, por ejemplo, mediante un hub.

La única pega que, por el momento, le pondría a este avance es el aumento de grosor del cable, que pasaría de ser muy fino y flexible a ser algo más duro y tener el grosor aproximado de un cable de red. Pero ponerle una pega con lo que sabemos por ahora, es ponerse quisquilloso. Ya veremos hasta donde nos sorprende...


germaNRG