<?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>v.codeweblog</title>
	
	<link>http://weblog.v-code.org</link>
	<description>Un blog de Victor Rodriguez</description>
	<lastBuildDate>Fri, 14 Aug 2009 09:33:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</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" href="http://feeds.feedburner.com/v-codeweblog" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>Validando Cif, Nif y Nie</title>
		<link>http://feedproxy.google.com/~r/v-codeweblog/~3/afHexQUVmzE/</link>
		<comments>http://weblog.v-code.org/2009/06/validando-cif-nif-y-nie/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 13:29:39 +0000</pubDate>
		<dc:creator>VictorR</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[tips & tricks]]></category>

		<guid isPermaLink="false">http://weblog.v-code.org/?p=292</guid>
		<description><![CDATA[Del proyecto en el que trabajo en la actualidad he &#8220;sacado&#8221; estas tres piezas de código. Nada fuera de lo común, pero que sin duda sirven y servirán para una parte de las pequeñas tareas que se realizan en cada proyecto. Esto es, validar datos.
Como todo el mundo sabe, para que una aplicación, web, cosa&#8230; [...]]]></description>
			<content:encoded><![CDATA[<p>Del proyecto en el que trabajo en la actualidad he &#8220;sacado&#8221; estas tres piezas de código. Nada fuera de lo común, pero que sin duda sirven y servirán para una parte de las pequeñas tareas que se realizan en cada proyecto. Esto es, validar datos.</p>
<p>Como todo el mundo sabe, para que una aplicación, web, cosa&#8230; funcione, debe mantener un conjunto discreto de datos (esto siempre me gustó de las clases de mates), información, de una manera poco ambigua. Y por eso es necesario validar la mayoría de datos que la aplicación, web, cosa&#8230; acepta.</p>
<p>Básicamente hay dos maneras de validar los datos, una es en el navegador del cliente, con tecnologías tipo javascript, y la otra es en el servidor, por ejemplo con java, php&#8230; Poco más queda decir a parte de que la manera más fácil de controlar los datos y más segura es validar los datos a nivel de servidor. Ya sabes, desactivas el javascripi y te quedas sin validar.</p>
<p>Sim embargo, lo que os traigo aquí es javascript, ¿por qué? Porque a modo de &#8220;repositorio&#8221; quiero guardar estas &#8220;perlas&#8221; para futuros trabajos y que sirva a otros <del datetime="2009-06-29T13:08:12+00:00">vagos</del> de ayuda.</p>
<p><strong>Validar CIF</strong></p>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;height:300px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">String.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">testCIF</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> pares <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> impares <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> suma<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> ultima<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> unumero<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> uletra <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Array<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;J&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;A&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;B&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;C&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;D&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;E&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;F&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;G&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;H&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;I&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> xxx<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; texto <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">toUpperCase</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> regular <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> RegExp<span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/^[ABCDEFGHKLMNPQS]\d{7}[0-9,A-J]$/g</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>regular.<span style="color: #660066;">exec</span><span style="color: #009900;">&#40;</span>texto<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; ultima <span style="color: #339933;">=</span> texto.<span style="color: #660066;">substr</span><span style="color: #009900;">&#40;</span>8<span style="color: #339933;">,</span>1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> cont <span style="color: #339933;">=</span> 1 <span style="color: #339933;">;</span> cont <span style="color: #339933;">&lt;</span> 7 <span style="color: #339933;">;</span> cont <span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; xxx <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #CC0000;">2</span> <span style="color: #339933;">*</span> parseInt<span style="color: #009900;">&#40;</span>texto.<span style="color: #660066;">substr</span><span style="color: #009900;">&#40;</span>cont<span style="color: #339933;">++,</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;0&quot;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; impares <span style="color: #339933;">+=</span> parseInt<span style="color: #009900;">&#40;</span>xxx.<span style="color: #660066;">substr</span><span style="color: #009900;">&#40;</span>0<span style="color: #339933;">,</span>1<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> parseInt<span style="color: #009900;">&#40;</span>xxx.<span style="color: #660066;">substr</span><span style="color: #009900;">&#40;</span>1<span style="color: #339933;">,</span>1<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; pares <span style="color: #339933;">+=</span> parseInt<span style="color: #009900;">&#40;</span>texto.<span style="color: #660066;">substr</span><span style="color: #009900;">&#40;</span>cont<span style="color: #339933;">,</span>1<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; xxx <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #CC0000;">2</span> <span style="color: #339933;">*</span> parseInt<span style="color: #009900;">&#40;</span>texto.<span style="color: #660066;">substr</span><span style="color: #009900;">&#40;</span>cont<span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;0&quot;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; impares <span style="color: #339933;">+=</span> parseInt<span style="color: #009900;">&#40;</span>xxx.<span style="color: #660066;">substr</span><span style="color: #009900;">&#40;</span>0<span style="color: #339933;">,</span>1<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> parseInt<span style="color: #009900;">&#40;</span>xxx.<span style="color: #660066;">substr</span><span style="color: #009900;">&#40;</span>1<span style="color: #339933;">,</span>1<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; suma <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>pares <span style="color: #339933;">+</span> impares<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; unumero <span style="color: #339933;">=</span> parseInt<span style="color: #009900;">&#40;</span>suma.<span style="color: #660066;">substr</span><span style="color: #009900;">&#40;</span>suma.<span style="color: #660066;">length</span> <span style="color: #339933;">-</span> 1<span style="color: #339933;">,</span> 1<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; unumero <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>10 <span style="color: #339933;">-</span> unumero<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>unumero <span style="color: #339933;">==</span> 10<span style="color: #009900;">&#41;</span> unumero <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>ultima <span style="color: #339933;">==</span> unumero<span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> <span style="color: #009900;">&#40;</span>ultima <span style="color: #339933;">==</span> uletra<span style="color: #009900;">&#91;</span>unumero<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
<p><strong>Validar DNI</strong></p>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">String.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">testDNI</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; dni <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">toUpperCase</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; numero <span style="color: #339933;">=</span> dni.<span style="color: #660066;">substr</span><span style="color: #009900;">&#40;</span>0<span style="color: #339933;">,</span>dni.<span style="color: #660066;">length</span><span style="color: #339933;">-</span>1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; let <span style="color: #339933;">=</span> dni.<span style="color: #660066;">substr</span><span style="color: #009900;">&#40;</span>dni.<span style="color: #660066;">length</span><span style="color: #339933;">-</span>1<span style="color: #339933;">,</span>1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; let <span style="color: #339933;">=</span> let.<span style="color: #660066;">toUpperCase</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; numero <span style="color: #339933;">=</span> numero <span style="color: #339933;">%</span> <span style="color: #CC0000;">23</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; letra <span style="color: #339933;">=</span> <span style="color: #3366CC;">'TRWAGMYFPDXBNJZSQVHLCKET'</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; lletra <span style="color: #339933;">=</span> letra.<span style="color: #660066;">charAt</span><span style="color: #009900;">&#40;</span>numero<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #009900;">&#40;</span>lletra <span style="color: #339933;">==</span> let<span style="color: #009900;">&#41;</span> <br />
<span style="color: #009900;">&#125;</span></div></div>
<p><strong>Validar NIE</strong></p>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">String.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">testNIE</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> dni <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">toUpperCase</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> pre <span style="color: #339933;">=</span> dni.<span style="color: #660066;">substr</span><span style="color: #009900;">&#40;</span>0<span style="color: #339933;">,</span> 1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> prev <span style="color: #339933;">=</span> <span style="color: #3366CC;">'0'</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>pre <span style="color: #339933;">==</span> <span style="color: #3366CC;">'X'</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;prev <span style="color: #339933;">=</span> <span style="color: #3366CC;">'0'</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>pre <span style="color: #339933;">==</span> <span style="color: #3366CC;">'Y'</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;prev <span style="color: #339933;">=</span> <span style="color: #3366CC;">'1'</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>pre <span style="color: #339933;">==</span> <span style="color: #3366CC;">'Z'</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;prev <span style="color: #339933;">=</span> <span style="color: #3366CC;">'2'</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; numero <span style="color: #339933;">=</span> prev <span style="color: #339933;">+</span> dni.<span style="color: #660066;">substr</span><span style="color: #009900;">&#40;</span>1<span style="color: #339933;">,</span>dni.<span style="color: #660066;">length</span><span style="color: #339933;">-</span>1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> numero.<span style="color: #660066;">testDNI</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<span style="color: #009900;">&#125;</span></div></div>
<p>Si os dáis cuenta, las funciones extienden la clase String de javascript, esto es simplemente para que sea más facil de utilizar y lo más &#8220;orientado&#8221; a objetos posible.</p>
<p><strong>Ejemplo de USO</strong></p>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #006600; font-style: italic;">// validación de un DNI</span><br />
<span style="color: #3366CC;">&quot;74185296S&quot;</span>.<span style="color: #660066;">testDNI</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp; &nbsp; &nbsp;<span style="color: #006600; font-style: italic;">// value: true</span></div></div>
<p><strong>NOTA:</strong> que quede claro que el código no me lo he inventado yo, lo he adaptado de los recursos que se pueden encontrar en la inmensidad de internet. Lo que pasa es que no recuerdo de dónde los saqué, ni si lo saqué yo, y no puedo poner la retribución que se merece el autor/es de dichos scripts.</p>
<img src="http://feeds.feedburner.com/~r/v-codeweblog/~4/afHexQUVmzE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://weblog.v-code.org/2009/06/validando-cif-nif-y-nie/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://weblog.v-code.org/2009/06/validando-cif-nif-y-nie/</feedburner:origLink></item>
		<item>
		<title>Definiendo entornos con Maven</title>
		<link>http://feedproxy.google.com/~r/v-codeweblog/~3/tmZocBQ2kyk/</link>
		<comments>http://weblog.v-code.org/2009/06/definiendo-entornos-con-maven/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 08:05:11 +0000</pubDate>
		<dc:creator>VictorR</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[tips & tricks]]></category>

		<guid isPermaLink="false">http://weblog.v-code.org/?p=258</guid>
		<description><![CDATA[Una pregunta, ¿qué pasa cuando quieres desplegar tu aplicación en diferentes entornos? Lo normal es que estos entornos no sean iguales, aunque es lo aconsejable. Lo normal es que no acaben de tener la misma configuración, por ejemplo el nivel de logs (debug para desarrollo, error para producción&#8230;). Lo normal, vaya, es que tengas que [...]]]></description>
			<content:encoded><![CDATA[<p>Una pregunta, ¿qué pasa cuando quieres desplegar tu aplicación en diferentes entornos? Lo normal es que estos entornos no sean iguales, aunque es lo aconsejable. Lo normal es que no acaben de tener la misma configuración, por ejemplo el nivel de logs (debug para desarrollo, error para producción&#8230;). Lo normal, vaya, es que tengas que controlar la configuración para cada entorno por separado. Frameworks como Ruby on Rails, o Symfony ya vienen con esta idea de tener entornos diferentes, con configuración diferente y propiedades diferentes, pero en Java te lo tienes que &#8220;currar&#8221; un poco más.</p>
<p>Ahora bien, tienes dos opciones, o lo haces a &#8220;manija&#8221; o te lo curras con algún sistema automatizado para cambiar estas configuraciones. Y es aquí donde viene que ni pintado <a href="http://es.wikipedia.org/wiki/Maven" title="Pedazo de invento el Maven!">Maven</a>, en particular los <a href="http://maven.apache.org/guides/introduction/introduction-to-profiles.html" title="Profiles de Maven">Profiles de Maven</a>. Y es que:</p>
<blockquote><p>Profiles are specified using a subset of the elements available in the POM itself (plus one extra section), and are triggered in any of a variety of ways. They modify the POM at build time, and are meant to be used in complementary sets to give equivalent-but-different parameters for a set of target environments (providing, for example, the path of the appserver root in the development, testing, and production environments). As such, profiles can easily lead to differing build results from different members of your team.</p></blockquote>
<p>Aquí un simple ejemplo de que cómo especificar diferentes recursos a maven según el entorno:</p>
<div class="codecolorer-container xml default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><br /><strong>GeSHi Error:</strong> GeSHi could not find the language  (using path /usr/home/v-code.org/web/blog/wp-content/plugins/codecolorer/lib/geshi/) (code 2)<br /></div>
<div class="codecolorer-container xml default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><br /><strong>GeSHi Error:</strong> GeSHi could not find the language  (using path /usr/home/v-code.org/web/blog/wp-content/plugins/codecolorer/lib/geshi/) (code 2)<br /></div>
<p>El ejemplo es sencillo, especifica las carpetas de los resources del proyecto para los entornos de desarrollo y de test. Ahora lo que se necesita para activarlo es ejecutar Maven pasando como parámetro <strong>-Denv=dev</strong> o <strong>-Denv=test</strong>. Hay otras maneras de activar los Profiles. Puede depender del sistema operativo donde estés compilando el proyecto, si existen o dejan de existir diferentes archivos (también dependiendo del entorno en el que te encuentres)&#8230; Lo importante de la configuración es saber que en el tag activation es dónde y cómo se activan los profiles.</p>
<div class="codecolorer-container xml default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><br /><strong>GeSHi Error:</strong> GeSHi could not find the language  (using path /usr/home/v-code.org/web/blog/wp-content/plugins/codecolorer/lib/geshi/) (code 2)<br /></div>
<p>Con este código estamos diciendo que cuando se compile el proyecto, si existe una variable llamada env con valor test pasada como parámetro, el Profile se active. No es muy dificil&#8230; Así, si queremos compilar el proyecto en el entorno de desarrollo (-Denv=dev) la llamada sería:</p>
<div class="codecolorer-container  default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><br /><strong>GeSHi Error:</strong> GeSHi could not find the language  (using path /usr/home/v-code.org/web/blog/wp-content/plugins/codecolorer/lib/geshi/) (code 2)<br /></div>
<p>Bueno, esto sólo ha sido un ejemplo básico, no dejéis de revisar la documentación del <a href="http://maven.apache.org/pom.html" title="POM Reference">POM de Maven</a> para obtener más información y profundizar más en el tema.</p>
<img src="http://feeds.feedburner.com/~r/v-codeweblog/~4/tmZocBQ2kyk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://weblog.v-code.org/2009/06/definiendo-entornos-con-maven/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://weblog.v-code.org/2009/06/definiendo-entornos-con-maven/</feedburner:origLink></item>
		<item>
		<title>Con la camiseta al trabajo!</title>
		<link>http://feedproxy.google.com/~r/v-codeweblog/~3/Y3555nZdB2A/</link>
		<comments>http://weblog.v-code.org/2009/05/con-la-camiseta-al-trabajo/#comments</comments>
		<pubDate>Wed, 06 May 2009 22:33:59 +0000</pubDate>
		<dc:creator>VictorR</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Barça]]></category>

		<guid isPermaLink="false">http://weblog.v-code.org/?p=254</guid>
		<description><![CDATA[Con la camiseta del Barça. Mañana toca ir al trabajo con la camiseta del Barça, y es que después de ver cómo el Barça gana 2-6 al Madrizzz y elimina de la Champions al Chelsea en el minuto 93 jugando con uno menos, cuando todo estaba perdido, no se puede hacer otra cosa&#8230; 
VISCA EL [...]]]></description>
			<content:encoded><![CDATA[<p>Con la camiseta del Barça. Mañana toca ir al trabajo con la camiseta del Barça, y es que después de ver cómo el Barça gana 2-6 al Madrizzz y elimina de la Champions al Chelsea en el minuto 93 jugando con uno menos, cuando todo estaba perdido, no se puede hacer otra cosa&#8230; </p>
<p>VISCA EL BARÇA i VISCA LO PUTO GUSILUZ!</p>
<img src="http://feeds.feedburner.com/~r/v-codeweblog/~4/Y3555nZdB2A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://weblog.v-code.org/2009/05/con-la-camiseta-al-trabajo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://weblog.v-code.org/2009/05/con-la-camiseta-al-trabajo/</feedburner:origLink></item>
		<item>
		<title>EuRuKo 2009!</title>
		<link>http://feedproxy.google.com/~r/v-codeweblog/~3/t0hw5UcB0lc/</link>
		<comments>http://weblog.v-code.org/2009/05/euruko-2009/#comments</comments>
		<pubDate>Mon, 04 May 2009 10:56:20 +0000</pubDate>
		<dc:creator>VictorR</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[EuRuKo]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://weblog.v-code.org/?p=244</guid>
		<description><![CDATA[Sorpresa la que me he llevado esta mañana al ver que voy al EuRuKo 2009. Y es que gracias a Linking Paths, que patrocinan el evento, he conseguido una entrada. Muchísimas gracias.

Vale, tenía el 50% de posibilidades de que me tocara la entrada, pero siempre hace ilusión que te toquen estas cosas y si, además, [...]]]></description>
			<content:encoded><![CDATA[<p>Sorpresa la que me he llevado esta mañana al ver que voy al EuRuKo 2009. Y es que gracias a <a href="http://www.linkingpaths.com">Linking Paths</a>, que <a href="http://weblog.linkingpaths.com/2009/03/12/euruko-2009/">patrocinan el evento</a>, he conseguido una entrada. Muchísimas gracias.</p>
<p><a href="http://app.euruko2009.org/"><img class="size-full wp-image-246 aligncenter" title="euruko2009" src="http://www.v-code.org/images/euruko2009.png" alt="EuRuKo 2009" width="580" height="28" /></a></p>
<p>Vale, tenía el 50% de posibilidades de que me tocara la entrada, pero siempre hace ilusión que te toquen estas cosas y si, además, es para aprender pues genial. Y es que EuRuKo es</p>
<blockquote><p> EuRuKo is an annual conference about the Ruby programming language with an informal atmosphere and lots of opportunities to listen, to talk, to hack and to have fun. This year takes place on Barcelona, Spain, the days 9th and 10th of May. </p></blockquote>
<p>Por cierto, esto para Aitor &#038; company de Linking Paths, la primera ronda la pago yo.</p>
<p>Aupa!</p>
<img src="http://feeds.feedburner.com/~r/v-codeweblog/~4/t0hw5UcB0lc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://weblog.v-code.org/2009/05/euruko-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://weblog.v-code.org/2009/05/euruko-2009/</feedburner:origLink></item>
		<item>
		<title>Setting the php.ini MAMP file as default on OSX</title>
		<link>http://feedproxy.google.com/~r/v-codeweblog/~3/OZyqEZ3rFnI/</link>
		<comments>http://weblog.v-code.org/2009/03/setting-the-phpini-mamp-file-as-default-on-osx/#comments</comments>
		<pubDate>Thu, 05 Mar 2009 21:02:51 +0000</pubDate>
		<dc:creator>VictorR</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Soluciones]]></category>
		<category><![CDATA[tips & tricks]]></category>

		<guid isPermaLink="false">http://weblog.v-code.org/?p=161</guid>
		<description><![CDATA[Hace poco, muy poco, que sigo el tutorial Jobeet para aprender a utilizar Symfony y así hacer subir mi geek power. Desde aquí, lo recomiendo firmemente.
Bien, primer hecho, para el correcto/buen uso de este framework, es necesario tirar de Terminal (en mi caso OSX, cmd en Win) y ejecutar comandos para crear, generar, modificar, cargar [...]]]></description>
			<content:encoded><![CDATA[<p>Hace poco, muy poco, que sigo el tutorial <a href="http://www.symfony-project.org/jobeet/1_2/Doctrine/en" target="_blank">Jobeet</a> para aprender a utilizar <a href="http://www.symfony-project.org/" target="_blank">Symfony</a> y así hacer subir mi geek power. Desde aquí, lo recomiendo firmemente.</p>
<p>Bien, primer hecho, para el correcto/buen uso de este <a href="http://en.wikipedia.org/wiki/Software_framework">framework</a>, es necesario tirar de <a href="http://en.wikipedia.org/wiki/Apple_Terminal">Terminal</a> (en mi caso OSX, cmd en Win) y ejecutar comandos para crear, generar, modificar, cargar el proyecto/aplicación/base de datos&#8230; Symfony está implementado con <a href="http://www.php.net/">PHP 5</a> por ser un framework orientado a objetos (creo recordar que como requerimiento es necesario la versión 5.2). Y muchos de esos comandos ejecutados desde el Terminal, son precisamente scripts de PHP.</p>
<p>Segundo hecho. Mac OS X, por lo menos en su última versión, 10.5 (Leopard) tiene configurado ya una versión de PHP.</p>
<p>Tercer hecho. Yo que soy un poco gandul, decidí bajar, antes de ponerme a configurar nada a mano, la versión gratuita de <a href="http://www.mamp.info/">MAMP</a> (<strong>M</strong>ac OSX, <strong>A</strong>pache, <strong>M</strong>ySQL, <strong>P</strong>HP).</p>
<p>Problema. A partir de ahí, los 3 hechos anteriores, ya te puedes poner como un loco a tocar la configuración del php del MAMP, que la versión que utilices por línea de comando o Terminal en tu Mac, es la preinstalada. De esto me di cuenta cuando revisando la configuración en MAMP, y revisando la configuración por el Terminal, habían sustanciales diferencias entre ambas versiones.</p>
<p>Después de probar y acceder a los scripts de php por el terminal, y preguntarme dónde está esta preinstalada versión, y ver que ni siquiera había un php.ini configurado intenté modificar los ficheros de configuración de la versión preinstalada para que apuntaran al php.ini del MAMP.</p>
<p>Bien, si por el Terminal pruebas el siguiente comando:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ php <span style="color: #339933;">--</span>ini</div></div>
<p>debería aparecer la información sobre dónde encontrar el fichero php.ini (Path /etc), y dónde busca nuevos ficheros equivalentes para su uso. En mi caso, todos los resultados eran &#8220;(none)&#8221;. Así que ni corto ni perezoso (pero si gandul), voy al directorio /etc y le hecho un vistazo. Aquí, aparte de muchos ficheros de configuración encontré un php.ini.default (por si no lo sabes, lo puedes renombrar quitando el .default final y sería el fichero utilizado). Pero como he dicho antes, este no es el php.ini que quiero usar.</p>
<p>Así que mi solución ha sido la de crear un <a href="http://en.wikipedia.org/wiki/Symbolic_link">link</a> al php.ini de MAMP, en mi caso en /Applications/MAMP/conf/php5/php.ini.</p>
<p>Atención, necesitarás permisos de root (o super usuario) para poder crearlo, si lo quieres activar puedes hacerlo como indico aquí <a href="http://weblog.v-code.org/activar-el-super-usuario-su-en-os-x/">Activar el Super Usuario en OS X</a>.</p>
<p>Y luego ejecutar (siempre dentro de /etc):</p>
<div class="codecolorer-container html4strict default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ sudo ln -s /Applications/MAMP/conf/php5/php.ini php.ini</div></div>
<p>Sólo debes introducir el password de super usuario y listo. Al volver a ejecutar el comando php &#8211;ini debería aparecer algo parecido a esto.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://www.v-code.org/images/php_ini.png" alt="php --ini" width="593" height="280" /></p>
<p>¡Pedazo de invento los links! Aquí podemos ver que &#8220;Loaded Configuration File&#8221; es /Applications/MAMP/conf/php5/php.ini, es decir, el fichero php.ini del MAMP.</p>
<img src="http://feeds.feedburner.com/~r/v-codeweblog/~4/OZyqEZ3rFnI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://weblog.v-code.org/2009/03/setting-the-phpini-mamp-file-as-default-on-osx/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://weblog.v-code.org/2009/03/setting-the-phpini-mamp-file-as-default-on-osx/</feedburner:origLink></item>
		<item>
		<title>Actualizando a jQuery 1.3 y su evento live</title>
		<link>http://feedproxy.google.com/~r/v-codeweblog/~3/bbLlHeHT0Oc/</link>
		<comments>http://weblog.v-code.org/2009/02/actualizando-a-jquery-13-y-su-evento-live/#comments</comments>
		<pubDate>Sun, 08 Feb 2009 21:30:48 +0000</pubDate>
		<dc:creator>VictorR</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Soluciones]]></category>

		<guid isPermaLink="false">http://weblog.v-code.org/?p=156</guid>
		<description><![CDATA[Acabo de actualizar la libreria de javascript jQuery a su última versión 1.3. A parte de que mejora su rendimiento esta versión, la principal razón para la actualización ha sido ver en persona el funcionamiento del nuevo evento &#8220;live&#8220;. Y es que:
Binds a handler to an event (like click) for all current &#8211; and future [...]]]></description>
			<content:encoded><![CDATA[<p>Acabo de actualizar la libreria de javascript <a href="http://jquery.com/">jQuery</a> a su última versión 1.3. A parte de que mejora su rendimiento esta versión, la principal razón para la actualización ha sido ver en persona el funcionamiento del nuevo evento &#8220;<a href="http://docs.jquery.com/Events/live">live</a>&#8220;. Y es que:</p>
<blockquote><p>Binds a handler to an event (like click) for all current &#8211; and future &#8211; matched element.</p></blockquote>
<p>Traducción &#8220;libre&#8221;: cada vez que cree un elemento que coincida con un selector determinado, a este también se le asignaran los eventos deseados sin tener que hacer la misma llamada una y otra vez.</p>
<img src="http://feeds.feedburner.com/~r/v-codeweblog/~4/bbLlHeHT0Oc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://weblog.v-code.org/2009/02/actualizando-a-jquery-13-y-su-evento-live/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://weblog.v-code.org/2009/02/actualizando-a-jquery-13-y-su-evento-live/</feedburner:origLink></item>
		<item>
		<title>El Triángulo Imposible</title>
		<link>http://feedproxy.google.com/~r/v-codeweblog/~3/c3UcSYrNEPE/</link>
		<comments>http://weblog.v-code.org/2008/12/el-triangulo-imposible/#comments</comments>
		<pubDate>Sun, 28 Dec 2008 17:21:10 +0000</pubDate>
		<dc:creator>VictorR</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[problemas]]></category>
		<category><![CDATA[Proyectos]]></category>
		<category><![CDATA[Soluciones]]></category>

		<guid isPermaLink="false">http://weblog.v-code.org/?p=142</guid>
		<description><![CDATA[
Hace algunos años, cuando en una empresa, cuyo nombre no quiero recordar, estaba en pleno proceso de formación, aprendí lo que era el triángulo imposible. Algo que parece tan obvio y tan evidente como que las cosas se tienen que hacer bien, no lo es tanto a ojos de un cliente obsesionado con el tiempo [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="Triángulo Imposible" src="http://www.v-code.org/images/trianguloImposible.jpg" alt="" width="300" height="177" /></p>
<p>Hace algunos años, cuando en una empresa, cuyo nombre no quiero recordar, estaba en pleno proceso de formación, aprendí lo que era el triángulo imposible. Algo que parece tan obvio y tan evidente como que las cosas se tienen que hacer bien, no lo es tanto a ojos de un cliente obsesionado con el tiempo y la fecha de &#8220;entrega&#8221; del proyecto. Lo digo por experiencia.</p>
<p>Según el triángulo imposible puedes seleccionar sólo 2 de sus 3 opciones, es decir 2 de sus 3 vértices. Estas opciones son dinero, calidad y tiempo.</p>
<p>Y las combinaciones posibles son las siguientes:</p>
<p>Si seleccionas que el producto sea <strong>bueno</strong> y <strong>barato</strong> el proceso de desarrollo <strong>no</strong> puede ser <strong>rápido</strong>.<br />
Si seleccionas <strong>bueno</strong> y <strong>rápido</strong> <strong>no</strong> puede ser <strong>barato</strong>.<br />
Y si seleccionas <strong>rápido</strong> y <strong>barato</strong> <strong>no</strong> puede ser <strong>bueno</strong>.</p>
<p><strong>Por favor, no elijas la última! nunca!</strong></p>
<img src="http://feeds.feedburner.com/~r/v-codeweblog/~4/c3UcSYrNEPE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://weblog.v-code.org/2008/12/el-triangulo-imposible/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://weblog.v-code.org/2008/12/el-triangulo-imposible/</feedburner:origLink></item>
		<item>
		<title>Changing login window background image on Leopard</title>
		<link>http://feedproxy.google.com/~r/v-codeweblog/~3/r1OoQWymbfM/</link>
		<comments>http://weblog.v-code.org/2008/12/changing-login-window-background-image-on-leopard/#comments</comments>
		<pubDate>Mon, 08 Dec 2008 22:26:49 +0000</pubDate>
		<dc:creator>VictorR</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Leopard]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[tips & tricks]]></category>

		<guid isPermaLink="false">http://weblog.v-code.org/?p=134</guid>
		<description><![CDATA[Personalmente, no recuerdo casi nada de Apple (y estoy hablando de diseño) que no me guste. Bueno, he dicho casi nada porque la imagen de la pantalla de login en Leopard es terrible&#8230; Esa especie de ¿nebulosa? con esos colores no me gusta nada. Y googleando el otro día encontré la manera de cambiarla.
Es sencillo, [...]]]></description>
			<content:encoded><![CDATA[<p>Personalmente, no recuerdo casi nada de <a title="Apple" href="http://www.apple.com">Apple</a> (y estoy hablando de diseño) que no me guste. Bueno, he dicho casi nada porque la imagen de la pantalla de login en Leopard es terrible&#8230; Esa especie de ¿nebulosa? con esos colores no me gusta nada. Y <a title="Googling" href="http://en.wikipedia.org/wiki/Googling">googleando</a> el otro día <a title="Relpace the Leopard's login screen background!!" href="http://www.flickr.com/photos/fhke/1783114316/">encontré</a> la manera de cambiarla.</p>
<p>Es sencillo, sólo hay que reemplazar la siguiente imágen por la que quieras.</p>
<p>/System/Library/CoreServices/DefaultDesktop.jpg</p>
<p>Eso sí, para reemplazarla tienes que tener privilegios de <a title="Activar el super usuario (su) en os x" href="http://weblog.v-code.org/activar-el-super-usuario-su-en-os-x/trackback/">super usuario</a>, si no malo.</p>
<p>Yo ya me la he cambiado.</p>
<img src="http://feeds.feedburner.com/~r/v-codeweblog/~4/r1OoQWymbfM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://weblog.v-code.org/2008/12/changing-login-window-background-image-on-leopard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://weblog.v-code.org/2008/12/changing-login-window-background-image-on-leopard/</feedburner:origLink></item>
		<item>
		<title>Let me google that for you</title>
		<link>http://feedproxy.google.com/~r/v-codeweblog/~3/1yb1Ad8kOwo/</link>
		<comments>http://weblog.v-code.org/2008/12/let-me-google-that-for-you/#comments</comments>
		<pubDate>Thu, 04 Dec 2008 19:56:23 +0000</pubDate>
		<dc:creator>VictorR</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[RTFM]]></category>
		<category><![CDATA[Soluciones]]></category>

		<guid isPermaLink="false">http://weblog.v-code.org/?p=132</guid>
		<description><![CDATA[¿Alguna vez has tenido las terribles ganas de gritar &#8220;MIRALO EN GOOGLE!&#8221;, te has sentido &#8220;el típico informatico, arregla vídeos y que lo sabe todo&#8221;? Yo sí, y el otro día me llegó la solución vía e-mail. Una solución que te permite enseñar al inutil a tu amigo cómo utilizar &#8220;el Oráculo&#8221;.
Una prueba, pregúntale a [...]]]></description>
			<content:encoded><![CDATA[<p>¿Alguna vez has tenido las terribles ganas de gritar &#8220;MIRALO EN GOOGLE!&#8221;, te has sentido &#8220;el típico informatico, arregla vídeos y que lo sabe todo&#8221;? Yo sí, y el otro día me llegó la solución vía e-mail. Una solución que te permite enseñar <span style="text-decoration: line-through;">al inutil</span> a tu amigo cómo utilizar &#8220;el Oráculo&#8221;.</p>
<p>Una prueba, pregúntale a google <a href="http://letmegooglethatforyou.com/?q=%C2%BFD%C3%B3nde+est%C3%A1+Barcelona%3F">&#8220;¿Dónde está Barcelona?&#8221;</a>. El milagro es de <a href="http://letmegooglethatforyou.com/">Let me Google that for You</a>, una manera &#8220;poco discreta&#8221; del término <a href="http://es.wikipedia.org/wiki/RTFM">RTFM</a>.</p>
<p>Yo ya tengo pensadas unas cuantas personas a las que enviarles el enlace, a ver si aprenden de una vez&#8230;</p>
<img src="http://feeds.feedburner.com/~r/v-codeweblog/~4/1yb1Ad8kOwo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://weblog.v-code.org/2008/12/let-me-google-that-for-you/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://weblog.v-code.org/2008/12/let-me-google-that-for-you/</feedburner:origLink></item>
		<item>
		<title>Personaliza los newsletters, a mi me ha gustado!</title>
		<link>http://feedproxy.google.com/~r/v-codeweblog/~3/K8abBDfnHfA/</link>
		<comments>http://weblog.v-code.org/2008/11/personaliza-los-newsletters/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 22:21:43 +0000</pubDate>
		<dc:creator>VictorR</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[clientes]]></category>
		<category><![CDATA[feedback]]></category>
		<category><![CDATA[newsletter]]></category>

		<guid isPermaLink="false">http://weblog.v-code.org/?p=129</guid>
		<description><![CDATA[¿Alguna vez has recibido un newsletter? ¿Y que no tenga ninguna imagen?
Normalmente los newsletters hacen publicidad de lo &#8220;bueno que somos&#8221; y &#8220;lo bonito que hacemos todo, mira, mira!!&#8221; (y con oferta! que me las quitan de las manos señora!). Hoy he recibido uno, pero no de esos. Un simple e-mail. Preocupándose por lo que [...]]]></description>
			<content:encoded><![CDATA[<p>¿Alguna vez has recibido un newsletter? ¿Y que no tenga ninguna imagen?</p>
<p>Normalmente los newsletters hacen publicidad de lo &#8220;bueno que somos&#8221; y &#8220;lo bonito que hacemos todo, mira, mira!!&#8221; (y con oferta! que me las quitan de las manos señora!). Hoy he recibido uno, pero no de esos. Un simple e-mail. Preocupándose por lo que yo pensaba. De un producto, sí. Pero un producto en &#8220;evaluación&#8221; y que sigo &#8220;evaluando&#8221;.</p>
<p><img class="aligncenter" title="Newsletter" src="http://www.v-code.org/images/newsletter.png" alt="" width="355" height="298" /></p>
<p>Sinceramente, me ha hecho sentir bien. &#8220;Me ha escrito&#8221; una persona real, ofreciéndome (a mi) su ayuda y preguntándome (a mi) qué tal va el programa utilizado. Y casi sin quererlo, al final ves que es un newsletter cuando te informa que puedes dejar de recibir más información accediendo a una url (como todos los demás).</p>
<p>Cuidar a los clientes es bueno, y muchas veces cuesta poco, tan poco como un newsletter.</p>
<img src="http://feeds.feedburner.com/~r/v-codeweblog/~4/K8abBDfnHfA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://weblog.v-code.org/2008/11/personaliza-los-newsletters/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://weblog.v-code.org/2008/11/personaliza-los-newsletters/</feedburner:origLink></item>
	</channel>
</rss>
