This is an Atom syndication feed. It is intended to be viewed in a news aggregator or syndicated to another site. Please visit the Atom Project for more information.
Tecnologíathe-shaker: that blog/flickr/multimedia-aggregator kind of thingnickel in space http://s3.amazonaws.com/lcp/nickel/f/b9b95d4a2633b244a729a8dd0258ef6a.jpghttp://nickel.lacoctelera.net/post/2008/05/03/que-cierre-ultimoQue cierre el último...2008-05-03T20:35:03+00:002008-05-04T16:01:43+00:00
<p>... <a href="http://juan.gg/blog/2008/05/03/que-tal-me-ves/">que yo ya me voy</a> :P
<div>
</div>
<div><img src="http://juan.gg/blog/wp-content/uploads/2008/05/20070827032149-la-llave.jpg" id="img_0">
</div>
<div>
</div>
<div>
</div>
<div>Nos vemos en <a href="http://juan.gg/blog">http://juan.gg/blog</a>
</div>
</p>
nickel in space http://s3.amazonaws.com/lcp/nickel/f/b9b95d4a2633b244a729a8dd0258ef6a.jpghttp://nickel.lacoctelera.net/post/2008/04/12/rails-paginas-estaticasRails: Páginas estáticas2008-04-12T07:39:55+00:002008-04-12T08:08:01+00:00
<p>Hace no mucho llegaría a vuestros feeds <a href="http://blog.hasmanythrough.com/2008/4/2/simple-pages">el consejo de Josh Susser</a> sobre como hacer sencillo lo que normalmente nos tiene un rato dubitativos. ¿Donde meter/asociar las dichosas páginas estáticas?</p>
<p>Pese a que la solución de Josh es elegante, <a href="http://giantrobots.thoughtbot.com/2008/4/2/static-pages-for-the-enterprise">di con otra</a> que me pareció bastante más dinámica y que con pequeños ajustes, se convierte, de manera oficial y por vía de apremio, en la solución de aquí en adelante.</p>
<p>Tan sencillo como crearte el controlador Pages..</p>
<p><img src="http://i16.photobucket.com/albums/b44/nickel83/pages.png" border="0" alt="rails ruby"><br />
<a href="http://pastie.caboo.se/179548">Copialo</a></p>
<p>.. y añadir lo siguiente al routes.rb</p>
<pre>
map.page '/page/:name', :controller => 'pages', :action => 'show', :name => nil
</pre>
<p>Luego podrás añadir tantos páginas como quieras a la carpeta app/views/pages y enlazarlas es tan sencillo como..</p>
<pre>
# Con el fichero ayuda.html.erb en app/views/pages
link_to "Ayuda", page_path('ayuda')
</pre>
nickel in space http://s3.amazonaws.com/lcp/nickel/f/b9b95d4a2633b244a729a8dd0258ef6a.jpghttp://nickel.lacoctelera.net/post/2008/04/05/creando-repositorio-gitCreando un repositorio Git en remoto2008-04-05T03:20:48+00:002008-07-07T14:45:58+00:00
<p>Desde hace un tiempo, en la comunidad Rails, parece que no se habla de otra cosa que no sea <a href="http://es.wikipedia.org/wiki/Git">Git</a>: un control de versiones que, diseñado por Linus Torvald (se ve que tenía algún que otro rato libre), trae consigo <a href="http://es.wikipedia.org/wiki/Git">una serie mejoras</a> con respecto a los SMCs ya existente y sobre los que ya corren proyectos como: el propio fuente de Linux, Capistrano, Prototype o Scriptaculous. </p>
<p>Hace un par de días David Heinemeier <a href="">anunció</a> que ahora sería el core de Rails el que tomaría el mismo camino. Estoy en que se debe haber enterado de que en <a href="http://www.flowersinspace.com">Flowers In Space</a> no usamos otra ya otra cosa y no ha querido ser menos ;-P</p>
<p>Toda esta historía era porque quería completar la entrada de <a href="http://www.lacoctelera.com/lvalverde/post/2008/03/24/mi-experiencia-git">La Capitana</a> con el método que seguimos para crear un repositorio para cualquiera de nuestros nuevos proyectos. Vamos allá. </p>
<p>Situados en local y dentro del proyecto que quiero gestionar con Git, realizamos lo siguiente:</p>
<blockquote><p>
1. $ git init<br />
Si la carpeta contiene ficheros que versionar pasamos al paso 3.<br />
2. $ touch fichero-borrame<br />
3. $ git add .<br />
4. $ git commit -a -m "Commit inicial"</p>
<p>5. $ git repack -d<br />
6. $ git clone --bare -l . /tmp/your-proj.git<br />
7. $ git --bare --git-dir=/tmp/your-proj.git update-server-info
</p></blockquote>
<p>Ya con el proyecto empaquetado nos dispodremos a subirlo. Para ello tendré en mi servidor instalado el git-core (al igual que lo tenía en local) y el usuario <em>git</em>, aunque esto ya es a gusto del consumidor (los temas de sysadmin no es que me apasionen demasiado).</p>
<blockquote><p>
8. $ scp -r /tmp/your-proj.git mi_usuario@miservidor:~/<br />
9. $ ssh miservidor<br />
10. $ sudo cp -r your-proj.git /var/git # El usuario git debe ser el owner de /var/git para el clone<br />
11. $ sudo chown -R git:git your-proj.git/
</p></blockquote>
<p>Y ya por último nos clonamos el repositorio al local.</p>
<blockquote><p>
Si nos la vamos a traer a la misma carpeta donde está el "original", no olvidar cambiarle el nombre al original o darle uno nuevo la nueva copia.<br />
12. $ git clone ~/carpeta_desarrollo git@miservidor:/var/git/your-proj.git nuevo-nombre-proyecto
</p></blockquote>
<p>Nada más. Suerte!
</p>
nickel in space http://s3.amazonaws.com/lcp/nickel/f/b9b95d4a2633b244a729a8dd0258ef6a.jpghttp://nickel.lacoctelera.net/post/2008/03/30/enviar-email-traves-gmail-generando-y-adjuntando-pdfEnviar email a través de gmail generando y adjuntando un PDF2008-03-30T15:21:56+00:002008-04-04T19:56:36+00:00
<p>Con esta tarea me ví envuelto una mañana y que, gracias a la buena documentación internauta, fue menos doloroso de lo que en un principio pensé. No he hecho un paso a paso porque me parece tan simple que es mejor verlo, probarlo uno mismo y sacar tus propias conclusiones en local con todo montadito. Eso sí, os dejo algunas indicaciones de algunos detalles que hay que configurar.</p>
<p>El tema del PDF lo solucioné gracias a la ayuda de <a href="http://dagi3d.net/blog/archive/2007/06/28/generar-documentos-pdf-con-rails-y-flying-saucer">Dagi3d</a> y Flying Saucer: Un generador de PDFs a través de XHTML y CSS la mar de sencillo hecho en JAVA.</p>
<p>A configurar solo tendreis que, en config/initializers/gmail_conf.rb, indicar las credenciales de la cuenta de gmail desde donde se enviarán los emails (:user_name y :password). Y en config/initializers/java_conf.rb deberemos indicar el path hasta nuestro directorio java.</p>
<p>Como me molesta mucho que las aplicaciones perezcan en el tiempo por colgarlo en hostings personales y demás, la cuelgo en <a href="http://code.google.com/p/gmail-pdf-rails/downloads/list">Google Code</a> que seguro que perdurá por los siglos de los siglos, ¿verdad <a href="http://lacoctelera.com/n3uro5i5">n3uro5i5</a>? :P</p>
<p>Descárgatelo en <a href="http://code.google.com/p/gmail-pdf-rails/downloads/list">Google Code</a></p>
nickel in space http://s3.amazonaws.com/lcp/nickel/f/b9b95d4a2633b244a729a8dd0258ef6a.jpghttp://nickel.lacoctelera.net/post/2008/03/16/scrubyt-www-mechanize-hpricot-on-steroidscRUBYt!: WWW::Mechanize && Hpricot on Steroid2008-03-16T20:54:13+00:002008-03-16T22:31:46+00:00
<p>Lo que empezó como <a href="">una curiosidad</a> se ha convertido en mi día a día. Eso sí, tirando de una opción de "alto nivel" en este mundo del <a href="http://en.wikipedia.org/wiki/Web_scraping">Web Scraping</a>: <a href="http://www.scrubyt.org">scRUBYt!</a></p>
<p>Esta herramienta nos da muchisimas posibilidades. Ya sea obtener resultados a través de terceras páginas (resultados Google, la temperatura de una localidad a través de Instituto Nacional de Meteorología,...) y crearnos un bonito mashup. Acceder al <strong>deep web</strong>, la información de sus bases de datos, de las aplicaciones web que nos interesen. Imaginación al poder.</p>
<p>Todo esto lo podremos hacer con las dos funciones fundamentales de scRUBYt!: <strong>navegar</strong>: traerse la página, clickar enlaces, rellenar inputs, traerse resultados paginados,... y hacer <strong>scraping</strong> sobre la información obtenida.</p>
<p>La primera de ellas lo consigue con WWW::Mechanize, el <em>motor de navegación</em>, el cuál tiene un buen problema a expensas de ser pronto solucionado: no interpreta el código Javascript. Hasta que esto cambie tenemos una alternativa: FirescRUBYt! (scRUBYt! y Firewatir), que suplirá dicha deficiencia usando Firefox para navegar (con JS, claro) y traerse la información (prometo escribir sobre como hacer funcionar toda historia).</p>
<p>Por otro lado, aunque el resultado del scraping lo podemos obtener en diferentes formatos, el más común es XML que, tratado con HPricot, hacen que trabajar con los resultados sea muy sencillo.</p>
<p>La verdad es que esta herramienta me ha permitido llegar de manera rápida y sencilla a toda la información que he necesitado de las aplicaciones web, aunque durante el desarrollo he echado bastante en falta que el metodo <em>next_page</em> funcionase (espero que en una pronta versión lo venga haciendo :-). </p>
<p>Os dejo mi ejemplillo de traductor con scRUBYt!<br />
<a href="http://pastie.caboo.se/166365"><img src="http://i16.photobucket.com/albums/b44/nickel83/2008-03-16_1553.png" alt="scrubyt rails ruby ror" border="0"></a><br />
<a href="http://pastie.caboo.se/166365">Copialo</a></p>
<p>Enlaces de interés:<br />
<a href="http://scrubyt.org/">Web</a> - <a href="http://wiki.scrubyt.org/">Wiki</a> - <a href="http://agora.scrubyt.org/">Foro</a><br />
<a href="http://www.rubyrailways.com/data-extraction-for-web-20-screen-scraping-in-rubyrails-episode1/">http://www.rubyrailways.com/data-extraction-for-web-20-screen-scraping-in-rubyrails-episode1/</a></p>
nickel in space http://s3.amazonaws.com/lcp/nickel/f/b9b95d4a2633b244a729a8dd0258ef6a.jpghttp://nickel.lacoctelera.net/post/2008/03/03/mi-blog-notasMi "blog" de notas2008-03-03T18:16:12+00:002008-03-04T03:24:11+00:00
<p>Pues nada, de aquí en adelante me voy a escribir toda tontería que consiga hacer Rails. Mil veces me habrá pasado<big></big> eso de superar un problema y trás bastante tiempo<small></small> tener que volver a enfrentarme al problema como si fuese la primera vez. Memoria de <span class="Apple-style-span" style="font-style: italic;">pescao </span>que tiene uno.
<div>
</div>
<div>He superado mucho durante este primer año de desarrollo con Rails. Ni imaginar lo que he olvidado ya <img src="http://www.lacoctelera.com/imag/ap/wysiwyg/emoticon_12.gif" id="img_0"></div>
<div><br class="webkit-block-placeholder"></div>
<div><img src="http://content.screencast.com/media/2d533d2f-f9c3-4f25-a655-453d61c25012_042a6618-16fd-4319-87c8-17650cf1c5d5_static_0_0_00000187.png" id="img_1" class="imgcen">
</div>
<div>
<div>
</div>
</div>
</br></p>
nickel in space http://s3.amazonaws.com/lcp/nickel/f/b9b95d4a2633b244a729a8dd0258ef6a.jpghttp://nickel.lacoctelera.net/post/2008/02/07/feedsFeeds2008-02-07T04:40:27+00:002008-02-07T18:28:29+00:00
<p><img src="http://blaugh.com/cartoons/070119_finish_your_RSS.gif" id="img_0"></p>
<div><br class="webkit-block-placeholder"></div>
<div><img src="http://www.lacoctelera.com/imag/ap/wysiwyg/emoticon_6.gif" id="img_1"><br class="webkit-block-placeholder"></div>
<div><br class="webkit-block-placeholder"></div>
<div>Visto en: <a href="http://www.human-computer.net/blog/2008/02/04/infoxicacion/" title="http://www.human-computer.net/blog/2008/02/04/infoxicacion/" id="link_0">http://www.human-computer.net/blog/2008/02/04/infoxicacion/</a> </div>
</br></br></br>
nickel in space http://s3.amazonaws.com/lcp/nickel/f/b9b95d4a2633b244a729a8dd0258ef6a.jpghttp://nickel.lacoctelera.net/post/2007/12/31/pequeaao-hack-traductorPequeño hack traductor2007-12-31T00:20:03+00:002007-12-31T00:23:53+00:00
<p>Como <a href="http://www.lacoctelera.com/porras">buen programador vago™</a> y lector, que remedio, de la buena y extensa documentación <em>shakesperiana</em>, me dió, después de unas cuantas consultas al <em>pasable traductor de Google</em>, por hacerme un pequeño hack para disponer de dicha funcionalidad un poco más "a mano".
<pre>
require 'rubygems'
require 'mechanize'
unless ARGV.length > 0
puts "Usage: #{$0} word"
exit
end
agent = WWW::Mechanize.new
agent.user_agent_alias = 'Mac Safari'
page = agent.get('http://www.google.com/language_tools?hl=es')
translator = page.forms[1]
translator.text = "#{ARGV[0]}"
result = agent.submit(translator)
puts result.search("//input[@name='gtrans']").first.attributes["value"]
</pre>
<p>No es más que una pequeña adaptación de otro código que <a href="http://amrangaye.org/blog/2006/11/17/building-a-google-dictionary-lookup-client-with-ruby-mechanize-and-hpricot/">busca definiciones de palabras</a>, con el que he descubierto el brutal potencial que tiene la gema <a href="http://mechanize.rubyforge.org/mechanize/">WWW::Mechanize</a> junto <a href="http://code.whytheluckystiff.net/hpricot/">HPricot</a>.</p>
<p>¡ Feliz año nuevo ! <img src="imag/ap/wysiwyg/emoticon_2.gif" id="img_1"></p>
</p>
nickel in space http://s3.amazonaws.com/lcp/nickel/f/b9b95d4a2633b244a729a8dd0258ef6a.jpghttp://nickel.lacoctelera.net/post/2007/12/21/mi-amigo-poetaMi amigo el poeta2007-12-21T01:16:34+00:002007-12-21T01:16:34+00:00
<p>Paso a poneros un poemilla, que me ha dedicado un amigo, y que me ha hecho una ilusión tremenda :-)</p>
<blockquote><p>Tengo un amigo empresario<br />
que es un Bill Gates en potencia;<br />
tenía un tres por ciento escaso<br />
y anda ya por la veintena.</p>
<p>Informática es la empresa,<br />
porque él es informático,<br />
ahora tan solo comienza,<br />
es proyecto a largo plazo.</p>
<p>Aguanta nuestras bromitas<br />
con ánimo extraordinario<br />
y paciencia santojóbica.</p>
<p>Verás tu al flowerniano,<br />
se oirá la risa en Salónica<br />
cuando sea millonario...
</p></blockquote>
<p>Juan J. Sánchez</p>
nickel in space http://s3.amazonaws.com/lcp/nickel/f/b9b95d4a2633b244a729a8dd0258ef6a.jpghttp://nickel.lacoctelera.net/post/2007/12/01/buenas-nuevas-openidBuenas nuevas para OpenID2007-12-01T17:20:10+00:002007-12-01T17:21:30+00:00
<p>Y es que <a href="http://www.error500.net/openid-blogger" title="http://www.error500.net/openid-blogger" id=link_0>Google ha dedicido</a> dar soporte a OpenID en la próxima versión de Blogger. Por ahora, nuestra cuenta <a href="http://es.wikipedia.com/wiki/OpenId" title="http://es.wikipedia.com/wiki/OpenId" id=link_0>OpenID</a>, nos valdrá para poder comentar en cualquiera de los blogs que se encuentre en sus <em>dominios</em>. Pero oye, que ya es algo..</p>
<p>Me hace ilusión poder escribir en el <a href="http://achiwetnia.blogspot.com" title="http://achiwetnia.blogspot.com" id=link_1>blog del mejor equipo de futbol sala</a> en una de las ligas menos importante de Sevilla, mi equipo, con mi cuenta OpenID ^_^!
</p>