<?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:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-15782557</atom:id><lastBuildDate>Wed, 23 May 2012 21:27:58 +0000</lastBuildDate><category>Personal</category><category>screen</category><category>Música</category><category>terminal</category><category>Programacion</category><category>Internet</category><category>Ruby</category><category>Linux</category><category>Hardware</category><category>minipost blogosfera</category><category>Gadgets</category><category>Viajes</category><category>Gastronomía</category><category>Moodle</category><category>Ocio</category><category>cine</category><category>asciidoc</category><category>Inteligencia colectiva</category><category>natación</category><category>deliberación</category><category>katas</category><category>Educacion</category><category>Colaboración online</category><category>competencias básicas</category><title>Las últimas neuronas de Canx</title><description>Ideas inconexas de un pelotón de neuronas suicidas lanzadas al vacío del ciberespacio</description><link>http://canx.blogspot.com/</link><managingEditor>noreply@blogger.com (Ruben Cancho)</managingEditor><generator>Blogger</generator><openSearch:totalResults>292</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/canx" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="canx" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><guid isPermaLink="false">tag:blogger.com,1999:blog-15782557.post-4582485520989468828</guid><pubDate>Wed, 23 May 2012 21:14:00 +0000</pubDate><atom:updated>2012-05-23T23:27:58.183+02:00</atom:updated><title>Edicion colaborativa online y educación</title><description>
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/1eMNHS45rhK_9Rmn1_YpoxBwVbY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1eMNHS45rhK_9Rmn1_YpoxBwVbY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/1eMNHS45rhK_9Rmn1_YpoxBwVbY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1eMNHS45rhK_9Rmn1_YpoxBwVbY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://etherpad.org/wp-content/blogs.dir/954/files/etherpad-lite-screenshots/chat-view.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="169" src="http://etherpad.org/wp-content/blogs.dir/954/files/etherpad-lite-screenshots/chat-view.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
Hace unos meses que me llama la atención todo el tema de aplicaciones web en tiempo real, y más con el auge de los frameworks de servidor en javascript como &lt;a href="http://nodejs.org/"&gt;node&lt;/a&gt; o &lt;a href="http://meteorserver.org/"&gt;meteor&lt;/a&gt;, que permiten crear este tipo de aplicaciones de forma muy eficiente y sin salirse del modelo orientado a eventos de Javascript.&lt;br /&gt;
&lt;br /&gt;
Una de estas aplicaciones que me ha llamado más la atención es &lt;a href="https://github.com/Pita/etherpad-lite"&gt;Etherpad-lite&lt;/a&gt;, un editor colaborativo que está basado en &lt;a href="http://etherpad.com/"&gt;Etherpad &lt;/a&gt;pero a diferencia de este es muy estable y no consume apenas recursos.&lt;br /&gt;
&lt;br /&gt;
La cuestión es que quería comprobar si se podía utilizar esta aplicación en clase y ver si encajaba bien con una metodología de trabajo en grupo. La prueba la he realizado creando grupos de 4 personas que usaban un pad común y en el que yo también me encontraba. La práctica consistía en la realización en grupo de un conjunto de pasos y preguntas orientadas a la consulta y investigación online. Mediante el chat lateral los alumnos podían coordinarse o hacerme preguntas. Las preguntas orales no se permitían siempre y cuando no fueran problemas técnicos.&lt;br /&gt;
&lt;br /&gt;
El Etherpad-lite ha grabado el historial de todo el proceso realizado, lo que permite una evaluación posterior de todo el proceso: quien ha realizado cada parte, como se han ido solucionando los problemas, que interacciones han habido en el grupo, que preguntas se han realizado, etc...
Pero la gran ventaja de utilizar esta herramienta es que tienes un feedback instantaneo de todo el proceso: como profesor puedo ver y corregir en el mismo instante un error que se está escribiendo en tiempo real. Y no solo yo, cualquier otro miembro de su mismo grupo puede hacer lo mismo.&lt;br /&gt;
&lt;br /&gt;
Las preguntas contestadas son recibidas únicamente por el grupo que tiene interés, creandose 0 interferencias, y guardandose en el chat para una posterior lectura: adios a las afonías! Eso sí, el estrés verbal se ve transformado en un estrés de cambio de pestaña para controlar y dar contestación a todos los grupos :)&lt;br /&gt;
&lt;br /&gt;
Respecto al grupo me permite ver facilmente los roles de cada uno: los lideres, los trabajadores, etc... y motiva a los alumnos que no se involucran normalmente a colaborar más, ya que sus colaboraciones quedan reflejadas y registradas por el color de usuario de sus ediciones. Los alumnos más tímidos se sienten más comodos con la comunicación via chat.
A esto hay que sumar que la clase está mucho más tranquila y el tiempo se les pasa volando, lo cual para mí ya sería de por sí todo un exito.&lt;br /&gt;
&lt;br /&gt;
En definitiva, que esta herramienta ha sido un gran descubrimiento y da un gran valor añadido en la enseñanza de cualquier materia, pero como profesor de informática su aprendizaje es aún más valioso porque la colaboración online en tiempo real va a ser una de las competencias necesarias en muchas profesiones del futuro. 100% recomendable.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15782557-4582485520989468828?l=canx.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://canx.blogspot.com/2012/05/edicion-colaborativa-online-y-educacion.html</link><author>noreply@blogger.com (Ruben Cancho)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-15782557.post-2174614319227445083</guid><pubDate>Wed, 02 May 2012 08:01:00 +0000</pubDate><atom:updated>2012-05-02T12:24:31.929+02:00</atom:updated><title>Vim Zencoding</title><description>
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OYOgaIb3AvY5uEu9vwHwVu8Dx-g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OYOgaIb3AvY5uEu9vwHwVu8Dx-g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OYOgaIb3AvY5uEu9vwHwVu8Dx-g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OYOgaIb3AvY5uEu9vwHwVu8Dx-g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Escribir html con vim puede ser un infierno así que me he planteado utilizar algún plugin como &lt;a href="http://mattn.github.com/zencoding-vim/"&gt;Zencoding&lt;/a&gt; que me permita acelerar su escritura. 

Voy a escribir un resumen de los principales atajos, principalmente para evitar mi mala memoria:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table border="1"&gt;
   &lt;tbody&gt;
&lt;tr&gt;
      &lt;th&gt;Accion previa&lt;/th&gt;
      &lt;th&gt;Atajo&lt;/th&gt;
      &lt;th&gt;Efecto conseguido&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
      &lt;td&gt;html:5&lt;/td&gt;
      &lt;td&gt;CTRL+y,&lt;/td&gt;
      &lt;td&gt;Crea la estructura básica de un archivo HTML&lt;/td&gt;

&lt;/tr&gt;
&lt;tr&gt;
      &lt;td&gt;div&amp;gt;ul&amp;gt;li*3&lt;/td&gt;
      &lt;td&gt;(CTRL+y) + ,&lt;/td&gt;
      &lt;td&gt;Crea un div con una lista desordenada de 3 elementos vacios&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
      &lt;td&gt;div#foo&lt;/td&gt;
      &lt;td&gt;(CTRL+y) + ,&lt;/td&gt;
      &lt;td&gt;Crea un div con el identificador "foo"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
      &lt;td&gt;div.foo&lt;/td&gt;
      &lt;td&gt;(CTRL+y) + ,&lt;/td&gt;
      &lt;td&gt;Crea un div con la clase "foo"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
      &lt;td&gt;div&gt;p#foo$*3&lt;/td&gt;
      &lt;td&gt;(CTRL+y) + ,&lt;/td&gt;
      &lt;td&gt;Crea un div con 3 párrafos que tienen los identificadores foo1, foo2 y foo3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
      &lt;td&gt;http://www.google.es&lt;/td&gt;
      &lt;td&gt;(CTRL+y) + a&lt;/td&gt;
      &lt;td&gt;Crea un enlace a la URL con el contenido del título de la página&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
      &lt;td&gt;(Sobre una etiqueta)&lt;/td&gt;
      &lt;td&gt;(CTRL+y) + k&lt;/td&gt;
      &lt;td&gt;Borra la etiqueta y todo su contenido&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
      &lt;td&gt;(Sobre una selección visual)&lt;/td&gt;
      &lt;td&gt;(CTRL+y) + ,&lt;/td&gt;
      &lt;td&gt;Permite escribir una expresión que envuelva a la selección. Por ejemplo, escribiendo el tag "div*" envolvería a cada linea seleccionada con una etiqueta div. Si escribieramos el tag "ul&gt;li*" crearía una lista desordenada.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;(CTRL+y) + n&lt;/td&gt;
      &lt;td&gt;Se posiciona en modo de inserción en la siguiente etiqueta con contenido vacío&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;(CTRL+y) + N&lt;/td&gt;
      &lt;td&gt;Se posiciona en modo de inserción en la anterior etiqueta con contenido vacío&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
      &lt;td&gt;(Sobre una etiqueta)&lt;/td&gt;
      &lt;td&gt;(CTRL+y) + /&lt;/td&gt;
      &lt;td&gt;Comenta la etiqueta&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
      &lt;td&gt;(Sobre una etiqueta)&lt;/td&gt;
      &lt;td&gt;(CTRL+y) + d&lt;/td&gt;
      &lt;td&gt;Selecciona &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;div style="color: red;"&gt;
TODO: continuar añadiendo atajos...
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15782557-2174614319227445083?l=canx.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://canx.blogspot.com/2012/05/vim-zencoding.html</link><author>noreply@blogger.com (Ruben Cancho)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-15782557.post-2699974910625767959</guid><pubDate>Sun, 26 Feb 2012 18:43:00 +0000</pubDate><atom:updated>2012-03-01T10:37:23.164+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Ruby</category><category domain="http://www.blogger.com/atom/ns#">katas</category><title>kata de ruby: data munging</title><description>
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-CDI-n1cRCbVisX3n8JDM36BNlQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-CDI-n1cRCbVisX3n8JDM36BNlQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-CDI-n1cRCbVisX3n8JDM36BNlQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-CDI-n1cRCbVisX3n8JDM36BNlQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Continuando con la entrada anterior esta vez le ha tocado a la &lt;a href="http://codekata.pragprog.com/2007/01/kata_four_data_.html"&gt;kata 4: data munging&lt;/a&gt;. Esta kata está dividida en 3 partes. &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Primera parte&lt;/b&gt;&lt;br /&gt;
La primera se titula "Weather Data" y consiste en parsear un archivo de texto (&lt;a href="http://pragdave.pragprog.com/data/weather.dat"&gt;weather.dat&lt;/a&gt;) que contiene datos de temperaturas diarios y hay que obtener el día en el que las temperaturas máxima y mínima se distanciaron menos. Esta es mi versión en Ruby:&lt;br /&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/1918215.js"&gt; &lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Segunda parte&lt;/b&gt;&lt;br /&gt;
La segunda parte de la kata es muy parecida a la primera. Esta vez tenemos una tabla de equipos de futbol y tenemos que calcular que equipo tiene una diferencia menor entre los goles que ha encajado y los que ha marcado. Es prácticamente calcado al anterior:&lt;br /&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/1926735.js"&gt; &lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Tercera parte&lt;/b&gt;&lt;br /&gt;
En la tercera parte nos proponen intentar refactorizar el código al máximo posible. He conseguido que se pueda resolver las dos partes anteriores en una linea cada una. Eso sí , quizás al refactorizar se ha perdido la expresividad de los símbolos, al no utilizar hashes.&lt;br /&gt;
Por otro lado también falta por refactorizar el calculo del mínimo, que queda pendiente.&lt;br /&gt;
&lt;script src="https://gist.github.com/1945149.js"&gt; &lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15782557-2699974910625767959?l=canx.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://canx.blogspot.com/2012/02/kata-4-data-munging-parte-1.html</link><author>noreply@blogger.com (Ruben Cancho)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-15782557.post-283837425686492528</guid><pubDate>Sun, 12 Feb 2012 17:06:00 +0000</pubDate><atom:updated>2012-02-24T20:54:32.550+01:00</atom:updated><title>kata de ruby: karate chop (v1)</title><description>
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qMPWAaBUwBHsOlkrdnEi9SmsuxA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qMPWAaBUwBHsOlkrdnEi9SmsuxA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qMPWAaBUwBHsOlkrdnEi9SmsuxA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qMPWAaBUwBHsOlkrdnEi9SmsuxA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-0kmLVzA0X-c/Tzfw0KrOsPI/AAAAAAAAA2o/ZFMStBlo3JQ/s1600/Iaido2.jpg" imageanchor="1" style="clear:left; float:left;margin-right:1em; margin-bottom:1em"&gt;&lt;img border="0" height="233" width="320" src="http://4.bp.blogspot.com/-0kmLVzA0X-c/Tzfw0KrOsPI/AAAAAAAAA2o/ZFMStBlo3JQ/s320/Iaido2.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
En mi camino por recuperarme como programador (por lo que pueda pasar con la &lt;a href="http://www.publico.es/espana/361960/los-recortes-dejan-a-la-escuela-publica-tiritando"&gt;educación pública y tal&lt;/a&gt;) me he propuesto leer unos cuantos libros y aprender Ruby, RoR, Javascript, JQuery, HTML5, TDD, BDD, metodologías agiles, scrum, craftmanship... buff! que alguien pare el mundo que yo me bajo!&lt;br /&gt;
Al final el que mucho abarca poco aprieta y a veces tanta tecnología nueva nubla la vista. Uno de los ejercicios que recomienda Dave Thomas en el libro &lt;a href="http://pragprog.com/the-pragmatic-programmer"&gt;The Pragmatic Programmer&lt;/a&gt; para no bloquearse y avanzar en el aprendizaje es hacer &lt;a href="http://en.wikipedia.org/wiki/Kata_%28programming%29"&gt;katas de programación&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Las katas son problemas sencillos que hay que resolver de diferentes formas y que pueden ayudarte a descubrir nuevas formas de hacer las cosas. Parece ser que a veces con tanto framework y librería uno se olvida de la programación básica y estos ejercicios creo que te permiten respirar aire nuevo antes de volver al intrincado mundo de los proyectos.&lt;br /&gt;
&lt;br /&gt;
Otra ventaja de las katas es que no requieren demasiado tiempo así que me he planteado hacer algunas de las que he encontrado en &lt;a href="http://codekata.pragprog.com/2007/01/code_kata_backg.html"&gt;CodeKata&lt;/a&gt;. De momento esta es la primera solución que he realizado para la kata 2, titulada "&lt;a href="http://codekata.pragprog.com/2007/01/kata_two_karate.html"&gt;karate chop&lt;/a&gt;":&lt;br /&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/1809602.js"&gt; &lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
UPDATE 1: Vesbri me avisa de que se puede hacer más corto.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15782557-283837425686492528?l=canx.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://canx.blogspot.com/2012/02/kata-de-ruby-karate-chop-v1.html</link><author>noreply@blogger.com (Ruben Cancho)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-0kmLVzA0X-c/Tzfw0KrOsPI/AAAAAAAAA2o/ZFMStBlo3JQ/s72-c/Iaido2.jpg" height="72" width="72" /><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-15782557.post-3750867926070173996</guid><pubDate>Wed, 14 Dec 2011 13:23:00 +0000</pubDate><atom:updated>2011-12-14T17:29:05.694+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Educacion</category><title>Evaluación de mis alumnos</title><description>
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WWNfLB91wLzMMVuB88duk9C8bHs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WWNfLB91wLzMMVuB88duk9C8bHs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WWNfLB91wLzMMVuB88duk9C8bHs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WWNfLB91wLzMMVuB88duk9C8bHs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Al final de la primera evaluación les he pedido a mis alumnos de 4º de la ESO que evaluen mi tarea docente en su blog de clase. Estas son algunas de las frases que me han llamado más la atención. He intercalado comentarios buenos con no tan buenos para compensar:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;"Lo que más me ha gustado de la forma de explicar es el explicar, que el profesor ha explicado bien con el proyeector y con ejemplos muy sencillos y hechos al mismo tiempo que explicaba, vamos que no era una presentación o tipo libro que lo pone y ya está, si no que lo iba haciendo a medida que explicaba." &lt;/blockquote&gt;-&gt; gracias majo :)&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;"Para la proxima evaluación, le pediria al profesor que tuviuese un poco más de caracter porque es muy... "ñoño" y la verdad es que poca gente se lo toma enserio. Que cuando expicase levantase más la voz para nosotros los de la última fila y también para imponerse un poco más."&lt;/blockquote&gt;-&gt; ñoño? no se me toma en serio? eso me ha tocado...&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;"Explica bien. No se pone histérico como otros profesores."&lt;/blockquote&gt;-&gt; a lo largo de mis años como profe he acumulado dosis ingentes de paciencia. O eso o me pillaba la baja por depresión como otros...&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;"Aber  yo  cuando  explicas no te entiendo   mucho por que mareo con tantas cosas   pero cuando te pregunto y bienes a   explicarmelo   como beo lo que aces al final    lo  entiendo todo"&lt;/blockquote&gt;-&gt; Duele leerlo...&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;"cuando no entiendo algo me boqueo y me deprimo, me doi vueltas por clase y te llamo para preguntarte algo, y antes de venir a mi, te das doscientasmiltrescientosochentaycinco vueltas por todos los demas y pasas de mi. osea queeee, no sé."&lt;/blockquote&gt;-&gt; pobre, es muy sensible!&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;"Lo que mas me ha gustado ha sido que lo ha explicado todo paso a paso y tenia el indice de cada clase en el proyector. Lo que menos es que a veces explica en valenciano."&lt;/blockquote&gt;-&gt; la proxima evaluación en ingles, te vas a enterar! :)&lt;br /&gt;
&lt;br /&gt;
Os haceis una idea de como deben ser mis clases y mis alumnos, no? :). En general han sido interesantes y graciosos los comentarios y me sirven para ver que cosas he de mejorar. Por ejemplo, me he dado cuenta de que he de gestionar mejor la forma de resolver dudas. Ir uno por uno es a veces improductivo y repetitivo, así que hay que resolver de forma colectiva más a menudo y con proyector.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15782557-3750867926070173996?l=canx.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://canx.blogspot.com/2011/12/evaluacion-de-mis-alumnos.html</link><author>noreply@blogger.com (Ruben Cancho)</author><thr:total>5</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-15782557.post-6550871222911789477</guid><pubDate>Mon, 05 Dec 2011 11:09:00 +0000</pubDate><atom:updated>2011-12-06T17:35:50.579+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Educacion</category><title>Evaluación de competencias: Rúbricas</title><description>
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QlWFjxXSlM_V4EppXsdESEW8VKw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QlWFjxXSlM_V4EppXsdESEW8VKw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QlWFjxXSlM_V4EppXsdESEW8VKw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QlWFjxXSlM_V4EppXsdESEW8VKw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Ya empiezo&amp;nbsp;a entender la forma de evaluar por competencias. Estas&amp;nbsp;se desarrollan principalmente haciendo proyectos y tareas, y&amp;nbsp;la forma de evaluar no es mediante un examen ni evaluando el resultado final con una única nota del&amp;nbsp;proyecto sino evaluando utilizando diferentes medidas relacionadas cada una de ellas con el grado de consecución de una competencia concreta. A esta herramienta de evaluar competencias se le llama rúbricas. Aquí una presentación explicativa:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.slideshare.net/slideshow/embed_code/1487400?rel=0"&gt;http://www.slideshare.net/slideshow/embed_code/1487400?rel=0&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
UPDATE (6/12): Curiosamente la reciente versión de Moodle (2.2) estrena el soporte a las Rúbricas: &lt;a href="http://moodle.org/mod/forum/discuss.php?d=190720"&gt;http://moodle.org/mod/forum/discuss.php?d=190720 &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15782557-6550871222911789477?l=canx.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://canx.blogspot.com/2011/12/evaluacion-de-competencias-rubricas.html</link><author>noreply@blogger.com (Ruben Cancho)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-15782557.post-1764260985669962489</guid><pubDate>Mon, 05 Dec 2011 09:53:00 +0000</pubDate><atom:updated>2011-12-05T10:53:15.737+01:00</atom:updated><title>Dogma neoliberal</title><description>
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/z9U-bF_4aBWdO1ihTvfWJaFdU98/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z9U-bF_4aBWdO1ihTvfWJaFdU98/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/z9U-bF_4aBWdO1ihTvfWJaFdU98/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z9U-bF_4aBWdO1ihTvfWJaFdU98/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;"Lo privado es siempre más&amp;nbsp;eficiente."&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.vnavarro.org/?p=6576"&gt;http://www.vnavarro.org/?p=6576&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15782557-1764260985669962489?l=canx.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://canx.blogspot.com/2011/12/dogma-neoliberal.html</link><author>noreply@blogger.com (Ruben Cancho)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-15782557.post-5888832137496169509</guid><pubDate>Wed, 26 Oct 2011 17:42:00 +0000</pubDate><atom:updated>2011-10-26T19:53:39.346+02:00</atom:updated><title>Wifi para conocer vecinos</title><description>
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ADSpM5B4vhgPqdpq31cIxgZ7H88/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ADSpM5B4vhgPqdpq31cIxgZ7H88/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ADSpM5B4vhgPqdpq31cIxgZ7H88/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ADSpM5B4vhgPqdpq31cIxgZ7H88/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Hace poco me he trasladado a &lt;a href="http://g.co/maps/mwwk3"&gt;Burjasot&lt;/a&gt; (cerca de Valencia) y se me ha ocurrido una idea curiosa para conocer gente en el nuevo barrio: crear un punto de acceso abierto que redirija todo el tráfico a un foro &lt;a href="http://www.phpbb.com/"&gt;phpbb&lt;/a&gt; sea cual sea la petición. He creado unas reglas en &lt;a href="http://www.netfilter.org/"&gt;iptables&lt;/a&gt; para que toda petición IP se redirija a mi servidor y también he modificado el &lt;a href="http://thekelleys.org.uk/dnsmasq/doc.html"&gt;dnsmasq &lt;/a&gt;para que toda petición a cualquier dominio se conteste con la misma IP. Aún quedan cosas por pulir en cuanto a seguridad pero funciona... &lt;br /&gt;
Supongo que la típica persona que busca wifis abiertas es porque quiere Internet, y muy probablemente busca la pura consumición de recursos digitales sin más, algo bastante frío e impersonal. Por otro lado a veces es dificil conocer vecinos en la ciudad cuando todo el mundo parece tener un ritmo de vida muy ajetreado y escasean las oportunidades sociales más allá del ascensor. Lo que yo busco en este proyecto es usar las redes para conectar comunidades cercanas, y que nada más cercano que el radio de acción de una red wifi? Espero que el foro sirva para conocer vecinos que tengan inquietudes parecidas, o simplemente para compartir libros, música o películas. Ya veremos en que fructifica... Hace 2 horas que el punto de acceso está encendido. En cuanto el primer vecino comente algo actualizo el post!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15782557-5888832137496169509?l=canx.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://canx.blogspot.com/2011/10/wifi-para-conocer-vecinos.html</link><author>noreply@blogger.com (Ruben Cancho)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-15782557.post-1572726580788362660</guid><pubDate>Sat, 01 Oct 2011 04:52:00 +0000</pubDate><atom:updated>2011-10-01T10:36:11.961+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">screen</category><category domain="http://www.blogger.com/atom/ns#">Linux</category><category domain="http://www.blogger.com/atom/ns#">terminal</category><title>Fichero de configuración de screen</title><description>
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0tp6JzyFIqQctjeRV82fHVLfM8U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0tp6JzyFIqQctjeRV82fHVLfM8U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0tp6JzyFIqQctjeRV82fHVLfM8U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0tp6JzyFIqQctjeRV82fHVLfM8U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Escribo esta entrada para recordar como es un típico ejemplo de fichero de configuración screen (que debe llamarse .screenrc y estar en el directorio $HOME). Este en concreto permite visualizar las diferentes pantallas en la última columna de la terminal y un scroll vertical de 5000 lineas:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code"&gt;startup_message off
multiuser on
defscrollback 5000

caption string "%?%F%{= Bk}%? %C%A %D %d-%m-%Y
 %{= kB} %t%= %?%F%{= Bk}%:%{= wk}%? %n "
hardstatus alwayslastline
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?
%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+
Lw%?%?%= %{g}][%{B} %d/%m %{W}%c %{g}]'
&lt;/pre&gt;
&lt;br /&gt;
Algunas combinaciones básicas de teclas cuando usamos screen:

&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Ctrl-a+c&lt;/b&gt;: crea una nueva ventana de terminal&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Ctrl-a+n&lt;/b&gt;: va a la siguiente terminal&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Ctrl-a+p&lt;/b&gt;:va a la terminal anterior&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Ctrl-a+"&lt;/b&gt;:muestra un menú interactivo para elegir la terminal&lt;/li&gt;
&lt;/ul&gt;
Hay muchas opciones más que se pueden consultar con un &lt;b&gt;man screen&lt;/b&gt;. &lt;br /&gt;
&lt;br /&gt;
Con esto ya podemos aprovechar algo del poder de screen y su gestión de terminales!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15782557-1572726580788362660?l=canx.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://canx.blogspot.com/2011/10/fichero-de-configuracion-de-screen.html</link><author>noreply@blogger.com (Ruben Cancho)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-15782557.post-1153071932134445003</guid><pubDate>Mon, 12 Sep 2011 15:13:00 +0000</pubDate><atom:updated>2011-10-01T07:54:20.417+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Educacion</category><category domain="http://www.blogger.com/atom/ns#">competencias básicas</category><title>Aprendiendo de que van las competencias básicas</title><description>
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0tZGqOWBrQPS0Qi9Db3eI87k_ts/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0tZGqOWBrQPS0Qi9Db3eI87k_ts/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0tZGqOWBrQPS0Qi9Db3eI87k_ts/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0tZGqOWBrQPS0Qi9Db3eI87k_ts/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Este año toca rehacer las programaciones didácticas para incorporar las competencias básicas. ¿Y que es eso de las competencias básicas? Ni idea... Veamos si escribir este post me aclara las cosas.&lt;br /&gt;
&lt;br /&gt;
Para empezar leamos el &lt;a href="http://www.stes.es/documentacion/loe/LOE_anexo1_comp_basicas.pdf"&gt;anexo de la LOE sobre las competencias básicas&lt;/a&gt;. Si lo leemos por encima vemos que las competencias básicas son:&lt;br /&gt;
&lt;blockquote&gt;
&lt;i&gt;Aquellas competencias que debe haber desarrollado un joven o una joven al finalizar la enseñanza obligatoria para poder lograr su realización personal, ejercer la ciudadanía activa, incorporarse a la vida adulta de manera satisfactoria y ser capaz de desarrollar un aprendizaje permanente a lo largo de la vida&lt;/i&gt;&lt;/blockquote&gt;
Existen 8 competencias básicas:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;i&gt; Competencia en comunicación lingüística&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;Competencia matemática&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;Competencia en el conocimiento y la interacción en el mundo físico.&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;Tratamiento de la información y competencia digital&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;Competencia social y ciudadana&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;Competencia cultural y artística&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;Competencia para aprender a aprender&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;Autonomía e iniciativa personal&lt;/i&gt;&lt;/li&gt;
&lt;/ol&gt;
&amp;nbsp;Por otro lado vemos cuales son los objetivos de incluir las competencias básicas en la programación didáctica:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;i&gt;Integrar los diferentes aprendizajes, tanto los formales, incorporados a las diferentes áreas o materias, como los informales y no formales.&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;Permitir a los estudiantes integrar sus aprendizajes, ponerlos en relación con distintos tipos de contenidos y utilizarlos de manera efectiva cuando les resulten necesarios en diferentes situaciones y contextos.&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;Orientar la enseñanza, al permitir identificar los contenidos y los criterios de evaluación que tienen carácter imprescindible y, en general, inspirar las distintas decisiones relativas al proceso de enseñanza y de aprendizaje.&lt;/i&gt;&lt;/li&gt;
&lt;/ol&gt;
Veamos, y esto en que se concreta? De que estamos hablando cuando decimos &lt;b&gt;aprendizaje formal o informal&lt;/b&gt;? A que nos referimos con &lt;b&gt;integrar los aprendizajes&lt;/b&gt;? Como identificamos o creamos &lt;b&gt;contenidos y criterios de evaluación&lt;/b&gt; relacionados con las competencias básicas? Que &lt;b&gt;metodologías&lt;/b&gt; están asociadas al desarrollo de dichas competencias básicas? Como se desarrollarían las &lt;b&gt;actividades&lt;/b&gt;? Ejemplos, dadme ejemplos!&lt;br /&gt;
&lt;br /&gt;
A veces me parece que los de ahí arriba son como arquitectos de software que se dedican a hacer diagramas UML sin saber realmente como se van a implementar las clases (nunca mejor dicho) o como lo van a interpretar los programadores. Ningún tipo de feedback hasta el próximo informe PISA. No sería mejor aplicar el desarrollo ágil a la enseñanza y dejarnos de tanto ejercicio de abstracción?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15782557-1153071932134445003?l=canx.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://canx.blogspot.com/2011/09/aprendiendo-de-que-van-las-competencias.html</link><author>noreply@blogger.com (Ruben Cancho)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-15782557.post-5649690083398607665</guid><pubDate>Tue, 30 Aug 2011 09:31:00 +0000</pubDate><atom:updated>2011-09-12T17:19:53.453+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Educacion</category><title>Institutos en EEUU (II)</title><description>
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Z4nWiI3S11VSrOzdWNyGRcytgqc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Z4nWiI3S11VSrOzdWNyGRcytgqc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Z4nWiI3S11VSrOzdWNyGRcytgqc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Z4nWiI3S11VSrOzdWNyGRcytgqc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;He encontrado &lt;a href="http://www.psk12.com/"&gt;una página&lt;/a&gt; que dice ordena los institutos por rankings, según unas pruebas externas. He querido comparar el mejor instituto de Nueva York con el peor. Esto es lo que sale:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;El mejor&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.blogger.com/%20http://www.psk12.com/rating/USindivphp/SchID_79549_year_2001.html"&gt;Townsend Harris&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Puntuación: 195.4&lt;br /&gt;
Etnias:&lt;br /&gt;
- White/Non-hispanic: 37.1%&lt;br /&gt;
- Black/Non-hispanic: 7.3%&lt;br /&gt;
- Hispanic: 11.6%&lt;br /&gt;
- Asian/Pacific Islander: 43.9%&lt;br /&gt;
- American Indian/Alaska Native: 0%&lt;br /&gt;
&lt;br /&gt;
Lugar: Queens&lt;br /&gt;
Ratio alumno-profesor: 20&lt;br /&gt;
&lt;br /&gt;
Hay un comentario de un alumno sobre el instituto que dice:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;
Townsend Harris High School is an exemplary academic institution. I am in my third year there. I enjoy the school and I feel that it is a very safe and desirable atmosphere. The students are very friendly, and all the students seem to have an underlying connection to each other, as they are all determined and intelligent people. As much as I enjoy the school and am very grateful for such a great opportunity to attend said school, I feel that there is a lot of unnecessary and tedious school work assigned. I also feel that the school is very competitive in its nature, and that the discipline code and security measures taken to ensure a safe environment are sometimes a bit extraneous. The staff is very friendly, yet I have come across many stringent instructors who have denied me a certain grade because they believe I didn't deserve such a grade. Although these things hang a damper over my opinion of the school, but I am proud of Townsend's superior athletics. Not only does Townsend excel in academics, but also in sports! We have many PSAL teams open to both boys and girls, including a 3-year undefeated girls' swim team, champions in girls' and boys' fencing and an outstanding track team.&lt;br /&gt;
&lt;br /&gt;
I enjoy the many education opportunities offered at Townsend, including the many clubs and exciting electives that are offered.&lt;br /&gt;
&lt;br /&gt;
Overall, I would say that I enjoy going to Townsend Harris, but if you're considering applying and don't feel that you can handle a rigorous curriculum and hours of homework (yes, usually about four!) then this is not the school for you!"&lt;/blockquote&gt;
&lt;br /&gt;
Vamos, parece un instituto modélico. Veamos ahora el peor:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;El peor&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.psk12.com/rating/USindivphp/SchID_79438_year_2001.html"&gt;Alfred E. Smith Vocational&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Puntuación: 0.4&lt;br /&gt;
Etnias:&lt;br /&gt;
- White/Non-hispanic: 1.0%&lt;br /&gt;
- Black/Non-hispanic: 32.6%&lt;br /&gt;
- Hispanic: 63.9%&lt;br /&gt;
- Asian/Pacific Islander: 1.9%&lt;br /&gt;
- American Indian/Alaska Native: 0.5%&lt;br /&gt;
&lt;br /&gt;
Lugar: Bronx&lt;br /&gt;
Ratio alumnos-profesor: 16&lt;br /&gt;
&lt;br /&gt;
Hay un comentario significativo de un profesor que dice:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;
"My name is Alfred and I was a substitute at this school and I was almost killed during lunch period. There are fights fought even during rest period."&lt;/blockquote&gt;
&lt;br /&gt;
Vamos, que tiene que ser un infierno para los profesores :)&lt;br /&gt;
&lt;br /&gt;
En cuanto a razas parece que hay una correlación en general. Donde más blancos y asiaticos hay mejores notas. Donde más hispanos y negros peores notas. &lt;br /&gt;
&lt;br /&gt;
Por otro lado en el Townsend Harris para entrar hay que ser &lt;a href="http://staff.thhs.qc.edu/thhs/criteria.php"&gt;un máquina&lt;/a&gt;, mientras que en el Alfred solo dan el &lt;a href="http://schools.nyc.gov/ChoicesEnrollment/High/Admissions/Methods.htm"&gt;procedimiento del Departamento de Educación&lt;/a&gt;, mediante un método llamado "Screened", en el que se evalua la nota media de septimo grado para ordenar a los solicitantes. Aunque también pone que se da prioridad a los alumnos con habla hispana. Por otro lado el Alfred parece más bien un centro de FP porque se enseña una especie de módulo en automoción.&lt;br /&gt;
&lt;br /&gt;
También es curioso que el ratio de alumnos sea mayor en el instituto con mejor puntuación que en el peor, lo que rompe un mito educativo. Y curioso también: ambos centros son públicos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15782557-5649690083398607665?l=canx.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://canx.blogspot.com/2011/08/institutos-en-euu-ii.html</link><author>noreply@blogger.com (Ruben Cancho)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-15782557.post-3834736126005623065</guid><pubDate>Tue, 30 Aug 2011 08:10:00 +0000</pubDate><atom:updated>2011-09-12T17:20:04.603+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Educacion</category><title>Institutos en EEUU (I)</title><description>
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/BVLybKV-szsRH9BO3M_MwpR4K6M/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BVLybKV-szsRH9BO3M_MwpR4K6M/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/BVLybKV-szsRH9BO3M_MwpR4K6M/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BVLybKV-szsRH9BO3M_MwpR4K6M/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Hoy me ha dado por interesarme por como está la educación secundaria en EEUU. En principio lo he hecho para ver si podía acceder a currículums y materiales para comparar lo que se da pero luego me ha llamado más la atención unas estadisticas que prueban la fragmentación social entre los institutos. Si vais a &lt;a href="http://www.high-schools.com/"&gt;esta página&lt;/a&gt;  podeis encontrar datos sobre todos centros de secundaria públicos o privados de EEUU. Un dato curioso es que se puede ver la etnia de los alumnos en porcentaje, el ratio de profesor-alumno, el número de alumnos y profesores, y si dan ayuda para el comedor escolar.&lt;br /&gt;
&lt;br /&gt;
Me ha dado por hacer una comparativa entre &lt;a href="http://high-schools.com/new-york/new-york.html"&gt;centros de Nueva York&lt;/a&gt; privados y públicos().&lt;br /&gt;
&lt;br /&gt;
Lo primero que llama la atención es que el ratio de alumnos en la pública es más alto en comparación a la privada. No ponen el agregado pero en la pública es más o menos de 15 alumnos por clase y en la privada de 8.&lt;br /&gt;
&lt;br /&gt;
Lo que más me ha chocado es que existen estadísticas de estudiantes por etnia. Los clasifican en estos grupos: indios americanos, asiaticos, negros, hispanos y blancos. De ese modo un padre puede decidir llevar a su hijo según sus preferencias racistas :)&lt;br /&gt;
&lt;br /&gt;
Pues bien, en casi todos los colegios privados que he mirado hay prácticamente un 100% de alumnos blancos, mientras que en los publicos es justamente lo contrario.&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, el &lt;a href="http://high-schools.com/schools/12144/bard-high-school-early-college.html"&gt;Brad % Roses Integrated Arts High School&lt;/a&gt; (público), tiene estas etnias:&lt;br /&gt;
&lt;br /&gt;
American Indian - 2 (0%)&lt;br /&gt;
Asian - 2 (0%)&lt;br /&gt;
Black - 255 (52%)&lt;br /&gt;
Hispanic - 226 (46%)&lt;br /&gt;
White - 3 (1%)&lt;br /&gt;
&lt;br /&gt;
Mientras que el &lt;a href="http://high-schools.com/schools/108778/birch-wathen-lenox-school.html"&gt;Birch Wathen Lenox School&lt;/a&gt; (privado) tiene:&lt;br /&gt;
&lt;br /&gt;
American Indian - 0 (0%)&lt;br /&gt;
Asian - 28 (6%)&lt;br /&gt;
Black - 30 (7%)&lt;br /&gt;
Hispanic - 17 (4%)&lt;br /&gt;
White - 370 (83%)&lt;br /&gt;
&lt;br /&gt;
Si continuais mirando otros institutos el patrón se repite entre los públicos y privados. Lo próximo a investigar son los resultados académicos por escuelas públicas o privadas, si lo encuentro actualizaré el post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15782557-3834736126005623065?l=canx.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://canx.blogspot.com/2011/08/institutos-publicos-vs-privados-en-eeuu.html</link><author>noreply@blogger.com (Ruben Cancho)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-15782557.post-8267823748834861926</guid><pubDate>Fri, 05 Aug 2011 16:31:00 +0000</pubDate><atom:updated>2011-09-12T17:21:01.894+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">asciidoc</category><title>Asciidoc,o cómo complicarse la vida para hacer un documento</title><description>
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/93v5C4xpXEVogB4LRTVYxuJqj5Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/93v5C4xpXEVogB4LRTVYxuJqj5Y/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/93v5C4xpXEVogB4LRTVYxuJqj5Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/93v5C4xpXEVogB4LRTVYxuJqj5Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;De mi época en la universidad y de husmear alguna vez en los paquetes de Linux me suena &lt;a href="http://es.wikipedia.org/wiki/LaTeX"&gt;Latex&lt;/a&gt;, un lenguaje para la escritura de artículos y libros que prima la estructura frente al estilo. Os dejo un ejemplo:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;\documentclass[12pt]{article}
\usepackage[spanish]{babel}
\usepackage{amsmath}
\title{\LaTeX}
\date{}
% Este es un comentario, no será mostrado en el documento final.
\begin{document}
\maketitle \LaTeX{} es un programa para preparar documentos con 
el sistema de tipograf\'{\i}as\footnote{%nota al pie de página
Seg\'{u}n Wikipedia, la tipograf\'{i}a es el arte y t\'{e}cnica del manejo y selecci\'{o}n de tipos, 
originalmente de plomo, para crear trabajos de impresi\'{o}n } %fin nota al pie de página
\TeX{}. \LaTeX{} fue desarrollado originalmente por Leslie Lamport 
en 1984 y se convirti\'o en el m\'etodo dominante para la 
manipulaci\'on de \TeX. La versi\'on utilizada para generar 
este documento es \LaTeXe.
\newline
% El siguiente código muestra la calidad de la tipografía de LaTeX
\begin{align}
E &amp;amp;=&amp;amp; mc^2                              \\
m &amp;amp;=&amp;amp; \frac{m_0}{\sqrt{1-\frac{v^2}{c^2}}}
\end{align}
\end{document}
&lt;/pre&gt;
&lt;br /&gt;
Con Latex escribías este texto directamente en un editor de texto o apoyado con algun editor más visual como texmaker y luego lo convertías a un formato intermedio (dvi) antes de pasarlo a pdf o ps. Era un lenguaje popular en el ambiente universitario. Me acuerdo que me volvía loco con esos editores visuales porque no permitían más de un retorno de carro porque era la estructura la que dictaba la separación y no tu libre albedrío: me sentía reprimido :)&lt;br /&gt;
&lt;br /&gt;
Hace poco he leido en &lt;a href="https://groups.google.com/forum/#%21topic/asciidoc/F9gRpitXJVs"&gt;alguna parte&lt;/a&gt; que hay autores de O'reilly que escriben los libros en &lt;a href="http://www.methods.co.nz/asciidoc/"&gt;Asciidoc&lt;/a&gt;, y resulta ser un lenguaje parecido a Latex pero mucho más sencillo de entender y que además intenta separar el contenido del estilo, además de hacerlo estructurado. Os dejo un ejemplo:&lt;br /&gt;
&lt;pre&gt;Titulo del libro
================
Autor
v1.0, 2011
:toc:
:doctype: book

Primera parte del libro
=======================

[intro]
.Titulo de introducción opcional
--
Introducción opcional va aquí
--

Primer capítulo
---------------
Aqui escribimos el capítulo.
&lt;/pre&gt;
&lt;br /&gt;
Después de conocer Latex un poco de mis tiempos mozos y de compararlo con Asciidoc este último me ha enamorado. Es muy intuitivo de escribir y separa completamente el contenido y la estructura del estilo final del documento. Primero escribes el documento con un editor de texto (aún no existen por desgracia herramientas visuales para asciidoc aunque sí &lt;a href="http://www.vim.org/scripts/script.php?script_id=1832"&gt;plugins&lt;/a&gt; de coloreado para vim, por ejemplo). Posteriormente validas la estructura del documento con un DTD como &lt;a href="http://es.wikipedia.org/wiki/DocBook"&gt;DocBook&lt;/a&gt; y generas un archivo XML. A partir de este archivo le aplicamos los estilos con una hoja &lt;a href="http://es.wikipedia.org/wiki/XSLT"&gt;XSLT&lt;/a&gt; para generar el archivo &lt;a href="http://es.wikipedia.org/wiki/XSL_Formatting_Objects"&gt;XSL:FO&lt;/a&gt;, que contiene los datos más el estilo y que será transformado posteriormente a PDF o PS.&lt;br /&gt;
&lt;br /&gt;
Una ventaja de este tipo de formatos respecto a formatos &lt;a href="http://es.wikipedia.org/wiki/WYSIWYG"&gt;WYSIWIG&lt;/a&gt; como OpenOffice o Word es que no estamos atados a ningún editor en concreto, podemos usar el que mejor dominemos. Asciidoc además es muy facil de leer en plano. Otra ventaja es que al ser archivos de texto podemos usar un repositorio de versiones como &lt;a href="http://git-scm.com/"&gt;Git&lt;/a&gt; para controlar el proceso de desarrollo del documento. También que nos ayuda a ceñirnos a una estructura predefinida de documento. Y por último que podemos generar automáticamente varios formatos personalizados (pdf, epub, html) a partir del mismo contenido&lt;br /&gt;
&lt;br /&gt;
Como desventaja está que hay que aprender el lenguaje de escritura (Asciidoc/Latex) y que el proceso de generación de los formatos finales puede ser tedioso. Por eso lo mejor es automatizarlo con algún script o archivo make (o rake), y luego ya puedes poner el editor a pantalla completa y centrarte en lo que realmente importa: el contenido. &lt;br /&gt;
&lt;br /&gt;
En fin, realizado el descubrimiento de Asciidoc creo que voy a intentar a partir de ahora usarlo para escribir los documentos del instituto y ya os iré contando mis peleas y conflictos internos en el camino. Creo que al final lo que me gusta de todo esto es que hace de la escritura un procedimiento muy limpio, parecido a compilar un programa. Al final parece que uno no puede ignorar sus orígenes :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15782557-8267823748834861926?l=canx.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://canx.blogspot.com/2011/08/asciidoco-como-complicarse-la-vida-para.html</link><author>noreply@blogger.com (Ruben Cancho)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-15782557.post-6610829377788067469</guid><pubDate>Fri, 01 Jul 2011 12:50:00 +0000</pubDate><atom:updated>2011-09-12T17:20:23.113+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Ruby</category><title>Asociación uno a muchos con ActiveRecord</title><description>
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gKFV6d-wnZnYhvgT_yg4STdpoH0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gKFV6d-wnZnYhvgT_yg4STdpoH0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gKFV6d-wnZnYhvgT_yg4STdpoH0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gKFV6d-wnZnYhvgT_yg4STdpoH0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Voy a continuar con mi proceso de aprendizaje de Ruby on Rails, y para ello nada mejor que ir contando las cosas a medida que se aprenden.&lt;br /&gt;
&lt;br /&gt;
Hoy hablaré de las diferentes formas de mapear un modelo relacional utilizando ActiveRecord. &lt;br /&gt;
Para empezar vamos a ver la relación de pertenencia "uno a muchos" y para ello crearemos dos tablas que se llamarán "grupo" y "persona" y las relacionaremos. Vamos a utilizar el scaffolding para este paso:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;$ rails generate model grupo nombre:string
$ rails generate model persona nombre:string
&lt;/pre&gt;
&lt;br /&gt;
Esto crea los archivos de migración siguientes en la carpeta "db/migrate":&lt;br /&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/1058457.js?file=migrations.rb"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Y también crea los modelos vacíos en "app/models" &lt;br /&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/1058457.js?file=empty_model.rb"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
Ahora nos falta aplicar esas migraciones para que podamos usar los modelos:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;rake db:migrate
&lt;/pre&gt;
&lt;br /&gt;
Si ahora vamos a la consola de rails veremos que podemos crear y salvar objetos de nuestros modelos:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;$ rails c
ruby-1.9.2-p180 :005 &amp;gt; ramones = Grupo.new(:nombre =&amp;gt; "Los Ramones")
 =&amp;gt; #&lt;grupo "los="" created_at:="" id:="" nil,="" nil="" nombre:="" ramones",="" updated_at:=""&gt; 
ruby-1.9.2-p180 :006 &amp;gt; ramones.save
  SQL (64.9ms)  INSERT INTO "grupos" ("created_at", "nombre", "updated_at") VALUES (?, ?, ?)  [["created_at", Fri, 01 Jul 2011 07:57:20 UTC +00:00], ["nombre", "Los Ramones"], ["updated_at", Fri, 01 Jul 2011 07:57:20 UTC +00:00]]
 =&amp;gt; true 
ruby-1.9.2-p180 :007 &amp;gt; joey = Persona.new(:nombre =&amp;gt; "Joey Ramone")
 =&amp;gt; #&lt;persona "joey="" created_at:="" id:="" nil,="" nil="" nombre:="" ramone",="" updated_at:=""&gt; 
ruby-1.9.2-p180 :008 &amp;gt; joey.save
  SQL (0.4ms)  INSERT INTO "personas" ("created_at", "nombre", "updated_at") VALUES (?, ?, ?)  [["created_at", Fri, 01 Jul 2011 07:58:06 UTC +00:00], ["nombre", "Joey Ramone"], ["updated_at", Fri, 01 Jul 2011 07:58:06 UTC +00:00]]
 =&amp;gt; true
&lt;/persona&gt;&lt;/grupo&gt;&lt;/pre&gt;
&lt;br /&gt;
También podemos consultar las tablas en la base de datos directamente:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;$ rails db
sqlite&amp;gt; .tables
grupos             personas           schema_migrations
sqlite&amp;gt; .schema grupos
CREATE TABLE "grupos" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "nombre" varchar(255), "created_at" datetime, "updated_at" datetime);
sqlite&amp;gt; .schema personas
CREATE TABLE "personas" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "nombre" varchar(255), "created_at" datetime, "updated_at" datetime);
sqlite&amp;gt; SELECT * from grupos;
1|Los Ramones|2011-07-01 07:57:20.559158|2011-07-01 07:57:20.559158
sqlite&amp;gt; SELECT * from personas;
1|Joey Ramone|2011-07-01 07:58:06.926128|2011-07-01 07:58:06.926128
&lt;/pre&gt;
&lt;br /&gt;
Pero si ahora queremos añadir una persona a un grupo no podemos. Para solucionarlo vamos a crear una relación ""uno a muchos" entre los modelos utilizando los modificadores :has_many y :belongs_to. La única diferencia entre :has_many y :belongs_to es que :belongs_to se ha de usar en el modelo que contenga la clave foránea. Nuestras modelos quedarían así:&lt;br /&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/1058457.js?file=model_2.rb"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
Ahora tendríamos que hacer una migración para añadir la clave foránea grupo_id en la tabla Persona:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;rails generate migration AddGrupoIdToPersona grupo_id:integer
&lt;/pre&gt;
&lt;br /&gt;
lo que me generaría la siguiente migración, a la que le hemos añadido manualmente el indice:&lt;br /&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/1058457.js?file=migration_2.rb"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
luego volvemos a hacer un "rake db:migrate". Para ver si se han aplicado los cambios podemos hacerlo también mirando el archivo "db/schema.rb":&lt;br /&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/1058457.js?file=schema.rb"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
Vemos que el schema está como toca y probamos a ver si está también en la base de datos real:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;$ rails db
sqlite&amp;gt; .schema personas
CREATE TABLE "personas" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "nombre" varchar(255), "created_at" datetime, "updated_at" datetime, "grupo_id" integer);
CREATE INDEX "index_personas_on_grupo_id" ON "personas" ("grupo_id");
&lt;/pre&gt;
&lt;br /&gt;
Parece todo correcto. Vamos a añadir algunas filas a las tablas, pero esta vez utilizando el fichero seeds.rb:&lt;br /&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/1058457.js?file=seeds.rb"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
A continuación recreamos la base de datos vacía y vamos a poblar la base de datos:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;rake db:schema:load
rake db:seed
&lt;/pre&gt;
&lt;br /&gt;
Y ahora vamos a consultar las filas con ActiveRecord:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;$ rails c
&amp;gt; Persona.find_by_nombre("John Lennon").grupo.nombre
  Persona Load (0.2ms)  SELECT "personas".* FROM "personas" WHERE "personas"."nombre" = 'John Lennon' LIMIT 1
  Grupo Load (0.1ms)  SELECT "grupos".* FROM "grupos" WHERE "grupos"."id" = 2 LIMIT 1
 =&amp;gt; "The Beatles"
&lt;/pre&gt;
&lt;br /&gt;
Si ahora queremos que John Lennon pertenezca a "Los Ramones" podríamos hacer:&lt;br /&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/1058457.js?file=add.rb"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
Y eso es todo por hoy! En próximos capítulos intentaré ver el resto de tipos de asociaciones que podemos realizar con ActiveRecord. Hasta luego!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15782557-6610829377788067469?l=canx.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://canx.blogspot.com/2011/07/tipos-de-asociaciones-con-activerecord.html</link><author>noreply@blogger.com (Ruben Cancho)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-15782557.post-3092260450327862362</guid><pubDate>Tue, 07 Jun 2011 15:42:00 +0000</pubDate><atom:updated>2011-09-12T17:20:33.782+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Programacion</category><title>Virtual pair programming: ssh + screen</title><description>
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gpOROxAjwHGw9_bBBeowYgjQbT8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gpOROxAjwHGw9_bBBeowYgjQbT8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gpOROxAjwHGw9_bBBeowYgjQbT8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gpOROxAjwHGw9_bBBeowYgjQbT8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Para realizar programación en parejas virtual podemos utilizar herramientas de escritorio remoto como vnc, pero si no tenemos mucho ancho de banda o queremos más velocidad una opción es usar un editor de consola como vim o emacs, conectarse via ssh y compartir la consola con la herramienta screen. Aquí os enseño un poco como funciona esta herramienta:&lt;br /&gt;
&lt;br /&gt;
&lt;iframe allowfullscreen="" frameborder="0" height="349" src="http://www.youtube.com/embed/RFSd5B-DcGs" width="425"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15782557-3092260450327862362?l=canx.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://canx.blogspot.com/2011/06/virtual-pair-programming-ssh-screen.html</link><author>noreply@blogger.com (Ruben Cancho)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/RFSd5B-DcGs/default.jpg" height="72" width="72" /><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-15782557.post-4501795514479174981</guid><pubDate>Sun, 03 Apr 2011 07:43:00 +0000</pubDate><atom:updated>2011-04-05T23:08:54.371+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Ruby</category><title>Primeros pasos con ActiveRecord</title><description>
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_dD9rSGiKnppXeFeD-ysUVtHkzQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_dD9rSGiKnppXeFeD-ysUVtHkzQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_dD9rSGiKnppXeFeD-ysUVtHkzQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_dD9rSGiKnppXeFeD-ysUVtHkzQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;a href="http://api.rubyonrails.org/classes/ActiveRecord/Base.html"&gt;ActiveRecord&lt;/a&gt; es la "gem" (o librería) normalmente utilizada para acceder a la base de datos en &lt;a href="http://www.rubyonrails.org"&gt;Ruby On Rails&lt;/a&gt;. ActiveRecord implementa el &lt;a href="http://en.wikipedia.org/wiki/Active_record_pattern"&gt;patrón que tiene su propio nombre&lt;/a&gt; y que fue expuesto por Martin Fowler en el 2003 en su libro "Patterns of Enterprise Application Architecture". Básicamente es un objeto que expone la funcionalidad CRUD de una base de datos utilizando clases, objetos, métodos y atributos.&lt;br /&gt;
&lt;br /&gt;
Se intuye la sencillez de la librería en este primer ejemplo que he hecho que crea una fila en una tabla:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span class="ident"&gt;require&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;rubygems&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
&lt;span class="ident"&gt;require&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;active_record&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;

&lt;span class="constant"&gt;ActiveRecord&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;Base&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;establish_connection&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;
  &lt;span class="symbol"&gt;:adapter&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;mysql&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;,&lt;/span&gt;
  &lt;span class="symbol"&gt;:host&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;localhost&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;,&lt;/span&gt;
  &lt;span class="symbol"&gt;:username&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;project&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;,&lt;/span&gt;
  &lt;span class="symbol"&gt;:password&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;xxxxxx&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;,&lt;/span&gt;
  &lt;span class="symbol"&gt;:database&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;project_development&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;)&lt;/span&gt;

&lt;span class="keyword"&gt;class &lt;/span&gt;&lt;span class="class"&gt;Account&lt;/span&gt; &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt; &lt;span class="constant"&gt;ActiveRecord&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;Base&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;

&lt;span class="ident"&gt;account&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;Account&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;new&lt;/span&gt;
&lt;span class="ident"&gt;account&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;username&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;ruben&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
&lt;span class="ident"&gt;account&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;save&lt;/span&gt;
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15782557-4501795514479174981?l=canx.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://canx.blogspot.com/2011/04/primeros-pasos-con-activerecord.html</link><author>noreply@blogger.com (Ruben Cancho)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-15782557.post-2481232933741141461</guid><pubDate>Sun, 13 Mar 2011 20:06:00 +0000</pubDate><atom:updated>2011-03-14T19:54:50.637+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Ruby</category><title>Editando Rails con Vim</title><description>
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/o5oWqEfnyfFKNpr6Cc4uO0xU1qM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/o5oWqEfnyfFKNpr6Cc4uO0xU1qM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/o5oWqEfnyfFKNpr6Cc4uO0xU1qM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/o5oWqEfnyfFKNpr6Cc4uO0xU1qM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Una de las preguntas que uno se hace cuando empieza a aprender un lenguaje es: qué editor utilizo? En Ruby hay mucho frikismo respecto al editor, y la gente se ha vuelto fan de una aplicación para Mac que se llama &lt;a href="http://macromates.com/"&gt;TextMate&lt;/a&gt;. Pero como yo no pienso cambiar de Linux pues las opciones que había barajado eran:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&amp;nbsp;&lt;a href="http://projects.gnome.org/gedit/"&gt;Gedit&lt;/a&gt; (con los &lt;a href="https://github.com/mig/gedit-rails"&gt;plugins&lt;/a&gt; para rails)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://aptana.com/rails"&gt;Aptana RadRails&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Usar&lt;a href="http://www.vim.org/"&gt; vim&lt;/a&gt; (con los&lt;a href="http://rails.vim.tpope.net/"&gt; plugins&lt;/a&gt; para rails)&lt;/li&gt;
&lt;/ul&gt;Al final me he decantado por la 3a opción. Os dejo una captura donde estaba haciendo una de las prácticas del libro "Ruby on Rails 3 Tutorial: Learn By Example", con el vim a la izquierda y a la derecha el autotest, el servidor de rails y una consola de rails funcionando: &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-63EWvUkZkFs/TX0ile3toZI/AAAAAAAAAyM/fb7iDG9J7Jg/s1600/vim.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="https://lh4.googleusercontent.com/-63EWvUkZkFs/TX0ile3toZI/AAAAAAAAAyM/fb7iDG9J7Jg/s320/vim.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15782557-2481232933741141461?l=canx.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://canx.blogspot.com/2011/03/editando-rails-con-vim.html</link><author>noreply@blogger.com (Ruben Cancho)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh4.googleusercontent.com/-63EWvUkZkFs/TX0ile3toZI/AAAAAAAAAyM/fb7iDG9J7Jg/s72-c/vim.png" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-15782557.post-6242252517203959234</guid><pubDate>Tue, 08 Mar 2011 10:11:00 +0000</pubDate><atom:updated>2011-03-08T11:11:32.571+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Ruby</category><title>Gems</title><description>
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Ao0tbdpOxKH2rYhtMJUgvhALwyw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ao0tbdpOxKH2rYhtMJUgvhALwyw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Ao0tbdpOxKH2rYhtMJUgvhALwyw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ao0tbdpOxKH2rYhtMJUgvhALwyw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Una de las cosas que más sorprende cuando empiezas con Ruby on Rails es que Ruby on Rails es solo el principio de todo porque existen cientos y cientos de librerías llamadas gems que permiten extender tu aplicación y usar nueva funcionalidad.&lt;br /&gt;
Todas las gems que utilices en un proyecto tienen que estar especificadas en el fichero "Gemfile". Para hacerse una idea de la cantidad de gems que existen y que es lo que hacen puedes pasarte por &lt;a href="http://rubygems.org/"&gt;RubyGems&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15782557-6242252517203959234?l=canx.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://canx.blogspot.com/2011/03/gems.html</link><author>noreply@blogger.com (Ruben Cancho)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-15782557.post-4453864251033750160</guid><pubDate>Mon, 07 Mar 2011 08:28:00 +0000</pubDate><atom:updated>2011-03-14T19:55:04.643+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Ruby</category><title>Aprendiendo ruby</title><description>
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7UaLiu4ANACGYYTSV7Fcpib9JmA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7UaLiu4ANACGYYTSV7Fcpib9JmA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7UaLiu4ANACGYYTSV7Fcpib9JmA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7UaLiu4ANACGYYTSV7Fcpib9JmA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Últimamente estoy dedicando algunos ratos a aprender el lenguaje Ruby y su fantástico framework para desarrollo web: Ruby on Rails. Estoy leyendome el libro &lt;a href="http://ruby.railstutorial.org/"&gt;"Ruby on Rails tutorial: Learn Rails by Example"&lt;/a&gt; y estoy dando mis primeros pasos con BDD y TDD aprendiendo cucumber y rspec. En verdad es un choque cultural bastante grande tener que pensar que primero hay que redactar historias y tests antes de programar pero lo vamos a intentar.&lt;br /&gt;
Espero poner algunos ejemplos de mis fracasos y éxitos durante el proceso de aprendizaje...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15782557-4453864251033750160?l=canx.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://canx.blogspot.com/2011/03/aprendiendo-ruby.html</link><author>noreply@blogger.com (Ruben Cancho)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-15782557.post-4195082597697968821</guid><pubDate>Mon, 14 Feb 2011 11:58:00 +0000</pubDate><atom:updated>2011-02-14T12:58:06.421+01:00</atom:updated><title>idea para modelo de negocio Open Source</title><description>
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xKf4E8BWj5m4L5QdZdWuc0BiQ6c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xKf4E8BWj5m4L5QdZdWuc0BiQ6c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xKf4E8BWj5m4L5QdZdWuc0BiQ6c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xKf4E8BWj5m4L5QdZdWuc0BiQ6c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Se me ocurre que una forma refinada de monetizar el software libre ligeramente diferente a la típica de una versión libre y una versión premium:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; Se comienza con un producto completamente libre para dar difusión al proyecto.&lt;/li&gt;
&lt;li&gt;Los desarrolladores o los usuarios proponen nuevas funcionalidades y le asignan colaborativamente un valor/coste al desarrollo de la funcionalidad, de forma democrática.&lt;/li&gt;
&lt;li&gt;Se pueden realizar donaciones para implementar funcionalidades, o de forma general al proyecto.&lt;/li&gt;
&lt;li&gt;Las funcionalidades se ordenan según valor/coste/donaciones. &lt;/li&gt;
&lt;li&gt;Se pueden desarrollar funcionalidades aunque no se hayan recaudado los fondos pero se guarda el valor de la funcionalidad realizada al desarrollador para pago en futuro.&lt;/li&gt;
&lt;li&gt;Las funcionalidades implementadas se introducen en la versión privativa.&lt;/li&gt;
&lt;li&gt;A medida que se vayan recaudando fondos (bien por donaciones, bien por venta de producto privativo) se irán pagando proporcionalmente a los desarrolladores en función del coste de las tareas acumuladas.&lt;/li&gt;
&lt;li&gt;Solo cuando una funcionalidad ha sido costeada completamente por los fondos de donación se introduce en la versión libre.&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15782557-4195082597697968821?l=canx.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://canx.blogspot.com/2011/02/idea-para-modelo-de-negocio-open-source.html</link><author>noreply@blogger.com (Ruben Cancho)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-15782557.post-5516137126112608216</guid><pubDate>Thu, 03 Feb 2011 12:45:00 +0000</pubDate><atom:updated>2011-02-03T13:46:14.622+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">minipost blogosfera</category><title>Minipost: seguimiento de comentarios</title><description>
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dEUqSDQQXTKe8mpjLmSTXqMHZF4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dEUqSDQQXTKe8mpjLmSTXqMHZF4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dEUqSDQQXTKe8mpjLmSTXqMHZF4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dEUqSDQQXTKe8mpjLmSTXqMHZF4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;En una comunidad de blogs la unica forma de seguir a un miembro es agregar su rss o visitar frecuentemente su página. Pero la actividad de un miembro no se limita a escribir posts, sino también a comentar otros blogs, bien sean de la comunidad o bien sean externos a ella.&lt;br /&gt;
&lt;br /&gt;
Como podríamos seguir no solo los posts de un miembro sino también los comentarios de este en cualquier otro blog, siempre que el nos de permiso?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15782557-5516137126112608216?l=canx.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://canx.blogspot.com/2011/02/minipost-seguimiento-de-comentarios.html</link><author>noreply@blogger.com (Ruben Cancho)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-15782557.post-3313335659766481837</guid><pubDate>Fri, 14 Jan 2011 11:48:00 +0000</pubDate><atom:updated>2011-01-14T13:00:05.024+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Colaboración online</category><title>Herramientas de colaboración online</title><description>
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6kRbkjeTBg3fAG2NpR0gCyIQlo0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6kRbkjeTBg3fAG2NpR0gCyIQlo0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6kRbkjeTBg3fAG2NpR0gCyIQlo0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6kRbkjeTBg3fAG2NpR0gCyIQlo0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Últimamente me estoy dedicando a buscar herramientas online que persigan la filosofía colaborativa explicada en el post anterior. De las que más me han llamado la atención están:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.blogger.com/www.ideatorrent.org"&gt; IdeaTorrent&lt;/a&gt;. Un generador de ideas colaborativo que es utilizado por &lt;a href="http://brainstorm.ubuntu.com/"&gt;Ubuntu&lt;/a&gt; y también por el&lt;a href="https://xifrat.pirata.cat/"&gt; partido pirata catalán&lt;/a&gt; entre otros.&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.blogger.com/bettermeans.com"&gt;Bettermeans&lt;/a&gt;. Un sistema de colaboración online donde no hay jerarquías y todo se guia por una mezcla de democracia y meritocracia. Muy interesante!&lt;/li&gt;
&lt;/ul&gt;Estas y otras herramientas están incluidas en el &lt;a href="http://www.mindmeister.com/es/12213323/best-online-collaboration-tools-2010-robin-good-s-collaborative-map"&gt;Robin Good's Collaborative Map&lt;/a&gt;, un mapa conceptual de herramientas colaborativas que merece la pena estudiar para ver las últimas tendencias de las herramientas de colaboración online.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15782557-3313335659766481837?l=canx.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://canx.blogspot.com/2011/01/herramientas-de-colaboracion-online.html</link><author>noreply@blogger.com (Ruben Cancho)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-15782557.post-2478574045105247615</guid><pubDate>Sun, 02 Jan 2011 08:22:00 +0000</pubDate><atom:updated>2011-01-25T14:13:32.978+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Inteligencia colectiva</category><category domain="http://www.blogger.com/atom/ns#">deliberación</category><title>Deliberación, Internet y inteligencia colectiva</title><description>
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/E82s2keoCFCCc-W8O0cme7AswTo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/E82s2keoCFCCc-W8O0cme7AswTo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/E82s2keoCFCCc-W8O0cme7AswTo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/E82s2keoCFCCc-W8O0cme7AswTo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Últimamente le he estado dando vueltas a los problemas que tienen las herramientas de comunicación 2.0, es decir: los foros, los blogs, los wikis, facebook, twitter....&lt;br /&gt;
Parece que sean herramientas maravillosas para comunicarse pero el &lt;span style="font-weight: bold;"&gt;índice de ruido&lt;/span&gt; que generan es muy alto, o lo que es lo mismo, es dificil &lt;span style="font-weight: bold;"&gt;deliberar&lt;/span&gt; y llegar a consensos de forma sencilla.&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, en un foro es muy sencillo olvidarse del tema principal y enzarzarse en una lucha de egos, o centrarte únicamente en los hilos que te interesan. También está el problema de que todo se suele ordenar por el tiempo, como en los foros y blogs, donde una buena idea puede acabar enterrada por otros posts más irrelevantes. Y por último las opiniones a los posts están juntas, independientemente de su calidad o su afinidad con la resolución del problema.&lt;br /&gt;
&lt;br /&gt;
Creo que la próxima revolución en Internet será que la gente pueda &lt;span style="font-weight: bold;"&gt;participar de manera más constructiva y controlada&lt;/span&gt; en la búsqueda y resolución de problemas colectivos, vamos, que exista una verdadera inteligencia colectiva.&lt;br /&gt;
&lt;br /&gt;
No es un problema fácil porque potencialmente pueden haber millones de usuarios colaborando en un tema, que puede ser muy complejo y tener diferentes intereses contrapuestos. Sin embargo he visto ya varios proyectos que intentan controlar el proceso deliberativo siguiendo una estructura en el proceso deliberativo, en el que se siguen los siguientes pasos básicos:&lt;br /&gt;
&lt;br /&gt;
1.- Se fórmula un problema&lt;br /&gt;
2.- Se proponen soluciones&lt;br /&gt;
3.- Se dan argumentos a favor y en contra&lt;br /&gt;
4.- Se elige la mejor solución&lt;br /&gt;
&lt;br /&gt;
Esta sería la base, luego hay que añadirle pequeñas &lt;span style="font-weight: bold;"&gt;medidas de control&lt;/span&gt; que eviten el sabotaje o que mejoren el proceso de selección de soluciones, como la moderación distribuida, los incentivos a la colaboración positiva, el sistema de votación, etc...&lt;br /&gt;
&lt;br /&gt;
Buscando proyectos afines a esta idea llegué al&lt;a href="http://cci.mit.edu/"&gt; MIT Center of Collective Intelligence&lt;/a&gt;, un grupo de investigación que tiene varios proyectos relacionados y tiene una &lt;a href="http://cci.mit.edu/klein/videos/concepts-intro.mov"&gt;presentación sobre el tema&lt;/a&gt; que merece la pena ver para darse cuenta del problema.&lt;br /&gt;
&lt;br /&gt;
Tambien merece la pena que le echeis un vistazo al proyecto principal que desarrollan, llamado &lt;a href="http://climatecolab.org/"&gt;ClimateColab&lt;/a&gt;, un proyecto que pretende que podamos luchar contra el cambio climático proponiendo y opinando de una forma más constructiva.&lt;br /&gt;
&lt;br /&gt;
Creo que este tipo de cambios sutiles en las páginas web, para que sean más participativos y constructivos y permitan una mayor colaboración distribuida sin aumentar el ruido van a verse cada vez más en Internet. Igual algunos lo llamarán la Web 3.0, quien sabe!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15782557-2478574045105247615?l=canx.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://canx.blogspot.com/2011/01/deliberacion-internet-y-inteligencia.html</link><author>noreply@blogger.com (Ruben Cancho)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-15782557.post-501985551756490108</guid><pubDate>Wed, 29 Sep 2010 10:07:00 +0000</pubDate><atom:updated>2010-09-29T12:09:46.264+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Gadgets</category><title>Movil futurista</title><description>
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lKjaupQY-M9JFQJWayRwVlFcRKU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lKjaupQY-M9JFQJWayRwVlFcRKU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lKjaupQY-M9JFQJWayRwVlFcRKU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lKjaupQY-M9JFQJWayRwVlFcRKU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Me ha llamado la atención esta idea futurista de un movil con dos pico-proyectores, muy util para dar presentaciones en clase pero que debe tener una autonomía parecida a la duración del video...&lt;br /&gt;&lt;br /&gt;&lt;object height="390" width="640"&gt;&lt;param name="movie" value="http://www.youtube.com/v/oG3tLxEQEdg&amp;amp;hl=en_US&amp;amp;feature=player_embedded&amp;amp;version=3"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/oG3tLxEQEdg&amp;amp;hl=en_US&amp;amp;feature=player_embedded&amp;amp;version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" height="390" width="640"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15782557-501985551756490108?l=canx.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://canx.blogspot.com/2010/09/movil-futurista.html</link><author>noreply@blogger.com (Ruben Cancho)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-15782557.post-100583398151951171</guid><pubDate>Tue, 31 Aug 2010 10:32:00 +0000</pubDate><atom:updated>2010-08-31T13:20:45.828+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Educacion</category><category domain="http://www.blogger.com/atom/ns#">Moodle</category><title>Enredando con CURL</title><description>
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gQhYmW-Tk-zLXv1zPS04DyfKcVw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gQhYmW-Tk-zLXv1zPS04DyfKcVw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gQhYmW-Tk-zLXv1zPS04DyfKcVw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gQhYmW-Tk-zLXv1zPS04DyfKcVw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Voy a desempolvar un poco el blog con uno de los proyectillos de verano que tan vienen para activar las neuronas y evitar que se suman en la inopia más absoluta.&lt;br /&gt;Como soy bastante perro suelo pensar siempre en general de que forma podría trabajar menos. Este proyecto, como casi todos los que hago sigue esa filosofía :)&lt;br /&gt;&lt;br /&gt;Os pongo en situación. &lt;a href="www.moodle.org"&gt;Moodle&lt;/a&gt; es la plataforma que utilizo para dar clases desde hace unos años y la que me facilita la vida para agilizar todos los procesos de enseñanza. En teoría lo ideal sería tener un servidor Moodle y que los alumnos accedieran a él tanto desde fuera como desde la red interna del centro. Esto es en teoría porque en la práctica las conexiones de internet de la mayoría de los centros impiden que esto sea viable.&lt;br /&gt;&lt;br /&gt;La solución improvisada es que no haya acceso por internet. El servidor se instala en el ordenador del profesor y solo se puede acceder desde el centro. Algún avispado habrá pensado que por que no hago redirección de puertos y con dns dinámico doy acceso al servidor desde internet. Se podría hacer pero las normas de Conselleria lo prohiben, así que hay que pensar en otra cosa.&lt;br /&gt;&lt;br /&gt;El año pasado cree un script llamado &lt;a href="http://code.google.com/p/moodlesync/"&gt;Moodlesync&lt;/a&gt;, que si bien no solucionaba este problema si que permitía transportar la base de datos y los ficheros de Moodle en un lapiz usb y sincronizar un equipo en casa, con lo que podía elaborar material y en determinados momentos dar acceso a los alumnos a mi ordenador.&lt;br /&gt;&lt;br /&gt;Esto puede funcionar en determinados casos pero dadas las restricciones lo ideal es tener un servidor Moodle en Internet, a ser posible controlado por uno mismo y sincronizar el servidor Moodle del centro con el servidor propio. De esta forma tenemos la autonomía de controlar un servidor y poder reusar el material facilmente en otros centros, y además tenemos la velocidad de dar una clase de Moodle en un entorno de red local.&lt;br /&gt;&lt;br /&gt;Bien, pues un primer paso en este proyecto es cambiar Moodlesync para que pueda sincronizar Moodle's remotos. Parecía que iba a ser sencillo porque &lt;a href="http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html"&gt;mysqldump&lt;/a&gt; permite elegir el servidor con el que se quiere operar. Contraté un servidor baratillo y comencé a hacer pruebas. Por desgracia me di cuenta de que realizar una operación de exportación/importación con mysqldump sin comprimir era más lento que el caballo del malo. Siempre había usado mysqldump en local y no me había percatado de este problema. La información entre el cliente y el servidor va sin comprimir!&lt;br /&gt;&lt;br /&gt;Mal rollo, la única forma de realizar una importación o exportación comprimida, y por lo tanto más o menos rápida, me la ofrecía &lt;a href="www.phpmyadmin.net"&gt;phpmyadmin&lt;/a&gt;. El único problema es que era una aplicación web. "Bueno", pensé, "tendrá que haber algún tipo de aplicación que automatice la navegación de un usuario y que pueda incluir de alguna forma en el script de Moodlesync". Y así es como llegué a &lt;a href="curl.haxx.se"&gt;CURL&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Curl es una aplicación que permite automatizar mediante script las acciones que realiza un navegador y imitar de esa forma la navegación por internet. Es una herramienta altamente utilizada por spammers, hackers y tejedores de internet en general. También dispone de bindings para varios lenguajes de modo que tenemos mayor control sobre su operativa.&lt;br /&gt;&lt;br /&gt;Yo he empezado a hacer pruebas con &lt;a href="http://curl.haxx.se/libcurl/php/"&gt;libcurl para PHP&lt;/a&gt;, y como resultado de mis investigaciones he fabricado un script que permite importar un archivo previamente exportado con phpmyadmin, tal y como si lo hicieramos desde la interfaz de phpmyadmin:&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 95%"&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;?php&lt;br /&gt;// Entramos por primera vez en la web para obtener la cookie&lt;br /&gt;$cookiefile = "/tmp/phpmyadmin.cookie";&lt;br /&gt;$url = "http://localhost/phpmyadmin/index.php";&lt;br /&gt;&lt;br /&gt;$ch = curl_init();&lt;br /&gt;curl_setopt($ch, CURLOPT_COOKIESESSION, True);&lt;br /&gt;curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile);&lt;br /&gt;curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefile);&lt;br /&gt;curl_setopt($ch, CURLOPT_URL, $url);&lt;br /&gt;curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);&lt;br /&gt;$data = curl_exec($ch);&lt;br /&gt;curl_close($ch);&lt;br /&gt;&lt;br /&gt;// Vamos a recuperar el token de la sesión&lt;br /&gt;$flag = preg_match("/name=\"token\" value=\"([a-zA-Z0-9_]{1,})\"/", $data,  $matches);&lt;br /&gt;$phptoken = $matches['1'];&lt;br /&gt;&lt;br /&gt;// Entramos por segunda vez para autenticarnos&lt;br /&gt;$url = "http://localhost/phpmyadmin/index.php";&lt;br /&gt;$postfields = "pma_username=root&amp;pma_password=xxxxxxxxx&amp;server=1&amp;token=" . $phptoken;&lt;br /&gt;&lt;br /&gt;$ch = curl_init();&lt;br /&gt;curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile);&lt;br /&gt;curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefile);&lt;br /&gt;curl_setopt($ch, CURLOPT_FOLLOWLOCATION, True);&lt;br /&gt;curl_setopt($ch, CURLOPT_POST, 1);&lt;br /&gt;curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);&lt;br /&gt;curl_setopt($ch, CURLOPT_URL, $url);&lt;br /&gt;curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);&lt;br /&gt;$data = curl_exec($ch);&lt;br /&gt;curl_close($ch);&lt;br /&gt;&lt;br /&gt;// Subimos el fichero a importar&lt;br /&gt;$fichero = "test.sql.gz";&lt;br /&gt;$url = "http://localhost/phpmyadmin/import.php";&lt;br /&gt;&lt;br /&gt;$ch = curl_init();&lt;br /&gt;set_time_limit(0);&lt;br /&gt;curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile);&lt;br /&gt;curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefile);&lt;br /&gt;curl_setopt($ch, CURLOPT_URL, $url);&lt;br /&gt;curl_setopt($ch, CURLOPT_POST, 1);&lt;br /&gt;curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);&lt;br /&gt;curl_setopt($ch, CURLOPT_POSTFIELDS, array('token' =&gt; $phptoken,&lt;br /&gt;             'import_file' =&gt; '@' . $fichero,&lt;br /&gt;                                           'import_type' =&gt; 'db', // server, db, tbl&lt;br /&gt;                                           'MAX_FILE_SIZE' =&gt; '2097152',&lt;br /&gt;                                           'charset_of_file' =&gt; 'utf8' ,&lt;br /&gt;                                           'allow_interrupt' =&gt; 'yes',&lt;br /&gt;                                           'skip_queries' =&gt; '0',&lt;br /&gt;                                           'format' =&gt; 'sql'&lt;br /&gt;                                           ));&lt;br /&gt;$data = curl_exec($ch);&lt;br /&gt;echo $data;&lt;br /&gt;curl_close($ch);&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Este es un primer paso para realizar una restauración de un servidor Moodle alojado remotamente. El próximo paso será probar la exportación. Y todavía queda pensar en como sincronizar los ficheros del directorio moodledata sin que tarde una eternidad. Todo esto sin disponer de ssh remoto...&lt;br /&gt;&lt;br /&gt;En fin, seguiremos investigando y informando, espero que pronto en un nuevo post!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15782557-100583398151951171?l=canx.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://canx.blogspot.com/2010/08/enredando-con-curl.html</link><author>noreply@blogger.com (Ruben Cancho)</author><thr:total>3</thr:total></item></channel></rss>

