SlideShare a Scribd company logo
Friday, September 28, 12
WER BIN ICH?


    • Sebastian            Springer

    • https://github.com/sspringer82

    • @basti_springer

    • Teamlead             @ Mayflower



Friday, September 28, 12
WER SEID IHR?




Friday, September 28, 12
LET’S GO




Friday, September 28, 12
THEMEN
    • Installation                   • Dateisystem

    • Kernkomponenten                • Datenbanken

    • Beispiel                       • Promises

    • Module                         • Child   Processes

    • Eigener              Code      • Websockets

    • Asynchronität                  • Debugger

    • NPM                            • Testing

Friday, September 28, 12
INSTALLATION




Friday, September 28, 12
v0.8.11
                                v0.8.10
                           NODE-V0.8.9




Friday, September 28, 12
PAKETE

  • Unix
      http://nodejs.org/dist/v0.8.9/node-v0.8.9-linux-x64.tar.gz

  • Mac
      http://nodejs.org/dist/v0.8.9/node-v0.8.9.pkg

  • Windows
      http://nodejs.org/dist/v0.8.9/x64/node-v0.8.9-x64.msi


Friday, September 28, 12
HTTP://NODEJS.ORG/
                             DOWNLOAD/




Friday, September 28, 12
SOURCE




Friday, September 28, 12
HAT ES GEKLAPPT?




Friday, September 28, 12
DIE KERNKOMPONENTEN




Friday, September 28, 12
V8


    • Schneller            Zugriff auf Eigenschaften

    • Dynamische              Erstellung von Maschinencode

    • Garbage              Collection




Friday, September 28, 12
V8 - FAST PROPERTY ACCESS




Friday, September 28, 12
V8 - FAST PROPERTY ACCESS




Friday, September 28, 12
V8 - FAST PROPERTY ACCESS




Friday, September 28, 12
MASCHINENCODE




Friday, September 28, 12
V8 - GARBAGE COLLECTION


    • Programmausführung           wird angehalten

    • Es        wird nur ein Teil des Object Heaps geprüft

    • V8         kennt alle Objekte und Pointer im Speicher




Friday, September 28, 12
LIBEV


         • Full-featured        and high-performance event loop

         • libevent        als Basis

         • Alles, außer        der eigene Code ist parallel und asynchron




Friday, September 28, 12
LIBEIO


    • Eventbasierte           Bibliothek für asynchrone I/O Operationen

    • Ergänzung            zu libev

    • Features: Öffnen, Lesen, Schreiben, Löschen, etc.

    • Modul: fs




Friday, September 28, 12
C-ARES



    • asynchrone           DNS Auflösung

    • Modul: dns




Friday, September 28, 12
EVCOM


    • Basiert              auf libev

    • Eventbasierte               Library für Stream Sockets

    • Modul: net




Friday, September 28, 12
EIN KLEINES BEISPIEL




Friday, September 28, 12
INTERAKTIV




Friday, September 28, 12
WEBSERVER




Friday, September 28, 12
WEBSERVER




Friday, September 28, 12
WEBSERVER




Friday, September 28, 12
MODULE




Friday, September 28, 12
VERFÜGBARE MODULE

    • Stream                           • OS

    • Events                           • Debugger

    • File         System              • Cluster

    • Net                              • Util

    • HTTP                             • Buffer

    • Child                Processes   • UDP

Friday, September 28, 12
HTTP://NODEJS.ORG/API/




Friday, September 28, 12
STABILITÄTSINDEX

    •0       - Deprecated

    •1       - Experimental

    •2       - Unstable

    •3       - Stable

    •4       - API Frozen

    •5       - Locked

Friday, September 28, 12
STABILITÄTSINDEX




Friday, September 28, 12
MODULE VERWENDEN




Friday, September 28, 12
EIGENE KLASSEN DEFINIEREN




Friday, September 28, 12
...IM BROWSER




Friday, September 28, 12
...IN NODE
                             Human.js




Friday, September 28, 12
...IN NODE

                              server.js




Friday, September 28, 12
ASYNCHRONE
                           PROGRAMMIERUNG



Friday, September 28, 12
DATEI LESEN
                           node.js   Betriebssystem




                                               Leseoperation




Friday, September 28, 12
DATEI LESEN




Friday, September 28, 12
DATEI LESEN




Friday, September 28, 12
DATEI LESEN




Friday, September 28, 12
Friday, September 28, 12
NPM


    • Node                 Package Manager

    • Seit          node 0.6.3 Bundled

    • Repo                 @ https://npmjs.org/




Friday, September 28, 12
KOMMANDOS

    • npm             search <package>

    • npm             install <package>

    • npm             list

    • npm             update

    • npm             remove


Friday, September 28, 12
NPM SEARCH




Friday, September 28, 12
NPM INSTALL




Friday, September 28, 12
NPM LIST




Friday, September 28, 12
NPM UPDATE




Friday, September 28, 12
NPM REMOVE




Friday, September 28, 12
EIGENE NPM PAKETE




Friday, September 28, 12
EIGENE NPM PAKETE


    • npm                  adduser

         • Username, Passwort, E-Mail

    • npm                  publish <folder>|<tarball>




Friday, September 28, 12
HTTPS://GITHUB.COM/
                            JOYENT/NODE/WIKI/




Friday, September 28, 12
DATEISYSTEM




Friday, September 28, 12
DATEISYSTEM-FUNKTIONEN

    • exists               • unlink

    • readFile             • chmod

    • writeFile            • chown

    • appendFile           • ...

    • watchFile

    • rename

Friday, September 28, 12
FILE EXISTS




Friday, September 28, 12
FILE EXISTS




Friday, September 28, 12
FILE EXISTS




Friday, September 28, 12
APPEND FILE




Friday, September 28, 12
APPEND FILE




Friday, September 28, 12
APPEND FILE




Friday, September 28, 12
WATCH FILE




Friday, September 28, 12
WATCH FILE




Friday, September 28, 12
WATCH FILE




Friday, September 28, 12
WATCH FILE




Friday, September 28, 12
FRAGEN?




Friday, September 28, 12
DATENBANKEN




Friday, September 28, 12
Friday, September 28, 12
MySQL




Friday, September 28, 12
MySQL



                                   CouchDB




Friday, September 28, 12
MySQL



                                       CouchDB




                       MS SQL Server


Friday, September 28, 12
MySQL



                                       CouchDB

                  SQLite


                       MS SQL Server


Friday, September 28, 12
MySQL



                                       CouchDB
                                                 Redis
                  SQLite


                       MS SQL Server


Friday, September 28, 12
MySQL
                                       PostgreSQL

                                       CouchDB
                                                    Redis
                  SQLite


                       MS SQL Server


Friday, September 28, 12
MySQL
                                       PostgreSQL

                                       CouchDB
                                                        Redis
                  SQLite


                       MS SQL Server
                                                 Hive


Friday, September 28, 12
MySQL
                                       PostgreSQL
                              Mongo
                                       CouchDB
                                                        Redis
                  SQLite


                       MS SQL Server
                                                 Hive


Friday, September 28, 12
MySQL
                                       PostgreSQL
                                                        Oracle
                              Mongo
                                       CouchDB
                                                         Redis
                  SQLite


                       MS SQL Server
                                                 Hive


Friday, September 28, 12
MYSQL

    • npm             install mysql

    • Implementierung                 des mysql Protokolls




Friday, September 28, 12
MYSQL




Friday, September 28, 12
TEST-DATENBANK




Friday, September 28, 12
MYSQL




Friday, September 28, 12
MYSQL




Friday, September 28, 12
PROMISES




Friday, September 28, 12
PROMISES

    • Ergebnis             eines asynchronen Funktionsaufrufs

    • Rückgabewert               oder Exception

    • Promise              statt Blocking

    • CommonJS                Proposal

    • bis        0.2 Bestandteil von Node


Friday, September 28, 12
PYRAMID OF DOOM




Friday, September 28, 12
PROMISES




Friday, September 28, 12
PROMISE-LIBRARIES


    • https://github.com/kriskowal/q

    • https://github.com/kriszyp/promised-io

    • https://github.com/kriszyp/node-promise

    • ...




Friday, September 28, 12
OHNE PROMISES




Friday, September 28, 12
OHNE PROMISES




Friday, September 28, 12
PROMISES




Friday, September 28, 12
PROMISES




Friday, September 28, 12
PROMISES




Friday, September 28, 12
PROMISES




Friday, September 28, 12
CHILD PROCESSES




Friday, September 28, 12
CHILD PROCESSES


    • spawn                - Kommandoausführung

    • exec            - Kommandoausführung in Puffer

    • execFile              - Dateiausführung in Puffer

    • fork          - Node Prozess



Friday, September 28, 12
ETWAS RECHENINTENSIVES




Friday, September 28, 12
potenziell
                    ETWAS BLOCKIERENDES




Friday, September 28, 12
ETWAS BLOCKIERENDES




Friday, September 28, 12
ETWAS BLOCKIERENDES




Friday, September 28, 12
DIE LÖSUNG: WIR FORKEN




Friday, September 28, 12
CHILD PROCESSES




Friday, September 28, 12
CHILD PROCESSES




Friday, September 28, 12
CHILD PROCESSES




Friday, September 28, 12
WEBSOCKETS




Friday, September 28, 12
WEBSOCKETS


    • Protokoll               auf TCP-Basis

    • Bidirektionale              Client-Server-Kommunikation

    • Wird                 im Rahmen von HTML5 entwickelt

    • Unterstützung                durch Libraries



Friday, September 28, 12
Friday, September 28, 12
SOCKET.IO - SERVER




Friday, September 28, 12
SOCKET.IO - SERVER




Friday, September 28, 12
SOCKET.IO - CLIENT




Friday, September 28, 12
SOCKET.IO - CLIENT




Friday, September 28, 12
SOCKET.IO - CLIENT




Friday, September 28, 12
SOCKET.IO - SERVER




Friday, September 28, 12
DEBUGGER




Friday, September 28, 12
DEBUGGER




Friday, September 28, 12
DEBUGGER




Friday, September 28, 12
DEBUGGER




Friday, September 28, 12
DEBUGGER - STEP


    • next            -n

    • cont            -c

    • step           -s

    • out          -o



Friday, September 28, 12
DEBUGGER - WATCH


    • watch(expression)

    • unwatch(expression)

    • watchers




Friday, September 28, 12
DEBUGGER - WATCH




Friday, September 28, 12
DEBUGGER - REPL




Friday, September 28, 12
TESTING
Friday, September 28, 12
TEST FRAMEWORKS

    • node-unit

    • node             assertion testing

    • jasmine-node




Friday, September 28, 12
JASMINE-NODE




Friday, September 28, 12
JASMINE-NODE




Friday, September 28, 12
JASMINE-NODE
                             src/Calculator.js




Friday, September 28, 12
JASMINE-NODE
                            spec/Calculator.spec.js




Friday, September 28, 12
JASMINE-NODE




Friday, September 28, 12
JASMINE-NODE




Friday, September 28, 12
FRAGEN?




Friday, September 28, 12
KONTAKT
                           Sebastian Springer
                           sebastian.springer@mayflower.de

                           Mayflower GmbH
                           Mannhardtstr. 6
                           80538 München
                           Deutschland

                           @basti_springer

                           https://github.com/sspringer82



Friday, September 28, 12
SOCKETS




Friday, September 28, 12
SOCKETS

    • Kommunikation          über Netzwerk-/Datei-Sockets

    • Read-, Write-        und Read-Write-Sockets

    • ‘net’-Modul




Friday, September 28, 12
SOCKETS


         Write-Socket- Daten               Daten Read-Socket-
                             Socket-Server
            Client                                  Client




Friday, September 28, 12
SOCKETS - SERVER




Friday, September 28, 12
SOCKETS - READ




Friday, September 28, 12
SOCKETS - WRITE




Friday, September 28, 12
SOCKETS - SERVER




Friday, September 28, 12
SOCKETS - SERVER




Friday, September 28, 12
SOCKETS - SERVER




Friday, September 28, 12
SOCKETS - SERVER




Friday, September 28, 12

More Related Content

PDF
Cloud9 IDE Talk at meet.js Poznań
PDF
OpenNebulaConf 2013 - OpenNebula in a Multi-Customer-Environment by Bernd Erk
PPT
2010-06-30 (UC3M) Sheila MacNeill, CETIS, I jornadas eMadrid
PDF
Cherish collection
PDF
Digitcom - Better Future
DOC
Microprocessor Basics 8085 Ch-1
DOCX
Free and Lifelong Handout
PDF
Opération Madrassati (AR)
Cloud9 IDE Talk at meet.js Poznań
OpenNebulaConf 2013 - OpenNebula in a Multi-Customer-Environment by Bernd Erk
2010-06-30 (UC3M) Sheila MacNeill, CETIS, I jornadas eMadrid
Cherish collection
Digitcom - Better Future
Microprocessor Basics 8085 Ch-1
Free and Lifelong Handout
Opération Madrassati (AR)

Similar to Node jsworkshop (20)

PDF
Einführung in Node.js
PDF
Erlang for video delivery
PDF
Node.js, toy or power tool?
PDF
Architecting large Node.js applications
PDF
100% JS
PDF
deSymfony 2012 - El entorno de Symfony2
PDF
Software Libraries And Numbers
PDF
Embedjs
PDF
DEVCON1 - BooJs
PDF
PyJS intro
PDF
[JVMLS 12] Kotlin / Java Interop
PDF
Webinar: MongoDB on the JVM
PDF
Emerging Languages: A Tour of the Horizon
PDF
03 Advanced JavaScript
PDF
How we're building Wercker
PDF
Big app design for Node.js
PDF
JSLab.Руслан Шевченко."JavaScript как платформа компиляции"
PDF
Jslab rssh: JS as language platform
PDF
Caridy patino - node-js
PDF
Conquistando el Servidor con Node.JS
Einführung in Node.js
Erlang for video delivery
Node.js, toy or power tool?
Architecting large Node.js applications
100% JS
deSymfony 2012 - El entorno de Symfony2
Software Libraries And Numbers
Embedjs
DEVCON1 - BooJs
PyJS intro
[JVMLS 12] Kotlin / Java Interop
Webinar: MongoDB on the JVM
Emerging Languages: A Tour of the Horizon
03 Advanced JavaScript
How we're building Wercker
Big app design for Node.js
JSLab.Руслан Шевченко."JavaScript как платформа компиляции"
Jslab rssh: JS as language platform
Caridy patino - node-js
Conquistando el Servidor con Node.JS
Ad

More from Sebastian Springer (20)

PDF
HTMX - ist das die nächste Revolution im Web?
PDF
Schnelleinstieg in Angular
PDF
Creating Enterprise Web Applications with Node.js
PDF
Divide and Conquer – Microservices with Node.js
PDF
From Zero to Hero – Web Performance
PDF
Von 0 auf 100 - Performance im Web
PDF
A/B Testing mit Node.js
PDF
PDF
Einführung in React
PDF
JavaScript Performance
PDF
ECMAScript 6 im Produktivbetrieb
PDF
Streams in Node.js
PDF
JavaScript Performance
PDF
Große Applikationen mit AngularJS
PDF
Testing tools
PDF
Node.js Security
PDF
Typescript
PDF
Reactive Programming
PDF
Best Practices für TDD in JavaScript
PDF
Warum ECMAScript 6 die Welt ein Stückchen besser macht
HTMX - ist das die nächste Revolution im Web?
Schnelleinstieg in Angular
Creating Enterprise Web Applications with Node.js
Divide and Conquer – Microservices with Node.js
From Zero to Hero – Web Performance
Von 0 auf 100 - Performance im Web
A/B Testing mit Node.js
Einführung in React
JavaScript Performance
ECMAScript 6 im Produktivbetrieb
Streams in Node.js
JavaScript Performance
Große Applikationen mit AngularJS
Testing tools
Node.js Security
Typescript
Reactive Programming
Best Practices für TDD in JavaScript
Warum ECMAScript 6 die Welt ein Stückchen besser macht
Ad

Node jsworkshop