Archivo

Archivo para Noviembre, 2009

Primeros pasos en ChromeOS (Parte II)

Sábado, 28 de Noviembre de 2009

En el post anterior vimos como instalar ChromeOS en una maquina virtual VMWare. Los primeros que lo probasteis os daríais cuenta que el teclado y el idioma por defecto era ingles, haciendo incomodas numerosas acciones como la utilización de símbolos como la @. En el siguiente post indicaremos como cambiar el idioma de teclado y entorno a castellano.

Como comenté en el post anterior, ChromeOS se trata de una distribución tipo Debian, por lo que la forma de cambiar la configuración del teclado es acceder a la configuración de la xorgs. El primer paso es acceder a una shell de bash como root. Para lo cual una vez logeados, deberemos pulsar CTR+ALT+T y se nos mostrara un terminal.

Deberemos pasar a root usando sudo -s y para ello usaremos la contraseña de root “chronos”

$> sudo -s
password: chronos

El sistema raiz esta montado en modo solo lectura por lo que lo “remontaremos” con acceso a escritura

mount -o remount /

ya podemos editar cualquier archivo de conflagración. En nuestro caso editaremos el archivo /etc/X11/xrog.conf y editaremos los siguientes parámetros del apartado “Keyboard”

Option “XkbModel” “pc105″
Option “XkbLayout” “es”

De este modo indicaremos que nuestro teclado es un teclado estándar de 105 teclas y en español. Para que los cambios tengan efecto debereis reiniciar el sistema mediante el comando rebooot.

$> reboot

Pero mejor es dejar el reinicio para mas tarde y seguir configurando el sistema en castellano. Para lo cual deberemos cambiar las variables LANGUAGE y LANG a castellano editando el archivo /etc/enviroment

$> vi /etc/environment

LANGUAGE=”es_Es:es”
LANG=es_ES.UTF-8

Ahora ya podemos reiniciar el sistema y vereis como el teclado ya esta en castellano, por lo que sera mas cómodo manejarlo.

NOTA: Hasta cambiar el idioma, de cara a poder usar VI es importante tener en cuenta que los símbolos : y . están en la Ñ.

Iker Noticias , , ,

Primeros pasos en ChromeOS (Parte I)

Jueves, 26 de Noviembre de 2009

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.

Iker Tecnologia , , , ,

Posibilidades de la nueva funcionalidad de Google Translate

Miércoles, 18 de Noviembre de 2009

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>

Iker Noticias , , , , ,

GeoLocalizacion a través de la IP

Miércoles, 18 de Noviembre de 2009

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).

Iker Tecnologia , , , ,