<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="http://www.lacoctelera.com/stylesheets/atom.css" type="text/css"?>
<feed version="0.3" 
xmlns="http://purl.org/atom/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
>
	<title>N3uro5i5</title>
	<tagline type="text/html" mode="escaped">Blog Personal de Miguel Ángel Martínez Triviño</tagline>
	<link rel="alternate" type="text/html" href="http://www.lacoctelera.com/n3uro5i5"/>
	<modified>2008-11-30T12:10:54+00:00</modified>
	<info type="application/xhtml+xml" mode="xml">
		<div xmlns="http://www.w3.org/1999/xhtml">
			This is an Atom syndication feed. It is intended to be viewed in a news aggregator or syndicated to another site.  Please visit the <a href="http://intertwingly.net/wiki/pie/">Atom Project</a> for more information.
		</div>
	</info>	
	<dc:subject>Tecnología</dc:subject>
	
	<generator url="http://www.the-shaker.com" version="v0.1">the-shaker: that blog/flickr/multimedia-aggregator kind of thing</generator>
		<logo>http://4.lcassets.com/myfiles/n3uro5i5/avatar265x65.jpg</logo>
	<entry>
		<id>http://www.lacoctelera.com/n3uro5i5/post/2008/11/30/mi-thunderbird-a-k-a-gmail-killer</id>
		<title>Mi Thunderbird - A.K.A Gmail Killer</title>
		<link rel="alternate" type="text/html" href="http://www.lacoctelera.com/n3uro5i5/post/2008/11/30/mi-thunderbird-a-k-a-gmail-killer" />
		<issued>2008-11-30T12:10:54+00:00</issued>
		<updated>2008-11-30T18:01:11+00:00</updated>
		<content type="text/html" mode="escaped">		
&lt;p&gt;Me gusta Gmail, me encanta Gmail, pero el tener varias cuentas de correo me han obligado a buscarme una solución donde tener a mano todas ellas. Y como cada vez paso más tiempo Offline necesitaba una herramienta que me permitiera limpiar mi inbox en esos momentos.
&lt;/p&gt;
&lt;p&gt;Como &lt;a href=&quot;http://gmail.com&quot;&gt;Gmail&lt;/a&gt; soporta &lt;a href=&quot;http://es.wikipedia.org/wiki/IMAP&quot;&gt;Imap&lt;/a&gt; y &lt;a href=&quot;http://www.mozilla-europe.org/es/products/thunderbird/&quot;&gt;Thunderbird&lt;/a&gt; tiene una buena integración con éste, creí sería una buena opción. Pero claro, la condición de abandonar mi querido Gmail era obtener algún extra y por supuesto conservar la mayoría de las características de éste, por lo que me puse manos a la obra en busca de complementos que lo convirtiera en mi lector de correo indispensable.
&lt;/p&gt;
&lt;h3&gt;Complementos instalados:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/es-ES/thunderbird/addon/2313&quot;&gt;Lightning&lt;/a&gt;&lt;/li&gt;
&lt;p&gt;
Es &lt;b&gt;&quot;el complemento&quot;&lt;/b&gt;, ya que genera calendarios que pueden ser sincronizados entre otros servicios con Google Calendar. Su integración en la aplicación es sublime pudiendo ver desde la pantalla de correo las tareas a hacer hoy, mañana, etc.&lt;br /&gt;
&lt;b&gt;Indispensable.&lt;/b&gt;
&lt;/p&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/es-ES/thunderbird/addon/4631&quot;&gt;Google Calendar Provider&lt;/a&gt;
&lt;li&gt;
&lt;p&gt;
Si queremos utilizar Lightning sincronizado con Google Calendar, nos habremos percatado que el acceso es de solo lectura, y es aquí donde entra en juego GCprovider permitiendo el acceso bidireccional a nuestros calendarios.
&lt;/p&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/es-ES/thunderbird/addon/1339&quot;&gt;GmailUI&lt;/a&gt;&lt;/li&gt;
&lt;p&gt;
Añade entre otras funciones, la posibilidad de archivar mensajes, atajos de techado así como búsquedas al más puro estilo Gmail
&lt;/p&gt;
&lt;li&gt;&lt;a href=&quot;http://quotecolors.mozdev.org/&quot;&gt;QuotedColors&lt;/a&gt;&lt;/li&gt;
&lt;p&gt;
Colorea los textos citados existentes en los mensajes.
&lt;/p&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/es-ES/thunderbird/addon/6095&quot;&gt;Zindus&lt;/a&gt;&lt;/li&gt;
&lt;p&gt;
Sincronización bidireccional de las libretas de contactos y direcciones entre Gmail y Thunderbird.
&lt;/p&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/es-ES/thunderbird/addon/71&quot;&gt;EnigMail&lt;/a&gt;&lt;/li&gt;
&lt;p&gt;
Soporte para (de)codificación y firma de correos usando &lt;a href=&quot;http://www.gnupg.org/&quot;&gt;GnuPG&lt;/a&gt;, así como administración de claves.
&lt;/p&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/es-ES/thunderbird/addon/7125&quot;&gt;Remember The Milk Provider&lt;/a&gt;&lt;/li&gt;
&lt;p&gt;Sincronización y creación de tareas en RTM&lt;/p&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/es-ES/thunderbird/addon/393&quot;&gt;MessageFaces&lt;/a&gt;&lt;/li&gt;
&lt;p&gt;
Muestra el avatar del remitente del mensaje, soporta &lt;a href=&quot;http://en.gravatar.com/&quot;&gt;Gravatar&lt;/a&gt;.
&lt;/p&gt;
&lt;/ul&gt;
&lt;p&gt;Con todos estos complementos creo que tenemos un gestor de correo/calendario/tareas bastante completo, pero si que es cierto que hecho de menos una cosa, que es la posibilidad de ver todos los mensajes de un hilo de conversación de forma continua, al estilo Gmail :-(.&lt;/p&gt;
&lt;p&gt;Hasta ese momento, no podré decir que tengo el lector de correo definitivo, pero va en camino ;-)
&lt;/p&gt;
&lt;/li&gt;&lt;/li&gt;
		</content>
	</entry>
	<entry>
		<id>http://www.lacoctelera.com/n3uro5i5/post/2008/11/19/busevilla-localiza-tu-autobus</id>
		<title>BuSevilla. Localiza tu autobús</title>
		<link rel="alternate" type="text/html" href="http://www.lacoctelera.com/n3uro5i5/post/2008/11/19/busevilla-localiza-tu-autobus" />
		<issued>2008-11-19T09:34:31+00:00</issued>
		<updated>2008-11-23T12:33:57+00:00</updated>
		<content type="text/html" mode="escaped">		
&lt;p&gt;Los últimos acontecimientos me han hecho decidir sacar a la luz uno de mis proyectos personales, &lt;a href=&quot;http://busevilla.com&quot;&gt;BuSevilla&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
BuSevilla nació de una frase de &lt;a href=&quot;http://twitter.com/eduardo&quot;&gt;Eduardo&lt;/a&gt; que decía ¿Migue sería muy complejo colocar los autobuses de &lt;a href=&quot;http://tussam.es&quot;&gt;Tussam&lt;/a&gt; en el mapa?.
&lt;/p&gt;
&lt;p&gt;
Desde ese momento me puse manos a la obra, primero por mi cuenta, luego desarrollándolo con la colaboración de mis compañeros &lt;a href=&quot;http://juan.gg&quot;&gt;Juan&lt;/a&gt; y &lt;a href=&quot;http://ceritium.net&quot;&gt;Jose&lt;/a&gt; y presentándolo al concurso &lt;a href=&quot;http://open.movilforum.com/&quot;&gt;OpenMovilForum&lt;/a&gt; con el nombre de &lt;a href=&quot;http://open.movilforum.com/node/510&quot;&gt;OhMyBus!&lt;/a&gt;.
&lt;/p&gt;
&lt;P&gt;
Finalmente, tenía la espinita clavada de dejar siempre los proyectos a la mitad, por lo que le di el último impulso obteniendo la aplicación en el estado actual.
&lt;/p&gt;
&lt;p&gt;
BuSevilla &lt;b&gt;hace uso de una API que tiene Tussam&lt;/b&gt; desde la que obtengo las estimaciones, y al no tener ningún acuerdo con ellos y viendo que últimamente está sufriendo muchos cambios, todos dirigidos a hacerla cada vez más cerrada (ayer mismo la tuve que recuperar tras un cambio), me ha hecho decidir que debo sacar la aplicación en el estado actual, aún sabiendo que no está terminada y tiene muchos fallos tanto funcionales como de interfaz.
&lt;/p&gt;
&lt;p&gt;
Realmente &lt;b&gt;no se que reacción pueden tener los encargados del servicio&lt;/b&gt; por lo que hagan sus apuestas. &lt;b&gt;¿Cuanto tiempo creéis que van a tardar hasta cerrarme el acceso a la API?&lt;/b&gt; :p
&lt;/p&gt;
&lt;p&gt;Con que a una sola persona le sea útil, ya tendré mi objetivo cumplido. ;-)&lt;/p&gt;
&lt;/P&gt;
		</content>
	</entry>
	<entry>
		<id>http://www.lacoctelera.com/n3uro5i5/post/2008/11/10/vim-ruby-on-rails-ide</id>
		<title>Vim, Ruby On Rails IDE</title>
		<link rel="alternate" type="text/html" href="http://www.lacoctelera.com/n3uro5i5/post/2008/11/10/vim-ruby-on-rails-ide" />
		<issued>2008-11-10T00:23:25+00:00</issued>
		<updated>2008-11-14T10:43:38+00:00</updated>
		<content type="text/html" mode="escaped">		
&lt;p&gt;
He pasado por varios entornos de desarrollo (&lt;a href=&quot;http://www.gnome.org/projects/gedit/&quot;&gt;Gedit&lt;/a&gt;, &lt;a href=&quot;http://aptana.com/&quot;&gt;Aptana&lt;/a&gt;, &lt;a href=&quot;http://www.netbeans.org/&quot;&gt;Netbeans&lt;/a&gt;, ...) y siempre tenía la sensación de que faltaba algo, que no tenía una herramienta al nivel de la que usan mis compañeros, &lt;a href=&quot;http://macromates.com/&quot;&gt;TextMate&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Si quería funcionalidades se abusaba de los recursos, y si en cambio quería ahorro de recursos obtenía pocas funcionalidades.&lt;br /&gt;
Pero al fin esto ha cambiado, he topado de lleno con lo que buscaba, &lt;a href=&quot;http://www.vim.org/&quot;&gt;VIM&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Siempre he mirado a Vim desde la distancia pensando que nunca iba a ser capaz de manejarlo con soltura (aún hoy sigo sin hacerlo), sintiendo impotencia a la hora de simplemente intentar copiar o pegar una palabra o guardar un archivo.
&lt;/p&gt;
&lt;p&gt;
Pero claro, sabía que detrás de este monstruo indomable se encontraba toda la potencia que buscaba. Solo hay que esforzarse para aprender todos esos atajos de teclado, superar su inclinada curva de aprendizaje y añadirle los plugins necesarios para conseguir un entorno de trabajo suficiente para mi día a día.
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;¿Que necesitamos?&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Atajos para Rails y sintaxis. - &lt;a href=&quot;http://rails.vim.tpope.net/&quot;&gt;Rails.vim&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Arbol de ficheros - &lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=1658&quot;&gt;NerdTree&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Buscardor de Ficheros - &lt;a href=&quot;http://github.com/jamis/fuzzyfinder_textmate/tree/master&quot;&gt;FuzzyFinder TextMate&lt;/a&gt; (Requiere &lt;a href=&quot;http://github.com/jamis/fuzzy_file_finder/tree/master&quot;&gt;fuzzy_file_finder&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Un buen .vimrc ;-)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Con lo anterior podremos tener un entorno de desarrollo potente al que podremos sacar provecho si nuestra habilidad con el teclado es suficiente :p
&lt;/p&gt;
&lt;p&gt;
Así pues, recomiendo usar uno de los siguientes paquetes preconfigurados que incluyen plugins y archivos de configuración ya preparados, evitando así tenerlos que instalar de forma manual.
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Paquetes Pre-configurados&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://github.com/manalang/vim-config/tree/master&quot;&gt;Pack 1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://github.com/srmoon7/vim/tree/master&quot;&gt;Pack 2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://github.com/goomerko/vim-rails.config/tree/master&quot;&gt;Pack 3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Pues bien y como una imagen vale más que mil palabras, os muestro un pequeño vídeo que he preparado. Perdonadme por la torpeza con los atajos de teclado, I'm Novice Man ;-)
&lt;/p&gt;
&lt;embed src=&quot;http://blip.tv/play/AdjzXZGGRQ&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;450&quot; height=&quot;350&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;

		</content>
	</entry>
	<entry>
		<id>http://www.lacoctelera.com/n3uro5i5/post/2008/10/09/backups-incrementales-aws-s3-usando-duplicity</id>
		<title>Backups incrementales en AWS-S3 usando duplicity</title>
		<link rel="alternate" type="text/html" href="http://www.lacoctelera.com/n3uro5i5/post/2008/10/09/backups-incrementales-aws-s3-usando-duplicity" />
		<issued>2008-10-09T23:44:15+00:00</issued>
		<updated>2008-10-09T23:50:04+00:00</updated>
		<content type="text/html" mode="escaped">		
&lt;p&gt;
  Ahora que por la ofi no paro de ver manzanitas con sus TimeMachines haciendo backups y más backups, necesitaba buscarme algo para proteger los datos de mi querido equipo con linux.&lt;/p&gt;
&lt;p&gt;Parece que todos los caminos me llevaban a &lt;a href=&quot;http://en.wikipedia.org/wiki/Rsync&quot;&gt;Rsync&lt;/a&gt; e investigando por ahí apareció &lt;a href=&quot;http://duplicity.nongnu.org/&quot;&gt;Duplicity&lt;/a&gt;, duplicity es una librería que nos permite hacer backups incrementales encriptadas, comprimidas y eficientes usando Rsync :-)
&lt;/p&gt;
&lt;p&gt;Permite almacenar las backups tanto en local como remoto(soporta &lt;a href=&quot;http://aws.amazon.com/s3/&quot;&gt;AWS S3&lt;/a&gt;) mediante scp, sftp o ftp.
&lt;/p&gt;
&lt;p&gt;El funcionamiento es muy simple mostraré unos cuantos ejemplos:&lt;/p&gt;
&lt;h2&gt;Creación del backup:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;h3&gt;En local&lt;/h3&gt;
&lt;/li&gt;
&lt;blockquote&gt;&lt;p&gt;duplicity /home/n3uro5i5 file:///usr/backup&lt;/p&gt;&lt;/blockquote&gt;
&lt;li&gt;
&lt;h3&gt;En remoto&lt;/h3&gt;
&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;SCP&lt;/b&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;p&gt;duplicity /home/n3uro5i5 scp://n3uro5i5@foobar.com//usr/backup&lt;/p&gt;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;FTP&lt;/b&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;p&gt;export FTP_PASSWORD=mypassword; duplicity /home/n3uro5i5 ftp://n3uro5i5@foobar.com//usr/backup&lt;/p&gt;&lt;/blockquote&gt;
&lt;li&gt;&lt;b&gt;AWS S3&lt;/b&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;p&gt;
        export PASSPHRASE=password&lt;br /&gt;
        export S3KEY=your_s3key&lt;br /&gt;
        export S3SECRET=your_s3secret&lt;br /&gt;
        duplicity /home/n3uro5i5 s3+http://bucket_name/path
      &lt;/p&gt;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;p&gt;Puedes crear reglas de exclusión de archivos por ejemplo:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;duplicity --exclude /tmp --exclude /mnt /home/n3uro5i5 scp://n3uro5i5@foobar.com//usr/backup&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;con ello podemos ignorar ciertos directorios y excluirlas del backup.&lt;/p&gt;
&lt;p&gt;La primera vez que ejecutemos uno de los comandos anteriores, duplicity hará una copia completa, mientras que las siguientes ejecuciones, las copias de seguridad serán incrementales, así pues se puede forzar el modo usando &quot;duplicity full&quot; / &quot;duplicity incremental&quot;&lt;/p&gt;
&lt;h2&gt;Restauración:&lt;/h2&gt;
&lt;p&gt; Para restaurar el sistema basta con invertir el orden de los parámetros de la forma o utilizando el comando &quot;duplicity restore&quot;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;duplicity scp://n3uro5i5@foobar.com//usr/backup /home/n3uro5i5&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;También podemos seleccionar los archivos a restaurar, así como decidir la antigüedad del &quot;SnapShot&quot;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;duplicity -t 5D --file-to-restore heroes/S03E4 scp://n3uro5i5@foobar.com//usr/backup /home/n3uro5i5/heroes/S03E4_restored &lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;En este ejemplo queremos restaurar el archivo seleccionado al estado hace 5 dias&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Tip:&lt;/b&gt; Si cada vez que hacemos cualquier operación con duplicity nos pide los credenciales con los cuales encriptar, se puede inicializar la variable de entorno PASSPHRASE con por ejemplo tu identificador PGP, de forma que un script para S3 sencillito quedaría de la forma:&lt;/p&gt;
&lt;h3&gt;backup.sh&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;   export PASSPHRASE=EB5D0A54   export PASSPHRASE=password   export S3KEY= my_access_key   export S3SECRET= my_secret_key   duplicity /home/n3uro5i5 s3+http://my_s3_bucket/backup &lt;/pre&gt;
&lt;p&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Espero que os sirva, a mi me va de fábula programado sobre una tarea &lt;a href=&quot;http://es.wikipedia.org/wiki/Cron_(unix)&quot;&gt;cron&lt;/a&gt; ;-)&lt;/p&gt;
&lt;/li&gt;
		</content>
	</entry>
	<entry>
		<id>http://www.lacoctelera.com/n3uro5i5/post/2008/10/01/visita-google-espana</id>
		<title>Visita a Google España</title>
		<link rel="alternate" type="text/html" href="http://www.lacoctelera.com/n3uro5i5/post/2008/10/01/visita-google-espana" />
		<issued>2008-10-01T23:05:21+00:00</issued>
		<updated>2008-10-01T23:05:21+00:00</updated>
		<content type="text/html" mode="escaped">		
&lt;p&gt;&lt;a href=&quot;http://flowersinspace.com&quot;&gt;Flowers In Space&lt;/a&gt;, la empresa a la que pertenezco recibió una invitación en nombre de Clara Rivera de &lt;a href=&quot;http://programa-con-google.blogspot.com/&quot;&gt;Programa con google&lt;/a&gt;, en la que se nos invitaba a pasar el dia en el &lt;a href=&quot;http://code.google.com/intl/es_ALL/events/developerday/2008/home.html&quot;&gt;Google Developer Day&lt;/a&gt;, así como al dia siguiente ir a las oficinas de Google España a pasar unas horas con Mano Marks (Google Developer Advocate) y con unos 15 desarrolladores más.&lt;/p&gt;
&lt;p&gt;El fin era que cada uno presentara un poco los proyectos en los que había usado algún servicio cartográfico de Google (Gmaps, GEarth), mientras Mano Marks tomaba notas de éstos y nos comentaba los últimos avances que está haciendo Google en ese entorno.&lt;/p&gt;
&lt;p&gt;Junto a Eduardo y servidor estaban los chicos de:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; &lt;a href=&quot;http://panoramio.com&quot;&gt;Panoramio&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ipoki.com&quot;&gt;Ipoki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://wikiloc.com&quot;&gt;WikiLoc&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://tagzania.com&quot;&gt;TagZania&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.metriz.com/&quot;&gt;Metriz&lt;/a&gt; presentando &lt;a href=&quot;http://www.fotozum.com/&quot;&gt;fotozum!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://wolpy.com&quot;&gt;Wolpy&lt;/a&gt; (Me encanta :p)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.goolzoom.com/&quot;&gt;GoolZoom&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Nosotros &lt;a href=&quot;http://placechannel.com&quot;&gt;Placechannel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Faltan un par de proyectos, espero que se me perdone, si alguien puede terminar de completar... ;-)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Las sesiones eran todas en inglés debido a la presencia de los ingenieros de Google, por lo que como mi inglés hablado es el justo para pedir &quot;un Whisky Ballantines Con SevenUp&quot;, tuve que hacer uso de mi comodín que es mi compañero Eduardo, el cual se desenvuelve con eficacia es estas situaciones y por supuesto, domina el inglés y la puesta en escena a la perfección ;-).&lt;/p&gt;
&lt;p&gt;Por lo que la presentación salió bastante bien para ser casi improvisada, excepto en el momento en que puse de forma fortuita el único vídeo de los casi 50000 existentes en las que aparece una mujer desnuda :p.&lt;/p&gt;
&lt;p&gt;En cuanto a la experiencia decir que ha sido increíble el poder compartir tus inquietudes y los temas que nos apasionan con gente tan preparada y amable, así como ver que en España existen desarrollos muy interesantes y potentes.&lt;/p&gt;
&lt;p&gt;Y otra cosa, hay que ver lo bien que se come en Google :p&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/flowersinspace/2889451099/&quot;&gt;&lt;img src='http://www.lacoctelera.com/myfiles/n3uro5i5/2889451099_84eb8bbfed.jpg' width='400' height='300' class='imgcen'/&gt;&lt;/a&gt;
&lt;/p&gt;

		</content>
	</entry>
	<entry>
		<id>http://www.lacoctelera.com/n3uro5i5/post/2008/09/24/off-google-developer-day-08</id>
		<title>[Off] Google Developer Day '08</title>
		<link rel="alternate" type="text/html" href="http://www.lacoctelera.com/n3uro5i5/post/2008/09/24/off-google-developer-day-08" />
		<issued>2008-09-24T18:42:05+00:00</issued>
		<updated>2008-09-25T09:45:35+00:00</updated>
		<content type="text/html" mode="escaped">		
&lt;p&gt;&lt;img src='http://www.lacoctelera.com/myfiles/n3uro5i5/logo.gif' width='137' height='101' class='imgizqda'/&gt;&lt;/p&gt;
&lt;p&gt;Mañana Jueves 25 de Septiembre se celebra el &lt;a href=&quot;http://code.google.com/intl/es_ALL/events/developerday/2008/home.html&quot;&gt;Google Developer Day 2008&lt;/a&gt; en Madrid, al cual me desplazaré junto con mi compañero Eduardo de &lt;a href=&quot;http://flowersinspace.com&quot;&gt;Flowers In Space&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;De la &lt;a href=&quot;http://code.google.com/intl/es_ALL/events/developerday/2008/agenda.html&quot;&gt;agenda&lt;/a&gt; , las sesiones que más me interesan son las referentes a OpenSocial, aunque no creo que vayan a enseñar nada nuevo respecto a lo mostrado en la CampusParty.  &lt;/p&gt;
&lt;p&gt;En cuanto a &lt;a href=&quot;http://code.google.com/android/&quot;&gt;Android&lt;/a&gt;, quien sabe si mostrarán más datos sobre el primer teléfono móvil que correrá sobre esta plataforma.&lt;/p&gt;
&lt;p&gt;Seguiré informando :p&lt;/p&gt;

		</content>
	</entry>
	<entry>
		<id>http://www.lacoctelera.com/n3uro5i5/post/2008/09/24/quick-tip-rutas-asociadas</id>
		<title>[Quick Tip] Rutas asociadas</title>
		<link rel="alternate" type="text/html" href="http://www.lacoctelera.com/n3uro5i5/post/2008/09/24/quick-tip-rutas-asociadas" />
		<issued>2008-09-24T18:22:40+00:00</issued>
		<updated>2008-09-24T18:44:36+00:00</updated>
		<content type="text/html" mode="escaped">		
&lt;p&gt;Todos alguna vez hemos tenido que escribir algo del tipo:&lt;/p&gt;
&lt;pre&gt; map.resources :posts do |post|   post.resources :comments   post.resource :author end &lt;/pre&gt;
&lt;p&gt;
Podriamos transformar estas rutas anidadas usando:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;has_many&lt;/b&gt; para múltiples recursos anidados  &lt;/li&gt;
&lt;li&gt;&lt;b&gt;has_one&lt;/b&gt; para un solo recurso anidado&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
Por tanto la refactorización quedaría:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
&lt;b&gt;map.resources :posts, :has_many =&gt; :comments, :has_one =&gt; :author&lt;/b&gt;
&lt;/p&gt;&lt;/blockquote&gt;&lt;/p&gt;
&lt;p&gt;Un poco mas Dry ;-)
&lt;/p&gt;

		</content>
	</entry>
	<entry>
		<id>http://www.lacoctelera.com/n3uro5i5/post/2008/09/20/i-m-back</id>
		<title>I'm Back</title>
		<link rel="alternate" type="text/html" href="http://www.lacoctelera.com/n3uro5i5/post/2008/09/20/i-m-back" />
		<issued>2008-09-20T23:38:22+00:00</issued>
		<updated>2008-09-21T19:02:20+00:00</updated>
		<content type="text/html" mode="escaped">		
&lt;p&gt;Este fin de semana me está sirviendo para recargar las pilas necesarias para empezar este &quot;nuevo ciclo&quot; y parece que tengo la batería casi llena.&lt;/p&gt;
&lt;p&gt;Espero empezar a escribir de forma mas constante aunque cada vez tenga menos tiempo, por lo que enfocaré el blog a pequeños tips que no me consuman mucho tiempo ni a mi ni a ustedes.&lt;/p&gt;
&lt;p&gt;Pues nada lo dicho, he vuelto para quedarme ;-)&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;img src=&quot;myfiles/n3uro5i5/td0_177-1.jpg&quot; class=&quot;imgcen&quot; width=&quot;397&quot; height=&quot;267&quot;&gt;&lt;/p&gt;&lt;/blockquote&gt;

		</content>
	</entry>
	<entry>
		<id>http://www.lacoctelera.com/n3uro5i5/post/2008/07/28/flowers-at-campus-party</id>
		<title>Flowers at campus party</title>
		<link rel="alternate" type="text/html" href="http://www.lacoctelera.com/n3uro5i5/post/2008/07/28/flowers-at-campus-party" />
		<issued>2008-07-28T19:59:48+00:00</issued>
		<updated>2008-07-28T20:01:58+00:00</updated>
		<content type="text/html" mode="escaped">		
&lt;p&gt;&lt;img src='http://www.lacoctelera.com/myfiles/n3uro5i5/1200997032_logocp.gif' width='211' height='74' class='imgCen'/&gt;&lt;/p&gt;
&lt;p&gt;Hoy lunes empieza la &lt;a href=&quot;http://www.campus-party.es/&quot;&gt;campus party&lt;/a&gt; de Valencia donde estaré con algunos de mis compañeros de &lt;a href=&quot;http://flowersinspace.com&quot;&gt;curro&lt;/a&gt;, &lt;a href=&quot;http://juan.gg/blog&quot;&gt;Juan&lt;/a&gt;, &lt;a href=&quot;http://ceritium.net&quot;&gt;Jose&lt;/a&gt; y Philip.&lt;/p&gt;
&lt;p&gt;Y para esta ocasión hemos decidido colgar un &lt;a href=&quot;http://campus.wasabeesonrails.com&quot;&gt;blog&lt;/a&gt; colaborativo donde poner nuestras hazañas, impresiones y chorradas.&lt;/p&gt;
&lt;p&gt;Debo agradecer a Clara Rivera de Programa con Google el habernos facilitados unas entradas, como indicaba en &lt;a href=&quot;http://programa-con-google.blogspot.com/2008/07/google-en-la-campus-party.html&quot;&gt;esta entrada&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;PD: Si alguien está por allí que avise y nos tomamos una birrillas. ;)&lt;/p&gt;
&lt;p&gt;Nunca es tarde para pasar 7 dias en una tienda de campaña rodeado de 6000 tios en calzonzillos :p&lt;/p&gt;
&lt;p&gt;Allí nos vemos!  &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://campus.wasabeesonrails.com&quot;&gt;Link al Blog&lt;/a&gt;&lt;/p&gt;

		</content>
	</entry>
	<entry>
		<id>http://www.lacoctelera.com/n3uro5i5/post/2008/05/22/hiveminder-tasks-list-el-escritorio-una-maquina-ubuntu</id>
		<title>Hiveminder tasks list en el escritorio de una maquina ubuntu-linux.</title>
		<link rel="alternate" type="text/html" href="http://www.lacoctelera.com/n3uro5i5/post/2008/05/22/hiveminder-tasks-list-el-escritorio-una-maquina-ubuntu" />
		<issued>2008-05-22T12:12:39+00:00</issued>
		<updated>2008-05-23T12:43:01+00:00</updated>
		<content type="text/html" mode="escaped">		
&lt;p&gt;&lt;b&gt;¿Que es Hiveminder?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;No voy a explicar que es ya que no es el fin de esta entrada, podeis leer sobre la aplicación por ejemplo en &lt;a href=&quot;http://www.genbeta.com/2006/08/12-hiveminder-nuevo-todolist-con-recordatorios-por-email&quot;&gt;genbeta&lt;/a&gt; , así como una &lt;a href=&quot;http://juan.gg/cosmico/2008/05/12/organizandote-con-hiveminder/&quot;&gt;entrada&lt;/a&gt; de mi compañero Juan.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Script todo.pl&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Hiveminder nos ofrece un script en perl con el que podemos tratar nuestras tareas desde linea de comandos( como a mi me gusta ^_^)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Descargar &lt;a href=&quot;http://hiveminder.com/static/tools/cli/todo.pl&quot;&gt;todo.pl&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Instalar modulos necesarios para la ejecución del script usando &lt;a href=&quot;http://es.wikipedia.org/wiki/CPAN&quot;&gt;CPAN&lt;/a&gt;.&lt;/b&gt;&lt;/li&gt;
&lt;p&gt;Supongamos una maquina que por defecto solo tiene perl, cpan y los módulos principales, entonces debemos instalar las dependencias requeridad por todo.pl&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;sudo cpan&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Si es la primera vez que ejecutamos cpan debemos responder a todas sus preguntas para configurarlo. Una vez hecho esto y estando dentro del interprete cpan procedemos con la instalación.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
install YAML Number::RecordLocator Email::Address
&lt;/p&gt;&lt;/blockquote&gt;
&lt;li&gt;&lt;b&gt;Prueba de todo.pl.&lt;/b&gt;&lt;/li&gt;
&lt;p&gt;Si hemos realizado los pasos anteriores estaremos preparados para ejecutar el script, que suponiendo que está en mi home seria.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;perl ~/todo.pl&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Lo primero que nos preguntará es el nombre de usuario y contraseña para conectarse con HM, una vez autentificado podremos consultar-crear-editar tareas desde linea de comandos y actualizandose en la aplicación web. Ejemplos &lt;a href=&quot;http://bestpractical.typepad.com/worst_impractical/2006/09/todopl_or_how_i.html&quot;&gt;aquí&lt;/a&gt;.&lt;/p&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Poner tareas pendientes en el escritorio.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Los usuarios de Mac-OS tienen una herramienta llamada &lt;a href=&quot;http://projects.tynsoe.org/en/geektool/&quot;&gt; GeekTool&lt;/a&gt; que les permite la ejecución de comandos del sistema directamente sobre una interfaz en el escritorio. Los usuarios de linux nos la ingeniaremos para tener algo parecido.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Creación de una consola trasparente sobre el escritorio.&lt;/b&gt;&lt;/li&gt;
&lt;p&gt;Podeis ver como hacerlo &lt;a href=&quot;http://hackart.es/?p=45&quot;&gt;aquí&lt;/a&gt; o &lt;a href=&quot;http://trauko.wordpress.com/2008/01/22/integrar-terminal-en-el-escritorio/&quot;&gt;aquí&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Como veréis en los tutoriales usan Gnome como entorno de escritorio así como el sistema de paquetes Deb, si no es tu caso debes buscarte la forma de instalarte alltray(RPM, compilar,...), así como usar la consola que creas oportuna(eterm, aterm, xfce-term...).&lt;/p&gt;
&lt;li&gt;&lt;b&gt;Ejecución de todo.pl de forma periódica sobre la consola trasparente&lt;/b&gt;&lt;/li&gt;
&lt;p&gt;Ya tenemos la consola trasparente bajo un perfil llamado por ejemplo &quot;desktop&quot; y ahora queremos ejecutar de forma periódica la lista de tareas para mantenerla actualizada, para ello usaremos el comando del sistema &lt;a href=&quot;http://linux.die.net/man/1/watch&quot;&gt;watch&lt;/a&gt; que nos permite ejecutar cualquier comando cada x segundos.&lt;/p&gt;
&lt;p&gt;Por tanto usando lo anterior la llamada nos quedaria por ejemplo así:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;alltray -x -s -st -stask -g +5+650 &quot;gnome-terminal --window-with-profile=desktop -x watch -n 120 --no-title perl ~/todo.pl&quot;
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Con esta sentencia creamos una terminal trasparente en la posición -g +5+650, usando el perfil desktop, y ejecutando el script cada 2 minutos.&lt;/p&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Resultado:&lt;/b&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.drupload.com/uploads/290Desktop.png&quot;&gt;&lt;img src='http://www.lacoctelera.com/myfiles/n3uro5i5/Desktop.redimensionado.png' width='400' height='250' class='imgCen'/&gt;&lt;/a&gt;&lt;br /&gt;
Mola ¿no? &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Tip&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Si te animas a usar el script para tratar con hiveminder no estaría de mas crear un alias en ~/.bashrc o ~/.bash_aliases de forma que en vez de usar &quot;perl /PATH/todo.pl list&quot; por ejemplo, podramos hacer &quot;todo list&quot;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;alias todo=&quot;perl TU_PATH/todo.pl&quot;&lt;/p&gt;&lt;/blockquote&gt;

		</content>
	</entry>
	<entry>
		<id>http://www.lacoctelera.com/n3uro5i5/post/2008/05/19/where-2-0-day-three</id>
		<title>Where 2.0, Day Three</title>
		<link rel="alternate" type="text/html" href="http://www.lacoctelera.com/n3uro5i5/post/2008/05/19/where-2-0-day-three" />
		<issued>2008-05-19T21:21:39+00:00</issued>
		<updated>2008-05-20T18:36:14+00:00</updated>
		<content type="text/html" mode="escaped">		
&lt;p&gt;Ultima entrega del &lt;del&gt;peñazo&lt;/del&gt; resumen Where 2.0.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;a href= &quot;http://en.oreilly.com/where2008/public/schedule/detail/4283&quot;&gt;Your Memories: Here, There, Everywhere Jef Holove (Eye-Fi, Inc.) &lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Jef Holove, presentó &lt;a href=&quot;http://www.eye.fi&quot;&gt;Eye-Fi&lt;/a&gt;, según ellos la primera tarjeta(en este caso SD) que permite el upload de fotos geo-tageadas directamente desde la cámara mediante wifi.&lt;br /&gt;
Cuanto menos curioso.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;a href=&quot;http://en.oreilly.com/where2008/public/schedule/detail/1665&quot;&gt;GeoDjango: Web Applications for Geographers with Deadlines&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;GeoDjango es una expansión del FrameWork de desarrollo web &lt;a href=&quot;http://www.djangoproject.com/&quot;&gt;Django&lt;/a&gt;, &quot;&lt;a href=&quot;http://www.railsenvy.com/2007/9/10/ruby-on-rails-vs-django-commercial-7&quot;&gt; coleguilla &lt;/a&gt;&quot; de nuestro querido &lt;a href=&quot;http://www.rubyonrails.com/&quot;&gt;ROR&lt;/a&gt;, el cual añade funcionalidades específicas para el desarrollo geo-espacial soportadas por la mayoria de los gestores de base de datos.&lt;/p&gt;
&lt;p&gt;Otro de los valores añadidos de GeoDjango es la posibilidad de renderizado a la mayoria de los “estándares” de representación posicional( KML, GML, GeoJson, GeoRss, OpenLayer).&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;a href=&quot;http://en.oreilly.com/where2008/public/schedule/detail/4388&quot;&gt;Your Car Gets an API Chris Butler (Dash Navigation)&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://dash.net/&quot;&gt;Dash&lt;/a&gt; es un dispositivo de navegación GPS con la peculiaridad de que todo su potencial lo obtiene conectado a internet. Nos puede calcular rutas basadas en el tráfico , el estado del tiempo, accidenter, etc, todo a tiempo real.&lt;/p&gt;
&lt;p&gt;Este dispositivo no es nuevo, en realidad no lo presentaron allí, sino que hablaron de sus últimas &lt;a href=&quot;http://www.dash.net/product/mydash-dashapps.php&quot;&gt;aplicaciones&lt;/a&gt;, y de camino como no, pues darle algo de bombo al producto.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;a href=&quot;http://en.oreilly.com/where2008/public/schedule/detail/1687&quot;&gt;Going Places on Flickr: The Significance of Geographical Information in Photos&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;En este caso el “crack” Dan Catt hablaba de como habian solucionado en Flickr el problema del Geocoding inverso( sabemos el punto y queremos obtener la dirección, tipo de via, ...).&lt;br /&gt;
No voy a entrar en este tema, pues sería una entrada entera, y quizás me anime a escribirla en los próximos dias.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;a href=&quot;http://en.oreilly.com/where2008/public/schedule/grid?date=2008-05-14&quot;&gt;Crawling the web for GeoData Juan Gonzalez (PlanetEye Inc.) &lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Presentarion &lt;a href=&quot;http://www.planeteye.com/&quot;&gt;PlanetEye&lt;/a&gt; que es una aplicación que obtiene todos los datos(fotos, videos, lugares) de otras fuentes realizando crawling por la web.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;a href =&quot;http://en.oreilly.com/where2008/public/schedule/detail/4353&quot;&gt;Google Maps = Google on Maps Lior Ron (Google, Inc. ) &lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Hicieron una demostración de las posibilidades de búsqueda sobre Google maps( GeoSearch), simplemente poniendo “Bares Sevilla” podremos ver sobre el mapa donde podemos gastarnos todos nuestros ahorros :p&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;a href=&quot;http://en.oreilly.com/where2008/public/schedule/detail/4399&quot;&gt;Google Maps for Mobile with My Location - Behind the Scenes&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;En esta ponencia no pude estar, pero me encargué de que me comentaran un poco sobre ella, y no queria terminar sin hacerle una reseña.&lt;/p&gt;
&lt;p&gt;Google está desarrollando My Location, que es un sistema de posicionamiento que permite obtener nuestra posición a través de su telefono móvil y sin necesidad de GPS.&lt;/p&gt;
&lt;p&gt;Es una característica que no conocia, podeis leer mas &lt;a href=&quot;http://www.arturogoga.com/2007/11/28/my-location-google-maps-mobile-nos-ubica-sin-necesidad-de-un-gps/&quot;&gt;aquí&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Bueno esto es todo lo que tenia que contar, espero que a alguien le sirva, aunque a mi si que me servirá para recordar dentro de unos años lo mal que escribia y la cantidad de aviones que cojimos ;-)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://flickr.com/photos/53362241@N00/2505423388/&quot;&gt;&lt;img src='http://www.lacoctelera.com/myfiles/n3uro5i5/aereopuerto.jpg' width='325' height='433' class='imgCen'/&gt;&lt;/a&gt;&lt;/p&gt;

		</content>
	</entry>
	<entry>
		<id>http://www.lacoctelera.com/n3uro5i5/post/2008/05/17/where-2-0-day-2</id>
		<title>Where 2.0, Day Two</title>
		<link rel="alternate" type="text/html" href="http://www.lacoctelera.com/n3uro5i5/post/2008/05/17/where-2-0-day-2" />
		<issued>2008-05-17T14:43:23+00:00</issued>
		<updated>2008-05-20T18:28:23+00:00</updated>
		<content type="text/html" mode="escaped">		
&lt;p&gt;Las sesiones del martes y miercoles se basaban de charlas que duraban entre 5 y 30 minutos, por lo que sería una pesadez si tuviera que comentar cada una de ellas, por lo que he decidido solo hablar de las que a mi parecer resultan mas novedosas.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- &lt;a href =&quot;http://en.oreilly.com/where2008/public/schedule/detail/3346&quot;&gt;EveryBlock: A News Feed for Your Block&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Gracias a las posibilidades que ofrece la gran cantidad de información pública referente a la ciudadania en EEUU, nace &lt;a href=&quot;http://www.everyblock.com/&quot;&gt;EveryBlock&lt;/a&gt; que no es más que mantener organizada geograficamente toda la información de inspecciones, delitos, trafico, etc, a un nivel de granularidad muy alto(manzanas e incluso edificios).&lt;/p&gt;
&lt;p&gt;A primera vista parece una aplicación muy potente, pero desde mi punto de vista le veo un par de puntos negros. El primero es que la expansión a otra ciudad requiere un gran esfuerzo de documentación y estructuración, por tanto mucho dinero.&lt;/p&gt;
&lt;p&gt;El segundo problema y más importante a mi parecer, es la limitación de este sistema a los EEUU, pues su integración en Europa es casi imposible por las limitaciones en cuanto a la privacidad de los datos de los ciudadanos.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- &lt;a href=&quot;http://en.oreilly.com/where2008/public/schedule/detail/4309&quot;&gt;Merging Roadways: PC and Mobile Maps Coming Together(Nokia)&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Como era de esperar Nokia ha apostado fuerte por el tema de la geolocalización enseñando su proyecto &lt;a href=&quot;http://www.ovi.com/&quot;&gt;OVI.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ovi no es más que la extensión de los nokia maps al pc, de forma que se pueda compartir o añadir contenido de/para el GPS nokia.&lt;/p&gt;
&lt;p&gt;De esta forma intentarán crear comunidad usando el site web, y que esta comunidad genere contenido a medida para ser usado en los dispositivos.&lt;/p&gt;
&lt;p&gt;Es curioso que nada más salir las primeras diapositivas sobre el productos una avalancha de flashes inundaron el auditorio, parece un producto con mucho hipe por aquellos lares.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- &lt;a href=&quot;http://en.oreilly.com/where2008/public/schedule/detail/1715&quot;&gt;The State of the Geoweb (John Hanke, Google inc)&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;John Hanke es el director de Google maps y Google earth, y se limitó a repasar la evolución de la geolocalización en la web, diciendo entre otras cosas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Aplicaciones como google maps hacen que el mundo parezca cada vez más pequeño.&lt;/li&gt;
&lt;li&gt;Desde el año 2004 hasta hoy el número de aplicaciones basadas en geolocalización se ha multiplicado por 10 y creciendo.&lt;/li&gt;
&lt;li&gt;Están desarrollando Google maps para dispositivos móviles(espero que no sea simplemente una evolución de los &lt;a href=&quot;http://code.google.com/apis/maps/documentation/staticmaps/&quot;&gt;mapas estáticos&lt;/a&gt; existentes a dia de hoy).&lt;/li&gt;
&lt;li&gt;La importancia del kml y geo-rss como estándares.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Lanzamiento de su nueva API geo search!&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Junto con John Hanke estaba el presidente de los servicios de GIS de &lt;a href=&quot;http://www.esri.com/&quot;&gt;ESRI&lt;/a&gt;, el cual resalto la necesidad de hacer las cosas abiertas, dando la posibilidad de que los usuarios puedan usar todos los datos y el procesamiento que ellos ofrecen( cambio radical en la estrategia empresarial de ESRI), para ello y con la ayuda de google están llevando a cabo la exportación de sus datos a kml, georss, obteniendo unos resultados que dejaban al auditorio con la boca abierta.&lt;/p&gt;
&lt;p&gt;Entre sus demos tenían: Visualización del tráfico, comportamiento del fuego en caso de incendio, mapa metereológico, mapa de terremotos, y todo esto en tiempo real y sobre google maps/earth, realmente una pasada.&lt;/p&gt;
&lt;p&gt;Comentar que ESRI tiene pensado sacar una api pública para hacer uso de su potencial GIS, ésta api soportará JS e incluso Flex.&lt;br /&gt;
Sin ninguna duda esta ponencia fue de las mas fuertes y esperadas del dia.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- &lt;a href=&quot;http://en.oreilly.com/where2008/public/schedule/detail/1567&quot;&gt;Modeling Crowd Behavior&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Paul Torrens de la universidad de Arizona ha modelado el comportamiento de las masas de forma que podamos predecir las consecuencias de una avalancha de personas. Me resultó curioso cuanto menos y por eso dejo aquí el &lt;a href=&quot;http://www.geosimulation.org/crowds/&quot;&gt;enlace&lt;/a&gt; donde se explica todo más detenidamente. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;- &lt;a href=&quot;http://en.oreilly.com/where2008/public/schedule/detail/3375&quot;&gt;Katamari Damacy Greg Sadetsky (Poly9 Group Inc.) &lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Presentaron &lt;a href=&quot;http://freeearth.poly9.com/&quot;&gt;FreeEarth&lt;/a&gt; que no es más que un Globo terráqueo pero a direferencia de Google Earth, FreeEarth se ejecuta directamente sobre el navegador web.&lt;/p&gt;
&lt;p&gt;Presentarón también sus 3 últimos productos algunos con soporte kml: &lt;a href=&quot;http://wildsanctuary.com&quot;&gt;WildSanctuary&lt;/a&gt;&lt;br /&gt;
, GeoAlert y &lt;a href=&quot;http://mapmkr.com/prelaunch/&quot;&gt;MapMkr&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- &lt;a href=&quot;http://en.oreilly.com/where2008/public/schedule/detail/1534&quot;&gt;-Convergence of Architectural and Engineering Design and Location Technology: Implications for eGovernment, autodesk&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Esta gente de autodesk está apostando fuerte por la creación de un software que permita la creación infraestructuras para luego simular las consecuencias y eficacia de éstas, cuando hablo de consecuencias me refiero a impacto sonoro, medioambiental de por ejemplo un estadio de futbol en un barrio,  y cuando hablo de eficacia me refiero a si la solución generada es la óptima.&lt;/p&gt;
&lt;p&gt; Usando su software garantizan que los paises podrán ahorrarse grandes cantidades de dinero pues crearán infraestructuras óptimas, ya que han sido simuladas antes.&lt;/p&gt;
&lt;p&gt;Cuando estaba viendo una de sus demostraciones de analizar como sería mejor una autopista si bajo tierra o elevada, me daba la impresión de estar ante una pelicula de ciencia ficción. Amazing!&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- &lt;a href=&quot;http://en.oreilly.com/where2008/public/schedule/detail/3382&quot;&gt;DIY Drones: An Open Source Hardware and Software Approach to Making “Minimum UAVs&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Chris Anderson es toda una eminencia en EEUU, es editor de la revista &lt;a href=&quot;http://www.wired.com/&quot;&gt;Wired&lt;/a&gt;, y en su presentación demostraba que se podria crear un vehiculo aéreo no tripulado(UAV) usando software Open-source y hardware por un coste menor a 1000$ ^_^&lt;/p&gt;
&lt;p&gt;Podeis encontrar todo lo necesario &lt;a href=&quot;http://diydrones.com/&quot;&gt;aquí.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Conclusiones del dia:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Destacaría la potencia mostrada tras la colaboración ESRI + Google, lo cual puede dar un nuevo enfoque a la interpretación de datos en la geolocalización web.
&lt;li&gt;
&lt;li&gt;Apertura de ESRI, liberando API's públicas.&lt;/li&gt;
&lt;li&gt;Apuestá fuerte por parte de Autodesk para dominar el mundo de la simulación de infraestructuras.&lt;/li&gt;
&lt;li&gt;Integración cada vez más clara de dispositivos GPS con el PC, intentando la creación de comunidades alrededor de éstos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Espero que no haya sido muy pesado el artículo, aunque es complicado que no lo sea ;-)&lt;/p&gt;
&lt;/li&gt;&lt;/li&gt;
		</content>
	</entry>
	<entry>
		<id>http://www.lacoctelera.com/n3uro5i5/post/2008/05/13/where-2-0-day-one</id>
		<title>Where 2.0, Day one</title>
		<link rel="alternate" type="text/html" href="http://www.lacoctelera.com/n3uro5i5/post/2008/05/13/where-2-0-day-one" />
		<issued>2008-05-13T09:09:25+00:00</issued>
		<updated>2008-05-13T09:25:49+00:00</updated>
		<content type="text/html" mode="escaped">		
&lt;p&gt;&lt;b&gt;07:30 - Desayuno&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Desayuno con Diego Fernandez Domiguez y Alberto Andrés de &lt;a href=&quot;http://ipoki.com&quot; title=&quot;http://ipoki.com&quot; id=link_7&gt;ipoki&lt;/a&gt;, asi como Jesus Zamorano. &lt;a href=&quot;http://nav2us.com&quot; title=&quot;http://nav2us.com&quot; id=link_8&gt;nav2us&lt;/a&gt;, &lt;a href=&quot;http://www.activasat.com/&quot; title=&quot;http://www.activasat.com/&quot; id=link_9&gt;Activasat&lt;/a&gt; , donde estuvimos debatiendo temas muy interesantes relacionados con aplicaciones basadas en geolocalización, asi como el estado del mercado para éstas.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;8:30 - Primer tutorial: &lt;a href=&quot;http://en.oreilly.com/where2008/public/schedule/detail/3428&quot; title=&quot;http://en.oreilly.com/where2008/public/schedule/detail/3428&quot; id=link_4&gt;Sharing Your Content on the Google Maps API&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;La primera parte de éste se basaba en un review de lo que ha sido la api de google maps desde que empezó hasta ahora, abarcando las últimas novedades como son la integración de StreetView en la API.&lt;/p&gt;
&lt;p&gt;Luego una demo a manos de google, y por último la presentación de varios proyectos representando la implementaciones &quot;exitosas&quot; con la API .&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.navx.com/&quot; title=&quot;http://www.navx.com/&quot; id=link_6&gt;NavX&lt;/a&gt;
&lt;li&gt;
&lt;li&gt;&lt;a href=&quot;http://Kayak.com&quot; title=&quot;http://Kayak.com&quot; id=link_5&gt;Kayak&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;12:00 - Lunch&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Comida a una hora insoportable para una persona que lleva 23 años en España :p&lt;/p&gt;
&lt;p&gt;&lt;b&gt;13:30 -  &lt;a href=&quot;http://en.oreilly.com/where2008/public/schedule/detail/1724&quot; title=&quot;http://en.oreilly.com/where2008/public/schedule/detail/1724&quot; id=link_0&gt;Segundo tutorial: The Open Geo-Stack: OpenLayers, GeoServer, PostGIS&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Open Geo Stack es una solución libre para la creación de servidores GIS, donde poder almacenar, procesar y devolver al cliente información posicionada sobre distintos layers.&lt;/p&gt;
&lt;p&gt;El tutorial pintaba muy bien, pero desde el principio tuvieron problemas pues en las memorias flash que repartian con los archivos de instalación, datos, documentación, etc, venian corruptos.&lt;/p&gt;
&lt;p&gt;De forma que este antercado provocó que mucha gente no pudieran continuar el ritmo del tutorial y a su vez perdiendose velocidad en la exposición.&lt;/p&gt;
&lt;p&gt;De todas formas &lt;a href=&quot;http://files.opengeo.org/where2/stick/&quot; title=&quot;http://files.opengeo.org/where2/stick/&quot; id=link_2&gt;aquí&lt;/a&gt; y &lt;a href=&quot;http://files.opengeo.org/where2/&quot; title=&quot;http://files.opengeo.org/where2/&quot; id=link_3&gt;aquí&lt;/a&gt; teneis todo lo necesario para llevarlo a cabo.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;19:00 - Launch pad&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;No era más que un carrusel de proyectos desfilando 5 minutos cada uno y mostrando lo mejor o más novedoso que tenian. Nuestros amigos de ipoki presentaron su producto, lo cierto es que no se como les habrá ido pues no he estado presente, pero les deseo lo mejor.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Otras cosas interesantes:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.openstreetmap.com/&quot; title=&quot;http://www.openstreetmap.com/&quot; id=link_0&gt;openstreetmap&lt;/a&gt;&lt;/li&gt;
&lt;p&gt; es un proyecto ambicioso donde se intenta crear una comunidad capaz de generar contenido cartográfico de gran calidad, recomiendo que le echeis un vistazo pinta bien.&lt;/p&gt;
&lt;li&gt;&lt;a href=&quot;http://www.mapstraction.com/&quot; title=&quot;http://www.mapstraction.com/&quot; id=link_1&gt;Mapstraction&lt;/a&gt;&lt;/li&gt;
&lt;p&gt;Libreria Js con la cual podremos crear client-sides que funcionen sobre cualquier proveedor de mapas, google maps, yahoo maps, microsoft earth, ...&lt;/ul&gt;
&lt;p&gt;
&lt;p&gt;Por ultimo comentar que conocimos a otro chico español, que vive desde hace años en Los Angeles, Ismaél Chivite, el cual nos dió una &quot;clase magistral&quot; de servidores GIS gracias a su gran experiencia en este campo, y al cual dar las gracias.&lt;/p&gt;
&lt;p&gt;Hasta aqui un pequeño resumen de lo ocurrido, el que quiera saber más que me invite a una caña y yo lo cuento encantado :p.&lt;/p&gt;
&lt;p&gt;Mañana más.&lt;/p&gt;
&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/li&gt;&lt;/li&gt;
		</content>
	</entry>
	<entry>
		<id>http://www.lacoctelera.com/n3uro5i5/post/2008/05/12/al-where-2-0</id>
		<title>Al Where 2.0!</title>
		<link rel="alternate" type="text/html" href="http://www.lacoctelera.com/n3uro5i5/post/2008/05/12/al-where-2-0" />
		<issued>2008-05-12T05:19:39+00:00</issued>
		<updated>2008-05-20T13:07:19+00:00</updated>
		<content type="text/html" mode="escaped">		
&lt;p&gt;Mañana lunes 12 de Mayo comienza el evento &lt;a href=&quot;http://en.oreilly.com/where2008/public/content/home&quot; title=&quot;http://en.oreilly.com/where2008/public/content/home&quot; id=link_0&gt;Where 2.0&lt;/a&gt; en San Francisco, donde asistiré junto con otros de mis compañeros de&lt;a href=&quot;http://flowersinspace.com&quot; title=&quot;http://flowersinspace.com&quot; id=link_1&gt; Flowers In Space&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;No adelanto más, espero ir escribiendo lo que vaya pasando por mi &lt;a href=&quot;http://twitter.com/n3uro5i5&quot; title=&quot;http://twitter.com/n3uro5i5&quot; id=link_2&gt;twitter&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;See you!!&lt;br /&gt;
&lt;a href=&quot;http://www.drupload.com/uploads/806where20.JPG&quot;&gt;&lt;br /&gt;
&lt;img src='http://www.lacoctelera.com/myfiles/n3uro5i5/where20.redimensionado-1.JPG' width='230' height='307' class='imgCen'/&gt;&lt;/a&gt;
&lt;/p&gt;

		</content>
	</entry>
	<entry>
		<id>http://www.lacoctelera.com/n3uro5i5/post/2008/05/07/configurar-mysql-accesos-remotos</id>
		<title>Configurar Mysql para accesos remotos </title>
		<link rel="alternate" type="text/html" href="http://www.lacoctelera.com/n3uro5i5/post/2008/05/07/configurar-mysql-accesos-remotos" />
		<issued>2008-05-07T18:53:49+00:00</issued>
		<updated>2008-05-07T22:38:36+00:00</updated>
		<content type="text/html" mode="escaped">		
&lt;p&gt;Puede que alguna vez se nos haya pasado por la cabeza acceder a un servidor mysql alojado en una maquina remota, para llevarlo a cabo debemos configurar varios aspectos de ésta.&lt;/p&gt;
&lt;p&gt;Comentar que este ejemplo está realizado en una maquina con ubuntu linux, por tanto puede que los archivos de configuración se encuentren en dintinto lugar en caso de usar otro sistema.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;5 pasos a seguir&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Conectarse a la maquina host del servidor mysql&lt;/li&gt;
&lt;p&gt;&lt;bloqkuote&gt;ssh quentin@remoteHost.com&lt;/bloqkuote&gt;&lt;/p&gt;
&lt;li&gt;Abrir puerto 3306&lt;/li&gt;
&lt;blockquote&gt;&lt;p&gt;sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
&lt;/p&gt;&lt;/blockquote&gt;
&lt;li&gt;Configurar my.conf &lt;/li&gt;
&lt;p&gt;En el caso de ubuntu el archivo de configuración de mysql, está en /etc/mysql/my.cnf&lt;br /&gt;
y comentar la linea &quot;bind-address = 127.0.0.1&quot;&lt;/p&gt;
&lt;li&gt;Acceder a la consola mysql y en ésta dar privilegios al usuario&lt;/li&gt;
&lt;blockquote&gt;&lt;p&gt;GRANT ALL PRIVILEGES ON *.* TO 'USER'@'HOST' IDENTIFIED BY 'PASSW' WITH GRANT OPTION;
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Cambiar USER, HOST y PASSWD por credenciales propios.&lt;br /&gt;
Refrescar los privilegios.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;FLUSH PRIVILEGES;&lt;/p&gt;&lt;/blockquote&gt;
&lt;li&gt;Reiniciar mysqld &lt;/li&gt;
&lt;blockquote&gt;&lt;p&gt;sudo /etc/init.d/mysql restart&lt;/p&gt;&lt;/blockquote&gt;
&lt;/ul&gt;
&lt;p&gt; A partir de ahora podremos conectarnos al host mysql remoto usando tanto un cliente gráfico(cocoa mysql, mysql query browser, ..) como la propia consola mysql.&lt;/p&gt;

		</content>
	</entry>
	<entry>
		<id>http://www.lacoctelera.com/n3uro5i5/post/2008/04/10/ejemplo-modulo-apoyo-servir-json-usando-merb</id>
		<title>Ejemplo de módulo de apoyo para servir Json usando Merb + Datamapper</title>
		<link rel="alternate" type="text/html" href="http://www.lacoctelera.com/n3uro5i5/post/2008/04/10/ejemplo-modulo-apoyo-servir-json-usando-merb" />
		<issued>2008-04-10T15:39:58+00:00</issued>
		<updated>2008-04-10T15:39:58+00:00</updated>
		<content type="text/html" mode="escaped">		
&lt;p&gt;En placechannel.com, el 90% de las las peticiones estan basadas en la obtención de los videos en una zona determinada del mapa, y para ello se hace una petición ajax solicitando dichos videos, y obteniendo éstos en formato Json.&lt;/p&gt;
&lt;p&gt;Como comprobareis por mis entradas anteriores, he estado obsesionado con el rendimiento del parseo AR  =&gt; JSON pues como he comentado, gran parte del peso de la aplicación cae sobre éste.&lt;br /&gt;
Entonces decidí probar suerte con Merb, pero siempre con la idea de crear un módulo de apoyo nunca sustituir ROR.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;¿Por qué &lt;a href=&quot;http://merbivore.com/why_merb.html&quot;&gt;merb&lt;/a&gt;?&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Los &lt;a href=&quot;http://www.lacoctelera.com/myfiles/n3uro5i5/screenshot1-1.png&quot;&gt;ciclos de bloqueo del dispatch&lt;/a&gt; son mas cortos, por tanto puedo servir mayor número de peticiones teniendo bloqueados los servidores de aplicaciones(mongrel, thin, ..) el menor tiempo posible y permitiendo mayor concurrencia de peticiones.&lt;/li&gt;
&lt;li&gt;Usa poco código(No code is faster than no code), y para este modulo tan simple parece una buena opción.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;¿Por qué &lt;a href=&quot;http://datamapper.org/why.html&quot;&gt;Datamapper?&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Es thread-safe, ActiveRecord no.&lt;/li&gt;
&lt;li&gt;Tiene como prioridad la eficiencia.&lt;/li&gt;
&lt;li&gt;Se parece a ActiveRecord  ;-)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Desde la versión 0.9.0 de Merb existen tres generadores a la hora de crear aplicaciones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; merb-gen app foo_app&lt;/li&gt;
&lt;li&gt; merb-gen app foo_app –flat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;merb-gen app foo –very-flat&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cada una de las opciones nos va dando un esqueleto de aplicación cada vez con menos ficheros, en nuestro caso usé la tercera opción, obteniendo &lt;b&gt;¡una aplicación en un solo fichero!.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Nuestra aplicación no tendrá mas que lo siguiente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Un modelo Video con titulo, código, lat y lng como atributos.
&lt;li&gt;
&lt;li&gt;Un controlador llamado Main con una única accion y que sirva json.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; Quedando de la forma ...&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://pastie.caboo.se/private/lyq67sarmvgyyumm1fmtoq&quot;&gt;&lt;img src='http://www.lacoctelera.com/myfiles/n3uro5i5/merb_thumb.png' width='445' height='698' class='imgCen'/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ya tenemos el modulo listo y solo nos queda arrancarlo:&lt;/p&gt;
&lt;p&gt;Ejemplos:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un solo mongrel en el puerto 4000&lt;br /&gt;
&lt;code&gt;merb -I foo.rb -p 4000 -d &lt;/code&gt; &lt;/li&gt;
&lt;li&gt;Cluster de dos servidores thin:&lt;br /&gt;
&lt;code&gt;merb -I foo.rb -p 4000 -c 2 -a thin -d&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Simple ¿no?, nada de plugins externos(mongrel_rails) para balancear en clusters&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Resultados.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;
Mis pruebas hechas con &lt;a href=”http://en.wikipedia.org/wiki/ApacheBench”&gt;ApacheBench&lt;/a&gt; y &lt;a href=”http://www.hpl.hp.com/research/linux/httperf/”&gt;Httperf&lt;/a&gt; devuelven que el nuevo módulo basado en merb + datamapper es aproximadamente el doble de rápido,en comparación con mi antigua acción en rails que usaba to_json.&lt;/p&gt;
&lt;p&gt;Lo cierto es que los resultados me han dejado satisfecho y mas teniendo en cuenta que éstos son mejores a favor de merb cuanto mas crece la concurrencia.&lt;/p&gt;
&lt;p&gt;Como veréis no he explicado como instalar merb como configurar Datamapper, ..., no era mi intención, simplemente quería mostrar mi primera experiencia con merb y quién sabe si a alguien le sirve de ejemplo.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Tip:&lt;/b&gt; Instala la gema json(gem install json) basada en C, para mejorar el rendimiento del parseo.&lt;/p&gt;
&lt;/li&gt;&lt;/li&gt;
		</content>
	</entry>
	<entry>
		<id>http://www.lacoctelera.com/n3uro5i5/post/2008/03/30/servir-javascript-agrupado-ruby-on-rails</id>
		<title>Servir Javascript agrupado en ruby on rails.</title>
		<link rel="alternate" type="text/html" href="http://www.lacoctelera.com/n3uro5i5/post/2008/03/30/servir-javascript-agrupado-ruby-on-rails" />
		<issued>2008-03-30T12:25:43+00:00</issued>
		<updated>2008-03-30T17:11:09+00:00</updated>
		<content type="text/html" mode="escaped">		
&lt;p&gt;En mi &lt;a href=&quot;http://placechannel.com&quot;&gt;último proyecto&lt;/a&gt;, el número de archivos javascript que tenia que importar eran considerables por lo que los tiempos de carga se veian afectados, ya que los navegadores tienen una limitación en cuanto a conexiones y descargas simultáneas. Por tanto, la solución para mejorar estos tiempos, no es más que agrupar los archivos importados en el menor número posible de éstos y para ello tenemos varias opciones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;javascript_include_tag ..., &lt;strong&gt;:cache =&amp;gt; true&lt;/strong&gt; &lt;/li&gt;
&lt;p&gt;Haciendo uso de esta funcionalidad que trae rails, agrupamos todos los archivos indicados como argumentos en el helper en uno solo &quot;all.js&quot;.&lt;/p&gt;
&lt;li&gt;Uso de &lt;a href=&quot;http://code.google.com/p/bundle-fu/&quot;&gt;Bundle-fu&lt;/a&gt;&lt;/li&gt;
&lt;p&gt;La funcionalidad es la misma que la anterior solución mas unos &quot;extras&quot;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agrupa tambien archivos css!!&lt;/li&gt;
&lt;li&gt;Minimiza el tamaño del javascript usando JSMin u opcionalmente PackR.&lt;/li&gt;
&lt;li&gt;Posibilidad de ofuscación del código(No soy muy partidario de ello, pero bueno ahí está)&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;p&gt;Por tanto haciendo algo del tipo:&lt;/p&gt;
&lt;pre&gt; &amp;lt;% bundle do %&amp;gt;   &amp;lt;%= javascript_include_tag &quot;prototype&quot;, &quot;ClusterMarker&quot;, &quot;window&quot;, &quot;map&quot;, &quot;live_validation&quot;, &quot;application&quot;, &quot;effects&quot; %&amp;gt;   &amp;lt;%= stylesheet_link_tag &quot;all&quot;, &quot;flash&quot;, &quot;themes/alphacube&quot; ,&quot;themes/default&quot; %&amp;gt; &amp;lt;% end %&amp;gt; &lt;/pre&gt;
&lt;p&gt;Pasamos de esto:&lt;/p&gt;
&lt;pre&gt; &amp;lt;script src=&quot;/javascripts/prototype.js&quot; type=&quot;text/javascript&quot;&amp;gt;&amp;lt;/script&amp;gt; &amp;lt;script src=&quot;/javascripts/ClusterMarker.js&quot; type=&quot;text/javascript&quot;&amp;gt;&amp;lt;/script&amp;gt; &amp;lt;script src=&quot;/javascripts/window.js&quot; type=&quot;text/javascript&quot;&amp;gt;&amp;lt;/script&amp;gt; &amp;lt;script src=&quot;/javascripts/map.js&quot; type=&quot;text/javascript&quot;&amp;gt;&amp;lt;/script&amp;gt; &amp;lt;script src=&quot;/javascripts/live_validation.js&quot; type=&quot;text/javascript&quot;&amp;gt;&amp;lt;/script&amp;gt; &amp;lt;script src=&quot;/javascripts/application.js&quot; type=&quot;text/javascript&quot;&amp;gt;&amp;lt;/script&amp;gt; &amp;lt;script src=&quot;/javascripts/effects.js&quot; type=&quot;text/javascript&quot;&amp;gt;&amp;lt;/script&amp;gt; &amp;lt;link href=&quot;/stylesheets/all.css&quot; media=&quot;screen&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; /&amp;gt; &amp;lt;link href=&quot;/stylesheets/flash.css&quot; media=&quot;screen&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; /&amp;gt; &amp;lt;link href=&quot;/stylesheets/themes/alphacube.css&quot; media=&quot;screen&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; /&amp;gt; &amp;lt;link href=&quot;/stylesheets/themes/default.css&quot; media=&quot;screen&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; /&amp;gt; &lt;/pre&gt;
&lt;p&gt;a esto:&lt;/p&gt;
&lt;pre&gt; &amp;lt;link href=&quot;/stylesheets/cache/bundle.css&quot; media=&quot;screen&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; /&amp;gt; &amp;lt;script src=&quot;/javascripts/cache/bundle.js&quot; type=&quot;text/javascript&quot;&amp;gt;&amp;lt;/script&amp;gt; &lt;/pre&gt;
&lt;p&gt;En cuando a la que elijo yo, me quedo con la segunda opción simplemente por la posibilidad de agrupar también las hojas de estilo.&lt;/p&gt;

		</content>
	</entry>
	<entry>
		<id>http://www.lacoctelera.com/n3uro5i5/post/2008/03/13/comportamiento-curioso-to-json-vs-to-xml</id>
		<title>Comportamiento curioso - .to_json Vs .to_xml</title>
		<link rel="alternate" type="text/html" href="http://www.lacoctelera.com/n3uro5i5/post/2008/03/13/comportamiento-curioso-to-json-vs-to-xml" />
		<issued>2008-03-13T17:07:02+00:00</issued>
		<updated>2008-03-13T17:14:18+00:00</updated>
		<content type="text/html" mode="escaped">		
&lt;p&gt;Necesitaba hacer un pequeño benchmark para seleccionar que lenguaje de &quot;transporte de datos&quot; iba a usar, json o xml, a la hora de devolver la respuesta del servidor.&lt;/p&gt;
&lt;p&gt;Para ello realizé uno que se basaba en el parseo de 100 elementos almacenados en el array videos, en igual de condiciones( las que me permite mi maquina claro).&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Parseo de todos los atributos de los objetos:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;to_json&lt;/li&gt;
&lt;pre&gt; total=0; 50.times{b = Benchmark.measure{videos.to_json()}; total+=b.real }; puts total/50 0.384012351036072 &lt;/pre&gt;
&lt;li&gt;to_xml&lt;/li&gt;
&lt;pre&gt; total=0; 50.times{b = Benchmark.measure{videos.to_xml()}; total+=b.real }; puts total/50 0.271145639419556&lt;/pre&gt;
&lt;/ul&gt;
&lt;p&gt;
Como podemos apreciar, el to_xml es un poco mas rápido, por lo que la balanza se empezó a inclinar hacia el uso de xml en el parseo, pero decidí seguir haciendo pruebas a ver que tal ...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Parseo de los objetos pero restringiendonos a unos atributos concretos.&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;to_json:&lt;/li&gt;
&lt;pre&gt;total=0; 50.times{b = Benchmark.measure{videos.to_json(:only =&gt; [:titulo, :num_videos, :rating])}; total+=b.real }; puts total/50 0.0077793550491333&lt;/pre&gt;
&lt;li&gt;to_xml&lt;/li&gt;
&lt;pre&gt;total=0; 50.times{b = Benchmark.measure{videos.to_xml(:only =&gt; [:titulo, :num_videos, :rating])}; total+=b.real }; puts total/50 0.0196503305435181&lt;/pre&gt;
&lt;/ul&gt;
&lt;p&gt;
Ahora curiosamente el to_json es más rapido y nada mas y nada menos que un 250%.
&lt;/p&gt;
&lt;p&gt;
Mi último experimento se basaba en los mismo que el anterior, pero en este caso uno de los campos seleccionados era un datetime.
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Parseo restringiendo los atributos y teniendo uno del tipo datetime&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;to_json&lt;/li&gt;
&lt;pre&gt;total=0; 50.times{b = Benchmark.measure{videos.to_json(:only =&gt; [:titulo, :num_videos, :created_at])}; total+=b.real }; puts total/50 0.168494687080383&lt;/pre&gt;
&lt;li&gt;to_xml&lt;/li&gt;
&lt;pre&gt;total=0; 50.times{b = Benchmark.measure{videos.to_xml(:only =&gt;[:titulo, :num_videos, :created_at])}; total+=b.real }; puts total/50 0.0479027700424194&lt;/pre&gt;
&lt;/ul&gt;
&lt;p&gt;
to_xml un 350% mas rápido, ¿algún problema en el parseo de fechas del to_json?
&lt;/p&gt;
&lt;p&gt;Veamos los resultados en la siguiente tabla:&lt;/p&gt;
&lt;table bgcolor=&quot;#eeeeee&quot; border=&quot;1&quot; cellpadding=&quot;2&quot; &gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;to_json&lt;/th&gt;
&lt;th&gt;to_xml&lt;/th&gt;
&lt;th&gt;to_json/to_xml %&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;todos los campos&lt;/td&gt;
&lt;td&gt;0.384012351036072&lt;/td&gt;
&lt;td&gt;0.271145639419556&lt;/td&gt;
&lt;td&gt;to_xml 70% mas rápido&lt;/td&gt;
&lt;tr&gt;
&lt;tr&gt;
&lt;td&gt;selectivo, ningún datetime&lt;/td&gt;
&lt;td&gt;0.0077793550491333&lt;/td&gt;
&lt;td&gt;0.0196503305435181&lt;/td&gt;
&lt;td&gt;to_json 252% mas rápido&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;selectivo, un datetime&lt;/td&gt;
&lt;td&gt;0.168494687080383&lt;/td&gt;
&lt;td&gt;0.0479027700424194&lt;/td&gt;
&lt;td&gt;to_xml 350% mas rápido&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;¿Alguien me lo explica?&lt;br /&gt;
¿Obteneis comportamientos parecidos?
&lt;/p&gt;
&lt;/tr&gt;&lt;/tr&gt;
		</content>
	</entry>
	<entry>
		<id>http://www.lacoctelera.com/n3uro5i5/post/2008/03/08/orden-importacion-javascript-include-tag</id>
		<title>Orden importación javascript_include_tag</title>
		<link rel="alternate" type="text/html" href="http://www.lacoctelera.com/n3uro5i5/post/2008/03/08/orden-importacion-javascript-include-tag" />
		<issued>2008-03-08T13:43:54+00:00</issued>
		<updated>2008-03-10T10:50:31+00:00</updated>
		<content type="text/html" mode="escaped">		
&lt;p&gt;En el último &lt;a href=&quot;http://placechannel.com&quot;&gt;proyecto&lt;/a&gt; en el que he estado involucrado, me he percatado de una cosa curiosa, necesitaba que una función contenida en archivo javascript llamado map.js llamará a una función contenida en application.js.&lt;/p&gt;
&lt;p&gt;Para ello pensé en cargar los javascript en el orden adecuado pensando que el orden de la impresión del helper en el html, sería el indicado por mi en los parámetros&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;%= javascript_include_tag :defaults, &quot;map&quot;%&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Obteniendo este resultado:&lt;/p&gt;
&lt;pre&gt; &amp;lt;script src=&quot;/javascripts/prototype.js&quot; type=&quot;text/javascript&quot;&amp;gt;&amp;lt;/script&amp;gt; &amp;lt;script src=&quot;/javascripts/effects.js&quot; type=&quot;text/javascript&quot;&amp;gt;&amp;lt;/script&amp;gt; &amp;lt;script src=&quot;/javascripts/dragdrop.js&quot; type=&quot;text/javascript&quot;&amp;gt;&amp;lt;/script&amp;gt; &amp;lt;script src=&quot;/javascripts/controls.js&quot; type=&quot;text/javascript&quot;&amp;gt;&amp;lt;/script&amp;gt; &amp;lt;script src=&quot;/javascripts/map.js&quot; type=&quot;text/javascript&quot;&amp;gt;&amp;lt;/script&amp;gt; &lt;b&gt;&amp;lt;script src=&quot;/javascripts/application.js&quot; type=&quot;text/javascript&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/b&gt;&lt;/pre&gt;
&lt;p&gt;Como podemos ver, parece que este helper hace que el application.js sea el último en cargarse, lo cual puede tener su lógica, pero no deja de ser una curiosidad.&lt;/p&gt;

		</content>
	</entry>
	<entry>
		<id>http://www.lacoctelera.com/n3uro5i5/post/2008/02/23/autotest-gui-notifications-ubuntu</id>
		<title>Autotest Gui Notifications, ubuntu</title>
		<link rel="alternate" type="text/html" href="http://www.lacoctelera.com/n3uro5i5/post/2008/02/23/autotest-gui-notifications-ubuntu" />
		<issued>2008-02-23T14:40:32+00:00</issued>
		<updated>2008-02-27T22:44:11+00:00</updated>
		<content type="text/html" mode="escaped">		
&lt;p&gt;El otro día leyendo &lt;a href=&quot;http://gastonramos.wordpress.com/2008/02/17/autotest-desde-linux-como-en-una-mac/&quot;&gt;esta entrada&lt;/a&gt; que me encantó me entró la curiosidad de buscar alternativas a lo que nos mostraban ahí, entonces buscando un poco encontré con dos posibles alternativas, supongo que habrá muchas más, pero ahora solo me centraré en dos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Notificaciones usando mumbles:&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.mumbles-project.org/&quot;&gt;Mumbles project&lt;/a&gt; es un sistema de notificación al más puro estilo &lt;a href=&quot;http://growl.info/&quot;&gt;growl&lt;/a&gt; de Mac OS con ordenación en pila y cosillas de esas, si que es cierto que es un proyecto muy nuevo y está un poco verde, pero merece la pena echarle un vistazo.&lt;/p&gt;
&lt;p&gt;Podemos obtener el paquete desde &lt;a href=&quot;https://sourceforge.net/project/showfiles.php?group_id=193587&amp;amp;package_id=227998&quot;&gt;aquí&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Usando practicamente el mismo código que el obtenido en el post de referencia creamos un archivo .autotest en nuestra carpeta home, quedando de la siguiente forma:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; module Autotest::Growl    Autotest.add_hook :run do  |at|     system &quot;mumbles-send 'Autotest Running' Started&quot;   end    Autotest.add_hook :ran_command do |at|     results = [at.results].flatten.join(&quot;\n&quot;)     output  = results\     .slice(/(\d+)\s+examples?,\s*(\d+)\s+failures?(,\s*(\d+)\s+pending)?/)     if output       if $~[2].to_i &amp;gt; 0         system &quot;mumbles-send FAIL '#{output}'&quot;       else         system &quot;mumbles-send PASS '#{output}'&quot;       end     end   end end&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y el resultado seria:&lt;img src=&quot;http://www.lacoctelera.com/myfiles/n3uro5i5/mumbles.png&quot; class=&quot;imgIzq&quot; height=&quot;168&quot; width=&quot;249&quot;&gt;&lt;br /&gt;
Como principal limitación tenemos el no poder personalizar el color de los mensajes, lo cual resta muchos puntos al sistema, y mas en este caso que nos interesa una notificación rápida por color, sin tener que leer su contenido.&lt;/p&gt;
&lt;p&gt;Como ventaja le veo que es un tipo de notificación muy dinámica ya que se apilan unas encima de otras.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;br /&gt;
Usar Libreria libnotify de gnome&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Es la librería de comunicación por notificación montada por defecto en gnome, aún así debemos instalar el siguiente paquete.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;apt-get install libnotify-bin&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;y luego creat el archivo .autotest con el siguiente contenido:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;module Autotest::Growl    Autotest.add_hook :run do  |at|         system &quot;notify-send -i gtk-dialog-warning -t 3000 'Autotest Running' 'Started'&quot;   end   Autotest.add_hook :ran_command do |at|     results = [at.results].flatten.join(&quot;\n&quot;)     output  = results\     .slice(/(\d+)\s+examples?,\s*(\d+)\s+failures?(,\s*(\d+)\s+pending)?/)     if output       if $~[2].to_i &amp;gt; 0         system &quot;notify-send -i gtk-dialog-error -t 3000 'FAIL' '#{output}'&quot;       else         system &quot;notify-send -i gtk-dialog-info -t 3000 'PASS' '#{output}'&quot;       end     end   end end &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Como veréis el código no ha cambiado prácticamente en nada,lo bueno es que ahora podemos personalizar un poco los mensajes con iconos quedando así:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.lacoctelera.com/myfiles/n3uro5i5/notifi.png&quot; class=&quot;imgIzq&quot; height=&quot;115&quot; width=&quot;401&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.lacoctelera.com/myfiles/n3uro5i5/error.png&quot; class=&quot;imgIzq&quot; height=&quot;120&quot; width=&quot;405&quot;&gt;&lt;/p&gt;
&lt;p&gt;Comentar que esto es solo un pequeño ejemplo, podríamos afinar y dar mas funcionalidad a estas notificaciones, ya que por ejemplo no he diferenciado cuando un test falla por no cumplir sus requerimientos o por problemas de sintaxis del propio test.&lt;/p&gt;
&lt;p&gt;Espero que os sea de utilidad!
&lt;/p&gt;

		</content>
	</entry>
</feed>
