<?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>Racó tècnic</title>
	<atom:link href="http://racotecnic.underave.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://racotecnic.underave.net</link>
	<description>Punt de trobada de coneixements</description>
	<lastBuildDate>Sat, 10 Jul 2010 22:48:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Errores 404 con Ajax (y jQuery) en CakePHP</title>
		<link>http://racotecnic.underave.net/2010/07/errores-404-con-ajax-y-jquery-en-cakephp/</link>
		<comments>http://racotecnic.underave.net/2010/07/errores-404-con-ajax-y-jquery-en-cakephp/#comments</comments>
		<pubDate>Sat, 10 Jul 2010 22:44:09 +0000</pubDate>
		<dc:creator>Booletaire</dc:creator>
				<category><![CDATA[Programació]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[CakePHP 1.2]]></category>
		<category><![CDATA[CakePHP 1.3]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://racotecnic.underave.net/?p=1583</guid>
		<description><![CDATA[En este tutorial aprenderéis a gestionar los errores de CakePHP con y sin Ajax. Lo primero de todo que tenéis que hacer es poner el debug a cero en vuestro fichero core.php, ya que con debug &#62; 0 no funcionaría. Ahora pasemos a crear (si no existe) el fichero /app/app_error.php con el siguiente contenido. &#60;?php [...]]]></description>
			<content:encoded><![CDATA[<p>En este tutorial aprenderéis a <strong>gestionar los errores de CakePHP con y sin Ajax.</strong></p>
<p>Lo primero de todo que tenéis que hacer es poner el debug a cero en vuestro fichero core.php, ya que <strong>con debug &gt; 0 no funcionaría</strong>.</p>
<p>Ahora pasemos a crear (si no existe) el fichero <strong>/app/app_error.php</strong> con el siguiente contenido.</p>
<pre class="brush: php;">&lt;?php // /app/app_error.php
class AppError extends ErrorHandler
{
	function error404($params)
	{
		// Importamos RequestHandler para verificar si la conexión es mediante Ajax
		App::import('Component', 'RequestHandler');
		$this-&gt;RequestHandler = new RequestHandlerComponent();
		if ($this-&gt;RequestHandler-&gt;isAjax())
		{
			// En caso de ser Ajax creamos la cabecera 404
			$this-&gt;controller-&gt;header(&quot;HTTP/1.0 404 Not Found&quot;);
			// y pasamos algunas variables a la vista que ahora crearemos
			$this-&gt;controller-&gt;set('params', $params);
			$this-&gt;controller-&gt;layout = 'ajax';
			// Renderizamos la vista
			$this-&gt;_outputMessage('ajax_error404');
		}
		// Aquí iría la gestión del error sin Ajax, en nuestro caso llamamos al método padre.
		else parent::error404($params);
	}
}</pre>
<p>Pasemos a la creación de la vista&#8230; <strong>/app/views/errors/ajax_error404.ctp</strong></p>
<pre class="brush: php;">&lt;?php // /app/views/errors/ajax_error404.ctp
$error404 = array('message' =&gt; __(&quot;The requested address was not found on this server.&quot;,true), 'params' =&gt; $params);
echo $this-&gt;Javascript-&gt;object($error404);</pre>
<p>Tan simple como eso : )</p>
<p>Finalmente, añadamos esto a nuestro template por defecto, o a nuestra hoja javascript común:</p>
<pre class="brush: jscript;">jQuery(document).ready(function($) {
	// Ajax not found
	$(this).ajaxError(function(event, request, opts){
		if ( request.status == 404 )
		{
			alert(eval(&quot;(&quot; + request.responseText + &quot;)&quot;).message);
		}
	});
});</pre>
<p>Con esto mostraremos una alerta mostrando el texto que hayamos definido en nuestro app_error al usuario que intente adquirir una url no existente en nuestra aplicación CakePHP.</p>
<p>Evidentemente podéis gestionar más errores a parte del típico error 404, simplemente añadiendo algún <em>if</em> más al código javascript y el método correspondiente en el app_error para gestionarlo.</p>
<p>El parámetro <em>$params</em> lo he pasado por si queréis utilizar alguna de sus variables. Por ejemplo, podríamos mostrar al usuario un mensaje tipo &#8220;La página /requetefuck no existe&#8221;.</p>
<blockquote><p><strong>Nota:</strong> Si estáis utilizando Cake 1.2 tened en cuenta que tenéis que reemplazar en la vista ajax_error404 el $this-&gt;Javascript por $javascript, ya que ha variado de una versión a otra.</p></blockquote>



		<!-- Added by WP-DragToShare-eXtended Plugin -->
		<script type="text/javascript">
			dtsv.dtse_post_1583_permalink = 'http://racotecnic.underave.net/2010/07/errores-404-con-ajax-y-jquery-en-cakephp/';
			dtsv.dtse_post_1583_title = 'Errores 404 con Ajax (y jQuery) en CakePHP';
		</script>
		<!-- End of WP-DragToShare-eXtended Plugin -->

<p style="font-weight:bold">Entrades relacionades:<ol><li><a href='http://racotecnic.underave.net/2009/10/subida-de-ficheros-con-uploadify-y-validacion-ajax-en-cakephp/' rel='bookmark' title='Permanent Link: Subida de ficheros con Uploadify y validación Ajax en CakePHP'>Subida de ficheros con Uploadify y validación Ajax en CakePHP</a></li>
<li><a href='http://racotecnic.underave.net/2009/06/subida-de-ficheros-en-cakephp-con-uploadify-y-jquery/' rel='bookmark' title='Permanent Link: Subida de ficheros en CakePHP 1.2 con uploadify y jQuery'>Subida de ficheros en CakePHP 1.2 con uploadify y jQuery</a></li>
<li><a href='http://racotecnic.underave.net/2009/12/cakephp-auth-component-ajaxlogin/' rel='bookmark' title='Permanent Link: CakePHP Auth Component ajaxLogin'>CakePHP Auth Component ajaxLogin</a></li>
<li><a href='http://racotecnic.underave.net/2009/11/leer-hilos-rss-en-cakephp-utilizando-jquery/' rel='bookmark' title='Permanent Link: Leer hilos RSS en CakePHP utilizando jQuery'>Leer hilos RSS en CakePHP utilizando jQuery</a></li>
<li><a href='http://racotecnic.underave.net/2009/11/detectar-solicitud-ajax-con-php/' rel='bookmark' title='Permanent Link: Detectar solicitud AJAX con PHP'>Detectar solicitud AJAX con PHP</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://racotecnic.underave.net/2010/07/errores-404-con-ajax-y-jquery-en-cakephp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing Google TV</title>
		<link>http://racotecnic.underave.net/2010/05/introducing-google-tv/</link>
		<comments>http://racotecnic.underave.net/2010/05/introducing-google-tv/#comments</comments>
		<pubDate>Mon, 24 May 2010 21:54:02 +0000</pubDate>
		<dc:creator>DPAM23</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[Google TV]]></category>
		<category><![CDATA[TV]]></category>

		<guid isPermaLink="false">http://racotecnic.underave.net/?p=1551</guid>
		<description><![CDATA[Benvinguts a la nova era de la televisió: dtsv.dtse_post_1551_permalink = 'http://racotecnic.underave.net/2010/05/introducing-google-tv/'; dtsv.dtse_post_1551_title = 'Introducing Google TV'; No hi ha cap entrada relacionada]]></description>
			<content:encoded><![CDATA[<p>Benvinguts a la nova era de la televisió:</p>
<p><a href="http://racotecnic.underave.net/wp-content/uploads/2010/05/google-tv.gif"><img class="dtse-img dtse-post-1551" style="display:none;" class="aligncenter size-full wp-image-1558" title="google-tv" src="http://racotecnic.underave.net/wp-content/uploads/2010/05/google-tv.gif" alt="" width="289" height="113" /></a></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="600" height="345" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/diTpeYoqAhc&amp;hl=en_US&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="600" height="345" src="http://www.youtube.com/v/diTpeYoqAhc&amp;hl=en_US&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>



		<!-- Added by WP-DragToShare-eXtended Plugin -->
		<script type="text/javascript">
			dtsv.dtse_post_1551_permalink = 'http://racotecnic.underave.net/2010/05/introducing-google-tv/';
			dtsv.dtse_post_1551_title = 'Introducing Google TV';
		</script>
		<!-- End of WP-DragToShare-eXtended Plugin -->

<p style="font-weight:bold">No hi ha cap entrada relacionada</p>]]></content:encoded>
			<wfw:commentRss>http://racotecnic.underave.net/2010/05/introducing-google-tv/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Social Media Revolution 2 (Refresh)</title>
		<link>http://racotecnic.underave.net/2010/05/social-media-revolution-2-refresh/</link>
		<comments>http://racotecnic.underave.net/2010/05/social-media-revolution-2-refresh/#comments</comments>
		<pubDate>Tue, 18 May 2010 07:09:25 +0000</pubDate>
		<dc:creator>DPAM23</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Xarxes Socials]]></category>
		<category><![CDATA[2.0]]></category>
		<category><![CDATA[web 2.0]]></category>

		<guid isPermaLink="false">http://racotecnic.underave.net/?p=1547</guid>
		<description><![CDATA[dtsv.dtse_post_1547_permalink = 'http://racotecnic.underave.net/2010/05/social-media-revolution-2-refresh/'; dtsv.dtse_post_1547_title = 'Social Media Revolution 2 (Refresh)'; No hi ha cap entrada relacionada]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="600" height="345" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/lFZ0z5Fm-Ng&amp;hl=en_US&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="600" height="345" src="http://www.youtube.com/v/lFZ0z5Fm-Ng&amp;hl=en_US&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>



		<!-- Added by WP-DragToShare-eXtended Plugin -->
		<script type="text/javascript">
			dtsv.dtse_post_1547_permalink = 'http://racotecnic.underave.net/2010/05/social-media-revolution-2-refresh/';
			dtsv.dtse_post_1547_title = 'Social Media Revolution 2 (Refresh)';
		</script>
		<!-- End of WP-DragToShare-eXtended Plugin -->

<p style="font-weight:bold">No hi ha cap entrada relacionada</p>]]></content:encoded>
			<wfw:commentRss>http://racotecnic.underave.net/2010/05/social-media-revolution-2-refresh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web site inspiration &#8211; Inspiración para creación de paginas web</title>
		<link>http://racotecnic.underave.net/2010/04/web-site-inspiration-inspiracion-para-creacion-de-paginas-web/</link>
		<comments>http://racotecnic.underave.net/2010/04/web-site-inspiration-inspiracion-para-creacion-de-paginas-web/#comments</comments>
		<pubDate>Wed, 28 Apr 2010 07:36:54 +0000</pubDate>
		<dc:creator>DPAM23</dc:creator>
				<category><![CDATA[Disseny]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[ejemplos diseño web]]></category>
		<category><![CDATA[inspiración]]></category>
		<category><![CDATA[Inspiration]]></category>
		<category><![CDATA[web site design]]></category>
		<category><![CDATA[web site inspiration]]></category>

		<guid isPermaLink="false">http://racotecnic.underave.net/?p=1392</guid>
		<description><![CDATA[http://www.webdesign-inspiration.com/ http://theodin.co.uk/(Cut line) http://www.smashingmagazine.com/tag/showcases/(Showcases) http://www.flickr.com/photos/splat/sets/981332/ http://abduzeedo.com/ http://www.asiteaday.org/ http://box.mepholio.com/ http://thedesigninspiration.com/(Logos, websites, illustration, fonts, patterns) http://www.deviantart.com/#order=9&#38;q=web+site http://blog.insicdesigns.com/ (Webs) http://blog.insicdesigns.com/ (Logos) http://www.webdesignerdepot.com/(Watercolor) http://www.youthedesigner.com/ (Portafolios) http://net.tutsplus.com/ (Green color) http://www.1stwebdesigner.com/ (Green color) http://webdesignledger.com/ (Black &#038; white) http://net.tutsplus.com/ (Red) http://designinstruct.com/(Bright &#038; sleek) dtsv.dtse_post_1392_permalink = 'http://racotecnic.underave.net/2010/04/web-site-inspiration-inspiracion-para-creacion-de-paginas-web/'; dtsv.dtse_post_1392_title = 'Web site inspiration – Inspiración para creación de paginas web'; Entrades relacionades:CSS hacks para [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://racotecnic.underave.net/wp-content/uploads/2010/02/inspiration.jpg"><img class="aligncenter size-full wp-image-1393 dtse-img dtse-post-1392" title="inspiration" src="http://racotecnic.underave.net/wp-content/uploads/2010/02/inspiration.jpg" alt="" width="509" height="333" /></a></p>
<ul>
<li><a rel="nofollow" href="http://www.webdesign-inspiration.com/" target="_blank">http://www.webdesign-inspiration.com/</a></li>
<li><a rel="nofollow" href="http://theodin.co.uk/blog/design/inspirational-cut-line-web-design.html" target="_blank">http://theodin.co.uk/</a>(Cut line)</li>
<li><a rel="nofollow" href="http://www.smashingmagazine.com/tag/showcases/" target="_blank">http://www.smashingmagazine.com/tag/showcases/</a>(Showcases)</li>
<li><a rel="nofollow" href="http://www.flickr.com/photos/splat/sets/981332/" target="_blank">http://www.flickr.com/photos/splat/sets/981332/</a></li>
<li><a rel="nofollow" href="http://abduzeedo.com/" target="_blank">http://abduzeedo.com/</a></li>
<li><a rel="nofollow" href="http://www.asiteaday.org/" target="_blank">http://www.asiteaday.org/</a></li>
<li><a rel="nofollow" href="http://box.mepholio.com/" target="_blank">http://box.mepholio.com/</a></li>
<li><a rel="nofollow" href="http://thedesigninspiration.com/" target="_blank">http://thedesigninspiration.com/</a>(Logos, websites, illustration, fonts, patterns)</li>
<li><a rel="nofollow" href="http://www.deviantart.com/#order=9&amp;q=web+site" target="_blank">http://www.deviantart.com/#order=9&amp;q=web+site</a></li>
<li><a rel="nofollow" href="http://blog.insicdesigns.com/2010/02/weekly-design-inspiration-beautiful-web-design/" target="_blank">http://blog.insicdesigns.com/</a> (Webs)</li>
<li><a rel="nofollow" href="http://blog.insicdesigns.com/2010/03/weekly-design-inspiration-2-beautiful-logo-design/" target="_blank">http://blog.insicdesigns.com/</a> (Logos)</li>
<li><a rel="nofollow" href="http://www.webdesignerdepot.com/2010/03/a-showcase-of-watercolor-in-web-design/" target="_blank">http://www.webdesignerdepot.com/</a>(Watercolor)</li>
<li><a rel="nofollow" href="http://www.youthedesigner.com/2010/04/05/beautiful-portfolio-designs-showcase/" target="_blank">http://www.youthedesigner.com/</a> (Portafolios)</li>
<li><a rel="nofollow" href="http://net.tutsplus.com/articles/web-roundups/color-inspiration-go-green-with-envy/" target="_blank">http://net.tutsplus.com/</a> (Green color)</li>
<li><a rel="nofollow" href="http://www.1stwebdesigner.com/inspiration/fresh-green-websites-inspiration/" target="_blank">http://www.1stwebdesigner.com/</a> (Green color)</li>
<li><a rel="nofollow" href="http://webdesignledger.com/inspiration/55-minimal-black-and-white-web-designs-to-inspire-you" target="_blank">http://webdesignledger.com/</a> (Black &#038; white)</li>
<li><a rel="nofollow" href="http://net.tutsplus.com/articles/web-roundups/color-inspiration-awesome-red-websites/" target="_blank">http://net.tutsplus.com/</a> (Red)</li>
<li><a rel="nofollow" href="http://designinstruct.com/visual-inspiration/inspiration-40-captivating-bright-and-sleek-web-designs/" target="_blank">http://designinstruct.com/</a>(Bright &#038; sleek)</li>
</ul>



		<!-- Added by WP-DragToShare-eXtended Plugin -->
		<script type="text/javascript">
			dtsv.dtse_post_1392_permalink = 'http://racotecnic.underave.net/2010/04/web-site-inspiration-inspiracion-para-creacion-de-paginas-web/';
			dtsv.dtse_post_1392_title = 'Web site inspiration – Inspiración para creación de paginas web';
		</script>
		<!-- End of WP-DragToShare-eXtended Plugin -->

<p style="font-weight:bold">Entrades relacionades:<ol><li><a href='http://racotecnic.underave.net/2010/02/css-hacks-para-firefox-internet-explorer-chrome-opera-safari/' rel='bookmark' title='Permanent Link: CSS hacks para Firefox, Internet Explorer, Chrome, Opera, Safari&#8230;'>CSS hacks para Firefox, Internet Explorer, Chrome, Opera, Safari&#8230;</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://racotecnic.underave.net/2010/04/web-site-inspiration-inspiracion-para-creacion-de-paginas-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Watermark &amp; Image Component for CakePHP</title>
		<link>http://racotecnic.underave.net/2010/04/watermark-image-component-for-cakephp/</link>
		<comments>http://racotecnic.underave.net/2010/04/watermark-image-component-for-cakephp/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 07:53:33 +0000</pubDate>
		<dc:creator>Booletaire</dc:creator>
				<category><![CDATA[Programació]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Codi]]></category>
		<category><![CDATA[Component]]></category>
		<category><![CDATA[imatge]]></category>
		<category><![CDATA[marca d'aigua]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[rotar]]></category>

		<guid isPermaLink="false">http://racotecnic.underave.net/?p=1455</guid>
		<description><![CDATA[Time ago I created a CakePHP component for applying watermarks to images. Slowly I extended it and now in addition to applying watermarks is used to rotate and resize images. You can still improve it a lot, especially in terms of code, but as it works and I have little time, I can barely make [...]]]></description>
			<content:encoded><![CDATA[<p>Time ago I created a <strong>CakePHP component for applying watermarks to images</strong>. Slowly I extended it and now in addition to applying watermarks is used to <strong>rotate and resize images</strong>.</p>
<p>You can still improve it a lot, especially in terms of code, but as it works and I have little time, I can barely make improvements.<img class="alignright dtse-img dtse-post-1455" title="all_together" src="http://racotecnic.underave.net/wp-content/uploads/2010/04/all_together.jpeg" alt="" width="171" height="170" /></p>
<h3>Tested from:</h3>
<ul>
<li>Linux php 5.2.10</li>
<li>Linux php 5.2.13</li>
<li>Windows php 5.3.1</li>
<li>Windows php 5.3.2</li>
</ul>
<h3>Well Known Bugs:</h3>
<ul>
<li>Uses the method <a rel="nofollow" href="http://php.net/manual/en/function.mime-content-type.php" target="_blank">mime_content_type</a> that as they say in php.net: <em>This function has been deprecated as the PECL extension <a rel="nofollow" href="http://www.php.net/manual/en/ref.fileinfo.php" target="_blank">Fileinfo</a> provides the same functionality (and more) in a much cleaner way.</em></li>
<li>By rotating a transparent PNG image at an angle that is not a multiple of 90º the extra generated background is not transparent.</li>
</ul>
<h3>Download:</h3>
<p><a rel="nofollow" href="http://github.com/elboletaire/Watimage/archives/master" target="_blank">http://github.com/elboletaire/Watimage/archives/master</a></p>
<p><span id="more-1455"></span></p>
<h3>Usage:</h3>
<pre class="brush: php;">&lt;?php // /app/controllers/foo_controller.php
&lt;pre&gt;class FooController extends AppController
{
	var $name = &quot;Foo&quot;;
	// Remember to initialize the component
	var $components = array(&quot;Watermark&quot;);

	public function upload()
	{
		// ... upload stuff
		if ( $is_uploaded )
		{
			$this-&gt;Watermark-&gt;setImage($image_path);
			$this-&gt;Watermark-&gt;resize(array('type' =&gt; 'resizecrop', 'size' =&gt; array(450,450)));
			$this-&gt;Watermark-&gt;generate($dest_path);
			// ... more stuff ...
		}
	}
}</pre>
<p style="text-align: center;"><strong>Original files used for demonstrations:</strong><br />
<img class="size-full wp-image-1464 aligncenter dtse-img dtse-post-1455" title="imatge23" src="http://racotecnic.underave.net/wp-content/uploads/2010/04/imatge23.jpg" alt="" width="425" height="500" /><br />
<img class="alignnone size-full wp-image-1470 dtse-img dtse-post-1455" title="watermark" src="http://racotecnic.underave.net/wp-content/uploads/2010/04/watermark.png" alt="" width="177" height="50" /></p>
<h4>Resize:</h4>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1461 dtse-img dtse-post-1455" title="resizecrop" src="http://racotecnic.underave.net/wp-content/uploads/2010/04/resizecrop.jpeg" alt="" width="300" height="200" /></p>
<pre class="brush: php;">$this-&gt;Watermark-&gt;setImage($image_path);
$this-&gt;Watermark-&gt;resize(array('type' =&gt; 'resizecrop'), 'size' =&gt; array('300', '200'));
$this-&gt;Watermark-&gt;generate($dest_path);</pre>
<h5>Resize types:</h5>
<ul>
<li><strong>resize</strong>: Maintains the aspect ratio of the image and makes sure that it fits within the max width and max height (thus some side will be smaller).</li>
<li><strong>resizemin</strong>: Maintains aspect ratio but resizes the image so that once one side meets its max width or max height condition, it stays at that size (thus one side will be larger).</li>
<li><strong>resizecrop</strong>: Resize to max, then crop to center.</li>
<li><strong>crop</strong>: A straight centered crop.</li>
</ul>
<p><em>* Resizing criteria extracted from <a rel="nofollow" href="http://labs.iamkoa.net/2007/10/23/image-upload-component-cakephp/" target="_blank">iamkoa labs image upload component</a></em></p>
<h4>Rotate:</h4>
<p style="text-align: center;"><img class="size-full wp-image-1466 aligncenter dtse-img dtse-post-1455" title="rotate" src="http://racotecnic.underave.net/wp-content/uploads/2010/04/rotate.jpeg" alt="" width="655" height="655" /></p>
<pre class="brush: php;">$this-&gt;Watermark-&gt;setImage($image_path);
$this-&gt;Watermark-&gt;rotateImage(array('degrees' =&gt; 45));
$this-&gt;Watermark-&gt;generate($dest_path);</pre>
<h4>Apply watermark:</h4>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1472 dtse-img dtse-post-1455" title="watermark" src="http://racotecnic.underave.net/wp-content/uploads/2010/04/watermark.jpeg" alt="" width="425" height="500" /></p>
<pre class="brush: php;">$this-&gt;Watermark-&gt;setImage($image_path);
$this-&gt;Watermark-&gt;setWatermark(array('file' =&gt; $watermark_file, 'position' =&gt; 'bottom right', 'size' =&gt; '150%'));
$this-&gt;Watermark-&gt;applyWatermark();
$this-&gt;Watermark-&gt;generate($dest_path);</pre>
<h4>All together:</h4>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1473 dtse-img dtse-post-1455" title="all_together" src="http://racotecnic.underave.net/wp-content/uploads/2010/04/all_together.jpeg" alt="" width="355" height="354" /></p>
<pre class="brush: php;">$this-&gt;Watermark-&gt;setImage($image_path);
$this-&gt;Watermark-&gt;setWatermark(array('file' =&gt; 'watermark.png', 'position' =&gt; 'bottom right', 'size' =&gt; '150%'));
$this-&gt;Watermark-&gt;resize(array('type' =&gt; 'resizecrop', 'size' =&gt; array('300', '200')));
$this-&gt;Watermark-&gt;applyWatermark();
$this-&gt;Watermark-&gt;rotateImage(array('degrees' =&gt; 45, 'bgcolor' =&gt; 0));
$this-&gt;Watermark-&gt;generate($dest_path);
</pre>
<p>Changing order:</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1475 dtse-img dtse-post-1455" title="all_together2" src="http://racotecnic.underave.net/wp-content/uploads/2010/04/all_together2.jpeg" alt="" width="300" height="200" /></p>
<pre class="brush: php;">$this-&gt;Watermark-&gt;setImage($image_path);
$this-&gt;Watermark-&gt;setWatermark(array('file' =&gt; 'watermark.png', 'position' =&gt; 'bottom right', 'size' =&gt; '150%'));
$this-&gt;Watermark-&gt;rotateImage(array('degrees' =&gt; 45, 'bgcolor' =&gt; 0));
$this-&gt;Watermark-&gt;resize(array('type' =&gt; 'resizecrop', 'size' =&gt; array('300', '200')));
$this-&gt;Watermark-&gt;applyWatermark();
$this-&gt;Watermark-&gt;generate($dest_path);</pre>
<h4>Show image instead of saving it:</h4>
<pre class="brush: php;">$this-&gt;Watermark-&gt;setImage($image_path);
$this-&gt;Watermark-&gt;generate(); // Without params</pre>
<h4>With errors:</h4>
<pre class="brush: php;">// every component method return false on error
if ( !$this-&gt;Watermark-&gt;setImage($image_path) )
{
	// whatever
	print_r($this-&gt;Watermark-&gt;errors);
}

if ( !$this-&gt;Watermark-&gt;resize(array('type' =&gt; 'resizecrop', 'size' =&gt; 250)) )
{
	// ...
}

if ( !$this-&gt;Watermark-&gt;generate() )
{
	// ...
}</pre>



		<!-- Added by WP-DragToShare-eXtended Plugin -->
		<script type="text/javascript">
			dtsv.dtse_post_1455_permalink = 'http://racotecnic.underave.net/2010/04/watermark-image-component-for-cakephp/';
			dtsv.dtse_post_1455_title = 'Watermark & Image Component for CakePHP';
		</script>
		<!-- End of WP-DragToShare-eXtended Plugin -->

<p style="font-weight:bold">Entrades relacionades:<ol><li><a href='http://racotecnic.underave.net/2009/12/cakephp-auth-component-ajaxlogin/' rel='bookmark' title='Permanent Link: CakePHP Auth Component ajaxLogin'>CakePHP Auth Component ajaxLogin</a></li>
<li><a href='http://racotecnic.underave.net/2010/02/validar-datos-duplicados-en-cakephp/' rel='bookmark' title='Permanent Link: Validar datos duplicados en CakePHP'>Validar datos duplicados en CakePHP</a></li>
<li><a href='http://racotecnic.underave.net/2009/06/subida-de-ficheros-en-cakephp-con-uploadify-y-jquery/' rel='bookmark' title='Permanent Link: Subida de ficheros en CakePHP 1.2 con uploadify y jQuery'>Subida de ficheros en CakePHP 1.2 con uploadify y jQuery</a></li>
<li><a href='http://racotecnic.underave.net/2009/07/leer-y-editar-etiquetas-id3v1-e-id3v2-con-cakephp/' rel='bookmark' title='Permanent Link: Leer y editar etiquetas ID3v1 e ID3v2 con CakePHP 1.2'>Leer y editar etiquetas ID3v1 e ID3v2 con CakePHP 1.2</a></li>
<li><a href='http://racotecnic.underave.net/2009/10/subida-de-ficheros-con-uploadify-y-validacion-ajax-en-cakephp/' rel='bookmark' title='Permanent Link: Subida de ficheros con Uploadify y validación Ajax en CakePHP'>Subida de ficheros con Uploadify y validación Ajax en CakePHP</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://racotecnic.underave.net/2010/04/watermark-image-component-for-cakephp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gigya: Todas las redes sociales optimizadas para el desarrollo</title>
		<link>http://racotecnic.underave.net/2010/04/gigya-todas-las-redes-sociales-optimizadas-para-el-desarrollo/</link>
		<comments>http://racotecnic.underave.net/2010/04/gigya-todas-las-redes-sociales-optimizadas-para-el-desarrollo/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 14:01:37 +0000</pubDate>
		<dc:creator>Booletaire</dc:creator>
				<category><![CDATA[Programació]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Xarxes Socials]]></category>
		<category><![CDATA[Connect]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Gigya]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[Joomla]]></category>
		<category><![CDATA[LinkedIn]]></category>
		<category><![CDATA[MySpace]]></category>
		<category><![CDATA[OpenID]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Yahoo]]></category>

		<guid isPermaLink="false">http://racotecnic.underave.net/?p=1446</guid>
		<description><![CDATA[¿Cuántas veces has tenido que integrar una de tus aplicaciones web con Facebook? Y después de Facebook, tuviste que hacer la integración con Twitter, la de LinkedIn y otras tantas más. Con Gigya tienes una API unificada para la mayor parte de las redes sociales. En apenas media hora habrás integrado el login de tu [...]]]></description>
			<content:encoded><![CDATA[<p>¿Cuántas veces has tenido que integrar una de tus aplicaciones web con <a rel="nofollow" href="http://www.facebook.com" target="_blank">Facebook</a>? Y después de Facebook, tuviste que hacer la integración con <a rel="nofollow" href="http://www.twitter.com" target="_blank">Twitter</a>, la de <a rel="nofollow" href="http://www.linkedin.com" target="_blank">LinkedIn</a> y otras tantas más.</p>
<p>Con <a rel="nofollow" href="http://www.gigya.com" target="_blank">Gigya</a> tienes una API unificada para la mayor parte de las redes sociales. En apenas media hora habrás integrado el login de tu página con Facebook, Twitter, LinkedIn, <a rel="nofollow" href="http://www.openid.net/" target="_blank">OpenID</a>, <a rel="nofollow" href="http://www.yahoo.com" target="_blank">Yahoo</a>, <a rel="nofollow" href="http://www.myspace.com" target="_blank">MySpace</a> o cualquier otra de las redes sociales que puedes integrar con Gigya.</p>
<p>Para utilizarlo simplemente necesitas registrarte en su web y añadir aquellos servicios que quieras utilizar desde el panel de control:</p>
<p style="text-align: left;"><a href="http://racotecnic.underave.net/wp-content/uploads/2010/04/gigya_1.png"><img class="size-medium wp-image-1447 aligncenter dtse-img dtse-post-1446" title="gigya_1" src="http://racotecnic.underave.net/wp-content/uploads/2010/04/gigya_1-300x159.png" alt="" width="300" height="159" /></a>Además de la integración que podáis hacer vosotros mismos junto con la <a rel="nofollow" href="http://wiki.gigya.com/" target="_blank">documentación de Gigya</a> podéis encontrar plugins e integraciones ya hechas para CMS como <a rel="nofollow" href="http://wiki.gigya.com/050_Socialize_Plugins/010_Wordpress_Plugin" target="_blank">WordPress</a> o <a rel="nofollow" href="http://extensions.joomla.org/extensions/external-contents/widgets/3168">Joomla</a>.</p>
<a href="http://www.crunchbase.com/company/gigya">CrunchBase Information on Gigya</a><br/>
<blockquote>
<ul>
<li><strong>Web oficial e Gigya:</strong> <a rel="nofollow" href="http://www.gigya.com" target="_blank" rel="nofollow">http://www.gigya.com</a></li>
<li><strong>Plugin e integración de Gigya con WordPress:</strong> <a href="http://wiki.gigya.com/050_Socialize_Plugins/010_Wordpress_Plugin" target="_blank" rel="nofollow">http://wiki.gigya.com/050_Socialize_Plugins/010_Wordpress_Plugin</a></li>
</ul>
</blockquote>



		<!-- Added by WP-DragToShare-eXtended Plugin -->
		<script type="text/javascript">
			dtsv.dtse_post_1446_permalink = 'http://racotecnic.underave.net/2010/04/gigya-todas-las-redes-sociales-optimizadas-para-el-desarrollo/';
			dtsv.dtse_post_1446_title = 'Gigya: Todas las redes sociales optimizadas para el desarrollo';
		</script>
		<!-- End of WP-DragToShare-eXtended Plugin -->

<p style="font-weight:bold">Entrades relacionades:<ol><li><a href='http://racotecnic.underave.net/2010/01/grave-vulnerabilidad-en-todas-las-versiones-de-windows/' rel='bookmark' title='Permanent Link: Grave vulnerabilidad en todas las versiones de Windows'>Grave vulnerabilidad en todas las versiones de Windows</a></li>
<li><a href='http://racotecnic.underave.net/2010/02/css-hacks-para-firefox-internet-explorer-chrome-opera-safari/' rel='bookmark' title='Permanent Link: CSS hacks para Firefox, Internet Explorer, Chrome, Opera, Safari&#8230;'>CSS hacks para Firefox, Internet Explorer, Chrome, Opera, Safari&#8230;</a></li>
<li><a href='http://racotecnic.underave.net/2009/10/llego-la-hora-de-las-palomitas/' rel='bookmark' title='Permanent Link: Llegó la hora de las palomitas'>Llegó la hora de las palomitas</a></li>
<li><a href='http://racotecnic.underave.net/2009/04/crear-transicion-de-imagenes-para-gallery2-con-jquery/' rel='bookmark' title='Permanent Link: Crear transición de imágenes para Gallery2 con jQuery'>Crear transición de imágenes para Gallery2 con jQuery</a></li>
<li><a href='http://racotecnic.underave.net/2009/11/recursos-web-gratis/' rel='bookmark' title='Permanent Link: Recursos web gratis'>Recursos web gratis</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://racotecnic.underave.net/2010/04/gigya-todas-las-redes-sociales-optimizadas-para-el-desarrollo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web 2.0 &#8230; The Machine is Us/ing Us</title>
		<link>http://racotecnic.underave.net/2010/03/web-2-0-the-machine-is-using-us/</link>
		<comments>http://racotecnic.underave.net/2010/03/web-2-0-the-machine-is-using-us/#comments</comments>
		<pubDate>Sun, 21 Mar 2010 10:01:15 +0000</pubDate>
		<dc:creator>DPAM23</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[2.0]]></category>
		<category><![CDATA[identity]]></category>
		<category><![CDATA[privacy]]></category>
		<category><![CDATA[web 2.0]]></category>

		<guid isPermaLink="false">http://racotecnic.underave.net/?p=1436</guid>
		<description><![CDATA[dtsv.dtse_post_1436_permalink = 'http://racotecnic.underave.net/2010/03/web-2-0-the-machine-is-using-us/'; dtsv.dtse_post_1436_title = 'Web 2.0 … The Machine is Us/ing Us'; No hi ha cap entrada relacionada]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/6gmP4nk0EOE&amp;hl=en_US&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/6gmP4nk0EOE&amp;hl=en_US&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>



		<!-- Added by WP-DragToShare-eXtended Plugin -->
		<script type="text/javascript">
			dtsv.dtse_post_1436_permalink = 'http://racotecnic.underave.net/2010/03/web-2-0-the-machine-is-using-us/';
			dtsv.dtse_post_1436_title = 'Web 2.0 … The Machine is Us/ing Us';
		</script>
		<!-- End of WP-DragToShare-eXtended Plugin -->

<p style="font-weight:bold">No hi ha cap entrada relacionada</p>]]></content:encoded>
			<wfw:commentRss>http://racotecnic.underave.net/2010/03/web-2-0-the-machine-is-using-us/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UND-001 : Ja a la venta!</title>
		<link>http://racotecnic.underave.net/2010/03/und-001-ja-a-la-venta/</link>
		<comments>http://racotecnic.underave.net/2010/03/und-001-ja-a-la-venta/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 09:46:33 +0000</pubDate>
		<dc:creator>Booletaire</dc:creator>
				<category><![CDATA[Audio]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://racotecnic.underave.net/?p=1434</guid>
		<description><![CDATA[Tots aquells que estàveu dubtant si fer una donació a underave o no, aquesta és la vostra oportunitat per col.laborar. Sigueu partíceps d&#8217;aquest moment històric !!! El primer vinil d&#8217;underave ja és a la venda!! Felicitats a tots els implicats. Disponible a toolbox i altres tendes de vinils. Visitar toolbox dtsv.dtse_post_1434_permalink = 'http://racotecnic.underave.net/2010/03/und-001-ja-a-la-venta/'; dtsv.dtse_post_1434_title = [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;">
<p style="text-align: left;">Tots aquells que estàveu dubtant si fer una <a href="http://forums.underave.net/viewtopic.php?f=1&amp;t=12905" target="bar">donació</a> a underave o no, aquesta és la  vostra oportunitat per col.laborar.</p>
<p>Sigueu partíceps d&#8217;aquest moment  històric !!!</p>
<p>El primer vinil d&#8217;underave ja és a la venda!!</p>
<p>Felicitats  a tots els implicats.</p>
<p style="text-align: center;">
<p style="text-align: center;"><a href="http://blog.underave.net/wp-content/uploads/2010/03/und_0001_blog.jpg"><img class="size-full wp-image-978  aligncenter dtse-img dtse-post-1434" title="und_0001_blog" src="http://blog.underave.net/wp-content/uploads/2010/03/und_0001_blog.jpg" alt="" width="500" height="500" /></a></p>
<h2 style="text-align: center;"><span style="color: #ff6600;"><strong>Disponible a <a title="UND-001" href="http://www.toolboxrecords.com/en/product/11544/exclusives-and-important-news/Underave-01/" target="_blank">toolbox</a> i altres tendes de vinils.</strong></span></h2>
<p><span style="color: #ff6600;"><strong><span style="color: #c0c0c0;"><a title="Tollbox" href="http://www.toolboxrecords.com/en/product/11544/exclusives-and-important-news/Underave-01/" target="_blank">Visitar toolbox</a></span></p>
<p></strong></span></p>
<p><span style="color: #ff6600;"><strong></p>
<p></strong></span></p>



		<!-- Added by WP-DragToShare-eXtended Plugin -->
		<script type="text/javascript">
			dtsv.dtse_post_1434_permalink = 'http://racotecnic.underave.net/2010/03/und-001-ja-a-la-venta/';
			dtsv.dtse_post_1434_title = 'UND-001 : Ja a la venta!';
		</script>
		<!-- End of WP-DragToShare-eXtended Plugin -->

<p style="font-weight:bold">No hi ha cap entrada relacionada</p>]]></content:encoded>
			<wfw:commentRss>http://racotecnic.underave.net/2010/03/und-001-ja-a-la-venta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Validar datos duplicados en CakePHP</title>
		<link>http://racotecnic.underave.net/2010/02/validar-datos-duplicados-en-cakephp/</link>
		<comments>http://racotecnic.underave.net/2010/02/validar-datos-duplicados-en-cakephp/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 20:28:51 +0000</pubDate>
		<dc:creator>Booletaire</dc:creator>
				<category><![CDATA[Programació]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[CakePHP 1.1]]></category>
		<category><![CDATA[Codi]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Snippet]]></category>

		<guid isPermaLink="false">http://racotecnic.underave.net/?p=1406</guid>
		<description><![CDATA[Hoy mismo he necesitado de una validación para verificar si un dato ya existe en la base de datos. Dado que CakePHP 1.1 (en versiones posteriores a la 1.2 podéis utilizar &#8220;isUnique&#8221;) no lleva una validación en su núcleo para estos menesteres he tenido que crearla y ahora la comparto con vosotros: /** * Verifica [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy mismo he necesitado de una validación para verificar si un dato ya existe en la base de datos. Dado que CakePHP 1.1 (en versiones posteriores a la 1.2 podéis utilizar &#8220;isUnique&#8221;) no lleva una validación en su núcleo para estos menesteres he tenido que crearla y ahora la comparto con vosotros:</p>
<pre class="brush: php;">/**
 * Verifica si un campo existe en la base de datos
 * Si estamos editando se excluye el valor guardado en la validación
 * @param array $data
 * @param string $field Nom de la cel·la a verificar
 * @return
 */

public function checkUnique($data)
{
	$field = array_pop(array_keys($data));
	$data = array_pop(array_values($data));

	// Si estem editant...
	if(isset($this-&gt;data[$this-&gt;name]['id']))
	{
		if ($field == $this-&gt;field($field, array($this-&gt;name . '.id' =&gt; $this-&gt;data[$this-&gt;name]['id'])))
		{
			return true;
		}
	}
	// Si no estem editant...
	if($this-&gt;hasField($field)) {
		return $this-&gt;isUnique(array($field =&gt; $data));
	}
}</pre>
<p>Para utilizarlo no tenéis más que añadir el trozo de código en el modelo deseado (normalmente en AppModel, para poder utilizarlo desde cualquier modelo) y añadir la validación en el modelo que queráis:</p>
<pre class="brush: php;">var $validate = array('NOMBRE DE LA CELDA A VALIDAR' =&gt; array(
	'rule'		=&gt; 'checkUnique',
	'message' 	=&gt; 'Blahblahblah'));</pre>
<p>Un ejemplo muy común:</p>
<pre class="brush: php;">var $validate = array('username' =&gt; array(
	'rule'		=&gt; 'checkUnique',
	'message' 	=&gt; 'Ya existe un usuario registrado con este nombre!'));</pre>
<p>Que lo disfrutéis <img class="dtse-img dtse-post-1406" src='http://racotecnic.underave.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>Edición:</strong> Se me olvidó comentar que, a diferencia del método de validación <i>checkUnique</i> que se utiliza en el post <a href="http://racotecnic.underave.net/2010/01/integrando-cakephp-y-phpbb-3-x/">Inegrando CakePHP y PhpBB 3.x</a>, este método sirve también a la hora de editar un ítem ya que, en ese caso, retorna <code>true</code> si el valor de la celda coincide con el ya guardado en la base de datos.</p>



		<!-- Added by WP-DragToShare-eXtended Plugin -->
		<script type="text/javascript">
			dtsv.dtse_post_1406_permalink = 'http://racotecnic.underave.net/2010/02/validar-datos-duplicados-en-cakephp/';
			dtsv.dtse_post_1406_title = 'Validar datos duplicados en CakePHP';
		</script>
		<!-- End of WP-DragToShare-eXtended Plugin -->

<p style="font-weight:bold">Entrades relacionades:<ol><li><a href='http://racotecnic.underave.net/2009/11/instalacion-de-cakephp-sin-base-de-datos/' rel='bookmark' title='Permanent Link: Instalación de CakePHP sin base de datos'>Instalación de CakePHP sin base de datos</a></li>
<li><a href='http://racotecnic.underave.net/2009/12/cakephp-auth-component-ajaxlogin/' rel='bookmark' title='Permanent Link: CakePHP Auth Component ajaxLogin'>CakePHP Auth Component ajaxLogin</a></li>
<li><a href='http://racotecnic.underave.net/2010/01/integrando-cakephp-y-phpbb-3-x/' rel='bookmark' title='Permanent Link: Integrando CakePHP y phpBB 3.x'>Integrando CakePHP y phpBB 3.x</a></li>
<li><a href='http://racotecnic.underave.net/2009/05/obtener-informacion-post-de-manera-rapida-y-sencilla-con-php/' rel='bookmark' title='Permanent Link: Obtener datos POST de manera rápida y sencilla con PHP'>Obtener datos POST de manera rápida y sencilla con PHP</a></li>
<li><a href='http://racotecnic.underave.net/2009/07/leer-y-editar-etiquetas-id3v1-e-id3v2-con-cakephp/' rel='bookmark' title='Permanent Link: Leer y editar etiquetas ID3v1 e ID3v2 con CakePHP 1.2'>Leer y editar etiquetas ID3v1 e ID3v2 con CakePHP 1.2</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://racotecnic.underave.net/2010/02/validar-datos-duplicados-en-cakephp/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>MyJDB, un sistema de base de datos en JavaScript</title>
		<link>http://racotecnic.underave.net/2010/02/myjdb-un-sistema-de-base-de-datos-en-javascript/</link>
		<comments>http://racotecnic.underave.net/2010/02/myjdb-un-sistema-de-base-de-datos-en-javascript/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 19:47:40 +0000</pubDate>
		<dc:creator>Booletaire</dc:creator>
				<category><![CDATA[Programació]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Bases de dades]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JavaScriptDB]]></category>
		<category><![CDATA[MyJDB]]></category>

		<guid isPermaLink="false">http://racotecnic.underave.net/?p=1401</guid>
		<description><![CDATA[El próximo lunes 1 de marzo (de 2010) verá la luz la primera versión de MyJDB, un sistema de bases de datos inspirado en JavaScriptDB (muerto hacia el 2005..) resucitado por Luis García. Lo mas destacado de esta versión (beta 1.1.0), que es más un puente hacia lo que se quiere llegar, es la optimización [...]]]></description>
			<content:encoded><![CDATA[<p>El próximo lunes 1 de marzo (de 2010) verá la luz la primera versión de <a title="Web oficial de MyJDB" href="http://www.myjdb.org/" target="_blank">MyJDB</a>, un sistema de bases de datos inspirado en JavaScriptDB (muerto hacia el 2005..) resucitado por Luis García.</p>
<p>Lo mas destacado de esta versión (beta 1.1.0), que es más un puente hacia lo que se quiere llegar, es la optimización del código, aunque es la primera optimización los resultados han sido cuanto menos sorprendentes. Entre sus cambios destacan los siguientes:</p>
<ul>
<li>Relicenciamiento a GPL 3.</li>
<li>Documentación interna completa y en Ingles, así como las variables que pasan del catalán al ingles para internacionalizar el proyecto.</li>
<li>Reestructuración completa del código.</li>
<li>Nuevo analizador sintactico del Select sobre un 40% más rápido.</li>
<li>Tipado de datos de los campos de las tablas, lo que nos ayuda a evaluar correctamente números, cadenas y sobre todo fechas.</li>
<li>El algoritmo para realizar JOIN entre dos tablas es alrededor de 640 veces más rápido.</li>
<li>Se ha añadido el uso de between, el uso de parentesis, reconocimiento de &#8216;&lt;=&gt;&#8217;.</li>
<li>Implementación de la clausula limit.</li>
<li>Reconocimiento de is, is not, is null, is not null y unknown.</li>
<li>Realización de un select con sólo contando el tiempo de la clausula where alrededor de un 40 veces más rápido.</li>
<li>Evaluación de la clausula where alrededor de un 94% más rápido.</li>
<li>La evaluación de una condición LIKE es alrededor de 8 veces más rápida.</li>
<li>La clausula Order by es alrededor de 2 veces más rápido.</li>
</ul>
<p>Los tiempos han sido medidos con Firefox y el prerfilador de Firebug, con lo que aun queda probarlo en el resto de navegadores, y este es el objetivo de lanzar la beta, probarla y hacerla compatibles con el resto de navegadores (no van a incluir IE6, sólo versiones de IE7 hacia arriba).</p>
<p>Yo personalmente me pregunto cómo será todo el tema de la seguridad&#8230; ya que siendo una base de datos mediante JavaScript lo primero en lo que pienso es la manipulación que se puede hacer de código gracias a aplicaciones como firebug.</p>



		<!-- Added by WP-DragToShare-eXtended Plugin -->
		<script type="text/javascript">
			dtsv.dtse_post_1401_permalink = 'http://racotecnic.underave.net/2010/02/myjdb-un-sistema-de-base-de-datos-en-javascript/';
			dtsv.dtse_post_1401_title = 'MyJDB, un sistema de base de datos en JavaScript';
		</script>
		<!-- End of WP-DragToShare-eXtended Plugin -->

<p style="font-weight:bold">Entrades relacionades:<ol><li><a href='http://racotecnic.underave.net/2009/11/instalacion-de-cakephp-sin-base-de-datos/' rel='bookmark' title='Permanent Link: Instalación de CakePHP sin base de datos'>Instalación de CakePHP sin base de datos</a></li>
<li><a href='http://racotecnic.underave.net/2010/02/validar-datos-duplicados-en-cakephp/' rel='bookmark' title='Permanent Link: Validar datos duplicados en CakePHP'>Validar datos duplicados en CakePHP</a></li>
<li><a href='http://racotecnic.underave.net/2009/05/obtener-informacion-post-de-manera-rapida-y-sencilla-con-php/' rel='bookmark' title='Permanent Link: Obtener datos POST de manera rápida y sencilla con PHP'>Obtener datos POST de manera rápida y sencilla con PHP</a></li>
<li><a href='http://racotecnic.underave.net/2009/01/registro-de-usuarios-externo-a-wordpress/' rel='bookmark' title='Permanent Link: Registro de usuarios externo a WordPress'>Registro de usuarios externo a WordPress</a></li>
<li><a href='http://racotecnic.underave.net/2010/07/errores-404-con-ajax-y-jquery-en-cakephp/' rel='bookmark' title='Permanent Link: Errores 404 con Ajax (y jQuery) en CakePHP'>Errores 404 con Ajax (y jQuery) en CakePHP</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://racotecnic.underave.net/2010/02/myjdb-un-sistema-de-base-de-datos-en-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
