Relazione sullo sviluppo di un tool per il crawling e la pubblicazione di Posts su Facebook

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Relazione sullo sviluppo di un tool per il crawling e la pubblicazione di Posts su Facebook"

Transcript

1 Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica tesi di laurea Relazione sullo sviluppo di un tool per il crawling e la pubblicazione di Posts su Facebook Anno Accademico 2010 / 2011 relatore Ch.mo prof. Porfirio Tramontana correlatore Ing. Domenico Amalfitano candidato Marcello Roehrssen di Cammerata matr. 534/1550

2 A chiunque mi abbia aiutato

3 Indice Introduzione 5 Capitolo 1. Facebook Cos'è Social Media Oauth protocol Graph API API di ricerca API di pubblicazione Limiti di facebook 15 Capitolo 2. Cloud Computing Cos'è Caso d'uso Vantaggi del Cloud Computing Amazon AWS RDS: Amazon Relation Database RDS: Funzionalità ELB: Elastic Load Balancing ELB: Funzionalità AAS: Amazon Auto-Scaling AAS: Funzionalità 25 Capitolo 3. Thrift Cos'è Componenti Tipi Transport Protocol Versioning Processor Sistemi a confronto 34 Capitolo 4. Progettazione e Sviluppo di FBCL Scopo di FBCL: la viralità Design di FBCL Crawler 38 III

4 4.3.1 Dominio dell'applicazione Dominio relativo a facebook Dominio relativo alla persistenza Struttura dell'applicazione Access Token Handler Searcher Searcher Thread Persister Infrastruttura Publisher Dominio dell'applicazione Photo, Album, Feed PublishTask Struttura dell'applicazione Publisher PublisherTimerTask Comunicazione tra Crawler e Publisher Struttura del WebService 54 Conclusioni 196 Sviluppi futuri 198 Bibliografia 199 IV

5 Introduzione Negli ultimi anni si è assistito ad una profonda trasformazione del web, trasformazione quanto mai necessaria per arricchire un mondo che finora non ha mostrato a pieno la sua enorme potenzialità e che sfocia nel Web 2.0. In particolar modo con il termine Web 2.0 si vuole indicare uno stato dell' evoluzione di Internet (e in particolare del World Wide Web), rispetto al passato, che comprende l'insieme di tutte quelle applicazioni online che permettono uno spiccato livello di interazione tra il sito e l'utente. La locuzione pone l'accento sulle differenze rispetto al cosiddetto Web 1.0, diffuso fino agli anni novanta, e composto prevalentemente da siti web statici, senza alcuna possibilità di interazione con l'utente eccetto la normale navigazione tra le pagine, l'uso delle e dei motori di ricerca. Questa nuova generazione di applicazioni web è comunemente conosciuta come RIA (Rich Internet Application).Con questo termine associamo quelle applicazioni web che facilitano la condivisione partecipativa di informazioni, l'interoperabilità, user-centered-design e la collaborazione sul World Wide Web. Un sito Web 2.0 consente agli utenti di interagire e collaborare tra loro in un dialogo social-media come creatori di contenuti user-generated in una comunità virtuale, a differenza dei siti web, cosidetti 1.0, dove gli utenti sono limitate alla visione passiva del contenuto che è stato creato per loro. Il core del web di nuova generazione è fondato sulla continua interazione tra client e server ottenuta tramite l'utilizzo di apposite tecnologie ad esempio Asynchronous JavaScript e XML (AJAX),Adobe Flash e Adobe Flex e Framework per JavaScript/Ajax come Yahoo UI Library,Dojo Toolkit, MooTools e jquery. In particolare AJAX deve la sua notorietà ed il suo successo all'utilizzo che ne fanno, ricordiamo i più grandi, Google per la realizzazione dei suoi applicativi web (Gmail, google-maps), Facebook per l'omonimo socialnetwork. 5

6 Queste tecnologie consentono all'utente di continuare ad interagire con la pagina web visualizzata, rendendo completamente asincrono l'invio e la ricezione di dati, senza l'utilizzo di queste tecniche l'utente avrebbe dovuto aspettare il caricamento dell'intera pagina prima di procedere con l'operazione successiva. Oltre all'indubbio miglioramento della user-experience si ottengono anche vantaggi nelle prestazioni complessive del sito. Esempi di Web 2.0 sono i siti di socialnetworking, blog, wiki, siti di video sharing, servizi di hosting, applicazioni web, mashup. È proprio sui siti di socialnetworking, in particolar modo Facebook, che verrà a concretizzarsi la seguente tesi,ovvero lo sviluppo di un applicazione in grado di poter pubblicare automaticamente i cosiddetti POST di facebook ed espandere in maniera virale l informazione contenuta in tali POST. Ovviamente questo descritto in poche parole è solo la manifestazione dell applicazione,ciò con cui l utente verrà a contatto,ma non descrive nemmeno lontanamente la complessità del processo e l uso delle tecnologie dietro tutto questo.infatti sarà argomento dei vari capitoli la spiegazione delle varie tecnologie sfruttate e poi l integrazione dell applicazione con esse. Cominceremo il primo capitolo parlando del famoso social network e soffermandoci sul suo principio di funzionamento, passando poi al Cloud Computing ossia un insieme di tecnologie che permettono l'utilizzo di risorse hardware(storage, CPU) o software distribuiti in remoto; Il termine si riferisce ad un sistema di elaborazioni le cui operazioni vengono assegnate ad un network, attraverso una serie di connessioni, servizi e software dedicati. Questo insieme di connessioni è il "Cloud". L'elaborazione a questo livello permette agli utenti di organizzare una grande quantità di dati. Ad esempio Google è attualmente il pioniere del cloud computing a causa del proprio bisogno di produrre risultati rapidi e precisi per le milioni di ricerche effettuate ogni giorno.subito dopo segue Amazon AWS,un insieme di servizi di remote computing che combinati tra loro compongono una piattaforma di cloud computing tra le più complesse ed avveniristiche tutt'oggi presenti sul piano internazionale. Passeremo infine alla trattazione di Thrift, un semplice linguaggio di definizione di interfacce (WSDL) che viene utilizzata per definire e creare servizi per numerose linguaggi di sviluppo (PHP, JAVA, etc). 6

7 Concluderemo la trattazione arrivando al nocciolo, spiegando, quindi, nel dettaglio l'fbcl: un tool sviluppato dalla Nealab Technologies SRL a scopo di marketing, adatto alla pubblicizzazione ed alla viralizzazione dei propri prodotti. 7

8 Capitolo 1 Facebook 1.1 Cos è Facebook è un servizio di social networking il cui sito web è stato lanciato nel febbraio A partire dal gennaio 2011, Facebook ha più di 600 milioni di utenti attivi. [ 5 ] [ 6 ] Gli utenti possono creare un profilo personale, aggiungere altri utenti come amici, scambiare messaggi, ricevere le notifiche automatiche quando questi aggiornano il proprio profilo ed usufruire delle varie applicazioni. Inoltre, gli utenti possono aderire a gruppi di interessi comune, divisi per luogo di lavoro, scuola o università, o qualunque altra caratteristica. Fig 1.1 Logo di Facebook Facebook deve il proprio nome al libro che viene dato agli studenti all'inizio dell'anno accademico da parte delle amministrazioni universitarie negli Stati Uniti, per aiutarli a conoscersi meglio. Gli utenti di Facebook devono registrarsi prima di utilizzare il sito, devono aver superato il 13 anno di età e devono possedere una verificata (double-opt-in). Facebook fu fondato da Mark Zuckerberg, con i suoi compagni di stanza e di studi Edward Saverin, Dustin Moskovitz e Chris Hughes, l iscrizione al sito fu inizialmente limitata dai fondatori ai soli studenti di Harvard, ma presto fu esteso ad altre scuole di Boston, alla Ivy League, ed alla Stanford University. A poco a poco l accesso 8

9 fu aperto prima a tutte le università ed ai licei ed infine a tutti coloro di età compresa tra 13 anni e oltre. 1.2 Social media I social media sono mezzi di comunicazione per l'interazione sociale, utilizzando tecniche di comunicazione altamente scalabili ed accessibili. Andreas Kaplan e Michael Haenlein definiscono i social media come "un gruppo di applicazioni basate su Internet che, fondandosi su basi ideologiche e tecnologiche del Web 2.0, consentono la creazione e lo scambio di contenuti user-generated. " 1.3 Oauth protocol Facebook Platform utilizza l OAuth protocol 2.0 per l'autenticazione e autorizzazione. Essi mettono a disposizione degli sviluppatori una serie di diverse di metodologie che possono essere utilizzate all'interno del sito web. L implementazione che il socialnetwork da al protocollo Oauth 2.0 prevede 3 diversi step user authentication app authorization app authentication Il diagramma di sequenza per completare I tre step dell'autenticazione tramite Oauth sono sintetizzati nello schema sottostante Fig. 1.2 Diagramma del funzionamento di OAuth 9

10 Nel momento in cui l utente arriva sull web-app in esame deve essere effettuato un reindirizzamento verso l url: https://www.facebook.com/dialog/oauth?client_id=[app_id]&redirect_uri=[url] Se l'utente è già connesso, verrà controllato il cookie di login memorizzato sul browser, altrimenti verrà richiesta l immissione delle credenziali di accesso. A questo punto l user authentication è conclusa e quindi passiamo allo step successivo: app authorization. Anche questo step è a carico di Facebook, esso si concretizza nella visualizzazione da parte dell utente di una finestra di dialogo (Fig ), nella quale verrà chiesto di concedere alla applicazione i privilegi per accedere ai propri dati personali. Fig1.3 - Facebook request dialog Una volta concessa l autorizzazione l utente sarà reindirizzato verso il REDIRECT_URI specificato al primo step e con esso verrà inviato l AUTHORIZATION_CODE che sarà utilizzato nello step 3. 10

11 Comincerà così l ultima fase di autenticazione dell oauth protocol. Il principio alla base dell app-authentication è quello di scambiare l authorization code con l access token; ciò avviene tramite una richiesta HTTP a facebook verso il così detto token-endpoint: https://graph.facebook.com/oauth/access_token? client_id=[app_id]&redirect_uri=[url]&client_secret=[app_secret]&code=[authorization_code] Se la richiesta dovesse andare a buon fine la risposta sarebbe un oggetto di tipo JSON contenente l access token da noi desiderato (Fig 1.3.1) Fig. 1.4 Facebook access token response 1.4 Graph API Il core delle Facebook API sono le Graph API,esse rappresentano una visione semplice e coerente del grafico sociale di Facebook, ritraendo in modo uniforme gli oggetti nel grafico (ad esempio, persone, foto, eventi, e pagine ) e le connessioni tra essi (ad esempio, i rapporti tra amici, contenuti condivisi, tag e foto ). Ogni oggetto nel grafico sociale ha un ID univoco. È possibile accedere alle proprietà di un oggetto,tramite una richiesta verso https://graph.facebook.com/[id]. Ad esempio, la pagina ufficiale della piattaforma di Facebook ha id , quindi potremo recuperare l'oggetto interrogando l'url https://graph.facebook.com/ , ottenendo come risposta 11

12 { } "name": "Facebook Platform", "type": "page", "website": "http://developers.facebook.com", "username": "platform", "founded": "May 2007", "company_overview": "Facebook Platform enables anyone to build...", "mission": "To make the web more open and social.", "products": "Facebook Application Programming Interface (API)...", "fan_count": , "id": , "category": "Technology" Le Graph API in quanto tali, consentono di accedere facilmente a tutte le informazioni pubbliche su un oggetto. Per esempio, https://graph.facebook.com/marcello2 (marcello roehrssen) restituisce tutte le informazioni pubbliche relative a Marcello: il nome utente, cognome, foto del profilo eccetera. Per ottenere ulteriori informazioni su un utente, bisogna prima ottenere il suo permesso, è necessario, quindi, ottenere un access token (cfr. 1.3). Dopo aver ottenuto il token per l'utente, è possibile eseguire le richieste di autorizzazione per conto di tale utente, ottenendo il relativo oggetto graph: { } "id": " ", "name": "Marcello Roehrssen", "username": "marcello2", "first_name": "Marcello", "last_name": "Roehrssen", "link": "http://www.facebook.com/marcello2", "gender": male, "locale": it_it Analizziamo adesso due specifiche API che rappresentano le colonne portanti del progetto FBCL API di ricerca È possibile eseguire la ricerca su tutti gli oggetti pubblici nel grafo sociale tramite richieste 12

13 HTTP a https://graph.facebook.com/search. Il formato è: https://graph.facebook.com/search?q=[query]&type=[tipo_oggetto] Facebook supporta ricerche per i diversi tipi di oggetti: Post: https://graph.facebook.com/search?q=[chiave]&type=post Persone: https://graph.facebook.com/search?q=[nome]&type=user Pagine: https://graph.facebook.com/search?q=[nome]&type=page Eventi: https://graph.facebook.com/search?q=[evento]&type=event Gruppi: https://graph.facebook.com/search?q=[gruppo]&type=group Luoghi: https://graph.facebook.com/search?q=[luogo]&type=location Checkins: https://graph.facebook.com/search?q=[checkin]&type=checkin Durante la ricerca di post pubblico o post su un wall di un particolare utente, è possibile paginare i risultati utilizzando i parametri, until, since e limit. I primi due accettano unixtimestamp API di pubblicazione L'utilizzo di questa API consente di publicare sul wall di un utente o di una pagina fan, un oggetto di tipo POST di seguito analizzeremo in dettaglio come, tale oggetto è strutturato nelle sue parti principali (vedi tabella seguente) 13

14 Nome Descrizione Permessi id Identificativo univoco del post read_stream from Informazioni sull'utente/app che ha creato il post read_stream message Il messaggio read_stream picture Se disponibile, link all'immagine read_stream link Il link associato al post read_stream name La label del link read_stream caption La Caption del link read_stream description Descrizione che appare subito sotto il link read_stream source Se disponibile, url al video flash/al contenuto multimediale read_stream icon Un link all'icona identificatrice del link read_stream Application actions Un id rappresentante l'applicazine che ha publicato il post Una lista delle azioni possibili sul post (commenti, condivisioni, like read_stream read_stream privacy Impostazioni di visibilità del post Publico created_time Timestamp di crezione read_stream updated_time Timestamp dell'ultimo commento read_stream targeting Target di visualizzazioni del post manage_pages Il risultato visualizzato dall'utente sul proprio wall avrà, quindi questo aspetto: 14

15 Fig Facebook post Ai fini del corretto funzionamento della nostra applicazione è di fondamentale importanza porre l'accento sulle varie connessioni che l'oggetto di tipo Facebook post offre agli sviluppatori, presentiamo di seguito una tabella riassuntiva di tali connessioni: Name Description Permissions comments Tutti i commenti raltivi al post Publico likes Tutti i like relativi al post Publico Per pubblicare, quindi, un post sul wall di un utente, è necessario esegure una chiamata HTTP utilizzando il verbo POST all'end point offerto dalla Facebook plattform, specificando nella richiesta tutti i dati necessari alla publicazione: 15

16 1.4.3 Limiti alle chiamate Le API di facebook, purtroppo, non sono immuni a controlli sul flusso, esistono, infatti, limiti al numero di chiamate concesse ad ogni access-token distribuito dal social network. Uno dei principali problemi dei Facebook Developers è infatti, ovviare a questo limite, cercando di ottenere più Access-Token possibile nel più breve tempo possibile; in questa maniera è possibile sostituire di volta in volta gli access-token consumati con quelli nuovi, aspettando, poi che i vecchi vengano di nuovo validati e siano di nuovo disponibili per effettuare chiamate. Della soluzione di questo problema ne parleremo approfonditamente nel capitolo 4; nel quale analizzeremo il sitema della sisncronizzazione e di come il pacchetto java.util.concurrent possa aiutare nella risoluzione. 16

17 Capitolo 2 Cloud computing Una delle tecnologie più affascinanti utilizzate per la realizzazione del progetto è stata quella del Cloud computing. Esso rappresenta una svolta nel modo di concepire i web service, e la System administration; laddove in passato era necessario appoggiarsi a macchine fisiche qualora si fosse voluto creare un sito web, ora ci si può appoggiare alla così detta nuvola (cloud, appunto). L'introduzione del clud nel modo di progettare le web application ha risolto alcuni dei più gravi problemi che i progettisti sono tenuti ad affrontare, il più importante dei quali è la scalabilità. Di seguito riportiamo una panoramica generale sulla vera natura del cloud, ed approfondire in particolar modo uno dei fornitori di tale servizio: Amazon AWS. 2.1 Cos'è In informatica, con il termine cloud computing si intende un insieme di tecnologie che permettono l'utilizzo di risorse hardware(storage, CPU) o software distribuite in remoto. Nonostante il termine sia piuttosto vago e sembri essere utilizzato in diversi contesti con significati differenti tra loro, si possono distinguere tre tipologie fondamentali di Cloud Computing: SaaS (Software as a Service) - Consiste nell'utilizzo di programmi in remoto, spesso attraverso un server web. Questo acronimo condivide in parte la filosofia di un termine oggi in disuso, ASP (Application service provider). PaaS (Platform as a Service) - È simile al SaaS, ma, invece che uno o più programmi singoli, viene eseguita in remoto una piattaforma software che può 17

18 essere costituita da diversi servizi, programmi, librerie, etc. IaaS (Infrastructure as a Service) - Utilizzo di risorse hardware in remoto. Questo tipo di Cloud è quasi un sinonimo di Grid Computing, ma con una caratteristica imprescindibile: le risorse vengono utilizzate su richiesta al momento in cui un cliente ne ha bisogno, non vengono assegnate a prescindere dal loro utilizzo effettivo. Fig Diagramma logico di una rete Cloud Computing Il termine cloud computing si differenzia da grid computing che è un paradigma orientato al calcolo distribuito, e in generale, richiede che le applicazioni siano progettate in modo specifico. 2.2 Caso d'uso Il paradigma del cloud computing prevede tre attori distinti: Fornitore di servizi Offre servizi (server virtuali, storage, applicazioni complete) generalmente secondo un modello "pay-per-use"; 18

19 Cliente amministratore Sceglie e configura i servizi offerti dal fornitore, generalmente offrendo un valore aggiunto come ad esempio applicazioni software; Cliente finale Utilizza i servizi opportunamente configurati dal cliente amministratore. In determinati casi d'uso il cliente amministratore e il cliente finale possono coincidere. Ad esempio un cliente può utilizzare un servizio di storage per effettuare il backup dei propri dati, in questo caso il cliente finale provvede a configurare e utilizzare il servizio. Di seguito riportiamo lo schema del caso d'uso sopradescritto Fig caso d'uso tipico del cloud computing Il Cliente amministratore può decidere di offrire i propri servizi attraverso vari layer: Client Consiste per lo più in un hardware e/o un software che è sito su una macchiuna cloud virtuale, e che senza il supporto cloud non avrebbe senso di esistere, esempi di questo layer possono essere cloud desktop, desktop remoti o macchine adibite all'esecuzione di tak utili per la sopravvivenza di software 19

20 standalone Application Le cloud application servicices o Software as a Service SaaS eliminano la necesità, da parte dell'utente di installare sulla propria macchina il software desiderato, rendendo così questo genere di applicazioni disponibili anche ad utenti con macchine non proprio di ultima generazione. Esempi di applicazioni di questo genere sono : Applicazioni per la gestione di attività commerciali Applicazioni di front-end per l'interazione attivitàcommerciale-cliente Plattform Il cliente amministratore fornisce i servizi di una piattaforma spondendo una interfaccia di quel servizio, riducendo così, costi di manutenzione remota e la necessità di fornire periodicamente patch per la risoluzione di bug. Infrastructure il cliente amministratore fornisce servizi di infrastrutttura come la memorizzazione su storage fisici, gestione di server per la cache, o più semplicemente monitoring di macchine fisiche e virtuali 2.3 Vantaggi del Cloud Computing Abbiamo già accenato ai vantaggi del cloud computing e di come risolva il problema della scalabità del software web, ma i vataggi che offre vanno ben oltre questo ecco nel dettaglio alcuni degli innumerevoli benefici Agilità: migliora drasticamente la capacità dell'utente di modificare l'infrastruttra secondo le necessità Affidabilità: effettuando molteplici deploy ridondanti su macchine diverse si la disaster recovery diventa più semplice Scalabilità: tramite le API on-demand è possibile aumentare l'infrastruttura senza 20

21 che gli utenti debbano ingegnarsi per gestire i picchi di traffico Performance: queste sono monitorare dal fornitore del servizio, utilizzando stesso le interfacce di sistema (trough-put, utilizzo di CPU, memoria etc) Manutenibilità: i servizi cloud hanno un tempo di manutenzione molto basso, in virtù del fatto che non hanno bizsogno di essere installi e configurati, lasciando così alle aziende il solo problema della produttività 2.4 Amazon AWS Amazon AWS è un insieme di servizi di remote computing che insieme compongono una piattaforma di cloud computing, è resa disponibile su Internet da Amazon.com. Il più rilevanti e noti di questi servizi sono Amazon EC2 e S3, RDS, ELB, AAS. I servizi rilevanti ai fini della nostra applicazione sono: RDS Amazon Relational Database ELB Elastic Load Balancing AAS Amazon Auto Scalar RDS: Amazon Relational Database Amazon Relational Database Service (Amazon RDS) è un servizio web che rende facile da configurare, gestire e scalare un database relazionale nel cloud. Esso fornisce capienza e costi efficienti, mentre la gestione in termini di tempo e l'attività di amministrazione del database è completamente ridimensionabile, lasciando libero l'utente di concentrarsi sul proprio business e sull' applicazione stessa. Amazon RDS fornisce l'accesso alle funzionalità di un ambiente MySQL o Oracle. Ciò significa che i sorgenti, le applicazioni e le strumentazioni che tuttoggi sono utilizzate con i database esistenti, possono essere riutilizzati con RDS. Amazon RDS patcha automaticamente il software ed esegue il backup del database consentendo di conservare i dati per un periodo definito dall'utente permettendo così un ripristino in un point-in- 21

22 time, è possibile, inoltre, tramite una singola chiamata API, beneficiare della flessibilità di RDS scalando le risorse di elaborazione o la capienza dell'hard drive associati all' istanza del database relazionale. Un' altra funzionalità interessante fornita da RDS è quello della Read-Replica che consente la creazione, senza la necessità di configurare una macchina slave, di una copia del database originale in continua sincronizzazione. Fig Funzionamento della read-replica RDS: Funzionalità Amazon RDS fornisce diverse funzionalità di seguito riportiamo quelle principali Pre-configured Parameters: le istanze Amazon RDS sono pre-configurate con un set di parametri ed impostazioni appropriate per la relativa classe dell'istanza selezionata. Si può semplicemente lanciare una istanza di MySQL o OracleDB e connettere l'applicazione, in pochi minuti senza 22

23 configurazioni aggiuntive. Se si desidera un ulteriore controllo, è possibile aggiungere, attraverso le API, un nuovo set di parametri, oppure modificare quello corrente Automatic Software Patching: Amazon si farà carico di tenere il sofware di mysql o oracle sempre aggiornato, anche questo aspetto è configurabile tramite API Automated Backup: la funzione di backup automatizzato diamazon RDS consente il ripristino dell'istanza del DB in un determinato momento. Amazon RDS fa il backup del database e dei registri delle transazioni e li immagazzina per un periodo di tempo specificato dall'utente. Questo consente di ripristinare il DB di istanza per ogni secondo durante il periodo di detenzione,fino agli ultimi cinque minuti. Replication: Amazon RDS per MySQL offre due funzionalità di replica distinte ma complementari: implementazioni multi-az e repliche in lettura che possono essere utilizzate insieme per ottenere una maggiore: disponibilità di database, protezione dei più recenti aggiornamenti dei dati contro interruzioni non pianificate, e di scalare oltre i limiti le capacità di una singola istanza per carichi di lavoro del database troppo leggeri o troppo pesanti ELB: Elastic Load Balancing Elastic Load Balancing distribuisce automaticamente il traffico in entrata all'applicazione tra più istanze di Amazon EC2. Esso consente di aumentare ulteriormente la fault tollerance dell'applicazione, bilanciando il carico sulle singole macchine in risposta al traffico in entrata. Elastic Load Balancing rileva le istanze unhealty all'interno di un pool e reindirizza automaticamente il traffico verso le istanze sane fino a quando lo stato di quelle precedentemente scartate non sia stato ripristinato. 23

24 2.4.4 ELB: Funzionalità Amazon ELB fornisce diverse funzionalità di seguito riportiamo quelle principali Load Balancing: ELB è in grado di redirezionare il traffico fra più istanze anche appartenenti a zone diverse Unhealthy Detection: ELB individua le istanze unhealthy ed invia un report alla console di gestione e le esclude dal bilanciamento Stick User Session: ELB è in grado di collegare la sessione di un utente ad una singola istanza EC2 che si trova collegata a Load Balancer Fig. 2.4 Autoscaling su un cluster EC AAS: Amazon Auto Scaling L'autoscaler consente al fornitore del servizio web di scalare la capacità del proprio cluster EC2 verso l'alto o verso il basso in accordo alle condizioni predefinite dall'utente stesso. 24

25 Con l'autoscaler ci si può assicurare che il numero di istanze EC2 attualmente in uso aumenti nel caso ci sia un picco di traffico, o diminusca nel caso in cui ci sia un calo. Esso è particolarmente raccomandato per quello specifico tipo di applicazioni che subiscono forti variazioni di traffico nell'arco della giornata AAS: Funzionalità Amazon AAS fornisce diverse funzionalità di seguito riportiamo quelle principali Auto Scaling: AAS permette di aumentare il numero di istanze del pool di EC2 proporzionalmente ai trigger impostati dall'utente; i Trigger possono essere attaccati a qualunque dei parametri utilizzati per il monitoring dell'istanza: Utilizzo CPU, utilizzo memoria, troughtput, network in, network out etc. Le API REST di Amazon permettono un semplice controllo di tali trigger. Shed Unneeded EC2: mette da parte automaticamente le istanze non funzionanti, se una istanza viene marcata come unhealthy essa viene staccata dall'autoscaling-group e ne viene lanciata un'altra con la stessa configurazione Task Scaling: è possibile definire punti nel tempo nei quali l' auto scalar deve aumentare il numero di istanze anche se i trigger non vengono lanciati, ad esempio nel caso in cui debba partire un cronjob. 25

26 Fig. 2.5 Caso d'uso di AAS con trigger su network out 26

27 Capitolo 3 Thrift Thrift è sia una software library che un insieme di strumenti di generazione di codice sviluppate da Facebook per accelerare lo sviluppo e l'attuazione di servizi di back-end efficienti e scalabili. Il suo obiettivo primario è quello diconsentire una comunicazione efficiente ed affidabile attraverso linguaggi di programmazione differenti astraendo le porzioni di ogni lingua, che tendono a richiedere la maggior personalizzazione di una libreria comune che è implementata in ogni linguaggio. In particolare, consente agli sviluppatori di definire i tipi di dati e le interfacce dei servizi in un unico linguaggio neutro e di generare tutto il codice necessario a costruire i client RPC e server. In questo capitolo analizzeremo le scelte progettuali che sono state fatte in Thrift, così come alcuni dei più interessanti dettagli di attuazione. 3.1 Cos'è Poiché il traffico di Facebook e la struttura di rete sono in costante aumento vi è una ulteriore richiesta di risorse per operazioni da svolgere sul sito (ad esempio ricerca, selezione e consegna degli annunci,la registrazione degli eventi), rendendo il sistema LAMP inadatta a soddisfare tale aumento di richieste. Nella implementazione dei servizi di facebook, sono stati scelti vari linguaggi di programmazione per ottimizzare la giusta combinazione di prestazioni, facilità e velocità di sviluppo e la disponibilità di librerie esistenti, ecc. In generale, sono stati scelti i migliori strumenti e implementazioni disponibili sui vari standardi offerti dal panorama ingegneristico attuale accettando a malincuore i loro limiti intrinsechi. 27

28 Thrift combina un software indipendente dal linguaggio di programmazione scelto per il progetto ed un motore di generazione di codice che trasforma una semplice interfaccia di definizione dati in linguaggio client e server tramite librerie di Remote-Procedure-Call (RPC). La scelta di generare codice statico su un sistema dinamico permette di creare codice convalidato che può essere eseguito senza la necessità di alcun strumento avanzato di introspetiva di controllo. Esso è inoltre progettato per essere semplice per sviluppatore, che può definire tutte le strutture dati necessarie per un servizio complesso in un unico breve file. 3.2 Componenti Nel valutare le varie difficoltà che ritroviamo in una comunicazione attraverso linguaggi differenti sono stati identificati diversi componenti chiave: Tipi: Nasce dalla necessità che uno sviluppatore possa essere in grado di scambiare oggetti più o meno complessi in maniera del tutto trasparente. Se un programmatore java vuole scambiare un oggetto di tipo List<T> deve poterlo fare senza scrivere codice di controllo, o senza entrare nei sottolivelli che non gli competono. Trasporto: il livello di trasporto dovrebbe essere anch'esso del tutto trasparente. Lo sviluppatore non deve interessarsi se il protocollo di trasporto è implementato tramite Filesistem, socket o TCP Protocollo: al fine della comunicazione non è importante neanche se lo sviluppatore conosca il protocollo di trasporto, essere può essere implementato tramite XML, o protocollo binario senza che il developer se ne renda conto. Versioning: Per lo sviluppo di un servizio robusto è necessario che gli sviluppatori 28

29 utilizzanti il client ed il server siano in grado di modificare le firme delle RPC, o di modificare un'attributo di un oggetto senza che il servizio si interrompa Processors: Infine deve essere possibile che gli sviluppatori implementino le chiamate RPC come meglio credono, unico vincolo deve essere l'interfaccia del servizio definito nell' IDL Tipi L'obiettivo del sistema di tipo di Thrift è quello di consentire ai programmatori di sviluppare utilizzando tipi completamente nativi, non importa quale linguaggio di programmazione si stia utilizzano. In base alla progettazione, il sistema di tipo Thrift non introduce alcun tipo di dinamica particolare o di oggetti wrapper. Esso inoltre non richiede che allo sviluppatore di scrivere codice per l'oggetto che si sta serializzando o per il trasporto di tale oggetto. L'IDL Thrift (Interface Definition Langauge) da la possibilità agli sviluppatori di definire le proprie strutture dati con la quantità minima di informazioni supplementari. Thrift fornisce una piccola serie di tipi base: Bool: valore booleano Byte: byte con segno i16: 16-bit con segno i32: 32-bit con segno i64: 64-bit con segno string: testo o stringa binaria inoltre fornisce anche la possibilità di definire tipi più complessi come strutture o eccezzioni o anche container di tipi semplici o complessi. Il tipo più interessante da analizzare è il tipo service questo è il vero cuore dell'idl, dove viene definita l'interfaccia di comunicazione tra il client ed il server. 29

30 I Service vengono definiti utilizzando i tipi di Thrift. Definizione di un servizio è semanticamente equivalente alla definizione di una interfaccia (o una classe astratta virtuale pura) in programmazione ad oggetti. Il compilatore Thrift genera client completamente funzionale e stub server che implementano l' interfaccia. I servizi sono definiti come segue: un esempio: Tranport Una scelta chiave di design nella realizzazione di Thrift è stato quello disacoppiare lo strato trasporto dal livello di generazione del codice. Anche se Thrift viene in genere utilizzato in cima allo stack TCP/ IP con lo streaming socket come strato di base di comunicazione, non vi era alcun motivo valido per creare quel vincolo nel sistema. Il compromesso di prestazioni sostenute da uno strato astratto di I/O è irrilevante rispetto al costo effettivo di I/O. Fondamentalmente, il codice generato da Thrift ha solo bisogno di sapere come leggere e scrivere dati. L'origine e la destinazione dei dati è 30

31 irrilevante, ma può essere una socket, un segmento di memoria condivisa, o un file sul disco locale Protocol Una seconda grande astrazione di Thrift è la separazione delle Data Structure dalla rappresentazione di trasporto. Thrift impone una certa struttura di messaggistica durante il trasporto di dati, ma esso è agnostico alla codifica del protocollo in uso. Cioè, non importa se i dati sono codificati in formato XML,leggibile ASCII, o un formato binario denso fino a quando i dati supportano un insieme fisso di operazioni che permettono di essere deterministicamente lette e scritte dal codice generato. Facebook ha implementato e distribuito un protocollo efficiente dello spazio binario che viene utilizzato dalla maggior parte dei servizi di back end. In sostanza, scrive tutti i dati in un formato flat binary. Gli interi vengono convertiti in network-byte-order, le stringhe sono prefissate con i loro lunghezza in byte, e tutti i messaggi e le intestazioni dei fields sono scritti utilizzando costrutti per la serializzazione primitivi. I nomi di stringa per i campi vengono omessi quando si utilizza codice generato poichè gli identificatori di campo sono sufficienti Versioning Thrift è robusto di fronte al versioning ed ai cambiamenti di definizione dei dati. Questo è fondamentale per consentire il rollout a run time di modifiche ai servizi distribuiti. Il sistema deve essere in grado di supportare la lettura di vecchi dati dai file di registro, così come le richieste dei client out-of-date ai nuovi server, e viceversa. Il versioning in Thrift viene attuato tramite identificatori di campo. Il campo di intestazione per ogni membro di una struct in Thrift è codificato con un campo identificativo univoco. La combinazione di questo identificatore di campo e il suo identificatore di tipo viene utilizzata per identificare in modo univoco il campo. Il 31

32 linguaggio di definizione Thrift supporta l'assegnazione automatica degli identificatori di campo, ma è buona pratica di programmazione specificare gli identificatori di campo esplicitamente. Gli identificatori sono specificati come segue: Ci sono quattro casi in cui possono verificarsi discordanze versione. 1. Aggiunto campo, vecchio client, server nuovo. In questo caso, il vecchio client non invia il nuovo campo. Il nuovo server riconosce che il campo non è impostato, e implementa il comportamento predefinito per le richieste di out-of-date. 2. Rimosso campo, vecchio client, server nuovo. In questo caso, il client invia il vecchio campo rimosso. Il nuovo server ignora semplicemente. 3. Aggiunto il campo, nuovo client, server precedente. Il nuovo client invia un campo che il vecchio server non riconosce. Il vecchio server ignora semplicemente e processa normalmente. 4. Rimosso campo, nuovo client, server precedente. Questo è il caso più pericoloso, in quanto il vecchio server è improbabile che abbia un comportamento adeguatamente implementato di default per il campo mancante. In questa situazione è lo sviluppatore che implementa il Server a dover decidere il comportamento di quest'ultimo. 32

33 3.2.5 Processor L'ultima ma non meno importante core interface di Thrift è quella del Tprocessor, probabilmente il più semplice dei costrutti: L'idea progettuale chiave qui è che i sistemi complessi possono fondamentalmente essere suddivisi in agenti o servizi che operano su ingressi e uscite. Nella maggior parte dei casi, non vi è in realtà un solo ingresso e una uscita (un client RPC) che ha bisogno di essere gestita. Quando un servizio è definita, thrift genera un'istanza TProcessor in grado di gestire richieste RPC a tale servizio, utilizzando pochi helpers. La struttura fondamentale (illustrato in pseudo-c + +) è il seguente: 33

34 Dal file di definizione Thrift, generiamo l'interfaccia virtuale del servizio. Una classe client viene generata, essa implementa l'interfaccia e utilizza due istanze TProtocol per eseguire le operazioni di I/O. Il processore generato implementa l'interfaccia TProcessor. Il codice generato contiene tutta la logica per gestire le chiamate RPC tramite la chiamata process(), e prende come parametro un'istanza dell'interfaccia del servizio, implementato dallo sviluppatore dell'applicazione. 3.3 Sistemi a contronto In tutto il capitolo abbiamo discusso e descritto delle dinamiche di thrift analizzando gli aspetti principali dello stack che offre; in questo paragrafo analizzeremo brevemente perchè Thrift è una buona scelta progettuale, nel caso in cui ci si debba confrontare con dinamiche di progetto, soggette a repentini cambiamenti, di specifiche: I seguenti sono sistemi software analoghi a Thrift. Ciascuno è brevemente descritte: SOAP. XML-based. Progettato per i servizi web tramite HTTP, eccessivo overhead di parsing XML. CORBA. Relativamente completo, debatably sovradimensionatie dei pesi massimi. Comparabilmente ingombrante installazione del software. COM. Abbracciato al Software principalmente nel client Windows. Non è una soluzione completamente aperto. Pillar. Leggero e ad alte prestazioni, ma delle versioni mancanti e astrazione. Protocollo di buffer. Closed-source, di proprietà di Google. 34

35 Capitolo 4 Progettazione e sviluppo di FBCL FBCL è un acronimo ideato alla nealab tecnologies e sta per Facebook Crawler. Abbiamo già parlato di Facebook e della sua enorme user-base, abbiamo affrontato tematiche teniche relative al protocollo di comunicazione utilizzato (cfr cap1) ed abbiamo descritto le sua API principali. In azienda ci si è chiesto: come poter sfruttare al meglio la base utenza di Facebook?. La risposta risiede proprio nell' FBCL. 4.1 Scopo di FBCL: la viralità. Nata da una esigenza di marketing L'applicazione FBCL permette di publicare in automatico sulle bacheche degli utenti di facebook I POST più virali. Per capire meglio il concetto di virale poniamo un caso d'uso molto semplice: data l'applicazione X con almeno iscritti (gruppo A), poniamo che ognuno degli iscritti abbia mediamente 200 amici su facebook. Pubblicare sulla bacheca del gruppo A alcuni dei POST più condivisi di Facebook significa attirare l'attenzione di questi utenti sul collegamento fatto all'applicazione X; questi utenti commenteranno e/o condivideranno il POST, mostrando tale collegamento ai loro amici. Fig. 4.1 Esempio di notifica generata da commento ad un post di FBCL 35

36 che a loro volta ri-commenteranno o ri-pubblicheranno entrando così in un circolo virtuoso il cui fulcro è l'applicazione collegata al POST Questo semplice processo viene descritto in maniera molto più chiara dall'immagine (fig 4.2) Fig. 4.2 diagramma di funzionamento della viralità 4.2 Design di FBCL Per ottenere l'effetto descritto nel paragrafo precedente si è dovuta progettare una applicazione subito scalabile, che riuscesse ad immagazzinare una enorme mole di dati con un'alta fault tollerance. Gli aspetti cruciali dell'applicazione sono quindi: Retrive dei dati da Facebook Invio del POST a Facebook 36

37 Per aumentare la fault tollerance il progetto FBCL è stato suddiviso in due moduli completamente distinti tra loro: Il Crawler con il compito di fare query a Facebook cercando di ottenere i migliori post Il Publisher con il compito di pubblicare I post recuperati dal Crawler sui wall di Facebook. Il flusso dell'applicazione è il seguente: Il Crawler individua i POST da pubblicare e li invia al publisher, quest'ultimo li metterà in coda in attesa di essere pubblicati Fig. 4.3: Design dell'applicazione in questo capitolo affronteremo I due componenti dell'applicazione singolarmente 37

38 4.3 Crawler Da non sottovalutare l'importanza della scelta dei post e il tempismo con cui essi vengono pubblicati: un contenuto che in questo momento è virale potrebbe non esserlo più nell'arco di poco tempo e quindi risultare inutilizzabile se non addirittura deleterio; per ovviare a questo problema si è pensato di trattare il componente per la ricerca dei POST in maniera del tutto isolata rispetto al Publisher: da questa esigenza progettuale nasce il Crawler con la responsabilità di ottere un access-token valido (cfr cap2) di cercare i POST tramite le API di Facebook (cfr cap2 ) e di individuare tra questi, quelli più condivisi. Abbiamo già parlato delle API di Facebook, di come interagire con loro e di come ottenere i dati di nostro interesse; quindi adesso andremo ad analizare il dominio dell'applicazione, ed i vari componenti: AccessToken handler Searcher SearcherThread Persister Dominio dell'applicazione Le entità in gioco sono svariate e di vario genere, alcune sono relative alla comunicazione con facebook, altre alla semplice persistenza dei dati nel database. Questo ha portato alla suddivisione del dominio in due sotto-domini più semplici Dominio relativo a Facebook Dominio relativo la persistenza analizziamoli nel dettaglio, cominciamo dal primo Dominio Relativo a Facebook Le entità in gioco sono due: 38

39 Post: questo oggetto ha il compito di tenere traccia dei singoli POST che facebook restituisce in seguito ad una chiamata all'api Search ha diversi attributi di seguito rimportiamo una tabella riassuntiva di tali attributi e dei loro tipi. Nome Parametro Tipo Visiblità Descrizione link String private Tiene traccia del link univoco assegnatogli da facebook linkname String private Nome simbolico del link linkdescription String private Descrizione del Post caption String private Caption picture String private Link all'immagine createtime Date private Data di creazione updatetime Date private Data di ultimo commento/like countlikes Long private Numero di like assegnati al post countcomments Long private Numero di commenti assegnati al post type String private Tipo di post locale String private Locale (Es. it_it, en_us, etc) AccessToken: questo oggetto tiene traccia di tutti gli access-token che l'applicazione ha utilizzato e del numero di richieste effettuate cercando così di evitare, per quanto possibile di avvicinarsi al limite imposto da facebook per le chiamate (cfr cap 2 ) di seguito riportiamo una tabella riassuntiva della struttura di tale oggetto. Nome Tipo Visibilità Descrizione accesstoken String private È l'access token restituito da facebook dopo l'autenticazione oauth(cfr cap2 ) distribuited Integer private Numero di interrogazioni a facebook effettuate con l'accesstoken associato valid Boolean private Flag utile a marcare la (non)validità del relativo access-token 39

40 Dominio relativo la persistenza Le entità in gioco in questo caso tre: Configuration: Questo oggetto rappresenta l'insieme delle configurazioni che vengono utilizzate in fase di boostrap dell'applicazione: locale da utilizzare per la ricerca dei POST, locazione su file system del file del vocabolario utilizzato per fare la ricerca (cfr cap2 ) Nome Tipo Visiblità descrizione inilocation String private Path su file sistem dei file di vocabolario locale String private Locale del dizionario utilizzato IniWords List<String> private Lista delle chiavi di ricerca estrapolate dal file di configurazione Sharer: dalle chiamate a facebook, il crawler ottiene solo dati grezzi, sui quali poi dovrà essere effettuata una operazione di marshalling, purtroppo facebook non riporta il numero di volte in cui un POST è stato condiviso; questa informazione dovrà essere estrapolata dall'enorme mole di dati che il socialnetwork restituirà. Nome Tipo Visibilità Descrizione link String private Link univoco assegnato da facebook date Date private Data in cui è avvenuta la condivisione message String private Eventuale messaggio custom associato alla condivisione FinalPost: esso è un oggetto che serve da collante tra gli sharer ed i Post 40

41 Nome Tipo Visibilità Descrizione post Post private Oggetto di tipo Post sharers List<Sharer> private Lista contenente tutte le condivisioni avvenute sul relativo Post Di seguito riportiamo l'uml associato a tale dominio. Fig 4.4 Illustrazione del dominio Struttura dell'applicazione Abbiamo analizzato le entità utilizzate dall'applicazione. Analizzeremo adesso il modo in cui è organizzata e implementata la logica di busness: AccessTokenHandler Searcher SearcherThread Persister 41

42 AccessTokenHandler Questo oggetto è uno degli oggetti più interessanti di tutto il progetto, è nato per la gestione e la distribuzione sincronizzata degli access-token presenti nell'applicazione, in maniera tale che ogni thread di ricerca post possa usufruire di un accesso token valido, utile per fare chiamate a facebook. È un oggetto singleton che viene instanziato la prima volta in fase di bootstrap dell'applicazione. Fig. 4.5 costruttore della classe AccessTokenHandler Al momento dell'invocazione l'oggetto è privo di ogni Oggetto accesstoken questi saranno costruiti stesso dall'handler tramite il metodo: public void setaccesstokens(list<string> accesstokens); Nome Parametro accesstokens Descrizione Lista contenente tutti gli access-token che dovranno essere utilizzati dal crawler. Essi sono letti da un file di configurazione specificato in fase di bootrap dell'applicazione 42

43 Esso accetta in ingresso una lista di string rappresentanti i vari accesstoken di facebook che noi avremo precedentemente salvato in un apposito file di configurazione. Altro metodo interessante è: public synchronized String getaccesstoken(string oldaccesstoken) Nome Parametro oldaccesstoken Descrizione Vecchio access-token utilizzato dal thread di ricerca, verrà marcato come non valido l'handler comparerà il vecchio accesstoken con il nuovo prima di distribuirne uno al richiedente in caso di validità marcherà il vecchio come non valido e scorrerà la lista di tutti gli accesstoken presenti in memoria fino a quando non ne troverà uno valido da distribuire. Fig. 4.6 Scelta di un nuovo access-token Searcher La classe searcher è quella che effettivamente procede con la ricerca dei dati da facebook, è interessante perchè utilizza le Facebook java API. Essa rappresenta un wrap alle api di ricerca di facebook, ne presentiamo la firma. 43

44 public List<Post> post(string q, String locale,string limit, String since, String until) Nome parametro q locale limit since until Descrizione È la chiave utilizzata per effettuare la ricerca Può essere un qualunque locale ad esempio it_it, en_us, en_uk Numero massimo di post da farsi restituire Data nel formato YYYY-mm-ddTHH:ii:ssZ rappresenta il punto nel tempo nel quale cominciare a cercare i post Data nel formato YYYY-mm-ddTHH:ii:ssZ rappresenta il punto nel tempo fino al quale cercare i post ed ecco la chiamata a facebook per la ricerca. Fig. 4.7 Chiamata a Facebook Searcher Thread L'oggetto Searcher Thread è quello che deve gestire le risposte di Facebook e deve farne il marshalling. Esso implementa l'interfaccia Callable<T> che ha un semplice metodo, <T> call(), la cui esecuzione effettua un'attività asincrona e restituisce il risultato definito come parametro dell'interfaccia. Essa è inclusa nel package java.util.concurrent, il vataggio 44

45 principale dell'utilizzare questo tipo di interfaccia (o di package) sta nel fatto che la gestione della concorrenza è effettuata all'interno della classe stessa. L'implementazione della classe, però, ha ben poco di concorrente, ciò di cui si ha bisogno è di un altro oggetto appartenente allo stesso package: java.util.concurrent.executoservice. Vediamo come viene instanziato il thread Fig Instanziazione di SearchThread analizziamo, adesso, il suo funzionamento: Esso agisce sostanzialmente in due fasi: richiesta a facebook per ottenere i risultati e marshalling dei dati. Prima fase: Fig FQuery per ottenere i post sopra vediamo una invocazione al metodo post dell'oggetto Searcher preceduto dai vari calcoli per trovare il lasso di tempo giusto nel quale cercare il POST 45

46 Seconda fase: Fig Marshalling dei dati in arrivo da facebook Qui la logica è leggermente più complessa: innannzi tutto vengono instanziati due mapper, cioè due oggetti con il compito di mappare la risposta di facebook su entità apparteneti al dominio. Quindi si procede con l'analisi dei dati di risposta Post per Post, vengono aggiunti alla lista Persister Per rendere tutto più performante è necessario parallelizzare il più possibile le operazioni sui post, come ad esempio la persistenza sul database, per questo è stato creato questo componente che ha la responsabilità di persistere i dati su un supporto RDS-MYSQL. Esso implementa l'interfaccia Runnable e viene configurato al momento dell'istanzazione passandogli l'host sul quale dovrà essere effettuata la query di insert. 46

47 Fig Persistenza dei dati Infrastruttura Per ogni ciclo di ricerca il crawler recupera 400 post ogni 5 minuti; una mole di dati molto grande, che necessita di una infrastruttura adeguata. Quindi per il crawler è stato predisposto un database RDS (cfr cap3 ) di dimensioni medie pronto a scalare automaticamente verso l'alto nel caso in cui la memoria dovesse saturarsi. Inoltre visto che l'elaborazione dei POST ed il riconosimento degli Share è una operazione molto dispendiosa a livello di CPU, il tutto è stato nascosto dietro un AAS(cfr cap3 ) in concomitanza con un ELB (cfr cap 3 ) 4.4 Publisher Come già sottoloneato in precedenza, l'importanza della scelta dei post e il tempismo con cui essi vengono pubblicati è essenziale, per l'operazione riguardante la selezione del POST abbiamo già abbondantemente descritto Crawler, adesso ci occuperemo della vera e propria pubblicazione effettuata da Publisher. Legato anche esso con le API di Facebook, interagisce con loro al momento della pubblicazione inviando in Http/Post i dati del Facebook-POST. 47

48 I componenti degni di nota del publisher sono: 1. Publisher 2. PublisherTimerTask Dominio dell'applicazione Il dominio dell'applicazione è molto più semplice rispetto a quello precedentemente analizzato del crawler, le uniche entità a farne parte sono: Photo, Album, Feed PublishTask Photo, Album, Feed Tutte queste tre entità implementano l'interfaccia IEntity che contrattualizza l'esistenza del metodo getid. Facebook permette la pubblicazione di tre tipi diversi di post: photo, album, feed. public Long getid(); analizziamo in dettaglio gli attributi di questi tre oggetti: Photo Nome Tipo Visiblità Descrizione Id Long private Id associato al metodo di pubblicazione url String private Url della picture relativa alla foto message String private Messaggio che sarà visualizzato contestualmente alla foto 48

49 Album Nome Tipo Visibilità Descrizione id Long private Id associato al metodo di pubblicazione Message String private Messaggio descrittivo dell'album name String private Nome dell'album Feed Nome Tipo Visibilità Descrizione id Long private Id associato al metodo di pubblicazione message String private Messaggio descrittivo della news name String private Nome della news link String private Link che riporta alla news caption String private caption description String private Descrizione della news action String private Azioni possibli sulla news (comment, like etc privacy String private Visiblità del post (se non specificiate di default sono quelle dell'utente targeting String private Targeting di visualizzazione del post PublishTask ogni qual volta il Crawler trova nuovi POST da pubblicare questi vengono inviati tramite thrift verso il publisher il quele provvederà immediatamente a schedulare la pubblicazione a un determinato istante. Compito del publishtask è quello di tenere traccia di questa coda. PublishTask 49

50 nome Tipo Visibilità Descrizione id Long private Identificatore univoco del task publishtime Long private Definisce l'orario a cui dovrà essere pubblicato type Integer private Il tipo (album,foto, o feed) access-tokenfb String private Access-token con il quale verrà eseguita la pubblicazione label String private Stringa descrittiva pageid String private Pagina sulla quale dovrà essere effettuata la pubblicazione Struttura dell'applicazione Presentiamo ora un breve escursus sui vari componenti facenti parte l'applicazione, rendendo così chiaro come questi interagiscono tra loro e di come arrivano al risultato finale; che ricordiamo essere la pubblicazione su facebook Publisher Anche in questo caso vengono utilizzate le librerie fornite stesso da facebook, le Facebook- Java-Api. Abbiamo visto in precendenza, che facebook mette a disposizione tre tipi diversi di post da pubblicare, questa eterogeneità deve essere visibilie anche attraverso i nostri componenti, il pattern migliore per ottenere questo risultato è stato il pattern Adapter 50

51 Fig Patter adapter nel quale i vari adapter sono i vari sistemi di pubblicazione, photo, feed ed album. Al Client, con questo tipo di pattern, verrà nascosta completamente la logica con la quale verrà fatta la pubblicazione, al momento dell'istanziazione dell'oggetto publisher verrà passato nel costruttore l'adaptee giusto per esegure quel determinato tipo di pubblicazione. public Publisher(IPublishAdapter adapter) analizziamo adesso l'interfaccia degli adapter IpublishAdapter impone l'implementazione del solo metodo publish al quale vengono passati 3 parametri public FacebookType publish(ientity data, String where,string accesstoken) 51

52 Nome parametro data where access-token Descrizione L'oggetto da pubblicare Pagina facebook sulla quale eseguire la pubblicaizone Access-token con il quale eseguire la pubblicazione Ecco un esempio dell'implementazione di un adapter di tipo Album Fig Album Adapter PublishTimerTask Questo oggetto ha il compito di coordinare nel tempo le pubblicazioni, pian piano smaltisce la coda che il crawler ha provveduto a riempire, prendendo in esame i task che sono marcati come da pubblicare ad una determinata ora del giorno o della notte, in base al locale settato in precedenza ed utilizzando l'access-token che è arrivato insieme ai dati del post da pubblicare. Esso si riesegue ogni 5 minuti, immetendo quindi un certo margine di errore nell'ora di pubblicazione del POST. 52

53 4.5 Comunicazione tra Crawler e Publisher In tutto il capitolo abbiamo accennatto al fatto che il crawler inviasse i dati al pusblishe, senza soffermazi su come questa comunicazione debba avvenire. Il franmework utilizzato per tale comunicazione è Thrift (cfr cap3 1), abbiamo definito l'idl dal quale poi abbiamo genere il WSDL che ha permesso a thrift di auto-generare il codice utile alla comunicazione Namespace java FBCL.thift Typedef i64 long Typedef i64 timestamp enum PublishType { album = 1, photo = 2, feed = 3 } enum serverstatus { DEAD = 0, RUNNING = 1, } struct Post { 1: string LINK_FIELD, 2: string LINK_NAME, 53

Indice generale. Gli autori...xiii. Prefazione...xv. Benvenuti nel cloud computing...1

Indice generale. Gli autori...xiii. Prefazione...xv. Benvenuti nel cloud computing...1 Indice generale Gli autori...xiii Prefazione...xv Capitolo 1 Benvenuti nel cloud computing...1 Come evitare un successo disastroso... 2 Saperne di più sul cloud computing... 3 Cosa si intende per nuvola...

Dettagli

Progettazione di Sistemi Interattivi. Gli strati e la rete. Struttura e supporti all implementazione di applicazioni in rete (cenni)

Progettazione di Sistemi Interattivi. Gli strati e la rete. Struttura e supporti all implementazione di applicazioni in rete (cenni) Progettazione di Sistemi Interattivi Struttura e supporti all implementazione di applicazioni in rete (cenni) Docente: Daniela Fogli Gli strati e la rete Stratificazione da un altro punto di vista: i calcolatori

Dettagli

Programmabilità di rete con l'infrastruttura Cisco basata sulle applicazioni

Programmabilità di rete con l'infrastruttura Cisco basata sulle applicazioni White paper Programmabilità di rete con l'infrastruttura Cisco basata sulle applicazioni Panoramica Questo documento analizza il supporto alla programmabilità nell'infrastruttura ACI (Application Centric

Dettagli

Software per la gestione di musei di arte contemporanea1

Software per la gestione di musei di arte contemporanea1 Software per la gestione di musei di arte contemporanea1 Identificativo del progetto: CA Nome documento: System Design(SD) Identificativo del documento: 6 CA_SD_E1_R1 Data del documento: 21/05/2012 Prima

Dettagli

Il Paradigma REST per lo sviluppo di applicazioni Web 2.0

Il Paradigma REST per lo sviluppo di applicazioni Web 2.0 tesi di laurea Anno Accademico 2006/2007 Il Paradigma REST per lo sviluppo di applicazioni Web 2.0 relatore Ch.mo prof. Domenico Cotroneo correlatore Ing. Marcello Cinque candidato Antonio Alonzi Matr.

Dettagli

Il clustering. Sistemi Distribuiti 2002/2003

Il clustering. Sistemi Distribuiti 2002/2003 Il clustering Sistemi Distribuiti 2002/2003 Introduzione In termini generali, un cluster è un gruppo di sistemi indipendenti che funzionano come un sistema unico Un client interagisce con un cluster come

Dettagli

GEODROP APPLICATIONS. Developer. Public. Private. Reseller

GEODROP APPLICATIONS. Developer. Public. Private. Reseller GEODROP APPLICATIONS Public Developer Reseller Private Le Applicazioni di Geodrop Guida per Developer alle Applicazioni Guida alle applicazioni v1.1-it, 21 Dicembre 2012 Indice Indice...2 Cronologia delle

Dettagli

Il protocollo FTP (1/3)

Il protocollo FTP (1/3) FTP Server e Client Il protocollo FTP (1/3) Il File Transfer Protocol (FTP) (protocollo di trasferimento file), è un Protocollo per la trasmissione di dati tra host basato su TCP. Un server FTP offre svariate

Dettagli

Interstudio L INGEGNERE NELLE NUVOLE. App, WEB App e Cloud. ing. Sauro Agostini. Architectural & Engineering Software. venerdì 11 ottobre 13

Interstudio L INGEGNERE NELLE NUVOLE. App, WEB App e Cloud. ing. Sauro Agostini. Architectural & Engineering Software. venerdì 11 ottobre 13 Architectural & Engineering Software L INGEGNERE NELLE NUVOLE App, WEB App e Cloud ing. Sauro Agostini Mitterand 1981 Reagan Battaglin Alice IBM PC 5150 Alonso C ERA UNA VOLTA IL DOS Non è una rivoluzione,

Dettagli

Concetti base. Impianti Informatici. Web application

Concetti base. Impianti Informatici. Web application Concetti base Web application La diffusione del World Wide Web 2 Supporto ai ricercatori Organizzazione documentazione Condivisione informazioni Scambio di informazioni di qualsiasi natura Chat Forum Intranet

Dettagli

w w w. n e w s o f t s r l. i t Soluzione Proposta

w w w. n e w s o f t s r l. i t Soluzione Proposta w w w. n e w s o f t s r l. i t Soluzione Proposta Sommario 1. PREMESSA...3 2. NSPAY...4 2.1 FUNZIONI NSPAY... 5 2.1.1 Gestione degli addebiti... 5 2.1.2 Inibizione di un uso fraudolento... 5 2.1.3 Gestione

Dettagli

Gartner Group definisce il Cloud

Gartner Group definisce il Cloud Cloud Computing Gartner Group definisce il Cloud o Cloud Computing is a style of computing in which elastic and scalable information technology - enabled capabilities are delivered as a Service. Gartner

Dettagli

Sviluppo di applicazioni web con il pattern Model-View-Controller. Gabriele Pellegrinetti

Sviluppo di applicazioni web con il pattern Model-View-Controller. Gabriele Pellegrinetti Sviluppo di applicazioni web con il pattern Model-View-Controller Gabriele Pellegrinetti 2 MVC: come funziona e quali sono vantaggi che derivano dal suo utilizzo? La grande diffusione della tecnologia

Dettagli

soluzioni e servizi per fare grande una media impresa Soluzioni di Cloud Computing per imprese con i piedi per terra.

soluzioni e servizi per fare grande una media impresa Soluzioni di Cloud Computing per imprese con i piedi per terra. soluzioni e servizi per fare grande una media impresa Soluzioni di Cloud Computing per imprese con i piedi per terra. FASTCLOUD È un dato di fatto che le soluzioni IT tradizionali richiedono investimenti

Dettagli

Il World Wide Web. Il Web. La nascita del Web. Le idee di base del Web

Il World Wide Web. Il Web. La nascita del Web. Le idee di base del Web Il World Wide Web Il Web Claudio Fornaro ver. 1.3 1 Il World Wide Web (ragnatela di estensione mondiale) o WWW o Web è un sistema di documenti ipertestuali collegati tra loro attraverso Internet Attraverso

Dettagli

Una rassegna dei sistemi operativi per il Cloud Computing

Una rassegna dei sistemi operativi per il Cloud Computing Alma Mater Studiorum Università di Bologna SCUOLA DI SCIENZE Corso di Laurea in Informatica Una rassegna dei sistemi operativi per il Cloud Computing Tesi di Laurea in Reti di Calcolatori Relatore: Chiar.mo

Dettagli

Considera tutti i requisiti funzionali (use cases) NON deve necessariamente modellare i requisiti non funzionali

Considera tutti i requisiti funzionali (use cases) NON deve necessariamente modellare i requisiti non funzionali Corso di Laurea Specialistica in Ingegneria Informatica Corso di Ingegneria del Software A. A. 2008 - Progettazione OO E. TINELLI Punto di Partenza Il modello di analisi E una rappresentazione minima del

Dettagli

Politica sui cookie. Introduzione Informazioni sui cookie

Politica sui cookie. Introduzione Informazioni sui cookie Introduzione Informazioni sui cookie Politica sui cookie La maggior parte dei siti web che visitate utilizza i cookie per migliorare l'esperienza dell'utente, consentendo al sito di 'ricordarsi' di voi,

Dettagli

Il Sito utilizza cookies tecnici e non di profilazione

Il Sito utilizza cookies tecnici e non di profilazione PRIVACY POLICY Informativa Privacy 1. INTRODUZIONE La presente Privacy Policy è relativa al sito www.aslnapoli2-formazione.eu. Le informazioni che l utente deciderà di condividere attraverso il Sito saranno

Dettagli

Informatica Documentale

Informatica Documentale Informatica Documentale Ivan Scagnetto (scagnett@dimi.uniud.it) Stanza 3, Nodo Sud Dipartimento di Matematica e Informatica Via delle Scienze, n. 206 33100 Udine Tel. 0432 558451 Ricevimento: giovedì,

Dettagli

I nuovi modelli di delivery dell IT: un quadro di riferimento

I nuovi modelli di delivery dell IT: un quadro di riferimento I nuovi modelli di delivery dell IT: un quadro di riferimento Stefano Mainetti Fondazione Politecnico di Milano stefano.mainetti@polimi.it Milano, 25 Ottobre 2010 Cloud Computing: il punto d arrivo Trend

Dettagli

CLOUD COMPUTING. Che cos è il Cloud

CLOUD COMPUTING. Che cos è il Cloud CLOUD COMPUTING Che cos è il Cloud Durante la rivoluzione industriale, le imprese che si affacciavano per la prima volta alla produzione dovevano costruirsi in casa l energia che, generata da grandi macchine

Dettagli

Informativa Privacy del sito internet www.consulenzaing.com

Informativa Privacy del sito internet www.consulenzaing.com Informativa Privacy del sito internet www.consulenzaing.com In questa pagina si descrivono le modalità di gestione dell informativa privacy del sito in riferimento al trattamento dei dati personali degli

Dettagli

WEB TECHNOLOGY. Il web connette. LE persone. E-book n 2 - Copyright Reserved

WEB TECHNOLOGY. Il web connette. LE persone. E-book n 2 - Copyright Reserved WEB TECHNOLOGY Il web connette LE persone Indice «Il Web non si limita a collegare macchine, ma connette delle persone» Il Www, Client e Web Server pagina 3-4 - 5 CMS e template pagina 6-7-8 Tim Berners-Lee

Dettagli

Realizzazione di un Tool per l iniezione automatica di difetti all interno di codice Javascript

Realizzazione di un Tool per l iniezione automatica di difetti all interno di codice Javascript tesi di laurea di difetti all interno di codice Javascript Anno Accademico 2009/2010 relatore Ch.mo prof. Porfirio Tramontana correlatore Ch.mo ing. Domenico Amalfitano candidato Vincenzo Riccio Matr.

Dettagli

Virtualizzazione e Cloud Computing

Virtualizzazione e Cloud Computing Virtualizzazione e Cloud Computing 12 marzo 2015 Claudio Bizzarri claudio@bizzarri.net Ordine degli Ingegneri di Pistoia La virtualizzazione Macchine reali e macchine virtuali Vantaggi della virtualizzazione

Dettagli

Tratte da (18. TECNICHE DI ACCESSO AI DATABASE IN AMBIENTE INTERNET)

Tratte da (18. TECNICHE DI ACCESSO AI DATABASE IN AMBIENTE INTERNET) Tratte da (18. TECNICHE DI ACCESSO AI DATABASE IN AMBIENTE INTERNET) Ipotesi di partenza: concetti di base del networking Le ipotesi di partenza indispensabili per poter parlare di tecniche di accesso

Dettagli

18. TECNICHE DI ACCESSO AI DATABASE IN AMBIENTE INTERNET

18. TECNICHE DI ACCESSO AI DATABASE IN AMBIENTE INTERNET 18. TECNICHE DI ACCESSO AI DATABASE IN AMBIENTE INTERNET Ipotesi di partenza: concetti di base del networking Le ipotesi di partenza indispensabili per poter parlare di tecniche di accesso ai database

Dettagli

Gestione del database Gidas

Gestione del database Gidas Gestione del database Gidas Manuale utente Aggiornamento 20/06/2013 Cod. SWUM_00535_it Sommario 1. Introduzione... 3 2. Requisiti e creazione del Database Gidas... 3 2.1.1. SQL Server... 3 2.1.2. Requisiti

Dettagli

Politecnico di Milano

Politecnico di Milano 1 Politecnico di Milano Facoltà di Ingegneria dell Informazione Progetto di Ingegneria del Software 2: SWIMv2 Prof.ssa Mirandola Raffaella A.A 2012/2013 SWIMv2: Small World hypotesis Machine v2 Realizzato

Dettagli

PROGETTO - Ingegneria del Software. Università degli Studi di Milano Polo di Crema. Corso di laurea in Scienze Matematiche, Fisiche e Naturali

PROGETTO - Ingegneria del Software. Università degli Studi di Milano Polo di Crema. Corso di laurea in Scienze Matematiche, Fisiche e Naturali Università degli Studi di Milano Polo di Crema Corso di laurea in Scienze Matematiche, Fisiche e Naturali INFORMATICA Corso di Ingegneria del Software progetto IL SISTEMA CALENDAR Presentato al dott. Paolo

Dettagli

Seminario di Sistemi Distribuiti: RPC su SOAP

Seminario di Sistemi Distribuiti: RPC su SOAP Corso di Sistemi Distribuiti Prof. S. Balsamo Seminario di Sistemi Distribuiti: RPC su SOAP [ 777775] 1 INTRODUZIONE 3 2 RPC 3 3 SOAP (SIMPLE OBJECT ACCESS PROTOCOL) 3 4 UTILIZZO DI SOAP COME PROTOCOLLO

Dettagli

Ogni browser (Internet Explorer, Google Chrome, Mozilla Firefox o Safari) permette di impostare le preferenze per i cookie.

Ogni browser (Internet Explorer, Google Chrome, Mozilla Firefox o Safari) permette di impostare le preferenze per i cookie. COSA SONO? Un cookie è rappresentato da un file di testo memorizzato sul vostro computer, tramite il browser di navigazione, creato durante la navigazione sui siti web. Servono nella maggioranza dei casi

Dettagli

INFORMATIVA SUI COOKIE

INFORMATIVA SUI COOKIE INFORMATIVA SUI COOKIE I Cookie sono costituiti da porzioni di codice installate all'interno del browser che assistono il Titolare nell erogazione del servizio in base alle finalità descritte. Alcune delle

Dettagli

CORSO WEB SERVER, DBMS E SERVER FTP

CORSO WEB SERVER, DBMS E SERVER FTP CORSO WEB SERVER, DBMS E SERVER FTP DISPENSA LEZIONE 1 Autore D. Mondello Transazione di dati in una richiesta di sito web Quando viene effettuata la richiesta di un sito Internet su un browser, tramite

Dettagli

Modalità e luogo del trattamento dei Dati raccolti

Modalità e luogo del trattamento dei Dati raccolti Privacy Policy di www.studioilgranello.it Questa Applicazione raccoglie alcuni Dati Personali dei propri Utenti. Titolare del Trattamento dei Dati STUDIO IL GRANELLO s.c.s. - Via S.Prospero, 24-42015 Correggio

Dettagli

Cloud Computing, infrastrutture innovative per l'outsourcing di applicazioni e servizi.

Cloud Computing, infrastrutture innovative per l'outsourcing di applicazioni e servizi. UNIVERSITÀ DEGLI STUDI DI FERRARA FACOLTÀ DI INGEGNERIA Corso di Laurea in Ingegneria Informatica e dell'automazione Cloud Computing, infrastrutture innovative per l'outsourcing di applicazioni e servizi.

Dettagli

Applicazione: Piattaforma di Comunicazione Unificata

Applicazione: Piattaforma di Comunicazione Unificata Riusabilità del software - Catalogo delle applicazioni: Amministrativi/Contabile Applicazione: Piattaforma di Comunicazione Unificata Amministrazione: Regione Piemonte - Direzione Innovazione, Ricerca

Dettagli

MCloud.Gov l infrastruttura SaaS per la Pubblica Amministrazione locale

MCloud.Gov l infrastruttura SaaS per la Pubblica Amministrazione locale MCloud.Gov l infrastruttura SaaS per la Pubblica Amministrazione locale 1. Livello infrastrutturale Il Cloud, inteso come un ampio insieme di risorse e servizi fruibili da Internet che possono essere dinamicamente

Dettagli

Emanuele Barrano Filippo Bosi CLOUD COMPUTING E ARCHITETTURE SOFTWARE: QUALI IMPATTI SULLO SVILUPPO DI APPLICAZIONI?

Emanuele Barrano Filippo Bosi CLOUD COMPUTING E ARCHITETTURE SOFTWARE: QUALI IMPATTI SULLO SVILUPPO DI APPLICAZIONI? Emanuele Barrano Filippo Bosi CLOUD COMPUTING E ARCHITETTURE SOFTWARE: QUALI IMPATTI SULLO SVILUPPO DI APPLICAZIONI? Agenda Cloud Overview Approccio al Cloud Computing Impatto sullo sviluppo delle applicazioni

Dettagli

I Principali Servizi del Protocollo Applicativo

I Principali Servizi del Protocollo Applicativo 1 I Principali Servizi del Protocollo Applicativo Servizi offerti In questa lezione verranno esaminati i seguenti servizi: FTP DNS HTTP 2 3 File Transfer Protocol Il trasferimento di file consente la trasmissione

Dettagli

Corso di Web programming Modulo T3 A2 - Web server

Corso di Web programming Modulo T3 A2 - Web server Corso di Web programming Modulo T3 A2 - Web server 1 Prerequisiti Pagine statiche e dinamiche Pagine HTML Server e client Cenni ai database e all SQL 2 1 Introduzione In questa Unità si illustra il concetto

Dettagli

REGIONE TOSCANA GERTIC. Documentazione di progetto. Viale Montegrappa 278/E 59100 Prato (Italy) Telefono +39.0574.514180 Fax +39.0574.

REGIONE TOSCANA GERTIC. Documentazione di progetto. Viale Montegrappa 278/E 59100 Prato (Italy) Telefono +39.0574.514180 Fax +39.0574. REGIONE TOSCANA GERTIC Documentazione di progetto Viale Montegrappa 278/E 59100 Prato (Italy) Telefono +39.0574.514180 Fax +39.0574.551195 www.netstudio.it INFORMAZIONI DOCUMENTO PROGETTO GeRTIC Gestione

Dettagli

Il Panorama tecnologico web 2.0

Il Panorama tecnologico web 2.0 UNIVERSITÀ DEGLI STUDI DI NAPOLI FEDERICO II FACOLTÀ DI SOCIOLOGIA - CORSO DI LAUREA IN CULTURE DIGITALI E DELLA COMUNICAZIONE Il Panorama tecnologico web 2.0 Le infrastrutture tecnologiche del web di

Dettagli

Mobile-Commerce Libero e gratuito

Mobile-Commerce Libero e gratuito Mobile-Commerce Libero e gratuito Likella è libera e gratuita sia per i retailer che intendono utilizzarne i servizi sia per i loro clienti che ne andranno a beneficiare. L iscrizione, l apertura di uno

Dettagli

D3.1 Documento di analisi della visualizzazione 3D in ambiente Cloud e relative problematiche

D3.1 Documento di analisi della visualizzazione 3D in ambiente Cloud e relative problematiche D3.1 Documento di analisi della visualizzazione 3D in ambiente Cloud e relative problematiche Il Cloud Computing La visualizzazione nella Cloud Problematiche Virtualizzazione della GPU Front end Virtualization

Dettagli

Guida all'amministrazione. BlackBerry Professional Software per Microsoft Exchange. Versione: 4.1 Service Pack: 4

Guida all'amministrazione. BlackBerry Professional Software per Microsoft Exchange. Versione: 4.1 Service Pack: 4 BlackBerry Professional Software per Microsoft Exchange Versione: 4.1 Service Pack: 4 SWD-313211-0911044452-004 Indice 1 Gestione degli account utente... 7 Aggiunta di un account utente... 7 Aggiunta manuale

Dettagli

Istituto Tecnico Industriale Statale Dionigi Scano Cagliari. Candidato: Medda Daniele Classe 5ª C Informatica Anno scolastico 2013/2014.

Istituto Tecnico Industriale Statale Dionigi Scano Cagliari. Candidato: Medda Daniele Classe 5ª C Informatica Anno scolastico 2013/2014. Istituto Tecnico Industriale Statale Dionigi Scano Cagliari Candidato: Medda Daniele Classe 5ª C Informatica Anno scolastico 2013/2014 relate Un esperimento di social networking open source 1 Introduzione

Dettagli

Introduzione a Oracle 9i

Introduzione a Oracle 9i Introduzione a Oracle 9i Ing. Vincenzo Moscato - Overview sull architettura del DBMS Oracle 9i L architettura di Oracle 9i si basa sul classico paradigma di comunicazione client-server, in cui sono presenti

Dettagli

VELOCIZZARE IL TUO SITO IN WORDPRESS CON WEB ACCELERATOR

VELOCIZZARE IL TUO SITO IN WORDPRESS CON WEB ACCELERATOR VELOCIZZARE IL TUO SITO IN WORDPRESS CON WEB ACCELERATOR CON QUESTO WHITEPAPER SCOPRIRAI COME VELOCIZZARE IL TUO WORDPRESS GRAZIE A UNA SOLUZIONE SEMPLICISSIMA: IL WEB ACCELERATOR SEEWEB Velocizzare il

Dettagli

CLOUD AWS. #cloudaws. Community - Cloud AWS su Google+ Amazon Web Services. Amazon RDS

CLOUD AWS. #cloudaws. Community - Cloud AWS su Google+ Amazon Web Services. Amazon RDS Community - Cloud AWS su Google+ Web Services RDS Oggi vedremo il servizio di RDS per la gestione di un database relazionale in ambiente cloud computing. Hangout 18 del 14.07.2014 Davide Riboldi Massimo

Dettagli

File System Distribuiti

File System Distribuiti File System Distribuiti Introduzione Nominazione e Trasparenza Accesso ai File Remoti Servizio Con/Senza Informazione di Stato Replica dei File Un esempio di sistema 20.1 Introduzione File System Distribuito

Dettagli

Introduzione. File System Distribuiti. Nominazione e Trasparenza. Struttura dei DFS. Strutture di Nominazione

Introduzione. File System Distribuiti. Nominazione e Trasparenza. Struttura dei DFS. Strutture di Nominazione File System Distribuiti Introduzione Nominazione e Trasparenza Accesso ai File Remoti Servizio Con/Senza Informazione di Stato Replica dei File Un esempio di sistema Introduzione File System Distribuito

Dettagli

Politica sui cookie. Introduzione Informazioni sui cookie

Politica sui cookie. Introduzione Informazioni sui cookie Introduzione Informazioni sui cookie Politica sui cookie La maggior parte dei siti web che visitate utilizza i cookie per migliorare l'esperienza dell'utente, consentendo al sito di 'ricordarsi' di voi,

Dettagli

Il Provvedimento del Garante

Il Provvedimento del Garante Il Provvedimento del Garante Il provvedimento del Garante per la Protezione dei dati personali relativo agli Amministratori di Sistema (AdS) Misure e accorgimenti prescritti ai titolari dei trattamenti

Dettagli

CeBAS. Centrale Bandi e Avvisi Pubblici Regionali (DGR n. 1556 del 11.09.2009)

CeBAS. Centrale Bandi e Avvisi Pubblici Regionali (DGR n. 1556 del 11.09.2009) CeBAS Centrale Bandi e Avvisi Pubblici Regionali (DGR n. 1556 del 11.09.2009) Introduzione Il progetto CEBAS: la finalità è di migliorare l efficienza operativa interna dell Ente rispondere alle aspettative

Dettagli

Novell ZENworks Configuration Management in ambiente Microsoft * Windows *

Novell ZENworks Configuration Management in ambiente Microsoft * Windows * Guida GESTIONE SISTEMI www.novell.com Novell ZENworks Configuration Management in ambiente Microsoft * Windows * Novell ZENworks Configuration Management in ambiente Microsoft Windows Indice: 2..... Benvenuti

Dettagli

PROGETTI DISPONIBILI IL CORSO DI PROGETTO DI RETI E SISTEMI INFORMATICI

PROGETTI DISPONIBILI IL CORSO DI PROGETTO DI RETI E SISTEMI INFORMATICI PROGETTI DISPONIBILI IL CORSO DI PROGETTO DI RETI E SISTEMI INFORMATICI 1 Web Link Monitor... 2 2 Database Browser... 4 3 Network Monitor... 5 4 Ghost Site... 7 5 Copy Search... 9 6 Remote Audio Video

Dettagli

INFORMAZIONI GENERALI SUI COOKIE

INFORMAZIONI GENERALI SUI COOKIE INFORMAZIONI GENERALI SUI COOKIE Definizione I Cookie sono costituiti da porzioni di codice installate all'interno del browser. Si tratta di piccoli file di testo che i siti visitati dagli utenti inviano

Dettagli

Sistema integrato dei portali RAS: specifiche di integrazione

Sistema integrato dei portali RAS: specifiche di integrazione Sistema integrato dei portali RAS: specifiche di integrazione Linee guida tecniche per l'integrazione con il presentation layer del CMS RAS Data: File: Allegato 3 - Specifiche di integrazione SIP-RAS.odt

Dettagli

Single Sign On sul web

Single Sign On sul web Single Sign On sul web Abstract Un Sigle Sign On (SSO) è un sistema di autenticazione centralizzata che consente a un utente di fornire le proprie credenziali una sola volta e di accedere a molteplici

Dettagli

STARBYTES è il servizio di lavoro on line realizzato da Reply Spa.

STARBYTES è il servizio di lavoro on line realizzato da Reply Spa. PRIVACY POLICY Le seguenti previsioni relative al trattamento dei dati personali sono indirizzate a tutti gli Utenti del sito www.starbytes.it ("Sito"), coerentemente con quanto previsto dal relativo Regolamento

Dettagli

Albano Squizzato ingsquizzato@libero.it. Moodle-manuale. manuale per il docente. Generazione Web 2013-14 - G9

Albano Squizzato ingsquizzato@libero.it. Moodle-manuale. manuale per il docente. Generazione Web 2013-14 - G9 Albano Squizzato ingsquizzato@libero.it Moodle-manuale manuale per il docente Generazione Web 2013-14 - G9 Come utilizzare Moodle La versatilità di Moodle consente la totale personalizzazione dell interfaccia,

Dettagli

Collocazione della Metrica Web

Collocazione della Metrica Web Collocazione della Metrica Web Strategia Organizzazione Produzione Promozione Metrica Flussi di un Sistema di Analisi Configurazione Log files data base Analysis Engine Report Tecnici Report Marketing

Dettagli

ALLEGATO C STANDARD TECNICI DELLA BORSA CONTINUA NAZIONALE DEL LAVORO

ALLEGATO C STANDARD TECNICI DELLA BORSA CONTINUA NAZIONALE DEL LAVORO ALLEGATO C STANDARD TECNICI DELLA BORSA CONTINUA NAZIONALE DEL LAVORO Standard tecnici Gli standard tecnici di riferimento adottati sono conformi alle specifiche e alle raccomandazioni emanate dai principali

Dettagli

Nuvola It Data Space

Nuvola It Data Space MANUALE UTENTE INDICE 1. Descrizione servizio... 3 1.1. Informazioni sul servizio di Telecom Italia... 3 1.2. Ruoli e Autenticazione per il servizio di Telecom Italia... 3 1.3. Strumenti... 5 1.4. Documentazione...

Dettagli

Architettura Tecnica i. Architettura Tecnica

Architettura Tecnica i. Architettura Tecnica i Architettura Tecnica ii Copyright 2005-2011 Link.it s.r.l. iii Indice 1 Scopo del documento 1 1.1 Abbreviazioni..................................................... 1 2 Overview 1 2.1 La PdD........................................................

Dettagli

Walter Martino per Lhg12 Socialnetworks

Walter Martino per Lhg12 Socialnetworks Walter Martino per Lhg12 Socialnetworks Lighthousegenova12.org 1 Origine dei socialnetworks Socialnetwork - servizio di rete sociale. Negli USA un gruppo di studenti universitari, per tenersi in contatto

Dettagli

Cluster per architetture a componenti

Cluster per architetture a componenti Luca Cabibbo Architetture Software Cluster per architetture a componenti Dispensa ASW 442 ottobre 2014 Un buon progetto produce benefici in più aree. Trudy Benjamin 1 -Fonti [IBM] Clustering Solutions

Dettagli

Livello cinque (Livello application)

Livello cinque (Livello application) Cap. VII Livello Application pag. 1 Livello cinque (Livello application) 7. Generalità: In questo livello viene effettivamente svolto il lavoro utile per l'utente, contiene al suo interno diverse tipologie

Dettagli

Manuale Piattaforma Didattica

Manuale Piattaforma Didattica Manuale Piattaforma Didattica Ver. 1.2 Sommario Introduzione... 1 Accesso alla piattaforma... 1 Il profilo personale... 3 Struttura dei singoli insegnamenti... 4 I Forum... 5 I Messaggi... 7 I contenuti

Dettagli

Corso di Applicazioni Telematiche

Corso di Applicazioni Telematiche Asynchronous JavaScript Technology and XML: Ajax Corso di Applicazioni Telematiche A.A. 2010-11 Prof. Simon Pietro Romano Università degli Studi di Napoli Federico II Facoltà di Ingegneria Rich Internet

Dettagli

WebRatio. L altra strada per il BPM. Web Models s.r.l. www.webratio.com contact@webratio.com 1 / 8

WebRatio. L altra strada per il BPM. Web Models s.r.l. www.webratio.com contact@webratio.com 1 / 8 WebRatio L altra strada per il BPM Web Models s.r.l. www.webratio.com contact@webratio.com 1 / 8 Il BPM Il BPM (Business Process Management) non è solo una tecnologia, ma più a grandi linee una disciplina

Dettagli

Sommario. Oracle Database 10g (laboratorio) Grid computing. Oracle Database 10g. Concetti. Installazione Oracle Database 10g

Sommario. Oracle Database 10g (laboratorio) Grid computing. Oracle Database 10g. Concetti. Installazione Oracle Database 10g Sommario Oracle Database 10g (laboratorio) Dr. Daniele Barone Dr. Simone Grega 1 2 Oracle Database 10g Offre alte qualità del servizio: Performance; Scalabilità; Sicurezza; Affidabilità. Gestione autonoma

Dettagli

DB2 Universal Database (UDB) DB2 Universal Database (UDB)

DB2 Universal Database (UDB) DB2 Universal Database (UDB) DB2 Universal Database (UDB) Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: DB2Presentazione2009.pdf Sistemi Informativi L-A DB2 Universal

Dettagli

Candidato: Luca Russo Docente: Prof. Raffaele Montella. 27 Marzo 2013

Candidato: Luca Russo Docente: Prof. Raffaele Montella. 27 Marzo 2013 e di e di Candidato: Luca Russo Docente: Corso di laurea in Informatica Applicata Facoltá di Scienze e Tecnologie Programmazione su Reti 27 Marzo 2013 Traccia d esame Sviluppare multitier con disaccoppiamento

Dettagli

Informativa e consenso per l utilizzo delle Google Apps for Education ISMC ALLEGATO 2 ALLEGATO 2 PRIVACY DI GOOGLE

Informativa e consenso per l utilizzo delle Google Apps for Education ISMC ALLEGATO 2 ALLEGATO 2 PRIVACY DI GOOGLE Pag. 1 di 8 PRIVACY DI GOOGLE (http://www.google.com/intl/it/policies/privacy/ Ultima modifica: 19 agosto 2015) I nostri servizi possono essere utilizzati in tanti modi diversi: per cercare e condividere

Dettagli

Privacy Policy Premesso che: Art. 1. Informazioni aziendali Art. 2. Intenti e finalità del trattamento

Privacy Policy Premesso che: Art. 1. Informazioni aziendali Art. 2. Intenti e finalità del trattamento Privacy Policy Premesso che: Il sito web www.teeser.it è di proprietà della GetApp S.r.l. avente sede in Via T. A. Edison nr. 43 a Pistoia 51100 (PT), P. IVA 01841970476, numero iscrizione al Registro

Dettagli

Azienda-Online. La gestione dell azienda ora vola sulla cloud!

Azienda-Online. La gestione dell azienda ora vola sulla cloud! Azienda-Online La gestione dell azienda ora vola sulla cloud! Riduzione dei costi di acquisto, gestione e manutenzione Aumento e velocizzazione della comunicazione in azienda Accessibilità al sistema di

Dettagli

Apps4Law: Riflessioni sul Cloud Computing. Roma 21 marzo 2013 Sala Seminari UNIRIZ. Alessandro Graziani, Avvocato alessandrograziani@iuslaw.

Apps4Law: Riflessioni sul Cloud Computing. Roma 21 marzo 2013 Sala Seminari UNIRIZ. Alessandro Graziani, Avvocato alessandrograziani@iuslaw. Apps4Law: Riflessioni sul Cloud Computing Roma 21 marzo 2013 Sala Seminari UNIRIZ 2 3 Il Cloud Computing si definisce consuetamente secondo due distinte accezioni: 1. un di carattere tecnologico 2. l altra

Dettagli

GoCloud just google consulting

GoCloud just google consulting La visione Cloud di Google: cosa cambia per i profili tecnici? GoCloud just google consulting Workshop sulle competenze ed il lavoro degli IT Systems Architect Vincenzo Gianferrari Pini

Dettagli

La realizzazione di WebGis con strumenti "Open Source".

La realizzazione di WebGis con strumenti Open Source. La realizzazione di WebGis con strumenti "Open Source". Esempi di impiego di strumenti a sorgente aperto per la realizzazione di un Gis con interfaccia Web Cos'è un Web Gis? Da wikipedia: Sono detti WebGIS

Dettagli

Windows Azure. introduzione. 16 Maggio 2013. Gianni Rosa Gallina giannishub@hotmail.com. Fabrizio Accatino fhtino@gmail.com

Windows Azure. introduzione. 16 Maggio 2013. Gianni Rosa Gallina giannishub@hotmail.com. Fabrizio Accatino fhtino@gmail.com 16 Maggio 2013 Windows Azure introduzione Gianni Rosa Gallina giannishub@hotmail.com Twitter: @giannirg Blog: http://giannishub.cloudapp.net/it/ Fabrizio Accatino fhtino@gmail.com Twitter: @fhtino Sito

Dettagli

Politica sui cookie. Introduzione Informazioni sui cookie

Politica sui cookie. Introduzione Informazioni sui cookie Introduzione Informazioni sui cookie Politica sui cookie La maggior parte dei siti web che visitate utilizza i cookie per migliorare l'esperienza dell'utente, consentendo al sito di 'ricordarsi' di voi,

Dettagli

Consolidamento e sviluppo CART

Consolidamento e sviluppo CART Nome del progetto Consolidamento e sviluppo CART Acronimo del progetto TOSCART Documento Manuale interfaccia monitoraggio Acronimo del documento TOSCART-TEC-INTWEB-PMC Stato del documento Definitivo Versione

Dettagli

CLOUD COMPUTING REFERENCE ARCHITECTURE: LE INDICAZIONI DEL NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY. Prima parte: Panoramica sugli attori

CLOUD COMPUTING REFERENCE ARCHITECTURE: LE INDICAZIONI DEL NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY. Prima parte: Panoramica sugli attori ANALISI 11 marzo 2012 CLOUD COMPUTING REFERENCE ARCHITECTURE: LE INDICAZIONI DEL NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY Nella newsletter N 4 abbiamo già parlato di Cloud Computing, introducendone

Dettagli

27/03/2013. Contenuti

27/03/2013. Contenuti Corso Sistemi Distribuiti 6 cfu Docente: Prof. Marcello Castellano Contenuti Virtualizzazione - 3 Macchina virtuale - 4 Architetture delle macchine virtuali - 6 Tipi di virtualizzazione - 7 Monitor della

Dettagli

Session tracking Session tracking HTTP: è stateless, cioè non permette di associare una sequenza di richieste ad un dato utente. Ciò vuol dire che, in generale, se un browser richiede una specifica pagina

Dettagli

Manuale LiveBox WEB AMMINISTRATORE DI SISTEMA. http://www.liveboxcloud.com

Manuale LiveBox WEB AMMINISTRATORE DI SISTEMA. http://www.liveboxcloud.com 2015 Manuale LiveBox WEB AMMINISTRATORE DI SISTEMA http://www.liveboxcloud.com LiveBox Srl non rilascia dichiarazioni o garanzie in merito al contenuto o uso di questa documentazione e declina qualsiasi

Dettagli

Estratto dell'agenda dell'innovazione e del Trade Bologna 2011. Speciale: I casi. Introduzione dell'area tematica IL CASO PRIMA INDUSTRIES

Estratto dell'agenda dell'innovazione e del Trade Bologna 2011. Speciale: I casi. Introduzione dell'area tematica IL CASO PRIMA INDUSTRIES Estratto dell'agenda dell'innovazione e del Trade Bologna 2011 Speciale: I casi Introduzione dell'area tematica IL CASO PRIMA INDUSTRIES Innovare e competere con le ICT: casi di successo - PARTE I Cap.8

Dettagli

Monitoring end-to-end delle applicazioni Web. Giorgio Marras e Paolo Cremonesi

Monitoring end-to-end delle applicazioni Web. Giorgio Marras e Paolo Cremonesi Monitoring end-to-end delle applicazioni Web Giorgio Marras e Paolo Cremonesi 2 Misurare i tempi di navigazione di un'applicazione Web come li percepisce l utenti finale Lo scopo della rilevazione delle

Dettagli

Laboratorio Reti di Calcolatori Laurea Triennale in Comunicazione Digitale. Anno Accademico 2013/2014

Laboratorio Reti di Calcolatori Laurea Triennale in Comunicazione Digitale. Anno Accademico 2013/2014 Laboratorio Reti di Calcolatori Laurea Triennale in Comunicazione Digitale Anno Accademico 2013/2014 Creazione App FB 1. App Dashboard https://developers.facebook.com/apps e cliccare su «+Crea Applicazione»

Dettagli

DATABASE IN RETE E PROGRAMMAZIONE LATO SERVER

DATABASE IN RETE E PROGRAMMAZIONE LATO SERVER DATABASE IN RETE E PROGRAMMAZIONE LATO SERVER L architettura CLIENT SERVER è l architettura standard dei sistemi di rete, dove i computer detti SERVER forniscono servizi, e computer detti CLIENT, richiedono

Dettagli

SWIM v2 Design Document

SWIM v2 Design Document PROGETTO DI INGEGNERIA DEL SOFTWARE 2 SWIM v2 DD Design Document Matteo Danelli Daniel Cantoni 22 Dicembre 2012 1 Indice Progettazione concettuale Modello ER Entità e relazioni nel dettaglio User Feedback

Dettagli

PRIVACY POLICY DI WWW.EDESSEREDONNA.IT. Titolare del Trattamento dei Dati. Tipologie di Dati raccolti

PRIVACY POLICY DI WWW.EDESSEREDONNA.IT. Titolare del Trattamento dei Dati. Tipologie di Dati raccolti PRIVACY POLICY DI WWW.EDESSEREDONNA.IT Questa Applicazione raccoglie alcuni Dati Personali dei propri Utenti. Titolare del Trattamento dei Dati Alga Madia- Via Ufente, 8-04100 Latina (Italia), algamadia@gmail.com

Dettagli

MODELLI ISO/OSI e TCP/IP

MODELLI ISO/OSI e TCP/IP D. Talia RETI DI CALCOLATORI - UNICAL 1 Reti di Calcolatori MODELLI ISO/OSI e TCP/IP D. Talia RETI DI CALCOLATORI - UNICAL 2 Reti di Calcolatori Livelli e Servizi Il modello OSI Il modello TCP/IP Un confronto

Dettagli

La Login in Prestito!!Disponbilità Tesi. Categorie di Progetti di Ingegneria del Software

La Login in Prestito!!Disponbilità Tesi. Categorie di Progetti di Ingegneria del Software Draft versione 1.1 Categorie di Progetti di Ingegneria del Software Tutti i temi Progettuali proposti rientrano in una delle seguenti categorie. 1. Temi sull'elaborazione di Dati Multimediali Temi su Audio,

Dettagli

Progetto di Applicazioni Software

Progetto di Applicazioni Software Progetto di Applicazioni Software Antonella Poggi Dipartimento di Informatica e Sistemistica Antonio Ruberti SAPIENZA Università di Roma Anno Accademico 2010/2011 Questi lucidi sono stati prodotti sulla

Dettagli

Progetto per un Sistema di Video/Audio Sorveglianza Remota RemoteGuard

Progetto per un Sistema di Video/Audio Sorveglianza Remota RemoteGuard La Sapienza Università di Roma Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica Anno Accedemico 2008-2009 Corso di Progetto di Reti di Calcolatori e Sistemi Informatici Prof. Stefano Millozzi

Dettagli

Manuale LiveBox WEB ADMIN. http://www.liveboxcloud.com

Manuale LiveBox WEB ADMIN. http://www.liveboxcloud.com 2014 Manuale LiveBox WEB ADMIN http://www.liveboxcloud.com LiveBox Srl non rilascia dichiarazioni o garanzie in merito al contenuto o uso di questa documentazione e declina qualsiasi garanzia espressa

Dettagli