<?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>FactorSim &#187; dani</title>
	<atom:link href="http://www.factorsim.info/author/dani/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.factorsim.info</link>
	<description>Solutions in media</description>
	<lastBuildDate>Thu, 22 Dec 2011 12:55:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Selenium IDE: testeo automático para webs</title>
		<link>http://www.factorsim.info/2011/10/19/selenium-ide-testeo-automatico-para-webs/</link>
		<comments>http://www.factorsim.info/2011/10/19/selenium-ide-testeo-automatico-para-webs/#comments</comments>
		<pubDate>Wed, 19 Oct 2011 10:34:47 +0000</pubDate>
		<dc:creator>dani</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[Programación]]></category>

		<guid isPermaLink="false">http://www.factorsim.info/?p=1482</guid>
		<description><![CDATA[En Factorsim siempre nos alegra encontrar herramientas de esas que facilitan enormemente la vida. Ya no nos acordamos de lo tedioso que era escribir código javascript antes de jQuery o de debugar código mediante alerts en lugar de usar firebug.
Precisamente en esta linea, hoy he estado evaluando una utilidad que cubre un vacío importante: Selenium IDE. Se trata de unos plugins y un programa servidor que permiten grabar o crear guiones de testeo (habeis grabado alguna vez una macro con word/openoffice? Pues algo muy similar) para después poder ejecutarlos en ...]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-medium wp-image-1483" title="selenium-ide" src="http://www.factorsim.info/wp-content/2011/10/selenium-ide-307x400.gif" alt="" width="307" height="400" />En Factorsim siempre nos alegra encontrar herramientas de esas que facilitan enormemente la vida. Ya no nos acordamos de lo tedioso que era escribir código javascript antes de <a href="http://jquery.com/" target="_blank">jQuery</a> o de debugar código mediante alerts en lugar de usar <a href="http://getfirebug.com/" target="_blank">firebug</a>.</p>
<p>Precisamente en esta linea, hoy he estado evaluando una utilidad que cubre un vacío importante: <a href="http://seleniumhq.org/projects/ide/" target="_blank">Selenium IDE</a>. Se trata de unos plugins y un programa servidor que permiten grabar o crear guiones de testeo (habeis grabado alguna vez una macro con word/openoffice? Pues algo muy similar) para después poder ejecutarlos en masa de manera automática y en diferentes navegadores.</p>
<p>Los comandos que ofrece para usar desde los guiones son muchos y potentes. La principal limitación que le veo a primer vistazo es que no es posible interactuar con plugins (flash, java, etc&#8230;), aunque parecería que la tendencia hacia HTML5 va a hacer esto cada vez un problema menos importante.</p>
<p>Nuestro objetivo es utilizar esta herramienta para instaurar una cultura de testeo automatizado (&#8220;un bug no se da por corregido hasta que no tenga un guión de testeo&#8221;), lanzar tests automáticos cada noche y así no volver a tener una regresión sin enterarnos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.factorsim.info/2011/10/19/selenium-ide-testeo-automatico-para-webs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Por qué utilizar Sprites?</title>
		<link>http://www.factorsim.info/2011/06/21/1320/</link>
		<comments>http://www.factorsim.info/2011/06/21/1320/#comments</comments>
		<pubDate>Tue, 21 Jun 2011 14:19:56 +0000</pubDate>
		<dc:creator>dani</dc:creator>
				<category><![CDATA[Diseño]]></category>
		<category><![CDATA[Factorsim]]></category>
		<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[Interfaces]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://www.factorsim.info/?p=1320</guid>
		<description><![CDATA[Hoy he estado creando un sprite para el nuevo curso que estamos desarrollando. Bueno, en realidad yo he hecho un script y el script ha hecho el sprite, porque no tenía yo ganas de crear 100 imágenes a mano. Este es el resultado:

Las imágenes PNG individuales ocupan unos 950 bytes cada una. Parece poco, pero juntando las 100 salen 94.989 bytes. El sprite con las 100 imágenes dispuestas en una cuadrícula de 10&#215;10 ocupa 14.384 bytes: un 15% del tamaño total de las imágenes individuales. Y de cara al navegador, ...]]></description>
			<content:encoded><![CDATA[<p>Hoy he estado creando un sprite para el nuevo curso que estamos desarrollando. Bueno, en realidad yo he hecho un script y el script ha hecho el sprite, porque no tenía yo ganas de crear 100 imágenes a mano. Este es el resultado:</p>
<p><img class="aligncenter size-full wp-image-1321" title="Sprite" src="http://www.factorsim.info/wp-content/2011/06/progress_sprite.png" alt="" width="250" height="250" /><br />
Las imágenes PNG individuales ocupan unos 950 bytes cada una. Parece poco, pero juntando las 100 salen 94.989 bytes. El sprite con las 100 imágenes dispuestas en una cuadrícula de 10&#215;10 ocupa 14.384 bytes: un 15% del tamaño total de las imágenes individuales. Y de cara al navegador, en lugar de ser 100 peticiones es sólo una única carga (evitando latencia de cada imagen, su overhead, el hecho de que ningún navegador en su sano juicio lanzaría 100 peticiones en paralelo contra el mismo servidor, etc, etc&#8230;) .</p>
<p>Tal vez este sea un caso un poco extremo y habitualmente no nos encontremos con cosas tan evidentes, pero creo que esto explica por qué todos &#8220;los grandes&#8221; (google, yahoo, etc&#8230;) recomiendan el uso de sprites.</p>
<div id="pelotika" style="background: url('http://www.factorsim.info/wp-content/2011/06/progress_sprite.png'); width:25px;height:25px" >
<script>
var x = y = 0;
function update_pelotika()
{
x = (x + 1) % 10;
if (x == 0) { y = ( y + 1 ) % 10; }
jQuery('#pelotika').css('background-position',''+(-25*x)+'px '+(-25*y)+'px');
}
setInterval ( "update_pelotika();", 50 );
</script>
</div>
<p>El resultado? Un linda pelotita que rueda y rueda cuando javascript le sopla&#8230;<br />
Cómo se hace? En mi caso, con este script tan bonito:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#! /bin/sh</span>
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> imgs
<span style="color: #000000; font-weight: bold;">for</span> i <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">seq</span> <span style="color: #000000;">1</span> <span style="color: #000000;">100</span><span style="color: #000000; font-weight: bold;">`</span>; <span style="color: #000000; font-weight: bold;">do</span>
	<span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #660033;">-e</span> s<span style="color: #000000; font-weight: bold;">/</span><span style="color: #666666; font-style: italic;">##ENDANGLE##/`echo &quot;scale=20; ( $i - 25 ) * 2 * 3.1415926535897932384626433832795 / 100&quot; | bc`/g &lt; drawing.svg &gt; drawing_t.svg</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$i</span>...&quot;</span>
	<span style="color: #ff0000;">&quot;/cygdrive/c/Archivos de programa/Inkscape/inkscape.exe&quot;</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'C:\Documents and Settings\DaniM\Escritorio\sprites\imgs\'</span><span style="color: #007800;">$i</span><span style="color: #ff0000;">'.png'</span> <span style="color: #ff0000;">'C:\Documents and Settings\DaniM\Escritorio\sprites\drawing_t.svg'</span>
<span style="color: #000000; font-weight: bold;">done</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Final sprite...&quot;</span>
<span style="color: #007800;">sq</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">seq</span> <span style="color: #000000;">1</span> <span style="color: #000000;">100</span><span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #007800;">names</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #000000; font-weight: bold;">for</span> i <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #007800;">$sq</span>; <span style="color: #000000; font-weight: bold;">do</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span> <span style="color: #7a0874; font-weight: bold;">echo</span> imgs<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$i</span>.png <span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #000000; font-weight: bold;">done</span><span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #000000; font-weight: bold;">/</span>cygdrive<span style="color: #000000; font-weight: bold;">/</span>c<span style="color: #000000; font-weight: bold;">/</span>Archivos\ de\ programa<span style="color: #000000; font-weight: bold;">/</span>ImageMagick-6.4.0-Q8<span style="color: #000000; font-weight: bold;">/</span>montage.exe <span style="color: #660033;">-background</span> transparent <span style="color: #660033;">-tile</span> 10x10 <span style="color: #660033;">-geometry</span> +<span style="color: #000000;">0</span>+<span style="color: #000000;">0</span> <span style="color: #007800;">$names</span> progress_sprite.png</pre></td></tr></table></div>

<p>El funcionamiento es sencillo: uso <em><a href="http://inkscape.org/">inkscape</a></em> para crear un archivo vectorial SVG con el gráfico, utilizo <em>sed</em> para modificarle el ángulo final del arco y lo convierto a PNG invocando <em><a href="http://inkscape.org/">inkscape</a></em> desde la linea de comandos. Una vez tengo las 100 imágenes, utilizo <em>montage</em> (parte de <a href="http://www.imagemagick.org/">ImageMagick</a>) para juntarlas en un sprite.</p>
<p>Como podeis ver, utilicé <a href="http://www.cygwin.com/">cygwin</a>. Si hubiera usado un sistema operativo de verdad, no tendría que haber puesto toda esa marabunta de rutas en dos formatos diferentes.</p>
<p>Una opción interesante hubiera sido procesar el fichero SVG mediante <a href="http://xmlsoft.org/XSLT/xsltproc2.html">xsltproc</a> en lugar de mediante <em>sed</em>. Para casos más complejos seguramente sería una muy buena opción. Pero eso&#8230; lo dejo como ejercicio para el lector.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.factorsim.info/2011/06/21/1320/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WebGL: el siguiente paso de gigante en las WebApps</title>
		<link>http://www.factorsim.info/2011/05/17/webgl-el-siguiente-paso-de-gigante-en-las-webapps/</link>
		<comments>http://www.factorsim.info/2011/05/17/webgl-el-siguiente-paso-de-gigante-en-las-webapps/#comments</comments>
		<pubDate>Tue, 17 May 2011 12:08:42 +0000</pubDate>
		<dc:creator>dani</dc:creator>
				<category><![CDATA[3D]]></category>
		<category><![CDATA[Audiovisual]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Innovación]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://www.factorsim.info/?p=1267</guid>
		<description><![CDATA[Cuando aparecieron las primeras WebApps nos reimos de ellas y nos negamos a llamar aplicación a &#8220;eso&#8221;. Pero dicen que quien rie el último rie mejor. Mediante ingenio, tecnología y nuevos estándares han superado sus limitaciones iniciales y ya hace tiempo que todos somos conscientes de que las aplicaciones web son aplicaciones de pleno derecho.
El más reciente gran paso es WebGL: un API OpenGL ES 2.0 para JavaScript. Es decir: gráficos 3D acelerados por hardware en el navegador. Estamos hablando del mismo tipo de tecnología con la que se desarrollan ...]]></description>
			<content:encoded><![CDATA[<p><a rel="attachment wp-att-1268" href="http://www.factorsim.info/2011/05/17/webgl-el-siguiente-paso-de-gigante-en-las-webapps/body/"><img class="alignright size-full wp-image-1268" style="margin-left: 8px; margin-right: 8px;" title="Google Body Browser" src="http://www.factorsim.info/wp-content/2011/05/body.png" alt="Google Body Browser" width="219" height="300" /></a>Cuando aparecieron las primeras WebApps nos reimos de ellas y nos negamos a llamar aplicación a &#8220;eso&#8221;. Pero dicen que quien rie el último rie mejor. Mediante ingenio, tecnología y nuevos estándares han superado sus limitaciones iniciales y ya hace tiempo que todos somos conscientes de que las aplicaciones web son aplicaciones de pleno derecho.</p>
<p>El más reciente gran paso es WebGL: un API OpenGL ES 2.0 para JavaScript. Es decir: gráficos 3D acelerados por hardware en el navegador. Estamos hablando del mismo tipo de tecnología con la que se desarrollan los juegos normales y corrientes. Y si bien JavaScript es más lento que el lenguaje C/C++ que utilizan los juegos, el hecho de que cada vez se haga más proceso en la GPU y menos en la CPU es una tendencia muy conveniente para hacer WebApps 3D competitivas.</p>
<p>WebGL no es un proyecto de especificación que algún dia verá la luz. Ya está aquí. Las últimas versiones de los principales navegadores ya lo implementan (lo que pone de manifiesto que Internet Explorer cada vez cumple menos su labor como navegador, ya que és la única excepción). Y las aplicaciones web que lo utilizan también están ya aquí. Por ejemplo:</p>
<p><strong>Google Body Browser </strong>(<a href="http://bodybrowser.googlelabs.com/" target="_blank">http://bodybrowser.googlelabs.com/</a>): un atlas anatómico completo en 3D.</p>
<p><strong><a rel="attachment wp-att-1269" href="http://www.factorsim.info/2011/05/17/webgl-el-siguiente-paso-de-gigante-en-las-webapps/quake/"><img class="alignleft size-full wp-image-1269" style="margin-left: 8px; margin-right: 8px;" title="Quake 3 WebGL" src="http://www.factorsim.info/wp-content/2011/05/quake.png" alt="Quake 3 WebGL" width="300" height="168" /></a>Quake WebGL</strong>: por si teníamos alguna duda de si esto iba a servir para juegos. Hay una versión completa de Quake 2 (<a href="http://playwebgl.com/games/quake-2-webgl/" target="_blank">http://playwebgl.com/games/quake-2-webgl/</a>) y visores de niveles de Quake 3 (<a href="http://media.tojicode.com/q3bsp/" target="_blank">http://media.tojicode.com/q3bsp/</a>). Seguramente WebGL diera para portar juegos más modernos, si el código de estos estuviera disponible, claro.</p>
<p>Y otros muchos ejemplos de todo tipo: <a href="http://www.chromeexperiments.com/webgl" target="_blank">http://www.chromeexperiments.com/webgl</a></p>
<p><a rel="attachment wp-att-1270" href="http://www.factorsim.info/2011/05/17/webgl-el-siguiente-paso-de-gigante-en-las-webapps/large_aquarium/"><img class="alignright size-full wp-image-1270" style="margin-left: 8px; margin-right: 8px;" title="Aquario WebGL" src="http://www.factorsim.info/wp-content/2011/05/large_aquarium.png" alt="Aquario WebGL" width="300" height="169" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.factorsim.info/2011/05/17/webgl-el-siguiente-paso-de-gigante-en-las-webapps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Obtener la nota final de un alumno en Moodle</title>
		<link>http://www.factorsim.info/2009/11/12/obtener-la-nota-final-de-un-alumno-en-moodle/</link>
		<comments>http://www.factorsim.info/2009/11/12/obtener-la-nota-final-de-un-alumno-en-moodle/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 11:38:15 +0000</pubDate>
		<dc:creator>dani</dc:creator>
				<category><![CDATA[Factorsim]]></category>
		<category><![CDATA[Moodle]]></category>

		<guid isPermaLink="false">http://www.factorsim.info/?p=665</guid>
		<description><![CDATA[Consultar la nota del alumno logeado en un curso parece una operación sencilla. Podemos necesitarla para decidir si ha aprovado o no, para decidir nostrarle una actividad de final de curso, un diploma, una felicitación&#8230;
Moodle cuenta con una función grade_get_grades() capaz de proporcionarnos cualquier nota EXCEPTO las notas de curso, de categorías y las manuales. Por tanto, no nos queda más remedio que buscarnos esas notas de otra manera.
En el caso de moodle 1.8 / 1.9, podemos obtenerlas con una simple consulta a la base de datos:

$grades = get_record_sql("SELECT g.finalgrade,
 ...]]></description>
			<content:encoded><![CDATA[<p>Consultar la nota del alumno logeado en un curso parece una operación sencilla. Podemos necesitarla para decidir si ha aprovado o no, para decidir nostrarle una actividad de final de curso, un diploma, una felicitación&#8230;</p>
<p>Moodle cuenta con una función <em>grade_get_grades()</em> capaz de proporcionarnos cualquier nota EXCEPTO las notas de curso, de categorías y las manuales. Por tanto, no nos queda más remedio que buscarnos esas notas de otra manera.</p>
<p>En el caso de moodle 1.8 / 1.9, podemos obtenerlas con una simple consulta a la base de datos:</p>
<blockquote>
<pre class="brush:php; toolbar: false">$grades = get_record_sql("SELECT g.finalgrade,
                                 g.rawgrademin,
                                 g.rawgrademax
                          FROM ".$CFG-&gt;prefix."grade_grades g,
                               ".$CFG-&gt;prefix."grade_items i
                          WHERE i.itemtype='course' AND
                                i.id=g.itemid AND
                                i.courseid='".$COURSE-&gt;id."' AND
                                g.userid='".$USER-&gt;id."'");</pre>
</blockquote>
<p>En versiones más antiguas, en cambio, no disponemos de estas notas ya calculadas en la base de datos. Cada vez que se utilizan, el módulo de gradebook obtiene las notas parciales, invoca a las funciones de evaluación de notas de los módulos pertinentes y pondera los resultados para terminar con una nota global. Nuestras dos únicas opciones son replicar ese comportamiento a mano o bien intentar reaprovechar el código del gradebook. Esto último es lo que hemos hecho en Factorsim en el siguiente ejemplo para Moodle 1.6:</p>
<blockquote>
<pre class="brush:php; toolbar: false">require_once($CFG-&gt;dirroot.'/grade/lib.php');
$grades = grade_get_formatted_grades();
$grade = $grades[0][$USER-&gt;id]['student_data'];</pre>
</blockquote>
<p>Esta última solución es un buen ejemplo de &#8220;matar mosquitos a cañonazos&#8221;, porque la función <em>grade_get_formatted_grades()</em> nos devuelve todas las notas de todos los alumnos del curso. Nosotros después las descartamos todas excepto las del alumno que nos interesa.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.factorsim.info/2009/11/12/obtener-la-nota-final-de-un-alumno-en-moodle/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Los Miserables, versión Drupal</title>
		<link>http://www.factorsim.info/2009/07/20/los-miserables-version-drupal/</link>
		<comments>http://www.factorsim.info/2009/07/20/los-miserables-version-drupal/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 08:03:59 +0000</pubDate>
		<dc:creator>dani</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Factorsim]]></category>

		<guid isPermaLink="false">http://www.factorsim.info/2009/07/20/los-miserables-version-drupal/</guid>
		<description><![CDATA[Si viésemos anunciado un módulo que promete hacer miserables a los usuarios, redireccionándolos a páginas incorrectas, dándoles errores, introduciendo esperas innecesarias, etc&#8230; nos pensaríamos que se trata de una broma, ¿verdad?
Pues drupal tiene un módulo así, y no es ninguna broma. Se trata de un módulo para penalizar a usuarios con comportamientos menos que ejemplares. Es una medida menos drástica que borrarle la cuenta de un plumazo.
En cualquier caso, estoy seguro de que es una práctica muy polémica y demostrar su efectividad o la ausencia de ella promete ser complicado.
El ...]]></description>
			<content:encoded><![CDATA[<p>Si viésemos anunciado un módulo que promete hacer miserables a los usuarios, redireccionándolos a páginas incorrectas, dándoles errores, introduciendo esperas innecesarias, etc&#8230; nos pensaríamos que se trata de una broma, ¿verdad?</p>
<p>Pues drupal tiene un módulo así, y no es ninguna broma. Se trata de un módulo para penalizar a usuarios con comportamientos menos que ejemplares. Es una medida menos drástica que borrarle la cuenta de un plumazo.</p>
<p>En cualquier caso, estoy seguro de que es una práctica muy polémica y demostrar su efectividad o la ausencia de ella promete ser complicado.</p>
<p>El módulo podeis encontrarlo aquí: <a href="http://drupal.org/project/misery">http://drupal.org/project/misery</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.factorsim.info/2009/07/20/los-miserables-version-drupal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Moodle Access: nuestro primer gadget de iGoogle</title>
		<link>http://www.factorsim.info/2009/06/25/moodle-access-nuestro-primer-gidget-de-igoogle/</link>
		<comments>http://www.factorsim.info/2009/06/25/moodle-access-nuestro-primer-gidget-de-igoogle/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 14:38:12 +0000</pubDate>
		<dc:creator>dani</dc:creator>
				<category><![CDATA[e-learning]]></category>
		<category><![CDATA[Factorsim]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[m-learning]]></category>
		<category><![CDATA[Moodle]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://www.factorsim.info/?p=303</guid>
		<description><![CDATA[
El recuadro sobre estas lineas es el primer gadget de iGoogle que hemos creado desde Factorsim. Sirve para vincular cualquier site de Moodle (configurable) desde una página iGoogle&#8230; o&#8230; desde prácticamente cualquier otra página, en realidad. Por ejemplo: aquí.
No se trata de un screenshot. Funciona. Podeis probarlo. Si teneis una cuenta de http://www.aprendizajeonline.es, podeis utilizar este gadget para entrar directamente.
Con el siguiente enlace podeis añadir este gadget a vuestro iGoogle.
]]></description>
			<content:encoded><![CDATA[<p><script src="http://www.gmodules.com/ig/ifr?url=http://hosting.gmodules.com/ig/gadgets/file/114082278897554871726/moodle_access.xml&amp;up_moodle_address=http%3A%2F%2Fwww.factormoodle.com%2Flogin%2Findex.php&amp;synd=open&amp;w=320&amp;h=80&amp;title=Moodle+Access&amp;border=%23ffffff%7C3px%2C1px+solid+%23999999&amp;output=js"></script></p>
<p>El recuadro sobre estas lineas es el primer gadget de iGoogle que hemos creado desde Factorsim. Sirve para vincular cualquier site de Moodle (configurable) desde una página iGoogle&#8230; o&#8230; desde prácticamente cualquier otra página, en realidad. Por ejemplo: aquí.</p>
<p>No se trata de un screenshot. Funciona. Podeis probarlo. Si teneis una cuenta de <a title="http://www.factormoodle.com" href="http://www.aprendizajeonline.es" target="_blank">http://www.aprendizajeonline.es</a>, podeis utilizar este gadget para entrar directamente.</p>
<p>Con el siguiente enlace <a href="http://www.google.com/ig/adde?moduleurl=hosting.gmodules.com/ig/gadgets/file/114082278897554871726/moodle_access.xml" target="_blank">podeis añadir este gadget a vuestro iGoogle</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.factorsim.info/2009/06/25/moodle-access-nuestro-primer-gidget-de-igoogle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ali, Eli e Ivana en un dia de rodaje</title>
		<link>http://www.factorsim.info/2009/06/11/ali-eli-e-ivana-en-un-dia-de-rodaje/</link>
		<comments>http://www.factorsim.info/2009/06/11/ali-eli-e-ivana-en-un-dia-de-rodaje/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 18:27:17 +0000</pubDate>
		<dc:creator>dani</dc:creator>
				<category><![CDATA[Factorsim]]></category>
		<category><![CDATA[Vídeos 2.0]]></category>

		<guid isPermaLink="false">http://www.factorsim.info/?p=273</guid>
		<description><![CDATA[
Ilustración por Cristina
]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.factorsim.info/wp-content/2009/06/dsc00281_ed_sml.jpg"><img class="aligncenter size-full wp-image-274" title="Un dia de rodaje" src="http://www.factorsim.info/wp-content/2009/06/dsc00281_ed_sml.jpg" alt="Un dia de rodaje" width="500" height="298" /></a></p>
<p>Ilustración por Cristina</p>
]]></content:encoded>
			<wfw:commentRss>http://www.factorsim.info/2009/06/11/ali-eli-e-ivana-en-un-dia-de-rodaje/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Por qué utilizamos SVN</title>
		<link>http://www.factorsim.info/2009/05/12/por-que-utilizamos-svn/</link>
		<comments>http://www.factorsim.info/2009/05/12/por-que-utilizamos-svn/#comments</comments>
		<pubDate>Tue, 12 May 2009 07:51:56 +0000</pubDate>
		<dc:creator>dani</dc:creator>
				<category><![CDATA[Gestión de Proyectos]]></category>
		<category><![CDATA[Programación]]></category>

		<guid isPermaLink="false">http://www.factorsim.info/?p=192</guid>
		<description><![CDATA[
Hay ya muchos textos escritos sobre Subversion, pero hoy no hablaré de sus características, de lo que puede hacer ni de cómo lo hace. Hoy me centraré en qué es lo que le encontramos interesante para utilizarlo como herramienta en una empresa. En otras palabras: por qué lo utilizamos.


Ha llamado un cliente. Dice que 	tiene un problema con la versión j29rc20. ¿Alguien sabe de dónde 	puedo conseguir esa versión para hacer unas pruebas?


Uffff&#8230; j29rc20 significa “jueves 	29, versión que estaba en el discoduro de Ricardo Cano a las 2:00”. 	¡A ...]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom: 0cm;">Hay ya muchos textos escritos sobre Subversion, pero hoy no hablaré de sus características, de lo que puede hacer ni de cómo lo hace. Hoy me centraré en qué es lo que le encontramos interesante para utilizarlo como herramienta en una empresa. En otras palabras: por qué lo utilizamos.<span id="more-192"></span></p>
<ul>
<li>
<p style="margin-bottom: 0cm;">Ha llamado un cliente. Dice que 	tiene un problema con la versión j29rc20. ¿Alguien sabe de dónde 	puedo conseguir esa versión para hacer unas pruebas?</p>
</li>
<li>
<p style="margin-bottom: 0cm;">Uffff&#8230; j29rc20 significa “jueves 	29, versión que estaba en el discoduro de Ricardo Cano a las 2:00”. 	¡A saber dónde estará esa versión ya ahora!</p>
</li>
</ul>
<p style="margin-bottom: 0cm;">Subversion guarda todas las versiones que pasan por sus manos. Además, permite dar un nombre (etiquetas, en nomenclatura SVN) a cualquiera de esas versiones. Así, si j29rc20 fuese una etiqueta SVN, obtener esa versión seria trivial.</p>
<p style="margin-bottom: 0cm;">
<p style="margin-bottom: 0cm;">
<ul>
<li>
<p style="margin-bottom: 0cm;">¡Ostras! ¡He copiado esta 	versión encima de la antigua pensando que no tenía nada importante 	y me he cargado todo mi trabajo de la última semana!</p>
</li>
</ul>
<p style="margin-bottom: 0cm;">En un repositorio SVN, la incorporación y mezcla de los cambios hechos por los diferentes usuarios (o incluso de copias de trabajo distintas de una misma persona) se realiza de manera automática, garantizando que nadie sobreescribe el trabajo de otro. Y si has borrado un archivo que no debías o has hecho cambios que no son correctos, siempre puedes recuperar cualquiera de las versiones anteriores que hay guardadas.</p>
<p style="margin-bottom: 0cm;">
<p style="margin-bottom: 0cm;">
<ul>
<li>
<p style="margin-bottom: 0cm;">¿Cuando corregimos la alineación 	de las imágenes para IE6 lo hicimos mediante CSS o JS?</p>
</li>
</ul>
<p style="margin-bottom: 0cm;">Subversion permite comparar fácilmente cualquier par de versiones de cualquier archivo. Si unimos a esto la posibilidad de explicar en los comentarios qué es lo que hemos modificado en cada versión, responder a esta pregunta es tan fácil cómo ojear la lista de comentarios e inspeccionar las diferencias de la versión relevante con la anterior. Además, nos vendrá de regalo la información sobre quién hizo ese cambio y cuándo.</p>
<p style="margin-bottom: 0cm;">
<p style="margin-bottom: 0cm;">
<ul>
<li>
<p style="margin-bottom: 0cm;">Queremos implementar una 	funcionalidad experimental que va a afectar la estabilidad del 	proyecto pero incluirla en la siguiente versión sólo si está ya 	suficientemente estable. Nos arriesgamos a ir haciendo los cambios o 	cómo lo hacemos?</p>
</li>
</ul>
<p style="margin-bottom: 0cm;">En el mundo SVN la respuesta es única: mediante una rama. En cada rama que creemos podremos tener una evolución independiente del mismo código, de manera que no se interfieran entre ellas. Crea una rama nueva para implementar allí la funcionalidad experimental. Cuando el código esté maduro podrás integrar fácilmente los cambios en la rama principal antes de hacer la nueva versión.  Si esa integración de cambios no llega a tiempo, la rama principal incorporará otros cambios no desestabilizadores pero nada de la rama experimental.</p>
<p style="margin-bottom: 0cm;">
<p style="margin-bottom: 0cm;">
<ul>
<li>
<p style="margin-bottom: 0cm;">Tenemos un directorio JS que es 	común a todos estos proyectos, pero ahora ha llegado una versión 	nueva del JS. ¿Tenemos que copiarlo a todos los proyectos uno por 	uno?</p>
</li>
</ul>
<p style="margin-bottom: 0cm;">En SVN, no. Separa el directorio JS en un apartado del repositorio y vincúlalo al resto de proyectos. De esta manera, los cambios de cualquiera de los proyectos se trasladarán al JS común y de ahí a todos los demás proyectos. Modifica el JS común o la copia vinculada a cualquiera de los proyectos y todos los demás sitios se actualizarán por arte de magia. Todo lo que dijimos antes sobre la seguridad de no sobreescribir cambios de otros y las versiones se aplica aquí también, por supuesto.</p>
<p style="margin-bottom: 0cm;">
<p style="margin-bottom: 0cm;">
<p style="margin-bottom: 0cm;">
<p style="margin-bottom: 0cm;"><strong>Pero no todo es de color de rosa&#8230;</strong></p>
<p style="margin-bottom: 0cm;">Subversion al fin y al cabo es sólo una herramienta. Que resulte beneficiosa o nociva depende del uso que se le dé. Hay algunos problemas muy comunes:</p>
<p style="margin-bottom: 0cm;">Subversion permite tener todos los archivos de un proyecto muy bien ordenados e indentificados. Pero no obliga a ello. De hecho, con etiquetas, ramas, vínculos y una estructura de directorios mal definida SVN puede llevarnos a un nuevo nivel de caos desconocido hasta la fecha.</p>
<p style="margin-bottom: 0cm;">Por otro lado, como cualquier otra tecnología, requiere un aprendizaje. Trabajar con una copia de trabajo en SVN es muy similar a trabajar con archivos normales. Demasiado parecido. Pero quienes acostumbren a copiar proyectos (o partes de ellos) de un directorio a otro se encontrarán con unas cuantas sorpresas desagradables al intentar sincronizar su trabajo con SVN, sin ir más lejos. También hay que aprender a crear archivos nuevos, borrarlos o incluyo renombrarlos o cambiarlos de sitio cuando residen en un proyecto SVN. Es igual de sencillo que hacer esas operaciones sobre archivos normales, pero hay que recordar que la manera concreta de hacerlo cambia.</p>
<p style="margin-bottom: 0cm;">Por último, para aprovechar los proyectos organizados que nos posibilita un repositorio de código lo mejor es tener una gestión organizada. Una gestión que establezca claramente las entregas, las versiones, los objetivos de cada una de ellas, las iteraciones de testeo y corrección de errores, etc&#8230;</p>
<p style="margin-bottom: 0cm;">Pero todo esto es ya material para otro post (sí: es una amenaza).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.factorsim.info/2009/05/12/por-que-utilizamos-svn/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>GoogleMaps + Drupal</title>
		<link>http://www.factorsim.info/2008/07/01/googlemaps-drupal/</link>
		<comments>http://www.factorsim.info/2008/07/01/googlemaps-drupal/#comments</comments>
		<pubDate>Tue, 01 Jul 2008 08:00:34 +0000</pubDate>
		<dc:creator>dani</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Interfaces]]></category>
		<category><![CDATA[Internet]]></category>

		<guid isPermaLink="false">http://www.factorsim.info/?p=99</guid>
		<description><![CDATA[En http://www.factormoodle.com/drupal57/googlemap_view tenemos (desde hace un tiempo, de hecho) un ejemplo de uso de googlemaps en drupal.

Lo más interesante es cómo está hecho. Y es que este ejemplo combina los dos elementos que considero fundamentales en drupal: CCK y vistas.  Cada punto marcado en el mapa es un nodo de drupal, de un tipo GoogleMaps Marker. Este tipo contiene sólamente un título y un campo CCK para introducir las coordenadas.
De esta manera, cualquiera que cree un nodo de este tipo, hará aparecer un nuevo punto en el mapa.  ...]]></description>
			<content:encoded><![CDATA[<p>En <a href="http://www.factormoodle.com/drupal57/googlemap_view" target="_blank">http://www.factormoodle.com/drupal57/googlemap_view</a> tenemos (desde hace un tiempo, de hecho) un ejemplo de uso de googlemaps en drupal.</p>
<p><a href="http://www.factorsim.info/wp-content/2008/06/drupal_google.jpg"><img class="alignnone size-full wp-image-100" title="drupal_google" src="http://www.factorsim.info/wp-content/2008/06/drupal_google.jpg" alt="" width="450" height="215" /></a></p>
<p>Lo más interesante es cómo está hecho. Y es que este ejemplo combina los dos elementos que considero fundamentales en drupal: <strong>CCK y vistas</strong>.  Cada punto marcado en el mapa es un nodo de drupal, de un tipo <strong>GoogleMaps Marker</strong>. Este tipo contiene sólamente un título y un campo CCK para introducir las coordenadas.</p>
<p>De esta manera, cualquiera que cree un nodo de este tipo, hará aparecer un nuevo punto en el mapa.  El mapa no es otra cosa más que una vista. Es decir: una lista de todos los nodos de tipo GoogleMaps Marker, sólo que con un formato algo diferente de la típica tabla mostrando los campos de cada entrada.  El resto son unas cuantas llamadas al API de GoogleMaps, que está todo lo bien diseñada que cabía esperar.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.factorsim.info/2008/07/01/googlemaps-drupal/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MoodleMoot 2008 &#8211; Barcelona</title>
		<link>http://www.factorsim.info/2008/06/19/moodlemoot-2008/</link>
		<comments>http://www.factorsim.info/2008/06/19/moodlemoot-2008/#comments</comments>
		<pubDate>Thu, 19 Jun 2008 21:07:09 +0000</pubDate>
		<dc:creator>dani</dc:creator>
				<category><![CDATA[e-learning]]></category>
		<category><![CDATA[Moodle]]></category>

		<guid isPermaLink="false">http://www.factorsim.info/2008/06/19/moodlemoot-2008/</guid>
		<description><![CDATA[ 
 MoodleMoot, la reunión de usuarios de Moodle, celebrará su próxima edición en Octubre en Barcelona. Ya están abiertas las incripciones y el proceso de &#8220;call for papers&#8221;. El énfasis de esta edición se quiere poner en ofrecer más talleres prácticos y menos clases magistrales.
FactorSIM ya está preparándose para asistir.Si algún lector del blog se anima a ir y le gustaría tomar un café&#8230;
]]></description>
			<content:encoded><![CDATA[<p><a style="text-decoration: none" title="MoodleMoot Barcelona 2008" href="http://www.moodlemoot.net"> <img style="border-width: initial; border-color: initial; border-style: none" title="MoodleMoot Barcelona 2008" src="http://www.moodlemoot.net/file.php/1/banners/80_moodlemoot_n.png" alt="MoodleMoot Barcelona 2008" /></a></p>
<p style="text-align: left"><a style="text-decoration: none" title="MoodleMoot Barcelona 2008" href="http://www.moodlemoot.net"></a><a style="text-decoration: none" title="MoodleMoot Barcelona 2008" href="http://www.moodlemoot.net"> </a><a title="MoodleMoot" href="http://www.moodlemoot.net" target="_blank">MoodleMoot</a>, la reunión de usuarios de <a title="Moodle" href="http://www.moodle.net" target="_blank">Moodle</a>, celebrará su próxima edición en <strong>Octubre</strong> en Barcelona. Ya están abiertas las incripciones y el proceso de &#8220;call for papers&#8221;. El énfasis de esta edición se quiere poner en ofrecer más talleres prácticos y menos clases magistrales.</p>
<p style="text-align: left">FactorSIM ya está preparándose para asistir.Si algún lector del blog se anima a ir y le gustaría tomar un <a href="mailto:info@factorsim.com">café</a>&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.factorsim.info/2008/06/19/moodlemoot-2008/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

