Comenzando el desarrollo de QuienManda

33 views
Skip to first unread message

David Cabo

unread,
Jul 30, 2013, 11:04:30 AM7/30/13
to civi...@googlegroups.com
 Buenas,

 Con varias semanas de retraso, pero finalmente ayer comencé el desarrollo de la web de QuienManda. Mi plan era comenzar el desarrollo de la web de Quien Manda hace un mes, pero bueno, siempre surgen imprevistos, así que los plazos están más ajustados de lo deseable. :)

 En realidad sí hemos estado trabajando en el proyecto, recopilando información, escribiendo las primeras historias (bueno, Eva Belmonte), buscando fotos interesantes, y creando los wireframes para la web [1] (gracias Isma). Yo hice cosas aisladas hace un par de meses, como el scraper para los datos de la CNMV [2], o uno para las fotos de la web de la Casa Real [3]. La idea es ir escrapeando poco a poco algunas webs especialmente relevantes (por datos o por fotos), pero antes necesitamos crear una primera versión de la web, sobre todo para almacenar nosotros internamente la información que vamos recopilando a mano, y que ahora metemos en un Excel.

 Para crear el back-end me planteé utilizar Poderopedia, que liberó el código hace unas semanas [4], pero la verdad es que no me convenció: tiene una estructura de datos muy rígida que no sé si es aplicable, el mantenimiento va lento, y además la parte de fotos y fuentes creo que no está suficientemente madura. Así que, en la más pura tradición informática, mi plan es desarrollar el back-end desde cero. Y ya que comenzamos desde cero hacerlo en Rails 4 (que salió hace unos meses, y parece que la mayoría de las extensiones ya lo soportan), y con Ruby 2, que es lo recomendado. Para el despliegue, al menos durante desarrollo, yo suelo usar Heroku, que quita mucho trabajo de sysadmin, y Heroku usa Postgres como base de datos.

 He creado el repo de la web en github [5], que ahora es poco más que una app estándar de Rails con un modelo de palo. Bueno, y con Devise [6] como gema encargada de toda la parte de autenticación, que parece que es el estándar ahora mismo. Y como no quiero perder tiempo montando toda la parte de administración / entrada de datos, estoy haciendo pruebas con rails_admin [7], que parece bastante flexible y está bien documentado.

 Ahora mismo hay poco que ver, pero si alguien quiere montarse la app en local y tiene algún problema que me diga. Mis prioridades son más o menos:

 * Montar la parte de administración para poder ir guardando los datos.
 * Desarrollar el modelo de datos para que sea más o menos de verdad.
 * Añadir soporte para fotos, con Carrierwave posiblemente.
 * Desarrollar el front-end a partir de los wireframes. Isma, el diseñador, está con ello, y en esta lista.
 * Pensar en qué parte de las relaciones se puede sacar de datos escrapeados, y qué parte haremos a mano.

 Perdonad el rollo, pero como tenía la lista abandonada quería contar un poco toda la historia. :) 

/david


Javier Morales

unread,
Jul 31, 2013, 5:57:57 PM7/31/13
to civi...@googlegroups.com, david...@gmail.com
Hola,

Ya me he bajado el proyecto. Buen trabajo!

Las dudas que me surgen para ponerme a ello son:

- Creamos una columna en el user de administrador como dijimos?
- Montamos ya el proyecto en heroku para ir viendo cómo evoluciona y hacemos import y export de ahí? o esperamos a que haya algo más de chica?
- Me estoy poniendo más con el modelo y me surgen dudas del cómo: un user admin podría añadir personas, relacionarlas con entidades, casos, artículos, fotos y comentarios, correcto?
- También habría que establecer la relación de parentesco de alguna forma, no?

Salu2, Javo

Pablo Martín Muñoz

unread,
Jul 31, 2013, 6:18:36 PM7/31/13
to Javier Morales, civi...@googlegroups.com, David Cabo

Muy buen resumen David. Y buenas elecciones para el backend. Soy más de PHP y ahora últimamente de Python pero este último se asemeja bastante en agilidad con Ruby por lo que creo que todo va a ir muy rápido.
Quedo en bajarme el código para echarle un vistazo. Si se necesita ayuda en la definición de modelos se puede ver en la lista.
Salud!

Pablo Martín Muñoz
Open Source Architect & Data Scientist
edipotrebol.es

David Cabo

unread,
Aug 1, 2013, 11:45:36 AM8/1/13
to Javier Morales, civi...@googlegroups.com
 Hola, te contesto debajo:
- Creamos una columna en el user de administrador como dijimos?
 Sí, lo hice anoche: añadí un booleano y luego metí CanCan, una gema para hacer toda la parte de autorización/permisos [1].  

- Montamos ya el proyecto en heroku para ir viendo cómo evoluciona y hacemos import y export de ahí? o esperamos a que haya algo más de chica?
 Yo he desplegado una copia de la app en Heroku para uso interno, básicamente para que Eva pueda ir metiendo datos de personas/historias/etc. Cuánto antes comience ella a usar la app antes veremos posibles problemas. Esa instancia no la vamos a hacer pública, porque es la que va a tener los datos e historias de verdad, y hay que guardar un poco el efecto sorpresa. ;)

 Para desarrollo podemos montar una instancia compartida si vemos que hace falta, o simplemente que cada uno tenga su instancia en Heroku...
- Me estoy poniendo más con el modelo y me surgen dudas del cómo: un user admin podría añadir personas, relacionarlas con entidades, casos, artículos, fotos y comentarios, correcto?
- También habría que establecer la relación de parentesco de alguna forma, no?  
 Sí, el modelo está a medio hacer: ahora hay básicamente posts (para que Eva empiece a guardar borradores) y entidades. Falta la tabla de Relaciones, que tengo que pensar mejor, y la de Fotos. Sobre las Entidades, inicialmente pensé en tener un modelo Personas y otro de Empresas/Organismos, pero eso luego complicaba las relaciones, que pueden ser entre personas, entre organismos, entre una persona y un organismo, etc. Así que mejor tener todo como Entidad, en abstracto, y el concepto de Relación se simplifica mucho.

 Sobre las relaciones, mi idea es hacer algo tipo tripleta (sujeto, verbo, sujeto destino) a lo "Manolo hijo-de Pedro", "Juan consejero-de Iberdrola"… A esto hay que añadirle ciertos metadatos: la fuente (cómo lo sabemos?), y las fechas (desde cuando y hasta cuando, si se conoce). 

 La parte a la que sigo dando vueltas es a cómo integrar la parte de entrada manual - que controlamos bien - con los datos que podamos escrapear. Una empresa o una persona puede tener varios nombres, pero además varias personas pueden tener el mismo nombre, así que lo de asumir que Pedro-García-diputado es el Pedro-García-consejero no es algo automático, sino que requiere cierta supervisión humana. El cómo almacenar todo esto, y el cómo gestionar el hecho de que ciertos datos (como la CNMV) se van a ir actualizando, eso no es trivial. De momento lo que he hecho es añadir "friendly URIs" para las personas (con StringEx [2]), ignorando por ahora todo el problema de las ambigüedades.


 Pero voy a hacer primero el "back-end manual" básico para Eva, y luego cogeré los datos de la CNMV y veré qué problemas surgen. Hablé hace tiempo con la gente de Open Corporates, que tienen problemas similares, y ellos tienen separada la parte de "hay un registro que dice que Manuel es consejero de XYZ" de la parte de "este XYZ es el mismo que este XYZ", y "este Manuel es el mismo que aparece en este otro registro".



/david
Reply all
Reply to author
Forward
0 new messages