Upgrade to Pro — share decks privately, control downloads, hide ads and more …

node-db: La excusa perfecta para hablar de C++ ...

node-db: La excusa perfecta para hablar de C++ y Node.js

NodeJS Argentina 2012

Mariano Iglesias

May 20, 2012
Tweet

More Decks by Mariano Iglesias

Other Decks in Programming

Transcript

  1. Se dice de mi • Que soy nerd • Que

    me gusta Apple – Sí, ¡ni te imaginás cuánto! • Que soy de opinar – @mgiglesias es una mescolanza preocupante • Que todos los lenguajes me quedan bien – Duh! ¿De qué era esta charla? • Que está en alguno que otro proyecto FOSS
  2. Se dice de mi • Le sobraba el tiempo, y

    arrancó WORKANA – Che, es http://workana.com • Le gusta Seinfeld – Y los zombies :­/ • Se mandó a mudar a Miramar • Se encerró en un baño de un avión
  3. Propuesta node­db • API C++ unificada • Separar lo intrínseco

    de los protocolos • Librerías DB blocking y non blocking • API en JS land sencillo • Performance • Solo relacionales – MySQL – Oracle – Drizzle
  4. A laburar $ npm install db­mysql var dbmysql = require('db­mysql');

    new dbmysql.Database({ hostname: 'localhost', user: 'root', password: 'password', database: 'node' }).connect(function(error, server) { if (error) { throw new Error('ERROR: ' + error); } console.log(server); }); { version: '5.5.24', hostname: 'localhost', user: 'root', database: 'node' }
  5. ¿Qué hay detrás del telón? • db­mysql.js – exports.Database –

    exports.Query • lib/node­db – binding.cc, query.cc, events.cc – connection.cc, result.cc, exception.cc • src/ – mysql.cc, query.cc – connection.cc, result.cc
  6. C++ en Node.js • Performance – Ojo, ¡no siempre! •

    Librerias C/C++ • Código proprietario • Integración con otros lenguajes – Python en Node.js via boost:python?
  7. C++ en Node.js • V8 • libuv • Libeio •

    Y lo que gustes... ¡es C++ después de todo! • waf / gyp – $ sudo npm install node­gyp ­g
  8. Muerte a los hola mundos var binding = require('./build/Release/binding'); cerveza

    = new binding.Cerveza(); console.log(cerveza.estado()); cerveza.tomar(1); console.log(cerveza.estado()); cerveza.tomar(2); console.log(cerveza.estado()); cerveza.tomar(5); console.log(cerveza.estado()); $ node test.js Arranca a tomar de una vez! Segui tomando tranquilo Mas vale que no manejes Me parece que te falto el agua para las macetas