# Nerd.js # 39 Minutes of Fame /(basti(nat0r)?|Sebastian( Mai)?)/g
## Was ist das, ## was macht man damit?
### Node = V8 + OS + http * JavaScript-Engine aus Chrome * Filesystem, Netzwerkstack
### Dos $ curl $zeug | sed > /var/www/$foo
$ nc $host 80 | nc -lp 1337
* prototyping * RESTfull-APIs * Streaming
### Don'ts * Komplexe Algorithmen (nicht mit JavaScript …)
# Setup
### Installation (1)
 
					git clone git://github.com/joyent/node.git
					git checkout v0.10.7 # aktuelle Version nachschlagen
					./configure && make && sudo make install

					 
Compiling
### Installation (2)
 
						sudo pacman -Sy nodejs 
					
					
* Raspy + node ↦ [Alarm](http://www.raspberrypi.org/downloads) * Vorsicht vor veralteten Paketen
### Node Package Manager (npm) * Installation von Modulen * Alle Pakete für ein Projekt in ./node_module * Verwaltung über package.json
### Doku :) * [node Api](http://nodejs.org/docs/latest/api/) * [npm Pakete](https://npmjs.org/) * [JavaScript](http://www.w3schools.com/jsref/jsref_obj_array.asp)
### [Express.js](http://expressjs.com/) Web Framework für Node
### [CouchDB](http://couchdb.apache.org/) * http * json * JavaScript
Benutzt man ja ohnehin schon ;)
# Paradigmen
### Events

						foo.on('eventname', handleStuff);
						function handleStuff(data) {
							// magic
						}
					
### Call Back to the Future

					function test(callback) {
						delorean.travel(['Einstein'], 1);
						delorean.on('return', callback);
						util.puts('Jesus Christ – Doc, sie haben Einstein aufgelöst!');
					}
					test(function(travelers) {
						util.puts('Was ist, ist der Wagen kalt?');
						util.puts('Er ist kalt. Verdammt kalt – '+ travelers[0] + ', du kleiner Teufel.'
					});
					
### Program as a Proxy:

					in.on('data', function(data) {
						var encryption = rot13(data);
						var betterEncryption = rot13(encryption);
						out.write(data);
					});
					
### Prototypen (1)

					function Delorean() {
						this.energy = 0;
						this.time = 1985;
						this.plutonium = function() {
							this.energy = 1.21;
						}
						this.timeTravel = function(time) {
							if(this.engergy >= 1.21) {
								console.log('swoosh');
								this.energy -= 1.21;
							}
						};
					};
					var timeMachine = new Delorean();
					timeMachine.plutonium();
					timeMachine.timeTravel(1955);
					 
### Prototypen (2)

					Deloraean.protoype.mrFusion = function() {
						this.energy = 1.21;
					}
					
					timeMachine.mrFusion();
					timeMachine.timeTravel(2015);

					 
# Demo * Kleiner WebServer der Zeug™ ausliefert für den IRC-Bot
## HTTP

						Request:

						VERB path HTTP/1.1
						host: host
						header: zeug

						Antwort:
						
						HTTP/1.1 200
						header : zeug

						
* GET * PUT * POST * DELETE * HEAD
## URL protokoll://domain/path?parameter