იოსებ ძმანაშვილი node.js

22
NODE.JS INTRO A Talk By Ioseb Dzmanashvili @iosebi Wednesday, December 25, 13

Upload: unihack

Post on 10-May-2015

305 views

Category:

Technology


2 download

DESCRIPTION

სტუდენტური ჰაკათონი - cst.unihack.ge პრეზენტაცია იოსებ ძმანაშვილი - Node.JS http://www.youtube.com/watch?v=GO74oM2Fb4o uniHack hack@CST

TRANSCRIPT

Page 1: იოსებ ძმანაშვილი   Node.js

NODE.JS INTROA Talk By Ioseb Dzmanashvili

@iosebi

Wednesday, December 25, 13

Page 2: იოსებ ძმანაშვილი   Node.js

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

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

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

SERIOUSLY? IS THAT ALL?

Wednesday, December 25, 13

Page 6: იოსებ ძმანაშვილი   Node.js

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

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

MAJOR BOTTLENECKS

I/O operations (Disk, RAM, Network)

Threaded concurrency

Wednesday, December 25, 13

Page 9: იოსებ ძმანაშვილი   Node.js

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

WHAT CONTRIBUTES TO LATENCY?

Wednesday, December 25, 13

Page 11: იოსებ ძმანაშვილი   Node.js

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

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

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

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

HOW NODE.JS SOLVES I/O PROBLEMS FOR ME?

Wednesday, December 25, 13

Page 16: იოსებ ძმანაშვილი   Node.js

SINGLE THREADED

1Wednesday, December 25, 13

Page 17: იოსებ ძმანაშვილი   Node.js

EVENT LOOP

SingleThread

Wednesday, December 25, 13

Page 18: იოსებ ძმანაშვილი   Node.js

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

DISADVANTAGES?

Wednesday, December 25, 13

Page 20: იოსებ ძმანაშვილი   Node.js

IT IS JAVASCRIPT

Wednesday, December 25, 13

Page 21: იოსებ ძმანაშვილი   Node.js

QUESTIONS?

Wednesday, December 25, 13

Page 22: იოსებ ძმანაშვილი   Node.js

THANK YOU

Wednesday, December 25, 13