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

<channel>
	<title>v.codeweblog &#187; tips &amp; tricks</title>
	<atom:link href="http://weblog.v-code.org/tag/tips-tricks/feed/" rel="self" type="application/rss+xml" />
	<link>http://weblog.v-code.org</link>
	<description>Blog personal de Victor Rodriguez sobre programación y mis aficiones</description>
	<lastBuildDate>Thu, 20 May 2010 11:42:51 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>XSD to Java o cómo crear un WebService a partir de schemas</title>
		<link>http://weblog.v-code.org/2010/03/xsd-to-java-o-como-crear-un-webservice-a-partir-de-schemas/</link>
		<comments>http://weblog.v-code.org/2010/03/xsd-to-java-o-como-crear-un-webservice-a-partir-de-schemas/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 15:49:10 +0000</pubDate>
		<dc:creator>VictorR</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Soluciones]]></category>
		<category><![CDATA[tips & tricks]]></category>
		<category><![CDATA[tutoriales]]></category>
		<category><![CDATA[util]]></category>
		<category><![CDATA[Web Services]]></category>

		<guid isPermaLink="false">http://weblog.v-code.org/?p=335</guid>
		<description><![CDATA[Hoy un post &#8220;tecky&#8221;. Pero esta vez, y recordando lo que yo mismo predico, sólo va a ser una referencia a otro blog.
Llevo unos días peleándome con la creación de un web service. En concreto, tengo el schema que debe seguir, pero no tengo el WSDL. Bien, tras mucho buscar, he encontrado la manera de [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy un post &#8220;tecky&#8221;. Pero esta vez, y recordando lo que <a href="http://weblog.v-code.org/2008/10/dont-copy-please/" alt="Don't Copy, please!">yo mismo predico</a>, sólo va a ser una referencia a otro <a href="http://jubyvictor.blogspot.com/" alt="Victor blogs">blog</a>.</p>
<p>Llevo unos días peleándome con la creación de un web service. En concreto, tengo el <a href="http://en.wikipedia.org/wiki/XML_schema" alt="XML Schema">schema</a> que debe seguir, pero no tengo el <a href="http://en.wikipedia.org/wiki/Web_Services_Description_Language" alt="Web Services Description Language">WSDL</a>. Bien, tras mucho buscar, he encontrado la manera de generar, sí, generar, el <a href="http://en.wikipedia.org/wiki/Web_Services_Description_Language" alt="Web Services Description Language">WSDL</a>. </p>
<p>Aquí la referencia:</p>
<p><a href="http://jubyvictor.blogspot.com/2008/09/build-contract-first-web-services-using.html" alt="Victor blogs: Build contract first web services using CXF+JAXWS+JAXB &#038; Spring">Build contract first web services using CXF+JAXWS+JAXB &#038; Spring</a></p>
]]></content:encoded>
			<wfw:commentRss>http://weblog.v-code.org/2010/03/xsd-to-java-o-como-crear-un-webservice-a-partir-de-schemas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zen Coding</title>
		<link>http://weblog.v-code.org/2010/01/zen-coding/</link>
		<comments>http://weblog.v-code.org/2010/01/zen-coding/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 09:42:23 +0000</pubDate>
		<dc:creator>VictorR</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[Soluciones]]></category>
		<category><![CDATA[tips & tricks]]></category>
		<category><![CDATA[util]]></category>

		<guid isPermaLink="false">http://weblog.v-code.org/?p=326</guid>
		<description><![CDATA[Desde Smashing Magazine encuentro Zen Coding, que como dice el artículo se trata de:
a handy set of tools for high-speed HTML and CSS coding
Pues eso. Una vez presentado, ¿cómo funciona? muy facil, yo te lo explico   Sólo tienes que poner selectores CSS, sí, sí, selectores CSS para generar la estructura html que deseas [...]]]></description>
			<content:encoded><![CDATA[<p>Desde <a href="http://www.smashingmagazine.com/2009/11/21/zen-coding-a-new-way-to-write-html-code/">Smashing Magazine</a> encuentro <a href="http://code.google.com/p/zen-coding/">Zen Coding</a>, que como dice el artículo se trata de:</p>
<blockquote><p>a handy set of tools for high-speed HTML and CSS coding</p></blockquote>
<p>Pues eso. Una vez presentado, ¿cómo funciona? muy facil, yo te lo explico <img src='http://weblog.v-code.org/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  Sólo tienes que poner selectores CSS, sí, sí, selectores CSS para generar la estructura html que deseas en tu editor (lista de editores soportados más abajo), y lanzar el shortcut correspondiente (en Aptana alt+E) para generar el código html.</p>
<p>Enlace a la noticia en <a href="http://www.smashingmagazine.com/2009/11/21/zen-coding-a-new-way-to-write-html-code/">Smashing Magazine, Zen Codign: A Speedy Way To Write HTML/CSS Code.</a></p>
<p>Editores soportados:<br />
    &#8211; Aptana (cross-platform)<br />
    &#8211; Coda (Mac)<br />
    &#8211; Espresso (Mac)</p>
<p>Editores semi-soportados:<br />
    &#8211; TextMate (Mac, la alternativa para Windows es E-text);<br />
    &#8211; TopStyle<br />
    &#8211; Sublime Text<br />
    &#8211; GEdit<br />
    &#8211; editArea online editor</p>
<p>A disfrutar.</p>
]]></content:encoded>
			<wfw:commentRss>http://weblog.v-code.org/2010/01/zen-coding/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Validando Cif, Nif y Nie</title>
		<link>http://weblog.v-code.org/2009/06/validando-cif-nif-y-nie/</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><span style="color: #CC0000;">8</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><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> <span style="color: #CC0000;">1</span> <span style="color: #339933;">;</span> cont <span style="color: #339933;">&lt;</span> <span style="color: #CC0000;">7</span> <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><span style="color: #CC0000;">0</span><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: #339933;">+</span> parseInt<span style="color: #009900;">&#40;</span>xxx.<span style="color: #660066;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">1</span><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: #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><span style="color: #CC0000;">1</span><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><span style="color: #CC0000;">0</span><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: #339933;">+</span> parseInt<span style="color: #009900;">&#40;</span>xxx.<span style="color: #660066;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">1</span><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: #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> <span style="color: #CC0000;">1</span><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: #339933;">;</span><br />
&nbsp; &nbsp; unumero <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #CC0000;">10</span> <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> <span style="color: #CC0000;">10</span><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><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>dni.<span style="color: #660066;">length</span><span style="color: #339933;">-</span><span style="color: #CC0000;">1</span><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><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><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><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">1</span><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><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span>dni.<span style="color: #660066;">length</span><span style="color: #339933;">-</span><span style="color: #CC0000;">1</span><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>
]]></content:encoded>
			<wfw:commentRss>http://weblog.v-code.org/2009/06/validando-cif-nif-y-nie/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Definiendo entornos con Maven</title>
		<link>http://weblog.v-code.org/2009/06/definiendo-entornos-con-maven/</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>
]]></content:encoded>
			<wfw:commentRss>http://weblog.v-code.org/2009/06/definiendo-entornos-con-maven/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Setting the php.ini MAMP file as default on OSX</title>
		<link>http://weblog.v-code.org/2009/03/setting-the-phpini-mamp-file-as-default-on-osx/</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>
]]></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>8</slash:comments>
		</item>
		<item>
		<title>Changing login window background image on Leopard</title>
		<link>http://weblog.v-code.org/2008/12/changing-login-window-background-image-on-leopard/</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>
]]></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>
		</item>
	</channel>
</rss>
