<?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; tutoriales</title>
	<atom:link href="http://weblog.v-code.net/tag/tutoriales/feed/" rel="self" type="application/rss+xml" />
	<link>http://weblog.v-code.net</link>
	<description>Blog de Víctor Rodríguez</description>
	<lastBuildDate>Tue, 15 Mar 2011 11:11:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Servidor SMTP en Mac OSX (Postfix)</title>
		<link>http://weblog.v-code.net/2010/09/servidor-smtp-en-mac-osx-postfix/</link>
		<comments>http://weblog.v-code.net/2010/09/servidor-smtp-en-mac-osx-postfix/#comments</comments>
		<pubDate>Mon, 06 Sep 2010 11:54:01 +0000</pubDate>
		<dc:creator>VictorR</dc:creator>
				<category><![CDATA[Leopard]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[tips & tricks]]></category>
		<category><![CDATA[tutoriales]]></category>
		<category><![CDATA[util]]></category>

		<guid isPermaLink="false">http://weblog.v-code.org/?p=354</guid>
		<description><![CDATA[Hola mi querido y reducido público, Hoy os dejo un enlace a un post de Fresh Blurbs que nos enseña cómo habilitar Postfix en Max OSX Leopard, un servidor SMTP que ya lleva instalado por defecto. A mi me está ayudando en el desarrollo de los proyectos en los que trabajo&#8230; How to Enable Local [...]]]></description>
			<content:encoded><![CDATA[<p>Hola mi querido y reducido público,</p>
<p>Hoy os dejo un enlace a un post de <a href="http://www.freshblurbs.com">Fresh Blurbs</a> que nos enseña cómo habilitar <a href="http://en.wikipedia.org/wiki/Postfix_(software)">Postfix</a> en Max OSX Leopard, un servidor SMTP que ya lleva instalado por defecto. A mi me está ayudando en el desarrollo de los proyectos en los que trabajo&#8230;</p>
<p><a href="http://www.freshblurbs.com/how-enable-local-smtp-postfix-os-x-leopard">How to Enable Local SMTP (Postfix) on OS-X Leopard</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://weblog.v-code.net/2010/09/servidor-smtp-en-mac-osx-postfix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Crop de imágenes JPG con Java Advanced Imaging API (JAI)</title>
		<link>http://weblog.v-code.net/2010/05/crop-de-imagenes-jpg-con-java-advanced-imaging-api-jai/</link>
		<comments>http://weblog.v-code.net/2010/05/crop-de-imagenes-jpg-con-java-advanced-imaging-api-jai/#comments</comments>
		<pubDate>Thu, 20 May 2010 11:42:51 +0000</pubDate>
		<dc:creator>VictorR</dc:creator>
				<category><![CDATA[ejemplos]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[problemas]]></category>
		<category><![CDATA[Soluciones]]></category>
		<category><![CDATA[tutoriales]]></category>

		<guid isPermaLink="false">http://weblog.v-code.org/?p=340</guid>
		<description><![CDATA[Hoy la entrada será de nuevo una solución a un problema encontrado en el proyecto en el que trabajo actualmente. Y es que cuando quieres editar imágenes con Java las alternativas no son muchas y tampoco fáciles. Nosotros nos decidimos por utilizar Java Advanced Imaging API, una librería que no se actualiza desde 2007&#8230; bueno, [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy la entrada será de nuevo una solución a un problema encontrado en el proyecto en el que trabajo actualmente. Y es que cuando quieres editar imágenes con Java las alternativas no son muchas y tampoco fáciles. Nosotros nos decidimos por utilizar <a href="http://java.sun.com/javase/technologies/desktop/media/jai/">Java Advanced Imaging API</a>, una librería que no se actualiza desde 2007&#8230; bueno, no toca entrar a discutir este tema.</p>
<p>Vamos a entrar en materia. El código:</p>
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">byte</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> cropImage<span style="color: #009900;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ainputstream+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">InputStream</span></a> is, <span style="color: #000066; font-weight: bold;">int</span> topLeftmx, <span style="color: #000066; font-weight: bold;">int</span> topLeftmy, <span style="color: #000066; font-weight: bold;">int</span> roiWidth, <span style="color: #000066; font-weight: bold;">int</span> roiHeight, <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a> tipoImagen<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// 1 - generar el crop</span><br />
&nbsp; &nbsp; SeekableStream s <span style="color: #339933;">=</span> SeekableStream.<span style="color: #006633;">wrapInputStream</span><span style="color: #009900;">&#40;</span>is, <span style="color: #000066; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; RenderedOp image <span style="color: #339933;">=</span> JAI.<span style="color: #006633;">create</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;stream&quot;</span>, s<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>OpImage<span style="color: #009900;">&#41;</span>image.<span style="color: #006633;">getRendering</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">setTileCache</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aparameterblock+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">ParameterBlock</span></a> pb <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aparameterblock+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">ParameterBlock</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; pb.<span style="color: #006633;">addSource</span><span style="color: #009900;">&#40;</span>image<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; pb.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">float</span><span style="color: #009900;">&#41;</span>topLeftmx<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; pb.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">float</span><span style="color: #009900;">&#41;</span>topLeftmy<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; pb.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">float</span><span style="color: #009900;">&#41;</span>roiWidth<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; pb.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">float</span><span style="color: #009900;">&#41;</span>roiHeight<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; image <span style="color: #339933;">=</span> JAI.<span style="color: #006633;">create</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;crop&quot;</span>,pb<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// 2 - codificar la imagen resultado del crop</span><br />
&nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Abytearrayoutputstream+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">ByteArrayOutputStream</span></a> baos <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Abytearrayoutputstream+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">ByteArrayOutputStream</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; JAI.<span style="color: #006633;">create</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;encode&quot;</span>, image, baos, tipoImagen, <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// 3</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">return</span> baos.<span style="color: #006633;">toByteArray</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>Básicamente esta función tiene 2 partes, la primera (1) donde se genera el crop de la imagen, y la segunda (2) donde se codifica la imagen resultado del crop realizado. Es decir, informar si la imagen es JPEG, PNG, TIFF&#8230;</p>
<p>Cuál es el problema que nos encontramos, si vamos a la línea marcada (3):</p>
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">JAI.<span style="color: #006633;">create</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;encode&quot;</span>, image, baos, tipoImagen, <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// 3</span></div></div>
<p>estamos creando la codificación, indicando con la variable tipoImagen si se trata de una &#8220;JPEG&#8221; (&#8220;JPG&#8221; no funciona), &#8220;PNG&#8221;, &#8220;TIFF&#8221; o demás formatos soportados.</p>
<p>Funcionar funciona correctamente con cada uno de los tipos de imagen que le pasemos, excepto con &#8220;JPEG&#8221;. Con este tipo las coordenadas elegidas para realizar el crop sobre la imagen simplemente se pierden. No se porqué, pero se pierden.</p>
<p>La solución encontrada en <a href="http://forums.java.net/">java.net Forums</a>, <a href="http://forums.java.net/jive/thread.jspa?messageID=393038&#393038">Thread: The crop operation seems to ignore (x,y) offset</a> es la siguiente:</p>
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">JAI.<span style="color: #006633;">create</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;encode&quot;</span>, image.<span style="color: #006633;">getAsBufferedImage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>, baos, tipoImagen, <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// 3</span></div></div>
<p>La solución es pasar la variable image (de tipo RenderedOp) a tipo BufferedImage en la función create de la clase JAI. Milagrosamente todo vuelve a funcionar, incluido el tipo &#8220;JPEG&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://weblog.v-code.net/2010/05/crop-de-imagenes-jpg-con-java-advanced-imaging-api-jai/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>XSD to Java o cómo crear un WebService a partir de schemas</title>
		<link>http://weblog.v-code.net/2010/03/xsd-to-java-o-como-crear-un-webservice-a-partir-de-schemas/</link>
		<comments>http://weblog.v-code.net/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[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 [...]]]></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.net/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>Don&#039;t copy, please!</title>
		<link>http://weblog.v-code.net/2008/10/dont-copy-please/</link>
		<comments>http://weblog.v-code.net/2008/10/dont-copy-please/#comments</comments>
		<pubDate>Tue, 07 Oct 2008 08:30:01 +0000</pubDate>
		<dc:creator>VictorR</dc:creator>
				<category><![CDATA[copy & paste]]></category>
		<category><![CDATA[ejemplos]]></category>
		<category><![CDATA[queja]]></category>
		<category><![CDATA[tutoriales]]></category>

		<guid isPermaLink="false">http://weblog.v-code.org/?p=96</guid>
		<description><![CDATA[Por favor, si quieres crear un tuto sobre &#8220;lo que sea&#8221;, no lo copies de la documentación original&#8230; que se acaba sabiendo!! Es algo que todos hemos hecho, ya sea por inexperiencia, por empezar, por no olvidar alguna lección valiosa&#8230; pero es que luego haces una búsqueda en Google y todos los resultados son calcados! [...]]]></description>
			<content:encoded><![CDATA[<p>Por favor, si quieres crear un tuto sobre &#8220;lo que sea&#8221;, no lo copies de la documentación original&#8230; que se acaba sabiendo!! <img src='http://weblog.v-code.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Es algo que todos hemos hecho, ya sea por inexperiencia, por empezar, por no olvidar alguna lección valiosa&#8230; pero es que luego haces una búsqueda en <a href="http://en.wikipedia.org/wiki/Google" target="_blank">Google</a> y todos los resultados son calcados! Y eso resulta frustrante. Frustrante porque no solucionas tu problema con un simple ejemplo, frustrante porque no encuentras &#8220;otras ideas&#8221; de cómo afrontar tu problema y frustrante porque ver el mismo ejemplo con diferentes colorcitos cansa, y mucho.</p>
<p>Por favor, si empiezas tu blog, si empiezas a aprender algún lenguaje de programación, si quieres aprender algo nuevo y que los demás también lo disfruten contigo. Gracias, pero no copies la documentación oficial. Haz tus propios ejemplos&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://weblog.v-code.net/2008/10/dont-copy-please/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

