... que yo ya me voy :P
3 Mayo 2008
12 Abril 2008
Hace no mucho llegaría a vuestros feeds el consejo de Josh Susser sobre como hacer sencillo lo que normalmente nos tiene un rato dubitativos. ¿Donde meter/asociar las dichosas páginas estáticas?
Pese a que la solución de Josh es elegante, di con otra 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.
Tan sencillo como crearte el controlador Pages..
.. y añadir lo siguiente al routes.rb
map.page '/page/:name', :controller => 'pages', :action => 'show', :name => nil
Luego podrás añadir tantos páginas como quieras a la carpeta app/views/pages y enlazarlas es tan sencillo como..
# Con el fichero ayuda.html.erb en app/views/pages
link_to "Ayuda", page_path('ayuda')
5 Abril 2008
Desde hace un tiempo, en la comunidad Rails, parece que no se habla de otra cosa que no sea Git: un control de versiones que, diseñado por Linus Torvald (se ve que tenía algún que otro rato libre), trae consigo una serie mejoras con respecto a los SMCs ya existente y sobre los que ya corren proyectos como: el propio fuente de Linux, Capistrano, Prototype o Scriptaculous.
Hace un par de días David Heinemeier anunció 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 Flowers In Space no usamos otra ya otra cosa y no ha querido ser menos ;-P
Toda esta historía era porque quería completar la entrada de La Capitana con el método que seguimos para crear un repositorio para cualquiera de nuestros nuevos proyectos. Vamos allá.
Situados en local y dentro del proyecto que quiero gestionar con Git, realizamos lo siguiente:
1. $ git init
Si la carpeta contiene ficheros que versionar pasamos al paso 3.
2. $ touch fichero-borrame
3. $ git add .
4. $ git commit -a -m "Commit inicial"5. $ git repack -d
6. $ git clone --bare -l . /tmp/your-proj.git
7. $ git --bare --git-dir=/tmp/your-proj.git update-server-info
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 git, aunque esto ya es a gusto del consumidor (los temas de sysadmin no es que me apasionen demasiado).
8. $ scp -r /tmp/your-proj.git mi_usuario@miservidor:~/
9. $ ssh miservidor
10. $ sudo cp -r your-proj.git /var/git # El usuario git debe ser el owner de /var/git para el clone
11. $ sudo chown -R git:git your-proj.git/
Y ya por último nos clonamos el repositorio al local.
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.
12. $ git clone ~/carpeta_desarrollo git@miservidor:/var/git/your-proj.git nuevo-nombre-proyecto
Nada más. Suerte!
30 Marzo 2008
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.
El tema del PDF lo solucioné gracias a la ayuda de Dagi3d y Flying Saucer: Un generador de PDFs a través de XHTML y CSS la mar de sencillo hecho en JAVA.
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.
Como me molesta mucho que las aplicaciones perezcan en el tiempo por colgarlo en hostings personales y demás, la cuelgo en Google Code que seguro que perdurá por los siglos de los siglos, ¿verdad n3uro5i5? :P
Descárgatelo en Google Code
16 Marzo 2008
Lo que empezó como una curiosidad se ha convertido en mi día a día. Eso sí, tirando de una opción de "alto nivel" en este mundo del Web Scraping: scRUBYt!
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 deep web, la información de sus bases de datos, de las aplicaciones web que nos interesen. Imaginación al poder.
Todo esto lo podremos hacer con las dos funciones fundamentales de scRUBYt!: navegar: traerse la página, clickar enlaces, rellenar inputs, traerse resultados paginados,... y hacer scraping sobre la información obtenida.
La primera de ellas lo consigue con WWW::Mechanize, el motor de navegación, 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).
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.
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 next_page funcionase (espero que en una pronta versión lo venga haciendo :-).
Os dejo mi ejemplillo de traductor con scRUBYt!

Copialo
Enlaces de interés:
Web - Wiki - Foro
http://www.rubyrailways.com/data-extraction-for-web-20-screen-scraping-in-rubyrails-episode1/
3 Marzo 2008
Pues nada, de aquí en adelante me voy a escribir toda tontería que consiga hacer Rails. Mil veces me habrá pasado eso de superar un problema y trás bastante tiempo tener que volver a enfrentarme al problema como si fuese la primera vez. Memoria de pescao que tiene uno.
7 Febrero 2008
31 Diciembre 2007
Como buen programador vago™ y lector, que remedio, de la buena y extensa documentación shakesperiana, me dió, después de unas cuantas consultas al pasable traductor de Google, por hacerme un pequeño hack para disponer de dicha funcionalidad un poco más "a mano".
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"]
No es más que una pequeña adaptación de otro código que busca definiciones de palabras, con el que he descubierto el brutal potencial que tiene la gema WWW::Mechanize junto HPricot.
¡ Feliz año nuevo ! ![]()
Copyright © 2008 - nickel in space - es un blog hospedado en La Coctelera
Smashing Theme creado por: Design Disease por Smashing Magazine - adaptado por La Coctelera