Entradas de jorge:

Aplicaciones para symbian con QT

Martes, 19 de Enero de 2010

Uno de las cosas que últimamente me han hecho fan de Nokia es la adquisición de Trolltech y lo que está haciendo con las Qt. De momento estoy aprendiendo a manejar las qt utilizando los vídeo tutoriales que cuelga nokia en youtube. Estos ví­deos (1, 2, 3) nos ayudarán a configurar el entorno de desarrollo para symbian y QT. La instalación es un infierno de paquetes separados, rutas que entran en conflicto con instalaciones previas de las librerías y suficientes acuerdos de usuario final como para entretener a legiones de abogados.

Una vez instalado el entorno es realmente cómodo y proporciona una interfaz gráfica para los cuadros de diálogo, un simulador y un entrono de depuración completo. Las librerías Qt nos permiten desarrollar la aplicación tal y como se desarrolla para pc de sobremesa.

Para cargar la aplicación compilamos el resultado para el teléfono y generamos un instalador usando las siguientes ordenes (aquí los vídeos empezaron a fallar debido a los últimos cambios en la sintaxis de las herramientas.):

make debug-gcce
createpackage -i SciCalc_template.pkg debug-gcce

El resultado lo cuelgo aquí para ver si alguien tiene un teléfono nokia con symbian v5.0 y se anima a ver si funciona el paquete directamente. Creo que hay que permitir instalar aplicaciones sin firmar y puede que tenga alguna dependencia externa de qt.sis (La calculadora funciona en RPN por cierto ;-D)

VN:F [1.8.5_1061]
Rating: 5.0/5 (1 vote cast)

La verdadera historia de Newton

Lunes, 18 de Enero de 2010

O por lo menos la versión de William Stukeley

Con bastante revuelo han publicado en la página web de la Royal Society el manuscrito que relata entre otras cosas la historia de como a Newton se le ocurrió la teoría de la gravedad cuando le cayó una manzana.

Lo impresionante de la historia, a parte de que sea un manuscrito que estaba sólo al alcance de los investigadores más importates, es que lo han publicado en 3D dentro de su sección “Turning the pages“. En esta sección podemos encontrar varios manuscritos digitalizados y examinarlos como si los tuviéramos en las manos. Aunque los más románticos siguen opinando que no es lo mismo, hay que reconocer que permite que el gran público tenga acceso a estos documentos.

VN:F [1.8.5_1061]
Rating: 4.0/5 (1 vote cast)

Herramientas gratuitas para diseño de PCB

Sábado, 7 de Noviembre de 2009

No te sobra calderilla para comprar una licencia de Orcad tope de gama… , pues entonces puedes probar con alguna de las cadenas gratuitas de software para diseño de PCB. Ultimamente estado probando la opcion de FreePCB + TinyCad. En conjunto funcionan francamente bien para una proyecto mediano, pero esto es lo que queremos hacer en la mayoría de las aplicaciones “caseras”. Cuesta un poco conseguir que los dos programas trabajen en conjunto pero cuando le cojes el truco a asignar los footprints todo va como la seda. FreePCB no tiene autoroute integrado pero se conecta a una aplicacion java externa que te permite realizarlo sin problemas. Una vez terminado te permite generar los gerber directamente. Para combrobar que los gerber están bien antes de mandarlos podemos usar viewMate que es gratis si no queremos edición.

VN:F [1.8.5_1061]
Rating: 5.0/5 (2 votes cast)

surfing the wave

Jueves, 5 de Noviembre de 2009

Después de conseguir ser invitado a google wave (gracias luis) he estado mirando las posibilidades de desarrollo que ofrece este sistema. Puedes hacer dos cosas meter wave en tu página (de momento el api esta en desarrollo…) o meter código en el wave. Si te vas por la segunda opción puedes crear un gadget o un robot. Los robots son participantes artificiales en la conversación, hay que programarlos en python (sí, en python) o en java, en la plataforma google engine. Esto hace que sean un desarrollo que requiere su tiempo. Los gadget al contrario consisten sólo en un archivo .xml que montas en un servidor tuyo.
El contenedor de gadget básico es el siguiente.

<?xml version="1.0" encoding="UTF-8" ?>

<Module>
  <ModulePrefs title="Hello Wave">
    <Require feature="wave" />
  </ModulePrefs>
  <Content type="html">
    <![CDATA[
       Hello, Wave!
    ]]>

  </Content>
</Module>

Si sustituimos la línea Hello,wave por cualquier codigo html/javascript tendremos un wave gadget funcional.
yo por ejemplo he cogido un código de un juego de barcos en javascript (http://javascript.internet.com/games/battleship.html) y lo he metido en esa sección. Guardamos el archivo xml y lo he colocado en http://2geek2curious.com/jorge/barcos.xml. Proporcionamos esta dirección a wave insertando un gadget por dirección y tenemos nuestro gadget en google wave. Podeis probar a meterlo en vuestra cuenta de wave y me contáis…

gadgets para google wave

gadgets para google wave

VN:F [1.8.5_1061]
Rating: 5.0/5 (3 votes cast)

nprof un profiler para .net

Miércoles, 4 de Noviembre de 2009

Una de las herramientas más impresionantes que hay en línux es el gprof. Esta herramienta te permite ver cuanto tiempo tardas en ejecutar cada una de las llamdas de tu código. Este tipo de herramientas son estupendas para optimizar el rendimiento de un programa. Recientemente he dado con nprof, que realiza la misma función pero para ensamblados .net. Nprof permite analyzar cualquier programa que contenga código .net. Es impresionante como funciona incluso cuando tratamos de analizar plugins (.dll) que se ejecutan sobre ejecutables de los que no tenemos código. Merece la pena echarla un vistazo.

nprof

VN:F [1.8.5_1061]
Rating: 0.0/5 (0 votes cast)

Texto a Voz usando SAPI

Viernes, 9 de Octubre de 2009

He estado jugando con las bibliotecas de texto a voz de windows.

Me ha sorprendido lo fácil que es hacer hablar al ordenador!! En principio solo hay una voz instalada. Puedes instalar otras voces pero he tenido poco éxito en conseguirlas ya que todas las que he encontrado son de pago. El siguiente paso es hacer un lector de correos y rss

De momento os dejo un par de líneas para .net y para python para ejecutar el sintetizador.

VB.NET


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim synth As SpeechSynthesizer = New SpeechSynthesizer()
synth.Speak("Hello, world!")
For Each voic As InstalledVoice In synth.GetInstalledVoices()
synth.SelectVoice(voic.VoiceInfo.Name)
synth.Speak(voic.VoiceInfo.Name)
Next
End Sub

Python (http://www.daniweb.com/code/snippet216573.html)


# Text To Speech using SAPI (Windows) and Python module pyTTS by Peter Parente
# download installer file pyTTS-3.0.win32-py2.4.exe
# from: http://sourceforge.net/projects/uncassist
# also needs: http://www.cs.unc.edu/Research/assist/packages/SAPI5SpeechInstaller.msi
# and pywin32-204.win32-py2.4.exe at this date the latest version of win32com
# from: http://sourceforge.net/projects/pywin32/
# tested with Python24 on a Windows XP computer vagaseat 15jun2005

import pyTTS
import time
tts = pyTTS.Create()
# set the speech rate, higher value = faster
# just for fun try values of -10 to 10
tts.Rate = 1
print "Speech rate =", tts.Rate
# set the speech volume percentage (0-100%)
tts.Volume = 90
print "Speech volume =", tts.Volume
# get a list of all the available voices
print "List of voices =", tts.GetVoiceNames()
# explicitly set a voice
tts.SetVoiceByName('MS-Anna-1033-20-DSK')
print "Voice is set ot MS-Anna-1033-20-DSK"

VN:F [1.8.5_1061]
Rating: 4.0/5 (1 vote cast)

Los lenguajes de programación más populares

Miércoles, 30 de Septiembre de 2009

En la página web de TIOBE (http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html) podemos encontrar una comparativa de la populardiad de los lenguajes más usados. En esta página podemos ver la evolución del uso los lenguajes comparados con los valores del año pasado o la progresión más detallada en forma de gráficos. Personalmente me sigue sorprendiendo que java sea uno de los lenguajes más usados… (si alguien conoce otra aplicación de distribución masiva en java que no sea matlab me gustaría conocerla…). La estadística no tiene desperdicio, incluyendo que el PHP sea el tercer lenguaje más usado.

Programming Language Position
Sep 2009
Position
Sep 2005
Position
Sep 1999
Position
Sep 1984
Java 1 1 4 -
C 2 2 1 1
PHP 3 5 - -
C++ 4 3 2 11
(Visual) Basic 5 6 3 4
Perl 6 4 11 -
C# 7 7 22 -
Python 8 8 26 -
JavaScript 9 9 21 -
Ruby 10 25 - -
VN:F [1.8.5_1061]
Rating: 5.0/5 (1 vote cast)

khet

Miércoles, 26 de Agosto de 2009

Según la página web oficial khet “es un juego que combina los lasers con la estrategia clásica”. El juego consiste en una especie de combinación de ajedrez y damas, con piezas espejo. El jugador que consiga colocar sus fichas de tal manera que un rayo laser mate al faraón rebotando en ellas gana. El juego se puede comprar en thinkgeek y en otras páginas web.

VN:F [1.8.5_1061]
Rating: 4.0/5 (1 vote cast)

creando diagramas con DIA, ADO y python

Miércoles, 19 de Agosto de 2009

El programa DIA es una potente herramienta para la creacion de muchos tipos de diagramas, UML, ER, Flujo… En las últimas versiones del programa han añadido una consola de python para desarrollar tus propios plug-ins.

Como ejemplo aquí (const. ADO python) dejo unos scripts que permiten permiten importar las descripciones de las tablas de una base de datos access. El ejemplo usa ADO y ADOX para acceder a las bases de access, por lo tanto solo servirá para la gente que use windows. De cualquier manera tampoco se me ocurren muchas razones por las que un usuario de linux utilize access.

Una de las cosas que mas me ha sorprendido que la sencillez con la que podemos cargar con python cualquier componente ActiveX. Esto se realiza mediante la librería win32 para python

VN:F [1.8.5_1061]
Rating: 0.0/5 (0 votes cast)

Etiquetas Mp3 con python y eyeD3

Jueves, 30 de Julio de 2009

¿Nunca os ha molestado que el itunes no ordene las canciones según el nombre del archivo? Supongo que no es un problema que le haya pasado a mucha gente… De cualquier manera las librerías eyeD3 (http://eyed3.nicfit.net/) para python proporcionan una interfaz muy rápida y cómoda para acceder a los metadatos de las canciones MP3. Con ellas podemos actualizar título, artísta, nombre, numero de track…

import os
import random
import shutil
import eyeD3


listing = os.listdir('''C:\\compartidos\\musica\\random''')
print "numero canciones:",len(listing)
for n in range(1,len(listing)):
if (listing[n].rfind(".jpg")==-1):
try:
tag = eyeD3.Tag()
tag.link('''C:\\compartidos\\musica\\random\\'''+listing[n])    # no tag in this file, link returned False
print "antiguo:",tag.getTitle()
tag.setTitle(listing[n])
tag.update()
print tag.getTitle()
except InvalidTagError, message:
print "Invalid ID3 tag:", message
break
except IOError,message:
print "ioerror",message

Ahora ya podemos usar el nombre del archivo como título de la canción y así tener una lista de reproducción que funcione en cualquier sistema de reproducción (aunque lo suyo sería no haber usado nunca itunes…)

VN:F [1.8.5_1061]
Rating: 0.0/5 (0 votes cast)