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 scanssimon msumuko
 
Entretien bernard laporte dans midol
Entretien bernard laporte dans midolEntretien bernard laporte dans midol
Entretien bernard laporte dans midolMarc 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
 
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 Hrealidad
 
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
 
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 DiabetesEstela Ola Castro
 
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 ELANAgence Elan
 
Mon avenir - l'espace
Mon avenir - l'espaceMon avenir - l'espace
Mon avenir - l'espaceAna Connolly
 
Journal n°1 alain bénard
Journal n°1 alain bénardJournal n°1 alain bénard
Journal n°1 alain bénardAlainBenard
 
Riqueza O Pobreza
Riqueza O PobrezaRiqueza O Pobreza
Riqueza O Pobrezaguest9877b1
 
Computraining solution
Computraining solutionComputraining solution
Computraining solutionMadmaelle
 
El mezquite
El mezquiteEl mezquite
El mezquiteElemoral
 
Tolouse Business School masteres-specialises
Tolouse Business School masteres-specialises Tolouse Business School masteres-specialises
Tolouse Business School masteres-specialises CHEMIN D'ELITES
 

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

Trabajando con gdal, usando fwtools
Trabajando con gdal, usando fwtoolsTrabajando con gdal, usando fwtools
Trabajando con gdal, usando fwtoolsmanalva
 
Presentación de Paradis
Presentación de ParadisPresentación de Paradis
Presentación de ParadisC-cube ITESMCQ
 
ACE (Antarctic Circumnavigation Expedition) 2016 IT
ACE (Antarctic Circumnavigation Expedition) 2016 ITACE (Antarctic Circumnavigation Expedition) 2016 IT
ACE (Antarctic Circumnavigation Expedition) 2016 ITCarles Pina Estany
 
Solid Day - Cloudino
Solid Day - CloudinoSolid Day - Cloudino
Solid Day - CloudinoSoftware Guru
 
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...Ricardo Guerrero Gómez-Olmedo
 
Cuckoo sandbox
Cuckoo sandboxCuckoo sandbox
Cuckoo sandboxTensor
 
Cuckoo sandbox
Cuckoo sandboxCuckoo sandbox
Cuckoo sandboxTensor
 
Historia de c++
Historia de c++Historia de c++
Historia de c++edwin562
 
Las nubes informaticas
Las nubes informaticas  Las nubes informaticas
Las nubes informaticas Erick Calle
 
Historia de c++
Historia de c++Historia de c++
Historia de c++david-27
 
Historia de c++
Historia de c++Historia de c++
Historia de c++edwin562
 
Cuckoosandbox
CuckoosandboxCuckoosandbox
CuckoosandboxTensor
 
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
 
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...OpenExpoES
 

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

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ésJuan J. Merelo
 
Ciencia y videojuegos v4
Ciencia y videojuegos v4Ciencia y videojuegos v4
Ciencia y videojuegos v4Juan J. Merelo
 
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ónJuan J. Merelo
 
Benchmarking languages for evolutionary computation
Benchmarking languages for evolutionary computationBenchmarking languages for evolutionary computation
Benchmarking languages for evolutionary computationJuan J. Merelo
 
Benchmarking languages for evolutionary algorithms
Benchmarking languages for evolutionary algorithmsBenchmarking languages for evolutionary algorithms
Benchmarking languages for evolutionary algorithmsJuan J. Merelo
 
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 participantesJuan J. Merelo
 
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 HuginJuan J. Merelo
 
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 LuminanceJuan J. Merelo
 
Introducción al 7º hackathon UGR
Introducción al 7º hackathon UGRIntroducción al 7º hackathon UGR
Introducción al 7º hackathon UGRJuan J. Merelo
 
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 XXIJuan J. Merelo
 
Open Access and Copyleft
Open Access and CopyleftOpen Access and Copyleft
Open Access and CopyleftJuan J. Merelo
 
Luminance 2014 presentaciión sobre luminance
Luminance 2014 presentaciión sobre luminanceLuminance 2014 presentaciión sobre luminance
Luminance 2014 presentaciión sobre luminanceJuan J. Merelo
 
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 TechniquesJuan J. Merelo
 
Evostar 2014 Introduction to the conference
Evostar 2014 Introduction to the conferenceEvostar 2014 Introduction to the conference
Evostar 2014 Introduction to the conferenceJuan J. Merelo
 
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, 2014Juan J. Merelo
 
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. 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-piiisaJuan J. Merelo
 
¿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?Juan J. Merelo
 
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 granadinoJuan J. Merelo
 
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 universitariosJuan 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

guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 

Último (16)

guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.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.