64
PIATTAFORME DIGITALI PER LA GESTIONE DEL TERRITORIO UNIT 4.4 [email protected] Infrastrutture e tecnologie abilitanti Interfacce

MOOC Piattaforme digitali per la gestione del territorio - 4.4

Embed Size (px)

Citation preview

Page 1: MOOC Piattaforme digitali per la gestione del territorio - 4.4

PIATTAFORME DIGITALI PER LA GESTIONE DEL TERRITORIO

UNIT 4.4

[email protected]

Infrastrutture e tecnologie abilitantiInterfacce

Page 2: MOOC Piattaforme digitali per la gestione del territorio - 4.4

PIATTAFORME DIGITALI PER LA GESTIONE DEL TERRITORIO

Interfacce

e codice Interfacce

interprocesso

Interfacce

remote

Interfacce

Autenticazione e

autorizzazione

Formati e

codifiche

Page 3: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Interfaccee codice

Page 4: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Codice

Page 5: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Piattaforma di esecuzione

SistemaOperativoC Runtime

fopen() open()

Page 6: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Piattaforma di esecuzione

Applicazione

Framework

Runtime

Sistema Operativo

Hardware

Pro

gram

ma

Page 7: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Linguaggio C

int divisione (int a, int b);

Page 8: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Calling convention

int divisione (int a, int b);

Nome della funzione

Ordine, formato e codifica degli argomenti

Formato e codifica del dato di ritorno

Page 9: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Formato dei dati

Big/little-endian

Numeri floating point (IEEE 754)

Stringhe

Etc…

Page 10: MOOC Piattaforme digitali per la gestione del territorio - 4.4

C

thing.cmain.cmemory.c

...

gate.c

gate.h

gate_open(int when);

Page 11: MOOC Piattaforme digitali per la gestione del territorio - 4.4

C

gate.h

gate_open(int when);

programma.c

#include "gate.h"

int main(void) {// ...

gate_open(3);

// ...}

Page 12: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Interfacceinter-processo

Page 13: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Interfacce inter-processo

•Redirezione dei canali standard

•Pipe

• Socket

Page 14: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Unix Philosophy

This is the Unix philosophy: Write programs that do one thing and do it well. Write programs to work together. Write programs to

handle text streams, because that is a universal interface.

Page 15: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Canali Standard

PROCESSO

STDOUT

STDIN

STDERR

Page 16: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Piping

Page 17: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Pipe

• Sono file speciali utilizzati per connettere due processi con un canale di comunicazione ( read() / write() )

• Possono essere bidirezionali ma vengono solitamente utilizzate in modo unidirezionale

Page 18: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Pipe nel terminale

$ who | sort | more

EsercitazionePipe tra processi su Linux

Page 19: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Socket

• Permettono la comunicazione fra processi che eseguono su machine differenti

193.240.253.14 10.53.178.1

Page 20: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Socket - collegare due processi

Server:

1. Istanziazione

Client:

SERVER CLIENT

SFD

Page 21: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Socket - collegare due processi

Server:

1. Istanziazione

2. Bind

Client:

SERVER CLIENT

SFD

10.0.0.1:80

Page 22: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Socket - collegare due processi

Server:

1. Istanziazione

2. Bind

3. Accept

Client:

SERVER CLIENT

SFD

10.0.0.1:80

Page 23: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Socket - collegare due processi

Server:

1. Istanziazione

2. Bind

3. Accept

4. Listen

Client:

SERVER CLIENT

SFD

10.0.0.1:80

Page 24: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Socket - collegare due processi

Server:

1. Istanziazione

2. Bind

3. Accept

4. Listen

Client:

5. Istanziazione

SERVER CLIENT

SFD C_SFD

10.0.0.1:80

Page 25: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Socket - collegare due processi

Server:

1. Istanziazione

2. Bind

3. Accept

4. Listen

Client:

5. Istanziazione

6. Connect

SERVER CLIENT

SFD C_SFD

10.0.0.1:80

S_SFD

Page 26: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Socket - collegare due processi

Server:

1. Istanziazione

2. Bind

3. Accept

4. Listen

7. Read/Write

Client:

5. Istanziazione

6. Connect

7. Read/Write

SERVER CLIENT

SFD C_SFD

10.0.0.1:80

S_SFD

Page 27: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Interfacceremote

Page 28: MOOC Piattaforme digitali per la gestione del territorio - 4.4

API “Remote”

???

6*7

Page 29: MOOC Piattaforme digitali per la gestione del territorio - 4.4

HTTP

Protocollo principe di Internet

Basato su TCP/IP

Orientato al trasferimento di documenti (iper)testuali

…ma sfruttabile per ogni tipo di trasferimento

Leggibile

Stateless

Page 30: MOOC Piattaforme digitali per la gestione del territorio - 4.4

HTTP

GET /repos/golang/goUser-Agent: NCSA Mosaic/1.0Host: api.github.com

Page 31: MOOC Piattaforme digitali per la gestione del territorio - 4.4

HTTPHTTP/1.1 200 OKServer: GitHub.comContent-Type: application/jsonContent-Length: 5171{"id":23096959,"name":"go","full_name":"golang/go","private":false,"description":"The Go programminglanguage",...

Page 32: MOOC Piattaforme digitali per la gestione del territorio - 4.4

HTTP Verbs

GET

POST

HEAD

PUT

DELETE

Page 33: MOOC Piattaforme digitali per la gestione del territorio - 4.4

HTTP Status

200 OK

201 Created

301 Moved Permanently

400 Bad Request

403 Forbidden

404 Not Found

500 Internal Server Error

Page 34: MOOC Piattaforme digitali per la gestione del territorio - 4.4

RESTful services

«REpresentational State Transfer»

Linee guida architetturaliper l’architettura base del Web.

• Client-server

• Senza stato (stateless)

• Cacheable

• Stratificato

• Interfaccia uniforme

Page 35: MOOC Piattaforme digitali per la gestione del territorio - 4.4

RESTful HTTP

GET /posts

GET /posts/1

GET /posts/1/comments

PUT /posts/1/comments

DELETE /posts/2

Page 36: MOOC Piattaforme digitali per la gestione del territorio - 4.4

RESTful HTTP

HTTP/1.1 200 OK

Content-Type: application/json;charset=utf-8

Content-Length: 5171

Date: Wed, 16 Mar 2016 17:14:47 GMT

{ "post_id" : 1,

"content" : "Lorem ipsum dolor...",

"author_id" : 123,

... EsercitazioneRichieste ad API RESTful con Postman

Page 37: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Autenticazionee Sicurezza

Page 38: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Principi

Autenticazione

vs.

Autorizzazione

Page 39: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Principi

Mantenimento del segreto

Page 40: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Tecniche

White-listing

Username + Password / Chiave

Crittografia asimmetrica

Page 41: MOOC Piattaforme digitali per la gestione del territorio - 4.4

HTTP e Sicurezza

Alice

Bob

Page 42: MOOC Piattaforme digitali per la gestione del territorio - 4.4

HTTP e Sicurezza

Alice

Bob

Trudy

Man in the middle

Page 43: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Crittografia Asimmetrica

Page 44: MOOC Piattaforme digitali per la gestione del territorio - 4.4

HTTPS

Alice

Bob

Page 45: MOOC Piattaforme digitali per la gestione del territorio - 4.4

HTTPS

Alice

Bob???

Page 46: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Autenticazione e Autorizzazione

LOGIN

OK

GET RESOURCE

RESOURCE

Page 47: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Autenticazione Federata

GET RESOURCE

RESOURCE

Page 48: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Autenticazione Federata

Page 49: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Formati eCodifiche

Page 50: MOOC Piattaforme digitali per la gestione del territorio - 4.4

L’importanza delle convenzioni

igor kisselev/Shutterstock

Page 51: MOOC Piattaforme digitali per la gestione del territorio - 4.4

L’importanza delle convenzioni

Il programma Mars Surveyor

Mars Climate Orbiter

Page 52: MOOC Piattaforme digitali per la gestione del territorio - 4.4

L’importanza delle convenzioni

Il Mars Climate Orbiter esplode in orbita

Posizionato ad un’altezza di soli 57 km invece che 140/150 km

Alcuni calcoli eseguiti usando il Sistema Imperiale (libbre-forza/secondi) e altri Tramite il Sistema Metrico Decimale (newton/secondi)

Costo totale: 328 milioni di dollari

Page 53: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Comunicazione M2M (chiusa)

42

XDFTEMKCE#°££1&»1¤é99?

Page 54: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Comunicazione M2M (aperta)

???

6*7

Page 55: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Principali formati di interscambio dati

• Binario

• Testo Libero

• CSV

• XML

• JSON

Page 56: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Binario

I dati vengono scritti come vengono memorizzati in memoria.

Un intero occuperà sempre sizeof(int)

Page 57: MOOC Piattaforme digitali per la gestione del territorio - 4.4

Testo(Plain text)

Il formato è completamente a discrezione del progettista ma basato su caratteri testuali.

CMD1;CMD2;CMD3

OK;NO;ERROR

Page 58: MOOC Piattaforme digitali per la gestione del territorio - 4.4

CSV(Comma-Separated Values)

Dati divisi in colonne, separate da virgole (o tabulazioni, o punto e virgola o altro).

Year, Make, Model, Description,Price

1997, Ford, E350, "ac, abs, moon",3000.00

1999, Chevy, VentureEE, great car,4900.00

1996, Jeep, Cherokee, MUST SELL!,4799.00

Page 59: MOOC Piattaforme digitali per la gestione del territorio - 4.4

XML(eXtensible Markup Language)

<?xml version="1.0" encoding="UTF-8"?><breakfast_menu><food><name>Belgian Waffles</name><price currency="euro" >5.95</price><description>Our famous Belgian Waffles with plenty of real maple syrup</description><calories>650</calories><image file="waffles.jpg" />

</food><food><name>French Toast</name><price currency=“dollar" >4.50</price><description>Thick slices made from our homemade sourdough bread</description><calories>600</calories>

</food><food><name>Homestyle Breakfast</name><price currency="euro" >6.95</price><description>Two eggs, bacon or sausage, toast, and our ever-popular hash

browns</description><calories>950</calories>

</food></breakfast_menu>

Page 60: MOOC Piattaforme digitali per la gestione del territorio - 4.4

HTML(Hyper Text Markup Language)

Facilmente traversabile: CSS Selector, Xpath

Goal CSS 3 XPath

All Elements * //*

All P Elements p //p

All Child Elements p > * //p/*

Element By ID #foo //*[@id=’foo’]

Element By Class .foo //*[contains(@class,’foo’)]

Element With Attribute *[title] //*[@title]

First Child of All P p > *:first-child //p/*[0]

All P with an A child Not possible //p[a]

Next Element p + * //p/following-sibling::*[0]

Page 61: MOOC Piattaforme digitali per la gestione del territorio - 4.4

JSON(JavaScript Object Notation)

{ "employees" : [{"firstName":"John", "lastName":"Doe"},{"firstName":"Anna", "lastName":"Smith"},{"firstName":"Peter", "lastName":"Jones"}

]}

Page 62: MOOC Piattaforme digitali per la gestione del territorio - 4.4

JSON(JavaScript Object Notation)

• Più sintetico di XML

<employees><employee>

<firstName>John</firstName> <lastName>Doe</lastName></employee><employee>

<firstName>Anna</firstName> <lastName>Smith</lastName></employee><employee>

<firstName>Peter</firstName> <lastName>Jones</lastName></employee>

</employees>

Page 63: MOOC Piattaforme digitali per la gestione del territorio - 4.4

GPX(GPS Exchange Format)

Page 64: MOOC Piattaforme digitali per la gestione del territorio - 4.4

GeoJSON{

"type" : "Point","coordinates": [42.2, 27.1]

}