<?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>BeN &#187; Desarrollo Web</title>
	<atom:link href="http://bensite.info/category/desarrollo-web/feed/" rel="self" type="application/rss+xml" />
	<link>http://bensite.info</link>
	<description>Desarrollo Web</description>
	<lastBuildDate>Tue, 10 Apr 2012 23:28:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Tutorial Yii Framework (Parte 4)</title>
		<link>http://bensite.info/2012/02/tutorial-yii-framework-parte-4/</link>
		<comments>http://bensite.info/2012/02/tutorial-yii-framework-parte-4/#comments</comments>
		<pubDate>Fri, 10 Feb 2012 20:25:06 +0000</pubDate>
		<dc:creator>BeN</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Yii Framework]]></category>

		<guid isPermaLink="false">http://bensite.info/?p=307</guid>
		<description><![CDATA[Para esta cuarta parte del tutorial quiero asegurarme que vayamos en sintonía, pueden revisar las partes anteriores en estas ligas: http://bensite.info/2011/09/tutorial-yii-framework-parte-3/ http://bensite.info/2011/09/tutorial-yii-framework-parte-2/ http://bensite.info/2011/09/tutorial-yii-framework-parte-1/ Antes de comenzar recapitulemos un poco: Archivos del Tutorial Estamos usando un repositorio gratuito provisto por los servicios de Google Project, les recomiendo que si no usan SVN y repositorios, comiencen a usarlos, tan [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Para esta cuarta parte del tutorial quiero asegurarme que vayamos en sintonía, pueden revisar las partes anteriores en estas ligas:</p>
<p><a href="http://bensite.info/2011/09/tutorial-yii-framework-parte-3/">http://bensite.info/2011/09/tutorial-yii-framework-parte-3/</a></p>
<p><a href="http://bensite.info/2011/09/tutorial-yii-framework-parte-2/">http://bensite.info/2011/09/tutorial-yii-framework-parte-2/</a></p>
<p><a href="http://bensite.info/2011/09/tutorial-yii-framework-parte-1/">http://bensite.info/2011/09/tutorial-yii-framework-parte-1/</a></p>
<p>Antes de comenzar recapitulemos un poco:</p>
<p><strong>Archivos del Tutorial</strong></p>
<p>Estamos usando un repositorio gratuito provisto por los servicios de Google Project, les recomiendo que si no usan SVN y repositorios, comiencen a usarlos, tan pronto lo prueben no los podrán dejar. <a href="http://bensite.info/2011/06/tutorial-de-subversion-svn-para-desarrollo-web/">Aquí tengo un tutorial</a> para que se inicien en ello usando Eclipse, pero tambien pueden usar aplicaciones gratis, las cuales hay para todos los sistemas operativos, aqui no veremos como usarlas tal ves mas adelanta escriba algo mas detallado pero si les dejo esta liga donde se listan muchos aplicaciones para este fin: http://www.sliksvn.com/en/download</p>
<p>La liga del proyecto en google <a href="http://code.google.com/p/yii-framework-tutorial">http://code.google.com/p/yii-framework-tutorial</a></p>
<p>(Sin embargo comenzare a agregar un zip con los archivos a partir de este punto, los subiré como quedaron en la parte inmediata anterior con el objetivo de que realicen los pasos siguientes, en la siguiente entrega subiré el código con estos pasos <img src='http://bensite.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  )</p>
<p><a href="http://bensite.info/tutorial_archivos/parte3.zip">Descargar ZIP hasta parte 3 </a> Descomprimir el contenido en una carpeta llamada tutorial la cual deberá ir dentro de su carpeta pública web (wwwroot, htdocs, etc. según sea el caso) y recuerden que igual dentro de su carpeta pública deberán tener el framework yii. (dudas? revisen parte 2 del tuto).</p>
<p><strong>Comencemos con parte 4</strong></p>
<p>En la parte 3 aprendimos un poco del MVC, no desistan si lo ven complicado ya que con el uso en realidad se vuelve muy sencillo y creanme les hara el trabajo mas sencillo adoptar una metodología de desarrollo. Vimos como existen 3 carpetas importantes en nuestro proyecto: controllers, models, views y que contenido hay dentro de ellas. También vimos como crear un nuevo controlador con acciones en su código y sus respectivas vistas y como se comportan al navegarlas via Web. Hasta aquí no hay problema verdad? pueden dar un repaso a la parte 3 si tienen alguna.</p>
<p>Sin embargo puede resultar tedioso el estar creando controladores manualmente con sus respectivas vistas, Yii nos ayuda y trae una herramienta que automatiza esta tarea, esta herramienta es Web y viene desactivada por default, activemosla, en nuestro archivo de configuración:</p>
<pre class="brush: php; ">

tutorial/protected/config/main.php
</pre>
<p>busquemos la parte en la cual se activan/desactivan modules (modulos), encontrarán un modulo comentado llamado &#8220;gii&#8221;, (así con &#8220;g&#8221;) el fragmento de código es el siguiente:</p>
<pre class="brush: php; ">

&#039;modules&#039;=&gt;array(
// uncomment the following to enable the Gii tool
/*
&#039;gii&#039;=&gt;array(
&#039;class&#039;=&gt;&#039;system.gii.GiiModule&#039;,
&#039;password&#039;=&gt;&#039;Enter Your Password Here&#039;,
// If removed, Gii defaults to localhost only. Edit carefully to taste.
&#039;ipFilters&#039;=&gt;array(&#039;127.0.0.1&#039;,&#039;::1&#039;),
),
*/
),
</pre>
<p>quitemos los comentarios /* y */. como verán habilitamos el modulo el cual usa la clase system.gii.GiiModule y nos pide un password, cambiemos &#8220;Enter Your Password Here&#8221; por &#8220;admin&#8221; y ejecutemos nuestra aplicacion visitando la siguiente ruta http://localhost/tutorial/index.php?r=gii nos deberá aparecer la pantalla de login, ingresemos admin y veremos la siguiente pantalla:</p>
<p style="text-align: center;"><a href="http://bensite.info/wp-content/uploads/2012/02/parte4-1.png"><img class="aligncenter  wp-image-310" title="Pantalla Admin Gii " src="http://bensite.info/wp-content/uploads/2012/02/parte4-1.png" alt="" width="801" height="490" /></a></p>
<p style="text-align: left;">La herramienta &#8220;Yii Code Generator&#8221; es muy poderosa, comencemos a probarla generando controladores y sus respectivas vistas, en las siguientes entregas veremos como aprovecharla al máximo y como es que prácticamente hará el trabajo pesado por nosotros. Demos clic en &#8220;Controller Generator&#8221;, nos aparecera un formulario para crear controladores y sus respectivas acciones y vistas, llenemoslo de la siguiente forma, vamos a crear el controlador &#8220;contacto&#8221;, con las acciones:index, ubicacion, formulario. Justo como se ve en la imágen:</p>
<p style="text-align: center;"><a href="http://bensite.info/wp-content/uploads/2012/02/parte4-2.png"><img class="aligncenter  wp-image-314" title="parte4-2" src="http://bensite.info/wp-content/uploads/2012/02/parte4-2.png" alt="" width="794" height="489" /></a></p>
<p style="text-align: center;">Nota: el campo Controller ID es sensible a mayúsculas/minúsculas les recomiendo siempre ingresar el nombre en minúsculas. (esto para respetar la notación &#8220;<a href="http://es.wikipedia.org/wiki/CamelCase">CamelCase</a>&#8221; que es usada en base a las <a href="http://www.yiiframework.com/doc/guide/1.1/en/basics.convention">convenciones de Yii</a>).</p>
<p style="text-align: left;">Demos clic en &#8220;preview&#8221; y veremos algo como esto:</p>
<p style="text-align: center;"><a href="http://bensite.info/wp-content/uploads/2012/02/parte4-3.png"><img class="aligncenter  wp-image-315" title="parte4-3" src="http://bensite.info/wp-content/uploads/2012/02/parte4-3.png" alt="" width="790" height="534" /></a></p>
<p style="text-align: left;">Yii automaticamente esta generando un controlador con 3 acciones y sus respectivas vistas, ademas de que crea las carpetas correspondientes de ser necesario, es importante recalcar que aún no se generan los archivos, esto sucederá hasta que demos clic en el boton &#8220;Generate&#8221; esto con el objetivo de que primero revisemos el código que la herramienta propone y una ves revisado lo generemos. Demos clic en cada uno de los vinculos del controlador y vistas para ver el código que propone Yii aparecerán pantallas como esta:</p>
<p style="text-align: center;"><a href="http://bensite.info/wp-content/uploads/2012/02/parte4-4.png"><img class="aligncenter  wp-image-316" title="parte4-4" src="http://bensite.info/wp-content/uploads/2012/02/parte4-4.png" alt="" width="833" height="762" /></a></p>
<p style="text-align: left;">Demos clic en &#8220;Generate&#8221; y una ves generado el código tendremos la pantalla de confirmación siguiente:</p>
<p style="text-align: center;"><a href="http://bensite.info/wp-content/uploads/2012/02/parte4-5.png"><img class="aligncenter  wp-image-317" title="parte4-5" src="http://bensite.info/wp-content/uploads/2012/02/parte4-5.png" alt="" width="790" height="603" /></a></p>
<p style="text-align: center;">Nota: Si ocurre un error en estos pasos muy probablemente tengamos un problema de permisos en escritura, ya que la herramienta trata de generar archivos y carpetas nuevas. Podemos ajustar permisos a nuestra carpeta del proyecto e intentar de nuevo.</p>
<p style="text-align: left;">Podemos dar clic en try it now y ver que tenemos ya un controlador funcional y ajustando nuestras rutas a r=contacto/ubicacion y r=contacto/contactanos podemos acceder a las distintas acciones y vistas, tambien revisemos nuestros archivos y verán el nuevo controlador y la carpeta dentro de views para dicho controlador con sus respectivas vistas. Genial no? Podría parecer simple pero ya es de gran utilidad.</p>
<p style="text-align: left;">Hay otros puntos a tomar en cuenta cuando usamos esta herramienta</p>
<p style="text-align: left;">Por ejemplo que sucede si intentamos crear un controlador que ya existe o vistas que ya existen, bueno la herramienta es muy inteligente y nos avisa ademas de que inclusive puede mostrarnos la diferencia de código entre el archivo que genera y el archivo que ya tenemos. Por ejemplo abri mi archivo generado ContactoController y le agrege una linea nueva, despues en la herramienta volví a dar clic en preview y me marco que ya existían los archivos y me permitio ver la diferencia, algo asi como la siguiente pantalla, pueden intentarlo uds. si gustan.</p>
<p style="text-align: left;"><a href="http://bensite.info/wp-content/uploads/2012/02/parte4-6.png"><img class="aligncenter size-full wp-image-318" title="parte4-6" src="http://bensite.info/wp-content/uploads/2012/02/parte4-6.png" alt="" width="776" height="704" /></a></p>
<p style="text-align: left;">Recapitulando</p>
<p style="text-align: left;">Como aprendimos la herramienta &#8220;gii&#8221; es muy útil y lo que vimos en realidad es de lo mas simple, tambien nos puede generar controladores y acciones que consulten, inserten, borren o actualicen información en una base de datos (el famoso CRUD). Con solo configurar una base de datos y una tabla y  automaticamente Gii escribirá el código por nosotros. Veremos un ejemplo en la parte 5. Esten al pendiente.</p>
<p style="text-align: left;">Si les surgen problemas o comentarios no duden en postearlos.</p>
<div class="shr-publisher-307"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://bensite.info/2012/02/tutorial-yii-framework-parte-4/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Tutorial Yii Framework (Parte 3)</title>
		<link>http://bensite.info/2011/09/tutorial-yii-framework-parte-3/</link>
		<comments>http://bensite.info/2011/09/tutorial-yii-framework-parte-3/#comments</comments>
		<pubDate>Wed, 28 Sep 2011 18:56:18 +0000</pubDate>
		<dc:creator>BeN</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Yii Framework]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[yii framework]]></category>

		<guid isPermaLink="false">http://bensite.info/?p=251</guid>
		<description><![CDATA[Antes de comenzar, recapitulemos lo que ya deben conocer y los archivos que necesitan: 1.- En su carpeta www o htdocs deben tener el framework yii en esta ruta: /*Mac*/ Applications/MAMP/htdocs/yii/framework/ /*Pc*/ ArchivosdePrograma/WAMP/www/yii/framework/ 2.- En su carpeta www o htdocs deben tener la carpeta tutorial con la webapp generada por la herramienta yiic: (aprendimos a [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><strong>Antes de comenzar, recapitulemos lo que ya deben conocer y los archivos que necesitan:</strong></p>
<hr />
<p>1.- En su carpeta www o htdocs deben tener el framework yii en esta ruta:</p>
<pre class="brush: python; ">

/*Mac*/

Applications/MAMP/htdocs/yii/framework/

/*Pc*/

ArchivosdePrograma/WAMP/www/yii/framework/
</pre>
<p>2.- En su carpeta www o htdocs deben tener la carpeta tutorial con la webapp generada por la herramienta yiic: (<a title="Yii Framework Tutorial Parte 2" href="http://bensite.info/2011/09/tutorial-yii-framework-parte-2/" target="_blank">aprendimos a generarla en la parte 2 del tutorial</a>)</p>
<pre class="brush: python; ">

/*Mac*/

Applications/MAMP/htdocs/tutorial/

/*Pc*/

ArchivosdePrograma/WAMP/www/tutorial/
</pre>
<p>Si tuvieron problemas para generar esta carpeta y la webapp con la herramienta acá la pongo en un zip, solo tienen que descargarlo y descomprimirlo en la ruta mencionada. <a title="Yii Framework Tutorial Parte 2 Zip" href="http://bensite.info/tutorial.zip" target="_blank">Download Zip</a></p>
<p>Teniendo el framework y la aplicación comencemos, primero nos vendría bien algo de teoría, para comprender el funcionamiento de Yii Framework, tenemos que entender como funciona el modelo MVC (Modelo Vista Controlador).</p>
<p><strong>¿MVC?</strong></p>
<hr />
<p>Según Wikipedia el Modelo Vista Controlador es es un patrón de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos. El patrón de llamada y retorno MVC, se ve frecuentemente en aplicaciones web, donde la vista es la página HTML y el código que provee de datos dinámicos a la página. El modelo es el Sistema de Gestión de Base de Datos y la Lógica de negocio, y el controlador es el responsable de recibir los eventos de entrada desde la vista.</p>
<p>Existen muchos sitios Web en los cuales se nos da una descripción detallada del modelo, inclusive hay algunos donde se explican las variantes que puede tener, para fines prácticos de este tutorial solo vamos a describir sus partes ya que con el uso de Yii iremos clarificando mas el MVC.</p>
<p>Obviamente el modelo se compone de 3 partes:</p>
<p>Modelo.- Volvamos a Wikipedia,  &#8220;Esta es la representación específica de la información con la cual el sistema opera. En resumen, el modelo se limita a lo relativo de la vista y su controlador facilitando las presentaciones visuales complejas. El sistema también puede operar con más datos no relativos a la presentación, haciendo uso integrado de otras lógicas de negocio y de datos afines con el sistema modelado&#8221;,  de tal manera que el modelo se encarga de la parte de los datos, mas claro: de la base de datos y la relación de la información con la vista y el controlador. Todas las operaciones CRUD (Create, Read, Update, Delete) se harán en este componente y después se pasaran al controlador y este a su vez a la vista para ser presentada al usuario.</p>
<p>Vista.- &#8220;Este presenta el modelo en un formato adecuado para interactuar, usualmente la interfaz de usuario.&#8221; La vista es en si la pagina Web que el usuario ve y con la cual interactua, la Vista recibe estas interacciones y las pasa al controlador el cual se encarga de procesarlas y de crear mas vistas para el cliente o bien de apoyarse con el modelo para así consultar la base de datos y regresar esta información hacia la vista.</p>
<p>Controlador.- &#8220;Este responde a eventos, usualmente acciones del usuario, e invoca peticiones al modelo y, probablemente, a la vista.&#8221; El controlador es la parte que une todo, por medio de la vista se invocan acciones o métodos del controlador y este a su vez puede usar librerías, helpers, funciones, usar los modelos, todo para generar una respuesta al usuario por medio de una vista.</p>
<p>El siguiente gráfico es un ejemplo del funcionamiento de Yii a nivel código, ingresemos a la siguiente URL en nuestro entorno: http://localhost/tutorial/index.php?r=site/index</p>
<p><a href="http://bensite.info/wp-content/uploads/2011/09/image.png"><img class="aligncenter size-full wp-image-260" title="image" src="http://bensite.info/wp-content/uploads/2011/09/image.png" alt="" width="420" height="520" /></a></p>
<ol>
<li>Un usuario solicita la pagina <code>http://localhost/tutorial/index.php?r=site/index</code> el servidor maneja la petición primero con el archivo bootstrap <code>index.php</code>. (<a title="Bootstraping" href="http://es.wikipedia.org/wiki/Bootstrapping_%28inform%C3%A1tica%29">mas sobre bootstrap aquí</a>)</li>
<li>El archivo bootstrap crea una instancia de la aplicación y la inicializa</li>
<li>La aplicación obtiene información detallada del usuario del componente de Yii &#8220;request&#8221;</li>
<li>La aplicación determina el controlador y la acción a ejecutar con ayuda del componente de Yii &#8220;urlManager&#8221;. En este ejemplo el controlador es &#8220;site&#8221; y la acción es &#8220;index&#8221; la cual es una función que corresponde a &#8220;actionIndex&#8221; dentro de la clase SiteController del archivo SiteController.php de la carpeta controllers.
<pre class="brush: php; ">

class SiteController extends Controller
{/**
* This is the default &#039;index&#039; action that is invoked
* when an action is not explicitly requested by users.
*/
public function actionIndex()
{
// renders the view file &#039;protected/views/site/index.php&#039;
// using the default layout &#039;protected/views/layouts/main.php&#039;
$this-&gt;render(&#039;index&#039;);
}}
</pre>
</li>
<li>La aplicación crea una instancia de la clase SiteController y determina que la acción index se refiere al método llamado actionIndex en la clase. Entonce crea y ejecuta el método.</li>
<li>En caso de que se requieran datos del modelo de la base de datos es en este punto donde se consultan y se regresan al controlador.</li>
<li>La acción Index por medio de su método dentro de la clase SiteController hace un &#8220;render&#8221; de la vista llamada index que corresponde al controlador y es en este punto donde se puede pasar a la vista un objeto del modelo. La función <code>$this-&gt;render('index'); se encarga de hacerlo</code></li>
<li>La vista lee y despliega la información al usuario. La vista se encuentra dentro de la carpeta &#8220;views&#8221; y a su ves existe una carpeta para cada controlador, en este caso nuestro controlador es SiteController asi que existe una carpeta dentro de views llamada site la cual a su vez tiene un archivo por cada método, en este ejemplo index es el método invocado así que nuestro archivo de vista es index.php dentro de esta carpeta.</li>
<li>Aquí se renderean algunos widgets también como paginadores, breadcrumbs, etc.</li>
<li>La vista se renderea con el motor de plantillas de Yii y se une con el &#8220;layout&#8221; general del sitio para formar la pagina.</li>
<li>La acción termina mostrando la pagina final al usuario.</li>
</ol>
<p>En la imagen se muestran estas 3 partes del MVC, la carpeta Controllers (Controlador), la carpeta Models (Modelo) y la carpeta Views (Vistas).</p>
<p><a href="http://bensite.info/wp-content/uploads/2011/09/mvc_parte3_1.jpg"><img class="aligncenter size-full wp-image-257" title="mvc_parte3_1" src="http://bensite.info/wp-content/uploads/2011/09/mvc_parte3_1.jpg" alt="" width="440" height="390" /></a></p>
<p>Intenten navegar el sitio y descubrir como es que el controlador SiteController despliega la información que ven, recuerden que dentro de nuestra carpeta views se encuentra una carpeta por cada controlador, en este caso site y dentro un archivo php por cada funcion o metodo, index, contact, error, logi,n etc.</p>
<p><strong>Hagamos un pequeño ejercicio</strong></p>
<hr />
<p>Es hora de poner manos a la obra:</p>
<p>Paso1. En la carpeta controllers vamos a crear un archivo nuevo al que llamaremos &#8220;PostController.php&#8221; es importante usar la nomenclatura adecuada por ejemplo nuestro controlador siempre comenzara con mayuscula y sera acompañado por la palabra Controller, dentro pongamos el siguiente codigo:</p>
<pre class="brush: php; ">

&lt;?php

class PostController extends Controller
{

public function actionIndex(){

$this-&gt;render(&#039;index&#039;);

}

public function actionMensaje(){

$this-&gt;render(&#039;mensaje&#039;);

}

}
</pre>
<p>Paso2. En nuestra carpeta views crearemos una carpeta llamada &#8220;post&#8221; y dentro de esta el archivo index.php y el archivo mensaje.php a continuación el código de ambos:</p>
<p>Codigo de index.php</p>
<pre class="brush: php; ">

&lt;?php $this-&gt;pageTitle=Yii::app()-&gt;name; ?&gt;

&lt;h1&gt;Accion post/index&lt;/h1&gt;

&lt;p&gt;Desde el controlador post invocamos esta vista con la funcion index:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ruta de esta vista: &lt;tt&gt;&lt;?php echo __FILE__; ?&gt;&lt;/tt&gt;&lt;/li&gt;
&lt;/ul&gt;
</pre>
<p>Codigo de mensaje.php</p>
<pre class="brush: php; ">

&lt;?php $this-&gt;pageTitle=Yii::app()-&gt;name; ?&gt;

&lt;h1&gt;Accion post/mensaje&lt;/h1&gt;

&lt;p&gt;Desde el controlador post invocamos esta vista con la funcion mensaje:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ruta de esta vista: &lt;tt&gt;&lt;?php echo __FILE__; ?&gt;&lt;/tt&gt;&lt;/li&gt;
&lt;/ul&gt;
</pre>
<p>Paso3. Si accedemos a http://localhost/tutorial/index.php?r=post/index o bien a http://localhost/tutorial/index.php?r=post/mensaje accederemos a cada una de las acciones del controlador y a cada una de las vistas. Ambas vistas hacen uso del archivo &#8220;main&#8221; dentro de &#8220;layouts&#8221; en la carpeta views el cual es nuestro template por default (mas adelante veremos un poco mas como funcionan los templates y layouts por ahora solo noten que Yii arroja un codigo html completo y nuestra vista solo completa la parte de contenido). La variable &#8220;r&#8221; significa &#8220;route&#8221; o &#8220;ruta&#8221; y es responsable de pasar a Yii el controlador/vista que queremos mostrar, en nuestros ejemplos es Controlador: Post, Vista: Index y alternando vista: mensaje.</p>
<p>Como se darán cuenta es muy sencillo crear controladores nuevos e ir creando sus respectivas vistas; en este ejemplo lo hicimos desde cero y creando todo el código, sin embargo Yii Framework nos evita hacer eso gracias a una herramienta de generación de codigo, asi es, no tenemos que escribir las clases de controladores y sus respectivas vistas sino que usando la herramienta automáticamente Yii hará esto por nosotros y muchas funciones mas. Aprenderemos mas sobre esa herramienta en el proximo tutorial. Actualizare el código que agregamos ahora en nuestro repositorio. http://code.google.com/p/yii-framework-tutorial/</p>
<div class="shr-publisher-251"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://bensite.info/2011/09/tutorial-yii-framework-parte-3/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Tutorial Yii Framework (parte 2)</title>
		<link>http://bensite.info/2011/09/tutorial-yii-framework-parte-2/</link>
		<comments>http://bensite.info/2011/09/tutorial-yii-framework-parte-2/#comments</comments>
		<pubDate>Wed, 21 Sep 2011 23:56:01 +0000</pubDate>
		<dc:creator>BeN</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Yii Framework]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[yii framework]]></category>

		<guid isPermaLink="false">http://bensite.info/?p=228</guid>
		<description><![CDATA[Antes de comenzar vamos a colocar la lista de requerimientos a usar a lo largo del tutorial, el cual constara de varias sesiones. IDE Eclipse, considero que este entorno de desarrollo es el mejor que podemos elegir, tiene muchas opciones de personalización ademas de que se integra fácilmente con sistemas de control de versiones que [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Antes de comenzar vamos a colocar la lista de requerimientos a usar a lo largo del tutorial, el cual constara de varias sesiones.</p>
<ul>
<li>IDE Eclipse, considero que este entorno de desarrollo es el mejor que podemos elegir, tiene muchas opciones de personalización ademas de que se integra fácilmente con sistemas de control de versiones que usaremos en este tutorial también. <a href="http://bensite.info/2011/06/tutorial-de-subversion-svn-para-desarrollo-web/" target="_blank">Les recomiendo que revisen unos tutoriales anteriores que detallan la instalación de Eclipse y un sistema SVN</a>.</li>
<li>Obviamente necesitaremos de un servidor con soporte PHP y Base de Datos (usaremos Mysql) la solución para esta necesidad la proveerá <a href="http://www.mamp.info/en/index.html" target="_blank">MAMP</a> (<a href="http://www.wampserver.com/en/" target="_blank">WAMP</a>). No entraremos en detalles sobre como instalar este software.</li>
<li>Usaremos Google Project Hosting para versionar nuestro proyecto.</li>
</ul>
<p>&nbsp;</p>
<p><strong>Creando el repositorio</strong></p>
<hr />
<p>Creamos una cuenta de <a href="http://code.google.com/hosting/" target="_blank">Google Project Hosting</a> sugiero siempre usar repositorios para almacenar nuestros proyectos. En este repo iré subiendo el avance http://code.google.com/p/yii-framework-tutorial/</p>
<p>&nbsp;</p>
<p><strong>Descargando Yii</strong></p>
<hr />
<p>Vamos a <a href="http://www.yiiframework.com/" target="_blank">http://www.yiiframework.com/</a> y descargamos la última versión del framework (v1.1.8) descomprimimos el paquete viendo que nos arroja una estructura de archivos similar a esta:</p>
<p><a href="http://bensite.info/wp-content/uploads/2011/09/yii1_p1.png"><img class="aligncenter size-full wp-image-236" title="yii1_p1" src="http://bensite.info/wp-content/uploads/2011/09/yii1_p1.png" alt="" width="297" height="244" /></a><a href="http://bensite.info/wp-content/uploads/2011/09/Screen-shot-2011-09-21-at-5.35.08-PM.png"><br />
</a>El contenido de las carpetas es muy obvio, incluyendo el framework en si ademas de una carpeta con demos, cabe señalar que la carpeta <em>requirements</em> contiene un verificador de requerimientos muy util a la hora de validar si nuestro entorno de desarrollo cumple con los requisitos para usar Yii. En un momento daremos un vistazo a esta carpeta, comenzemos renombrando la carpeta que contiene todo esto solamente a <em><strong>yii</strong></em> y copiemos esa carpeta dentro de nuestro folder del servidor local <em><strong>htdocs</strong></em> o <em><strong>www</strong></em>.</p>
<p>Una vez hecho esto accedamos a nuestro server para verificar que la carpeta yii sea accesible por medio de nuestro navegador de la siguiente forma:</p>
<p><a href="http://bensite.info/wp-content/uploads/2011/09/yii1_p2.png"><img class="aligncenter size-full wp-image-237" title="yii1_p2" src="http://bensite.info/wp-content/uploads/2011/09/yii1_p2.png" alt="" width="329" height="350" /></a></p>
<p>Si navegamos hacia la carpeta <strong><em>requirements</em></strong> veremos la siguiente pantalla con una lista de las validaciones realizadas de la configuración de nuestro servidor:</p>
<p><a href="http://bensite.info/wp-content/uploads/2011/09/yii1_p3.png"><img class="aligncenter size-full wp-image-238" title="yii1_p3" src="http://bensite.info/wp-content/uploads/2011/09/yii1_p3.png" alt="" width="758" height="746" /></a>Una ves comprobada esta validación y teniendo un entorno con los requisitos minimos para el buen funcionamiento del framework podemos comenzar a trabajar.</p>
<p><strong>Generando nuestro proyecto</strong></p>
<hr />
<p>Una de las grandes ventajas a la hora de iniciar un proyecto con Yii Framework es su herramienta de linea de comando para automatizar tareas: <strong><em>yiic</em></strong>, esta se encuentra dentro de la carpeta <strong><em>framework</em></strong> y se usa desde la linea de comandos, usando una terminal pueden acceder a este archivo y ejecutarlo, su uso varia un poco dependiendo si usan Mac o PC a continuación pongo un ejemplo de ambos casos:</p>
<p>Usaremos a lo largo de estos tutoriales MAC OS X pero tratare de poner la versión en Windows para realizar las tareas donde sea conveniente. Si tienen problema con alguna versión no duden en escribir.</p>
<p>Abrimos una terminal en la cual realizaremos los siguientes pasos:</p>
<ol>
<li>Nos dirigimos a la carpeta framework dentro de yii</li>
<li>Listamos los archivos</li>
<li>Ejecutamos <em><strong>php yiic</strong></em></li>
<li>Al ejecutar el comando nos mostrara un error y un mensaje con los comandos disponibles, en este caso el comando que nos interesa es webapp</li>
</ol>
<p><a href="http://bensite.info/wp-content/uploads/2011/09/yii1_p6.jpg"><img class="aligncenter size-full wp-image-240" title="yii1_p6" src="http://bensite.info/wp-content/uploads/2011/09/yii1_p6.jpg" alt="" width="707" height="329" /></a></p>
<p>Creamos la aplicacion de la siguiente forma:</p>
<ol>
<li>Ejecutamos el comando <strong><em>php yiic webapp ../../tutorial </em></strong>(donde ../../tutorial es la ruta y la carpeta que contendrá nuestra aplicación de tal forma que le estamos diciendo al comando webapp que cree la aplicación dos niveles arriba del nivel actual, es decir salimos de la carpeta <strong><em>framework</em></strong>, salimos de la carpeta <strong><em>yii</em></strong> y creamos el proyecto tutorial dentro de la carpeta <strong><em>htdocs</em></strong> pronto se familiarizaran con este comando, pueden hacer las pruebas que gusten).</li>
</ol>
<ol>
<li>El comando nos preguntara si queremos crear la aplicación y nos pondrá la ruta donde lo creara permitiendo continuar con Y o cancelar con N, tecleamos Y y damos Enter.</li>
<li>Se creara toda una serie de carpetas y al finalizar tendremos un mensaje de confirmación de creación del proyecto.</li>
</ol>
<p>&nbsp;</p>
<p><a href="http://bensite.info/wp-content/uploads/2011/09/yii1_p7.jpg"><img class="aligncenter size-full wp-image-243" title="yii1_p7" src="http://bensite.info/wp-content/uploads/2011/09/yii1_p7.jpg" alt="" width="879" height="350" /></a></p>
<p>En el caso de Windows ejecutaran desde una linea de comandos <strong><em>yiic</em></strong> usando el archivo php.exe que esta dentro de la carpeta php de Wamp, comunmente la ruta sera algo como:</p>
<p>C:\wamp\bin\php\phpVersion\php.exe pueden navegar hasta esa carpeta en la terminal y cuando comprueben que ven el archivo php.exe ejecutar esto:</p>
<p>php.exe C:\wamp\www\yii\framework\yiic webapp ../../../www/tutorial</p>
<p>Para fines practicos en Windows es algo como:</p>
<p>ruta_hacia_php/php.exe ruta_hacia_yii_framework/yiic webapp ruta_hacia_htdocs/tutorial</p>
<p>Recuerden que <strong><em>webapp</em></strong> tratara de crear la aplicacion <strong><em>tutorial</em></strong> a partir de la ruta en que se encuentre asi que tendran que subir los niveles necesarios en la parte final del comando donde pasan el nombre de la aplicación.</p>
<p>Con esto tendremos el proyecto listo, pueden ir a su servidor localhost/tutorial y verificar la aplicación que esta creada y funcionando, ya tienen su primer sitio con el framework. =)</p>
<p><a href="http://bensite.info/wp-content/uploads/2011/09/yii1_final.png"><img class="aligncenter size-full wp-image-244" title="yii1_final" src="http://bensite.info/wp-content/uploads/2011/09/yii1_final.png" alt="" width="975" height="517" /></a></p>
<p>&nbsp;</p>
<p>Naveguen el sitio, verán que ya cuenta con funcionalidad y un tema básico, exploren un poco el código de su aplicación, en el próximo tutorial veremos como funciona nuestra aplicación y que contiene cada una de las carpetas que se crearon.</p>
<div class="shr-publisher-228"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://bensite.info/2011/09/tutorial-yii-framework-parte-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Tutorial Yii Framework (parte 1)</title>
		<link>http://bensite.info/2011/09/tutorial-yii-framework-parte-1/</link>
		<comments>http://bensite.info/2011/09/tutorial-yii-framework-parte-1/#comments</comments>
		<pubDate>Tue, 20 Sep 2011 00:39:15 +0000</pubDate>
		<dc:creator>BeN</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Yii Framework]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Svn]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[yii framework]]></category>

		<guid isPermaLink="false">http://bensite.info/?p=221</guid>
		<description><![CDATA[¿Framework? ¿Porque usarlos? Muy comunmente cuando comenzamos a aprender PHP y desarrollamos nuestras aplicaciones Web no empleamos ninguna metodología, basandonos en experiencia de otros lenguajes tratamos de organizar nuestros proyectos lo mas que podemos en base a nuestra experiencia, inclusive con el paso del tiempo logramos automatizar ciertas tareas creando algunas funciones o hasta clases [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>¿Framework? ¿Porque usarlos?</p>
<p>Muy comunmente cuando comenzamos a aprender PHP y desarrollamos nuestras aplicaciones Web no empleamos ninguna metodología, basandonos en experiencia de otros lenguajes tratamos de organizar nuestros proyectos lo mas que podemos en base a nuestra experiencia, inclusive con el paso del tiempo logramos automatizar ciertas tareas creando algunas funciones o hasta clases propias que constantemente re-usamos en nuestros proyectos. Justo esto ultimo es la base conceptual de un framework, segun wikipedia un framework es: &#8220;una estructura conceptual y tecnológica de soporte definida, normalmente con artefactos o módulos de software concretos, con base en la cual otro proyecto de software puede ser organizado y desarrollado&#8221; y aplicado a Web un framework esta diseñado para: &#8220;apoyar el desarrollo de sitios web dinámicos, aplicaciones web y servicios web. Cuyo objetivo es intentar aliviar el exceso de carga asociado con actividades comunes usadas en desarrollos web. Por ejemplo, muchos framework proporcionan bibliotecas para acceder a bases de datos, estructuras para plantillas y gestión de sesiones, y con frecuencia facilitan la reutilización de código.&#8221;</p>
<p>En términos simples un framework es un conjunto de librerías, clases, objetos que nos ayudaran a desarrollar de una manera mas fácil, rápida y ordenada las distintas tareas que envuelven el desarrollo Web.</p>
<p>¿Porque Yii Framework?</p>
<p>Despues de probar Codeigniter y Zend Framework, que junto con Yii son de los mas importantes frameworks php de desarrollo Web y gracias a varios artículos en la Web me di cuenta que usando Yii todo tenia mas lógica y lo manejaba con mas intuición, Codeigniter me pareció bueno con una gran comunidad apoyandose mutuamente y una documentación clara y simple al momento de probarlo era compatible con php4 lo cual significaba una gran serie de <em>parches</em> para que funcionara al mas puro estilo OOP ahora segun revise ya prescindieron de su compatibilidad con php4 y ajustaron algunas caracteristicas que en lo personal no me gustaban, sin embargo ya uso Yii ahora. Zend framework por su parte es muy robusto pero la curva de aprendizaje me parecía mayor y la documentación dejaba mucho que desear, ademas de que para realizar tareas &#8220;simples&#8221; se requería mas código que con Yii.  El punto clave fue la facilidad de Yii para el manejo de Bases de Datos con Active Record y su <em>performance</em> que va por sobre los demás frameworks (<a href="http://www.yiiframework.com/performance/" target="_blank">pueden verlo aqui</a>).</p>
<p>¿Que es Yii en si?</p>
<p>Yii es un framework de desarrollo de aplicaciones Web escrito en PHP usando el paradigma de programación OOP (POO Programación Orientada a Objetos). Algunas de sus caracteristicas principales son:</p>
<ul>
<li>Usa el patrón de Arquitectura de Software MVC (Modelo Vista Controlador) que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos.</li>
<li>Provee un Nivel de Abstracción hacia la Base de Datos (DAO, Data Access Object)  y se apoya en el patrón de arquitectura de datos &#8220;Active Record&#8221;.</li>
<li>Incluye soporte para autenticación de usuarios basado en el modelo RBAC role-based access control o control de acceso basado en roles.</li>
<li>Herramientas para automatización y validación de Formularios</li>
<li>Widgets <em>Ajax ready usando jQuery<br />
</em></li>
<li>Avanzado control de <em>Themes</em></li>
<li>Web services, herramientas para simplificar la tarea de generar y consumir servicios Web en diferentes formatos.</li>
<li>Internacionalización y Localización.</li>
<li>Sistema de manejo de cache.</li>
<li>Manejo de Errores.</li>
<li>Manejo de Seguridad (Sql injection, XSS, CSRF, cookie tampering, etc.).</li>
<li>Generador de código automático, muy util a la hora de implementar formularios o bien operaciones CRUD. Ademas de que el código generado cumple XHTML standards.</li>
<li>Amigable y extensible, por lo cual se pueden usar sin problemas librerías de terceros como Pear, Zend, etc.</li>
</ul>
<p>Comencemos a revisarlo, y que mejor manera que realizando un proyecto, poco a poco iremos realizando actividades que son comúnmente necesarias a la hora de desarrollar un Sitio Web. Tan pronto estén listas acá irán apareciendo las ligas que conformaran todo el tutorial.</p>
<div class="shr-publisher-221"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://bensite.info/2011/09/tutorial-yii-framework-parte-1/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Administración de Proyectos</title>
		<link>http://bensite.info/2011/07/administracion-de-proyectos/</link>
		<comments>http://bensite.info/2011/07/administracion-de-proyectos/#comments</comments>
		<pubDate>Tue, 12 Jul 2011 17:29:54 +0000</pubDate>
		<dc:creator>BeN</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>

		<guid isPermaLink="false">http://bensite.info/?p=187</guid>
		<description><![CDATA[La gestión o administración de proyectos es una disciplina fundamental para planificar y organizar a un grupo de trabajo y recursos con el objetivo de cumplir los objetivos y llevar a buen termino el proyecto, tomando en cuenta tiempos, costos, sin situaciones de presión o estrés. En el Desarrollo de Software se convierte en una tarea [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>La gestión o administración de proyectos es una disciplina fundamental para planificar y organizar a un grupo de trabajo y recursos con el objetivo de cumplir los objetivos y llevar a buen termino el proyecto, tomando en cuenta tiempos, costos, sin situaciones de presión o estrés.</p>
<p>En el Desarrollo de Software se convierte en una tarea que siempre se realiza (a veces inconscientemente) y casi nunca de una manera ordenada ni practica; emails perdidos, postits en la basura, desconocimiento de fechas de entrega, etc. son solo algunos tropiezos con los que nos encontramos y suficiente razón por lo cual en las empresas sean grandes o pequeñas siempre a lo largo del proceso de desarrollo se van presentando contratiempos, cuellos de botella y faltas de organización que afectan en tiempo o en calidad al proyecto.</p>
<p><span id="more-187"></span></p>
<p>Sin embargo no todo esta perdido, existen aplicaciones cuyo objetivo es exactamente el ayudar a evitar que el &#8220;barco se vaya a pique&#8221; muchas son las empresas que se han dado a la tarea de buscar soluciones prácticas para estas necesidades, Microsoft con software como Project ademas de soluciones de terceros desarrolladores, Apple con soluciones de terceros como Merlin y así por el estilo van surgiendo distintas apps. Recientemente están cobrando mucha importancia aplicaciones que no dependen de un sistema operativo sino que viven en un servidor Web y pueden ser usadas con la facilidad de un navegador o un dispositivo móvil.</p>
<p>De estas últimas hay una grán cantidad en Internet, algunos ejemplos son: Basecamp, Huddle, Wrike, Zoho, ActiveCollab, etc. Pero sin duda a la hora de evaluar la solución adecuada para nosotros notaremos algunos &#8220;detalles&#8221; en cada una de estas apps, algunas son de paga, otras no tienen herramientas que otras si, otras son gratuitas pero tienen limitantes, etc.</p>
<h3>Teamlab</h3>
<p>Teamlab es un portal con una aplicación para gestión de proyectos, es sin duda una de las mas completas que he visto siendo gratis, su gran soporte en idioma español le da una facilidad de uso inigualable y que te llevan de la mano coordinando un proyecto y a un grupo de trabajo para lograr los objetivos propuestos, pueden ver algunas de sus caracteristicas en el siguiente video, ademas de visitar su sitio web <a title="Teamlab" href="http://www.teamlab.com/es/" target="_blank">Teamlab en español</a><br />
<iframe src="http://www.youtube.com/embed/JqFki4BUfvk" frameborder="0" width="560" height="349"></iframe></p>
<p>&nbsp;</p>
<p>Teamlab es un portal comunitario empresarial, al cual toda la empresa tiene acceso (en algunas ocaciones algunos clientes) y que tiene herramientas como: la posibilidad de crear equipos, asignar tareas a equipos o personal, crear blogs, foros, compartir documentos y editarlos en línea, chat en vivo con sus compañeros de trabajo, versión móvil, calendario de actividades.</p>
<p>Aprovechando estas herramientas un administrador del portal funge como director del proyecto, asigna tareas, adjunta documentos y propone fechas límite de cumplimiento de estas, el personal es notificado por la aplicación e interactua con la misma para presentar informes, cumplir la tareas y lograr metas (o hitos) propuestos por el director.</p>
<p>Es una forma amena y controlada de trabajo en la cual todos participan haciendo sus actividades y de esta forma siendo mas eficientes. Vale la pena que tomen el tour y la descripción de la aplicación, así verán cuanta falta les había hecho en todo este tiempo.</p>
Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.
<p>&nbsp;</p>
<div class="shr-publisher-187"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://bensite.info/2011/07/administracion-de-proyectos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutorial de Subversion (SVN) para desarrollo Web Parte 2</title>
		<link>http://bensite.info/2011/06/tutorial-de-subversion-svn-para-desarrollo-web-parte-2/</link>
		<comments>http://bensite.info/2011/06/tutorial-de-subversion-svn-para-desarrollo-web-parte-2/#comments</comments>
		<pubDate>Thu, 30 Jun 2011 19:40:51 +0000</pubDate>
		<dc:creator>BeN</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Svn]]></category>

		<guid isPermaLink="false">http://bensite.info/?p=167</guid>
		<description><![CDATA[Continuando el tutorial, terminamos con el IDE listo y ya con el proyecto en SVN, es importante recalcar que se mantendra una copia en nuestro workspace con nuestra versión y podremos hacer commits que se guardaran en el repositorio en línea en el sitio www.riouxsvn.com Iniciemos creando un simple archivo php en el trunk, damos [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Continuando el tutorial, terminamos con el IDE listo y ya con el proyecto en SVN, es importante recalcar que se mantendra una copia en nuestro workspace con nuestra versión y podremos hacer commits que se guardaran en el repositorio en línea en el sitio www.riouxsvn.com</p>
<p><span id="more-167"></span></p>
<ul>
<li>Iniciemos creando un simple archivo php en el trunk, damos clic derecho sobre la carpeta trunk y elegimos del menu contextual New &gt; Php File nos aparecera una ventana como:</li>
</ul>
<p><a href="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-2.16.37-PM.png"><img class="aligncenter size-full wp-image-168" title="Screen shot 2011-06-30 at 2.16.37 PM" src="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-2.16.37-PM.png" alt="" width="572" height="486" /></a></p>
<ul>
<li>Ingresamos un nombre al archivo y damos clic en Finish, tendremos dentro de trunk nuestro archivo y tanto la carpeta como el archivo tendran unos simbolos a los cuales nos iremos acostumbrando veamos:</li>
</ul>
<p><a href="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-2.17.42-PM.png"><img class="aligncenter size-full wp-image-169" title="Screen shot 2011-06-30 at 2.17.42 PM" src="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-2.17.42-PM.png" alt="" width="989" height="257" /></a></p>
<ol>
<li>
<ol>
<li>
<ol>
<li>Primeramente la carpeta trunk al igual que la carpeta del proyecto tendra un simbolo de &#8220;asterisco&#8221; el cual significa que dentro de esa carpeta hay un cambio pendiente de hacer &#8220;commit&#8221; al SVN</li>
<li>El archivo newfile.php tiene un simbolo de interrogación, quiere decir que es nuevo y se desconoce la versión del archivo</li>
<li>El area 3 solo nos muestra el contenido del archivo</li>
</ol>
</li>
</ol>
</li>
</ol>
<ul>
<li>Así que hagamos nuestro primer &#8220;commit&#8221; damos clic con el boton derecho del mouse sobre la carpeta principal (en el ejemplo bensite) y del menu contextual elegimos: Team &gt; Commit</li>
</ul>
<p><a href="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-2.23.42-PM.png"><img class="aligncenter size-full wp-image-170" title="Screen shot 2011-06-30 at 2.23.42 PM" src="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-2.23.42-PM.png" alt="" width="580" height="752" /></a></p>
<ul>
<li>A continuación se nos presenta la pantalla de dialogo del commit, en la cual se nos mostrara un informe de los archivos que serán enviados al repositorio, ya sea porque se agregarón, como en este caso o bien porque fueron modificados, borrados, etc. Es importante siempre agregar un comentario al commit, ya que este comentario lo verán los participantes del proyecto y ayudará a llevar un control de los cambios y el porque fuerón realizados.</li>
</ul>
<p><a href="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-2.27.40-PM.png"><img class="aligncenter size-full wp-image-171" title="Screen shot 2011-06-30 at 2.27.40 PM" src="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-2.27.40-PM.png" alt="" width="978" height="615" /></a></p>
<ul>
<li>Damos clic en ok y el envío sera realizado al repositorio (ademas de que seguiremos conservando nuestra copia local). Notemos que los iconos de cambios por realizar (el asterisco) y el archivo por versionar (signo de interrogación) desaparecieron.</li>
<li>Si revisamos via web nuestro repositorio podremos ver la versión del proyecto, los cambios y los comentarios, así como quien realizo el cambio y en que momento</li>
</ul>
<p><a href="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-2.31.56-PM.png"><img class="aligncenter size-full wp-image-172" title="Screen shot 2011-06-30 at 2.31.56 PM" src="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-2.31.56-PM.png" alt="" width="889" height="328" /></a></p>
<p>De esta forma comenzaremos nuestro proyecto el cual estara siempre en el repositorio, lo importante aquí es que muchos usuarios pueden repetir el proceso de conectarse al SVN y estos descargaran la versión mas reciente del proyecto, pudiendo de esta forma participar creando archivos y modificando archivos existentes, pero siempre concentrando los cambios en el repositorio.</p>
<p>Hay varios puntos a contemplar de aquí en adelante sobre funcionalidades que nos da un SVN por ejemplo:</p>
<ul>
<li>Podemos regresar a distintas versiones de un archivo, dando clic sobre el archivo con el boton derecho y en el menu contextual eligiendo: Team &gt; Update to version&#8230; ahí se nos presentara un historial de los cambios que ha sufrido un archivo.</li>
<li>Podemos ponerle candado a un archivo para que nadie más pueda hacerle un commit dando clic sobre el archivo con el boton derecho y en el menu contextual eligiendo: Team &gt; Lock&#8230; ahi se nos pedira una razon por la cual ponemos el candado de esta forma no perderemos cambios ni entraremos en conflictos cuando mas de un usuario quieren modifica el mismo archivo a la vez.</li>
<li>Podemos dando clic sobre el archivo con el boton derecho y en el menu contextual eligiendo: Compare with&#8230;  comparar un archivo contra sus versiones anteriores para ver que cambios ha sufrido a lo largo del desarrollo</li>
</ul>
<p>Las posibilidades son muchas, basta con ir probandolas, ahora que tienen su repositorio porque no juegan con el y postean sus dudas aca.</p>
<div class="shr-publisher-167"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://bensite.info/2011/06/tutorial-de-subversion-svn-para-desarrollo-web-parte-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tutorial de Subversion (SVN) para desarrollo Web</title>
		<link>http://bensite.info/2011/06/tutorial-de-subversion-svn-para-desarrollo-web/</link>
		<comments>http://bensite.info/2011/06/tutorial-de-subversion-svn-para-desarrollo-web/#comments</comments>
		<pubDate>Thu, 30 Jun 2011 19:13:04 +0000</pubDate>
		<dc:creator>BeN</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Svn]]></category>

		<guid isPermaLink="false">http://bensite.info/?p=137</guid>
		<description><![CDATA[En el último Post comentaba las ventajas de usar un SVN para desarrollo de aplicaciones, a continuación veremos como sacar provecho a esta herramienta con este pequeño tutorial de uso de Subversion. Usaremos el IDE Eclipse para Php. (el tutorial esta hecho en Mac, pero existen versiones de eclipse para Windows y Linux) El tutorial [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>En el último Post comentaba las ventajas de usar un SVN para desarrollo de aplicaciones, a continuación veremos como sacar provecho a esta herramienta con este pequeño tutorial de uso de Subversion. Usaremos el IDE <a title="Eclipse" href="http://es.wikipedia.org/wiki/Eclipse_(software)">Eclipse</a> para Php. (el tutorial esta hecho en Mac, pero existen versiones de eclipse para Windows y Linux) El tutorial esta hecho en 2 partes, la primera es la instalación y puesta a punto y la segunda un poco del uso del Svn, commits, etc. (<a title="Tutorial de Subversion (SVN) para desarrollo Web Parte 2" href="http://bensite.info/2011/06/tutorial-de-subversion-svn-para-desarrollo-web-parte-2/">la segunda parte aquí</a>)</p>
<p><span id="more-137"></span></p>
<p><strong>Instalando Eclipse (no ahondaremos mucho en el uso de Eclipse, solo lo básico)</strong></p>
<ul>
<li>Vamos a el sitio: http://www.eclipse.org/downloads/packages/eclipse-php-developers/heliossr2 y descargamos la versión para nuestro sistema operativo.</li>
<li>Descomprimimos el paquete y nos arrojara una carpeta que contiene la aplicación, debe verse de esta forma:</li>
</ul>
<p><a href="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-1.01.42-PM.png"><img class="aligncenter size-full wp-image-139" title="Screen shot 2011-06-30 at 1.01.42 PM" src="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-1.01.42-PM.png" alt="" width="488" height="345" /></a></p>
<p><!--more--></p>
<ul>
<li>Lo recomendable es copiar la carpeta eclipse a sus aplicaciones o carpeta de programas y listo, podemos ejecutar la aplicación Eclipse pueden crear accesos directos.</li>
<li>Ejecutamos Eclipse y veremos el entorno de desarrollo:</li>
</ul>
<p><a href="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-1.07.51-PM.png"><img class="aligncenter size-large wp-image-142" title="Screen shot 2011-06-30 at 1.07.51 PM" src="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-1.07.51-PM-1024x671.png" alt="" width="620" height="406" /></a></p>
<ul>
<li>Ahora necesitamos instalar el Plugin para que tengamos soporte SVN, vamos a esta direccion http://subclipse.tigris.org/ y una vez estando en el sitio damos clic en &#8220;Download and Install&#8221; y buscamos la versión para Eclipse en este caso la mas reciente:</li>
</ul>
<p><a href="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-1.13.40-PM.png"><img class="aligncenter size-full wp-image-143" title="Screen shot 2011-06-30 at 1.13.40 PM" src="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-1.13.40-PM.png" alt="" width="581" height="453" /></a></p>
<p style="text-align: center;">Copiamos la dirección, http://subclipse.tigris.org/update_1.6.x no damos clic en ella ya que el proceso de descarga e instalación se hace desde Eclipse.</p>
<ul>
<li>Ya con la dirección http://subclipse.tigris.org/update_1.6.x nos dirigimos a Eclipse y vamos al menú Help &gt; Install New Software&#8230; damos clic y nos aparecera la siguiente ventana en la cual pondremos el sitio de subclipse.</li>
</ul>
<p><a href="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-1.22.20-PM.png"><img class="aligncenter size-full wp-image-146" title="Screen shot 2011-06-30 at 1.22.20 PM" src="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-1.22.20-PM.png" alt="" width="703" height="857" /></a></p>
<ul>
<li>En esta ventana en el primer campo &#8220;Work with&#8221; pegamos la dirección de subclipse dando clic en el boton Add, le podemos poner un nombre a este sitio, puede ser Subclipse y damos OK.</li>
<li>La ventana nos cargara el software que podemos instalar en una lista en forma de arbol, de la cual elegiremos tal como aparece en la imagen anterior y damos clic en Next.</li>
<li>Eclipse calculara las dependencias necesarias y nos mostrara un resumen del software a instalar, ojo: nos pedira aceptar términos de licencia.</li>
</ul>
<p><a href="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-1.28.48-PM.png"><img class="aligncenter size-full wp-image-147" title="Screen shot 2011-06-30 at 1.28.48 PM" src="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-1.28.48-PM.png" alt="" width="431" height="200" /></a></p>
<ul>
<li>Y damos clic en Finish, Eclipse descargara e instalara todo el software necesario y al finalizar pedira reiniciar Eclipse (si durante el proceso pide mas mensajes de confirmación o autorización los aceptaremos)</li>
<li>Al reiniciar Eclipse estaremos listos para trabajar con SVN ahora viene lo más importante:</li>
</ul>
<blockquote>
<p style="text-align: center;">Tener un Repositorio SVN disponible</p>
</blockquote>
<ul>
<li>Existen muchas opciones de repositorios Github, Google Code, etc. inclusive existen algunos con costo, dependiendo de nuestras necesidades elegiremos el adecuado, ya que muchos solo permiten el alojamiento de proyectos Open Source. Les recomendare el siguiente: http://www.riouxsvn.com/ el cual es un sitio de alojamiento de proyectos que permite tener repositorios comerciales y por lo tanto cerrados a los ojos del público de forma Gratuita, personalmente lo he usado y me ha funcionado bastante bien.</li>
<li>Así que abran una cuenta en el sitio y una vez logeados verán la siguiente pantalla:</li>
</ul>
<p><a href="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-1.38.50-PM.png"><img class="aligncenter size-large wp-image-150" title="Screen shot 2011-06-30 at 1.38.50 PM" src="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-1.38.50-PM-1024x768.png" alt="" width="620" height="465" /></a></p>
<ul>
<li>Una ves adentro tenemos nuestro Dashboard el cual nos presentara un resumén de la última actividad de la cuenta y los repositorios que tengamos, vamos a crear nuestro primer repositorio:</li>
</ul>
<p><a href="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-1.42.33-PM.png"><img class="aligncenter size-full wp-image-151" title="Screen shot 2011-06-30 at 1.42.33 PM" src="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-1.42.33-PM.png" alt="" width="655" height="704" /></a></p>
<ul>
<li>Ingresamos el nombre del Repositorio asi como el fragmento del url para identificarlo, Next step</li>
</ul>
<p><a href="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-1.44.34-PM.png"><img class="aligncenter size-full wp-image-153" title="Screen shot 2011-06-30 at 1.44.34 PM" src="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-1.44.34-PM.png" alt="" width="676" height="500" /></a></p>
<ul>
<li>Podríamos importar datos de otro proyecto, en este caso iniciamos uno desde cero, Next step</li>
</ul>
<p><a href="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-1.45.49-PM.png"><img class="aligncenter size-full wp-image-154" title="Screen shot 2011-06-30 at 1.45.49 PM" src="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-1.45.49-PM.png" alt="" width="645" height="473" /></a></p>
<ul>
<li>Damos permisos a usuarios, si tuvieramos mas usuarios que participan en el proyecto aquí es donde les dariamos privilegios (que esa es la idea de un repositorio SVN trabajo en equipo <img src='http://bensite.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ) pero no se preocupen mas adelante pueden otorgar permisos a usuarios que se sumen al desarrollo. Damos clic en Set permissions</li>
</ul>
<p><a href="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-1.47.53-PM.png"><img class="aligncenter size-full wp-image-155" title="Screen shot 2011-06-30 at 1.47.53 PM" src="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-1.47.53-PM.png" alt="" width="637" height="522" /></a></p>
<ul>
<li>Listo, damos clic en Confirm Creation y tendremos listo nuestro repositorio, este último paso nos regresara al Dashboard donde tendremos ya listado nuestro repositorio, damos clic en el y nos encontraremos en la siguiente pantalla:</li>
</ul>
<p><a href="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-1.50.22-PM.png"><img class="aligncenter size-large wp-image-156" title="Screen shot 2011-06-30 at 1.50.22 PM" src="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-1.50.22-PM-1024x744.png" alt="" width="620" height="450" /></a></p>
<ul>
<li>Esta pantalla se ira actualizando conforme vayamos creando archivos, podemos dar clic en la parte derecha en &#8220;Manage Team&#8221; para agregar usuarios y permisos al proyecto y el punto mas importante, en la barra del lado derecho tenemos la URL del SVN algo como: http://riouxsvn.com/svn/bensite &lt;- aquí el nombre que eligieron para su repositorio.</li>
<li>Copiamos esa url completa y regresamos a Eclipse para conectarnos a nuestro repositorio.</li>
<li>En Eclipse damos clic en el menú File &gt; New Project&#8230; y nos aparecera algo como:</li>
</ul>
<p><a href="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-1.53.57-PM.png"><img class="aligncenter size-full wp-image-157" title="Screen shot 2011-06-30 at 1.53.57 PM" src="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-1.53.57-PM.png" alt="" width="523" height="498" /></a></p>
<ul>
<li>Gracias a que instalamos SVN nos aparece la carpeta SVN y de ahí elegimos &#8220;Checkout Projects from SVN&#8221; y damos clic en Next</li>
<li>Nos aparecera la siguiente pantalla en la cual elegiremos &#8220;Create a new repository location&#8221; y damos next</li>
</ul>
<p><a href="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-1.55.25-PM.png"><img class="aligncenter size-full wp-image-158" title="Screen shot 2011-06-30 at 1.55.25 PM" src="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-1.55.25-PM.png" alt="" width="520" height="517" /></a></p>
<ul>
<li>Al dar clic en siguiente nos solicitara el url del repositorio, ahi pegamos el url de riouxsvn</li>
</ul>
<p><a href="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-1.58.23-PM.png"><img class="aligncenter size-full wp-image-159" title="Screen shot 2011-06-30 at 1.58.23 PM" src="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-1.58.23-PM.png" alt="" width="521" height="519" /></a></p>
<ul>
<li>A continuación nos solicitara autentificarnos, así que ingresaremos nuestro username y password de nuestra cuenta de riouxsvn.com</li>
</ul>
<p><a href="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-1.59.47-PM.png"><img class="aligncenter size-full wp-image-160" title="Screen shot 2011-06-30 at 1.59.47 PM" src="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-1.59.47-PM.png" alt="" width="522" height="519" /></a></p>
<ul>
<li>Damos clic en OK y Eclipse nos traera el repositorio, seleccionamos el nodo padre (el url) y damos clic en Next</li>
</ul>
<p><a href="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-2.02.15-PM.png"><img class="aligncenter size-full wp-image-161" title="Screen shot 2011-06-30 at 2.02.15 PM" src="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-2.02.15-PM.png" alt="" width="522" height="519" /></a></p>
<ul>
<li>Se nos presentara la siguiente pantalla en la cual nos preguntara que hacer con los archivos, seleccionamos la opcion &#8220;Check out as project in the workspace&#8221; con ello decimos que se creara una carpeta en nuestras carpetas de trabajo configuradas en Eclipse y ahi se descargara el proyecto, las demas opciones las dejamos como se muestra a continuacion y damos clic en next.</li>
</ul>
<p><a href="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-2.04.34-PM.png"><img class="aligncenter size-full wp-image-162" title="Screen shot 2011-06-30 at 2.04.34 PM" src="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-2.04.34-PM.png" alt="" width="522" height="518" /></a></p>
<ul>
<li>Se nos pedira la ruta de trabajo en este caso yo tengo configurado Eclipse hacia mi wwwroot de WAMP server, uds pueden elegir su carpeta publica del servidor que usen si es que tienen, o la carpeta que gusten.</li>
</ul>
<p><a href="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-2.07.34-PM.png"><img class="aligncenter size-full wp-image-163" title="Screen shot 2011-06-30 at 2.07.34 PM" src="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-30-at-2.07.34-PM.png" alt="" width="519" height="517" /></a></p>
<ul>
<li>Damos clic en Finish y Listo tendremos el proyecto via SVN en nuestra PC (les aparecera un mensaje que dice que al parecer estamos recuperando el proyecto, etc&#8230; damos clic en Yes)</li>
<li>Tendremos ahora en nuestro entorno el proyecto del lado izquierdo y las carpetas por default que nos creo el repositorio, ahora estamos listos para codificar, crearemos nuestros archivos en la carpeta trunk.</li>
</ul>
<p><a title="Tutorial de Subversion (SVN) para desarrollo Web Parte 2" href="http://bensite.info/2011/06/tutorial-de-subversion-svn-para-desarrollo-web-parte-2/">la segunda parte aquí</a></p>
<div class="shr-publisher-137"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://bensite.info/2011/06/tutorial-de-subversion-svn-para-desarrollo-web/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Subversion (SVN) para Desarrollo Web</title>
		<link>http://bensite.info/2011/06/subversion-svn-para-desarrollo-web/</link>
		<comments>http://bensite.info/2011/06/subversion-svn-para-desarrollo-web/#comments</comments>
		<pubDate>Wed, 15 Jun 2011 23:03:08 +0000</pubDate>
		<dc:creator>BeN</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[Svn]]></category>

		<guid isPermaLink="false">http://bensite.info/?p=129</guid>
		<description><![CDATA[Casi siempre, como desarrolladores nos vamos haciendo de técnicas, usos, estilos propios a la hora de trabajar. Cada quien considera que tiene su mejor forma de organizarse y administrar todos los elementos de un proyecto. Sin embargo que hay cuando se tiene que trabajar en un proyecto formando parte de un equipo de desarrolladores, es aquí [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Casi siempre, como desarrolladores nos vamos haciendo de técnicas, usos, estilos propios a la hora de trabajar. Cada quien considera que tiene su mejor forma de organizarse y administrar todos los elementos de un proyecto. Sin embargo que hay cuando se tiene que trabajar en un proyecto formando parte de un equipo de desarrolladores, es aquí cuando muchas veces nos encontramos con problemas de comunicación y control del proyecto, ocasionando esto retrasos, perdida de información  y en general un caos por falta de organización.</p>
<p>Es en este punto donde un Sistema de Control de Versiones nos es muy útil, pero que es exactamente un &#8220;Subversion&#8221; o también conocido como SVN.</p>
<blockquote><p>Son aplicaciones, programas o software que se encarga de llevar el control sobre los cambios que se van realizando sobre los elementos de un proyecto, cada archivo, imagen, carpeta, etc. va formando parte de un sistema y es relacionado a una versión.</p></blockquote>
<p>El modelo Subversion es centralizado es decir que tiene un repositorio central que almacena todo el código y los diferentes cambios que va sufriendo el proyecto en su etapa de desarrollo, dando la oportunidad de regresar o ver versiones anteriores del proyecto o de determinado archivo. A este repositorio los usuarios (programadores)  con acceso se conectan y pueden descargar la mas reciente versión del proyecto, así como hacer cambios en este código de tal forma que los cambios se vean reflejados en todos los usuarios.</p>
<p><a href="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-15-at-6.01.17-PM.png"><img class="aligncenter size-full wp-image-132" title="Screen shot 2011-06-15 at 6.01.17 PM" src="http://bensite.info/wp-content/uploads/2011/06/Screen-shot-2011-06-15-at-6.01.17-PM.png" alt="" width="641" height="469" /></a></p>
<p>De esta forma solo existe un lugar en el cual se tiene el último código fuente y todos los programadores hacen cambios o agregan mas archivos y estos se concentran en el repositorio evitando perdida de información. Inclusive SVN tiene herramientas muy utiles como por ejemplo:</p>
<ul>
<li>Permite bloquear archivos por un usuario, para evitar que otro usuario pueda hacer uso de el y evitar así perdidas de codigo</li>
<li>También permite hacer un &#8220;merge&#8221; o union de 2 diferentes versiones, suponiendo que el usuario &#8220;A&#8221; cambio la linea 1 del archivo &#8220;X&#8221; y el usuario &#8220;B&#8221; cambio la línea 3 del mismo archivo &#8220;X&#8221;, se hace un merge para obtener una tercera versión del mismo archivo que tiene el cambio realizado por ambos usuarios</li>
<li>Inclusive se puede regresar un archivo o más a una versión anterior del mismo o compararlo contra una versión atras para ver que cambios sufrió.</li>
<li>Cada usuario que hace un cambio en archivos y realiza un &#8220;commit&#8221; (acción de actualizar los archivos al repositorio) tiene la oportunidad de incluir un comentario con información que crea relevante de los cambios que hizo, permitiendo así tener un mejor control de cambios y versiones.</li>
<li>Evita la perdida de archivos ya que a pesar de que los usuarios (programadores) tienen una versión del proyecto en sus computadoras siempre existe la versión del repositorio.</li>
<li>Es muy fácil agregar mas usuarios, ya que usando su aplicación SVN preferida (en mi caso Eclipse con el plugin SVN) simplemente se conectan al repositorio y se descargan la última versión del proyecto.</li>
</ul>
<p>Tanto en proyectos personales (freelance) como en el trabajo acostumbro usar un Sistema de Control de Versiones y siempre mantengo el repositorio en linea gracias a www.riouxsvn.com que es un proyecto que provee SVN de forma gratuita.</p>
<p>Estoy trabajando en un tutorial sobre como usar un SVN para un proyecto. Pronto lo verán aquí.</p>
<div class="shr-publisher-129"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://bensite.info/2011/06/subversion-svn-para-desarrollo-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Font Api</title>
		<link>http://bensite.info/2010/07/google-font-api/</link>
		<comments>http://bensite.info/2010/07/google-font-api/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 19:18:19 +0000</pubDate>
		<dc:creator>BeN</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Css]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://bensite.info/?p=81</guid>
		<description><![CDATA[Recientemente Google lanzo su Api &#8220;Google Font&#8221; la cual nos permite usar en nuestras páginas web fuentes especiales, más bonitas, mas legibles, totalmente personalizables, etc. sin temor de que nuestro visitante no la tenga instalada en su sistema. Todo esto sin recurrir a ciertos hacks como la generación de imagenes o archivos Flash. Como funciona [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Recientemente Google lanzo su Api &#8220;Google Font&#8221; la cual nos permite usar en nuestras páginas web fuentes especiales, más bonitas, mas legibles, totalmente personalizables, etc. sin temor de que nuestro visitante no la tenga instalada en su sistema. Todo esto sin recurrir a ciertos hacks como la generación de imagenes o archivos Flash.</p>
<p>Como funciona esta Api?</p>
<p style="padding-left: 30px;">1.- Solicitemos la fuente deseada</p>
<pre class="brush: html; ">

&lt;!-- Donde en el parametro family va la fuente que necesitamos --&gt;

&lt;link href=&#039; http://fonts.googleapis.com/css?family=Droid+Sans&#039; rel=&#039;stylesheet&#039; type=&#039;text/css&#039; /&gt;
</pre>
<p style="padding-left: 60px;">Existe una lista de fuentes <a title="aqui" href="http://code.google.com/webfonts" target="_blank">aquí</a></p>
<p style="padding-left: 30px;">2.- Usando CSS ya disponemos de la fuente</p>
<pre class="brush: html; ">

body{
font-family:&#039;Droid Sans&#039;, Lucida Grande, Verdana, Sans-serif;
}
</pre>
<p style="padding-left: 60px;">En caso de que el navegador no soporte &#8220;Google Font&#8221; simplemente nos mostrara la siguiente fuente disponible. Pueden ver la lista de navegadores disponibles en las <a title="FAQ del sitio" href="http://code.google.com/intl/es/apis/webfonts/faq.html" target="_blank">FAQ del sitio</a>.</p>
<p>Deben de tomar en cuenta que el comportamiento de esta Api varía dependiendo del navegador, en Firefox primero se renderea el texto usando una fuente disponible del sistema (lo cual me parece genial) mientras se carga la fuente del sitio de Google, en otros navegadores los textos no se renderean ( ={ ) hasta cargar por completo la fuente. Ademas notemos que se agregara peso al sitio por la descarga de la fuente a usar, ustedes evalúen si usan esta Api o no. Yo creo que si valen la pena unos kb&#8217;s mas por la satisfacción visual de nuestros visitantes.</p>
<p style="padding-left: 60px;">&nbsp;</p>
<div class="shr-publisher-81"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://bensite.info/2010/07/google-font-api/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ToolKit Indispensable para Desarrollo Web</title>
		<link>http://bensite.info/2009/09/toolkit-indispensable-para-desarrollo-web/</link>
		<comments>http://bensite.info/2009/09/toolkit-indispensable-para-desarrollo-web/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 17:55:04 +0000</pubDate>
		<dc:creator>BeN</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Css]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://bensite.info/?p=60</guid>
		<description><![CDATA[A continuación algunas de las herramientas indispensables para desarrollar en sus rubros correspondientes: Sistema Operativo En cualquier sistema operativo puedes desarrollar Web ya que existe software multiplataformas o bien hay alternativas, en mi caso mucho tiempo use Windows y no estaba mal; su version XP es muy estable y manteniendolo limpio y actualizado creo que [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>A continuación algunas de las herramientas indispensables para desarrollar en sus rubros correspondientes:</p>
<div style="border-bottom: 1px dashed #000; font-size: 14px;">Sistema Operativo</div>
<p>En cualquier sistema operativo puedes desarrollar Web ya que existe software multiplataformas o bien hay alternativas, en mi caso mucho tiempo use Windows y no estaba mal; su version XP es muy estable y manteniendolo limpio y actualizado creo que no da problemas.</p>
<p>Ahora uso Mac OS X en su versión Snow Leopard y definitivamente no lo cambio ya que la facilidad de uso del sistema es lo que principalmente me a hecho quedarme con este S.O.</p>
<p>A final de cuentas cada quien puede usar el Sistema que le agrade mas o bien el que tenga a la mano, ya que con practica y adaptabilidad todo mundo le saca el provecho requerido.</p>
<div style="border-bottom: 1px dashed #000; font-size: 14px;">Herramientas de Desarrollo</div>
<p><span id="more-60"></span>Concentremonos en Desarrollo Web, excluyendo un poco contenidos como multimedia o flash, vamos al html, css, php, etc.</p>
<p>Editor HTML y CSS ?</p>
<p>Considero que Adobe Dreamweaver es una herramienta muy completa para estas tareas, si estas maquetando tu sitio y haciendo el diseño Html, Dreamweaver te hará la vida mas facil. Ademas de que te permitirá tener tu código mas claro y ordenado.</p>
<p>Editor PHP?</p>
<p>Creo que el mejor editor de desarrollo que existe es Eclipse -www.eclipse.org- en su version Galileo que es la mas reciente podemos crear proyectos Php y &#8220;Compilarlos&#8221; o hacerles un Build de forma que si nuestro proyecto consta de muchos archivos, clases, objetos, funciones, etc. Eclipse nos ayude a la hora de programar activando opciones de autoacompletar o informándonos sobre los parámetros que necesitan las funciones o los tipos de datos de las variables, etc. Ademas también nos informa de errores de código y nos los subraya de forma que errores &#8220;de dedo&#8221; que a veces nos quitan tiempo no ocurran nunca mas.</p>
<p>Eclipse no es un editor exclusivamente Php, también funciona para html, css, java, js, etc. Así que puedes editar todo tu proyecto Web con esta herramienta, pero falta lo mejor&#8230; es completamente Gratis.</p>
<p>Framework PHP ?</p>
<p>Muchos aun dudan de la necesidad de usar o no un Framework y creo que esto se debe en ocasiones al tamaño de los proyectos, sin embargo creo que para estandarizar tu codigo y mejorarlo es necesario usar un Framework. En este sitio http://www.phpframeworks.com/ se hace una comparación de la mayoria de Frameworks que existen por ahi, aqui va en cuestion de gusto y practica, el Framework que les recomiendo es sin duda el de Zend.</p>
<p>Zend Framework es gratuito y (una vez que lo entiendes) facil de usar, te simplifica el trabajo y te ayuda a generar codigo seguro, ya tiene mas de diez millones de descargas y en su sitio tienen una guia de desarrollo y una gran cantidad de ejemplos. Si van por este framework, no pueden ir mal: http://framework.zend.com/</p>
<p>Extras</p>
<p>Cliente FTP: Transmit, Filezilla</p>
<p>Administrador de Base de Datos: En este caso uso Mysql y el administrador que prefiero es Mysql Administrator el cual tiene todo lo necesario para crear y administrar nuestras bases de datos.</p>
<p>Navegador: Firefox con el Add-on Firebug</p>
<p>Servidor de Pruebas: MAMP</p>
<p>Cual es el software que usan ustedes? Debería cambiar tajantemente alguno?</p>
<div class="shr-publisher-60"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://bensite.info/2009/09/toolkit-indispensable-para-desarrollo-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

