<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Délawen</title>
	<atom:link href="http://delawen.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://delawen.com</link>
	<description>Another penguin lost in space</description>
	<lastBuildDate>Fri, 08 Mar 2013 15:01:55 +0000</lastBuildDate>
	<language>es-ES</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Jornadas SIG Libre Girona VII</title>
		<link>http://delawen.com/2013/03/jornadas-sig-libre-girona-vii/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=jornadas-sig-libre-girona-vii</link>
		<comments>http://delawen.com/2013/03/jornadas-sig-libre-girona-vii/#comments</comments>
		<pubDate>Fri, 08 Mar 2013 15:01:55 +0000</pubDate>
		<dc:creator>delawen</dc:creator>
				<category><![CDATA[SIG]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[datos libres]]></category>
		<category><![CDATA[geocat]]></category>
		<category><![CDATA[girona]]></category>
		<category><![CDATA[gis]]></category>
		<category><![CDATA[jornadas]]></category>
		<category><![CDATA[opendata]]></category>
		<category><![CDATA[sig]]></category>
		<category><![CDATA[sig libre]]></category>

		<guid isPermaLink="false">http://delawen.com/?p=194</guid>
		<description><![CDATA[Estas últimas Jornadas SIG Libre de Girona han girado en torno a servicios cloud y datos abiertos. Desde el apoteósico inicio con las ponencias plenarias, con parte destacada de Sergi Morales (ExportosenTI), el resto de las charlas han ido rodando todas en el mismo tema. Algunas quizás un poco más críticas, como F. Puga desde [...]]]></description>
				<content:encoded><![CDATA[<p>Estas últimas <a href="http://www.sigte.udg.edu/jornadassiglibre/">Jornadas SIG Libre de Girona</a> han girado en torno a servicios cloud y datos abiertos. Desde el apoteósico inicio con las ponencias plenarias, con parte destacada de <a href="https://twitter.com/sergim">Sergi Morales</a> (<a href="http://www.expertosenti.com/">ExportosenTI</a>), el resto de las charlas han ido rodando todas en el mismo tema. Algunas quizás un poco más críticas, como <a href="https://twitter.com/fpuga">F. Puga </a>desde <a href="http://cartolab.udc.es/">CartoLab</a> cuando nos pidió que no olvidáramos que no todo el mundo tiene acceso global a internet, y que muchos millones de personas, las cuales no tienen nuestro nivel tecnológico, también tienen necesidades GIS.</p>
<div class="wp-caption alignnone" style="width: 490px"><a href="https://twitter.com/delawen/status/309946862901809152"><img alt="" src="https://yfrog.com/h68elpfj:iphone" width="480" height="360" /></a><p class="wp-caption-text">Esto es lo que significa cloud en zonas en desarrollo. #siglibre7 #firstworldproblems</p></div>
<p>Otra gran cuestión que se ha levantado en estas jornadas ha sido, de la mano de <a href="http://www.linkedin.com/pub/malcolm-bain/5/641/921">Malcolm Bain</a>, cuales son los límites legales de los servicios de almacenamiento de datos en la nube, qué podemos esperar y exigir y hasta qué punto, desde la perspectiva del proveedor de servicios, tenemos que ofrecer un mínimo de nivel de servicio. Resulta sin duda sorprendente aprender que algunos de los contratos que aceptamos en servicios muy conocidos (como correo electrónico web o hosting) son, sencillamente, ilegales.</p>
<p><strong>La batalla del software libre ya está ganada, ahora queda la batalla de la libertad y privacidad de los datos.</strong></p>
<p>También ha resultado una delicia ver el enfrentamiento dialéctico entre varios de los ponentes, como cuando <a href="https://twitter.com/jatorre">Javier de la Torre</a> (<a href="http://cartodb.com/">Cartodb</a>) <a href="https://twitter.com/jatorre/status/309976356245086208">arremetió contra OGC o las IDE</a>. Sin duda un tema que, aunque no coincido completamente con su opinión, es algo a debatir y mejorar. ¿Deberían intentar los IDE hacerse más amigables para acercarse al usuario o es suficiente con ser un repositorio de datos?</p>
<p><img class="alignleft" alt="" src="http://a.yfrog.com/img876/9910/nsbenx.jpg" width="326" height="244" />El jueves por la tarde, <a href="http://geocat.net/">Geocat</a> tuvo sesión doble entre varias charlas muy centradas en los metadatos y su importancia en los IDE. Primero presentamos rápidamente quiénes éramos y qué hacíamos, centrándonos sobre todo en <a title="¿Qué es GeoNetwork?" href="http://delawen.com/2012/10/que-es-geonetwork/">GeoNetwork</a> y <a href="http://geocat.net/bridge">Bridge</a>, mencionando también nuestro futuro <a href="http://geocat.net/live">GeoCat Live</a>. Y justo antes de terminar el día, un taller de 30 minutos para presentar GeoNetwork, justo antes de dar paso a la primera reunión de <a href="http://geoinquietos.drupalgardens.com/">geoinquietos</a> nacionales.</p>
<p>Es difícil resumir en un sólo artículo toda la tremenda dimensión alcanzada en estas jornadas. Mucho optimismo, muchas ganas de seguir trabajando y, sobre todo, la certeza de que estamos en el camino correcto, apoyando el software y los datos libres, centrándonos en la parte social de nuestro trabajo. El viernes, casi para finalizar, <a href="https://twitter.com/jsgisdev">Javier Sánchez</a> orientó la recta final de las jornadas hacia este tema, hablando de las empresas sociales, las cuales no sólo tienen una cuenta de resultados económica sino también social.</p>
<p>En resumen, las Jornadas SIG Libre Girona son sin duda el Evento SIG(en mayúsculas) que cualquier hispano hablante debería tener en cuenta si quiere estar al día de las últimas novedades.</p>
]]></content:encoded>
			<wfw:commentRss>http://delawen.com/2013/03/jornadas-sig-libre-girona-vii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GeoNetwork: domesticando una jauría de metagatos</title>
		<link>http://delawen.com/2012/12/geonetwork-domesticando-una-jauria-de-metagatos/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=geonetwork-domesticando-una-jauria-de-metagatos</link>
		<comments>http://delawen.com/2012/12/geonetwork-domesticando-una-jauria-de-metagatos/#comments</comments>
		<pubDate>Fri, 14 Dec 2012 08:13:24 +0000</pubDate>
		<dc:creator>delawen</dc:creator>
				<category><![CDATA[SIG]]></category>
		<category><![CDATA[geonetwork]]></category>

		<guid isPermaLink="false">http://delawen.com/?p=183</guid>
		<description><![CDATA[Ayer estuve en mi primer betabeers, donde presenté: GeoNetwork: domesticando una jauría de metagatos.]]></description>
				<content:encoded><![CDATA[<p>Ayer estuve en mi primer <a href="http://betabeers.com/event/vi-betabeers-sevilla-13-diciembre-2012-547/">betabeers</a>, donde presenté: <a href="http://delawen.github.com/geonetwork-domesticando-una-jauria-de-metagatos">GeoNetwork: domesticando una jauría de metagatos</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://delawen.com/2012/12/geonetwork-domesticando-una-jauria-de-metagatos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¿Qué es GeoNetwork?</title>
		<link>http://delawen.com/2012/10/que-es-geonetwork/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=que-es-geonetwork</link>
		<comments>http://delawen.com/2012/10/que-es-geonetwork/#comments</comments>
		<pubDate>Sun, 28 Oct 2012 12:01:38 +0000</pubDate>
		<dc:creator>delawen</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[SIG]]></category>
		<category><![CDATA[Tecnologías]]></category>
		<category><![CDATA[geocat]]></category>
		<category><![CDATA[geonetwork]]></category>
		<category><![CDATA[gis]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jeeves]]></category>
		<category><![CDATA[opendata]]></category>
		<category><![CDATA[sig]]></category>

		<guid isPermaLink="false">http://delawen.com/?p=175</guid>
		<description><![CDATA[GeoNetwork es una aplicación web que permite mantener un catálogo de datos referenciados geográficamente. Esto es, un portal con buscador que permite visualizar metadatos combinándolos con mapas. Sigue estrictamente los diferentes estándares para datos, desde Inspire hasta OGC. Esto ha propiciado su gran expansión en muchas organizaciones, como el geoportal suizo o el brasileño, pasando por [...]]]></description>
				<content:encoded><![CDATA[<p><a title="http://geonetwork-opensource.org/" href="http://geonetwork-opensource.org/" target="_blank">GeoNetwork</a> es una aplicación web que permite mantener un catálogo de datos referenciados geográficamente. Esto es, un portal con buscador que permite visualizar metadatos combinándolos con mapas. Sigue estrictamente los diferentes estándares para datos, desde Inspire hasta OGC. Esto ha propiciado <a href="http://geonetwork-opensource.org/gallery/gallery.html" target="_blank">su gran expansión en muchas organizaciones</a>, como el <a href="http://www.geocat.ch/geonetwork/srv/deu/geocat" target="_blank">geoportal suizo</a> o el <a href="http://www.metadados.inde.gov.br/geonetwork/srv/br/main.home" target="_blank">brasileño</a>, pasando por el <a href="https://dc.niwa.co.nz/docthreats_dc/srv/en/main.home" target="_blank">neozelandés</a>.</p>
<p>Se despliega sobre un contenedor de aplicaciones java (como <a title="http://tomcat.apache.org/" href="http://tomcat.apache.org/" target="_blank">tomcat</a> o <a title="http://jetty.codehaus.org/jetty/" href="http://jetty.codehaus.org/jetty/" target="_blank">jetty</a>), funcionando sobre el framework <a title="código fuente de jeeves" href="https://github.com/geonetwork/core-geonetwork/tree/master/jeeves" target="_blank">Jeeves</a>. Jeeves se basa en transformaciones XSLT que permiten un desarrollo rápido y sencillo (a la vez que potente) de interfaces tanto para un usuario como para máquinas (XML).  Esto hace que los datos en GeoNetwork sean fácilmente accesibles por diferentes plataformas.</p>
]]></content:encoded>
			<wfw:commentRss>http://delawen.com/2012/10/que-es-geonetwork/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>De Emergya a GeoCat</title>
		<link>http://delawen.com/2012/10/de-emergya-a-geocat/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=de-emergya-a-geocat</link>
		<comments>http://delawen.com/2012/10/de-emergya-a-geocat/#comments</comments>
		<pubDate>Sun, 07 Oct 2012 11:54:48 +0000</pubDate>
		<dc:creator>delawen</dc:creator>
				<category><![CDATA[Libertad]]></category>
		<category><![CDATA[emergya]]></category>
		<category><![CDATA[geocat]]></category>

		<guid isPermaLink="false">http://delawen.com/?p=160</guid>
		<description><![CDATA[Estas últimas semanas han sido caóticas y como ejercicio para asentar y echar el ancla, me gustaría hacer un breve resúmen de mi cambio de trabajo. Mis principales motivaciones para dejar de trabajar en Emergya, a pesar de la enorme calidad humana y técnica que tiene, fueron tres: La coyuntura actual en la que se debate [...]]]></description>
				<content:encoded><![CDATA[<p>Estas últimas semanas han sido caóticas y como ejercicio para asentar y echar el ancla, me gustaría hacer un breve resúmen de mi cambio de trabajo.</p>
<p>Mis principales motivaciones para dejar de trabajar en <a title="Universo Emergya" href="http://universo.emergya.es/espacios/marias" target="_blank">Emergya</a>, a pesar de la enorme calidad humana y técnica que tiene, fueron tres:<img class="alignright" title="Metagato" src="http://delawen.github.com/Taller-Routing/cute/metagato.jpg" alt="" width="108" height="155" /></p>
<ul>
<li><span style="color: #3e3e3e; font-family: 'Trebuchet MS', Tahoma, Verdana, Arial, sans-serif; font-size: small;">La <strong>coyuntura</strong> actual en la que se debate España ahora mismo impide en gran medida poder realizar proyectos interesantes, forzando a las empresas a centrarse únicamente en sobrevivir, con todos los roces e incomodidades que esto genera.</span></li>
<li><span style="color: #3e3e3e; font-family: 'Trebuchet MS', Tahoma, Verdana, Arial, sans-serif; font-size: small;">El <strong>reto</strong>. Y esta, creo que es la motivación principal. El enorme reto que supone el cambio de contexto a una nueva empresa, con una forma de trabajar tan parecida y a la vez tan diferente. Necesitaba ver mundo, aprender, beber de otras fuentes. Cinco años en Emergya son maravillosos, pero empezaba a sentir que se me estaba quedando pequeña. ¿<a title="Big Fish" href="http://www.imdb.com/title/tt0319061/quotes" target="_blank">Pez grande en lago pequeño o pez pequeño en el mar</a>?</span></li>
<li><strong>GeoGatos</strong>¿Alguien podría rechazar la posibilidad de convertirse en un geo-gato? ¿Puede haber un paso más allá de esto? ¿Se puede no querer trabajar con metagatos?</li>
</ul>
<p><span style="font-family: 'Trebuchet MS', verdana, sans-serif, tahoma, arial;"><span style="font-size: 12px; line-height: normal;"><img class="alignleft" src="http://icanhascheezburger.files.wordpress.com/2010/03/funny-pictures-cat-says-thank-you1.jpg" alt="" width="180" height="135" /><strong>Por supuesto que no ha sido una decisión fácil</strong>. Para mi Emergya es, y siempre será, esa empresa que me acogió con todo el cariño del mundo y me ayudó a dar mis primeros pasos en el mundo laboral, fortaleciendo mi convencimiento de que el software libre es el camino correcto. Lo quiera o no, Emergya forma parte de mi y el título de &#8220;ex-emergyana&#8221; ya no me lo quita nadie. Espero no olvidarme nunca del camino de vuelta a la <a title="Gatera" href="http://i.chzbgr.com/completestore/2010/8/4/d924c79d-2608-447c-afe4-41094c52521c.jpg" target="_blank">gatera</a>.</span></span></p>
<p>Pero era una paso que tenía que dar. Así que me lancé a la piscina, y tras una semana de toma de contacto, ya no tengo ninguna duda de que ha sido la decisión correcta. GeoCat tiene un equipo de trabajo impresionante y acogedor y su línea de desarrollo es realmente fascinante. Así que supongo que a partir de ahora me escucharéis menos de cálculo de rutas y más de metadatos e interoperabilidad (que no quiere decir que vaya a abandonar el routing, por supuesto, una tiene su corazoncito). Próxima parada: <a title="https://github.com/geonetwork/core-geonetwork" href="https://github.com/geonetwork/core-geonetwork" target="_blank">GeoNetwork</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://delawen.com/2012/10/de-emergya-a-geocat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GNU Solidario</title>
		<link>http://delawen.com/2012/06/gnu-solidario/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=gnu-solidario</link>
		<comments>http://delawen.com/2012/06/gnu-solidario/#comments</comments>
		<pubDate>Sun, 10 Jun 2012 18:13:07 +0000</pubDate>
		<dc:creator>delawen</dc:creator>
				<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[gnu health]]></category>
		<category><![CDATA[solidaridad]]></category>

		<guid isPermaLink="false">http://delawen.com/?p=141</guid>
		<description><![CDATA[Muchas veces me encuentro por casualidad con tecnologías o aplicaciones libres que sorprenden agradablemente no sólo por su uso sino por el impacto que pueden llegar a causar. Este es el caso de GNU-Solidario, o GNU Health, recientemente premiado por la FSF por su aportación solidaria. Básicamente consiste en una plataforma libre para gestionar datos [...]]]></description>
				<content:encoded><![CDATA[<p>Muchas veces me encuentro por casualidad con tecnologías o aplicaciones libres que sorprenden agradablemente no sólo por su uso sino por el impacto que pueden llegar a causar. Este es el caso de <a href="http://blog.gnusolidario.org/2012/06/gnu-health-version-16-liberada.html">GNU-Solidario, o GNU Health</a>, recientemente <a href="http://www.europapress.es/islas-canarias/noticia-free-software-foundation-otorga-canario-luis-falcon-premio-mejor-proyecto-social-2011-20120327143023.html">premiado por la FSF</a> por su aportación solidaria. Básicamente consiste en una plataforma libre para gestionar datos médicos, tales como expedientes de pacientes, resultados de pruebas, diagnósticos,&#8230; Aunque no es un tema que domine (ni mucho menos), podemos comprobar en la misma página web que la plataforma está muy avanzada y ya están colaborando con Naciones Unidas para utilizarla allá donde el software libre se hace indispensable.</p>
<p>Sin embargo, lo más sorprendente de todo es que este proyecto ha salido de la mente de un joven informático canario, <a href="https://twitter.com/#!/meanmicio">Luis Falcón</a>. Y es que muchas veces no tenemos que buscar lejos para encontrar talento capaz de cambiar el mundo.</p>
]]></content:encoded>
			<wfw:commentRss>http://delawen.com/2012/06/gnu-solidario/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Anotaciones en Python</title>
		<link>http://delawen.com/2012/05/anotaciones-en-python/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=anotaciones-en-python</link>
		<comments>http://delawen.com/2012/05/anotaciones-en-python/#comments</comments>
		<pubDate>Tue, 15 May 2012 10:50:06 +0000</pubDate>
		<dc:creator>delawen</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[annotation]]></category>
		<category><![CDATA[thread]]></category>

		<guid isPermaLink="false">http://delawen.com/?p=109</guid>
		<description><![CDATA[Después de ver cómo funcionan las anotaciones en Java, pasaremos a ver cómo funcionan las anotaciones en python. Al ser un lenguaje menos estricto, python permite definir las anotaciones de forma más directa. Por ejemplo, si queremos que nos avise con un print cada vez que ejecutemos ciertas funciones, no tenemos más que definir una [...]]]></description>
				<content:encoded><![CDATA[<p>Después de ver <a title="Anotaciones en Java" href="http://delawen.com/2012/04/anotaciones-en-java/">cómo funcionan las anotaciones en Java</a>, pasaremos a ver cómo funcionan las anotaciones en python. Al ser un lenguaje menos estricto, python permite definir las anotaciones de forma más directa.</p>
<p>Por ejemplo, si queremos que nos avise con un print cada vez que ejecutemos ciertas funciones, no tenemos más que definir una interfaz que imprima el log que queremos antes de ejecutar la función:</p>
<pre><span style="color: #ff0000;">from <a href="http://docs.python.org/library/functools.html">functools</a> import wraps</span>
<span style="color: #ff0000;">def log(func):</span>
<span style="color: #ff0000;"> @wraps(func)</span>
<span style="color: #ff0000;"> def log_func(*args, **kwargs):</span>
  print "log"
  return func(*args, **kwargs)
 return log_func
<span style="color: #ff0000;">@log</span>
def func1():
 print "Ejecutando funcion uno"
<span style="color: #ff0000;">@log</span>
def func2():
 print "Ejecutando funcion uno"
func1()
func2()</pre>
<p>Este código devolvería el siguiente resultado:</p>
<pre>log
Ejecutando función uno
log
Ejecutando función dos</pre>
<p>También podemos usar las anotaciones para cosas más útiles, como indicar a python que cierta función se va a ejecutar en modo asíncrono en un hilo diferente:</p>
<pre><span style="color: #000080;">from multiprocessing import process</span>
<span style="color: #ff0000;">def run_async(func):</span>
<span style="color: #ff0000;"> @wraps(func)</span>
<span style="color: #ff0000;"> def async_func(*args, **kwargs):</span>
<span style="color: #000080;"> func_hl = Process(target = func, args = args, kwargs = kwargs)</span>
<span style="color: #000080;"> func_hl.start()</span>
 return func_hl
 return async_func
<span style="color: #ff0000;">@run_async</span>
 def process():
 print "Ejecutado en asíncrono"</pre>
]]></content:encoded>
			<wfw:commentRss>http://delawen.com/2012/05/anotaciones-en-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Anotaciones en Java</title>
		<link>http://delawen.com/2012/04/anotaciones-en-java/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=anotaciones-en-java</link>
		<comments>http://delawen.com/2012/04/anotaciones-en-java/#comments</comments>
		<pubDate>Sun, 15 Apr 2012 10:49:02 +0000</pubDate>
		<dc:creator>delawen</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[annotations]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://delawen.com/?p=105</guid>
		<description><![CDATA[Las anotaciones o decoradores sobre el código se han vuelto muy comunes en los últimos tiempos. Permiten al programador añadir información útil extra ya sea para comentar mejor el código o para modificar la forma de compilar/ejecutar una clase concreta. Son una extensión a Java para permitir la programación orientada a aspectos. Las anotaciones pueden [...]]]></description>
				<content:encoded><![CDATA[<p>Las anotaciones o decoradores sobre el código se han vuelto muy comunes en los últimos tiempos. Permiten al programador añadir información útil extra ya sea para comentar mejor el código o para modificar la forma de compilar/ejecutar una clase concreta. Son una extensión a Java para permitir la <a title="POA" href="http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_aspectos" target="_blank">programación orientada a aspectos</a>.</p>
<p>Las anotaciones pueden ser de tres tipos, según el momento en el que son visibles:</p>
<h5>Información para el Compilador</h5>
<p>Estas anotaciones permiten al compilador indicar si debe o no omitir errores y warnings o qué hacer con ellos. A nada que se haya trabajado con un IDE Java (como <a href="http://eclipse.org/" target="_blank">eclipse</a>) se habrán utilizado este tipo de anotaciones de forma natural, por ejemplo usando<strong> @Override</strong> sobre una función para indicar que está sobreescribiendo una declaración definida en una clase padre. Esta anotación es completamente opcional,  pero permite tanto al compilador como al desarrollador comprobar que efectivamente se está sobreescribiendo una funcionalidad existente por herencia.</p>
<p>Por ejemplo:</p>
<pre>public class Padre {     
    public void do(){
        System.out.println("Padre");
     }
}

public class Hijo extends Padre{     
   <strong> @Override</strong>
    public void do(){
        System.out.println("Hijo");
     }
}</pre>
<h5>Anotaciones en Tiempo de Compilación y Despliegue</h5>
<p>Estas anotaciones permiten añadir información extra al compilador para que modifique la forma en la que se genera el código de los ficheros .class. Puede servir para modificar clases (añadiendo o modificando funcionalidad respecto a lo descrito en el código fuente), generar clases nuevas (por ejemplo en base a un fichero descriptor), etc&#8230;</p>
<p>Estas anotaciones sólo serán visibles en este punto, es decir, no se escribirán sobre los .class y por tanto no se podrán consultar en tiempo de ejecución.</p>
<h5>Anotaciones en Tiempo de Ejecución</h5>
<p>Estas anotaciones pueden ser consultadas en tiempo de ejecución y funcionan de forma muy parecida a como se utilizaría una interfaz.</p>
<p>Veamos directamente un ejemplo de cómo crear una anotación Runtime y cómo se puede utilizar. La anotación MyAnnotation se podrá aplicar a elementos de tipo field, es decir, a atributos de una clase:</p>
<pre>import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
     public @interface MyAnnotation {
}</pre>
<p>Ahora podemos crear una clase que esté anotada con esta anotación:</p>
<pre>public class myObject
 {
 @MyAnnotation
 public String field;
 }</pre>
<p>De esta forma, en cualquier otra parte del código, podemos comprobar mediante reflexión si un objeto tiene un campo marcado con la anotación:</p>
<pre>Class&lt;?&gt; res = objeto.getClass();
for (Field f : res.getFields()) {
     if (f.isAnnotationPresent(MyAnnotation.class)) {
          System.out.println("OK");
      }
}</pre>
<p>Más información:</p>
<ul>
<li><a title="Tutorial de Oracle" href="http://docs.oracle.com/javase/tutorial/java/javaOO/annotations.html" target="_blank">Tutorial de Oracle</a></li>
<li><a href="http://two.xthost.info/ytrio40/tutoriales/Metadatos.pdf">Tutorial de Metadatos</a></li>
<li><a title="Ejemplo Gofleet" href="https://github.com/Emergya/gofleet/tree/master/context-loader" target="_blank">Ejemplo Práctico</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://delawen.com/2012/04/anotaciones-en-java/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Apuntes del taller de GeoServer</title>
		<link>http://delawen.com/2012/03/apuntes-del-taller-de-geoserver/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=apuntes-del-taller-de-geoserver</link>
		<comments>http://delawen.com/2012/03/apuntes-del-taller-de-geoserver/#comments</comments>
		<pubDate>Fri, 02 Mar 2012 13:11:04 +0000</pubDate>
		<dc:creator>delawen</dc:creator>
				<category><![CDATA[SIG]]></category>
		<category><![CDATA[geoserver]]></category>
		<category><![CDATA[gis]]></category>
		<category><![CDATA[gvsig]]></category>
		<category><![CDATA[sig]]></category>

		<guid isPermaLink="false">http://delawen.com/?p=92</guid>
		<description><![CDATA[Estas son las notas que tomé sobre el taller de GeoServer en las últimas Jornadas GvSIG. Más información. Es fundamental cambiar la configuración geoserver_data_dir en el fichero web.xml para no perder los datos cada vez que se reinicia el contenedor de aplicaciones (como Tomcat). Así mismo, es bueno echarle un vistazo al resto de configuraciones [...]]]></description>
				<content:encoded><![CDATA[<p>Estas son las notas que tomé sobre el taller de <a href="http://geoserver.org/display/GEOS/Welcome">GeoServer</a> en las últimas Jornadas GvSIG.<br />
<a href="http://blog.gvsig.org/2011/11/08/workshop-at-the-7th-gvsig-conference-introduction-to-geoserver/">Más información.</a></p>
<p>Es fundamental cambiar la configuración <em>geoserver_data_dir</em> en el fichero<em> web.xml</em> para no perder los datos cada vez que se reinicia el contenedor de aplicaciones (como Tomcat). Así mismo, es bueno echarle un vistazo al resto de configuraciones ya que contiene datos interesantes como el tipo de proyecciones que se van a utilizar o el tamaño de la caché. Hay datos configurables &#8220;on the fly&#8221; y datos no configurables sobre la marcha.</p>
<p>Vamos a probar a añadir algunas fuentes de datos para generar las capas. Para agregar un <a href="http://es.wikipedia.org/wiki/Shapefile">shapefile</a>, tienes que copiar el fichero del shape en la misma máquina física del servidor. Para incluir el shapefile en el geoserver, hay que buscar la opción de añadir un nuevo datastore de tipo shapefile. Si se utiliza la localización del tipo &#8220;file:data/&#8230;&#8221; es una uri relativa al geoserver. También se puede buscar con el botón &#8220;Browse&#8221; y se utilizarán rutas absolutas.</p>
<p>Cuidado: No debes dar permiso a cualquiera para la interfaz de configuración porque pueden ver todo el disco duro físico en este tipo de cuadro de diálogo.</p>
<p>Lo mejor es utilizar <em>memory mapped buffers</em> (salvo que uses Windows) si tienes suficiente memoria RAM, ya que evitarás contínuos accesos físicos a disco. Así mismo, lo mejor es reproyectar desde el EPSG nativo al declarado. Si el shapefile es muy grande, calcular el bounding box tardará bastante. Esto no pasa en bases de datos reales donde hay índices espaciales.</p>
<p>GeoServer te permite introducir marcas de agua en tus datos (por ejemplo para usar OpenStreetMap).</p>
<p>Cuando se usan conexiones a bases de datos, marcar la opción de validar la conexión, porque nunca sabes cuándo va a petar la conexión.</p>
<p><a href="http://geowebcache.org/">GeoWebCache</a> permite en las últimas versiones de Geoserver, administrar cómodamente qué capas se cachean.</p>
<p>Se pueden poner datos que varíen según el tiempo, por ejemplo para tornados o tormentas. En la tabla de la base de datos habrá una columna indicando el tiempo. También se pueden poner datos con elevaciones. Pero todo esto hay que hacerlo con Google Earth. Lo interesante es que se sirven los datos, luego algún visor libre que lo soporte podría ser interesante&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://delawen.com/2012/03/apuntes-del-taller-de-geoserver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apuntes del taller GvSIG 2.0</title>
		<link>http://delawen.com/2012/02/apuntes-del-taller-gvsig-2-0/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=apuntes-del-taller-gvsig-2-0</link>
		<comments>http://delawen.com/2012/02/apuntes-del-taller-gvsig-2-0/#comments</comments>
		<pubDate>Wed, 08 Feb 2012 12:47:55 +0000</pubDate>
		<dc:creator>delawen</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[SIG]]></category>
		<category><![CDATA[gis]]></category>
		<category><![CDATA[gvsig]]></category>
		<category><![CDATA[gvsig2.0]]></category>
		<category><![CDATA[plugin gvsig]]></category>
		<category><![CDATA[sig]]></category>

		<guid isPermaLink="false">http://delawen.com/?p=86</guid>
		<description><![CDATA[Estos son los apuntes que tomé sobre gvSIG 2.0 en las últimas Jornadas GvSIG. Pre-requisitos: Java Eclipse Ant (preferiblemente) Maven (preferiblemente) gvSIG (esto es recursivo ) La principal ventaja de gvSIG 2.0 es que puedes crear un plugin sin saber cómo funciona gvSIG ni tener que compilarlo. Tenemos una instalación de gvSIG que despliega unos [...]]]></description>
				<content:encoded><![CDATA[<p>Estos son los apuntes que tomé sobre <a href="http://joinup.ec.europa.eu/software/gvsig-desktop/description" target="_blank">gvSIG 2.0</a> en las últimas <a href="http://jornadas.gvsig.org" target="_blank">Jornadas GvSIG</a>.</p>
<p>Pre-requisitos:</p>
<ul>
<li>Java</li>
<li>Eclipse</li>
<li>Ant (preferiblemente)</li>
<li><a href="http://maven.apache.org" target="_blank">Maven</a> (preferiblemente)</li>
<li><a title="gvSIG" href="http://gvsig.org" target="_blank">gvSIG</a> (esto es recursivo <img src='http://delawen.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</li>
</ul>
<p>La principal ventaja de gvSIG 2.0 es que puedes crear un plugin sin saber cómo funciona gvSIG ni tener que compilarlo. <a title="Guía para compilar gvSIG 2.0" href="http://delawen.com/2012/01/guia-para-compilar-gvsig-2-0/">Tenemos una instalación de gvSIG que despliega unos binarios que genera el workspace</a>. Pero no tenemos que tocar los fuentes de gvSIG, salvo que algo no funcione (bugs) o haya que añadir alguna funcionalidad al núcleo. Preferentemente no lo toques, mejor consulta con los desarrolladores del núcleo de gvSIG y ellos intentarán encargarse.</p>
<p><span id="more-86"></span>Con el binario de gvSIG viene un asistente para ejecutarlo y que cree un workspace de eclipse con una plantilla prefijada que deja todo configurado para compilar nuestra extensión. También incorpora un asistente para generar instalables fácilmente. Estos asistentes son accesibles mediante la aplicación gvSIG, en el menú de la aplicación.</p>
<p>La librería org.gvsig.tools es la infraestructura básica para desarrollar plugins. La principal funcionalidad se centra en registro de puntos de extensión, utilidades para separar API, implementaciones y SPI (proveedor de servicios), así como monitorización de tareas (que en la versión 1.0 solía congelar la aplicación). Esta librería también soporta eventos, persistencia, etc&#8230;</p>
<p>Una librería es un jar. Cuando nuestra aplicación levante el jar, org.gvsig.tools prepara dicha librería y la inicializa dentro del core de gvSIG. Las clases dentro de la librería implementan la interfaz Library (AbstractLibrary).</p>
<p>Los managers (PluginsManager) son el punto de entrada a las funcionalidades. Son como factorías (singletons) (al menos uno por librería) que levanta instancias de las funcionalidades incluídas dentro de la librería. También guarda la configuración del módulo.</p>
<p>Los locators (PluginsLocator) permiten registrar implementaciones de managers. Nos permiten recuperar la implementación de manager de un API en concreto. &#8220;Dame el manager de esta librería.&#8221;</p>
<p>Un plugin es una pieza que aporta una funcionalidad: botones y barras de herramientas, opciones de menús, proveedores de datos y tipos de documentos. Andami no ha evolucionado demasiado desde la versión gvSIG 1.x. <a href="http://conocimientoabierto.es/como-carga-gvsig-las-extensiones/385/" target="_blank">Andami</a> es el framework de los plugins.</p>
<p>El plugin siempre tendrá al menos dos ficheros:</p>
<ul>
<li>config.xml que indica las clases que implementan el plugin, las dependencias y los menús</li>
<li>package.info que indica la versión, el nombre, el build,&#8230; del plugin.</li>
</ul>
<p>Una extensión (IExtension) es un conjunto de herramientas asociadas a un plugin metidas en una barra de herramientas o menú y funcionan de forma conjunta. Un grupo de plugins, vaya. La extensión que implemente ExclusiveUIExtension especifica qué herramientas están o no visibles en cada momento, sin tener que tocar código en el core de gvSIG.</p>
<p>Para crear un nuevo plugin, hacemos uso de la herramienta del menú de generación de plugins disponible en la versión de desarrollo de gvSIG. Esto genera el workspace automáticamente e instala dicho plugin en el gvSIG desde el que hemos generado el plugin. <a title="Guía para compilar gvSIG 2.0" href="http://delawen.com/2012/01/guia-para-compilar-gvsig-2-0/">Si no tienes versión de desarrollo, tendrás que compilar gvSIG de los fuentes</a>.</p>
<p>Conviene ir haciéndolo mientras se leen estos apuntes o puedes perderte.</p>
<p>El plugin constará de dos proyectos maven: org.gvsig.plugin y org.gvsig.plugin.app. org.gvsig.plugin aportará la funcionalidad de la librería de forma independiente de gvSIG (la lógica de negocio). Puede tener dependencias de librerías de gvSIG, pero debería poder funcionar sin tener que abrir la aplicación. Es decir, no requiere nada de Andami, por ejemplo. En org.gvsig.plugin.app.mainplugin (dentro de org.gvsig.plugin.app) tendrá la implementación de dicha funcionalidad dentro de gvSIG.</p>
<p>Lo suyo sería que los paquetes que ponen &#8220;api&#8221; contengan interfaces y que los paquetes que contienen &#8220;impl&#8221; tengan clases con la funcionalidad.</p>
<p>En principio el workspace está preparado para trabajar con eclipse e importar los proyectos con el plugin de maven. Si hemos cogido una plantilla adecuada al generar los fuentes del plugin, tendremos prácticamente todo el trabajo hecho (salvo la lógica de negocio exacta de nuestro plugin).</p>
<p>Es importante hacerse un proyecto java para probar nuestro plugin, con su propio main, sin tener que arrancar gvSIG. Así mismo se recomienda que en la parte de librería haya tests unitarios. Es decir, podemos hacer una aplicación con toda la potencia de gvSIG, pero sin utilizar gvSIG en sí, es decir, como si gvSIG fuera una potente librería gis. Conclusión: si lo hacemos bien, podríamos incluso utilizar nuestro plugin de gvSIG en otra aplicación&#8230; como <a title="GoFleet" href="https://github.com/Emergya/gofleet">Gofleet</a>.</p>
<p>Cada plugin tiene su propio instalador, que también se genera con un asistente dentro de la aplicación gvSIG.</p>
]]></content:encoded>
			<wfw:commentRss>http://delawen.com/2012/02/apuntes-del-taller-gvsig-2-0/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Guía para compilar gvSIG 2.0</title>
		<link>http://delawen.com/2012/01/guia-para-compilar-gvsig-2-0/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=guia-para-compilar-gvsig-2-0</link>
		<comments>http://delawen.com/2012/01/guia-para-compilar-gvsig-2-0/#comments</comments>
		<pubDate>Sun, 08 Jan 2012 12:12:57 +0000</pubDate>
		<dc:creator>delawen</dc:creator>
				<category><![CDATA[SIG]]></category>
		<category><![CDATA[gis]]></category>
		<category><![CDATA[gvsig]]></category>
		<category><![CDATA[gvsig2.0]]></category>
		<category><![CDATA[jornadas gvsig]]></category>
		<category><![CDATA[sig]]></category>

		<guid isPermaLink="false">http://delawen.com/?p=76</guid>
		<description><![CDATA[Me llena de orgullo y satisfacción compartir con vosotros los pasos que hay que seguir para trabajar con gvSIG, pasos descubiertos gracias a la voluntariosa ayuda de algunos compañeros de gvSIG, a los que pude conocer en las últimas Jornadas GvSIG. Aunque se puede encontrar una guía más completa en la documentación oficial, estos sencillos pasos te permitirán personalizar [...]]]></description>
				<content:encoded><![CDATA[<p>Me llena de orgullo y satisfacción compartir con vosotros los pasos que hay que seguir para trabajar con gvSIG, pasos descubiertos gracias a la voluntariosa ayuda de <a href="http://forge.osor.eu/users/jzarzoso/">algunos compañeros de gvSIG</a>, a los que pude conocer en las <a href="http://jornadas.gvsig.org/">últimas Jornadas GvSIG</a>.</p>
<p>Aunque se puede encontrar una guía más completa en la <a href="http://www.gvsig.org/web/projects/gvsig-desktop/docs/devel/gvsig-devel-guide/2.0.0">documentación oficial</a>, estos sencillos pasos te permitirán personalizar y compilar tu propia versión de gvSIG 2.0 sin muchos problemas.</p>
<p><span id="more-76"></span>Lo primero, instalar ciertas dependencias básicas:</p>
<p><code> #apt-get install maven2 subversion</code></p>
<p>A continuación, creamos un directorio sobre el que trabajar.</p>
<p><code>$mkdir gvSIG; cd gvSIG</code></p>
<p>Una vez tenemos el directorio de trabajo, descargamos los fuentes<br />
básicos para preparar el entorno:</p>
<p><code>$svn co https://joinup.ec.europa.eu/svn/gvsig-desktop/branches/v2_0_0_prep/build/</code></p>
<p>Antes de compilar nada, preparamos un fichero de configuración básica.</p>
<p style="text-align: left;"><code>$ cat &gt; ~/.gvsig.platform.properties &lt;&lt; EOF<br />
native_platform=linux<br />
native_distribution=all<br />
native_compiler=gcc4<br />
native_arch=i386<br />
native_libraryType=dynamic<br />
export native_classifier=\${native_platform}-\${native_distribution}-\${native_compiler}-\${native_arch}-\${native_libraryType}<br />
EOF<br />
</code></p>
<p>El siguiente código puede meterse en el fichero .bashrc del /home del<br />
usuario, pero también podemos ejecutarlo directamente sobre la consola<br />
que estamos trabajando:</p>
<p style="text-align: left;"><code>$if [ -f "${HOME}/.gvsig.platform.properties" ]<br />
then<br />
. ${HOME}/.gvsig.platform.properties<br />
export MAVEN_OPTS="-Xmx256M -XX:MaxPermSize=64m -Dnative-classifier=${native_classifier} -Dnative-platform=${native_platform}"<br />
else<br />
export MAVEN_OPTS="-Xmx256M -XX:MaxPermSize=64m"<br />
fi</code></p>
<p>Una vez tenemos el entorno preparado, hacemos la primera compilación<br />
con maven. Paciencia, puede tardar.</p>
<p><code>$mvn install</code></p>
<p>Y ahora que hemos hecho la primera compilación con maven, procedemos a<br />
usar ant para terminar de preparar todo el entorno. Este comando<br />
accederá al repositorio online de gvSIG para descargar el resto de<br />
fuentes y compilará y generará el gvSIG.</p>
<p><code>$ant svn.checkout.all</code></p>
<p>Una vez tenemos el entorno listo, procedemos a preparar la aplicación<br />
gvSIG que vamos a utilizar. En este ejemplo usaremos la instalación<br />
típica de gvSIG:</p>
<p><code>$cd projects/gvsig-standard<br />
$ant svn.checkout.all</code></p>
<p>Paciencia, mucha paciencia.</p>
<p><code>$mvn install</code></p>
<p>Y ya está. La aplicación gvSIG aparece en la carpeta products. Para<br />
ejecutarlo, ejecutamos el fichero gvSIG.sh.</p>
<p>Si al intentar arrancarlo aparece como error &#8220;command java not found&#8221;<br />
habrá que especificcar la variable JAVA_HOME:</p>
<p><code>$export JAVA_HOME=/usr/lib/jvm...</code></p>
<p>Y ya puedes utilizar tu propia versión compilada de gvSIG.</p>
<p>Próximamente hablaré sobre cómo crear plugins para gvSIG 2.0.</p>
]]></content:encoded>
			<wfw:commentRss>http://delawen.com/2012/01/guia-para-compilar-gvsig-2-0/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
