<?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>Petra Link Factory &#187; programación</title>
	<atom:link href="http://www.petralinkfactory.com/category/programacion/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.petralinkfactory.com</link>
	<description>Programar no es un hobby es una pasión</description>
	<lastBuildDate>Sun, 15 Jan 2012 09:14:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Windows Phone 7.1</title>
		<link>http://www.petralinkfactory.com/2011/11/11/windows-phone-7-1/</link>
		<comments>http://www.petralinkfactory.com/2011/11/11/windows-phone-7-1/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 13:09:14 +0000</pubDate>
		<dc:creator>Valde</dc:creator>
				<category><![CDATA[programación]]></category>
		<category><![CDATA[Windows Phone]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[iOS]]></category>

		<guid isPermaLink="false">http://www.petralinkfactory.com/?p=162</guid>
		<description><![CDATA[Tal y como yo veo la informática actual, los ordenadores van a ser cosa del pasado y de las oficinas la informática de consumo va a estar en nuestra mano, y en casa tendremos adaptadores de nuestro móvil a ordanador &#8230; <a href="http://www.petralinkfactory.com/2011/11/11/windows-phone-7-1/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Tal y como yo veo la informática actual, los ordenadores van a ser cosa del pasado y de las oficinas la informática de consumo va a estar en nuestra mano, y en casa tendremos adaptadores de nuestro móvil a ordanador (como el Lapdock[1] o el portátil[2] del Motorola Atrix).</p>
<p>Actualmente hay muchos sistemas operativos móviles (iOS, Android, Windows Phone, webOS, BADA, Symbian, BlackBerry, &#8230;) Todos tienen virtudes y desventajas para los usuarios, por ejemplo en Android hay muchas aplicaciones gratuitas, en iOS las hay de pago pero con mucha calidad, &#8230;</p>
<p>Pero desde el punto de vista del programador, ¿qué nos compensa más? La respuesta más rápida suele ser iOS y Android, en iOS podremos ganar dinero, ya que la gente está acostumbrada a pagar por usar una aplicación, y en Android una gratis con publicidad y otra de pago sin publicidad, por si alguien la quiere sin pagar. En este sentido están apareciendo muchas aplicaciones creadas en HTML5 + CSS3 y montadas como nativas con PhoneGap[3], según los datos de PhoneGap, se han publicado más de 50.000 aplicaciones ya hechas con esta tecnología.</p>
<p>Esta forma de desarrollar aplicaciones no está mal, pero se queda en la superficie de lo que es una aplicación móvil, en realidad no es más que una página web a la que la encapsulamos dentro de una aplicación, y gracias a la API interna JavaScript se pueden hacer muchas cosas e interactuar con el teléfono.</p>
<p>El problema viene cuando quieres hacer aplicaciones más grandes y serias. En ese caso hay que ir a desarrollar directamente con las herramientas que nos facilitan los creadores de los sistemas operativos móviles.</p>
<p>La verdad es que no he visto nunca el XCode, en mi Mac mini con un G4 no van los que se pueden utilizar para programar para iOS, pero por lo que he leído o me han comentado amigos programadores, es un lío, para empezar el lenguaje Object-C tiene una curva de aprendizaje muy lenta, y luego la plataforma está muy cerrada, te puedes matar programando la mejor aplicación del mundo, que luego si Apple dice que no quiere publicarla, te tienes que aguantar o ir a Cyndia.</p>
<p>En Android he hecho pequeñas cosas, lo que a mi me frena es el Java, como programador .NET que soy, pero si la verdad es que le viera que se puede sacar dinero, me gastaría los 400$ de la licencia del MonoTouch (que también vale para iOS), pero el problema, como programador a la plataforma Android es que hay de todo y Gratis, para hacer algo que se pueda vender, tiene que ser muy buena y tener suerte que a la gente le guste mucho y se decidan a pagar. Otra cosa que me frenó en el desarrollo de aplicaciones para Android es que los fabricantes se han puesto en una guerra de ver quien tiene el móvil más potente y cada 2 ó 3 meses aparecen móviles o tablets más potentes, y sin actualizar el sistema de los anteriores modelos, creando una gran Fragmentación del sistema, y en muchas veces las apliciones hay que hacerlas 3 ó 4 veces, para los distintos tipos de sistemas que tiene la gente instalado (4, 3.1, 3.0, 2.3.5, 2.3, 2.2, 2.1, &#8230;&#8230;). En cuanto al argumento de la publicidad, hablando con mi amigo Jero, que hizo un par de aplicaciones y ahora trabaja en Alemania programando para una gran empresa de Software para Android, me dijo que por clic dan una miseria, además otros desarrolladores a los que han entrevistado en Droidcast[4] dicen lo mismo, que de ésto no se vive, más o menos es un hobby o que te contrate una empresa que quiere la aplicación para dar más servicios a otra cosa con la que va a ganar el dinero (un ejemplo de esto es Spotify, que solo se puede usar si tienes una versión de pago). En cuanto al diseño de las aplicaciones, Eclipse no es el mejor editor de los interfaces, y toca echar mucho tiempo delante de la pantalla para que quede algo muy bien.</p>
<p>Por último tenemos el Windows Phone 7.1 (7.5 como nombre comercial). Desde mi punto de vista este va a ser el sistema tapado, al haber en el Marketplace unas 35.000 aplicaciones, es el momento de ponerse a programar, hay pocas aplicaciones, y teniendo en cuenta que la versión 7.0 era muy recortada en funcionalidades, con esta versión se pueden hacer cosas muy buenas, y con suerte hacer algo de dinero, al menos para pagar los 75€ que cuesta poder publicar en el Marketplace. Otra cosa que considero a tener en cuenta es la entrada de Nokia en el ecosistema de Windows Phone, aunque parezca que no esto se va notando ya, los fabricantes de móviles están poniéndose las pilas por si triunfa, como por ejemplo ZTE, Fujitsu o Lenovo, que estaban centradas en Android. Una cosa que ha hecho muy bien microsoft es bloquear el hardware, algunos pensarán que eso es malo, pero lo bueno es que todos los móviles de la primera generación de Windows Phone se han actualizado sin problemas a la versión 7.1 (Mango), por lo que la Fragmentación es del 0%, y lo más importante, como el hardware es cerrado, los fabricantes no han hecho nada, todo lo ha hecho Microsoft, de aquí debería aprender Google con su Android. Otra cosa que me ha gustado mucho de Windows Phone 7.1 es que las herramientas de desarrollo son muy buenas, y gratuitas, lo que nos permite hacer aplicaciones con mucha calidad sin tener que hechar mucho tiempo delante de la pantalla. Otra cosa muy interesante es que te permiten hacer en una misma aplicación una versión Lite y una Pro, de manera que con una variable interna puedes cambiar las cosas que consideres que deben estar en una o en otra. También permiten otra cosa que me ha parecido muy interesante, que es la publicación privada de aplicaciones, de manera que se suben al marketplace, pero solo es visible metiendo una dirección que te proporciona Microsoft. Además Microsoft como está viendo que lo que la gente quiere son aplicaciones, está echando el resto en las comunidades de desarrollo, con charlas en muchas ciudades españolas, así como una gran documentación on-line, tanto en español como en inglés, que al fin y al cabo es lo más importante para los programadores, poder tener información para poder programar.</p>
<p>Después de todo esto, verás que me he &#8220;evangelizado&#8221; para empezar a desarrollar aplicaciones para Windows Phone 7.1. A ver si empiezo a sacar cosas y las voy publicando por aquí.</p>
<p>&nbsp;</p>
<h3>Enlaces:<br />
[1] <a href="http://www.xataka.com/analisis/motorola-atrix-analisis-iv-el-motorola-lapdock-y-el-hd-multimedia-dock">http://www.xataka.com/analisis/motorola-atrix-analisis-iv-el-motorola-lapdock-y-el-hd-multimedia-dock<br />
</a>[2] <a href="http://www.xataka.com/analisis/motorola-atrix-analisis-i-el-smartphone-que-queria-ser-portatil">http://www.xataka.com/analisis/motorola-atrix-analisis-i-el-smartphone-que-queria-ser-portatil</a><br />
[3] <a href="http://www.phonegap.com">http://www.phonegap.com</a><br />
[4] <a href="http://www.droidcast.es">http://www.droidcast.es</a></h3>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.petralinkfactory.com/2011/11/11/windows-phone-7-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HelloAndroid (Android II)</title>
		<link>http://www.petralinkfactory.com/2009/11/15/helloandroid-world-ii/</link>
		<comments>http://www.petralinkfactory.com/2009/11/15/helloandroid-world-ii/#comments</comments>
		<pubDate>Sun, 15 Nov 2009 00:12:51 +0000</pubDate>
		<dc:creator>Valde</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[primer programa]]></category>

		<guid isPermaLink="false">http://www.petralinkfactory.com/?p=103</guid>
		<description><![CDATA[En la pasada entrega de Android vimos como instalar la versión 1.5 (Donut) de Android sobre la versión 3.5 de Eclipse (Galileo). En la actualidad ya se puede instar la versión 2.0 (Eclair) de Android, para ello ir a la &#8230; <a href="http://www.petralinkfactory.com/2009/11/15/helloandroid-world-ii/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>En la <a title="Android I" href="http://www.petralinkfactory.com/2009/07/04/android-i/" target="_self">pasada entrega de Android</a> vimos como instalar la versión 1.5 (Donut) de Android sobre la versión 3.5 de Eclipse (Galileo). En la actualidad ya se puede instar la versión 2.0 (Eclair) de Android, para ello ir a la página de desarrollo de Android [1]. Otra opción de pasar a las últimas versiones es instalar el Motorola MOTODEV[2], que no es más que el Eclipse 3.5 ya configurado y con un instalador, además cuando hay actualizaciones te mandan correos, para este artículo lo voy a utilizar, ya que es ideal para los nuevos usuarios. Para configurarlo utilizar la documentación de Motorola, pero en mi caso no he tenido que hacer nada, ya que tenía el Eclipse 3.5 ya configurado y me ha cogido todos los dispositivos virtuales que ya tenía.</p>
<p>Lo primero que hacemos, una vez que MOTODEV nos ha pedido que nos actualicemos, por si hubiera algo nuevo. Ya cuando reiniciemos el MOTODEV nos pondremos manos a la obra. Para ello lo que tenemos que hacer es crear un nuevo proyecto de Android, para ello seleccionaremos la opción del menú principal <strong>File</strong> -&gt; <strong>New</strong> -&gt; <strong>Project</strong> y se nos abrirá la siguiente ventana.</p>
<p>Pincharemos sobre Android Project, una vez que hemos pulsado sobre Android en el árbol de Asistentes (Wizards).</p>
<div id="attachment_105" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.petralinkfactory.com/wp-content/uploads/2009/11/HelloAndroid_01.png"><img class="size-medium wp-image-105" title="Seleccionar el tipo de proyecto Android" src="http://www.petralinkfactory.com/wp-content/uploads/2009/11/HelloAndroid_01-300x149.png" alt="Seleccionar el tipo de proyecto Android" width="300" height="149" /></a><p class="wp-caption-text">Seleccionar el tipo de proyecto Android</p></div>
<p>Tras esto nos aparecerÃ¡ la siguiente ventana de configuración del proyecto Android.</p>
<div id="attachment_107" class="wp-caption aligncenter" style="width: 226px"><a href="http://www.petralinkfactory.com/wp-content/uploads/2009/11/HelloAndroid_03.png"><img class="size-medium wp-image-107" title="ConfiguraciÃ³n del proyecto Android" src="http://www.petralinkfactory.com/wp-content/uploads/2009/11/HelloAndroid_03-216x300.png" alt="ConfiguraciÃ³n del proyecto Android" width="216" height="300" /></a><p class="wp-caption-text">ConfiguraciÃ³n del proyecto Android</p></div>
<p>En la imagen se puede ver que se han marcado con números los campos más importantes de configuración del proyecto.</p>
<ol>
<li>Nombre del proyecto.</li>
<li>Plataforma Android para la que vamos a desarrollar nuestro programa, en el ejemplo he marcado Android 1.5 (CupCake).</li>
<li>Nombre de la aplicación, la que nos aparecerá en el menú de aplicaciones del móvil Android.</li>
<li>Nombre del paquete. En realidad se podría poner el nombre del proyecto, pero desde google nos hacen la recomendación de poner primero un identificador del programador o empresa desarrolladora de la aplicación, en el ejemplo plf, de Petra Link Factory, punto y el nombre del proyecto.</li>
<li>Nombre de la clase de tipo Activity de nuestra aplicación. No es obligatoria, pero sí recomendable.</li>
<li>Botón de Finalizar para terminar de configurar el proyecto Android.</li>
</ol>
<p>Tras esto podremos ver que se autogeneran la siguiente estructura del proyecto, que podemos ver en la image.</p>
<div id="attachment_108" class="wp-caption aligncenter" style="width: 212px"><a href="http://www.petralinkfactory.com/wp-content/uploads/2009/11/HelloAndroid_04.png"><img class="size-medium wp-image-108" title="Estructura del programa HelloAndroid" src="http://www.petralinkfactory.com/wp-content/uploads/2009/11/HelloAndroid_04-202x300.png" alt="Estructura del programa HelloAndroid" width="202" height="300" /></a><p class="wp-caption-text">Estructura del programa HelloAndroid</p></div>
<p>Podemos ver que el proyecto cuelgan varios items, que a su vez tienen otros items.</p>
<ul>
<li>En la carpeta <strong>src</strong> nos encontramos las clases que vayamos a programar para nuestro programa, por esto encontramos el nombre del paquete, y debajo fichero holoAndroid.java, que contiene la clase Activity de nuestra aplicación.</li>
<li>En la carpeta <strong>gen </strong>nos encontramos los fichero que se autogeneran al manipular otro ficheros.</li>
<li><strong>Android 1.5</strong>. En esta carpeta nos encontramos todos los archivos necesarios de Android 1.5 (el que configuramos en nuestra aplicación).</li>
<li><strong>assets</strong>:<strong> </strong>la verdad es que no tengo idea de lo que va en esta carpeta, que se puede ver que está vacía, yo soy un novato en esto del Android, con lo que os pido perdón.</li>
<li><strong>res:</strong> en esta carpeta estarán los ficheros que nos servirán para la parte gráfica de nuestra aplicación.
<ul>
<li><strong>drawable:</strong> aquí­ guardaremos los archivos de imágenes. El archivo <strong>icon.png</strong> será el archivo de nuestra aplicación, que podremos cambiar, debe ser un PNG de 48&#215;48 pixeles. Para que funcione bien, el PNG no debe tener capas y puede ser transparente.</li>
<li><strong>layout:</strong> en esta carpeta estarán los ficheros xml que definirán las ventanas de nuestra aplicación. Para su desarrollo tenemos un editor, con lo que no será necesario que abramos el fichero xml y editarlo a mano.</li>
<li><strong>values:</strong> en esta carpeta podremos poner ficheros de xml de constantes, al igual que en el caso anterior tenemos un editor de este tipo de ficheros.</li>
</ul>
</li>
<li><strong>AndroidManifiest.xml: </strong>Este es el fichero donde se indican datos del programa, como la versión, nombre de la empresa desarrolladora, o desarrollador del programa, &#8230;</li>
<li><strong>default.properties</strong>: este fichero no hay que tocarlo, puesto que de su modificación se encarga el plugin ADT de Eclipse</li>
</ul>
<p>Por defecto ya tenemos el HolaAndorid en el proyecto. Si abrimos el fichero <strong>strings.xml</strong> dentro de la carpeta <strong>values</strong> veremos la cadena con el nombre &#8220;<em>hello&#8221;</em><strong> </strong>y el valor &#8220;<em>Hello World, helloAndroid!</em>&#8220;.</p>
<p>Cómo se está mostrando este texto en la pantalla. Pues para ello vamos al fichero <strong>main.xml</strong> que está dentro de la carpeta <strong>layout</strong>. Ahí vemos el editor de la ventana.</p>
<div id="attachment_109" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.petralinkfactory.com/wp-content/uploads/2009/11/HelloAndroid_09.png"><img class="size-medium wp-image-109" title="Editor de la ventana de Android" src="http://www.petralinkfactory.com/wp-content/uploads/2009/11/HelloAndroid_09-300x266.png" alt="Editor de la ventana de Android" width="300" height="266" /></a><p class="wp-caption-text">Editor de la ventana de Android</p></div>
<p>Podemos ver que en el ejemplo de helloAndroid hay una TextView. En la barra de la izquierda podemos encontrar dos tipos de Items, <strong>Layout</strong> que son los tipos de panel para la disposición de los demás componentes de la ventana, y <strong>Views</strong> que son los componentes con los que podemos ver en la pantalla, botones, campos de texto, &#8230;</p>
<p>Para el primer ejemplo ya hemos visto muchas cosas, ya a medida que vayamos viendo otros ejemplos iremos viendo más cosas, así como el uso de los demás ficheros. Ya solo nos queda ver cómo queda nuestra aplicación en el emulador. Para ello pulsamos el botón <strong>Run </strong>(un círculo verde con un triángulo blanco dentro)<strong> </strong>que hay en la barra de herramientas. A continuación nos aparecerá el emulador de Android, con el texto A N D R O I D. Tened paciencia puesto que tarda un poco en cambiar al logotipo de Android, y luego un poco más hasta que nos aparece el sistema cargado, lo que tengáis un teléfono Android os daréis cuenta que tarda más o menos lo que tarda vuestro móvil en arrancar.</p>
<div id="attachment_110" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.petralinkfactory.com/wp-content/uploads/2009/11/HelloAndroid_10.png"><img class="size-medium wp-image-110" title="HelloAndroid en el Emulador de Android" src="http://www.petralinkfactory.com/wp-content/uploads/2009/11/HelloAndroid_10-300x145.png" alt="HelloAndroid en el Emulador de Android" width="300" height="145" /></a><p class="wp-caption-text">HelloAndroid en el Emulador de Android</p></div>
<p>En la última imagen del emulador la he puesto para mostrar cómo quedaría un icon.png diferente al que viene por defecto, por esto que los dos iconos están remarcados con un círculo rojo.</p>
<p>Si no tienes paciencia y quieres ver otros sitos webs con programación en castellano de Android te recomiendo que vayas a los blogs y foros específicos de este tema como and.roid.es y android-spa, donde hay gente muy maja detrás de estos dos sitios webs y que saben mucho sobre el tema, además que se dedican a desarrollar aplicaciones en Android.</p>
<h3>Enlaces:</h3>
<p>[1] Página oficial de instrucciones del instalador del plugin ADT para eclipse: http://developer.android.com/sdk/eclipse-adt.html</p>
<p>[2] MOTODEV: http://developer.motorola.com/docstools/motodevstudio/</p>
]]></content:encoded>
			<wfw:commentRss>http://www.petralinkfactory.com/2009/11/15/helloandroid-world-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android (I)</title>
		<link>http://www.petralinkfactory.com/2009/07/04/android-i/</link>
		<comments>http://www.petralinkfactory.com/2009/07/04/android-i/#comments</comments>
		<pubDate>Sat, 04 Jul 2009 17:51:22 +0000</pubDate>
		<dc:creator>Valde</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[sdk]]></category>

		<guid isPermaLink="false">http://www.petralinkfactory.com/?p=79</guid>
		<description><![CDATA[Durante unas cuantas entradas, y siempre y cuando me lo permita el tiempo, voy a realizar unos cuantos artículos relacionados la programación sobre este sistema operativo para móviles. El por qué dedicar tiempo a este sistema operativo en vez de &#8230; <a href="http://www.petralinkfactory.com/2009/07/04/android-i/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Durante unas cuantas entradas, y siempre y cuando me lo permita el tiempo, voy a realizar unos cuantos artículos relacionados la programación sobre este sistema operativo para móviles.</p>
<p>El por qué dedicar tiempo a este sistema operativo en vez de iPhone o Windows Mobile es que considero que este va a ser el Sistema que revolucione la programación de los móviles, de hecho creo que va a ser como el Windows 3.1 para lo que hoy en día es la informática, que existían cosas mejores, como los primeros entornos UNIX (el iPhone u otros sistemas Linux) pero que no son tan abiertos y documentados como lo es Android.</p>
<p>A día de hoy solo existen 3 móviles en el mercado, y los 3 son de HCT (Dream[G1], Magic [G2] y Hero), en breve otros fabricantes como Sansung, Motorola, Sony Ericsson, &#8230; empezarán a sacar sus móviles con dicho sistema operativo.</p>
<p>Además otras industrias, que no tienen nada que ver con los móviles, están planteando utilizar el sistma operativo Android para otros dispositivos electónicos con valor añadido, como por ejemplo marcos digitales, que con una tarjeta wifi se pueda conectar a Flickr y mostrar las fotos desde ahí, o implementar juegos.</p>
<p>En la industria del automóvil también se estaba hablando utilizar el sistema Android para montar la información de la consola del vehículo, como un ordenador multimedia y el sistema de navegación, control del aire acondicionado, &#8230;</p>
<p>Bueno, manos a la obra.</p>
<p>Lo primero es descargarnos los programas. Hay que decir que se puede programar en los 3 sistemas operativos principales de hoy en día, Linux, Windows y OSX. Yo voy a hacer las pruebas en Windows o en Linux, puesto que mi Mac es un mini con un procesador Motorola G4 y el SDK de Android solo funciona en los equipos con Intel.</p>
<p>El primer programa que tenemos que descargarnos es el entorno de programación. Para programar en Android, en principio, el lenguaje por defecto es <em>Java</em>, aunque hoy en día ya hay otros lenguajes, como JavaScript, C. C++ o C# bajo mono. En estos artículos solo vamos a ver Java, puesto que es de lo que he encontrado más documentación, pero puesto que Android es un Linux modificado, se pueden programar en todos los lenguajes que en Linux se programan, con lo que con el tiempo irán apareciendo nuevos ports y liberías para dichos lenguajes. En la actualidad, Google nos recomienda utilizar eclipse[1] como entorno de desarrollo, aunque también se puede hacer en cualquier entorno de desarrollo Java. En estos artículos utilizaremos eclipse, que es muy fácil de utilizar. Para desarrollar software para Android deberemos descargarnos el Eclipse IDE for Java Developers. A día de hoy estamos en la versión 3.4.</p>
<p>Una vez que nos hemos descargado el IDE, que vienen en un fichero ZIP, lo descomprimimos y lo guardamos en la carpeta de programas (en Windows XP C:\Archivos de Programa\eclipse\</p>
<p>Ahora nos descargamos el SDK de Android [2]. Una vez que se haya descargado, descomprimeló y mueveló hacia el raíz de C u otra carpeta fuera del escritorio, que sino lo borrarás algún día por error y dejará de funcionar, yo te recomiendo en C:\Archivos de Programa\Android_SDK_1_5\</p>
<p>Bueno, ahora nos toca configurar el para poder programar con eclipse. Para ello ejecuta el eclipse y pulsa sobre el item del menú <strong>Help</strong> y luego pulsa sobre <strong>Install New Software</strong>&#8230; Se nos abrirá una ventana, en ésta ventana hay el botón <strong>Add</strong>, pulsaló y escribe un nombre, por ejemplo <em>Android Plugin</em> y luego pon la dirección <em>https://dl-ssl.google.com/android/eclipse/</em></p>
<p>Tras un momento, lo que tarda en acceder a dicha dirección y obtener la información relativa, nos aparecerá el item <em>Developer Tool</em>. Lo marcamos y pulsamos sobre el botón <strong>Next</strong>. Seguimos con el asistente y por último aceptamos las condiciones de uso del plugin, tras lo que pulsamos <strong>Finish</strong>. Una vez que ha terminado de instalarse, nos peide que reiniciemos Eclipse.</p>
<p>Al volver del reinicio de Eclipse, lo que hacemos es ir a item del menú <strong>Window</strong> y seleccionamos <strong>Preferences</strong>. Marcamos el item del árbol Android y seleccionamos la carpeta donde hemos instalado el SDK de Android, en nuestro caso C:\Archivos de Programa\Android_SDK_1_5\. Tras esto Eclipse buscará el contenido del SDK y cuando acabe ya tendremos configurado todo lo que nos hace falata para desarrollar software en Android con Eclipse.</p>
<p>En la siguiente entrega veremos cómo crear el HolaMundo de manera que iremos viendo paso a paso cómo está compuesta una herramienta de Android.</p>
<h3>Enlaces</h3>
<p>[1] Dirección de descarga de eclipse: http://www.eclipse.org/downloads/</p>
<p>[2] Dirección de descarga del SDK 1.5 de Android: http://developer.android.com/sdk/1.5_r2/index.html</p>
<h3>Otras Direcciones interesantes para estar al día o aprender a programar Android</h3>
<ul>
<li><a href="http://and.roid.es">http://and.roid.es</a> : blog donde podemos estar al día con todas las noticias que rodean al mundo Android. En esta web encontramos un foro y un curso, en el que podemos encontrar solo la teoría, me imagino que está muy liado y no le ha dado tiempo de hacer ningún ejemplo de programación.</li>
<li><a href="http://www.android-spa.com">http://www.android-spa.com</a> : al igual que la web anterior podemos encontrar un blog con las noticias que rodean al mundo de Android. En la zona del foro, hay secciones para principiantes, donde podemos encontrar manuales y muchos ejemplos.</li>
<li><a href="http://developer.android.com/">http://developer.android.com</a> : Página principal del proyecto Android, en inglés.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.petralinkfactory.com/2009/07/04/android-i/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Instaladores</title>
		<link>http://www.petralinkfactory.com/2009/02/27/instaladores/</link>
		<comments>http://www.petralinkfactory.com/2009/02/27/instaladores/#comments</comments>
		<pubDate>Fri, 27 Feb 2009 17:18:29 +0000</pubDate>
		<dc:creator>Valde</dc:creator>
				<category><![CDATA[Escritorio]]></category>
		<category><![CDATA[Instalación]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[instaladores]]></category>
		<category><![CDATA[programas]]></category>

		<guid isPermaLink="false">http://www.petralinkfactory.com/?p=9</guid>
		<description><![CDATA[Este artÃ­culo trata sobre algunos de los distintos programas para realizar los instaladores de nuestros programas. EstÃ¡ centrado en los instaladores de Windows. <a href="http://www.petralinkfactory.com/2009/02/27/instaladores/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Una parte muy importante de nuestros programas de escritorio, y a los que muy poca gente le hecha cuenta es el instalador que vamos a utilizar. La importancia del instalador en nuestros programas en muy grande, puesto que no sirve de nada tener el mejor programa del mundo si luego la instalación es muy complicada. Podéis ver la importancia de ésto en Linux, las distribuciones con más aceptación por la gente que no entiende de programación son Ubunto (y derivados) y SuSe (y derivados) puesto que son las que han realizado mayor esfuerzo en hacer programas que faciliten la instalación de las fuentes sin la necesidad de paquetes dependencias, &#8230;, cosa que ha hecho que las demás distribuciones de Linux trabajen en este camino, facilitar la distribución de los programas.</p>
<p>En este artículo vamos a ver instaladores para Windows, puesto que por ahora no he programdo para otra plataforma, todavÃ­a nadie me ha pedido software para Linux y para Mac, que también tienen sus instaladores.</p>
<h2>NSIS (Nullsoft Scriptable Install System) [1]</h2>
<p>Este instalador, tal y como dice su nombre, fue creado por la empresa Nullsoft (la misma que creó el WinAmp). Para realizar el instalador hay que hacer un pequeño script. La sintaxis no es muy complicada. Este es el que yo siempre utilizo, pero en vez de saberme la sintaxis del script utilizo un editor para dicho script que tiene un wizard muy sencillo de utilizar. El programa es HM NIS EDIT [2].</p>
<p>Además de editor, cuando se quiere hacer algo más de lo que te permite hacer el Wizard (como comprobar si tienes instalada la versión de Framework.NET que tu aplicación necesita) puedes buscar código para realizar esto en el Wiki que encuentras en la web de NSIS.</p>
<p>Una de las ventajas más importantes de este instalador es que se puede ejecutar en modo comandos, con lo que es muy útil para hacer instaladores On-The-Fly desde una web, tal y como se hace en la web de Beon para la Beon Factory (al menos cuando trabaja yo allí lo hacíamos así, que se lo curró JuanMa).</p>
<p>Las imágnes del instalador también se pueden cambiar, para personalizar el instalador, el problema es que el instalador aumenta su tamaño consideramente.</p>
<p>Otra opción que nos permite dicho insalador, es que nos permite tener varios idiomas del instalador.</p>
<h2>Microsoft Windows Installer [3]</h2>
<p>Este es el instalador de microsoft. Aquellos que programéis sobre VisualStudio, cuando se crea un paquete de instalación desde el VisualStudio estáis utilizando este fabuloso instalador.</p>
<p>Yo no he realizado muchos instaladores con este instalador, solo para hacer pruebas y aprender cómo se utiliza el empaquetador del VisualStudio.</p>
<h2>InstallShield [4]</h2>
<p>Qué decir de éste magnífico instalador. Posiblemente uno de los más utilizados por los grandes fabricantes de software, debido a la gran cantidad de opciones que posee. Yo lo usé en los tiempos que trabajaba en Neoinnova S.L., puesto que los primeros Widget de Beon S.L. Una de las mejores cosas que tiene este instalador es la posibilidad de hacer instaladores parametrizando por scripts, lo que nos permitía poder tener programas muy similares y hacer los instaladores en cuestión de segundos. La mayor pega que tiene este instalador es que es de pago y ocupa mucho espacio en disco, pero es completamente visual.</p>
<h2>GkWare [5]</h2>
<p>Este instalador lo he conocido haciendo preparando este post. No lo he podido probar a fondo, pero por lo que he visto, te permite hacer entradas en el registro y ejecutar programas después de la instalación o antes de la desinstalación, muy útiles cuando tu aplicación tienen algún tipo de servicio. La verdad es que no tiene mala pinta, lo único malo que le veo es que es un instalador de esos que se ejecutan en una ventana a tamaño maximizado con el fondo azul, muy retro, como los instaladores de Windows 3.1 ó Windows 95/98.</p>
<h2>Conclusión:</h2>
<p>Desde mi punto de vista el mejor, es el NSIS, con la ayuda del  HM NIS EDIT, y quizás es algo un poco rudo para gente que nunca haya realizado instaladores antes. Para aprender está muy bien bajarse la trial del InstallShield, puesto que con él se va a prendiendo las cosas que van haciendo falta para un programa, como son la licencia, los iconos, &#8230; La lastima es su precio ($<span class="content1">654.88 la versión express), lo que te obliga a vender mucho para sacar rendimientos. Desde mi punto de vista, lo más importante del NSIS es la gran cantidad de scrips que podéis encontrar en el Wiki, la verdad es que se puden hacer muchas cosas con este instalador, lo único es que casi que hay que aprender otro lenguaje más de programación.<br />
</span></p>
<p><span class="content1">Hay muchos más instaladores en el mercado, pero yo solo he hablado de los que conozco un poquito, con esto si no te gustan ninguno ponte a investigar del tema.<br />
</span></p>
<h3>Enlaces:</h3>
<p>[1] http://nsis.sourceforge.net</p>
<p>[2] http://hmne.sourceforge.net/</p>
<p>[3] http://www.microsoft.com/downloads/details.aspx?displaylang=es&amp;FamilyID=889482fc-5f56-4a38-b838-de776fd4138c</p>
<p>[4] http://www.acresso.com/products/is/installshield-overview.htm</p>
<p>[5] http://www.gkware.com/gksetup/index.htm</p>
]]></content:encoded>
			<wfw:commentRss>http://www.petralinkfactory.com/2009/02/27/instaladores/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Crear un tema para Moodle (y II)</title>
		<link>http://www.petralinkfactory.com/2009/02/08/crear-un-tema-para-moodle-y-ii/</link>
		<comments>http://www.petralinkfactory.com/2009/02/08/crear-un-tema-para-moodle-y-ii/#comments</comments>
		<pubDate>Sun, 08 Feb 2009 17:02:58 +0000</pubDate>
		<dc:creator>Valde</dc:creator>
				<category><![CDATA[Diseño]]></category>
		<category><![CDATA[LCMS]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programación]]></category>

		<guid isPermaLink="false">http://www.petralinkfactory.com/?p=41</guid>
		<description><![CDATA[Bueno una vez que ya en la anterior entreta vimos los principales ficheros del tema, en este tema nos ponemos manos a la obra. Hay que decir que hay que tener cierta destreza con los CSS, para aquellos que no &#8230; <a href="http://www.petralinkfactory.com/2009/02/08/crear-un-tema-para-moodle-y-ii/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Bueno una vez que ya en la <a title="Anterior entrega" href="http://www.petralinkfactory.com/2009/02/01/crear-un-tema-para-moodle-i/" target="_blank">anterior entreta</a> vimos los principales ficheros del tema, en este tema nos ponemos manos a la obra.</p>
<p>Hay que decir que hay que tener cierta destreza con los CSS, para aquellos que no sepan CSS les recomiendo <a href="http://www.librosweb.es/css/index.html">este manual de CSS</a> [1].</p>
<p>Básicamente, para empezar a manipular los ficheros header.html y footer.html para que vaya quedando el sitio web tal y como queremos, además deberemos y manipulando los estilos (<em>styles_layout.css</em>, <em>styles_color.css</em> y <em>styles_fonts.css</em>). Aquellos que tengan más experiencia con los CSS además deberán tocar los ficheros que tienen estilos especí­ficos para Internet Explorer y Mozilla (si no los modificáis, eliminad dichos ficheros, que sino es posible que lo que estéis programando no se vea luego reflejado).</p>
<p>Si desear poner la imágnes de las carpetas, expandir o recoger de forma personalizada, verás que hay una carpeta llamada pix. Deberás poner ahí­ todas las imágens personalizadas, para ello debes copiarte la carpeta pix del raíz de moodle (donde están las imágenes por defecto), cambiar las que quieras (con el mismo nombre) y luego ir al fichero <strong>config.php</strong> del tema y cambiar <em>$THEME-&gt;custompix = false</em> (ponerlo a <em>true</em>).</p>
<p>Bueno lo que queda es ir probando colores y mirando bien las cosas que vas modificando. Si tengo tiempo intentará hacer un pequeño esquema de los CSS, de manera que explique qué hay que cambiar para cada cosa, aunque la verdad está explicado en un inglés muy sencillo, y si no dominas inglés no creo que haya problemas en la traducción si utilizas Google Traductor.</p>
<h3>Enlaces:</h3>
<p>[1] Manual de CSS muy didáctico y con muchos ejemplos: http://www.librosweb.es/css/index.html. En esta web también puedes encontrar otros libros muy útiles de AJAX, XHTML, &#8230;</p>
<p>Referencia de funcines de Moodle: http://xref.moodle.org/nav.html?_functions/index.html</p>
]]></content:encoded>
			<wfw:commentRss>http://www.petralinkfactory.com/2009/02/08/crear-un-tema-para-moodle-y-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Crear un tema para Moodle (I)</title>
		<link>http://www.petralinkfactory.com/2009/02/01/crear-un-tema-para-moodle-i/</link>
		<comments>http://www.petralinkfactory.com/2009/02/01/crear-un-tema-para-moodle-i/#comments</comments>
		<pubDate>Sun, 01 Feb 2009 19:29:09 +0000</pubDate>
		<dc:creator>Valde</dc:creator>
				<category><![CDATA[Diseño]]></category>
		<category><![CDATA[LCMS]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[Moodle]]></category>
		<category><![CDATA[Temas]]></category>

		<guid isPermaLink="false">http://www.petralinkfactory.com/?p=34</guid>
		<description><![CDATA[Una vez que ya se ha instalado el LCMS Moodle lo que debemos hacer es crear un tema para personalizar el Moodle a nuestro sitio web. Hay que decir que en la Web de Moodle hay un directorio con muchos &#8230; <a href="http://www.petralinkfactory.com/2009/02/01/crear-un-tema-para-moodle-i/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Una vez que ya se ha instalado el LCMS Moodle lo que debemos hacer es crear un tema para personalizar el Moodle a nuestro sitio web.</p>
<p>Hay que decir que en la Web de Moodle hay un directorio con muchos temas que pueden ser modificados libremente [1]. En esta serie de artí­culos vamos a ver como hacer un tema utilizando como base otro ya existente. Para ello lo que debemos hacer duplicar el tema `<strong>standard</strong>` y ponerle el nombre que deseemos, en mi caso será `<strong>plf</strong>`. Utilizamos el tema standard puesto que nos aseguraremos que va a funcionar correctamente, puesto que tendrá todos los ficheros necesarios del tema.</p>
<p>Dentro de la carpeta nos encontramos una serie de archivos:</p>
<ul>
<li><em>config.php</em>: Fichero de configuración del tema.</li>
<li><em>docstyles.php</em>: Fichero encargado de cargar los CSS, este fichero también puede contener sintaxis CSS.</li>
<li><em>favicon.ico</em>: Icono que queremos que se vea en nuestro navegador. El que viene por defecto es el logotipo de Moodle. Si quieres crear un favicon a partir de una imagen te recomiendo que lo hagas desde Dynamic Drive [2].</li>
<li><em>footer.html</em>: Fichero que contiene la platilla html del pie del sitio web.</li>
<li><em>gradient.jpg</em>: Este fichero contiene el degradado del tema standar. En mi caso no lo voy a utilizar y lo borraré.</li>
<li><em>header.html</em>: Fichero que contiene la plantilla html de la cabecera del sitio web.</li>
<li><em>meta.php</em>: Fichero en el que se pueden insertar tags metas para al cabecera.</li>
<li><em>README.html</em>: Fichero de información del tema.</li>
<li><em>rtl.css</em>: Fichero para estilo cuando la dirección del texto es de derecha a izquierda.</li>
<li><em>screenshot.jpg</em>: Fichero con un pantallazo del tema (Este fichero se cambiará al final de terminar el tema).</li>
<li><em>styles.php</em>: Fichero de configuración de los estilos.</li>
<li><em>styles_color.css</em>: Fichero para poner los colores de los estilos.</li>
<li><em>styles_fonts.css</em>: Ficheros para poner las fuentes de los estilos.</li>
<li><em>styles_ie6.css</em>: Ficheros para las cosas especí­ficas de Internet Explorer 6.0.</li>
<li><em>styles_ie7.css</em>: Ficheros para las cosas especí­ficas de Internet Explorer 7.0.</li>
<li><em>styles_layout.css</em>: Fichero de definición de los estilos.</li>
<li><em>styles_moz.css</em>: Fichero para las cosas especí­ficas de Mozilla Fire Fox.</li>
</ul>
<h3>Manos a la obra</h3>
<p>Lo perimero que tenemos que hacer es cambiar el fichero <strong>README.html</strong>, para poner el nombre de nuestro tema y la información que nos apetezca.</p>
<p>Lo segundo que haremos será modificar el favicon.ico (si es que querremos).</p>
<p>Bueno, ahora entramos en el Moodle y cambiamos el tema, para ello una vez que entramos como administrador de Moodle y nos dirigimos a <strong>Apariencia -&gt; Temas -&gt; Selector de Temas</strong> y seleccionamos nuestro tema. Como solo hemos cambiado el fichero README.html (para ver su contenido en el selector de temas podremos ver el enlace información) y favicon.ico, con lo que la apariencia será la misma que la del tema standard. Lo seleccionamos y empezaremos a cambiar las cosas.</p>
<p>En el siguiente artí­culo veremos cómo ir modificando los demás ficheros.</p>
<h3>Enlaces.</h3>
<p>[1] Temas de Moodle: http://moodle.org/mod/data/view.php?id=6552</p>
<p>[2] Dynamic Drive favicon generator: http://tools.dynamicdrive.com/favicon/</p>
]]></content:encoded>
			<wfw:commentRss>http://www.petralinkfactory.com/2009/02/01/crear-un-tema-para-moodle-i/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>html2pdf</title>
		<link>http://www.petralinkfactory.com/2008/09/28/html2pdf/</link>
		<comments>http://www.petralinkfactory.com/2008/09/28/html2pdf/#comments</comments>
		<pubDate>Sun, 28 Sep 2008 19:14:42 +0000</pubDate>
		<dc:creator>Valde</dc:creator>
				<category><![CDATA[programación]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.petralinkfactory.com/blog/?p=19</guid>
		<description><![CDATA[De las librerÃ­as que se vieron en el anterior post, esta librerÃ­a es la que me parece mÃ¡s fÃ¡cil de utilizar. Lo primero que tenmos que hacer es descargarnos el fichero dese la web de la librerÃ­a [1]. El sitio &#8230; <a href="http://www.petralinkfactory.com/2008/09/28/html2pdf/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>De las librerÃ­as que se vieron en el anterior <a title="PDF en php" href="http://www.petralinkfactory.com/2008/09/08/pdf-en-php/" target="_blank">post</a>, esta librerÃ­a es la que me parece mÃ¡s fÃ¡cil de utilizar.</p>
<p>Lo primero que tenmos que hacer es descargarnos el fichero dese la web de la librerÃ­a [1]. El sitio estÃ¡ en FrancÃ©s, por lo que voy a poner el enlace directo de la descarga de la versiÃ³n actual a dÃ­a de hoy es la 3.13 [2].</p>
<p>Una vez que ya estÃ¡ descargado descomprimimos el contenido en un directorio.<a href="http://www.petralinkfactory.com/wp-content/uploads/2009/01/carpetas.jpg"><img class="aligncenter size-medium wp-image-26" title="Contenido de Zip" src="http://www.petralinkfactory.com/wp-content/uploads/2009/01/carpetas-300x240.jpg" alt="" width="300" height="240" /></a></p>
<p style="text-align: center;">
<p style="text-align: left;">Nos encontramos con 4 directorios y 6 archivos, de aquÃ­ solo nos quedaremos con 3 directorios (<strong>_fpdf</strong>, <strong>_mypdf </strong>y <strong>languages</strong>) y con 3 ficheros (<strong>html2pdf.class.php</strong>, <strong>parsingHTML.class.php</strong> y <strong>styleHTML.class.php</strong>). Yo te recomiendo que guardes todo esto en un directorio dentro del directorio donde guardes los includes en tus proyectos, en mi caso es <strong>includes</strong>.</p>
<p style="text-align: left;">En este artÃ­culo voy a enseÃ±ar 3 ejemplos que son bastante censillos.</p>
<h3 style="text-align: left;">Ejemplo 1:</h3>
<p>Este ejemplo es muy sencillo, no es mÃ¡s que poner un texto y generar un PDF con dicho texto.</p>
<p>Lo primero que vamos a ver en este ejemplo son los tags especiales. Hay 3:</p>
<ul>
<li>page: con este tag delimitamos el contenido de una pÃ¡gina. En este indicamos el tipo de documento y los margenes left y top, el bottom y right no se pueden poner.
<pre>&lt;page backtop="10mm" backbottom="10mm" backleft="10mm"&gt; ... &lt;/page&gt;</pre>
<p>El contenido que hay dentro de este tag es lo que se muestra en la pÃ¡gina del PDF.<br />
Cuando insertes el cÃ³digo HTML recuerda que las propiedades las debes poner en el parametro style, como por ejemplo en una tabla, deberÃ­as poner &lt;table style=&#8221;width: 100%px; color: black;&#8221;&gt;</li>
<li>page_footer: Pie de pÃ¡gina. Esta etiquieta debe estar dentro de la etiqueta page y su contenido puede ser un html.</li>
<li>page_header: cabecera. Esta etiquieta debe estar dentro de la etiqueta page y su contenido puede ser un html.</li>
</ul>
<p><a href="http://www.petralinkfactory.com/ejemplos_html2pdf/ejemplo1.php" target="_blank">AquÃ­</a> puedes ver el fichero pdf generado en este primer ejemplo.</p>
<h3 style="text-align: left;">Ejemplo 2:</h3>
<p>En este caso el contenido de lo que vamos a mostrar lo vamos a recoger de una plantilla y sustituimos datos de dicha plantilla desde el cÃ³digo.</p>
<p><a href="http://www.petralinkfactory.com/ejemplos_html2pdf/ejemplo2.php" target="_blank">AquÃ­</a> puedes ver el fichero pdf generado en este primer ejemplo.</p>
<h3 style="text-align: left;">Ejemplo 3:</h3>
<p>En este Ãºltimo ejemplo lo que vamos a ver los distintos cÃ³digos de barras que puede sacar la librerÃ­a html2pdf.</p>
<p><a href="http://www.petralinkfactory.com/ejemplos_html2pdf/ejemplo3.php" target="_blank">AquÃ­</a> puedes ver el fichero pdf generado en este primer ejemplo.</p>
<h3>Documentos del artÃ­culo.</h3>
<p>Desde <a title="Descarga los ficheros" href="http://www.petralinkfactory.com/ejemplos_html2pdf.rar">aquÃ­</a> te puedes descargar todos los ficheros del artÃ­culo.</p>
<h3>Enlaces:</h3>
<p>[1] <a href="http://html2pdf.spipu.net/">http://html2pdf.spipu.net/</a></p>
<p>[2] http://prgm.spipu.net/?id=29&amp;download</p>
]]></content:encoded>
			<wfw:commentRss>http://www.petralinkfactory.com/2008/09/28/html2pdf/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>URL Amigables (y III) (ASP)</title>
		<link>http://www.petralinkfactory.com/2008/08/24/url-amigables-y-iii-asp/</link>
		<comments>http://www.petralinkfactory.com/2008/08/24/url-amigables-y-iii-asp/#comments</comments>
		<pubDate>Sun, 24 Aug 2008 10:05:33 +0000</pubDate>
		<dc:creator>Valde</dc:creator>
				<category><![CDATA[programación]]></category>
		<category><![CDATA[asp]]></category>
		<category><![CDATA[url limpias]]></category>

		<guid isPermaLink="false">http://www.petralinkfactory.com/?p=8</guid>
		<description><![CDATA[Bueno, lo del retraso va a ser lo usual en mi por lo que parece, pero entre que he estado muy liado con un proyecto grande y que en medio he estado de vacaciones he tardado un poco en escribir &#8230; <a href="http://www.petralinkfactory.com/2008/08/24/url-amigables-y-iii-asp/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Bueno, lo del retraso va a ser lo usual en mi por lo que parece, pero entre que he estado muy liado con un proyecto grande y que en medio he estado de vacaciones he tardado un poco en escribir esta entrada.</p>
<p>En esta entrada, que en principio serÃ¡ la Ãºltima de las URL Amigables, vamos a ver cÃ³mo implementarlas en ASP 3.0 sobre IIS, como mi hosting es PHP no puedo poner ningÃºn ejemplo on-line, pero si pondrÃ© un ejemplo comprimido en formato zip para que lo podÃ¡is probar en vuestro IIS.</p>
<p>Al igual que en php lo que vamos a utilizar para simuar el mÃ³dulo ReWrite de Apache es usar la pÃ¡gina de error 404. Para ello lo que hay que hacer es crear el sitio web en el IIS. Luego editamos el sitio web, para ello pulsamos con el botÃ³n derecho sobre el sitio web y accedemos a las propiedades del sitio web. Una vez que estamos en las propiedades del sitio web, pincha sobre la carpeta de errores personalizados. AllÃ­ deberÃ¡s de cambiar todos los errores que se generan con el error 404, generalmente hay 3 (al menos en el IIS6 de Windows 2003, que es yo utilizo). La url que debes poner es /controllers/controller.asp (para mi ejemplo, en otro caso deberÃ¡s poner el fichero que desees). Como puedes ver es lo mismo que hice en PHP.</p>
<p>Ahora ya solo nos queda procesar la URL y dirigirnos al mÃ³dulo necesario.</p>
<div class="igBar"><span id="lasp-2"><a href="#" onclick="javascript:showPlainTxt('asp-2'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">ASP:</span>
<div id="asp-2">
<div class="asp">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#0000FF; font-weight:bold;">&lt;%</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">'&nbsp; Vamos a averiguar el controlador que se nos ha pedido.</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">strController = <span style="color:#990099; font-weight:bold;">replace</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#990099; font-weight:bold;">Request</span>.<span style="color:#330066;">QueryString</span>, <span style="color:#CC0000;">"404;http://localhost/urlamigables:80/"</span>, <span style="color:#CC0000;">""</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">aControl = <span style="color:#990099; font-weight:bold;">split</span><span style="color:#006600; font-weight:bold;">&#40;</span>strController, <span style="color:#CC0000;">"/"</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">Control = <span style="color:#CC0000;">""</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">Param = <span style="color:#CC0000;">""</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#990099; font-weight:bold;">If</span> <span style="color:#990099; font-weight:bold;">IsArray</span><span style="color:#006600; font-weight:bold;">&#40;</span>aControl<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#0000FF; font-weight:bold;">And</span> <span style="color:#990099; font-weight:bold;">UBound</span><span style="color:#006600; font-weight:bold;">&#40;</span>aControl<span style="color:#006600; font-weight:bold;">&#41;</span>&amp;gt; <span style="color:#800000;color:#800000;">0</span> <span style="color:#990099; font-weight:bold;">Then</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">Control = aControl<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#800000;color:#800000;">0</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#990099; font-weight:bold;">Session</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"ParamController"</span><span style="color:#006600; font-weight:bold;">&#41;</span> = <span style="color:#990099; font-weight:bold;">Replace</span><span style="color:#006600; font-weight:bold;">&#40;</span>strController, aControl<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#800000;color:#800000;">0</span><span style="color:#006600; font-weight:bold;">&#41;</span> &amp;amp; <span style="color:#CC0000;">"/"</span>, <span style="color:#CC0000;">""</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#990099; font-weight:bold;">Else</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">'&nbsp; No es array, con lo que no hay ninguna barra y el strController es el control.</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">Control = strController</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#990099; font-weight:bold;">Session</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"ParamController"</span><span style="color:#006600; font-weight:bold;">&#41;</span> = <span style="color:#CC0000;">""</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#990099; font-weight:bold;">End</span> <span style="color:#990099; font-weight:bold;">If</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#990099; font-weight:bold;">Select</span> <span style="color:#990099; font-weight:bold;">Case</span> <span style="color:#990099; font-weight:bold;">LCase</span><span style="color:#006600; font-weight:bold;">&#40;</span>Control<span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#990099; font-weight:bold;">Case</span> <span style="color:#CC0000;">"modulo1"</span> :</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#990099; font-weight:bold;">Server</span>.<span style="color:#330066;">Execute</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"modulo1.asp"</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#990099; font-weight:bold;">Case</span> <span style="color:#CC0000;">"modulo2"</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#990099; font-weight:bold;">Server</span>.<span style="color:#330066;">Execute</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"modulo2.asp"</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#990099; font-weight:bold;">Case</span> <span style="color:#990099; font-weight:bold;">Else</span> :</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#990099; font-weight:bold;">Server</span>.<span style="color:#330066;">Execute</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"404.asp"</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#990099; font-weight:bold;">End</span> <span style="color:#990099; font-weight:bold;">Select</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#0000FF; font-weight:bold;">%&gt;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>
puedes ver es lo mismo que hice en PHP</p>
<p>Bueno bÃ¡sicamente ya solo quedan los ficheros de los mÃ³dulos y el fichero de acciones, que no tienen mucho que ver, los podÃ©is ver en el zip con todos los ficheros necesarios.</p>
<p><a title="Descarga el ejemplo" href="http://www.petralinkfactory.com/docs/urlamigable-asp.zip">Fichero Zip</a> con un ejemplo de las url amigales.</p>
<p>Pues ya estÃ¡ acabada esta serie de 3 artÃ­culos sobre las URLs Amigables. Espero que mi prÃ³ximo artÃ­culo no se espacie mucho en el tiempo, pero es que estoy muy liado, hay veces que estoy muy ocioso, y otras veces me salen 3 trabajos a la vez, y no los puedo rechazar.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.petralinkfactory.com/2008/08/24/url-amigables-y-iii-asp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>URL Amigables (II)(php)</title>
		<link>http://www.petralinkfactory.com/2008/07/15/url-amigables-iiphp/</link>
		<comments>http://www.petralinkfactory.com/2008/07/15/url-amigables-iiphp/#comments</comments>
		<pubDate>Tue, 15 Jul 2008 10:46:10 +0000</pubDate>
		<dc:creator>Valde</dc:creator>
				<category><![CDATA[programación]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[seo url]]></category>
		<category><![CDATA[url amigables]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.petralinkfactory.com/?p=7</guid>
		<description><![CDATA[Bueno con mÃ¡s de dos meses de retardo, voy a seguir con esta serie de artÃ­culos que tienen que ver con las URLs Amigables (en inglÃ©s SEO URLs). La razÃ³n ha sido que he estado trabajando a destajo para un &#8230; <a href="http://www.petralinkfactory.com/2008/07/15/url-amigables-iiphp/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Bueno con mÃ¡s de dos meses de retardo, voy a seguir con esta serie de artÃ­culos que tienen que ver con las URLs Amigables (en inglÃ©s SEO URLs). La razÃ³n ha sido que he estado trabajando a destajo para un proyecto en el que estoy trabajando, en el que estoy aprendiendo mucho y ya irÃ© publicando las cosas que he ido aprendiendo.</p>
<p>Bueno vamos a lio con las URL Amigables.</p>
<p>Lo primero he de decir que dependiendo de si trabajamos en IIS o en Apache, en los ejemplos irÃ© mostrandolo.</p>
<p>En primer lugar decir que las pruebas las he desarrollado sobre Windows Vista Home Premium con el Servidor Web WampServer 2.0, aunque luego lo he probado en un Windows 2003 Server con IIS 6 y en Debian Linux con Apache 2.0 (en mi hosting de Powweb).</p>
<p>Si estamos en Apache lo primero que tenemos que hacer es crear un fichero <em><strong>.htaccess</strong></em> para poder redirigir las urls amigables a las pÃ¡ginas que corresponden, para ello recordamos que el artÃ­culo I se dice que vamos a utilizar esta pequeÃ±a chapuza.</p>
<p>En el fichero .htaccess escribiremos el siguiente texto.</p>
<pre><span style="color: #333333;">ErrorDocument 404 /urlAmigables/controllers/controller.php
</span></pre>
<p><span style="color: #000000;">Esta lÃ­nea que se introduce en el .htaccess significa que si genera el error 404 en el servidor (PÃ¡gina no encontrada) que se vaya a la url /urlAmigables/controllers/controller.php, Es en este fichero donde se va a hacer el procesado de la URL para luego ejecutar dentro las acciones pertinentes.</span></p>
<p>El llamar a esta pÃ¡gina controller.php tiene que ver puesto que esta idea se me ocurriÃ³ aprendiendo a utilizar las Frameworks de PHP, que para mi gusto estÃ¡n bien para hacer desarrollos pequeÃ±os, en desarrollos mÃ¡s grandes es mejor utilizar, desde mi punto de vista, herramientas propias.</p>
<p>En el fichero controller.php debemos introducir:</p>
<div class="igBar"><span id="lphp-4"><a href="#" onclick="javascript:showPlainTxt('php-4'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-4">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">&lt;?php</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$URLAmigable</span> = <a href="http://www.php.net/urldecode"><span style="color:#000066;">urldecode</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$_SERVER</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'REQUEST_URI'</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#FF9933; font-style:italic;">//&nbsp; Como en el apache tengo varios sitios en el sito web localhost, tengo que quitar de la url</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#FF9933; font-style:italic;">// el sitio web sobre el que estoy trabajando.</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#FF9933; font-style:italic;">//$URLAmigable = str_replace('/urlAmigables/', '', $URLAmigable);</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$URLAmigable</span> = <a href="http://www.php.net/substr"><span style="color:#000066;">substr</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$URLAmigable</span>, <span style="color:#CC66CC;color:#800000;">1</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#FF9933; font-style:italic;">//&nbsp; Procesamos la URL Amigable para poder procesar el fichero.</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$Params</span> = <a href="http://www.php.net/split"><span style="color:#000066;">split</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'/'</span>, <span style="color:#0000FF;">$URLAmigable</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$controller</span> = <span style="color:#FF0000;">''</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#616100;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span><a href="http://www.php.net/count"><span style="color:#000066;">Count</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$Params</span><span style="color:#006600; font-weight:bold;">&#41;</span>&gt; <span style="color:#CC66CC;color:#800000;">0</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$controller</span> = <span style="color:#0000FF;">$Params</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#CC66CC;color:#800000;">0</span><span style="color:#006600; font-weight:bold;">&#93;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#616100;">else</span> <span style="color:#616100;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$URLAmigable</span> != <span style="color:#FF0000;">''</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$controller</span> = <span style="color:#0000FF;">$URLAmigable</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$strParams</span> = <a href="http://www.php.net/str_replace"><span style="color:#000066;">str_replace</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$controller</span> . <span style="color:#FF0000;">'/'</span>, <span style="color:#FF0000;">''</span>, <span style="color:#0000FF;">$URLAmigable</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#616100;">switch</span><span style="color:#006600; font-weight:bold;">&#40;</span><a href="http://www.php.net/strtolower"><span style="color:#000066;">strtolower</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$controller</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">case</span> <span style="color:#FF0000;">"modulo"</span> :</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">case</span> <span style="color:#FF0000;">"mÃ³dulo"</span> :</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">include</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'modulo.php'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">break</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#000000; font-weight:bold;">default</span>:</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/header"><span style="color:#000066;">header</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">''</span>, <span style="color:#000000; font-weight:bold;">true</span>, <span style="color:#CC66CC;color:#800000;">404</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">include</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'error404.php'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">break</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">?&gt;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>En el IIS en vez de poner el fichero .htaccess, hay que cambiar la url del error 404, si tienes acceso al IIS de tu servidor, deberÃ¡s acceder a Ã©l y luego en el sitio web cambiar las direcciones de error del 404 (por defecto vienen 3) y ponerlas a este fichero. Sino tienes acceso al IIS, seguro que tu servicio de hosting tiene en algÃºn lugar algÃºn sitio donde poder cambiar dicho fichero.</p>
<p>Pues ya estÃ¡ solo hace falta hacer el fichero de error para cuando se introducen direcciones que no son vÃ¡lidas (error404.php) y los ficheros de nuestras herramientas, en el ejemplo es modulo.php, que responde a las url amigables modulo1 y modulo2.</p>
<p>Puedes ver un ejemplo de esta forma de trabajar en <a href="http://urlamigables.petralinkfactory.com">http://urlamigables.petralinkfactory.com</a></p>
<p>Y te puedes descargar el ejemplo desde: <a href="http://urlamigables.petralinkfactory.com/urlamigables.zip">http://urlamigables.petralinkfactory.com/urlamigables.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.petralinkfactory.com/2008/07/15/url-amigables-iiphp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>URLs Amigables (I)</title>
		<link>http://www.petralinkfactory.com/2008/04/27/urls-amigables-i/</link>
		<comments>http://www.petralinkfactory.com/2008/04/27/urls-amigables-i/#comments</comments>
		<pubDate>Sun, 27 Apr 2008 07:33:13 +0000</pubDate>
		<dc:creator>Valde</dc:creator>
				<category><![CDATA[programación]]></category>
		<category><![CDATA[truco]]></category>
		<category><![CDATA[url limpias]]></category>

		<guid isPermaLink="false">http://www.petralinkfactory.com/?p=5</guid>
		<description><![CDATA[En la actualidad el uso de URLs Amigables (o en inglÃ©s SEO URLs) se estÃ¡ expandiendo mucho puesto que Google te indexa mejor en las bÃºsquedas. En este post voy a explicar cÃ³mo hacer lo de las URLs amigables sin &#8230; <a href="http://www.petralinkfactory.com/2008/04/27/urls-amigables-i/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>En la actualidad el uso de <strong>URLs Amigables </strong><em>(o en inglÃ©s SEO URLs)</em> se estÃ¡ expandiendo mucho puesto que Google te indexa mejor en las bÃºsquedas.</p>
<p>En este post voy a explicar cÃ³mo hacer lo de las URLs amigables sin utilizar el mÃ³dulo de <em>Apache Rewrite</em> y sin necesidad de ningÃºn componente (para IIS).</p>
<p>Para empezar lo primero que tenemos que ver quÃ© son las URLs amigables. Estas URLs son las direcciones pero sin parÃ¡metros. Por ejemplo este post tiene una direcciÃ³n que es http://www.petralinkfactory.com/2008/04/27/url-amigables-i. Una URL "no amigable" serÃ­a http://www.petralinkfactory.com/?post=1234 (no creo que esta direcciÃ³n funcione puesto que la he puesto de ejemplo).</p>
<p>El truco que voy a explicar es para programar nuestras propias pÃ¡ginas webs, para WordPress el propio sistema nos permite seleccionar las URLs amigables en las configuraciones de los post.</p>
<p>Ya que no tenemos el mÃ³dulo Rewrite disponible, bien por que estamos en un hosting compartido (que ya es raro que ocurra) o bien puesto que nuestro hosting es Windows sobre IIS, el truco es usar una pequeÃ±a zapuza, el <strong>error 404</strong>.</p>
<p>Entonces el fichero de error 404 va a ser el encargado de recoger la url y hacer las acciones pertinentes para ejecutar la pÃ¡gina que corresponda.</p>
<p>Esta tÃ©cnica de usar el error 404 no es recomendable para gente que ya tenga programado un sitio web entero, puesto que tendrÃ©is que cambiar todas las pÃ¡ginas webs que querrÃ¡is que tengan URL limpias, para adaptarlas a la forma de trabajar de las URL amigables.</p>
<p>Para la programaciÃ³n de las pÃ¡ginas pÃºblicas yo lo que hago es analizar la url de manera que a cada mÃ³dulo de la web (agenda, noticias, secciones de texto, ...) le asigno un "controlador", que no es mÃ¡s que el nombre del mÃ³dulo, para luego seguir con los "parÃ¡metros" que van a ser necesario para dicho mÃ³dulo.</p>
<p>En el siguiente capÃ­tulo empezarÃ© a poner ejemplos de cÃ³digo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.petralinkfactory.com/2008/04/27/urls-amigables-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

