<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="/blog/templates/default/atom.css" type="text/css" ?>

<feed 
   xmlns="http://www.w3.org/2005/Atom"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/">
    <link href="http://www.novanebula.net/blog/feeds/atom10.xml" rel="self" title="Novanebula blog" type="application/atom+xml" />
    <link href="http://www.novanebula.net/blog/"                        rel="alternate"    title="Novanebula blog" type="text/html" />
    <link href="http://www.novanebula.net/blog/rss.php?version=2.0"     rel="alternate"    title="Novanebula blog" type="application/rss+xml" />
    <title type="html">Novanebula blog</title>
    <subtitle type="html">Noticias</subtitle>
    <icon>http://www.novanebula.net/blog/templates/default/img/s9y_banner_small.png</icon>
    <id>http://www.novanebula.net/blog/</id>
    <updated>2010-08-19T10:52:15Z</updated>
    <generator uri="http://www.s9y.org/" version="1.5.3">Serendipity 1.5.3 - http://www.s9y.org/</generator>
    <dc:language>es</dc:language>

    <entry>
        <link href="http://www.novanebula.net/blog/archives/144-Analizar-XML-con-Java.html" rel="alternate" title="Analizar XML con Java" />
        <author>
            <name>Abraham Covelo</name>
                    </author>
    
        <published>2010-04-10T00:15:12Z</published>
        <updated>2010-08-19T10:52:15Z</updated>
        <wfw:comment>http://www.novanebula.net/blog/wfwcomment.php?cid=144</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.novanebula.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=144</wfw:commentRss>
    
            <category scheme="http://www.novanebula.net/blog/categories/9-Articulos-programacion" label="Articulos programación" term="Articulos programación" />
    
        <id>http://www.novanebula.net/blog/archives/144-guid.html</id>
        <title type="html">Analizar XML con Java</title>
        <content type="xhtml" xml:base="http://www.novanebula.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Aunque el formato de datos XML alardea de características como: extensibilidad, legibilidad, jerarquización, estandarización y capacidad de adaptación a multitud de formatos. A la hora de analizarlo y extraer información de él es, computacionalmente, un formato que presenta algunas dificultades con respecto a otros. Si bien es verdad que existen librerías/APIs dedicadas a superar este pequeño handicap. A continuación veremos ejemplos de dos tipos de librerías para analizar un documente XML desde java. Uno de ellos es el DOM (Document Object Model) y otro es el SAX (Simple API from XML).<br />
<br />
Las diferencias principales entre DOM y SAX es que DOM genera un arból de objetos con sus dependencias en memoria. Esto permite acceder a cualquier elemento en cualquier posición una y otra vez, atrás y adelante sin problemas. El problema es que consume mucha memoria y no sería una opción recomendable para XMLs muy grandes. SAX por otro lado no almacena información en memoria y lee el fichero secuencialmente hasta encontrar el elemento y la información que necesitas en un proceso en donde se registran métodos callback cada vez que se detecta determinados patrones en el documento (apertura de etiquetas XML por ejemplo). SAX podría manejar con mayor facilidad grandes ficheros XML pero sin la libertad del DOM.<br />
<br />
Veamos como podemos analizar este fragmento de XML<br />
<br />
<code><br />
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;<br />
&lt;personas&gt;<br />
&#160;&lt;persona sexo=&quot;masculino&quot;&gt;<br />
&#160;&#160;&lt;nombre&gt;Pepe&lt;/nombre&gt;<br />
&#160;&#160;&lt;apellidos&gt;Gracia Perez&lt;/apellidos&gt;<br />
&#160;&lt;/persona&gt;<br />
&#160;&lt;persona sexo=&quot;femenino&quot;&gt;<br />
&#160;&#160;&lt;nombre&gt;Mar&iacute;a&lt;/nombre&gt;<br />
&#160;&#160;&lt;apellidos&gt;Suarez Martinez&lt;/apellidos&gt;<br />
&#160;&lt;/persona&gt;<br />
&lt;/personas&gt;<br />
</code><br />
<br />
<br />
 <br /><a href="http://www.novanebula.net/blog/archives/144-Analizar-XML-con-Java.html#extended">Continua leyendo "Analizar XML con Java"</a>
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.novanebula.net/blog/archives/154-Como-recuperar-el-password-de-root-en-GNULinux.html" rel="alternate" title="Como recuperar el password de root en GNU/Linux" />
        <author>
            <name>Abraham Covelo</name>
                    </author>
    
        <published>2010-08-14T21:27:39Z</published>
        <updated>2010-08-14T22:41:14Z</updated>
        <wfw:comment>http://www.novanebula.net/blog/wfwcomment.php?cid=154</wfw:comment>
    
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://www.novanebula.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=154</wfw:commentRss>
    
            <category scheme="http://www.novanebula.net/blog/categories/4-GNULinux" label="GNU/Linux" term="GNU/Linux" />
    
        <id>http://www.novanebula.net/blog/archives/154-guid.html</id>
        <title type="html">Como recuperar el password de root en GNU/Linux</title>
        <content type="xhtml" xml:base="http://www.novanebula.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Cuando has perdido el password de root de tu máquina GNU/Linux y no sabes como recuperarlo estas en problemas. Aquí tienes una pequeña guía sobre que puedes hacer para hacerte con el control de tu máquina.<br />
<br />
En ella explico diversas métodos que podrías emplear. Como sabes muchas cosas pueden ir mal debido a las enormes posibilidades de configuración que ofrece este sistema operativo. No te desesperes si al emplear alguno no te funciona pasa al siguiente método. Si todo sigue sin funcionar escribe un comentario en esta entrada, quizás podamos ayudarte.<br />
<br />
 <br /><a href="http://www.novanebula.net/blog/archives/154-Como-recuperar-el-password-de-root-en-GNULinux.html#extended">Continua leyendo "Como recuperar el password de root en GNU/Linux"</a>
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.novanebula.net/blog/archives/153-Simplemente-wikileaks.html" rel="alternate" title="Simplemente wikileaks" />
        <author>
            <name>Abraham Covelo</name>
                    </author>
    
        <published>2010-08-03T20:07:01Z</published>
        <updated>2010-08-03T20:16:34Z</updated>
        <wfw:comment>http://www.novanebula.net/blog/wfwcomment.php?cid=153</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.novanebula.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=153</wfw:commentRss>
    
            <category scheme="http://www.novanebula.net/blog/categories/3-Politica" label="Política" term="Política" />
    
        <id>http://www.novanebula.net/blog/archives/153-guid.html</id>
        <title type="html">Simplemente wikileaks</title>
        <content type="xhtml" xml:base="http://www.novanebula.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <!-- xhtml clean youtube --><object type="application/x-shockwave-flash" width="446" height="326" data="http://video.ted.com/assets/player/swf/EmbedPlayer.swf"><param name="movie" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" /><param name="movie" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf"></param><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always"/><param name="wmode" value="transparent"></param><param name="bgColor" value="#ffffff"></param> <param name="flashvars" value="vu=http://video.ted.com/talks/dynamic/JulianAssange_2010G-medium.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/JulianAssange-2010G.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=918&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=julian_assange_why_the_world_needs_wikileaks;year=2010;theme=media_that_matters;theme=war_and_peace;theme=a_taste_of_tedglobal_2010;theme=new_on_ted_com;event=TEDGlobal+2010;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" /></object><!-- /xhtml clean youtube -->

<!-- <object width="446" height="326"><param name="movie" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf"></param><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always"/><param name="wmode" value="transparent"></param><param name="bgColor" value="#ffffff"></param> <param name="flashvars" value="vu=http://video.ted.com/talks/dynamic/JulianAssange_2010G-medium.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/JulianAssange-2010G.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=918&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=julian_assange_why_the_world_needs_wikileaks;year=2010;theme=media_that_matters;theme=war_and_peace;theme=a_taste_of_tedglobal_2010;theme=new_on_ted_com;event=TEDGlobal+2010;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" /><embed src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" pluginspace="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent" bgColor="#ffffff" width="446" height="326" allowFullScreen="true" allowScriptAccess="always" flashvars="vu=http://video.ted.com/talks/dynamic/JulianAssange_2010G-medium.flv&su=http://images.ted.com/images/ted/tedindex/embed-posters/JulianAssange-2010G.embed_thumbnail.jpg&vw=432&vh=240&ap=0&ti=918&introDuration=15330&adDuration=4000&postAdDuration=830&adKeys=talk=julian_assange_why_the_world_needs_wikileaks;year=2010;theme=media_that_matters;theme=war_and_peace;theme=a_taste_of_tedglobal_2010;theme=new_on_ted_com;event=TEDGlobal+2010;"></embed></object> -->

<br />
<br />
<div style="text-align:center"><a onclick="javascript: pageTracker._trackPageview('/extlink/wikileaks.org/');"  href="http://wikileaks.org/">Wikileaks</a></div> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.novanebula.net/blog/archives/151-Patrones-de-diseno.html" rel="alternate" title="Patrones de diseño" />
        <author>
            <name>Abraham Covelo</name>
                    </author>
    
        <published>2010-07-31T08:09:45Z</published>
        <updated>2010-07-31T11:03:16Z</updated>
        <wfw:comment>http://www.novanebula.net/blog/wfwcomment.php?cid=151</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.novanebula.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=151</wfw:commentRss>
    
            <category scheme="http://www.novanebula.net/blog/categories/9-Articulos-programacion" label="Articulos programación" term="Articulos programación" />
    
        <id>http://www.novanebula.net/blog/archives/151-guid.html</id>
        <title type="html">Patrones de diseño</title>
        <content type="xhtml" xml:base="http://www.novanebula.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Un patrón de diseño (en programación orientada a objetos, POO) es una descripción de diversos objetos y clases preparados para resolver un problema de diseño general aplicado a un contexto específico. Un patrón de diseño identifica las instancias y clases que participan en dicho patrón además de sus papeles, sus relaciones y sus responsabilidades para llevar a cabo la tarea a resolver. Cada patrón de diseño se centra en resolver un problema particular en la POO. Describe cuando se puede aplicar, si puede ser aplicado desde el punto de vista de las limitaciones del diseño y las consecuencias tanto positivas como negativas que tiene su utilización.<br />
<br />
Pongamos un ejemplo: MVC (model-view-controller) consiste en 3 tipos de objetos. El modelo son los objetos de la aplicación (lógica de la aplicación), la vista es su representación a los usuarios y el controlador define la manera en el que la interfaz con el usuario (generado por la vista) reacciona ante la introducción de datos por parte del usuario. Dentro de MVC hay varios patrones de diseño que pueden ser empleados para facilitar el desarrollo de este tipo de arquitectura.<br />
<br />
Por ejemplo la relación vista-controlador es un ejemplo del patrón de diseño "Strategy". Strategy es un objeto que representa un algoritmo. El patrón es útil en realidad cuando pretendes reemplazar este algoritmo estática o dinamicamente cuanto tienes varias variantes del algoritmo o cuando el algoritmo tiene una estructura de datos compleja que quieres encapsular.<br />
<br />
MVC usa otro patrón de diseño "Factory Method" para especificar la clase controladora por defecto para una vista y "Decorator" se puede emplear por ejemplo para añadir scroll a una vista. Pero la principal relación en MVC es dado por los patrones "Observer", "Composite" y "Strategy"<br />
<br />
Antes de describir alguno de ellos defino brevemente los parámetros que se emplean para describir los patrones de diseño:<br />
<br />
Nombre del patrón y clasificación, intención (¿Que hace este patrón?) ,otros nombres por los que también es conocido, motivación (escenario que ilustra su funcionamiento), aplicabilidad (en que escenarios es válido), estructura (representación gráfica de las clases involucradas y diagramas de interacción para ilustrar secuencias de peticiones y colaboraciones entre objetos), participantes (clases, objetos y sus responsabilidades), colaboraciones (como los participantes pueden colaborar en sus responsabilidades), consecuencias (¿Cómo el patrón realiza su cometido?¿Cuales son los compromisos a tener en cuenta al aceptar esta solución?), implementación (dificultades, riesgos, pistas o técnicas a tener en cuenta a la hora de implementar el patrón), ejemplo de código, usos conocidos y patrones relacionados.<br />
<br />
<strong>Nombre</strong>: Observer<br />
<strong>Clasificación</strong>: Behavioral Patterns<br />
<strong>También conocido como</strong>: Dependents, Publish-Subscribe, Event-Observer<br />
<strong>Motivación</strong>: Un problema muy común al particionar un sistema en una colección de clases cooperativas es la necesidad de mantener la consistencia entre objetos relacionados pero sin tenerlos fuertemente acoplados ya que esto reduce su reusabilidad. El patrón define un sujeto y uno o varios observadores de este suejto. Todos los observadores son notificados si el sujeto lleva a cabo un cambio de estado (evento).<br />
<strong>Aplicabilidad</strong>:<br />
  - Cuando un objeto cambia y esto requiere el cambio de varios objetos y se desconoce el número de objetos que necesitarán este cambio<br />
  - Cuando una abstracción tiene dos aspectos, una dependiente de la otra. Encapsular estos aspectos te permite variarlos y reusarlos independientemente<br />
  - Cuando un objeto tiene que notificar a otros objetos sin hacer asunciones sobre su naturaleza. En otras palabras no se quiere que estos objetos esten fuertemente acoplados<br />
<strong>Estructura</strong>: Diagrama de clases<br />
<img src="http://www.novanebula.net/blog/uploads/event-observer-pattern.png" alt="Diagrama de clases patrón observer" width="500"/><br />
<br />
<strong>Participantes</strong>:<br />
  - Subject (conoce sus observers que pueden ser uno, ninguno o varios y proporciona un interfaz para registrar y desregistrar observadores)<br />
  - Observer (define un intefaz para actualizar que debe ser llamado cuando el subject cambia de estado)<br />
  - ConcreteSubject (almacena el estado de interes para los objetos ConcreteObserver y les envia notificaciones cuando su estado cambia)<br />
  - ConcreteObserver (Mantiene referencia al objeto ConcreteSubject, almacena estado de manera consistente con el del objeto ConcreteSubject e implementa interfaz de actualización para las notificaciones)<br />
<strong>Colaboraciones</strong>: ConcreteSubject notifica a sus observadores sobre un cambio que podría hacer el estado de los observadores fuera inconsistente con el suyo propio. Después de ser informado el observador del cambio en el sujeto. El observador podría requerir informacion al sujeto para conciliar su estado<br />
<strong>Consecuencias</strong>: El patrón observer te permite cambiar sujetos y observadores de manera independiente de manera que se pueden rehusar ambos. Puede violar la separación en capas de tu aplicación pues los observadores pueden pertenecer a capas diferentes de la del sujeto. Las actualizaciones en el sujeto pueden generar un coste desconocido pues no se sabe cuantos ni cuales observadores pueden estar registrados al sujeto.<br />
<strong>Implementación</strong>: Temas conflictivos: mapear subjects a observers y observers a más de un subject. ¿Quien dispara la actualización? 2 opciones, el propio subject cuando cambia de estado o hacer a los clientes responsables de enviar la notificacion.<br />
<strong>Ejemplos de código</strong>: <a onclick="javascript: pageTracker._trackPageview('/extlink/components.symfony-project.org/event-dispatcher/');"  href="http://components.symfony-project.org/event-dispatcher/">Symfony event dispatcher</a><br />
<strong>Usos conocidos</strong>: Cualquier interfaz de usuario GUI implementado empleando OOP como KDE<br />
<strong>Patrones relacionados</strong>: Mediator, Singleton<br />
<br />
<br />
Espero que os sea de utilidad. No puedo acabar si pasar la referencia a la biblia de los patrones de diseño creado por el Gang of Four (sus 4 autores)<br />
<br />
<a onclick="javascript: pageTracker._trackPageview('/extlink/www.google.com/products?oe=UTF-8&amp;amp;gfns=1&amp;amp;q=Design+Patterns.+Elements+of+Reusable+Object-Oriented+Software&amp;amp;um=1&amp;amp;ie=UTF-8&amp;amp;ei=ovtTTJbdNoX44gaXxI2nBQ&amp;amp;sa=X&amp;amp;oi=product_result_group&amp;amp;ct=title&amp;amp;resnum=3&amp;amp;ved=0CC0QrQQwAg');"  href="http://www.google.com/products?oe=UTF-8&amp;gfns=1&amp;q=Design+Patterns.+Elements+of+Reusable+Object-Oriented+Software&amp;um=1&amp;ie=UTF-8&amp;ei=ovtTTJbdNoX44gaXxI2nBQ&amp;sa=X&amp;oi=product_result_group&amp;ct=title&amp;resnum=3&amp;ved=0CC0QrQQwAg">Design Patterns. Elements of Reusable Object-Oriented Software - Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides - Addison Wesley (GoF- Gang of Four)</a><br />
<br />
<br />
<br />
<br />
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.novanebula.net/blog/archives/150-VERGUEENZA-NACIONAL.html" rel="alternate" title="VERGÜENZA NACIONAL" />
        <author>
            <name>Abraham Covelo</name>
                    </author>
    
        <published>2010-07-28T21:00:56Z</published>
        <updated>2010-07-30T20:39:08Z</updated>
        <wfw:comment>http://www.novanebula.net/blog/wfwcomment.php?cid=150</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.novanebula.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=150</wfw:commentRss>
    
            <category scheme="http://www.novanebula.net/blog/categories/6-Noticias" label="Noticias" term="Noticias" />
    
        <id>http://www.novanebula.net/blog/archives/150-guid.html</id>
        <title type="html">VERGÜENZA NACIONAL</title>
        <content type="xhtml" xml:base="http://www.novanebula.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <br />
<!-- xhtml clean youtube --><object type="application/x-shockwave-flash" width="480" height="385" data="http://www.youtube.com/v/smMQsMsHbfM&amp;hl=en_US&amp;fs=1"><param name="movie" value="http://www.youtube.com/v/smMQsMsHbfM&amp;hl=en_US&amp;fs=1" /><param name="movie" value="http://www.youtube.com/v/smMQsMsHbfM&amp;hl=en_US&amp;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param></object><!-- /xhtml clean youtube -->

<!-- <object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/smMQsMsHbfM&amp;hl=en_US&amp;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/smMQsMsHbfM&amp;hl=en_US&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object> -->

<br />
<br />
Sin comentarios... 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.novanebula.net/blog/archives/149-Ignorar-ficheros-y-directorios-en-subversion.html" rel="alternate" title="Ignorar ficheros y directorios en subversion" />
        <author>
            <name>Abraham Covelo</name>
                    </author>
    
        <published>2010-06-27T11:11:59Z</published>
        <updated>2010-07-28T21:07:16Z</updated>
        <wfw:comment>http://www.novanebula.net/blog/wfwcomment.php?cid=149</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.novanebula.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=149</wfw:commentRss>
    
            <category scheme="http://www.novanebula.net/blog/categories/4-GNULinux" label="GNU/Linux" term="GNU/Linux" />
    
        <id>http://www.novanebula.net/blog/archives/149-guid.html</id>
        <title type="html">Ignorar ficheros y directorios en subversion</title>
        <content type="xhtml" xml:base="http://www.novanebula.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Es bastante sencillo cuando trabajamos con subversion u otros tipos de repositorios incluir en nuestra cópia de trabajo ficheros que no debemos subir al repositorio, como compilaciones, ficheros de prueba, ficheros del sistema operativo, logs, etc. Para que subversión los ignore tenemos diversos métodos.<br />
<br />
Todos estos métodos modifican la propiedad svn:ignore<br />
<br />
1) Editar directamente la propiedad para un directorio en concreto<br />
<br />
<code><br />
$ svn propedit svn:ignore ./ruta_ficheros_a_ignorar<br />
</code><br />
<br />
A continuación podemos indicar los ficheros a ignorar dentro de la ruta especificada permitiéndose el comodín '*'. Así para ignorar todos los ficheros dentro del directorio basta con indicar<br />
<br />
<code><br />
*<br />
</code><br />
<br />
Puedes crear una lista de ficheros, uno por linea, por ejemplo:<br />
<br />
<code><br />
*.out<br />
data.log<br />
*.tmp<br />
test_*<br />
</code><br />
<br />
2) Otro método consistiría en editar el archivo global ~/.subversion/config<br />
<br />
Busca la sección [miscellany] dentro de este fichero y cambia la propiedad global-ignores para ignorar los archivos que no deseas subir al repositorio. Hay que emplear un espacio como separador entre "ficheros" en lugar de poner uno por línea como hacíamos antes. Así:<br />
<br />
<code><br />
global-ignores = *.out data.log *.tmp test_*<br />
</code><br />
<br />
Esto ignorará todos los ficheros que sigan este patrón en todos los repositorios que emplees en tu máquina local<br />
<br />
3) Un último método sería empleando el comando propset de subversion<br />
<br />
<code><br />
$ svn propset svn:ignore *.tmp .<br />
</code><br />
<br />
El punto final indicaría que es el directorio actual en donde deben ignorarse los fichero son extensión tmp<br />
<br />
Podemos especificar un fichero donde tengamos todas las reglas para ignorar ficheros con el modificador -F, así:<br />
<br />
<code><br />
svn propset svn:ignore -F ignore.txt .<br />
</code><br />
<br />
Recuerda además que si empleas propset y propedit debes ejecutar un commit para que todo el mundo ignore estos ficheros. Ten esto en cuenta a la hora de definir lo que no quieres versionar.. svn:ignore es una propiedad; metadatos en el repositorio que también son versionados. Cada objeto dentro de subversion (ficheros, directorios, enlaces etc) puede tener esta u otras propiedades. Para saber que propiedades tiene un objeto en concreto en nuestro repositorio o copia de trabajo basta ejecutar:<br />
<br />
<code><br />
$ svn proplist /ruta_objeto<br />
</code><br />
<br />
<br />
<br />
<br />
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.novanebula.net/blog/archives/103-Comando-linux-test.html" rel="alternate" title="Comando linux: test" />
        <author>
            <name>Abraham Covelo</name>
                    </author>
    
        <published>2008-08-08T21:40:00Z</published>
        <updated>2010-06-22T23:29:36Z</updated>
        <wfw:comment>http://www.novanebula.net/blog/wfwcomment.php?cid=103</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://www.novanebula.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=103</wfw:commentRss>
    
            <category scheme="http://www.novanebula.net/blog/categories/4-GNULinux" label="GNU/Linux" term="GNU/Linux" />
    
        <id>http://www.novanebula.net/blog/archives/103-guid.html</id>
        <title type="html">Comando linux: test</title>
        <content type="xhtml" xml:base="http://www.novanebula.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Este comando linux tiene ciertas peculiariedades que lo alejan de su utilización en consola y lo hacen realmente útil para el programación de scripts. Seguramente el hecho más relevante que reafirma lo que acabamos de decir en la manera en la que test devuelve la información; simplemente a través de su código de retorno. O sea que después de ejecutarlo por consola no veremos absolutamente nada sólo el prompt de nuestro terminal pidiendonos que introduzcamos la siguiente orden.<br />
<br />
Test es un comando para evaluar expresiones devolviendo 0 (cómo código de retorno) en el caso de que la expresión evaluada sea verdadera o un valor distinto de 0 en el caso de ser falso. Esto es la manera habitual para la shell, completamente diferente a la programación en C donde 0 es evaluado como falso y diferente de 0 como verdadero (aunque C no tiene tipos booleanos). Bueno que me estoy liando.<br />
<br />
El caso es que test es capaz de analizar cadenas de texto, enteros y ficheros evaluando sus propiedades para analizar lo que más nos interese de estos elementos. Así por ejemplo para cadenas es capaz de determinar si estamos ante una cadana vacia o no (-n), si su longitud es cero (-z) si es igual a otro cadena (=). Para enteros puede determinar si son iguales, mayores o menores que otro dado y para ficheros que en mi modesta opinión es donde radica uno de sus puntos puede determinar un montón de cosas como:<br />
<br />
       FILE1 -ef FILE2<br />
              FILE1 y FILE2 son el mismo fichero en realidad (mismo inodo y dispositivo)<br />
<br />
       FILE1 -nt FILE2<br />
              FILE1 es más reciente que el FILE2 (por la fecha de modificación)<br />
<br />
       FILE1 -ot FILE2<br />
              FILE1 es más antiguo que FILE2<br />
<br />
       -b FILE<br />
              FILE existe y es un fichero de bloque especial (no un fichero regular, ver mknod)<br />
<br />
       -c FILE<br />
              FILE existe y es un dispositivo de tipo caracter (ver mknod)<br />
<br />
       -d FILE<br />
              FILE existe y es un directorio<br />
<br />
       -e FILE<br />
              FILE exite (sin entrar en otras consideraciones como en el caso de los otros parámetros)<br />
<br />
       -f FILE<br />
              FILE existe y es un fichero regular<br />
<br />
       -g FILE<br />
              FILE existe y tiene marcado el bit de GUID (id de grupo)<br />
<br />
       -G FILE<br />
              FILE existe y es poseido por el EGUID (id de grupo efectivo)<br />
<br />
       -h FILE<br />
              FILE existe y es un enlace simbólico (igual que el modificador -L)<br />
<br />
       -k FILE<br />
              FILE existe y tiene marcado el bit sticky<br />
<br />
       -L FILE<br />
              FILE existe y es un enlace simbólico (igual que el modificador -h)<br />
<br />
       -O FILE<br />
              FILE existe y es poseido por el EUID (id de usuario efectivo)<br />
<br />
       -p FILE<br />
              FILE existe y es una tuberia con nombre (ver <a href="http://www.novanebula.net/blog/archives/2-FIFOs-en-linux.html">FIFOs</a>)<br />
<br />
       -r FILE<br />
              FILE existe y el usuario actual tiene permiso de lectura sobre él<br />
<br />
       -s FILE<br />
              FILE existe y tiene un tamaño mayor que cero<br />
<br />
       -S FILE<br />
              FILE existe y es un fichero tipo socket<br />
<br />
       -t FD  <br />
              el descriptor de fichero FD esta abierto en una terminal<br />
<br />
       -u FILE<br />
              FILE exite y su SUID está marcado<br />
<br />
       -w FILE<br />
              FILE existe y el usuario actual tiene permiso de escritura sobre él<br />
<br />
       -x FILE<br />
              FILE existe y el usuario actual tiene permiso de ejecución (o busqueda) sobre él<br />
<br />
Además test es capaz de concatenar varias expresiones empleando AND o OR lógicos con los siguientes modificadores:<br />
<br />
EXPRESSION1 -a EXPRESSION2  (AND lógico)<br />
<br />
<br />
EXPRESSION1 -o EXPRESSION2 (OR lógico)<br />
<br />
<br />
<br />
Como ya he comentado antes test se emplea sobre todo en programación bash en instrucciones condicionales por acabar el articulo con un par de ejemplos que ilustraran claramente su utilización:<br />
<br />
file="/tmp"<br />
if [ -k $file ]<br />
then<br />
   echo "El directorio /tmp tiene el bit sticky marcado";<br />
fi<br />
<br />
<br />
Otro ejemplo<br />
<br />
cadena="hola"<br />
if [ $cadena = "hola" ]<br />
then<br />
        echo "Hola mundo!";<br />
fi<br />
<br />
<br />
Observad que en los ejemplos no hemos puesto ningún test pero es que en programación en bash y en este tipo de construcciones el corchete abierto [ es sinónimo de test (y por razones de eficiencia en un builtin (bash lo tiene incluido internamente y no llama al comando test al que emula)<br />
<br />
<br />
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.novanebula.net/blog/archives/148-Necesitamos-testers-para-un-nuevo-juego-online.html" rel="alternate" title="Necesitamos testers para un nuevo juego online" />
        <author>
            <name>Abraham Covelo</name>
                    </author>
    
        <published>2010-06-17T19:31:02Z</published>
        <updated>2010-06-17T19:53:21Z</updated>
        <wfw:comment>http://www.novanebula.net/blog/wfwcomment.php?cid=148</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.novanebula.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=148</wfw:commentRss>
    
            <category scheme="http://www.novanebula.net/blog/categories/9-Articulos-programacion" label="Articulos programación" term="Articulos programación" />
    
        <id>http://www.novanebula.net/blog/archives/148-guid.html</id>
        <title type="html">Necesitamos testers para un nuevo juego online</title>
        <content type="xhtml" xml:base="http://www.novanebula.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                ¿Quieres participar en la creación de un juego online? Ahora puedes <a onclick="javascript: pageTracker._trackPageview('/extlink/novanebula.net/');"  href="http://novanebula.net/">apuntarte al desarrollo de un nuevo juego de estrategia online multijugador</a>. La temática es muy sencilla y para ser sinceros ya muy trillada. Diriges una pequeña raza nativa de un pequeño sistema solar en una remota región de la galaxia. Tu civilización ha alcanzado ya el punto tecnológico en el que la colonización de otros sistemas solares ya no es una quimera. Pero otras civilizaciones alienígenas podrían estar esperando ahí fuera (y lo estarán) para acabar con tu especie y lograr la supremacía.<br />
<br />
El juego esta basado en diferentes partidas donde se juega sobre un tablero tridimensional, un mapa estelar. Podrás construir naves, investigar nuevas tecnologías, colonizar nuevos mundos y conquistar sistemas solares rivales para alcanzar la victoria.<br />
<br />
El <a onclick="javascript: pageTracker._trackPageview('/extlink/novanebula.net/');"  href="http://novanebula.net/">juego</a> está en un estado alpha de desarrollo pero (espero) es completamente jugable. El juego se desarrolla en turnos, cada turno dura una hora y cada jugador deja unas ordenes específicas para su raza. Las ordenes necesitan varios turnos(horas) para completarse por lo que no es necesario estar conectado permanentemente. Sólo en determinados momentos conviene estar alerta ante acontecimientos vitales (batallas, conquistas, colonizaciones etc).<br />
<br />
Hay que tener en cuenta que cada partida involucra a 10 jugadores en un mapa estelar de 100 estrellas. Todos los jugadores entran al mismo tiempo en la partida (se espera a que la partida tenga 10 jugadores antes de empezarla). Los mejores jugadores serán aquellos que acumulen más partidas ganadas. No se nada de cuanto puede durar una partida, aunque calculo que podrían llegar a unas 6 semanas o más. Cada usuario registrado puede unirse hasta a 3 partidas simultáneamente.<br />
<br />
Casi me olvido para apuntaros id a: <a onclick="javascript: pageTracker._trackPageview('/extlink/novanebula.net/');"  href="http://novanebula.net/">juego online novanebula</a><br />
Os dejo algunas capturas de esta versión a ver si os convencen para uniros:<br />
<br />
<img src="http://www.novanebula.net/blog/uploads/facilities.jpg" alt="Instalaciones"/><br />
<hr/><br />
<img src="http://www.novanebula.net/blog/uploads/map.jpg" alt="Instalaciones"/><br />
<hr/><br />
<img src="http://www.novanebula.net/blog/uploads/ships.jpg" alt="Instalaciones"/><br />
<br />
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.novanebula.net/blog/archives/147-jMonkeyEngine,-motor-3D-para-desarrolladores-java.html" rel="alternate" title="jMonkeyEngine, motor 3D para desarrolladores java" />
        <author>
            <name>Abraham Covelo</name>
                    </author>
    
        <published>2010-05-29T00:07:37Z</published>
        <updated>2010-05-30T14:30:15Z</updated>
        <wfw:comment>http://www.novanebula.net/blog/wfwcomment.php?cid=147</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.novanebula.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=147</wfw:commentRss>
    
            <category scheme="http://www.novanebula.net/blog/categories/9-Articulos-programacion" label="Articulos programación" term="Articulos programación" />
    
        <id>http://www.novanebula.net/blog/archives/147-guid.html</id>
        <title type="html">jMonkeyEngine, motor 3D para desarrolladores java</title>
        <content type="xhtml" xml:base="http://www.novanebula.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Como dice su lema 'serious monkyes. serious engine.' nos encontramos ante una API de alto rendimiento para la generación de escenas gráficas en 3D realmente maduro. Sólo hay que echarle un vistazo a su sección de <a onclick="javascript: pageTracker._trackPageview('/extlink/www.jmonkeyengine.com/movies_demos.php');"  href="http://www.jmonkeyengine.com/movies_demos.php">películas y demos</a> que da cuenta de las posibilidades actuales de su motor gráfico. jMonkeyEngine es un proyecto de código abierto bajo licencia BSD que comenzo allá por el año 2003. Actualmente acaban de sacar la alpha de la versión 3 del engine. <br />
<br />
Para poder empezar a desarrollar basta con descargase las librerías jar del proyecto. Actualmente lo mejor es hacerlo a través de las <a onclick="javascript: pageTracker._trackPageview('/extlink/www.jmonkeyengine.com/nightly/');"  href="http://www.jmonkeyengine.com/nightly/">versiones nocturnas</a> aunque puedas encontrarte con alguna versión más o menos estable el producto está bastante acabado.<br />
<br />
Ahora sólo tienes que descomprimirlo (descarga .zip) he importar jMonkeyEngine3.jar y la carpeta lib que se encuentra en el zip dentro de tu proyecto. También tienes los javadoc y el código fuente en el archivo zip y en la <a onclick="javascript: pageTracker._trackPageview('/extlink/www.jmonkeyengine.com/wiki/doku.php/jme3#for_jme3_framework_users');"  hef="http://www.jmonkeyengine.com/">página web de jMonkeyEngine</a> puedes ver <a href="http://www.jmonkeyengine.com/wiki/doku.php/jme3#for_jme3_framework_users">tutoriales explicativos</a> para poder comenzar a hacer tus pinillos en el mundo 3D.<br />
<br />
Happy coding! 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.novanebula.net/blog/archives/146-Como-cambiar-la-zona-horaria-de-mysql-por-conexion.html" rel="alternate" title="Como cambiar la zona horaria de mysql por conexión" />
        <author>
            <name>Abraham Covelo</name>
                    </author>
    
        <published>2010-05-24T15:32:07Z</published>
        <updated>2010-05-27T18:26:26Z</updated>
        <wfw:comment>http://www.novanebula.net/blog/wfwcomment.php?cid=146</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.novanebula.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=146</wfw:commentRss>
    
            <category scheme="http://www.novanebula.net/blog/categories/4-GNULinux" label="GNU/Linux" term="GNU/Linux" />
    
        <id>http://www.novanebula.net/blog/archives/146-guid.html</id>
        <title type="html">Como cambiar la zona horaria de mysql por conexión</title>
        <content type="xhtml" xml:base="http://www.novanebula.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Mysql tiene asociadas dos horas horarias, una es global y otra por conexión. Su valor por defecto coincide con la zona horaria del servidor donde mysql esté en ejecución. Esto se corresponde con el valor de timezone SYSTEM. Para poder saber el valor de zonas horarias en una conexión basta con lanzar esta consulta:<br />
<br />
mysql> SELECT @@global.time_zone,@@session.time_zone,NOW();<br />
<br />
La primera columna es el time_zone de nuestro servidor y el segundo el de nuestra conexión. La tercera columna de la fecha y hora actuales de acuerdo con el valor de timezone de nuestra conexión (si, la 2ª columna)<br />
<br />
Para poder modificarla según el manual online de mysql basta con ejecutar:<br />
<br />
mysql> SET time_zone = timezone;<br />
<br />
Siendo timezone una cadena que se debe corresponder con una zona horaria instalada en nuestro sistema. Sin embargo si ejecutas esta consulta es muy probable que te de un error, diciendo que desconoce esta zona horaria.<br />
<br />
Por ejemplo<br />
<br />
mysql> SET time_zone = 'UTC';<br />
1298 Unknown or incorrect time zone: 'UTC'<br />
<br />
Como es esto posible, ¿mysql no sabe nada sobre esta zona horaria universal?. En mi sistema GNU/Linux (Debian). Las zonas horarias están a modo de archivo (filosofía UNIX) en /usr/share/zoneinfo. Y de un rápido vistazo se puede ver que, como no, UTC es una de las zonas horarias definidas.<br />
<br />
 <br /><a href="http://www.novanebula.net/blog/archives/146-Como-cambiar-la-zona-horaria-de-mysql-por-conexion.html#extended">Continua leyendo "Como cambiar la zona horaria de mysql por conexión"</a>
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.novanebula.net/blog/archives/145-Microformatos,-noticias.html" rel="alternate" title="Microformatos, noticias" />
        <author>
            <name>Abraham Covelo</name>
                    </author>
    
        <published>2010-04-17T21:24:53Z</published>
        <updated>2010-04-18T18:24:21Z</updated>
        <wfw:comment>http://www.novanebula.net/blog/wfwcomment.php?cid=145</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.novanebula.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=145</wfw:commentRss>
    
            <category scheme="http://www.novanebula.net/blog/categories/12-SEO" label="SEO" term="SEO" />
    
        <id>http://www.novanebula.net/blog/archives/145-guid.html</id>
        <title type="html">Microformatos, noticias</title>
        <content type="xhtml" xml:base="http://www.novanebula.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Los microformatos se emplean para añadir información adicional dentro de un documento html o xhmtl. Existen multitud de microformatos y se emplean para muy diferentes tipos de información, como por ejemplo: definir eventos de calendario <a onclick="javascript: pageTracker._trackPageview('/extlink/microformats.org/wiki/hcalendar');"  href="http://microformats.org/wiki/hcalendar">hCalendar</a>, tarjetas de presentación de personas, compañias, lugares y organizaciones <a onclick="javascript: pageTracker._trackPageview('/extlink/microformats.org/wiki/hcard');"  href="http://microformats.org/wiki/hcard">hCard</a> o para indicar el tipo de licencia que aplica a determinado contenido <a onclick="javascript: pageTracker._trackPageview('/extlink/microformats.org/wiki/rel-license');"  href="http://microformats.org/wiki/rel-license">rel="license"</a>.<br />
<br />
En este pequeño artículo hablaremos del microformato para noticias, <a onclick="javascript: pageTracker._trackPageview('/extlink/microformats.org/wiki/hnews');"  href="http://microformats.org/wiki/hnews">hNews</a>. Este microformato esta en estado de borrador, lo que significa que podría no ser definitivo y sufrir cambios. Con este microformato para noticias podemos especificar la siguiente información:<br />
<br />
<br />
Organización fuente de la noticia (source-org, Source organization), en hCard (otro microformato)<br />
El lugar donde la noticia tiene lugar (dateline, empleando texto a microformato hCard)<br />
Coordenadas geográficas donde situar la noticia (empleando microformato <a onclick="javascript: pageTracker._trackPageview('/extlink/microformats.org/wiki/geo');"  href="http://microformats.org/wiki/geo">geo</a>)<br />
La licencia de la noticia (license, empleando <a onclick="javascript: pageTracker._trackPageview('/extlink/microformats.org/wiki/licensing-brainstorming');"  href="http://microformats.org/wiki/licensing-brainstorming">Licensing</a> que ni si quiera esta en estado de borrador)<br />
Principios (y ética) empleados por la organización que produce esta historia (principles, empleando microformato <a onclick="javascript: pageTracker._trackPageview('/extlink/microformats.org/wiki/principles-brainstorming#rel-principles_specification');"  href="http://microformats.org/wiki/principles-brainstorming#rel-principles_specification">rel-principles</a>)<br />
<br />
Además hNews debe ser codificado como una hentry de hAtom. Realmente ya veremos que sólo hNews, hentry y source-org son los campos obligatorios. Para aclarar esto hAtom es un microformato que se emplea para especificar posts dentro de un blog o de una manera más genérica en cualquier sitio donde se pueda emplear el formato <a onclick="javascript: pageTracker._trackPageview('/extlink/www.atomenabled.org/');"  href="http://www.atomenabled.org/">Atom</a> de sindicación. El formato hAtom (que también está en estado borrador como hNews) incluye los siguientes elementos:<br />
<br />
hfeed<br />
  feed-category<br />
  hentry<br />
    entry-title *<br />
    entry-content<br />
    entry-summary<br />
    updated *<br />
    published<br />
    author *<br />
    bookmark<br />
    tags<br />
<br />
El significado de cada elemento es análogo al que tiene el formato de sindicación <strong>Atom</strong>. Recordad que en hNews sólo se debe codificar hentry, ni hfeed ni feed-category tienen sentido aquí. Además dentro de hentry sólo es obligatorio, además de él mismo, los que aparecen en la lista de arriba marcados con un asterisco (entry-title, updated y author).<br />
<br />
La organización fuente de la noticia debe ser codificada como hcard. hcard tiene muchos campos posibles para definir una persona, una compañía o un evento. Pero el único realmente obligatorio es fn<br />
<br />
Veamos un ejemplo de noticia en microformato:<br />
<br />
&lt;div&#160;class=&quot;hNews&quot;&gt;<br />
&#160;&#160;&lt;div&#160;class=&quot;hentry&quot;&gt;<br />
&#160;&#160;&#160;&#160;&lt;h1&#160;class=&quot;entry-title&quot;&gt;Volcán&#160;continúa&#160;arrojando&#160;ceniza&#160;y&#160;obstaculiza&#160;vuelos&lt;/h1&gt;<br />
&#160;&#160;&#160;&#160;&lt;abbr&#160;class=&quot;updated&quot;&#160;title=&quot;2010-04-18T23:00:00+01:00&quot;&gt;18-04-2010&#160;23:00&lt;/abbr&gt;&#160;por&#160;&lt;strong&#160;class=&quot;author&quot;&gt;Fulanito&lt;/strong&gt;,<br />
&#160;&#160;&#160;&#160;&lt;span&#160;class=&quot;source-org&#160;vcard&quot;&gt;&lt;a&#160;class=&quot;url&#160;org&#160;fn&quot;&#160;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;href=&quot;http://espanol.news.yahoo.com/&quot;&gt;Yahoo&#160;news&#160;España&lt;/a&gt;&lt;/span&gt;<br />
&#160;&#160;&#160;&#160;&lt;div&#160;class=&quot;entry-content&gt;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&lt;p&gt;La&#160;agencia&#160;europea&#160;de&#160;seguridad&#160;aérea&#160;Eurocontrol&#160;dijo&#160;que&#160;habrá&#160;unos&#160;5.000&#160;vuelos&#160;el&#160;sábado,&#160;siendo&#160;la&#160;cifra&#160;normal&#160;de&#160;22.000...&lt;/p&gt;<br />
&#160;&#160;&#160;&#160;&lt;/div&gt;<br />
&#160;&#160;&lt;/div&gt;<br />
&lt;/div&gt;<br />
<br />
<br />
En el aparecen reflejados todos los campos obligatorios en el microformato hNews a saber: hNwes, hentry, (enty-title, updated y author obligatorios para hentry) y source-org (vcard y fn obligatorios de hCard para especificar source-org).<br />
<br />
<br />
<br />
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.novanebula.net/blog/archives/96-La-cola-larga-SEO.html" rel="alternate" title="La cola larga (SEO)" />
        <author>
            <name>Abraham Covelo</name>
                    </author>
    
        <published>2008-05-08T21:20:30Z</published>
        <updated>2010-04-17T23:04:16Z</updated>
        <wfw:comment>http://www.novanebula.net/blog/wfwcomment.php?cid=96</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.novanebula.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=96</wfw:commentRss>
    
            <category scheme="http://www.novanebula.net/blog/categories/12-SEO" label="SEO" term="SEO" />
    
        <id>http://www.novanebula.net/blog/archives/96-guid.html</id>
        <title type="html">La cola larga (SEO)</title>
        <content type="xhtml" xml:base="http://www.novanebula.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Que sucede cuando creas un nuevo sitio web y pretendes elaborar un estrategía SEO. Lo primero que pretendes hacer es escoger cuidadosamente una grupo de palabras clave para rankear en la página de resultados de google (<strong>SERP</strong>). Diseñas la páginas y amoldas la estructura de la página (sus enlaces internos y contenido) para tratar de obtener buenos resultados en ellas. Introduces las palabras clave y sus sinónimos en el contenido de tus páginas. Finalmente marcas tus páginas con el código de <a onclick="javascript: pageTracker._trackPageview('/extlink/www.google.com/analytics/');"  href="http://www.google.com/analytics/">google analytics</a> y después de unos días miras los resultados.<br />
<br />
&#160;&#160;&#160;&#160;Para tu sorpresa detectas que muchas de los términos por los que entra la gente en tu página no son los que esperabas e incluso te preguntas porqué apareces en búsquedas que parecen no tener nada que ver con lo que aparece en tu página (si, el <strong>bounce rate</strong>, relación de rebote y el <strong>tiempo medio</strong> que pasan los visitantes en tu página se resiente). Es más tu mismo intentando buscar tus páginas por esos términos dan lugar a resultados en los que ni siquiera apareces.<br />
<br />
&#160;&#160;&#160;&#160;Pasado aún más tiempo tus visitantes comienzan a entrar en tu página por los términos que pretendías e incluso detectas nuevas frases por los que entran relacionadas con tus productos y así optimizas nuevamente para estos nuevos términos recién descubiertos y que te parecen interesantes.<br />
<br />
&#160;&#160;&#160;&#160;Pero que pasa con esos términos 'raros' que aparecían al principio. Pues nada que siguen allí atrayendo visitantes (más o menos interesados en lo que ofrece tu web). A medida que tu web se hace más grande y tiene más contenido el número de términos por los que aparecen en las páginas de resultados también aumenta. No sólo de términos extraños sino otros muchos más relacionados con tu contenido. Tus términos principales son los que optienen un mayor número de visitas pero hay otros muchos que atraen proporcionalmente un número muy pequeño de visitas pero que en su conjunto atraen una cantidad de tráfico muy respetable (aún tal vez con una cota de conversión menor). A todos estos términos se le llama la cola larga. Es fácil ver el porqué, si representásemos el % de visitas que llegan a nuestra web con cada una de nuestras palabras claves ordenadas de mayor a menor veríamos que la gráfica empezaría en valore muy altos, tus keywords principales y caería muy rápidamente ha valores mucho más reducidos pero  mucho más largo que estos primeros valores.<br />
<br />
¿Porqué el concepto de cola larga se ha vuelto tan importante?<br />
<br />
&#160;&#160;&#160;&#160;En primer lugar porqué sumando las aportaciones de cada una de las palabras clave que se encuentran en la cola larga tenemos una cantidad de tráfico muy importante que puede rondar el 25% o más dependiendo del tipo de página. Por ejemplo amazón es el rey de la cola larga. Para dar un ejemplo amazón factura más  con pequeños libros que apenas tienen 1 o 2 ventas al año que con toda la saga de Harry Potter.<br />
<br />
&#160;&#160;&#160;&#160;En segundo lugar que pasa cuando has conseguido escalar puestos para tus palabras clave principales y ya no puedes subir más o porque has alcanzado la 1ª posición o porqué las páginas que están por encima tuyo parecen inamovibles (wikipedia). Pués que ha llegado el momento en el que debes concentrarte en los términos de la cola larga. Porqué es hay donde puedes mejorar tu número tu número de visitas.<br />
<br />
¿Pero como hago para para mejorar mi cola larga?<br />
<br />
&#160;&#160;&#160;&#160;Como el número de keywords en la cola larga puede ser realmente gigantesco, obviamente no puedes ponerte a optimizar una por una creando por ejemplo landings específicas para cada una de ellas. Además los keywords de la cola larga pueden variar de manera importante. La única manera viable de obtener una cola todavía más larga es aumentar tu web con contenido de calidad, olvidándote de tus palabras claves principales y sus sinónimos, contenido natural (no optimizado con keywords de ningún tipo) y relevante. Muchas veces se dice que un <strong>SEO</strong> realmente bueno es el que no lo parece aquí tenemos otros buen ejemplo de esto. 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.novanebula.net/blog/archives/97-Temas-piramidales-SEO.html" rel="alternate" title="Temas piramidales (SEO)" />
        <author>
            <name>Abraham Covelo</name>
                    </author>
    
        <published>2008-05-08T21:26:11Z</published>
        <updated>2010-04-17T23:03:57Z</updated>
        <wfw:comment>http://www.novanebula.net/blog/wfwcomment.php?cid=97</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.novanebula.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=97</wfw:commentRss>
    
            <category scheme="http://www.novanebula.net/blog/categories/12-SEO" label="SEO" term="SEO" />
    
        <id>http://www.novanebula.net/blog/archives/97-guid.html</id>
        <title type="html">Temas piramidales (SEO)</title>
        <content type="xhtml" xml:base="http://www.novanebula.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Una de las estrategias SEO que se emplean para diseñar desde cero un sitio web es el de los temas piramidales. Los estructuración del un sitio web en temas piramidales presenta ventajas no sólo desde el mundo <strong>SEO</strong> sino también a nivel organizativo y de usabilidad del sitio. Muchos sitios presente una estructura cercana a esta en mayor o menor medida pero al no comprender en profundidad las ventajas de este tipo de estructuración finalmente el sitio pierde estas ventajas a medida que el sitio crece en tamaño.<br />
<br />
Los <strong>temas piramidales</strong> no son algo nuevo que haya surgido hace poco tiempo sino que ya han sido utilizados desde hace años.<br />
<br />
Los sitios basados en temas piramidales son más sencillos de mantener, organizativamente facilitan la tarea de encontrar los contenidos que buscas y de optimizan sus el futuras mejoras y mantenimiento debido a su clara organización. Los temas piramidales se basan en <strong>concepto de tema</strong>.<br />
<br />
¿Que es un tema?<br />
<br />
Es la base, la idea común, a partir de la cual desarrollamos nuestro sitio. Es el termino unificador que reune todas las partes de nuestro sitio y que puede englobar todo el contenido de nuestro sitio bajo este concepto.  Es el <strong>keyword</strong> que define  todo nuestro conjunto de páginas.<br />
<br />
Construcción de temas piramidales<br />
<br />
La palabra/keyword principal que define el tema principal de tu sitio será la empleada en la página inicial, y todas los niveles debajo de la página principal contendrán variaciones de esta keywords de una manera jerarquizada. Es decir cada keyword debajo de la principal  tendrá a su vez otras keywords (niveles) y actuará como englobador o tema común de todas las que se encuentren por debajo y así sucesivamente. De manera que cuanto más profundizaremos en la estructura del sitio encontraremos keywords cada vez más específicas.<br />
<br />
<br />
Este tema principal estará recogido en nuestra página principal soportado por varios subtemas muy relacionados. Para soportar estos subtemas cada uno de ellos tiene otros temas fuertemente relacionados con este subtema y así seguiríamos a través de varios niveles.<br />
<br />
Valor SEO<br />
Sin valor                    Home page (tema principal)<br />
bajo valor       SubtemaA      SubtemaB     SubtemaC     SubtemaD<br />
medio valor   kw a1    kw a2   kw b1  kw b2  kw c1  kw c2   kw d1 kw d2<br />
alto valor  ka1a ka1b ka2a ka2b ..........<br />
Dinero      $ $ $ $ $ $ $ $ $ $ .....<br />
<br />
La teoría de los temas piramidales implica ver al sitio como un todo compartimentado. Comenzado por un contenedor que englobe a todo el sitio tema principal y diseñando subtemas nivel tras nivel para abarcar todo el contenido del sitio. Enlazar cada tema arriba y abajo pero no a través de los temas con diferentes temas padres (esto reforzara las páginas y la popularidad del enlace). <strong>Estructura vertical</strong> de enlaces NO HORIZONTAL.<br />
<br />
Cosas importantes en el diseño de un sitio estructurado en temas piramidales, en cada nivel:<br />
<br />
1. La pagina principal APENAS tiene valor SEO. Raramente ranquea bien y tampoco es algo que nos deba preocupar demasiado. Una página principal bien ranqueada con una estructura de este tipo es la excepción y no la regla. Si ranquea bien es generalmente debido a factores externos (off-the-page). Sus únicas funciones es ser usable para los visitantes y servir de alimento(enlaces a los niveles inferiores) a los buscadores que visitan tu sitio web. Intenta también colocar enlaces tan profundos como puedas a los buscadores les gusta el contenido de primer nivel sobre todo en keywords que te interesan especialmente.<br />
<br />
2. Para el segundo nivel el valor SEO es más importante pero lo más importante aquí, es también colocar enlaces a los niveles más profundos de tu sitio web y no sólo al siguiente. Enlaces verticales dentro de este subtema arriba y abajo. No horizontales.<br />
<br />
3. Valor SEO importante la distinción entre los niveles 4 y 5 puede ser confusa. Suele contener términos muy competitivos y de posicionamiento difícil. Algunos de los enlaces entrantes deberían proceder de la home page.<br />
<br />
4. Suele tener el contenido básico de calidad del sitio. Enlázalo verticalmente. Si enlazas con sitios externos procura que sea también contenido muy relacionado.<br />
<br />
5. Habitualmente las páginas que traen el dinero. Enlázalo con todas las páginas de sus niveles superiores<br />
<br />
<br />
Con toda esa pirámide de keywords el impacto en el posicionamiento de estas keywords será muy importante pues cada una de ellos reforzará a cada una de las demás.<br />
<br />
Ventajas temas piramidales:<br />
1.-Es sencillo tener un sitio web organizado y centrado en el tema principal, a veces cuando un sitio web crece esto se vuelve algo complicado.<br />
2.-Una correcta organización en temas te permite obtener una diferenciación clara entre las distintas partes de tu web y abarcar keywords especificas y sus variaciones en diferentes secciones.<br />
3.-Una buena organización en temas tiene un impacto positivo en la selección, fuerza y posicionamiento de tus keywords.<br />
4.-Una web estructurada en temas piramidales está preparada para el futuro. Los buscadores tienen un estructura organizada, limpia y con términos relevantes que no van a eliminar de sus bases de datos.<br />
5.-Un web estructura así te permitirá ahorrar tiempo en el futuro<br />
6.-Muchos de los buscadores actuales usan temas para sus algoritmos de posicionamiento<br />
<br />
Buscadores basados en temas, ¿como funcionan?<br />
<br />
La diferencia principal es que un buscador basado en temas visita las páginas de tu sitio web y las indexa en conjunto no una a una a media que las va visitando. El buscador basado en temas examina y pondera tu sitio web como un todo en lugar de hacerlo en cada página individualmente. Con este tipo de indexación es más difícil que una página aislada en una web no estructurada en temas obtenga un buen posicionamiento para una keyword que un sitio entero que hable de esta keyword y que reciba y tenga enlaces de keywords muy relacionadas. 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.novanebula.net/blog/archives/106-Experimentos-sociologicos-con-google.html" rel="alternate" title="Experimentos sociológicos con google" />
        <author>
            <name>Abraham Covelo</name>
                    </author>
    
        <published>2009-02-06T23:28:19Z</published>
        <updated>2010-04-17T23:03:26Z</updated>
        <wfw:comment>http://www.novanebula.net/blog/wfwcomment.php?cid=106</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.novanebula.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=106</wfw:commentRss>
    
            <category scheme="http://www.novanebula.net/blog/categories/12-SEO" label="SEO" term="SEO" />
    
        <id>http://www.novanebula.net/blog/archives/106-guid.html</id>
        <title type="html">Experimentos sociológicos con google</title>
        <content type="xhtml" xml:base="http://www.novanebula.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Esta claro que google posee una cantidad ingente de información y una pequeña parte de ella sale de sus datacenters para sorprendernos y ofrecer interesantes revelaciones...<br />
<br />
<!-- s9ymdb:22 --><img alt="captura de una busqueda en google.com" style="float: left; border: 0px; padding-left: 5px; padding-right: 5px;" src="http://www.novanebula.net/blog/uploads/google-searches2.png"/> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.novanebula.net/blog/archives/140-Matt-Cutts-entrevistado-por-Eric-Enge.html" rel="alternate" title="Matt Cutts entrevistado por Eric Enge" />
        <author>
            <name>Abraham Covelo</name>
                    </author>
    
        <published>2010-03-21T18:42:48Z</published>
        <updated>2010-04-17T23:00:57Z</updated>
        <wfw:comment>http://www.novanebula.net/blog/wfwcomment.php?cid=140</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.novanebula.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=140</wfw:commentRss>
    
            <category scheme="http://www.novanebula.net/blog/categories/12-SEO" label="SEO" term="SEO" />
    
        <id>http://www.novanebula.net/blog/archives/140-guid.html</id>
        <title type="html">Matt Cutts entrevistado por Eric Enge</title>
        <content type="xhtml" xml:base="http://www.novanebula.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Escribo en este post un pequeño resumen con los puntos más interesantes de una entrevista del 14 de Marzo del 2010 realizada por <a onclick="javascript: pageTracker._trackPageview('/extlink/searchenginewatch.com/3624376');"  href="http://searchenginewatch.com/3624376">Eric Enge</a> presidente de <a onclick="javascript: pageTracker._trackPageview('/extlink/www.stonetemple.com/');"  href="http://www.stonetemple.com/">Stone Temple Consulting</a> y consultor SEO a <a onclick="javascript: pageTracker._trackPageview('/extlink/www.mattcutts.com/blog/');"  href="http://www.mattcutts.com/blog/">Matt Cutts</a>, ingeniero de Google (que supongo que no necesita más presentaciones). Enumero los datos y afirmaciones que me han parecido más interesantes<br />
<br />
No existe un límite en el número de páginas indexadas por parte de google de un sitio web. El número de páginas que rastreamos es proporcional al PageRank. Las páginas con más enlaces entrantes son descubiertas y rastreadas por google más rapidamente.<br />
<br />
Existe el concepto por parte de googlebot del "host load" (carga del servidor). La carga del servidor es esencialmente el número máximo de conexiones simultaneas que un servidor web en particular puede manejar.<br />
<br />
Hay dos factores principales que determinan el rastreo de un sitio por parte de googlebot. Uno es el page rank y otro es la carga del servidor. Page rank y otros factores determinan lo profundamente que googlebot rastreará dentro de un sitio web. Sin embargo es posible que también la carga del servidor influya en este rastreo. Pero también el contenido duplicado. Si google lo encuentra descarta las duplicadas y se queda sólo con una. Además googlebot podría tender a rastrear con menor frecuencia un sitio donde haya mucho contenido duplicado.<br />
<br />
Con enlaces procedentes de páginas marcadas como contenido duplicado google intenta mezclar estas páginas como si fueran una sóla (a efectos de link juice que envían) en lugar de eliminarlas completamente. Estos enlaces no necesariamente se pierden.<br />
<br />
Evitar identificadores de sessión en URLS. También desde un punto de vista de usabilidad los usuarios tienden a recordar enlaces que son más bonitos y sencillos.<br />
<br />
Ahora google tiene la habilidad a través de google webmasters tools de ignorar completamente un parámetro en la URL.<br />
<br />
Existe riesgo de que estos identificadores de sesión sean vistos como contenido duplicado. También los enlaces de afiliación con parámetros de seguimiento.<br />
<br />
Navegación "faceted" al estilo de Zappos no es muy positivo para googlebot y para los usuarios.<br />
<br />
Existe alguna perdida de page rank al emplear redirecciones 301<br />
<br />
<br />
Es preferible reducir el contenido duplicado que usar rel=canonical. Las páginas que combines mediante el rel canonical no tienen porqué ser completos duplicados, pero deberían ser duplicados conceptuales del mimso producto o estar muy relacionados. Desde diciembre ya se puede hacer rel canonical entre dominios.<br />
<br />
Es perfectamente válido tener un rel canonical que apunte a la misma página y también tenerlo implementado para todas las páginas de tu sitio.<br />
<br />
<br />
Empleamos peticiones HEAD para recoger información sobre imágenes pero no para el resto de recursos.<br />
<br />
Javascript: googlebot puede ejecutar algo de Javascript<br />
<br />
No emplees page rank sculpting en tu sitio emplea tu tiempo en obtener enlaces valiosos o mejorar el contenido de tu web.<br />
<br />
<br />
Esta es la entrevista completa (en inglés): <a onclick="javascript: pageTracker._trackPageview('/extlink/www.stonetemple.com/articles/interview-matt-cutts-012510.shtml');"  href="http://www.stonetemple.com/articles/interview-matt-cutts-012510.shtml">Entrevista a Matt Cutts</a> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.novanebula.net/blog/archives/143-Garzon-a-juicio.html" rel="alternate" title="¿Garzón a juicio?" />
        <author>
            <name>Abraham Covelo</name>
                    </author>
    
        <published>2010-04-08T21:53:47Z</published>
        <updated>2010-04-08T22:01:20Z</updated>
        <wfw:comment>http://www.novanebula.net/blog/wfwcomment.php?cid=143</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://www.novanebula.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=143</wfw:commentRss>
    
            <category scheme="http://www.novanebula.net/blog/categories/11-Aministia-internacional" label="Aministia internacional" term="Aministia internacional" />
    
        <id>http://www.novanebula.net/blog/archives/143-guid.html</id>
        <title type="html">¿Garzón a juicio?</title>
        <content type="xhtml" xml:base="http://www.novanebula.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Hola Abraham<br />
<br />
Tras las últimas noticias al respecto, te enviamos este mensaje para informarte de la postura de Amnistía Internacional ante la acusación al Juez Baltasar Garzón por investigar los crímenes franquistas.<br />
<br />
Amnistía Internacional considera insólito que el juez Garzón pueda ser juzgado por investigar las desapariciones de más de 100.000 personas ocurridas durante la Guerra Civil y la dictadura franquista.<br />
<br />
La “Ley de Amnistía de 1977” ha sido invocada para perseguir al único juez que ha intentado dar respuesta a víctimas de desaparición forzada y sus familias. Si este juicio se produce, será la primera vez en todo el mundo – al menos que tengamos constancia en Amnistía Internacional - que un magistrado, en democracia, es sentado en el banquillo por intentar conseguir verdad, justicia y reparación para las víctimas de crímenes internacionales. Además, enviará un mensaje tremendamente negativo para otros jueces que lo intenten, tanto en España, como en el resto del mundo.<br />
<br />
Las normas internacionales de derechos humanos dicen claramente que el crimen de desaparición forzada NO prescribe y entorpecer su investigación es un delito, por tanto ninguna “Ley de Amnistía” puede contradecirlas.<br />
<br />
Te animamos a que entres en nuestra página de <a onclick="javascript: pageTracker._trackPageview('/extlink/www.facebook.com/pages/Amnistia-Internacional-Espana/78151799929');"  href="http://www.facebook.com/pages/Amnistia-Internacional-Espana/78151799929">facebook</a>, dejes tus comentarios en el muro y compartas en tu perfil esta noticia.<br />
<br />
Por favor, reenvía este mensaje a todos tus contactos.<br />
<br />
Recibe un cordial saludo,<br />
<br />
Esteban Beltrán<br />
Director Amnistía Internacional 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.novanebula.net/blog/archives/142-Convertir-String-a-int-en-Java-y-viceversa.html" rel="alternate" title="Convertir String a int en Java y viceversa" />
        <author>
            <name>Abraham Covelo</name>
                    </author>
    
        <published>2010-04-05T20:13:59Z</published>
        <updated>2010-04-05T20:33:02Z</updated>
        <wfw:comment>http://www.novanebula.net/blog/wfwcomment.php?cid=142</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.novanebula.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=142</wfw:commentRss>
    
            <category scheme="http://www.novanebula.net/blog/categories/9-Articulos-programacion" label="Articulos programación" term="Articulos programación" />
    
        <id>http://www.novanebula.net/blog/archives/142-guid.html</id>
        <title type="html">Convertir String a int en Java y viceversa</title>
        <content type="xhtml" xml:base="http://www.novanebula.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                A continuación unas pequeñas recetas de java para pasar de cadena a entero o de entero a cadena.<br />
<br />
Para convertir un String (cadena) a int (entero) hay que emplear el método estático de la clase Integer, parseInt<br />
<br />
Ejemplo:<br />
<br />
<code><br />
String enteroString = "5";<br />
int entero = Integer.parseInt(enteroString);<br />
</code><br />
<br />
Para convertir int(entero) a String sólo debemos hacer una llamada al método estático de la clase Integer, toString<br />
<br />
Ejemplo:<br />
<br />
<code><br />
int entero = 1;<br />
String enteroString = Integer.toString(entero);<br />
</code><br />
<br />
<br />
Análogamente para pasar de cadena a double tenemos el método Double.parseDouble<br />
<br />
Ejemplo:<br />
<br />
<code><br />
double aDouble = Double.parseDouble(aString);<br />
</code><br />
<br />
o al revés (double a string) llamamos al método Double.toString<br />
<br />
Ejemplo:<br />
<br />
<code><br />
double d = 8342342;<br />
System.out.println(Double.toString(d));<br />
</code><br />
<br />
Tanto la clase Integer con la clase Double se encuentran en el package java.lang. Atención int y double son tipos primitivos del lenguaje java. Integer y Double son clases que representan estos tipos primitivos y le añaden más funcionalidades. Como por ejemplo las que acabamos de ver. 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.novanebula.net/blog/archives/141-Wikileaks-revela-mas-datos-sobre-operaciones-de-EEUU-en-Irak.html" rel="alternate" title="Wikileaks revela más datos sobre operaciones de EEUU en Irak" />
        <author>
            <name>Abraham Covelo</name>
                    </author>
    
        <published>2010-04-05T19:04:46Z</published>
        <updated>2010-04-05T19:29:41Z</updated>
        <wfw:comment>http://www.novanebula.net/blog/wfwcomment.php?cid=141</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.novanebula.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=141</wfw:commentRss>
    
            <category scheme="http://www.novanebula.net/blog/categories/11-Aministia-internacional" label="Aministia internacional" term="Aministia internacional" />
    
        <id>http://www.novanebula.net/blog/archives/141-guid.html</id>
        <title type="html">Wikileaks revela más datos sobre operaciones de EEUU en Irak</title>
        <content type="xhtml" xml:base="http://www.novanebula.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Posiblemente la inmensa mayoría de las atrocidades de la guerra de Irak (y de todas las guerras) permanezcan en el anonimato. De vez en cuando algunas de ellas salen a la luz y este pequeño artículo habla de una de ellas. Simplemente para que lo que pasó aquí sea más conocido. Nuevamente a <a onclick="javascript: pageTracker._trackPageview('/extlink/wikileaks.org/');"  href="http://wikileaks.org/">wikileaks</a> ha llegado este importante documento (un vídeo de una operación militar grabado desde un helicóptero) que han hecho inmediatamente público. Wikileaks permite que la gente envíe anonimamente documentos comprometedores para grandes empresas, gobiernos u otros agentes especialmente poderosos y que ellos hacen públicos. El anonimato de la fuente original está garantizado por ellos.<br />
<br />
Bueno, no me quiero enrollar más. La historia y el vídeo lo podéis ver en <a onclick="javascript: pageTracker._trackPageview('/extlink/collateralmurder.org/');"  href="http://collateralmurder.org/">collateralmurder.org/</a>. A grandes pinceladas un ataque americano en Iraq causa muertos y heridos entre hombres y niños en un pequeño barrio marginal en la ciudad de Nueva Bagdad. Antes de sacar el vídeo la versión oficial del ejercito y del gobierno americano era de operaciones de combate contra insurgentes. El vídeo ha salido a la opinión pública hoy mismo 5 de abril del 2010, como ellos mismos comentan.<br />
<br />
Pongo abajo el vídeo de youtube pero aconsejo que leáis la <a onclick="javascript: pageTracker._trackPageview('/extlink/collateralmurder.org/');"  href="http://collateralmurder.org/">versión de wikileaks de todo el incidente</a>. AVISO ANTES DE QUE LE DEIS AL PLAY: El vídeo contiene imágenes que pueden herir la sensibilidad si eres menor de edad no lo veas.<br />
<br />
<!-- xhtml clean youtube --><object type="application/x-shockwave-flash" width="459" height="344" data="http://www.youtube.com/v/5rXPrfnU3G0&amp;hl=en&amp;fs=1&amp;rel=0"><param name="movie" value="http://www.youtube.com/v/5rXPrfnU3G0&amp;hl=en&amp;fs=1&amp;rel=0" /><param name="movie" value="http://www.youtube.com/v/5rXPrfnU3G0&amp;hl=en&amp;fs=1&amp;rel=0"><param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always"></object><!-- /xhtml clean youtube -->

<!-- <object height="344" width="459"><param name="movie" value="http://www.youtube.com/v/5rXPrfnU3G0&amp;hl=en&amp;fs=1&amp;rel=0"><param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always"><embed src="http://www.youtube.com/v/5rXPrfnU3G0&amp;hl=en&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="459"></object> -->

<br />
<br />
<br />
 
            </div>
        </content>
        
    </entry>

</feed>