<?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>Ajaxman &#187; Open Source</title>
	<atom:link href="http://www.ajaxman.net/category/open-source/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ajaxman.net</link>
	<description>Servicios Web, Desarrollo de aplicaciones, tutoriales sobre software</description>
	<lastBuildDate>Sun, 01 Apr 2012 06:18:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>[Kohana - PHP] Explotando el potencial del ORM kohana</title>
		<link>http://www.ajaxman.net/kohana-php-explotando-el-potencial-del-orm-kohana.html</link>
		<comments>http://www.ajaxman.net/kohana-php-explotando-el-potencial-del-orm-kohana.html#comments</comments>
		<pubDate>Thu, 19 May 2011 19:20:08 +0000</pubDate>
		<dc:creator>ajaxman</dc:creator>
				<category><![CDATA[Kohana]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Arquitectura de 3 capas]]></category>
		<category><![CDATA[Kohana Framework]]></category>
		<category><![CDATA[Kohana PHP]]></category>
		<category><![CDATA[ORM]]></category>

		<guid isPermaLink="false">http://www.ajaxman.net/?p=2101</guid>
		<description><![CDATA[<p>Kohana PHP Framework, trae un ORM (ver más sobre ORM&#8217;s), sencillo pero poderoso, sencillo por que es muy fácil de usar y poderoso por que podemos hacer casi cualquier cosa con dicho ORM. El único punto en contra es que solo tiene soporte para MySQL, pero como la mayoría usamos la combinación LAMP o mejor  [...]</p>
 ]]></description>
			<content:encoded><![CDATA[<p><strong>Kohana PHP Framework</strong>, trae un <strong>ORM</strong> (<a title="ver más sobre ORM's" href="http://www.ajaxman.net/php-%C2%BFque-es-un-orm.html">ver más sobre ORM&#8217;s</a>), sencillo pero poderoso, sencillo por que es muy fácil de usar y poderoso por que podemos hacer casi cualquier cosa con dicho ORM.</p>
<p>El único punto en contra es que solo tiene soporte para MySQL, pero como la mayoría usamos la combinación LAMP o mejor  MySQL+ PHP, creo que vale la pena estudiarlo a fondo.</p>
<p>Para usarlo recordemos que solo basta con descomentar el modulo en el bootstrap y mover el archivo de configuración database.php a nuestra configuración de la aplicación.</p>
<p>Ahora bien vamos a describir como usar el ORM y como usar la mayoría de sus características.</p>
<p>Haciendo una simple consulta.</p>
<p>Es importante recordar que hay que agregar una clase para manejar cada tabla, aunque esto a veces se puede omitir ayuda mucho tener todo refactorizado ya que mejora la organización del código ya la vez su mantenimiento.</p>
<p><strong>PROBLEMA: Como hacer una consulta de todos los datos de una tabla(&#8216;users&#8217;);</strong></p>
<p></p><pre class="crayon-plain-tag">//Consulta normal
$sql = 'select * from users';
$results = mysql_query($sql,$conection);
if($results) {
//Resultados
}

//Consulta ORM

$results = ORM::factory('users')-&gt;find_all();
if($results-&gt;loaded())
{
// Resultados
}</pre><p></p>
<p>Como vemos es muy fácil de usar el orm, ahora veamos otros ejemplos mas avanzados</p>
<p><strong>PROBLEMA: Consultar la tabla mediante un id único</strong></p>
<p></p><pre class="crayon-plain-tag">$id = 5; //id unico

//Consulta normal
$sql = 'select * from users where id = '.$id;
$results = mysql_query($sql,$conection);
if($results)
{
// Resultados
}

//ORM Forma:1
$results = ORM::factory('users',$id)-&gt;find();
if($results-&gt;loaded())
{
// Resultados
}

//ORM Forma:2
$results = ORM::factory('users')
-&gt;where('id','=',$id)
-&gt;find();
if($results-&gt;loaded())
{
// Resultados
}</pre><p></p>
<p>Como vemos podemos hay dos formas de hacer la consulta con el ORM, ya se indicándole el id al factory o mediante where, al final es lo mismo, solo que la primero forma sirve para el id únicamente(el nombre del campo debe de ser id por default aunque también se puede modificar).</p>
<p>Algunos de los métodos que podemos usar son los siguientes(no son todos pero tratare de poner los mas importantes)</p>
<ul>
<li><strong>where</strong></li>
<li><strong>where_open</strong></li>
<li><strong>where_close</strong></li>
<li><strong>join</strong></li>
<li><strong>on</strong></li>
<li><strong>order_by</strong></li>
<li><strong>offset</strong></li>
<li><strong>limit</strong></li>
<li><strong>group_by</strong></li>
<li><strong>or_where</strong></li>
<li><strong>and_where</strong></li>
</ul>
<p>Obviamente combinando todos podemos crear consultas complejas, por ejemplo la siguiente.<span id="more-2101"></span></p>
<p></p><pre class="crayon-plain-tag">//Consulta normal
$sql = 'select articulos.* from articulos ';
$sql .= 'where (articulos.activo = 1) or (articulos.activo = 2) ';
$sql .= 'inner join subcategorias ';
$sql .= 'on subcategorias.id = articulos.idsubcategoria ';
$sql .= 'limit 20 order by id DESC ';
$results = mysql_query($sql,$conection);
if($results) {
//Resultados
}

//Consulta ORM
$results = ORM::factory(&quot;articulos&quot;)
-&gt;join('subcategorias', 'INNER')
-&gt;on(&quot;subcategorias.id&quot;,&quot;=&quot;,&quot;articulos.idsubcategoria&quot;)
-&gt;where(&quot;articulos.activo&quot;, &quot;=&quot;,1)
-&gt;or_where(&quot;articulos.activo&quot;, &quot;=&quot;,2)
-&gt;limit(20);
-&gt;order_by('id','DESC')
-&gt;find_all();

if($results-&gt;loaded())
{
//Resultados
}</pre><p></p>
<p>Como vemos el ORM nos permite hacerlo todo desde un punto de vista orientado a objetos.</p>
<p>Para ver más capacidades recomiendo leer<a title="Kohana ORM Guide" href="http://kohanaframework.org/3.1/guide/orm"> la guía de la documentación de kohana</a> y también darle un vistazo a al <a title="Api ORM kohana" href="http://kohanaframework.org/3.1/guide/api/ORM">API del ORM</a> donde viene ejemplos de todo.</p>
<p>Algunas recomendaciones útiles son</p>
<ul>
<li><strong>Usar una clase(un modelo) por cada tabla(a veces hay excepciones)</strong></li>
<li><strong> Las consultas deberán de ir dentro de métodos de tu clase modelo algo así</strong></li>
</ul>
<p></p><pre class="crayon-plain-tag">class Model_Articulos&nbsp; extends ORM {

public function getArticlesBySubcategory()
{
$results = ORM::factory(&quot;articulos&quot;)
-&gt;join('subcategorias', 'INNER')
-&gt;on(&quot;subcategorias.id&quot;,&quot;=&quot;,&quot;articulos.idsubcategoria&quot;)
-&gt;where(&quot;articulos.activo&quot;, &quot;=&quot;,1)
-&gt;or_where(&quot;articulos.activo&quot;, &quot;=&quot;,2)
-&gt;limit(20);
-&gt;order_by('id','DESC')
-&gt;find_all();
return $results;
}

//more methods

}</pre><p></p>
<p>Así toda la capa de persistencia la tenemos aparte sin mezclarla con la capa de lógica(controlador).</p>
<ul>
<li><strong>Usar nombres de tablas en plural</strong></li>
<li><strong>Usar nombre de campo en singular</strong></li>
<li><strong>Para evitar tener problemas con la pluralización de kohana yo le indico que use el nombre como se lo puse mediante esto.</strong></li>
</ul>
<p></p><pre class="crayon-plain-tag">class Model_Users extends ORM {

protected $_table_names_plural = FALSE;
//....
}</pre><p></p>
<p>De esta forma evito que me cambie el nombre de la tabla a useres (kohana le agrega el &#8220;es&#8221;) por la pluralidad, así que mejor yo le dijo que no la cambie.</p>
<ul>
<li><strong>También se le puede especificar otro nombre de tabla a usar que no sea necesariamente el nombre de nuestra clase modelo </strong></li>
</ul>
<p></p><pre class="crayon-plain-tag">class Model_Posts extends ORM {

protected $_table_name = 'wp_posts';
//...
}</pre><p></p>
<p>Como vemos kohana tiene un completo ORM, al cual si bien le faltan algunas cosas va por buen camino y es bueno ir aprendiendo todas sus capacidades, para trabajar con el.</p>
<p>En el próximo post veremos como mejorar el performance de nuestros querys, eliminado pequeños detalles que genera dicho ORM, ya que no alcance a terminarlo hoy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajaxman.net/kohana-php-explotando-el-potencial-del-orm-kohana.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[Javascript] simpleValidate Jquery Plugin</title>
		<link>http://www.ajaxman.net/javascript-simplevalidate-jquery-plugin.html</link>
		<comments>http://www.ajaxman.net/javascript-simplevalidate-jquery-plugin.html#comments</comments>
		<pubDate>Sat, 30 Apr 2011 05:02:40 +0000</pubDate>
		<dc:creator>ajaxman</dc:creator>
				<category><![CDATA[Ajaxman]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Javier]]></category>
		<category><![CDATA[Jquery]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[simpleValidate]]></category>

		<guid isPermaLink="false">http://www.ajaxman.net/?p=2082</guid>
		<description><![CDATA[<p>Pues les cuento un preámbulo Una de las cosas que menos me gusta es estar repitiendo código (recordemos -DRY-) entonces, pues cuando deseaba validar un formulario siempre andaba buscando cual opción era la mejor, y hay muchas opciones y son excelentes en lo que hacen, sin embargo todas tenían un punto débil, por ejemplo que [...]</p>
 ]]></description>
			<content:encoded><![CDATA[<p>Pues les cuento un preámbulo</p>
<p>Una de las cosas que menos me gusta es estar repitiendo código (recordemos -DRY-) entonces, pues cuando deseaba validar un formulario siempre andaba buscando cual opción era la mejor, y hay muchas opciones y son excelentes en lo que hacen, sin embargo todas tenían un punto débil, por ejemplo que no soportaban ajax, es decir terminaban de validar y se seguían (enviaban el formulario), otros me mandaban mensajes de errores de validación en ciertos colores y en cierto lugar que si bien es correcto, a veces en muchos proyectos no va el estilo o simplemente quieren ponerle un alert o similar.</p>
<p>Bajo ese preámbulo y recordando que siempre quise hacer un validado de formularios con Javascript (hace años hice uno chafita con Javascript).</p>
<p>Entonces pensé por que no hacer uno que fuera muy simple de usar y que no fuera obtrusivo, y así fue como desarrolle simpleValidate que es un plugin el cual como su nombre lo dice solo es un validador de formularios y nada mas.</p>
<p>Les presento a<strong>:</strong></p>
<h3><strong>simpleValidate &#8211; Jquery Plugin</strong></h3>
<p>A continuación pongo las características.<br />
<strong><br />
</strong></p>
<ul>
<li><strong>Fácil de usar </strong></li>
<li><strong>Extremadamente Ligero 2kb (minifed)</strong></li>
<li><strong>Compatible con Jquery 1.5.2</strong></li>
<li><strong>No requiere CSS especial</strong></li>
<li><strong>No obtrusivo</strong></li>
<li><strong>Posibilidad de inyectar algún tipo de alert especial mediante sus settings</strong></li>
<li><strong>Completamente personalizable</strong></li>
<li><strong>Soporta expresiones regulares</strong></li>
<li><strong>Y valida checkboxes</strong></li>
</ul>
<p>Su uso es muy simple, solo necesitamos de Jquery y del plugin</p>
<p></p><pre class="crayon-plain-tag">&amp;lt;script src=&amp;quot;jquery.1.5.2.min.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
 &amp;lt;script src=&amp;quot;simpleValidate.1.6.min.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;</pre><p></p>
<p>Y ejecutamos el plugin donde indicamos el id del Formulario en cuestión</p>
<p></p><pre class="crayon-plain-tag">&amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01 Transitional//EN&amp;quot;&amp;gt;
&amp;lt;html&amp;gt;
 &amp;lt;head&amp;gt;
 &amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;
 &amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=UTF-8&amp;quot;&amp;gt;
 &amp;lt;script src=&amp;quot;jquery.1.5.2.min.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
 &amp;lt;script src=&amp;quot;simpleValidate.1.6.min.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;
 $(document).ready(function(){
    $(&amp;quot;#testForm&amp;quot;).simpleValidate();
 });

 &amp;lt;/script&amp;gt;
 &amp;lt;/head&amp;gt;
 &amp;lt;body&amp;gt;
 &amp;lt;form action=&amp;quot;try.php&amp;quot; method=&amp;quot;post&amp;quot; id=&amp;quot;testForm&amp;quot;&amp;gt;
 &amp;lt;label&amp;gt;Name&amp;lt;/label&amp;gt;
 &amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;name&amp;quot; title=&amp;quot;valid[Ingrese un nombre valido]&amp;quot; /&amp;gt;&amp;lt;hr /&amp;gt;
 &amp;lt;label&amp;gt;Ingrese una cantidad valida (tipo numero.decimal(2 digitos))&amp;lt;/label&amp;gt;
 &amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;cantidad&amp;quot; title=&amp;quot;valid[regex,Por favor ingrese un numero con o sin decimales &uacute;nicamente]&amp;quot; data=&amp;quot;^([0-9]+.?[0-9]{0,2})$&amp;quot; /&amp;gt;&amp;lt;hr /&amp;gt;
 &amp;lt;label&amp;gt;Required&amp;lt;/label&amp;gt;&amp;lt;input type=&amp;quot;checkbox&amp;quot;&nbsp; name=&amp;quot;condiciones&amp;quot; value=&amp;quot;Required&amp;quot; title=&amp;quot;valid[Debes de aceptar los terminos y condiciones]&amp;quot;/&amp;gt;
 &amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;Guardar datos&amp;quot;/&amp;gt;
 &amp;lt;/form&amp;gt;
 &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;</pre><p></p>
<p>Y con esto ya tenemos funcionando el plugin ahora necesitamos indicarle cuales son los campos a validar lo haremos de la siguiente forma.</p>
<p>En cada input que necesitemos, vamos a agregar lo siguiente en el campo (input) que queramos validar</p>
<p><strong>title=&#8221;valid[tipo_de_validacion,{params,}]&#8220;</strong></p>
<p>Donde los tipos de validación son los siguientes:</p>
<ul>
<li><strong>valid[required,mensaje de error] </strong>==> Solo verifica que el campo tenga algún valor y el segundo parametro es lo que mostrara cuando no pase la validación</li>
<li><strong>valid[email,mensaje de error]</strong> => Valida que sea un email valido y si no muestra el mensaje del segundo parametro.</li>
<li><strong>valid[zip,mensaje de error]</strong> => Valida que sea un código postal valido (5 caracteres numéricos) y si no muestra el mensaje del segundo parámetro.</li>
<li><strong>valid[minlength,mensaje de error,numero_minimo]</strong> => Valida que el campo contenga un mínimo de caracteres indicado el el ultimo parámetro</li>
<li><strong>valid[maxlength,mensaje de error,numero_maximo]</strong> => Valida que el campo contenga un máximo de caracteres indicado el el ultimo parámetro</li>
<li><strong>valid[regex,mensaje de error] </strong>=> Este forma de validación necesita un parámetro data dentro del input donde venga especificada la expresión regular a validar y si no pasa lanza el error.</li>
<li><strong>valid[ensaje de error]</strong> =>Este solo es aplicable a los checkboxes y solo contiene como argumento el error que mostrara cuando el checkbox no este marcado<span id="more-2082"></span></li>
</ul>
<p>Los valores que se pueden personalizar dentro del plugin son los siguientes.</p>
<p></p><pre class="crayon-plain-tag">$(document).ready(function(){

   $(&amp;quot;#testForm&amp;quot;).simpleValidate({
     text: Array(&amp;quot;El campo&amp;quot;,&amp;quot; es obligatorio&amp;quot;),
     email: &amp;quot;Ingrese un email valido&amp;quot;,
     zip: &amp;quot;Ingrese un codigo postal valido&amp;quot;,
     min: Array(5,&amp;quot;Ingrese al menos &amp;quot;, &amp;quot;caracteres&amp;quot;),
     max: Array(10,&amp;quot;Ingrese maximo&amp;quot;, &amp;quot;caracteres&amp;quot;),
     checkmessage:'Es necesario marcar el campo',
     field: 'valid',
     msg: function(msg){
      alert(msg);
     }
   });

 });</pre><p></p>
<p>Donde</p>
<ul>
<li><strong>text</strong>: Es un array que contiene dos textos que mostrara en el error cuando un campo sea required de la forma (texto1+ nombre_campo+texto2)</li>
<li><strong>email</strong>: Es el error que mostrara cuando un email este invalido</li>
<li><strong>zip</strong>: Error cuando el codigo postal este mal</li>
<li><strong>min</strong>: array en donde viene el error a mostrar y el numero de elementos a validar por default</li>
<li><strong>max</strong>: array en donde viene el error a mostrar y el numero de elementos a validar por default</li>
<li><strong>checkmessage</strong>: Este es el mensaje que mostrara cuando se genere un error al no estar validado un checkbox</li>
<li><strong>field</strong>: es la clave para validar los campos, es decir cuando buscamos title=&#8221;valid[etc]&#8221; valid es el contenido del title del campo si le ponemos otro, podemos usar dentro de title lo que le hayamos puesto en esta opcion evitando asi posibles colisiones de palabras que esten usando otros plugins.</li>
<li><strong>msg</strong>: esta es una funcion, en donde solo estamos mandando un alert para mostrar el error, sin embargo si posees algun otro plugin como Sexyalertbox o similar puedes meterlos dentro de esta funcion asi cuando se lanza el error mostrara el cuadro de dialogo de la forma como deses (por ejemplo dentro de un Sexyalertbox).</li>
</ul>
<p>Es importante recalcar que estos parámetros son cambiados por los mensajes establecidos dentro del propio input, así que casi nunca se cambian estos valores.</p>
<p>Además el plugin recibe un parámetro mas el cual es una función anónima (según yo seria un closoure ), la cual se ejecutara cuando termine la validación, es decir si al terminar tu validación deseas que en vez de enviar el formulario normalmente, lo envié por XMLHttpRequest(aka Ajax), esta función al estar agregada hace que tu tomes la decisión de que hacer una vez terminada la validación y pasada obviamente.</p>
<p>Ejemplo complejo, usando JAlert para mostrar los errores (<a href="http://www.anieto2k.com/2008/12/31/jquery-alert-dialogs-reemplazo-para-alert-prompt-y-confirm/">http://www.anieto2k.com/2008/12/31/jquery-alert-dialogs-reemplazo-para-alert-prompt-y-confirm/</a>)</p>
<p></p><pre class="crayon-plain-tag">$(document).ready(function(){

   $(&amp;quot;#testForm&amp;quot;).simpleValidate(
     {
       msg: function(msg){
         jAlert(msg, 'Alert Dialog');
          }
     },
     function (){
       $.post('/account/',
              $(this).serialize(),
              function( Response ){
                 jAlert(&amp;quot;Sus datos se han enviado via Ajax&amp;quot;);
              });
     }
   );

 });</pre><p></p>
<p>El ejemplo anterior, hace una validación pero los mensaje de error los muestra de una forma diferente usando otro plugin (JAlert en este caso) además de eso al terminar la validación envía todos los datos del formulario por post usando ajax y cuando recibe respuesta manda un alert.</p>
<p>Como vemos es muy fácil, poderoso y practico de usar.</p>
<p>No se si me explique bien pero estar posteando por la noche da bastante sueño, ojala y les haya gustado mi plugin y sobre todo ojala y les sea útil.</p>
<p>Para bajarlo y ver las actualizaciones aquí dejo la información:</p>
<p>simpleValidate Version 1.6 Beta</p>
<p>GitHub: <a href="https://github.com/Ajaxman/simpleValidate">https://github.com/Ajaxman/simpleValidate</a> (Fork-ME =) )<br />
Plugins Jquery: <a href="http://plugins.jquery.com/project/simpleValidate">http://plugins.jquery.com/project/simpleValidate</a></p>
<p>Cualquier felicitación, duda, comentario, sugerencia, correción , Donación =), con gusto estoy para atenderla, la licencia es GPL =)</p>
<p>Hasta el próximo post</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajaxman.net/javascript-simplevalidate-jquery-plugin.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[Ajaxman] Como me fue en el Flisol 2011</title>
		<link>http://www.ajaxman.net/ajaxman-como-me-fue-en-el-flisol-2011.html</link>
		<comments>http://www.ajaxman.net/ajaxman-como-me-fue-en-el-flisol-2011.html#comments</comments>
		<pubDate>Tue, 19 Apr 2011 04:06:28 +0000</pubDate>
		<dc:creator>ajaxman</dc:creator>
				<category><![CDATA[Ajaxman]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Flisol 2011]]></category>
		<category><![CDATA[Platicas]]></category>

		<guid isPermaLink="false">http://www.ajaxman.net/?p=2077</guid>
		<description><![CDATA[<p>Bueno hoy que tengo que dormirme temprano me dio por postear lo de el sábado pasado osea el Flisol 2011. Aquí va un pequeño resumen de como me fue, la verdad pensaba postearlo antes pero con mi exceso de tiempo y demás pues ya no se pudo bueno aquí vamos. Se realizo el día 9 [...]</p>
 ]]></description>
			<content:encoded><![CDATA[<p>Bueno hoy que tengo que dormirme temprano me dio por postear lo de el sábado pasado osea el Flisol 2011.</p>
<p>Aquí va un pequeño resumen de como me fue, la verdad pensaba postearlo antes pero con mi exceso de tiempo y demás pues ya no se pudo bueno aquí vamos.</p>
<p>Se realizo el día 9 de Abril, en toda latinoamerica, en muchas sedes como Universidades,o similares.</p>
<p>Yo me organice y me fui a dar una platica de PHP en la UACM (Universidad Autónoma de la Ciudad de México) campus &#8220;Cuautepec&#8221; que se ubica en La Gustavo A. Madero de México D.F.</p>
<p>La platica se denomino &#8220;Desarrollo de Aplicaciones Web con PHP&#8221;, en la cual trate de abordar las ventajas de PHP, y cual es el presente y futuro del desarrollo Web profesional con PHP.</p>
<p>Básicamente aborde los siguientes temas.</p>
<ul>
<li><strong>Importancia de tener presencia en la Web</strong></li>
<li><strong>Tener un blog o un sitio Web</strong></li>
<li><strong>Por que apostar por las tecnologías Libres</strong></li>
<li><strong>Ventajas de tener un Servidor Linux</strong></li>
<li><strong>Ventajas de usar Apache Web Server</strong></li>
<li><strong>Por que usar PHP</strong></li>
<li><strong>Como es la sintaxis de PHP</strong></li>
<li><strong>Desventajas de PHP (Codigo Spaghetti)</strong>
<ul>
<li><strong>Soluciones</strong></li>
<li><strong>Programación Orientada a Objetos</strong></li>
<li><strong>Arquitectura MVC</strong></li>
</ul>
</li>
<li><strong>Los CMS</strong></li>
<li><strong>Los Frameworks y sus ventajas y desventajas</strong></li>
<li><strong>Quien usa PHP y por que lo usan (Ventajas, Estabilidad, Potencia)</strong></li>
<li><strong>El grupo Programadores PHP</strong></li>
</ul>
<p>Realmente me hizo falta tiempo para mostrar todas las ventajas de PHP, pero al parecer gusto mucho la platica tuve un par de Feedbacks interesantes.</p>
<p>Me regalaron una playera, un Tux y el gafete decía Firefox (y yo bien feliz) además de que me ofrecieron un reconocimiento los cuales pongo a continuación</p>
<p><object width="400" height="300"><param name="flashvars" value="offsite=true&#038;lang=es-us&#038;page_show_url=%2Fphotos%2F61913993%40N07%2Fshow%2F&#038;page_show_back_url=%2Fphotos%2F61913993%40N07%2F&#038;user_id=61913993@N07&#038;jump_to="></param><param name="movie" value="http://www.flickr.com/apps/slideshow/show.swf?v=71649"></param><param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/slideshow/show.swf?v=71649" allowFullScreen="true" flashvars="offsite=true&#038;lang=es-us&#038;page_show_url=%2Fphotos%2F61913993%40N07%2Fshow%2F&#038;page_show_back_url=%2Fphotos%2F61913993%40N07%2F&#038;user_id=61913993@N07&#038;jump_to=" width="400" height="300"></embed></object></p>
<p>Ahora dejo los slides que use para dicha platica, por si alguno quiere ver las ventajas de PHP.</p>
<div style="width:425px" id="__ss_7573660"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/Ajaxman/presentacion-flisol-2011" title="Desarrollo de aplicaciones Web con PHP - Flisol 2011">Desarrollo de aplicaciones Web con PHP &#8211; Flisol 2011</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/7573660" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
<div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/Ajaxman">Ajaxman</a> </div>
</p></div>
<p>Saludos y seamos más phpheros</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajaxman.net/ajaxman-como-me-fue-en-el-flisol-2011.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[Flisol 2011] Platica &quot;Desarrollo de Aplicaciones Web con PHP&quot;</title>
		<link>http://www.ajaxman.net/flisol-2011-platica-desarrollo-de-aplicaciones-web-con-php.html</link>
		<comments>http://www.ajaxman.net/flisol-2011-platica-desarrollo-de-aplicaciones-web-con-php.html#comments</comments>
		<pubDate>Thu, 07 Apr 2011 19:29:47 +0000</pubDate>
		<dc:creator>ajaxman</dc:creator>
				<category><![CDATA[Ajaxman]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Cuautepec]]></category>
		<category><![CDATA[Flisol 2011]]></category>
		<category><![CDATA[Ponencias]]></category>
		<category><![CDATA[UACM]]></category>

		<guid isPermaLink="false">http://www.ajaxman.net/?p=2074</guid>
		<description><![CDATA[<p>Hola, pues de algunos ajustes ya estamos en un nuevo servidor, el anterior nos funciono muy bien, pero tuvimos que migrar por otras causas (gracias Tirso =) ). He estado trabajando duro en el proyecto MSK(codename), pero aun faltan algunas cosas, ya compre el server y todo, en breve (léase 1 mes jaja) estaremos lanzado [...]</p>
 ]]></description>
			<content:encoded><![CDATA[<p>Hola, pues de algunos ajustes ya estamos en un nuevo servidor, el anterior nos funciono muy bien, pero tuvimos que migrar por otras causas (gracias Tirso =) ).</p>
<p>He estado trabajando duro en el proyecto MSK(codename), pero aun faltan algunas cosas, ya compre el server y todo, en breve (léase 1 mes jaja) estaremos lanzado invitaciones para que lo testeen y me digan que les parece.</p>
<p>Ahora bien, pensé en apoyar con algo en alguna sede, y bueno pues ya esta. Se trata de una platica desde básica a avanzada, la cual durara aproximadamente 2 horas.</p>
<p><strong>Tema</strong>: Desarrollo de Aplicaciones Web con PHP<br />
<strong>Objetivo</strong>: Mostrar al capacidad del lenguaje, mostrar la sintaxis básica, y por que es la mejor opción como software para desarrollo de paginas web dinámicas<br />
<strong>Duración</strong>: 2 Horas (aproximadamente)<br />
<strong>Lugar</strong>: Universidad Autónoma de la Ciudad de México (UACM) Campus &#8220;Cuautepec&#8221;<br />
<strong>Dirección</strong>: Avenida La Corona 320, Colonia Loma la Palma, Delegación Gustavo A. Madero.<br />
<strong>Costo</strong>: Gratuito</p>
<p><strong>Temas</strong>:</p>
<ul>
<li>Internet y la Web</li>
<li>La importancia del internet en la vida diaria.</li>
<li>Servidores Web</li>
<li>LAMP, El Open Source en la red</li>
<li>Programando en PHP</li>
<li>La programación Orientada a Objetos en PHP</li>
<li>Los CMS y Frameworks, como desarrollar mejor y mas rápido</li>
<li>El pasado, presente y futuro de PHP</li>
</ul>
<p>Sera un platica con intención de ser taller, ya que se pretende mostrar todo estos y es opcional que los usuarios programen algo como ejemplo, aunque claro tomemos lo con platica.</p>
<p><strong>Como llegar</strong>:</p>
<ul>
<li> En auto te puedes ir por avenida de los Cien Metros, a la altura del Reclusorio Norte. A 20 minutos de Poli Zacatenco.</li>
<li> Metro La Raza, sale el RTP que dice &#8220;Reclusorio-Charco&#8221;, y pasa por las estaciones de metro Autobuses del Norte, Instituto del Petróleo y Politécnico(pasa afuera de la UACM).</li>
<li> Metro Indios Verdes, salen RTP y microbuses con la misma leyenda que el anterior(pasa afuera de la UACM).</li>
</ul>
<p><strong>Mapa</strong>:<br />
<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.es/maps?f=d&amp;source=s_d&amp;saddr=Eje+Central+(L%C3%A1zaro+C%C3%A1rdenas)&amp;daddr=19.5395919,-99.1525999+to:La+Corona&amp;hl=es&amp;geocode=FU-OKQEdSBsX-g%3BFYcmKgEdKQ0X-ilD9exAm_fRhTFGGDYJZZ8mxg%3BFXpkKgEdBDYX-g&amp;mra=dme&amp;mrsp=2&amp;sz=16&amp;via=1&amp;sll=19.554351,-99.147813&amp;sspn=0.010899,0.022445&amp;num=10&amp;ie=UTF8&amp;ll=19.554351,-99.147813&amp;spn=0.010899,0.022445&amp;output=embed"></iframe></p>
<p>Esperamos que les guste y ya saben cualquier queja, felicitación, donativos( =) ), me avisan por mi twitter<a href="http://www.twitter.com/ajaxman" target="_blank"> @ajaxman</a>.</p>
<p>Por cierto habra talleres de instalacion de Linux, platicas, asistan y disfrutemos este evento.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajaxman.net/flisol-2011-platica-desarrollo-de-aplicaciones-web-con-php.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[Programadores PHP] Datos del Taller de POO con PHP5</title>
		<link>http://www.ajaxman.net/programadores-php-datos-del-taller-de-poo-con-php5.html</link>
		<comments>http://www.ajaxman.net/programadores-php-datos-del-taller-de-poo-con-php5.html#comments</comments>
		<pubDate>Thu, 24 Feb 2011 18:45:28 +0000</pubDate>
		<dc:creator>ajaxman</dc:creator>
				<category><![CDATA[Ajaxman]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Recursos]]></category>
		<category><![CDATA[Php5]]></category>
		<category><![CDATA[Programadores PHP]]></category>
		<category><![CDATA[Taller POO]]></category>
		<category><![CDATA[Telmexhub]]></category>

		<guid isPermaLink="false">http://www.ajaxman.net/?p=2067</guid>
		<description><![CDATA[<p>Bueno como casi todos ya sabían este sábado 26 de Febrero doy comienzo con el taller de POO en PHP5, el cual se realizara en #Telmexhub, lamentablemente (afortunadamente) los lugares ya se llenaron, solo había 30 lugares. Las fechas a realizarse son: 26 de febrero 2011 (12:00 pm &#8211; 3:00 pm) 5 de Marzo 2011 [...]</p>
 ]]></description>
			<content:encoded><![CDATA[<p>Bueno como casi todos ya sabían este sábado 26 de Febrero doy comienzo con el taller de POO en PHP5, el cual se realizara en #Telmexhub, lamentablemente (afortunadamente) los lugares ya se llenaron, solo había 30 lugares.</p>
<p>Las fechas a realizarse son:</p>
<ul>
<li>26 de febrero 2011 (12:00 pm &#8211; 3:00 pm)</li>
<li>5 de Marzo 2011 (12:00 pm &#8211; 3:00 pm)</li>
<li>12 de Marzo 2011 (12:00 pm &#8211; 4:00 pm/4 hrs)</li>
</ul>
<p>Es gratuito, si alguno de los asistentes ya registrados no va a ir le pedimos por favor si fuera tan amable de avisarnos por que hay mucha gente que desea ir y ya esta lleno.</p>
<p>Este es le temario que se desarrollara durante el taller.</p>
<ul>
<li>Conceptos OOP
<ul>
<li>Clases</li>
<li>Objetos</li>
<li>Herencia</li>
<li>Polimorfismo</li>
<li>Interfaz</li>
<li>Encapsulado</li>
</ul>
</li>
<li>Clases</li>
<li>Métodos</li>
<li>Propiedades(Atributos)</li>
<li>$this</li>
<li>Objetos</li>
<li>Herencia (extender una clase)</li>
<li>Encapsulado (privado, protegido,publico,final)</li>
<li>clases final</li>
<li>Método constructor __construct()</li>
<li>Método destructor __destruct()</li>
<li>Operador de alcance de resolucion :: (Paamayim Nekudotayim)
<ul>
<li>Constantes clase::CONST</li>
<li>self:: => mismos metodos y propiedades pero estaticas</li>
<li>parent:: =>Metodos y propiedades padres</li>
</ul>
</li>
<li>Métodos estáticos</li>
<li>Propiedades estáticas</li>
<li>Constantes</li>
</ul>
<p>Se tratara de realizar todo el temario dependiendo del avance general del grupo y del tiempo.</p>
<p>Algunas cosas a considerar son las siguientes.<span id="more-2067"></span></p>
<ul>
<li>No se preocupen si no llevan Computadora telmexhub las presta sin costo solo tiene que registrarse en si sitio</li>
<li>Si llevan computadora propia les recomiendo ampliamente lleven instalado PHP y Apache(es opcional MySQL)
<ul>
<li><a href="http://www.ajaxman.net/186/apache-manual-de-instalacion-y-configuracion-de-apache-con-windows/">Manual de Instalación en Windows</a></li>
<li><a href="http://www.ajaxman.net/2047/lamp-instalando-un-servidor-apache2-mysql-php-y-phpmyadmin-en-gnulinux-debian/">Manual de Instalación en Linux</a></li>
<li>Pueden bajarse el WAMP, XAMPP, o similar que ya trae todo</li>
<li>Si no llevan lap y telmex les presta una y no quieren estar instalando podemos apoyarnos de Codepad http://codepad.org/, que nos permite programar y ejecutar código PHP.</li>
</ul>
</li>
<li>También seria bueno que llevaran algún editor de Código como por ejemplo
<ul>
<li>Windows</li>
<li>Notepad ++ (OpenSource)</li>
<li>Netbeans (Open Source)</li>
<li>Webuilder (de Pago con trial)</li>
<li>PHPExpert Editor (de Pago con trial)</li>
</ul>
</li>
<li>Linux
<ul>
<li>Netbeans (Open Source)</li>
<li>Kate  (Open Source)</li>
<li>Kwrite  (Open Source)</li>
<li>Kdevelop  (Open Source)</li>
<li>Apatana  (Open Source)</li>
<li>Komodo Edit  (Open Source)</li>
</ul>
</li>
</ul>
<p>Bueno creo que es es todo, pueden unirse al grupo en Google Groups aqui <a href="https://groups.google.com/group/programadoresdephp?hl=es">https://groups.google.com/group/programadoresdephp?hl=es</a></p>
<p>Cualquier duda, antes, durante y después del taller la pueden comentar a mi Twitter <a href="http://twitter.com/ajaxman">twitter.com/ajaxman</a></p>
<p>Saludos</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajaxman.net/programadores-php-datos-del-taller-de-poo-con-php5.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>[Kohana - PHP] Lanzamiento de Kohana 3.1 &quot;Merle&quot; y como hacer el upgrade</title>
		<link>http://www.ajaxman.net/kohana-php-lanzamiento-de-kohana-3-1-merle-y-como-hacer-el-upgrade.html</link>
		<comments>http://www.ajaxman.net/kohana-php-lanzamiento-de-kohana-3-1-merle-y-como-hacer-el-upgrade.html#comments</comments>
		<pubDate>Fri, 11 Feb 2011 05:07:42 +0000</pubDate>
		<dc:creator>ajaxman</dc:creator>
				<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Kohana]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Kohana 3]]></category>
		<category><![CDATA[Kohana 3.1]]></category>
		<category><![CDATA[Kohana Framework]]></category>

		<guid isPermaLink="false">http://www.ajaxman.net/?p=2062</guid>
		<description><![CDATA[<p>Pues apenas me vengo enterando de que los desarrolladores de Kohana han liberado el día 7 de Febrero la versión 3.1 del Framework Kohana llamada &#8220;merle&#8220;. Pues obviamente hay muchos que queremos tener nuestro Framework actualizado, entonces pues me dispuse a migrar un website de la versión 3.0.9 a la 3.0.x. Las instrucciones de migrar [...]</p>
 ]]></description>
			<content:encoded><![CDATA[<p>Pues apenas me vengo enterando de que los desarrolladores de <strong>Kohana</strong> han liberado el día 7 de Febrero la versión 3.1 del <strong>Framework Kohana</strong> llamada &#8220;<strong>merle</strong>&#8220;.</p>
<p>Pues obviamente hay muchos que queremos tener nuestro Framework actualizado, entonces pues me dispuse a migrar un website de la versión 3.0.9 a la 3.0.x.</p>
<p>Las instrucciones de migrar son fáciles, regularmente se basa en reemplazar el directorio system de nuestra aplicación, pero esta nueva versión incorpora muchos cambios los cuales, hacen la migración un poco mas complicada.</p>
<p>El mismo sitio de kohana nos avisa de los siguientes cambios:</p>
<p></p><pre class="crayon-plain-tag">//Versi&oacute;n 3.0.x

$this-&gt;request-&gt;response = 'foo';

//Versi&oacute;n 3.1
$this-&gt;response-&gt;body('foo');


//Cambios en la clase Request de propiedades a m&eacute;todos

//Versi&oacute;n 3.0.x&nbsp; ===&gt;&nbsp;&nbsp; &nbsp;Versi&oacute;n 3.1
Request::$controller ==&gt; Request::controller()
Request::$action ==&gt; Request::action()
Request::$directory ==&gt; Request::directory()
Request::$uri ==&gt; Request::uri()</pre><p></p>
<p>Todos lo puntos son marcados aquí<br />
<a href="http://kohanaframework.org/3.1/guide/kohana/upgrading">http://kohanaframework.org/3.1/guide/kohana/upgrading</a>.</p>
<p>Ahora bien, a mi los que mas me interesaron, son importantes y no vienen aqui son los siguientes.</p>
<p>Request</p>
<p></p><pre class="crayon-plain-tag">//Versi&oacute;n 3.0.x

Request::instance();</pre><p></p>
<p>El método estático anterior nos devolvía el singleton de nuestra solicitud con dicho método estático podiamos obtener parámetros y una de las cosas para lo que yo la utilizaba era para la creación de mi Breadcrumb.</p>
<p></p><pre class="crayon-plain-tag">//Version 3.1

Request::current();

//o

Request::initial();</pre><p></p>
<p>Aquí como vemos tenemos dos opciones, y se elimino instance, las dos son iguales salvo por un detalle, si usamos <strong>HMVC</strong>, initial contendrá la información de la petición inicial, es decir si desde un controlador estamos invocando a un <strong>Request::factory()</strong>, ese sera <strong>inital</strong> y el <strong>factory</strong> invocado sera <strong>current</strong> cuando estemos programando dentro del <strong>factory</strong>.<br />
<span id="more-2062"></span><br />
Importante, lo anterior hay que tenerlo muy en cuenta ya que algunos módulos pueden usar dicho método estático, entonces, hay que buscar alguna actualización del mismo (me paso con el modulo de paginación)</p>
<p><strong>Bootstrap</strong></p>
<p>Pues creo que hay que destacar que reescribieron bastante de este archivo, por ello hay que reemplazar el que tenemos, obviamente guardando una copia del actual, ya que recordemos que en el <strong>bootstrap</strong> se guardan las rutas, módulos y muchas configuraciones de Kohana.</p>
<p><strong>Desaparece el método ->render() de la vistas</strong></p>
<p>También es fundamental remarcar este cambio, en versiones anteriores se usaba <strong>View::factory($vista)->render(); </strong>el cual ya no existe por ello si lo tienen así, quítenle ese método a sus vistas o sea quedaria <strong>View::factory($vista);</strong> (Nota puede afectar a sus módulos, de nuevo me paso con el modulo de paginación).</p>
<p><strong>Security::xss_clean </strong></p>
<p>También desaparece, podemos usar <strong>HTML::chars().</strong></p>
<p>Para generar mi breadcrumb yo lo hacia con una código el cual extraía un array de la url, el cual ya no funciona, ahora hay que tomar la url y volverla array con explode como dice el siguiente código</p>
<p></p><pre class="crayon-plain-tag">//versi&oacute;n 3.0.x&nbsp; $segments es un array con las partes que forman la url

$segments = Request::instance()-&gt;param();


//Versi&oacute;n 3.1&nbsp; Ahora tenemos que tomarla de un string el cual cambio la forma de extraerlo ya que las nuevas clases est&aacute;n mas completas&nbsp; y convertirla a array
$segments = Request::$current-&gt;param();
$segments = explode('/',$segments['uri']);</pre><p></p>
<p>Bueno pues como verán los cambios si son fuertes, y también ya no viene el modulo de paginación( ahora hay que bajarlo),inclusive el <strong>index.php</strong> cambia, como vemos el equipo de kohana realizo bastantes cambios, los cuales al principio pueden darnos algún dolor de cabeza, pero es mejor migrar de una vez ya que ya están trabajando en la versión 3.2(la cual saldría en 6 meses aproximadamente) y hasta la 3.3.</p>
<p>Hasta aquí llegamos, con este post, en entregas posteriores tratare de cubrir los temas pendientes de <strong>kohana framework</strong></p>
<p>Anuncio del lanzamiento: <a href="http://forum.kohanaframework.org/discussion/8024/kohana-v3.1.0-released">http://forum.kohanaframework.org/discussion/8024/kohana-v3.1.0-released</a></p>
<p>Manual de Kohana 3.1.x :<a href="http://kohanaframework.org/3.1/guide/"> http://kohanaframework.org/3.1/guide/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajaxman.net/kohana-php-lanzamiento-de-kohana-3-1-merle-y-como-hacer-el-upgrade.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>[Manual-PHP] Creando un proyecto MVC con Framework Kohana PHP parte II</title>
		<link>http://www.ajaxman.net/manual-php-creando-un-proyecto-mvc-con-framework-kohana-php-parte-ii.html</link>
		<comments>http://www.ajaxman.net/manual-php-creando-un-proyecto-mvc-con-framework-kohana-php-parte-ii.html#comments</comments>
		<pubDate>Tue, 24 Aug 2010 07:39:59 +0000</pubDate>
		<dc:creator>ajaxman</dc:creator>
				<category><![CDATA[Ajaxman]]></category>
		<category><![CDATA[Kohana]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Kohana 3]]></category>
		<category><![CDATA[KohanaPHP]]></category>
		<category><![CDATA[Php5]]></category>

		<guid isPermaLink="false">http://www.ajaxman.net/?p=2017</guid>
		<description><![CDATA[<p>Bien esta es la continuación al manual de &#8220;Creando un proyecto MVC con Framework Kohana PHP parte I&#8220;, y ahora veremos un acercamiento más profundo al MVC. Bien vamos a continuar con el proyecto que teníamos en la parte anterior, y sobre ese mismo trabajaremos, ya teníamos nuestro controlador y nuestro modelo. Algo que debemos [...]</p>
 ]]></description>
			<content:encoded><![CDATA[<p>Bien esta es la continuación al manual de &#8220;<a href="http://www.ajaxman.net/1959/manual-php-creando-un-proyecto-mvc-con-framework-kohana-php-parte-i/">Creando un proyecto MVC con Framework Kohana PHP parte I</a>&#8220;, y ahora veremos un acercamiento más profundo al MVC.</p>
<p>Bien vamos a continuar con el proyecto que teníamos en la parte anterior, y sobre ese mismo trabajaremos, ya teníamos nuestro controlador y nuestro modelo.</p>
<p></p><pre class="crayon-plain-tag">&amp;lt;?php defined('SYSPATH') or die('No direct script access.');

class Controller_Tienda extends Controller {
/**
 * Controller_Tienda Es el controlador por default recuerden el bootstrap
 * todos los controladores llevan esta sintaxis, Controller_&amp;lt;Nombre_del_controlador&amp;gt;
 *
 *&amp;amp;nbsp; action_index() Es la acci&oacute;n por default (ejemplo http://localhost/tienda/accion)
 *&amp;amp;nbsp; si no se especifica en la url (ejemplo http://localhost/tienda/accion, se usara
 *&amp;amp;nbsp; index por default y la sintaxis es action_&amp;lt;nombre_de_la_accion&amp;gt;
 */
 public function action_index()
 {
 echo &amp;quot;Programando ....&amp;quot;;
 }

} // End Tienda</pre><p></p>
<p>Algo que debemos tener en cuenta en Kohana PHP es que existen dos tipos de controladores padres (parents) de los cuales podemos extender a nuestros controladores con los que trabajemos y eventualmente podemos crear más a nuestro gusto, pero de momento solo veremos los que podemos usar por default en Kohana PHP.</p>
<p><strong>Controlador &#8220;Controller&#8221;</strong>, este es el controlador que usamos en el ejemplo de la parte uno y el cual está arriba, al extender nuestra clase de este controlador hacemos que funcione todo lo necesario para trabajar con Kohana, digamos que es el normal, y lo correcto para mostrar una salida en pantalla es usar la variable publica $this->request->response, y a esta se le asigna lo que necesitemos mostrar, lo cual regularmente debe de ser y será una vista.</p>
<p><strong>Controlador &#8220;Controller_Template&#8221;</strong> este al igual que el anterior, permite que las clases que extiendan de el, tengan toda la funcionalidad de una clase controladora de Kohana, la grand diferencia, con la anterior, es que esta clase necesita una vista por default, la cual será rendereada o interpretada/mostrada automáticamente.</p>
<p>Ahora veamos las vistas para explicar los puntos anteriores.</p>
<p><strong>Una vista es un archivo php(se puede llegar a usar plantillas Smarty mediante un modulo), alojado en ruta_de_instalacion/application/views el cual regularmente es un archivo que contiene un poco de código PHP y código HTML el cual nos permite mostrar nuestra aplicación Web.</strong></p>
<p>Para poder cargar una vista es necesario usar el método<strong> View::factory($vista_name);</strong>, donde $vista_name es el nombre del archivo sin la extensión.</p>
<p>Hagamos un ejemplo usando los métodos anteriores para ello usaremos este código HTML casi vacío.</p>
<p>Nombre: PATH_INSTALACION/application/views/template.php</p>
<p></p><pre class="crayon-plain-tag">&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Strict//EN&amp;quot;
 &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&amp;quot;&amp;gt;

&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;gt;
&amp;lt;head&amp;gt;
 &amp;lt;title&amp;gt;Vista para Kohana PHP&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
 &amp;lt;p&amp;gt;Hola esta es una vista para Kohana PHP&amp;lt;/p&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;</pre><p></p>
<p><span id="more-2017"></span></p>
<p></p><pre class="crayon-plain-tag">&amp;lt;?php defined('SYSPATH') or die('No direct script access.');

class Controller_Tienda extends Controller {

 public function action_index()
 {

 $vista = View::factory('template');
 $this-&gt;request-&gt;response = $vista;

 }

} // End Tienda</pre><p></p>
<p>El código anterior nos mostrara el código HTML cargado en la vista, además procesara el código PHP que contenga la vista.</p>
<p>Ahora lo mismo pero usando controller_Template, en este caso únicamente hay que crear una variable llamada template y a estar asignarle el nombre de nuestra vista omitiendo también la extensión.</p>
<p></p><pre class="crayon-plain-tag">&amp;lt;?php defined('SYSPATH') or die('No direct script access.');

class Controller_Tienda extends Controller_Template {

 public $template = 'template';

 public function action_index()
 {
 //Puede estar vacio
 }

} // End Tienda</pre><p></p>
<p>Si pueden probar verán que ambos controladores funciona bien y muestran exactamente lo mismo.</p>
<p>Bien hasta aquí llegamos con la parte II, de este manual como ven ahora si vamos cerrando pendientes, esperen próximamente la parte III</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajaxman.net/manual-php-creando-un-proyecto-mvc-con-framework-kohana-php-parte-ii.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[PDF-Python] Disponible revista Phyton Entre Todos (PET)</title>
		<link>http://www.ajaxman.net/pdf-python-disponible-revista-phyton-entre-todos-pet.html</link>
		<comments>http://www.ajaxman.net/pdf-python-disponible-revista-phyton-entre-todos-pet.html#comments</comments>
		<pubDate>Fri, 20 Aug 2010 18:41:22 +0000</pubDate>
		<dc:creator>ajaxman</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Pdf]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Recursos]]></category>
		<category><![CDATA[PET]]></category>

		<guid isPermaLink="false">http://www.ajaxman.net/?p=2013</guid>
		<description><![CDATA[<p>Pues aunque esta noticia ya tiene varios días, pero como no la he visto muy publicada, hago eco de la misma. Python tes un lenguaje bello, simple y poderoso, y ya se bastante del mismo, y me acabo de enterar de que salio una revisa gratuita para desarrolladores y aficionados de Python, a mi me [...]</p>
 ]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } -->Pues aunque esta noticia ya tiene varios días, pero como no la he visto muy publicada, hago eco de la misma.</p>
<p>Python tes un lenguaje bello, simple y poderoso, y ya se bastante del mismo, y me acabo de enterar de que salio una revisa gratuita para desarrolladores y aficionados de Python, a mi me cae perfecto puesto que son pocas hojas y con información clara y precisa.</p>
<p style="text-align: center;">
<div id="attachment_2014" class="wp-caption aligncenter" style="width: 578px"><a href="http://revista.python.org.ar/"><img class="size-full wp-image-2014  " title="PET: Python Entre Todos" src="http://www.ajaxman.net/wp-content/uploads/2010/08/tapa-nro1.jpg" alt="PET: Python Entre Todos" width="568" height="401" /></a><p class="wp-caption-text">PET: Python Entre Todos</p></div>
<p>Ademas esta en varios formatos y los trozos de código ayudan mucho a lo iniciado como yo en Python.</p>
<p>Los temas que trae el numero 1 de la revisa son:</p>
<ul>
<li>PET First Shot</li>
<li>Cómo contribuir a PET</li>
<li>PyAr, la historia</li>
<li>from gc import commonsense &#8211; Finish Him!</li>
<li>Concurrencia Indolora: el módulo processing</li>
<li>Introducción a Unit Testing con Python</li>
<li>Taint Mode en Python</li>
<li>Dinamismo Aplicado</li>
<li>Decorando Código (Parte 1)</li>
<li>Web2Py Para Todos</li>
<li>¿Cómo Está Hecha Esta Revista?</li>
<li>Desafío PET</li>
<li>Un poco de xkcd</li>
</ul>
<p>Yo ya la baje y ya la estoy estudiando, ojala y le sirva a todos como a mi y ayudemos entre todos a difundir este increíble lenguaje.</p>
<p>Web de la revista:  <a href="http://revista.python.org.ar/">Python Entre Todos(PET)</a></p>
<p>Enlace de descarga:<a href="http://revista.python.org.ar/1/html/"> Descarga Python Entre Todos(PET)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajaxman.net/pdf-python-disponible-revista-phyton-entre-todos-pet.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Evento] Konference (Kohana Conference) en Londres el 15 de Mayo 2010</title>
		<link>http://www.ajaxman.net/evento-konference-kohana-conference-en-londres-el-15-de-mayo-2010.html</link>
		<comments>http://www.ajaxman.net/evento-konference-kohana-conference-en-londres-el-15-de-mayo-2010.html#comments</comments>
		<pubDate>Sat, 01 May 2010 04:58:05 +0000</pubDate>
		<dc:creator>ajaxman</dc:creator>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Kohana]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Ko3]]></category>
		<category><![CDATA[Kohana 3]]></category>
		<category><![CDATA[Konference]]></category>

		<guid isPermaLink="false">http://www.ajaxman.net/?p=1896</guid>
		<description><![CDATA[<p>Ahora si a lo windows Woow. Hasta hoy apenas me vengo enterando de esto, les platico rápidamente. El 15 de Mayo de este año (2010), se llevara a cabo en Londres, una conferencia de desarrolladores del Framework Kohana: KOnference &#8211; The London Kohana Conference 2010. La verdad estoy con unas tremendas ganas de ir sin [...]</p>
 ]]></description>
			<content:encoded><![CDATA[<p>Ahora si a lo windows Woow.</p>
<p>Hasta hoy apenas me vengo enterando de esto, les platico rápidamente.</p>
<p>El 15 de Mayo de este año (2010), se llevara a cabo en Londres, una conferencia de desarrolladores del Framework Kohana:<br />
<strong>KOnference &#8211; The London Kohana Conference 2010.</strong></p>
<p>La verdad estoy con unas tremendas ganas de ir sin embargo dudo mucho que pueda, por que no creo que en la chamba me paguen la ida y pues ahorita no hay mucho presupuesto.</p>
<p><a href="http://www.meetup.com/london-kohana/calendar/12925064/"><img class="aligncenter size-full wp-image-1895" title="Kohana Konference" src="http://www.ajaxman.net/wp-content/uploads/2010/04/highres_14691577.jpeg.png" alt="Kohana Konference" width="660" height="225" /></a></p>
<p>Me puse ha investigar y aquí les dejo la agenda, la cual se ve va a estar bien interesante.</p>
<ul>
<li><strong>Inicio || Duración || Sesión</strong></li>
<li>10:30  || 25&#8243;  || Registration</li>
<li>10:55  || 5&#8243;   || Welcome</li>
<li>11:00  || 55&#8243;  || Building Swiftly with Kohana 3 &#8211; KO3</li>
<li>11:55  || 40&#8243;  || Designing for Scalability with HMVC &#8211; KO3</li>
<li>12:35  || 15&#8243;  || Break</li>
<li>12:50  || 35&#8243;  || Migrating existing codebases to Kohana &#8211; KO2</li>
<li>13:25  || 30&#8243;  || Advanced ORM &#8211; theory and practice &#8211; KO3</li>
<li>13:55  || 30&#8243;  || Lunch</li>
<li>14:25  || 30&#8243;  || Discovery Session</li>
<li>14:55  || 20&#8243;  || Rapid site prototyping &#8211; KO2</li>
<li>15:15  || 30&#8243;  || Templating with Twig &#8211; KO3</li>
<li>15:45  || 30&#8243;  || Break</li>
<li>16:15  || 25&#8243;  || An introduction to using Gearman with Kohana &#8211; KO2</li>
<li>16:40  || 20&#8243;  || Deploying Kohana on a large scale application &#8211; KO2</li>
<li>17:00  || 10&#8243;  || Mukuru.com &#8211; Kohana meets E-Commerce</li>
<li>17:10  || N/A- || Beers &amp; dinner</li>
</ul>
<p>Como ven habra platicas tanto de Ko3 como de Ko2, el unico pero que veo es que sera hasta Londres y pues es algo complicado ir.</p>
<p>Ojala y leyeran este post y pronto hagan una aunque sea en EUA.</p>
<p>Al parecer el costo sera de 15 GBP (Libras) (unos $300 MXN),  el pago se realiza mediante Paypal y el registro sera a las 10:30 (Hora Local), recomiendan llegar a tiempo ya que como ellos dicen hay mucho que ver y el tiempo esta contado.</p>
<p>Pues ojala y eventos como este le den mas presencia a este increible framework y lo ayuden a crecer, por que se lo merece.</p>
<p>Mas info en los siguientes Links:<br />
<a href="www.meetup.com/london-kohana" target="_blank">KOnference &#8211; The London Kohana Conference 2010</a></p>
<p><a href="http://www.meetup.com/london-kohana/calendar/12925064/" target="_blank">KOnference &#8211; The London Kohana Conference 2010 Calendar</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajaxman.net/evento-konference-kohana-conference-en-londres-el-15-de-mayo-2010.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Php] ¿Que es un ORM?</title>
		<link>http://www.ajaxman.net/php-que-es-un-orm.html</link>
		<comments>http://www.ajaxman.net/php-que-es-un-orm.html#comments</comments>
		<pubDate>Thu, 15 Apr 2010 18:43:10 +0000</pubDate>
		<dc:creator>ajaxman</dc:creator>
				<category><![CDATA[Kohana]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Ko3]]></category>
		<category><![CDATA[Kohana 3]]></category>
		<category><![CDATA[ORM]]></category>

		<guid isPermaLink="false">http://www.ajaxman.net/?p=1871</guid>
		<description><![CDATA[<p>Pues como has visto en los últimos artículos de este blog he hablado mucho del famosísimo ORM que si bien aun me falta mucho, para poder usar todas sus características, lo poco que he aprendido a usarlo me ha resultado maravilloso. El mapeo objeto-relacional u ORM (Object-Relational Mapping), una técnica de programación para convertir datos [...]</p>
 ]]></description>
			<content:encoded><![CDATA[<p>Pues como has visto en los últimos artículos de este blog he hablado mucho del famosísimo <strong>ORM </strong>que si bien aun me falta mucho, para poder usar todas sus características, lo poco que he aprendido a usarlo me ha resultado maravilloso.</p>
<p>El <strong>mapeo objeto-relacional u ORM (Object-Relational Mapping)</strong>, una técnica de programación para convertir datos entre el sistema de tipos utilizado en un lenguaje de programación orientado a objetos y el utilizado en una base de datos relacional. En la práctica esto crea una base de datos orientada a objetos virtual, sobre la base de datos relacional. <a href="http://es.wikipedia.org/wiki/Mapeo_objeto-relacional" target="_blank">Wikipedia</a></p>
<p>Ose nos permite &#8220;pasar&#8221; una base de datos a programación orientada objetos,  es decir tu solo te encargas de configurar tu conexión y mediante métodos puedes hacer los querys que quieras, y todo son objetos.</p>
<p>Existen muchos ORMS, para diferentes lenguajes de programación, pero obviamente nos enfocaremos a Php, y según se (no estoy 100% seguro) pero los ORMS están basados en Hibérnate de Java se supone que fue como el primer ORM.</p>
<p>En Php tenemos los siguientes ORMS:</p>
<ul>
<li> <a href="http://www.doctrine-project.org/" target="_blank">Doctrine</a></li>
<li><a href="http://propel.phpdb.org/trac/" target="_blank">Propel</a></li>
<li><a href="http://v3.kohanaphp.com/guide/tutorials.orm" target="_blank">Kohana ORM</a></li>
<li><a href="http://code.google.com/p/bender-modeler/" target="_blank">Bender-modeler</a> (Este es de un amigo, aunque este es muy completo y va mas allá)</li>
<li><a href="http://junctionphp.com/" target="_blank">Junction PHP</a></li>
<li><a href="http://www.phpobjectgenerator.com/" target="_blank">PHP Object Generator</a></li>
<li><a href="http://phplens.com/lens/adodb/docs-active-record.htm" target="_blank">ADOdb Active Record</a></li>
<li><a href="http://www.ezpdo.net/blog/" target="_blank">EZPDO</a></li>
<li><a href="http://pear.php.net/package/DB_DataObject" target="_blank">DB_DataObject</a></li>
<li>Entre otras</li>
</ul>
<p>Yo no he visto como trabajan cada una y se dé muy buenas fuentes que las mejores estan entre Doctrine y Propel.</p>
<p>Claro que depende de que desees hacer, de hecho aun no he probado bender-modeler pero por lo que veo es muy completa <img src='http://www.ajaxman.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  (Y no es comercial he) ya que como dije va mas allá ya que te genera los modelos que usaras en tu bd automáticamente (incluidos getters y setter).</p>
<p>Voy a mostrar a que me refiero con todo esto del ORM desde la vista de Kohana ORM ya que es donde he trabajado y es muy fácil.</p>
<p>Antes que nada quiero aclarar que son solo ejemplos, prometo que después de esto seguirá nuestra primer MVC con base datos, ORMS y todo, esto solo es para que se den una idea de que hablo cuando digo que esta buenos los ORM´s.</p>
<p>Para empezar solo necesitamos crear nuestra tabla (p.ejem. &#8216;usuarios&#8217;), y crear un modelo con la siguiente sintaxis.</p>
<p><strong>usuarios.php</strong></p>
<p></p><pre class="crayon-plain-tag">&amp;lt;?php

class Model_Usuarios extends ORM {

}

?&amp;gt;</pre><p></p>
<p><span id="more-1871"></span><br />
Lo único que debemos de cambiar es Model_Usuarios donde Usuarios es el nombre de nuestra tabla y listo.</p>
<p>Y ahora veremos la diferencia</p>
<p></p><pre class="crayon-plain-tag">&amp;lt;?php

//Anterior
$resultado = mysql_query(&amp;quot;select * from usuarios&amp;quot;,$conecct);

//en ORM
$resultado = ORM::factory('usuarios')-&gt;find_all();

?&amp;gt;</pre><p></p>
<p>Y además el resultado es un objeto no un array, aunque si deseamos usar array agregamos as_array() y listo y por ejemplo si necesitamos ver los usuarios que tuvieron 10 accesos sería algo así.</p>
<p></p><pre class="crayon-plain-tag">&amp;lt;?php

//Esta es una forma
 $resultado = ORM::factory('usuarios')-&gt;where('accesos','=',10)-&gt;find_all();

 //Tambi&eacute;n se puede separar el c&oacute;digo para que se a mas f&aacute;cil leer
 $resultado = ORM::factory('usuarios')
 -&gt;where('accesos','=',10)
 -&gt;find_all();
?&amp;gt;</pre><p></p>
<p>Como puedes ver es muy fácil de usar, y usa el patrón de diseño Factory para acceder a los modelos(tablas), y luego le agregas os métodos, where, orderby, limit, etc.</p>
<p>Claro y pensaras ¿y el modelo solo ese es su contenido, un par de líneas? claro que no, pero ese es más avanzado, podemos hacer joins y demás, pero vayamos por partes, en la siguiente entrega veremos un ejemplo real de una aplicación web en kohana con MVC y una base de datos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajaxman.net/php-que-es-un-orm.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Served from: www.ajaxman.net @ 2012-05-21 19:43:30 -->
