<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Un maño entre gaúchos</title>
	
	<link>http://blog.luisbosque.com</link>
	<description />
	<lastBuildDate>Fri, 05 Feb 2010 09:50:14 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/luisbosque" /><feedburner:info uri="luisbosque" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Default server in nginx</title>
		<link>http://feedproxy.google.com/~r/luisbosque/~3/MxcV0nVcT_4/</link>
		<comments>http://blog.luisbosque.com/2010/02/05/default-server-in-nginx/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 09:47:52 +0000</pubDate>
		<dc:creator>luis</dc:creator>
				<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[default server]]></category>
		<category><![CDATA[nginx]]></category>

		<guid isPermaLink="false">http://blog.luisbosque.com/?p=356</guid>
		<description><![CDATA[By default nginx accepts requests from any domain that points to the nginx server. If you want that only requests from domains that are configured in nginx be processed you cand add a default rule in nginx:


server {
  listen       80 default;
  server_name  _;
  deny  [...]]]></description>
			<content:encoded><![CDATA[<p>By default nginx accepts requests from any domain that points to the nginx server. If you want that only requests from domains that are configured in nginx be processed you cand add a default rule in nginx:</p>
<p><code></p>
<pre>
server {
  listen       80 default;
  server_name  _;
  deny         all;
}
</pre>
<p></code></p>
<p>So, if you try to do a request from a domain not configured in nginx, it will return a 403 status (forbidden)</p>
<img src="http://feeds.feedburner.com/~r/luisbosque/~4/MxcV0nVcT_4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.luisbosque.com/2010/02/05/default-server-in-nginx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.luisbosque.com/2010/02/05/default-server-in-nginx/</feedburner:origLink></item>
		<item>
		<title>LDAP: Introduction</title>
		<link>http://feedproxy.google.com/~r/luisbosque/~3/mPVS3S6bSyE/</link>
		<comments>http://blog.luisbosque.com/2009/10/23/ldap-introduction/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 22:25:05 +0000</pubDate>
		<dc:creator>luis</dc:creator>
				<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[introduction]]></category>
		<category><![CDATA[ldap]]></category>
		<category><![CDATA[openLDAP]]></category>

		<guid isPermaLink="false">http://blog.luisbosque.com/?p=293</guid>
		<description><![CDATA[This is the first post of a LDAP posts collection where I&#8217;ll try to explain all what I learned about this technology for the last years.
What is LDAP?
LDAP stands for Lightweight Directory Access Protocol.
LDAP is not a database
LDAP is A protocol to handle information from a Database
One of the most common applications of LDAP is [...]]]></description>
			<content:encoded><![CDATA[<p>This is the first post of a <a href="http://www.ietf.org/rfc/rfc2251.txt">LDAP</a> posts collection where I&#8217;ll try to explain all what I learned about this technology for the last years.</p>
<h2>What is LDAP?</h2>
<p>LDAP stands for <em>Lightweight Directory Access Protocol</em>.<br />
LDAP <strong>is not</strong> a database<br />
LDAP <strong>is</strong> A protocol to handle information from a Database<br />
One of the most common applications of LDAP is as an authentication backend for an email server. Next, we can see an example:</p>
<p><a href="http://blog.luisbosque.com/wp-content/uploads/2009/10/flujo_ldap_correo.png"><img src="http://blog.luisbosque.com/wp-content/uploads/2009/10/flujo_ldap_correo-650x168.png" alt="flujo_ldap_correo" title="flujo_ldap_correo" width="650" height="168" class="aligncenter size-medium wp-image-338" style="border:none;" /></a></p>
<p>In this picture a happy user tries to check his email from his personal computer. So he sends his login information to the email server. The email server fetches this data and starts talking with the LDAP server. The LDAP server contains all the users information, so if the login information that it is receiving from the mail server matches the information of any user in its database, it is going to return a positive answer to the email server. At this point, the email server knows that the user sent a valid login information, so it will send him his new emails.</p>
<p>In the picture we can see that the email server doesn&#8217;t know the physical database where the users information is stored. It only speaks with the LDAP server, and later the LDAP server try to compare the information with the database backend.</p>
<p>LDAP is extremely fast reading and searching information in the database. This is because the elements in a LDAP directory are arranged in a hierarchical tree, so searches are made always downwards. Because of that, LDAP is widely used as an authentication backend for all kind of services, specially the ones with a big amount of users. Write operations are not so fast, but in this kind of applications, users are used to read their personal information from the database, but not to change it.</p>
<h2>Data types</h2>
<p>In spite of being a hierarchical tree, all elements in the tree are equal. An element has one or more objeClasses that define the element purpose. Every objectclass has one or more required attributes and one or more optional attributes. So, in the end, an element belongs to one or more objectClasses and has one or more attributes depending on the objectClasses it belongs to.<br />
For example, en element representing a person has the <em>person</em> objectClass. So, this element is required to define the attributes <em>sn</em> (surname) and <em>cn</em> (commonName). But at the same time it could have, if it wants it to, the <em>telephoneNumber</em> attribute.</p>
<p>There are a lot of schemas that let the chance to load any kind of data in the tree. You can also create your own schema if there&#8217;s not any schema that satisfies your needs.</p>
<h2>Structure</h2>
<p>Like I said before, a LDAP directory is built with different kinds of elements arranged in a hierarchical tree structure. All the elements have a DN (Distinguished Name) that is an their identity inside the directory. An element DN is built with their own RDN (Relative Distinguished Name) and the RDN of the parent elements to the top element of the tree. This seems a bit confused, so let&#8217;s explain it better. Let&#8217;s see a small picture:</p>
<p><a href="http://blog.luisbosque.com/wp-content/uploads/2009/10/ldap_diagram2.png"><img src="http://blog.luisbosque.com/wp-content/uploads/2009/10/ldap_diagram2.png" alt="ldap_diagram2" title="ldap_diagram2" width="159" height="184" class="alignleft size-full wp-image-323" style="border:none; margin-right: 15px;" /></a></p>
<p>This is our directory tree. Let&#8217;s suppose that I want this directory to authenticate all of the example.com domain users.<br />
Usually when the top element of a tree is a domain, all the parts of the domain name are stored in separated elements. So, <em>com</em> and <em>example</em> are stored in different elements but following the same order.</p>
<p>The <em>com</em> element has the RDN &#8220;<em>dc=com</em>&#8220;. His RDN is made up with an element attribute. This elements belongs to the <em>dcObject</em> objectclass. This objectClass defines that all element belonging to it has to set the <em>dc</em> (domainComponent) attribute. This element has more attributes but, the main one is <em>dc</em> so it is part of the RDN.</p>
<p>That is the same case with the element <em>example</em>. It belongs to <em>dcObject</em> objectclass. So its <em>dc</em> attribute is part of its RDN. There is another element above, so this elemend DN would be the sum of its RDN and the parent RDN, &#8220;<em>dc=example,dc=com</em>&#8220;.</p>
<p>Next we have a simple container. We want to store people information, but we could also want to store, for example, groups information. A group and a person are two different kinds of elements. So in that case we would create two different containers in the tree. One for storing people, and another to store groups.<br />
In this case, we only have the People container. This element belongs to <em>organizationalUnit</em> objectClass. This objectClass force the element to set the <em>ou</em> (organizationalUnitName) attribute. So this element RDN is &#8220;ou=People&#8221;. And its DN is &#8220;ou=People,dc=example,dc=com&#8221;.</p>
<p>Finally we have the &#8220;cn=Luis&#8221; element. This is a person and it belongs to the <em>person</em> objectClass. Like I said before, the <em>person</em> objectClass force the element to set the <strong>cn</strong> and <strong>sn</strong> attributes. The <em>cn</em> value is &#8220;Luis&#8221; and the <em>sn</em> value is &#8220;Bosque&#8221;. We can choose any element attribute to make the RDN. We choosed the <em>cn</em> attribute, but could be also the <em>sn</em> attribute.<br />
So, this element RDN is &#8220;cn=Luis&#8221; and its DN is &#8220;cn=Luis,ou=People,dc=example,dc=com&#8221;.</p>
<p><strong>Important: </strong>We can&#8217;t have two elements in the tree with the same DN. So, in this specific case, we couldn&#8217;t have two people with the name &#8220;Luis&#8221;. It would be possible to have two people with the same attributes but their DN must be different. For example, we can call one of them <em>Luis</em> and the other <em>Luisico</em>.</p>
<p>We can see a bigger example of a LDAP directory tree. This is onle an example. I mean that you can use a LDAP directory to store any kind of information, not only people information. With the right schemas, you can use a directory to create any kind of data structure.</p>
<p><a href="http://blog.luisbosque.com/wp-content/uploads/2009/10/ldap_diagram.png"><img src="http://blog.luisbosque.com/wp-content/uploads/2009/10/ldap_diagram.png" alt="ldap_diagram" title="ldap_diagram" width="726" height="530" class="aligncenter size-full wp-image-330" style="border:none;"/></a></p>
<h2>LDAP Implementations</h2>
<p>There are a lot of servers implementing the LDAP protocol. <a href="http://www.openldap.org/">OpenLDAP</a>, <a href="http://en.wikipedia.org/wiki/Active_Directory">Active Directory</a>, <a href="http://www.sun.com/software/products/directory_srvr_ee/dir_srvr/index.xml">Sun ONE Directory Server</a>, <a href="http://www.novell.com/products/edirectory/">Novell Directory Server</a>, <a href="http://www.redhat.com/directory_server/">Red Hat Directory Server</a>, etc&#8230;</p>
<p>I already worked with some of them but I&#8217;m used to work with OpenLDAP, so, in the next posts I will focus on OpenLDAP.<br />
When you install OpenLDAP, in a Linux machine for example, it creates a simple BDB database with a few example data. S</p>
<h2>Database Backends</h2>
<p>There are also several available database backends to use with OpenLDAP like <a href="http://en.wikipedia.org/wiki/Berkeley_DB">BDB</a>, HDB, <a href="http://en.wikipedia.org/wiki/LDAP_Data_Interchange_Format">LDIF</a>, etc..<br />
When installing OpenLDAP, the server uses a BDB Database. It happens transparently to the user. So, the people that have just met LDAP don&#8217;t need to care about the difference between protocol and database. </p>
<p>Just install openldap and start working on it.</p>
<img src="http://feeds.feedburner.com/~r/luisbosque/~4/mPVS3S6bSyE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.luisbosque.com/2009/10/23/ldap-introduction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.luisbosque.com/2009/10/23/ldap-introduction/</feedburner:origLink></item>
		<item>
		<title>Curso de Sistemas Linux en The Cocktail</title>
		<link>http://feedproxy.google.com/~r/luisbosque/~3/n3hLCrO-EwM/</link>
		<comments>http://blog.luisbosque.com/2009/10/13/curso-de-sistemas-linux-en-the-cocktail/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 14:57:31 +0000</pubDate>
		<dc:creator>luis</dc:creator>
				<category><![CDATA[Madrid]]></category>
		<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[trabajo]]></category>
		<category><![CDATA[curso de sistemas]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[the cocktail]]></category>

		<guid isPermaLink="false">http://blog.luisbosque.com/?p=289</guid>
		<description><![CDATA[Voy a dar un curso de sistemas el viernes 16 por la tarde de 16 a 20 horas y el sábado 17 por la mañana de 10 a 14 horas. Va a ser en el aula de las oficinas de The Cocktail en la C/ Salamanca, 17, Madrid.
El curso va a cubrir todo el proceso [...]]]></description>
			<content:encoded><![CDATA[<p>Voy a dar un curso de sistemas el viernes 16 por la tarde de 16 a 20 horas y el sábado 17 por la mañana de 10 a 14 horas. Va a ser en el aula de las oficinas de <a href="http://www.the-cocktail.com">The Cocktail</a> en la C/ Salamanca, 17, Madrid.</p>
<p>El curso va a cubrir todo el proceso de puesta en marcha de una máquina con entorno Ruby on Rails en producción. Esto implica los siguientes puntos:<br />
* Instalación y configuración de Debian<br />
* Instalación del stack de Rails<br />
* Estrategias de Deploy<br />
* DNS<br />
* Securización del servidor<br />
* Backups<br />
* Monitorización<br />
* Configuración del servicio de mailing</p>
<p>Estos puntos implican tecnologías como Debian, SSH, DNS, Ruby, Rails, rubygems, rsync, Munin, Postfix, Apache, Passenger, MySQL, Iptables, Bash scripting, IDS, &#8230;</p>
<p>La idea es tratar todos estos puntos en cierta profundidad aunque intentando tocar lo justo de ficheros de configuración para no hacer aburrido el curso.</p>
<p>Voy a intentar que el curso sea para todos los niveles. Se tocarán diversos aspectos desde truquillos del día a día y conceptos básicos de todas las tecnologías hasta configuraciones complejas, de una forma más o menos gradual.<br />
A ver si lo conseguimos.</p>
<p>Si tenéis alguna sugerencia es el momento de decírmelo. Estoy totalmente abierto.</p>
<p>Los que os queráis apuntar decídmelo mandándome un email a &#8220;luis.bosque <strong>ARROBA</strong> the-cocktail <strong>PUNTO</strong> com&#8221;. Solo<br />
pido que los que os apuntéis sea porque tenéis claro que queréis asistir a este curso y no por apuntaros por que sí.<br />
Por desgracia hay límite de plazas, por lo que no puedo garantizar que haya sitio para todos.</p>
<img src="http://feeds.feedburner.com/~r/luisbosque/~4/n3hLCrO-EwM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.luisbosque.com/2009/10/13/curso-de-sistemas-linux-en-the-cocktail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.luisbosque.com/2009/10/13/curso-de-sistemas-linux-en-the-cocktail/</feedburner:origLink></item>
		<item>
		<title>wordpress.com, wordpress.org, redirections and LinkedIn</title>
		<link>http://feedproxy.google.com/~r/luisbosque/~3/mPwkdaRZxmE/</link>
		<comments>http://blog.luisbosque.com/2009/09/13/wordpress-com-wordpress-org-redirections-and-linkedin/#comments</comments>
		<pubDate>Sun, 13 Sep 2009 12:05:38 +0000</pubDate>
		<dc:creator>luis</dc:creator>
				<category><![CDATA[Ocio]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[301]]></category>
		<category><![CDATA[302]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[redirections]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.luisbosque.com/?p=280</guid>
		<description><![CDATA[I wanted to change my wordpress.com blog to a self-hosted wordpress blog.
This is the scenario:

My old blog is lbosque.wordpress.com.
My new blog is blog.luisbosque.com.
I would like to keep the indexed information in google, so people that open a old indexed post could actually access the information and not receive a 404 status.
Wordpress.com doesn&#8217;t offer the posibility [...]]]></description>
			<content:encoded><![CDATA[<p>I wanted to change my <a href="http://wordpress.com/">wordpress.com</a> blog to a self-hosted wordpress blog.<br />
This is the scenario:</p>
<ul>
<li>My old blog is lbosque.wordpress.com.</li>
<li>My new blog is blog.luisbosque.com.</li>
<li>I would like to keep the indexed information in google, so people that open a old indexed post could actually access the information and not receive a 404 status.</li>
<li>Wordpress.com doesn&#8217;t offer the posibility of add a 301 redirection in their system to put your blog outside of it, which is totally understandable.</li>
</ul>
<p>So, what I did, is this:</p>
<ul>
<li>I added an extra domain (blog.luisbosque.com) in my wordpress.com blog. This costs about 10$/year, which is not much money. What I can do with this, is to set the new domain as a primary domain, so when I try to open http://lbosque.wordpress.com, wordpress redirects the request to http://blog.luisbosque.com. Unfortunatelly this is a 302 Redirection which is not a good thing to Google indexing, but there is no choice.</li>
<li>Next, I installed the last wordpress.org version in my server and imported all the current blog information. Configured the webserver to use the blog.luisbosque.com domain.</li>
<li>The next step was to change the blog.luisbosque.com DNS zone to point to my new server instead of doing a CNAME to lbosque.wordpress.com. So now when someone try to open http://lbosque.wordpress.com, wordpress.org redirects it to http://blog.luisbosque.com that is actually hosted on my server. My old blog is still hosted in wordpress.com, but because the redirections is no more visible.</li>
</ul>
<p>So, now, I have to try to change all of my old blog references and wait to Google have indexed the most part of the new blog. Later, I&#8217;ll remove the lbosque.wordpress.com blog.</p>
<p>I found a problem when I changed the URL on the LinkedIn Wordpress plugin. Within this plugin, you have to enter your wordpress blog URL, and the plugin updates the LinkedIn application with the latest blog posts. This is great, but it has a problem when the domain you enter is in a external hosting, but it is also registered as a wordpress.com domain. The plugin tries to search this blog in the wordpress.com database, so if it finds it (in my case, it does it) it stops looking for it in their real server.<br />
The solution I figured out is to use an auxiliar domain, this way:</p>
<ul>
<li>I configure in my web server an auxiliar domain, for example blog.luisbosque.es. I configure it so when someone try to open http://blog.luisbosque.es the webserver do a 301 redirection to http://blog.luisbosque.com</li>
<li>I change the LinkedIn wordpress plugin blog URL to blog.luisbosque.es. This domain is not registered in the wordpress.com database so the plugin tries to fetch the feeds within my server, which actually redirects the request to the final domain blog.luisbosque.com</li>
</ul>
<p>The result is that the posts title that appears in the wordpress application within LinkedIn belong to the blog.luisbosque.com domain and not to the blog.luisbosque.es auxiliar domain.<br />
This is not the cleanest solution. It&#8217;s a bit tricky, but it works, which it&#8217;s enough for me.</p>
<p>Thanks to the fast and useful <a href="http://support.wordpress.com/contact/">wordpress support</a> answer, that helped me to figure out how to override this behaviour.</p>
<img src="http://feeds.feedburner.com/~r/luisbosque/~4/mPwkdaRZxmE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.luisbosque.com/2009/09/13/wordpress-com-wordpress-org-redirections-and-linkedin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.luisbosque.com/2009/09/13/wordpress-com-wordpress-org-redirections-and-linkedin/</feedburner:origLink></item>
		<item>
		<title>Oferta de Administrador de Sistemas Junior en The Cocktail</title>
		<link>http://feedproxy.google.com/~r/luisbosque/~3/EZkhP_K2hTk/</link>
		<comments>http://blog.luisbosque.com/2009/09/12/oferta-de-administrador-de-sistemas-junior-en-the-cocktail/#comments</comments>
		<pubDate>Sat, 12 Sep 2009 14:01:22 +0000</pubDate>
		<dc:creator>luis</dc:creator>
				<category><![CDATA[Madrid]]></category>
		<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[trabajo]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[oferta]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[the cocktail]]></category>

		<guid isPermaLink="false">http://blog.luisbosque.com/?p=274</guid>
		<description><![CDATA[The Cocktail es una consultora de internet, enfocada en la experiencia de usuario y diseño de producto, especialista en traducir objetivos de negocio en productos digitales innovadores, usables, atractivos y rentables.
Queremos incorporar a nuestro equipo de trabajo un Administrador de Sistemas Junior  con  experiencia en manejo de sistemas Linux, redes TCP/IP ,  [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://the-cocktail.com/">The Cocktail</a> es una consultora de internet, enfocada en la experiencia de usuario y diseño de producto, especialista en traducir objetivos de negocio en productos digitales innovadores, usables, atractivos y rentables.</p>
<p>Queremos incorporar a nuestro equipo de trabajo un Administrador de Sistemas Junior  con  experiencia en manejo de sistemas Linux, redes TCP/IP ,  y especialmente interés y compromiso por el open source. Realizará las siguientes tareas:</p>
<ul>
<li>Administración de servidores *nix &#8211; Particularmente Debian.</li>
<li>Instalación y despliegue de nuevos servidores en producción y en desarrollo. Compilación de software.</li>
<li>Monitorización y backups.</li>
<li>Configuración de routers, switches, firewalls y balanceadores de carga.</li>
<li>Mantenimiento de la red local, accesos remotos VPN y políticas de acceso a recursos.</li>
</ul>
<p>Los requisitos mínimos son:</p>
<ul>
<li>Experiencia administrando sistemas Linux.</li>
<li>Experiencia con Debian &#8211; GNU/Linux, MySQL, Apache.</li>
<li>Conocimientos sobre redes TCP/IP.</li>
<li>Interés y compromiso por el open source.</li>
<li>Facilidad para trabajar en equipo. Auto-disciplina y atención a los detalles. Iniciativa y proactividad.</li>
<li>Conocimiento e interés por Ruby On Rails y lenguajes de programación dinámicos.</li>
<li>Experiencia con varias de las siguientes tecnologías: Apache, MySQL, Bash, Ruby, Samba, Postfix, Nagios, Xen, Iptables, Subversion, Git, Rsync, LDAP</li>
</ul>
<p>Y por supuesto el mayor de los requisitos es que crea que es capaz de desempeñar este trabajo, teniendo en cuenta las responsabilidades arriba mencionadas.</p>
<p>El trabajo es de carácter presencial en las oficinas de Madrid en horario de jornada partida.</p>
<p>Si estás interesado, envía tu CV a: andrea.hidalgo <strong>ARROBA</strong> the-cocktail <strong>PUNTO</strong> com</p>
<img src="http://feeds.feedburner.com/~r/luisbosque/~4/EZkhP_K2hTk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.luisbosque.com/2009/09/12/oferta-de-administrador-de-sistemas-junior-en-the-cocktail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.luisbosque.com/2009/09/12/oferta-de-administrador-de-sistemas-junior-en-the-cocktail/</feedburner:origLink></item>
		<item>
		<title>Tagline en el tema journalist de wordpress</title>
		<link>http://feedproxy.google.com/~r/luisbosque/~3/-JVtQd-w34o/</link>
		<comments>http://blog.luisbosque.com/2009/09/06/tagline-en-el-tema-journalist-de-wordpress/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 11:19:34 +0000</pubDate>
		<dc:creator>luis</dc:creator>
				<category><![CDATA[programación]]></category>
		<category><![CDATA[journalist]]></category>
		<category><![CDATA[tagline]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.luisbosque.com/?p=255</guid>
		<description><![CDATA[He hecho un pequeñito cambio en el tema journalist de Lucian Marin, que es el que uso en este blog.
El cambio lo he aplicado a la última versión en la que, en la cabecera del tema, aparece un diálogo de fondo negro con el tagline del blog. Lo que he hecho es simplemente meterle un [...]]]></description>
			<content:encoded><![CDATA[<p>He hecho un pequeñito cambio en el tema <a href="http://lucianmarin.com/downloads/journalist.zip">journalist</a> de <a href="http://lucianmarin.com/">Lucian Marin</a>, que es el que uso en este blog.<br />
El cambio lo he aplicado a la última versión en la que, en la cabecera del tema, aparece un diálogo de fondo negro con el tagline del blog. Lo que he hecho es simplemente meterle un if para que no muestre el diálogo si el blog no tiene definido el tagline.</p>
<p>Este cambio hay que aplicárselo al header.php de dicho tema. A continuación pongo el <a href="http://blog.luisbosque.com/wp-content/uploads/2009/09/journalist_header.diff">diff</a> del fichero:</p>
<p><code>19c19,21<br />
&lt; &lt;div id="bubble"&gt;&lt;p&gt;&lt;?php bloginfo('description'); ?&gt;&lt;/p&gt;&lt;/div&gt; &lt;!-- erase this line if you want to turn the bubble off --&gt;<br />
---<br />
&gt; &lt;?php if (strlen(get_bloginfo('description')) &gt; 0) { ?&gt;<br />
&gt;   &lt;div id="bubble"&gt;&lt;p&gt;&lt;?php bloginfo('description'); ?&gt;&lt;/p&gt;&lt;/div&gt;<br />
&gt; &lt;?php } ?&gt;</code></p>
<img src="http://feeds.feedburner.com/~r/luisbosque/~4/-JVtQd-w34o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.luisbosque.com/2009/09/06/tagline-en-el-tema-journalist-de-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.luisbosque.com/2009/09/06/tagline-en-el-tema-journalist-de-wordpress/</feedburner:origLink></item>
		<item>
		<title>Cambio de dominio del blog</title>
		<link>http://feedproxy.google.com/~r/luisbosque/~3/C0gw9DL_BPc/</link>
		<comments>http://blog.luisbosque.com/2009/09/02/cambio-de-dominio-del-blog/#comments</comments>
		<pubDate>Wed, 02 Sep 2009 11:51:59 +0000</pubDate>
		<dc:creator>luis</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://lbosque.wordpress.com/?p=235</guid>
		<description><![CDATA[He decidido alojar mi blog en slicehost para poderle meter mano a algunas cosas que estando en wordpress.com no puedo tocar.
El primer paso es redirigir lbosque.wordpress.com a blog.luisbosque.com.
Luego importaré todos los datos de wordpress.com a el wordpress que tengo preparado en mi máquina.
Por último cambiaré la redirección para que apunte directamente a mi máquina.
Así que [...]]]></description>
			<content:encoded><![CDATA[<p>He decidido alojar mi blog en <a href="http://slicehost.com">slicehost</a> para poderle meter mano a algunas cosas que estando en wordpress.com no puedo tocar.</p>
<p>El primer paso es redirigir lbosque.wordpress.com a blog.luisbosque.com.<br />
Luego importaré todos los datos de wordpress.com a el wordpress que tengo preparado en mi máquina.<br />
Por último cambiaré la redirección para que apunte directamente a mi máquina.</p>
<p>Así que a partir de ahora si alguien quiere consultar este blog tendrá que hacerlo a través de http://blog.luisbosque.com</p>
<p>Lo malo es que la redirección que hace wordpress.com es una 302 por lo que probablemente me encontraré con algunos problemas de indexación en google.</p>
<img src="http://feeds.feedburner.com/~r/luisbosque/~4/C0gw9DL_BPc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.luisbosque.com/2009/09/02/cambio-de-dominio-del-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.luisbosque.com/2009/09/02/cambio-de-dominio-del-blog/</feedburner:origLink></item>
		<item>
		<title>Gráficas de uso de memoria de passenger con Munin</title>
		<link>http://feedproxy.google.com/~r/luisbosque/~3/KGuKW9B6lfA/</link>
		<comments>http://blog.luisbosque.com/2009/07/29/graficas-de-uso-de-memoria-de-passenger-con-munin/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 11:19:09 +0000</pubDate>
		<dc:creator>luis</dc:creator>
				<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[munin]]></category>
		<category><![CDATA[passenger]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://lbosque.wordpress.com/?p=230</guid>
		<description><![CDATA[Estaba instalando algunos plugins adicionales en el munin para monitorizar el estado de las peticiones que entran por Apache.
He encontrado uno para monitorizar el uso de memoria pero se ha quedado anticuado con respecto a ciertos cambios que ha sufrido la salida del comando passenger-memory-stats. Por lo tanto ya no sirve.
Basándome en dicho plugin y [...]]]></description>
			<content:encoded><![CDATA[<p>Estaba instalando algunos plugins adicionales en el munin para monitorizar el estado de las peticiones que entran por Apache.<br />
He encontrado <a href="http://muninexchange.projects.linpro.no/?view&amp;phid=595">uno</a> para monitorizar el uso de memoria pero se ha quedado anticuado con respecto a ciertos cambios que ha sufrido la salida del comando passenger-memory-stats. Por lo tanto ya no sirve.<br />
Basándome en dicho plugin y en <a href="http://gist.github.com/20319">este</a> otro, he hecho algunos cambios y el código resultante es el siguiente:</p>
<pre>
<code>
#!/usr/bin/env ruby

def output_config
  puts &lt;&lt;-END
graph_category Passenger
graph_title passenger memory stats
graph_vlabel megabytes

apache_memory.label apache_memory
passenger_memory.label passenger_memory
END
  exit 0
end

def output_values
  memory_stats_command = &#039;/usr/bin/passenger-memory-stats&#039;
  memory = {}

  apache_header = &quot;Apache processes&quot;
  passenger_header = &quot;Passenger processes&quot;
  nginx_header = &quot;Nginx processes&quot;
  section = nil

  `#{memory_stats_command}`.each_line do |line|
    if line.include?(apache_header)
      section = &quot;apache&quot;
    elsif line.include?(nginx_header)
      section = &quot;nginx&quot;
    elsif line.include?(passenger_header)
      section = &quot;passenger&quot;
    elsif /### Total private dirty RSS: (\d+\.\d+) MB/.match(line)
      memory[section] = $1
    else
      next
    end
  end

  puts &quot;apache_memory.value #{memory[&#039;apache&#039;]}&quot;
  puts &quot;passenger_memory.value #{memory[&#039;passenger&#039;]}&quot;
  #puts &quot;nginx_memory.value #{memory[&#039;nginx&#039;]}&quot;
end

if ARGV[0] == &quot;config&quot;
  output_config
else
  output_values
end
</code>
</pre>
<p>El plugin parsea los totales de memoria tanto de apache, como de nginx, como de apache passenger. En mi caso solo muestro los valores de apache y de passenger, pero si se quisiera mostrar los de nginx, bastaría con descomentar la linea:</p>
<p><code><br />
puts "nginx_memory.value #{memory['nginx']}"<br />
</code></p>
<img src="http://feeds.feedburner.com/~r/luisbosque/~4/KGuKW9B6lfA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.luisbosque.com/2009/07/29/graficas-de-uso-de-memoria-de-passenger-con-munin/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.luisbosque.com/2009/07/29/graficas-de-uso-de-memoria-de-passenger-con-munin/</feedburner:origLink></item>
		<item>
		<title>Diagrama de flujo de iptables</title>
		<link>http://feedproxy.google.com/~r/luisbosque/~3/lzYlRs9jZQI/</link>
		<comments>http://blog.luisbosque.com/2009/07/27/diagrama-de-flujo-de-iptables/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 21:47:37 +0000</pubDate>
		<dc:creator>luis</dc:creator>
				<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[diagrama de flujo]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[simple]]></category>

		<guid isPermaLink="false">http://lbosque.wordpress.com/?p=227</guid>
		<description><![CDATA[En varias ocasiones he necesitado tener un diagrama con el que de un vistazo pudiera ver claro el flujo de los paquetes a través de las diferentes cadenas de iptables.
El otro día me encontré con uno en un capítulo de linuxhomenetworking, que a pesar de no dar todos los detalles de cada paso, resulta totalmente [...]]]></description>
			<content:encoded><![CDATA[<p>En varias ocasiones he necesitado tener un diagrama con el que de un vistazo pudiera ver claro el flujo de los paquetes a través de las diferentes cadenas de iptables.<br />
El otro día me encontré con uno en un <a href="http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch14_:_Linux_Firewalls_Using_iptables">capítulo</a> de <a href="http://www.linuxhomenetworking.com/">linuxhomenetworking</a>, que a pesar de no dar todos los detalles de cada paso, resulta totalmente claro y fácil de entender.</p>
<p><img src="http://www.linuxhomenetworking.com/wiki/images/f/f0/Iptables.gif" alt="Diagrama de flujo de iptables" /></p>
<img src="http://feeds.feedburner.com/~r/luisbosque/~4/lzYlRs9jZQI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.luisbosque.com/2009/07/27/diagrama-de-flujo-de-iptables/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.luisbosque.com/2009/07/27/diagrama-de-flujo-de-iptables/</feedburner:origLink></item>
		<item>
		<title>Oferta de becario para el área de sistemas de The Cocktail</title>
		<link>http://feedproxy.google.com/~r/luisbosque/~3/QjNL9e96OvM/</link>
		<comments>http://blog.luisbosque.com/2009/06/18/oferta-de-becario-para-el-area-de-sistemas-de-the-cocktail-2/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 14:54:38 +0000</pubDate>
		<dc:creator>luis</dc:creator>
				<category><![CDATA[Madrid]]></category>
		<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[trabajo]]></category>
		<category><![CDATA[becario]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[oferta]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[tecnologia]]></category>
		<category><![CDATA[the cocktail]]></category>
		<category><![CDATA[trabajar]]></category>
		<category><![CDATA[trabajo  Tagged with aprender]]></category>
		<category><![CDATA[Trabalho]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://lbosque.wordpress.com/?p=221</guid>
		<description><![CDATA[En The Cocktail Experience, empresa dedicada a la consultoría web, estamos interesados en contratar becarios para el área de sistemas. Gente con muchas ganas de trabajar y aprender.
El perfil que estamos buscando es el siguiente:

Experiencia con sistemas GNU/Linux.
Conocimientos básicos de scripting
Conocimientos básicos de servidores web y servidores de bases de datos (por ejemplo MySQL, Apache&#8230;.)
Posibilidad [...]]]></description>
			<content:encoded><![CDATA[<p>En <a href="http://www.the-cocktail.com/">The Cocktail Experience</a>, empresa dedicada a la consultoría web, estamos interesados en contratar becarios para el área de sistemas. Gente con muchas ganas de trabajar y aprender.</p>
<p>El perfil que estamos buscando es el siguiente:</p>
<ul>
<li>Experiencia con sistemas GNU/Linux.</li>
<li>Conocimientos básicos de scripting</li>
<li>Conocimientos básicos de servidores web y servidores de bases de datos (por ejemplo MySQL, Apache&#8230;.)</li>
<li>Posibilidad de realizar convenio de prácticas</li>
</ul>
<p>Si estás interesado, envía tu CV a: andrea.hidalgo <em><strong>ARROBA</strong></em> the-cocktail <em><strong>PUNTO</strong></em> com</p>
<img src="http://feeds.feedburner.com/~r/luisbosque/~4/QjNL9e96OvM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.luisbosque.com/2009/06/18/oferta-de-becario-para-el-area-de-sistemas-de-the-cocktail-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.luisbosque.com/2009/06/18/oferta-de-becario-para-el-area-de-sistemas-de-the-cocktail-2/</feedburner:origLink></item>
	</channel>
</rss>
