Thursday, July 25, 2013

Scrapy como casi crawler.

0 - Primero
scrapy startproject articulo_lanacion 

1 - Crear el Modelo, Los Itemes que quiero
obtener de la página por lo pronto solo un Item.
Al ejecutar el primer comando se creo un archivo llamado

items.py acá se definen sus atributos.
class LaNacionComArItem(Item):
    # define the fields for your item here like:
    # name = Field()
    title = Field()
    content = Field()
    pass
2 - Crear la arañita:
class LanacionSpider(BaseSpider):
   name = "lanacion" 
   allowed_domains = ["www.lanacion.com.ar"]
   start_urls = [
          "www.lanacion.com.ar", 
          "www.url2.com"]#urls to fetch
   hxs = HtmlXPathSelector(response)
   item = LaNacionComArItem()#here a new object

   #getting the specific html element with the content
   item['title'] = 
       hxs.select('/html/body/section/
       section/section[6]/article/section[2]/h1')
          .extract()
   item['content']= 
       hxs.select('//*[@id="cuerpo"]').extract()
   return item
3 -Para guardar en CSV, JSON, XML, entre los mencionados
ejecutamos desde la terminal:
 scrapy crawl lanacion -o items.csv -t csv  
EL csv quedará de la forma:

content, url
un monton de data.... , www.url.com

Referencias Acá: Documentación y Tutorial

PD: la imagen si no lo recuerdan es de un personaje de scooby doo, llamado scrappy :) 

Tuesday, July 23, 2013

vfat or not

Sí esto aparece en dmesg y no puedes montar la unidad de fat,


[78098.543829] FAT-fs (sdb1): bogus number of reserved sectors
[78098.543840] FAT-fs (sdb1): Can't find a valid FAT filesystem
[78107.498487] sdb: detected capacity change from 2002780160 to 0
[78110.599817] sd 6:0:0:0: [sdb] 1990656 512-byte logical blocks: (1.01 GB/972 MiB)
[78110.601989] sd 6:0:0:0: [sdb] No Caching mode page present

Solución:
$ fsck.vfat /dev/sdb1

Y luego hacer el mount habitual.


Backbone y Coffescript.


Hoy en día, ya existe un pequeño compilador para windows, todo comienza con instalar node.

0 - instalar node desde acá: http://nodejs.org/ ya existe msi para win, y para linux cualquier gestor de paquetes lo tiene.

1 - luego npm install cofffee-script

2 - Para compilar, coffee -c DirectorioConArchivosCoffee y los reemplazara la opción -o creará una nueva carpeta con los archivos compilados.

$ coffee -c backbone

3 - Luego para las plantillas, usé grunt.js, siguiendo un tutoríal que reseñé acá:

En cuanto al código de coffee-script y backbone,
soy nueva en el uso de ambos, por lo que lo reseño acá errores que me ocurrian:

TypeError: iterator is not a function 
Esto se generaba durante el uso del método each
de la librería underscore.js aplicandolo a collecciones,
revisar el orden y sintaxis del método each, y que exista la función.

Typeerror: this.model is not a constructor
Revisar en la definición del modelo, que el nombre
referido en la declaración de la collección coincida con
el nombre del modelo, en mi caso fue un misstyping,
también puede ser que el modelo no exista.

This template is not a function 
Esto ocurre cuando olvidé hacer el import mediante
 script src="./js/assets/backbone/car_form.js"
 type="text/javascript"  /script

del template, usualmente es un archivo js, backbone utiliza por defecto
underscore y cuando realiza:
CarFormView.prototype.template = 
JST["backbone/templates/car/car_form"];

y no consigue el archivo car_form.js, falla.

TypeError View is not a constructor
De igual forma que el anterior falta declarar el archivo.js en el html, con el
tag script, o la vista no se encuentra definida, no se ha realizado la declaración
de la vista.

Apuntes Sobre Estructura.

  1. Cada vista puede tener pequeñas vistas que la componen, así como las matrioskas.
  2. Cada view solo puede manejar eventos, añadir secciones a su ámbito definido.


  1. El Router = Controlador, varios tutoriales los mencionan haciendo referencia a lo mismo.
  2. El Modelo consta de:  initialize, defaults, methods.
  3. La Vista consta de: initialize, render, events, functions.
  4. el , objeto creado en el browser, todas las vistas poseen este
    objeto, por defectoo es un elemento div vacío. Cualquier evento monitoreado
    por la vista debe estar en este elemento.
  5. Collecciones, se podría ver como un arreglo de modelos,
    suelen usarse con un mismo  modelo.
  6. ¿Donde comenzar? 
    Añadiendo los Modelos, router, Templates y Vistas.
    Sin olvidar que: por cada edición revisar si se realiza el
    import de los scripts necesarios.
  7. Próximos pasos: Backbone y Amd..
Fotografía compartida con licencia Creative Commons:
acá está el dueñ@ http://www.flickr.com/photos/kiki-follettosa/2225844941/

Sunday, July 21, 2013

Testing code pretty Print.


this["JST"] = this["JST"] || {};
enlace con los diferentes estilos:
Estilos que admite
Soporta los siguientes lenguajes: prettify code

PD: imagen aleatoria de que al menos un repositorio ordenado y limpio tengo :)
cortesia de oh my zsh, recomendado. oh-my-zsh