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

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

Configuration Managment Configurare EC2 su AWS. Tutorial. Configuration Managment. Configurare il servizio EC2 su AWS. Pagina 1

Configuration Managment Configurare EC2 su AWS. Tutorial. Configuration Managment. Configurare il servizio EC2 su AWS. Pagina 1 Tutorial Configuration Managment Configurare il servizio EC2 su AWS Pagina 1 Sommario 1. INTRODUZIONE... 3 2. PROGRAMMI NECESSARI... 4 3. PANNELLO DI CONTROLLO... 5 4. CONFIGURARE E LANCIARE UN ISTANZA...

Dettagli

VIRTUALIZE IT. www.digibyte.it - digibyte@digibyte.it

VIRTUALIZE IT. www.digibyte.it - digibyte@digibyte.it il server? virtualizzalo!! Se ti stai domandando: ma cosa stanno dicendo? ancora non sai che la virtualizzazione è una tecnologia software, oggi ormai consolidata, che sta progressivamente modificando

Dettagli

Introduzione. E un sistema EAI molto flessibile, semplice ed efficace:

Introduzione. E un sistema EAI molto flessibile, semplice ed efficace: Overview tecnica Introduzione E un sistema EAI molto flessibile, semplice ed efficace: Introduce un architettura ESB nella realtà del cliente Si basa su standard aperti Utilizza un qualsiasi Application

Dettagli

Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione Elementi di Informatica e Programmazione Le Reti di Calcolatori (parte 2) Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Docente: Daniela

Dettagli

DynDevice ECM. La Suite di applicazioni web per velocizzare, standardizzare e ottimizzare il flusso delle informazioni aziendali

DynDevice ECM. La Suite di applicazioni web per velocizzare, standardizzare e ottimizzare il flusso delle informazioni aziendali DynDevice ECM La Suite di applicazioni web per velocizzare, standardizzare e ottimizzare il flusso delle informazioni aziendali Presentazione DynDevice ECM Cos è DynDevice ICMS Le soluzioni di DynDevice

Dettagli

Le Reti Informatiche

Le Reti Informatiche Le Reti Informatiche modulo 10 Prof. Salvatore Rosta www.byteman.it s.rosta@byteman.it 1 Nomenclatura: 1 La rappresentazione di uno schema richiede una serie di abbreviazioni per i vari componenti. Seguiremo

Dettagli

FileMaker Server 12. Guida introduttiva

FileMaker Server 12. Guida introduttiva FileMaker Server 12 Guida introduttiva 2007 2012 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker e Bento sono marchi di FileMaker,

Dettagli

FIRESHOP.NET. Gestione Utility & Configurazioni. Rev. 2014.3.1 www.firesoft.it

FIRESHOP.NET. Gestione Utility & Configurazioni. Rev. 2014.3.1 www.firesoft.it FIRESHOP.NET Gestione Utility & Configurazioni Rev. 2014.3.1 www.firesoft.it Sommario SOMMARIO Introduzione... 4 Impostare i dati della propria azienda... 5 Aggiornare il programma... 6 Controllare l integrità

Dettagli

GESTIONE DELLA E-MAIL

GESTIONE DELLA E-MAIL GESTIONE DELLA E-MAIL Esistono due metodologie, completamente diverse tra loro, in grado di consentire la gestione di più caselle di Posta Elettronica: 1. tramite un'interfaccia Web Mail; 2. tramite alcuni

Dettagli

Sistemi Web-Based - Terminologia. Progetto di Sistemi Web-Based Prof. Luigi Laura, Univ. Tor Vergata, a.a. 2010/2011

Sistemi Web-Based - Terminologia. Progetto di Sistemi Web-Based Prof. Luigi Laura, Univ. Tor Vergata, a.a. 2010/2011 Sistemi Web-Based - Terminologia Progetto di Sistemi Web-Based Prof. Luigi Laura, Univ. Tor Vergata, a.a. 2010/2011 CLIENT: il client è il programma che richiede un servizio a un computer collegato in

Dettagli

Payment Card Industry (PCI) Data Security Standard

Payment Card Industry (PCI) Data Security Standard Payment Card Industry (PCI) Data Security Standard Procedure per la scansione di sicurezza Versione 1.1 Release: settembre 2006 Indice generale Finalità... 1 Introduzione... 1 Ambito di applicazione dei

Dettagli

Analisi dei requisiti e casi d uso

Analisi dei requisiti e casi d uso Analisi dei requisiti e casi d uso Indice 1 Introduzione 2 1.1 Terminologia........................... 2 2 Modello della Web Application 5 3 Struttura della web Application 6 4 Casi di utilizzo della Web

Dettagli

ORACLE BUSINESS INTELLIGENCE STANDARD EDITION ONE A WORLD CLASS PERFORMANCE

ORACLE BUSINESS INTELLIGENCE STANDARD EDITION ONE A WORLD CLASS PERFORMANCE ORACLE BUSINESS INTELLIGENCE STANDARD EDITION ONE A WORLD CLASS PERFORMANCE Oracle Business Intelligence Standard Edition One è una soluzione BI completa, integrata destinata alle piccole e medie imprese.oracle

Dettagli

Manuale d uso Apache OpenMeetings (Manuale Utente + Manuale Amministratore)

Manuale d uso Apache OpenMeetings (Manuale Utente + Manuale Amministratore) Manuale d uso Apache OpenMeetings (Manuale Utente + Manuale Amministratore) Autore: Matteo Veroni Email: matver87@gmail.com Sito web: matteoveroni@altervista.org Fonti consultate: http://openmeetings.apache.org/

Dettagli

BPEL: Business Process Execution Language

BPEL: Business Process Execution Language Ingegneria dei processi aziendali BPEL: Business Process Execution Language Ghilardi Dario 753708 Manenti Andrea 755454 Docente: Prof. Ernesto Damiani BPEL - definizione Business Process Execution Language

Dettagli

Talento LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) L'UTILIZZO DI ALTRI SERVIZI INTERNET. In questa lezione imparerete a:

Talento LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) L'UTILIZZO DI ALTRI SERVIZI INTERNET. In questa lezione imparerete a: Lab 4.1 Utilizzare FTP (File Tranfer Protocol) LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) In questa lezione imparerete a: Utilizzare altri servizi Internet, Collegarsi al servizio Telnet, Accedere

Dettagli

12.5 UDP (User Datagram Protocol)

12.5 UDP (User Datagram Protocol) CAPITOLO 12. SUITE DI PROTOCOLLI TCP/IP 88 12.5 UDP (User Datagram Protocol) L UDP (User Datagram Protocol) é uno dei due protocolli del livello di trasporto. Come l IP, é un protocollo inaffidabile, che

Dettagli

Mod. 4: L architettura TCP/ IP Classe 5 I ITIS G. Ferraris a.s. 2011 / 2012 Marcianise (CE) Prof. M. Simone

Mod. 4: L architettura TCP/ IP Classe 5 I ITIS G. Ferraris a.s. 2011 / 2012 Marcianise (CE) Prof. M. Simone Paragrafo 1 Prerequisiti Definizione di applicazione server Essa è un servizio che è in esecuzione su un server 1 al fine di essere disponibile per tutti gli host che lo richiedono. Esempi sono: il servizio

Dettagli

SMS API. Documentazione Tecnica YouSMS SOAP API. YouSMS Evet Limited 2015 http://www.yousms.it

SMS API. Documentazione Tecnica YouSMS SOAP API. YouSMS Evet Limited 2015 http://www.yousms.it SMS API Documentazione Tecnica YouSMS SOAP API YouSMS Evet Limited 2015 http://www.yousms.it INDICE DEI CONTENUTI Introduzione... 2 Autenticazione & Sicurezza... 2 Username e Password... 2 Connessione

Dettagli

Informatica per la comunicazione" - lezione 9 -

Informatica per la comunicazione - lezione 9 - Informatica per la comunicazione" - lezione 9 - Protocolli di livello intermedio:" TCP/IP" IP: Internet Protocol" E il protocollo che viene seguito per trasmettere un pacchetto da un host a un altro, in

Dettagli

CORPORATE OVERVIEW. www.akhela.com

CORPORATE OVERVIEW. www.akhela.com CORPORATE OVERVIEW www.akhela.com BRIDGE THE GAP CORPORATE OVERVIEW Bridge the gap Akhela è un azienda IT innovativa che offre al mercato servizi e soluzioni Cloud Based che aiutano le aziende a colmare

Dettagli

Proteggi la tua faccia

Proteggi la tua faccia Proteggi la tua faccia Tutorial per i minori sull uso sicuro e consapevole di Facebook a cura di Clementina Crocco e Diana Caccavale È come se ogni giorno intingessimo una penna nell inchiostro indelebile

Dettagli

IT-BOOK. Domini Hosting Web marketing E-mail e PEC

IT-BOOK. Domini Hosting Web marketing E-mail e PEC 5 giugno 09 IT-BOOK Configurazioni e cartatteristiche tecniche possono essere soggette a variazioni senza preavviso. Tutti i marchi citati sono registrati dai rispettivi proprietari. Non gettare per terra:

Dettagli

Il Concetto di Processo

Il Concetto di Processo Processi e Thread Il Concetto di Processo Il processo è un programma in esecuzione. È l unità di esecuzione all interno del S.O. Solitamente, l esecuzione di un processo è sequenziale (le istruzioni vengono

Dettagli

CA Process Automation

CA Process Automation CA Process Automation Glossario Release 04.2.00 La presente documentazione, che include il sistema di guida in linea integrato e materiale distribuibile elettronicamente (d'ora in avanti indicata come

Dettagli

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN)

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN) Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN) System Overview di Mattia Bargellini 1 CAPITOLO 1 1.1 Introduzione Il seguente progetto intende estendere

Dettagli

PASSIONE PER L IT PROLAN. network solutions

PASSIONE PER L IT PROLAN. network solutions PASSIONE PER L IT PROLAN network solutions CHI SIAMO Aree di intervento PROFILO AZIENDALE Prolan Network Solutions nasce a Roma nel 2004 dall incontro di professionisti uniti da un valore comune: la passione

Dettagli

Agilent OpenLAB Chromatography Data System (CDS)

Agilent OpenLAB Chromatography Data System (CDS) Agilent OpenLAB Chromatography Data System (CDS) EZChrom Edition e ChemStation Edition Requisiti hardware e software Agilent Technologies Informazioni legali Agilent Technologies, Inc. 2013 Nessuna parte

Dettagli

Sizing di un infrastruttura server con VMware

Sizing di un infrastruttura server con VMware Sizing di un infrastruttura server con VMware v1.1 Matteo Cappelli Vediamo una serie di best practices per progettare e dimensionare un infrastruttura di server virtuali con VMware vsphere 5.0. Innanzitutto

Dettagli

Introduzione alle applicazioni di rete

Introduzione alle applicazioni di rete Introduzione alle applicazioni di rete Definizioni base Modelli client-server e peer-to-peer Socket API Scelta del tipo di servizio Indirizzamento dei processi Identificazione di un servizio Concorrenza

Dettagli

Ottimizzazione della gestione del data center con Microsoft System Center

Ottimizzazione della gestione del data center con Microsoft System Center Ottimizzazione della gestione del data center con Microsoft System Center Declinazione di responsabilità e informazioni sul copyright Le informazioni contenute nel presente documento rappresentano le conoscenze

Dettagli

Guida ai Servizi Internet per il Referente Aziendale

Guida ai Servizi Internet per il Referente Aziendale Guida ai Servizi Internet per il Referente Aziendale Indice Indice Introduzione...3 Guida al primo accesso...3 Accessi successivi...5 Amministrazione dei servizi avanzati (VAS)...6 Attivazione dei VAS...7

Dettagli

Seagate Access per Personal Cloud Manuale utente

Seagate Access per Personal Cloud Manuale utente Seagate Access per Personal Cloud Manuale utente 2015 Seagate Technology LLC. Tutti i diritti riservati. Seagate, Seagate Technology, il logo Wave e FreeAgent sono marchi depositati o marchi registrati

Dettagli

Gestire le comunicazione aziendali con software Open Source

Gestire le comunicazione aziendali con software Open Source Gestire le comunicazione aziendali con software Open Source Data: Ottobre 2012 Firewall pfsense Mail Server Zimbra Centralino Telefonico Asterisk e FreePBX Fax Server centralizzato Hylafax ed Avantfax

Dettagli

FileMaker Server 13. Pubblicazione Web personalizzata con PHP

FileMaker Server 13. Pubblicazione Web personalizzata con PHP FileMaker Server 13 Pubblicazione Web personalizzata con PHP 2007-2013 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 Stati Uniti FileMaker

Dettagli

progettiamo e realizziamo architetture informatiche Company Profile

progettiamo e realizziamo architetture informatiche Company Profile Company Profile Chi siamo Kammatech Consulting S.r.l. nasce nel 2000 con l'obiettivo di operare nel settore I.C.T., fornendo servizi di progettazione, realizzazione e manutenzione di reti aziendali. Nel

Dettagli

Manuale di Remote Desktop Connection. Brad Hards Urs Wolfer Traduzione: Luciano Montanaro Traduzione: Daniele Micci

Manuale di Remote Desktop Connection. Brad Hards Urs Wolfer Traduzione: Luciano Montanaro Traduzione: Daniele Micci Manuale di Remote Desktop Connection Brad Hards Urs Wolfer Traduzione: Luciano Montanaro Traduzione: Daniele Micci 2 Indice 1 Introduzione 5 2 Il protocollo Remote Frame Buffer 6 3 Uso di Remote Desktop

Dettagli

FileMaker Server 13. Guida introduttiva

FileMaker Server 13. Guida introduttiva FileMaker Server 13 Guida introduttiva 2007-2013 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 Stati Uniti FileMaker e Bento sono marchi

Dettagli

Applicazione: DoQui/Index - Motore di gestione dei contenuti digitali

Applicazione: DoQui/Index - Motore di gestione dei contenuti digitali Riusabilità del software - Catalogo delle applicazioni: Applicativo verticale Applicazione: DoQui/Index - Motore di gestione dei contenuti digitali Amministrazione: Regione Piemonte - Direzione Innovazione,

Dettagli

Inizializzazione degli Host. BOOTP e DHCP

Inizializzazione degli Host. BOOTP e DHCP BOOTP e DHCP a.a. 2002/03 Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/~auletta/ Università degli studi di Salerno Laurea e Diploma in Informatica 1 Inizializzazione degli Host Un

Dettagli

UML Component and Deployment diagram

UML Component and Deployment diagram UML Component and Deployment diagram Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Università di Catania I diagrammi UML Classificazione

Dettagli

Guida all uso del portale dello studente

Guida all uso del portale dello studente Guida all uso del portale dello studente www.studente.unicas.it Versione 1.0 del 10/04/2010 Pagina 1 Sommario PREMESSA... 3 PROFILO... 7 AMICI... 9 POSTA... 10 IMPOSTAZIONI... 11 APPUNTI DI STUDIO... 12

Dettagli

CHE COS È DOCFLY FATTURAZIONE PA... 3 1.1 IL GESTIONALE WEB... 3 1.2 ACCESSO ALL INTERFACCIA WEB... 4 1.3 FUNZIONALITÀ DELL INTERFACCIA WEB...

CHE COS È DOCFLY FATTURAZIONE PA... 3 1.1 IL GESTIONALE WEB... 3 1.2 ACCESSO ALL INTERFACCIA WEB... 4 1.3 FUNZIONALITÀ DELL INTERFACCIA WEB... 1. CHE COS È DOCFLY FATTURAZIONE PA... 3 1.1 IL GESTIONALE WEB... 3 1.2 ACCESSO ALL INTERFACCIA WEB... 4 1.3 FUNZIONALITÀ DELL INTERFACCIA WEB... 5 1.3.1 CREAZIONE GUIDATA DELLA FATTURA IN FORMATO XML

Dettagli

Le funzionalità di un DBMS

Le funzionalità di un DBMS Le funzionalità di un DBMS Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: DBMS.pdf Sistemi Informativi L-A DBMS: principali funzionalità Le

Dettagli

Privacy Policy del sito http://www.plastic-glass.com

Privacy Policy del sito http://www.plastic-glass.com Cos'è una PRIVACY POLICY Privacy Policy del sito http://www.plastic-glass.com Questo documento, concernente le politiche di riservatezza dei dati personali di chi gestisce il sito Internet http://www.plastic-glass.com

Dettagli

Il World Wide Web: nozioni introduttive

Il World Wide Web: nozioni introduttive Il World Wide Web: nozioni introduttive Dott. Nicole NOVIELLI novielli@di.uniba.it http://www.di.uniba.it/intint/people/nicole.html Cos è Internet! Acronimo di "interconnected networks" ("reti interconnesse")!

Dettagli

Posta Elettronica Certificata

Posta Elettronica Certificata Posta Elettronica Certificata Manuale di utilizzo del servizio Webmail di Telecom Italia Trust Technologies Documento ad uso pubblico Pag. 1 di 33 Indice degli argomenti 1 INTRODUZIONE... 3 1.1 Obiettivi...

Dettagli

Protocollo HTTP. Alessandro Sorato

Protocollo HTTP. Alessandro Sorato Un protocollo è un insieme di regole che permettono di trovare uno standard di comunicazione tra diversi computer attraverso la rete. Quando due o più computer comunicano tra di loro si scambiano una serie

Dettagli

AGGIORNAMENTO PROTOCOLLO VERSIONE 3.9.0

AGGIORNAMENTO PROTOCOLLO VERSIONE 3.9.0 AGGIORNAMENTO PROTOCOLLO VERSIONE 3.9.0 Con questo aggiornamento sono state implementate una serie di funzionalità concernenti il tema della dematerializzazione e della gestione informatica dei documenti,

Dettagli

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client Versione 25.4.05 Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture client/server: applicazioni client 1 Architetture client/server: un esempio World wide web è un

Dettagli

ARTICOLO 4: CONDIZIONI DI REALIZZAZIONE E DI FATTURAZIONE DELLE PRESTAZIONI

ARTICOLO 4: CONDIZIONI DI REALIZZAZIONE E DI FATTURAZIONE DELLE PRESTAZIONI CONDIZIONI PARTICOLARI DI WEB HOSTING ARTICOLO 1: OGGETTO Le presenti condizioni generali hanno per oggetto la definizione delle condizioni tecniche e finanziarie secondo cui HOSTING2000 si impegna a fornire

Dettagli

Copyright Università degli Studi di Torino, Progetto Atlante delle Professioni 2009 IT PROCESS EXPERT

Copyright Università degli Studi di Torino, Progetto Atlante delle Professioni 2009 IT PROCESS EXPERT IT PROCESS EXPERT 1. CARTA D IDENTITÀ... 2 2. CHE COSA FA... 3 3. DOVE LAVORA... 4 4. CONDIZIONI DI LAVORO... 5 5. COMPETENZE... 6 Quali competenze sono necessarie... 6 Conoscenze... 8 Abilità... 9 Comportamenti

Dettagli

Mai più senza smartphone.

Mai più senza smartphone. Mai più senza smartphone. Il telefonino ha superato il pc come mezzo di consultazione del web: 14,5 milioni contro 12,5 milioni.* Sempre più presente, lo smartphone è ormai parte integrante delle nostre

Dettagli

Cross Software ltd Malta Pro.Sy.T Srl. Il gestionale come l'avete sempre sognato... Pag. 1

Cross Software ltd Malta Pro.Sy.T Srl. Il gestionale come l'avete sempre sognato... Pag. 1 Il gestionale come l'avete sempre sognato... Pag. 1 Le funzionalità di X-Cross La sofisticata tecnologia di CrossModel, oltre a permettere di lavorare in Internet come nel proprio ufficio e ad avere una

Dettagli

Web Conferencing Open Source

Web Conferencing Open Source Web Conferencing Open Source A cura di Giuseppe Maugeri g.maugeri@bembughi.org 1 Cos è BigBlueButton? Sistema di Web Conferencing Open Source Basato su più di quattordici componenti Open-Source. Fornisce

Dettagli

Modello OSI e architettura TCP/IP

Modello OSI e architettura TCP/IP Modello OSI e architettura TCP/IP Differenza tra modello e architettura - Modello: è puramente teorico, definisce relazioni e caratteristiche dei livelli ma non i protocolli effettivi - Architettura: è

Dettagli

Appunti di Antonio Bernardo

Appunti di Antonio Bernardo Internet Appunti di Antonio Bernardo Cos è Internet Internet può essere vista come una rete logica di enorme complessità, appoggiata a strutture fisiche e collegamenti di vario tipo (fibre ottiche, cavi

Dettagli

Posta Elettronica. Claudio Cardinali claudio@csolution.it

Posta Elettronica. Claudio Cardinali claudio@csolution.it Posta Elettronica Claudio Cardinali claudio@csolution.it Posta Elettronica: WebMail Una Webmail è un'applicazione web che permette di gestire uno o più account di posta elettronica attraverso un Browser.

Dettagli

Mettere in sicurezza l infrastruttura dei desktop virtuali con Citrix NetScaler

Mettere in sicurezza l infrastruttura dei desktop virtuali con Citrix NetScaler Mettere in sicurezza l infrastruttura dei desktop virtuali con Citrix NetScaler 2 Le aziende attuali stanno adottando rapidamente la virtualizzazione desktop quale mezzo per ridurre i costi operativi,

Dettagli

Guida all utilizzo del dispositivo USB

Guida all utilizzo del dispositivo USB Guida all utilizzo del dispositivo USB 30/04/2013 Sommario - Limitazioni di responsabilità e uso del manuale... 3 1. Glossario... 3 2. Guida all utilizzo del dispositivo USB... 4 2.1 Funzionamento del

Dettagli

Utilizzo del server SMTP in modalità sicura

Utilizzo del server SMTP in modalità sicura Utilizzo del server SMTP in modalità sicura In questa guida forniremo alcune indicazioni sull'ottimizzazione del server SMTP di IceWarp e sul suo impiego in modalità sicura, in modo da ridurre al minimo

Dettagli

RedDot Content Management Server Content Management Server Non sottovalutate il potenziale della comunicazione online: usatela! RedDot CMS vi permette di... Implementare, gestire ed estendere progetti

Dettagli

SISSI IN RETE. Quick Reference guide guida di riferimento rapido

SISSI IN RETE. Quick Reference guide guida di riferimento rapido SISSI IN RETE Quick Reference guide guida di riferimento rapido Indice generale Sissi in rete...3 Introduzione...3 Architettura Software...3 Installazione di SISSI in rete...3 Utilizzo di SISSI in Rete...4

Dettagli

PROPOSTE SISTEMA DI CITIZEN RELATIONSHIP MANAGEMENT (CRM) REGIONALE

PROPOSTE SISTEMA DI CITIZEN RELATIONSHIP MANAGEMENT (CRM) REGIONALE PROPOSTE SISTEMA DI CITIZEN RELATIONSHIP MANAGEMENT (CRM) REGIONALE Versione 1.0 Via della Fisica 18/C Tel. 0971 476311 Fax 0971 476333 85100 POTENZA Via Castiglione,4 Tel. 051 7459619 Fax 051 7459619

Dettagli

ARP (Address Resolution Protocol)

ARP (Address Resolution Protocol) ARP (Address Resolution Protocol) Il routing Indirizzo IP della stazione mittente conosce: - il proprio indirizzo (IP e MAC) - la netmask (cioè la subnet) - l indirizzo IP del default gateway, il router

Dettagli

Università degli Studi di Parma. Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica

Università degli Studi di Parma. Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica Università degli Studi di Parma Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica A.A. 2007-08 CORSO DI INGEGNERIA DEL SOFTWARE Prof. Giulio Destri http://www.areasp.com (C) 2007 AreaSP for

Dettagli

Corso di Programmazione ad Oggetti

Corso di Programmazione ad Oggetti Corso di Programmazione ad Oggetti Introduzione alla programmazione ad oggetti a.a. 2008/2009 Claudio De Stefano 1 La programmazione modulare Un programma può essere visto come un insieme di moduli che

Dettagli

FileMaker Server 13. Guida di FileMaker Server

FileMaker Server 13. Guida di FileMaker Server FileMaker Server 13 Guida di FileMaker Server 2010-2013 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 Stati Uniti FileMaker e Bento sono

Dettagli

I vostri documenti sempre disponibili e sincronizzati.

I vostri documenti sempre disponibili e sincronizzati. gestione documentale I vostri documenti sempre disponibili e sincronizzati. In qualsiasi momento e da qualsiasi parte del mondo accedendo al portale Arxidoc avete la possibilità di ricercare, condividere

Dettagli

Mobile Messaging SMS. Copyright 2015 VOLA S.p.A.

Mobile Messaging SMS. Copyright 2015 VOLA S.p.A. Mobile Messaging SMS Copyright 2015 VOLA S.p.A. INDICE Mobile Messaging SMS. 2 SMS e sistemi aziendali.. 2 Creare campagne di mobile marketing con i servizi Vola SMS.. 3 VOLASMS per inviare SMS da web..

Dettagli

Company Profile 2014

Company Profile 2014 Company Profile 2014 Perché Alest? Quando una nuova azienda entra sul mercato, in particolare un mercato saturo come quello informatico viene da chiedersi: perché? Questo Company Profile vuole indicare

Dettagli

B.P.S. Business Process Server ALLEGATO C10

B.P.S. Business Process Server ALLEGATO C10 B.P.S. Business Process Server ALLEGATO C10 REGIONE BASILICATA DIPARTIMENTO PRESIDENZA DELLA GIUNTA REGIONALE UFFICIO SISTEMA INFORMATIVO REGIONALE E STATISTICA Via V. Verrastro, n. 4 85100 Potenza tel

Dettagli

GUIDA RAPIDA emagister-agora Edizione BASIC

GUIDA RAPIDA emagister-agora Edizione BASIC GUIDA RAPIDA emagister-agora Edizione BASIC Introduzione a emagister-agora Interfaccia di emagister-agora Configurazione dell offerta didattica Richieste d informazioni Gestione delle richieste d informazioni

Dettagli

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity CORSO DI ALGORITMI E PROGRAMMAZIONE JDBC Java DataBase Connectivity Anno Accademico 2002-2003 Accesso remoto al DB Istruzioni SQL Rete DataBase Utente Host client Server di DataBase Host server Accesso

Dettagli

SCUOLANET UTENTE DOCENTE

SCUOLANET UTENTE DOCENTE 1 ACCESSO A SCUOLANET Si accede al servizio Scuolanet della scuola mediante l'indirizzo www.xxx.scuolanet.info (dove a xxx corrisponde al codice meccanografico della scuola). ISTRUZIONI PER IL PRIMO ACCESSO

Dettagli

Web Conferencing and Collaboration tool

Web Conferencing and Collaboration tool Web Conferencing and Collaboration tool La piattaforma Meetecho Piattaforma di Web Conferencing e Collaborazione on line in tempo reale Caratteristiche generali Soluzione client-server progettata per essere

Dettagli

Ambienti supportati. Configurazione della stampante di rete. Stampa. Gestione della carta. Manutenzione. Risoluzione dei problemi.

Ambienti supportati. Configurazione della stampante di rete. Stampa. Gestione della carta. Manutenzione. Risoluzione dei problemi. I server di stampa vengono utilizzati per collegare le stampanti alle reti. In tal modo, più utenti possono accedere alle stampanti dalle proprie workstation, condividendo sofisticate e costose risorse.

Dettagli

È nata una nuova specie di avvocati. Liberi.

È nata una nuova specie di avvocati. Liberi. È nata una nuova specie di avvocati. Liberi. LIBERI DI NON PENSARCI Basta preoccupazioni per il back-up e la sicurezza dei tuoi dati. Con la tecnologia Cloud Computing l archiviazione e la protezione dei

Dettagli

MEGA Process. Manuale introduttivo

MEGA Process. Manuale introduttivo MEGA Process Manuale introduttivo MEGA 2009 SP4 1ª edizione (giugno 2010) Le informazioni contenute nel presente documento possono essere modificate senza preavviso e non costituiscono in alcun modo un

Dettagli

La gestione documentale con il programma Filenet ed il suo utilizzo tramite la tecnologia.net. di Emanuele Mattei (emanuele.mattei[at]email.

La gestione documentale con il programma Filenet ed il suo utilizzo tramite la tecnologia.net. di Emanuele Mattei (emanuele.mattei[at]email. La gestione documentale con il programma Filenet ed il suo utilizzo tramite la tecnologia.net di Emanuele Mattei (emanuele.mattei[at]email.it) Introduzione In questa serie di articoli, vedremo come utilizzare

Dettagli

Procedura per il ripristino dei certificati del dispositivo USB

Procedura per il ripristino dei certificati del dispositivo USB Procedura per il ripristino dei certificati del dispositivo USB 30/04/2013 Sommario - Limitazioni di responsabilità e uso del manuale... 3 1 Glossario... 3 2 Presentazione... 4 3 Quando procedere al ripristino

Dettagli

2013 Skebby. Tutti i diritti riservati.

2013 Skebby. Tutti i diritti riservati. Disclaimer: "# $%&'(&)'%# *("# +,(-(&'(# *%$).(&'%#,/++,(-(&'/# 0"#.(1"0%# *(""20&3%,./40%&(# /# &%-',/# disposizione. Abbiamo fatto del nostro meglio per assicurare accuratezza e correttezza delle informazioni

Dettagli

Arcserve Replication and High Availability

Arcserve Replication and High Availability Arcserve Replication and High Availability Guida operativa per Oracle Server per Windows r16.5 La presente documentazione, che include il sistema di guida in linea integrato e materiale distribuibile elettronicamente

Dettagli

DBMS (Data Base Management System)

DBMS (Data Base Management System) Cos'è un Database I database o banche dati o base dati sono collezioni di dati, tra loro correlati, utilizzati per rappresentare una porzione del mondo reale. Sono strutturati in modo tale da consentire

Dettagli

Web conferencing e collaborazione in tempo reale su Internet: la piattaforma Meetecho

Web conferencing e collaborazione in tempo reale su Internet: la piattaforma Meetecho Web conferencing e collaborazione in tempo reale su Internet: la piattaforma Meetecho Tobia Castaldi Alessandro Amirante Lorenzo Miniero Simon Pietro Romano Giorgio Ventre 02/10/2009 GARR 2009 "Network

Dettagli

Servizi DNS - SMTP FTP - TELNET. Programmi. Outlook Express Internet Explorer

Servizi DNS - SMTP FTP - TELNET. Programmi. Outlook Express Internet Explorer Servizi DNS - SMTP FTP - TELNET Programmi Outlook Express Internet Explorer 72 DNS Poiché riferirsi a una risorsa (sia essa un host oppure l'indirizzo di posta elettronica di un utente) utilizzando un

Dettagli

Zabbix 4 Dummies. Dimitri Bellini, Zabbix Trainer Quadrata.it

Zabbix 4 Dummies. Dimitri Bellini, Zabbix Trainer Quadrata.it Zabbix 4 Dummies Dimitri Bellini, Zabbix Trainer Quadrata.it Relatore Nome: Biografia: Dimitri Bellini Decennale esperienza su sistemi operativi UX based, Storage Area Network, Array Management e tutto

Dettagli

Acronis Backup & Recovery 10 Advanced Server Virtual Edition. Guida introduttiva

Acronis Backup & Recovery 10 Advanced Server Virtual Edition. Guida introduttiva Acronis Backup & Recovery 10 Advanced Server Virtual Edition Guida introduttiva Questo documento descrive come installare e iniziare a utilizzare Acronis Backup & Recovery 10 Advanced Server Virtual Edition.

Dettagli

più del mercato applicazioni dei processi modificato. Reply www.reply.eu

più del mercato applicazioni dei processi modificato. Reply www.reply.eu SOA IN AMBITO TELCO Al fine di ottimizzare i costi e di migliorare la gestione dell'it, le aziende guardano, sempre più con maggiore interesse, alle problematiche di gestionee ed ottimizzazione dei processi

Dettagli

L evoluzione del software per l azienda moderna. Gestirsi / Capirsi / Migliorarsi

L evoluzione del software per l azienda moderna. Gestirsi / Capirsi / Migliorarsi IL GESTIONALE DEL FUTURO L evoluzione del software per l azienda moderna Gestirsi / Capirsi / Migliorarsi IL MERCATO ITALIANO L Italia è rappresentata da un numero elevato di piccole e medie aziende che

Dettagli

Applicazione: Share - Sistema per la gestione strutturata di documenti

Applicazione: Share - Sistema per la gestione strutturata di documenti Riusabilità del software - Catalogo delle applicazioni: Gestione Documentale Applicazione: Share - Sistema per la gestione strutturata di documenti Amministrazione: Regione Piemonte - Direzione Innovazione,

Dettagli

Guida Dell di base all'acquisto dei server

Guida Dell di base all'acquisto dei server Guida Dell di base all'acquisto dei server Per le piccole aziende che dispongono di più computer è opportuno investire in un server che aiuti a garantire la sicurezza e l'organizzazione dei dati, consentendo

Dettagli

Plesk Automation. Parallels. Domande tecniche più frequenti

Plesk Automation. Parallels. Domande tecniche più frequenti Parallels Plesk Automation Primo trimestre, 2013 Domande tecniche più frequenti Questo documento ha come scopo quello di rispondere alle domande tecniche che possono sorgere quando si installa e si utilizza

Dettagli

GESTIRE LA BIBLIOGRAFIA

GESTIRE LA BIBLIOGRAFIA GESTIRE LA BIBLIOGRAFIA STRUMENTI DI GESTIONE BIBLIOGRAFICA I software di gestione bibliografica permettono di raccogliere, catalogare e organizzare diverse tipologie di materiali, prendere appunti, formattare

Dettagli

Interfaccia Web per customizzare l interfaccia dei terminali e

Interfaccia Web per customizzare l interfaccia dei terminali e SIP - Session Initiation Protocol Il protocollo SIP (RFC 2543) è un protocollo di segnalazione e controllo in architettura peer-to-peer che opera al livello delle applicazioni e quindi sviluppato per stabilire

Dettagli

SubnetMask: come funzionano e come si calcolano le sottoreti (SpySystem.it)

SubnetMask: come funzionano e come si calcolano le sottoreti (SpySystem.it) SubnetMask: come funzionano e come si calcolano le sottoreti (SpySystem.it) In una rete TCP/IP, se un computer (A) deve inoltrare una richiesta ad un altro computer (B) attraverso la rete locale, lo dovrà

Dettagli

G e s t i o n e U t e n z e C N R

G e s t i o n e U t e n z e C N R u t e n t i. c n r. i t G e s t i o n e U t e n z e C N R G U I D A U T E N T E Versione 1.1 Aurelio D Amico (Marzo 2013) Consiglio Nazionale delle Ricerche - Sistemi informativi - Roma utenti.cnr.it -

Dettagli