<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
  <title>4Trabes - De todo un poco</title>
  <id>tag:4trabes.com,2008:mephisto/</id>
  <generator version="0.7.3" uri="http://mephistoblog.com">Mephisto Noh-Varr</generator>
  <link href="http://4trabes.com/feed/atom.xml" rel="self" type="application/atom+xml"/>
  <link href="http://4trabes.com/" rel="alternate" type="text/html"/>
  <updated>2008-08-04T09:06:31Z</updated>
  <entry xml:base="http://4trabes.com/">
    <author>
      <name>david</name>
    </author>
    <id>tag:4trabes.com,2008-08-04:474</id>
    <published>2008-08-04T09:03:00Z</published>
    <updated>2008-08-04T09:06:31Z</updated>
    <link href="http://4trabes.com/2008/8/4/obie-y-restful-rails" rel="alternate" type="text/html"/>
    <title>Obie y RESTful Rails</title>
<content type="html">
            &lt;p&gt;Puede que &lt;a href=&quot;http://blog.obiefernandez.com/&quot;&gt;Obie&lt;/a&gt; no sea el conferenciante más animado del mundo, puede que no haya elegido la mejor foto para &lt;a href=&quot;http://obiefernandez.com/&quot;&gt;su web&lt;/a&gt;, pero de &lt;a href=&quot;http://rubyonrails.org&quot;&gt;Rails&lt;/a&gt; aun sabe algo, así que aquí dejo un enlace a su charla en la &lt;a href=&quot;http://qconsf.com/sanfrancisco-2008/conference/&quot;&gt;QConf&lt;/a&gt; acerca de &lt;span class=&quot;caps&quot;&gt;REST&lt;/span&gt; y Rails: &lt;a href=&quot;http://www.infoq.com/presentations/fernandez-restful-rails-apps&quot;&gt;Designing RESTful Rails Applications&lt;/a&gt;. Una introducción fácil de seguir a los conceptos básicos para la gente que esté comenzado.&lt;/p&gt;


	&lt;p&gt;PD: Por cierto Asís ya se ha leido el libro de Obie, &lt;a href=&quot;http://www.amazon.com/Rails-Way-Addison-Wesley-Professional-Ruby/dp/0321445619&quot;&gt;The Rails Way&lt;/a&gt;, y habla muy bien de él. Yo lo tengo en mi interminable pila de libros pendientes. Cuando lo lea os comento.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://4trabes.com/">
    <author>
      <name>david</name>
    </author>
    <id>tag:4trabes.com,2008-07-28:473</id>
    <published>2008-07-28T13:45:00Z</published>
    <updated>2008-07-28T13:46:43Z</updated>
    <category term="Java"/>
    <link href="http://4trabes.com/2008/7/28/salpicaduras-de-java-efectivo" rel="alternate" type="text/html"/>
    <title>Salpicaduras de Java eficaz</title>
<content type="html">
            &lt;p&gt;En mi &lt;a href=&quot;http://4trabes.com/2008/7/14/effective-java-2%C2%AA-edici%C3%B3n&quot;&gt;anterior post&lt;/a&gt; &#8220;amenacé&#8221; con publicar alguna de las técnicas más interesantes que aparecen en &lt;a href=&quot;http://java.sun.com/docs/books/effective/&quot;&gt;Efective Java&lt;/a&gt;. El camarada &lt;a href=&quot;http://adrian.otero.ws&quot;&gt;Adrián&lt;/a&gt; se  ha adelantado y ha escrito acerca del idiom &lt;a href=&quot;http://adrian.otero.ws/blog/2008/07/singleton-bajo-demanda-y-thread-safe&quot;&gt;Initialization on demand holder&lt;/a&gt;. Como aquí en &lt;a href=&quot;http://www.trabesoluciones.com&quot;&gt;Trabe&lt;/a&gt; intentamos ser &lt;a href=&quot;http://en.wikipedia.org/wiki/Don't_repeat_yourself&quot;&gt;&lt;span class=&quot;caps&quot;&gt;DRY&lt;/span&gt;&lt;/a&gt; me limito a dejaros el enlace y para que lo leáis en su blog.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://4trabes.com/">
    <author>
      <name>david</name>
    </author>
    <id>tag:4trabes.com,2008-07-14:469</id>
    <published>2008-07-14T21:48:00Z</published>
    <updated>2008-07-14T22:49:41Z</updated>
    <category term="Java"/>
    <link href="http://4trabes.com/2008/7/14/effective-java-2&#170;-edici&#243;n" rel="alternate" type="text/html"/>
    <title>Effective Java (2&#170; edici&#243;n)</title>
<content type="html">
            &lt;p&gt;Vaya por delante que hace más de dos años que no desarrollo un proyecto entero con &lt;a href=&quot;http://java.sun.com&quot;&gt;Java&lt;/a&gt;. Mis pequeños flirteos con &lt;a href=&quot;http://rubyonrails.org&quot;&gt;Rails&lt;/a&gt; se convirtieron en una estable relación y dejé un poco de lado a mi antigua amante, a la que sólo he vuelto a visitar breve y esporádicamente para echar una mano a los Java boys de &lt;a href=&quot;http://trabesoluciones.com&quot;&gt;Trabe&lt;/a&gt; (cuando el cliente aprieta y el tiempo escasea). Vamos, que en estos dos últimos años me he dedicado a otras lecturas, libres de cafeina.&lt;/p&gt;


	&lt;p&gt;De todos modos, la desarrolladora Java que tengo en casa si que se gasta algunos euros en bibliografía y hace poco adquirió la &lt;a href=&quot;http://java.sun.com/docs/books/effective/&quot;&gt;segunda edición de Effective Java&lt;/a&gt;. Ayer por curiosidad me pase un rato hojeando el libro (un rato largo de una horita más o menos) y debo decir que me gustó lo que leí.&lt;/p&gt;


&lt;div class=&quot;image&quot;&gt;
&lt;img src=&quot;http://4trabes.com/assets/2008/7/6/effective_java.jpg&quot; alt=&quot;Effective Java 2nd Edition&quot; /&gt;
&lt;/div&gt;

	&lt;p&gt;Estoy seguro de que volveré a coger este libro para echarle una &#8220;hojeada&#8221; de varios días tan pronto tenga un hueco, y si no pasa nada raro puede que deje en este blog algo de la sabiduría que el compañero &lt;a href=&quot;http://en.wikipedia.org/wiki/Joshua_Bloch&quot;&gt;Joshua Bloch&lt;/a&gt; recoge en él.&lt;/p&gt;


	&lt;p&gt;Lo dicho: una lectura recomendable.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://4trabes.com/">
    <author>
      <name>david</name>
    </author>
    <id>tag:4trabes.com,2008-07-06:468</id>
    <published>2008-07-06T09:53:00Z</published>
    <updated>2008-07-06T09:54:56Z</updated>
    <category term="Ruby on Rails"/>
    <link href="http://4trabes.com/2008/7/6/rails-2-1" rel="alternate" type="text/html"/>
    <title>Rails 2.1</title>
<content type="html">
            &lt;p&gt;Sobre &lt;a href=&quot;http://weblog.rubyonrails.org/2008/6/1/rails-2-1-time-zones-dirty-caching-gem-dependencies-caching-etc&quot;&gt;Rails 2.1&lt;/a&gt; sólo puedo decir que es &lt;strong&gt;más de lo mismo, pero mejor&lt;/strong&gt;. Podéis comprobarlo leyendo el &lt;a href=&quot;http://www.nomedojogo.com/2008/06/09/new-free-book-ruby-on-rails-21-whats-new/&quot;&gt;libro gratuíto&lt;/a&gt; que el amigo &lt;a href=&quot;http://www.nomedojogo.com/&quot;&gt;Carlos Brando&lt;/a&gt; ha tenido a bien publicar y que recopila todas las novedades de esta versión.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://4trabes.com/">
    <author>
      <name>marcos</name>
    </author>
    <id>tag:4trabes.com,2008-07-05:467</id>
    <published>2008-07-05T16:32:00Z</published>
    <updated>2008-07-05T16:33:35Z</updated>
    <category term="Tecnolog&#237;a"/>
    <category term="Trabe"/>
    <link href="http://4trabes.com/2008/7/5/instalar-ubuntu-sin-cds-dvds-ni-dispositivos-usb-utilizando-&#250;nicamente-la-red-pxe" rel="alternate" type="text/html"/>
    <title>Instalar Ubuntu sin CDs, DVDs ni dispositivos USB utilizando &#250;nicamente la red (PXE)</title>
<content type="html">
            &lt;p&gt;
El título ha quedado un poco largo, pero eso es exactamente lo que acabo de hacer hace un rato, y como me parece algo interesante, voy a explicar brevemente cómo conseguirlo.
&lt;/p&gt;
&lt;p&gt;
La base del proceso es &lt;a href=&quot;http://en.wikipedia.org/wiki/Preboot_Execution_Environment&quot;&gt;PXE&lt;/a&gt;, que para definirlo en pocas palabras viene a ser un &quot;modo de arrancar un ordenador&quot; utilizando para ello únicamente el interfáz de red. Como podéis ver en el enlace a la wikipedia, PXE es básicamente una mezcla de DHCP y TFTP.
&lt;/p&gt;
&lt;h3&gt; Paso 1: el ordenador ha de ser capaz de &lt;em&gt;arrancar desde la red&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;
Para poder instalar nuestro sistema utilizando esta tática, es necesario que éste sea capaz de hacer el boot desde un dispositivo de red. La mayoría de los PCs  soportan esta característica, por lo que no debería de ser un requisito difícil de satisfacer. Una vez que nos aseguremos de que el PC  &quot;sabe arrancar desde la red&quot;, ya solo nos falta instalar un servidor que le responda adecuadamente a sus peticiones.
&lt;/p&gt;

&lt;h3&gt; Paso 2: instalar el servidor&lt;/h3&gt;
&lt;p&gt;
En este caso, el ordenador que va a servir los ficheros de arranque es un humilde PC con windows ya instalado, por lo que la herramienta que utilizaremos es &lt;a href=&quot;http://tftpd32.jounin.net&quot;&gt;TFTPD32&lt;/a&gt;. Esta herramienta es una de esas pequeñas joyas que a cambio de muy pocos KB son capaces de hacer un montón de cosas, como podéis observar en la página del autor.
&lt;/p&gt;
&lt;p&gt;
Una vez descargado el programa, ponerlo a funcionar es tan simple como crear una carpeta, digamos que c:\tftp y copiar en ella el fichero tftpd32.exe. Lo ejecutamos y ya tenemos el servidor andando. Así de fácil.
&lt;/p&gt;
&lt;h3&gt;Paso 3: descargarse la imagen de ubuntu &lt;em&gt;peparada para estas labores&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;
El siguiente paso será descargarse la imagen de ubuntu lista para ser servida utilizando PXE. Para conseguir este objetivo tendremos que descargarnos la carpeta &lt;strong&gt;ubuntu-installer&lt;/strong&gt; que podremos encontrar en el respositorio de ubuntu. En mi caso particular, esta carpeta podía descargarse de:
&lt;/p&gt;
&lt;pre&gt;
ftp://archive.ubuntu.com/ubuntu/dists/hardy/main/installer-i386/current/images
&lt;/pre&gt;

&lt;h3&gt;Paso 4: configurar el servidor&lt;/h3&gt;
&lt;p&gt;
Una vez descargada esta carpeta, deberemos de copiarla en c:\tftp. Además, debemos de asegurarnos de:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;copiar a c:\tftp la carpeta pxelinux.cfg desde ubuntu-installer/i386/&lt;/li&gt;
&lt;li&gt;copiar a c:\tftp el fichero pxelinux.0 desde ubuntu-installer/i386/&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Ahora ya podemos configurar el tftpd32. En la pestaña DHCP, deberemos poner 'pxelinux.0' en el campo boot file y deberemos rellenar el resto de valores ajustándose a la realidad de nuestra red. Es importante que el valor del campo 'IP pool starting address' sea una IP válida en nuestra red y que se refiera a un rango de IPs no utilizado en la misma. Una vez cubiertos todos los campos, pulsamos save y ya tenemos nuestro servidor configurado. Así de fácil,
&lt;/p&gt;
&lt;h3&gt;Paso 5: arrancar el pc que queremos instalar&lt;/h3&gt;
&lt;p&gt;
Con nuestro servidor perfectamente configurado, ya podemos arrancar el pc en el que queremos instalar ubuntu. Si todo va bien y los cables están bien enchufados, podremos ver que comienzan a aparecer entradas en la pestaña 'Log viewer' de tftpd32. Se establece la comunicación entre el PC que arranca utilizando PXE y nuestro servidor. Al cabo de unos instantes,  el PC que está tratando de arrancar acaba recibiendo por TFTP la imagen de instalación basada en red de ubuntu. A partir de ahi sólo nos queda continuar con una instalación basada en red de lo más normal, (lenta),  y aburrida.
&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://4trabes.com/">
    <author>
      <name>david</name>
    </author>
    <id>tag:4trabes.com,2008-06-23:459</id>
    <published>2008-06-23T09:33:00Z</published>
    <updated>2008-06-23T09:36:05Z</updated>
    <category term="Ruby on Rails"/>
    <link href="http://4trabes.com/2008/6/23/vulnerabilidades-en-ruby" rel="alternate" type="text/html"/>
    <title>Vulnerabilidades en Ruby</title>
<content type="html">
            &lt;p&gt;Hoy iba a escribir sobre &lt;a href=&quot;http://www.rubyonrails.org/&quot;&gt;Rails&lt;/a&gt;  2.1, pero lo voy a posponer ya que parece ser que hay una serie de &lt;a href=&quot;http://weblog.rubyonrails.com/2008/6/21/multiple-ruby-security-vulnerabilities&quot;&gt;vulnerabiliades en la MV de Ruby&lt;/a&gt; y eso es una noticia más importante. Dicen que es buena idea actualizar la versión de Ruby&#8230; más adelante. Se ve que con las prisas es peor el remedio que la enferemedad, quiero decir la actualización que el riesgo de ataque. El personal se está quejando de errores extraños. A ver cuando tardan en sacar un nuevo parche que no tire abajo las aplicaciones Rails. ¿Habrán parcheado ya la versión &lt;a href=&quot;http://www.rubyenterpriseedition.com&quot;&gt;enterprise&lt;/a&gt;?&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://4trabes.com/">
    <author>
      <name>david</name>
    </author>
    <id>tag:4trabes.com,2008-06-19:453</id>
    <published>2008-06-19T12:35:00Z</published>
    <updated>2008-06-24T14:09:11Z</updated>
    <category term="Trabe"/>
    <link href="http://4trabes.com/2008/6/19/en-busca-de-la-felicidad" rel="alternate" type="text/html"/>
    <title>En busca de la felicidad...</title>
<content type="html">
            &lt;p&gt;Hay quien la busca con la &lt;a href=&quot;http://www.37signals.com/svn/posts/893-workplace-experiments&quot;&gt;semana de 4 días&lt;/a&gt;. A nosotros, aunque no nos disgusta la idea, nos es imposible aplicarla. Hoy hemos dado un paso más en la búsqueda de la felicidad&#8230; a nuestra manera: ahora en &lt;a href=&quot;https://www.trabesoluciones.com&quot;&gt;Trabe&lt;/a&gt; trabajamos en zapatillas. Como en casa. Cómodos.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://4trabes.com/">
    <author>
      <name>david</name>
    </author>
    <id>tag:4trabes.com,2008-06-15:451</id>
    <published>2008-06-15T21:24:00Z</published>
    <updated>2008-06-18T20:43:48Z</updated>
    <category term="Trabe"/>
    <link href="http://4trabes.com/2008/6/15/ya-somos-seis" rel="alternate" type="text/html"/>
    <title>Ya somos seis</title>
<content type="html">
            &lt;p&gt;Primero fueron las 4 trabes: Asís, Marcos, Óscar y un &lt;a href=&quot;http://www.davidbarral.com&quot;&gt;servidor&lt;/a&gt;. Luego llegó Alejandro (Alejo para los amigos) en noviembre del año pasado. Ahora le toca el turno a &lt;a href=&quot;http://adrian.otero.ws/blog&quot;&gt;Adrián&lt;/a&gt;, que se ha incorporado a la pequeña familia de Trabe el miércoles pasado tras responder a nuestra &lt;a href=&quot;http://4trabes.com/2008/4/12/%C2%BFquieres-trabajar-en-trabe-soluciones&quot;&gt;oferta de trabajo&lt;/a&gt;. Esperamos aprender mucho de él y que él aprenda mucho con nosotros, pero sobre todo, esperamos que se lo pase bien trabajando en &lt;a href=&quot;https://www.trabesoluciones.com&quot;&gt;Trabe&lt;/a&gt;.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://4trabes.com/">
    <author>
      <name>david</name>
    </author>
    <id>tag:4trabes.com,2008-06-12:449</id>
    <published>2008-06-12T08:05:00Z</published>
    <updated>2008-06-12T08:06:35Z</updated>
    <category term="Trabe"/>
    <link href="http://4trabes.com/2008/6/12/4trabes-historias-de-una-empresa-en-100-m2" rel="alternate" type="text/html"/>
    <title>4Trabes: historias de una empresa en 100 m2</title>
<content type="html">
            &lt;p&gt;Como ya os conté hace poco, &lt;a href=&quot;http://4trabes.com/2008/5/30/nos-mudamos-al-fin&quot;&gt;nos hemos mudado&lt;/a&gt;. Para celebrar la amplitud de nuestras nuevas instalaciones (100 metros cuadrados, ¡que lujo!) hemos decidido rebautizar el blog. Adios a 4Trabes: historias de una start-up en 20 m&lt;sup&gt;2&lt;/sup&gt;; bienvenido 4Trabes: historias de una empresa en 100 m&lt;sup&gt;2&lt;/sup&gt;.&lt;/p&gt;


	&lt;p&gt;Espero que este post, además,  valga para reactivar un poco el blog, que estaba algo abandonado con el lío de la mudanza&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://4trabes.com/">
    <author>
      <name>david</name>
    </author>
    <id>tag:4trabes.com,2008-05-30:447</id>
    <published>2008-05-30T08:09:00Z</published>
    <updated>2008-05-30T08:10:09Z</updated>
    <category term="Trabe"/>
    <link href="http://4trabes.com/2008/5/30/nos-mudamos-al-fin" rel="alternate" type="text/html"/>
    <title>Nos mudamos... al fin</title>
<content type="html">
            &lt;p&gt;Tras muchos avatares &lt;a href=&quot;http://www.trabesoluciones.com&quot;&gt;Trabe Soluciones&lt;/a&gt; se traslada a una &#8220;renovada&#8221; oficina en el centro de Coruña. Han pasado muchas cosas desde que colgamos de este blog &lt;a href=&quot;http://4trabes.com/2008/3/17/nos-mudamos-o-en-esas-estamos&quot;&gt;nuestro bocetillo de la nueva oficina&lt;/a&gt;: Negociaciones, pintura, suelos, electricidad, telefonía, datos, un viaje relampago a Ikea, cajas para un lado, cajas para otro, llaves allen y destornilladores&#8230; una locura. Hoy por fin nos mudamos. A partir del lunes nuestra dirección cambia y es la siguiente:&lt;/p&gt;


	&lt;p&gt;&lt;cite&gt;
Trabe Soluciones S.L.
&lt;br /&gt;
Arzobispo Lago 4-6 1ºIzq
&lt;br /&gt;
15004 A Coruña
&lt;br /&gt;
tfno: 981.91.41.91
&lt;/cite&gt;&lt;/p&gt;


	&lt;p&gt;Cuando terminemos con los detalles ya colgaremos unas fotillos para que se vea el resultado de nuestros esfuerzos.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;PD&lt;/strong&gt;: Lamentamos la ausencia de posts en el blog esta temporada pero la mudanza ha consumido todo el tiempo libre que nos han dejado nuestros clientes.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://4trabes.com/">
    <author>
      <name>marcos</name>
    </author>
    <id>tag:4trabes.com,2008-05-13:444</id>
    <published>2008-05-13T17:44:00Z</published>
    <updated>2008-05-13T23:11:58Z</updated>
    <link href="http://4trabes.com/2008/5/13/apache-dice-13-permission-denied-proxy-http-attempt-to-connect-to-127-0-0-1-8080-failed" rel="alternate" type="text/html"/>
    <title>Apache dice:  (13)Permission denied: proxy: HTTP: attempt to connect to 127.0.0.1:8080 (*) failed</title>
<content type="html">
            &lt;p&gt;
Hoy he sufrido un episodio de estos que llegan a exasperarte un poco.  Se trataba de crear una serie de virtualhosts para emular en un servidor local el comportamiento de un apache &quot;de producción&quot;. El servidor local tiene instalada una Fedora 7 y un apache &quot;limpio&quot;. 
&lt;/p&gt;
&lt;p&gt;
Entre otros cambios poco relevantes para este problema, introducimos un virtualhost que simplemente hace de proxy delegando las peticiones en otro servidor, algo parecido a:
&lt;/p&gt;
&lt;pre&gt;
&amp;lt;VirtualHost *:80&gt;
  ServerName midominio.com
  ServerAlias www.midominio.com
  ProxyRequests Off
  ProxyPreserveHost Off
  ProxyPass /app/ http://abc.blabla.com:8080/path/
  ProxyPassReverse /app/ http://abc.blabla.com:8080/path/
  ProxyPass / http://abc.blabla.com:8080/path/
  ProxyPassReverse / http://abc.blabla.com:8080/path/
&amp;lt;/VirtualHost&gt;
&lt;/pre&gt;

&lt;p&gt;
Una vez realizados los cambios en el httpd.conf y reiniciado el servicio, comprobamos con gran dolor que el proxy no está funcionando correctamente, dándonos el siguiente error:
&lt;/p&gt;

&lt;pre&gt;
[error] (13)Permission denied: proxy: HTTP: attempt to connect to 127.0.0.1:8080 (*) failed
&lt;/pre&gt;

&lt;p&gt;
Tras comprobar que todos los permisos estaban bien, que ninguna directiva evitaba que todo funcionase, etc. Me decidí a buscar ayuda en google. Y la encontré. &lt;a href=&quot;http://www.dharwadkar.com/weblog/apache_fc6_01&quot;&gt;En este enlace&lt;/a&gt; podéis ver la solución con más detalle, pero el resumen es que SELinux está bloqueando la conexión, y debemos de configurarlo para evitar que esto ocurra. Debemos de marcar la opción &quot;Allow HTTPD scripts and modules to connect to the network&quot; en la pantalla de configuración de Firewall, como podéis ver en el enlace anterior.
&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://4trabes.com/">
    <author>
      <name>david</name>
    </author>
    <id>tag:4trabes.com,2008-05-12:442</id>
    <published>2008-05-12T13:03:00Z</published>
    <updated>2008-05-12T13:07:17Z</updated>
    <link href="http://4trabes.com/2008/5/12/galicia-global-2-0-gallegos-conectados" rel="alternate" type="text/html"/>
    <title>Galicia Global 2.0: gallegos conectados</title>
<content type="html">
            &lt;p&gt;Como ya os &lt;a href=&quot;http://4trabes.com/2008/3/31/1000-galegos-globais-lo-celebramos-con-m%C3%A1s-galicia-global&quot;&gt;comenté&lt;/a&gt; hace tiempo hemos estado preparado una nueva versión de &lt;a href=&quot;http://www.galiciaglobal.com&quot;&gt;Galicia Global&lt;/a&gt; (algo así como una 2.0) para conmemorar la &lt;a href=&quot;http://www.maisinternetmaisgalego.org/&quot;&gt;edición 2008 del día de Internet y las letras gallegas&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Lo más destacable de este &#8220;upgrade&#8221; (que ya está en producción) es que ahora es posible definir amistades entre usuarios y crear redes entre ellos. Si ya os habíais registrado como gallegos globales podéis pasaros por la web a jugar un rato con las novedades, y si no lo habéis hecho ya, registraos ¿A qué estáis esperando?&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://4trabes.com/">
    <author>
      <name>david</name>
    </author>
    <id>tag:4trabes.com,2008-05-08:437</id>
    <published>2008-05-08T19:54:00Z</published>
    <updated>2008-05-08T19:54:53Z</updated>
    <link href="http://4trabes.com/2008/5/8/evitando-problemas-con-el-firebug-debug-y-m-l-a-console" rel="alternate" type="text/html"/>
    <title>Evitando problemas con el Firebug: debug y M.l.A. console</title>
<content type="html">
            &lt;p&gt;&lt;cite&gt;
Missing in action (M.I.A) is a status assigned to a member of the armed services who is reported missing following combat and may be injured, captured, or dead.
&lt;/cite&gt;&lt;/p&gt;


	&lt;p&gt;Sí amigos: desaparecer en combate. Eso es lo que le puede pasar al útil objeto &lt;a href=&quot;http://www.getfirebug.com/console.html&quot;&gt;console&lt;/a&gt; de la herramienta &lt;a href=&quot;http://www.getfirebug.com&quot;&gt;Firebug&lt;/a&gt; (que me imagino usarán/conocerán casi la totalidad de &#8220;hackers&#8221; javascript del mundo).&lt;/p&gt;


	&lt;p&gt;Si, como nosotros, la usáis, meted la siguiente línea de código como preambulo a vuestros javascripts. Os evitaréis alguna que otra excepción si olvidáis de vez en cuando un inocente &lt;code&gt;console.debug&lt;/code&gt; en vuestro código.&lt;/p&gt;


&lt;pre&gt;
if (!window.console) { var console = { debug : function(value) { }}}
&lt;/pre&gt;

	&lt;p&gt;Y, por cierto,  el Firebug últimamente tiene tendencía a dejar al &lt;a href=&quot;http://www.mozilla-europe.org/es/products/firefox/&quot;&gt;Firefox&lt;/a&gt; atontado&#8230; o es el Firefox el que está empezando a arrastrarse&#8230; no sé&#8230;&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://4trabes.com/">
    <author>
      <name>david</name>
    </author>
    <id>tag:4trabes.com,2008-05-06:435</id>
    <published>2008-05-06T22:28:00Z</published>
    <updated>2008-05-06T22:29:58Z</updated>
    <category term="Trabe"/>
    <link href="http://4trabes.com/2008/5/6/&#191;cu&#225;nto-te-gusta-programar" rel="alternate" type="text/html"/>
    <title>&#191;Cu&#225;nto te gusta programar?</title>
<content type="html">
            &lt;p&gt;Hace unas horas nos preguntaron a Asís, Marcos y a mi cuánto nos gustaba programar&#8230; difícil respuesta.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://4trabes.com/">
    <author>
      <name>david</name>
    </author>
    <id>tag:4trabes.com,2008-05-02:433</id>
    <published>2008-05-02T08:56:00Z</published>
    <updated>2008-05-02T08:56:54Z</updated>
    <category term="Java"/>
    <category term="Ruby on Rails"/>
    <link href="http://4trabes.com/2008/5/2/eliminar-c&#243;digo-tambi&#233;n-es-refactorizar" rel="alternate" type="text/html"/>
    <title>Eliminar c&#243;digo tambi&#233;n es refactorizar</title>
<content type="html">
            &lt;p&gt;Quizás el título de este post pueda dar lugar a equívocos. Obviamente, una de las consecuencias de &lt;a href=&quot;http://en.wikipedia.org/wiki/Refactoring&quot;&gt;refactorizar&lt;/a&gt; suele ser la reducción del código. A lo  que me refiero con  &lt;em&gt;&#8220;eliminar código es refactorizar&#8221;&lt;/em&gt; es a erradicar toda señal de código innecesario en una aplicación.&lt;/p&gt;


	&lt;h3&gt;Las preguntas a hacerse&lt;/h3&gt;


	&lt;ol&gt;
	&lt;li&gt;¿Se utiliza este código en alguna parte de la aplicación?&lt;/li&gt;
		&lt;li&gt;¿Es el código parte de un plugin y se utiliza en otras aplicaciones?&lt;/li&gt;
		&lt;li&gt;¿Se utiliza o no se utiliza?&lt;/li&gt;
	&lt;/ol&gt;


	&lt;h3&gt;Si la respuesta es no, no,no&lt;/h3&gt;


	&lt;p&gt;Si te pareces a  &lt;a href=&quot;http://www.google.es/url?sa=t&#38;ct=res&#38;cd=4&#38;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DLD5sahXoj0U&#38;ei=E9QaSL2vMpKAwgGF-LT7Cw&#38;usg=AFQjCNG4HK8hxmOlO1tIO02tEBDBT7W6Tg&#38;sig2=Gh1xNSa3Npwa5t5YSiWkcA&quot;&gt;Amy Winehouse&lt;/a&gt; borra ese código.&lt;/p&gt;


	&lt;p&gt;Borrar código es bueno. Eliminas puntos de fallo. Reduces el número de tests necesarios. Abrevias la documentación. Es decir: reduces el &lt;a href=&quot;http://es.wikipedia.org/wiki/Ruido&quot;&gt;ruido&lt;/a&gt; en tú aplicación.&lt;/p&gt;


	&lt;h3&gt;Y si te arrepientes más adelante de borrarlo&lt;/h3&gt;


	&lt;p&gt;Usa el control de versiones&#8230; ¿o no estás usando ninguno?&lt;/p&gt;
          </content>  </entry>
</feed>
