<?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; Soluciones</title>
	<atom:link href="http://weblog.v-code.net/tag/soluciones/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>URL Hunter!!</title>
		<link>http://weblog.v-code.net/2011/03/url-hunter/</link>
		<comments>http://weblog.v-code.net/2011/03/url-hunter/#comments</comments>
		<pubDate>Tue, 15 Mar 2011 09:06:59 +0000</pubDate>
		<dc:creator>VictorR</dc:creator>
				<category><![CDATA[Sin categoría]]></category>
		<category><![CDATA[curiosidades]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Soluciones]]></category>

		<guid isPermaLink="false">http://weblog.v-code.net/?p=378</guid>
		<description><![CDATA[Hoy os quiero presentar una idea que me parece buenísima, al estilo de teaser, URL Hunter! se aprovecha de la barra de direcciones para crear una nueva experiencia en el navegador. El resultado, un juego. Sencillo, pero efectivo, ha sido desarrollado con jQuery 1.5. Tú eres la &#8220;O&#8221; que aparece en la barra de direcciones. [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy os quiero presentar una idea que me parece buenísima, al estilo de <a title="Teaser" href="http://weblog.v-code.net/2007/11/teaser/">teaser</a>, <a title="URL Hunter!" href="http://probablyinteractive.com/url-hunter" target="_blank">URL Hunter!</a> se aprovecha de la barra de direcciones para crear una nueva experiencia en el navegador.</p>
<p>El resultado, un juego. Sencillo, pero efectivo, ha sido desarrollado con <a title="jQuery" href="http://jquery.com/" target="_blank">jQuery 1.5</a>. Tú eres la &#8220;O&#8221; que aparece en la barra de direcciones. Usa las flechas derecha e izquierda para mover, cuando estés encima de una &#8220;a&#8221; presiona la barra espaciadora para matar los &#8220;animales&#8221; en menos de 30 segundos.</p>
<p>Sencillamente, me parece una idea genial y una pequeña muestra de lo mucho que se puede llegar a hacer.</p>
]]></content:encoded>
			<wfw:commentRss>http://weblog.v-code.net/2011/03/url-hunter/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>Zen Coding</title>
		<link>http://weblog.v-code.net/2010/01/zen-coding/</link>
		<comments>http://weblog.v-code.net/2010/01/zen-coding/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 09:42:23 +0000</pubDate>
		<dc:creator>VictorR</dc:creator>
				<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.net/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.net/2010/01/zen-coding/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Una Wacom? no el trackpad del mac!</title>
		<link>http://weblog.v-code.net/2010/01/una-wacom-no-el-trackpad-del-mac/</link>
		<comments>http://weblog.v-code.net/2010/01/una-wacom-no-el-trackpad-del-mac/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 10:46:34 +0000</pubDate>
		<dc:creator>VictorR</dc:creator>
				<category><![CDATA[curiosidades]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Soluciones]]></category>
		<category><![CDATA[util]]></category>

		<guid isPermaLink="false">http://weblog.v-code.org/?p=322</guid>
		<description><![CDATA[El otro día, leyendo una de mis suscripciones rss (tuaw), me encontré con esta aplicación, Inklet Trackpad Tablet. Es muy curiosa, porque aprovechando las características táctiles del trackpad de los MacBooks de última generación, convierte el trackpad en algo así como una Tabla digitalizadora, a.k.a Wacom. Con unas limitaciones, es cierto. No &#8220;sabe&#8221; diferenciar entre [...]]]></description>
			<content:encoded><![CDATA[<p>El otro día, leyendo una de mis suscripciones rss (<a href="http://www.tuaw.com">tuaw</a>), me encontré con esta aplicación, <a href="http://tenonedesign.com/inklet.php">Inklet Trackpad Tablet</a>.</p>
<p>Es muy curiosa, porque aprovechando las características táctiles del trackpad de los MacBooks de última generación, convierte el trackpad en algo así como una <a href="http://es.wikipedia.org/wiki/Tableta_digitalizadora">Tabla digitalizadora, a.k.a Wacom</a>. Con unas limitaciones, es cierto. No &#8220;sabe&#8221; diferenciar entre una mayor o menor presión (léase sensibilidad), pero también es cierto que proponen otro producto, <a href="http://tenonedesign.com/sketch.php">Pogo Sketch</a>, de la misma compañía <a href="http://tenonedesign.com">Ten 1 Design</a> para solucionar esta cuestión.</p>
<p>Más información en <a href="http://www.tuaw.com/2010/01/12/inklet-turns-your-trackpad-into-a-wacom-style-tablet/">Inklet turns your trackpad into a Wacom-style tablet</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://weblog.v-code.net/2010/01/una-wacom-no-el-trackpad-del-mac/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.net/2009/03/setting-the-phpini-mamp-file-as-default-on-osx/</link>
		<comments>http://weblog.v-code.net/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[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, [...]]]></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.net/2009/03/setting-the-phpini-mamp-file-as-default-on-osx/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Actualizando a jQuery 1.3 y su evento live</title>
		<link>http://weblog.v-code.net/2009/02/actualizando-a-jquery-13-y-su-evento-live/</link>
		<comments>http://weblog.v-code.net/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[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 [...]]]></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>
]]></content:encoded>
			<wfw:commentRss>http://weblog.v-code.net/2009/02/actualizando-a-jquery-13-y-su-evento-live/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>El Triángulo Imposible</title>
		<link>http://weblog.v-code.net/2008/12/el-triangulo-imposible/</link>
		<comments>http://weblog.v-code.net/2008/12/el-triangulo-imposible/#comments</comments>
		<pubDate>Sun, 28 Dec 2008 17:21:10 +0000</pubDate>
		<dc:creator>VictorR</dc:creator>
				<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>
]]></content:encoded>
			<wfw:commentRss>http://weblog.v-code.net/2008/12/el-triangulo-imposible/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Let me google that for you</title>
		<link>http://weblog.v-code.net/2008/12/let-me-google-that-for-you/</link>
		<comments>http://weblog.v-code.net/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[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 [...]]]></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>
]]></content:encoded>
			<wfw:commentRss>http://weblog.v-code.net/2008/12/let-me-google-that-for-you/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery, o el &quot;javascripi&quot; más fácil!</title>
		<link>http://weblog.v-code.net/2008/10/jquery-o-el-javascripi-mas-facil/</link>
		<comments>http://weblog.v-code.net/2008/10/jquery-o-el-javascripi-mas-facil/#comments</comments>
		<pubDate>Mon, 13 Oct 2008 10:43:50 +0000</pubDate>
		<dc:creator>VictorR</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Soluciones]]></category>

		<guid isPermaLink="false">http://weblog.v-code.org/?p=101</guid>
		<description><![CDATA[El otro día, apareció una noticia en JavaHispano en la que se acababa ponendo en duda la capacidad de jQuery. Pués bien, este post para explicar algo de jQuery que creo que hace que este framework me maraville. Y es: $&#40;&#41;.ready&#40;function&#40;&#41; &#123; &#160; &#160; //aquí lo que quieras, que funciona &#125;&#41;; Estas simples líneas permiten [...]]]></description>
			<content:encoded><![CDATA[<p>El otro día, apareció una <a title="M$ usará jQuery" href="http://www.javahispano.org/contenidos/es/microsoft_usara_jquery_en_vs/?menuId=MINDS" target="_blank">noticia</a> en <a title="Java Hispano" href="http://www.javahispano.org/" target="_blank">JavaHispano</a> en la que se acababa ponendo en duda la capacidad de <a title="jQuery wikipedia" href="http://en.wikipedia.org/wiki/JQuery" target="_blank">jQuery</a>. Pués bien, este post para explicar algo de jQuery que creo que hace que este framework me maraville.</p>
<p>Y es:</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: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">ready</span><span style="color: #009900;">&#40;</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: #006600; font-style: italic;">//aquí lo que quieras, que funciona</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></div>
<p>Estas simples líneas permiten manipular el DOM de una página web justo en el momento en que este está construido y antes de que esté completamente cargado. Que qué quiere decir esto? Esto es poder ejecutar el javascript, ya sea para manipular el DOM, cambiar estilos al vuelo, asignar eventos a los elementos del DOM, o lo que se te ocurra antes de que el evento &#8220;onload&#8221; del documento se ejecute.</p>
<p>Y por qué es necesario esto? Necesario, necesario puede que no lo sea. Pero es una ventaja poder ejecutar el javascript antes de cargar, sobretodo, las imágenes que la web pueda tener.</p>
<p>Podeis hacer la prueba. En un mismo html haced dos scripts el primero que muestre un alert como este:</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">window.<span style="color: #000066;">onload</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> <span style="color: #000066;">alert</span> <span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;DOM cargado&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span></div></div>
<p>y el segundo script con el siguiente código:</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: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">ready</span><span style="color: #009900;">&#40;</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: #000066;">alert</span> <span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;DOM preparado&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
<p>Cuál es el resultado?</p>
]]></content:encoded>
			<wfw:commentRss>http://weblog.v-code.net/2008/10/jquery-o-el-javascripi-mas-facil/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

