Talk di Luca Lusso | Drupal Day Roma 2011
Snellire il carico del server per generare e restituire un json da usare per un autocompletamento. Notificare che un nodo è stato appena creato a tutti gli utenti che stanno visitando il sito in questo momento. Oppure ancora mettere a disposizione degli utenti una chat in tempo reale. Tutto questo (e molto altro) si può delegare ad un processo esterno a Drupal per aumentare velocità di interazione e diminuire il carico del server.
Durante il talk si vedrà come installare e usare node.js e come integrarlo con Drupal. Verrà mostrato il modulo nodejs presente nel repository di drupal.org
Simple Cloud API: accesso semplificato al cloud computingFrancesca1980
In questa sessione verrà presentato il progetto open source Simple Cloud API per l'accesso semplificato ai servizi di cloud computing. Il progetto, nato dalla volontà di Zend Technologies, IBM e Microsoft, offre un API semplificata per l'accesso a differenti servizi di cloud computing. I servizi attualmente implementati sono di File Storage, Document Storage e Simple Queue sui sistemi cloud di Amazon, Windows Azure e Nirvanix (in futuro anche Rackspace e GoGrid). Nella presentazione, dopo una breve introduzione ai servizi di cloud computing ed alla loro rilevanza dal punto di vista dello sviluppo delle applicazioni web, verranno presentati degli esempi in PHP per l'utilizzo del Simple Cloud API
Progetto su iPhone - Seminario di Reti WirelessSilvio Daminato
"Simon says the color" è un'applicazione per iPhone sviluppata da Silvio Daminato e Andrea Giavatto per il progetto di Reti Wireless nell'anno accademico 2009/2010. È un gioco in cui un giocatore deve scattare una fotografia con un certo colore al centro dello schermo.
Le caratteristiche principali di questa applicazione sono descritte e viene dato qualche esempio di codice.
Talk di Luca Lusso | Drupal Day Roma 2011
Snellire il carico del server per generare e restituire un json da usare per un autocompletamento. Notificare che un nodo è stato appena creato a tutti gli utenti che stanno visitando il sito in questo momento. Oppure ancora mettere a disposizione degli utenti una chat in tempo reale. Tutto questo (e molto altro) si può delegare ad un processo esterno a Drupal per aumentare velocità di interazione e diminuire il carico del server.
Durante il talk si vedrà come installare e usare node.js e come integrarlo con Drupal. Verrà mostrato il modulo nodejs presente nel repository di drupal.org
Simple Cloud API: accesso semplificato al cloud computingFrancesca1980
In questa sessione verrà presentato il progetto open source Simple Cloud API per l'accesso semplificato ai servizi di cloud computing. Il progetto, nato dalla volontà di Zend Technologies, IBM e Microsoft, offre un API semplificata per l'accesso a differenti servizi di cloud computing. I servizi attualmente implementati sono di File Storage, Document Storage e Simple Queue sui sistemi cloud di Amazon, Windows Azure e Nirvanix (in futuro anche Rackspace e GoGrid). Nella presentazione, dopo una breve introduzione ai servizi di cloud computing ed alla loro rilevanza dal punto di vista dello sviluppo delle applicazioni web, verranno presentati degli esempi in PHP per l'utilizzo del Simple Cloud API
Progetto su iPhone - Seminario di Reti WirelessSilvio Daminato
"Simon says the color" è un'applicazione per iPhone sviluppata da Silvio Daminato e Andrea Giavatto per il progetto di Reti Wireless nell'anno accademico 2009/2010. È un gioco in cui un giocatore deve scattare una fotografia con un certo colore al centro dello schermo.
Le caratteristiche principali di questa applicazione sono descritte e viene dato qualche esempio di codice.
by Davide Cerbo e Stefano Linguerri
La programmazione web sta facendo passi da gigante e oggi l’utente si aspetta che l’esperienza di utilizzo si avvicini sempre di più a quella a cui è abituato nei classici applicativi desktop. Il mondo degli sviluppatori ha risposto inventanto una nuova sigla: RIA, cioè Rich Internet Application. Google non è stata a guardare e ha fornito la sua risposta a questa esigenza donando alla community Google Web Toolkit. Questo nuovo framework permette di sviluppare in Java tutta l’interfaccia utente per poi ottenere un codice javascript che funzionerà su qualsiasi browser web senza l’installazione di plugin aggiuntivi. In questa presentazione vedremo:
* perchè sviluppare applicazioni RIA
* perchè usare GWT
* come GWT utilizza AJAX per comunicare con il server
* le ottimizzazione che avremo utilizzando GWT
* come uscire dal browser con Google Gear e Mozilla Prism
* e non solo…
✦ Introduzione
✦ Connessioni TCP lato client: la classe
Socket
✦ Connessioni TCP lato server: la classe
ServerSocket
✦ Struttura di un server multi-threaded
Autenticazione delle api con jwt e symfony (Italian)Marco Albarelli
A quick overview of the JWT token format and how it can be used to authenticate REST APIs even without implementing the full Openid Connect stack. The examples show also a TDD approach
In ASP.NET Core 3.0 è stato introdotto il supporto a gRPC, una framework altamente performante per fare Remote Procedure Call (RPC). Leggero e molto efficiente, supportato da molti linguaggi, supporto ad una comunicazione bidirezionale, riduzione del consumo di banda...solo questi solo alcuni dei vantaggi che descrivono gRPC, e che durante la sessione cercheremo di capire se siano reali o meno.
Fatto sta che è una tecnologia assolutamente da conoscere e sfruttare nello sviluppo di app moderno, e non solamente in ambito web.
Codice: https://github.com/andreadottor/XE.Dottor.gRPC
Evento: https://www.xedotnet.org/eventi/grpc-and-c-optimising-night/
Abstract:
* Introduzione a Seam ;
* Ciclo di vita di Seam;
* Component and context;
* Absolute Inversion of Control;
* Rapid Seam development (con esempio di start-up su eclipse o se si preferisce a linea di comando);
* Differenze sostanziali con la versione 3.0 / Ajax and Javascript remoting
✦ Progettazione in XP
✦ Principi di progettazione: Semplicità
✦ Test Driven Development
✦ Self Documenting Code
✦ Once and Only Once
✦ You Ain’t Gonna Need It
✦ Automazione dei test in Java: JUnit
1. Lezione 7: Remote Method
Invocation e SSL
Corso di Programmazione in Rete
Laurea Magistrale in Ing. Informatica
Università degli Studi di Salerno
1
2. Outline
✦ Esecuzione del programma
✦ RMI e SSL
2
3. Esecuzione del programma
✦ Prima di lanciare il server occorre far
partire il programma rmiregistry
• il programma deve partire dalla directory in cui si
trovano i file .class
3
4. Passaggio dei parametri
✦ Nella chiamata a un metodo di un oggetto
locale, Java usa i seguenti meccanismi
per il passaggio dei parametri e del valore
di ritorno:
• per i tipi atomici il passaggio è per valore
• per tutti gli altri tipi, il passaggio è per riferimento
4
5. Passaggio dei parametri
✦ Nel caso di oggetti remoti, le regole
cambiano:
• per i tipi atomici il passaggio è per valore
• per gli oggetti che implementano un’interfaccia
remota, il passaggio è per riferimento (remoto)
• per i tipi serializzabili che non implementano
un’interfaccia remota il passaggio è per valore
• per tutti gli altri tipi, non è possibile utilizzarli
come parametro o valore di ritorno di un metodo
remoto
5
6. Passaggio dei parametri
✦ Conseguenze
• il comportamento di un metodo può cambiare a
seconda se l’oggetto è locale oppure remoto
• il passaggio per valore di un oggetto può avere un
impatto significativo sulle prestazioni, dal
momento che comporta la trasmissione su rete di
una versione serializzata dell’oggetto e di tutti gli
oggetti ad esso collegati!
• il server deve avere accesso ai .class delle classi
effettive dei parametri passati per valore
‣ non è sempre banale, per il polimorfismo
6
7. Passaggio dei parametri
✦ Esempio di codice che ha un effetto
diverso in un oggetto locale o in un
oggetto remoto
public void copia(int src[], int dest[]) {
for(int i=0; i<src.length; i++)
dest[i]=src[i];
}
✦ Infatti:
‣ in un oggetto locale, copia un array in un altro
array (passaggio per riferimento)
‣ in un oggetto remoto, non ha nessun effetto
(passaggio per valore)
7
8. RMI e SSL
✦ Per rendere sicura la comunicazione con
un oggetto remoto è possibile usare
socket SSL/TLS invece dei semplici socket
TCP
✦ Per cambiare il tipo di socket usato per la
connessione i passi sono:
• definire una factory per i server socket e una
factory per i client socket
• specificare le factory da usare nel costruttore
della classe di implementazione dell’oggetto
remoto
8
9. RMIServerSocketFactory
✦ L’interfaccia RMIServerSocketFactory (del
package java.rmi.server) rappresenta una
factory da usare per creare i server
socket associati a un oggetto remoto
✦ Le implementazioni devono definire il
metodo:
• ServerSocket createServerSocket(int port)
throws IOException
9
10. RMIServerSocketFactory
✦ Ad esempio, per creare socket SSL:
import java.io.*;
import java.net.*;
import javax.net.*;
import javax.net.ssl.*;
import java.rmi.server.*;
public class RMISSLServerSocketFactory implements RMIServerSocketFactory {
public ServerSocket createServerSocket(int port) throws IOException {
ServerSocketFactory factory=SSLServerSocketFactory.getDefault();
return factory.createServerSocket(port);
}
}
10
11. RMIClientSocketFactory
✦ Interfaccia usata dal client per la
creazione del socket per connettersi
all’oggetto, usando il metodo
• Socket createSocket(String host, int port)
throws IOException
✦ L’istanza dell’implementazione viene
definita dall’applicazione server e
trasmessa al client quando richiede la
connessione all’oggetto
• perciò l’implementazione deve anche essere
Serializable
11
12. RMIClientSocketFactory
✦ Ad esempio, per creare socket SSL:
import java.io.*;
import java.net.*;
import javax.net.*;
import javax.net.ssl.*;
import java.rmi.server.*;
public class RMISSLClientSocketFactory implements RMIClientSocketFactory, Serializable {
public Socket createSocket(String host, int port) throws IOException {
SocketFactory factory=SSLSocketFactory.getDefault();
return factory.createSocket(host, port);
}
}
12
13. Uso delle factory
✦ Occorre passare al costruttore di
UnicastRemoteObject la
RMIClientSocketFactory e la
RMIServerSocketFactory
• per questo occorre richiamare dal costruttore
della classe di implementazione il costruttore:
UnicastRemoteObject(int port,
RMIClientSocketFactory csf,
RMIServerSocketFactory ssf)
throws RemoteException
13
14. Uso delle factory
import java.rmi.*;
✦ Ad esempio, per l’oggetto calcolatrice:
import java.rmi.server.*;
public class CalculatorImpl extends UnicastRemoteObject implements Calculator {
public CalculatorImpl(RMIClientSocketFactory clientFactory,
RMIServerSocketFactory serverFactory) throws RemoteException {
super(0, clientFactory, serverFactory);
}
public double add(double a, double b) {
return a+b;
}
public double divide(double a, double b) {
return a/b;
}
public double multiply(double a, double b) {
return a*b;
}
public double subtract(double a, double b) {
return a-b;
}
}
14
15. Modifiche al server
✦ Il server deve creare le factory definire le
system properties per accedere al key
store:
import java.net.*;
import java.rmi.*;
import java.rmi.server.*;
public class CalculatorServer {
public static void main(String args[]) throws RemoteException, MalformedURLException {
System.setProperty("javax.net.ssl.keyStore", "keystore.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "pippobaudo");
RMIClientSocketFactory clientFactory=new RMISSLClientSocketFactory();
RMIServerSocketFactory serverFactory=new RMISSLServerSocketFactory();
Calculator calc=new CalculatorImpl(clientFactory, serverFactory);
Naming.rebind("calc", calc);
}
}
15
16. Modifiche al client
✦ Il client deve soltanto definire le system
properties per accedere al trust store:
import java.net.*;
import java.rmi.*;
public class CalculatorClient {
public static void main(String args[])
throws RemoteException, MalformedURLException, NotBoundException {
System.setProperty("javax.net.ssl.trustStore", "truststore.jks");
System.setProperty("javax.net.ssl.trustStorePassword", "pippobaudo");
Calculator calc=(Calculator)Naming.lookup("rmi://localhost/calc");
System.out.println("9 per 9 fa "+calc.multiply(9,9));
}
}
16
17. Modifiche al client
✦ Note
• è possibile che tra gli oggetti di uno stesso server
alcuni usino socket SSL e altri socket normali
• il client non deve decidere quale tipo di socket
usare per ciascun oggetto: il server provvede a
passargli la factory appropriata
• il meccanismo delle factory può essere usato
anche per usare altri meccanismi di
comunicazione
‣ es. HTTP tunneling per le reti dotate di firewall
17