Posts by: Iker

Primeros pasos en ChromeOS (Parte I)

La verdad es que hace unos días que ya estaba disponible el nuevo sistema operativo de Google, pero hasta hoy no me he puesto a probarlo y cacharrear con el. A primera vista decir que es un sistema operativo es un pelin exagerado ya que básicamente se trata de una distribución GNU/Linux, mas concretamente una Ubuntu, con las xorg y librerías GTK instaladas. Lo suficiente para lanzar el navegador Web de Google llamado, como no, Chrome. Básicamente podemos hacer los mismo instalando una Ubuntu Server, las xorg y añadir una línea en rc.local para que lance un navegador al iniciar la sesión. Aun así, en el caso de Chrome OS es algo un poco mas elaborado ya que dispone de un sistema de login que se autentica a través de http con Google usando tu cuenta de Google. Por tanto ChromeOS, como ya habian manifestado de de Google, es un sistema operativo basado en su navegador y en “aplicaciones en la nube”.

Manos a la obra

Para empezar lo mejor es instalar ChromeOs en una VMWare y hacer las pruebas desde la maquina virtual. Para lo cual podemos bajarnos una imagen desde:

http://gdgt.com/google/chrome-os/download/

Una vez descargada la imagen crearemos una nueva maquina virtual.

VmWare: Accedemos a Archivo, Nuevo, Maquina Virtual

Crearemos una Maquina virtual típica y seleccionaremos “Instalare el sistema operativo mas tarde”. Como sistema operativo seleccionaremos Linux y la distribución UBUNTU.

WmWare: elejimos tipica

En nuestro caso llamaremos a nuestra Maquina Virtual ChromeOS. Una vez creada descomprimiremos la imagen de Crome descargada anteriormente y la copiaremos dentro del directorio ChromeOS donde hemos creado la maquina virtual.

A continuación añadiremos la imagen descargada y la configuraremos como disco duro principal. Para lo cual iremos a configuración. En el listado de Hardware pulsaremos Añadir y elegiremos añadir un Disco Duro. En nuestro caso elegiremos usar una Imagen ya existente.

Por tanto seleccionaremos la imagen descargada y la añadiremos manteniendo el formato original. Una vez añadida la nueva imagen podemos eliminar la imagen creada por defecto.

Ya tenemos la Maquina Virtual instalada por lo que ya solo nos queda ejecutar la maquina virtual y empezar a usar ChromeOS.

Para logearnos deberemos usar nuestra cuenta de Google. En caso de tener problemas con la conexión aseguraros que la tarjeta de red esta en modo bridge.

Si aun así no conseguis logearos podéis usar el usuario local.

Username: chronos
Password: <en_blanco>

En las próximas entradas explicare como acceder como root a la consola y configurar ChromeOS en Castellano y la posibilidad de conectarse a través de un Proxy.

Posibilidades de la nueva funcionalidad de Google Translate

Google ha actualizado su sistema de traducción con una nueva funcionalidad: es posible escuchar el texto y así comprobar la pronunciación. La verdad es que el resultado (probado en Ingles) es bastante bueno e imagino que dentro de algún tiempo estará disponible en castellano.

Por curiosidad he estado mirando como podría usarse esta funcionalidad por parte de aplicaciones de terceros y he obtenido que el audio se genera a partir de un script al que es posible llamar de la siguiente manera:

http://translate.google.com/translate_tts?q=<testo_codificado> &tl=<lenguaje>

Donde <texto_codificado> es el texto a pronunciar codificado con la función URLEncode (que es posible encontrar en casi todos los lenguajes) y donde <lenguaje> es el código del lenguaje en el que esta el texto (por ahora solo parece funcionar con Ingles “en”).

Un ejemplo de cómo quedaría seria el siguiente:

http://translate.google.com/translate_tts?q=This%20is%20a%20text%20in%20English%20that%20can%20be%20heard&tl=en

La forma de generar este tipo de URLs de forma dinámica en PHP seria la siguiente:

<?php

function getTranslatedSound($string){
$string=str_replace(” “,”%20″,$string);
$string = “?q=”.$string.”&tl=en”;
$string = “http://translate.google.com/translate_tts”.$string;
return $string;
}

$string = getTranslatedSound(“This is a text in English that can be heard”);
echo $string;
?>

Con lo que las posibilidades son enormes:

  • Adaptar páginas para ciegos
  • Crear Presentaciones Dinámicas con audio
  • Escuchar una conferencia en directo sin necesidad de streaming usando Twitter o similares.
  • Etc,…

Es decir, la combinación de esta funcionalidad con tecnologías como Ajax o Flash podría revolucionar muchos de los servicios actuales. Ahora toca correr a aquellas personas que quieran ser los primeros en dar ese servicio y colocarse en una posición dominante en el mercado.

Actualización [18/11/2009 16:33]

He añadido un ejemplo con javascript para crear un CHAT de voz.

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN”
“http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml” lang=”en” xml:lang=”en”>
<head>
<script>
function DHTMLSound(surl) {
document.getElementById(“output”).innerHTML = document.getElementById(“output”).innerHTML + “<br/>” + surl;
surl = surl.replace(new RegExp(/\s/g),”%20″);
document.getElementById(‘sound’).value = “”;
document.getElementById(“dummyspan”).innerHTML=”<embed src=’http://translate.google.com/translate_tts?q=”+surl+”&tl=en’ hidden=true autostart=true loop=false>”;

}
</script>
</head>
<body>
<span id=dummyspan></span>
<form>
<textarea id=”sound”></textarea>
<input type=”button” value=”Play Sound” onClick=”DHTMLSound(document.getElementById(‘sound’).value)”>
</form>
<span id=”output”></span>
</body>
</html>

GeoLocalizacion a través de la IP

Hoy en una lista de distribución alguien ha hecho una consulta sobre GeoLocalizacion a través de la IP. La verdad es que he hecho muchas pruebas con diferentes entornos de programación utilizando las librerías que proporciona MaxMind. Por eso en este artículo voy a explicar como implementar un sistema de GeoLocalicacion basado en IP usando PHP y Python.

PHP

Empezaremos por PHP ya que quizá sea la opción mas útil y mas fácil de implementar. En esta ruta podéis descargaros las librerías necesarias y algunos ejemplos:

http://geolite.maxmind.com/download/geoip/api/php/

Por tanto para empezar con el ejemplo nos bajaremos los siguientes archivos:
http://geolite.maxmind.com/download/geoip/api/php/geoipcity.inc
http://geolite.maxmind.com/download/geoip/api/php/geoipregionvars.php
http://geolite.maxmind.com/download/geoip/api/php/geoip.inc

También deberemos bajarnos la base de datos donde se encuentran todas las relaciones entre IP y su localización.

http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz

Por tanto copiamos los archivos .inc en nuestra ruta de pruebas /var/www/prueba y extraemos en GeoLiteCity.dat en la misma ruta. Finalmente creamos un GeoipTest.php con el siguiente código:

<?php
include(“geoipcity.inc”);
include(“geoipregionvars.php”);

$ip = $_SERVER['REMOTE_ADDR'];

$gi = geoip_open(“./GeoLiteCity.dat”,GEOIP_STANDARD);
$record = geoip_record_by_addr($gi,$ip);

echo “<br/>”.$record->city;
echo “<br/>”.$record->country_code;
echo “<br/>”.$GEOIP_REGION_NAME[$record->country_code][$record->region];
echo “<br/>”.latitude($record->latitude);
echo “<br/>”.longitude($record->longitude);

?>

Python

La mejor manera de instalar las librerías para python si estáis en un entorno Debian es usar apt-get:

En este caso la instalación guarda los diferentes archivos (librerías y base de datos) en sus rutas por defecto, por tanto nos abstraeremos de esa información (el caso de querer definir una ruta o usar una base de datos determinada usar la definición de GeoIP.Open comentada en el ejemplo).

apt-get install python-geoip

Para usar las librerías usaremos el siguiente ejemplo GeoipTest.py

Import GeoIP

ip =<metodo_para_obtener_ip>
gi = GeoIP.new(GeoIP.GEOIP_MEMORY_CACHE)
# gi = GeoIP.open(“/usr/local/share/GeoIP/GeoIPCity.dat”,GeoIP.GEOIP_STANDARD)
gir = gi.record_by_addr(ip)

if gir != None:
  print gir['city']
  print gir['country_code']
  print gir['region_name']
  print gir['latitude']
  print gir['longitude']

Con este código obtendríamos la misma información que en el caso anterior (con PHP).

And.roid.es sortea un HTC magic por su primer aniversario

Los chicos de And.roid.es han montado un sorteo de un HTC magic con Android para celebrar su primer aniversario. Para poder participar solo hay que escribir un artículo sobre ellos y sobre su concurso en tu blog y pasarles el enlace a vuestro blog en su web. ESTO ES SEO Y LO DEMAS SON TONTERIAS. En ese momento me he acordado de mi blog, borrado N veces y abandonado sin remedio y me he dicho “Que mejor escusa para actualizarlo!”. La verdad es que cuando los chicos de and.roid.es verifiquen este articulo van no van a encontrar gran cosa en este blog, pero bueno este Google bombing de guante blanco funcionara igual sea mi blog el mas popular del mondo o no. Si os interesa participar en el sorteo aquí tenéis el enlace a su pagina.

http://and.roid.es/androides-sorteo-aniversario-htc-magic-vodafone.html

Lanzar rutinas con Postfix

En este post voy a explicar como añadir un filtro o rutina a Postfix. Esto nos puede servir para desarrollar cualquier aplicación basada en el correo electrónico, como puede ser el control remoto de tu maquina, administración de contenidos de una Web u otro tipo de aplicaciones gestionadas a trabes del correo electrónico.

La configuración de postfix en una maquina GNU/Linux es bastante sencilla, basta con hacer:

$> apt-get install postfix



y configurar Postfix para que acepte correos de nuestros dominios editando el archivo /etc/postfix/main.cf

$> vi /etc/postfix/main.cf


/etc/postfix/main.cf

myhostname = biospam.pandasoftware.local
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = localhost, midominio.com
relayhost =
mynetworks = 127.0.0.0/8



Una vez comprobado que recibimos nuestro correo correctamente pasamos a configurar Postfix para que ejecute un script cada vez que llegue un correo. Por tanto editaremos el archivo /etc/postfix/master.cf de la siguiente manera:

Al principio del documento añadiremos (en negrita):

/etc/postfix/master.cf

# =============================================================
# service type private unpriv chroot wakeup maxproc command
# (yes) (yes) (yes) (never) (100)
# =============================================================
smtp inet …other stuff here, do not change… smtpd
-o content_filter=filter:dummy



Para decirle que aplique la rutina filter por cada conexión smtp entrante.

Abajo definimos la rutina filter de la siguiente manera:

/etc/postfix/master.cf

# =============================================================
# service type private unpriv chroot wakeup maxproc command
# (yes) (yes) (yes) (never) (100)
# =============================================================
filter unix – n n – 10 pipe
flags=Rq user=filter argv=/path/to/script -f ${sender} — ${recipient}



donde argv será la ruta al script que lanzara nuestra aplicación.

Un ejemplo de script podría ser este:

1 #!/bin/sh
2
3 # Simple shell-based filter. It is meant to be invoked as follows:
4 # /path/to/script -f sender recipients…
5
6 # Localize these. The -G option does nothing before Postfix 2.3.
7 INSPECT_DIR=/var/spool/filter
8 SENDMAIL=”/usr/sbin/sendmail -G -i” # NEVER NEVER NEVER use “-t” here.
9
10 # Exit codes from
11 EX_TEMPFAIL=75
12 EX_UNAVAILABLE=69
13
14 # Clean up when done or when aborting.
15 trap “rm -f in.$$” 0 1 2 3 15
16
17 # Start processing.
18 cd $INSPECT_DIR || {
19 echo $INSPECT_DIR does not exist; exit $EX_TEMPFAIL; }
20
21 cat >in.$$ || {
22 echo Cannot save mail to file; exit $EX_TEMPFAIL; }
23
24 # Specify your content filter here.
25 python filter.py
26 echo Message content rejected; exit $EX_UNAVAILABLE; }
27
28 $SENDMAIL “$@”
29
30 exit $?



Donde podríamos llamar a nuestro script en python filter.py que parsearia el mensaje realizando las diferentes funciones. Por ejemplo podríamos recoger el subject del mensaje y lanzarlo como un comando. De tal manera que si mandáramos un mensaje con el subject “halt” podríamos apagar la maquina de forma remota.

Espero que os haya sido de gran ayuda!

Hola Mundo!

Reempezamos de nuevo..

No se cuantas veces he escrito este post… pero bueno, como se suele decir, “siempre hay que intentarlo”. He vuelto a borrar el WordPress y a empezar de nuevo el blog y espero que esta vez consiga actualizarlo con más o menos asiduidad y escribir cosas que os puedan interesar.

Un saludo.

Iker.

Crear un cliente de Gtalk con Adobe Air

Según comentan en Barrapunto Adobe lanza Flex y Air para Linux. A mi no me decía mucho, ya que conocía estas tecnologías de oídas, y la verdad es que no tenia ni idea de que se trataban.

En el artículo comentan que Air es algo similar al Prism de Mozilla, por lo que me he podido hacer una idea inicial y no he tardado en intentar hacer algún script de ejemplo.

Instalando la SDK

Lo primero que tienes que hacer es instalar el “interprete” de AIR para poder ejecutar tus aplicaciones.

http://get.adobe.com/air/
o
http://airdownload.adobe.com/air/win/download/1.0/AdobeAIRInstaller.exe

Una vez instalado el intérprete tienes que instalar la SDK que es posible descargar desde este enlace:

http://airdownload.adobe.com/air/win/download/1.0/AdobeAIRSDK.zip

Descomprimimos el ZIP y añadimos al PATH el directorio /bin

Creando un Ejemplo Básico

Creamos un Directorio llamada GTalk y dentro de este dos archivos: GTalk-app.xml y GTalk.html

Gtalk-app.xml

<?xml version=”1.0″ encoding=”UTF-8″?>
<application xmlns=”http://ns.adobe.com/air/application/1.0″>
<id>google.gmail.GTalk</id>

<version>0.1</version>
<filename>Googel Talk</filename>
<initialWindow>
<content>GTalk.html</content>

<visible>true</visible>
<width>300</width>
<height>600</height>
</initialWindow>

</application>

Donde Indicamos propiedades como el nombre de la aplicación o las dimensiones de la ventana de la aplicación.

GTakl.html

<html>
<head>
<title>Google Talk</title>
</head>

<body>
<iframe src =”http://talkgadget.google.com/talkgadget/popout” width=”100%” height=”100%” name=”gtalk” frameborder=”0″> </iframe>

</body>
</html>

Es un archivo HTML normal. En el head editamos la etiqueta titulo para definir el titulo que aparecerá en la ventana. En el body editamos una etiqueta iframe que se enlazara con el cliente flash de Gtalk propio de Google.

Si abrimos GTakl.html podemos ver que el cliente funciona correctamente.

GTalk.html en Firefox

Por tanto es hora de probar que funciona nuestro scripr de AIR. Por tanto ejecutaremos el comando ADL

$~ [ruta_air_sdk]\adl.exe GTalk-app.xml

Y veremos ejecutarse nuestra aplicación de AIR.

Gtalk ejecutandose en Adobe AIR

Finalmente “compilaremos” nuestra aplicación para generar un .air instalable y redistribuible.

Para ello deberemos primero crear un certificado.

$~ [ruta_air_sdk]\adt -certificate -cn SelfSigned 1024-RSA sampleCert.pfx samplePassword

Y finalmente generar a instalador.

$~ [ruta_air_sdk]\adt -package -storetype pkcs12 -keystore sampleCert.pfx GTalk.air
GTalk-app.xml GTalk.html

Ya disponemos de una aplicación GTalk basada en Adobe AIR multiplataforma.

Instalando ANDROID + ECLIPSE en WINDOWS (2000 o XP)

En el artículo anterior explicábamos como instalar ANDROID y ECLIPSE en UBUNTU. Ahora toca el turno a Windows y puesto que la configuración de eclipse es la misma en ambos sistemas operativos solo se explicara como se instalan el SDK y ECILPSE en el ordenador.

El primer paso es instalar el SDK, para lo cual nos lo descargaremos de esta dirección:

http://dl.google.com/android/android_sdk_windows_m3-rc20a.zip

Una vez descargado y descomprimida cambiamos el nombre de la carpeta “android_sdk_windows_m3-rc20a” por “android_sdk” y la movemos a nuestro C:\Archivos de Programa\.

Para terminar la instalación solo falta añadir la ruta del SDK al path, para lo cual vamos a INICIO> Configuración > Panel de Control y entramos en Sistema.

Dentro del panel de Sistema vamos a la pestaña Opciones Avanzadas y pulsamos en Variables de Entorno

Se nos mostraran dos listas de variables: Variables de usuario para usuario y variables del sistema. En nuestro caso añadiremos una variable y cambiaremos el path en la lista de Variables del sistema para que todos los usuarios tengan acceso al SDK.

Por tanto pulsaremos en Nueva y nos aparecerá un cuadro de dialogo donde meteremos el nombre de la variable y su ruta. En el caso del SDK pondremos como nombre SDK_ROOT y la ruta C:\Archivos de Programa\android_sdk y pulsamos Aceptar. La nueva variable se añadirá a la lista.

Ya solo falta añadir la ruta al path, por tanto, buscamos la variable PATH de la lista de Variables del sistema, y pulsamos sobre ella dos veces. Se nos aparecerá el mismo cuadro de dialogo de antes peor esta vez completo con el nombre PATH un montón de rutas que están añadidas al path separadas por “;”. Por tanto añadiremos los siguiente al final del campo Valor de la variable: ;%SDK_ROOT%\tools

NOTA: no olvidar el “;” ni los “%”

Pulsamos Aceptar a todas las ventanas hasta cerrarlas todas y ya tenemos el SDK instalado.

Y asolo faltaría instalar Eclipse. Para instalar eclipse solo hay que descargarse eclipse del siguiente enlace, descomprimirlo y mover la carpeta a C:\Archivos de Programa\. (para que esté todo mas ordenado..)

A partir de aquí faltaría configurar y plugin de android para eclipse. Los pasos son idénticos que en Ubuntu así que podéis seguir los mismos pasos que se indican en el articulo anterior.

Instalando ANDROID + ECLIPSE en UBUNTU

En este artículo vamos a explicar mas detalladamente la instalación de ANDROID SDK, ECLIPSE y el PLUGIN DE ANDROID para eclipse en UBUNTU. Básicamente son las mismas instrucciones que aparecen en la pagina de google pero un poco mas comentadas y con imágenes, para que aquellos que siempre se os atraviesan las instalaciones lo tengáis mas fácil.

NOTA: En esta guía supondremos que hacemos una instalación para el usuario de nombre “user”.

Lo primero descargar ABDROID SDK, podes hacerlo con vuestro navegador o por consola con wget. Por tanto abrimos una consola y nos situamos en nuestro home. Descomprimimos y cambiamos en nombre del directorio “android_sdk_linux_m3-rc20a” por “android_sdk”

user@ubuntu:~$ wget http://dl.google.com/android/android_sdk_linux_m3-rc20a.zip
user@ubuntu:~$ unzip android_sdk_linux_m3-rc20a.zip
user@ubuntu:~$ mv android_sdk_linux_m3-rc20a android_sdk

Finalmente para terminar la instalación tendremos que añadir el SDK al path, por tanto editaremos el archivo .bashrc de nuestro /home con cualquier editor de texto (vi, gedit, kate…) y añadiremos las siguientes des lineas al final del documento:

user@ubuntu:~$ vi /home/user/.bashrc

export SDK_ROOT=/home/user/android_sdk
export PATH=$SDK_ROOT/tools:$PATH

Y atenemos el SDK instalado y es posible acceder a sus aplicaciones desde consola, por tanto ahora nos queda instalar un IDE para programar cómodamente nuestras aplicaciones. Para eso el IDE idóneo es ECLIPSE ya que existen plugins para trabajar con ABDROID de forma sencilla.

Por tanto, en caso de que no lo hubiéramos instalado, pasamos a instalar ECLIPSE:

user@ubuntu:~$ apt-get install eclipse

Tras descargarse, se instalara automáticamente gracias a APT por lo que una vez finalizada la instalación ya podremos lanzar eclipse. En caso de que no dispongas de ningún acceso directo a la aplicación podéis acceder por consola.

user@ubuntu:~$ eclipse

Una vez iniciado eclipse nos vamos al menú Help > Software Updates > Find and Install….

Seleccionamos Search for new features to install y pulsamos Next.

Pulsamos New Remote Site y se nos mostrara un dialogo que nos pedirá una URL y un nombre para identificar el “repositorio”. Por nombre podemos poner “Android” y en la URL introducimos la siguiente dirección:

https://dl-ssl.google.com/android/eclipse/

y pulsamos OK.

Se nos añadirá un repositorio a la lista, lo seleccionamos (si no lo esta) y pulsamos Finish.

Nos aparecerá ahora un árbol con la siguiente estructura: Android Plugin > Eclipse Integration > Android Development Tools, los seleccionamos todos y pulsamos Next.

Aceptamos las condiciones de la licencia y pulsamos Next.

Finalmente nos aparecerá una lista de tareas a instalar, y nos aparecerá “Android Developm..”, y pulsamos Finish.

El instalador descargara el paquete y lo instalara automáticamente.

NOTA: El plugin ADT no esta firmado por lo que deberemos aceptar su instalación a pesar de ello.. por lo que pulsaremos Install All.

Ya esta el plugin completamente instalado, y solo falta reiniciar eclipse.

Una vez reiniciado solo falta configurar el plugin indicándole la ruta al SDK, por lo tanto accedemos al menú Window > Preferences…

seleccionamos ANDROID e introducimos la ruta a nuestro SDK, que en nuestro ejemplo era /home/user/android_sdk/.

Finalmente pulsamos Apply y nos aparecerá una ventana con un aviso de que el plugin ya esta instalado y configurado correctamente.

Ya tenemos nuestro entorno de desarrollo completamente instalado. En siguientes artículos explicaremos como hacer pequeñas aplicaciones paso a paso!!!

1 2 3 4 5 Scroll to top