იოსებ ძმანაშვილი node.js
DESCRIPTION
სტუდენტური ჰაკათონი - cst.unihack.ge პრეზენტაცია იოსებ ძმანაშვილი - Node.JS http://www.youtube.com/watch?v=GO74oM2Fb4o uniHack hack@CSTTRANSCRIPT
![Page 1: იოსებ ძმანაშვილი Node.js](https://reader034.vdocuments.site/reader034/viewer/2022052505/554f5afab4c905c8088b461d/html5/thumbnails/1.jpg)
NODE.JS INTROA Talk By Ioseb Dzmanashvili
@iosebi
Wednesday, December 25, 13
![Page 2: იოსებ ძმანაშვილი Node.js](https://reader034.vdocuments.site/reader034/viewer/2022052505/554f5afab4c905c8088b461d/html5/thumbnails/2.jpg)
ABOUT ME
Software Architect at AzRy LLC
Assistant Professor at CST
Ph.D Student at Technical University of Georgia
V8 Contributor
Wednesday, December 25, 13
![Page 3: იოსებ ძმანაშვილი Node.js](https://reader034.vdocuments.site/reader034/viewer/2022052505/554f5afab4c905c8088b461d/html5/thumbnails/3.jpg)
ABOUT NODE.JS
Released in 2009 by Ryan Dahl
Is built on V8 JavaScript Engine
Based on event-driven non-blocking I/O
Platform for fast and scalable network apps
Wednesday, December 25, 13
![Page 4: იოსებ ძმანაშვილი Node.js](https://reader034.vdocuments.site/reader034/viewer/2022052505/554f5afab4c905c8088b461d/html5/thumbnails/4.jpg)
WHAT MAKES IT AWESOME?
Easy of use
Server side JavaScript
Active community
Repository of awesome modules
npm install [module name]
Wednesday, December 25, 13
![Page 5: იოსებ ძმანაშვილი Node.js](https://reader034.vdocuments.site/reader034/viewer/2022052505/554f5afab4c905c8088b461d/html5/thumbnails/5.jpg)
SERIOUSLY? IS THAT ALL?
Wednesday, December 25, 13
![Page 6: იოსებ ძმანაშვილი Node.js](https://reader034.vdocuments.site/reader034/viewer/2022052505/554f5afab4c905c8088b461d/html5/thumbnails/6.jpg)
WELL, NO
Built on V8 JavaScript engine
Node.js never blocks on I/O operations
You do not need to manage threads
No expensive context switching
No memory waste on execution stacks
Wednesday, December 25, 13
![Page 7: იოსებ ძმანაშვილი Node.js](https://reader034.vdocuments.site/reader034/viewer/2022052505/554f5afab4c905c8088b461d/html5/thumbnails/7.jpg)
V8 ADVANTAGES
Fastest JavaScript runtime
No JIT, it compiles JavaScript into Assembler
Short(really short) garbage collector cycles
Great implementation of EcmaScript 5 and EcmaScript 6
Wednesday, December 25, 13
![Page 8: იოსებ ძმანაშვილი Node.js](https://reader034.vdocuments.site/reader034/viewer/2022052505/554f5afab4c905c8088b461d/html5/thumbnails/8.jpg)
MAJOR BOTTLENECKS
I/O operations (Disk, RAM, Network)
Threaded concurrency
Wednesday, December 25, 13
![Page 9: იოსებ ძმანაშვილი Node.js](https://reader034.vdocuments.site/reader034/viewer/2022052505/554f5afab4c905c8088b461d/html5/thumbnails/9.jpg)
I/O LATENCY
I/O CPU Cycles
L1-Cache 3
L2-Cache 14
RAM 250
Hard Disk 41.000.000
Network 240.000.000
Wednesday, December 25, 13
![Page 10: იოსებ ძმანაშვილი Node.js](https://reader034.vdocuments.site/reader034/viewer/2022052505/554f5afab4c905c8088b461d/html5/thumbnails/10.jpg)
WHAT CONTRIBUTES TO LATENCY?
Wednesday, December 25, 13
![Page 11: იოსებ ძმანაშვილი Node.js](https://reader034.vdocuments.site/reader034/viewer/2022052505/554f5afab4c905c8088b461d/html5/thumbnails/11.jpg)
TYPICAL CODE EXAMPLE
var query = "SELECT * FROM t";var result = db.query(query);
while(result.hasNext()) { print(result.next());}
db.free(result);
Wednesday, December 25, 13
![Page 12: იოსებ ძმანაშვილი Node.js](https://reader034.vdocuments.site/reader034/viewer/2022052505/554f5afab4c905c8088b461d/html5/thumbnails/12.jpg)
NON BLOCKING EXAMPLE
var query = "SELECT * FROM t";
db.query(query, function(result) { while(result.hasNext()) { print(result.next()); }});
// do something here
Wednesday, December 25, 13
![Page 13: იოსებ ძმანაშვილი Node.js](https://reader034.vdocuments.site/reader034/viewer/2022052505/554f5afab4c905c8088b461d/html5/thumbnails/13.jpg)
FILE I/O EXAMPLE
$file = fopen("file.txt", "r");
while(!feof($file)){ $line = fgets($file); // do something with line}
fclose($file);
Wednesday, December 25, 13
![Page 14: იოსებ ძმანაშვილი Node.js](https://reader034.vdocuments.site/reader034/viewer/2022052505/554f5afab4c905c8088b461d/html5/thumbnails/14.jpg)
ASYNC I/O WITH FILES
function readFile(file) { var br = new BufferedReader(file, ...); br.on("error", function(error) { // handle error }).on("line", function(line) { // do something meaningful with line }).on("end", function() { // we are done }).read();}
readFile("/path/to/file");
Wednesday, December 25, 13
![Page 15: იოსებ ძმანაშვილი Node.js](https://reader034.vdocuments.site/reader034/viewer/2022052505/554f5afab4c905c8088b461d/html5/thumbnails/15.jpg)
HOW NODE.JS SOLVES I/O PROBLEMS FOR ME?
Wednesday, December 25, 13
![Page 16: იოსებ ძმანაშვილი Node.js](https://reader034.vdocuments.site/reader034/viewer/2022052505/554f5afab4c905c8088b461d/html5/thumbnails/16.jpg)
SINGLE THREADED
1Wednesday, December 25, 13
![Page 17: იოსებ ძმანაშვილი Node.js](https://reader034.vdocuments.site/reader034/viewer/2022052505/554f5afab4c905c8088b461d/html5/thumbnails/17.jpg)
EVENT LOOP
SingleThread
Wednesday, December 25, 13
![Page 18: იოსებ ძმანაშვილი Node.js](https://reader034.vdocuments.site/reader034/viewer/2022052505/554f5afab4c905c8088b461d/html5/thumbnails/18.jpg)
FS I/Ofn3();
PROGRAM EXECUTION FLOW
Program never waits for I/O operations completion
I/O is handled asynchronously
fn0();
fn1();
fn2();
DB I/O
FS I/O
NETWORK I/O
Wednesday, December 25, 13
![Page 19: იოსებ ძმანაშვილი Node.js](https://reader034.vdocuments.site/reader034/viewer/2022052505/554f5afab4c905c8088b461d/html5/thumbnails/19.jpg)
DISADVANTAGES?
Wednesday, December 25, 13
![Page 20: იოსებ ძმანაშვილი Node.js](https://reader034.vdocuments.site/reader034/viewer/2022052505/554f5afab4c905c8088b461d/html5/thumbnails/20.jpg)
IT IS JAVASCRIPT
Wednesday, December 25, 13
![Page 21: იოსებ ძმანაშვილი Node.js](https://reader034.vdocuments.site/reader034/viewer/2022052505/554f5afab4c905c8088b461d/html5/thumbnails/21.jpg)
QUESTIONS?
Wednesday, December 25, 13
![Page 22: იოსებ ძმანაშვილი Node.js](https://reader034.vdocuments.site/reader034/viewer/2022052505/554f5afab4c905c8088b461d/html5/thumbnails/22.jpg)
THANK YOU
Wednesday, December 25, 13