<?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>Blog personal</title>
	<atom:link href="http://ecentinela.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://ecentinela.com</link>
	<description></description>
	<lastBuildDate>Tue, 23 Feb 2010 14:12:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Control de versiones con GIT</title>
		<link>http://ecentinela.com/control-de-versiones-con-git/</link>
		<comments>http://ecentinela.com/control-de-versiones-con-git/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 18:00:41 +0000</pubDate>
		<dc:creator>Javier</dc:creator>
				<category><![CDATA[programación]]></category>
		<category><![CDATA[tutoriales]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://ecentinela.com/?p=235</guid>
		<description><![CDATA[GIT es un sistema distribuido de control de versiones (ale, ¿como se te ha quedado el cuerpo?). ¿Qué es un sistema de control de versiones? Para explicarlo de forma sencilla, podríamos decir que es una forma de guardar todo el historial de un proyecto de forma que se almacenan todas las modificaciones que vamos haciendo [...]]]></description>
			<content:encoded><![CDATA[<p style="clear: both"><img src="http://ecentinela.com/wp-content/uploads/2010/01/git-logo-thumb.jpg" height="209" align="left" width="120" style=" display: inline; float: left; margin: 0 10px 10px 0;" /><strong>GIT</strong> es un sistema distribuido de control de versiones (ale, ¿como se te ha quedado el cuerpo?).</p>
<p>¿Qué es un sistema de control de versiones? Para explicarlo de forma sencilla, podríamos decir que es una forma de guardar todo el historial de un proyecto de forma que se almacenan todas las modificaciones que vamos haciendo sobre los archivos que editamos (que ha cambiado, quien lo ha cambiado, que había antes&#8230;).</p>
<p style="clear: both">Hay otros sistemas de control de versiones como <strong>Subversion</strong> o <strong>CVS</strong>, sin embargo <strong>GIT</strong> ha conseguido mucha popularidad en poco tiempo por ser muy fácil de usar y estar creado por <strong>Linus Torvalds</strong> (el del pingüino). Ademas, muchos de los grandes proyectos de hoy en día lo están usando (<a href="http://rubyonrails.org/" title="Rails" target="_blank">Ruby on Rails</a>, <a href="http://jquery.com/" title="jQuery" target="_blank">jQuery</a>, <a href="http://www.android.com/" title="Android" target="_blank">Android</a>, <a href="http://www.winehq.org/" title="Wine" target="_blank">Wine</a>, <a href="http://fedoraproject.org/" title="fedora" target="_blank">Fedora</a>, <a href="http://www.videolan.org/" title="VLC" target="_blank">VLC</a>, <a href="http://www.gnome.org/" title="GNOME" target="_blank">Gnome</a>, etc).</p>
<p style="clear: both">Para los no iniciados en ningún sistema de estos, empezar puede resultar un poco difícil. En este post voy a intentar explicar los comandos básicos para iniciarnos en <strong>GIT</strong>.</p>
<p><span id="more-235"></span>  </p>
<p style="clear: both"><strong>GIT</strong> tiene muchas ordenes, pero con unas pocas podemos defendernos y trabajar perfectamente.</p>
<p style="clear: both">Antes de nada, necesitamos un servidor <strong>GIT</strong> (no es realmente necesario, pero para un trabajo en equipo hace las cosas mucho mas sencillas).</p>
<p style="clear: both">Para no liarnos en exceso, usaremos alguno de los que podemos encontrar gratuitamente en <strong>Internet</strong>. Para mi gusto, uno de los mejores es <a href="https://github.com/" title="GitHub" target="_blank">GitHub</a>. Os creáis una <strong>cuenta gratuita</strong> y seguimos. Venga, que os espero.</p>
<p style="clear: both">¿Ya? Ok.</p>
<p style="clear: both">Ahora vamos a crear nuestra <strong>clave SSH</strong>. La <strong>clave SSH</strong> es un archivo que identifica nuestro ordenador. Esta clave debemos almacenarla en local y también enviarla al servidor. Cuando queramos enviar datos de nuestros proyectos al servidor, éste la validará y comprobará si podemos o no hacerlo.</p>
<p style="clear: both">Para no liarme en cómo crear las llaves, os pongo únicamente los enlaces a los tutoriales (muy cortos y fáciles, no os preocupéis) sobre como hacerlo en <a href="http://help.github.com/msysgit-key-setup/" title="SSH" target="_blank">Windows</a>, <a href="http://help.github.com/linux-key-setup/" title="SSH" target="_blank">Linux</a> y <a href="http://help.github.com/mac-key-setup/" title="SSH" target="_blank">Mac</a>.</p>
<p style="clear: both">Ahora que ya tenemos todo preparado, vamos crear un nuevo repositorio (un proyecto, vaya) pinchando en botón de <strong><em>New Repository</em></strong>.</p>
<p style="clear: both"><img src="http://ecentinela.com/wp-content/uploads/2010/01/github_newrepo1-thumb3.jpg" height="252" width="344" style=" text-align: center; display: block; margin: 0 auto 10px;" />En la siguiente pantalla, rellenamos los datos que nos piden.</p>
<p style="clear: both"><img src="http://ecentinela.com/wp-content/uploads/2010/01/github_newrepo2-thumb3.jpg" height="197" width="380" style=" text-align: center; display: block; margin: 0 auto 10px;" />Después de esto, nos aparecerá una pantalla con las instrucciones para empezar a usar <strong>GIT</strong>. La verdad es que los chicos de <strong>GitHub</strong> lo han puesto muy fácil y claro todo. De todas formas explicaré un poco las instrucciones.</p>
<p style="clear: both"><img src="http://ecentinela.com/wp-content/uploads/2010/01/github_newrepo3-thumb3.jpg" height="268" width="380" style=" text-align: center; display: block; margin: 0 auto 10px;" />Lo primero de todo será instalar <strong>GIT</strong> (duh!). En <strong>Linux</strong>, podéis buscarlo por el <strong>apt-get</strong> o similar. Seguro que lo encontrais. Los usuarios de <strong>Mac</strong> o <strong>Windows</strong> tendréis que instalarlo a partir del paquete instalador que encontraréis en la <a href="http://git-scm.com/download" title="GIT" target="_blank">pagina oficial de GIT</a>.</p>
<p style="clear: both">Después de la instalación, el siguiente paso será configurar vuestros datos de usuario (solo lo tendréis que hacer la primera vez que usáis <strong>GIT</strong>, no por cada proyecto que creéis). Con estas directivas nos identificamos en cada <strong><em>commit</em></strong> (guardado de datos en el repositorio) y podremos controlar quien hizo cada cambio en los archivos.</p>
<p style="clear: both">He de decir que los comandos de <strong>GIT</strong> los vamos a ejecutar en una <strong>consola / terminal / ventana de comandos</strong>. Aunque hay interfaces gráficas, prefiero hacer esto de la &#8220;forma tradicional&#8221;. Así que abrimos una nueva ventana de <strong>terminal</strong>.</p>
<p style="clear: both">Ejecutamos los comandos que ponen en la página de <strong>GitHub</strong>.</p>
<pre lang="bash" style="clear: both">mkdir nombre_de_nuestro_proyecto</pre>
<p style="clear: both">Con esto ya tenemos una carpeta en donde vamos a guardar nuestro proyecto.</p>
<p style="clear: both">
<p>Ahora nos metemos dentro de la recién creada carpeta.</p>
<pre lang="bash" style="clear: both">cd nombre_de_nuestro_proyecto</pre>
<p style="clear: both">
<p>Iniciamos el repositorio con:</p>
<pre lang="bash" style="clear: both">git init</pre>
<p style="clear: both">Este comando nos creará una carpeta .git que contendrá todo el historial de los archivos. Nunca, repito, NUNCA deberemos tocar esta carpeta o su contenido, pues podríamos perder todo el historial del proyecto.</p>
<p style="clear: both">El siguiente comando:</p>
<pre lang="bash" style="clear: both">touch README</pre>
<p style="clear: both">Con esto creamos un archivo vacío llamado README. Podemos hacer esto o podemos meter cualquier archivo que nosotros queramos dentro de la carpeta.</p>
<p style="clear: both">
<p>Ahora empieza la parte interesante y que repetiremos continuamente en nuestro trabajo diario:</p>
<pre lang="bash" style="clear: both">git add README</pre>
<p style="clear: both"><strong><em>git add nombre_archivo</em></strong> es el comando que usaremos para decirle a <strong>GIT</strong> &#8211; <u>oye, prepárate para guardar este archivo en el repositorio</u>.</p>
<p style="clear: both">Es un comando que usaremos continuamente, pues a cada modificación de un archivo existente o inclusión de uno nuevo, tenemos que invocar este comando.</p>
<p style="clear: both">
<p>Ahora, el segundo comando más usado:</p>
<pre lang="bash" style="clear: both">git commit -m "first commit"</pre>
<p style="clear: both">Este comando es el que dice &#8211; <u>todos los cambios que he hecho hasta ahora, guárdalos!</u></p>
<p style="clear: both">Es obligatorio en este comando escribir el <strong><em>-m &#8220;mensaje_que_explica_los_cambios_realizados&#8221;</em></strong>.</p>
<p style="clear: both">
<p>Hasta este momento, nuestra carpeta de proyecto no sabe que tiene que guardarse en <strong>GitHub</strong>. Es decir, no le hemos dicho que está enlazada con el repositorio que acabamos de crear en nuestra cuenta. Para eso hacemos lo siguiente (sólo lo deberemos hacer una vez).</p>
<pre lang="bash" style="clear: both">git remote add origin git@github.com:vuestra_cuenta_de_github/el_nombre_de_vuestro_repositorio.git</pre>
<p style="clear: both">¡Ahora ya lo sabe!</p>
<p style="clear: both">
<p>Por último, enviamos los datos a <strong>GitHub</strong> con:</p>
<pre lang="bash" style="clear: both">git push origin master</pre>
<p style="clear: both">¡Y ya está! ¡Nuestro proyecto ya está subido en <strong>GitHub</strong>!</p>
<p style="clear: both">
<p>Eliminad la carpeta de vuestro ordenador y vamos a descargarla desde el servidor para ver como funciona desde aquí.</p>
<p style="clear: both">
<p>¿Ya la habéis eliminado?</p>
<p style="clear: both">Pues id a la pagina de vuestro proyecto. Vereis algo como esto:</p>
<p style="clear: both"><img src="http://ecentinela.com/wp-content/uploads/2010/01/github_newrepo4-thumb1.jpg" height="23" width="380" style=" text-align: center; display: block; margin: 0 auto 10px;" />Esa cadena que veis <strong><em>git@github.com:vuestra_cuenta_de_github/el_nombre_de_vuestro_repositorio.git</em></strong> es la cadena que identifica la descarga de vuestro repositorio <strong>con permisos de escritura</strong>. Esto no quiere decir que cualquiera que tenga esa cadena pueda tocar vuestro proyecto. Para eso está lo que os comentaba antes acerca del archivo <strong>SSH</strong>. Si alguien que no está identificado usa esa cadena, el repositorio no se descargará.</p>
<p style="clear: both">Si le dais al botón <strong><em>Read-Only</em></strong> os dará otra cadena que solo tiene <strong>permisos de lectura</strong>. Aunque seáis vosotros en vuestro ordenador, los archivos que os descarguéis con esa cadena no podréis volver a subirlos.</p>
<p style="clear: both">
<p>Empezamos pues, descargando el repositorio con la primera cadena. Nos vamos de nuevo a la ventana de terminal y escribimos:</p>
<pre lang="bash" style="clear: both">git clone git@github.com:vuestra_cuenta_de_github/el_nombre_de_vuestro_repositorio.git</pre>
<p style="clear: both">El comando <strong><em>git clone</em></strong> como veis, sirve para descargar el repositorio que se encuentra en esa cadena de conexión.</p>
<p style="clear: both">
<p>Modificad ahora cualquier archivo del repositorio. Bien.</p>
<p style="clear: both">Si ahora ejecutáis:</p>
<pre lang="bash" style="clear: both">git status</pre>
<p style="clear: both"><img src="http://ecentinela.com/wp-content/uploads/2010/01/git_status-thumb.jpg" height="92" width="380" style=" text-align: center; display: block; margin: 0 auto 10px;" />Os dice que el archivo ha sido modificado. Este comando sirve basicamente para eso, para ver que ha cambiado y que no hemos guardado en el repositorio.</p>
<p style="clear: both">
<p>Vamos a guardar los cambios realizados.</p>
<pre lang="bash" style="clear: both">git add nombre_del_archivo</pre>
<pre lang="bash" style="clear: both">git commit -m "Modificación de prueba"</pre>
<p style="clear: both">Ok, ya vuelve a estar a la última.</p>
<p>Si ahora hacemos un <strong><em>git status</em></strong> veremos como ya nos dice que no hay nada por guardar.</p>
<p style="clear: both">
<p>Ahora vamos a ver otro comando:</p>
<pre lang="bash" style="clear: both">git rm nombre_del_archivo</pre>
<p style="clear: both">Este comando elimina el archivo señalado de nuestro repositorio. Lo borra para siempre&#8230; aunque seguimos teniendo su historial hasta este punto.</p>
<p style="clear: both">
<p>Para guardar el cambio, como siempre:</p>
<pre lang="bash" style="clear: both">git commit -m "Me cargo este archivo que ya no necesito"</pre>
<p style="clear: both">
<p>Por ultimo, para enviar todos los cambios realizados al servidor, hacemos:</p>
<pre lang="bash" style="clear: both">git push</pre>
<p style="clear: both">
<p>Y nuestro repositorio online volverá a estar actualizado.</p>
<p style="clear: both">
<p>¡Ah! ¡Se me olvidaba!</p>
<p style="clear: both">Si algún otro usuario modifica nuestro proyecto, la copia que tenemos en local quedará desfasada, claro. No es necesario volver a descargarse el proyecto. Imaginad que tenéis archivos que aun no los habéis enviado al servidor, pero queréis descargar la copia mas actualizada. Sería un engorro descargar todo de nuevo y poner estos archivos en la nueva copia. Para eso existe el comando:</p>
<pre lang="bash" style="clear: both">git pull</pre>
<p style="clear: both">Este comando os descargará las actualizaciones que se han realizado en el proyecto sin tocar las cosas que aun no habéis subido.</p>
<p style="clear: both">
<p>Ok, pues hasta aquí lo súper básico de <strong>GIT</strong>. Con esto ya podréis usarlo y si necesitáis mas información, escribidlo en los comentarios.</p>
<p>  <br class="final-break" style="clear: both" /></p>
]]></content:encoded>
			<wfw:commentRss>http://ecentinela.com/control-de-versiones-con-git/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Otra pequeña herramienta: Smush.it</title>
		<link>http://ecentinela.com/otra-pequea-herramienta-smush-it/</link>
		<comments>http://ecentinela.com/otra-pequea-herramienta-smush-it/#comments</comments>
		<pubDate>Fri, 09 Oct 2009 19:50:47 +0000</pubDate>
		<dc:creator>Javier</dc:creator>
				<category><![CDATA[aplicaciones]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[proyectos]]></category>
		<category><![CDATA[compresión]]></category>
		<category><![CDATA[imágenes]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[utilidades]]></category>

		<guid isPermaLink="false">http://ecentinela.com/?p=224</guid>
		<description><![CDATA[Seguimos con otra herramienta para aligerar la carga de nuestras paginas web. En este caso vamos por Smush.it es otra herramienta de la casa Yahoo que se encargará de eliminar datos innecesarios de nuestras imagenes (por ejemplo, comentarios) reduciendo así el peso de la misma. Esto lo hace sin tocar la calidad de la imagen. [...]]]></description>
			<content:encoded><![CDATA[<p>Seguimos con otra herramienta para aligerar la carga de nuestras paginas web. En este caso vamos por <a href="http://developer.yahoo.com/yslow/smushit/">Smush.it</a> es otra herramienta de la casa <a href="http://yahoo.com">Yahoo</a> que se encargará de eliminar datos innecesarios de nuestras imagenes (por ejemplo, comentarios) reduciendo así el peso de la misma. Esto lo hace sin tocar la calidad de la imagen.</p>
<p><img src="http://ecentinela.com/wp-content/uploads/2009/11/yslow.jpg" alt="YSlow" title="YSlow" width="500" height="174" class="aligncenter size-full wp-image-225" /></p>
<p>Es un servicio que está incluido en <a href="http://developer.yahoo.com/yslow/">YSlow</a>, la extensión para <a href="http://getfirebug.com/">Firebug</a>.</p>
<p>Para ver sus efectos hay que instalar <strong>firebug</strong>, instalar <strong>YSlow</strong>, cargar una web con <strong>firebug</strong> abierto, ir a la pesta&ntilde;a de <strong>YSlow</strong>, pasar el test y por último ir imágen por imagen guardando el resultado. </p>
<p>Además, sólo nos habrá procesado las imagenes de la página cargada.</p>
<p>Como veis es un proceso largo y alguno estará preguntando, ¿no hay otra forma más rapida de hacer todo esto?</p>
<p><strong>Os presento <a href="http://github.com/ecentinela/smusher">Smusher</a></strong></p>
<p><strong>Smusher</strong> es unaa pequeña utilidad escrita en <strong>php</strong> que envía una imagen o una carpeta entera (subcarpetas incluidas) al servicio de <strong>Yahoo</strong>.</p>
<p>Además nos dice el ratio de reducción de peso de cada imagen.</p>
<p>Podeis descargaros el codigo desde mi pagina de <a href="http://github.com/ecentinela/smusher">github</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ecentinela.com/otra-pequea-herramienta-smush-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utilidad para comprimir javascript y css con YUI Compressor</title>
		<link>http://ecentinela.com/utilidad-para-comprimir-javascript-y-css-con-yui-compressor/</link>
		<comments>http://ecentinela.com/utilidad-para-comprimir-javascript-y-css-con-yui-compressor/#comments</comments>
		<pubDate>Fri, 09 Oct 2009 18:05:26 +0000</pubDate>
		<dc:creator>Javier</dc:creator>
				<category><![CDATA[aplicaciones]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[proyectos]]></category>
		<category><![CDATA[compresión]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[utilidades]]></category>
		<category><![CDATA[yahoo]]></category>

		<guid isPermaLink="false">http://ecentinela.com/?p=215</guid>
		<description><![CDATA[Seguro que a estas alturas todos conocereis el compresor de archivos javascript y css que los chicos de Yahoo publicaron hace a&#241;os (y siguen mejorando con nuevas versiones) YUI Compressor. Para quien no lo sepa, decir que es una peque&#241;a aplicaci&#243;n de java que se ejecuta en un terminal / consola, a la que le [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://ecentinela.com/wp-content/uploads/2009/11/yuicompressor.jpg" alt="YUI Compressor" title="YUI Compressor" width="180" height="65" class="alignleft size-full wp-image-216" />Seguro que a estas alturas todos conocereis el compresor de archivos javascript y css que los chicos de Yahoo publicaron hace a&ntilde;os (y siguen mejorando con nuevas versiones) <a href="http://developer.yahoo.com/yui/compressor/">YUI Compressor</a>.</p>
<p>Para quien no lo sepa, decir que es una peque&ntilde;a aplicaci&oacute;n de java que se ejecuta en un terminal / consola, a la que le pasas como par&aacute;metros los archivos javascript y css que quieres comprimir. El programa elimina comentarios y renombra variables para reducir el c&oacute;digo y por tanto, el peso del fichero.</p>
<p>Es un proceso un poco tedioso s&iacute; tenemos muchos archivos porque hay que especificar la ruta de cada uno. As&iacute; que hice un peque&ntilde;o programa que se ejecuta en php-cli que comprime todos los ficheros que haya en una carpeta con s&oacute;lo una instrucci&oacute;n nuestra. Tambi&eacute;n podemos decirle que nos una todos los archivos en uno s&oacute;lo (genial para acelerar la descarga de nuestras p&aacute;ginas web) y algunas opciones m&aacute;s.</p>
<p>Pod&eacute;is echarle un ojo y descargarlo desde la p&aacute;gina de <a href="http://github.com/ecentinela/minifier">github</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ecentinela.com/utilidad-para-comprimir-javascript-y-css-con-yui-compressor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GameMarkt, el ebay de los videojuegos</title>
		<link>http://ecentinela.com/gamemarkt-el-ebay-de-los-videojuegos/</link>
		<comments>http://ecentinela.com/gamemarkt-el-ebay-de-los-videojuegos/#comments</comments>
		<pubDate>Thu, 19 Feb 2009 15:25:56 +0000</pubDate>
		<dc:creator>Javier</dc:creator>
				<category><![CDATA[noticias]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[proyectos]]></category>
		<category><![CDATA[cambiar]]></category>
		<category><![CDATA[comodo]]></category>
		<category><![CDATA[comprar]]></category>
		<category><![CDATA[ebay]]></category>
		<category><![CDATA[google maps]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[vender]]></category>
		<category><![CDATA[videojuegos]]></category>
		<category><![CDATA[wikipedia]]></category>

		<guid isPermaLink="false">http://ecentinela.com/?p=200</guid>
		<description><![CDATA[Como buen consumidor de videojuegos, me hago con unos cuantos de estos cada año. Además, tengo varias plataformas y el hecho de que una novedad me cueste alrededor de los 70 €, hace que este hobbie salga un poco caro. Hace tiempo que me venia rondando la cabeza el hacer una web para poder comprar, [...]]]></description>
			<content:encoded><![CDATA[<p>Como buen consumidor de <strong>videojuegos</strong>, me hago con unos cuantos de estos cada año. Además, tengo varias plataformas y el hecho de que una novedad me cueste alrededor de los <strong>70 €</strong>, hace que este hobbie salga un poco caro.</p>
<p>Hace tiempo que me venia rondando la cabeza el hacer una <strong>web</strong> para poder <strong>comprar</strong>, <strong>vender</strong> y <strong>cambiar</strong> juegos entre los mismos usuarios sin necesidad de ningún tipo de intermediario. Algo así como un <a href="http://www.ebay.com">eBay</a>, pero enfocado únicamente los videojuegos.</p>
<p>Bueno, pues ya está en marcha.</p>
<p>La pagina se llama <a href="http://www.gamemarkt.ecentinela.com">GameMarkt</a> y está lista para usarla.</p>
<div id="attachment_206" class="wp-caption aligncenter" style="width: 510px"><a href="http://www.gamemarkt.ecentinela.com"><img src="http://ecentinela.com/wp-content/uploads/2009/02/gamemarkt.jpg" alt="El ebay de los videojuegos" title="GameMarkt" width="500" height="280" class="size-full wp-image-206" /></a><p class="wp-caption-text">El ebay de los videojuegos</p></div>
<p>Algunas de las características que tiene son:</p>
<ol>
<li><strong>Enlazada con Google maps</strong>: cada usuario puede poner donde vive (en el grado de detalle que quiera) para localizar más las búsquedas de los títulos.</li>
<li><strong>Extracción de la información de la wikipedia</strong>: al dar de alta un titulo en el mercado, se intenta extraer toda la información posible desde la wikipedia, para completar los datos del juego.</li>
</ol>
<p>El proyecto está realizado en <strong>php</strong> con el <a href="http://www.phpcomodo.com">framework comodo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ecentinela.com/gamemarkt-el-ebay-de-los-videojuegos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby on Rails… algo está naciendo en Internet</title>
		<link>http://ecentinela.com/ruby-on-rails-algo-esta-naciendo-en-internet/</link>
		<comments>http://ecentinela.com/ruby-on-rails-algo-esta-naciendo-en-internet/#comments</comments>
		<pubDate>Wed, 19 Jul 2006 19:13:25 +0000</pubDate>
		<dc:creator>Javier</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://localhost:8888/wordpress/?p=31</guid>
		<description><![CDATA[Ruby on Rails es un framework open source que está optimizado para la productividad (y diversión ) del programador web. Está basado en la estructura modelo-vista-controlador, es decir, separa los datos, la logica y la interfaz de usuario en tres partes. Como su nombre indica, la programación se lleva a cabo con código Ruby, un [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://ecentinela.com/wp-content/uploads/2006/07/rails.jpg" alt="Ruby on Rails" title="Ruby on Rails" width="87" height="112" class="alignleft size-full wp-image-93" /><a href="http://www.rubyonrails.org.es/">Ruby on Rails</a> es un <strong>framework</strong> <em>open source</em> que está optimizado para la productividad (y diversión <img src='http://ecentinela.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ) del programador web.</p>
<p>Está basado en la estructura modelo-vista-controlador, es decir, separa los datos, la logica y la interfaz de usuario en tres partes. Como su nombre indica, la programación se lleva a cabo con código <strong>Ruby</strong>, un lenguaje orientado a objetos inspirado en <strong>Perl</strong>.</p>
<p>Lo que más llama la atención de <a href="http://www.rubyonrails.org.es/">Ruby on Rails</a> es que se dice que se consigue hacer cualquier proyecto diez veces más rápido que con otro lenguaje.</p>
<p>Me queda decir también que este <em>framework</em> lleva incorporado de série <a href="http://www.prototype.conio.net">prototype</a> y <a href="http://script.aculo.us/">scriptaculous</a> haciendo que su uso sea extremadamente sencillo.</p>
]]></content:encoded>
			<wfw:commentRss>http://ecentinela.com/ruby-on-rails-algo-esta-naciendo-en-internet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajax con Prototype</title>
		<link>http://ecentinela.com/ajax-con-prototype/</link>
		<comments>http://ecentinela.com/ajax-con-prototype/#comments</comments>
		<pubDate>Fri, 10 Mar 2006 19:09:07 +0000</pubDate>
		<dc:creator>Javier</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://localhost:8888/wordpress/?p=30</guid>
		<description><![CDATA[Definición de AJAX en la wikipedia AJAX, acrónimo de Asynchronous JavaScript And XML (JavaScript y XML asíncronos), es una técnica de desarrollo web para crear aplicaciones interactivas. Éstas se ejecutan en el cliente, es decir, en el navegador del usuario, y mantiene comunicación con el servidor en segundo plano. De esta forma es posible realizar [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://ecentinela.com/wp-content/uploads/2006/03/prototype.jpg" alt="Prototype" title="Prototype" width="190" height="86" class="alignleft size-full wp-image-95" /><u><strong>Definición de AJAX en la wikipedia</strong></u></p>
<p><strong>AJAX</strong>, acrónimo de Asynchronous JavaScript And XML (JavaScript y XML asíncronos), es una técnica de desarrollo web para crear aplicaciones interactivas. Éstas se ejecutan en el cliente, es decir, en el navegador del usuario, y mantiene comunicación con el servidor en segundo plano. De esta forma es posible realizar cambios sobre la misma página sin necesidad de recargarla. Esto significa aumentar la interactividad, velocidad y usabilidad en la misma.</p>
<p>La librería <a href="http://www.prototypejs.org/">Prototype</a> nos ayuda enormemente a usar <strong>AJAX</strong> en nuestras aplicaciones.</p>
<p>Vamos a ver como hacerlo con unos sencillos ejemplos.</p>
<p><span id="more-86"></span></p>
<p>Teniendo en cuenta el siguiente código <strong>PHP</strong> que incluiremos en una página llamada <strong>laPaginaPHP.php</strong>, vamos a realizar tres ejemplos. En cada uno usaremos uno de los tres métodos que disponemos para realizar llamadas <strong>AJAX</strong>.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'nombre'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #666666; font-style: italic;">//conexión con la base de datos</span>
<span style="color: #339933;">...</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//creo un numero aleatorio para el id del usuario que voy a actualizar</span>
<span style="color: #000088;">$idAleatorio</span> <span style="color: #339933;">=</span> <span style="color: #990000;">rand</span> <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//consulta</span>
<span style="color: #000088;">$consulta</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;UPDATE usuarios SET nombre = <span style="color: #006699; font-weight: bold;">$_POST</span>['nombre'] WHERE id=<span style="color: #006699; font-weight: bold;">$idAleatorio</span>&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//ejecución de la consulta</span>
<span style="color: #339933;">...</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//devuelvo un texto de que la operación es correcta</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;La consulta se realizó correctamente&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">else</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;La consulta no ha sido realizada&quot;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>Ajax.Request</h3>
<p>El método Request nos permite sencillamente ejecutar una petición al servidor y nos devuelve el resultado de dicha petición.</p>
<p>En el siguiente código voy a hacer una petición al servidor cuando el usuario pincha sobre un botón. Esta petición actualizará la base de datos y nos devolverá el resultado.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script<span style="color: #339933;">&gt;</span>
	<span style="color: #003366; font-weight: bold;">function</span> actualiza<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		Ajax.<span style="color: #660066;">Request</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;laPaginaPHP.php&quot;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
			postBody<span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;nombre=pepitoDeLosPalotes&quot;</span><span style="color: #339933;">,</span>
			onSuccess<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>objeto<span style="color: #009900;">&#41;</span>
			<span style="color: #009900;">&#123;</span>
				<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>objeto.<span style="color: #660066;">responseText</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>input type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;button&quot;</span> value<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;pinchame&quot;</span> <span style="color: #339933;">/&gt;</span></pre></div></div>

<h3>Ajax.Updater</h3>
<p>El método Updater se diferencia del anterior, en que este imprime el contenido de la respuesta en el primer parametro de la llamada. En el siguiente ejemplo escribo la respuesta en una capa llamada &#8220;capaResultado&#8221;.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script<span style="color: #339933;">&gt;</span>
	<span style="color: #003366; font-weight: bold;">function</span> actualiza<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		Ajax.<span style="color: #660066;">Updater</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;capaResultado&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;laPaginaPHP.php&quot;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
			postBody<span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;nombre=pepitoDeLosPalotes&quot;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>div id<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;capaResultado&quot;</span><span style="color: #339933;">&gt;&lt;/</span>div<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>input type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;button&quot;</span> value<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;pinchame&quot;</span> <span style="color: #339933;">/&gt;</span></pre></div></div>

<h3>Ajax.PeriodicalUpdater</h3>
<p>El último método que hay es una ampliación del <strong>Updater</strong>. En este caso, como su nombre indica, la llamada se repetirá indefinidamente con la frecuencia especificada (2 segundos es el valor por defecto). Si el objeto no obtiene respuesta la frecuencia se aumentará automáticamente. En el momento en que obtenga respuesta, la frecuencia volverá a tener el valor que nosotros especificamos en la declaración.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script<span style="color: #339933;">&gt;</span>
	<span style="color: #003366; font-weight: bold;">function</span> actualiza<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		Ajax.<span style="color: #660066;">PeriodicalUpdater</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;capaResultado&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;laPaginaPHP.php&quot;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
			frequency<span style="color: #339933;">:</span> <span style="color: #CC0000;">5</span><span style="color: #339933;">,</span>
			postBody<span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;nombre=pepitoDeLosPalotes&quot;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>div id<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;capaResultado&quot;</span><span style="color: #339933;">&gt;&lt;/</span>div<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>input type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;button&quot;</span> value<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;pinchame&quot;</span> <span style="color: #339933;">/&gt;</span></pre></div></div>

<p>Como hemos visto el uso del objeto <strong>AJAX</strong> es muy sencillo. En estos ejemplos no he añadido apenas opciones ni <em>callbacks</em>, las cuales son comunes en los tres métodos.</p>
<p>Algunas de las opciones son las siguientes:</p>
<ul>
<li><strong>postBody</strong> aqui incluiremos los valores que queramos enviar en formato URL (&#8220;nombre=pepito&#038;apellido=fernandez&#038;edad=15&#8243;)</li>
<li><strong>method</strong> determina la forma en la que enviamos el contenido. Este puede ser &#8220;post&#8221; o &#8220;get&#8221;</li>
<li><strong>asynchronous</strong> indica si la llamada será síncrona o asíncrona. Los valores son true o false</li>
</ul>
<p>Y algunos <em>callbacks</em> son:</p>
<ul>
<li><strong>onFailure</strong> función personalizada que se ejecutará cuando la llamada haya sido completada con algun error</li>
<li><strong>onSuccess</strong> función personalizada que se ejecutará cuando la llamada haya sido completada correctamente</li>
</ul>
<p>Con esto hemos visto lo básico acerca de <strong>ajax</strong> y su utilización, asi que ya podeis ir haciendo vuestros pinitos <img src='http://ecentinela.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /><br />
<!--more--></p>
]]></content:encoded>
			<wfw:commentRss>http://ecentinela.com/ajax-con-prototype/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Prototype: el elixir de javascript</title>
		<link>http://ecentinela.com/prototype-el-elixir-de-javascript/</link>
		<comments>http://ecentinela.com/prototype-el-elixir-de-javascript/#comments</comments>
		<pubDate>Sun, 05 Mar 2006 18:35:12 +0000</pubDate>
		<dc:creator>Javier</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://localhost:8888/wordpress/?p=29</guid>
		<description><![CDATA[Prototype es un framework para javascript creado por Sam Stephenson que ha revolucionado el modo de programar en este lenguaje. Hasta ahora programar con javascript era algo tedioso y aburrido (almenos para mi). Desde que estoy usando esta librería, la programación se ha vuelto rápida, agil y lo que es mejor, divertida. Desde hace un [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://ecentinela.com/wp-content/uploads/2006/03/elixir_prototype.jpg" alt="Prototype" title="Prototype" width="196" height="180" class="alignleft size-full wp-image-99" /><a href="http://prototypejs.org/">Prototype</a> es un <em>framework</em> para javascript creado por <a href="http://www.conio.net/">Sam Stephenson</a> que ha revolucionado el modo de programar en este lenguaje.</p>
<p>Hasta ahora programar con javascript era algo tedioso y aburrido (almenos para mi). Desde que estoy usando esta librería, la programación se ha vuelto rápida, agil y lo que es mejor, divertida.</p>
<p>Desde hace un tiempo, infinidad de desarrolladores estan adoptándolo en sus proyectos y creando verdaderas obras de arte en cuanto a diseño de interfaz y herramientas para la web se refiere.</p>
<p>Pero, ¿que es lo que tiene <a href="http://prototypejs.org/">Prototype</a> que lo hace tan agradable para los desarrolladores?</p>
<p>Sigue leyendo y te explico un poco de que va todo esto&#8230;</p>
<p><span id="more-85"></span><br />
<a href="http://prototypejs.org/">Prototype</a> aporta una serie de utilidades que hacen muy fácil la creación de complejas librerias y funciones javascript. Estas son algunas de ellas (las que más comunmente uso):</p>
<h3>Función $()</h3>
<p>Esta función es &#8220;simplemente&#8221; un atajo de <strong>document.getElementById()</strong>. Pero va un poco más lejos. Podemos recoger una série de elementos con ella de tal forma que nos devolverá un array de elementos.</p>
<p>Ejemplo:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script<span style="color: #339933;">&gt;</span>
	<span style="color: #003366; font-weight: bold;">function</span> test1<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #003366; font-weight: bold;">var</span> miCapa <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'capa1'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>miCapa.<span style="color: #660066;">innerHTML</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #003366; font-weight: bold;">function</span> test2<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #003366; font-weight: bold;">var</span> misCapas <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'capa1'</span><span style="color: #339933;">,</span><span style="color: #3366CC;">'capa2'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>miscapas .<span style="color: #660066;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>misCapas<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">innerHTML</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>div id<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;capa1&quot;</span><span style="color: #339933;">&gt;</span>Un texto<span style="color: #339933;">&lt;/</span>div<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>div id<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;capa2&quot;</span><span style="color: #339933;">&gt;</span>Otro texto<span style="color: #339933;">&lt;/</span>div<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>input type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;button&quot;</span> value<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;funcion1&quot;</span> onclick<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;test1();&quot;</span><span style="color: #339933;">/&gt;&lt;</span>br <span style="color: #339933;">/&gt;</span>
<span style="color: #339933;">&lt;</span>input type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;button&quot;</span> value<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;funcion2&quot;</span> onclick<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;test2();&quot;</span><span style="color: #339933;">/&gt;&lt;</span>br <span style="color: #339933;">/&gt;</span>
<span style="color: #339933;">&lt;/</span>miscapas<span style="color: #339933;">&gt;&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></div></div>

<h3>Función $F()</h3>
<p>Otra función que es muy cómoda de usar. Esta nos recogera el valor del elemento de formulario que le indiquemos.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script<span style="color: #339933;">&gt;</span>
	<span style="color: #003366; font-weight: bold;">function</span> test<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #003366; font-weight: bold;">var</span> valor <span style="color: #339933;">=</span> $F<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;saludo&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>valor<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>input type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text&quot;</span> value<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;hola que tal&quot;</span> id<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;saludo&quot;</span> onClick<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;test();&quot;</span> <span style="color: #339933;">/&gt;</span></pre></div></div>

<p>Sobretodo tened en cuenta que es sólo para recibir el valor, no para asignarlo. Por lo tanto la siguiente línea estaría mal.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$F<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;saludo&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;muy bien, gracias&quot;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>Función $A()</h3>
<p>Esta función nos convertirá en un array aquello que le pasemos. Por ejemplo:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script<span style="color: #339933;">&gt;</span>
	<span style="color: #003366; font-weight: bold;">function</span> test<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #003366; font-weight: bold;">var</span> opciones <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;select&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">options</span><span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> array_opciones <span style="color: #339933;">=</span> $A<span style="color: #009900;">&#40;</span>opciones<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>array_opciones .<span style="color: #660066;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>array_opciones<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">innerHTML</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>select id<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;select&quot;</span><span style="color: #339933;">&gt;</span>
	<span style="color: #339933;">&lt;</span>option value<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;1&quot;</span><span style="color: #339933;">&gt;</span>Primera<span style="color: #339933;">&lt;/</span>option<span style="color: #339933;">&gt;</span>
	<span style="color: #339933;">&lt;</span>option value<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;1&quot;</span><span style="color: #339933;">&gt;</span>Primera<span style="color: #339933;">&lt;/</span>option<span style="color: #339933;">&gt;</span>
	<span style="color: #339933;">&lt;</span>option value<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;1&quot;</span><span style="color: #339933;">&gt;</span>Primera<span style="color: #339933;">&lt;/</span>option<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>select<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>array_opciones<span style="color: #339933;">&gt;&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></div></div>

<h3>Bucles a&#8217;la Ruby</h3>
<p>Hasta ahora, los bucles los hemos hecho de esta forma:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script<span style="color: #339933;">&gt;</span>
	<span style="color: #003366; font-weight: bold;">function</span> test<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>miselementos .<span style="color: #660066;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>misElementos<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>miselementos<span style="color: #339933;">&gt;&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></div></div>

<p>Ahora con prototype tenemos esta otra forma de hacerlos:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script<span style="color: #339933;">&gt;</span>
	<span style="color: #003366; font-weight: bold;">function</span> test<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		misElementos.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>elemento<span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>elemento<span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></div></div>

<p>Ademas de estas y muchas otras funciones, <a href="http://prototype.conio.net/">Prototype</a> nos extiende varias clases y objetos que existen actualmente. Algunos de los cuales son:</p>
<h3>Extensiones para la clase <strong>String</strong></h3>
<p>Algunas de ellas son:</p>
<ul>
<li><strong>stripTags()</strong> devuelve el texto eliminando cualquier <em>tag</em> HTML que puediera tener</li>
<li><strong>escapeHTML()</strong> devuelve el texto escapando cualquier <em>tag</em> HTML que puediera tener</li>
<li><strong>unescapeHTML()</strong> &#8230; ¿no lo adivinas?</li>
</ul>
<h3>Extensiones para la clase <strong>Array</strong></h3>
<p>Algunas de ellas son:</p>
<ul>
<li><strong>indexOf(valor)</strong> devuelve indice del elemento que tiene el valor que le pasamos</li>
<li><strong>without(valor1 [, valor2 [, .. valorN]])</strong> devuelve el <em>array</em> sin los elementos que le pasamos a la función</li>
</ul>
<h3>Extensiones para la clase <strong>array</strong></h3>
<p>Vamos a ver ahora algunos de los nuevos métodos para esta clase:</p>
<ul>
<li><strong>indexOf(valor)</strong> devuelve indice del elemento que tiene el valor que le pasamos</li>
<li><strong>without(valor1 [, valor2 [, .. valorN]])</strong> devuelve el <em>array</em> sin los elementos que le pasamos a la función</li>
</ul>
<h3>Extensiones para el objeto<strong>Event</strong></h3>
<p>Algunas de ellas son:</p>
<ul>
<li><strong>element(evento)</strong> devuelve el objeto que ha llamado al evento</li>
<li><strong>stop(evento)</strong> aborta el comportamiento normal del evento (por ejemplo un enlace)</li>
</ul>
<h3>El objeto <strong>Element</strong></h3>
<p>Este nuevo objeto nos da útiles funciones para manipular los elementos del <em>DOM</em>.</p>
<ul>
<li><strong>addClassName(elemento, clase)</strong> asigna, al elemento que se le pasa, la clase <em>css</em> que también se le pasa</li>
<li><strong>removeClassName(elemento, clase)</strong> elimina, al elemento que se le pasa, la clase <em>css</em> que también se le pasa</li>
<li><strong>show(elem1 [, elem2 [, elem3 [...]]])</strong> muestra el elemento o elementos que se le pasan a la función</li>
<li><strong>hide(elem1 [, elem2 [, elem3 [...]]])</strong> oculta el elemento o elementos que se le pasan a la función</li>
<li><strong>toggle(elem1 [, elem2 [, elem3 [...]]])</strong> invierte el valor de la propiedad <em>display</em> del elemento o elementos que se le pasan a la función</li>
<li><strong>remove(elemento)</strong> elimina el elemento del <em>DOM</em></li>
<li><strong>scrollTo(elemento)</strong> hace un scroll de ventana hasta la posición del elemento que se le pasa</li>
<li><strong>update(elemento, html)</strong> reemplaza el contenido del elemento (innerHTML) con el valor que se le pasa</li>
</ul>
<h3>El objeto <strong>Insertion</strong></h3>
<p>El objeto <strong>Insertion</strong> lo usaremos para introducir contenido en el <em>DOM</em>. Tiene 4 métodos: Before, After, Top y Bottom, aunque los cuatro se usan de la misma forma.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #003366; font-weight: bold;">function</span> test<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #003366; font-weight: bold;">new</span> Insertion.<span style="color: #660066;">Before</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;miFormulario&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;antes de etiqueta &lt;form&gt;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">new</span> Insertion.<span style="color: #660066;">After</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;miFormulario&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;después de etiqueta &lt;/form&gt;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">new</span> Insertion.<span style="color: #660066;">Top</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;miFormulario&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;antes de etiqueta &lt;input /&gt;, dentro de &lt;form&gt;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">new</span> Insertion.<span style="color: #660066;">Bottom</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;miFormulario&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;después de etiqueta &lt;input /&gt;, dentro de &lt;/form&gt;&lt;form&gt;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #339933;">&lt;/</span>form<span style="color: #339933;">&gt;&lt;</span>form id<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;miFormulario&quot;</span><span style="color: #339933;">&gt;</span>
		<span style="color: #339933;">&lt;</span>input type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text&quot;</span> id<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;miTexto&quot;</span> value<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;Hola que tal&quot;</span> onClick<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;test();&quot;</span> <span style="color: #339933;">/&gt;</span>
	<span style="color: #339933;">&lt;/</span>form<span style="color: #339933;">&gt;</span></pre></div></div>

<h3>El objeto <strong>Field</strong></h3>
<p>Este objeto nos da utilidades para trabajar con elementos de formularios. Algunas son:</p>
<ul>
<li><strong>clear(campo1 [, campo2 [, campoN]])</strong> vacia el contenido del campo o campos que se le pasan a la función</li>
<li><strong>focus(elemento)</strong> pasa el foco al elemento que se pasa
</li>
</ul>
<h3>El objeto <strong>Form</strong></h3>
<p>Este objeto nos da utilidades para trabajar con formularios. Algunas son:</p>
<ul>
<li><strong>serialize(formulario)</strong> devuelve una cadena formateada para pasar por URL con los elementos del formulario y sus valores. Esta función nos será muy útil si trabajamos con ajax</li>
<li><strong>getElements(formulario)</strong> devuelve un array con los elementos que pertenecen al formulario</li>
<li><strong>enable(formulario)</strong> activa todos los elementos del formulario</li>
<li><strong>disable(formulario)</strong> desactiva todos los elementos del formulario</li>
<li><strong>focusFirstElement(formulario)</strong> da el foco al primer elemento del formulario</li>
</ul>
<p>Hasta aquí explico de las bondades de <a href="http://prototype.conio.net/">Prototype</a>, aunque no son ni una quinta parte de las que hay. Espero que os sirva almenos para abrir un poco el apetito <em>javascript</em> y que empeceis a programar en este lenguaje que vive su segunda juventud <img src='http://ecentinela.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Os recomiendo encarecidamente que le echeis un ojo a esta pagina <a href="http://www.sergiopereira.com/articles/prototype.js.html">http://www.sergiopereira.com/articles/prototype.js.html</a> donde se explican muy bien muchas aportaciones que nos hace <a href="http://prototype.conio.net/">Prototype</a>.<br />
<!--more--></p>
]]></content:encoded>
			<wfw:commentRss>http://ecentinela.com/prototype-el-elixir-de-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Calcular hash MD5 en Visual Basic 2005</title>
		<link>http://ecentinela.com/calcular-hash-md5-en-visual-basic-2005/</link>
		<comments>http://ecentinela.com/calcular-hash-md5-en-visual-basic-2005/#comments</comments>
		<pubDate>Thu, 02 Feb 2006 16:37:24 +0000</pubDate>
		<dc:creator>Javier</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://localhost:8888/wordpress/?p=3</guid>
		<description><![CDATA[Resulta que he hecho una miniaplicación en Visual Basic que te avisa cuando llega la hora de un evento que anteriormente has guardado en un calendario de una web en PHP. Al hacer esta aplicación me encontrado con el problema de la validación del usuario. Resulta que cuando creas un evento en la web te [...]]]></description>
			<content:encoded><![CDATA[<p>Resulta que he hecho una miniaplicación en Visual Basic que te avisa cuando llega la hora de un evento que anteriormente has guardado en un calendario de una web en PHP.</p>
<p>Al hacer esta aplicación me encontrado con el problema de la validación del usuario. Resulta que cuando creas un evento en la web te validas por medio de un password codificado en MD5 (con la función md5() de PHP).</p>
<p><span id="more-84"></span>En visual basic no existe ninguna función (almenos no la conozco) que te haga esa conversión, asi que tube que escribir una que la hiciese. En las pruebas que he hecho, parece que funciona perfectamente, pero sino, se aceptan comentarios <img src='http://ecentinela.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> .</p>

<div class="wp_syntax"><div class="code"><pre class="vbnet" style="font-family:monospace;"><span style="color: #0600FF;">Function</span> calculaMD5<span style="color: #000000;">&#40;</span><span style="color: #FF8000;">ByVal</span> cadena <span style="color: #FF8000;">As</span> <span style="color: #FF8000;">String</span><span style="color: #000000;">&#41;</span> <span style="color: #FF8000;">As</span> <span style="color: #FF8000;">String</span>
CALCULO EL HASH DE LA CLAVE INTRODUCIDA CON MD5
<span style="color: #0600FF;">Dim</span> md5 <span style="color: #FF8000;">As</span> <span style="color: #FF8000;">New</span> System.<span style="color: #0000FF;">Security</span>.<span style="color: #0000FF;">Cryptography</span>.<span style="color: #0000FF;">MD5CryptoServiceProvider</span>
<span style="color: #0600FF;">Dim</span> bytValue<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #FF8000;">As</span> <span style="color: #FF0000;">Byte</span>
<span style="color: #0600FF;">Dim</span> bytHash<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #FF8000;">As</span> <span style="color: #FF0000;">Byte</span>
<span style="color: #0600FF;">Dim</span> sb <span style="color: #FF8000;">As</span> System.<span style="color: #0000FF;">Text</span>.<span style="color: #0000FF;">StringBuilder</span> <span style="color: #008000;">=</span> <span style="color: #FF8000;">New</span> System.<span style="color: #0000FF;">Text</span>.<span style="color: #0000FF;">StringBuilder</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">32</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">Dim</span> i <span style="color: #FF8000;">As</span> <span style="color: #FF0000;">Integer</span>
bytValue <span style="color: #008000;">=</span> System.<span style="color: #0000FF;">Text</span>.<span style="color: #0000FF;">Encoding</span>.<span style="color: #0000FF;">UTF8</span>.<span style="color: #0000FF;">GetBytes</span><span style="color: #000000;">&#40;</span>cadena<span style="color: #000000;">&#41;</span>
bytHash <span style="color: #008000;">=</span> md5.<span style="color: #0000FF;">ComputeHash</span><span style="color: #000000;">&#40;</span>bytValue<span style="color: #000000;">&#41;</span>
md5.<span style="color: #0000FF;">Clear</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">Dim</span> <span style="color: #0600FF;">str</span> <span style="color: #FF8000;">As</span> <span style="color: #FF8000;">String</span> <span style="color: #008000;">=</span> <span style="color: #808080;">&quot;&quot;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">'bytHash SIEMPRE DEVUELVE PAREJAS DE CARACTERES QUE VOY CONCATENANDO</span>
<span style="color: #FF8000;">For</span> i <span style="color: #008000;">=</span> <span style="color: #FF0000;">0</span> <span style="color: #FF8000;">To</span> bytHash.<span style="color: #0000FF;">Length</span> <span style="color: #008000;">-</span> <span style="color: #FF0000;">1</span>
<span style="color: #0600FF;">str</span> <span style="color: #008000;">=</span> bytHash<span style="color: #000000;">&#40;</span>i<span style="color: #000000;">&#41;</span>.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;x2&quot;</span><span style="color: #000000;">&#41;</span>
sb.<span style="color: #0000FF;">Append</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">str</span><span style="color: #000000;">&#41;</span>
<span style="color: #FF8000;">Next</span>
&nbsp;
<span style="color: #008080; font-style: italic;">'DEVUELVO LA CADENA MD5</span>
<span style="color: #FF8000;">Return</span> sb.<span style="color: #0000FF;">ToString</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Function</span></pre></div></div>

<p><!--more--></p>
]]></content:encoded>
			<wfw:commentRss>http://ecentinela.com/calcular-hash-md5-en-visual-basic-2005/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Factoria de proveedores (Parte 2)</title>
		<link>http://ecentinela.com/factoria-de-proveedores-parte-2/</link>
		<comments>http://ecentinela.com/factoria-de-proveedores-parte-2/#comments</comments>
		<pubDate>Sun, 29 Jan 2006 16:56:54 +0000</pubDate>
		<dc:creator>Javier</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://localhost:8888/wordpress/?p=4</guid>
		<description><![CDATA[Anteriormente comentaba las bondades de la factoria de proveedores de Visual Basic a la hora de crear una aplicación fácilmente migrable entre distintos motores de bases de datos. Aquí dejo un ejemplo de código (algo muy sencillito). Imports System.Data.Common &#160; Public Class identificacion 'CREO UN DATASET PARA RELLENARLO CON LA INFO DE LA TABLA Dim [...]]]></description>
			<content:encoded><![CDATA[<p>Anteriormente comentaba las bondades de la factoria de proveedores de Visual Basic a la hora de crear una aplicación fácilmente migrable entre distintos motores de bases de datos.</p>
<p>Aquí dejo un ejemplo de código (algo muy sencillito).</p>
<p><span id="more-83"></span></p>

<div class="wp_syntax"><div class="code"><pre class="vbnet" style="font-family:monospace;"><span style="color: #0600FF;">Imports</span> System.<span style="color: #0000FF;">Data</span>.<span style="color: #0000FF;">Common</span>
&nbsp;
<span style="color: #FF8000;">Public</span> <span style="color: #0600FF;">Class</span> identificacion
<span style="color: #008080; font-style: italic;">'CREO UN DATASET PARA RELLENARLO CON LA INFO DE LA TABLA</span>
<span style="color: #0600FF;">Dim</span> dataset <span style="color: #FF8000;">As</span> DataSet <span style="color: #008000;">=</span> <span style="color: #FF8000;">New</span> DataSet
&nbsp;
<span style="color: #FF8000;">Private</span> <span style="color: #0600FF;">Sub</span> identificacion_Load<span style="color: #000000;">&#40;</span><span style="color: #FF8000;">ByVal</span> sender <span style="color: #FF8000;">As</span> System.<span style="color: #FF0000;">Object</span>, <span style="color: #FF8000;">ByVal</span> e <span style="color: #FF8000;">As</span>
System.<span style="color: #0000FF;">EventArgs</span><span style="color: #000000;">&#41;</span> <span style="color: #FF8000;">Handles</span> <span style="color: #FF8000;">MyBase</span>.<span style="color: #0000FF;">Load</span>
<span style="color: #008080; font-style: italic;">'CREO El OBJETO FACTORIA E INDICO EL PROVEEDOR QUE VOY A USAR</span>
<span style="color: #0600FF;">Dim</span> factoria <span style="color: #FF8000;">As</span> DbProviderFactory <span style="color: #008000;">=</span>
DbProviderFactories.<span style="color: #0000FF;">GetFactory</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;System.Data.SqlClient&quot;</span><span style="color: #000000;">&#41;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">'CREO EL CONEXIONBUILDER PARA PREPARAR LA CONEXION</span>
<span style="color: #0600FF;">Dim</span> parametrosConexion <span style="color: #FF8000;">As</span> DbConnectionStringBuilder <span style="color: #008000;">=</span>
factoria.<span style="color: #0000FF;">CreateConnectionStringBuilder</span>
&nbsp;
<span style="color: #008080; font-style: italic;">'PREPARO LA CADENA DE CONEXION</span>
<span style="color: #0600FF;">With</span> parametrosConexion
.<span style="color: #0000FF;">Add</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;Data Source&quot;</span>, <span style="color: #808080;">&quot;localhost&quot;</span><span style="color: #000000;">&#41;</span>
.<span style="color: #0000FF;">Add</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;Initial Catalog&quot;</span>, <span style="color: #808080;">&quot;unica_db&quot;</span><span style="color: #000000;">&#41;</span>
.<span style="color: #0000FF;">Add</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;Integrated Security&quot;</span>, <span style="color: #808080;">&quot;SSPI&quot;</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">With</span>
&nbsp;
<span style="color: #008080; font-style: italic;">'CREO EL OBJETO DE CONEXION</span>
<span style="color: #0600FF;">Dim</span> conexion <span style="color: #FF8000;">As</span> DbConnection <span style="color: #008000;">=</span> factoria.<span style="color: #0000FF;">CreateConnection</span>
&nbsp;
<span style="color: #008080; font-style: italic;">'ESTABLEZCO LA CADENA DE CONEXION</span>
conexion.<span style="color: #0000FF;">ConnectionString</span> <span style="color: #008000;">=</span> parametrosConexion.<span style="color: #0000FF;">ConnectionString</span>
&nbsp;
<span style="color: #008080; font-style: italic;">'ABRO LA CONEXION</span>
<span style="color: #0600FF;">Try</span>
<span style="color: #008080; font-style: italic;">'INTENTO LA CONEXION</span>
conexion.<span style="color: #0600FF;">Open</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">Catch</span> ex <span style="color: #FF8000;">As</span> Exception
<span style="color: #008080; font-style: italic;">'SI FALLA, MUESTRO UN MENSAJE Y CIERRO EL PROGRAMA</span>
MessageBox.<span style="color: #0000FF;">Show</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;Error en la conexión con la base de datos. Si el problema
persiste consulte con el Administrador del sistema&quot;</span>, _
<span style="color: #808080;">&quot;Error en la conexión&quot;</span>, MessageBoxButtons.<span style="color: #0600FF;">OK</span>,
MessageBoxIcon.<span style="color: #FF8000;">Error</span>, MessageBoxDefaultButton.<span style="color: #0000FF;">Button1</span><span style="color: #000000;">&#41;</span>
My.<span style="color: #0000FF;">Forms</span>.<span style="color: #0000FF;">principal</span>.<span style="color: #0600FF;">Close</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #FF8000;">Me</span>.<span style="color: #0600FF;">Close</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">Exit</span> <span style="color: #0600FF;">Sub</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Try</span>
&nbsp;
<span style="color: #008080; font-style: italic;">'PREPARO UN ADAPTADOR PARA OBTENER LA TABLA DE USUARIOS</span>
<span style="color: #0600FF;">Dim</span> adaptador <span style="color: #FF8000;">As</span> DbDataAdapter <span style="color: #008000;">=</span> factoria.<span style="color: #0000FF;">CreateDataAdapter</span>
&nbsp;
<span style="color: #008080; font-style: italic;">'CREO UN COMANDO</span>
<span style="color: #0600FF;">Dim</span> comando <span style="color: #FF8000;">As</span> DbCommand <span style="color: #008000;">=</span> conexion.<span style="color: #0000FF;">CreateCommand</span>
&nbsp;
<span style="color: #008080; font-style: italic;">'CREO LA CONSULTA</span>
comando.<span style="color: #0000FF;">CommandText</span> <span style="color: #008000;">=</span> <span style="color: #808080;">&quot;SELECT * FROM tbl_usuarios&quot;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">'ENLAZO EL ADAPTADOR AL COMANDO</span>
adaptador.<span style="color: #0000FF;">SelectCommand</span> <span style="color: #008000;">=</span> comando
&nbsp;
<span style="color: #008080; font-style: italic;">'RELLENO EL DATASET</span>
dataset <span style="color: #008000;">=</span> <span style="color: #FF8000;">New</span> DataSet
adaptador.<span style="color: #0000FF;">Fill</span><span style="color: #000000;">&#40;</span>dataset, <span style="color: #808080;">&quot;tbl_usuarios&quot;</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Sub</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Class</span></pre></div></div>

<p>Este es el codigo de un formulario que accede a una base de datos Sql server. Como podeis ver, establezo los parametros de la conexión en las primeras lineas de programa.<br />
Pues bien. Si decidiese cambiar el tipo de base de datos, por ejemplo a Access, sólo deberia cambiar esas primeras lineas.<br />
En otras versiones, si quisiese hacerlo, tendria que cambiar el codigo de prácticamente todos los objetos que he creado que sirven para relacionarse con la base de datos (comando, dataAdapter, etc).<br />
Espero que haya quedado un poco más claro.<!--more--></p>
]]></content:encoded>
			<wfw:commentRss>http://ecentinela.com/factoria-de-proveedores-parte-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Factoria de proveedores</title>
		<link>http://ecentinela.com/factoria-de-proveedores/</link>
		<comments>http://ecentinela.com/factoria-de-proveedores/#comments</comments>
		<pubDate>Thu, 26 Jan 2006 16:56:35 +0000</pubDate>
		<dc:creator>Javier</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://localhost:8888/wordpress/?p=5</guid>
		<description><![CDATA[He estado probando un poco la factoria de proveedores de datos de visual basic 2005 express (DbProviderFactories class). Esta clase sirve para relacionarse con la base de datos pudiendo cambiar el motor en cualquier momento, reescribiendo únicamente la cadena de conexion y especificando el nuevo proveedor. Esto nos vendria bien, por ejemplo, en una aplicación [...]]]></description>
			<content:encoded><![CDATA[<div class="centro"><img src="http://ecentinela.com/wp-content/uploads/2006/01/vb2005.jpg" alt="Visual Basic 2005" title="Visual Basic 2005" width="320" height="57" class="alignleft size-full wp-image-104" /></div>
<p>He estado probando un poco la factoria de proveedores de datos de <a href="http://msdn.microsoft.com/vstudio/express/vb/default.aspx">visual basic 2005 express</a> (DbProviderFactories class).</p>
<p>Esta clase sirve para relacionarse con la base de datos pudiendo cambiar el motor en cualquier momento, reescribiendo únicamente la cadena de conexion y especificando el nuevo proveedor. Esto nos vendria bien, por ejemplo, en una aplicación que se relaciona con <a href="http://office.microsoft.com/es-es/FX010857913082.aspx">Access</a> y más tarde queremos cambiar a <a href="http://www.microsoft.com/sql/default.mspx">SQL Server</a>. Anteriormente hacer este cambio significaba reescribir gran parte de la aplicación. Esta clase viene a solucionar este problema.</p>
<p>Los objetos command, dataAdapter, etc. seran independientes del tipo de base de datos.</p>
]]></content:encoded>
			<wfw:commentRss>http://ecentinela.com/factoria-de-proveedores/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

