<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9214191431118957706</id><updated>2011-08-02T14:22:26.469-03:00</updated><category term='mvc'/><category term='codeigniter'/><category term='phpbeer'/><category term='doctrine'/><category term='facu'/><category term='comunidad'/><category term='blog'/><category term='ipod'/><category term='php'/><category term='orm'/><category term='php-ar'/><category term='tutorial'/><title type='text'>Sexo, droga y PHP</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://calaveradigital.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9214191431118957706/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://calaveradigital.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>barbazul</name><uri>http://www.blogger.com/profile/04276174281412418705</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_HzYHR_Zpnes/SRoiuJuqkXI/AAAAAAAAAAM/l828YD8Z1iI/S220/n826678851_1496614_2620.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9214191431118957706.post-5656855550892177855</id><published>2009-01-13T17:52:00.003-02:00</published><updated>2009-01-13T18:34:51.722-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><title type='text'>Seven Things you might not know about me</title><content type='html'>Ok, siguiendo el pedido de &lt;a href="http://cesar.la" title="César D. Rodas"&gt;César&lt;/a&gt;, un hermano del Paraguay y gran PHPero, voy a seguir con la cadena que se viene propagando blog a blog. En lo único que le voy a fallar al espíritu de la cadena es que lo voy a postear en la lengua nativa, Español. Aquellos que lo quieran leer en inglés, tienen el vínculo arriba a la derecha. (=&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Mi adicción a los juegos de rol empezó en primer grado, cuando me regalaron mi primer "Elige tu propia aventura", el primero de la serie de aquel entonces&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Durante mi educacion primaria cambié 3 veces de escuela&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Empecé a programar web, más especificamente PHP intentando hacer un MMORPG con unos amigos. Sólo teníamos la idea de lo que queríamos hacer, pero ningun conocimiento de como funcionaba la web, PHP, HTML o nada de nada&lt;/li&gt;&lt;br /&gt;&lt;li&gt;En general, me gustan más los juegos que se juegan "contra la compu" que los multiplayer&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Prefiero la cerveza al vino en cualquier ocación... pero si hay champagne, no me importa nada más&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Mis inicios en la programación fueron gracias a una revista que me compró mi viejo cuando me operaron a los 11 años o por ahí. En ese entonces empecé haciendo jueguitos con archivos .bat y con qbasic (old good DOS 5)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Banda preferida: &lt;a href="http://www.last.fm/music/Patricio+Rey+y+sus+Redonditos+de+Ricota"&gt;Patricio Rey y sus Redonditos de Ricota&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Ahora siete personas (conozco poca gente con blog):&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://desarrollophp.blogspot.com"&gt;Seppo&lt;/a&gt;: Amigazo y compañero del secundario. Gran programador de PHP y colaborador en Codeigniter aunque ahora ande navegando otras aguas&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://lateral.netmanagers.com.ar/"&gt;Roberto Alsina&lt;/a&gt;: Lo conocí en el Latinoware 2008. Un gurú de Python y PyQt&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.karuchin.com.ar/wordpress/"&gt;Karucha&lt;/a&gt;: Otro fenómeno que conocí en el Latinoware. Programador de Python (poca gente PHPera hubo ahí) y dio una charla sobre Pyweek, una de esas charlas que te dan ganas de sentarte a programar a penas salis&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://ricardoceci.com.ar/"&gt;Ricardo Ceci&lt;/a&gt;: Colega PHPero con quien organizamos el PHP &amp; Beer&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=""&gt;&lt;/a&gt;Lo debo&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=""&gt;&lt;/a&gt;Lo debo&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=""&gt;&lt;/a&gt;Lo debo&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Evidentemente escasean mis contactos blogeros pero iré completando conforme se me vayan ocurriendo. &lt;br /&gt;&lt;br /&gt;Finalmente, dejo las reglas del asunto:&lt;br /&gt;&lt;br /&gt;- Link your Original tagger(s), and list these rules on you blog&lt;br /&gt;&lt;br /&gt;- Share seven facts about yourself in the post - some random, some weird.&lt;br /&gt;&lt;br /&gt;- Tag seven people at the end of your post by leaving their names and the links to their blogs.&lt;br /&gt;&lt;br /&gt;- Let them know they’ve been tagged by leaving a comment on their blogs and/or Twitter.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9214191431118957706-5656855550892177855?l=calaveradigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calaveradigital.blogspot.com/feeds/5656855550892177855/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calaveradigital.blogspot.com/2009/01/seven-things-you-might-not-know-about.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9214191431118957706/posts/default/5656855550892177855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9214191431118957706/posts/default/5656855550892177855'/><link rel='alternate' type='text/html' href='http://calaveradigital.blogspot.com/2009/01/seven-things-you-might-not-know-about.html' title='Seven Things you might not know about me'/><author><name>barbazul</name><uri>http://www.blogger.com/profile/04276174281412418705</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_HzYHR_Zpnes/SRoiuJuqkXI/AAAAAAAAAAM/l828YD8Z1iI/S220/n826678851_1496614_2620.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9214191431118957706.post-6693149669301032241</id><published>2008-12-17T08:36:00.002-02:00</published><updated>2008-12-17T16:29:33.691-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php-ar'/><category scheme='http://www.blogger.com/atom/ns#' term='comunidad'/><category scheme='http://www.blogger.com/atom/ns#' term='phpbeer'/><category scheme='http://www.blogger.com/atom/ns#' term='ipod'/><title type='text'>Expectativa por el PHP Beer</title><content type='html'>Sinceramente me complace muchisimo el grado de expectativas que se ha generado en torno al que sera el primer encuentro de la comunidad PHP Argentina.&lt;br /&gt;En particular me alegra saber que si bien s trata de un encuentro informal cuyo fin ultimo es lograr la integracion de nuestra incipiente comunidad, al parecer ha tenido mayor repercusion de la que hubieramos anticipado en un principio.&lt;br /&gt;&lt;br /&gt;Esta mañana por algun motivo se me ocurrio tirar un "php beer" en google. Los primeros resultados no me sorprendieron: php.net, CaFeLug y obviamente php-ar. El que si me sorprendio fue un breve anuncio en &lt;a href="http://www.desarrolloweb.com/agenda/php-beer-buenos-aires-1101.html"&gt;desarrolloweb&lt;/a&gt;, un lindo sitio que me ayudo a dar mis primeros pasos en el desarrollo web años atras.&lt;br /&gt;En la misma linea de sorpresas, Thomas, un medico australiano me escribio a mi y tambien a Ricardo interesado en participar. Thomas va a pasar unos dias en Argentina buscando reclutar desarroloadores de PHP y magos del AJAX. Asi que si buscas trabajo, tenes otra excusa para venirte mañana a tomarte unas birras!!&lt;br /&gt;&lt;br /&gt;En otros temas: perdon por los horrores ortograficos. Estoy desde el iPod nuevamente y me hace constantemente "correcciones" sobre lo que escribo. Alguien sabe como desactivar este feature????&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Editado:&lt;/strong&gt; Cambie el link para vaya al articulo de desarrolloweb en cuestion. Desde el iPod no tenia forma de hacer copy&amp;paste :s&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9214191431118957706-6693149669301032241?l=calaveradigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calaveradigital.blogspot.com/feeds/6693149669301032241/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calaveradigital.blogspot.com/2008/12/expectativa-por-el-php-beer.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9214191431118957706/posts/default/6693149669301032241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9214191431118957706/posts/default/6693149669301032241'/><link rel='alternate' type='text/html' href='http://calaveradigital.blogspot.com/2008/12/expectativa-por-el-php-beer.html' title='Expectativa por el PHP Beer'/><author><name>barbazul</name><uri>http://www.blogger.com/profile/04276174281412418705</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_HzYHR_Zpnes/SRoiuJuqkXI/AAAAAAAAAAM/l828YD8Z1iI/S220/n826678851_1496614_2620.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9214191431118957706.post-2071122522918126748</id><published>2008-11-20T20:58:00.004-02:00</published><updated>2008-11-20T21:32:03.564-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='orm'/><category scheme='http://www.blogger.com/atom/ns#' term='mvc'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='doctrine'/><category scheme='http://www.blogger.com/atom/ns#' term='codeigniter'/><title type='text'>Integrando CodeIgniter y Doctrine: Segunda vuelta</title><content type='html'>Como prometí aquí está el tutorial para integrar la consola de &lt;a href="http://www.doctrine-project.org/"&gt;Doctrine&lt;/a&gt; en una instalación de &lt;a href="http://www.codeigniter.com"&gt;CodeIgniter&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Para empezar, yo tomé la decisión arbitraria de colocar los ejecutables al mismo nivel que index.php (el front-controller de CI).&lt;br /&gt;Hecha la aclaración, comenzamos.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Paso 1: doctrine.php&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;Este archivo va a ser el encargado de inicializar doctrine y obtener la información correspondiente de los archivos de configuración que creamos en el anterior tutorial.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;[DocumentRoot]/doctrine.php&lt;/strong&gt;&lt;br /&gt;&lt;code class="prettyprint"&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;# Estos parametros son identicos a los que tenemos en index.php&lt;br /&gt;$system_folder = "system";&lt;br /&gt;$application_folder = "application";&lt;br /&gt;&lt;br /&gt;if (strpos($system_folder, '/') === FALSE)&lt;br /&gt;{&lt;br /&gt; if (function_exists('realpath') AND @realpath(dirname(__FILE__)) !== FALSE)&lt;br /&gt; {&lt;br /&gt;  $system_folder = realpath(dirname(__FILE__)).'/'.$system_folder;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt; // Swap directory separators to Unix style for consistency&lt;br /&gt; $system_folder = str_replace("\\", "/", $system_folder); &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;define('BASEPATH', $system_folder.'/');&lt;br /&gt;&lt;br /&gt;if (is_dir($application_folder))&lt;br /&gt;{&lt;br /&gt; define('APPPATH', $application_folder.'/');&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt; if ($application_folder == '')&lt;br /&gt; {&lt;br /&gt;  $application_folder = 'application';&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; define('APPPATH', BASEPATH.$application_folder.'/');&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;include(APPPATH . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'doctrine.php');&lt;br /&gt;&lt;br /&gt;require_once($config["doctrine_path"]);&lt;br /&gt;&lt;br /&gt;spl_autoload_register(array('Doctrine', 'autoload'));&lt;br /&gt;&lt;br /&gt;include(APPPATH . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'database.php');&lt;br /&gt;&lt;br /&gt;$doctrine_group = $active_group;&lt;br /&gt;//$doctrine_group = 'doctrine_custom_group';&lt;br /&gt;&lt;br /&gt;$dsn = $db[$doctrine_group]['dbdriver'] . &lt;br /&gt;     '://' . $db[$doctrine_group]['username'] . &lt;br /&gt;     ':' . $db[$doctrine_group]['password']. &lt;br /&gt;     '@' . $db[$doctrine_group]['hostname'] . &lt;br /&gt;     '/' . $db[$doctrine_group]['database'];&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Doctrine_Manager::connection($dsn);&lt;br /&gt;&lt;br /&gt;$cli = new Doctrine_Cli($config);&lt;br /&gt;$cli-&gt;run($_SERVER['argv']);&lt;br /&gt;&lt;br /&gt;?&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;La primera parte corresponde a la inicialización de las variables de CI y es identica a la primera parte del archivo index.php provisto por CodeIgniter.&lt;br /&gt;&lt;br /&gt;Luego se incluye el archivo de configuracion de doctrine (que creamos en el tutorial anterior) y la configuracion de la base de datos&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Paso 2: los ejecutables&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;Hasta ahora es perfectamente posible usar un comando como /sbin/php -f doctrine.php parametros... etc&lt;br /&gt;pero siempre resulta más cómodo tener un script ejectuable a mano&lt;br /&gt;&lt;br /&gt;Como esta implementación la tengo corriendo en un servidor con windows pero la desarrolle en una maquina con linux, tengo preparado el script para ambas versiones.&lt;br /&gt;En ambos casos, es necesario ajustar la ruta hasta o incluso el nombre del ejecutable de php&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Unix: ./doctrine&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Creamos un archivo doctrine con permisos de ejecucion en el mismo directorio que doctrine.php del paso anterior.&lt;br /&gt;&lt;br /&gt;&lt;code class="prettyprint"&gt;#!/usr/bin/env php&lt;br /&gt;&amp;lt;?php&lt;br /&gt;chdir(dirname(__FILE__));&lt;br /&gt;include('doctrine.php');&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Windows: doctrine.bat&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Creamos un archivo doctrine.bat en el mismo directorio que el archivo doctrine.php que creamos en el paso 1&lt;br /&gt;&lt;br /&gt;&lt;code class="prettyprint"&gt;@C:\ruta\al\archivo\php.exe -r "chdir(dirname(__FILE__));include('doctrine.php');"&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;...y ya está.&lt;br /&gt;&lt;br /&gt;Dos sencillísimos pasos y tenemos la consola de Doctrine corriendo con CI. &lt;br /&gt;&lt;br /&gt;Lamentablemente la consola de Windows pierde todos los estilos que tiene la de Unix. Supongo qeu habrá alguna forma de solucionar esto último, pero personalmente no es algo que me preocupe.&lt;br /&gt;Si alguien tiene una solución, los invito a postearla en los comentarios&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9214191431118957706-2071122522918126748?l=calaveradigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calaveradigital.blogspot.com/feeds/2071122522918126748/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calaveradigital.blogspot.com/2008/11/integrando-codeigniter-y-doctrine.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9214191431118957706/posts/default/2071122522918126748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9214191431118957706/posts/default/2071122522918126748'/><link rel='alternate' type='text/html' href='http://calaveradigital.blogspot.com/2008/11/integrando-codeigniter-y-doctrine.html' title='Integrando CodeIgniter y Doctrine: Segunda vuelta'/><author><name>barbazul</name><uri>http://www.blogger.com/profile/04276174281412418705</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_HzYHR_Zpnes/SRoiuJuqkXI/AAAAAAAAAAM/l828YD8Z1iI/S220/n826678851_1496614_2620.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9214191431118957706.post-7593379980651080138</id><published>2008-11-14T21:07:00.004-02:00</published><updated>2009-11-15T19:25:58.702-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='orm'/><category scheme='http://www.blogger.com/atom/ns#' term='mvc'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='doctrine'/><category scheme='http://www.blogger.com/atom/ns#' term='codeigniter'/><title type='text'>CodeIgniter ♥ Doctrine</title><content type='html'>Este es el paso por paso para integrar Doctrine y CodeIgniter de manera &lt;em&gt;elegante&lt;/em&gt;, es decir, sin hackear el core.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Paso 1: Descargar doctrine&lt;/h3&gt;&lt;br /&gt;Puede parecer trivial, pero es importante.&lt;br /&gt;En la &lt;a href="http://www.doctrine-project.org/download"&gt;página de descargas&lt;/a&gt; de Doctrine, hay para todos los gustos.&lt;br /&gt;Una vez descargados los archivos sólo se necesita, por ahora, el contenido de la carpeta lib.&lt;br /&gt;En este tutorial se asume que el contenido de lib es guardado en &lt;strong&gt;[DocumentRoot]/system/doctrine&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Paso 2: Configuración&lt;/h3&gt;&lt;br /&gt;Para mantener el &lt;em&gt;feeling&lt;/em&gt; the CodeIgniter, opté por crear un archivo doctrine.php dentro de &lt;strong&gt;[DocumentRoot]/system/application/config&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Contenido de &lt;strong&gt;[DocumentRoot]/system/application/config/doctrine.php&lt;/strong&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&amp;lt;?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');&lt;br /&gt;&lt;br /&gt;$config['doctrine_path']       =  BASEPATH . DIRECTORY_SEPARATOR . 'doctrine' . DIRECTORY_SEPARATOR . 'Doctrine.php';&lt;br /&gt;$config['data_fixtures_path']  =  APPPATH .DIRECTORY_SEPARATOR .'data' . DIRECTORY_SEPARATOR . 'fixtures';&lt;br /&gt;$config['models_path']         =  APPPATH .DIRECTORY_SEPARATOR . 'models';&lt;br /&gt;$config['migrations_path']     =  APPPATH .DIRECTORY_SEPARATOR .'migrations';&lt;br /&gt;$config['sql_path']            =  APPPATH .DIRECTORY_SEPARATOR .'data' . DIRECTORY_SEPARATOR . 'sql';&lt;br /&gt;$config['yaml_schema_path']    =  APPPATH .DIRECTORY_SEPARATOR .'yaml';&lt;br /&gt;&lt;br /&gt;?&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Nótese que uso las constantes BASEPATH y APPATH que provee CodeIgniter, para que, en caso de alguna personalización de la configuración, este sistema siga siendo compatible.&lt;br /&gt;&lt;br /&gt;Lo siguiente es crear las carpetas pertinentes. Yo opté por colocarlas dentro de la carpeta application que es donde coloco todo aquello sobre lo que trabajo. Algunos podrían preferir colocarlas al nivel de system o completamente fuera de CI. Si lo hacen deben editar config/doctrine.php&lt;br /&gt;&lt;br /&gt;Las siguientes carpetas deben ser creadas:&lt;ul&gt;&lt;li&gt;[DocumentRoot]/system/application/data&lt;/li&gt;&lt;br /&gt;&lt;li&gt;[DocumentRoot]/system/application/data/fixtures&lt;/li&gt;&lt;br /&gt;&lt;li&gt;[DocumentRoot]/system/application/data/sql&lt;/li&gt;&lt;br /&gt;&lt;li&gt;[DocumentRoot]/system/application/migrations&lt;/li&gt;&lt;br /&gt;&lt;li&gt;[DocumentRoot]/system/application/schema&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Para la configuraci&amp;oacute;n de base de datos vamos a compartir la de CodeIgniter&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Paso 3: Integración con CodeIgniter&lt;/h3&gt;&lt;br /&gt;En este punto me pareció importante tener control sobre la inicialización de Doctrine, al igual que CI provee control sobre la inicialización de la base de datos. Jugué un poco con la idea de que fuera una Library, pero finalmente opté por cargarlo como un plugin.&lt;br /&gt;Para ello creé un archivo en &lt;strong&gt;[DocumentRoot]/system/application/plugins&lt;/strong&gt; llamado doctrine_pi.php&lt;br /&gt;&lt;br /&gt;&lt;pre class='prettyprint'&gt;&amp;lt;?php&lt;br /&gt;&lt;?php&lt;br /&gt;&lt;br /&gt;// Incluyo la config&lt;br /&gt;include APPPATH . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'doctrine' . EXT;&lt;br /&gt;include APPPATH . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'database' . EXT;&lt;br /&gt;&lt;br /&gt;require_once $config['doctrine_path'];&lt;br /&gt;&lt;br /&gt;// Inicializo el &lt;br /&gt;spl_autoload_register(array('Doctrine', 'autoload'));&lt;br /&gt;&lt;br /&gt;// Cargo la conexion de Base de Datos&lt;br /&gt;&lt;br /&gt;$doctrine_group = $active_group;&lt;br /&gt;//$doctrine_group = 'doctrine_custom_group';&lt;br /&gt;&lt;br /&gt;$dsn = $db[$doctrine_group]['dbdriver'] .&lt;br /&gt;     '://' . $db[$doctrine_group]['username'] .&lt;br /&gt;     ':' . $db[$doctrine_group]['password'].&lt;br /&gt;     '@' . $db[$doctrine_group]['hostname'] .&lt;br /&gt;     '/' . $db[$doctrine_group]['database'];&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Doctrine_Manager::connection($dsn);&lt;br /&gt;&lt;br /&gt;// Cargo los modelos&lt;br /&gt;Doctrine::loadModels($config['models_path'], Doctrine::MODEL_LOADING_CONSERVATIVE);&lt;br /&gt;?&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Paso 4 - Uso&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;Hasta aca ya quedo instalado Doctrine en CodeIgniter. Para usarlo s&amp;oacute;lo hace falta inicializar el plugin desde el controlador&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&amp;lt;?&lt;br /&gt;class Test extends Controller {&lt;br /&gt;  public function index() {&lt;br /&gt;    $this-&gt;load-&gt;plugin("doctrine");&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;La pr&amp;oacute;xima, implementaci&amp;oacute;n de la consola de Doctrine para unix y windows integrada con CodeIgniter&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9214191431118957706-7593379980651080138?l=calaveradigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calaveradigital.blogspot.com/feeds/7593379980651080138/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calaveradigital.blogspot.com/2008/11/codeigniter-doctrine.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9214191431118957706/posts/default/7593379980651080138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9214191431118957706/posts/default/7593379980651080138'/><link rel='alternate' type='text/html' href='http://calaveradigital.blogspot.com/2008/11/codeigniter-doctrine.html' title='CodeIgniter &amp;hearts; Doctrine'/><author><name>barbazul</name><uri>http://www.blogger.com/profile/04276174281412418705</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_HzYHR_Zpnes/SRoiuJuqkXI/AAAAAAAAAAM/l828YD8Z1iI/S220/n826678851_1496614_2620.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9214191431118957706.post-6233731801550120296</id><published>2008-11-12T16:49:00.003-02:00</published><updated>2008-11-12T17:40:44.370-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='orm'/><category scheme='http://www.blogger.com/atom/ns#' term='mvc'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='doctrine'/><category scheme='http://www.blogger.com/atom/ns#' term='codeigniter'/><title type='text'>Proyecto nuevo y la felicidad que eso representa.</title><content type='html'>&lt;strong&gt;La meta:&lt;/strong&gt; desarrollar una intranet que incorpore gradualmente funcionalidad migrando el &lt;em&gt;sistema&lt;/em&gt; actual de la empresa (entiendase por "sistema" a un montón de hojas de cálculo desparramadas entre las 6 terminales) de la manera más transparente posible.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Las condiciones:&lt;/strong&gt; No muchas. Total libertad para elegir la plataforma, el lenguaje y demas. La única limitación fuerte es que no puedo interferir de ninguna manera en el funcionamiento de la empresa. Es decir, no puedo ocupar una maquina, no puedo distraer a los empleados, no puedo por ejemplo, reiniciar el router porque que quedé sin conexión. Tampoco puedo pedir que se instalen programas o que prueben tal o cual cosa.&lt;br /&gt;&lt;br /&gt;Ok. Hasta aquí ningún problema. Me instalé con mi laptop y me puse manos a la obra.&lt;br /&gt;&lt;br /&gt;Primero lo primero, el análisis. Muchas libertades, pero tenía que concretar decisiones. Por cierto, soy el único desarrollador/analista/tester ya que es un trabajo "de favor".&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Primera decisión - El lenguaje:&lt;/strong&gt; &lt;br /&gt;Fácil. PHP. Si fuera otro, mi blog tendría otro nombre.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Segunda decisión - Plataforma:&lt;/strong&gt;&lt;br /&gt;Bueno, las PCs ya están corriendo en Windows y mi trabajo no puede afectar el funcionamiento de la empresa, por lo que formatear e instalar otro OS está fuera de la discución.&lt;br /&gt;Por lo tanto abarajé mis posibilidades y recurrí a un viejo y conocido amigo: &lt;a href="http://www.wampserver.com/"&gt;Wampserver&lt;/a&gt;.&lt;br /&gt;La última vez que jugé con Wamp andaba por la version 1.7 y era práctico y fácil de usar. Hoy la versión 2.0 me parece IDEAL.&lt;br /&gt;Sigue siendo sencillísimo de instalar y configurar y sigue trayendo las últimas versiones de MySQL, Apache y PHP incorporadas, pero además ahora trae una característica para instalar distintas versiones de PHP, Mysql, y Apache e intercambiar la que se está usando con sólo un click (no es que la vaya a necesitar, de cualquier manera). Decidido.&lt;br /&gt;&lt;br /&gt;De esta manera, el servidor termino siendo un Apache, corriendo en Windows. Para base de datos: MySQL&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Tercera decisión - Arquitectura:&lt;/strong&gt;&lt;br /&gt;Gran parte de esto ya estaba decidido. Hace ya algunos años que uso &lt;a href="http://codeigniter.com/"&gt;CodeIgniter&lt;/a&gt; siempre que puedo darme el gusto. Y como ahora me podía dar los gustos que quisiese, mantuve mi linea de comportamiento.&lt;br /&gt;Un punto débil de CI (tiene varios, en realidad), es la capa del Modelo. CI mantiene la arquitectura MVC que se ha vuelto tan popular en los frameworks de hoy en día, y si bien la estructura de las Vistas y los Controladores "cumplen las expectativas", los Modelos de CI no son más que clases carentes de comportamiento propio en la que uno DEBERIA incluir todas las peticiones y procesamiento de datos.&lt;br /&gt;&lt;br /&gt;Empecé a buscar reemplazos.&lt;br /&gt;&lt;br /&gt;Mi primer impulso fue el "hágalo usted mismo". Durante el tiempo que trabajamos juntos con mi amigo Seppo habiamos desarrollado una &lt;a href="http://desarrollophp.blogspot.com/2008/03/un-ejemplo-de-modelos.html"&gt;API&lt;/a&gt; para los modelos de CI que nos resultó muy práctica por aquéllos tiempos.&lt;br /&gt;Tanto él como yo continuamos desarrollando aquella librería aunque en direcciones ligeramente distintas.&lt;br /&gt;La solución si bien era más completa que la de CI, aún no me convencía, por lo que seguí investigando.&lt;br /&gt;&lt;br /&gt;Recientemente asistí a una charla en &lt;a href="http://latinoware.org/"&gt;Latinoware&lt;/a&gt; en la que Guilherme Blanco hablaba sobre las bondades de &lt;a href="http://doctrine-project.com/"&gt;Doctrine&lt;/a&gt;. La charla me había resultado bastante interesante por lo poco que pude entender (ya que era en portugués) y en mi todo list aún figuraba "checkear Doctrine".&lt;br /&gt;&lt;br /&gt;Lo investigué, jugué un poco, busqué experiencias de otros usuarios y me decidí a utilizarlo.&lt;br /&gt;&lt;br /&gt;La primera gran dificultad fue el manual de usuario. El capitulo 1: "Getting Started" es pésimo. No encuentro una palabra en español para &lt;em&gt;misleading&lt;/em&gt; (¿desconcertante?), pero eso es lo que es. Una vez que se ignora ese capítulo, el resto es bastante comprensible y se decubre que doctrine es bastante poderoso.&lt;br /&gt;&lt;br /&gt;La API es muy intuitiva (aunque un poco extensa) y las herramientas para generar codigo son muy buenas. La consola que trae es sencillamente: Un golazo&lt;br /&gt;&lt;br /&gt;El problema era incorporar elegantemente Doctrine a la arquitectura de CI.... pero eso me lo guardo para otro día.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Decición Final - Schedule:&lt;/strong&gt;&lt;br /&gt;Como ya dije, es un proyecto "de favor" así que el schedule es cualquier cosa menos riguroso en cuanto a los tiempos. Pero por amor al orden, es una decisión que tenía que tomar, al menos para organizarme yo mismo.&lt;br /&gt;&lt;br /&gt;Para empezar, sólo voy a estar dedicándole un día a la semana a estar "on site" implementando y durante la semana sólo le dedicaré tiempo a la investigación que resultara necesaria (como la que hice para la integración de Doctrine y otros problemillas que surgieron... tela para otros dias)&lt;br /&gt;&lt;br /&gt;La primera semana la dediqué a instalar y configurar el servidor y customizar CI. También laburé sobre lo que tienen ellos armado actualmente.&lt;br /&gt;&lt;br /&gt;Las proximas dos semanas serán dedicadas a la migración de los datos. La intención es levantar todas las hojas de excel a una base de datos. Como en este tiempo seguirán trabajando con hojas de Excel, necesito buscar periodicamente en las terminales de trabajo si abrieron nuevas hojas de calculo o si se efectuaron cambios.&lt;br /&gt;&lt;br /&gt;Terminada la migración, desarrollaré la primera aplicación: Un buscador. Parece algo básico, pero actualmente se toman el trabajo de buscar en cada maquina (menu Inicio -&gt; buscar) hasta que encuentran la hoja que necesitan.... inaceptable&lt;br /&gt;&lt;br /&gt;Una vez centralizados los datos e implementado el buscador, el paso siguiente es suprimir definitivamente los archivos excel, y reeemplazarlos por una interfase que autocomplete los datos de clientes y productos, etc&lt;br /&gt;&lt;br /&gt;Y de ahí en adelante... es un misterio..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9214191431118957706-6233731801550120296?l=calaveradigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calaveradigital.blogspot.com/feeds/6233731801550120296/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calaveradigital.blogspot.com/2008/11/proyecto-nuevo-y-la-felicidad-que-eso.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9214191431118957706/posts/default/6233731801550120296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9214191431118957706/posts/default/6233731801550120296'/><link rel='alternate' type='text/html' href='http://calaveradigital.blogspot.com/2008/11/proyecto-nuevo-y-la-felicidad-que-eso.html' title='Proyecto nuevo y la felicidad que eso representa.'/><author><name>barbazul</name><uri>http://www.blogger.com/profile/04276174281412418705</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_HzYHR_Zpnes/SRoiuJuqkXI/AAAAAAAAAAM/l828YD8Z1iI/S220/n826678851_1496614_2620.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9214191431118957706.post-7080126859219059281</id><published>2008-11-11T21:17:00.010-02:00</published><updated>2008-11-11T22:15:22.387-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><title type='text'>Prettiffying</title><content type='html'>Estaba yo escribiendo una entrada para el blog, cuando de repente comprendí que no tenía de parte de los señores de blogspot, ningún tipo de syntax highlight&lt;br /&gt;&lt;br /&gt;Por lo que me hice a la búsqueda de alguna solución y me topé con este interesante &lt;a href="http://code.google.com/p/google-code-prettify/"&gt;pedazo de código&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Es hora de ponerlo a prueba:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&amp;lt;?php&lt;br /&gt;$str = "Hola Mundo!";&lt;br /&gt;echo $str;&lt;br /&gt;?&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9214191431118957706-7080126859219059281?l=calaveradigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calaveradigital.blogspot.com/feeds/7080126859219059281/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calaveradigital.blogspot.com/2008/11/prettiffying.html#comment-form' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9214191431118957706/posts/default/7080126859219059281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9214191431118957706/posts/default/7080126859219059281'/><link rel='alternate' type='text/html' href='http://calaveradigital.blogspot.com/2008/11/prettiffying.html' title='Prettiffying'/><author><name>barbazul</name><uri>http://www.blogger.com/profile/04276174281412418705</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_HzYHR_Zpnes/SRoiuJuqkXI/AAAAAAAAAAM/l828YD8Z1iI/S220/n826678851_1496614_2620.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9214191431118957706.post-620351294613343514</id><published>2008-11-11T14:28:00.000-02:00</published><updated>2008-11-11T14:43:22.360-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><category scheme='http://www.blogger.com/atom/ns#' term='facu'/><category scheme='http://www.blogger.com/atom/ns#' term='ipod'/><title type='text'>blogeando desde el iPod</title><content type='html'>Esta cuestión de la tecnología no deja de sorprenderme. &lt;br /&gt;Estoy en el mc donalds frente a la facultad de ingeniería quemado de estudiar, quemado de leer RSSs y tomando un café quemado. Cuando ya no sabía como seguir contando las horas hasta matemática discreta, se me ocurrió empezar este blog.&lt;br /&gt;&lt;br /&gt;Una vez más mi fiel ipod se ha portado de mil maravillas. Puedo afirmar que fueron mis 400 dólares mejor gastados.&lt;br /&gt;&lt;br /&gt;No me voy a extender ya que tipear así es difícil, pero la idea aquí será hacer un poco de catarsis de la vida en general y del mundo de la programación en particular. Si en el proceso ayudo a alguien... le cobro, por supuesto&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9214191431118957706-620351294613343514?l=calaveradigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calaveradigital.blogspot.com/feeds/620351294613343514/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://calaveradigital.blogspot.com/2008/11/blogeando-desde-el-ipod.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9214191431118957706/posts/default/620351294613343514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9214191431118957706/posts/default/620351294613343514'/><link rel='alternate' type='text/html' href='http://calaveradigital.blogspot.com/2008/11/blogeando-desde-el-ipod.html' title='blogeando desde el iPod'/><author><name>barbazul</name><uri>http://www.blogger.com/profile/04276174281412418705</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_HzYHR_Zpnes/SRoiuJuqkXI/AAAAAAAAAAM/l828YD8Z1iI/S220/n826678851_1496614_2620.jpg'/></author><thr:total>0</thr:total></entry></feed>
