<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>¡No Quiero Programar!</title>
	
	<link>http://www.noquieroprogramar.com</link>
	<description>En este blog encontraras articulos relacionados con la programacion web: php, xhtml, javascript, css, jquery, codeigniter.</description>
	<lastBuildDate>Thu, 16 Jul 2009 13:58:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/noquieroprogramar" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>Busco colaboradores / escritores</title>
		<link>http://www.noquieroprogramar.com/busco-colaboradores-escritores/</link>
		<comments>http://www.noquieroprogramar.com/busco-colaboradores-escritores/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 13:58:03 +0000</pubDate>
		<dc:creator>Lagarto</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://www.noquieroprogramar.com/?p=82</guid>
		<description><![CDATA[Buenas, hacía tiempo que no escribía por estos lares.. la verdad que me gustaría tener el blog más activo y he recibido varios mails vuestros respecto a este tema. La verdad que por falta de tiempo y a veces de ideas no escribo mas artículos en el blog por eso he decidido buscar una solución.
Busco [...]]]></description>
			<content:encoded><![CDATA[<p>Buenas, hacía tiempo que no escribía por estos lares.. la verdad que me gustaría tener el blog más activo y he recibido varios mails vuestros respecto a este tema. La verdad que por falta de tiempo y a veces de ideas no escribo mas artículos en el blog por eso he decidido buscar una solución.</p>
<p>Busco gente entendida en temas que se tratan en este blog: CodeIgniter, PHP, XHTML, CSS y cualquier cosa relacionada con el mundo web, que les gustaría participar en este blog como escritores y colaboradores.</p>
<p>Incluso si tenéis alguna sugerencia sobre algún tema nuevo a tratar no seguro que podemos llegar a un acuerdo. Venga animo y apuntaros!</p>

<p><a href="http://feedads.g.doubleclick.net/~a/bNLhv7GzkVe3YHsccgTijR8ANFg/0/da"><img src="http://feedads.g.doubleclick.net/~a/bNLhv7GzkVe3YHsccgTijR8ANFg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/bNLhv7GzkVe3YHsccgTijR8ANFg/1/da"><img src="http://feedads.g.doubleclick.net/~a/bNLhv7GzkVe3YHsccgTijR8ANFg/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.noquieroprogramar.com/busco-colaboradores-escritores/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Usando CodeIgniter para crear aplicaciones en Facebook</title>
		<link>http://www.noquieroprogramar.com/usando-codeigniter-para-crear-aplicaciones-en-facebook/</link>
		<comments>http://www.noquieroprogramar.com/usando-codeigniter-para-crear-aplicaciones-en-facebook/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 14:14:45 +0000</pubDate>
		<dc:creator>Lagarto</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.noquieroprogramar.com/?p=80</guid>
		<description><![CDATA[Desde SentidoWeb, me entero de que se pueden crear aplicaciones de Facebook utilizando el framework CodeIgniter.
Nos encontramos 4 links con tutoriales bastantes bien explicados (en ingles) de como aprender a usarlo. Por lo que he podido ver básicamente es añadir una librería y configurarla con los 4 parámetros que nos da Facebook, por todo lo [...]]]></description>
			<content:encoded><![CDATA[<p>Desde <a href="http://sentidoweb.com/2009/06/08/crear-aplicaciones-facebook-con-codeigniter.php">SentidoWeb</a>, me entero de que se pueden crear aplicaciones de Facebook utilizando el framework CodeIgniter.</p>
<p>Nos encontramos 4 links con tutoriales bastantes bien explicados (en ingles) de como aprender a usarlo. Por lo que he podido ver básicamente es añadir una librería y configurarla con los 4 parámetros que nos da Facebook, por todo lo demás no parece que haya muchas mas complicaciones.</p>
<p>Si puedo intentaré escribir algún articulo al respecto.</p>
<ul>
<li><a href="http://junal.wordpress.com/2008/01/20/a-sample-facebook-application-with-codeigniter/">Junal on the Run &#8211; A sample Facebook application with CodeIgniter.</a></li>
<li><a href="http://www.simpleprojectz.com/2008/10/facebook-codeigniter/">IT Project Management &#8211; Facebook &#038; CodeIgniter &#8211; Definitive Guide</a></li>
<li><a href="http://paul.bringetto.com/2009/06/01/code-igniter-facebook-connectapplication-library/">pb &#8211; Code Igniter Facebook Connect/Application Library</a></li>
<li><a href="http://www.haughin.com/code/facebook/">Elliot Haughin &#8211; Facebook Connect CodeIgniter Library</a></li>
</ul>

<p><a href="http://feedads.g.doubleclick.net/~a/0rKjhtDfXvnEziKuFMxrR8K514A/0/da"><img src="http://feedads.g.doubleclick.net/~a/0rKjhtDfXvnEziKuFMxrR8K514A/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/0rKjhtDfXvnEziKuFMxrR8K514A/1/da"><img src="http://feedads.g.doubleclick.net/~a/0rKjhtDfXvnEziKuFMxrR8K514A/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.noquieroprogramar.com/usando-codeigniter-para-crear-aplicaciones-en-facebook/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>XtraUpload, un “Megaupload” en CodeIgniter</title>
		<link>http://www.noquieroprogramar.com/xtraupload-un-megaupload-en-codeigniter/</link>
		<comments>http://www.noquieroprogramar.com/xtraupload-un-megaupload-en-codeigniter/#comments</comments>
		<pubDate>Sat, 21 Mar 2009 09:42:45 +0000</pubDate>
		<dc:creator>Lagarto</dc:creator>
				<category><![CDATA[Aplicaciones reales]]></category>
		<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[CheckOut]]></category>
		<category><![CDATA[eGold]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[MegaUpload]]></category>
		<category><![CDATA[MoneyBrokers]]></category>
		<category><![CDATA[PayPal]]></category>
		<category><![CDATA[Rapidshare]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[StormPay]]></category>
		<category><![CDATA[upload]]></category>
		<category><![CDATA[XtraUpload]]></category>

		<guid isPermaLink="false">http://www.noquieroprogramar.com/?p=77</guid>
		<description><![CDATA[Vía Webmastelibre me entero de que existe un software gratuito creado en CodeIgniter que nos permite fácilmente crear nuestro propio sistema de &#8220;uploads&#8221; de archivos, que ahora están de moda los típicos &#8220;Rapidshare&#8221;, &#8220;MegaUpload&#8221;, etc..
Si mas no es interesante echarle un vistazo a estas herramientas, ya que así podemos ver como están hechas las aplicaciones [...]]]></description>
			<content:encoded><![CDATA[<p>Vía <a href="http://www.webmasterlibre.com/2009/03/20/xtraupload-monta-tu-propio-rapidshare/">Webmastelibre</a> me entero de que existe un software gratuito creado en CodeIgniter que nos permite fácilmente crear nuestro propio sistema de &#8220;uploads&#8221; de archivos, que ahora están de moda los típicos &#8220;Rapidshare&#8221;, &#8220;MegaUpload&#8221;, etc..</p>
<p>Si mas no es interesante echarle un vistazo a estas herramientas, ya que así podemos ver como están hechas las aplicaciones reales puesto que aquí normalmente trabajamos sobre tutoriales de ejemplos simples de aplicaciones.</p>
<p><a href="http://xtrafile.com/products/xtraupload-v2/">XtraUpload</a>, que asi se llama la aplición está escrito en PHP usando, como ya hemos dicho, el Framework de CodeIgniter. Tiene todas las caracteristicas que te esperarías para este tipo de paginas:</p>
<ul>
<li>Control de usuarios, tanto gratuitos como &#8220;Premium&#8221;.</li>
<li>Usuarios Premium tienen opciones interesantes adicionales.</li>
<li>Puedes especificar tipos de fichero, tamaños y en general configurar la aplicación a tu gusto.</li>
<li>Permite pagos con PayPal y otros.</li>
</ul>
<p>Lo interesante tambien de estas aplicaciones es indagar un poco en el codigo y ver como hacen determinadas cosas, como utilizan ciertas librerias, tanto de CodeIgniter como creadas por ellos mismos. Yo os recomiendo que echeis un vistazo de:</p>
<ul>
<li>Como está hecho todo el tema de verificación de usuarios (login, etc..)</li>
<li>Todo lo referente a las descargas de archivos, control deMB bajados, y otras caracteristicas</li>
<li>Como hacen para conectar con las pasarelas de pagos de PayPal, 2CheckOut, MoneyBrokers, StormPay y eGold.</li>
<li>Upload, como lo gestionan, como lo controlan, etc.</li>
<li>Como funcionan con los templates y themes.</li>
</ul>
<p>Yo la verdad que le he pegado un vistazo y he encontrado muchas cosas interesantes, y esta es otra manera de aprender.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/87WcXLXDWsi0zXL5DBfqxnMQ2RE/0/da"><img src="http://feedads.g.doubleclick.net/~a/87WcXLXDWsi0zXL5DBfqxnMQ2RE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/87WcXLXDWsi0zXL5DBfqxnMQ2RE/1/da"><img src="http://feedads.g.doubleclick.net/~a/87WcXLXDWsi0zXL5DBfqxnMQ2RE/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.noquieroprogramar.com/xtraupload-un-megaupload-en-codeigniter/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Usando ‘Hooks’ en CodeIgniter</title>
		<link>http://www.noquieroprogramar.com/usando-hooks-en-codeigniter/</link>
		<comments>http://www.noquieroprogramar.com/usando-hooks-en-codeigniter/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 07:25:57 +0000</pubDate>
		<dc:creator>Lagarto</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[Programación web]]></category>
		<category><![CDATA[config]]></category>
		<category><![CDATA[Constructor]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[hooks]]></category>
		<category><![CDATA[language class]]></category>
		<category><![CDATA[scaffolding]]></category>
		<category><![CDATA[session class]]></category>

		<guid isPermaLink="false">http://www.noquieroprogramar.com/?p=75</guid>
		<description><![CDATA[Muchas veces nos encontraremos, al programar nuestras aplicaciones, que necesitamos realizar una tarea en todas las paginas por igual, en un mismo momento. Hay una solución para eso, muy muy mala, que es hacer un copy&#38;paste del código en todas las paginas (si.. si.. quien no ha hecho eso alguna vez&#8230;).
Por suerte CodeIgniter nos trae [...]]]></description>
			<content:encoded><![CDATA[<p>Muchas veces nos encontraremos, al programar nuestras aplicaciones, que necesitamos realizar una tarea en todas las paginas por igual, en un mismo momento. Hay una solución para eso, muy muy mala, que es hacer un copy&amp;paste del código en todas las paginas (si.. si.. quien no ha hecho eso alguna vez&#8230;).</p>
<p>Por suerte CodeIgniter nos trae de la mano una buena herramienta llamada &#8216;Hooks&#8217; o ganchos, que simplemente nos permite hacer eso, ejecutar determinadas funciones en un determinado momento.</p>
<p>El &#8220;determinado momento&#8221;, básicamente puede ser:</p>
<ul>
<li><strong>pre_system</strong>: al principio de la ejecución del sistema, sin haber cargado básicamente nada.</li>
<li><strong>pre_controller</strong>: ejecutar antes de cargar el controlador, una vez cargadas las librerías y todo el systema básico.</li>
<li><strong>post_controller_constructor</strong>: justo se ejecutar tras el constructor del controlador pero antes de cualquier función.</li>
<li><strong>post_controller</strong>: se ejecutará una vez lo haya hecho el controlador.</li>
<li><strong>display_override</strong>: esto es para sobrescribir la función que nos muestra la pagina finalizada en el navegador.</li>
<li><strong>cache_override</strong>: lo mismo pero para la función de cache, nos permite sobreescrivirla.</li>
<li><strong>scaffolding_override</strong>: para crear nuestro propio <a title="En este tutorial se explica como funciona el scaffolding" href="http://www.noquieroprogramar.com/gestor-noticias-tercera-parte-vistas-y-bases-de-datos/">scaffolding</a>.</li>
<li><strong>post_system</strong>: ejecutará el código al final de todos los procedimientos.</li>
</ul>
<p>En la user_guide de Codeigniter podréis encontrar esta<a title="User_guide de CodeIgniter" href="http://codeigniter.com/user_guide/general/hooks.html"> información más extendida</a>.</p>
<p>Bien, para que quede más claro, vamos a ver un ejemplo. En este caso supondremos que estamos trabajando en una página web multilenguaje. Y queremos crear un &#8216;hook&#8217; que nos lea una variable de sesión que contiene el idioma que hay seleccionada y con eso nos cargue el idioma especificado (para los que no sepáis como funciona la &#8220;language class&#8221;, echarle <a href="http://codeigniter.com/user_guide/libraries/language.html">un vistazo en la guía</a>).<br />
<span id="more-75"></span><br />
Antes de empezar, necesitaremos activar los hooks en el config.php:</p>
<pre class="brush: php">$config[&#039;enable_hooks&#039;] = TRUE;</pre>
<p>Luego, accedemos al archivo &#8220;config/hooks.php&#8221;, y ahí definiremos nuestro hook y sus propiedades.</p>
<pre class="brush: php">/*
| -------------------------------------------------------------------------
| Hooks
| -------------------------------------------------------------------------
| This file lets you define &quot;hooks&quot; to extend CI without hacking the core
| files.  Please see the user guide for info:
|
|	http://codeigniter.com/user_guide/general/hooks.html
|
*/

$hook[&#039;post_controller_constructor&#039;] = array(
                                &#039;class&#039;    =&gt; &#039;Estado&#039;,
                                &#039;function&#039; =&gt; &#039;idiomas&#039;,
                                &#039;filename&#039; =&gt; &#039;estado.php&#039;,
                                &#039;filepath&#039; =&gt; &#039;hooks&#039;
                                );

/* End of file hooks.php */
/* Location: ./system/application/config/hooks.php */
</pre>
<p>En este caso podemos observar como usamos el evento &#8220;post_controller_constructor&#8221;, de manera que nos cargará justo después del constructor pero antes de cualquier función, por lo que será perfecto para definir en que idioma tenemos que trabajar.</p>
<p><strong>Class</strong>: nos define que clase tenemos que cargar. Como veréis en el código mas adelante, vamos a cargar una clase que se llama Estado.</p>
<p><strong>Function</strong>: como se llama la función que vamos a cargar, que por supuesto estará dentro de nuestra clase especificada.</p>
<p><strong>Filename</strong>: en que archivo se encuentran la clase y la función especificada anteriormente? Ese archivo deberá ir colocado en &#8220;application/hooks&#8221;, en nuestro caso es &#8220;estado.php&#8221;.</p>
<p><strong>Filepath</strong>: aquí definimos en que carpeta se encuentra nuestro archivo. Por defecto mira en la carpeta &#8220;hooks&#8221;, aunque podéis cambiar esto por &#8220;controllers&#8221; o algo así, aunque yo os recomiendo mantenerlo en &#8220;hooks&#8221; para tenerlo mas ordenado.</p>
<p>Una vez tenemos esto, procedemos a crear nuestro código</p>
<pre class="brush: php">	if(!defined(&#039;BASEPATH&#039;))
		exit(&#039;No direct script access allowed&#039;);

	class Estado
	{
		function idiomas()
		{
			$CI =&amp; get_instance();

			$lang = $CI-&gt;session-&gt;userdata(&#039;idioma&#039;);
			if(empty($lang))
			{
				$lang = &quot;spanish&quot;;
				$CI-&gt;session-&gt;set_userdata(array(&#039;idioma&#039;=&gt;&#039;spanish&#039;));
			}

			$CI-&gt;lang-&gt;load(&#039;global&#039;, $lang);
		}
	}</pre>
<p>Como podéis ver, este código es muy simple. Recogemos el valor de una variable &#8217;session&#8217;, hacemos una comprobación por si no existe y creamos una por defecto, luego cargamos el idioma según esa variable.</p>
<p>Bueno espero que con el ejemplo haya quedado claro, seguro que le encontráis muchas funcionalidades, la verdad es que son muy útiles.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/DUW9_8FjmwP9hONYvNaOWom4AfQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/DUW9_8FjmwP9hONYvNaOWom4AfQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/DUW9_8FjmwP9hONYvNaOWom4AfQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/DUW9_8FjmwP9hONYvNaOWom4AfQ/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.noquieroprogramar.com/usando-hooks-en-codeigniter/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Extender Helpers en CodeIgniter</title>
		<link>http://www.noquieroprogramar.com/extender-helpers-en-codeigniter/</link>
		<comments>http://www.noquieroprogramar.com/extender-helpers-en-codeigniter/#comments</comments>
		<pubDate>Mon, 16 Mar 2009 07:14:19 +0000</pubDate>
		<dc:creator>Lagarto</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[Programación web]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[autoload]]></category>
		<category><![CDATA[helper]]></category>
		<category><![CDATA[load model]]></category>
		<category><![CDATA[post]]></category>

		<guid isPermaLink="false">http://www.noquieroprogramar.com/?p=73</guid>
		<description><![CDATA[Los &#8216;Helpers&#8216; de CodeIgniter son básicamente pequeñas librerías con 4 o 5 funciones que nos dan funcionalidades que nos ayudan con los problemas típicos al crear webs. A medida que vayamos experimentando y avanzando con la programación de una web nos encontraremos con que necesitamos añadir nuevas funcionalidades a los helpers existentes o a veces [...]]]></description>
			<content:encoded><![CDATA[<p>Los &#8216;<a href="http://codeigniter.com/user_guide/general/helpers.html">Helpers</a>&#8216; de CodeIgniter son básicamente pequeñas librerías con 4 o 5 funciones que nos dan funcionalidades que nos ayudan con los problemas típicos al crear webs. A medida que vayamos experimentando y avanzando con la programación de una web nos encontraremos con que necesitamos añadir nuevas funcionalidades a los helpers existentes o a veces modificar las que ya están hechas.</p>
<p>Podemos pensar en ir a la carpeta &#8220;system&#8221; ahí buscar el helper y modificarlo. Si, se puede hacer pero es una manera muy &#8220;guarra&#8221; de proceder, básicamente por dos razones:</p>
<ul>
<li>Nos actualizan el CodeIgniter y coincide que modifican ese helper, vamos a tener un problema.</li>
<li>Queremos reutilizar código, es muy engorroso ir haciendo copy&amp;paste de funciones de algunos helpers.</li>
</ul>
<p><span id="more-73"></span>Por ello, CodeIgniter nos da una herramienta para poder hacerlo y a la vez evitar estos problemas. Es tan fácil como añadir un fichero en la carpeta &#8220;application/helpers&#8221; que se llame &#8220;MY_&lt;nombre_del_helper_a_extender&gt;.php&#8221;.</p>
<blockquote><p>Nota: el prefijo MY_ se puede cambiar por otro que queramos (que no sea CI, ya que es el que usa el sistema) en el config.php.</p></blockquote>
<p>Veamos un ejemplo, queremos  añadir una nueva función al <a href="http://codeigniter.com/user_guide/helpers/array_helper.html">array helper</a> que nos servira para codificar en utf8 (muy util, por cierto para los tipicos $_POST). Vamos a proceder en crear un archivo que se llame &#8220;MY_array_helper.php&#8221; en la carpeta &#8220;application/helpers&#8221; tal y como hemos comentado.</p>
<p>Añadiremos este codigo:</p>
<pre class="brush: php">&lt; ?php
	if(!defined(&#039;BASEPATH&#039;))
		exit(&#039;No direct script access allowed&#039;);

	function to_utf8($in)
	{
		if(is_array($in))
		{
			foreach ($in as $key =&gt; $value)
			{
				$out[to_utf8($key)] = to_utf8($value);
			}
		}
		elseif(is_string($in))
		{
			return utf8_encode($in);
		}
		else
		{
			return $in;
		}

		return $out;
	}
?&gt;</pre>
<p>Y ya esta, muy simple. Ahora simplemente habria que cargar el helper con el &#8220;config/autoload.php&#8221; o simplemente asi:</p>
<pre class="brush: php">$this-&gt;load-&gt;helper(”array”);</pre>
<p>En caso de que queráis modificar o sobrescribir una función de algún helper, es hacer exactamente lo mismo pero poniéndole el mismo nombre.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/Hc1fBXw6x-sYcLX5m-zuLhDQpUM/0/da"><img src="http://feedads.g.doubleclick.net/~a/Hc1fBXw6x-sYcLX5m-zuLhDQpUM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Hc1fBXw6x-sYcLX5m-zuLhDQpUM/1/da"><img src="http://feedads.g.doubleclick.net/~a/Hc1fBXw6x-sYcLX5m-zuLhDQpUM/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.noquieroprogramar.com/extender-helpers-en-codeigniter/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Generar imagenes dinámicamente en CodeIgniter</title>
		<link>http://www.noquieroprogramar.com/generar-imagenes-dinamicamente-en-codeigniter/</link>
		<comments>http://www.noquieroprogramar.com/generar-imagenes-dinamicamente-en-codeigniter/#comments</comments>
		<pubDate>Fri, 13 Mar 2009 08:34:44 +0000</pubDate>
		<dc:creator>Lagarto</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[Programación web]]></category>
		<category><![CDATA[dynamic output]]></category>
		<category><![CDATA[Image Manipulation Class]]></category>
		<category><![CDATA[miniatura]]></category>
		<category><![CDATA[procesamiento]]></category>
		<category><![CDATA[resize]]></category>
		<category><![CDATA[thumbnail]]></category>

		<guid isPermaLink="false">http://www.noquieroprogramar.com/?p=69</guid>
		<description><![CDATA[A veces nos puede interesar crear imágenes dinámicamente a partir de alguna que ya tengamos alojada en nuestro servidor, a continuación veremos como hacerlo con la ayuda de CodeIgniter.
Una imagen generada dinámicamente puede tener varias ventajas como por ejemplo:

Podemos controlar fácilmente cuanta gente la esta viendo
Restringir la visión de esta a los usuarios que queramos
Evitar [...]]]></description>
			<content:encoded><![CDATA[<p>A veces nos puede interesar crear imágenes dinámicamente a partir de alguna que ya tengamos alojada en nuestro servidor, a continuación veremos como hacerlo con la ayuda de CodeIgniter.</p>
<p>Una imagen generada dinámicamente puede tener varias ventajas como por ejemplo:</p>
<ul>
<li>Podemos controlar fácilmente cuanta gente la esta viendo</li>
<li>Restringir la visión de esta a los usuarios que queramos</li>
<li>Evitar que los usuarios tengan acceso a la imagen original</li>
<li>Poder generar una imagen del tamaño que queramos según convenga</li>
<li>Generar thumbnails, o modificaciones de la imagen original sin tener que generar copias</li>
</ul>
<p>Esta ultima ventaja también nos trae a la desventaja, según lo que queramos, ya que al generar una imagen dinámicamente en PHP lo que estamos haciendo es aligerar la carga en el disco duro pero augmentar el tamaño del procesamiento, con lo que estamos cargando al servidor.<span id="more-69"></span>Para conseguir hacer eso es tan fácil como crear una función en CodeIgniter que con la ayuda de la librería de imágenes &#8220;<a href="http://codeigniter.com/user_guide/libraries/image_lib.html">Image Manipulation Class</a>&#8221; o &#8220;image_lib&#8221;. En la &#8220;user_guide&#8221; de CodeIgniter podéis ver que esta librería nos da un gran abanico de funciones y propiedades para poder trabajar con imágenes, pero por lo que nos interesa a nosotros usaremos solo unas pocas.</p>
<pre class="brush: php">class Imagenes extends Controller
{

	function Imagenes()
	{
		parent::Controller();
	}

	function index()
	{
		$this-&gt;load-&gt;view(&quot;imagen&quot;);
	}

	function muestraImagen($width, $height, $ratio)
	{
		$config[&#039;source_image&#039;] = &quot;imagen.jpg&quot;;
		$config[&#039;maintain_ratio&#039;] = $ratio;
		$config[&#039;dynamic_output&#039;] = TRUE;
		$config[&#039;width&#039;] = $width;
		$config[&#039;height&#039;] = $height;

		$this-&gt;load-&gt;library(&#039;image_lib&#039;, $config);
		$this-&gt;image_lib-&gt;resize();
	}
}</pre>
<p>Como podéis ver, el código es bien sencillo, solo es necesario especificar el ancho, la altura, si queremos que mantenga el ratio (es decir las proporciones) y decirle donde se encuentra la imagen. Normalmente en una aplicación real la &#8220;url&#8221; de la imagen la sacareis de una base de datos.</p>
<p>A continuación en la vista es tan simple como en el atributo &#8220;src&#8221; de la imagen, hacer la llamada a nuestra función con los parámetros deseados.</p>
<pre class="brush: php">&lt;img src=&quot;index.php/imagenes/muestraImagen/300/300/1&quot; /&gt;</pre>
<p>Aquí tenéis una <a title="Página de demostración de este artículo" href="http://sandbox.noquieroprogramar.com/apps/imagenes_dinamicas/">DEMO</a> para que veáis que funciona de verdad.</p>
<p>Para acabar comentaros, que para crear un thumbnail de una imagen (al disco duro), es casi idéntico a esto, solo que cambia el parámetro de &#8220;dynamic_output&#8221; y un par de cosas mas que os lo dejo en el aire para que podáis indagar vosotros mismos.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/pHf2Y_ZdPUvAEKM3W8mDEsAxvD8/0/da"><img src="http://feedads.g.doubleclick.net/~a/pHf2Y_ZdPUvAEKM3W8mDEsAxvD8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/pHf2Y_ZdPUvAEKM3W8mDEsAxvD8/1/da"><img src="http://feedads.g.doubleclick.net/~a/pHf2Y_ZdPUvAEKM3W8mDEsAxvD8/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.noquieroprogramar.com/generar-imagenes-dinamicamente-en-codeigniter/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Haciendo una buena instalación de CakePHP</title>
		<link>http://www.noquieroprogramar.com/haciendo-una-buena-instalacion-de-cakephp/</link>
		<comments>http://www.noquieroprogramar.com/haciendo-una-buena-instalacion-de-cakephp/#comments</comments>
		<pubDate>Tue, 30 Dec 2008 16:15:35 +0000</pubDate>
		<dc:creator>Lagarto</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[base de datos]]></category>
		<category><![CDATA[configuración]]></category>
		<category><![CDATA[instalación]]></category>

		<guid isPermaLink="false">http://www.noquieroprogramar.com/?p=61</guid>
		<description><![CDATA[Bueno lo primero que habrá que hacer es instalar correctamente CakePHP para empezar a probar y aprender un poquito.
- Nos dirijiremos a la página web de CakePHP y bajaremos la ultima versión, yo en este caso he bajado la versión &#8220;1.2.0.7945 RC4&#8243;, supongo que cualquier versión que sea 1.2.xxx será todo igual. Pondremos todos los [...]]]></description>
			<content:encoded><![CDATA[<p>Bueno lo primero que habrá que hacer es instalar correctamente CakePHP para empezar a probar y aprender un poquito.</p>
<p>- Nos dirijiremos a la página web de CakePHP y bajaremos la ultima versión, yo en este caso he bajado la versión &#8220;1.2.0.7945 RC4&#8243;, supongo que cualquier versión que sea 1.2.xxx será todo igual. Pondremos todos los archivos bajados en nuestro servidor (ya sea local o remoto).</p>
<p><span style="color: #ff6600;"><strong>Ojo!</strong></span> Hay que tener activado el módulo &#8220;Mod_Rewrite&#8221;, lo mas seguro esque ya lo tengáis activado, en este caso veréis algo parecido a esto <a href="http://www.noquieroprogramar.com/wp-content/uploads/2008/12/captura20081227171210.jpg">[captura]</a>, en caso de que no lo tengáis activado veréis algo sin &#8220;estilos cargados&#8221; <a href="http://www.noquieroprogramar.com/wp-content/uploads/2008/12/captura20081227172230.jpg">[captura]</a>.</p>
<p>- Ahora hay que darle permisos de escritura a la carpeta &#8220;tmp&#8221; dentro de la carpeta app/</p>
<p>- Pasamos a crear una base de datos y añadimos los datos de conexión en app/config/database.php</p>
<p>- Cambiamos la cadena de seguridad en app/config/core.php, donde pone &#8220;Configure::write(&#8217;Security.salt&#8217;, &#8216;*****&#8217;);&#8221; ponemos cualquier combinación de letras y simbolos que queramos.</p>
<p>Si todo se ha configurar correctamente al acceder a la carpeta de la aplicación os tendran que salir 4 recuadros de color verde que os dicen:</p>
<p><span style="color: #008000;"><span class="notice success">Your tmp directory is writable.</span></span></p>
<p><span style="color: #008000;"><span class="notice success">The <em>FileEngine</em> is being used for caching. To change the config edit APP/config/core.php </span></span></p>
<p><span style="color: #008000;"><span class="notice success">Your database configuration file is present.</span></span></p>
<p><span style="color: #008000;"><span class="notice success">Cake is able to connect to the database.</span></span></p>
<p>Con esto ya seremos capaces de empezar a trabajar con CakePHP. Si os surge algún problema en la instalación no dudéis en preguntarmelo.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/QD2EA7iZSbopX2bceAmo_KBkhW0/0/da"><img src="http://feedads.g.doubleclick.net/~a/QD2EA7iZSbopX2bceAmo_KBkhW0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/QD2EA7iZSbopX2bceAmo_KBkhW0/1/da"><img src="http://feedads.g.doubleclick.net/~a/QD2EA7iZSbopX2bceAmo_KBkhW0/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.noquieroprogramar.com/haciendo-una-buena-instalacion-de-cakephp/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Empezamos con CakePHP</title>
		<link>http://www.noquieroprogramar.com/empezamos-con-cakephp/</link>
		<comments>http://www.noquieroprogramar.com/empezamos-con-cakephp/#comments</comments>
		<pubDate>Fri, 26 Dec 2008 22:48:33 +0000</pubDate>
		<dc:creator>Lagarto</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.noquieroprogramar.com/?p=57</guid>
		<description><![CDATA[ 

Bueno creo que ya van bastantes artículos sobre CodeIgniter, al menos -creo yo- para dar una base bastante buena a gente que empiece con él para que se pueda desenvolver en aplicaciones complejas. No es que me haya cansado o algo parecido, pero por razones de trabajo ahora tengo que &#8220;aprender&#8221; a usar otro framework [...]]]></description>
			<content:encoded><![CDATA[<p> </p>
<p><img class="alignleft" title="CakePHP" src="http://squio.nl/blog/wp-content/2008/02/cake12b.png" alt="" width="230" height="230" /></p>
<p>Bueno creo que ya van bastantes artículos sobre CodeIgniter, al menos -creo yo- para dar una base bastante buena a gente que empiece con él para que se pueda desenvolver en aplicaciones complejas. No es que me haya cansado o algo parecido, pero por razones de trabajo ahora tengo que &#8220;aprender&#8221; a usar otro framework de PHP, en este caso el agraciado es CakePHP.</p>
<p>En un primer vistazo puedo ver como tiene cosas muy parecidas a CodeIgniter (claro los dos son frameworks que siguen el modelo MVC) pero este es mucho mas estricto en ese tema.</p>
<p>Así que he pensado, porque no compartir con los lectores mi camino de aprendizaje de este nuevo framework, porque a veces es la mejor manera de aprender, con alguien que mas o menos esta a tu mismo nivel y que tiene los mismo problemas o dificultados a la hora de enfrentarse a este framework.</p>
<p>Por lo que de ahora en adelante creo que intentare focalizar algo mas en CakePHP, que la verdad que tiene mas &#8220;tela&#8221; que CI y es bueno saber un poco de todo para no encontrarte sorpresa en un futuro ¿no?</p>
<p> </p>
<p> </p>
<p>Enlaces: <a title="Página web oficial de CakePHP" href="http://cakephp.org">CakePHP</a></p>

<p><a href="http://feedads.g.doubleclick.net/~a/fkVoYPYsjxpBsLFl-MEPuXgwCwU/0/da"><img src="http://feedads.g.doubleclick.net/~a/fkVoYPYsjxpBsLFl-MEPuXgwCwU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/fkVoYPYsjxpBsLFl-MEPuXgwCwU/1/da"><img src="http://feedads.g.doubleclick.net/~a/fkVoYPYsjxpBsLFl-MEPuXgwCwU/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.noquieroprogramar.com/empezamos-con-cakephp/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Problemas</title>
		<link>http://www.noquieroprogramar.com/problemas/</link>
		<comments>http://www.noquieroprogramar.com/problemas/#comments</comments>
		<pubDate>Mon, 22 Dec 2008 18:50:56 +0000</pubDate>
		<dc:creator>Lagarto</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[problemas]]></category>
		<category><![CDATA[upload]]></category>

		<guid isPermaLink="false">http://www.noquieroprogramar.com/problemas/</guid>
		<description><![CDATA[Bueno por desgracia parece que alguien logró hackear el blog o alguna aplicación y hemos estado teniendo varios problema para restablecerlo todo.
Por razones de seguridad los ejemplos del &#8220;Subidor de Imágenes&#8221; han sido totalmente eliminados, aunque he dejado el código para que os lo podáis bajar.
Si veis algún problema o algo no dudéis en comentármelo.
]]></description>
			<content:encoded><![CDATA[<p>Bueno por desgracia parece que alguien logró hackear el blog o alguna aplicación y hemos estado teniendo varios problema para restablecerlo todo.</p>
<p>Por razones de seguridad los ejemplos del &#8220;Subidor de Imágenes&#8221; han sido totalmente eliminados, aunque he dejado el código para que os lo podáis bajar.</p>
<p>Si veis algún problema o algo no dudéis en comentármelo.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/j6LocWH0NMVWdoBI2cT3VYM_amc/0/da"><img src="http://feedads.g.doubleclick.net/~a/j6LocWH0NMVWdoBI2cT3VYM_amc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/j6LocWH0NMVWdoBI2cT3VYM_amc/1/da"><img src="http://feedads.g.doubleclick.net/~a/j6LocWH0NMVWdoBI2cT3VYM_amc/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.noquieroprogramar.com/problemas/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Subidor de Imagenes (Tercera parte): Subir y miniaturizar</title>
		<link>http://www.noquieroprogramar.com/subidor-de-imagenes-tercera-parte-subir-y-miniaturizar/</link>
		<comments>http://www.noquieroprogramar.com/subidor-de-imagenes-tercera-parte-subir-y-miniaturizar/#comments</comments>
		<pubDate>Wed, 24 Sep 2008 22:40:43 +0000</pubDate>
		<dc:creator>Lagarto</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[Subidor de imagenes]]></category>
		<category><![CDATA[File Uploading Class]]></category>
		<category><![CDATA[Image Manipulation Class]]></category>
		<category><![CDATA[miniatura]]></category>
		<category><![CDATA[resize]]></category>
		<category><![CDATA[subir archivo]]></category>
		<category><![CDATA[thumbnail]]></category>
		<category><![CDATA[upload]]></category>

		<guid isPermaLink="false">http://www.noquieroprogramar.com/?p=53</guid>
		<description><![CDATA[Bueno seguimos con lo del ultimo día. Ahora lo que nos queda hacer es el controlador que se ocupe de subir nuestro fichero en el servidor y luego cree una imagen en miniatura de esta (thumbnail).
Como ya dije en el articulo anterior, usaremos estas dos librerías: File Uploading Class y Image Manipulation Class.
Al ser un [...]]]></description>
			<content:encoded><![CDATA[<p>Bueno seguimos con lo del <a href="http://www.noquieroprogramar.com/subidor-de-imagenes-segunda-parte-base-de-datos-y-vistas/">ultimo día</a>. Ahora lo que nos queda hacer es el controlador que se ocupe de subir nuestro fichero en el servidor y luego cree una imagen en miniatura de esta (thumbnail).</p>
<p>Como ya dije en el articulo anterior, usaremos estas dos librerías: <a href="http://codeigniter.com/user_guide/libraries/file_uploading.html">File Uploading Class</a> y <a href="http://codeigniter.com/user_guide/libraries/image_lib.html">Image Manipulation Class</a>.</p>
<p>Al ser un solo formulario lo haremos todo en una misma función del controlador. Para empezar necesitaremos subir el archivo al servidor y a su vez almacenar la información en la base de datos:</p>
<pre class="brush: php">				$config[&#039;upload_path&#039;] = &#039;./uploads/&#039;;
				$config[&#039;allowed_types&#039;] = &#039;gif|jpg|png&#039;;
				$config[&#039;max_size&#039;]	= &#039;5000&#039;;
				$config[&#039;encrypt_name&#039;] = TRUE;

				$this-&gt;load-&gt;library(&#039;upload&#039;, $config);

				if(!$this-&gt;upload-&gt;do_upload(&quot;imagen&quot;))
				{
					echo $this-&gt;upload-&gt;display_errors();
				}
				else
				{
					$data = $this-&gt;upload-&gt;data();
					$this-&gt;db-&gt;query(&quot;INSERT INTO `imagenes` (`imagen`, `fecha`, `ip`) VALUES (?, ?, ?)&quot;, array($data[&#039;file_name&#039;], time(), $_SERVER[&#039;REMOTE_ADDR&#039;]));</pre>
<p>Como veis es muy fácil de usar, hay que especificar las distintas opciones que queremos en el array config (hay mas opciones disponibles en la guía de usuario de CI). Le pasamos el &#8220;name&#8221; input del formulario para subir la imagen en la función &#8220;do_upload&#8221;. Y luego simplemente añadir un registro en la base de datos con la información que nos da &#8220;$this->upload->data()&#8221;;</p>
<p>Ahora necesitaremos que a partir de esta imagen se cree un thumbnail, lo haremos así:<br />
<span id="more-53"></span></p>
<pre class="brush: php">					$config[&#039;image_library&#039;] = &#039;gd2&#039;;
					$config[&#039;source_image&#039;] = $config[&#039;upload_path&#039;].$data[&#039;file_name&#039;];
					$config[&#039;create_thumb&#039;] = TRUE;
					$config[&#039;maintain_ratio&#039;] = TRUE;
					$config[&#039;width&#039;] = 200;
					$config[&#039;height&#039;] = 200;				

					$this-&gt;load-&gt;library(&#039;image_lib&#039;, $config);
					$this-&gt;image_lib-&gt;resize();		</pre>
<p>El funcionamiento es casi idéntico al de subir archivos: especificamos las opciones que queramos en el array de config y usamos la función &#8220;resize()&#8221; en este caso para crear el thubmnail.</p>
<p>Y bueno eso es todo por ahora. Como siempre, pongo a vuestra disposición <a href="http://sandbox.noquieroprogramar.com/apps/imagenes2">una demo totalmente funcional</a> para que podáis comprobar que todo funciona perfectamente. Desde la misma demo tenéis un link para bajaros el código del taller.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/tonJVOSjN2tOFIgLYcGanwsYqBw/0/da"><img src="http://feedads.g.doubleclick.net/~a/tonJVOSjN2tOFIgLYcGanwsYqBw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/tonJVOSjN2tOFIgLYcGanwsYqBw/1/da"><img src="http://feedads.g.doubleclick.net/~a/tonJVOSjN2tOFIgLYcGanwsYqBw/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.noquieroprogramar.com/subidor-de-imagenes-tercera-parte-subir-y-miniaturizar/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>
