<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2293442199034493988</id><updated>2012-02-16T00:26:53.949-08:00</updated><category term='linux'/><category term='IRPen'/><category term='powerpoint'/><category term='lipsiadmin'/><category term='programación'/><category term='wiimote'/><category term='wifi'/><category term='fckeditor'/><category term='tutoriales'/><category term='rails'/><category term='electrónica'/><category term='pizarra digital'/><category term='psp'/><category term='configurar'/><category term='ubuntu'/><category term='consolas'/><category term='plugins'/><category term='arranque'/><category term='importar web'/><category term='portátiles Junta'/><title type='text'>Tecnorails</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tecnorails.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2293442199034493988/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://tecnorails.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Carlos Vela</name><uri>http://www.blogger.com/profile/11325427761125476303</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_q_Hr9GLT77w/SaRfEJ03WVI/AAAAAAAAAAw/uwhPOfr1LPs/S220/avatar.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2293442199034493988.post-4409334815164112755</id><published>2011-07-05T07:42:00.000-07:00</published><updated>2011-07-05T07:54:02.305-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='consolas'/><category scheme='http://www.blogger.com/atom/ns#' term='psp'/><title type='text'>Arreglar stick analógico de la PSP</title><content type='html'>Hace poco tenía una PSP fat de las primeras y se quedó pillado el mando analógico hacia abajo.&lt;br /&gt;Lo desmonté varias veces, limpiando la goma conductora que tiene cuatro cables metálicos en el interior y también los contactos de placa y stick. Lo monté apretando bien los tornillos pero nada; seguía con el mismo problema.&lt;br /&gt;&lt;br /&gt;Se lo comenté al dependiente de una tienda especializada, que me consta que contrala mucho del tema, y me dijo que poner la gomita "tenía truco".&lt;br /&gt;&lt;br /&gt;Pues ya he conseguido que vuelva a la vida. La idea es que haga más presión para que haga buen contacto. Probé primero elevando el stick analógico de la carcasa superior, metiendo algo entre el stick y la carcasa, pero no iba.&lt;br /&gt;&lt;br /&gt;La solución fue soldar un poco de estaño en los contactos del stick analógico. Si eres capaz de soldar sin que se unan los puntos de soldadura o conoces a alguien que te lo haga, ya lo tienes.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-IdSyJ-kx7tI/ThMk6f8TxLI/AAAAAAAAAF4/tIjeGK_dw5s/s1600/DSC04952.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://2.bp.blogspot.com/-IdSyJ-kx7tI/ThMk6f8TxLI/AAAAAAAAAF4/tIjeGK_dw5s/s320/DSC04952.JPG" alt="" id="BLOGGER_PHOTO_ID_5625880946941346994" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-uGuFRdyFvLc/ThMlCmfnNQI/AAAAAAAAAGA/lYS1w6nwY_c/s1600/DSC04953.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/-uGuFRdyFvLc/ThMlCmfnNQI/AAAAAAAAAGA/lYS1w6nwY_c/s320/DSC04953.JPG" alt="" id="BLOGGER_PHOTO_ID_5625881086138987778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2293442199034493988-4409334815164112755?l=tecnorails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecnorails.blogspot.com/feeds/4409334815164112755/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2293442199034493988&amp;postID=4409334815164112755' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2293442199034493988/posts/default/4409334815164112755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2293442199034493988/posts/default/4409334815164112755'/><link rel='alternate' type='text/html' href='http://tecnorails.blogspot.com/2011/07/arreglar-stick-analogico-de-la-psp.html' title='Arreglar stick analógico de la PSP'/><author><name>Carlos Vela</name><uri>http://www.blogger.com/profile/11325427761125476303</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_q_Hr9GLT77w/SaRfEJ03WVI/AAAAAAAAAAw/uwhPOfr1LPs/S220/avatar.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-IdSyJ-kx7tI/ThMk6f8TxLI/AAAAAAAAAF4/tIjeGK_dw5s/s72-c/DSC04952.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2293442199034493988.post-3966045346586011703</id><published>2010-11-20T12:13:00.000-08:00</published><updated>2010-11-21T00:12:47.060-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plugins'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Modificación de yUMLmeRails de Nelson Silva</title><content type='html'>yUMLmeRails es un plugin de &lt;a href="http://blog.nelsonsilva.eu/2009/05/22/create-ror-model-diagrams-with-yumlmerails"&gt;Nelson Silva&lt;/a&gt; para extraer la información de los modelos y generar el modelo UML usando &lt;a href="http://railroad.rubyforge.org/"&gt;RailRoad&lt;/a&gt; o mediante la web &lt;a href="http://yuml.me/"&gt;http://yuml.me&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;El caso es que tengo demasiados modelos para plasmarlo en una única imagen y quería seccionarlo en varias. La modificación permite seleccionar los modelos sobre los que realizar el diagrama.&lt;br /&gt;&lt;br /&gt;Para lograrlo, he añadido parámetros al generador de diagramas y he añadido una tarea rake que acepta como argumentos los modelos que tomará como base.&lt;br /&gt;&lt;br /&gt;Los cambios son los siguientes:&lt;br /&gt;&lt;br /&gt;Fichero 'lib/railroad/yUMLmeRails.rb'&lt;br /&gt;línea #13:&lt;br /&gt;&lt;pre class="ruby" name="code" style=""&gt;&lt;br /&gt;define generate_diagram(additional_options={})&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;añadido desde línea #35, tras OpenStruct.new():&lt;br /&gt;&lt;pre class="ruby" name="code"&gt;&lt;br /&gt;only=additional_options[:only].split('//').map{|fn| fn.include?('.rb') ? fn : "app/models/#{fn}.rb" }&lt;br /&gt;puts "Generating for models: " + only.join(',')&lt;br /&gt;options.only=only&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;---------------------&lt;br /&gt;Fichero 'lib/rails_road/'&lt;br /&gt;Sustituir en los métodos &lt;span style="font-style: italic;"&gt;load_classes&lt;/span&gt; y &lt;span style="font-style: italic;"&gt;generate&lt;/span&gt; las líneas:&lt;br /&gt;&lt;pre class="ruby" name="code"&gt;&lt;br /&gt;       files = Dir.glob("app/models/**/*.rb")&lt;br /&gt;       files += Dir.glob("vendor/plugins/**/app/models/*.rb") if @options.plugins_models     &lt;br /&gt;       files -= @options.exclude&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;por&lt;br /&gt;&lt;pre class="ruby" name="code"&gt;&lt;br /&gt;     if @options.only &amp;amp;&amp;amp; @options.only.size&gt;0&lt;br /&gt;       files = @options.only&lt;br /&gt;     else&lt;br /&gt;       files = Dir.glob("app/models/**/*.rb")&lt;br /&gt;       files += Dir.glob("vendor/plugins/**/app/models/*.rb") if @options.plugins_models     &lt;br /&gt;       files -= @options.exclude&lt;br /&gt;     end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;---------------------&lt;br /&gt;Fichero 'lib/tasks/yUMLmeRails.rake'&lt;br /&gt;añadido:&lt;br /&gt;&lt;pre class="ruby" name="code"&gt;&lt;br /&gt;desc "Get yUML URL for only models"&lt;br /&gt;task :url_only, :only, :needs =&gt; :environment do |t, args|&lt;br /&gt;args.with_default(:only =&gt; [])&lt;br /&gt;puts YUMLME_URL &lt;&lt; only =""&gt; args[:only])&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;---------------------&lt;br /&gt;&lt;br /&gt;Además, he añadido un controlador para generar desde el navegador:&lt;br /&gt;Fichero añadido: 'app/controllers/yuml_controller.rb'&lt;br /&gt;&lt;pre class="ruby" name="code"&gt;&lt;br /&gt;class YumlController &lt; models="Dir.glob("&gt;b}&lt;br /&gt;end&lt;br /&gt;def show_model&lt;br /&gt;@models=params[:models].map{|x| File.basename(x).chomp('.rb')}&lt;br /&gt;@models||=[]&lt;br /&gt;@address=YUMLmeRails.generate_diagram({:only =&gt; @models})&lt;br /&gt;@url="http://yuml.me/diagram/scruffy/class/#{CGI.escape(@address)}"&lt;br /&gt;end&lt;br /&gt;private&lt;br /&gt;def extract_class_name(filename)&lt;br /&gt;File.basename(filename).chomp(".rb").camelize&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;------------------------------&lt;br /&gt;Fichero 'app/views/yuml/index.html.erb'&lt;br /&gt;&lt;pre class="ruby" name="code"&gt;&lt;br /&gt;&lt;h1&gt;Models&lt;/h1&gt;&lt;br /&gt;&lt;%form_tag :action =&gt; 'show_model' do -%&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;%@models.each do |m|%&gt;&lt;br /&gt;&lt;li&gt;&lt;br /&gt;&lt;%=check_box_tag 'models[]', m%&gt;&lt;%=h(m)%&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;ul&gt;&lt;%end%&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;%=submit_tag 'Ver'%&gt;&lt;br /&gt;&lt;%end%&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;------------------------------------------&lt;br /&gt;Fichero 'app/views/yuml/show_model.html.erb'&lt;br /&gt;&lt;pre class="ruby" name="code"&gt;&lt;br /&gt;&lt;h1&gt;Modelo UML&lt;/h1&gt;&lt;br /&gt;&lt;h2&gt;Modelos:&lt;/h2&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;%@models.each do |m|%&gt;&lt;br /&gt;&lt;li&gt;&lt;%=h m%&gt;&lt;/li&gt;&lt;br /&gt;&lt;%end%&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h2&gt;URL en yuml.com:&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;&lt;%=@address%&gt;&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;IMAGEN DEL MODELO&lt;/h2&gt;&lt;br /&gt;&amp;lt;image src="&lt;%=@url%&gt;" /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;-------------------------------&lt;br /&gt;Para usar con rake: rake yUMLmeRails:url_only[model1//model2//...]&lt;br /&gt;Para usar con rake y ruta: rake yUMLmeRails:url_only[app/models/model1.rb//...]&lt;br /&gt;-------------------------------&lt;br /&gt;Ejemplo del modelo completo con rake yUMLmeRails:url&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q_Hr9GLT77w/TOgxDrF2yVI/AAAAAAAAAFY/DXQ6cVXoRfA/s1600/completo.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 82px;" src="http://3.bp.blogspot.com/_q_Hr9GLT77w/TOgxDrF2yVI/AAAAAAAAAFY/DXQ6cVXoRfA/s320/completo.png" alt="" id="BLOGGER_PHOTO_ID_5541733280656050514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Ejemplo del modelo usando rake yUMLmeRails:url_only[alumno]&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q_Hr9GLT77w/TOg0pql3sRI/AAAAAAAAAFg/MnbhIr5a8r4/s1600/alumno.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 38px;" src="http://4.bp.blogspot.com/_q_Hr9GLT77w/TOg0pql3sRI/AAAAAAAAAFg/MnbhIr5a8r4/s320/alumno.png" alt="" id="BLOGGER_PHOTO_ID_5541737231891804434" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2293442199034493988-3966045346586011703?l=tecnorails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecnorails.blogspot.com/feeds/3966045346586011703/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2293442199034493988&amp;postID=3966045346586011703' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2293442199034493988/posts/default/3966045346586011703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2293442199034493988/posts/default/3966045346586011703'/><link rel='alternate' type='text/html' href='http://tecnorails.blogspot.com/2010/11/modificacion-de-yumlmerails-de-nelson.html' title='Modificación de yUMLmeRails de Nelson Silva'/><author><name>Carlos Vela</name><uri>http://www.blogger.com/profile/11325427761125476303</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_q_Hr9GLT77w/SaRfEJ03WVI/AAAAAAAAAAw/uwhPOfr1LPs/S220/avatar.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_q_Hr9GLT77w/TOgxDrF2yVI/AAAAAAAAAFY/DXQ6cVXoRfA/s72-c/completo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2293442199034493988.post-212198965853821175</id><published>2010-10-25T14:11:00.000-07:00</published><updated>2010-10-25T14:23:15.602-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fckeditor'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='lipsiadmin'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>FCKEditor múltiple con Lipsiadmin en Rails</title><content type='html'>En un &lt;a href="http://tecnorails.blogspot.com/2009/02/fckeditor-con-lipsiadmin-en-rails.html"&gt;anterior artículo&lt;/a&gt; se indicó la forma  de usar un &lt;span style="font-style: italic;"&gt;textarea&lt;/span&gt; con FCKEditor.&lt;br /&gt;&lt;br /&gt;En el caso de necesitar varias entradas de &lt;span style="font-style: italic;"&gt;textarea&lt;/span&gt; con el editor, se pueden hacer los siguientes cambios:&lt;br /&gt;&lt;br /&gt;Cambiar el archivo&lt;span style="font-style: italic;"&gt; javascripts/form.js&lt;/span&gt;, añadiendo otro identificador para que se incluya el FCKEditor con él:&lt;br /&gt;&lt;br /&gt;&lt;pre class="ruby" name="code"&gt;&lt;br /&gt;function styledForms() {&lt;br /&gt;    hoverEffects();&lt;br /&gt;    buttonHovers();&lt;br /&gt;    formHovers();&lt;br /&gt;  //FCKEditor  &lt;br /&gt;  var sBasePath = '/fckeditor/'  &lt;br /&gt;  var oFCKeditor = new FCKeditor( 'FCKEditor', '100%', '400' ) ;  &lt;br /&gt;  oFCKeditor.BasePath = sBasePath ;  &lt;br /&gt;  oFCKeditor.ReplaceTextarea() ;&lt;br /&gt;  //PARA CADA TEXTAREA ADICIONAL CON FCKEDITOR DOS LÍNEAS COMO LAS SIGUIENTES&lt;br /&gt;  oFCKeditor.InstanceName='FCKEditor2' ;&lt;br /&gt;  oFCKeditor.ReplaceTextarea() ;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;El atributo 'id' del &lt;span style="font-style: italic;"&gt;textarea&lt;/span&gt; debe coincidir con los declarados anteriormente. En una de las vistas del &lt;span style="font-weight: bold;"&gt;backend&lt;/span&gt; del formulario parcial "&lt;span style="font-style: italic;"&gt;_form.html.haml&lt;/span&gt;":&lt;br /&gt;&lt;br /&gt;&lt;pre class="ruby" name="code"&gt;&lt;br /&gt;-tab "Clasificacion" do&lt;br /&gt;  %ul.form&lt;br /&gt;    %li&lt;br /&gt;      %div{:id =&gt; "clasificacion"}&lt;br /&gt;        =text_area :clasificacion, :tabla_clasificacion, :rows =&gt; 30, :id =&gt; 'FCKEditor'&lt;br /&gt;-tab "Calendario" do&lt;br /&gt;  %ul.form&lt;br /&gt;    %li&lt;br /&gt;      %div{:id =&gt; "calendario"}&lt;br /&gt;        =text_area :clasificacion, :tabla_calendario, :rows =&gt; 30, :id =&gt; 'FCKEditor2'&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2293442199034493988-212198965853821175?l=tecnorails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecnorails.blogspot.com/feeds/212198965853821175/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2293442199034493988&amp;postID=212198965853821175' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2293442199034493988/posts/default/212198965853821175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2293442199034493988/posts/default/212198965853821175'/><link rel='alternate' type='text/html' href='http://tecnorails.blogspot.com/2010/10/fckeditor-multiple-con-lipsiadmin-en.html' title='FCKEditor múltiple con Lipsiadmin en Rails'/><author><name>Carlos Vela</name><uri>http://www.blogger.com/profile/11325427761125476303</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_q_Hr9GLT77w/SaRfEJ03WVI/AAAAAAAAAAw/uwhPOfr1LPs/S220/avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2293442199034493988.post-4404300842354487435</id><published>2010-05-29T12:58:00.000-07:00</published><updated>2010-05-29T16:39:47.196-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wiimote'/><category scheme='http://www.blogger.com/atom/ns#' term='IRPen'/><category scheme='http://www.blogger.com/atom/ns#' term='pizarra digital'/><category scheme='http://www.blogger.com/atom/ns#' term='electrónica'/><title type='text'>Cómo hacer tu propio lápiz infrarrojo (IR pen) y táctil para usar con Wiimote</title><content type='html'>Tener una pizarra digital interactiva se ha convertido en algo muy asequible. Con un simple mando de Wii, un lápiz infrarrojo (IR pen) y algunos de los programas gratuitos o no, por menos de 100 €, aparte del proyector ya se tiene la pizarra digital.&lt;br /&gt;&lt;br /&gt;En este artículo voy a mostrar cómo fabricar tu propio lápiz infrarrojo con pulsador manual y pulsación por presión del lápiz.&lt;br /&gt;&lt;br /&gt;Material:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q_Hr9GLT77w/TAGCbR7DunI/AAAAAAAAABQ/yUIAWJG0N0c/s1600/DSC03108.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_q_Hr9GLT77w/TAGCbR7DunI/AAAAAAAAABQ/yUIAWJG0N0c/s320/DSC03108.JPG" alt="" id="BLOGGER_PHOTO_ID_5476802027038423666" border="0"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q_Hr9GLT77w/TAGFD71yVvI/AAAAAAAAABY/Tj0sZhYbPOk/s1600/DSC03110.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_q_Hr9GLT77w/TAGFD71yVvI/AAAAAAAAABY/Tj0sZhYbPOk/s320/DSC03110.JPG" alt="" id="BLOGGER_PHOTO_ID_5476804924508624626" border="0"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- Led infrarrojo (Vishay TSAL6400).&lt;br /&gt;- Pulsador de placa horizontal de botón ancho.&lt;br /&gt;- Pulsador de rosca para carcasa redondo.&lt;br /&gt;- Portapilas AAA (No había de una pila, así que he apañado dos a partir de uno doble).&lt;br /&gt;- Rotulador de pizarra blanca.&lt;br /&gt;- Cable.&lt;br /&gt;- Soldador y estaño.&lt;br /&gt;- Termofusible.&lt;br /&gt;&lt;br /&gt;Perforar el pulsador de rosca con un alambre en el soldador (enrollar estando desenchufado y frío!!!) para que entre una patilla del diodo infrarrojo y pegarla con pegamento instantáneo (el de la gota).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q_Hr9GLT77w/TAGFcSyugMI/AAAAAAAAABg/qwPC-kgdI0U/s1600/DSC03111.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_q_Hr9GLT77w/TAGFcSyugMI/AAAAAAAAABg/qwPC-kgdI0U/s320/DSC03111.JPG" alt="" id="BLOGGER_PHOTO_ID_5476805342986666178" border="0"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q_Hr9GLT77w/TAGFc9Hpl4I/AAAAAAAAABo/gNNVbrPnYx4/s1600/DSC03112.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_q_Hr9GLT77w/TAGFc9Hpl4I/AAAAAAAAABo/gNNVbrPnYx4/s320/DSC03112.JPG" alt="" id="BLOGGER_PHOTO_ID_5476805354348713858" border="0"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q_Hr9GLT77w/TAGF-tXXH0I/AAAAAAAAABw/sWHMIeTjKD0/s1600/DSC03113.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_q_Hr9GLT77w/TAGF-tXXH0I/AAAAAAAAABw/sWHMIeTjKD0/s320/DSC03113.JPG" alt="" id="BLOGGER_PHOTO_ID_5476805934235197250" border="0"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;El portapilas AAA lo conseguí a partir de uno doble.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q_Hr9GLT77w/TAGbL8_RaqI/AAAAAAAAAB4/WVjJ7hNYuPI/s1600/DSC03114.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_q_Hr9GLT77w/TAGbL8_RaqI/AAAAAAAAAB4/WVjJ7hNYuPI/s320/DSC03114.JPG" alt="" id="BLOGGER_PHOTO_ID_5476829251511610018" border="0"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q_Hr9GLT77w/TAGbMPGuUzI/AAAAAAAAACA/cBR1fOZAbUE/s1600/DSC03115.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_q_Hr9GLT77w/TAGbMPGuUzI/AAAAAAAAACA/cBR1fOZAbUE/s320/DSC03115.JPG" alt="" id="BLOGGER_PHOTO_ID_5476829256374702898" border="0"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Perforar girando un cúter 4 agujeros para que encaje el pulsador plano. Agrandarlo con la punta de un destornillador. Retirar un trozo de envoltorio y rallar la superficie para que agarre al final el termofusible.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q_Hr9GLT77w/TAGbfQTEDtI/AAAAAAAAACI/CyGbKwBHGGw/s1600/DSC03117.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_q_Hr9GLT77w/TAGbfQTEDtI/AAAAAAAAACI/CyGbKwBHGGw/s320/DSC03117.JPG" alt="" id="BLOGGER_PHOTO_ID_5476829583112408786" border="0"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;En el rotulador de pizarra blanca que tengo hay que retirar el tope interno. Se puede usar un destornillador plano pequeño.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q_Hr9GLT77w/TAGcFLlq0mI/AAAAAAAAACQ/S0h33l_0wcs/s1600/DSC03118.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_q_Hr9GLT77w/TAGcFLlq0mI/AAAAAAAAACQ/S0h33l_0wcs/s320/DSC03118.JPG" alt="" id="BLOGGER_PHOTO_ID_5476830234683298402" border="0"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;La disposición interna será así:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q_Hr9GLT77w/TAGceCLU6_I/AAAAAAAAACY/tvsJzjcvdSA/s1600/DSC03119.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_q_Hr9GLT77w/TAGceCLU6_I/AAAAAAAAACY/tvsJzjcvdSA/s320/DSC03119.JPG" alt="" id="BLOGGER_PHOTO_ID_5476830661653621746" border="0"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;He fabricado un soporte con el borde de una tarrina de CDs o DVDs:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q_Hr9GLT77w/TAGc8nWYW4I/AAAAAAAAACg/HrVDY7k4AOw/s1600/DSC03120.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_q_Hr9GLT77w/TAGc8nWYW4I/AAAAAAAAACg/HrVDY7k4AOw/s320/DSC03120.JPG" alt="" id="BLOGGER_PHOTO_ID_5476831187028171650" border="0"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q_Hr9GLT77w/TAGc9BYW3II/AAAAAAAAACo/TO3hy5LeN8U/s1600/DSC03121.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_q_Hr9GLT77w/TAGc9BYW3II/AAAAAAAAACo/TO3hy5LeN8U/s320/DSC03121.JPG" alt="" id="BLOGGER_PHOTO_ID_5476831194015784066" border="0"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q_Hr9GLT77w/TAGdqpeC4DI/AAAAAAAAADQ/BxdiHCk1SMU/s1600/DSC03122.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_q_Hr9GLT77w/TAGdqpeC4DI/AAAAAAAAADQ/BxdiHCk1SMU/s320/DSC03122.JPG" alt="" id="BLOGGER_PHOTO_ID_5476831977871171634" border="0"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q_Hr9GLT77w/TAGdqSt6unI/AAAAAAAAADI/ftVnUdr9eas/s1600/DSC03123.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_q_Hr9GLT77w/TAGdqSt6unI/AAAAAAAAADI/ftVnUdr9eas/s320/DSC03123.JPG" alt="" id="BLOGGER_PHOTO_ID_5476831971763731058" border="0"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q_Hr9GLT77w/TAGd3S-93tI/AAAAAAAAADg/UpBgbFGPoIc/s1600/DSC03124.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_q_Hr9GLT77w/TAGd3S-93tI/AAAAAAAAADg/UpBgbFGPoIc/s320/DSC03124.JPG" alt="" id="BLOGGER_PHOTO_ID_5476832195173539538" border="0"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q_Hr9GLT77w/TAGd3PAWWsI/AAAAAAAAADY/iZ0uwz-8IRk/s1600/DSC03125.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_q_Hr9GLT77w/TAGd3PAWWsI/AAAAAAAAADY/iZ0uwz-8IRk/s320/DSC03125.JPG" alt="" id="BLOGGER_PHOTO_ID_5476832194105596610" border="0"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Las conexiones y la posición de los componentes:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q_Hr9GLT77w/TAGeJ9b8bMI/AAAAAAAAADw/Yz9-BUEYUrM/s1600/DSC03126.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_q_Hr9GLT77w/TAGeJ9b8bMI/AAAAAAAAADw/Yz9-BUEYUrM/s320/DSC03126.JPG" alt="" id="BLOGGER_PHOTO_ID_5476832515807014082" border="0"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q_Hr9GLT77w/TAGeJsvuLoI/AAAAAAAAADo/zCSH-x5LDJg/s1600/DSC03127.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_q_Hr9GLT77w/TAGeJsvuLoI/AAAAAAAAADo/zCSH-x5LDJg/s320/DSC03127.JPG" alt="" id="BLOGGER_PHOTO_ID_5476832511326563970" border="0"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;El portapilas  que queda sin lateral se puede arreglar añadiendo un trozo de plástico (puede valer de tarrina de CD o cualquier envoltorio semirrígido (como el de un pendrive):&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q_Hr9GLT77w/TAGec4iPrtI/AAAAAAAAAEA/FQWNMvW4_VQ/s1600/DSC03128.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_q_Hr9GLT77w/TAGec4iPrtI/AAAAAAAAAEA/FQWNMvW4_VQ/s320/DSC03128.JPG" alt="" id="BLOGGER_PHOTO_ID_5476832840908779218" border="0"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q_Hr9GLT77w/TAGecn4yy1I/AAAAAAAAAD4/Q0r0MFLsh9g/s1600/DSC03129.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_q_Hr9GLT77w/TAGecn4yy1I/AAAAAAAAAD4/Q0r0MFLsh9g/s320/DSC03129.JPG" alt="" id="BLOGGER_PHOTO_ID_5476832836439952210" border="0"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Las conexiones de las partes que quedarán en el interior:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q_Hr9GLT77w/TAGe--ehUzI/AAAAAAAAAEI/SPkKdpt6zNA/s1600/DSC03130.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_q_Hr9GLT77w/TAGe--ehUzI/AAAAAAAAAEI/SPkKdpt6zNA/s320/DSC03130.JPG" alt="" id="BLOGGER_PHOTO_ID_5476833426619323186" border="0"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Utilizar cables como guía para los cables del pulsador plano exterior y para guiar el led infrarrojo:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q_Hr9GLT77w/TAGfPZyvqEI/AAAAAAAAAEQ/m1e-2EjsTrs/s1600/DSC03131.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_q_Hr9GLT77w/TAGfPZyvqEI/AAAAAAAAAEQ/m1e-2EjsTrs/s320/DSC03131.JPG" alt="" id="BLOGGER_PHOTO_ID_5476833708829812802" border="0"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Soldar las puntas de los cables guía a los dos cables que van al pulsador externo y une el cable guía de la punta al led infrarrojo. Además he puesto funda de cable (lo que sobra al pelarlo) a las patas del led infrarrojo, he añadido un trozo de palillo de dientes entre las patas para darle mayor rigidez y lo he rodeado con cinta aislante. También he puesto cinta aislante por el lateral del pulsador de  rosca para sujetar el cable que va al led y que no tire hacia fuera:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q_Hr9GLT77w/TAGfywOPO8I/AAAAAAAAAEg/2sjugN3OfTM/s1600/DSC03135.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_q_Hr9GLT77w/TAGfywOPO8I/AAAAAAAAAEg/2sjugN3OfTM/s320/DSC03135.JPG" alt="" id="BLOGGER_PHOTO_ID_5476834316146129858" border="0"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q_Hr9GLT77w/TAGfyUvdDVI/AAAAAAAAAEY/ZkcTOjgIC1I/s1600/DSC03136.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_q_Hr9GLT77w/TAGfyUvdDVI/AAAAAAAAAEY/ZkcTOjgIC1I/s320/DSC03136.JPG" alt="" id="BLOGGER_PHOTO_ID_5476834308769254738" border="0"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ahora  hay que ir tirando de los cables guía y empujando el pulsador con el led colocado. El soporte debe entrar un poco forzado pero no en exceso. Cuando esté bastante dentro seguir empujando con el portapilas. Éste es el paso delicado. Una vez que salga el led por la punta, retirar la cinta aislante y comprobar que funciona al presionar:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q_Hr9GLT77w/TAGiVTME9JI/AAAAAAAAAEw/iAYwvA7X2p4/s1600/DSC03139.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_q_Hr9GLT77w/TAGiVTME9JI/AAAAAAAAAEw/iAYwvA7X2p4/s320/DSC03139.JPG" alt="" id="BLOGGER_PHOTO_ID_5476837108671116434" border="0"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q_Hr9GLT77w/TAGiU_eOvII/AAAAAAAAAEo/_EZ4lnD9Mqo/s1600/DSC03140.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_q_Hr9GLT77w/TAGiU_eOvII/AAAAAAAAAEo/_EZ4lnD9Mqo/s320/DSC03140.JPG" alt="" id="BLOGGER_PHOTO_ID_5476837103378545794" border="0"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ahora soltar los cables guía y soldar los cables al pulsador exterior en dos patas cruzadas (si uno va arriba a la derecha, el otro va abajo a la izquierda). Acabar pegandolo con termofusible:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q_Hr9GLT77w/TAGimmA0oVI/AAAAAAAAAE4/hg39kUhTwoE/s1600/DSC03142.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_q_Hr9GLT77w/TAGimmA0oVI/AAAAAAAAAE4/hg39kUhTwoE/s320/DSC03142.JPG" alt="" id="BLOGGER_PHOTO_ID_5476837405781958994" border="0"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ya sólo falta cortar el tapón trasero para que se ajuste al final del portapilas y que así no se mueva nada en el interior:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q_Hr9GLT77w/TAGjKpZdj4I/AAAAAAAAAFA/hd7yJSZ445c/s1600/DSC03143.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_q_Hr9GLT77w/TAGjKpZdj4I/AAAAAAAAAFA/hd7yJSZ445c/s320/DSC03143.JPG" alt="" id="BLOGGER_PHOTO_ID_5476838025165901698" border="0"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Y ya está acabado:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q_Hr9GLT77w/TAGjjMH1BTI/AAAAAAAAAFI/gtFNUCwwWUU/s1600/DSC03144.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_q_Hr9GLT77w/TAGjjMH1BTI/AAAAAAAAAFI/gtFNUCwwWUU/s320/DSC03144.JPG" alt="" id="BLOGGER_PHOTO_ID_5476838446804043058" border="0"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Recuerda que contra más blando sea el pulsador de rosca más fácil será la pulsación por presión.&lt;br /&gt;&lt;br /&gt;Vídeo de muestra de funcionamiento:&lt;br /&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-22ba578d9cffc8d9" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v12.nonxt3.googlevideo.com/videoplayback?id%3D22ba578d9cffc8d9%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331560758%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D983F5292366B4354A87F586C5BC2162AAD394CE.7F48365BD237C4628852D359B402029F8C3AA16B%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D22ba578d9cffc8d9%26offsetms%3D5000%26itag%3Dw160%26sigh%3DLsWmFsTe4vg4BA0Ss_Vkr4JguHo&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v12.nonxt3.googlevideo.com/videoplayback?id%3D22ba578d9cffc8d9%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331560758%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D983F5292366B4354A87F586C5BC2162AAD394CE.7F48365BD237C4628852D359B402029F8C3AA16B%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D22ba578d9cffc8d9%26offsetms%3D5000%26itag%3Dw160%26sigh%3DLsWmFsTe4vg4BA0Ss_Vkr4JguHo&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2293442199034493988-4404300842354487435?l=tecnorails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecnorails.blogspot.com/feeds/4404300842354487435/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2293442199034493988&amp;postID=4404300842354487435' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2293442199034493988/posts/default/4404300842354487435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2293442199034493988/posts/default/4404300842354487435'/><link rel='alternate' type='text/html' href='http://tecnorails.blogspot.com/2010/05/como-hacer-tu-propio-lapiz-infrarrojo.html' title='Cómo hacer tu propio lápiz infrarrojo (IR pen) y táctil para usar con Wiimote'/><author><name>Carlos Vela</name><uri>http://www.blogger.com/profile/11325427761125476303</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_q_Hr9GLT77w/SaRfEJ03WVI/AAAAAAAAAAw/uwhPOfr1LPs/S220/avatar.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_q_Hr9GLT77w/TAGCbR7DunI/AAAAAAAAABQ/yUIAWJG0N0c/s72-c/DSC03108.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2293442199034493988.post-1676364808287338033</id><published>2010-05-12T12:54:00.000-07:00</published><updated>2010-05-12T13:50:40.129-07:00</updated><title type='text'>Pizarra digital en Asus EEEPC con Ubuntu con el mando de Wii</title><content type='html'>Con el mando de la Wii es posible tener una pantalla táctil muy asequible.&lt;br /&gt;&lt;br /&gt;En Windows no tuve problemas para hacer funcionar los programas que conectan y gestionan el mando de la Wii, pero en Linux siempre  salía un problema  con la pila (librerías) bluetooth: "Native Library bluecove not available". La distribución es la 9.10.&lt;br /&gt;&lt;br /&gt;Probé a utilizar por separado bluz-gnome y gnome-bluetooth, pero daba el mismo fallo.&lt;br /&gt;&lt;br /&gt;En &lt;a href="http://www.freakingtips.com/2009/12/11/solvednative-library-bluecove-not-available-ubuntukarmic-koala/"&gt;freakingtips&lt;/a&gt; conseguí la solución al error: instalar las librerías de desarrollo de bluetooth libbluetooh-dev.&lt;br /&gt;&lt;br /&gt;&lt;pre class="ruby" name="code"&gt;&lt;br /&gt;sudo apt-get install libbluetooth-dev&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Usando el paquete gnome-bluetooth, ya conectaba sin problemas.&lt;br /&gt;&lt;br /&gt;Los programas que he probado:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://stepd.ca/gtkwhiteboard/#downloads"&gt;GTKWHITEBOARD (1.3)&lt;/a&gt;: Funciona de lujo. Permite usar el botón derecho del ratón, apuntando a una zona exterior del borde de la pantalla. Está escrito en Python, por lo que hay que tener instaladas las librerías, que normalmente ya vienen por defecto. Siempre es importante leer las instrucciones que acompañan a los programas para evitar problemas de dependencias.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.uweschmidt.org/wiimote-whiteboard"&gt;WIIMOTEWHITEBOARD&lt;/a&gt;: Funciona muy bien. No permite el botón derecho del ratón, pero se puede observar lo que ve la cámara del mando de la Wii para comprobar la calibración. Otro pequeño inconveniente es que hace falta descargarse la librería de BlueCove (versión 2.1.0) e incluirlas dentro del archivo JAR. &lt;a href="http://sites.google.com/site/wiilavagnadigitale/uweschmidt-wiimotewhiteboard-su-ubuntu-9-10"&gt;Aquí&lt;/a&gt; se puede leer cómo hacerlo completo, pero en italiano. Para ver cómo incluir la librería BlueCove en inglés, mirar en la carpeta HELP de WiimoteWhiteboard.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2293442199034493988-1676364808287338033?l=tecnorails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecnorails.blogspot.com/feeds/1676364808287338033/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2293442199034493988&amp;postID=1676364808287338033' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2293442199034493988/posts/default/1676364808287338033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2293442199034493988/posts/default/1676364808287338033'/><link rel='alternate' type='text/html' href='http://tecnorails.blogspot.com/2010/05/pizarra-digital-en-asus-eeepc-con.html' title='Pizarra digital en Asus EEEPC con Ubuntu con el mando de Wii'/><author><name>Carlos Vela</name><uri>http://www.blogger.com/profile/11325427761125476303</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_q_Hr9GLT77w/SaRfEJ03WVI/AAAAAAAAAAw/uwhPOfr1LPs/S220/avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2293442199034493988.post-674117424963764041</id><published>2010-03-02T03:12:00.000-08:00</published><updated>2010-04-29T04:40:14.962-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arranque'/><category scheme='http://www.blogger.com/atom/ns#' term='portátiles Junta'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Problema con portátil de la Junta que se para en grub</title><content type='html'>En caso de que el portátil no arranque el sistema gráfico, y en su lugar aparezca el indicador "grub&gt;", es síntoma que falta un archivo (concretamente menu.lst). Linux crea archivos de seguridad, por lo que hay una esperanza. Puede que haya sido debido a un apagado incorrecto.&lt;br /&gt;&lt;br /&gt;Tras el indicador, escribir los siguientes pasos pulsando la tecla Enter tras cada línea (los números no se ponen y antes de '(' hay un espacio):&lt;br /&gt;&lt;ol style="font-family: courier new;"&gt;&lt;li&gt;root (hd0,0)&lt;/li&gt;&lt;li&gt;setup (hd0)&lt;/li&gt;&lt;li&gt;configfile /grub/menu.lst~&lt;/li&gt;&lt;li&gt;reboot&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Notas:&lt;br /&gt;- el "&lt;span style="font-family:courier new;"&gt;0&lt;/span&gt;" de (hd0,0) es un cero.&lt;br /&gt;- antes de los paréntesis va un espacio&lt;br /&gt;- el teclado estará en inglés, por lo que los paréntesis están en el 9 y el cero, y la barra (/) en el menos (-)&lt;br /&gt;- para escribir ~ se pulsa "AltGr" junto con la tecla "4", aunque no es necesario porque se puede autocompletar usando la tecla tabulador (a la izquierda de la Q) cuando esté escrito &lt;span style="font-family:courier new;"&gt;/boot/grub/men&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Con estas instrucciones debería arrancar. Los siguientes inicios no deben tener problema. Si vuelve a aparecer el problema es posible que también haya desaparecido el archivo menu.lst~, por lo que la solución no será tan "sencilla".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2293442199034493988-674117424963764041?l=tecnorails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecnorails.blogspot.com/feeds/674117424963764041/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2293442199034493988&amp;postID=674117424963764041' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2293442199034493988/posts/default/674117424963764041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2293442199034493988/posts/default/674117424963764041'/><link rel='alternate' type='text/html' href='http://tecnorails.blogspot.com/2010/03/problema-con-ordenador-de-la-junta-que.html' title='Problema con portátil de la Junta que se para en grub'/><author><name>Carlos Vela</name><uri>http://www.blogger.com/profile/11325427761125476303</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_q_Hr9GLT77w/SaRfEJ03WVI/AAAAAAAAAAw/uwhPOfr1LPs/S220/avatar.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2293442199034493988.post-1001471911017440562</id><published>2009-12-01T04:00:00.000-08:00</published><updated>2009-12-01T07:18:26.749-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Recuperar resolución de pantalla en ubuntu</title><content type='html'>Hoy he conectado el EEEPC al proyector de audiovisuales y necesitaba reiniciar. Me pidió autorización para autodetectar la configuración del proyector.&lt;br /&gt;&lt;br /&gt;Al acabar, me dejó X-windows con un máximo de 800x600. Desde la configuración de pantalla no permitía más.&lt;br /&gt;&lt;br /&gt;Para los que no están muy duchos en Linux fuera del entorno gráfico, decirles que tiene "fácil" solución.&lt;br /&gt;&lt;br /&gt;Al autoconfigurarse ha creado un archivo de configuración nuevo, pero se ha hecho una copia de seguridad del anterior. Lo único que hay que hacer es restaurar el archivo anterior.&lt;br /&gt;&lt;br /&gt;El archivo es /etc/X11/xorg.conf. El archivo de seguridad se llamará xorg.conf más la fecha en que se sustituyó.&lt;br /&gt;&lt;br /&gt;Así, lo único que hay que hacer es: sudo cp /etc/X11/xorg.conf.20091201101010 /etc/X11/xorg.conf&lt;br /&gt;&lt;br /&gt;El número 20091201101010 es la fecha y la hora en que se creó. Tendrás que mirar cuál es la fecha y la hora en tu caso.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2293442199034493988-1001471911017440562?l=tecnorails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecnorails.blogspot.com/feeds/1001471911017440562/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2293442199034493988&amp;postID=1001471911017440562' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2293442199034493988/posts/default/1001471911017440562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2293442199034493988/posts/default/1001471911017440562'/><link rel='alternate' type='text/html' href='http://tecnorails.blogspot.com/2009/12/perdida-de-resolucion-en-ubuntu.html' title='Recuperar resolución de pantalla en ubuntu'/><author><name>Carlos Vela</name><uri>http://www.blogger.com/profile/11325427761125476303</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_q_Hr9GLT77w/SaRfEJ03WVI/AAAAAAAAAAw/uwhPOfr1LPs/S220/avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2293442199034493988.post-278019414040384947</id><published>2009-03-21T08:10:00.000-07:00</published><updated>2009-03-21T08:34:17.788-07:00</updated><title type='text'>Lipsiadmin y Rails: campos belongs_to</title><content type='html'>Lipsiadmin no ofrece manejo automático de campos relacionales, como belongs_to.&lt;br /&gt;&lt;br /&gt;El autor, &lt;a href="http://groups.google.com/group/lipsiadmin/browse_thread/thread/3df372bfe593e2d9/ead6705924db8ff5?lnk=gst&amp;amp;q=select#ead6705924db8ff5"&gt;Davide D'Agostino se escuda&lt;/a&gt; en que no es predecible el contenido a mostrar del objeto enlazado. Podría usar un método como .to_s o cualquier otro para uso exclusivo de Lipsiadmin, pero no ha tomado en cuenta esa posibilidad. Así que lo único que propone es añadir a mano el código necesario.&lt;br /&gt;&lt;br /&gt;Los cambios no son muchos, pero automatizado estaría mejor.&lt;br /&gt;&lt;br /&gt;Entrando al tema, los cambios serían los siguientes:&lt;br /&gt;&lt;br /&gt;Como ejemplo, parto de una tablas de clasificaciones que incluye una categoría y una división, ambos en sendas tablas, relacionadas mendiante belongs_to.&lt;br /&gt;&lt;br /&gt;Para incluir el campo en el listado, hay que modificar al controlador de &lt;span style="font-style: italic;"&gt;clasificaciones&lt;/span&gt; de &lt;span style="font-style: italic;"&gt;backend&lt;/span&gt; en el método &lt;span style="font-style: italic;"&gt;index&lt;/span&gt; las líneas (2ª y 3ª):&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="ruby"&gt;&lt;br /&gt;       return_data[:clasificaciones] = clasificaciones.collect{|u| { :id =&gt; u.id,&lt;br /&gt;                                                       :categoria_id =&gt; u.categoria.abrev,&lt;br /&gt;                                                       :division_id =&gt; u.division.abrev,&lt;br /&gt;                                                       :equipo =&gt; u.equipo,&lt;br /&gt;                                                       :posicion =&gt; u.posicion,&lt;br /&gt;                                                       :jugados =&gt; u.jugados,&lt;br /&gt;                                                       :ganados =&gt; u.ganados,&lt;br /&gt;                                                       :empatados =&gt; u.empatados,&lt;br /&gt;                                                       :perdidos =&gt; u.perdidos,&lt;br /&gt;                                                       :favor =&gt; u.favor,&lt;br /&gt;                                                       :contra =&gt; u.contra,&lt;br /&gt;                                                       :bonus =&gt; u.bonus,&lt;br /&gt;                                                       :puntos =&gt; u.puntos,&lt;br /&gt;                                                       :created_at =&gt; u.created_at,&lt;br /&gt;                                                      :updated_at =&gt; u.updated_at } }&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;En la vista &lt;span style="font-style: italic;"&gt;index.js.erb&lt;/span&gt; de &lt;span style="font-style: italic;"&gt;backend/clasificaciones&lt;/span&gt;, habría que añadir la información a las variable &lt;span style="font-weight: bold;"&gt;items&lt;/span&gt; y el parámetro  &lt;span style="font-weight: bold;"&gt;columns&lt;/span&gt; del &lt;span style="font-weight: bold;"&gt;grid&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="ruby"&gt;&lt;br /&gt;var items = [&lt;br /&gt;{name: 'categoria_id'},&lt;br /&gt;{name: 'division_id'},&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="ruby"&gt;&lt;br /&gt;   columns: [&lt;br /&gt;       selections,&lt;br /&gt;       {&lt;br /&gt;               header: 'Categoria',&lt;br /&gt;               sortable: false,&lt;br /&gt;               dataIndex: 'categoria_id'&lt;br /&gt;           },{&lt;br /&gt;               header: 'División',&lt;br /&gt;               sortable: false,&lt;br /&gt;               dataIndex: 'division_id'&lt;br /&gt;           },{&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Para incluir una lista desplegable en el formulario, hay que añadir al parcial _form:&lt;br /&gt;&lt;pre name="code" class="ruby"&gt;&lt;br /&gt;%li&lt;br /&gt;%label Categoría&lt;br /&gt;=select :clasificacion, :categoria_id, Categoria.find(:all).collect{|c| [c.to_s, c.id]}, {:include_blank =&gt; false, :selection =&gt; @clasificacion.categoria_id}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Similar para la división.&lt;br /&gt;&lt;br /&gt;Si tengo tiempo, o si alguien quiere, puede intentar incluir esta posibilidad a Lipsiadmin y remitir la solución como un parche a Davide D'Agostino.&lt;br /&gt;&lt;br /&gt;Saludos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2293442199034493988-278019414040384947?l=tecnorails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecnorails.blogspot.com/feeds/278019414040384947/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2293442199034493988&amp;postID=278019414040384947' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2293442199034493988/posts/default/278019414040384947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2293442199034493988/posts/default/278019414040384947'/><link rel='alternate' type='text/html' href='http://tecnorails.blogspot.com/2009/03/lipsiadmin-y-rails-campos-belongsto.html' title='Lipsiadmin y Rails: campos belongs_to'/><author><name>Carlos Vela</name><uri>http://www.blogger.com/profile/11325427761125476303</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_q_Hr9GLT77w/SaRfEJ03WVI/AAAAAAAAAAw/uwhPOfr1LPs/S220/avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2293442199034493988.post-5161629435966023621</id><published>2009-02-24T11:53:00.000-08:00</published><updated>2009-02-26T11:14:06.985-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fckeditor'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='lipsiadmin'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>FCKEditor con Lipsiadmin en Rails</title><content type='html'>Con FCKEditor se puede añadir un área de texto con formato de forma rápida y sencilla. Lipsiadmin usa Ext para la presentación de pantalla, aunque no para el contenido, por lo que se puede usar sobre HTML y Javascript. La configuración que me ha funcionado es la siguiente:&lt;br /&gt;&lt;br /&gt;En backend/base/index.html.haml, antes de =javascript_include_tag "backend", "forms":&lt;br /&gt;&lt;pre class="ruby" name="code"&gt;&lt;br /&gt;=javascript_include_tag "fckeditor.js"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;El archivo fckeditor.js debe estar en /public/javascripts&lt;br /&gt;&lt;br /&gt;La carpeta fckeditor debe estar dentro de /public/javascripts&lt;br /&gt;&lt;br /&gt;En public/javascripts/forms.js pertenecinete a Lipsiadmin, la función stiledForm es la que hay que modificar:&lt;br /&gt;&lt;pre class="ruby" name="code"&gt;&lt;br /&gt;function styledForms() {&lt;br /&gt; hoverEffects();&lt;br /&gt; buttonHovers();&lt;br /&gt; formHovers();&lt;br /&gt; //FCKEditor&lt;br /&gt; var sBasePath = '/fckeditor/'&lt;br /&gt; var oFCKeditor = new FCKeditor( 'FCKEditor', '100%', '400' ) ;&lt;br /&gt; oFCKeditor.BasePath = sBasePath ;&lt;br /&gt; oFCKeditor.ReplaceTextarea() ;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;En la vista correspondiente a Lipsiadmin:&lt;br /&gt;&lt;pre class="ruby" name="code"&gt;&lt;br /&gt;&amp;lt;%=text_area :noticia, :contenido, :rows =&amp;gt; 20, :id =&amp;gt; 'FCKEditor'%&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Comentar la línea 127 de fckeditor.js para que no salga error cuando no haya TEXTAREA en el cuerpo:&lt;br /&gt;&lt;br /&gt;&lt;pre class="ruby" name="code"&gt;&lt;br /&gt;//alert( 'Error: The TEXTAREA with id or name set to "' + this.InstanceName + '" was not found' ) ;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Otra opción es usar TinyMce Editor usando modificaciones similares, pero por ahora adolece de un mal funcionamiento tras la primera carga&lt;br /&gt;de la que no he encontrado solución.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2293442199034493988-5161629435966023621?l=tecnorails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecnorails.blogspot.com/feeds/5161629435966023621/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2293442199034493988&amp;postID=5161629435966023621' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2293442199034493988/posts/default/5161629435966023621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2293442199034493988/posts/default/5161629435966023621'/><link rel='alternate' type='text/html' href='http://tecnorails.blogspot.com/2009/02/fckeditor-con-lipsiadmin-en-rails.html' title='FCKEditor con Lipsiadmin en Rails'/><author><name>Carlos Vela</name><uri>http://www.blogger.com/profile/11325427761125476303</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_q_Hr9GLT77w/SaRfEJ03WVI/AAAAAAAAAAw/uwhPOfr1LPs/S220/avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2293442199034493988.post-9076305755357918697</id><published>2009-01-08T14:58:00.000-08:00</published><updated>2009-01-16T14:30:44.197-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='powerpoint'/><category scheme='http://www.blogger.com/atom/ns#' term='tutoriales'/><title type='text'>Creación rápida de diapositivas powerpoint</title><content type='html'>Nos centraremos en la generación de diapositivas para mostrar fotos.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para ello, en Powerpoint, pulsamos el menú Archivo y la opción Nuevo.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5289064698776823874" style="margin: 0px auto 10px; display: block; width: 307px; height: 169px; text-align: center;" alt="" src="http://1.bp.blogspot.com/_q_Hr9GLT77w/SWaIUiSmqEI/AAAAAAAAAAM/_t82k4co9Ns/s320/menu_presentacion.png" border="0" /&gt; En la barra de Nueva presentación, seleccionar Álbum de fotografías...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5289065228583981282" style="margin: 0px auto 10px; display: block; width: 320px; height: 219px; text-align: center;" alt="" src="http://4.bp.blogspot.com/_q_Hr9GLT77w/SWaIzX-eUOI/AAAAAAAAAAU/UwyE5EXY7QM/s320/ventana_album.png" border="0" /&gt;&lt;br /&gt;Pulsamos el botón Archivo o disco...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Seleccionamos las imágenes a mostrar y dar al botón Insertar.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5289066498475609938" style="margin: 0px auto 10px; display: block; width: 320px; height: 219px; text-align: center;" alt="" src="http://4.bp.blogspot.com/_q_Hr9GLT77w/SWaJ9SsOz1I/AAAAAAAAAAc/Up74gBM-XJw/s320/ventana_album_2.PNG" border="0" /&gt; Las imágenes admiten desde aquí mínimos retoques. Lo más destacable la posibilidad de girarlos (2).&lt;br /&gt;&lt;br /&gt;También, la lista se puede reordenar con los botones de las flechas a la izquierda del botón Quitar (3).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;En la zona Diseño del álbum, cambiar el Diseño de la imagen a 2 imágenes con título (4).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;En la Forma del marco, seleccionar adorno de esquina redondeado (5).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Pulsar el botón Examinar de Plantilla de diseño (6).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Abrir la carpeta Presentation Designs.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ahí se puede elegir la que más nos guste. Por ejemplo, Watermark. Pulsar el botón Seleccionar.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Dándole al botón Crear (7), sale una diapositiva de presentación y las fotos en las siguientes diapositivas.&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5289070342670219490" style="margin: 0px auto 10px; display: block; width: 320px; height: 246px; text-align: center;" alt="" src="http://2.bp.blogspot.com/_q_Hr9GLT77w/SWaNdDbpeOI/AAAAAAAAAAk/vzm9l7UB0po/s320/diapositivas.png" border="0" /&gt; Lo que hay que cambiar son los textos. Si se quiere, también se puede añadir más textos sobre o bajo las fotos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2293442199034493988-9076305755357918697?l=tecnorails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecnorails.blogspot.com/feeds/9076305755357918697/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2293442199034493988&amp;postID=9076305755357918697' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2293442199034493988/posts/default/9076305755357918697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2293442199034493988/posts/default/9076305755357918697'/><link rel='alternate' type='text/html' href='http://tecnorails.blogspot.com/2009/01/creacin-rpida-de-diapositivas.html' title='Creación rápida de diapositivas powerpoint'/><author><name>Carlos Vela</name><uri>http://www.blogger.com/profile/11325427761125476303</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_q_Hr9GLT77w/SaRfEJ03WVI/AAAAAAAAAAw/uwhPOfr1LPs/S220/avatar.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_q_Hr9GLT77w/SWaIUiSmqEI/AAAAAAAAAAM/_t82k4co9Ns/s72-c/menu_presentacion.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2293442199034493988.post-4603784139482301799</id><published>2009-01-06T04:15:00.000-08:00</published><updated>2009-01-16T17:01:18.822-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='importar web'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Publicando extracto de web externa en Rails con Hpricot</title><content type='html'>Estoy desarrollando la web del Club de Rugby Málaga, y necesito mostrar la clasificación de los equipos. Para hacer la actualización lo más automática posible, no hay nada más automático que extraer esa información de otro sitio donde esté publicado. Por supuesto, no hay que olvidar citar la fuente y poner algún enlace.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Prerrequisitos&lt;/span&gt;&lt;br /&gt;Yo he utilizado la gema &lt;a href="https://code.whytheluckystiff.net/hpricot/"&gt;HPRICOT&lt;/a&gt; (aunque su sitio web parece no estar activo, la gema se puede instalar).&lt;br /&gt;&lt;br /&gt;Para instalarla: sudo gem install hpricot&lt;br /&gt;&lt;br /&gt;Además hacen falta las gemas &lt;em&gt;rubygems&lt;/em&gt; y &lt;em&gt;open-uri&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Manos a la obra&lt;/span&gt;&lt;br /&gt;La información en cuestión está en la &lt;a href="http://www.ferugby.com/"&gt;Federación Española de Rugby&lt;/a&gt;. En el enlace &lt;strong&gt;calendario liga&lt;/strong&gt; está la información que necesito.&lt;br /&gt;&lt;br /&gt;Para ver únicamente la información necesaria, copio la ruta del enlace y lo abro en una nueva pestaña.&lt;br /&gt;&lt;br /&gt;La página contiene varias listas desplegables para seleccionar categoría, temporada y equipo. Establezco las listas desplegables con los valores deseados y ya tengo la página de la que quiero extraer la información.&lt;br /&gt;&lt;br /&gt;La ruta de la página (junto con los parámetros) es &lt;a href="http://www.ferugby.com/competiciones/calendario.php?id2=3&amp;amp;fecha_1=2008&amp;amp;cat=Liga+Nacional#j7"&gt;http://www.ferugby.com/competiciones/calendario.php?id2=3&amp;amp;fecha_1=2008&amp;amp;cat=Liga+Nacional#j7&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Como la parte final (#j7) es un enlace local (o ancla) a la propia página, lo descartaré. La página se puede leer con:&lt;br /&gt;&lt;pre name="code" class="ruby"&gt;&lt;br /&gt;page = Hpricot( open(url) )&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Revisando el código fuente de la página, todas las tablas de jornadas están dentro de tablas con el tag HTML:&lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;br /&gt;&amp;lt;table id="tabla" bordercolor="#990000" cellspacing="0" cellpadding="0" align="center" border="0" /&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Con &lt;em&gt;hpricot&lt;/em&gt; se puede extraer un array de tags que contengan una determinada propiedad. Para este caso&lt;br /&gt;&lt;pre name="code" class="ruby"&gt;&lt;br /&gt;@tablas = page.search("//table[@id='tabla']" )&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Así, ya tenemos el controlador:&lt;br /&gt;&lt;pre name="code" class="ruby"&gt;&lt;br /&gt;def mostrar_calendario_liga&lt;br /&gt;url = 'http://www.ferugby.com/competiciones/calendario.php?id2=3&amp;amp;fecha_1=2008&amp;amp;ide=&amp;amp;cat=Liga+Nacional'&lt;br /&gt;#page = Hpricot(url) #si las codificaciones coinciden&lt;br /&gt;page = Hpricot(Iconv.iconv("UTF-8", "ISO-8859-1", open(url).read).join )&lt;br /&gt;@tablas = page.search("//table[@id='tabla']" )&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Para la vista, hay que ver que cada tabla de cada jornada, tiene la siguiente estructura:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;1ª fila: Número de jornada.&lt;/li&gt;&lt;li&gt;2ª fila: Encabezados de columnas.&lt;/li&gt;&lt;li&gt;3ª fila en adelante: Datos de los partidos.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Así, la vista queda:&lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;br /&gt;&lt;%for t in @tablas do%&gt;&lt;br /&gt; &lt;%filas=t.search("//tr")%&gt;&lt;br /&gt; &amp;lt;table id="tabla" align="center" border="0"&amp;gt;&lt;br /&gt; &amp;lt;tbody&amp;gt;&lt;br /&gt; &amp;lt;tr id="fil1"&amp;gt;&lt;br /&gt;   &amp;lt;td id="cabecera_fila1" colspan="7"&amp;gt;&lt;br /&gt;   &amp;lt;%=t.search("//tr").first.search("//td").first.inner_html%&amp;gt;&lt;br /&gt;   &amp;lt;/td&amp;gt;&lt;br /&gt; &amp;lt;/tr&amp;gt;&lt;br /&gt; &amp;lt;tr id="fil2"&amp;gt;&lt;br /&gt;   &amp;lt;td width="1" align="center"&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;   &amp;lt;td width="1" align="center"&amp;gt;FECHA&amp;lt;/td&amp;gt;&lt;br /&gt;   &amp;lt;td width="1" align="center"&amp;gt;HORA&amp;lt;/td&amp;gt;&lt;br /&gt;   &amp;lt;td width="50%" align="center"&amp;gt;EQUIPO LOCAL&amp;lt;/td&amp;gt;&lt;br /&gt;   &amp;lt;td colspan="2" width="60" align="center"&amp;gt;RESULTADO&amp;lt;/td&amp;gt;&lt;br /&gt;   &amp;lt;td width="50%" align="center"&amp;gt;EQUIPO VISITANTE&amp;lt;/td&amp;gt;&lt;br /&gt; &amp;lt;/tr&amp;gt;&lt;br /&gt; &lt;%for r in filas[2..20]%&gt;&lt;br /&gt;   &amp;lt;tr id="fila_contenido"&amp;gt;&lt;br /&gt;   &lt;%celdas=r.search("//td")%&gt;&lt;br /&gt;   &lt;%for celda in celdas[0..6] do%&gt;&lt;br /&gt;     &amp;lt;td&amp;gt;&lt;br /&gt;       &lt;%c=celda.search("//a")%&gt;&lt;br /&gt;       &lt;%c=celda if c.size == 0%&gt;&lt;br /&gt;       &lt;%if c.inner_html.include?('UMA')%&gt;&lt;br /&gt;         &amp;lt;strong&amp;gt;&lt;%=c.inner_html%&gt;&amp;lt;/strong&amp;gt;&lt;br /&gt;       &lt;%else%&gt;&lt;br /&gt;         &lt;%=c.inner_html%&gt;&lt;br /&gt;       &lt;%end%&gt;&lt;br /&gt;     &amp;lt;/td&amp;gt;&lt;br /&gt;   &lt;%end%&gt;&lt;br /&gt;   &amp;lt;/tr&amp;gt;&lt;br /&gt; &lt;%end%&gt;&lt;br /&gt; &amp;lt;/tbody&amp;gt;&lt;br /&gt; &amp;lt;/table&amp;gt;&lt;br /&gt;&lt;%end%&gt;&lt;br /&gt;&amp;lt;p&amp;gt;&lt;br /&gt;Los resultados se actualizan directamente desde la página de la&lt;br /&gt;&amp;lt;a href="http://www.ferugby.com"&amp;gt;Federación Española de Rugby&amp;lt;/a&amp;gt;.&lt;br /&gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;En la línea 18 pongo [2..20] para saltar las dos primeras filas, y un número suficiente (20 en este caso) para que no queden sin mostrar.&lt;br /&gt;En la línea 20 se extraen los contenidos de los TD de la fila.&lt;br /&gt;En la línea 21 se recorren los TD.&lt;br /&gt;En las líneas 23 y 24 se extrae el contenido descartando la existencia de un posible enlace.&lt;br /&gt;En las líneas de 25 a 29 se expone el contenido, destacando los que contengan el texto 'UMA'.&lt;br /&gt;&lt;br /&gt;Lo último es elegir los estilos CSS para los ID de los tags de las tablas y conseguir el aspecto deseado.&lt;br /&gt;&lt;br /&gt;Espero que le sirva a alguien, como me va a servir a mí para completar el resto de categorías.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2293442199034493988-4603784139482301799?l=tecnorails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecnorails.blogspot.com/feeds/4603784139482301799/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2293442199034493988&amp;postID=4603784139482301799' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2293442199034493988/posts/default/4603784139482301799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2293442199034493988/posts/default/4603784139482301799'/><link rel='alternate' type='text/html' href='http://tecnorails.blogspot.com/2009/01/publicando-extracto-de-web-externa-en.html' title='Publicando extracto de web externa en Rails con Hpricot'/><author><name>Carlos Vela</name><uri>http://www.blogger.com/profile/11325427761125476303</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_q_Hr9GLT77w/SaRfEJ03WVI/AAAAAAAAAAw/uwhPOfr1LPs/S220/avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2293442199034493988.post-4753339301032308028</id><published>2008-12-03T01:20:00.000-08:00</published><updated>2008-12-03T01:32:17.565-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='configurar'/><category scheme='http://www.blogger.com/atom/ns#' term='wifi'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Configuración WIFI en ubuntu linux</title><content type='html'>Pasos para configurar tarjeta wifi en linux con controladores de windows:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;pre&gt;sudo aptitude install ndiswrapper-common ndiswrapper-modules-1.9 ndiswrapper-utils-1.9&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;&lt;pre&gt;INSTALAR: sudo ndiswrapper -i nuestrodriver.inf&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;&lt;pre&gt;COMPROBAR: sudo ndiswrapper -l&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;&lt;pre&gt;CARGAR MÓDULO: sudo depmod -a&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;&lt;pre&gt;CARGAR MÓDULO: sudo modprobe ndiswrapper&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;&lt;pre&gt;ACTIVAR NDISWRAPPER: sudo ndiswrapper -m&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;&lt;pre&gt;AÑADIR ndiswrapper A /etc/modules: sudo gedit /etc/modules&lt;/pre&gt;&lt;/li&gt;&lt;/ul&gt;Esta información ha sido extraída de &lt;a href="http://www.guia-ubuntu.org/index.php?title=Instalar_driver_de_tarjetas_WIFI_con_Ndiswrapper"&gt;http://www.guia-ubuntu.org/index.php?title=Instalar_driver_de_tarjetas_WIFI_con_Ndiswrapper&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2293442199034493988-4753339301032308028?l=tecnorails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecnorails.blogspot.com/feeds/4753339301032308028/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2293442199034493988&amp;postID=4753339301032308028' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2293442199034493988/posts/default/4753339301032308028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2293442199034493988/posts/default/4753339301032308028'/><link rel='alternate' type='text/html' href='http://tecnorails.blogspot.com/2008/12/configuracin-wifi-en-ubuntu-linux.html' title='Configuración WIFI en ubuntu linux'/><author><name>Carlos Vela</name><uri>http://www.blogger.com/profile/11325427761125476303</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_q_Hr9GLT77w/SaRfEJ03WVI/AAAAAAAAAAw/uwhPOfr1LPs/S220/avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2293442199034493988.post-1332939777924025104</id><published>2008-11-26T10:29:00.000-08:00</published><updated>2008-11-26T10:34:44.157-08:00</updated><title type='text'>Bienvenida</title><content type='html'>Mi nombre es Carlos Vela. Soy profesor de tecnología de secundaria y me encuentro preparando el Proyecto Fin de Carrera de Informática en &lt;b&gt;Ruby on Rails&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Las entradas publicadas tendrán que ver con las asignaturas que imparto y con Rails.&lt;br /&gt;&lt;br /&gt;Hasta pronto.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2293442199034493988-1332939777924025104?l=tecnorails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2293442199034493988/posts/default/1332939777924025104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2293442199034493988/posts/default/1332939777924025104'/><link rel='alternate' type='text/html' href='http://tecnorails.blogspot.com/2008/11/bienvenida.html' title='Bienvenida'/><author><name>Carlos Vela</name><uri>http://www.blogger.com/profile/11325427761125476303</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_q_Hr9GLT77w/SaRfEJ03WVI/AAAAAAAAAAw/uwhPOfr1LPs/S220/avatar.jpg'/></author></entry></feed>
