Node.js + Drupal. Luca Lusso. giovedì 1 dicembre 11



Похожие документы
Installazione LAMP. Installare un server lamp su Linux Ubuntu. Per installare un server LAMP in Ubuntu come prima cosa apriamo il terminale:

Concetti fondamentali

Web Server Benchmarking: Apache 2.4 vs Nginx 1.6.2

FASE 1: Definizione del tema, degli obiettivi e del target con il cliente... (da cui dipendono le scelte successive!)

Laboratorio di Progettazione Web

Installazione & Configurazione Php e MySQL su Mac Os X. Php

Apache Webserver. Piccola introduzione all'installazione ed alla configurazione, a cura di: Alessandro Gervaso

CONFIGURAZIONE XAMPP + SSL (HTTPS)

Configurazione avanzata di XAMPP

Il Web Server e il protocollo HTTP

Introduzione a XAMPP. Andrea Atzeni (shocked@polito.it) Marco Vallini (marco.vallini@polito.it) Politecnico di Torino Dip. Automatica e Informatica

Servizi DISI: spazio Web personale e di gruppo. Angelo Di Iorio

Event loop. Event Loop. Carica il programma, quindi. Finché c è altro da fare. Attendi che qualcosa accada. Termina, a meno che non ci sia altro

I desiderata La progettazione MVC Organizzazione del codice.

Introduzione alle applicazioni di rete

Port Community System del Porto di Ravenna CONFIGURAZIONE

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

Il web server Apache Lezione n. 3. Introduzione

Corso di programmazione di sistemi mobile 1. Android. Google Cloud Messaging

Setup dell ambiente virtuale

Esempio di esecuzione di una pagina JSP: Il client chiede la pagina: sdfonline.unimc.it/info/modulo.jsp;

Applicazione: Servizio periferico per l'invio telematico delle domande di nulla osta al lavoro

Ubiquity getting started

Come funziona il WWW. Architettura client-server. Web: client-server. Il protocollo

A. Lorenzi Pagine ASP

Console di Amministrazione Centralizzata Guida Rapida

COME CREARE E COLLEGARSI AD UN DATABASE MICROSOFT SQL SERVER O SUN MYSQL

XAMPP (a cura di Michele Acierno a.a. 2012/2013)

Progetto di Ingegneria del Software 2. SWIMv2

Introduzione ad EasyPHP

Appunti di Informatica 1

GovPay 2.0. Manuale Installazione

Elementi di Sicurezza e Privatezza Laboratorio 3 - Web Server Apache (1) Chiara Braghin chiara.braghin@unimi.it!

Tecnologie per il Web. Il web: Architettura HTTP HTTP. SSL: Secure Socket Layer

Application Server per sviluppare applicazioni Java Enterprise

Xampp. Valeriano Maysonnave - A.A. 2014/2015 -

Configurazione di sicurezza di XAMPP

Cenni di programmazione distribuita in C++ Mauro Piccolo

Lezione II: Web server e ambiente di lavoro

Installazione e configurazione Kerberos For Windows

VBScript. VBScript. Visual Basic Scripting Edition. Linguaggio di script per browser e server Microsoft Deriva da Visual Basic, ma è interpretato

SERVIZIO TELEMATICO ENTRATEL. Applicazione Invia Multifile

Drupal. E vai con un po' di Drupal for Dummies... :D. Copyright by hachreak

Esercitazione 8. Basi di dati e web

Installazione Alfresco Avanzata

Esercitazione 05. Sommario. Packet Filtering [ ICMP ] Esercitazione Descrizione generale. Angelo Di Iorio (Paolo Marinelli)

Il server web: Apache, IIS e PWS

Node.js Introduzione alla programmazione Dott. Ing. Ivan Ferrazzi V1.0 del 05/11/2012

Guida all'installazione del CMS Os-Commerce

Guida per l utente di PrintMe Mobile 3.0

PkBox Requisiti Tecnici HW/SW. rel

TeamPortal. Servizi integrati con ambienti Gestionali

API e socket per lo sviluppo di applicazioni Web Based

Guida all'installazione del CMS Magento

Una Soluzione di NAT Traversal per un sistema di comunicazione VOIP per una PMI

Rapporto Tecnico N. 2 Ottobre IBIM Drive. Alessandro Pensato

Guida all uso dei servizi Mail:

19. LA PROGRAMMAZIONE LATO SERVER

Introduzione a phpmyadmin

Programmazione server-side: Java Servlet

Tutorial MYSQL. Creazione linked server con Microsoft SQL Server per lettura dati da MYSQL. Validità: Febbraio 2013

Laboratorio Progettazione Web PHP e MySQL - Lezione 9. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2012/2013

Installazione di Moodle. Preparato per: Gruppo A, Piattaforma di E - Learning Preparato da: Cinzia Compagnone, Vittorio Saettone

Linux e Java. Installazione e uso di Java in un sistema Debian

Schedulatore per la comunicazione con le Porte di Dominio

BASI DI DATI Cos è il PHP. Cos è il PHP. Esercitazione su PHP & MySQL

Corso App modulo Android. Antonio Gallo

Guida alla registrazione on-line di un DataLogger

Installazione e configurazione di Java DB in Windows (7)

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

Indice generale. Capitolo 3 Introduzione a PHP...43 Sintassi e istruzioni di base Variabili, operatori e commenti Array...

Overview su Online Certificate Status Protocol (OCSP)

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

Guida all installazione Command WorkStation 5.5 con Fiery Extended Applications 4.1

I Socket. Laboratorio Software M. Grotto R. Farina

GIS e Geo WEB: piattaforme e architetture. Docente: Cristoforo Abbattista abbattista@planetek.it

Creare connessioni cifrate con stunnel

Simulazione seconda prova Esame di Stato Sito Web - Gestione di un centro agroalimentare all ingrosso (Parte seconda)

in collaborazione con l'università degli studi di Bergamo Facoltà d'ingegneria presenta:

OTRS Training. Ottimizza e accelera i tuoi servizi imparando a gestire OTRS.

Laboratorio di Sistemi Programmare in Php con NetBeans Php. Programmare in Php con Xampp e NetBeans IDE

Guida all Installazione del ProxyFatturaPA

NOTE TECNICHE DI CONFIGURAZIONE. Giugno 2009

Servizi Remoti. Servizi Remoti. TeamPortal Servizi Remoti

TeamPortal. Infrastruttura

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

MySQL Controllare gli accessi alla base di dati A cura di Silvio Bonechi per

INFORMAZIONI GENERALI POSTA

Транскрипт:

Node.js + Drupal Luca Lusso

Agenda Cos è e come funziona node.js Installare node.js Code session: realizzazione si un modulo per l autocompletamento dei tags Demo session: installare e usare il modulo nodejs

Cos è e come funziona node.js Javascript sul server Basato su V8 di Google (il motore javascript di Chrome) Event driven I/O asincrono (mediante librerie esterne)

Cos è e come funziona node.js Un singolo processo gestisce il main event loop e tutte le connessioni (singolo thread) I task sono eseguiti in modo asincrono lasciando il main event loop libero di gestire altre richieste Anche nginx usa lo stesso modello semplicemente perché per una concorrenza massiva non possiamo usare un thread del sistema operativo per ogni connessione, è troppo pesante.

Cos è e come funziona node.js node processo di I/O (lento) processo di I/O A B C

Node.js può essere usato per Gestire la concorrenza I/O asincrono Networking Caricamento asincrono di componenti di una pagina via Ajax

Installare node.js http://nodejs.org/ Ultima versione stabile (0.4.12) disponibile per ambienti Unix (Linux, Mac Os X) Versione unstable (0.5.x) aggiunge il supporto a Windows github.com/joyent/node/wiki/installation Per Mac Os X è disponibile l installer, per Linux basta scaricare e compilare :-)

Installare node.js NPM (Node Package Manager) Gestisce il download e l installazione delle librerie aggiuntive http://npmjs.org/ curl http://npmjs.org/install.sh sudo sh #> npm install express

Hello world (hello.js) var http = require('http'); http.createserver(function (request, response) { console.log('request received ); response.writehead(200, {'Content-Type': 'text/plain'}); response.end('hello World\n'); }).listen(8000); console.log('server running at http://127.0.0.1:8000/');

Hello world funkymac2:desktop lussoluca$ node hello.js Server running at http://127.0.0.1:8000/ Request received

Code session: realizzazione si un modulo per l autocompletamento dei tags Chiama Ajax per autocompletare i tags durante la digitazione Necessita un bootstrap completo di Drupal per gestire la richiesta /taxonomy/autocomplete/field_tags/a

Code session: realizzazione si un modulo per l autocompletamento dei tags express (http://expressjs.com) web framework per Node.js Nel nostro esempio usiamo solo il routing, ma fa anche middleware, template e altro mysql (github.com/felixge/node-mysql) driver MySQL per Node.js

Code session: realizzazione si un modulo per l autocompletamento dei tags var Client = require('mysql').client; var client = new Client(); client.user = 'root'; client.password = 'root'; client.port = 3306; client.database = 'nodejs';

Code session: realizzazione si un modulo per l autocompletamento dei tags var app = require('express').createserver(); app.get('/autocomplete/:vid/:id', function(req, res) {

Code session: realizzazione si un modulo per l autocompletamento dei tags var query = client.query( 'SELECT * FROM [...]', [vid, arg, tags.join(',')], function selectcb(err, results, fields) { if (err) { }); } throw err; var names = {}; var prefix = (tags.length > 0)? tags.join(',') + ', ' : ''; for (var i in results){ var result = results[i]; } names[prefix + result.name] = result.name; res.write(json.stringify(names)); res.end(); // end the request. Callback! Node.js non si ferma ad aspettare i risultati dal db, li invierà al client quando saranno pronti!

Code session: realizzazione si un modulo per l autocompletamento dei tags app.listen(3000);

Code session: realizzazione si un modulo per l autocompletamento dei tags

Code session: realizzazione si un modulo per l autocompletamento dei tags function _test() { $form = array(); $form['name_nodejs'] = array( '#type' => 'textfield', '#title' => t('tags Node.js version'), '#autocomplete_path' => '/autocomplete/1', '#size' => '100', '#maxlength' => '100', ); $form['name_drupal'] = array( '#type' => 'textfield', '#title' => t('tags drupal version'), '#autocomplete_path' => 'taxonomy/autocomplete/field_tags', '#size' => '100', '#maxlength' => '100', ); } return $form;

Code session: realizzazione si un modulo per l autocompletamento dei tags /autocomplete/1/% non è un path Drupal Necessario per bypassare il problema del cross domain scripting Bisogna configurare il mod_proxy di Apache (cosa simile per nginx)

Code session: realizzazione si un modulo per l autocompletamento dei tags <VirtualHost *:80> ServerAdmin webmaster@localhost ServerName www.example.it DocumentRoot /var/www/example <Directory /var/www/example> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> Nella configurazione del VirtualHost diciamo ad Apache di girare le richieste alla url autocomplete al server Node.js in ascolto sulla porta 3000 ProxyPass /autocomplete http://www.example.it:3000/autocomplete ProxyPassReverse /autocomplete http://www.example.it:3000/autocomplete </VirtualHost>

Code session: realizzazione di un modulo per l autocompletamento dei tags Node.js: 15ms Chiamata standard Drupal: 131ms

Demo session: installare e usare il modulo nodejs drupal.org/project/nodejs Ancora in versione beta Canali multipli per inviare messaggi asincroni a tutti i client connessi al sito a seconda dei ruoli/permessi Basato su Socket.io, express e connect

Demo session: installare e usare il modulo nodejs Il modulo nodejs_config fornisce un interfaccia per creare il file di configurazione per il server, nodejs.config.js che deve stare nella stessa directory del file server.js backendsettings = { "scheme":"http", "host":"localhost", "port":4000, "key":"/path/to/key/file", "cert":"/path/to/cert/file", "resource":"/socket.io", "publishurl":"/nodejs/publish", "servicekey":"", "backend":{ "port":8080, "host":"nodejs", [...]

Demo session: installare e usare il modulo nodejs nodejs_notify -> notifiche growl like nodejs_subscribe -> notifica cambiamenti nei contenuti nodejs_actions -> action per inviare messaggi, usabile anche da Rules

Demo session: installare e usare il modulo nodejs client Richiesta iniziale Risposta con token di autenticazione Drupal Invio token node Verifica autenticazione Lista canali Autenticazione riuscita Le chiamate successive non passano più da Drupal

Domande?!

Grazie!