SlideShare una empresa de Scribd logo
1 de 41
CouchDB y la computación
       voluntaria
Juan Julián Merelo Guervós
 Oficina de Software Libre
              &
       Grupo GeNeura
  Universidad de Granada
          @jjmerelo
Lecciones de andaluz (oriental)




                            Para programadores


Computación voluntaria + @CouchDB by @jjmerelo       2
Github
                       Git
Computación voluntaria + @CouchDB by @jjmerelo   3
CouchDB
Computación voluntaria + @CouchDB by @jjmerelo   4
JavaScript
Computación voluntaria + @CouchDB by @jjmerelo   5
¿Por qué?




Computación voluntaria + @CouchDB by @jjmerelo   6
Lista de deseos
Bajo umbral de entrada

Escalabilidad masiva

Sistema todo-en-uno

Tolerancia a fallos (salvo fallos bizantinos)


Computación voluntaria + @CouchDB by @jjmerelo   7
Por tanto...



 Necesitamos un almacén
       de objetos

Computación voluntaria + @CouchDB by @jjmerelo   8
Deshojando la margarita




Computación voluntaria + @CouchDB by @jjmerelo   9
¿Qué tiene de bueno CouchDB?
Fácil de instalar (sudo apt-get install couchdb)
  Posiblemente ya lo está (desktopcouch):
    /usr/lib/desktopcouch/desktopcouch-
     get-port
    http://localhost:<port>/_utils
    Más seguro:
  file:///home/{username}/.local/share/
   desktop-couch/couchdb.html
Hosting gratuito: CloudAnt, Iriscouch
Computación voluntaria + @CouchDB by @jjmerelo     10
Y además
Fácil de usar (interfaz REST)
Versionado de documentos
Actualizaciones en tiempo real mediante
 _changes
Soporte profesional con CouchBase
No se vayan todavía, aún hay más.


Computación voluntaria + @CouchDB by @jjmerelo   11
Volvamos a la computación
                  (in)voluntaria
BOINC,
  paradigmático.
Infraestructura
  basada en PHP/
  MySQL
Capaz de manejar
  8 millones de
  peticiones al día

Computación voluntaria + @CouchDB by @jjmerelo   12
Venga, confiesa, ¿para qué lo
                    quieres?
                                Ciencia low-cost.
                                Ciencia ciudadana.
                                Experimentos con
                                  algoritmos evolutivos
                                Ciencia web: redes
                                  sociales + sistemas
                                  computacionales

Computación voluntaria + @CouchDB by @jjmerelo            13
Vale, me has convencido. ¿Qué
                  necesitas?
Tareas
Usuarios
  Grupos
Estadísticas
GUI



Computación voluntaria + @CouchDB by @jjmerelo   14
¿Podrá my CouchDB con esto?




Computación voluntaria + @CouchDB by @jjmerelo   15
O, dicho de otro modo


   ¡Enséñanos ya el
    código, cohone!


Computación voluntaria + @CouchDB by @jjmerelo   16
Toma código


       bzr branch lp:couchdb-codemotion-ejemplos



        https://launchpad.net/couchdb-codemotion-ejemplos




Computación voluntaria + @CouchDB by @jjmerelo              17
Venga, vamos a ello.
Creemos la base de datos




Computación voluntaria + @CouchDB by @jjmerelo   18
Chuck Norris no usaría el GUI

 curl -X PUT http://127.0.0.1:5984/dameargo



jmerelo@sheldon:~/$ lwp-request -m PUT
  http://localhost:5984/dameargo
Please enter content (text/plain) to be PUTed:
[^D]
Computación voluntaria + @CouchDB by @jjmerelo   19
Voluntaria sí, pero no involuntaria
jmerelo@penny:~/txt/docencia/tutoriales$ curl -X
  PUT
  http://CvavBlnCni:yBJzPFKYie@localhost:47143/u
  na_nueva
jmerelo@penny:~/txt/docencia/tutoriales$ curl -X
  PUT
  https://jjmerelo:atitelavoyadeci@jjmerelo.cloudant.
  com/otra_mas

Computación voluntaria + @CouchDB by @jjmerelo     20
Ya está bien de crear bases de
             datos. O algo de eso.
CouchDB almacena objetos JSON.
Cada objeto tiene un _id
Más metadatos: _revision




Computación voluntaria + @CouchDB by @jjmerelo   21
Computación voluntaria: tareas +
                usuarios
Comencemos con las tareas
  Objetos JSON en una base de datos
    ID de tarea
    Datos de tarea
jmerelo@penny:~/txt/docencia/tutoriales$ curl -X
  POST
  https://jjmerelo:unapass@jjmerelo.iriscouch.com/a
  hora_no -H "Content-Type: application/json" -d
Computación voluntaria + @CouchDB by @jjmerelo   22
Entonces, ¿qué va a ser?


               10110101        10101101
                     10110101        10101101     00110101
        10111101                                             10110101=5    10101111=6
                         10101101
              10110101         10101101
                                                                      10101101=5
       10100001
                          10111101
          10101101
               10111101              00110101   00110101




#sofea via @jjmerelo @aiesparcia                                                        23
Chuck Norris también se cansa de
           la línea de órdenes
Y usa, por supuesto, node.js
jmerelo@penny:~$ sudo apt-get install nodejs
jmerelo@penny:~$ curl http://npmjs.org/install.sh |
  sudo sh




Computación voluntaria + @CouchDB by @jjmerelo        24
Se acabaron los one-liners




Computación voluntaria + @CouchDB by @jjmerelo   25
Las tareas hay que hacerlas




Computación voluntaria + @CouchDB by @jjmerelo   26
Poco a poco, va hilando la vieja el
                   copo




Computación voluntaria + @CouchDB by @jjmerelo   27
Espera ¿todo eso tiene que hacer el
              voluntario?
Hay voluntarios muy voluntariosos.
Pero tampoco hay que abusar.
Usemos los adjuntos de CouchDB
Cualquier objeto puede llevar documentos
 binarios adjuntos.



Computación voluntaria + @CouchDB by @jjmerelo   28
Cucha, que no sé como hacer
                  peticiones
Peticiones en CouchDB === Vistas.
Las vistas son documentos de diseño.
Vistas escritas en JavaScript
  En cualquier otro lenguaje, también.
Dos partes: map y reduce
  Map: función sobre cada documento
  Reduce: aplicada a lista de documentos/claves
Computación voluntaria + @CouchDB by @jjmerelo   29
Cómodamente, desde nuestro
                 colchón
Creamos una vista temporal para evaluarla.




Computación voluntaria + @CouchDB by @jjmerelo   30
Aún más comodamente, desde la
            línea de órdenes
Usando CouchApp:
      sudo pip install couchapp




jmerelo@penny:~$ couchapp push
  https://usuario:clave@jjmerelo.iriscouch.com/ahora_no

Computación voluntaria + @CouchDB by @jjmerelo            31
Vamos a bajarnos del sillón
En la variedad está el gusto:
    npm install cradle




Computación voluntaria + @CouchDB by @jjmerelo   32
Finalmente, llegamos a la
      computación voluntaria de veras
Recuperar del servidor al
 navegador
Hacer cosas en el navegador
Devolver.
Por supuesto, ¡con JQuery!



Computación voluntaria + @CouchDB by @jjmerelo   33
¿Tú de quién
          eres?




Computación voluntaria + @CouchDB by @jjmerelo   34
Volvamos a la pesca




Computación voluntaria + @CouchDB by @jjmerelo   35
Y ahora, a hacer sushi




Computación voluntaria + @CouchDB by @jjmerelo   36
No te lo quedes todo, quiyo




Computación voluntaria + @CouchDB by @jjmerelo   37
… y así sucesivamente
Segunda fase de verifificación.
Particionado probabilístico para muchos clientes.
Replicación de ida y vuelta para menor latencia
(usar desktopcouch).
Predicción de prestaciones social
...


Computación voluntaria + @CouchDB by @jjmerelo      38
Lo más importante



               Ni siquiera tiene que ser voluntaria




Computación voluntaria + @CouchDB by @jjmerelo        39
Esto es todo




                     Muchas gracias
Computación voluntaria + @CouchDB by @jjmerelo   40
¿Preguntas? + Perfil
Socio de Digital Learning, enseñanza virtual:
 http://dlformacion.com
Lujoyglamour.net, la única novela que te puedes
 descargar de CPAN:
    cpan Net::Lujoyglamour
Oficina de software libre de la UGR:
 http://osl.ugr.es
Grupo de investigación GeNeura
Computación voluntaria + @CouchDB by @jjmerelo    41

Más contenido relacionado

Destacado

msumuko colour scans
msumuko colour scansmsumuko colour scans
msumuko colour scans
simon msumuko
 
Entretien bernard laporte dans midol
Entretien bernard laporte dans midolEntretien bernard laporte dans midol
Entretien bernard laporte dans midol
Marc De Jongy
 
Allocation de chômage en Polynésie Présentation (2)
Allocation de chômage en Polynésie Présentation (2)Allocation de chômage en Polynésie Présentation (2)
Allocation de chômage en Polynésie Présentation (2)
COLLECTIF CHÔMEURS EN ACTION
 
les nouvelles technologies en classe de FLE
les nouvelles technologies en classe de FLE les nouvelles technologies en classe de FLE
les nouvelles technologies en classe de FLE
fpm0712
 
What's Up Digital#10 - by ELAN
What's Up Digital#10 - by ELANWhat's Up Digital#10 - by ELAN
What's Up Digital#10 - by ELAN
Agence Elan
 
Riqueza O Pobreza
Riqueza O PobrezaRiqueza O Pobreza
Riqueza O Pobreza
guest9877b1
 
El mezquite
El mezquiteEl mezquite
El mezquite
Elemoral
 

Destacado (19)

msumuko colour scans
msumuko colour scansmsumuko colour scans
msumuko colour scans
 
Entretien bernard laporte dans midol
Entretien bernard laporte dans midolEntretien bernard laporte dans midol
Entretien bernard laporte dans midol
 
Allocation de chômage en Polynésie Présentation (2)
Allocation de chômage en Polynésie Présentation (2)Allocation de chômage en Polynésie Présentation (2)
Allocation de chômage en Polynésie Présentation (2)
 
Web 2.0
Web 2.0Web 2.0
Web 2.0
 
L I N I A E X P R E S S I V A 3 H
L I N I A  E X P R E S S I V A 3 HL I N I A  E X P R E S S I V A 3 H
L I N I A E X P R E S S I V A 3 H
 
Bookonline, livre blanc sur les études par internet by QualiQuanti
Bookonline, livre blanc sur les études par internet by QualiQuantiBookonline, livre blanc sur les études par internet by QualiQuanti
Bookonline, livre blanc sur les études par internet by QualiQuanti
 
les nouvelles technologies en classe de FLE
les nouvelles technologies en classe de FLE les nouvelles technologies en classe de FLE
les nouvelles technologies en classe de FLE
 
Consejos Día Mundial de la Diabetes
Consejos Día Mundial de la DiabetesConsejos Día Mundial de la Diabetes
Consejos Día Mundial de la Diabetes
 
What's Up Digital#10 - by ELAN
What's Up Digital#10 - by ELANWhat's Up Digital#10 - by ELAN
What's Up Digital#10 - by ELAN
 
Ulls de colors
Ulls de colorsUlls de colors
Ulls de colors
 
Mon avenir - l'espace
Mon avenir - l'espaceMon avenir - l'espace
Mon avenir - l'espace
 
Journal n°1 alain bénard
Journal n°1 alain bénardJournal n°1 alain bénard
Journal n°1 alain bénard
 
Riqueza O Pobreza
Riqueza O PobrezaRiqueza O Pobreza
Riqueza O Pobreza
 
Copiar Pegar Cortar
Copiar Pegar CortarCopiar Pegar Cortar
Copiar Pegar Cortar
 
Computraining solution
Computraining solutionComputraining solution
Computraining solution
 
Problemas 5
Problemas 5Problemas 5
Problemas 5
 
El mezquite
El mezquiteEl mezquite
El mezquite
 
Medieval
MedievalMedieval
Medieval
 
Tolouse Business School masteres-specialises
Tolouse Business School masteres-specialises Tolouse Business School masteres-specialises
Tolouse Business School masteres-specialises
 

Similar a Computación voluntaria con CouchDB

Diseña la red lan de acuerdo a las condisiones y requerimientos de la organiz...
Diseña la red lan de acuerdo a las condisiones y requerimientos de la organiz...Diseña la red lan de acuerdo a las condisiones y requerimientos de la organiz...
Diseña la red lan de acuerdo a las condisiones y requerimientos de la organiz...
santy67890
 

Similar a Computación voluntaria con CouchDB (20)

Trabajando con gdal, usando fwtools
Trabajando con gdal, usando fwtoolsTrabajando con gdal, usando fwtools
Trabajando con gdal, usando fwtools
 
Presentación de Paradis
Presentación de ParadisPresentación de Paradis
Presentación de Paradis
 
ACE (Antarctic Circumnavigation Expedition) 2016 IT
ACE (Antarctic Circumnavigation Expedition) 2016 ITACE (Antarctic Circumnavigation Expedition) 2016 IT
ACE (Antarctic Circumnavigation Expedition) 2016 IT
 
Yudy Centeno M
Yudy Centeno MYudy Centeno M
Yudy Centeno M
 
Segunda clase, del curso de Microcomputadoras
Segunda clase, del curso de MicrocomputadorasSegunda clase, del curso de Microcomputadoras
Segunda clase, del curso de Microcomputadoras
 
Solid Day - Cloudino
Solid Day - CloudinoSolid Day - Cloudino
Solid Day - Cloudino
 
Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...
Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...
Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...
 
Anexo meteo pi (1)
Anexo meteo pi  (1)Anexo meteo pi  (1)
Anexo meteo pi (1)
 
Cuckoo sandbox
Cuckoo sandboxCuckoo sandbox
Cuckoo sandbox
 
Cuckoo sandbox
Cuckoo sandboxCuckoo sandbox
Cuckoo sandbox
 
Historia de c++
Historia de c++Historia de c++
Historia de c++
 
Las nubes informaticas
Las nubes informaticas  Las nubes informaticas
Las nubes informaticas
 
Historia de c++
Historia de c++Historia de c++
Historia de c++
 
Historia de c++
Historia de c++Historia de c++
Historia de c++
 
Visual 1
Visual 1Visual 1
Visual 1
 
Cuckoosandbox
CuckoosandboxCuckoosandbox
Cuckoosandbox
 
Debian hackers elementals
Debian hackers elementalsDebian hackers elementals
Debian hackers elementals
 
Diseña la red lan de acuerdo a las condisiones y requerimientos de la organiz...
Diseña la red lan de acuerdo a las condisiones y requerimientos de la organiz...Diseña la red lan de acuerdo a las condisiones y requerimientos de la organiz...
Diseña la red lan de acuerdo a las condisiones y requerimientos de la organiz...
 
BQ: Construyendo nuevas herramientas para emprender, por Adán Muñoz, cofundad...
BQ: Construyendo nuevas herramientas para emprender, por Adán Muñoz, cofundad...BQ: Construyendo nuevas herramientas para emprender, por Adán Muñoz, cofundad...
BQ: Construyendo nuevas herramientas para emprender, por Adán Muñoz, cofundad...
 
Historia de c++
Historia de c++Historia de c++
Historia de c++
 

Más de Juan J. Merelo

Redes sociales-en-un-rato-piiisa
Redes sociales-en-un-rato-piiisaRedes sociales-en-un-rato-piiisa
Redes sociales-en-un-rato-piiisa
Juan J. Merelo
 

Más de Juan J. Merelo (20)

Acta de defunción de juan monserrat vergés
Acta de defunción de juan monserrat vergésActa de defunción de juan monserrat vergés
Acta de defunción de juan monserrat vergés
 
Ciencia y videojuegos v4
Ciencia y videojuegos v4Ciencia y videojuegos v4
Ciencia y videojuegos v4
 
Como triunfar con tu proyecto en un hackatón
Como triunfar con tu proyecto en un hackatónComo triunfar con tu proyecto en un hackatón
Como triunfar con tu proyecto en un hackatón
 
Benchmarking languages for evolutionary computation
Benchmarking languages for evolutionary computationBenchmarking languages for evolutionary computation
Benchmarking languages for evolutionary computation
 
Benchmarking languages for evolutionary algorithms
Benchmarking languages for evolutionary algorithmsBenchmarking languages for evolutionary algorithms
Benchmarking languages for evolutionary algorithms
 
8º hackatón de proyectos libres de la UGR: Ayuda para los participantes
8º hackatón de proyectos libres de la UGR: Ayuda para los participantes8º hackatón de proyectos libres de la UGR: Ayuda para los participantes
8º hackatón de proyectos libres de la UGR: Ayuda para los participantes
 
Creación de panorámicas con Hugin
Creación de panorámicas con HuginCreación de panorámicas con Hugin
Creación de panorámicas con Hugin
 
Introducción a HDR y Tonemapping con Luminance
Introducción a HDR y Tonemapping con LuminanceIntroducción a HDR y Tonemapping con Luminance
Introducción a HDR y Tonemapping con Luminance
 
Introducción al 7º hackathon UGR
Introducción al 7º hackathon UGRIntroducción al 7º hackathon UGR
Introducción al 7º hackathon UGR
 
Nuevas tecnologías, Modas y docencia en el siglo XXI
Nuevas tecnologías, Modas y docencia en el siglo XXINuevas tecnologías, Modas y docencia en el siglo XXI
Nuevas tecnologías, Modas y docencia en el siglo XXI
 
Open Access and Copyleft
Open Access and CopyleftOpen Access and Copyleft
Open Access and Copyleft
 
Luminance 2014 presentaciión sobre luminance
Luminance 2014 presentaciión sobre luminanceLuminance 2014 presentaciión sobre luminance
Luminance 2014 presentaciión sobre luminance
 
Enforcing Corporate Security Policies via Computational Intelligence Techniques
Enforcing Corporate Security Policies via Computational Intelligence TechniquesEnforcing Corporate Security Policies via Computational Intelligence Techniques
Enforcing Corporate Security Policies via Computational Intelligence Techniques
 
Evostar 2014 Introduction to the conference
Evostar 2014 Introduction to the conferenceEvostar 2014 Introduction to the conference
Evostar 2014 Introduction to the conference
 
Presentación Open Data Day en Granada, 2014
Presentación Open Data Day en Granada, 2014Presentación Open Data Day en Granada, 2014
Presentación Open Data Day en Granada, 2014
 
Introducción al uso de git, el sistema de control de fuentes más molón.
Introducción al uso de git, el sistema de control de fuentes más molón. Introducción al uso de git, el sistema de control de fuentes más molón.
Introducción al uso de git, el sistema de control de fuentes más molón.
 
Redes sociales-en-un-rato-piiisa
Redes sociales-en-un-rato-piiisaRedes sociales-en-un-rato-piiisa
Redes sociales-en-un-rato-piiisa
 
¿Necesitas a la oficina de software libre de la Universidad de Granada?
¿Necesitas a la oficina de software libre de la Universidad de Granada?¿Necesitas a la oficina de software libre de la Universidad de Granada?
¿Necesitas a la oficina de software libre de la Universidad de Granada?
 
Presentación 8º CUSL/6º CUSL granadino
Presentación 8º CUSL/6º CUSL granadinoPresentación 8º CUSL/6º CUSL granadino
Presentación 8º CUSL/6º CUSL granadino
 
El software libre contado a los universitarios
El software libre contado a los universitariosEl software libre contado a los universitarios
El software libre contado a los universitarios
 

Último

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 
Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdf
Yanitza28
 

Último (17)

Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxinfor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
 
Editorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdfEditorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdf
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfpresentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
 
Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdf
 
Retornamos a la escuela y nos organizamos para convivir en armonía
Retornamos a la escuela y nos organizamos para convivir en armoníaRetornamos a la escuela y nos organizamos para convivir en armonía
Retornamos a la escuela y nos organizamos para convivir en armonía
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Generaciones de las Computadoras..pdf...
Generaciones de las Computadoras..pdf...Generaciones de las Computadoras..pdf...
Generaciones de las Computadoras..pdf...
 

Computación voluntaria con CouchDB

  • 1. CouchDB y la computación voluntaria Juan Julián Merelo Guervós Oficina de Software Libre & Grupo GeNeura Universidad de Granada @jjmerelo
  • 2. Lecciones de andaluz (oriental) Para programadores Computación voluntaria + @CouchDB by @jjmerelo 2
  • 3. Github Git Computación voluntaria + @CouchDB by @jjmerelo 3
  • 4. CouchDB Computación voluntaria + @CouchDB by @jjmerelo 4
  • 5. JavaScript Computación voluntaria + @CouchDB by @jjmerelo 5
  • 6. ¿Por qué? Computación voluntaria + @CouchDB by @jjmerelo 6
  • 7. Lista de deseos Bajo umbral de entrada Escalabilidad masiva Sistema todo-en-uno Tolerancia a fallos (salvo fallos bizantinos) Computación voluntaria + @CouchDB by @jjmerelo 7
  • 8. Por tanto... Necesitamos un almacén de objetos Computación voluntaria + @CouchDB by @jjmerelo 8
  • 9. Deshojando la margarita Computación voluntaria + @CouchDB by @jjmerelo 9
  • 10. ¿Qué tiene de bueno CouchDB? Fácil de instalar (sudo apt-get install couchdb) Posiblemente ya lo está (desktopcouch): /usr/lib/desktopcouch/desktopcouch- get-port http://localhost:<port>/_utils Más seguro: file:///home/{username}/.local/share/ desktop-couch/couchdb.html Hosting gratuito: CloudAnt, Iriscouch Computación voluntaria + @CouchDB by @jjmerelo 10
  • 11. Y además Fácil de usar (interfaz REST) Versionado de documentos Actualizaciones en tiempo real mediante _changes Soporte profesional con CouchBase No se vayan todavía, aún hay más. Computación voluntaria + @CouchDB by @jjmerelo 11
  • 12. Volvamos a la computación (in)voluntaria BOINC, paradigmático. Infraestructura basada en PHP/ MySQL Capaz de manejar 8 millones de peticiones al día Computación voluntaria + @CouchDB by @jjmerelo 12
  • 13. Venga, confiesa, ¿para qué lo quieres? Ciencia low-cost. Ciencia ciudadana. Experimentos con algoritmos evolutivos Ciencia web: redes sociales + sistemas computacionales Computación voluntaria + @CouchDB by @jjmerelo 13
  • 14. Vale, me has convencido. ¿Qué necesitas? Tareas Usuarios Grupos Estadísticas GUI Computación voluntaria + @CouchDB by @jjmerelo 14
  • 15. ¿Podrá my CouchDB con esto? Computación voluntaria + @CouchDB by @jjmerelo 15
  • 16. O, dicho de otro modo ¡Enséñanos ya el código, cohone! Computación voluntaria + @CouchDB by @jjmerelo 16
  • 17. Toma código bzr branch lp:couchdb-codemotion-ejemplos https://launchpad.net/couchdb-codemotion-ejemplos Computación voluntaria + @CouchDB by @jjmerelo 17
  • 18. Venga, vamos a ello. Creemos la base de datos Computación voluntaria + @CouchDB by @jjmerelo 18
  • 19. Chuck Norris no usaría el GUI curl -X PUT http://127.0.0.1:5984/dameargo jmerelo@sheldon:~/$ lwp-request -m PUT http://localhost:5984/dameargo Please enter content (text/plain) to be PUTed: [^D] Computación voluntaria + @CouchDB by @jjmerelo 19
  • 20. Voluntaria sí, pero no involuntaria jmerelo@penny:~/txt/docencia/tutoriales$ curl -X PUT http://CvavBlnCni:yBJzPFKYie@localhost:47143/u na_nueva jmerelo@penny:~/txt/docencia/tutoriales$ curl -X PUT https://jjmerelo:atitelavoyadeci@jjmerelo.cloudant. com/otra_mas Computación voluntaria + @CouchDB by @jjmerelo 20
  • 21. Ya está bien de crear bases de datos. O algo de eso. CouchDB almacena objetos JSON. Cada objeto tiene un _id Más metadatos: _revision Computación voluntaria + @CouchDB by @jjmerelo 21
  • 22. Computación voluntaria: tareas + usuarios Comencemos con las tareas Objetos JSON en una base de datos ID de tarea Datos de tarea jmerelo@penny:~/txt/docencia/tutoriales$ curl -X POST https://jjmerelo:unapass@jjmerelo.iriscouch.com/a hora_no -H "Content-Type: application/json" -d Computación voluntaria + @CouchDB by @jjmerelo 22
  • 23. Entonces, ¿qué va a ser? 10110101 10101101 10110101 10101101 00110101 10111101 10110101=5 10101111=6 10101101 10110101 10101101 10101101=5 10100001 10111101 10101101 10111101 00110101 00110101 #sofea via @jjmerelo @aiesparcia 23
  • 24. Chuck Norris también se cansa de la línea de órdenes Y usa, por supuesto, node.js jmerelo@penny:~$ sudo apt-get install nodejs jmerelo@penny:~$ curl http://npmjs.org/install.sh | sudo sh Computación voluntaria + @CouchDB by @jjmerelo 24
  • 25. Se acabaron los one-liners Computación voluntaria + @CouchDB by @jjmerelo 25
  • 26. Las tareas hay que hacerlas Computación voluntaria + @CouchDB by @jjmerelo 26
  • 27. Poco a poco, va hilando la vieja el copo Computación voluntaria + @CouchDB by @jjmerelo 27
  • 28. Espera ¿todo eso tiene que hacer el voluntario? Hay voluntarios muy voluntariosos. Pero tampoco hay que abusar. Usemos los adjuntos de CouchDB Cualquier objeto puede llevar documentos binarios adjuntos. Computación voluntaria + @CouchDB by @jjmerelo 28
  • 29. Cucha, que no sé como hacer peticiones Peticiones en CouchDB === Vistas. Las vistas son documentos de diseño. Vistas escritas en JavaScript En cualquier otro lenguaje, también. Dos partes: map y reduce Map: función sobre cada documento Reduce: aplicada a lista de documentos/claves Computación voluntaria + @CouchDB by @jjmerelo 29
  • 30. Cómodamente, desde nuestro colchón Creamos una vista temporal para evaluarla. Computación voluntaria + @CouchDB by @jjmerelo 30
  • 31. Aún más comodamente, desde la línea de órdenes Usando CouchApp: sudo pip install couchapp jmerelo@penny:~$ couchapp push https://usuario:clave@jjmerelo.iriscouch.com/ahora_no Computación voluntaria + @CouchDB by @jjmerelo 31
  • 32. Vamos a bajarnos del sillón En la variedad está el gusto: npm install cradle Computación voluntaria + @CouchDB by @jjmerelo 32
  • 33. Finalmente, llegamos a la computación voluntaria de veras Recuperar del servidor al navegador Hacer cosas en el navegador Devolver. Por supuesto, ¡con JQuery! Computación voluntaria + @CouchDB by @jjmerelo 33
  • 34. ¿Tú de quién eres? Computación voluntaria + @CouchDB by @jjmerelo 34
  • 35. Volvamos a la pesca Computación voluntaria + @CouchDB by @jjmerelo 35
  • 36. Y ahora, a hacer sushi Computación voluntaria + @CouchDB by @jjmerelo 36
  • 37. No te lo quedes todo, quiyo Computación voluntaria + @CouchDB by @jjmerelo 37
  • 38. … y así sucesivamente Segunda fase de verifificación. Particionado probabilístico para muchos clientes. Replicación de ida y vuelta para menor latencia (usar desktopcouch). Predicción de prestaciones social ... Computación voluntaria + @CouchDB by @jjmerelo 38
  • 39. Lo más importante Ni siquiera tiene que ser voluntaria Computación voluntaria + @CouchDB by @jjmerelo 39
  • 40. Esto es todo Muchas gracias Computación voluntaria + @CouchDB by @jjmerelo 40
  • 41. ¿Preguntas? + Perfil Socio de Digital Learning, enseñanza virtual: http://dlformacion.com Lujoyglamour.net, la única novela que te puedes descargar de CPAN: cpan Net::Lujoyglamour Oficina de software libre de la UGR: http://osl.ugr.es Grupo de investigación GeNeura Computación voluntaria + @CouchDB by @jjmerelo 41

Notas del editor

  1. Imagen de sunlight in a jar en http://www.flickr.com/photos/sunlightinajar/1111631514/in/photostream/
  2. He pedido traducción simultánea de mi idioma al vuestro, pero la organización no me la ha podido proporcionar. Así que para una correcta comprensión de mi charla, me veo obligado a impartirles unas cuantas lecciones de pronunciación de mi idioma materno: el andaluz oriental.
  3. La academia andaluza oriental de la lengua, reunida en Porcuna, no ha logrado ponerse de acuerdo sobre la correcta pronunciación de esta palabra. Oscila entre jjjjjjavahcrí y avahcrí, pasando por javahcrí y havahcrí
  4. Imagen de la izquierda de http://www.flickr.com/photos/cipherswarm/2414578959/ Christopher Bowns, de la derecha de ario_ http://www.flickr.com/photos/ario/4422273371/in/photostream/ No todo el mundo puede contar con un supercomputador. La computación voluntaria tiene su origen en el proyecto [email_address] de análisis de señales procedentes del espacio buscando regularidades.
  5. Foto subida por Texas_mustang a Flickr en http://www.flickr.com/photos/astros/3977731447/in/photostream/
  6. Imagen de Michael Flick en http://www.flickr.com/photos/17773534@N03/3237000861/in/photostream/ Object Store en general se define por oposición a una base de datos tradicional, en la que las columnas son fijas y se estructuran en tablas que tienen relación unas con otras. Una object store, o key-value store, o base de datos NoSQL, almacena documentos indexados, habitualmente, por una clave.
  7. En realidad, es una situación bastante transitoria, porque Ubuntu one no va a funcionar ya sobre él; aunque otras utilidades, desde Evolution hasta Gwibber, hacen uso de él para almacenar cosas. La documentación dice que debería funcionar esto: dbus-send --session --dest=org.desktopcouch.CouchDB --print-reply --type=method_call / org.desktopcouch.CouchDB.getPort pero no siempre va. Al parecer, en Fedora va así. El interfaz que se muestra se llama Futon, y está escrito en JS/JQuery. Es el interfaz estándar para trabajar con CouchDB.
  8. Una buena comparación en esta dirección http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis que incluye además a otras muchas. Imagen en http://www.flickr.com/photos/thristian/4870449203/ por Thristian.
  9. Dato del trabajo de D. B. Anderson, http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1572226 Imagen de http://www.flickr.com/photos/23497193@N07/2870438187/in/photostream/ por frseti
  10. Imagen de StudioTempura en http://www.flickr.com/photos/zero101/4783232763/in/photostream/
  11. Imagen de UnitedBOINC http://www.unitedboinc.com/en/website-info/39-site-info/97-how-boinc-works Imagen del esquema de BOINC http://bof.linuxforum.dk/2005/slides/Carlos/tappingthematrix.html
  12. Imagen de Kalexanderson en http://www.flickr.com/photos/kalexanderson/5491910420/in/photostream/
  13. Imagen de Tojosan en http://www.flickr.com/photos/tojosan/448977929/in/photostream/
  14. El código tiene licencia GPL, así que podéis hacer lo que queráis con él. Imagen de Daniel*1977 en http://www.flickr.com/photos/didmyself/2391229347/in/photostream/
  15. El interfaz se llama futon. Adentrarse en el mundo del couchdb es como meterse en el Ikea: no hay más que colchones, tresillos, sofases y cosas por el estilo. Queda terminantemente prohibida la producción de chistes que incluyan la palabra verbenero, desorejado y cosas por el estilo.
  16. Referencia: la guía de CouchDB: http://guide.couchdb.org/draft/tour.html El segundo es para nota, claro, en caso de tener instalado LWP, la librería de Perl para interaccionar con HTTP. Muestra de que CouchDB usa un interfaz REST. De que se puede acceder desde el ordenador local (y sólo el) por defecto. Y del “admin party”, todo el mundo es admin. Chungo, pero veamos como lo solucionamos. El tipo de letra, por cierto, es inconsolata.
  17. Se supone que hemos averiguado antes cual es el puerto usando la orden correspondiente o bookmarkeado la dirección (generada cada vez que se conecta uno). El nombre usuario y la clave son también aleatorios. Imagen de Sam Newman en http://www.flickr.com/photos/samnewman/201940197/in/photostream/ Con las mismas, se puede usar DELETE para borrarla. Más fácil, imposible.
  18. Y CouchDB es guay, porque podemos meter cualquier cosa. Una introducción buena al uso de la línea de órdenes está en http://www.morethanseven.net/2007/12/11/using-curl-to-play-with-couchdb.html
  19. Uso node.js porque está hecho en JS, y se supone que esta charla va de JS. En todo caso, es un intérprete de JS con un modelo muy interesante, y al estar basado en eventos, encaja muy bien. Instrucciones básicas para usar nano http://writings.nunojob.com/2011/08/nano-minimalistic-couchdb-client-for-nodejs.html Y para saber más, http://nodejs.org Ojito! Los módulos de nodejs se instalan, salvo que se lo digas de otra manera, en el directorio superior al directorio en curso, así que si cambias las cosas de sitio ten cuidadín.
  20. Imagen de Marco de Mojana http://www.flickr.com/photos/mmojana/225310330/in/photostream/ El código adaptado de http://writings.nunojob.com/2011/08/nano-minimalistic-couchdb-client-for-nodejs.html Usamos nano, un módulo para trabajar con CouchDB en node.js
  21. Node.js funciona de forma asíncrona. Un poco como Jquery, pero todavía no hemos aprendido como hacer esas cosas en el propio CouchDB Una forma fácil de decir que las tareas se han llevado a cabo es usar las versiones: con la versión 2, hecha. Con la versión 1, por hacer. Así, de forma natural, podemos seleccionar las tareas que nos quedan por hacer. En este caso usamos node.js para hacerlo.
  22. Imagen de Boston Public Library http://www.flickr.com/photos/boston_public_library/6031892513/in/photostream/ Trabajar con el interfaz bulk reduce el overhead, porque nos ahorramos la latencia por todos y cada uno de los documentos. En general, habrá que tener en cuenta cuanto tardan en llevarse a cabo las tareas para que la latencia (más que otras cosas) no se coman la ventaja que tenemos distribuyendo el trabajo.
  23. En un sistema de computación voluntaria hay que seleccionar, al menos, unos pocos de los que haya disponibles para evaluar. Digamos que la revisión primera es la tarea sin hacer, la segunda la tarea realizada y la tercera comprobada. Seleccionemos a todos los elementos que estén en su segunda versión, para comprobarlos. El interfaz básico sólo permite seleccionar rangos de Ids. Creando Ids a medida, se pueden encontrar formas de particionar la BD, pero es más elegante (pero menos eficiente) hacer peticiones basadas en el contenido. Imagen titulada “Phan Thiet fisherman” de Lucas Jans http://www.flickr.com/photos/vsf/2130475253/in/photostream/
  24. La función map de la izquierda se aplica a todos los elementos de la base de datos y produce la lista que se ve. Desde el mismo interfaz se puede guardar la vista para usarla más adelante.
  25. CouchApp se puede descargar de Couchapp.org y de otras múltiples formas, esa es sólo una de ellas. Con un par de órdenes se crea una aplicación (que era, posiblemente, lo que teníamos que haber hecho desde el principio) y añadimos una vista. Editamos la vista y la subimos CouchDB Borrar cuidadosamente los reduce si no los vamos a usar, ojo.
  26. Cradle es otro de los competidores de nano en el mercado de los módulos de couchdb para nodejs. Es parecido, en realidad, aunque tiene un nivel un poco más alto.
  27. Imagen de rikkis_refuge en http://www.flickr.com/photos/rikkis_refuge/417852567/in/photostream/ Una pena que los únicos voluntarios que hayamos encontrado para nuestro sofá sean gatos, pero menos da una piedra. No parecen muy voluntariosos, tampoco.
  28. Imagen en http://www.flickr.com/photos/shutterhack/3688916759/in/photostream/ por Fadzly @shutterhack Vamos a ver cómo se recuperaría la información en JQuery
  29. Imagen de catorze14 en http://www.flickr.com/photos/catorze/5782407641/in/photostream/ Sushi es como le llamamos en Andalucía Oriental al pescaíto frito. Es decir, se trata de, una vez recuperada la información, hacer algo con ella. Aquí le hemos añadido un par de cosas más: nos bajamos sólo los que estén en un estado determinado “1”, es decir, sin evaluar, y además le decimos que incluya con cada resultado el documento correspondiente. Niños, no hagáis eso en casa. Eso es sólo para que aprendáis. Ya sabéis, el que sabe, sabe, y el que no aprende.
  30. Hay que devolver a la base de datos lo que se ha calculado; se le añade al objeto el resultado y se vuelve a colocar en la base de datos.