Server-side Javascript

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Server-side Javascript"

Transcript

1 Corso di Applicazioni Telematiche A.A Server-side Javascript Autore: Ing. Paolo Saviano Università degli Studi di Napoli Federico II Facoltà di Ingegneria

2 Overview JavaScript Reminder Perché le persone amano JavaScript Perché le persone odiano JavaScript JavaScript server-side Scripting Introduzione a NodeJS Il Node Package Manager NodeJS modules

3 Javascript Reminder Le proprietà del linguaggio - Dynamic Programming Language Sono linguaggi che eseguono a runtime direttamente durante l'esecuzione molte operazioni che i linguaggi statici svolgono al tempo di compilazione. - Single Threaded & Asynchronous Tutto viene eseguito in thread differenti eccetto il nostro codice - Versatile può essere incluso in molti tipi di pagine ASP, PHP,... può girare su molte piattaforme Browser, Server, Nativi,...

4 Ma non è tutto codice nostro? Non tutto, spesso il codice da noi scritto esegue operazioni al di fuori del nostro 'controllo': Richiedere una pagina ad un server, ad esempio, prevede un tempo di propagazione delle informazioni sulla rete ed un tempo di elaborazione della richiesta da parte del server. In un ambiente single threaded sincrono l esecuzione del nostro codice si arresterebbe in attesa della risposta dal server. La filosofia asincrona adottata da JavaScript è diversa: Invece di attendere la risposta si preferisce definire cosa fare una volta ricevuta la risposta si definisce cioè una funzione di callback e si va alla successiva porzione di codice. - Esempio: Dividiamo il seguente codice in 4 blocchi:

5 Ma non è tutto codice nostro? - Supponiamo che ogni blocco impieghi 10ms, e la richiesta remota 20ms - Supponiamo che ogni blocco impieghi 10ms, e la richiesta remota 5ms Il blocco 3, sebbene possa essere eseguito al termine della richiesta remota, attende il completamento del blocco 4!

6 JavaScript Reminder La sintassi - Loosely type Non richiede di dichiarare il tipo di una variabile prima del suo utilizzo - Variabili hoisted (sollevate) Le variabili possono essere dichiarate dopo il loro utilizzo

7 JavaScript Reminder Perché funziona? L interpretazione del codice JavaScript è garantita dalla presenza di un JavaScript Engine Esistono molti motori JavaScript: - Rhino: Implementazione Open source in Java di Mozilla - SpiderMonkey: Altro progetto Mozilla, in C, utilizzato in Gecko (Firefox) - V8: Motore Open source (Google) in C++ e presente in Chrome - Chakra: Motore Open source (Microsoft) in C++ presente in Edge

8 JavaScript Reminder Il codice sorgente viene analizzato attraverso le parserapi e trasformato in un albero della sintassi astratto (AST) Questo albero viene poi trasformato in bytecode ed interpretato durante la fase di esecuzione.

9 Il Google V8 JavaScript Engine Il motore V8 di Google ad esempio gestisce l'allocazione di memoria, la garbage collection, compila ed esegue il codice sorgente JavaScript. E' una compilazione a volo fatta da un compilatore JIT Just in time. Utilizza due diversi compilatori: - Full-codegen: un compilatore veloce che produce codice non-ottimo - Crankshaft: un compilatore più lento che produce codice veloce ed ottimizzato. Se il Crankshaft riscontra che il codice non ottimizzato generato dal Full codegen è particolarmente inefficiente, lo sostituisce.

10 Perché le persone amano JS? Perché è semplice - Linguaggio molto espressivo e leggibile - Facile fare manutenzione se scritto bene! Perché è coerente - Semplice da prevedere e da imparare - Applica i suoi principi base in modo uniforme - I suoi principi base sono validi sempre e senza eccezioni Perché è diffuso - Serve un Model-View-Controller? AngularJS - Librerie grafiche WebGL? Three.js - Una soluzione per il templating? Handlebars.js - Vuoi sviluppare su smartphone? IonicFramework

11 Perché le persone amano JS? Perché è veloce In una tradizionale applicazione server rendered, ogni interazione dell'utente necessita di una comunicazione con il server, rallentando di molto l'efficienza della pagina. Le applicazioni JavaScript sono differenti: Esse caricano in anticipo l'intero set di informazioni disponibili e, una volta avviate, sono in grado di gestire i template, la logica, etc... Sono obbligate a contattare il server unicamente per recuperare delle informazioni impossibili da ottenere al momento del caricamento iniziale.

12 Perché le persone amano JS? Perché è modulare I moduli sono frammenti di codice che implementano specifiche funzionalità e sono scritti utilizzando particolari specifiche/pattern. Scrivere un modulo vuol dire sviluppare una soluzione ad un problema (come l autenticazione, il parsing e la validazione dei dati, etc.. ) ed impacchettarla per poterla utilizzare altrove senza reinventare la ruota. Solo l ultima specifica Javascript ECMAScript6 prevede uno schema di implementazione dei moduli out of the box, fino a quando sarà lo standard dovremo organizzarci usando librerie esterne - CommonJS - Asynchronous Module Definition - AMD - UMD - ESHarmony, WebModule, WebComponents...

13 Cosa sono questi moduli? Un modulo fatto in casa Solo le proprietà dell oggetto modulo sono visibili all esterno della funzione

14 Perché le persone odiano JS? Perché è lento - Performance strabilianti, ma solo dopo il caricamento iniziale - Il tempo di attesa di un utente su una pagina web è molto basso! Perché è insicuro - Insicuro per lo sviluppatore Il codice scritto è sotto il controllo dell'utente! Può ispezionarlo, comprenderlo e modificarlo in ogni sua parte - Insicuro per l utente Clickjacking, Code Injection...c è un corso dedicato! Perché è troppo dipendente dal motore JS

15 Perché le persone odiano JS? Perché è diffuso troppo!

16 Server Side JavaScript 1995 Netscape LiveWire - Netscape prevedeva già un motore JS server side, ma ebbe poco successo - JavaScript era acerbo, hardware non all altezza - Diverso modo di sviluppare software: Progetti monolitici 2005 Il ritorno dello JavaScript - JavaScript più maturo - Nuovo modo di concepire il software sviluppo Agile - Poche persone coinvolte nello sviluppo del software JS è modulare, e ha una vasta community - Poche persone coinvolte nel mantenimento del software JS è versatile, medesimo codice in tanti ambienti - è importante minimizzare il loro Time to market - JS è semplice da imparare ed implementare

17 Server Side JavaScript Possiamo prendere solo il meglio! (o quasi) In questi scenari scrivere un server JavaScript ci permette di evitare alcune delle difficoltà incontrate in precedenza! - Mantiene il nostro codice semplice, minimizzando lo sforzo di sviluppo - E' una soluzione 'leggera' che minimizza le risorse necessarie - L'iniziale latenza in fase di bootstrap del JavaScript client-side è evitata - Il codice è eseguito lato sever, permettendoci la "Security through obscurity" - Risolvo problemi utilizzando soluzioni già implementate dalla comunità Ci sono tantissimi server già esistenti - DB: MongoDB, CouchDB, ArangoDB - WebServer: Aptana Jaxer - Frameworks: Jaggery.js, Node.js, Wakanda, Helma - IoT: JXcore

18 L importanza dei moduli Ancora più importante la modularità: I progetti cominciano ad avere sempre più componenti scritti in javascript È necessario mettere ordine nel codice! Ciascun modulo può essere scritto in maniera individuale, e questo aumenta la team scalability Ciascun modulo può essere debuggato in maniera indipendente, riducendo i costi di testing Scope e contesto di ciascun modulo possono essere controllati, i moduli possono essere quindi isolati.

19 CommonJS CommonJS CommonJS nasce come sforzo per standardizzare le API JavaScript, ed include anche uno standard per l implementazione dei moduli, principalmente lato server. I moduli CommonJS richiedono che l'ambiente abbia tre variabili: require, exports e module.

20 CommonJS - Esempio require: se il codice richiede la presenza di altri moduli per svolgere il suo lavoro, questi possono essere referenziati attraverso la funzione require, che assegna il modulo ad una variabile locale In questo caso utilizziamo un modulo precedentemente definito che associa ad ogni nome utente una password

21 CommonJS - Esempio exports: La variabile exports espone le API pubbliche del metodo, ovvero l unica parte che può essere richiamata dal resto dell ambiente Tutti gli oggetti, le funzioni, i costruttori, etc che il modulo offre devono essere registrati come proprietà dell oggetto exports In questo caso assegnamo alla proprietà login di export l oggetto loginmodule, rendendo disponibile all esterno la sua funzione di login

22 CommonJS - Esempio module: La variabile module è stata originariamente per offrire i metadati di un modulo all esterno, ovvero il suo ID e la sua URI (univoca) In realtà il funzionamento di module è stato riscritto nel tempo per permettere l esportazione non solo di un object (come nel caso di exports) ma anche per esportare semplici costruttori, funzioni isolate a stringhe. Usare exports per queste operazioni rischia di creare, soprattutto per le funzioni problemi di dipendenza circolare

23 CommonJS - Esempio module: La variabile module è stata originariamente per offrire i metadati di un modulo all esterno, ovvero il suo ID e la sua URI (univoca) In realtà il funzionamento di module è stato riscritto nel tempo per permettere l esportazione non solo di un object (come nel caso di exports) ma anche per esportare semplici costruttori, funzioni isolate e stringhe. Usare exports per queste operazioni rischia di creare problemi come la perdita di referenza o l inserimento di dipendenze circolari.

24 NodeJS Overview Cos è NodeJS? Le basi NPM La potenza dei moduli Qualche Esempio

25 NodeJS Definizioni Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine Node.js uses an event driven, non blocking I/O model that makes it lightweight and efficient - Si presenta con performance molto elevate - Utilizza V8 - E strettamente vincolato alle libuv Libreria di supporto multipiattaforma che si concentra sull I/O asincrono Per lo sviluppatore è single-threaded Il funzionamento è però caratterizzato dall I/O asincrono Libuv gestisce il threading, attraverso un pool di thread Il principale ciclo di funzionamento è detto event-loop

26 NodeJS

27 Qual è il segreto di NodeJS? In molti sistemi tutte le system calls, come leggere o scrivere file, interrogare un DB, sono 'bloccanti', ovvero l'esecuzione si ferma ed attende un risultato. Questi paradigmi sono chiamati blocking I/O e programmazione sincrona. Più tempo il programma si arresta, più aumenta il costo di I/O, più ovviamente le prestazioni degradano. I moderni server come Apache sono multi threaded, ovvero generano (spawn) un thread per ogni richiesta ricevuta. Quando il programma in esecuzione si mette in attesa di una risposta I/O, il thread/processo viene messo in sleep, ma continua a consumare delle risorse del sistema. Ciascuna richiesta avrà un thread pendente, consumando CPU e memoria. - Al crescere delle richieste avremo il classico collo di bottiglia!

28 Qual è il segreto di NodeJS? Node.js utilizza un approccio differente per risolvere questo problema: Serve tutte le richieste con un unico thread. Il codice in questo thread è sempre eseguito in maniera sincrona: Ad ogni occorrenza di una system call un operazione I/O come l interrogazione di un DB, o la gestione di eventi del file system essa viene delegata all'event loop assieme ad una funzione di callback. Il thread principale non va in sleep e continua a servire successive richieste. Appena la precedente system call viene completata, l'event loop esegue la funzione di callback associata, il cui compito tipicamente è quello di restituire un valore. Il programma principale non viene bloccato dalle operazioni I/O! - Non-Blocking I/O! - Programmazione asincrona!

29 Event-Loop Se arriva una nuova richiesta da un client essa viene messa in una coda detta Event Queue, ovvero una lista di eventi e callback. L Event Loop controlla la Queue in attesa di una richiesta.

30 Event-Loop Se la richiesta giunta non richiede operazioni I/O e può essere soddisfatta, sarà il thread principale a impegnare le proprie risorse per eseguirla Non sarà possibile soddisfare altre richieste fino al termine dell esecuzione!

31 Event-Loop Se invece arriva una richiesta che necessita di operazioni I/O, l Event Loop demanderà l esecuzione ad un thread diverso, scelto tra quelli disponibili in una Thread Pool. Questa operazione è possibile grazie alle libuv

32 Event-Loop Quando l operazione viene completata, la callback a cui era associato l evento scatenante è messa in coda per essere processata.

33 Event-Loop Appena possibile il nostro thread esegue la callback che era stata messa in coda

34 Hello Node Install nodejs Versioni Se cercate in giro troverete un po di confusione tra le versioni di Node.js Può sembrare che node sia passato dalla versione 0.10.x alla 4.x. Questo perché ad un certo punto il progetto node fu portato avanti, in parallelo, anche da un altro gruppo di sviluppatori con il nome di IO.js Questi ultimi adottavano un altra notazione per le versioni: Invece di 0.1.x, 0.2.x, evolvevano come 1.x, 2.x, Quando poi, in tempi recenti, i due progetti sono stati riunificati, si è scelto di usare la notazione di IO.js

35 Node Package Manager NPM è il gestore dei package usato da NodeJS. Ci sono oltre moduli anche se non tutti di ottima qualità. E probabile che, se vi trovate davanti ad un problema, qui possiate trovare qualcuno che ha già trovato una soluzione package.json È il file che sta dietro le quinte di ogni progetto node. Esso memorizza alcune informazioni generali metadati dell'applicazione Ad esempio: - nome - autore - descrizione - script automatizzati - versione - licenza - dipendenze - - bug noti

36 Il file package.json Tra le altre cose è in grado di gestire tutte le dipendenze in maniera automatica Generiamo interattivamente un file package.json attraverso il comando npm init Dopo alcune domande verrà prodotto un file simile al seguente!

37 package.json - dipendenze Aggiungiamo delle dipendenze al nostro progetto, ad esempio express: npm install express --save A volte è necessario installare pacchetti che non serviranno all'applicazione quando sarà messa in produzione, ad esempio librerie utili per testare o per minimizzare il nostro codice. Aggiungiamo anche queste dipendenze al nostro progetto, ad esempio mocha: npm install mocha -save-dev Questi comandi avranno 2 effetti: - express e mocha saranno scaricati ed installati nella cartella node_modules/ - il package.json sarà modificato come nell'esempio

38 package.json - dipendenze Legenda ^ - versione compatibile con > - versione maggiore di >= - maggiore o uguale di < - versione minore di 1.2.x qualsiasi sottoversione di ~ la più recente sottoversione Partendo dal package.json presente in una cartella è possibile installare tutte le dipendenze con il comando: npm install

39 package.json - scripts Il package.json ha anche la possibilità di registrare alcuni comandi per facilitare le operazioni dello sviluppatore, rendendolo capace di richiamare da riga di comando piccole utility di compilazione o anche meccanismi più complessi. E possibile assegnare a questi script nomi predefiniti - start, prestart, poststart - test, pretest, posttest - e molti, molti altri... npm start oppure npm test oppure npm prestart oppure Oppure assegnare allo script il nome che preferiamo, ma cambia il comando per lanciarlo! npm run script-personalizzato

40 NodeJS Packages Ecco perché abbiamo parlato dei moduli CommonJS... Modulo http Express Socket.IO NodeJS in azione

41 Il modulo http È un piccolo modulo integrato in nodejs che gestisce la comunicazione http Implementa una serie di funzionalità di basso livello, come scrivere sullo stream della risposta...

42 Express Express è un framework per applicazioni web Node.js Routing di base: app.method(path, HANDLER)

43 Express Modulo molto potente che semplifica e potenzia l utilizzo del modulo http: Ci permette di gestire molto facilmente le rotte di indirizzamento routing e le funzionalità di accesso al filesystem Stiamo facendo servire al modulo Express una pagina index.html Se avessimo voluto fare tutto con http avremmo dovuto usare un modulo per la gestione dei file! È una catena! Express si istanzia ed usa il server definito dal modulo http, giocando il ruolo di middleware. Le richieste ad http vengono elaborate da express

44 Socket.IO Un problema classico: Ricevere aggiornamenti dal server - Long Polling Il client richiede aggiornamenti periodici al server Vengono utilizzate connessioni multiple client server: alta latenza - WebSocket Viene aperto un canale bidirezionale tra client e server Entrambi possono inviare dati in qualsiasi momento: bassa latenza :( :) Niente Paura!! Vedrete queste cose nelle prossime lezioni del corso

45 Socket.IO Socket.IO è una libreria JavaScript che fornisce le API necessarie per implementare una comunicazione real time bidirezionale basata sugli eventi su ogni piattaforma, browser o device. Socket.IO fornisce in maniera trasparente dei meccanismi di fallback per garantire la comunicazione laddove le WebSocket non fossero utilizzabili: Ajax Long Polling, Ajax Multipart Streaming, etc etc... Cosa possiamo farci - Analisi real-time - Messaggistica istantanea - Lavoro collaborativo

46 Socket.IO - Utilizzo Socket.IO richiede l utilizzo di librerie sia lato client che lato server Client-side - Aggiungiamo il codice necessario alla nostra pagina web Server-side - Installiamo nel nostro server node il modulo socket.io npm install socket.io --save

47 Socket.IO - Client La libreria lato client ci permette di utilizzare le seguenti API: Registrazione al backend - io() - se non viene passato alcun parametro al metodo io() la connessione sarà verso lo stesso indirizzo (e porto) della pagina - la connessione verrà notificata dall evento connect - la disconnessione verrà notificata dall evento disconnect

48 Socket.IO - Client Invio di eventi emit(type, data) - invia un evento di tipo type - il payload dell evento è il valore di data Ricezione di eventi on(type, callback) - Attende un evento di tipo type - Alla ricezione esegue la callback registrata

49 Socket.IO - Server Lato server il procedimento è simile (risolvere i problemi una volta sola) Importare il modulo socket.io - utilizziamo il metodo esposto dal modulo socket.io - inizializziamo il metodo passando l oggetto esposto dal modulo http Ricezione di eventi on(type, callback) - medesimo comportamento del lato client - per la prima connessione attendiamo un evento connection - l evento connection ha come payload l oggetto socket su cui possiamo registrare gli altri eventi attesi!

50 Socket.IO - Server Invio di eventi ad una socket socket.emit(type, data) - medesimo comportamento del lato client Invio di eventi a tutti (broadcast) io.emit(type, data) - stessa sintassi, cambia l oggetto che espone il metodo

51 Aggiungiamo socket.io al progetto e. Vediamo se funziona tutto!

52

53 Backup #1: AMD Asynchronous Module Definition - AMD Le Asynchronous Module Definition (AMD) API specificano un meccanismo per definire i moduli e caricarli in maniera asincrona. I browser possono così utilizzare questa tecnologia senza inficiare performance, usabilità, o incorrere in problemi di cross domain. Le funzioni previste dalle AMD API sono: - define, per definire i moduli e renderli disponibili a successivi caricamenti - require, per caricare i moduli e le loro dipendenze

54 Backup #1: AMD - Esempio

55 Backup #1: AMD I vantaggi di AMD - API molto semplice - Moduli caricati solo quando necessari, caricamento iniziale più veloce - Facile da debuggare Gli svantaggi di AMD - L'Array di dipendenze può essere molto esteso - E più facile l occorrenza di errori umani

56 Backup #2 Express static File statici il middleware static - Serviamo le pagine contenute in una cartella [es /public] - Possiamo mappare più cartelle Possiamo associare un prefisso ad un percorso virtuale ovvero un percorso non esiste effettivamente nel file system. specificando il path, preferibilmente relativo, di caricamento della la directory statica:

Filippo Bergamasco ( DAIS - Università Ca Foscari di Venezia Anno accademico:

Filippo Bergamasco (   DAIS - Università Ca Foscari di Venezia Anno accademico: Filippo Bergamasco ( filippo.bergamasco@unive.it) http://www.dais.unive.it/~bergamasco/ DAIS - Università Ca Foscari di Venezia Anno accademico: 2017/2018 Storicamente, realizzare la parte server di un

Dettagli

Indice generale. Introduzione...xiii. Uno sguardo più da vicino a JavaScript...17

Indice generale. Introduzione...xiii. Uno sguardo più da vicino a JavaScript...17 Indice generale Introduzione...xiii Perché Node.js?... xiii Il Web... xiii Nuove tecnologie...xiv Cos è esattamente Node.js?...xiv A chi si rivolge questo libro?...xvi Come usare questo libro...xvi Scaricate

Dettagli

Java: un linguaggio per applicazioni di rete

Java: un linguaggio per applicazioni di rete Java: un linguaggio per applicazioni di rete Moreno Falaschi Dipartimento di Ingegneria dell Informazione e Scienze Matematiche Università di Siena March 3, 2014 1 Caratteristiche di Java (SUN) Linguaggio

Dettagli

Strumenti per l automazione del testing di applicazioni web Javascript-based

Strumenti per l automazione del testing di applicazioni web Javascript-based tesi di laurea Strumenti per l automazione del testing di applicazioni web Javascript-based Anno Accademico 2005/2006 relatore Ch.mo prof. Porfirio Tramontana 1 candidato Salvatore Agnello Matr. 41/2612

Dettagli

SISTEMI DI ELABORAZIONE

SISTEMI DI ELABORAZIONE SISTEMI DI ELABORAZIONE CORSO DI LAUREA MAGISTRALE IN INGEGNERIA ELETTRONICA SPECIFICHE DI PROGETTO A.A. 2011/2012 Il progetto consiste nello sviluppo di un applicazione client/server. Client e server

Dettagli

Analisi di strumenti e tecniche per lo sviluppo di applicazioni Ajax.

Analisi di strumenti e tecniche per lo sviluppo di applicazioni Ajax. tesi di laurea Analisi di strumenti e tecniche per lo sviluppo di applicazioni Ajax. Anno Accademico 2006/2007 relatore Ch.mo prof. Porfirio Tramontana 1 candidato Antonio Pandolfo Matr. 41/2568 Sommario

Dettagli

Progetto d esame. La logica di gioco. Tecnologie e applicazioni web, a.a 2017/2018. Fase di posizionamento

Progetto d esame. La logica di gioco. Tecnologie e applicazioni web, a.a 2017/2018. Fase di posizionamento Progetto d esame Tecnologie e applicazioni web, a.a 07/08 Si realizzi un applicazione web, comprensiva di server con API stile REST e front-end di tipo SPA, che permetta ad una community di utenti di giocare

Dettagli

3.3.6 Gli operatori Le funzioni di accesso al tipo Le strutture di controllo Le funzioni

3.3.6 Gli operatori Le funzioni di accesso al tipo Le strutture di controllo Le funzioni IIndice Capitolo 1 Da dove partiamo: pagine web statiche 1 1.1 Principi di base.............................. 1 1.1.1 Il paradigma client-server.................... 1 1.1.2 Ipertesto, multimedia, ipermedia................

Dettagli

Analisi e comparazione dei Framework OpenSwing e Google Web Toolkit per lo sviluppo di interfacce utente con paradigma MVC.

Analisi e comparazione dei Framework OpenSwing e Google Web Toolkit per lo sviluppo di interfacce utente con paradigma MVC. tesi di laurea Analisi e comparazione dei Framework OpenSwing e Google Web Toolkit. Anno Accademico 2009/2010 relatore Ch.mo prof. Porfirio Tramontana correlatore Ing. Luca Anniciello candidato Gianluca

Dettagli

Traduzione e interpretazione

Traduzione e interpretazione Traduzione e interpretazione Parte dei lucidi sono stati gentilmente forniti dal Prof. Salza VII.1 Linguaggi di programmazione Linguaggi ad alto livello Maggiore espressività Maggiore produttività Migliore

Dettagli

Programma didattico. Sviluppare Applicazioni Distribuite in ambiente. Spring MVC

Programma didattico. Sviluppare Applicazioni Distribuite in ambiente. Spring MVC Programma didattico Sviluppare Applicazioni Distribuite in ambiente Spring MVC Programma del corso 1.Progettazione e Sviluppo Database Relazionali Questa competenza permette di Progettare e Sviluppare

Dettagli

Sommario 1 Introduzione progetto Soluzione Integrazione Conclusioni... 10

Sommario 1 Introduzione progetto Soluzione Integrazione Conclusioni... 10 SISS SUITE Sommario 1 Introduzione... 3 2 progetto... 3 3 Soluzione... 3 4 Integrazione... 10 5 Conclusioni... 10 2 1 INTRODUZIONE L OMNICOM SISS Suite è una libreria DLL espressamente concepita per facilitare

Dettagli

TESI DI LAUREA IN INFORMATICA

TESI DI LAUREA IN INFORMATICA UNIVERSITA DEGLI STUDI DI NAPOLI FEDERICO II TESI DI LAUREA IN INFORMATICA UNA WEB APPLICATION SU INFRASTRUTTURA PER IL PROGETTO DAME Tutor Accademico: Dott.ssa Anna Corazza Tutor Aziendale: Dott. Massimo

Dettagli

Tecnologie e applicazioni web Electron

Tecnologie e applicazioni web Electron Tecnologie e applicazioni web Electron Filippo Bergamasco ( filippo.bergamasco@unive.it) http://www.dais.unive.it/~bergamasco/ DAIS - Università Ca Foscari di Venezia Anno accademico: 2017/2018 Electron

Dettagli

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

Servizi DISI: spazio Web personale e di gruppo. Angelo Di Iorio Servizi DISI: spazio Web personale e di gruppo Angelo Di Iorio Progetto di tecnologie Web u Il corso di Tecnologie Web prevede la realizzazione di un progetto che DEVE essere caricato sulle macchine del

Dettagli

Calcolo numerico e programmazione Programmazione

Calcolo numerico e programmazione Programmazione Calcolo numerico e programmazione Programmazione Tullio Facchinetti 11 maggio 2012 14:05 http://robot.unipv.it/toolleeo La programmazione la programmazione è l insieme delle

Dettagli

Installare Apache, PHP, MySQL sul Raspberry PI Zero

Installare Apache, PHP, MySQL sul Raspberry PI Zero Installare Apache, PHP, MySQL sul Raspberry PI Zero In questo articolo vedremo come installare sul Raspberry PI Zero i principali programmi che vengono usati nei progetti domotici e non solo. Ecco la lista

Dettagli

Horizone Server IN00B02WEB. Horizone PDK

Horizone Server IN00B02WEB. Horizone PDK Horizone Server IN00B02WEB Horizone PDK Prodotto: -- Descrizione: Horizone PDK - Manuale Utente Data: 10/07/2017 Eelectron Spa IN00B02WEBFI00080102_PDK_MANUAL.DOCX 1/12 Qualsiasi informazione all interno

Dettagli

PROGRAMMA DEL CORSO MASTER IN WEB DESIGN & DEVELOPER

PROGRAMMA DEL CORSO MASTER IN WEB DESIGN & DEVELOPER PROGRAMMA DEL CORSO MASTER IN WEB DESIGN & DEVELOPER Il corso Master Web Developer con Certificazione internazionale W3Schools prepara lo studente a entrare nel mondo dello sviluppo Web (blog, siti, portali).

Dettagli

Tecnologie e applicazioni web TypeScript

Tecnologie e applicazioni web TypeScript Tecnologie e applicazioni web TypeScript Filippo Bergamasco ( filippo.bergamasco@unive.it) http://www.dais.unive.it/~bergamasco/ DAIS - Università Ca Foscari di Venezia Anno accademico: 2017/2018 What

Dettagli

Lezione 2 Introduzione a Java (2)

Lezione 2 Introduzione a Java (2) Lezione 2 Introduzione a Java (2) Vittorio Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Organizzazione della lezione Una review sulle caratteristiche

Dettagli

Tecnologie di Sviluppo per il Web

Tecnologie di Sviluppo per il Web Tecnologie di Sviluppo per il Web Introduzione Architettura di Riferimento versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca mecca@unibas.it

Dettagli

SOFTWARE. Programmi e dati che indicano al computer come svolgere un determinato compito

SOFTWARE. Programmi e dati che indicano al computer come svolgere un determinato compito SOFTWARE MODULO 3 SOFTWARE Programmi e dati che indicano al computer come svolgere un determinato compito Programma: sequenza di istruzioni, scritte in un determinato linguaggio, con le quali si fa eseguire

Dettagli

CORSO DI PROGRAMMAZIONE JAVA STANDARD + ENTERPRISE EDITION

CORSO DI PROGRAMMAZIONE JAVA STANDARD + ENTERPRISE EDITION CORSO DI PROGRAMMAZIONE JAVA STANDARD + ENTERPRISE EDITION 0 DURATA 200 ore CONTENUTI Oracle PL/SQL Introduzione al PL/SQL Cenni su SQL con utilizzo di SQL*PLUS Configurazione ambiente Developer DB Classi,

Dettagli

Programmazione lato client. JavaScript. Applicazioni di Rete M. Ribaudo - DISI. JavaScript

Programmazione lato client. JavaScript. Applicazioni di Rete M. Ribaudo - DISI. JavaScript Programmazione lato client Netscape: Microsoft: JScript ECMAScript (ECMA-262) (European Computer Manufactures Association) 1 Linguaggio di script interpretato con alcune caratteristiche Object Oriented

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione

Dettagli

TCL PAD: UN EDITOR DI TESTO ESTENDIBILE, INCORPORABILE E CON INTERFACCE DI TEXT-PROCESSING

TCL PAD: UN EDITOR DI TESTO ESTENDIBILE, INCORPORABILE E CON INTERFACCE DI TEXT-PROCESSING Tesi di Laurea Triennale in Ingegneria Informatica TCL PAD: UN EDITOR DI TESTO ESTENDIBILE, INCORPORABILE E CON INTERFACCE DI TEXT-PROCESSING Relatore: Prof. SERGIO FLESCA Laureando: ANTONIO BONIFATI MATR.

Dettagli

JavaScript JavaScript Programmazione lato client JScript JavaScript ECMAScript

JavaScript JavaScript Programmazione lato client JScript JavaScript ECMAScript Programmazione lato client Netscape: Microsoft: JScript ECMAScript (ECMA-262) (European Computer Manufactures Association) Linguaggio di script interpretato con alcune caratteristiche Object Oriented HTTP

Dettagli

CHE COSA FA? P.S. io comunque dissento sul 4. Ing. Luca Frigerio

CHE COSA FA? P.S. io comunque dissento sul 4. Ing. Luca Frigerio CHE COSA FA? P.S. io comunque dissento sul 4. Ing. Luca Frigerio ? NON SEMBRANO APPARTENERE ALLO STESSO MONDO 334.000.000.000 L'ANNO IN EUROPA MMMMM + 11.000.000 DI POSTI DI LAVORO Elaborazione Dell'informazione

Dettagli

Comune di Venezia. Scheda descrittiva del programma

Comune di Venezia. Scheda descrittiva del programma Comune di Venezia Scheda descrittiva del programma 'SPORTELLO TELEMATICO DEL TRASPORTATORE' Pagina 1 di 5 Indice 1 PREMESSA...3 1.1 OGGETTO OFFERTO IN RIUSO...3 1.2 TIPOLOGIA DI OGGETTO OFFERTO IN RIUSO:...3

Dettagli

Laboratorio di Reti, Corsi A e B. Text-Twist. Progetto di Fine Corso A.A. 2016/17

Laboratorio di Reti, Corsi A e B. Text-Twist. Progetto di Fine Corso A.A. 2016/17 Laboratorio di Reti, Corsi A e B Text-Twist Progetto di Fine Corso A.A. 2016/17 1.Descrizione del problema Il progetto consiste nello sviluppo di un gioco multiplayer online. All inizio di una partita

Dettagli

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

Event loop. Event Loop. Carica il programma, quindi. Finché c è altro da fare. Attendi che qualcosa accada. Termina, a meno che non ci sia altro NODE.JS Node.js Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight

Dettagli

Strumenti per lo sviluppo e la gestione di Ontologie

Strumenti per lo sviluppo e la gestione di Ontologie Strumenti per lo sviluppo e la gestione di Ontologie stellato@info.uniroma2.it Ontology Editors Protégé Link al sito dello strumento http://protege.stanford.edu/ (scaricare Protege-OWL full version) Gestione

Dettagli

Tecnologie e applicazioni web JSON Web Token (JWT)

Tecnologie e applicazioni web JSON Web Token (JWT) Tecnologie e applicazioni web JSON Web Token (JWT) Filippo Bergamasco ( filippo.bergamasco@unive.it) http://www.dais.unive.it/~bergamasco/ DAIS - Università Ca Foscari di Venezia Anno accademico: 2017/2018

Dettagli

Basi di Dati Architetture Client/Server

Basi di Dati Architetture Client/Server Basi di Dati Architetture Client/Server Architettura centralizzata Un architettura è centralizzata quando i dati e le applicazioni (programmi) risiedono in un unico nodo elaborativo Tutta l intelligenza

Dettagli

Prof. Pagani corrado JAVA

Prof. Pagani corrado JAVA Prof. Pagani corrado JAVA NASCITA DI JAVA Java è stato creato, a partire da ricerche effettuate alla Stanford University agli inizi degli anni Novanta, da un gruppo di esperti sviluppatori capitanati da

Dettagli

Cosa è importante: pom.xml Goal Plug-in Repository

Cosa è importante: pom.xml Goal Plug-in Repository Cos è Maven? Maven è un software usato principalmente per la gestione di progetti Java e build automation, ma è utile anche per gestire documentazione, report, dipendenze... Cosa è importante: pom.xml

Dettagli

SISTEMI DI ELABORAZIONE

SISTEMI DI ELABORAZIONE SISTEMI DI ELABORAZIONE CORSO DI LAUREA MAGISTRALE IN INGEGNERIA ELETTRONICA SPECIFICHE DI PROGETTO A.A. 2017/2018 Il progetto deve essere realizzato singolarmente (non è possibile realizzarlo in gruppo).

Dettagli

Architetture Client/Server. Un architettura è centralizzata quando i dati e le applicazioni (programmi) risiedono in un unico nodo elaborativo

Architetture Client/Server. Un architettura è centralizzata quando i dati e le applicazioni (programmi) risiedono in un unico nodo elaborativo Basi di Dati Architetture Client/Server D B M G Architettura centralizzata Un architettura è centralizzata quando i dati e le applicazioni (programmi) risiedono in un unico nodo elaborativo Tutta l intelligenza

Dettagli

APP TertiumBleScan e TertiumBleScanSwift per sistema operativo ios

APP TertiumBleScan e TertiumBleScanSwift per sistema operativo ios APP TertiumBleScan e TertiumBleScanSwift per sistema operativo ios 0. Scopo e funzionalità della APP Le APP per sistema operativo ios TertiumBleScan e TertiumBleScanSwift sono rilasciate da Tertium Technology

Dettagli

Macchine astratte, linguaggi, interpretazione, compilazione

Macchine astratte, linguaggi, interpretazione, compilazione Macchine astratte, linguaggi, interpretazione, compilazione 1 Macchine astratte una collezione di strutture dati ed algoritmi in grado di memorizzare ed eseguire programmi componenti della macchina astratta

Dettagli

Architetture Client/Server. Un architettura è centralizzata quando i dati e le applicazioni (programmi) risiedono in un unico nodo elaborativo

Architetture Client/Server. Un architettura è centralizzata quando i dati e le applicazioni (programmi) risiedono in un unico nodo elaborativo Basi di dati Basi di Dati Architetture Client/Server Architettura centralizzata Un architettura è centralizzata quando i dati e le applicazioni (programmi) risiedono in un unico nodo elaborativo Tutta

Dettagli

Luca Tesei. Laboratorio di Sviluppo Web: Le Basi. Modulo IFTS. Fermo 31/03, 03/04, 07/ Prof. Luca Tesei Università di Camerino 1

Luca Tesei. Laboratorio di Sviluppo Web: Le Basi. Modulo IFTS. Fermo 31/03, 03/04, 07/ Prof. Luca Tesei Università di Camerino 1 Luca Tesei Laboratorio di Sviluppo Web: Le Basi Modulo IFTS Fermo 31/03, 03/04, 07/04 2017 Prof. Luca Tesei Università di Camerino 1 Informazioni di Contatto Email docente: luca.tesei@unicam.it Telefono:

Dettagli

Il software. Il solo hardware non è sufficiente per usare un calcolatore

Il software. Il solo hardware non è sufficiente per usare un calcolatore Sistemi Operativi Il software Il solo hardware non è sufficiente per usare un calcolatore Servono dei programmi per far interagire l hardware sfruttare le risorse di calcolo e memorizzazione facilitare

Dettagli

XAMPP Installazione e configurazione

XAMPP Installazione e configurazione XAMPP Installazione e configurazione Dispensa XAMPP - pag.1 XAMPP è una piattaforma software gratuita costituita da Apache Http Server, un database MySQL e tutti gli strumenti necessari per usare i linguaggi

Dettagli

LABORATORIO di Reti di Calcolatori

LABORATORIO di Reti di Calcolatori LABORATORIO di Reti di Calcolatori Architetture client-server 1 of 12 v slide della docente Bibliografia v testo di supporto: D. Maggiorini, Introduzione alla programmazione client-server, Pearson Ed.,

Dettagli

Linguaggi di Programmazione

Linguaggi di Programmazione Linguaggi di Programmazione Linguaggi di Programmazione Programmazione. Insieme delle attività e tecniche svolte per creare un programma (codice sorgente) da far eseguire ad un computer. Che lingua comprende

Dettagli

A. Ferrari introduzione alle basi di dati

A. Ferrari introduzione alle basi di dati introduzione alle basi di dati DataBase Management System DBMS o DataBase Management System o insieme di programmi che offrono a diverse tipologie di utenti tutti gli strumenti necessari per gestire grandi

Dettagli

Introduzione ai thread

Introduzione ai thread Introduzione ai thread Processi leggeri. Immagine di un processo (codice, variabili locali e globali, stack, descrittore). Risorse possedute: : (file aperti, processi figli, dispositivi di I/O..),. L immagine

Dettagli

5 Thread. 5 Thread. 5 Thread. Ad un generico processo, sono associati, in maniera univoca, i seguenti dati e le seguenti informazioni:

5 Thread. 5 Thread. 5 Thread. Ad un generico processo, sono associati, in maniera univoca, i seguenti dati e le seguenti informazioni: 1 Ad un generico processo, sono associati, in maniera univoca, i seguenti dati e le seguenti informazioni: codice del programma in esecuzione un area di memoria contenente le strutture dati dichiarate

Dettagli

Architetture Applicative Altri Esempi

Architetture Applicative Altri Esempi Architetture Applicative Altri Esempi Alessandro Martinelli alessandro.martinelli@unipv.it 15 Aprile 2014 Architetture Applicative Altri Esempi di Architetture Applicative Architetture con più Applicazioni

Dettagli

+ = EVAET. Azienda speciale

+ = EVAET. Azienda speciale + = EVAET Azienda speciale A cosa serve la web app di E.V.A.E.T.? L obiettivo di questa applicazione è quello di dare più visibilità alle aziende della Provincia di Novara verso l estero. Introduzione

Dettagli

Java il Corso Fondamentale

Java il Corso Fondamentale Java il Corso Fondamentale Imparare a Programmare APP per Android, applicativi per Server e Desktop, applet e molto altro. IlTuoCorso - Ermes srl Via E.De Amicis 57 20123 Milano Il corso Ciao! Se desideri

Dettagli

Inizializzare oggetti

Inizializzare oggetti Inizializzare oggetti Uso della Classe Software per TLC - AA 2008/2009 1 Costruttori e polimorfismo Uso della Classe Un codice migliore Software per TLC - AA 2008/2009 2 Costruttori ed Ereditarietà Output:

Dettagli

Lab ISW 2012/2013: Progetto

Lab ISW 2012/2013: Progetto 1 Lab ISW 2012/2013: Progetto Progetto GUASTO Il progetto GUASTO (Gran Ufficio Amministrazione Solidale Trasparente e Organizzata) consiste nella realizzazione di un applicazione Web per permettere ai

Dettagli

Model-View- Controller

Model-View- Controller Model-View- Controller A. FERRARI MVC Il Model-View-Controller è un pattern architetturale molto diffuso nello sviluppo di sistemi software, in particolare nell'ambito della programmazione orientata agli

Dettagli

Spazio di indirizzamento virtuale

Spazio di indirizzamento virtuale Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 016-01 Spazio di indirizzamento virtuale Pietro Di Lena - pietro.dilena@unibo.it // The function name says it all int stack_overflow (){

Dettagli

Struttura dei Sistemi Operativi

Struttura dei Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1 Struttura dei Componenti Servizi di un sistema operativo System Call Programmi di sistema Struttura del sistema operativo Macchine virtuali Progettazione e Realizzazione

Dettagli

PROGRAMMAZIONE DIDATTICA DI DIPARTIMENTO A.S. 2017/2018

PROGRAMMAZIONE DIDATTICA DI DIPARTIMENTO A.S. 2017/2018 ISTITUTO ISTRUZIONE SUPERIORE EINAUDI - SCARPA TECNOLOGICO - ECONOMICO PROFESSIONALE Via J. Sansovino, 6-31044 MONTEBELLUNA (TV)0423 23587 - Fax 0423 602717 web: www.iiseinaudiscarpa.gov.itemail: info@iiseinaudiscarpa.gov.it

Dettagli

Prima Prova (Traccia 1)

Prima Prova (Traccia 1) Prima Prova (Traccia 1) 1. Descrivere brevemente cosa è un sistema operativo. 2. Descrivere brevemente vantaggi e svantaggi di un linguaggio di programmazione cross-platform. 3. Descrivere brevemente i

Dettagli

Ingegneria del software

Ingegneria del software Ingegneria del software Modulo 3 Analisi statica del software Analisi statica automatica L analisi statica è una tecnica che consente di analizzare dei semilavorati software senza eseguirli (donde l appellativo

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2016-17 Pietro Frasca Lezione 4 Giovedì 20-10-2016 Struttura e organizzazione software dei sistemi

Dettagli

Introduzione al corso. Obiettivo del corso

Introduzione al corso. Obiettivo del corso Università della Calabria Corso di Laurea in Ingegneria Elettronica Programmazione Orientata agli Oggetti A.A. 2006/2007 Introduzione al corso Paolo Trunfio * * DEIS, Università della Calabria http://si.deis.unical.it/~trunfio

Dettagli

2. Cenni di sistemi operativi

2. Cenni di sistemi operativi 2. Cenni di sistemi operativi Andrea Marongiu (andrea.marongiu@unimore.it) Paolo Valente Contiene slides dal corso «Sistemi Operativi» dei prof. Gherardi/Scandurra dell Università degli studi di Bergamo

Dettagli

Procedura Python di WPS

Procedura Python di WPS Procedura Python di WPS guida dell utente e riferimento Versione: 4.1.2 Copyright 2002-2019 World Programming Limited www.worldprogramming.com Indice Introduzione...3 Installazione e configurazione...4

Dettagli

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma. Unità Didattica 1 Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C UNIX (1969) - DEC PDP-7 Assembly Language BCPL - un OS facilmente accessibile che fornisce potenti strumenti

Dettagli

Procedura di installazione rrunnweb

Procedura di installazione rrunnweb Procedura di installazione rrunnweb Preparazione dell ambiente RRUNNWEB può girare su qualsiasi piattaforma che fornisca i seguenti servizi: - un server web locale (ad esempio: Apache ver.2.2 o successive,

Dettagli

Remote file access sulla grid e metodi di interconnesione di rete

Remote file access sulla grid e metodi di interconnesione di rete Remote file access sulla grid e metodi di interconnesione di rete M. Donatelli, A.Ghiselli e G.Mirabelli Infn-Grid network 24 maggio 2001 Remote file access sulla grid Studio, progettazione e implementazione

Dettagli

Il sistema operativo

Il sistema operativo Il sistema operativo Vito Perrone Corso di Informatica A per Gestionali Indice Architettura Gestione dei processi Gestione della memoria centrale Driver Gestione dei file 2 1 Il sistema operativo E uno

Dettagli

Installazione del kernel Jupyter

Installazione del kernel Jupyter Installazione del kernel Jupyter Guida all'installazione Installazione del kernel Jupyter di WPS Versione: 4.0.3 Copyright 2002-2018 World Programming Limited www.worldprogramming.com Indice Introduzione...3

Dettagli

Lezione 6. Siti, Utenti e Sessioni

Lezione 6. Siti, Utenti e Sessioni Lezione 6 Siti, Utenti e Sessioni Classificazione dei siti Siti statici Sono siti con contenuti che variano poco frequentemente Dal punto di vista tecnologico sono costituiti da pagine html Siti dinamici

Dettagli

Dal sito web all applicazione mobile

Dal sito web all applicazione mobile Dal sito web all applicazione mobile Paolo Milazzo Dipartimento di Informatica Università di Pisa Metodologie Informatiche Applicate al Turismo A.A. 2017/2018 Premessa Queste slides includono molti link

Dettagli

Introduzione alle basi di dati. A. Ferrari

Introduzione alle basi di dati. A. Ferrari Introduzione alle basi di dati A. Ferrari Archiviazione mediante file I vari S.O. e i cosiddetti linguaggi ad alto livello mettono a disposizione varie tipologie di file per l archiviazione e gestione

Dettagli

SISTEMI DI ELABORAZIONE

SISTEMI DI ELABORAZIONE SISTEMI DI ELABORAZIONE CORSO DI LAUREA MAGISTRALE IN INGEGNERIA ELETTRONICA SPECIFICHE DI PROGETTO A.A. 2016/2017 Il progetto deve essere realizzato singolarmente (non è possibile realizzarlo in gruppo).

Dettagli

Tecnologie di Sviluppo per il Web

Tecnologie di Sviluppo per il Web Tecnologie di Sviluppo per il Web Applicazioni Web J2EE: Aspetti Metodologici versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca

Dettagli

Introduzione a Java Server Pages (JSP) (estratto) SAPIENZA Università di Roma Corso di Architetture Software Orientate ai Servizi

Introduzione a Java Server Pages (JSP) (estratto) SAPIENZA Università di Roma Corso di Architetture Software Orientate ai Servizi Introduzione a Java Server Pages (JSP) (estratto) SAPIENZA Università di Roma Corso di Architetture Software Orientate ai Servizi 1 JSP (Java Server Pages) È la tecnologia Java per lo sviluppo di applicazioni

Dettagli

Marco Tarini - Università dell'insubria A.A. 2016/17. Università degli Studi dell Insubria Dipartimento di Scienze Teoriche e Applicate

Marco Tarini - Università dell'insubria A.A. 2016/17. Università degli Studi dell Insubria Dipartimento di Scienze Teoriche e Applicate Università degli Studi dell Insubria Dipartimento di Scienze Teoriche e Applicate Astrazione e Macchine Virtuali parte 2: in un tipico calcolatore I livelli nei moderni calcolatori 6. Livello delle applicazioni

Dettagli

TECN.PROG.SIST.INF. I Socket Roberta Gerboni

TECN.PROG.SIST.INF. I Socket Roberta Gerboni 2015 - Roberta Gerboni Socket e porte I sistemi operativi multitasking possono fare girare contemporaneamente più processi dove ogni processo può rendere disponibili anche più servizi. Questi devono essere

Dettagli

Tecnologie di Sviluppo per il Web

Tecnologie di Sviluppo per il Web Tecnologie di Sviluppo per il Web JavaScript Concetti Fondamentali versione 2.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca Università

Dettagli

Anno Accademico Laboratorio di Tecnologie Web Uso di Firebug

Anno Accademico Laboratorio di Tecnologie Web Uso di Firebug Universita degli Studi di Bologna Facolta di Ingegneria Anno Accademico 2008-2009 Laboratorio di Tecnologie Web Uso di Firebug http://www-lia.deis.unibo.it/courses/tecnologieweb0809 Estensione del browser

Dettagli

Java: vantaggi e applicazioni di un linguaggio moderno in contesti aziendali e produttivi. Presentazione a cura di: Andrea Bertolini

Java: vantaggi e applicazioni di un linguaggio moderno in contesti aziendali e produttivi. Presentazione a cura di: Andrea Bertolini Java: vantaggi e applicazioni di un linguaggio moderno in contesti aziendali e produttivi Presentazione a cura di: Andrea Bertolini Obiettivi seminario Overview Java, origini Vantaggi e svantaggi Applicazioni

Dettagli

Web-based Simulations of Multi-agent Systems

Web-based Simulations of Multi-agent Systems Web-based Simulations of Multi-agent Systems AgentSimJs Cancemi Damiano Sistemi Distribuiti 2 - W82000075 Introduzione AgentSimJs è una soluzione basata su JavaScript, che permette di eseguire simulazioni

Dettagli

Programmazione in Java e gestione della grafica (I modulo) Lezione 2: Prime nozioni di Java

Programmazione in Java e gestione della grafica (I modulo) Lezione 2: Prime nozioni di Java Programmazione in Java e gestione della grafica (I modulo) Lezione 2: Prime nozioni di Java Programmi Un programma è un insieme di istruzioni che il computer deve seguire Usiamo programmi in continuazione

Dettagli

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica Corso di Laurea Ingegneria Informatica Laboratorio di Informatica Capitolo 4 Traduzione ed esecuzione di programmi Ottobre 2006 Traduzione ed esecuzione di programmi 1 Nota bene Alcune parti del presente

Dettagli

Informatica 1. 4 Programmazione e Sviluppo del software. ing. Luigi Puzone

Informatica 1. 4 Programmazione e Sviluppo del software. ing. Luigi Puzone Informatica 1 4 Programmazione e Sviluppo del software ing. Luigi Puzone Software Software, l insieme di programmi che consentono alla macchina di funzionare e svolgono le funzioni richieste dall utente

Dettagli

Le basi del linguaggio Java

Le basi del linguaggio Java Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una

Dettagli

SISTEMI OPERATIVI THREAD. Giorgio Giacinto Sistemi Operativi

SISTEMI OPERATIVI THREAD. Giorgio Giacinto Sistemi Operativi SISTEMI OPERATIVI THREAD 2 Motivazioni» Un programma complesso può eseguire in modo concorrente più funzioni attraverso la creazione e gestione di processi figli attraverso il meccanismo dei thread» La

Dettagli

Entity Framework & SQL Server - Better Together

Entity Framework & SQL Server - Better Together Entity Framework & SQL Server - Better Together Alberto Dallagiacoma @albertodall E-Mail: alberto.dallagiacoma@dotdotnet.org Blog: http://blogs.ugidotnet.org/alby Sponsors Organizers getlatestversion.it

Dettagli

A. Ferrari introduzione alle basi di dati

A. Ferrari introduzione alle basi di dati introduzione alle basi di dati informatica archiviazione mediante file o i vari S.O. e i cosiddetti linguaggi ad alto livello mettono a disposizione varie tipologie di file per l archiviazione e gestione

Dettagli

T2C2 Training to Code 2

T2C2 Training to Code 2 T2C2 Training to Code 2 Introduzione e Configurazione Laura Tarsitano laura.tarsitano@criadcoding.it Noi usiamo Snap! L'ambiente di progettazione di cartoline animate (micromondi) denominato Snap! è fruibile

Dettagli

Strutture lineari in Java

Strutture lineari in Java Strutture lineari in Java Scopo della esercitazione è quello di utilizzare strutture lineari del Java Collection Framework per realizzare strutture più complesse come le matrici. 1 Prerequisiti Verranno

Dettagli

Tecniche di gestione delle reti di calcolatori. Unità didattica 4.1 Organizzazione di una rete

Tecniche di gestione delle reti di calcolatori. Unità didattica 4.1 Organizzazione di una rete Tecniche di gestione delle reti di calcolatori Unità didattica 4.1 Organizzazione di una rete Sommario Client e server in una rete Servizi di un server Tipi di reti: Peer-to-Peer e reti Client-Server Gruppi

Dettagli

Sistemi Operativi SISTEMI DI INPUT/OUTPUT. D. Talia - UNICAL. Sistemi Operativi 10.1

Sistemi Operativi SISTEMI DI INPUT/OUTPUT. D. Talia - UNICAL. Sistemi Operativi 10.1 SISTEMI DI INPUT/OUTPUT 10.1 Sistemi I/O Hardware di I/O Interfaccia di I/O per le applicazioni Sottosistema per l I/O del kernel Trasformazione delle richieste di I/O Stream Prestazioni 10.2 I/O Hardware

Dettagli

Macchine astratte, linguaggi, interpretazione, compilazione

Macchine astratte, linguaggi, interpretazione, compilazione Macchine astratte, linguaggi, interpretazione, compilazione 1 Macchine astratte una collezione di strutture dati ed algoritmi in grado di memorizzare ed eseguire programmi componenti della macchina astratta

Dettagli

Linguaggi dinamici: quando nascono?

Linguaggi dinamici: quando nascono? Parte 1 Linguaggi dinamici: quando nascono? 1 Nascita di un linguaggio L'invenzione dei linguaggi di programmazione riflette il periodo storico e le necessità dei programmatori Architettura dei calcolatori

Dettagli