Node.js

Page last edited 1 721 giorni 20 ore fa
Da wiki.betaingegneria.it.

Javascript lato server.

Devo fare Upload di video.

Questi sono i siti che ho visitato

Installazione di Node.js[modifica]

Download[modifica]

Da questo sito si scarica il tarball e si procede al solito schema di installazione:

  $ tar xzf node-v0.10.3.tar.gz
  $ cd node-v0.10.3/
  $ ./configure
  ...
  $ make
  ...
  ...
  $ make install

Filosofia[modifica]

Javascript nasce come un linguaggio interpretato a livello del browser. Per far girare un programma Javascript abbiamo bisogno di un browser. Se carichiamo nel browser una pagina contenente un programma Javascript (essa può essere scaricata da un sito remoto o può anche essere una pagina HTML nel nostro filesystem), il browser ci fornirà una virtual machine nella quale far girare il programma. Poi i vari browser hanno anche degli ottimi strumenti di debugging.

Ma fin qui usiamo soltanto ed esclusivamente oggetti che hanno un senso nel browser: finestre, form, pulsanti, caselle di testo, in generale elementi del DOM come immagini, testi, ... In sostanza: tutto ciò che vediamo in una pagina HTML.

Node.js è programmazione lato server. Vuol dire che la virtual machine dev'essere nel server anche senza un browser a disposizione. La macchina virtuale si chiama V8 ed è sviluppata da Google. Essa viene installata scaricando il pacchetto descritto sopra, compilando il codice C++ e avviando il servizio node come un task UNIX:

  $ cd /home/marcob/workspace/node.js
  $ node index.js
  Server running at http://127.0.0.1:1337/

Puntando il browser su quell'URL vediamo

  Hello, World!

Dissezioniamo il codice che ha prodotto la magia:

  var http = require('http');
   
  var server = http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World\nMarco');
  })
   
  server.listen(1337, '127.0.0.1');

  console.log('Server running at http://127.0.0.1:1337/');

Uno sguardo ad una feature molto particolare di JavaScript[modifica]

Non so se ve ne siete accorti, ma di solito possiamo passare argomenti alle funzioni: in C possiamo passarle per valore o per riferimento:

  void main(*args[])

Qui passiamo alla funzione void l'indirizzo del vettore args. Questo è un esempio di passaggio per riferimento. Lo usiamo quando vogliamo modificare il contenuto di una variabile attraverso una funzione.

Oppure possiamo passare il parametro per valore:

  #include <stdio.h>
  
  int fattoriale(int);
  
  int main()
  {
      int a=10;
      int b;
  
      b = fattoriale(a);
      
      printf("\n%i! = %i\n", a, b);
  }
  
  int fattoriale(int n)
  {
      if (n == 1)
      {
          return 1;
      }
      else
      { 
          return n*fattoriale(n-1);
      }
  }
  

Qui la variabile viene ricreata ogni volta che viene richiamata ricorsivamente la funzione fattoriale: il sistema operativo alloca per n volte una nuova locazione di memoria che contiene la variabile n per il tempo che dura l'esecuzione della funzione. Alla fine dell'esecuzione dealloca la memoria.

Ma la cosa veramente fuori è che con JavaScript possiamo fare una cosa ancora diversa: possiamo passare, come parametro, anche una funzione!!

Ad esempio

  function say(word) {
    console.log(word);
  }
  
  function execute(someFunction, value) {
    someFunction(value);
  }
  
  execute(say, "Hello");

La prima funzione scrive a video il contenuto della variabile word.

La seconda funzione è quella davvero speciale: prende il contenuto della variabile someFunction e lo usa come nome di funzione al suo interno!!

Quindi possiamo eseguire la funzione usando il costrutto

  execute(say, "Hello");

alla funzione execute passiamo il nome della funzione da eseguire come primo parametro, e come secondo parametro il valore da dare in pasto a say.

NodeBeginner.org

Inversione di controllo[modifica]

Mi imbatto, leggendo le note di NodeBeginner.org su Node.js, nel problema di interfacciare il nostro programma con librerie terze: alla svelta si può rimane impigliati in una rete da pesca. Questo sito parla del modo di gestire le dipendenze per dormire sonni tranquilli. Da leggere con calma.