<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Digital Learning - Formación online en Nuevas Tecnologías</title>
	
	<link>http://www.digitallearning.es</link>
	<description>Formación online en Nuevas Tecnologías</description>
	<lastBuildDate>Mon, 14 May 2012 14:14:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/dlformacion" /><feedburner:info uri="dlformacion" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>dlformacion</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Matrículas con precio reducido</title>
		<link>http://feedproxy.google.com/~r/dlformacion/~3/V4Htv3Pqo68/</link>
		<comments>http://www.digitallearning.es/blog/matriculas-con-precio-reducido/#comments</comments>
		<pubDate>Wed, 02 May 2012 07:40:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Novedades]]></category>

		<guid isPermaLink="false">http://www.digitallearning.es/?p=5689</guid>
		<description><![CDATA[Hemos ampliado y simplificado el acceso a los descuentos especiales que hasta ahora ofrecíamos a distintos colectivos como estudiantes y desempleados. Desde que los pusimos en marcha, hemos visto que son muy variadas las situaciones que justifican la solicitud de estas ayudas y más en el contexto económico actual. A partir del 1 de mayo, [...]]]></description>
			<content:encoded><![CDATA[<p>Hemos <strong>ampliado</strong> y<strong> simplificado</strong> el acceso a los <a title="Matrículas con descuento" href="http://www.digitallearning.es/blog/becas-descuentos/">descuentos especiales</a> que hasta ahora ofrecíamos a distintos colectivos como estudiantes y desempleados. Desde que los pusimos en marcha, hemos visto que son muy variadas las situaciones que justifican la solicitud de estas ayudas y más en el contexto económico actual.</p>
<p>A partir del 1 de mayo, lo<strong>s precios de matrícula </strong>que se muestran en las fichas de información de los cursos ya lleván ese <strong>descuento aplicado</strong> y <strong>son válidos para cualquier persona </strong>(incluyendo trabajadores que se inscriban a título particular). Ya no es necesario solicitar un código descuento, ni enviarnos documentación justificativa. Al cumplimentar el formulario de inscripción para matricularse en un curso, les aparecerá directamente el precio reducido.</p>
<p>En línea con esta iniciativa y contando con la implicación de los autores/tutores con los que colaboramos, podéis ver que hemos aplicado <strong>descuentos adicionales</strong> en varios de nuestros cursos.</p>
<p>También hemos reducido algunos precios en la <a title="Formación Bonificada para empresas" href="http://www.digitallearning.es/blog/cursos-bonificados-empresas/" target="_blank">formación bonificada para empresas</a>, para mantener una oferta que creemos muy competitva y ajustada a las necesidades actuales de las compañías españolas.</p>
<p>Con estos cambios, esperamos haber respondido a las cuestiones que nos han hecho llegar muchos  interesados en la formación que impartimos.</p>
<img src="http://feeds.feedburner.com/~r/dlformacion/~4/V4Htv3Pqo68" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.digitallearning.es/blog/matriculas-con-precio-reducido/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.digitallearning.es/blog/matriculas-con-precio-reducido/</feedburner:origLink></item>
		<item>
		<title>Curso de Android: Instalación del entorno de desarrollo y SDK</title>
		<link>http://feedproxy.google.com/~r/dlformacion/~3/L5CSa8p5fuM/</link>
		<comments>http://www.digitallearning.es/blog/curso-android-instalacion-entorno-desarrollo-y-sdk/#comments</comments>
		<pubDate>Wed, 25 Apr 2012 07:42:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Cursos]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[android]]></category>

		<guid isPermaLink="false">http://www.digitallearning.es/?p=5511</guid>
		<description><![CDATA[Algunas de las primeras preguntas que se plantea cualquier persona que quiere iniciarse en la programación de aplicaciones para Android son: ¿qué programas necesito instalarme para empezar con esto?, y ¿será muy complicada la instalación y configuración? En nuestro recién lanzado Curso de Desarrollo de Aplicaciones para Android explicamos estos primeros pasos de forma sencilla, [...]]]></description>
			<content:encoded><![CDATA[<p>Algunas de las primeras preguntas que se plantea cualquier persona que quiere iniciarse en la programación de aplicaciones para Android son: ¿qué programas necesito instalarme para empezar con esto?, y ¿será muy complicada la instalación y configuración?</p>
<p>En nuestro recién lanzado <a href="http://www.digitallearning.es/curso-android-desarrollo-aplicaciones.html">Curso de Desarrollo de Aplicaciones para Android</a> explicamos estos primeros pasos de forma sencilla, de manera que nuestros alumnos pueden instalarse sin problemas y en pocos minutos el entorno de desarrollo y el SDK de Android, elementos imprescindibles para comenzar su trabajo. En este post vamos a explicar cómo realizar esta instalación fácilmente. Si tenéis algún problema, por favor usad los comentarios y os echaremos una mano. Igualmente, si algo falla, por favor comunicádnoslo:</p>
<h3 id="toc2">Descarga e instalación de Eclipse</h3>
<p>Para empezar a desarrollar con el SDK de Android, es necesario descargar un entorno de desarrollo. Se pueden usar varios, como puede ser Netbeans, Java-Eclipse SDK (en adelante Eclipse ), IntelliJ IDEA, etc&#8230; En este curso aprenderemos a configurar Eclipse, ya que es el más utilizado para desarrollar en Android.</p>
<p>Deberemos dirigirnos a <a href="http://www.eclipse.org/downloads/">http://www.eclipse.org/downloads/</a> y descargar una versión de Eclipse. Aconsejamos la versión <strong>Eclipse Classic</strong>, aunque la RCP o la Java también pueden servir.</p>
<div id="Marco20frame" class="frameFrame" style="width: 410.11655px;">
<div style="text-align: left; margin-left: 0.004cm;">
<div id="attachment_5519" class="wp-caption alignnone" style="width: 610px"><a href="http://www.digitallearning.es/wp-content/uploads/2012/04/Tema2-android-img1.png"><img class="wp-image-5519 " title="Tema2-android-img1" src="http://www.digitallearning.es/wp-content/uploads/2012/04/Tema2-android-img1.png" alt="" width="600" height="450" /></a><p class="wp-caption-text">Ilustración 1: Página principal de descargas de Eclipse, desde aquí podemos descargar Eclipse Classic en su versión 3.7.1 o posterior para Windows, Mac o Linux.</p></div>
</div>
</div>
<p class="Marginalia">Será necesario descargarnos previamente el JDK (<a href="http://java.sun.com/javase/downloads/index.jsp">http://java.sun.com/javase/downloads/index.jsp</a>) si no lo tuviéramos ya instalado.</p>
<p>Una vez descargado e instalado el Eclipse, lo ejecutamos y mostrará una ventana parecida a la siguiente:</p>
<div id="Marco1frame" class="frameFrame" style="width: 526.71497px;">
<div style="text-align: left; margin-left: 0.004cm;">
<div id="attachment_5520" class="wp-caption alignnone" style="width: 610px"><a href="http://www.digitallearning.es/wp-content/uploads/2012/04/Tema2-android-img2.png"><img class="size-full wp-image-5520 " title="Tema2-android-img2" src="http://www.digitallearning.es/wp-content/uploads/2012/04/Tema2-android-img2.png" alt="" width="600" height="450" /></a><p class="wp-caption-text">Ilustración 2: Ventana principal de Eclipse</p></div>
</div>
</div>
<h3 id="toc3">Instalación de las ADT y del SDK</h3>
<p>En versiones anteriores, era necesario descargarnos antes el SDK e instalarlo por nuestra cuenta y luego configurar el ADT para que apunte al lugar donde lo habíamos instalado. Ahora este proceso es mucho más sencillo con las últimas actualizaciones de las ADT. Veamos cómo se hace ahora:</p>
<ul>
<li>Con el Eclipse abierto, nos vamos al menú <em>Help</em> → <em>Install New Software&#8230;</em></li>
</ul>
<div id="Marco2frame" class="frameFrame" style="width: 538.0536px;">
<div style="text-align: left; margin-left: 0.004cm;">
<div id="attachment_5521" class="wp-caption alignnone" style="width: 610px"><a href="http://www.digitallearning.es/wp-content/uploads/2012/04/Tema2-android-img3.png"><img class="size-full wp-image-5521 " title="Tema2-android-img3" src="http://www.digitallearning.es/wp-content/uploads/2012/04/Tema2-android-img3.png" alt="" width="600" height="450" /></a><p class="wp-caption-text">Ilustración 3: Instalación de ADT (I)</p></div>
</div>
</div>
<p>&nbsp;</p>
<ul>
<li>Pulsamos <em>Add&#8230;</em> y agregamos las fuentes de Android: en <em>Name</em> lo que queramos (Android, por ejemplo) y en <em>Location</em> ponemos <em>https://dl-ssl.google.com/android/eclipse/</em> y pulsamos <em>OK</em>.</li>
</ul>
<div id="Marco3frame" class="frameFrame" style="width: 544.25195px;">
<div id="attachment_5522" class="wp-caption alignnone" style="width: 610px"><a href="http://www.digitallearning.es/wp-content/uploads/2012/04/Tema2-android-img4.png"><img class="wp-image-5522 " title="Tema2-android-img4" src="http://www.digitallearning.es/wp-content/uploads/2012/04/Tema2-android-img4.png" alt="" width="600" height="450" /></a><p class="wp-caption-text">Ilustración 4: Instalación ADT (II)</p></div>
<p class="Illustration">
</div>
<p class="Marginalia">Si tienes problemas para obtener el plugin, prueba usando http en lugar de https.</p>
<ul>
<li>En el diálogo de <em>Available Software</em>, marcamos la casilla al lado de <em>Developer Tools</em> y pulsamos <em>Next</em>.</li>
</ul>
<div id="Marco4frame" class="frameFrame" style="width: 615.6095px;">
<div style="text-align: left; margin-left: 0.004cm;">
<div id="attachment_5523" class="wp-caption alignright" style="width: 610px"><a href="http://www.digitallearning.es/wp-content/uploads/2012/04/Tema2-android-img5.png"><img class="size-full wp-image-5523" title="Tema2-android-img5" src="http://www.digitallearning.es/wp-content/uploads/2012/04/Tema2-android-img5.png" alt="" width="600" height="450" /></a><p class="wp-caption-text">Ilustración 5: Instalación ADT (III)</p></div>
</div>
<p class="Illustration">
</div>
<ul>
<li>Pulsamos de nuevo <em>Next</em> para aceptar las herramientas que se van a instalar y por último <em>Finish</em> para aceptar los acuerdos de licencia.</li>
<li>Una vez instalado todo, reiniciaremos Eclipse.</li>
</ul>
<p>Al abrir Eclipse de nuevo después de haber instalado las herramientas de desarrollo, nos aparecerá una ventana como la siguiente:</p>
<div id="Marco5frame" class="frameFrame" style="width: 431.73544px;">
<div style="text-align: left; margin-left: 0.004cm;">
<div id="attachment_5524" class="wp-caption alignnone" style="width: 660px"><a href="http://www.digitallearning.es/wp-content/uploads/2012/04/Tema2-android-img6.png"><img class="wp-image-5524 " title="Tema2-android-img6" src="http://www.digitallearning.es/wp-content/uploads/2012/04/Tema2-android-img6.png" alt="" width="650" height="480" /></a><p class="wp-caption-text">Ilustración 6: Instalación SDK (I)</p></div>
</div>
<p class="Illustration">
</div>
<p>En ella podemos marcar dos opciones,</p>
<ol>
<li>Instalar la última versión del SDK de Android,</li>
<li>Instalar la versión 2.1, la cual es soportada por el 97% de los terminales Android a fecha de noviembre de 2011.</li>
</ol>
<div id="Marco6frame" class="frameFrame" style="width: 533.5181px;">
<div style="text-align: left; margin-left: 0.168cm;">
<div id="attachment_5525" class="wp-caption alignnone" style="width: 610px"><a href="http://www.digitallearning.es/wp-content/uploads/2012/04/Tema2-android-img7.png"><img class="size-full wp-image-5525 " title="Tema2-android-img7" src="http://www.digitallearning.es/wp-content/uploads/2012/04/Tema2-android-img7.png" alt="" width="600" height="450" /></a><p class="wp-caption-text">Ilustración 7: Instalación SDK (II)</p></div>
</div>
<p class="Illustration">
</div>
<ol>
<li style="list-style-type: none;">Es indiferente la opción que marquemos ya que luego podremos instalar más versiones. En este caso se ha optado por marcar la opción de instalar la última versión del SDK. En este momento se empezará a descargar e instalar el último SDK de Android. Una vez haya terminado el proceso, pasamos a configurarlo.</li>
</ol>
<h3 id="toc4">Configuración del SDK</h3>
<p>Una vez realizado el proceso descrito en el apartado anterior, Eclipse permite acceder a <strong>Android SDK Manager</strong> ( entorno de instalación y descarga de paquetes (Packages) de herramientas, APIs, fuentes, ejemplos, etc.. ) mediante este entorno podremos configurar el SDK. El acceso a este interface se realiza pulsando en el siguiente icono de la siguiente Ilustración situado en la barra superior de herramientas de Eclipse:</p>
<div id="Marco22frame" class="frameFrame" style="width: 642.5197px;">
<div style="text-align: left; margin-left: 0.004cm;">
<div id="attachment_5526" class="wp-caption alignright" style="width: 610px"><a href="http://www.digitallearning.es/wp-content/uploads/2012/04/Tema2-android-img8.png"><img class="size-full wp-image-5526" title="Tema2-android-img8" src="http://www.digitallearning.es/wp-content/uploads/2012/04/Tema2-android-img8.png" alt="" width="600" height="28" /></a><p class="wp-caption-text">Ilustración 8: Botón de configuración del SDK</p></div>
</div>
</div>
<div id="Marco7frame" class="frameFrame" style="width: 642.5197px;">
<div style="text-align: left; margin-left: 0.004cm;">
<div id="attachment_5527" class="wp-caption alignnone" style="width: 610px"><a href="http://www.digitallearning.es/wp-content/uploads/2012/04/Tema2-android-img9.png"><img class="wp-image-5527 " title="Tema2-android-img9" src="http://www.digitallearning.es/wp-content/uploads/2012/04/Tema2-android-img9.png" alt="" width="600" height="450" /></a><p class="wp-caption-text">Ilustración 9: Configuración del SDK</p></div>
</div>
<p class="Illustration">
</div>
<p>En esta ventana seleccionamos aquellos componentes que queramos instalar. Recomendamos instalar al menos las APIs 8 y 10, ya que son las que mayor número de usuarios poseen, tal y como vimos en el gráfico de la primera unidad.</p>
<p class="Marginalia">La API 8 será la que utilizaremos a lo largo de este curso, por lo que como mínimo habrá que instalar ésta.</p>
<h3 id="toc5">Actualización del SDK y las Android Development Tools (ADT)</h3>
<p>Para actualizar el SDK lo haremos desde la misma ventana que la captura del apartado anterior. En ella aparecerán si tenemos componentes para actualizar o no.</p>
<p>Para actualizar las ADT:</p>
<ol>
<li>Nos dirigiremos a <em>Help</em> → <em>Check for Updates</em>. Si no hay actualizaciones, mostrará un mensaje diciéndolo y entonces habremos acabado.</li>
<li>Si hay, se mostrará una ventana en la que deberemos marcar las casillas que aparecen y pulsar <em>Next</em>.</li>
<li>En los detalles de la actualización pulsamos <em>Next</em>.</li>
<li>A continuación deberemos aceptar los acuerdos de licencia y pulsar <em>Finish</em>.</li>
<li>Finalmente reiniciaremos Eclipse.</li>
</ol>
<img src="http://feeds.feedburner.com/~r/dlformacion/~4/L5CSa8p5fuM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.digitallearning.es/blog/curso-android-instalacion-entorno-desarrollo-y-sdk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.digitallearning.es/blog/curso-android-instalacion-entorno-desarrollo-y-sdk/</feedburner:origLink></item>
		<item>
		<title>Curso Alojamiento de Sitios Web (Hosting), 2ª edición</title>
		<link>http://feedproxy.google.com/~r/dlformacion/~3/AWCALtTo9Y4/</link>
		<comments>http://www.digitallearning.es/blog/curso-alojamiento-web-hosting-cevug-2/#comments</comments>
		<pubDate>Mon, 16 Apr 2012 08:43:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Cursos]]></category>
		<category><![CDATA[Hosting]]></category>
		<category><![CDATA[alojamiento web]]></category>
		<category><![CDATA[hosting]]></category>

		<guid isPermaLink="false">http://www.digitallearning.es/?p=5436</guid>
		<description><![CDATA[Ya está abierto el plazo de matriculación para la 2ª edición del Curso de Alojamiento de Sitios Web (Hosting), que comenzará el próximo 7 de Mayo de 2012.  El curso se impartirá a través de la plataforma online del Centro de Enseñanzas Virtuales de la Universidad de Granada (CEVUG). La formación consta de 20 horas [...]]]></description>
			<content:encoded><![CDATA[<p>Ya está abierto el plazo de matriculación para la 2ª edición del <a href="http://cevug.ugr.es/resumen_curso.php?curso=F11128" rel="nofollow">Curso de Alojamiento de Sitios Web (Hosting)<strong></strong></a>, que comenzará el próximo 7 de Mayo de 2012.  El curso se impartirá a través de la plataforma online del <a title="Cevug-Digital Learning" href="http://cevug.ugr.es/empresas.php" rel="nofollow">Centro de Enseñanzas Virtuales de la Universidad de Granada (CEVUG)</a>. La formación consta de 20 horas virtuales y el objetivo principal es que los alumnos aprendan a publicar sus páginas web en internet, dar de alta un dominio y saber elegir el servicio de alojamiento (hosting) más adecuado según sus necesidades. Aquí podéis acceder a la <a title="Curso de Alojamiento Web CEVUG" href="http://www.digitallearning.es/alojamiento-web.html">ficha del curso</a>, donde podréis ver todos los objetivos, metodología y el temario detallado.</p>
<p>Como en la primera edición, el tutor del curso es <strong>Javier Navas Millán</strong>, Ingeniero Técnico Informático y Licenciado en Comunicación Audiovisual, que realiza labores de Webmaster y tutor de cursos online en Digital Learning.</p>
<p>La buena acogida y valoración por parte de los alumnos de la primera edición del curso que tuvo lugar el pasado mes de noviembre, y de la que ya hicimos <a title="buena valoracion de la edición tutorizada del curso de alojamiento de sitios web" href="http://www.digitallearning.es/blog/buena-valoracion-edicion-tutorizada-del-curso-de-alojamiento-de-sitios-web/">balance en este blog</a>, ha hecho que se haya programado esta segunda para este mismo año académico 2011-12.</p>
<p>Aunque el curso está abierto para todo el mundo, hemos de decir además que varias facultades y escuelas de la UGR conceden créditos de libre configuración, por lo que realizar el curso puede ser para muchos el complemento final para acabar sus estudios.</p>
<p>Para los que queráis matricularos aquí tenéis el <a href="http://cevug.ugr.es/cursos/inscripcion/registro.php?course_code=F11128" rel="nofollow">formulario de inscripción</a>, en la web del CEVUG.</p>
<img src="http://feeds.feedburner.com/~r/dlformacion/~4/AWCALtTo9Y4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.digitallearning.es/blog/curso-alojamiento-web-hosting-cevug-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.digitallearning.es/blog/curso-alojamiento-web-hosting-cevug-2/</feedburner:origLink></item>
		<item>
		<title>Diseños gráficos de Joaclint Istgud</title>
		<link>http://feedproxy.google.com/~r/dlformacion/~3/w_fzQ5_PmRY/</link>
		<comments>http://www.digitallearning.es/blog/disenos-graficos-joaclint-istgud/#comments</comments>
		<pubDate>Tue, 10 Apr 2012 10:15:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Diseño Gráfico]]></category>
		<category><![CDATA[Blender]]></category>
		<category><![CDATA[diseño grafico]]></category>
		<category><![CDATA[inkscape]]></category>

		<guid isPermaLink="false">http://www.digitallearning.es/?p=5392</guid>
		<description><![CDATA[Una de nuestras líneas de formación es la de Diseño Gráfico, donde como muchos sabéis colaboramos estrechamente con Joaquín Herrera (conocido también por su &#8216;marca profesional&#8217;:  Joaclint Istgud). Joaclint, es autor y tutor de los cursos Diseño Gráfico con Inkscape y Diseño 3D con Blender, donde aporta toda su experiencia como profesor, diseñador gráfico y [...]]]></description>
			<content:encoded><![CDATA[<p>Una de nuestras líneas de formación es la de <strong>Diseño Gráfico</strong>, donde como muchos sabéis colaboramos estrechamente con Joaquín Herrera (conocido también por su &#8216;marca profesional&#8217;:  <a title="blog de joaclint" href="http://joaclintistgud.wordpress.com/">Joaclint Istgud</a>). Joaclint, es autor y tutor de los cursos <a title="Curso de Inkscape (Diseño gráfico, logo a logo)" href="http://www.digitallearning.es/diseno-grafico-con-inkscape.html">Diseño Gráfico con Inkscape</a> y <a title="Curso de Diseño 3D con Blender" href="http://www.digitallearning.es/curso-diseno-3d-blender.html">Diseño 3D con Blender</a>, donde aporta toda su experiencia como profesor, diseñador gráfico y divulgador de reconocido prestigio en el mundo del software libre.</p>
<p>Además de esta labor docente en Digital Learning, Joaclint nos presta su colaboración desinteresada diseñando imágenes de presentación de algunos de nuestros cursos, trabajo que le queremos agradecer desde aquí, ya que mejoran sin duda la estética y la capacidad de comunicación de las páginas donde los publicamos. Además, sirven de muestra de la calidad de sus diseños que tanto nos gustaron desde el primer momento que los encontramos a través de Internet.</p>
<p>En este post queremos mostrar algunos de estos trabajos, desarrollados con las mismas herramientas de diseño que el enseña a utilizar: diversas imágenes de cursos, un ejemplo de un tríptico publicitario o el video de presentación del curso de Inkscape:</p>
<div style="margin-top: 20px;margin-bottom: 20px;"><img class="alignnone" style="margin:0px 10px 0px 60px;" title="imagen curso android" src="http://www.digitallearning.es/wp-content/uploads/2012/02/android_by_joaclint_istgud.jpg" alt="imagen curso android" width="240" height="280" /> <img class="alignnone" title="imagen curso blender" src="http://www.digitallearning.es/wp-content/uploads/2011/11/portada-blender3-257x300.jpg" alt="imagen curso blender" width="240" height="280" /></p>
<p><img class="alignnone" style="margin:0px 10px 0px 60px; title="imagen curso inkscape" src="http://www.digitallearning.es/wp-content/uploads/2011/10/curso-inkscape.jpg" alt="imagen curso inkscape" width="240" height="280" /> <img title="imagen curso seo" src="http://www.digitallearning.es/wp-content/uploads/2011/09/cartelcurso-seo.jpg" alt="imagen curso seo" width="240" height="280" />
</div>
<div style="margin:0px 0px 15px 20px;"><a href="http://www.digitallearning.es/wp-content/uploads/2012/03/triptico_blender.jpg"><img class="size-full wp-image-5393 alignleft" title="triptico_blender" src="http://www.digitallearning.es/wp-content/uploads/2012/03/triptico_blender700x500.jpg" alt="triptico blender" width="594" height="440" /></a></div>
<p><iframe style="margin: 25px 0px 15px 20px;" src="http://www.youtube.com/embed/5do0CZGSe9Q?rel=0" frameborder="0" width="600" height="425"></iframe></p>
<p>Ah, y para los que os entren ganas de aprender Diseño Gráfico con Joaclint y estas magníficas herramientas, libres y gratuitas, teneís una promoción muy especial este mes con el <a title="Packs Promocionales" href="http://www.digitallearning.es/promociones-cursos/packs.html">PACK de &#8220;Diseño Gráfico&#8221;</a>, que os permite hacer los dos cursos por tan solo 125 € (*).</p>
<p><em>Nota (*): pídenos un código de descuento para acceder a este precio especial.</em></p>
<img src="http://feeds.feedburner.com/~r/dlformacion/~4/w_fzQ5_PmRY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.digitallearning.es/blog/disenos-graficos-joaclint-istgud/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.digitallearning.es/blog/disenos-graficos-joaclint-istgud/</feedburner:origLink></item>
		<item>
		<title>Open Source, ¿una salida laboral?</title>
		<link>http://feedproxy.google.com/~r/dlformacion/~3/vykkzg6AEWg/</link>
		<comments>http://www.digitallearning.es/blog/open-source-una-salida-laboral/#comments</comments>
		<pubDate>Wed, 04 Apr 2012 13:45:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[software libre]]></category>

		<guid isPermaLink="false">http://www.digitallearning.es/?p=5401</guid>
		<description><![CDATA[En este artículo de colaboración entre Digital Learning y Twago, planteamos las oportunidades de trabajo y desarrollo profesional que ofrece el Software Libre y de Código Abierto. Acerca de la autora: Bloguera con experiencia y experta en temas de comunicación, programación y tecnología móvil, A.Lara trabaja para twago, la plataforma líder en el mercado alemán [...]]]></description>
			<content:encoded><![CDATA[<p><strong>En este artículo de colaboración entre <a title="Web de Digital Learning" href="http://www.digitallearning.es/">Digital Learning</a> y <a href="http://www.twago.es/">Twago</a>, planteamos las oportunidades de trabajo y desarrollo profesional que ofrece el <a title="FLOSS" href="http://es.wikipedia.org/wiki/Software_libre_y_de_c%C3%B3digo_abierto" rel="nofollow" target="_blank">Software Libre y de Código Abierto</a>. </strong></p>
<p><em><span style="font-size: small;">Acerca de la autora: Bloguera con experiencia y experta en temas de comunicación, programación y tecnología móvil, A.Lara trabaja para twago<em>, la plataforma líder en el mercado alemán entre profesionales freelance y empresas que requieren servicios TIC (programación, diseño web, traducción, redacción y otros servicios empresariales). </em></span></em></p>
<p><strong>La situación del software libre </strong></p>
<p>Todos aquellos metidos en el sector, estamos viendo como el software libre se va incorporando a la realidad de las empresas a un ritmo cada vez más rápido. No es de extrañar si tenemos en cuenta sus innumerables ventajas, pues su uso ofrece libertad, flexibilidad, adaptabilidad a nuestras necesidades, seguridad, privacidad y un precio ajustado a su valor. Sin duda un “bueno bonito y barato” en toda regla.</p>
<p>Ante todas estas ventajas, no es de extrañar entonces que el crecimiento de este tipo de tecnología sea tan grande. Según los datos publicados por el INE el 75% de las Pymes o grandes empresas y el 51% de las microempresas de nuestro país ya están utilizando algún tipo software libre. En un reciente estudio de CENATIC ya sólo en el sector IT un 39% de las empresas no sólo conocen las soluciones libres, sino que las han incorporado como parte fundamental de su oferta comercial.<a href="http://www.digitallearning.es/wp-content/uploads/2012/03/open-source.jpg"><img class="alignright size-medium wp-image-5402" style="margin: 20px 0px 20px 20px;" title="open-source" src="http://www.digitallearning.es/wp-content/uploads/2012/03/open-source-300x221.jpg" alt="Open source" width="300" height="221" /></a></p>
<p>Claramente el software libre ya no es sólo cosa de “raritos” o “frikis”. Muchas aplicaciones basadas en este entorno están ganando popularidad. Software libre ya no es sólo sinónimo de Linux sino que ha madurado a otro nivel y se ha traspasado a muchas otras aplicaciones. A los <a href="http://www.twago.es/expert/Android-Apps/Desarrollo-Android" target="_blank">desarrolladores</a> que contribuyen con este tipo de software, ahora también hay que sumarle la participación de grandes empresas, incubadoras de proyectos o fundaciones como Google, SourceForge, Apache o Mozilla  que disponen de proyectos Open Source que ellos mismos patrocinan o dan soporte.</p>
<p><strong>¿Existen posibilidades laborales?</strong></p>
<p>Hablar de las posibilidades laborales con esta tecnología ha dejado de ser algo utópico. Con la actual coyuntura económica, las empresas se han visto obligadas a optimizar sus presupuestos para cada departamento y el de TI no iba a ser menos. Aquí es donde entran en juego las soluciones Open Source ya que permiten un ahorro de costes considerables en conceptos como el pago de licencias.</p>
<p>Ante esta creciente popularidad, es perfectamente normal que la gente empiece a preguntarse cómo hacer carrera en este terreno. Son muchos los <a href="http://www.twago.es/expert/Programador-PHP/Programador-PHP">programadores</a> que sienten verdadera pasión por el software libre y el código abierto y como es natural buscan ir por esa vía, pues ¿qué mejor que convertir tu hobby en tu carrera profesional?. No obstante, ¿existe la posibilidad de que nos paguen por hacer aquello que de verdad nos gusta?</p>
<p>Es de lógica, si las empresas siguen adoptando soluciones Open Source, van a buscar empleados que estén familiarizados con este tipo de tecnología y esto significa un incremento considerable en las oportunidades laborales basadas en estos sistemas.</p>
<p><strong>¿Qué pasos seguir para labrarse una profesión con Software libre? </strong></p>
<p>Llegar a dominar este tipo de tecnología y por tanto poder optar a oportunidades laborales puede conseguirse, igual que en el resto de profesiones, combinando estudios o conocimientos teóricos con práctica. A nivel estudios es sencillo, tan sólo tenemos que escoger bien el curso (on-line, presencial, en la universidad, en una escuela privada,…) y la tecnología en la que queramos especializarnos.</p>
<p>A nivel experiencia la cosa se complica. Seguro que todos nos hemos preguntado en algún momento de nuestra carrera como conseguir experiencia laboral si no nos contratan en ningún sitio por falta de experiencia (y más en una materia tan práctica como la informática). Por fortuna, este problema desaparece con el software libre, pues el sistema se basa en la colaboración pública con la comunidad y todo el mundo es libre de participar.</p>
<p>Como desarrollador puedes aprender rápidamente diferentes metodologías de código, que de otra manera hubieras aprendido en estadios más avanzados de tu carrera en una empresa. Existe también la opción de ser un colaborador. Puedes apuntarte a proyectos en múltiples <em>forjas</em> (plataformas de desarrollo colaborativo) como SourceForge, IrisLibre, GitHub, LaunchPad o Google Code o incluso empezar tu propio proyecto. Una vez te unas a alguno de los proyectos ya puedes empezar a ponerlos a prueba e ir ganando más conocimiento sobre la tecnología que hay detrás. Esto te permitirá empezar a rellenar informes de reportes de fallos (bugs-reports) y a aportar soluciones. También puedes contribuir en los proyectos elaborando su documentación. Además si eres novato, siempre va a haber alguien dispuesto a ayudarte y darte consejos y ¿qué mejor manera de ganar experiencia que esta?</p>
<p>Y no sólo experiencia, es también reconocimiento. ¿Cómo? Sencillamente colaborando en los miles de proyectos que necesitan tu ayuda. Involúcrate en la comunidad, ayuda y conforme ganes experiencia desarrolla nuevas características y no dudes en comentarlo luego en tu CV. Incluso puedes obtener una compensación económica por donaciones de usuarios (y a veces venta) de extensiones que amplíen las funcionalidades de soluciones abiertas muy populares como Firefox, WordPress, Joomla, Moodle o Prestashop, por poner unos ejemplos. Estas contribuciones van a ser tu portfolio a la hora de buscar trabajo, y recuerda que son proyectos públicos y tienen mucha visibilidad, por tanto aumenta las posibilidades de que una empresa vea tu trabajo y te ofrezca una posición, al fin y al cabo tienen una prueba irrefutable de tus cualidades como programador.</p>
<p><strong>Desarrollo laboral y perspectivas de futuro</strong></p>
<p>El camino laboral en este sector empezará normalmente por programar o desarrollar. A partir de aquí y con la experiencia, el nivel subirá a la distribución, implementación y puesta en marcha de sistemas completos en empresas. Con experiencia adquirida, el profesional puede aventurarse en el mundo de la consultoría y la estrategia evaluando por ejemplo los productos que mejor se adaptan a las necesidades de la empresa.</p>
<p>De todas maneras, sea cual sea la progresión individual de cada uno lo que sí que está claro es que el software libre continuará creciendo en nuestro país. Según el estudio realizado por CENATIC una de cada cinco empresas que actualmente no trabajan con programas de código abierto lo hará antes de cinco años. ¿Podéis empezar a imaginar la envergadura del mercado y las oportunidades laborales que esto representa?</p>
<p>(Fuente datos: www.cenatic.es y www.ine.es)</p>
<p><em style="font-size: 0.9em;">Credits: foto programador (www.flickr.com/photos/ebarrera/)</em></p>
<img src="http://feeds.feedburner.com/~r/dlformacion/~4/vykkzg6AEWg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.digitallearning.es/blog/open-source-una-salida-laboral/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.digitallearning.es/blog/open-source-una-salida-laboral/</feedburner:origLink></item>
		<item>
		<title>¿Qué es AJAX? (II)</title>
		<link>http://feedproxy.google.com/~r/dlformacion/~3/fUj3aAXyOnM/</link>
		<comments>http://www.digitallearning.es/blog/ajax-objeto-xmlhttprequest/#comments</comments>
		<pubDate>Thu, 29 Mar 2012 11:59:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.digitallearning.es/?p=5303</guid>
		<description><![CDATA[Veíamos en nuestro anterior post  ¿qué es AJAX? , una introducción a esta técnica de programación web y presentábamos un primer ejemplo muy sencillo para comprobar su funcionamiento (estos posts, son extractos de nuestro Curso de AJAX, elaborado por Víctor Santos) En esta continuación, veremos que la creación de un objeto XMLHttpRequest no es del [...]]]></description>
			<content:encoded><![CDATA[<p>Veíamos en nuestro anterior post <a title="¿Qué es AJAX?" href="http://www.digitallearning.es/blog/que-es-ajax/"> ¿qué es AJAX? </a>, una introducción a esta técnica de programación web y presentábamos un primer ejemplo muy sencillo para comprobar su funcionamiento (<em>estos posts, son extractos de nuestro <a title="Curso de AJAX" href="http://www.digitallearning.es/curso-ajax-desarrollo-web.html">Curso de AJAX</a>, elaborado por Víctor Santos</em>)</p>
<p>En esta continuación, veremos que la creación de un <strong>objeto XMLHttpRequest</strong> no es del todo trivial, dado que hay <strong>incompatibilidades</strong> entre los navegadores de Microsoft (esto es, las distintas versiones de Internet Explorer) y todos los demás.</p>
<p>Existen distintas técnicas para determinar qué navegador se está usando y en qué modo se debe crear el objeto que posteriormente permitirá hacer las peticiones de información. El código que indicamos a continuación es de los más utilizados en la web hoy en día:</p>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">function crearConexion () {</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;"> var httpRequest;</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;"> if (window.XMLHttpRequest)</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">    {</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">    //El explorador implementa la interfaz de forma nativa</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">   httpRequest = new XMLHttpRequest();</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">    }</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;"> else if (window.ActiveXObject)</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">    {</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">     //El explorador permite crear objetos ActiveX</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">       try {</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">           httpRequest = new ActiveXObject("MSXML2.XMLHTTP");</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">           } catch (e) {</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">                        try {</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">                             httpRequest = new ActiveXObject("Microsoft.XMLHTTP");</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">                            } catch (e) {}</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">                       }</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">   }</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;"> if (!httpRequest)</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">      {</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">      alert( "No ha sido posible crear una instancia de XMLHttpRequest" );</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">      return 0;</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">      }</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;"> else {</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">       return httpRequest;</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">      }</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;"> }</pre>
<p style="margin-top: 10px;">Como puede observarse, hemos creado una función que devuelve un objeto con el que es posible crear la conexión. Por tanto, debemos , podemos cambiar el código de nuestro primer ejemplo de la siguiente forma:</p>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">// 1. Instanciamos el objeto para establecer la conexión</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">conexion= crearConexion();</pre>
<p style="margin-top: 10px;">En esencia, la función creada intenta detectar la existencia del objeto <strong><em>XMLHttpRequest</em></strong>, en cuyo caso estaríamos tratando con un navegador del tipo <strong>Firefox, Opera, Safari, Chrome</strong>, etc. En caso de que no exista, estaríamos navegando con un cliente <strong>Internet Explorer</strong>, en el cual es necesario distinguir entre versiones. Las versiones más modernas deben ser instanciadas mediante un objeto <strong><em>ActiveXObject</em>, </strong>indicándole que se usa la versión 2 de MSXML: MSXML2.XMLHTTP; por su parte, las versiones más antiguas utilizan la versión anterior, Microsoft.XMLHTTP.</p>
<p>Una versión alternativa intenta crear el objeto con la versión más reciente del MSXML, en caso de estar navegando con Internet Explorer:</p>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">function crearConexion() {</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;"> if (typeof XMLHttpRequest != “undefined” )
    {</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">     return new XMLHttpRequest();</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">     }
 else if( window.ActiveXObject )
    {</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">     var versions=[“MSXML2.XMLHttp.5.0”,</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">      “MSXML2.XMLHttp.4.0”,</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">      “MSXML2.XMLHttp.4.0”,</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">      “MSXML2.XMLHttp”,</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">      “Microsoft.XMLHttp”];</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">      for ( var i=0; i&lt;versions.length; ++i )
         {</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">           try {</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">                var tmpObject=new ActiveXObject( versions[i] );</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">                return tmpObject;</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">                } catch( error ) {</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">                                  // No hacer nada</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">                                 }</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">        }</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">    }</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;"> alert( “No se pudo crear la conexión”;</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;"> return 0;</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">}</pre>
<p style="margin-top: 10px;">Los problemas debidos a incompatibilidades entre navegadores son una de las principales razones por las que es conveniente recurrir al uso de bibliotecas estandarizadas disponibles en la web (muchas de ellas libre y sin coste alguno: jQuery, Dojo, etc.).</p>
<img src="http://feeds.feedburner.com/~r/dlformacion/~4/fUj3aAXyOnM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.digitallearning.es/blog/ajax-objeto-xmlhttprequest/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.digitallearning.es/blog/ajax-objeto-xmlhttprequest/</feedburner:origLink></item>
		<item>
		<title>¿Qué es AJAX?</title>
		<link>http://feedproxy.google.com/~r/dlformacion/~3/5EivnkTA-Hg/</link>
		<comments>http://www.digitallearning.es/blog/que-es-ajax/#comments</comments>
		<pubDate>Tue, 27 Mar 2012 11:18:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.digitallearning.es/?p=5006</guid>
		<description><![CDATA[En este post extraemos algunos apartados de nuestro curso Programación AJAX elaborado por Víctor Rivas, que sirven de presentación de esta técnica de programación Web que está teniendo un gran auge en los últimos años. Creemos que cualquier diseñador o programador web debería conocer las posibilidades que ofrece AJAX y adquirir las competencias para aplicar [...]]]></description>
			<content:encoded><![CDATA[<p>En este post extraemos algunos apartados de nuestro <a title="Curso de AJAX" href="http://www.digitallearning.es/curso-ajax-desarrollo-web.html">curso Programación AJAX</a> elaborado por <strong>Víctor Rivas</strong>, que sirven de presentación de esta técnica de programación Web que está teniendo un gran auge en los últimos años. Creemos que cualquier diseñador o programador web debería conocer las posibilidades que ofrece AJAX y adquirir las competencias para aplicar esta técnica adecuadamente en sus desarrollos web.</p>
<h3>Definición de AJAX</h3>
<p><strong>AJAX</strong> es el acrónimo de <em>Asynchronous Javascript and XML</em>, es decir: <strong>Javascript y XML Asincrono</strong>. Este acrónimo fue utilizado por primera vez por <strong>Jesse James Garret</strong> en 2005, en su publicación <a title="Definición de AJAX" href="http://adaptivepath.com/ideas/ajax-new-approach-web-applications" target="_blank">Ajax: a New Approach to Web Applications</a> si bien los componentes en que se basan y los recursos técnicos de que hace uso ya existían desde muchos años antes.</p>
<p>Normalmente, AJAX se define como una técnica para el desarrollo de páginas (sitios) web que implementan aplicaciones interactivas. No obstante, analicemos un poco cada una de las palabras que la forman:</p>
<ul>
<li><strong>Javascript</strong> es un lenguaje de programación conocido por ser interpretado por los navegadores de páginas web.</li>
<li><strong>XML</strong> es un lenguaje de descripción de datos pensado fundamentalmente para el intercambio de datos entre aplicaciones, más que entre personas.</li>
<li><strong>Asíncrono</strong>: en el contexto de las comunicaciones (y la visualización de una página web no deja de ser una acto de comunicación entre un servidor y un cliente) significa que el emisor emite un mensaje y continúa son su trabajo, dado que no sabe (ni necesita saberlo) cuándo le llegará el mensaje al receptor.</li>
</ul>
<p>Es decir, que podemos refinar un poco nuestra definición indicando que AJAX es una técnica que permite, mediante programas escritos en Javascript, que un servidor y un navegador intercambien información, posiblemente en XML, de forma asíncrona.</p>
<p>Como veremos en el tema 4, la información intercambiada entre cliente y servidor puede hacerse en múltiples formatos: <strong>texto, HTML, JSON y, por supuesto, XML</strong>. Además (como veremos en el tema 3, la comunicación puede ser también síncrona, de modo que el cliente espere a que le llegue la información del servidor. En todo caso, los programas que realizamos para lograr este tipo de conexiones se hacen con el lenguaje <strong>Javascript</strong>.</p>
<h3>¿Para qué sirve AJAX?</h3>
<p>En esencia, <strong>AJAX permite que una página web que ya ha sido cargada solicite nueva información al servidor</strong>. Dicho así, no supondría en realidad ningún invento novedoso. Una página web que contiene un enlace permite que se solicite al servidor nueva información cada vez que se pincha dicho enlace. Una página web que contiene un formulario envía información al servidor y recibe de él nueva información, normalmente la respuesta ante los datos que se han enviado. En ambos casos hay una conexión entre el cliente y el servidor.</p>
<p>¿Cuál es la diferencia cuando usamos AJAX? La diferencia es que <strong>con AJAX no es necesario recargar toda la página web</strong>, como ocurre cuando pinchamos en un enlace o cuando pulsamos el botón <em>submit</em> de un formulario. Con AJAX es posible realizar una conexión a un servidor desde dentro de una página web usando un programa Javascript. Dicho servidor enviará una respuesta; esta respuesta se almacenará en una variable del programa Javascript y, una vez almacenada en la variable, podremos hacer con ella lo que deseemos.</p>
<div id="Marco3frame">
<div><img id="grficos3graphic" class="aligncenter" style="margin: 10px 0px 10px 80px;" title="Modelos de aplicación Web" src="http://www.digitallearning.es/wp-content/uploads/2012/03/tema_1-img1.png" alt="Modelos de Aplicación Web" width="432" height="455" /></div>
<p><em style="font-size: 0.9em;">Figura <a id="seqrefFigura2">1</a>: Compración de Modelos de Aplicación Web clásico y basado en Ajax (imagen original de Adaptive Path)</em></p>
</div>
<p>Por ejemplo, podemos pedirle al servidor que nos indique qué hora tiene y mostrar dicha hora en el cliente, en una capa dedicada sólo para visualizar este dato. De esta forma, el usuario podría ver la hora correcta que hay en el servidor (posiblemente sincronizada por NTP) y esta sería la misma para todos los usuarios conectados a dicho servidor, sin tener en cuenta la hora que tengan en su ordenador (posiblemente errónea o susceptible de ser modificada por el usuario). Si actualizamos la hora cada minuto, sin usar AJAX, tendremos que recargar toda la página cada 60 segundos. Sin embargo, con AJAX, simplemente actualizaremos la capa que hemos dedicado a imprimir la hora sin necesidad de alterar el resto de la página.</p>
<h3>Primer ejemplo en AJAX</h3>
<p>Antes de explicar en detalle cómo funciona AJAX, veamos un ejemplo al cual realizaremos posteriormente sucesivas mejoras.</p>
<p>El código que mostramos a continuación podemos almacenarlo en un fichero llamado <em>ajax.2.1.1.html</em>. Una vez guardado, podemos abrirlo en nuestro navegador sin necesidad de tener ningún servidor de páginas web instalado, sino utilizando la opción “Abrir fichero” que poseen los navegadores.</p>
<p>Realicemos no obstante un par de aclaraciones necesarias antes de verlo:</p>
<p>a) para que el ejemplo funcione, es necesario tener un fichero llamado <em>hola_mundo.txt</em> en el mismo directorio en el que pongamos el fichero <em>ajax.2.1.1.html</em></p>
<p>b) el siguiente puede no funcionar en navegadores antiguos y en navegadores de la familia de Internet Explorer (en el post siguiente veremos cómo solucionar estos problemas de compatibilidad).</p>
<p>&nbsp;</p>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">&lt;!--</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">- FICHERO ajax.2.1.1.html</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">- ======================</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">--&gt;</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">&lt;html&gt;</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">&lt;head&gt;</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">&lt;title&gt;Primer ejemplo con AJAX&lt;/title&gt;</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">&lt;/head&gt;</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">&lt;body&gt;</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">&lt;h2&gt;Primer ejemplo con AJAX&lt;/h2&gt;</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;"><span style="color: #800080;">&lt;script&gt;</span></pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;"><span style="color: #800080;"> // 1. Instanciamos el objeto XMLHttpRequest</span></pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;"><span style="color: #800080;"> conexion= new XMLHttpRequest(); </span></pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;"><span style="color: #800080;"> // 2. Indicamos un manejador de eventos para cuando llegue la información</span></pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;"><span style="color: #800080;"> conexion.onreadystatechange=function() {</span></pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;"><span style="color: #800080;">   if (this.readyState == 4 ) {</span></pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;"><span style="color: #800080;">   // Va mostrar la información obtenida en la llamada</span></pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;"><span style="color: #800080;">   alert( this.responseText );</span></pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;"><span style="color: #800080;">   }</span></pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;"><span style="color: #800080;"> } </span></pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;"><span style="color: #800080;"> // 3. Hacemos la llamada</span></pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;"><span style="color: #800080;"> conexion.open("GET", "hola_mundo.txt" );</span></pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;"><span style="color: #800080;"> conexion.send(null);</span></pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;"><span style="color: #800080;">&lt;/script&gt;</span></pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">&lt;/body&gt;</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">&lt;/html&gt;</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">FICHERO hola_mundo.txt</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">======================</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">Hola mundo!</pre>
<p style="margin-top: 15px;">El funcionamiento es bastante simple: si abrimos nuestro fichero <em>ajax1.html</em> en el navegador, obtendremos un mensaje de alerta con el texto “<em>Hola mundo!</em>”, es decir, justo el texto que hemos puesto dentro del fichero <em>hola_mundo.txt.</em></p>
<p>Pasemos a diseccionar poco a poco el código del ejemplo anterior. En primer lugar hemos de <strong>crear un objeto XMLHttpRequest</strong>:</p>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">// 1. Instanciamos el objeto XMLHttpRequest</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">conexion= new XMLHttpRequest();</pre>
<p style="margin-top: 15px;">El nombre ya es bastante aclaratorio con respecto a la misión del objeto: sirve para hacer peticiones de información que llegará en formato <strong>XML</strong> a través del protocolo <strong>HTTP</strong>.</p>
<p>El objeto, al que hemos llamado <em>conexion</em> actúa como un “mini-navegador” dentro del cliente en el que se ha cargado nuestra página web.</p>
<p>Seguidamente, y para poder <strong>obtener información del servidor</strong>, abrimos una conexión y le enviamos los datos necesarios para completarla. En este caso, la conexión es de tipo <strong>GET</strong>, intenta recuperar un fichero llamado <em>hola_mundo.txt</em> y no necesita muchos más datos, por lo que enviamos la petición sin datos adicionales.</p>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">// 3. Hacemos la llamada</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">conexion.open("GET", "hola_mundo.txt" );</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">conexion.send(null);</pre>
<p style="margin-top: 15px;">Por motivos de <strong>seguridad</strong>, la URL que indiquemos en la llamada al <strong>método <em>open()</em></strong> debe pertenecer obligatoriamente al mismo servidor desde el cual se ha descargado la página web que está realizando la llamada. Es decir, aunque supiéramos que el fichero <em>“hola mundo.txt”</em> está disponible en la URL<em> http://www.otrodominio.es/hola_mundo.tx</em>t, no podremos hacer llamadas a él con AJAX si nuestra página web no está <strong>alojada también en dicho dominio</strong>. En el siguiente tema, al hablar del formato XML, veremos cómo podemos usar información de terceros sitios en el nuestro usando AJAX.</p>
<p>Finalmente, dentro del proceso de realizar la conexión mediante AJAX describimos brevemente el paso 2; lo hemos colocado en esta explicación después del paso 3 intencionadamente, aunque por supuesto es imprescindible que se encuentre en segunda posición. En este paso 2, indicamos al objeto creado <strong>qué debe hacer cada vez que cambie el estado</strong> en que se encuentra, es decir, indicamos<strong> un manejador de eventos</strong>.</p>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">// 2. Indicamos un manejador de eventos para cuando llegue la información</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">conexion.onreadystatechange=function() {</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;"> if (this.readyState == 4 ) {</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;"> // Va mostrar la información obtenida en la llamada</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;"> alert( this.responseText );</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;"> }</pre>
<pre style="margin: 0; display: block; margin-left: 10px; font-size: 1em; padding: 1px 4px 1px 10px; background-color: #f0f7fe; border-left: 2px dotted #CCCCCC;">}</pre>
<p style="margin-top: 15px;">A lo largo de la creación y realización de la nueva llamada, el <strong>objeto <em>conexion</em></strong> sufrirá varias veces el <strong>evento <em>onreadystatechange</em></strong> por lo que es necesario dotarlo de una <strong>función manejadora</strong> para este evento. Es imprescindible que el manejador esté declarado antes de que suceda el evento, y es por ello que antes de iniciar la conexión AJAX realizamos la declaración de esta función.</p>
<p>Cada vez que se activa el evento <em>onreadystatechange</em>, la función manejadora toma el control; dentro de ella podemos saber en qué estado concretamente está la llamada gracias a la propiedad <strong><em>readyState</em></strong>. Cuando dicha propiedad toma el valor 4, podemos determinar que se ha realizado correctamente la transacción y acceder a la información que ha llegado gracias a la propiedad <em><strong>responseText</strong>.</em></p>
<p>El ejemplo anterior es, posiblemente, el ejemplo más conciso que podemos escribir para comprobar el funcionamiento de AJAX. No obstante, la programación de sitios web utilizando AJAX requiere de un mayor conocimiento del objeto <em>XMLHttpRequest</em>, así como de los atributos y métodos que posee. En el siguiente post &#8220;<a title="¿Qué es AJAX? (II)" href="http://www.digitallearning.es/blog/ajax-objeto-xmlhttprequest/">¿qué es AJAX (II)</a>?&#8221;, veremos un poco más sobre él y cómo solucionar los problemas de incompatibilidad con el navegador Internet Explorer.</p>
<img src="http://feeds.feedburner.com/~r/dlformacion/~4/5EivnkTA-Hg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.digitallearning.es/blog/que-es-ajax/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.digitallearning.es/blog/que-es-ajax/</feedburner:origLink></item>
		<item>
		<title>10 Razones para aprender JavaScript</title>
		<link>http://feedproxy.google.com/~r/dlformacion/~3/hgceUiiNbaU/</link>
		<comments>http://www.digitallearning.es/blog/diez-razones-para-aprender-javascript/#comments</comments>
		<pubDate>Fri, 23 Mar 2012 12:10:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.digitallearning.es/?p=2285</guid>
		<description><![CDATA[Siguiendo con la serie de posts dedicados a las materias que impartimos en nuestro catálogo de formación,  esta semana nos vamos a centrar en los cursos de Programación Web con JavaScript y AJAX. En el primer artículo queríamos responder a una pregunta muy directa: ¿por qué aprender JavaScript? Nos ha salido un decálogo, ahora que [...]]]></description>
			<content:encoded><![CDATA[<p>Siguiendo con la serie de posts dedicados a las materias que impartimos en nuestro catálogo de formación,  esta semana nos vamos a centrar en los cursos de <a title="Curso Programación Web con Javascript" href="http://www.digitallearning.es/curso-programacion-web-javascript.html">Programación Web con JavaScript</a> y <a title="Curso de AJAX" href="http://www.digitallearning.es/curso-ajax-desarrollo-web.html">AJAX</a>.</p>
<p>En el primer artículo queríamos responder a una pregunta muy directa: <strong>¿por qué aprender JavaScript?</strong></p>
<p>Nos ha salido un <strong>decálogo</strong>, ahora que están tan de moda, para responder a esta cuestión:</p>
<ol>
<li style="margin-bottom: 8px;">Es el <strong>lenguaje de programación de los navegadores web</strong> (todos los más importantes lo soportan y lo tienen activado por defecto: Firefox, Chrome, IE, Opera, Safari&#8230;), lo que lo convierten en el lenguaje más popular en Internet. Hay otras opciones, pero requieren instalación y activación mediante plugins o solo funcionan en navegadores específicos.</li>
<li style="margin-bottom: 8px;">Hay una auténtica competición entre los navegadores para optimizar sus motores y dar mejor soporte a JavaScript y que su código se ejecute más rápidamente. JavaScript por tanto<strong> es cada vez más estable y tiene mejor rendimiento</strong>.</li>
<li style="margin-bottom: 8px;">Está <strong>totalmente integrado con <a title="Tutorial HTMl y CSS" href="http://www.digitallearning.es/tutoriales/introduccion-a-html-y-css.html" target="_blank">HTML y CSS</a></strong>. Cada uno juega un papel definido en una página web: HTML es el lenguaje de marcado para crear la estructura, CSS el lenguaje de estilos para configurar la presentación y JavaScript le proporciona interactividad y comportamiento dinámico.</li>
<li style="margin-bottom: 8px;">Va a<strong> jugar un papel importante</strong>, potenciando sus prestaciones, con la llegada de <strong>HTML5 / CSS3</strong></li>
<li style="margin-bottom: 8px;">Es muy<strong> potente y expresivo</strong>, con sintaxis que guarda similitudes con otros lenguajes muy populares, pero con características particulares.</li>
<li style="margin-bottom: 8px;">Es<strong> fácil de aprender</strong>. Tienen una curva de aprendizaje rápida y exige poca inversión de tiempo para empezar a utilizarlo.</li>
<li style="margin-bottom: 8px;">Es muy <strong>fácil trabajar con él</strong>. No necesita un servidor web ni un entorno especial de desarrollo. Es interpretado por lo que no tenemos que compilar código. No necitamos adquirir licencias. Nos basta con un editor de texto (o mejor un <a title="Editores de código JavaScript y PHP" href="http://www.digitallearning.es/blog/editores-de-codigo-javascript-y-php/">editor de código</a> que nos facilite la tarea) y un navegador. A eso, podemos añadir un complemento como <a title="Firebug" href="http://getfirebug.com/" rel="nofollow" target="_blank">Firebug </a>para depurar y estamos totalmente equipados con <strong>herramientas libres y gratuitas</strong></li>
<li style="margin-bottom: 8px;">Es la base para <strong>utilizar AJAX </strong> en nuestras páginas, una técnica de programación que bien utilizada nos permite construir sitios web de &#8216;nueva generación&#8217;  mejorando muchísimo la experiencia del usuario (lo veremos en un siguiente post).</li>
<li style="margin-bottom: 8px;">Una vez conocemos los fundamentos de JavaScript, tenemos disponibles <strong>frameworks abiertos y gratuitos</strong> (entornos de trabajo / librerías) como <strong>JQuery</strong>, Prototype, Dojo,&#8230;. que nos facilitan aún más el trabajo y nos permiten desarrollar elementos muy avanzados con extraordinaria sencillez.</li>
<li>Nos permite trabajar en un<strong> entorno abierto y estandarizado</strong> sin atarnos al criterio de ningún fabricante de software. Además, puede <strong>interaccionar</strong> con otras tecnologías populares como Flash o Java.</li>
</ol>
<p><img class="alignright  wp-image-5271" title="CamisetaJavascript" src="http://www.digitallearning.es/wp-content/uploads/2012/03/CamisetaJavascript.jpg" alt="Camiseta Javascript" width="373" height="399" /></p>
<p>Es cierto que algunas de estas razones también se han esgrimido para criticar a JavaScript, como que es tan sencillo que se utiliza sin conocerse. La etiqueta de &#8216;lenguaje para aficionados&#8217; por su utilización para sobrecargar de efectos visuales las páginas web, ha cambiado radicalmente.  Opiniones como las de <a title="Traducción artículo D.Crockford sobre Javascript" href="http://blog.continuum.cl/archives/18" rel="nofollow" target="_blank">Douglas Crockford</a> (<a title="Javascript, el lenguaje menos conocido y más popular" href="http://javascript.crockford.com/popular.html" target="_blank">artículo original</a> en inglés) ayudaron a entenderlo mejor y a generar un gran interés por conocer y aplicar sus posibilidades también entre programadores avanzados.</p>
<p>Para los que se inician y tienen interés en la programación (web) es un lenguaje que les facilita dar los primeros pasos. De hecho, la escasa complejidad para trabajar con él ha fomentado su utilización como lenguaje de referencia para enseñar conceptos de programación. Como toda herramienta, tiene sus defectos y puede ser mal utilizada, pero sabiendo donde están sus limitaciones es<strong> una de las primeras opciones de aprendizaje</strong> que debe considerar cualquier persona que quiere<strong> iniciarse en la programación web</strong>.</p>
<p>¿Qué piensas? ¿Quitarías o añadirías motivos para conocer este lenguaje?</p>
<p><em style="font-size: 0.8em;">Credits: t-shirt generada con zazzle.es</em></p>
<link rel="image_src" href="http://www.digitallearning.es/wp-content/uploads/2012/03/JS_codigo.gif"/>
<img src="http://feeds.feedburner.com/~r/dlformacion/~4/hgceUiiNbaU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.digitallearning.es/blog/diez-razones-para-aprender-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.digitallearning.es/blog/diez-razones-para-aprender-javascript/</feedburner:origLink></item>
		<item>
		<title>Curso presencial de Hojas de Estilo: CSS3</title>
		<link>http://feedproxy.google.com/~r/dlformacion/~3/Q0G7xlhBIaQ/</link>
		<comments>http://www.digitallearning.es/blog/css-hojas-de-estilo3-curso-presencial/#comments</comments>
		<pubDate>Mon, 19 Mar 2012 11:02:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Páginas web]]></category>
		<category><![CDATA[css]]></category>

		<guid isPermaLink="false">http://www.digitallearning.es/?p=5240</guid>
		<description><![CDATA[Este viernes 23 de Marzo, organizamos un pequeño Curso de CSS3 (Hojas de Estilo), en formato de Taller práctico, en la Universidad de Jaén. Lo imparte nuestro colaborador Víctor Rivas Santos, profesor de la EPSJ que tutoriza nuestros cursos online de Programación Javascript y AJAX. Los contenidos que se van a tratar son: 1. Introducción [...]]]></description>
			<content:encoded><![CDATA[<p>Este viernes <strong>23 de Marzo</strong>, organizamos un pequeño <a title="Curso Hojas de estilo - CSS" href="http://vrivas.es/CSS3/">Curso de CSS3 (Hojas de Estilo)</a>, en formato de Taller práctico, en la <strong>Universidad de Jaén</strong>. Lo imparte nuestro colaborador <strong>Víctor Rivas Santos</strong>, profesor de la <acronym style="border-bottom: blue dotted 1px;" title="Escuela Politécnica Superior de Jaén">EPSJ</acronym> que tutoriza nuestros cursos online de <a title="Curso Programacion Javascript" href="http://www.digitallearning.es/curso-programacion-web-javascript.html">Programación Javascript</a> y <a title="Curso de AJAX" href="http://www.digitallearning.es/curso-ajax-desarrollo-web.html">AJAX</a>.</p>
<p>Los contenidos que se van a tratar son:</p>
<p>1. Introducción</p>
<p>2. Breve revisión de HTML</p>
<p>3. CSS (I): Tipografía</p>
<p>4. CSS (II): Capas</p>
<p>5. CSS (III): Novedades de CSS3</p>
<p>6. Microformatos</p>
<p>Tenéis toda la información del mismo en el enlace a la página web del curso que os poníamos arriba. Creemos que es una opción interesante para los estudiantes de la UJA, o aquellos que puedan desplazarse a sus instalaciones y quieran aprender de forma práctica sobre este tema.</p>
<img src="http://feeds.feedburner.com/~r/dlformacion/~4/Q0G7xlhBIaQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.digitallearning.es/blog/css-hojas-de-estilo3-curso-presencial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.digitallearning.es/blog/css-hojas-de-estilo3-curso-presencial/</feedburner:origLink></item>
		<item>
		<title>¿Qué hace un Servidor Web como Apache?. Configuración</title>
		<link>http://feedproxy.google.com/~r/dlformacion/~3/Ma6pD7iVZyU/</link>
		<comments>http://www.digitallearning.es/blog/apache-servidor-web-configuracion-apache2-conf/#comments</comments>
		<pubDate>Sat, 17 Mar 2012 13:30:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[cursos]]></category>
		<category><![CDATA[servidor web]]></category>

		<guid isPermaLink="false">http://www.digitallearning.es/?p=3503</guid>
		<description><![CDATA[Apache es el Servidor Web más utilizado, líder con el mayor número de instalaciones a nivel mundial muy por delante de otras soluciones como el IIS (Internet Information Server) de Microsoft. Apache es un proyecto de código abierto y uso gratuito, multiplataforma (hay versiones para todos los sistemas operativos más importantes), muy robusto y que [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Apache</strong> es el <strong>Servidor Web</strong> más utilizado, <strong>líder</strong> con el mayor número de instalaciones a nivel mundial muy por delante de otras soluciones como el IIS (Internet Information Server) de Microsoft. Apache es un proyecto de código abierto y uso gratuito, multiplataforma (hay versiones para todos los sistemas operativos más importantes), muy robusto y que destaca por su seguridad y rendimiento.</p>
<p>Ahora bien,se puede estar preguntando alguien<strong>, </strong><strong>¿qué es un Servidor Web y qué hace exactamente?</strong></p>
<p>Bueno, lo primero que debemos aclarar es que estamos hablando de software, aunque el equipo donde se ejecuta recibe la misma denominación. Su misión es crítica, ya que es el encargado de aceptar las peticiones de páginas (o recursos en general) que provienen de los visitantes que acceden a nuestro sitio web y gestionar su entrega o denegación, de acuerdo a las políticas de seguridad establecidas. Esto, que puede parecer simple, implica muchas facetas y funcionalidades que debe cubrir, como pueden ser:</p>
<ul>
<li>Atender de manera eficiente, ya que puede recibir un gran número de peticiones HTTP, incluyendo una ejecución multitarea ya que pueden darse peticiones simultáneas. Cualquier petición compleja (por ejemplo con acceso a base de datos) dejaría colapsado el servicio.</li>
<li>Restricciones de acceso a los ficheros que no se quieran &#8216;exponer&#8217;, gestión de autentificaciones de usuarios o filtrado de peticiones según el origen de éstas.</li>
<li>Manejar los errores por páginas no encontradas, informando al visitante y/o redirigiendo a páginas predeterminadas.</li>
<li>Gestión de la información a transmitir en función de su formato e informar adecuadamente al navegador que está solicitando dicho recurso.</li>
<li>Gestión de logs, es decir almacenar las peticiones recibidas, errores que se han producido y en general toda aquella información que puede ser registrada y analizada posteriormente para obtener las estadísticas de acceso al sitio web.</li>
</ul>
<p>Además, <strong>Apache nos permite configurar un Hosting Virtual</strong> basado en IPs o en nombres, es decir, tener varios sitios web en un mismo equipo (por ejemplo: <em>nombreweb1.com</em>, <em>nombreweb2.com</em>,&#8230;.) o como indicábamos, establecer distintos niveles de control de acceso a la información incluyendo el soporte a <strong>cifrado SSL</strong> utilizando protocolo seguro <strong>HTTPS</strong>.</p>
<p>A continuación, para los que quieran tener una visión más en detalle de cómo se trabaja con Apache, reproducimos la explicación del fichero de configuración de Apache 2 de nuestro <a title="Curso Servidor Web Apache" href="http://www.digitallearning.es/curso-apache-servidor-web.html">curso Servidor Web Apache</a>, elaborado por <strong>Franciso Illeras</strong>. Este apartado, junto a otros dos, los podéis  descargar en el <a title="Curso Servidor Web Apache: extracto" href="http://www.digitallearning.es/tutoriales/curso-apache-servidor-web-extracto.html">extracto del curso</a> que hemos publicado en nuestra sección de Tutoriales, para que podáis tener una mejor idea del mismo.</p>
<h2 id="toc3">Archivo “apache2.conf”</h2>
<p><em>(apartado del Tema &#8220;Configuración y ajuste del servidor Apache&#8221;)</em></p>
<p>Sin lugar a dudas, &#8220;<strong>apache2.conf</strong>&#8221; es el fichero más importante de Apache, puesto que en él se definirá el comportamiento general del servidor de páginas web y además, es el encargado de acceder a los distintos módulos que amplían la funcionalidad del servidor.</p>
<p>Como ya hemos comentado, el archivo “apache2.conf” se encuentra en el directorio “/etc/apache2”, y al tratarse de un fichero de texto podrá editarlo fácilmente (por ejemplo, con nuestro editor preferido “joe”).</p>
<p>Dentro del archivo de configuración encontraremos dos partes bien diferenciadas:</p>
<p>1) <strong>Variables globales del servidor</strong>: variables que definen el funcionamiento general del servidor. Las más importantes son (siempre podrá completar la información que le suministro con la que posee en la propia web de Apache, el lugar donde encontrará la documentación es “http://httpd.apache.org/docs/2.0/es/”):</p>
<table style="margin: 30px auto; text-align: left; vertical-align: top; width: 100%; border: solid 1px; border-collapse: collapse;">
<tbody>
<tr>
<td style="padding: 8px; border: dotted 1px; border-collapse: collapse;">Directiva</td>
<td style="padding: 8px; border: dotted 1px; border-collapse: collapse;">Descripción</td>
</tr>
<tr>
<td style="padding: 8px; border: dotted 1px; border-collapse: collapse;"><strong>ServerRoot “/etc/apache2”</strong></td>
<td style="padding: 8px; border: dotted 1px; border-collapse: collapse;">Indica la ubicación de los ficheros de configuración del servidor Apache.</td>
</tr>
<tr>
<td style="padding: 8px; border: dotted 1px; border-collapse: collapse;"><strong>ServerName “miservidor.ugr.es”</strong></td>
<td style="padding: 8px; border: dotted 1px; border-collapse: collapse;">Indica el nombre del servidor.</td>
</tr>
<tr>
<td style="padding: 8px; border: dotted 1px; border-collapse: collapse;"><strong>PidFile ${APACHE_PID_FILE}</strong></td>
<td style="padding: 8px; border: dotted 1px; border-collapse: collapse;">Fichero en el que se almacenará el número de proceso con el que se esta ejecutando el servidor Apache. Fíjese que no se indica un directorio o ubicación sino que se le asigna el valor de la variable “APACHE_PID_FILE”. Más adelante comprobará que esa variable esta definida en el archivo de configuración “envvars”.</td>
</tr>
<tr>
<td style="padding: 8px; border: dotted 1px; border-collapse: collapse;"><strong>Timeout 300</strong><strong>MaxKeepAliveRequests 100</strong><strong>KeepAliveTimeout 15</strong></td>
<td style="padding: 8px; border: dotted 1px; border-collapse: collapse;">Todas estas directivas están relacionadas con el tiempo de espera de las conexiones con los clientes.</td>
</tr>
<tr>
<td style="padding: 8px; border: dotted 1px; border-collapse: collapse;">
<p lang="en-GB"><strong>User ${APACHE_RUN_USER}</strong></p>
<p lang="en-GB"><strong>Group ${APACHE_RUN_GROUP}</strong></p>
</td>
<td style="padding: 8px; border: dotted 1px; border-collapse: collapse;">Aunque nosotros hemos instalado el servidor Apache como administradores (root), la aplicación no podrá ejecutarse con estos privilegios porque provocaría muchos problemas de seguridad. En lugar de ello, el servidor Apache dispondrá de su propio usuario y grupo con el que se ejecutará. De nuevo hace referencia a unos valores almacenados en las variables APACHE_RUN_USER Y APACHE_RUN_GROUP que podrá localizar en el archivo “envvars”.</td>
</tr>
<tr>
<td style="padding: 8px; border: dotted 1px; border-collapse: collapse;"><strong>AccessFileName .htaccess</strong></td>
<td style="padding: 8px; border: dotted 1px; border-collapse: collapse;">Indica el nombre (“.htaccess”) que deberá tener el fichero local de un directorio en el que se almacenen directivas de acceso.</td>
</tr>
<tr>
<td style="padding: 8px; border: dotted 1px; border-collapse: collapse;"><strong>ErrorLog /var/log/apache2/error.log</strong></td>
<td style="padding: 8px; border: dotted 1px; border-collapse: collapse;">Indica el nombre del directorio del sistema en el que se guardarán los registros de error del servidor Apache.</td>
</tr>
</tbody>
</table>
<p>A la vista de la tabla anterior parecería que Apache es un servidor que no es muy complejo de configurar, porque no posee muchas opciones. Es cierto en parte, aunque éstas son solo una pequeña parte de las opciones que posee Apache, ya que mayoría de las variables de configuración se encuentra repartida entre otros pequeños ficheros de configuración (módulos) guardados en “mods-available” (pero esto lo veremos más adelante).</p>
<p>En este momento solo tiene que preocuparte que el nombre de nuestro servidor esté bien indicado mediante la variable “ServerName” para que cualquier redirección o referencia existente en nuestros documentos HTML funcionen bien. Y el resto de las variables no tendrán que tocarse puesto que por defecto vienen con los valores adecuados, salvo la parte correspondiente a “AccessFileName”. Lo explicaremos de una manera más detallada.</p>
<p><strong>.htaccess </strong>es un archivo de texto oculto (por esa razón comienza por “.”) que permite personalizar el funcionamiento del servidor Apache un directorio concreto sin necesidad de modificar el fichero de configuración principal “apache2.conf”.</p>
<p>Cuando un <strong>cliente web</strong> solicita un archivo al servidor, este busca desde el directorio raíz hasta el subdirectorio que contiene el archivo solicitado el archivo <strong>.htaccess</strong> y tiene en cuenta las directivas contenidas en el mismo antes de proceder con la petición.</p>
<p>Los <strong>usos</strong> principales del <strong>.htaccess</strong> son:</p>
<ul>
<li>Impedir el listado de los archivos de un directorio.</li>
<li>Redireccionar el tráfico Web.</li>
<li>Personalizar las páginas de error.</li>
<li>Restringir el acceso a determinados archivos.</li>
<li>Impedir el acceso a determinadas IPs o rangos de IP.</li>
</ul>
<p>En el apartado de comunicaciones seguras de este mismo tema lo veremos con más detenimiento.</p>
<p>2) <strong>Ampliación de funcionalidades</strong>: relacionado con las llamadas a otros módulos y archivos de configuración. Todas las directivas relacionadas con este punto vendrán precedidas por la palabra “Include&#8221;.</p>
<table style="margin: 30px auto; text-align: left; vertical-align: top; width: 100%; border: solid 1px; border-collapse: collapse;">
<tbody>
<tr>
<td style="padding: 8px; border: dotted 1px; border-collapse: collapse;">Directiva</td>
<td style="padding: 8px; border: dotted 1px; border-collapse: collapse;">Descripción</td>
</tr>
<tr>
<td style="padding: 8px; border: dotted 1px; border-collapse: collapse;"><strong>Include /etc/apache2/mods-enabled/*.load</strong><strong>Include /etc/apapche2/mods-enabled/*.conf</strong></td>
<td style="padding: 8px; border: dotted 1px; border-collapse: collapse;">Incluirá todos los módulos existentes en el directorio “/etc/apache2/mods-enabled/”. Esto significa que todas las directivas que se encuentren en los archivos de este directorio serán tenidas en cuenta para el funcionamiento del servidor. Todos estos ficheros son funcionalidades extra del servidor.</td>
</tr>
<tr>
<td style="padding: 8px; border: dotted 1px; border-collapse: collapse;"><strong>Include /etc/apache2/ports.conf</strong></td>
<td style="padding: 8px; border: dotted 1px; border-collapse: collapse;">Incluirá las directivas incluidas en el archivo “ports.conf”, que hacen referencia al puerto por el que se dará servicio (normalmente el puerto 80).</td>
</tr>
<tr>
<td style="padding: 8px; border: dotted 1px; border-collapse: collapse;"><strong>Include /etc/apache2/sites-enabled/</strong></td>
<td style="padding: 8px; border: dotted 1px; border-collapse: collapse;">Incluye el directorio “/etc/apache2/sites-enabled”, que es el lugar donde se definirán los distintos dominios virtuales que deseemos ofrecer con nuestro servidor. Lo veremos más adelante.</td>
</tr>
</tbody>
</table>
<p>Si aún no te has hecho una idea mental de cómo esta conformado el servidor Apache, la siguiente imagen te ayudará.</p>
<p style="text-align: center;"><a href="http://www.digitallearning.es/wp-content/uploads/2012/03/tema3-apache-img1.jpg"><img class="aligncenter size-full wp-image-5202" title="Configuración Apache" src="http://www.digitallearning.es/wp-content/uploads/2012/03/tema3-apache-img1.jpg" alt="configuración Apache" width="611" height="350" /></a></p>
<div id="Marco1frame">
<p>Ilustración <a id="seqrefIllustration0">1</a>: Estructura del servidor Apache2.</p>
</div>
<p>&nbsp;</p>
<p>Hasta ahora has aprendido que el archivo de configuración principal de Apache 2 se llama “apache2.conf” y se encuentra en el directorio “/etc/apache2”. Ya sabes como indicar el nombre del servidor, que el usuario y grupo con el que se ejecuta el servidor Apache se llama <strong>www-data</strong>, y que se cargarán todos los módulos que se encuentren almacenados en los directorios de configuración “mods-enabled” y “sites-enabled”.</p>
<img src="http://feeds.feedburner.com/~r/dlformacion/~4/Ma6pD7iVZyU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.digitallearning.es/blog/apache-servidor-web-configuracion-apache2-conf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.digitallearning.es/blog/apache-servidor-web-configuracion-apache2-conf/</feedburner:origLink></item>
	</channel>
</rss>

