Generato da All in One SEO Pro v5.0.0.1, questo è un file llms-full.txt usato dai modelli di linguaggio di grandi dimensioni (LLM) per indicizzare il sito. # devACADEMY Corsi online per imparare a programmare, anche da zero. Intelligenza Artificiale, Data Science, Cloud, Database, Sviluppo Web e Mobile, Dev Ops e molto altro ## Articoli ### [Blog](https://devacademy.it/blog/) **Published:** Gennaio 23, 2019 **Author:** Rino Picardi --- ### [Come programmare: la guida completa per iniziare da zero nel 2026](https://devacademy.it/imparare-a-programmare/) **Published:** Luglio 19, 2018 **Author:** Rino Picardi **Content:** Vuoi imparare a programmare ma non sai da dove iniziare? Sei nel posto giusto. In questa guida trovi tutto quello che serve per partire da zero: cosa significa davvero programmare, quale linguaggio scegliere in base a ciò che vuoi costruire, i passi concreti da fare nelle prime settimane e una risposta onesta alla domanda che oggi si fanno tutti: ha ancora senso imparare a programmare adesso che esiste l’intelligenza artificiale? Spoiler: sì, e ti spiego anche perché è il momento migliore degli ultimi dieci anni. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## Cosa significa programmare (in parole semplici) Programmare significa scrivere istruzioni che un computer può eseguire. Queste istruzioni si scrivono in un linguaggio di programmazione, cioè una lingua con regole precise che sia tu che la macchina potete capire. Ogni cosa digitale che usi ogni giorno è fatta di codice: l’app della tua banca, il sito su cui ordini la cena, il navigatore in auto, il videogioco sul tuo smartphone. Dietro ognuno di questi c’è qualcuno che ha scritto, riga per riga, le istruzioni che li fanno funzionare. La buona notizia è che non serve essere geni della matematica. Programmare è soprattutto un modo di ragionare: scomporre un problema grande in tanti problemi piccoli e risolverli uno alla volta. È una capacità che si allena, esattamente come imparare una lingua straniera o uno strumento musicale. ## Ha senso imparare a programmare nell’era dell’AI? È la prima domanda da affrontare, perché se stai leggendo questa guida nel 2026 te la sei fatta di sicuro: “Con ChatGPT, Claude e Copilot che scrivono codice, ha ancora senso studiare programmazione?” La risposta è sì, ma il mestiere è cambiato. Ecco cosa succede davvero nel mondo del lavoro: - **L’AI scrive codice, ma qualcuno deve capirlo.** Gli strumenti AI generano codice velocemente, ma sbagliano, inventano soluzioni fragili e vanno guidati. Chi non sa programmare non è in grado di valutare, correggere e integrare quello che l’AI produce. Il valore si è spostato dallo scrivere ogni singola riga al saper progettare, verificare e mettere in produzione. - **È nata una nuova figura: lo sviluppatore AI.** Le aziende cercano persone capaci di costruire applicazioni che usano l’intelligenza artificiale: **chatbot**, **agenti AI**, **sistemi RAG** che interrogano documenti aziendali, integrazioni con i modelli linguistici. Sono competenze nuove, richiestissime, e chi parte oggi non ha decenni di ritardo da recuperare rispetto ai veterani: su queste tecnologie partite quasi tutti dallo stesso punto. - **Chi programma con l’AI è più produttivo, non sostituito.** Un principiante che impara oggi ha un tutor disponibile 24 ore su 24: può farsi spiegare un errore, chiedere un esempio alternativo, farsi correggere un esercizio. Imparare a programmare nel 2026 è più veloce di quanto lo sia mai stato. Se ti interessa proprio questa direzione, dai un’occhiata al [percorso AI Expert](https://devacademy.it/percorsi/ai-expert/): parte dalle basi e arriva a farti costruire agenti AI, chatbot, applicazioni RAG funzionanti e molto altro. » VUOI SAPERNE DI PIU’? SCOPRI I NOSTRI [CORSI ONLINE](https://devacademy.it/corsi/) E I NOSTRI [PERCORSI PROFESSIONALI](https://devacademy.it/percorsi/) « ## Come iniziare a programmare da zero: i 7 passi Ecco la roadmap concreta, quella che avrei voluto avere io quando ho iniziato. 1. **Decidi cosa vuoi costruire** Non partire dal linguaggio, parti dall’obiettivo. Vuoi creare siti web? App per smartphone? Lavorare con i dati? Costruire applicazioni con l’AI? La risposta determina tutto il resto del percorso. Se non lo sai ancora, nessun problema: il web development è il punto d’ingresso più comune e più flessibile, e le basi che impari lì valgono ovunque. 2. **Scegli UN linguaggio e restaci fedele** L’errore numero uno dei principianti è saltare da un linguaggio all’altro. Scegline uno (nella prossima sezione ti aiuto a farlo) e portalo avanti finché non riesci a costruire qualcosa di tuo. I concetti fondamentali (variabili, condizioni, cicli, funzioni) sono gli stessi in tutti i linguaggi: impararli bene una volta significa impararli per sempre. 3. **Segui un corso strutturato, non tutorial a caso** Su YouTube trovi migliaia di video, ma senza un ordine logico rischi il “tutorial hell”: guardi tanto, costruisci niente. Un corso strutturato ti dà una progressione sensata, esercizi con soluzioni e la certezza di non avere buchi nelle basi. È il motivo per cui i nostri [percorsi professionali](https://devacademy.it/percorsi/) sono organizzati in sequenze precise di corsi, dal primo “Hello World” fino a progetti completi. 4. **Scrivi codice ogni giorno, anche solo 30 minuti** La programmazione si impara con le dita, non con gli occhi. Guardare una videolezione senza replicare il codice è come imparare a nuotare leggendo un manuale. Trenta minuti al giorno battono cinque ore ammassate la domenica: la costanza costruisce memoria e abitudine. 5. **Rompi le cose, poi aggiustale** Prendi il codice degli esempi e modificalo: cambia un valore, aggiungi una funzione, prova a farlo fallire. Gli errori non sono il segno che non sei portato, sono lo strumento con cui si impara. Ogni messaggio di errore che risolvi da solo vale più di dieci lezioni. 6. **Costruisci un progetto tuo** Appena hai le basi, crea qualcosa di personale: una pagina web sul tuo hobby, uno script che rinomina i file, un piccolo gioco. Il progetto personale è ciò che trasforma le nozioni in competenza, ed è anche la prima cosa che mostrerai a un colloquio. 7. **Impara gli strumenti del mestiere** A un certo punto ti serviranno Git per gestire le versioni del codice (qui trovi il [percorso Git Expert](https://devacademy.it/percorsi/git-expert/)), un minimo di [database e SQL](https://devacademy.it/corsi/mysql/), e la capacità di usare bene gli assistenti AI. Non serve tutto subito: arrivaci quando il codice di base non ti spaventa più. ## Quale linguaggio di programmazione scegliere nel 2026 Ecco la tabella che risponde alla domanda in base a quello che vuoi fare: Cosa vuoi costruireLinguaggio consigliatoDa dove partireApplicazioni AI, agenti, chatbot, MCP, data science**Python**[Percorso Python Developer](https://devacademy.it/percorsi/python-developer/) e poi [AI Expert](https://devacademy.it/percorsi/ai-expert/)Analisi dati e machine learning**Python**[Percorso Data Scientist](https://devacademy.it/percorsi/data-scientist/)Siti e applicazioni web (lato utente)**JavaScript** (+ HTML e CSS)[Percorso JavaScript Developer](https://devacademy.it/percorsi/javascript-developer/)Applicazioni web complete, front-end e back-end**JavaScript + PHP (o Node.js)**[Percorso Full Stack Developer](https://devacademy.it/percorsi/full-stack-developer/) – [Percorso Node.js Developer](https://devacademy.it/percorsi/node-js-developer/)Interfacce web moderne**JavaScript + React (oppure Angular o Vue.js)**[Percorso React Developer](https://devacademy.it/percorsi/react-developer/) – [Percorso Angular Developer](https://devacademy.it/percorsi/angular-developer/) – [Percorso Vue.js Developer](https://devacademy.it/percorsi/vue-js-developer/)Software aziendale e back-end robusti**Java o .NET**[Percorso Java Web Developer](https://devacademy.it/percorsi/java-web-developer/) – [Percorso .NET Web Developer](https://devacademy.it/percorsi/net-web-developer/)Siti dinamici, e-commerce, WordPress**PHP**[Percorso PHP Developer](https://devacademy.it/percorsi/php-developer/)App Android**Java / Kotlin**[Percorso Android Developer](https://devacademy.it/percorsi/android-developer/)App iPhone e iPad**Swift**[Percorso iOS Developer](https://devacademy.it/percorsi/ios-developer/) Due consigli pratici: - Se non sai proprio cosa scegliere, parti da Python. È il linguaggio più leggibile per un principiante, è lo standard dell’intelligenza artificiale e della data science, e il suo mercato del lavoro è in piena espansione. - Se ti attira il web, parti da HTML e CSS (tecnicamente non sono linguaggi di programmazione, ma sono la porta d’ingresso del web) e poi passa a JavaScript. Il nostro [corso Introduzione a HTML e CSS](https://devacademy.it/corsi/introduzione-a-html-e-css/) è il punto di partenza ideale. » VUOI SAPERNE DI PIU’? SCOPRI I NOSTRI [CORSI ONLINE](https://devacademy.it/corsi/) E I NOSTRI [PERCORSI PROFESSIONALI](https://devacademy.it/percorsi/) « ## Il tuo primo programma: proviamo subito Vuoi vedere quanto è accessibile? Questo è un programma Python completo e funzionante: ``` nome = input("Come ti chiami? ") print(f"Ciao {nome}, benvenuto nel mondo della programmazione!") anni_esperienza = 0 if anni_esperienza == 0: print("Tutti i grandi programmatori sono partiti esattamente da qui.") ``` Tre concetti fondamentali in sei righe: una variabile che memorizza un dato (nome), un input dell’utente, una condizione che decide cosa fare (if). Puoi provarlo anche subito online su un interprete Python nel browser, senza installare nulla. Se ti è venuta voglia di capire come continua, il [corso Fondamenti di Python](https://devacademy.it/corsi/fondamenti-di-python/) parte esattamente da qui. ## Quanto tempo ci vuole per imparare a programmare? Dipende dall’obiettivo, ma ecco riferimenti realistici con studio costante (circa un’ora al giorno): - 1-2 mesi: padroneggi le basi di un linguaggio e scrivi piccoli programmi autonomi. - 4-6 mesi: costruisci progetti completi (un sito dinamico, una web app semplice, uno script di automazione utile). - 9-12 mesi: raggiungi un livello spendibile per candidarti a posizioni junior, con un portfolio di progetti da mostrare. Non è una gara. C’è chi va più veloce perché ha più tempo e chi va più lento perché studia la sera dopo il lavoro: entrambe le strade portano a destinazione, quello che conta è non fermarsi. ## Programmatore: sbocchi di lavoro e stipendi Quella dello sviluppatore resta una delle professioni più richieste in Italia: le aziende faticano a trovare candidati preparati, e le figure legate all’intelligenza artificiale sono oggi le più ricercate in assoluto. I ruoli più comuni per chi inizia: sviluppatore web (front-end, back-end o full stack), sviluppatore mobile, sviluppatore software, e le figure emergenti come AI developer e data analyst. Gli stipendi variano molto per zona e azienda, ma la traiettoria è chiara: si parte da retribuzioni junior nella media del mercato e si cresce rapidamente con l’esperienza, con le specializzazioni AI e cloud che oggi spuntano le retribuzioni migliori. Un altro vantaggio concreto: è uno dei settori con la più alta diffusione di lavoro da remoto. » VUOI SAPERNE DI PIU’? SCOPRI I NOSTRI [CORSI ONLINE](https://devacademy.it/corsi/) E I NOSTRI [PERCORSI PROFESSIONALI](https://devacademy.it/percorsi/) « ## Gli errori da evitare quando inizi - **Voler imparare tutto insieme.** Un linguaggio alla volta, un concetto alla volta. - **Guardare senza scrivere.** Ogni lezione va replicata con le tue mani. - **Copiare dall’AI senza capire.** Usa l’AI come tutor che ti spiega, non come distributore di soluzioni pronte. - **Mollare al primo muro.** Tutti si bloccano, i programmatori esperti si bloccano ogni giorno. La differenza la fa chi cerca, chiede e riprova. - **Aspettare di “sentirsi pronti” per fare progetti.** Non ti sentirai mai pronto: si impara costruendo. ## Domande frequenti ### Posso imparare a programmare da autodidatta? Sì, moltissimi sviluppatori professionisti hanno iniziato così. La chiave è seguire un percorso strutturato invece di materiale sparso, fare pratica quotidiana e costruire progetti propri. Un corso online ben organizzato ti dà la struttura dell’università con la flessibilità dell’autodidatta. ### Serve la laurea in informatica per lavorare come programmatore? No, non è obbligatoria. Nel settore contano soprattutto le competenze dimostrabili: molte aziende valutano il portfolio di progetti e le prove pratiche più del titolo di studio. La laurea resta un’ottima base teorica, ma non è l’unico ingresso nella professione. ### Serve essere bravi in matematica? Per la maggior parte dello sviluppo web e delle applicazioni basta la logica di base. La matematica avanzata serve solo in ambiti specifici come machine learning, grafica 3D o calcolo scientifico, e comunque si può imparare strada facendo. ### Qual è il miglior linguaggio di programmazione per iniziare? Python è la scelta più consigliata per chi parte da zero: sintassi leggibile, community enorme ed è il linguaggio di riferimento per l’intelligenza artificiale. Se il tuo obiettivo è il web, JavaScript è l’alternativa perfetta. ### Si può ancora trovare lavoro come programmatore con l’AI? Sì. L’AI ha cambiato il modo di lavorare, non eliminato il lavoro: le aziende cercano sviluppatori capaci di usare gli strumenti AI e, sempre di più, di costruire applicazioni basate sull’AI. Sono nate figure nuove, come l’AI developer, con più domanda che offerta. ### A che età si può imparare a programmare? A qualsiasi età. Abbiamo studenti che iniziano a 16 anni e studenti che cambiano carriera a 40 o 50. La programmazione non ha limiti anagrafici: servono curiosità e costanza, non un’età giusta. ## Da dove iniziare, concretamente, oggi Se sei arrivato fin qui, il passo successivo è semplice: scegli il tuo obiettivo nella tabella qui sopra e inizia dal percorso corrispondente. Su devACADEMY un’unica iscrizione ti dà accesso a [tutti i corsi](https://devacademy.it/corsi/) e i percorsi del catalogo, in italiano, con quiz di verifica e la possibilità di studiare al tuo ritmo, da qualsiasi dispositivo. Il momento migliore per iniziare a programmare era dieci anni fa. Il secondo momento migliore è oggi. » VUOI SAPERNE DI PIU’? SCOPRI I NOSTRI [CORSI ONLINE](https://devacademy.it/corsi/) E I NOSTRI [PERCORSI PROFESSIONALI](https://devacademy.it/percorsi/) « **Categorie:** Programmazione **Tag:** programmazione --- ### [Python Tuple: cosa sono, come usarle ed esempi pratici](https://devacademy.it/python-tuple-cosa-sono-come-usarle-ed-esempi-pratici/) **Published:** Febbraio 9, 2022 **Author:** Giuseppe Maggi **Content:** Quando si tratta di **programmare in Python** può capitare di doversi servire delle **Tuple**. Ma che cosa sono le tuple in Python? E come si usano? Leggi tutto l’articolo per conoscere questo strumento di aggregazione dati. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## Python tuple: di che cosa si tratta Il **linguaggio Python** dispone di diverse strutture dati per poter gestire ogni possibile modello di aggregazione di informazioni. Le tuple, di cui ci occuperemo oggi, sono molto comuni nella restituzione di valori e presentano due caratteristiche principali: 1. sono elementi sequenziali costituiti da una **concatenazione di valori di qualsiasi tipo, ognuno memorizzato per posizione**. In virtù di quest’ultimo fattore, permettono la presenza di duplicati; 2. **non sono modificabili**. Una volta che una tupla è stata inizializzata non se ne può più modificare il contenuto. Quest’ultimo aspetto è ciò che conferisce originalità alle tuple e non ne rappresenta affatto un limite ma più che altro un fattore di ottimizzazione. Vediamo dunque come **utilizzare le tuple in Python**. **VUOI IMPARARE A PROGRAMMARE IN PYTHON?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 60 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [VAI AI CORSI PYTHON](https://devacademy.it/percorsi/python-developer/) ## Come utilizzare le tuple in Python Creare una struttura dati di questo tipo richiede esclusivamente l’**elencazione dei suoi elementi all’interno di una coppia di parentesi tonde**. Lavorando dalla console interattiva di Python, creiamo una tupla che risponde al riferimento voti e contiene una serie di numeri: ``` >>> voti=(8,7,8,7,7,4,5,9,4,8,7,6,5,8) ``` Questo sarà il contenuto della **tupla**: ``` >>> voti (8, 7, 8, 7, 7, 4, 5, 9, 4, 8, 7, 6, 5, 8) ``` Per sapere quanti elementi contiene effettivamente potremo utilizzare la funzione built-in *len*: ``` >>> len(voti) 14 ``` La risposta ci informa che al suo interno ci sono quattordici elementi. Il contenuto di una tupla può essere letto con due operazioni principali che, come in altre strutture dati Python, rispondono al nome di *indexing* e *slicing*. ## Indexing e slicing in Python Per **indexing**, si intende l’accesso ad un singolo elemento della tupla passandone la posizione tra parentesi quadre. Chiariamo subito che, come spesso succede in programmazione, le posizioni sono contate a partire da 0 pertanto la tupla in questione che contiene quattordici elementi tollererà solo l’invocazione di una posizione compresa tra 0 e 13. Chiediamo il sesto elemento (posizione cinque) e otteniamo così il valore 4: ``` >>> voti[5] 4 ``` Le posizioni possono essere indicate anche con valori negativi. In questo caso, l’ultimo elemento della tupla sarà indicato con -1. Prendiamo il penultimo elemento, ad esempio, usando la posizione -2: ``` >>> voti[-2] 5 ``` Lo **slicing** permette di leggere un segmento di valori di una tupla, delimitato da due posizioni passate tra parentesi quadre e separate dal simbolo di due punti. Il seguente comando: ``` >>> voti[3:-2] restituisce: (7, 7, 4, 5, 9, 4, 8, 7, 6) ``` Si ricordi però che mentre la prima posizione è inclusiva, la seconda è esclusiva: infatti, il codice ha restituito tutto ciò che è compreso tra la posizione 3 fino alla posizione -3 (precedente alla -2 indicata come secondo elemento di *slicing*). Qualora non venisse indicata la prima posizione, la si considererebbe di default uguale a 0, mentre se mancasse la seconda lo *slicing* estrarrebbe fino all’ultimo elemento. Vediamo un altro esempio in cui si mostra l’impiego di due posizioni con valore positivo. Recuperiamo tutto ciò che si trova tra la posizione 1 e la 5: ``` >>> voti[1:6] (7, 8, 7, 7, 4) ``` **VUOI IMPARARE A PROGRAMMARE IN PYTHON?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 60 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [VAI AI CORSI PYTHON](https://devacademy.it/percorsi/python-developer/) ## I metodi delle tuple Le tuple possiedono anche alcuni metodi. Il **metodo count** restituisce il numero di elementi corrispondenti al valore passato come argomento: ``` >>> voti.count(7) 4 ``` Ciò significa che sono state trovate quattro istanze del valore 7 nella tupla. Il **metodo index** restituisce la posizione della prima occorrenza dell’elemento passato come argomento. In questo caso, ci dice la posizione del primo valore pari a 7: ``` >>> voti.index(7) 1 ``` Se a *index* passiamo due argomenti, il secondo rappresenta da quale posizione della tupla deve essere iniziata la ricerca. In questo caso, restituisce 10 perché è la posizione in cui trova il primo valore 7 dopo la posizione 5: ``` >>> voti.index(7, 5) 10 ``` A dimostrazione del fatto che **una tupla non è modificabile** vediamo che in effetti provando a forzare un nuovo valore in posizione 1 otterremmo un errore il cui messaggio avviserebbe che un oggetto tupla non supporta l’operazione di assegnazione: ``` >>> voti[1]=99 Traceback (most recent call last): File "", line 1, in TypeError: 'tuple' object does not support item assignment ``` Tra le funzioni built-in, infine, esiste anche *tuple* che permette di trasformare altri oggetti in tuple. Ad esempio, vediamo qui una lista che contiene alcuni elementi tutti modificabili e ciò è dimostrato dalla possibilità di assegnare il valore 999 alla posizione 3: ``` >>> lista=[4,5,6,7,8,9] >>> lista[3]=999 >>> lista [4, 5, 6, 999, 8, 9] ``` Con **tuple** possiamo chiedere di inizializzare una tupla con gli oggetti presenti nella lista ottenendo così una reale tupla, tanto che non potremo più assegnare alcun valore al suo interno. ``` >>> t=tuple(lista) >>> t (4, 5, 6, 999, 8, 9) >>> t[2]=1000 Traceback (most recent call last): File "", line 1, in TypeError: 'tuple' object does not support item assignment ``` Per concludere, possiamo affermare che l’uso della tupla in Python è utile in tutti quei casi in cui si necessita che l’algoritmo occupi uno spazio di memoria molto basso e con una velocità di elaborazione molto alta (mentre, al contrario le [liste in Python](https://devacademy.it/python-list-come-funzionano-le-liste-in-python-ed-esempi-pratici/) richiedono un processo di elaborazione maggiore). >> Se parti da zero, leggi la nostra guida su come [imparare a programmare](https://devacademy.it/imparare-a-programmare/) **VUOI IMPARARE A PROGRAMMARE IN PYTHON?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [VAI AI CORSI PYTHON](https://devacademy.it/percorsi/python-developer/) **Categorie:** Python **Tag:** Python --- ### [Bootstrap: cos'è e come usarlo](https://devacademy.it/bootstrap-cos-e-e-come-usarlo/) **Published:** Giugno 17, 2024 **Author:** Rino Picardi **Content:** **Bootstrap** è uno dei framework front-end più popolari e utilizzati al mondo. Se sei un programmatore o un aspirante programmatore interessato allo sviluppo web, è probabile che tu abbia già sentito parlare di Bootstrap. In questo articolo, esploreremo in dettaglio **cos’è Bootstrap**, come funziona e come può semplificare e migliorare il tuo processo di sviluppo dei tuoi siti web utilizzando l’ultima versione disponibile. ## Cos’è Bootstrap? Bootstrap è un framework open-source per lo sviluppo di interfacce web responsive e mobile-first. Creato da Mark Otto e Jacob Thornton presso Twitter, Bootstrap è stato rilasciato per la prima volta nel 2011. La sua popolarità è cresciuta rapidamente grazie alla facilità d’uso e alla capacità di risolvere problemi comuni nello sviluppo web, come la compatibilità cross-browser e la reattività. Con l’uscita della versione 5, Bootstrap ha introdotto numerosi miglioramenti e nuove funzionalità, continuando a essere uno strumento indispensabile per sviluppatori web di tutto il mondo. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## Perché Usare Bootstrap? ### 1. Facilità d’uso: Bootstrap è noto per la sua semplicità. Anche chi è alle prime armi con il web development può iniziare a utilizzarlo rapidamente grazie alla sua documentazione dettagliata e ai numerosi esempi. ### 2. Design responsive: Una delle caratteristiche principali di Bootstrap è il suo approccio mobile-first. Questo significa che i siti web costruiti con Bootstrap sono ottimizzati per dispositivi mobili fin dall’inizio e si adattano perfettamente a qualsiasi dimensione dello schermo. ### 3. Compatibilità cross-browser: Bootstrap assicura che il tuo sito web funzioni in modo coerente su tutti i principali browser, risparmiandoti tempo e fatica nelle fasi di testing e debugging. ### 4. Componenti riutilizzabili: Bootstrap include una vasta gamma di componenti predefiniti come pulsanti, modali, navbar e molto altro, che possono essere facilmente integrati e personalizzati nel tuo progetto. ### 5. Ultime novità con Bootstrap 5: Con l’ultima versione di Bootstrap, ci sono stati notevoli miglioramenti come la rimozione della dipendenza da jQuery, nuove utility per il layout, una migliore gestione della reattività e un sistema di icone migliorato. » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO BOOTSTRAP](https://devacademy.it/corsi/come-creare-un-sito-web-con-bootstrap/) « ## Come Funziona Bootstrap? Bootstrap è composto da tre elementi principali: HTML, CSS e JavaScript. Vediamo brevemente come questi tre elementi lavorano insieme per creare siti web moderni e funzionali. ### 1. HTML: Il markup HTML di Bootstrap è strutturato in modo da essere facilmente leggibile e modificabile. Utilizzando classi predefinite, puoi creare layout complessi con poche righe di codice. ### 2. CSS: Il file CSS di Bootstrap fornisce stili predefiniti per tutti i componenti dell’interfaccia utente. Puoi personalizzare questi stili per adattarli al design del tuo sito web. ### 3. JavaScript: Con Bootstrap 5, molti componenti interattivi possono essere utilizzati senza jQuery, rendendo il framework più leggero e veloce. Tuttavia, puoi comunque utilizzare i plugin JavaScript di Bootstrap per aggiungere funzionalità interattive ai tuoi componenti. ## Componenti Principali di Bootstrap Bootstrap offre una vasta gamma di componenti che puoi utilizzare per creare interfacce utente attraenti e funzionali. Ecco un elenco dei principali componenti di Bootstrap e una breve descrizione di ciascuno: ### 1. Alerts: Avvisi stilizzati per comunicare informazioni importanti all’utente. ``` This is a warning alert—check it out! ``` ### 2. Badges: Piccoli elementi di testo che indicano contatori o etichette. ``` Primary ``` ### 3. Breadcrumbs: Indicazioni di navigazione che mostrano il percorso dell’utente nel sito. ``` Home Library ``` » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO BOOTSTRAP](https://devacademy.it/corsi/come-creare-un-sito-web-con-bootstrap/) « ### 4. Buttons: Pulsanti stilizzati con vari stati e dimensioni. ``` Primary Button ``` ### 5. Cards: Contenitori flessibili e estensibili per contenuti di ogni tipo. ``` Card title Some quick example text to build on the card title and make up the bulk of the card's content. Go somewhere ``` ### 6. Carousel: Slider per immagini o contenuti con navigazione. ``` Previous Next ``` ### 7. Forms: Elementi di input e form stilizzati per la raccolta di dati. ``` Email address We'll never share your email with anyone else. Password Submit ``` ### 8. Modals: Finestre pop-up per contenuti extra o conferme. ``` Launch demo modal Modal title ... Close Save changes ``` » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO BOOTSTRAP](https://devacademy.it/corsi/come-creare-un-sito-web-con-bootstrap/) « ### 9. Navbars: Barre di navigazione reattive per il sito. ``` Navbar Home Features Pricing Disabled ``` ### 10. Toasts: Messaggi temporanei per feedback dell’utente. ![...](...) **Bootstrap** 11 mins ago Hello, world! This is a toast message. » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO BOOTSTRAP](https://devacademy.it/corsi/come-creare-un-sito-web-con-bootstrap/) « ## Come Iniziare con Bootstrap Per iniziare a utilizzare Bootstrap, segui questi semplici passaggi: ### Includi Bootstrap nel tuo progetto: Puoi includere Bootstrap nel tuo progetto scaricando i file dal sito ufficiale o utilizzando un CDN (Content Delivery Network). Ecco come includere Bootstrap tramite CDN: ``` ``` ### Crea il tuo layout: Utilizza le griglie di Bootstrap per creare un layout reattivo. La griglia di Bootstrap è basata su un sistema a 12 colonne che ti permette di creare layout complessi in modo semplice e intuitivo. ``` Colonna 1 Colonna 2 ``` ### Aggiungi componenti: Aggiungi componenti predefiniti come pulsanti, modali e form al tuo layout. Questi componenti sono completamente personalizzabili per adattarsi al design del tuo sito. ## Conclusione Bootstrap è uno strumento potente e versatile che può semplificare notevolmente il processo di sviluppo web. Che tu sia un principiante o un professionista esperto, Bootstrap offre una gamma di funzionalità e componenti che possono migliorare la qualità del tuo lavoro e ridurre i tempi di sviluppo. Se sei interessato a imparare di più su Bootstrap e su come utilizzarlo per creare siti web moderni e reattivi, ti invitiamo a scoprire i nostri corsi online. La nostra academy offre percorsi formativi completi per diventare un web developer professionista, con lezioni pratiche e approfondimenti su Bootstrap e altri strumenti essenziali per il web development. >> Se parti da zero, leggi la nostra guida su come [imparare a programmare](https://devacademy.it/imparare-a-programmare/) » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO BOOTSTRAP](https://devacademy.it/corsi/come-creare-un-sito-web-con-bootstrap/) « **Categorie:** Bootstrap **Tag:** Bootstrap --- ### [Laravel: cos'è, a cosa serve e perché usarlo?](https://devacademy.it/laravel-cose-a-cosa-serve-e-perche-usarlo/) **Published:** Giugno 29, 2023 **Author:** Matteo Merlotti **Content:** **Laravel** è un **web application framework** attivo dal 2011 basato su **PHP**, open-source, attivamente supportato da una grande community e arrivato ormai alla versione 10 nel momento in cui questo articolo viene scritto. Ma partiamo dalle basi: cos’è un framework? Generalmente parlando, un web framework è un insieme di librerie che vanno a definire un flusso di sviluppo (più o meno vincolato in base al framework di riferimento) per le principali funzionalità web come routing, database, template, gestione delle sessioni, ecc. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## Perché utilizzare un framework? All’inizio della carriera della maggior parte degli sviluppatori (me compreso), una volta raggiunto un certo livello di esperienza con un linguaggio, non è atipico ritrovarsi a pensare: > Che senso ha “vincolarsi” ad un framework e spendere tempo a studiarne le funzionalità quando posso scrivere codice da zero? Dopotutto ho raggiunto un certo livello di esperienza e posso riprodurre tutte le funzionalità che mi servono. Scrivere un framework da zero per capire di più quelli che si usano? Ottimo! Farlo per un progetto in produzione di un cliente? Sconsigliatissimo. Vediamo perché. Senza un framework, iniziando un nuovo progetto bisogna scrivere TUTTO. Da come gestire le route, alle funzioni di CRUD per il database, alla gestione delle sessioni e decine di altre cose. Certo, c’è la possibilità che abbiate già qualcosa in piedi da un progetto precedente da riutilizzare ma molto probabilmente è verticalizzato alle necessita del vecchio progetto e non è stato pensato per essere facilmente estendibile. Nel caso invece pensiate di utilizzare delle librerie, dovete preoccuparvi della loro compatibilità e delle eventuali funzioni deprecate nelle versioni future. Un framework invece pensa a tutto questo per voi. Vi fornisce delle funzioni e un flusso che andrete ad utilizzare indipendentemente dalle modifiche che gli sviluppatori faranno al codice sorgente per risolvere bug o problemi di compatibilità. Senza contare che tutte le funzionalità sono state testate da buona parte della community in una fase alpha prima che il framework venga rilasciato in produzione, così da essere sicuri di non ricevere sorprese. Inoltre, andando ad utilizzare un framework per come è stato pensato, la necessità di scrivere commenti per rendere agevole la lettura del vostro codice ad altri sviluppatori si riduce il minimo, andando a concentrarsi solo nelle funzioni specifiche dell’architettura del vostro progetto. Tutto il resto è già presente nella documentazione del framework. » VUOI SAPERNE DI PIU’? SCOPRI IL NOSTRO [PERCORSO BACK-END DEVELOPER CON LARAVEL](https://devacademy.it/percorsi/back-end-developer-con-laravel/) « ## Perché proprio Laravel La scelta di quale framework scegliere è soggettiva. Tuttavia, posso portarvi la mia esperienza personale. Avendone provati una gran parte e sopratutto utilizzando Laravel attivamente ogni giorno anche per progetti di grandi dimensioni, posso dire che sia il migliore per quanto riguarda curva d’apprendimento, supporto degli sviluppatori, community, estensioni e performance. Inoltre, ho perso il conto di quante volte davanti ad una funzionalità richiesta all’ultimo momento dal cliente ho poi scoperto che Laravel aveva un modo per gestirla o esisteva una libreria dedicata compatibile. ### È un progressive framework Gli stessi sviluppatori lo definiscono tale e intendono che Laravel cresce con voi. Serve pochissima esperienza per costruire un sito web base e potrete inserire funzionalità complesse solo quando ne avrete bisogno. Per questo Laravel è pieno di guide ufficiali e documentazioni per supportarvi al bisogno ### È un framework scalabile Laravel è incredibilmente scalabile. Grazie alla natura di php che aiuta questo aspetto e al supporto nativo di Laravel per una un sistema di cacheing veloce e distribuito come Redis, lo scaling orizzontale di Laravel è facilissimo. Infatti, ci sono applicazioni scritte in Laravel che gestiscono centinaia di milioni di richieste mensili. ### È un community Framework Laravel combina le migliori librerie PHP nell’ecosistema per offrire il framework più robusto e developer-friendly in circolazione. Oltre a questo, migliaia di sviluppatori nel mondo hanno contribuito a migliorarlo o a scrivere librerie » VUOI SAPERNE DI PIU’? SCOPRI IL NOSTRO [PERCORSO BACK-END DEVELOPER CON LARAVEL](https://devacademy.it/percorsi/back-end-developer-con-laravel/) « ## Sì, ma come funziona Laravel? Per spiegare nel dettaglio questa parte servirebbero conoscenze che esulano dallo scopo di questo articolo, ma possiamo riassumere le funzionalità generali nei seguenti macro punti. ### Facilmente installabile Anche Laravel come moltissimi altri framework utilizza **composer** per gestire l’installazione, l’upgrade e l’aggiunta di librerie. Una volta scelto dove installare il vostro progetto, vi basterà lanciare da terminale `composer create-project laravel/laravel nomeprogetto` e avrete dopo pochi istanti tutto pronto dentro la cartella “nomeprogetto” creata da composer. Avete bisogno di aggiungere una libreria? vi basterà lanciare da terminale il comando `composer require nomelibreria` per trovarla installata e subito utilizzabile. ### Unico entry point Uno dei punti fondamentali del funzionamento della maggior parte dei framework si basa sul fatto che tutte le richieste fatte al server sono convogliate in unico punto dove vengono poi smistate in base alla necessità. In pratica, ogni richiesta viene convogliata in un’unica pagina `index.php` dove viene elaborata. Successivamente vengono poi chiamate le funzioni specifiche in base al tipo di richiesta. Prendiamo come esempio queste 3 pagine di un sito: - sitoweb.com/home - sitoweb.com/contatti - sitoweb.com/chi-siamo in una struttura classica, avremo la root del nostro dominio con 3 cartelle (home, contatti, chi-siamo) con all’interno di ognuna un file denominato `index.php`, il quale includerà eventualmente altri file necessari e avrà i dati che ci servono per mostrare la grafica della pagina richiesta. In un framework come Laravel invece, non serve creare ogni cartella ma basta specificare nell’elenco delle routes la risposta che volgiamo restituire, che sia una pagina, un file, o una struttura JSON di un’API. Ad esempio, la struttura per le pagine sopra sarebbe: ``` // file routes/web.php Route::get('home', function(){ return view('home');``` ``` }); Route::get('contatti', function(){ return view('contatti'); }); Route::get('chi-siamo', function(){ return view('chi-siamo'); }); ``` In sostanza quando Laravel riceverà una richiesta dal browser, ad esempio \*sitoweb.com/contatti\*, guarderà nel file sopra, troverà che l’url richiesto corrisponde alla seconda route e chiamerà quindi la funzione corrispondente. Per il momento vi basta sapere che la funzione `view` non fa altro che recuperare un file di template nella cartella `resources/views`. Questo sistema agevolerà tantissimi casi di integrazioni di funzionalità, alcuni dei quali vedremo meglio nel punto legato ai vantaggi. ### Struttura Lo scheletro di Laravel è basato sullo schema **Model-View-Controller (MVC)**: - **Model**, dove vengono recuperati, convertiti e/o formattati i dati. Ad esempio una classe *Prodotto* che si occupa di recuperare i dati in una tabella di un database e formattare il prezzo con le migliaia separate da apici - **View**, dove è contenuto il layout delle pagine che saranno visualizzate - **Controller**, il quale si occupa di far comunicare le due parti precedenti elaborando eventualmente i dati ricevuti da una prima di passarli all’altra. Questa struttura serve per delegare diverse responsabilità a componenti diversi così da avere una struttura logica definita ed evitare di riempire un unico file di codice. Ad esempio, è concettualmente sbagliato inserire nella view di una pagina delle funzioni per il calcolo di qualcosa. Questo deve essere fatto nel controller o nel model in base alla tipologia. » VUOI SAPERNE DI PIU’? SCOPRI IL NOSTRO [PERCORSO BACK-END DEVELOPER CON LARAVEL](https://devacademy.it/percorsi/back-end-developer-con-laravel/) « ## Perchè Laravel? ### Sicurezza Uno dei punti focali di Laravel è la sicurezza. Utilizza di Bcrypt come algoritmo di hashing per salvare password nel database non in chiaro. Ha una gestione nativa contro il cross-site scripting attraverso un token richiesto in ogni richiesta POST. Attraverso Eloquent protegge da possibili SQL Injection ### Gestione di exception ed errori Ogni exception non gestita manualmente, viene comunque presa in carico da Laravel Attraverso questo si può impedire la visualizzazione da parte degli utenti degli errori o della classica pagina bianca senza informazioni. Impostando Laravel in modalità produzione e creando una pagina dedicata, possiamo usare quest’ultima come ultima spiaggia nel caso qualcosa non funzioni. Inoltre, di default Laravel salva gli errori in un file di log ma è già predisposto per poter aggiungere facilmente altre modalità in caso di exception specifiche, come ad esempio l’invio di una mail o l’invio di un messaggio ad un canale Slack ad esempio. ### Ottima gestione del database Le operazioni nel database con Laravel sono eccezionali. Sfrutta **Eloquent**, uno degli ORM (Object-Relational Mapping) migliori. Come esempio, prendiamo la necessità di effetturare operazioni di lettura, scrittura, aggiornamento ed eliminazione (classico CRUD) su una tabella chiamata *articoli*. Tutto quello che dobbiamo fare sarà creare un classe specifica (denominata in gergo **model**) la quale estende una classe di Eloquent chiamata Model ``` class Articolo extends Database/Eloquent/Model { protected $primaryKey = 'id'; protected $table = 'articoli'; } ``` Tutto qui. Vi serve indicare solo il nome la tabella e il nome della chiave primaria. Tutto il resto delle funzioni sono gestite dalla classe padre `Model`. Ora, quando vi serve effettuare delle operazioni su quella tabella vi basterà usare i seguenti metodi: ``` // recuperare tutti gli articoli del 2022 // "created_at" è la colonna con la data di creazione dell'articolo $articoli = Articolo::whereYear('created_at', 2022)->get(); // recuperare un singolo articolo con id 42 $articolo = Articolo::find(42); // creare un articolo // author_id, title, content sono colonne della tabella "articoli" nel db $nuovoArticolo = Articolo::create([ 'author_id' => 123, 'title' => "Titolo dell'articolo", 'content' => "Contenuto dell'articolo", ]); // recuperare l'id del nuovo articolo appena creato $id = $nuovoArticolo->id; // aggiornare il titolo dell'articolo con id 42 Articolo::where('id', 42)->update([ 'title' => "Titolo dell'articolo modficato", ]); // eliminare l'articolo con id 42 Articolo::where('id', 42)->delete(); ``` » VUOI SAPERNE DI PIU’? SCOPRI IL NOSTRO [PERCORSO BACK-END DEVELOPER CON LARAVEL](https://devacademy.it/percorsi/back-end-developer-con-laravel/) « ## Vantaggi Un buon framework si vede anche dalla facilità in cui le funzionalità possono essere introdotte mano a mano che la complessità del progetto le richiede. Vediamo le principali. ### Middlewares I middleware sono funzioni che vengono eseguite prima che la funzione della vostra route venga chiamata. In questo modo potete effettuare dei controlli prima di consentire l’accesso all’utente. Ad esempio potete verificare che sia loggato, che sia un utente premium, ecc. Prendiamo il caso iniziale con le 3 pagine (home, chi-siamo, contatti) e poniamo il caso di voler consentire l’accesso solo ad utenti che si sono loggati. Nella gestione classica dovremmo andare ad inserire le funzioni che controllano se un utente è loggato in ogni file `index.php` delle cartelle. Con Laravel, basta mettere quelle route dentro ad un middleware, così ``` Route::middleware('auth', function(){ Route::get('home', function(){ return view('home'); }); Route::get('contatti', function(){ return view('contatti'); }); Route::get('chi-siamo', function(){ return view('chi-siamo'); }); }); ``` Nella prima riga indichiamo a Laravel di utilizzare il middleware `auth` per ognuna delle route contenute all’interno. Questo middleware esce nativo con Laravel ma possiamo crearne altri facilmente in modo molto simile a quando abbiamo esteso la classe `Model` per il database. Mi è capitato ad esempio che in una piattaforma gestionale con dozzine e dozzine di pagine, il cliente volesse integrare nella maggior parte di esse la possibilità di far accettare delle clausole agli utenti se non l’avessero ancora fatto. Mi è bastato creare un middleware che controllasse se l’utente loggato abbia o meno nel database la voce flaggata e aggiungere tutte le route che mi servivano sotto quel middleware. ### Relazioni ORM Precedentemente abbiamo visto come sia facile interrogare il database con Eloquent. Tuttavia una sola tabella non rappresenta i casi reali. Vediamo come Eloquent ci viene in aiuto anche in questi casi. Poniamo di avere oltre alla tabella *articoli* anche una tabella *autori* ovviamente interconnesse tra loro tramite le colonne *author\_id* nella tabella prima e *id* nella seconda. L’associazione nel model *Articolo* sarà il seguente ``` class Articolo extends Database/Eloquent/Model { protected $primaryKey = 'id'; protected $table = 'articoli'; public function autore() { return $this->belongsTo(Autore::class, 'author_id', 'id'); } } ``` Abbiamo indicato nella funzione `autore()` che la nostra classe Articolo è relazionata a quella Autore tramite i campi indicati. `belongsTo` è una funziona della classe `Model` che abbiamo estesa e fa tutto il collegamento al posto nostro. Nel model Autore invece ``` class Autore extends Database/Eloquent/Model { protected $primaryKey = 'id'; protected $table = 'autori'; public function articoli() { return $this->hasMany(Articolo::class, 'author_id', 'id'); } } ``` Stessa cosa della classe precedente. L’unica differenza sta nell’utilizzo di `hasMany` che si comporta come `belongsTo` solo che ritorna più record invece che uno solo, proprio perché un autore può avere più articoli, mentre un articolo può avere solo un autore. Ora, quando avremo bisogno di queste relazioni potremo recuperarle facilmente: ``` $articolo = Articolo::find(42); $articolo->autore; // oggetto dell'autore $articolo->autore->id; // id dell'autore nella tabella autori $articolo->autore->nome; // nome dell'autore nella tabella autori $autore = Autore::find(123); $autore->articoli // collection contente tutti gli articoli dell'autore $autore->articoli->count(); // numero totale degli articoli $autore->articoli[0]->titolo; // titolo del primo articolo in quelli recuperati // possiamo anche sfruttare la relazione nelle query, ad esempio: // recuperare tutti gli articoli con autori che iniziano con la "D" Articolo::whereHas('autore', function($query){ return $query->where('nome', 'like', "D%") })->get(); // Recuperare autori che hanno almeno un articolo Autori::whereHas('articoli')->get(); // Recuperare autori che hanno articoli scritti nel 2021 Autori::whereHas('articoli', function($query){ return $query->whereYear('created_at', 2021) })->get(); ``` » VUOI SAPERNE DI PIU’? SCOPRI IL NOSTRO [PERCORSO BACK-END DEVELOPER CON LARAVEL](https://devacademy.it/percorsi/back-end-developer-con-laravel/) « ### Accessors e Mutators Restando sempre in tema model, troviamo due strumenti utilissimi per modificare dei dati prima di recuperarli o assegnarli. Nel primo caso si chiamano *acessors*. Un esempio pratico può essere quello di recuperare il nome completo di un utente loggato unendo i valori di *nome* e *cognome*. Potremo ottenere il risultato facilmente con ``` class User extends Model { // definizione accessor public function getNomeCompletoAttribute() { return "$this->nome $this->cognome"; } } // utilizzo acessors fuori dalla classe $nomeCompleto = $user->nomeCompleto; ``` per definire un accessor basta creare una funzione con il nome dell’attributo che vogliamo creare inserito tra `get` e `Attribute` Quando vogliamo utilizzarlo basta utilizzare il nome dell’attributo senza *get* e *Attribute*, come nell’esempio. Per quanto riguarda i *mutators* invece funzionano similmente ai precedenti, con la differenza che hanno lo scopo di modificare un valore prima di assegnarlo al model. Vediamo un esempio pratico per capirci meglio. Nel database MySql le date vengono utilizzate con il formato *YYYY-MM-DD* mentre in Italia utilizziamo il formato *DD-MM-YYYY*. Ora, la nostra applicazione permette tramite un form in fase di creazione dell’utente di indicare la propria data di nascita. Dato che non è buon design far compilare all’utente la data nel formato del database dobbiamo quindi convertirla prima di assegnarla al model. Ovvero, una data di nascita 01-02-1990 inserita dall’utente, deve essere convertita in 1990-02-01. Possiamo quindi sfruttare i Mutators in questo modo: ``` class User extends Model { // definizione mutator public function setDataNascitaAttribute( $data ) { $dataCorretta = DateTime::createFromFormat('dd-mm-yyyy', $data); $this->attributes['dataNascita'] = $dataCorretta->format('yyyy-mm-dd'); } } ``` Ora non dovremo più preoccuparci di convertire la data prima di assegnarla: ``` // Recupero data nascita dal form inviato (in formato gg-mm-aaaa) $dataNascita = request()->get('dataNascita'); // assegnazione a model. Il mutator farà il lavoro per noi $user->dataNascita = $dataNascita; ``` Se ad esempio la piattaforma avrà anche un pannello admin dove gli amministratori possono creare utenti autonomamente, non dovremo aggiungere altro codice per convertire la data perché passeremo comunque dal mutator già creato. Ovviamente eccessors e mutators possono essere anche più complessi, come ad esempio controllare che la data non sia già in formato corretto prima di convertirla. In un caso reale, un uso praticamente costante lo faccio nei valori di costi/prezzi. Premessa: a causa di possibili problemi di arrotondamento è buona norma salvare i prezzi nel database in centesimi e non i euro (quindi 18,99 viene salvato come 1899). Ogni volta che un prezzo di un prodotto viene assegnato/recuperato deve quindi subire una trasformazione. Questo, come gli esempi precedenti viene soddisfatto velocemente in questo modo: ``` class Product extends Model { public function getPriceAttribute() { return $this->price / 100; } public function setPriceAttribute( $price ) { $this->attributes['price'] = $price * 100; } } ``` Fatto ciò, non devo più preoccuparmi in nessun altro punto dell’applicazione di effettuare la conversione quando chiamo `$product→price` per il recupero o per l’assegnazione di un valore ### Utenti loggati Quante volte dobbiamo verificare nella nostra piattaforma che l’utente sia loggato e/o che rispetti determinate caratteristiche? Con Laravel abbiamo moltissime funzioni che ci vengono in supporto: ``` // Logghiamo l'utente con id 42 auth()->login(User::find(42)); // verfichiamo se l'utente corrente è loggato auth()->guest() // ritorna true se non è loggato // recuperare l'utente corrente $user = auth()->user(); $user->email; // email dell'utente $user->id; // id dell'utente // logout utente, cancellazione sessione ed invalidamento cookies auth()->logout(); ``` » VUOI SAPERNE DI PIU’? SCOPRI IL NOSTRO [PERCORSO BACK-END DEVELOPER CON LARAVEL](https://devacademy.it/percorsi/back-end-developer-con-laravel/) « ## Dove iniziare e requisiti Se stai pensando di iniziare a studiare Laravel da zero ti consigliamo di dare uno sguardo al nostro percorso professionale “[Back-end Developer con Laravel](https://devacademy.it/percorsi/back-end-developer-con-laravel/)“. All’interno troverai sia i corsi su Laravel che quelli propedeutici sugli argomenti che dovresti conoscere prima di avventurarti con questo framework. Dovrai necessariamente avere infatti una: - Buona conoscenza di HTML, CSS - Buona conoscenza di PHP OOP È consigliata inoltre la conoscenza base di JS (nel caso avessi bisogno trovi qui il nostro [Percorso per Programmatori Javascript](https://devacademy.it/percorsi/javascript-developer/)). Non è direttamente legato al funzionamento di Laravel, ma sapere come funziona JS e dove inserire gli script aiuterà sicuramente. ## Risorse ufficiali - [Documentazione ufficiale Laravel](https://laravel.com/docs/) >> Se parti da zero, leggi la nostra guida su come [imparare a programmare](https://devacademy.it/imparare-a-programmare/) » VUOI SAPERNE DI PIU’? SCOPRI IL NOSTRO [PERCORSO BACK-END DEVELOPER CON LARAVEL](https://devacademy.it/percorsi/back-end-developer-con-laravel/) « **Categorie:** Laravel, PHP **Tag:** Laravel, PHP --- ### [Node.js](https://devacademy.it/node-js/) **Published:** Ottobre 1, 2019 **Author:** Giuseppe Maggi **Content:** Di questi tempi, consultando offerte di lavoro, capita spesso di imbattersi in ricerche di personale competente in Node.js. Tuttavia non tutti hanno un’idea chiara di cosa questa piattaforma rappresenti, eppure parliamo di una delle più grandi invenzioni dell’Informatica moderna, tale da aver influito su molti ambiti tecnologici con grande forza di impatto. Alcuni, già abbastanza informati, potrebbero asserire che Node.js sia “il server Javascript”. Ciò non è una definizione del tutto errata ma Node.js può essere considerato molto molto di più. Tutti i dubbi saranno fugati grazie a questo articolo in cui spiegheremo esattamente **cos’è Node.js**, dove lo utilizziamo più o meno direttamente e come possiamo fare a diventarne esperti. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## Node.js: le origini **Node.js** è un runtime Javascript. In pratica, un ambiente di esecuzione che permette di eseguire codice Javascript come un qualsiasi **linguaggio di programmazione**. Ciò non sembra più di tanto stupefacente, ma chi viene dalla programmazione web sa bene che **Javascript** nasce come linguaggio web lato client che, pertanto, può essere eseguito solo all’interno di un browser. Ecco, se volessimo spiegare con pochissime parole in cosa consiste la sua carica rivoluzionaria potremmo dire che Node.js ha fatto uscire Javascript dal browser trasformandolo in un linguaggio di programmazione come qualsiasi altro. Ciò è di grande valore considerando che Javascript è uno dei linguaggi più veloci da imparare (almeno come approccio alle prime basi) ed è uno dei più conosciuti al mondo. Dotando Javascript di un suo ambiente di runtime possiamo utilizzarlo per svolgere qualsiasi tipo di programma: da elaborazioni statistiche, scientifiche e via dicendo, a interazioni con rete e database, fino all’utilizzo come server. Ma questi non sono che esempi, vedremo che Node.js ha saputo porre le basi di molti ambienti influenzando ambiti come il mobile, l’IoT (Internet of Things) e la **programmazione** desktop. Node.js nasce nel 2009 da V8, un motore per il runtime Javascript sviluppato da Google per il browser Chrome. E’ stata proprio la capacità di V8 di lavorare in modalità stand-alone ovvero come programma autonomo a dare il LA a tutte le potenzialità di Node.js. Per quanto riguarda ulteriori caratteristiche, parliamo – come si può immaginare – di un prodotto open source, gratuito e multipiattaforma, utilizzabile su qualsiasi sistema operativo, e seguito da una delle più folte e attive comunità di sviluppatori al mondo. Inoltre Node.js si basa su un meccanismo di reazione agli eventi che gli permette, al contempo, di consumare poche risorse ed essere opportunamente reattivo quando serve. » VUOI SAPERNE DI PIU’? SCOPRI IL NOSTRO [CORSO NODE.JS](https://devacademy.it/percorsi/node-js-developer/) « ## Prepariamo l’ambiente Node.js Il punto di partenza è il [sito ufficiale del progetto Node.js](https://nodejs.org/it/). Al centro della pagina troviamo i link per lo scaricamento della piattaforma. ![Download Node.js](https://devacademy.it/wp-content/uploads/2019/09/nodejs-01.png) Notiamo, innanzi tutto, che il sito si è accorto subito che l’abbiamo chiamato da un computer Windows (nel nostro caso), ci propone pertanto versioni per questo sistema operativo. Tuttavia, come abbiamo già detto, Node.js è un **ambiente di sviluppo multipiattaforma** quindi si può usare su qualsiasi tipo di PC: è sufficiente selezionare il link “Altri download” per poter visualizzare tutte le opzioni disponibili. ![Download Node.js windows, mac, linux](https://devacademy.it/wp-content/uploads/2019/10/nodejs-02.png) Un aspetto con cui si deve prendere da subito confidenza in Node.js è il suo **sistema di versioning** ossia le versioni che vengono assegnate alle varie edizioni. Ad esempio, le immagini precedenti mostrano che attualmente ve ne sono due in primo piano, la 10 e la 12, una consigliata e l’altra corrente: cerchiamo di capirci un po’ di più. Le **versioni di Node.js** vivono in tre stadi principali: - **Current** (“corrente” in italiano): una versione resta current a partire dalla sua uscita per circa sei mesi; - **Active LTS** (long-term support): le versioni con numero pari (la 10, la 12, etc.) al termine dei sei mesi in cui sono current diventano attive e quindi indicate per l’uso generico di ogni tipo mentre le versioni dispari (la 9, la 11, etc.) vengono abbandonate; - **Mantainance** (mantenimento a lungo termine): è il destino di tutte le versioni pari alla fine del periodo in cui sono Active. Versioni LTS vengono mantenute e aggiornate per circa trenta mesi pertanto è uno stato in cui la versione è perfettamente affidabile. La fotografia attuale è fornita dal seguente grafico che permette di comprendere meglio le opzioni prima mostrate: ![Versioni Node.js](https://devacademy.it/wp-content/uploads/2019/10/nodejs-03.png) Ora si spiega meglio perché la 12 sia classificata come corrente (è nei primi 6 mesi di vita) e quale sia il suo destino: essendo versione con numero pari la aspetta un supporto di lungo termine e potremo pertanto usarla ancora per molti mesi. La 10 non essendo più Current bensì Active è quella che viene consigliata alla maggior parte degli utenti, tranne quelli che hanno assoluto interesse a sperimentare nuove funzionalità. Inoltre si spiega altresì perché non vi sia traccia della versione 11. In generale, a scopo di produzione sono sempre da scegliere versioni in stato Active o Mantainance. Pertanto, per avere a disposizione un ambiente di lavoro completo sarà sufficiente scaricare la più recente versione stabile ed installarla nel proprio sistema: da qui le operazioni non saranno così complicate, l’intero procedimento si ridurrà a pochi click. Il risultato sarà la possibilità di avere Javascript disponibile come linguaggio da usare in script e tramite console, in maniera interattiva. Ad esempio, per iniziare nel modo più classico, con un programma che stampa il messaggio “Hello world!”, sarà sufficiente scrivere in un file di testo denominato hello.js la riga: ``` console.log("Hello world!") ``` e lanciarlo da riga di comando con la direttiva: ``` $ node hello.js ``` Da qui in poi si potrà utilizzare all’interno di uno script tutto il Javascript che si conosce, più le molte librerie disponibili che per Node.js sono richiamabili da Internet mediante lo strumento noto come **npm**, il package manager già incluso nella piattaforma. » VUOI SAPERNE DI PIU’? SCOPRI IL NOSTRO [CORSO NODE.JS](https://devacademy.it/percorsi/node-js-developer/) « ## Cosa posso fare con Node.js? Dicevamo che Node.js può essere impiegato in molti ambiti, ecco di seguito quelli di maggiore appeal nello scenario lavorativo attuale: - **Realizzazione di backend web**. Questo è uno degli utilizzi primari di Node.js. Permette di sfruttare Javascript per realizzare componenti server da far interagire con app mobile (qualsiasi tipo, sia Android sia iOS) e web app. Tutto il necessario, a livello di comunicazione, viene messo a disposizione da diverse librerie, ma esiste un framework, [Express.js](https://expressjs.com/it/), che può essere integrato nel nostro progetto e da lì in poi non dovremo far altro che completare il codice in modo che risponda alle nostre finalità; - **IoT** (Internet of Things) **e domotica**. La sua semplicità di programmazione e la sua estrema efficienza a livello di risorse ha reso in questi anni Node.js uno scenario ideale per la realizzazione di applicazioni da integrare in dispositivi dedicati all’IoT e alla domotica in genere. Molto successo sta riscuotendo [Node-RED](https://nodered.org/), uno strumento di lavoro basato su Node che permette la veloce connessione attraverso la rete di dispositivi dei generi più disparati; - **Applicazioni desktop**. Con il grande risalto che hanno avuto negli anni lo sviluppo web e quello mobile, il settore desktop sembra passato un po’ di moda eppure grazie a Node.js esistono modi per utilizzare tecnologie come HTML, CSS e Javascript per realizzare app desktop multipiattaforma ed efficienti. Il framework più conosciuto nel settore si chiama [Electron](https://electronjs.org/); - **Gestione del sistema operativo**. Grazie ad npm possiamo installare tool utilizzabili nel proprio sistema. Ad esempio, [Rimraf](https://www.npmjs.com/package/rimraf) serve a cancellare una cartella con tutto il suo contenuto ricorsivamente. Lo si può invocare da riga di comando o integrare come normale libreria in un progetto. » VUOI SAPERNE DI PIU’? SCOPRI IL NOSTRO [CORSO NODE.JS](https://devacademy.it/percorsi/node-js-developer/) « ## Da dove partire per imparare Node.js Iniziare ad usare Node.js per i propri progetti richiede un po’ di conoscenze, potete iniziare da qualche buon manuale (qui trovate un elenco aggiornato di [Manuali su Node.js](https://amzn.to/2nuSgf6) su Amazon.it) e parallelamente seguire un corso in aula o un corso online. Noi non possiamo che consigliarvi il nostro [Corso Node.js](https://devacademy.it/percorsi/node-js-developer/), ma potete scegliere quello che più preferite. ## Conclusioni Se insomma vi chiedessero perché conviene imparare Node.js la risposta sarebbe semplice: perché è facile, gratuito, versatile e ricercatissimo in ogni settore lavorativo. Uno strumento come questo apre moltissime porte a chi lo impara ed offre la possibilità di affrontare progetti sempre diversi che non rendano mai noioso il proprio lavoro. Provare per credere: un po’ di Javascript, qualche colpo di click ed in poche righe di codice vedrete le vostre applicazioni Node al lavoro. >> Se parti da zero, leggi la nostra guida su come [imparare a programmare](https://devacademy.it/imparare-a-programmare/) » VUOI SAPERNE DI PIU’? SCOPRI IL NOSTRO [CORSO NODE.JS](https://devacademy.it/percorsi/node-js-developer/) « **Categorie:** Javascript, Node.js, Programmazione **Tag:** javascript, Node.js, programmazione --- ### [JSON: cos'è, a cosa serve e come si usa?](https://devacademy.it/json/) **Published:** Giugno 26, 2019 **Author:** Giuseppe Maggi **Content:** Qualsiasi tecnologia di programmazione “recente” tu abbia studiato negli ultimi anni, ti sarai probabilmente imbattuto in **JSON** (JavaScript Object Notation). Si tratta di un formato testuale per la strutturazione di dati che, una volta compreso, ti permetterà di padroneggiare le informazioni in qualsiasi ambito dell’Informatica di oggi. In questa guida partiremo dalle sue basi, ne capiremo la struttura, i punti di forza e le applicazioni in cui viene impiegato. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## Oggetti e array JSON permette di aggregare dati (stringhe, numeri, etc.) per creare informazioni di più alto livello, tipicamente qualcosa che nel nostro programma rappresenta un elemento del mondo reale. Supponiamo di sviluppare un software che deve essere in grado di gestire allievi iscritti ad un centro di formazione. Dovrà essere in grado di manipolare oggetti JSON di questo tipo: ``` { "nome":"Edoardo", "cognome":"Rossi", "matricola":"S123456", "corsi_precedenti":2, "laureato":true } ``` Questo oggetto risponde alla domanda: quali informazioni nel nostro programma descrivono l’allievo di un corso? E’ evidente che a noi serva memorizzare di ogni studente il nome, il cognome, la matricola che la scuola gli ha assegnato, il numero di corsi già frequentati e se è in possesso di una laurea. In questo oggetto, non parliamo di uno studente generico, ma di uno specifico: questi dati rappresentano esattamente l’allievo Edoardo Rossi, matricola S123456, che ha sostenuto già 2 corsi e che è in possesso di laurea. **VUOI IMPARARE A PROGRAMMARE?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [**SCOPRI I CORSI**](https://devacademy.it/corsi/) | [**ISCRIVITI**](https://devacademy.it/prezzi/) ## Come creare un oggetto JSON Per creare un oggetto JSON è sufficiente: - disporre una coppia di parentesi graffe, quelle che notiamo all’inizio e alla fine della struttura, il cui scopo sarà contenere l’oggetto intero; - inserire all’interno delle parentesi graffe una sequenza di proprietà il cui nome e valore siano separate dal simbolo di due punti. Ad esempio, “nome”:”Edoardo” significa che l’oggetto possiede la proprietà “nome” il cui valore è impostato a “Edoardo”; - le proprietà di un oggetto sono separate da virgole. L’oggetto appena visto è semplice ma spesso le strutture che li caratterizzano sono più complesse: approfondiremo il discorso nel seguito. Si noti che le proprietà possono essere di tipo diverso. Quelle incluse tra doppi apici sono stringhe ossia generiche sequenze di caratteri alfanumerici (parole, testo, codici, etc.) poi ci sono numeri (con o senza virgola) e valori booleani (vero o falso indicati rispettivamente con true e false). A proposito di quest’ultima tipologia per dire che Edoardo Rossi è laureato è sufficiente assegnare il valore logico true, vero, alla relativa proprietà. Più oggetti JSON possono essere inseriti in una sorta di collezione che prende il nome di array. Visto che sappiamo già creare un oggetto semplice, è sufficiente dire che un array JSON è costituito da una sequenza di oggetti separati da virgole e racchiusa tra parentesi quadre. ``` [ { "nome":"Edoardo", "cognome":"Rossi", "matricola":"S123456", "corsi_precedenti":2, "laureato":true }, { "nome":"Silvia", "cognome":"Verdi", "matricola":"S128926", "corsi_precedenti":0, "laureato":false } , … … ] ``` In questo caso gli oggetti sono caratterizzati tutti dalla medesima struttura, ma ciò non è obbligatorio anzi molto spesso una collezione ne raccoglie di eterogenei: questa è la base della flessibilità di JSON che ha reso famoso questo formato. Ad esempio, il seguente array sarebbe perfettamente valido: ``` [ { "tipo_vegetale":"carota", "colore":"arancione" }, { "giocatore":"Riccardo Verdi", "goal":22, "anno di nascita":1998 }, { "conto corrente":"232756248562", "banca":"Intesa Sanpaolo", "saldo": 1.743,68 } ] ``` Sebbene sembri un miscuglio insignificante di oggetti, sarà il nostro programma ad interpretarlo e a dargli un valore infatti ai fini del formato JSON è importante solo che la struttura sia corretta. » VUOI SAPERNE DI PIU’? SCOPRI I NOSTRI [CORSI ONLINE PER IMPARARE A PROGRAMMARE](https://devacademy.it/corsi/) « ## Come imparare a scrivere in JSON Come abbiamo visto JSON richiede poche regole di sintassi, ma seppur poche, vanno rispettate correttamente. Come si può fare ad allenarsi a scrivere del JSON corretto? Un modo potrebbe essere quello di utilizzare uno dei vari parser on line esistenti. E’ sufficiente aprire il browser e puntarlo ad un indirizzo come ad esempio questo (), il mio parser on line preferito. L’interfaccia che si apre è suddivisa in due metà: a sinistra scriverai il JSON e a destra, se avrai usato la sintassi corretta, vedrai apparire un albero che rappresenta la struttura che hai creato. ![JSON 01](https://devacademy.it/wp-content/uploads/2019/06/JSON-01.png) Nota che la porzione di destra ha una barra che se diventa rossa significa che non hai usato la sintassi corretta mentre il colore grigio indicherà un JSON ben formato. ![JSON 02](https://devacademy.it/wp-content/uploads/2019/06/JSON-02.png) ## JSON: da dove viene e chi lo usa. Ora che abbiamo capito come sono strutturati oggetti ed array JSON è bene capire da dove viene questo formato e cosa abbia determinato il suo inarrestabile successo. Come detto, nell’acronimo è presente il termine Javascript e questo proprio perché JSON nasce in seno a questo linguaggio che domina da sempre il web lato client ed ormai ogni altro ambito software. Il formato utilizzato in JSON è proprio il modo in cui da sempre sono scritti oggetti e array in Javascript. La semplicità e descrittività di tale sintassi ha dato spunto per creare un formato indipendente, utilizzabile mediante apposite librerie, da ogni linguaggio di programmazione. JSON è, come XML, un formato comprensibile sia dall’uomo sia dalla macchina. Queste due cose generalmente non coincidono infatti basti pensare che quello che noi chiamiamo “linguaggio naturale” è qualcosa che può essere interpretato solo grazie all’Intelligenza Artificiale mentre il formato binario (informazioni scritte solo con sequenze di 0 e 1) è connaturato alla macchina stessa ma piuttosto complicato per l’essere umano. Al contrario, JSON e XML hanno offerto due formati testuali che l’essere umano può leggere e scrivere comodamente e la macchina può interpretare (operazione detta tecnicamente parsing) senza grandi difficoltà. Per questo molti servizi informatici hanno adottato XML e JSON per lo scambio dati con ormai una solidissima preferenza per quest’ultimo, di gran lunga più comodo del primo. Oltre che nei servizi web, JSON è ampiamente usato come tecnologia per il salvataggio di database su file, come ossatura dei file di configurazione e molto altro. Facciamo un esempio. Esiste uno dei tanti servizi on line che risponde al nome di OpenWeatherMap () che fornisce previsioni del tempo di varie città del mondo. Oltre ad essere consultabile come sito Internet offre un servizio web interrogabile da remoto. Ad esempio, contattando l’indirizzo di prova [https://samples.openweathermap.org/data/2.5/forecast?q=Roma,IT&appid=b6907d289e10d714a6e88b30761fae22](https://samples.openweathermap.org/data/2.5/forecast?q=Roma,IT&appid=b6907d289e10d714a6e88b30761fae22) si ottengono informazioni in formato JSON sul meteo nella città di Altstadt. Se volessimo realizzare un’app Android (o qualsiasi altro programma) in grado di offrire il meteo ci basterebbe interrogare uno dei vari indirizzi disponibili ed interpretarne i risultati. Estraiamo qualche informazione a partire dal link di esempio: ``` { ... ... "city": { "id":6940463, "name":"Altstadt", "coord": { "lat":48.137, "lon":11.5752 } , ... ... } ... ... } ``` Considerando la mole dei dati abbiamo estratto solo una piccola porzione del JSON che mostra però diversi aspetti interessanti. Prima cosa, si tratta di un oggetto. Lo capiamo dalle parentesi graffe che aprono e chiudono il testo. Inoltre l’oggetto ha una di quelle strutture più complesse cui abbiamo accennato prima. La proprietà “city” è valorizzata con un oggetto, non con semplici stringhe o numeri. Per di più possiede un’altra proprietà a sua volta, “coord”, valorizzata da un altro oggetto contenente latitudine e longitudine. La regola è: ogni proprietà di un oggetto JSON può essere a sua volta un oggetto o un array e tale struttura può essere reiterata fino al livello di profondità che ci interessa. Interessante, vero? ## Iniziare con JSON A questo punto, sei a conoscenza di tutti i concetti basilari sul formato JSON. Che tu abbia più o meno esperienza puoi iniziare ad usarlo con qualsiasi tecnologia, pensiamo ad Android (https://devacademy.it/percorsi/android-developer/), Python (https://devacademy.it/percorsi/python-developer/), Javascript (https://devacademy.it/percorsi/javascript-developer/) solo per citare i più noti e lo vedrai protagonista anche dei moderni database NoSQL (https://devacademy.it/categoria\_screencast/nosql/) efficienti e scalabili, perfetti per l’epoca del Cloud Computing. Ricorda solo che il primo passo per utilizzare JSON è quello di conoscerne bene il formato pertanto apri il tuo browser preferito ed usa sempre un buon parser online in modo da padroneggiare correttamente ogni suo aspetto. >> Se parti da zero, leggi la nostra guida su come [imparare a programmare](https://devacademy.it/imparare-a-programmare/) » VUOI SAPERNE DI PIU’? SCOPRI I NOSTRI [CORSI ONLINE PER IMPARARE A PROGRAMMARE](https://devacademy.it/corsi/) « **Categorie:** Programmazione **Tag:** JSON --- ### [Intelligenza Artificiale: cos’è, come funziona e come impararla davvero](https://devacademy.it/intelligenza-artificiale/) **Published:** Aprile 13, 2026 **Author:** Rino Picardi **Content:** ## Cos’è l’Intelligenza Artificiale Quando si parla di **intelligenza artificiale**, spesso si ha la sensazione di trovarsi davanti a qualcosa di misterioso, quasi magico. C’è chi la immagina come una mente digitale capace di pensare da sola, chi la considera una minaccia, chi invece la riduce a una semplice moda del momento. La verità, come spesso accade, sta nel mezzo. L’intelligenza artificiale non è magia, non è fantascienza, e non è nemmeno soltanto una parola di tendenza usata per rendere più moderno un prodotto o un servizio. È un insieme di tecnologie, modelli e sistemi progettati per svolgere compiti che, fino a poco tempo fa, richiedevano quasi sempre l’intervento umano. Detto in modo semplice, possiamo definire l’intelligenza artificiale come la capacità di un software o di una macchina di eseguire attività che sembrano “intelligenti”. Per esempio, riconoscere un volto in una foto, capire il significato generale di una frase, suggerire un film in base ai gusti dell’utente, tradurre un testo, rispondere a una domanda o prevedere quale prodotto potrebbe interessare a un cliente. Non significa che la macchina “pensa” come una persona nel senso umano del termine. Significa, piuttosto, che è stata progettata per analizzare dati, individuare schemi, produrre risposte e prendere decisioni entro determinati limiti. Un mini schema utile per chiarire il concetto è questo: ``` Input → analisi → regole/modello → output ``` Per esempio: - **input**: una foto di un gatto - **analisi**: il sistema esamina forme, colori, pattern - **modello**: confronta ciò che vede con ciò che ha appreso - **output**: “questa immagine contiene un gatto” Questo meccanismo, in forme più o meno sofisticate, è alla base di moltissime applicazioni moderne dell’AI. È importante però distinguere tra **intelligenza artificiale reale** e **intelligenza artificiale “di marketing”**. Oggi il termine AI viene usato ovunque: software gestionali, app, piattaforme di e-commerce, strumenti di produttività, automazioni, chatbot, persino semplici filtri o motori di ricerca interni vengono spesso presentati come “basati sull’intelligenza artificiale”. In alcuni casi è vero. In altri, molto meno. Non tutto ciò che automatizza un compito è davvero intelligenza artificiale nel senso più corretto del termine. Facciamo un esempio concreto. Un modulo che invia automaticamente una mail quando un utente compila un form non è, da solo, intelligenza artificiale. È automazione. Se invece un sistema analizza il contenuto del messaggio, capisce a quale categoria appartiene la richiesta, ne valuta la priorità e suggerisce una risposta, allora siamo già in un territorio più vicino all’AI. Allo stesso modo, un motore di ricerca interno che restituisce risultati in base a una corrispondenza esatta tra parole chiave non è necessariamente AI; se invece comprende l’intento dell’utente e prova a restituire risultati pertinenti anche quando la domanda è formulata in modo ambiguo o naturale, il discorso cambia. Questa distinzione è fondamentale soprattutto per chi si avvicina al tema per la prima volta. Capire cos’è davvero l’intelligenza artificiale aiuta a non cadere in due errori opposti: il primo è sopravvalutarla, pensando che sia una sorta di cervello digitale onnipotente; il secondo è sottovalutarla, credendo che sia solo un’etichetta pubblicitaria. In realtà l’AI è uno strumento potentissimo, ma resta uno strumento. Non ha coscienza, non ha intenzioni, non ha volontà propria. Lavora sui dati, sui modelli e sugli obiettivi che le vengono forniti. Per capire ancora meglio il concetto, può essere utile fare un confronto rapido tra intelligenza umana e intelligenza artificiale. **Intelligenza umana** - comprende il contesto profondo - possiede esperienza, intuizione, emozioni - sa adattarsi in modo estremamente flessibile - può ragionare anche con poche informazioni **Intelligenza artificiale** - elabora enormi quantità di dati molto rapidamente - riconosce pattern e regolarità - esegue bene compiti specifici - dipende dalla qualità dei dati, del modello e delle istruzioni ricevute In altre parole, l’AI eccelle in molti compiti ben definiti, ma non “capisce il mondo” come lo capisce una persona. Quando ChatGPT risponde a una domanda, quando un assistente vocale interpreta una richiesta o quando una piattaforma consiglia un contenuto, non stanno vivendo un’esperienza di comprensione umana. Stanno elaborando informazioni in base a modelli statistici, istruzioni e dati di addestramento. Anche dal punto di vista storico, l’intelligenza artificiale non è affatto una novità improvvisa. L’idea di creare macchine capaci di simulare alcune forme di ragionamento umano esiste da decenni. Già nella metà del Novecento, studiosi e matematici cominciavano a chiedersi se una macchina potesse “pensare”. Uno dei nomi più citati è quello di Alan Turing, che contribuì in modo decisivo a porre le basi teoriche dell’informatica moderna e a formulare una delle domande più famose del settore: una macchina può imitare il comportamento intelligente di un essere umano al punto da risultare indistinguibile in una conversazione? Da lì in avanti, il settore ha attraversato fasi di entusiasmo e momenti di delusione. In alcuni periodi si è pensato che fosse vicinissimo il momento in cui i computer avrebbero ragionato come persone. In altri periodi, i limiti tecnologici e la scarsità di dati hanno rallentato tutto. Per molti anni l’AI è rimasta confinata a laboratori di ricerca, applicazioni molto specifiche o sistemi poco accessibili al grande pubblico. Poi sono cambiati tre fattori decisivi: la disponibilità di grandi quantità di dati, la crescita della potenza di calcolo e il miglioramento degli algoritmi. È qui che l’intelligenza artificiale ha iniziato davvero a uscire dai laboratori per entrare nella vita quotidiana. Un mini schema storico, molto semplificato, può aiutare: - **Anni 50–70** → nascono le prime teorie e i primi esperimenti - **Anni 80–90** → sistemi esperti, ricerca, ma risultati ancora limitati - **Anni 2000** → più dati, più potenza computazionale, crescita del machine learning - **Anni 2010** → boom del deep learning, riconoscimento immagini, voce, traduzione - **Anni 2020** → diffusione globale di AI generativa, LLM, agenti, strumenti accessibili a tutti Oggi l’intelligenza artificiale è diventata un tema centrale non solo per i tecnici, ma anche per aziende, professionisti, studenti e persone comuni. Questo perché non riguarda più soltanto la ricerca accademica o i grandi colossi del web. Riguarda il modo in cui si scrivono testi, si analizzano dati, si sviluppano software, si gestiscono clienti, si cercano informazioni, si produce contenuto e si prendono decisioni. Ed è proprio questo il punto più importante da capire fin dall’inizio: l’AI non è un argomento separato dal mondo reale. È già dentro il mondo reale. Per chi parte da zero, quindi, la definizione più utile non è quella più sofisticata, ma quella più concreta: l’intelligenza artificiale è l’insieme di tecnologie che permettono a un sistema informatico di analizzare informazioni, riconoscere schemi e produrre risultati utili in compiti che richiedono una forma di “intelligenza operativa”. Non serve immaginarla come un robot umanoide o una mente autonoma. Basta osservarla per quello che è già oggi: un motore capace di aumentare enormemente la capacità di fare, automatizzare, assistere e creare. Ed è proprio da qui che bisogna partire. Prima ancora di chiedersi se l’AI sostituirà qualcuno, se è pericolosa o se conviene studiarla, bisogna comprenderne bene la natura. Perché solo capendo cos’è davvero l’intelligenza artificiale si può iniziare a usarla con lucidità, valutarne le opportunità e riconoscere la differenza tra hype e valore reale. ## Come funziona l’Intelligenza Artificiale Capire **come funziona l’intelligenza artificiale** è il passaggio che trasforma davvero la percezione che si ha di questa tecnologia. Finché resta un concetto astratto, può sembrare qualcosa di quasi “magico”. Quando invece si entra nel meccanismo, diventa chiaro che dietro c’è una logica precisa, fatta di dati, modelli matematici e processi di apprendimento. Alla base di quasi tutti i sistemi di AI moderni c’è un’idea molto semplice: imparare dai dati. Un sistema di intelligenza artificiale non nasce “sapendo già tutto”. Viene addestrato. In pratica, gli vengono forniti esempi, informazioni, casi reali, e attraverso questi dati il sistema impara a riconoscere schemi e a produrre risultati coerenti. Possiamo rappresentare il funzionamento in modo semplificato con questo schema: `Dati → Addestramento → Modello → Input → Output` Facciamo un esempio concreto per renderlo più chiaro. Immagina di voler creare un sistema che riconosca se in una foto appare un cane oppure no. - **Dati**: migliaia (o milioni) di immagini di cani e non cani - **Addestramento**: il sistema analizza queste immagini e impara a distinguere caratteristiche ricorrenti - **Modello**: una “struttura” matematica che ha appreso queste differenze - **Input**: una nuova immagine mai vista prima - **Output**: “questa immagine contiene un cane” (con una certa probabilità) Questo è il cuore dell’intelligenza artificiale moderna: non regole scritte a mano, ma **modelli che imparano dai dati**. Per anni, infatti, i software tradizionali funzionavano in modo diverso. Un programmatore scriveva istruzioni precise, ad esempio: “se succede A, allora fai B”. Con l’AI, invece, il programmatore definisce un sistema che impara a trovare da solo le regole osservando i dati. È un cambio di paradigma enorme. Per capire meglio, possiamo fare un confronto rapido: **Programmazione tradizionale** - Input + Regole → Output - Le regole sono scritte dal programmatore **Intelligenza artificiale** - Input + Output desiderato → Modello che impara le regole - Le regole emergono dai dati Questo approccio rende l’AI molto potente in tutti quei casi in cui è difficile scrivere regole esplicite. Pensiamo al linguaggio umano, alle immagini, ai comportamenti degli utenti: sono ambiti troppo complessi per essere ridotti a semplici condizioni “if/else”. Tuttavia, non esiste un solo tipo di intelligenza artificiale. Esistono diversi approcci e tecniche, ognuna con caratteristiche specifiche. I quattro concetti fondamentali da conoscere sono: - **Machine Learning** - **Deep Learning** - **Reti neurali** - **Large Language Model (LLM)** Vediamoli uno alla volta. ### Machine Learning Il **[Machine Learning](https://devacademy.it/machine-learning-cose-a-cosa-serve-e-come-iniziare/)** (apprendimento automatico) è uno dei pilastri dell’intelligenza artificiale moderna. È l’approccio che permette ai sistemi di imparare dai dati senza essere programmati esplicitamente per ogni singolo caso. In pratica, invece di scrivere tutte le regole possibili, si forniscono al sistema esempi e si lascia che sia lui a trovare le relazioni. Un esempio molto semplice è quello dello spam nelle email. Un sistema di machine learning può analizzare migliaia di email già classificate come “spam” o “non spam” e imparare a riconoscere i pattern tipici: parole frequenti, struttura del messaggio, mittente, link sospetti. Quando arriva una nuova email, il sistema non segue una regola rigida, ma valuta la probabilità che sia spam in base a ciò che ha imparato. Esistono diversi tipi di machine learning, ma i principali sono: - **Supervisionato**: il sistema impara da dati già etichettati (es. email spam/non spam) - **Non supervisionato**: il sistema cerca pattern senza etichette (es. raggruppare utenti simili) - **Per rinforzo**: il sistema impara tramite tentativi ed errori, ricevendo ricompense o penalità Il machine learning è ovunque: raccomandazioni di prodotti, suggerimenti su piattaforme streaming, previsioni di vendita, analisi dei comportamenti degli utenti. ### Deep Learning Il **Deep Learning** è una sotto-categoria del machine learning ed è ciò che ha reso possibile il grande salto dell’AI negli ultimi anni. La differenza principale è che il deep learning utilizza modelli molto più complessi, chiamati **reti neurali profonde**, capaci di analizzare dati in modo molto più sofisticato. Se il machine learning tradizionale richiede spesso una selezione manuale delle caratteristiche (feature), il deep learning è in grado di estrarle automaticamente. Facciamo un esempio con le immagini. **Machine learning “classico”**: bisogna dire al sistema cosa guardare (es. bordi, colori, forme) **Deep learning**: il sistema impara da solo quali caratteristiche sono importanti Questo approccio ha rivoluzionato ambiti come: - riconoscimento facciale - riconoscimento vocale - traduzione automatica - visione artificiale Il motivo è semplice: il mondo reale è complesso, e il deep learning riesce a gestire questa complessità molto meglio rispetto ai metodi più semplici. ## Reti neurali Le **reti neurali** sono il cuore del deep learning e prendono ispirazione (in modo molto semplificato) dal funzionamento del cervello umano. Non sono “cervelli digitali”, ma modelli matematici composti da nodi (neuroni artificiali) organizzati in livelli. Un mini schema semplificato: `Input → livello nascosto → livello nascosto → Output` Ogni nodo riceve informazioni, le elabora e le passa al livello successivo. Durante l’addestramento, il sistema modifica i “pesi” delle connessioni tra i nodi per migliorare le proprie prestazioni. Per capire intuitivamente: - all’inizio la rete “indovina” - confronta la risposta con quella corretta - aggiusta i parametri - ripete il processo milioni di volte Con il tempo, diventa sempre più precisa. Le reti neurali sono alla base di moltissime applicazioni moderne, anche se spesso non ce ne accorgiamo: assistenti vocali, traduttori, sistemi di riconoscimento immagini, e naturalmente molti strumenti di AI generativa. ### Large Language Model (LLM) I **Large Language Model** (**LLM**) sono probabilmente la forma di AI più conosciuta oggi. Sono i modelli alla base di strumenti come ChatGPT e di molte altre applicazioni di intelligenza artificiale generativa. Un LLM è un modello addestrato su enormi quantità di testo. Il suo obiettivo principale è prevedere la parola successiva in una sequenza. Può sembrare semplice, ma su larga scala diventa potentissimo. Esempio: “L’intelligenza artificiale è una tecnologia che permette di…” Il modello calcola, in base a ciò che ha appreso, quale parola è più probabile che venga dopo. Ripetendo questo processo parola dopo parola, riesce a generare frasi, risposte, articoli, codice e molto altro. Un mini schema utile: `Testo in input → analisi del contesto → previsione probabilistica → generazione output` La cosa interessante è che, pur basandosi su probabilità, questi modelli riescono a: - rispondere a domande - spiegare concetti complessi - scrivere codice - riassumere testi - simulare conversazioni Per chi sviluppa software, gli LLM rappresentano un cambio enorme: permettono di integrare capacità linguistiche avanzate direttamente nelle applicazioni. ### Tirando le fila Se dovessimo riassumere tutto in modo semplice: - Il machine learning permette ai sistemi di imparare dai dati - Il deep learning rende questo apprendimento più potente - Le reti neurali sono la struttura che rende possibile il deep learning - Gli LLM applicano questi concetti al linguaggio umano Capire questi elementi non significa diventare subito esperti di AI, ma permette di avere una visione chiara e concreta di ciò che sta dietro agli strumenti che usiamo ogni giorno. Ed è proprio questa comprensione che fa la differenza tra chi utilizza l’AI in modo superficiale e chi inizia davvero a sfruttarla. ## Tipi di Intelligenza Artificiale Quando si parla di **intelligenza artificiale**, è facile pensare a un’unica grande tecnologia. In realtà, l’AI non è qualcosa di uniforme: esistono diversi tipi di intelligenza artificiale, ognuno con caratteristiche, obiettivi e ambiti di applicazione differenti. Capire queste differenze è fondamentale, soprattutto per chi è all’inizio. Aiuta a orientarsi meglio, a evitare confusione e a comprendere perché alcune applicazioni sono già molto avanzate mentre altre sono ancora lontane dalla realtà. Possiamo suddividere l’intelligenza artificiale in diverse categorie. Le più importanti da conoscere sono: - AI debole e AI forte - AI generativa - AI predittiva - AI simbolica Vediamole nel dettaglio. ### AI debole e AI forte Questa è una delle classificazioni più classiche e serve a distinguere tra ciò che esiste oggi e ciò che, almeno per ora, resta teorico. **AI debole (o Narrow AI)** È l’unico tipo di intelligenza artificiale realmente esistente oggi. Si tratta di sistemi progettati per svolgere compiti specifici, anche molto complessi, ma sempre all’interno di un ambito ben definito. Esempi concreti: - un sistema che riconosce volti nelle immagini - un assistente vocale che risponde a comandi - un algoritmo che suggerisce prodotti su un e-commerce - un modello che genera testo o codice Questi sistemi possono essere estremamente potenti, ma non hanno una comprensione generale del mondo. Non possono “uscire” dal loro contesto. **AI forte (o General AI)** È un concetto teorico: un’intelligenza artificiale capace di comprendere, apprendere e ragionare come un essere umano, in modo generale e flessibile. Una AI forte potrebbe: - imparare qualsiasi compito - adattarsi a contesti completamente nuovi - ragionare in modo autonomo Ad oggi, non esiste. Tutti i sistemi che utilizziamo, anche i più avanzati, rientrano nella categoria dell’AI debole. Un mini schema utile: `AI debole → specializzata → esiste oggiAI forte → generale → non esiste (ancora)` Questa distinzione è importante per evitare aspettative sbagliate: l’AI attuale è molto potente, ma non è “intelligente” nel senso umano del termine. ### AI generativa L’AI generativa è uno dei temi più caldi degli ultimi anni ed è probabilmente ciò che ha reso l’intelligenza artificiale accessibile al grande pubblico. Si tratta di sistemi in grado di generare contenuti nuovi, a partire da un input. Questi contenuti possono essere: - testi - immagini - codice - audio - video Un esempio semplice: scrivi una richiesta come “spiegami cos’è il machine learning in modo semplice” e il sistema genera una risposta coerente. Oppure chiedi di creare un’immagine o di scrivere una funzione in codice. Il funzionamento, come visto prima, si basa su modelli come gli LLM (per il testo) o modelli generativi per immagini e altri contenuti. Mini schema: `Input (prompt) → modello → generazione contenuto → output` L’AI generativa ha cambiato completamente il modo di lavorare in molti ambiti: - sviluppo software (scrittura e supporto al codice) - content creation - marketing - design - formazione È anche uno degli ambiti più interessanti per chi vuole imparare l’AI oggi, perché permette di ottenere risultati concreti molto velocemente. ### AI predittiva L’AI predittiva è meno “visibile” rispetto a quella generativa, ma è utilizzata da anni ed è fondamentale in moltissimi settori. Il suo obiettivo è **prevedere un risultato futuro** partendo da dati passati. Esempi concreti: - prevedere quali clienti potrebbero abbandonare un servizio - stimare le vendite future - suggerire prodotti che un utente potrebbe acquistare - individuare comportamenti anomali (es. frodi) Un esempio semplice: Un e-commerce analizza: - cosa hai visto - cosa hai comprato - quanto tempo passi su certe pagine E prova a prevedere: “questo prodotto potrebbe interessarti” Mini schema: `Dati storici → analisi → modello → previsione` A differenza dell’AI generativa, qui non si crea contenuto, ma si prende una decisione o si produce una stima. È un tipo di AI molto utilizzato nel mondo business e nei sistemi aziendali. ### AI simbolica L’AI simbolica è una delle forme più “classiche” di intelligenza artificiale e si basa su regole esplicite e rappresentazioni logiche. In questo approccio: - la conoscenza viene rappresentata tramite simboli - il sistema applica regole definite per arrivare a una conclusione Un esempio semplice: un sistema esperto medico che, in base ai sintomi inseriti, applica una serie di regole per suggerire una diagnosi. Mini schema: `Fatti → regole → inferenza → risultato` Rispetto al machine learning moderno, l’AI simbolica: - è più interpretabile (si capisce perché prende una decisione) - ma è meno flessibile (non impara dai dati) Oggi, molti sistemi moderni combinano approcci diversi, cercando di unire: - la flessibilità del machine learning - la chiarezza delle regole simboliche ### Tirando le fila Per riassumere: - **AI debole**: sistemi specializzati (tutto ciò che esiste oggi) - **AI forte**: intelligenza generale (ancora teorica) - **AI generativa**: crea contenuti (testo, immagini, codice) - **AI predittiva**: prevede risultati - **AI simbolica**: ragiona tramite regole Capire questi tipi di intelligenza artificiale ti permette di orientarti meglio tra strumenti, tecnologie e applicazioni. Ti aiuta anche a capire perché alcune soluzioni sono più adatte di altre in base al problema che vuoi risolvere. Ed è proprio questo il punto chiave: l’AI non è una cosa sola, ma un insieme di strumenti diversi. Sapere quale usare, o quale studiare, fa tutta la differenza. ## Esempi concreti di Intelligenza Artificiale Dopo aver capito cos’è l’intelligenza artificiale e come funziona, arriva la domanda più naturale: dove la troviamo davvero nella vita di tutti i giorni? La risposta è semplice: ovunque. Molte persone pensano all’AI come qualcosa di futuristico, ma in realtà la utilizzano già ogni giorno, spesso senza accorgersene. Questo perché l’intelligenza artificiale non si presenta sempre in modo evidente. Non è necessariamente un robot o un’interfaccia complessa. Spesso è nascosta dentro sistemi, applicazioni e servizi che usiamo quotidianamente. Per capire davvero il valore dell’AI, è fondamentale vedere esempi reali, concreti, legati a situazioni comuni. ### AI nel web e nelle app Uno degli ambiti in cui l’intelligenza artificiale è più diffusa è quello delle applicazioni web e mobile. Ogni volta che utilizziamo una piattaforma digitale, è molto probabile che dietro ci sia almeno un sistema di AI. Un esempio molto comune è quello dei sistemi di raccomandazione. Quando entri su una piattaforma e vedi: - prodotti suggeriti - video consigliati - contenuti “che potrebbero piacerti” non si tratta di scelte casuali. Un sistema analizza il tuo comportamento: - cosa clicchi - quanto tempo resti su una pagina - cosa acquisti - cosa ignori e costruisce un modello che cerca di prevedere cosa potrebbe interessarti. Mini schema: `Comportamento utente → analisi → modello → suggerimento personalizzato` Un altro esempio molto diffuso è la ricerca intelligente. Non si tratta più solo di cercare parole chiave esatte. I sistemi moderni cercano di capire l’intento dell’utente. Se scrivi una query non perfettamente precisa, il sistema prova comunque a restituire risultati pertinenti. Questo è possibile grazie a modelli che analizzano il linguaggio naturale. Anche le traduzioni automatiche sono un esempio concreto di AI. Oggi è possibile tradurre interi testi in pochi secondi con risultati spesso molto accurati. Questo non avviene tramite semplici dizionari, ma grazie a modelli che comprendono il contesto delle frasi. Un altro ambito importante è quello dei chatbot e assistenti virtuali. Sempre più siti integrano sistemi in grado di: - rispondere a domande - guidare l’utente - gestire richieste In molti casi, questi sistemi utilizzano AI per comprendere il linguaggio e generare risposte coerenti. ### AI nel lavoro Nel mondo del lavoro, l’intelligenza artificiale sta cambiando profondamente il modo in cui vengono svolte molte attività. Uno degli ambiti più trasformati è quello dello sviluppo software. Oggi un developer può: - generare codice a partire da una descrizione - ricevere suggerimenti mentre scrive - individuare errori più rapidamente Mini schema: `Richiesta → AI → codice suggerito → revisione umana` Questo non sostituisce il programmatore, ma lo rende molto più veloce ed efficiente. Nel marketing, l’AI viene utilizzata per: - analizzare campagne - segmentare utenti - personalizzare messaggi Un sistema può analizzare migliaia di dati e individuare pattern che sarebbero difficili da vedere manualmente. Nel customer service, l’AI permette di gestire grandi volumi di richieste. I chatbot possono rispondere alle domande più comuni, mentre gli operatori umani si concentrano sui casi più complessi. Anche nel mondo aziendale, l’AI predittiva è molto utilizzata per prendere decisioni: - previsione vendite - gestione scorte - analisi rischi Mini schema: `Dati aziendali → modello → previsione → decisione` Un altro esempio interessante è quello della creazione di contenuti. Oggi è possibile generare: - articoli - email - descrizioni prodotto - documentazione tecnica Questo non significa eliminare il lavoro umano, ma supportarlo e velocizzarlo. ## AI nella vita quotidiana L’intelligenza artificiale non è solo nel lavoro o nelle piattaforme digitali. È presente anche nella vita di tutti i giorni, spesso in modo invisibile. Quando utilizzi uno smartphone, stai già usando AI: - il riconoscimento facciale per sbloccare il telefono - il correttore automatico mentre scrivi - i suggerimenti di testo Quando utilizzi un assistente vocale, stai interagendo con sistemi di riconoscimento vocale e linguaggio naturale. Mini schema: `Voce → riconoscimento → interpretazione → risposta` Anche la navigazione GPS utilizza AI: - analizza il traffico - suggerisce percorsi alternativi - prevede tempi di arrivo Le piattaforme di streaming suggeriscono film e serie in base alle tue abitudini. I social network decidono quali contenuti mostrarti in base a ciò che ritengono più rilevante per te. Persino nel mondo della sicurezza, l’AI è utilizzata per: - riconoscere comportamenti sospetti - prevenire frodi - monitorare accessi ### Tirando le fila Guardando questi esempi, emerge un aspetto fondamentale: l’intelligenza artificiale non è qualcosa di distante, ma una tecnologia già integrata nella realtà quotidiana. Possiamo riassumere così: - nel web personalizza l’esperienza - nel lavoro aumenta produttività ed efficienza - nella vita quotidiana semplifica molte attività Il punto più importante da capire è che l’AI non è una tecnologia “in arrivo”. È già qui. E sta diventando sempre più centrale. Per questo motivo, comprendere come funziona e come utilizzarla non è più una competenza opzionale, ma una leva sempre più importante per chiunque lavori nel digitale, e non solo. ## Intelligenza Artificiale per programmatori Finora abbiamo visto cos’è l’intelligenza artificiale, come funziona e dove viene utilizzata. Ma c’è un punto in cui tutto cambia davvero prospettiva: quando si passa da usare l’AI a **sviluppare con l’AI**. Per un programmatore, l’intelligenza artificiale non è solo uno strumento da utilizzare, ma una tecnologia da integrare, controllare e sfruttare per costruire applicazioni reali. Ed è qui che si crea la vera differenza tra chi usa l’AI superficialmente e chi la trasforma in competenza concreta Oggi, uno sviluppatore che comprende l’AI ha un vantaggio enorme. Non perché deve diventare un ricercatore o un esperto di matematica avanzata, ma perché può costruire soluzioni più intelligenti, automatizzare processi complessi e creare prodotti che, fino a pochi anni fa, sarebbero stati impensabili. Un modo semplice per capire questo passaggio è il seguente: **Uso dell’AI** 1. faccio una domanda 2. ottengo una risposta **Sviluppo con l’AI** 1. progetto un flusso 2. integro un modello 3. costruisco un sistema che usa l’AI Questa differenza è fondamentale. Vediamo ora, in modo concreto, cosa significa lavorare con l’intelligenza artificiale dal punto di vista di uno sviluppatore. ### AI e sviluppo software L’intelligenza artificiale sta cambiando profondamente il modo in cui si sviluppa software. Un tempo, creare un’applicazione significava definire, logiche, regole, flussi e interazioni. Oggi, tutto questo resta, ma si aggiunge un nuovo elemento: la capacità di delegare alcune decisioni a un modello AI. Facciamo un esempio concreto. Immagina di sviluppare un sistema di assistenza clienti. **Approccio tradizionale:** - menu a scelta (premi 1, premi 2) - risposte predefinite - flussi rigidi **Approccio con AI:** 1. l’utente scrive liberamente 2. il sistema interpreta la richiesta 3. classifica il problema 4. genera una risposta o instrada la richiesta Mini schema: `Input utente → AI → interpretazione → azione → risposta` Questo cambia completamente il modo di progettare le applicazioni. Non si tratta più solo di gestire casi predefiniti, ma di lavorare con sistemi in grado di gestire variabilità e ambiguità. Per uno sviluppatore, questo significa: - progettare interfacce più naturali - gestire dati non strutturati (testo, immagini, voce) - integrare modelli esterni L’AI diventa quindi un componente del software, non un semplice tool esterno. ### LLM per sviluppatori I **Large Language Model** (LLM) rappresentano oggi uno degli strumenti più potenti per chi sviluppa. Dal punto di vista tecnico, un LLM è un servizio che puoi interrogare tramite API o integrare direttamente nella tua applicazione. Questo apre possibilità enormi. Esempi concreti: - generare automaticamente contenuti - creare chatbot intelligenti - analizzare e classificare testi - trasformare linguaggio naturale in query o codice Un esempio pratico: Un utente scrive: “Mostrami gli ordini degli ultimi 30 giorni con importo superiore a 100 euro” Il sistema può: interpretare la richiesta, trasformarla in una query, restituire i risultati Mini schema: `Input naturale → LLM → trasformazione → output strutturato` Per uno sviluppatore, questo significa poter costruire interfacce completamente nuove, basate sul linguaggio naturale invece che su menu o form complessi. Gli LLM non sostituiscono il codice, ma lo amplificano. Permettono di creare funzionalità avanzate con molto meno sforzo rispetto al passato. ### Prompt engineering per developer Uno degli aspetti più importanti quando si lavora con LLM è il prompt engineering. Il prompt è semplicemente l’input che dai al modello. Ma il modo in cui lo scrivi cambia completamente il risultato. Per uno sviluppatore, il prompt diventa quasi una nuova forma di “codice”. Facciamo un esempio semplice. **Prompt generico:** “Scrivi una funzione JavaScript” **Output**: generico, poco controllato **Prompt strutturato:** “Scrivi una funzione JavaScript che riceve un array di numeri e restituisce solo i valori pari, utilizzando un approccio funzionale e commentando il codice” **Output**: molto più preciso e utile Mini schema: `Prompt → interpretazione modello → output` Ma nel contesto sviluppo, il prompt non è solo testo libero. Può essere: - dinamico - costruito a runtime - arricchito con dati - parte di un flusso applicativo Il prompt engineering diventa quindi una competenza chiave per ottenere risultati migliori, ridurre errori e controllare il comportamento del modello ### AI Agents e RAG Qui entriamo in uno dei livelli più avanzati e interessanti dell’AI moderna: **agenti AI** e **sistemi RAG** (Retrieval-Augmented Generation). Un AI Agent è un sistema che non si limita a rispondere, ma è in grado di: - prendere decisioni - eseguire azioni - utilizzare strumenti Mini schema: `Obiettivo → AI → pianificazione → azioni → risultato` Per esempio: “Analizza questi dati e crea un report” Un agente potrebbe: 1. leggere i dati 2. elaborarli 3. generare un report 4. salvarlo o inviarlo Non è più solo generazione di testo, ma esecuzione di task complessi. Il **RAG** (**Retrieval-Augmented Generation**) è invece una tecnica che permette di migliorare le risposte dei modelli utilizzando dati esterni. In pratica il sistema recupera informazioni da una base dati, le passa al modello e il modello genera una risposta più precisa Mini schema: `Query → recupero dati → contesto → LLM → risposta` Questo è fondamentale quando, servono informazioni aggiornate, si lavora su dati proprietari e/o si vogliono evitare risposte generiche. Per uno sviluppatore, queste tecniche rappresentano il passo successivo rispetto all’uso base degli LLM. ### Tirando le fila Per un programmatore, l’intelligenza artificiale non è solo un tema da conoscere, ma una vera e propria evoluzione del modo di sviluppare. Possiamo riassumere così: - l’AI entra dentro le applicazioni - gli LLM diventano componenti software - il prompt diventa una nuova forma di controllo - agenti e RAG permettono di costruire sistemi complessi Chi impara a lavorare con questi strumenti oggi si trova in una posizione di vantaggio enorme. Non perché sostituisce le competenze tradizionali, ma perché le amplia. E soprattutto, perché permette di passare da: “scrivere codice” a “costruire sistemi intelligenti” Ed è proprio questo il punto in cui l’intelligenza artificiale smette di essere teoria e diventa opportunità concreta. ## Nota Questa guida è in continuo aggiornamento. Nei prossimi aggiornamenti approfondiremo: - come imparare l’Intelligenza Artificiale oggi - come lavorare con l’intelligenza artificiale - percorsi formativi consigliati - percorsi formativi consigliati - ..e molto altro Se vuoi imparare davvero a utilizzare l’intelligenza artificiale in modo pratico, puoi approfondire con i [percorsi dedicati](https://devacademy.it/percorsi/ai-expert/) su devACADEMY. **Categorie:** Intelligenza Artificiale **Tag:** Intelligenza Artificiale --- ### [Machine Learning: Cos'è, a cosa serve e come iniziare](https://devacademy.it/machine-learning-cose-a-cosa-serve-e-come-iniziare/) **Published:** Ottobre 24, 2024 **Author:** Rino Picardi **Content:** Il **Machine Learning** (ML) è uno dei campi più rivoluzionari dell’informatica moderna. Se ti sei mai chiesto come Netflix suggerisca film in base ai tuoi gusti o come Google Maps calcoli il percorso più veloce, allora hai già avuto un assaggio di ciò che il Machine Learning può fare. Ma cos’è esattamente il Machine Learning? In questo articolo, cercherò di spiegarti in modo semplice e approfondito cos’è, come funziona, quali sono le sue applicazioni e come puoi iniziare ad esplorare questo mondo se sei un neofita. ## Cos’è il Machine Learning? Il Machine Learning è una branca dell’**[intelligenza artificiale](https://devacademy.it/intelligenza-artificiale/)** (AI) che permette ai computer di imparare dai dati senza essere esplicitamente programmati. In parole povere, anziché scrivere un programma per risolvere un problema specifico, gli sviluppatori forniscono al computer una grande quantità di dati e lo addestrano a “imparare” da essi, in modo che possa fare previsioni o prendere decisioni in autonomia. Ad esempio, se volessi sviluppare un’applicazione in grado di riconoscere le immagini di gatti e cani, invece di scrivere regole per identificare ogni singolo dettaglio che distingue un gatto da un cane, potresti semplicemente fornire migliaia di immagini di gatti e cani al sistema. Il sistema analizzerà i dati, riconoscerà i pattern e sarà in grado di fare previsioni accurate su nuove immagini. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## Come funziona il Machine Learning? Il funzionamento del Machine Learning si basa su tre componenti principali: i dati, gli algoritmi e il modello. 1. **Dati**: Il Machine Learning dipende fortemente dalla disponibilità di dati. Più dati ha a disposizione un algoritmo, migliore sarà il suo addestramento. Questi dati possono essere immagini, video, testo o qualsiasi altra informazione rilevante. Ad esempio, se volessi addestrare un algoritmo a riconoscere le email spam, forniresti una grande quantità di email etichettate come “spam” o “non spam”. 2. **Algoritmi**: Gli algoritmi di Machine Learning sono responsabili dell’analisi dei dati e della loro elaborazione. Esistono diversi tipi di algoritmi, a seconda del tipo di problema da risolvere. I due principali approcci sono: - **Apprendimento supervisionato**: In questo caso, i dati di addestramento includono sia gli input (ad esempio, immagini o testi) sia gli output (ad esempio, etichette come “gatto” o “cane”). L’algoritmo apprende a mappare gli input con gli output. - **Apprendimento non supervisionato**: Qui, l’algoritmo cerca pattern nei dati senza conoscere gli output corretti. Ad esempio, può cercare di raggruppare i clienti di un negozio in base ai loro comportamenti di acquisto senza sapere a priori come dovrebbero essere classificati. 3. **Modello**: Dopo che un algoritmo è stato addestrato, il risultato è un modello. Il modello è ciò che verrà utilizzato per fare previsioni su nuovi dati. Per esempio, se hai addestrato un algoritmo a riconoscere cani e gatti, il modello finale sarà in grado di distinguere tra i due in nuove immagini che non ha mai visto prima. » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO MACHINE LEARNING in Python](https://devacademy.it/corsi/machine-learning-in-python/) « ## A cosa serve il Machine Learning? Il Machine Learning ha un’infinità di applicazioni, che spaziano in moltissimi settori. Vediamo alcune delle più comuni: - **Riconoscimento delle immagini**: Sistemi come Google Immagini o il riconoscimento facciale degli smartphone utilizzano modelli di Machine Learning per analizzare e classificare immagini. - **Raccomandazioni**: I sistemi di raccomandazione di Netflix, Spotify e Amazon usano il Machine Learning per suggerirti film, musica e prodotti basandosi sulle tue preferenze e sul comportamento di utenti simili. - **Previsioni finanziarie**: Le banche e le aziende finanziarie utilizzano il Machine Learning per fare previsioni sui mercati azionari o per rilevare frodi nelle transazioni. - **Medicina**: Il Machine Learning è utilizzato per analizzare dati clinici, diagnosticare malattie in base ai sintomi o identificare pattern in immagini mediche come le radiografie. - **Automobili a guida autonoma**: Tesla, Waymo e altre aziende utilizzano il Machine Learning per addestrare le auto a riconoscere pedoni, segnali stradali e altre auto, in modo da poter guidare autonomamente. ## Come iniziare con il Machine Learning Se sei interessato a iniziare a studiare il Machine Learning, ci sono alcune competenze di base che devi acquisire: 1. **Programmazione**: La programmazione è essenziale per comprendere come implementare algoritmi di Machine Learning. I linguaggi più usati in questo campo sono **Python** e R. Python, in particolare, è molto popolare grazie a librerie come **TensorFlow**, **scikit-learn** e **PyTorch** che semplificano lo sviluppo di modelli. 2. **Matematica e Statistica**: Il Machine Learning si basa molto su concetti matematici come algebra lineare, calcolo e probabilità. Non devi essere un esperto di matematica per iniziare, ma una conoscenza di base sarà di grande aiuto. 3. **Analisi dei Dati**: Imparare a lavorare con grandi quantità di dati è fondamentale. Le librerie come **pandas** e **NumPy** in Python sono strumenti chiave per manipolare i dati in modo efficace. 4. **Algoritmi di Machine Learning**: Dopo aver acquisito familiarità con la programmazione e la matematica di base, potrai iniziare a studiare i principali algoritmi di Machine Learning, come regressione lineare, decision tree, support vector machine e reti neurali. » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO MACHINE LEARNING in Python](https://devacademy.it/corsi/machine-learning-in-python/) « ## Sbocchi Professionali nel Machine Learning Il settore del Machine Learning è in forte crescita e offre numerose opportunità professionali. Alcune delle posizioni più ricercate includono: - **Data Scientist**: Analizza i dati e crea modelli di Machine Learning per risolvere problemi aziendali. - **Machine Learning Engineer**: Progetta e implementa sistemi di Machine Learning, con un focus particolare sull’ottimizzazione degli algoritmi e della loro integrazione in applicazioni pratiche. - **Ricercatore in Intelligenza Artificiale**: Lavora su algoritmi innovativi e nuove applicazioni del Machine Learning. ## Stipendi e Opportunità di Carriera Gli stipendi nel campo del Machine Learning sono generalmente molto competitivi. Negli Stati Uniti, ad esempio, uno specialista in Machine Learning può guadagnare in media tra i 100.000 e i 150.000 dollari all’anno, mentre in Europa gli stipendi variano tra i 60.000 e i 100.000 euro all’anno. Anche in Italia la domanda è in crescita, con stipendi che possono andare dai 40.000 ai 70.000 euro annui, a seconda dell’esperienza e del settore in cui si opera. ## Quanto è utile il Machine Learning per un neofita? Il Machine Learning è un campo affascinante e dalle grandi potenzialità. Anche se può sembrare complesso, le risorse disponibili oggi lo rendono accessibile anche a chi parte da zero. Con la giusta formazione e motivazione, chiunque può avvicinarsi a questa tecnologia e imparare a sfruttarla. Se sei appassionato di tecnologia e ti piace risolvere problemi attraverso l’analisi dei dati, il Machine Learning potrebbe essere il campo giusto per te. ## Conclusione Il Machine Learning è una tecnologia in rapida evoluzione che sta cambiando il modo in cui viviamo e lavoriamo. È utilizzato in moltissimi ambiti, dalla medicina all’e-commerce, e offre opportunità di carriera molto interessanti e ben retribuite. Se sei un neofita interessato ad entrare in questo mondo, non c’è momento migliore per iniziare! Con un po’ di impegno, puoi acquisire le competenze necessarie per lavorare in uno dei settori più dinamici e innovativi del nostro tempo. Per approfondire le tue conoscenze in Machine Learning, visita il nostro percorso dedicato su devACADEMY, dove potrai apprendere attraverso videolezioni e metterti alla prova con esercizi pratici su progetti reali! » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [PERCORSO DATA SCIENTIST](https://devacademy.it/percorsi/data-scientist/) « **Categorie:** Intelligenza Artificiale, Machine Learning **Tag:** Intelligenza Artificiale, Machine Learning --- ### [HTML5: cos'è, come funziona e perché è fondamentale per il web moderno](https://devacademy.it/html5-cose-come-funziona-e-perche-e-fondamentale-per-il-web-moderno/) **Published:** Ottobre 23, 2024 **Author:** Rino Picardi **Content:** **HTML5** è l’ultima versione del linguaggio di markup utilizzato per **creare siti web**, ed è fondamentale per lo sviluppo di pagine moderne, interattive e mobile-friendly. In questa guida scoprirai cos’è HTML5, quali sono le sue principali funzionalità e come utilizzarlo per integrare contenuti multimediali e API avanzate nei tuoi progetti web. ## Introduzione all’HTML5 **HTML5**, acronimo di HyperText Markup Language, è l’ultima evoluzione del linguaggio standard utilizzato per creare pagine web. Nasce con lo scopo di migliorare l’esperienza web, offrendo nuove funzionalità per la gestione di contenuti multimediali, grafica e interattività. Introdotto ufficialmente nel 2014 dal W3C (World Wide Web Consortium), HTML5 ha rivoluzionato il modo in cui sviluppatori e designer costruiscono i siti web, eliminando la necessità di plugin esterni come Flash e semplificando notevolmente lo sviluppo di applicazioni web moderne. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## Differenze tra HTML e HTML5 HTML5 si distingue dalle versioni precedenti, come HTML4, per una serie di miglioramenti significativi. Ecco alcune delle differenze chiave: - **Multimedia nativo**: HTML5 include tag specifici per video e audio, eliminando la necessità di plugin esterni. - **Nuovi elementi semantici**: Introduce tag come ``, ``, ``, `` che migliorano la struttura semantica della pagina. - **Interattività avanzata**: Grazie a nuove API integrate, come il supporto alla geolocalizzazione e al drag & drop, HTML5 consente di creare applicazioni web più dinamiche. - **Maggiore supporto per dispositivi mobili**: HTML5 è ottimizzato per essere utilizzato su smartphone e tablet, grazie anche alla sua flessibilità per creare layout responsive. » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO HTML](https://devacademy.it/corsi/introduzione-a-html-e-css/) « ## Struttura di Base di un Documento HTML5 Un documento HTML5 ha una struttura di base semplice e chiara. Di seguito un esempio della struttura minima che ogni pagina HTML5 dovrebbe avere: ``` Titolo della Pagina Benvenuti nel mondo di HTML5! Questa è una semplice pagina HTML5. ©2024 devACADEMY ``` **Spiegazione del codice:** - ``: dichiara il tipo di documento, che in questo caso è HTML5. - ``: definisce la lingua della pagina come italiano. - ``: imposta la codifica dei caratteri per supportare tutti i caratteri speciali, inclusi quelli italiani. - ``: rende il sito mobile-friendly, ottimizzando la visualizzazione su tutti i dispositivi. - Gli elementi semantici ``, ``, e `` aiutano a strutturare il contenuto della pagina. » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO HTML](https://devacademy.it/corsi/introduzione-a-html-e-css/) « ## Nuovi Elementi Introdotti con HTML5 HTML5 ha introdotto diversi nuovi elementi semantici per migliorare la leggibilità del codice e la SEO, come ad esempio: - ``: definisce un contenuto indipendente, ad esempio un articolo di blog. - ``: rappresenta una sezione tematica di un documento. - ``: è utilizzato per gruppi di link di navigazione. - ``: contiene informazioni marginali o correlate al contenuto principale. - `` e ``: rappresentano rispettivamente l’intestazione e il piè di pagina di un documento o una sezione. Vediamo un esempio pratico: ``` Introduzione a HTML5 HTML5 è una tecnologia potente che ha trasformato il modo in cui costruiscono le pagine web. Autore: devACADEMY ``` Come si può intuire il codice risulta in questo modo più leggibile e chiaro. » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO HTML](https://devacademy.it/corsi/introduzione-a-html-e-css/) « ## Supporto per Multimedia HTML5 offre un eccellente supporto per multimedia grazie all’introduzione dei tag `` e ``, che permettono di inserire file multimediali senza l’uso di plugin esterni. Vediamo come funziona. Esempio di un video: ``` Il tuo browser non supporta il tag video. ``` Esempio di un audio: ``` Il tuo browser non supporta il tag audio. ``` Il tag `` consente di aggiungere video alla pagina, mentre il tag `` permette l’integrazione di file audio. ## API e Funzionalità Avanzate HTML5 include numerose API che aggiungono funzionalità avanzate alle pagine web. Tra le più interessanti: - **Canvas API**: permette di disegnare grafica 2D direttamente all’interno delle pagine web. - **Geolocalizzazione**: fornisce la possibilità di ottenere la posizione geografica dell’utente (con il suo consenso). - **Web Storage (localStorage e sessionStorage)**: permette di memorizzare dati localmente nel browser dell’utente. Esempio di canvas: ``` ``` Questo codice composto da HTML e JavaScript crea un rettangolo rosso all’interno di un elemento ``. Vediamo come. L’elemento ``: ``` ``` - Crea un’area di disegno con un identificatore `id="myCanvas"`, una larghezza di 200 pixel e un’altezza di 100 pixel. - Lo stile aggiunge un bordo nero intorno all’area del canvas. Vediamo invece cosa fa il codice JavaScript all’interno del tag *script*: ``` var canvas = document.getElementById("myCanvas"); var ctx = canvas.getContext("2d"); ctx.fillStyle = "#FF0000"; ctx.fillRect(0, 0, 150, 75); ``` - `document.getElementById("myCanvas")`: seleziona l’elemento canvas con l’id myCanvas. - `canvas.getContext("2d")`: crea un contesto di rendering 2D, che è un oggetto che contiene i metodi e le proprietà per disegnare sul canvas. - `ctx.fillStyle = "#FF0000";`: imposta il colore di riempimento per le forme disegnate successivamente al rosso (#FF0000). - `ctx.fillRect(0, 0, 150, 75);`: disegna un rettangolo pieno, partendo dalla posizione (0, 0) nell’angolo superiore sinistro del canvas, con una larghezza di 150 pixel e un’altezza di 75 pixel. In sintesi, il codice disegna un rettangolo rosso di 150×75 pixel in alto a sinistra nell’area di disegno del canvas come nell’esempio qui sotto: » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO HTML](https://devacademy.it/corsi/introduzione-a-html-e-css/) « ## Compatibilità e Accessibilità HTML5 è stato progettato per garantire la compatibilità con i browser più moderni, ma offre anche un buon supporto retroattivo. Inoltre, è costruito con una forte attenzione all’accessibilità, consentendo ai siti web di essere fruibili anche da persone con disabilità. Per migliorare ulteriormente l’accessibilità, è possibile utilizzare attributi come `aria-label` e elementi come `` e `` per descrivere le immagini in modo più preciso. ## Esempio Completo di Pagina HTML5 Mettiamo insieme tutto quanto appreso finora in un esempio completo di una semplice pagina HTML5. ``` Pagina di Esempio Benvenuti nel mondo di HTML5 Introduzione Multimedia Canvas Cos'è HTML5? HTML5 è l'ultima evoluzione del linguaggio HTML, con molte nuove funzionalità. Supporto per Multimedia Il tuo browser non supporta il tag video. Canvas API © 2024 devACADEMY ``` ## Conclusione HTML5 ha trasformato il modo in cui le pagine web vengono create e visualizzate. Grazie alle sue nuove funzionalità e alla facilità d’uso, è diventato uno strumento essenziale per ogni sviluppatore web. La sua flessibilità e le numerose API integrate permettono di creare applicazioni web moderne e interattive, senza sacrificare la compatibilità con i browser o l’accessibilità. Se sei un neofita del web design, HTML5 è il punto di partenza perfetto per costruire le tue prime pagine web! » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO HTML](https://devacademy.it/corsi/introduzione-a-html-e-css/) « **Categorie:** HTML **Tag:** HTML, HTML5 --- ### [Che cos'è HTTP? La Guida per Programmatori e Sviluppatori Web](https://devacademy.it/che-cos-e-http-la-guida-per-programmatori-e-sviluppatori-web/) **Published:** Giugno 10, 2024 **Author:** Rino Picardi **Content:** Se sei un programmatore, un web developer o aspiri a diventarlo, è fondamentale comprendere i concetti chiave che stanno alla base della comunicazione su Internet. Uno di questi concetti è **HTTP**, acronimo di HyperText Transfer Protocol. In questo articolo, esploreremo in dettaglio **cos’è HTTP**, come funziona e perché è cruciale nel mondo dello sviluppo web. Inoltre, ti mostreremo esempi pratici e ti presenteremo le soluzioni di formazione offerte dalla nostra academy online per diventare un esperto web developer. ## Cos’è HTTP? ### Definizione e Storia **HTTP**, o HyperText Transfer Protocol, è un protocollo di comunicazione utilizzato per trasferire ipertesti e dati su Internet. Creato all’inizio degli anni ’90 da Tim Berners-Lee, HTTP è il fondamento del World Wide Web e permette la trasmissione di informazioni tra client (come i browser web) e server. Quando visiti un sito web, il tuo browser invia una richiesta HTTP al server dove risiede il sito stesso, il quale risponde inviando il contenuto richiesto, come pagine HTML, immagini, video e altri dati. ### Evoluzione di HTTP HTTP è stato inizialmente definito nella RFC 1945 come HTTP/1.0 e successivamente aggiornato a HTTP/1.1 nella RFC 2616. HTTP/1.1 ha introdotto miglioramenti significativi in termini di performance e efficienza, come le connessioni persistenti e il pipelining delle richieste. Negli ultimi anni, HTTP/2 è stato introdotto per ulteriormente migliorare le prestazioni, riducendo la latenza e aumentando la velocità di caricamento delle pagine web. HTTP/3, attualmente in fase di sviluppo, utilizza il protocollo QUIC per offrire ancora maggiore velocità e sicurezza. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## Come Funziona HTTP? ### Richieste e Risposte HTTP Il funzionamento di HTTP si basa su un meccanismo di richieste e risposte. Vediamo un esempio pratico: **1. Richiesta HTTP (request)**: Quando digiti un URL nel tuo browser e premi Invio, il browser invia una richiesta HTTP al server. Questa richiesta include diverse informazioni, come il metodo HTTP utilizzato (ad esempio, GET o POST), l’URL richiesto, l’header della richiesta e talvolta un corpo della richiesta. **2. Risposta HTTP (response)**: Il server riceve la richiesta, la elabora e risponde con una risposta HTTP. Questa risposta include uno status code (ad esempio: 200 OK, 404 Not Found, ecc.), gli header della risposta e il corpo della risposta, che contiene i dati richiesti. ### Struttura di una Richiesta HTTP Una richiesta HTTP è composta da diverse parti: - **Linea di Richiesta**: Indica il metodo HTTP, l’URL e la versione del protocollo. Ad esempio: `GET /index.html HTTP/1.1`. - **Header della Richiesta**: Contiene informazioni aggiuntive come *Host*, *User-Agent*, *Accept-Language* e altre intestazioni utili per il server. - **Corpo della Richiesta**: Utilizzato principalmente con i metodi POST e PUT per inviare dati al server, come il contenuto di un modulo. ### Struttura di una Risposta HTTP Analogamente, una risposta HTTP ha una struttura ben definita: - **Linea di Stato**: Indica la versione del protocollo e lo status code. Ad esempio: `HTTP/1.1 200 OK`. - **Header della Risposta**: Fornisce informazioni come *Content-Type*, *Content-Length*, *Set-Cookie* e altre intestazioni. - **Corpo della Risposta**: Contiene i dati richiesti, come una pagina HTML o un file. » VUOI SAPERNE DI PIU’? SCOPRI I NOSTRI [CORSI PER WEB DEVELOPER](https://devacademy.it/percorsi/) « ## Metodi HTTP I metodi HTTP specificano il tipo di azione che il client desidera compiere sul server. Ecco i metodi più comuni: - **GET**: Recupera dati dal server. Ad esempio, quando visiti una pagina web, il browser utilizza il metodo GET per richiedere il contenuto della pagina. - **POST**: Invia dati al server per essere elaborati. Questo metodo è spesso utilizzato per inviare dati da un modulo web. - **PUT**: Carica o aggiorna una risorsa sul server. - **DELETE**: Elimina una risorsa dal server. - **HEAD**: Simile a GET, ma richiede solo gli header della risposta, senza il corpo. - **OPTIONS**: Richiede le opzioni di comunicazione supportate dal server per una risorsa specifica. - **PATCH**: Applica modifiche parziali a una risorsa sul server. ### Esempio Pratico: Una Richiesta HTTP GET Vediamo un esempio pratico di una richiesta HTTP GET: ``` GET /index.html HTTP/1.1 Host: www.example.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36 Accept-Language: en-US,en;q=0.9 ``` In questo esempio, il browser richiede la pagina index.html dal server www.example.com. La risposta del server potrebbe essere simile a questa: ``` HTTP/1.1 200 OK Content-Type: text/html Content-Length: 3050 Example Page Welcome to Example.com! This is an example page. ``` » VUOI SAPERNE DI PIU’? SCOPRI I NOSTRI [CORSI PER WEB DEVELOPER](https://devacademy.it/percorsi/) « ## Status Code HTTP Gli status code HTTP sono codici numerici inclusi nella risposta HTTP che indicano il risultato della richiesta. Ecco una panoramica dei codici più comuni: ### Codici di Successo (2xx) - **200 OK**: La richiesta è stata completata con successo. - **201 Created**: La richiesta è stata completata e ha portato alla creazione di una nuova risorsa. - **204 No Content**: La richiesta è stata completata con successo, ma non c’è contenuto da restituire. ### Codici di Reindirizzamento (3xx) - **301 Moved Permanently**: La risorsa richiesta è stata spostata in modo permanente a un nuovo URL. - **302 Found**: La risorsa richiesta è stata temporaneamente spostata a un altro URL. - **304 Not Modified**: La risorsa non è stata modificata dall’ultima richiesta. ### Codici di Errore del Client (4xx) - **400 Bad Request**: La richiesta non può essere elaborata a causa di un errore del client. - **401 Unauthorized**: Autenticazione richiesta per accedere alla risorsa. - **403 Forbidden**: Accesso alla risorsa negato. - **404 Not Found**: La risorsa richiesta non è stata trovata sul server. ### Codici di Errore del Server (5xx) - **500 Internal Server Error**: Si è verificato un errore interno al server. - **502 Bad Gateway**: Il server ha ricevuto una risposta invalida da un server a monte. - **503 Service Unavailable**: Il server non è disponibile, solitamente a causa di manutenzione o sovraccarico. » VUOI SAPERNE DI PIU’? SCOPRI I NOSTRI [CORSI PER WEB DEVELOPER](https://devacademy.it/percorsi/) « ## Sicurezza e HTTPS HTTP di per sé non è sicuro, poiché i dati trasmessi non sono crittografati. Per garantire la sicurezza delle informazioni scambiate, si utilizza HTTPS (HyperText Transfer Protocol Secure), che combina HTTP con il protocollo SSL/TLS per crittografare i dati. HTTPS è essenziale per proteggere le comunicazioni sensibili, come le transazioni finanziarie e le informazioni personali. ### Come Funziona HTTPS Quando un client si connette a un server tramite HTTPS, si verifica una procedura chiamata handshake SSL/TLS. Durante questo processo, il client e il server scambiano chiavi crittografiche e stabiliscono una connessione sicura. I dati trasmessi tra il client e il server sono quindi crittografati, rendendo molto difficile per gli attaccanti intercettare o alterare le informazioni. ### Importanza di HTTPS L’uso di HTTPS è diventato uno standard di fatto per i siti web moderni. Non solo protegge le informazioni degli utenti, ma è anche un fattore di ranking nei motori di ricerca come Google. I siti che utilizzano HTTPS tendono a essere posizionati meglio nei risultati di ricerca, migliorando così la visibilità e la credibilità del sito. ## L’Importanza di HTTP per i Web Developer Per un web developer, la conoscenza approfondita di HTTP è cruciale. HTTP è la base della comunicazione su Internet e ogni interazione tra il client e il server avviene tramite questo protocollo. Ecco alcuni motivi per cui è importante: ### Debugging e Ottimizzazione Capire come funzionano le richieste e le risposte HTTP ti permette di eseguire il debugging delle tue applicazioni web in modo più efficiente. Puoi identificare e risolvere problemi legati alle performance, alla sicurezza e alla corretta implementazione delle funzionalità. ### Progettazione di API HTTP è il protocollo utilizzato per la maggior parte delle API web. Conoscere i metodi HTTP, gli status code e le best practice per la progettazione di API RESTful è fondamentale per sviluppare applicazioni scalabili e manutenibili. ### Sicurezza Comprendere HTTPS e le pratiche di sicurezza web ti permette di proteggere le applicazioni e i dati degli utenti. Implementare correttamente HTTPS e gestire le vulnerabilità legate a HTTP è essenziale per mantenere la fiducia degli utenti e la conformità alle normative. ### Conclusione HTTP è un elemento fondamentale del web, essenziale per qualsiasi programmatore o aspirante web developer. Comprendere come funziona ti permette di creare applicazioni web più efficienti e sicure. Se vuoi approfondire ulteriormente le tue conoscenze e diventare un esperto nello sviluppo web, la nostra academy online offre corsi e percorsi professionali su misura per te. Iscriviti oggi stesso e inizia il tuo viaggio verso una carriera di successo nel mondo della programmazione e del web development. Con questo articolo, speriamo di averti fornito una comprensione chiara e approfondita di HTTP. Continua a seguire il nostro blog per ulteriori articoli e risorse utili per la tua crescita professionale nel mondo della programmazione. » VUOI SAPERNE DI PIU’? SCOPRI I NOSTRI [CORSI PER WEB DEVELOPER](https://devacademy.it/percorsi/) « **Categorie:** HTTP **Tag:** HTTP --- ### [Commenti in HTML: come e perché utilizzarli](https://devacademy.it/commenti-in-html-come-e-perche-utilizzarli/) **Published:** Giugno 8, 2024 **Author:** Rino Picardi **Content:** Se stai imparando il linguaggio HTML o sei già un web developer, conoscere l’uso dei commenti in HTML è fondamentale per scrivere codice chiaro e manutenibile. In questo articolo esploreremo cosa sono i commenti in HTML, come utilizzarli correttamente e perché sono importanti. Inoltre, ti mostreremo alcuni esempi pratici per aiutarti a integrare i commenti nel tuo workflow quotidiano. ## Cosa Sono i Commenti in HTML? I commenti in HTML sono frammenti di testo all’interno del codice che non vengono visualizzati dal browser quando la pagina web viene caricata. Sono utilizzati per aggiungere note, spiegazioni o promemoria che aiutano i programmatori a comprendere meglio il codice. I commenti sono particolarmente utili quando si lavora su progetti di grandi dimensioni o in team, dove è importante che ogni membro comprenda il lavoro degli altri. ### Sintassi dei Commenti in HTML Per creare un commento in HTML, è sufficiente racchiudere il testo del commento all’interno dei seguenti tag: ``` ``` Tutto ciò che è contenuto tra `\` sarà ignorato dal browser. ### Esempio di Commento in HTML ``` Pagina di Esempio Benvenuto nella mia pagina web! Questo è un paragrafo di esempio. ``` In questo esempio, i commenti indicano l’inizio e la fine del contenuto principale della pagina. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## Perché utilizzare i Commenti in HTML? ### 1. Documentazione e Chiarezza del Codice I commenti aiutano a documentare il codice, rendendolo più chiaro e comprensibile per chiunque lo legga. Questo è particolarmente utile quando si lavora su progetti complessi o quando più sviluppatori collaborano allo stesso progetto. ### 2. Debugging Durante il processo di debugging, i commenti possono essere utilizzati per disabilitare temporaneamente parti di codice senza eliminarle. Questo permette di isolare e identificare rapidamente eventuali problemi. ### 3. Promemoria per futuri aggiornamenti I commenti possono servire come promemoria per eventuali modifiche future o per annotare idee che potrebbero essere implementate in seguito. » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO HTML](https://devacademy.it/corsi/introduzione-a-html-e-css/) « ## Migliori Pratiche per l’Uso dei Commenti in HTML ### 1. Commenti Brevi e Pertinenti Evita di scrivere commenti troppo lunghi o dettagliati. I commenti dovrebbero essere brevi e pertinenti, spiegando chiaramente il punto di codice a cui si riferiscono. ### 2. Non Abusare dei Commenti Utilizza i commenti solo quando necessario. Un codice ben scritto e autoesplicativo spesso non necessita di molti commenti. ### 3. Mantenere i Commenti Aggiornati Assicurati che i commenti riflettano sempre lo stato attuale del codice. Commenti obsoleti possono essere fuorvianti e causare confusione. ## Esempi Pratici ### Commentare Sezioni di Codice ``` Home Chi Siamo Contatti ``` ### Debugging con i Commenti ``` ``` In questo esempio, il div è stato commentato per escluderlo temporaneamente dalla visualizzazione durante il debugging. » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO HTML](https://devacademy.it/corsi/introduzione-a-html-e-css/) « ## Conclusione I commenti in HTML sono uno strumento essenziale per ogni sviluppatore web. Utilizzati correttamente, possono migliorare la leggibilità del codice, facilitare il debugging e servire come promemoria utili per futuri aggiornamenti. Se desideri approfondire le tue conoscenze di HTML e diventare un esperto sviluppatore web, ti invitiamo a scoprire i nostri corsi. ## Scopri i Nostri Corsi Su devACADEMY trovi diversi corsi sul linguaggio HTML che coprono tutti gli aspetti fondamentali di questo linguaggio, dai tag di base ai concetti avanzati. Inoltre, i nostri [percorsi per diventare Web Developer](https://devacademy.it/percorsi/) ti guideranno passo dopo passo nella tua carriera di sviluppatore, fornendoti tutte le competenze necessarie per avere successo nel mondo del web development. Scopri di più sui [nostri corsi](https://devacademy.it/corsi/). Unisciti a noi e inizia il tuo viaggio verso il successo nel mondo dello sviluppo web! Utilizza questa guida per migliorare l’uso dei commenti nel tuo codice HTML e considera l’opportunità di espandere le tue competenze attraverso i nostri corsi specializzati. Buon coding! » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO HTML](https://devacademy.it/corsi/introduzione-a-html-e-css/) « **Categorie:** HTML **Tag:** HTML --- ### [Programmare in Java](https://devacademy.it/programmare-in-java/) **Published:** Marzo 6, 2019 **Author:** Giuseppe Maggi **Content:** Cosa vuol dire **Programmare in Java**? Perché scegliere questo linguaggio di programmazione e quali sono le sue caratteristiche? Quali sono gli sbocchi professionali e [da dove iniziare](http://devacademy.it/corsi/fondamenti-di-java/)? In questa guida dedicata ad uno dei più famosi e richiesti linguaggi di programmazione parleremo proprio di questo, ma partiamo da un po’ di storia. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## **Il linguaggio Java** **Java** nacque in un periodo in cui Internet era una realtà, l’hardware dei computer si potenziava rapidamente e l’informatizzazione complessiva marciava a ritmi forzati. Tutti questi fattori ponevano le basi per un contesto in cui i sistemi, sebbene eterogenei tra loro, sarebbero stati in grado di dialogare reciprocamente. Il linguaggio – nato nel 1995 come progetto Oak ad opera di Sun Microsystems – vide la luce proprio con l’intenzione di generare applicazioni in grado di essere eseguite su ogni dispositivo dotato di intelligenza, dal più grande al più piccolo, favorendo così scambi di informazioni, automazione industriale, controllo remoto. Si sognavano impianti intelligenti per la casa, applicazioni su ogni smartphone e dispositivi molto piccoli in grado di fare grandi cose: sono passati circa venticinque anni, tutto questo è realtà e Java, ormai il linguaggio di programmazione più usato al mondo, può prendersene buona parte dei meriti. Ma ora vediamo tutto ciò che c’è da sapere su questa tecnologia e del mondo di opportunità che offre. » VUOI SAPERNE DI PIU’? SCOPRI IL NOSTRO [CORSO JAVA](https://devacademy.it/corsi/fondamenti-di-java/) « ## **Caratteristiche principali del linguaggio Java** Java è una tecnologia contraddistinta da molte caratteristiche interessanti che l’hanno resa unica e spesso imitata. Ecco un elenco dei suoi principali punti di forza, li analizziamo uno alla volta soprattutto per individuare i motivi che possono spingerci a studiare questo linguaggio fantastico: ### **Scrivi una volta, esegui ovunque** Questo è il motto che accompagna da sempre Java (in inglese suona “Write once, run everywhere”) ed è tuttora in grado di sintetizzare al massimo la sua idea di fondo. Buona parte dei linguaggi a quel tempo esistenti, portavano ad una “compilazione” del codice sorgente in funzione del sistema operativo su cui il programma doveva essere eseguito. Se un programma nasceva per Windows veniva appositamente convertito in codice macchina per questo sistema operativo e per poter essere portato, ad esempio, su Linux doveva essere adattato nel codice sorgente e compilato nuovamente. Ciò portava ad una decuplicazione degli sforzi sia in fase di progettazione sia durante lo sviluppo e la distribuzione che potevano essere tanto maggiori quanto numerose erano le piattaforme su cui il software doveva apparire. Oltre ai disagi per programmatori e progettisti, insorgevano maggiori costi e sforzi organizzativi per le aziende. Con Java tutto ciò non è più un problema. Al centro della sua concezione, è stata posta una compilazione più “generica” che non produce codice macchina specifico per un solo sistema operativo ma del bytecode eseguibile da un apposito strumento: la Java Virtual Machine. Sarà proprio quest’ultima ad essere resa disponibile per ogni sistema operativo. Grazie a questo si avrà uno stesso codice Java, compilato una sola volta ed eseguibile su qualsiasi sistema operativo dotato di Java Virtual Machine; ### **Gratuito** Utilizzare Java non richiede costi. Si può iniziare ad utilizzarlo gratuitamente per quanto riguarda sia il linguaggio in sé stesso sia gli ambienti con cui scrivere programmi. Ciò tuttavia non deve trarre in inganno: Java è un linguaggio altamente professionale, gratuito per scelta ma non perché valga meno di altri ambienti che richiedono costose licenze; ### **Totalmente orientato agli oggetti** Java è un ottimo esempio di Programmazione Orientata agli Oggetti. Le informazioni sono ricchezza ma lo sono soprattutto quando vengono aggregate e connesse bene tra loro, quando costituiscono una rete da attraversare per produrre conoscenza. Se abbiamo bisogno di dimostrazioni basti pensare ai Social Network che ogni giorno utilizziamo. La Programmazione Orientata agli Oggetti è proprio l’arte di organizzare le informazioni, associarle e farle comunicare tra loro. Con questa tecnica di sviluppo – che in Java va assolutamente utilizzata – potremo realizzare modelli informatici di realtà esistenti per produrre applicativi di commercio elettronico, analisi di mercati finanziari, gestionali aziendali e tutto ciò che permette di “informatizzare” contesti reali; ### **Ricca community di sviluppatori e tante librerie software da scaricare** Uno dei motori principali di un linguaggio di programmazione è il seguito che genera nella comunità di informatici: quello di Java è invidiabile per chiunque. Una folta community è una fonte inesauribile di materiali, esempi, informazioni ma anche di suggerimenti per chi “crea” Java e le sue nuove versioni. Inoltre il codice scritto in Java è facilmente condivisibile – soprattutto per la sua natura multipiattaforma – pertanto sono numerose le librerie software (raccolte di funzioni già fatte) che vengono pubblicate da aziende, sviluppatori e fondazioni e rese disponibili per chiunque le voglia scaricare ed integrare nel proprio ambiente di lavoro. Parlando di librerie non si pensi solo a piccoli aggregati di funzionalità: intendiamo in molti casi vere e proprie piattaforme, imponenti strumenti per lo sviluppo che spesso superano in qualità ed efficienza quelli ufficiali; » VUOI SAPERNE DI PIU’? SCOPRI IL NOSTRO [CORSO JAVA](https://devacademy.it/corsi/fondamenti-di-java/) « ### **Linguaggio in continua crescita** Negli anni, i detrattori di Java hanno accusato il linguaggio di essere fermo, si è sospettata addirittura una sua presunta morte imminente ed invece non è mai successo niente di tutto questo. Anzi le cose sono andate esattamente al contrario. Non solo proprio quando si tacciava Java di godere di pessima salute era in preparazione la versione 8, la sua edizione più rivoluzionaria, ma negli ultimi anni il linguaggio ha inaugurato un ciclo di aggiornamento semestrale quasi introvabile in qualsiasi altro scenario tecnologico. A settembre 2017 è stato pubblicato Java 9. L’anno successivo sono state rilasciate la versione 10, a marzo, e la 11 a settembre mentre il 2019 vedrà la prosecuzione di tale cadenza. Ognuna di queste versioni non si è accontentata di innovazioni limitate e di facciata ma ha introdotto strumenti importanti che hanno determinato drastici salti di qualità della piattaforma in sé stessa come una nuova struttura modulare, un ambiente REPL per la programmazione interattiva (una sorta di riga di comando in cui impartire direttive in Java) ed un nuovo client HTTP per l’interazione in Rete già rivolto ad HTTPS e al nuovissimo protocollo HTTP2. Inoltre si può vedere l’evoluzione di Java anche nel numero di linguaggi che le fioriscono attorno, ad esempio Kotlin e Scala per citare quelli più noti. Conoscere questa tecnologia permette di approcciarli nel migliore dei modi sentendosi già addentro ai principi fondamentali e trasformando spesso l’acquisizione della nuova sintassi in un compito del tutto semplice. ## **Che lavori posso fare con Java?** Dopo questa introduzione probabilmente la prospettiva di diventare un **programmatore Java** inizierà ad allettarti ma ti starai a questo punto chiedendo: che lavori si possono fare in Java? La risposta è molto semplice: qualsiasi lavoro nel campo dell’Informatica può essere fatto in Java. Partiamo dai settori che probabilmente toccano l’utente più da vicino: il web ed il mobile. Le **applicazioni web** richiedono tipicamente due componenti che comunicano tra loro da parti diverse della Rete: il client (pensa al browser quando “vai” su Internet) ed il server, il cervellone che offre le risposte ad ogni richiesta (siti web, notizie, previsioni del tempo, video, etc.). Java costituisce una delle tecnologie più importanti in assoluto per quanto riguarda lo sviluppo server. La sua stabilità e completezza l’hanno resa una delle scelte migliori per le applicazioni in ambienti molto delicati quali il settore bancario, l’assicurativo e l’industria in generale. In questo caso, come in molti altri si può optare per framework “ufficiali” – pensiamo Java Enterprise Edition () – prodotti dagli stessi creatori di Java o di terze parti che sono comunque soluzioni validissime e adottate in gran parte dei progetti: di questo emisfero potremmo nominare, tra i molti, i progetti Spring (), Play Framework() e Google Web Toolkit (). » VUOI SAPERNE DI PIU’? SCOPRI IL NOSTRO [CORSO JAVA](https://devacademy.it/corsi/fondamenti-di-java/) « Per quanto riguarda il **mobile**, non si può non pensare al mondo Android (). Hai uno smartphone di questo tipo? Probabilmente sì, ci sono circa l’85% di possibilità che ciò sia vero. Bene, in tal caso non solo hai in tasca un sistema operativo fatto in buon parte in Java ma anche ogni applicazione che normalmente usi è stata realizzata in questo linguaggio e tu, qualora adottassi tale tecnologia, potresti in breve tempo diventare uno degli autori di qualche bella app. Java è stato scelto sin da subito da Google come linguaggio predefinito per sviluppare applicazioni Android e questo ha attirato ancora più interesse sul linguaggio. Altro settore che in questi anni interessa molto le aziende è quello dell’**intelligenza artificiale** con tutti i campi che ad essa sono connessi: Big Data, Machine Learning, Data Science. Se un utente acquista il prodotto A quanto è probabile che in un dato lasso temporale acquisti anche il prodotto B? E come capire se una certa azione farà guadagnare tanti soldi nel giro dei prossimi mesi? Tutti questi quesiti trovano risposta negli ambiti che abbiamo appena citato, discipline variegate figlie di matematica e statistica da un lato, dell’elettronica e dell’informatica dall’altro e imparentate con molte altre scienze pure o applicate a seconda degli ambiti di cui parliamo. Moltissimi framework che permettono di analizzare grandi moli di dati (quelle che noi stessi contribuiamo a generare accedendo a Social Network, viaggiando in auto più elettroniche che meccaniche ormai o utilizzando smartphone, tanto per citare qualche esempio) sono realizzati in Java e ciò rende importantissimo questo linguaggio proprio perché lo candida come strumento primario di interazione con essi. Come prospettiva non si può nemmeno ignorare un altro ambito interessante e attualissimo, noto come **Internet of Things**, l’Internet degli Oggetti. Con esso si intende una nuova concezione dell’automazione della vita quotidiana degli individui, per cui “cose” comuni (elementi della casa, automobili, sensori indossabili, etc.) vengono rese intelligenti da chip inseriti al loro interno e sono così in grado di comunicare tra loro. Il risultato sarà l’attivazione di funzionalità finalizzate all’assistenza degli esseri umani nei contesti che frequentano. Data la diversità di tali oggetti tra loro e degli hardware che li animano, un linguaggio dalla natura multipiattaforma come Java vi si innesta a pennello. Inoltre si consideri che gran parte di tali dati accumulati e trasmessi finiscono per alimentari i grandi serbatoi dei Big Data di sui si è parlato poco fa. Il bello di Java è che qualunque sia l’ambito in cui vuoi cimentarti, il linguaggio è sempre lo stesso. Impari Java una volta, lo approfondisci gradualmente e tutta la preparazione che costruisci puoi applicarla in ogni ambito. Il modo di elaborare stringhe, calcolare espressioni, comunicare in Rete o lavorare su file è il medesimo che tu stia realizzando un’app Android, un’applicazione web o un programma per computer desktop. ## **Come iniziare a Programmare in Java?** Allora pensi di voler iniziare a **programmare in Java**? Non voglio convincerti che sia un percorso facile perché qualsiasi cosa importante, che dà frutti e offre opportunità, se fatta bene, non risulta mai troppo facile, ma sicuramente non avrai di fronte a te nessun ostacolo per iniziare. Ti serve un computer innanzitutto: alla luce di tutto quello che abbiamo detto sinora non deve avere nessun requisito particolare. Non uno specifico sistema operativo: vanno bene tutti. Non hardware particolarmente nuovo o performante: Java ha una buona capacità di adattamento ad ogni condizione. Non dispositivi particolari se non lo stretto necessario legato ad un contesto: ad esempio, se vuoi programmare Android, può essere utile (ma non sempre vitale vista l’esistenza degli emulatori) uno smartphone o un tablet. » VUOI SAPERNE DI PIU’? SCOPRI IL NOSTRO [CORSO JAVA](https://devacademy.it/corsi/fondamenti-di-java/) « Per il resto, il software è assolutamente libero e gratuito. Con una comunissima connessione ad Internet puoi scaricare il tuo ambiente di lavoro, installarlo ed iniziare ad utilizzarlo. Ciò che si rende necessario è una buona guida che ti accompagni in un percorso efficace e fruttuoso evitando inutili perdite di tempo e distrazioni. Potresti partire ad esempio da un corso introduttivo, proprio come quello che proponiamo noi a cui puoi iscriverti anche subito e che puoi seguire online quando vuoi e da qualsiasi dispositivo, per passare poi al percorso più completo Android Developer () che ti permetterà di diventare un programmatore android in Java. **Categorie:** Java, Linguaggi di programmazione, Programmazione **Tag:** java, linguaggi di programmazione, programmazione --- ### [Arduino: la guida completa](https://devacademy.it/arduino-la-guida-completa/) **Published:** Aprile 4, 2019 **Author:** Rino Picardi **Content:** Arduino è una scheda elettronica open-source basata su un hardware e un software semplici da usare e adatta a chiunque voglia realizzare progetti interattivi utili in svariati ambiti. La piattaforma, conosciuta anche con il nome Genuino, ha enormi potenzialità nella domotica, nell’automazione e nell’ambito IoT (Internet of Things). Chi è un appassionato di tecnologia sicuramente ha sentito parlare almeno una volta di **Arduino**. Non sempre, però, esistono idee chiare in merito, e soprattutto non è nota la reale portata di tale piattaforma. In parole semplici attraverso **una scheda e un ambiente di sviluppo**, ideati e progettati presso l’Ivrea interaction Design, nel 2005, aziende ma anche appassionati di elettronica possono dare sfogo alla loro creatività e fantasia senza dovere spendere una fortuna, e in modo davvero flessibile. Solo per fare alcuni esempi, con Arduino è possibile accendere e spegnere le luci di casa in modo automatico, programmare un robot, e creare complessi strumenti scientifici, semplicemente programmando la scheda a leggere determinati input e restituire particolari output. Ma, procediamo con ordine, cercando di capire cosa si può creare con Arduino, quali sono i modelli disponibili nel mercato e da dove bisogna iniziare per creare un progetto. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## Cos’è Arduino? **Arduino** è una scheda elettronica che grazie all’uso ad esempio di sensori è in grado di rilevare stimoli esterni di diverso tipo, come ad esempio la luce, l’umidità, i movimenti, i suoni, l’accensione o lo spegnimento di pulsanti e grazie ad uno *sketch* (un programma creato appositamente per Arduino) è in grado di tramutare il tutto in specifiche azioni. Si tratta di un sistema molto versatile, funzionale per tante realtà aziendali, ma anche utile per creare piccoli progetti domestici o hobbistici, e per mettere in atto la propria vena creativa. Esiste una vasta community di appassionati che costantemente si scambia informazioni e idee in merito all’utilizzo della scheda, e al **linguaggio di programmazione**. » VUOI IMPARARE A PROGRAMMARE? SCOPRI I NOSTRI [CORSI ONLINE](https://devacademy.it/corsi/) « L’idea è Made in Italy, in particolare è stata ideata nel 2005 presso **l’Interaction Design Institute di Ivrea**, una scuola da frequentare dopo la laurea, creata da Telecom Italia e Olivetti. All’epoca l’insegnante **Massimo Banzi**, stava cercando un modo per consentire agli allievi di realizzare le loro idee creative in ambito di robotica, senza sostenere costi elevati. Grazie alla collaborazione con un ingegnere esperto in microchip, David Cuartielles, all’epoca ricercatore presso l’Istituto, prese vita la famosa scheda, programmata poi in soli due giorni dallo studente, David Mellis. Il nome “Arduino” fu scelto perché nelle vicinanze si trovava un pub omonimo. L’invenzione ebbe subito un grande successo tra gli studenti, e anche i meno esperti di programmazione riuscirono a inventare qualcosa attraverso la nuova piattaforma, come ad esempio far lampeggiare delle luci o controllare semplici motori. Nel settore iniziò a circolare la voce della nuova creazione Made in Italy e in poco tempo arrivarono svariati ordini da designer e appassionati. Visto l’inaspettato successo ottenuto, gli inventori decisero di fondare una società, ma in modo particolare, cioè lasciando “liberi” i progetti, ovvero **open source**. In particolare Arduino non è regolato dal copyright, ma da una forma molto più flessibile come il Creative Commons “Attribution Share Alike” che consente la produzione, la riprogettazione e la vendita senza dovere chiedere alcun permesso, ma mantenendo sempre la stessa licenza “aperta”. L’unica proprietà intellettuale dell’azienda è il nome **Arduino**, che è diventato un vero marchio di fabbrica protetto, per evitare che venga associato ad eventuali copie di scarsa qualità. In ogni caso nel 2006, quindi solamente dopo un anno, l’azienda aveva venduto circa 5mila unità, e ben 30 mila l’anno successivo. Le enormi potenzialità dell’invenzione sono state notate anche dai big player del mercato, infatti nel 2013 è nata una **collaborazione tra Arduino e Intel** che ha portato alla creazione delle schede Edison e Galileo, compatibili con la piattaforma italiana. Inoltre, esiste una **partnership anche con Microsoft**, e un ambizioso progetto che ha visto la nascita di **Arduino Yùn**, un mini computer Linux. Nel 2015 tra soci fondatori ci sono stati alcuni conflitti che hanno causato delle dispute legali in merito all’utilizzo del marchio Arduino. Proprio per questo motivo, in Italia, la scheda è conosciuta anche con il nome **Genuino**. ## A cosa serve Arduino? Arduino permette a svariati appassionati autodidatti o aziende di potere programmare praticamente qualsiasi cosa in modo incredibilmente **semplice e versatile**. Una delle sue peculiarità è il fatto di essere adatta a chiunque, principianti ma anche utenti avanzati. Viene, utilizzata frequentemente a **scopi didattici**, per realizzare strumenti scientifici a basso costo, ad esempio per verificare principi di fisica o di chimica, o per imparare la programmazione e la robotica. Consente sia a studenti che a insegnanti di creare qualcosa di concreto “sporcandosi” le mani. La scheda Arduino è in grado di supportare anche la **creatività** degli artisti, infatti alcuni architetti la usano per creare prototipi interattivi, e svariati musicisti riescono in questo modo a sperimentare con nuovi strumenti musicali. Programmando accuratamente la scheda è possibile ad esempio effettuare della modifiche alla macchinetta del caffè per trovarlo già pronto al mattino all’ora selezionata, oppure inserire un sensore nella cassetta della posta per essere avvisati quando arrivano delle comunicazioni, rendere più intelligenti le luci di casa, e via dicendo. Il discorso potrebbe sembrare un po’ dispersivo, in quanto non è possibile definire con chiarezza cosa si può effettivamente realizzare con tale piattaforma. In realtà si può **creare qualsiasi cosa**, basta un po’ di fantasia e impegno per studiare il linguaggio di programmazione C. **VUOI IMPARARE A PROGRAMMARE?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [**SCOPRI I CORSI**](https://devacademy.it/corsi/) | [**ISCRIVITI**](https://devacademy.it/prezzi/) Durante le cosiddette **Maker Faire**, inoltre, è possibile conoscere ed entrare in contatto con vari appassionati, per vedere da vicino molti progetti e apprendere le potenzialità di Arduino. L’idea di Banzi ha avuto un notevole successo proprio perché permette di **trasformare le idee in veri e propri progetti** in modo abbastanza semplice, spendendo pochi soldi. Ciò che prima restava imprigionato nella mente di persone ambiziose e creative, ora può essere effettivamente realizzato, facendo diventare chiunque un piccolo inventore o innovatore. ## Cosa si può creare con Arduino? Dopo avere visto nei paragrafi precedenti la nascita e la diffusione della piattaforma Arduino, o Genuino, vediamo ora alcuni esempi pratici di ciò che si può realizzare attraverso la scheda. Abbiamo detto che può essere utilizzato per realizzare diversi progetti elettronici e tecnologici di piccola o grande entità, in modo più semplice e versatile rispetto alle alternative nel mercato. In particolare rappresenta il punto di partenza per moltissimi progetti di: - **domotica**: tecnologia utile a migliorare la qualità di vita in casa o negli edifici in generale - **automazione**: ideazione di macchine intelligenti in grado di fornire un servizio o una soluzione in modo totalmente automatizzato - **IoT, Internet of Things**: letteralmente “Internet delle cose” cioè gli oggetti connessi ad internet e in grado di dialogare con e grazie ad esso Dalla creazione di oggetti per puro divertimento, fino ad applicazioni più utili e concrete, la piattaforma Arduino si dimostra essere sempre funzionale, pur nella sua semplicità. Grazie ad essa, infatti, quasi ogni segnale, che sia diretto o il risultato di variazioni ambientali, può essere tradotto in una specifica azione. Proviamo a fare qualche esempio concreto per chiarire ulteriormente le idee. Con Arduino è possibile progettare: - la gestione automatizzata delle serre: attraverso la variazione di determinati input quali l’umidità, il calore e la luminosità si possono azionare determinati comportamenti, per riportare l’ambiente nelle condizioni ottimali, ad esempio l’attivazione di irrigatori, l’apertura di finestre, etc - un parking assistant per l’auto: attivazione di un segnale acustico quando il veicolo si avvicina a una determinata distanza da un ostacolo (i sensori di parcheggio delle vostra auto) - l’orientamento dei pannelli solari: cogliendo lo spostamento del sole si possono muovere i pannelli per ottenere il massimo della resa energetica - dei piccoli robot: impostando specifiche azioni attivabili a seconda degli input » VUOI IMPARARE A PROGRAMMARE? SCOPRI I NOSTRI [CORSI ONLINE](https://devacademy.it/corsi/) « ## Programmare Arduino: cosa vuol dire? Abbiamo detto che la **scheda Arduino** consente di programmare praticamente qualsiasi cosa in modo semplice e flessibile, vediamo ora di capire il suo funzionamento e perché è diventata in poco tempo un punto di riferimento nel settore. Come abbiamo accennato la scheda, grazie a **sensori** in grado di rilevare informazioni dall’ambiente circostante e ad un software scritto appositamente, è in grado di comandare eventuali **attuatori** per far compiere ad essi determinate azioni prestabilite, mostrare dati in un display, comunicare grazie ad internet con altri sistemi e molto altro. Tutto questo grazie all’ambiente di sviluppo integrato (IDE) multipiattaforma (disponibile quindi per Linux, Apple Macintosh e Windows) affiancato all’hardware. Grazie a questo software anche i meno esperti sono in gradi di iniziare a lavorare con Arduino, in quanto i programmi realizzati per esso, chiamati *sketch*, vengono scritti in un linguaggio di programmazione semplice e intuitivo, chiamato *Wiring*, derivato dal C e dal C++, liberamente scaricabile e modificabile. Per muovere i primi passi con Arduino, quindi, è sufficiente conoscere i costrutti fondamentali del [linguaggio di programmazione C](https://www.devapp.it/wordpress/corso-completo-di-programmazione-in-c/) o C++. » VUOI IMPARARE A PROGRAMMARE? SCOPRI I NOSTRI [CORSI ONLINE](https://devacademy.it/corsi/) « La semplicità di programmazione e il costo contenuto della piattaforma hanno permesso la creazione di tantissimi progetti in questi anni, **sia in ambito scientifico che ludico**. Il numero dei soggetti interessati quali studenti, artisti, designer, professionisti, hobbisti è cresciuto notevolmente fino ad approdare anche al settore business. Essendo un progetto totalmente open source, la **community** ha contribuito a sviluppare e migliorare continuamente l’idea originaria, permettendo di passare da una scheda a 8 bit, a svariate applicazioni per la stampa 3D, per Internet of Things, per la domotica e per la creazione di piccoli robot. La **versatilità di Arduino** permette la creazione di progetti utili in diversi settori tanto che oggi i prototipi ideati vengono esposti in fiere apposite che si svolgono in tutto il mondo. Le cosiddette [**Maker Faire**](https://2019.makerfairerome.eu/it/), sono infatti delle occasioni per mettere a diretto contatto inventori e appassionati di tecnologia. Ma dove risiede il segreto di tale successo? Rispetto ad altre soluzioni, **programmare con Arduino** ha i seguenti **vantaggi:** - ha un costo accessibile - assicura una completa compatibilità con i sistemi operativi più diffusi, quali Windows, Linux e MacOs. - essendo una piattaforma interamente open source, è riuscita a stimolare la collaborazione con migliaia di esperti, creando una community di programmatori in grado di dare il loro contributo per migliorare costantemente i risultati. ## Modelli disponibili: le caratteristiche principali Fino ad ora abbiamo detto che, Arduino è una scheda molto flessibile, dotata di particolari sensori in grado di ricevere degli input dall’ambiente, e trasformarli in azioni, grazie alla piattaforma di sviluppo Wiring, il cui linguaggio è un derivato del C. Per riuscire a ideare progetti interessanti è importante sapere scegliere la scheda giusta, o meglio la più adatta alle specifiche esigenze. Non esiste, infatti, un modello migliore di altri, ma è possibile individuare quello che meglio si adatta al progetto che si intende realizzare. Perciò, prima di effettuare una scelta, bisogna avere bene chiaro in mente cosa di vuole creare. Una delle prime caratteristiche da confrontare è la dimensione della scheda, in quanto si deve adattare perfettamente allo spazio disponibile nel progetto, ma devono essere analizzate anche la potenza e altri valori. Di seguito, perciò, forniamo un elenco dei modelli attualmente in commercio, descrivendo per ognuno di essi le peculiarità e le caratteristiche principali. E’ possibile scegliere tra le seguenti schede Arduino: - [Arduino Uno](https://store.arduino.cc/arduino-uno-rev3)**:** è la versione più comune e più utilizzata, l’ideale per i primi approcci con la piattaforma in quanto è abbastanza solida e in caso di errori, nella peggiore delle ipotesi, è sufficiente sostituire il chip, che costa pochi euro, e ripartire a sperimentare da zero. E’ caratterizzata da 14 pin di input e output digitali, 6 ingressi analogici, una connessione USB. Si chiama “uno”, per indicare il primo rilascio di un ambiente di sviluppo integrato, IDE “Integrated Development Environment”: Arduino Software 1.0. - [Arduino Mega](https://store.arduino.cc/mega-2560-r3)**:** da utilizzare per progetti molto grandi, che necessitano di un gran numero di pin, infatti ha ben 70 ingressi, dei quali 54 digitali e 16 analogici. - [Arduino Leonardo](https://store.arduino.cc/leonardo): può essere collegata direttamente al computer senza micro-controllori intermedi, in altre parole la scheda viene riconosciuta come una periferica HID (Human Interface Device), cioè come se fosse una tastiera o un mouse - [Arduino Ethernet](https://store.arduino.cc/arduino-ethernet-shield-2): pensata appositamente per chi necessita delle potenzialità offerte dall’accesso ad internet tramite ethernet. - [Arduino Due](https://store.arduino.cc/due): destinata agli utenti più esperti che desiderano prestazioni elevate, è dotata di una vasta quantità di periferiche integrate. - [Arduino Yún](https://store.arduino.cc/arduino-yun-rev-2)**:** si tratta di una scheda wi-fi caratterizzata da una distribuzione Linux, quindi diversamente dalle altre, è un vero e proprio mini computer. - [Arduino Micro](https://store.arduino.cc/arduino-micro): perfetta per i progetti più piccoli, visto che le sue dimensioni sono 4,8 x 1,77 cm. ## Risorse Arduino disponibili online Tra i punti di forza che hanno reso Arduino una piattaforma molto apprezzata e utilizzata c’è sicuramente il suo costo contenuto, la compatibilità con i maggiori sistemi operativi (MacOs, Windows e Linux), ma soprattutto la sua “apertura”. La progettazione, infatti, è completamente **open source**, cioè rilasciata con una particolare licenza che la rende migliorabile e modificabile da molti programmatori. Migliaia di appartenenti alla community danno il loro contributo, permettendo all’intero sistema di evolversi e svilupparsi rapidamente. Si tratta di una caratteristica che ha determinato un immediato successo della piattaforma Arduino, fin dai primi mesi di vita. In molti, infatti, oltre a tempestare di domande e richieste di aiuto il team, inviavano proposte di miglioramento. Come è accaduto all’inizio degli anni ’90 con Linux, la community di appassionati ha iniziato a lavorare in modo autonomo per sviluppare ulteriormente Arduino, apportando continue **novità e perfezionamenti**, difficilmente raggiungibili con piattaforme chiuse. Nel web sono presenti inoltre molte risorse interessanti, quali tutorial, blog, approfondimenti, esempi di progetti, in grado di aiutare e dare spunti a chi desidera dare vita alle proprie idee. In particolare, segnaliamo i seguenti siti web: - [arduino.cc:](https://www.arduino.cc/) è il sito web ufficiale della piattaforma, nel quale è possibile leggere le ultime notizie in merito e consultare vari [tutorial in italiano](https://playground.arduino.cc/Italiano/Tutorials/). - [progettiarduino.com](https://www.progettiarduino.com): video ed esempi pratici per realizzare alcuni progetti - [makeritalia.org](https://www.makeritalia.org): il posto giusto per chi desidera “smanettare” e sperimentare, anche entrando in contatto con altri utenti nel forum. - [danielealberti.it](https://www.danielealberti.it/): un blog interessante, per apprendere nozioni e capire le potenzialità delle schede Arduino. - [elettronicain.it](https://www.elettronicain.it/): una prestigiosa rivista dedicata alla progettazione elettronica. ## Da dove iniziare? Abbiamo detto che per poter sfruttare Arduino è importante conoscere innanzitutto la piattaforma e il suo hardware, avere delle basi di elettronica e conoscere almeno i costrutti fondamentali [del linguaggio di programmazione C](https://www.devapp.it/wordpress/corso-completo-di-programmazione-in-c/) o del C++ (dato che il linguaggio utilizzato per creare gli *sketch* è una sua variante). Quindi, la prima cosa da fare è iniziare a studiare, ponendo le basi per potere poi dare vita ai propri progetti e alla propria creatività. Non si tratta di concetti complicati, ma è importante seguire dei corsi ben strutturati, per evitare di trovarsi impreparati o di bloccarsi a metà strada di un progetto non sapendo come procedere. » VUOI IMPARARE A PROGRAMMARE? SCOPRI I NOSTRI [CORSI ONLINE](https://devacademy.it/corsi/) « In un secondo momento quando finalmente si possiedono tutte le nozioni necessarie per iniziare, bisogna scaricare dal sito web ufficiale di Arduino l**’IDE**, cioè un ambiente di sviluppo che permette di scrivere, compilare e trasferire i programmi sulla scheda. Si tratta, in altre parole, di un ambiente di sviluppo, da utilizzare come base per la programmazione. Una volta appresi i costrutti fondamentali del linguaggio e del funzionamento della scheda, quindi avendo delle buone basi di partenza, è possibile trovare vari spunti online per migliorarsi continuamente. Come abbiamo detto in precedenza, infatti, essendo un progetto open source, Arduino vanta una community molto ampia e attiva. **Categorie:** Arduino **Tag:** Arduino --- ### [Linguaggi di programmazione](https://devacademy.it/linguaggi-di-programmazione/) **Published:** Aprile 16, 2019 **Author:** Giuseppe Maggi **Content:** Se stai pensando di diventare un programmatore, probabilmente ti starai chiedendo quale tra i **linguaggi di programmazione** esistenti fanno al caso tuo e quale dovresti imparare per primo. Bella domanda 🙂 In questo articolo proviamo a darti un’infarinatura sull’argomento in modo da schiarirti un po’ le idee. Già, perché probabilmente tra ricerche su Internet e chiacchiere tra amici e colleghi sarai ancora più confuso. Provando a chiedere ad un centro di formazione magari ti hanno consigliato di seguire un corso di Java o di C per la loro estrema versatilità, uno sviluppatore che conosci ti avrà confidato di lavorare ormai solo in Javascript mentre una tua amica, informatica di professione, preferirebbe abbandonare il fidanzato piuttosto che abbandonare Python. Proseguendo poi con l’indagine potresti scoprire la grande importanza del .Net di Microsoft in ambito enterprise, ma anche di PHP e SQL e a questo punto ti troveresti non solo con le idee poco chiare, ma ti accorgeresti anche che tutti questi linguaggi che hai appena scoperto non sono altro che una piccola parte dei più usati al mondo e classifiche specialistiche come il [Tiobe Index](https://www.tiobe.com/tiobe-index/) ne annoverano centinaia. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## Ma quanti linguaggi di programmazione esistono e come scegliere quale studiare? I linguaggi di programmazione servono a fare funzionare “cose”, se vuoi capire quale fa per te, innanzitutto devi chiederti: cosa vorrei che funzionasse meglio? Facciamo qualche esempio. Ti sei mai trovato ad utilizzare un sito Internet e hai pensato “Qui servirebbe un menu strutturato in modo differente per trovare più velocemente le informazioni che mi interessano”? Oppure ti è mai capitato di cercare app per il tuo smartphone, trovarne tante utili ma mai nessuna perfetta per i tuoi scopi? O ancora: ti sei chiesto come facciano tante persone a fare soldi con la Borsa e se sia possibile, come dicono, realizzare programmi in grado di predire i movimenti dei prezzi? Queste o altre curiosità spontanee potrebbero essere un ottimo indicatore di una tua particolare predisposizione nell’affrontare determinate problematiche. Capire cosa ti attrae maggiormente è fondamentale al fine di individuare quale potrebbe essere il linguaggio di programmazione più adatto a te. I linguaggi di programmazione sono semplicemente degli strumenti, ne esistono tanti molto richiesti nel mondo del lavoro, impararne uno nuovo fa parte della vita dell’informatico ma ciò che non puoi sbagliare è la scelta dell’area di impiego per cui potresti essere più versato. Per questo, ti illustreremo un’ampia panoramica di linguaggi di sviluppo ma procedendo per campi di applicazione. ## Linguaggi di programmazione per il Web Il Web è uno degli interessi più intramontabili che esista nell’informatica. Ci pervade così tanto che sono ormai decenni che persone di ogni età sognano di lavorarvi. Gli sviluppatori che si occupano di Web, per lo più si distribuiscono nelle seguenti categorie: - **Web designer**: si occupano di progettare interfacce web sia da un punto di vista concettuale (cosa vuole comunicare? Quale informazioni deve includere?) sia di organizzazione degli spazi. Spesso non sono veri e propri programmatori sebbene lavorino con formati appositi come **HTML e CSS**. Il primo è un linguaggio a tag (parole chiave inserite tra parentesi angolari) che costruisce la struttura della pagina: possiamo considerarlo un modo per “disegnare” l’interfaccia utilizzando dei comandi. Il secondo, il formato CSS, serve a scrivere direttive da applicare sul risultato del lavoro in HTML per indicare formattazione, aspetto esteriore e posizionamento degli elementi. Per intenderci, HTML dice cosa apparirà in una pagina e CSS specifica come dovrà apparire. Sei indicato per questo settore se non ti senti particolarmente adatto a risolvere problemi ma avverti una forte carica narrativa da esprimere con immagini, testi e tutte le forme che la comunicazione assume; » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO HTML E CSS](https://devacademy.it/corsi/introduzione-a-html-e-css/) « - **Front-end developer** (Sviluppatori lato client): lavorano per lo più con il **linguaggio Javascript** e vari framework (piattaforma applicativa su cui basare un proprio programma) con esso realizzati. Si tratta di progettare tutto ciò che appare nel browser. E’ probabilmente uno dei lavori più divertenti del Web perché è fortemente rivolto all’utente e all’interazione che egli sviluppa con il sito Internet. Ci si deve spesso dedicare ad effetti visuali ed animazioni, integrando il proprio lavoro in quello del web designer. Si consideri che lavorare in questo ambito rafforza molto le proprie competenze di Javascript che, come vedremo, è impiegato ormai in ogni settore dell’Informatica; **VUOI IMPARARE A PROGRAMMARE?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [**SCOPRI I CORSI**](https://devacademy.it/corsi/) | [**ISCRIVITI**](https://devacademy.it/prezzi/) - **Back-end developer** (Sviluppatori lato server): si tratta di un lavoro molto metodico, rivolto alla risoluzione di problemi ed alla conoscenza di diverse forme di comunicazione ed immagazzinamento di dati. Chi fa questo lavoro si occupa di realizzare servizi web ossia tutto ciò che risponde quando mediante browser o app mobile scambiamo informazioni nella Rete: messaggi chat, ricerca di case in vendita, lettura delle ultime notizie e via dicendo. In questo settore possono essere utilizzati molti linguaggi di programmazione, ma ci sono alcuni approcci principali. Il **linguaggio PHP** è uno dei più usati in assoluto al mondo. Permette un avvio agevole per il neofita anche grazie alle ampissime risorse didattiche disponibili on line. **Java** è un altro linguaggio molto utilizzato. Ha un approccio meno immediato di PHP e non si distingue certo per la sintassi sintetica, ma offre una grande configurabilità e rappresenta una delle principali scuole di programmazione di sempre. E’ particolarmente usato per realizzare applicazioni web dedicate al mondo bancario, finanziario, assicurativo ma la grande stabilità che lo caratterizza permette di usarlo in ogni genere di servizio. Anche la Microsoft offre una piattaforma molto importante: il framework .Net (con linguaggi come **C#** e **VB.net**) dotato di una filosofia che ha molto in comune con l’emisfero Java ma è, per buona parte, legato al mondo Windows. Quest’ultimo aspetto lo relega in una zona propria – sebbene importante – dell’Informatica, a differenza di altre tecnologie o sei parte del sistema Windows/.Net/Microsoft in genere o ne sei assolutamente distante. Vale la pena ricordare anche un’altra prospettiva in rapidissima diffusione: **Node.js**, una piattaforma per usare Javascript al di fuori del browser. Node.js ha reso questo linguaggio ancora più utilizzato in quanto gli ha dischiuso le porte del mondo server, una volta assolutamente precluso agli sviluppatori web lato client. Node.js è un ambiente economico in termini di risorse impiegate, altamente modulare e adatto ad ogni tipo di applicazione; » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO PHP](https://devacademy.it/percorsi/php-developer/) O AL NOSTRO [CORSO NODE.JS](https://devacademy.it/corsi/introduzione-a-node-js/) « - **Sviluppatori Full-stack**: è una figura di cui si parla molto in questi ultimi anni e rappresenta un incrocio tra le due precedenti. Un Full-stack è colui che sa sviluppare applicazioni web “verticalmente” realizzando sia il lato server, sia quello client. Considerando che per quest’ultimo la scelta obbligata è praticamente Javascript si può scegliere se lavorare Full-stack interamente con questo linguaggio usando Node.js o se adottare nel lato server una delle altre opzioni come PHP, Java o .Net. » VUOI SAPERNE DI PIU’? SCOPRI I NOSTRI [CORSI ONLINE](https://devacademy.it/corsi/) « ## Linguaggi di programmazione per il mobile Il settore mobile è diventato uno dei fronti lavorativi principali degli ultimi anni. A livello di sistemi operativi, il mobile è pressoché diviso in due famiglie: Android, il più diffuso al mondo (circa il 75% dei dispositivi), e iOS di Apple, il sistema degli iPhone e degli iPad, che detiene il resto del mercato. I sistemi Android sono da sempre stati programmati in **linguaggio Java** e, da pochi anni, in **Kotlin** altro formalismo sempre discendente dal mondo Java. Il sistema iOS vede invece come linguaggi di sviluppo **Objective-C** ed il più recente **Swift**. Tutto ciò rientra nella cosiddetta **programmazione nativa**, dove un programma per un sistema operativo non può essere usato in un altro: per intenderci, se sviluppi un’app Android e vuoi realizzarla per iPhone devi crearla nuovamente da zero con un’altra tecnologia. Le applicazioni generate con programmazione nativa offrono le prestazioni migliori in assoluto ma costringono le aziende a duplicare sforzi, investimenti e personale per creare app mobile in versioni diverse. Come conseguenza di questo sono nate diverse tecnologie “ibride” che hanno permesso di realizzare app mobile in HTML/CSS/Javascript, le tecnologie del web, in grado di funzionare su Android e iOS. L’interesse è stato grande soprattutto perché molti programmatori e aziende, già in possesso di forti competenze nelle tecnologie per il web, erano ansiosi di sperimentarne la loro validità anche nel mobile. Purtroppo le prestazioni di app ibride non sono sempre state all’altezza di quelle native e nemmeno la loro capacità di integrazione con il sistema a livello sia estetico sia funzionale. Ultimamente è nata un’ulteriore generazione di framework mobile che portano a sviluppare app utilizzabili su sistemi operativi diversi con un’unica base di codice ma offrendo prestazioni al pari della programmazione nativa: citiamo tra queste **React Native** interamente programmato in Javascript, ottimo approdo per chi ha esperienze nel web, e **Flutter**, framework ideato da Google molto recentemente e programmato in un linguaggio di cui non abbiamo ancora parlato in questo articolo, **Dart**, che risulta comunque molto veloce da imparare se si hanno basi anche minimali di programmazione. » VUOI SAPERNE DI PIU’? SCOPRI IL NOSTRO [CORSO ANDROID](https://devacademy.it/percorsi/android-developer/) O IL NOSTRO [CORSO IOS](https://devacademy.it/percorsi/ios-developer/) « ## Linguaggi di programmazione per Data Science, Big Data e Machine Learning Termini come Data Science, Big Data, Machine Learning non sempre rientrano nel dizionario comune di molti aspiranti programmatori, ma grazie alla loro capacità di influenzare la nostra vita quotidiana stanno vivendo un’espansione mai vista prima. Sono proprio tali tecniche che portano un servizio di e-commerce a consigliarci un particolare prodotto in base ai nostri acquisti precedenti, un tool per gli investimenti a indicarci le migliori azioni per guadagnare o un software scientifico a compilare le previsioni del tempo. In questo ambito si possono usare molti linguaggi. **Python** – uno dei più usati al mondo in ogni ambito, tranne il mobile – è probabilmente una delle scelte migliori in quanto a potenzialità e sinteticità del codice. Altro linguaggio molto usato in questo ambito è **R** nato appositamente per le scienze statistiche ma rivelatosi utile in ogni ambito di elaborazione dati. Oltre a questi, trovano largo impiego **Java** e **Scala** (derivato anch’esso da Java) soprattutto perché con essi sono sviluppati molti strumenti usati in questi settori e ne rappresentano pertanto una delle prime alternative per l’interazione. Per lavorare in questi ambiti è necessario avere una certa predilezione per l’analisi dei dati e conoscenze di Matematica e Statistica, anche di livello non eccelso, possono rivelarsi particolarmente utili. Si tratta senza dubbio di lavori affascinanti proprio perché permettono di vedere con occhi diversi il mondo e tentare di capirlo meglio con l’aiuto delle tecnologie. » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO PYTHON](https://devacademy.it/corsi/fondamenti-di-python/) « ## Linguaggi di programmazione C e C++ Sinora non abbiamo nominato il **linguaggio C** né la sua versione ad oggetti, il **C++**. Questo perché non trovano ampissimo utilizzo nei settori di cui abbiamo discusso sinora ma sono storicamente tra i linguaggi più usati di sempre. Cerchiamo di capire la loro collocazione. Nel web non trovano comunemente impiego né dal punto di vista client né server. Nel mobile vengono impiegati per sviluppare porzioni di codice “nativo” sebbene a dirla tutta con le API offerte dai principali linguaggi di programmazione per Android e iOS l’utilizzo del C e del C++ non appare assolutamente indispensabile. Vengono spesso utilizzati per lavori legati all’hardware o alle sfere più interne dei sistemi operativi: si consideri che tutti i sistemi operativi sono stati sviluppati con questi linguaggi. Ad esempio, il C ha un’importanza ed una carica formativa che lo porta ad essere costantemente studiato nelle università come approccio alla programmazione mentre il C++ viene insegnato sia come strumento generico di sviluppo di applicazioni sia come modello di **Programmazione Orientata agli Oggetti** in alternativa a Java. Un settore in cui essi trovano comunque ampio spazio è quello della microelettronica che trattiamo nel prossimo paragrafo. » VUOI SAPERNE DI PIU’? SCOPRI I NOSTRI [CORSI ONLINE](https://devacademy.it/corsi/) E I NOSTRI [VIDEO TUTORIAL](https://devacademy.it/screencast/) « ## Linguaggi di programmazione per la Microelettronica I settori dell’informatica non sono certo finiti qui. Molti programmatori sono coinvolti nello **sviluppo di sistemi robotici e microelettronica**. Anch’essi sono stati protagonisti di un grande sviluppo ultimamente proprio per i progressi dei dispositivi che permettono da un lato di inserire intelligenza in ogni “cosa” elettronica e dall’altro di raccogliere dati sugli ambienti in cui sono installati. Piattaforme come **Arduino**, **Raspberry** e **microbit** della BBC (esistono comunque moltissimi altri microcontroller) forniscono veri e propri computer da tenere nel palmo di una mano e da programmare con vari ambienti di sviluppo. Questi contesti vedono come linguaggio di elezione in molti casi **Python** (esiste la versione microPython per dispositivi in miniatura) ma spesso anche altri come **Java** e **C** se non formalismi inventati appositamente per l’interazione con un dispositivo. Tale settore risulta interessante ed appetibile da un punto di vista lavorativo in quanto spazia in ogni ambito entrando in contatto con contesti e professionalità dei generi più disparati: dall’automotive, alle case intelligenti della domotica fino all’**IoT** (Internet of Things) che risulta un’importante sorgente di dati da analizzare con le tecnologie per **Big Data**. » VUOI SAPERNE DI PIU’? SCOPRI I NOSTRI [CORSI ONLINE](https://devacademy.it/corsi/) E I NOSTRI [VIDEO TUTORIAL](https://devacademy.it/screencast/) « ## Linguaggio SQL e i database Altro linguaggio non citato sinora ma onnipresente in ogni ambiente di programmazione è **SQL**. E’ il linguaggio con cui si interagisce con database relazionali ed è pertanto una conoscenza fondamentale per ogni tipo di sviluppatore: web lato server, mobile e applicazioni varie. E’ un linguaggio dall’approccio non complesso e può avere un ruolo fondamentale in molti ambienti non propriamente informatici come la programmazione di ufficio, ad esempio, per gestire dati all’interno dei programmi Access ed Excel di Microsoft Office. Con le versioni più diffuse di SQL si possono scrivere interi programmi che prendono il nome di Stored Procedure o trigger se sono impostati per scattare al verificarsi di particolari eventi. Essere un abile programmatore SQL può rendere una persona particolarmente utile in ambienti in cui vengono trattati, gestiti e analizzati dati sebbene raramente una figura professionale rivestirà esclusivamente il ruolo di programmatore SQL. Un aspetto interessante di questo linguaggio è l’importanza che riveste come metro di paragone con qualsiasi tecnologia di accesso ai dati. E’ così conosciuto dagli sviluppatori ed è stato in grado di sintetizzare così bene le operazioni che descrive che qualsiasi tecnologia per l’accesso ai dati replica, in forma propria, le funzionalità che SQL espone. Se ne trova una traccia importante anche nei già citati Big Data dove **Hive** – uno strumento di analisi creato da Facebook – permette di accedere ai dati mediante **HiveQL**, un linguaggio praticamente identico a SQL. Come ultimo esempio, consideriamo che anche i cosiddetti **database NoSQL** – così chiamati perché propongono forme alternative di gestione di database rispetto a quella tradizionale – offrono spesso un proprio linguaggio di ispirato a SQL. » VUOI SAPERNE DI PIU’? SCOPRI I NOSTRI [CORSI ONLINE](https://devacademy.it/corsi/) E I NOSTRI [VIDEO TUTORIAL](https://devacademy.it/screencast/) « ## Linguaggi di programmazione per Videogiochi E se volessi creare videogiochi? Questo è un approdo che interessa molti neofiti. Un po’ perché le esperienze “informatiche” iniziano spesso da videogiocatori, un po’ perché – lavorativamente parlando – è uno degli ambiti con migliori margini di espansione nel tempo e minore dipendenza dalle crisi economiche. Eppure è uno dei settori più confusi in assoluto. In primis, perché non vi entrano in gioco solo capacità di programmazione, ma anche di realizzazione di grafica (molto spesso 3D), fantasia, creatività, scrittura: in fin dei conti inventare un gioco inizia come scrivere un racconto, soprattutto per quelli dotati di una trama articolata. Rimanendo nell’ambito della programmazione, si deve innanzitutto decidere che tipo di piattaforma deve supportarlo. Parliamo di un gioco mobile per Android o iOS? Di un gioco da utilizzare nel Web? O uno per PC e console varie (Nintendo Switch, PlayStation, Xbox e via dicendo)? I linguaggi che possono essere impiegati sono quelli tipici di queste varie piattaforme e nel settore trova spesso spazio il **linguaggio C++**. Un fattore importante è che molti videogame sono realizzati basandosi su engine ossia non si parte da un programma puro ma si realizza il gioco su una struttura che offre grafica e interattività. Uno degli engine più famosi ed usati al mondo è **Unity** che permette di creare videogiochi di ogni genere e di fare tanto lavoro mediante la sua interfaccia utente ma che per sviluppare controllo ed interazione richiede comunque l’impiego di linguaggi di programmazione: nel suo caso, **C#** e **Javascript**. Ciò che c’è di sicuro è che sviluppare videogiochi è uno degli ambiti più professionali e ardui da affrontare pertanto se ti interessa intraprendere questa strada e non sei ancora un buon programmatore, la prima cosa è fare esperienza con qualsiasi linguaggio di sviluppo e ciò ti preparerà, a livello di fondamenti, ad iniziare a studiare ciò che serve per diventare un game developer. » VUOI SAPERNE DI PIU’? SCOPRI I NOSTRI [CORSI ONLINE](https://devacademy.it/corsi/) E I NOSTRI [VIDEO TUTORIAL](https://devacademy.it/screencast/) « ## Linguaggi di programmazione per applicazioni desktop A questo punto ti potresti chiedere: ma le classiche applicazioni per PC, quelle con interfaccia utente, tanti pulsanti e che non usano per forza Internet, non le fa più nessuno? In realtà, è un settore che si sta restringendo molto. Un po’ perché gli sviluppatori si concentrano su quelli che “tirano” di più come Web e Mobile, un po’ perché sono state rimpiazzate da web app ossia applicazioni realizzate con le tecnologie dello sviluppo web client che funzionano direttamente nel browser. Comunque esistono molti ambienti per la realizzazione di applicazioni per PC. Uno dei più eleganti al mondo è il **framework .Net**, già nominato, che la Microsoft ha realizzato per Windows ma che può funzionare anche su altre piattaforme. Ci sono poi tecnologie che si sono dotate di propri sistemi di interfacce come Java che è passata dal primitivo **AWT**, a **Swing** fino a **JavaFX**: questa opportunità permette di creare applicazioni con grafica per ogni sistema operativo. Infine tanti altri linguaggi di programmazione si sono messi in condizione di interagire con framework multipiattaforma come **Qt**. » VUOI SAPERNE DI PIU’? SCOPRI I NOSTRI [CORSI ONLINE](https://devacademy.it/corsi/) E I NOSTRI [VIDEO TUTORIAL](https://devacademy.it/screencast/) « ## Conclusioni Sei ancora qui o hai abbandonato l’articolo? Magari uno dei paragrafi ti ha illuminato così tanto che stai già frugando tra [i nostri corsi](https://devacademy.it/corsi) per individuare quello più appropriato per avviarti alla nuova professione. Sicuramente per diventare un programmatore ci vogliono buone doti di curiosità, studio e interesse ma soprattutto ripetiamo il consiglio iniziale: scegli quello che fa per te davvero, prova a sviluppare qualcosa di assolutamente affine alle tue passioni e ciò ti darà la spinta necessaria per superare sempre ogni difficoltà. **Categorie:** Linguaggi di programmazione, Programmazione **Tag:** linguaggi di programmazione, programmazione --- ### [Android Studio](https://devacademy.it/android-studio/) **Published:** Maggio 15, 2019 **Author:** Giuseppe Maggi **Content:** Se hai iniziato ad interessarti allo **sviluppo di applicazioni Android** non puoi non esserti imbattuto in **Android Studio**. Rappresenta lo strumento ufficiale, efficiente e gratuito che viene utilizzato per **creare app native per Android**. Devi sapere che la vita dello sviluppatore Android, prima del suo avvento, non era delle più facili. Si utilizzava Eclipse, un famoso programma open source, da sempre usato e tuttora usatissimo a livello professionale che grazie ad un plugin innestato al suo interno permetteva di creare app Android. Eclipse faceva il possibile, ma la soluzione definitiva la stava preparando Google con il suo Android Studio ed la sua comparsa ha segnato la nascita di una nuova era. Scopriamolo insieme. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## Aspetti tecnici di Android Studio **Android Studio** è un’applicazione classificata come IDE (Integrated Development Environment), vale a dire ambiente integrato per lo sviluppo. Pertanto più che di un programma singolo di tratta di una piattaforma, racchiusa dietro un’unica interfaccia, che include e integra tra loro tutti gli strumenti di cui un programmatore ha bisogno per creare applicazioni Android. Si consideri inoltre che Android Studio è lo strumento universale per la realizzazione di applicazioni per questo sistema operativo infatti permette di creare app per smartphone e tablet, per Wear OS dedicate ai dispositivi indossabili, per Android TV, Android Auto e Android Things dedicato a dispositivi in miniatura come Raspberry Pi. La struttura è basata su [IntelliJ IDEA](https://www.jetbrains.com/idea/), uno dei migliori ambienti di programmazione creato dall’azienda praghese [JetBrains](https://www.jetbrains.com/). Ecco le sue caratteristiche principali: - Buona parte dell’interfaccia di Android Studio è dedicata alla **scrittura del codice**. Le app Android native sono da sempre state fatte in Java sebbene da pochi anni sia stato ufficialmente messo a disposizione anche [Kotlin](https://kotlinlang.org/), linguaggio che ha velocemente conquistato i programmatori e che permette di scrivere codice per gli ambienti Java con una sintassi più veloce e sintetica; - [Gradle](https://gradle.org/) è uno dei tool integrati in Android Studio ed è assolutamente fondamentale. Ogni volta che creeremo un progetto per una nuova app Android, per semplice che possa essere, conterrà dei file di configurazione per questo tool. **Gradle** si occuperà di trasformare il nostro codice e tutte le risorse che vi abbiamo incluso in un’app Android installabile su dispositivi e caricabile sui market ufficiali. La sua sintassi è particolare ma piuttosto leggibile. L’ossatura dei file sarà già predisposta appena creato il progetto pertanto raccomandiamo di imparare a modificarli senza distruggerne la struttura, pena la loro inutilizzabilità da parte di Android Studio; - Si dispone di un **editor visuale** molto intuitivo per la creazione di interfacce utente. Da sempre le interfacce grafiche delle app sono realizzate in XML, un formato testuale basato su una gerarchia di nodi di informazione. Chi avesse esperienza, anche minimale, di realizzazione di pagine web può considerare questo impiego di XML assolutamente analogo a quello di HTML nei siti Internet. Scrivere interfacce in XML è molto più semplice di quello che può sembrare ma disegnare trascinando elementi con drag-and-drop è sicuramente tutta un’altra cosa. Per questo oltre alla scrittura di interfacce con XML, Android Studio ha introdotto questo ottimo editor visuale, tutto da utilizzare a colpi di mouse; - Android Studio offre inoltre **emulatori** che visualizzano tablet e smartphone virtuali, configurati a nostro piacimento, in cui provare le applicazioni che realizziamo. Non sarà identico ad una sperimentazione su dispositivo reale ma la comodità degli emulatori è notevole: possiamo programmare solo con il PC senza bisogno di altro e testare l’applicazione anche su device che non possediamo. L’usabilità degli emulatori al giorno d’oggi è davvero eccellente, considerando che solo pochi anni fa costituivano una delle note più dolenti della vita dello sviluppatore; - **Instant Run** è la feature che ha reso da qualche anno più veloce lo sviluppo agevolando il caricamento delle modifiche apportate all’app. Tale pratica di continua modifica e prova risultava lenta anche all’interno dell’emulatore ma con Instant Run, nella maggior parte delle situazioni, la visualizzazione dell’interfaccia modificata è quasi immediata; - Android Studio inoltre, proprio per la sua discendenza da Google, ha un legame speciale con i servizi web offerti da questa azienda e stiamo parlando dei **servizi in Cloud** più diffusi al mondo: mappe, notifiche push, condivisione di dati tra app mediante la piattaforma Firebase e qualsiasi altro prodotto targato Google che possa venire in mente; - L’**IDE** dispone anche di molti template per applicazioni. Ogni volta che inizieremo un nuovo progetto ci verrà offerta la possibilità di impiantarlo su una struttura già pronta per le tipologie di app più comuni. Non solo in questo modo risparmieremo del tempo ma avremo un’architettura di base rispettosa di tutte le principali best practise; - Android Studio è uno strumento **rivolto ai professionisti** i quali molto spesso lavorano in team sia in loco sia da remoto. Per questo sono integrati in questa piattaforma tutti i più importanti sistemi di condivisione del codice e collaborazione on line. Queste non sono che le caratteristiche più importanti, ma Android Studio non smette mai di stupire proprio per l’alto numero di funzionalità attivabili dai suoi menu. Spostiamoci ora su un altro protagonista assoluto dello sviluppo Android: il suo **Software Development Kit**. **VUOI IMPARARE A PROGRAMMARE ANDROID?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [VAI AI CORSI ANDROID](https://devacademy.it/percorsi/android-developer/) ## Android SDK: perché è così importante? Diciamo subito che Android Studio non fa tutto da solo. Anzi la maggior parte del lavoro per la creazione di app Android viene realizzata da un altro ambiente, installato con Android Studio solitamente o comunque messo a sua disposizione che prende il nome di **Android SDK**: questo è veramente il luogo in cui risiedono tutti i tool in grado di trasformare il nostro programma in un pacchetto di installazione per tablet o smartphone. L’Android SDK contiene tutto il necessario per: attivare emulatori, compilare applicazioni, verificare errori, provare il codice su qualsiasi versione del sistema operativo e molto altro. Già da questa sua presentazione si capisce che questo SDK dovrebbe avere dimensioni gigantesche, difficili da contenere in un PC. Pertanto viene scaricato nel computer di lavoro praticamente vuoto e riempito con gli strumenti che in buona parte sceglierà lo sviluppatore a seconda delle applicazioni che vorrà realizzare. Tutto ciò sarà manovrato mediante un programma che prende il nome di **SDK Manager** accessibile dall’interfaccia di Android Studio. ## Installazione di Android Studio Android Studio è multipiattaforma pertanto si può scrivere app Android usando computer Windows, Linux o Mac. Raggiungendo l’homepage del progetto () vediamo campeggiare un pulsante nella parte alta con l’etichetta “Download Android Studio”. ![Android Studio download](https://devacademy.it/wp-content/uploads/2019/05/android-studio-download.png) Quella sarà la proposta più vicina al nostro sistema operativo, almeno da quanto rilevato dal browser. Comunque si potrà procedere con le “Download Options” per visualizzare ogni possibile alternativa. Oltre ad Android Studio completo il cui pacchetto di installazione consta circa di 1 GB, si può procedere allo scaricamento del solo Android SDK. I link relativi sono disponibili verso il fondo della pagina () nella sezione “Command line tools only”. ![Android Studio command line tools](https://devacademy.it/wp-content/uploads/2019/05/android-studio-command-line-tools.png) Un SDK scaricato in questo modo può essere integrato in un’installazione Android Studio esistente ma può anche essere usato normalmente da riga di comando per sperimentare le caratteristiche del sistema operativo nonchè lavorare in progetti di programmazione “ibrida”. Si tenga presente che Android Studio è un programma potentissimo ma ciò costa in termini di risorse consumate. Per qualsiasi sistema operativo viene raccomandato di avere almeno 3 GB di RAM come minimo e possibilmente 8, di disporre di almeno 2 GB di spazio disco libero sebbene 4 siano quelli raccomandati e di avere uno schermo con risoluzione minima di 1280X800. Inoltre per il solo emulatore Android in esecuzione sarà richiesto un altro gigabyte di RAM. Queste sono caratteristiche piuttosto comuni se consideriamo computer personali e di lavoro, portatili inclusi, ma diventano più rare se ci rivolgiamo a PC di scuole e istituti di formazione: in questi casi, con macchine non troppo performanti, si potrà usare ugualmente Android Studio anche se leggermente a discapito della nostra user experience. » VUOI IMPARARE A CREARE APP ANDROID? SCOPRI IL NOSTRO [CORSO ANDROID ONLINE](https://devacademy.it/percorsi/android-developer/) « ## Iniziamo a lavorare con Android Studio Quando si avvia per la prima volta Android Studio si apre un’interfaccia di benvenuto intitolata “Welcome to Android Studio”. ![Android Studio start](https://devacademy.it/wp-content/uploads/2019/05/android-studio-start.png) Selezionando “Start a new Android Studio Project” si procederà alla creazione guidata di un nuovo progetto. I passaggi sono pochi, verrà chiesto di: scegliere il tipo di applicazione (Smartphone/tablet, Wear OS e via dicendo), selezionare un eventuale template tra quelli proposti, indicare le principali caratteristiche del progetto (cartella, nome del package, linguaggio da utilizzare tra Java e Kotlin e poco altro). Fatto ciò si apre il vero ambiente di lavoro di Android Studio con l’editor window al centro (dove scriveremo il codice), la toolbar in alto con tutti i comandi fondamentali (oltre a quelli offerti dal menu) e sulla sinistra la finestra Project in cui possiamo osservare la struttura del progetto. A proposito di quest’ultima si noti che Android Studio non la mostra da un punto di vista fisico elencando file e cartelle ma appare, di base, nella configurazione denominata “Android” dove gli elementi vengono divisi per ruolo funzionale. In Project avremo due grandi raggruppamenti: il modulo “app” contenente tutto il necessario per immettere codice, impostare risorse (tra cui l’interfaccia grafica delle app) e configurare l’applicazione con ciò che è incluso nella cartella manifests; i “Gradle scripts” in cui saranno raccolti tutti i file di configurazione di Gradle che elaborerà il nostro progetto ogni volta che vorremo provarlo. L’approccio che conviene avere, almeno finchè non si acquisterà la giusta padronanza, è quello di inserire nel modulo app il codice Java o Kotlin e di allestire l’interfaccia utente che ci serve mentre i file Gradle potranno essere lasciati così come sono a meno che non si voglia modificare qualche loro aspetto. Da qui in poi si può iniziare a studiare e lavorare in Android, approfondendo di volta in volta l’argomento che ci interessa. » VUOI IMPARARE A CREARE APP ANDROID? SCOPRI IL NOSTRO [CORSO ANDROID ONLINE](https://devacademy.it/percorsi/android-developer/) « ## Flutter e Android Studio Apriamo ora una parentesi su una tematica che rappresenta uno degli scenari più attraenti per lo sviluppo mobile. Google ha lanciato e incrementato molto rapidamente un nuovo strumento per lo sviluppo mobile che prende il nome di **Flutter**. E’ un tool per la creazione di applicazioni mobile multipiattaforma che può essere integrato con dei plugin all’interno di Android Studio. L’espressione “app mobile multipiattaforma” si riferisce alla possibilità di scrivere una medesima code base (un solo programma, in sostanza) e pubblicarlo come app iOS o Android indifferentemente. Flutter non è la prima tecnologia che propone una soluzione simile ma appartiene all’ultima generazione di quelle che propongono prestazioni pari allo sviluppo nativo. In Flutter si programma con Dart, un linguaggio nato sempre in seno a Google, che offre un’alternativa moderna ed efficiente a Javascript. Dart si impara velocemente mettendo subito il programmatore in condizione di creare app mobile con Flutter o per il Web. Per iniziare a programmare in Flutter sarà sufficiente: scaricare la sua piattaforma dal [sito ufficiale](https://flutter.dev/) anche questa utilizzabile su Windows, Linux o Mac ed installare in Android Studio i plugin per **Dart e Flutter**. I plugin possono essere installati accedendo alle Settings (dalla schermata di benvenuto o dal menu File a progetto aperto) e selezionando dall’elenco a sinistra la voce Plugin. Dopo tali operazioni alla sua apertura Android Studio mostrerà oltre a “Start a new Android Studio Project” anche “Start a new Flutter Project” e da lì si potrà iniziare a creare app mobile universali. ## Conclusioni **Android Studio** è un ambiente ricco e veloce che non costituisce l’unico modo per realizzare app Android, ma sicuramente rappresenta quello più efficiente. Per chiunque volesse diventare un programmatore di applicazioni per questo sistema operativo prenderne conoscenza è un passo obbligato ma è comunque un’esperienza che si vive senza troppe difficoltà. Inoltre l’ultima integrazione di Flutter dimostra come questo ambiente possa essere al passo con i tempi e sicuramente non finirà qua di stupirci. » VUOI IMPARARE A CREARE APP ANDROID? SCOPRI IL NOSTRO [CORSO ANDROID ONLINE](https://devacademy.it/percorsi/android-developer/) « **Categorie:** Android **Tag:** android, android studio --- ### [Big Data: cosa sono e perché studiarli?](https://devacademy.it/big-data-cosa-sono-e-perche-studiarli/) **Published:** Giugno 3, 2019 **Author:** Giuseppe Maggi **Content:** Anche tu, scommetto, avrai sentito parlare di **Big Data** (se non lo hai ancora fatto ti consiglio di dare uno sguardo al nostro screencast [Big Data: cosa sono e perchè studiarli](https://devacademy.it/screencast/big-data-cosa-sono-e-perche-studiarli/)). Tutti stanno guardando con interesse a questo fantastico mondo ricco delle migliori opportunità lavorative. Ma esattamente **cosa sono i Big Data?** E’ possibile studiarli senza essere un genio dei computer? Sono qui per spiegartelo e ti anticipo subito il concetto che voglio dimostrarti: i Big Data sono una grandissima opportunità, una tecnologia necessaria per chiunque e che aiuta già da anni il progresso della nostra Società. Puoi diventarne esperto senza essere uno scienziato perché, con il giusto percorso, si possono studiare e sfruttare benissimo nella propria carriera professionale. Cerchiamo di capirci qualcosa insieme. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## Quando si parla di Big Data? Parliamo di Big Data quando ci riferiamo a contesti in cui vengono accumulati ad altissima velocità grandissimi volumi di dati, contraddistinti da assoluta varietà. Volume, velocità, varietà: tre parole che iniziano con la lettera V e che sono presenti in ogni definizione di Big Data, terminologia così diffusa da aver generato la cosiddetta “**legge delle 3V**”. Più in generale le tecnologie per gestire i Big Data si sono affermate in maniera rapidissima soprattutto nel secondo decennio di questo secolo e sono state sponsorizzate in particolar modo da chi di dati ne possiede davvero molti: Google, Amazon, Yahoo e molti altri provider di questo livello. Un aspetto molto importante da ricordare è che con tali tecnologie non sempre ci si occupa di problemi nuovi ma spesso si svolgono elaborazioni tradizionali (pensa anche a somme, medie, statistiche, etc.) che non possono più essere svolte con i metodi di sempre in quanto i dati accumulati sono ormai davvero troppi. Si dice che “i Big Data iniziano dove finisce la RAM” nel senso che i tipici strumenti che si sono occupati di analisi dati come database, strutture dati dei linguaggi di programmazione, etc. facevano largo uso di memoria RAM e ciò ha reso non più gestibili i nuovi scenari con grandi moli di dati da manipolare. Un dubbio potrebbe sorgere a questo punto: qual è l’origine di tutti questi dati? » VUOI SAPERNE DI PIU’? VAI AI NOSTRI [CORSI BIG DATA](https://devacademy.it/percorsi/big-data-expert/) « ## Chi genera i Big Data? Queste grandi quantità di dati sono generate per lo più da tre entità: l’essere umano, le applicazioni ed i sensori. Per quanto riguarda il primo elemento non c’è molto da dire: se questi Data sono diventati così Big in buona parte è “colpa” nostra. Con l’avvento di Social Network e tecnologia mobile che porta la connessione Internet nelle nostre tasche in ogni momento non facciamo altro che generare dati molto variegati come testo, foto, video e caricarli sul Cloud. Inoltre ci sono le applicazioni. Molte di esse accumulano dati su server e questi vanno ad incrementare il grande bacino dei Big Data. I dati generati da un’applicazione possono essere primari, ossia costituenti lo scopo per cui l’applicazione esiste, o collaterali tipicamente log, metriche e statistiche di funzionamento del software che sono accumulati per fornire spunti ai loro sviluppatori. E poi c’è un’altra grandissima sorgente costituita dai sensori. Si tratta di piccolissimi dispositivi elettronici posizionati in apparecchi che servono per lo più ad effettuare rilevazioni fisiche. Non generano informazioni complesse, tipicamente si tratta di misurazioni, ma il loro scopo molto spesso è quello di rilevare dati da inviare ai server che li accumulano. Per fare qualche esempio i nostri smartphone e tablet sono pienissimi di sensori: servono ad acquisire posizione, movimento, temperatura, orientamento e molto altro e costituiscono buona parte del funzionamento del dispositivo. Altri sensori sono spesso collocati in varchi elettronici, porte automatizzate, elettrodomestici destinati al commercio come i frigoriferi che contengono bevande nei bar e molto altro. Quindi i fattori che hanno portato all’accumulazione di così tanti dati sono tecnologici da un lato (diffusione di mobile, Cloud, sensori, etc.) ma anche comportamentali come la sempre maggiore affezione dell’utente al commercio elettronico e alla condivisione di contenuti. **VUOI DIVENTARE UN ESPERTO DI BIG DATA?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [VAI AI CORSI SUI BIG DATA](https://devacademy.it/percorsi/big-data-expert/) ## Quali tecnologie esistono per Big Data? A questo punto un po’ di premessa l’abbiamo fatta. Abbiamo acquisito qualche nozione su cosa sono i Big Data e quali sono i fattori che hanno determinato questa situazione ma se vuoi diventarne un esperto hai bisogno di qualche indirizzamento un po’ più pratico. Le tecnologie di cui sentirai sicuramente parlare nell’ambito dei Big Data sono **Hadoop** e **Spark**. Il primo è uno strumento nato nel 2005 per gestire moltissimi dati accumulati su cluster e analizzarli mediante l’algoritmo **MapReduce**. Cerchiamo di fare chiarezza. Con il termine “cluster” intendiamo una rete di computer finalizzata ad un medesimo scopo. Esistono cluster in cui tanti nodi (i singoli computer) gestiscono un database o un server web o altro ancora: nel caso di Hadoop tutti i nodi servono a gestire la moltitudine di dati che vengono immagazzinati e organizzati in un file system che prende il nome di **HDFS** (Hadoop Distributed File System). Lo scopo di tanta accumulazione è l’elaborazione di tutti questi dati e, rifuggendo le tecniche tradizionali, in Hadoop si è scelto l’algoritmo MapReduce (scopri di più con il nostro screencast [MapReduce: algoritmo base per Big Data](https://devacademy.it/screencast/mapreduce-algoritmo-base-per-big-data/)) un modo per far “scorrere” i dati tra una funzione di Map che li cataloga associando ad ogni dato un’etichetta (detta chiave) ed una di Reduce che li sintetizza estraendo un risultato in base al nostro scopo. Man mano che il problema si fa complicato possiamo creare più task MapReduce concatenandoli tra loro per eseguire le analisi di cui abbiamo bisogno. Hadoop è diventato con il tempo molto più di questo trasformandosi in una piattaforma di integrazione aperta ad altri strumenti sviluppati appositamente per sfruttare la sua grande capacità di gestire Big Data. Ha mostrato però negli anni anche limitazioni in fatto di prestazioni e capacità di adattamento e per questo, nel 2010, è stato avviato il progetto Spark che si è conquistato presto un posto di primo piano nel settore. Spark nasce per lavorare in cluster anch’esso ma sfruttando maggiormente memoria RAM e alcuni accorgimenti che permettono prestazioni di gran lunga superiori a quelle di Hadoop. Si consideri comunque che Hadoop e Spark non sono due mondi totalmente distinti, possono interagire se installati separatamente o essere integrati in un’unica installazione. Arriviamo ora ad un altro punto cruciale: **quali sono i linguaggi che si usano per programmare su Big Data?** Questa è una domanda che incuriosisce molti, soprattutto quelli che vogliono rendersi conto se le proprie conoscenze sono adeguate e quanto possa essere difficoltoso colmare le lacune. » VUOI SAPERNE DI PIU’? VAI AI NOSTRI [CORSI BIG DATA](https://devacademy.it/percorsi/big-data-expert/) « ## Linguaggi per Big Data Sia Hadoop sia Spark nascono su tecnologia **Java** (scopri il nostro corso online [Fondamenti di Java](https://devacademy.it/corsi/fondamenti-di-java/)) pertanto questa è una delle prime soluzioni che è stata impiegata nella programmazione su Big Data. Ma non è tutto qui, soprattutto Spark si è aperto ad una moltitudine di linguaggi di programmazione tra cui quello che è diventato una delle principali scelte al mondo in fatto di elaborazione dati: **Python** (corso [Fondamenti di Python](https://devacademy.it/corsi/fondamenti-di-python/)). Installando il pacchetto PySpark si potrà programmare in Python con tutta la flessibilità di Spark. Altri linguaggi che possono essere impiegati con Spark sono **Scala**, linguaggio derivante da Java ed usato per lo sviluppo di Spark stesso, e **R**, proveniente dal mondo della Statistica, ma utilissimo in ogni forma di elaborazione dati. ## Quanto è difficile iniziare a lavorare su Big Data? Lavorare con **Big Data** non è impossibile e, anzi, può essere considerato più alla portata di altre branche dell’Informatica. Come al solito, è importante imboccare il percorso giusto, fornirsi delle basi necessarie (rudimenti di **programmazione Python** sono un ottimo viatico) e armarsi di sufficiente costanza. Scenari lavorativi su Big Data sono sempre più diffusi e non solo in aziende che si occupano prevalentemente di analisi dati, ma anche presso compagnie che vogliono imparare ad elaborarli in proprio per sfruttarne tutti i vantaggi derivanti. » VUOI SAPERNE DI PIU’? VAI AI NOSTRI [CORSI BIG DATA](https://devacademy.it/percorsi/big-data-expert/) « **Categorie:** Big Data **Tag:** Big Data, Hadoop, java, MapReduce, Python, Spark --- ### [Programmare in Python](https://devacademy.it/programmare-in-python/) **Published:** Luglio 5, 2019 **Author:** Giuseppe Maggi **Content:** Probabilmente negli ultimi anni avrai sentito parlare molto del [linguaggio Python](https://devacademy.it/percorsi/python-developer/). Appare come una delle tendenze più in voga del momento, ma ti assicuro che non si tratta affatto né di una novità né tanto meno di una moda temporanea. In questo articolo, ti spiegherò le potenzialità di questa tecnologia, i punti di forza che lo rendono così adatto a compiti delicati e come sia possibile diventarne un professionista in poco tempo, pronto ad occupare una delle tante posizioni lavorative che ne richiedono la conoscenza. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## Le origini di Python La storia di Python inizia circa trent’anni fa. Venne ideato dal programmatore olandese Guido van Rossum tra la fine degli anni Ottanta ed i primi Novanta e sin da subito manifestò una grandissima carica innovativa. Il suo scopo fondamentale era quello di fornire un ricco set di istruzioni, con una sintassi sintetica al massimo e molto semplice. L’interesse che Python ha suscitato è cresciuto sempre più, tanto che la community che gli si è creata attorno è una delle più ampie del mondo e continua a vedere nel suo creatore un punto di riferimento. Guido detiene ad oggi il particolarissimo ruolo di BDFL (“Benevolent Dicator For Life” ovvero “Benevolo dittatore a vita”) in quanto lascia la comunità di programmatori prosperare liberamente pur riservando per sé le più importanti decisioni strategiche. Ma vediamo ora le caratteristiche di questo linguaggio. ## Caratteristiche del linguaggio Python Python è un linguaggio assolutamente completo. Si distingue per: - **tipizzazione dei dati forte ma dinamica.** Ciò significa che il tipo di dato non deve essere assegnato staticamente dal programmatore ma sarà appropriatamente scelto da Python. A tale dinamicità corrisponde però una tipizzazione forte in quanto tale tipo di dato, una volta assegnato, non può cambiare in autonomia ma resta fisso a meno che non gli si applichi una conversione esplicita; - **strutture dati di ogni tipologia fondamentale.** Python offre tutte le strutture dati indispensabili , in grado di coprire ogni possibile necessità. Si avranno a disposizione liste (sequenze di valori indicizzati per posizione, modificabili e che ammettono duplicati), tuple (analoghe alle liste ma non modificabili), set (collezioni che non memorizzano la posizione degli elementi e non ammettono duplicati), dizionari (raccolte di valori etichettati ognuno con una chiave). Queste sono le versioni fondamentali ma non ne mancano di più particolari rese nel tempo disponibili nel linguaggio; - **elevato numero di funzioni dedicate all’analisi di dati** come stringhe, date e orari; - **package** (raccolte di funzionalità) che offrono tutto il necessario per svolgere lavori specifici dedicati alla gestione delle connessioni in Rete, dei database, dei file, etc.; - **pubblicazione di package in Internet tramite il sistema PyPI** (Python Package Index). Tutto il materiale ivi disponibile può facilmente essere reperito mediante pip, strumento molto semplice da riga di comando. Proprio la grande disponibilità di risorse presenti nel Python Package Index dimostra il valore della community che supporta tale tecnologia; - **Programmazione ad Oggetti**: Python permette di gestire classi ed oggetti per strutturare meglio le informazioni. Tali costrutti, abbinati alla flessibilità delle strutture dati e alla potenza delle funzioni di elaborazione offerte dai vari package, mettono in condizione di creare progetti con architetture organizzate e gestibili. Tutto questo può darti un’idea del perché Python sia così importante, ma quali sono i campi in cui viene applicato e quali le opportunità che offre? » VUOI SAPERNE DI PIU’? SCOPRI I NOSTRI [CORSI DEDICATI A PYTHON](https://devacademy.it/percorsi/python-developer/) « ## Lavorare con Python Sia chiaro innanzitutto che un linguaggio come Python può svolgere qualsiasi tipo di attività. E’ stato utilizzato per la creazione di applicazioni desktop, servizi e siti web, software per reti in grado di dialogare con qualsiasi protocollo e creazione di test. Tutti questi sono campi “tradizionali” per così dire, i tipici impieghi di qualsiasi linguaggio negli anni ’90 e seguenti. Non solo programmatori e piccole aziende, da sempre Python è stato supportato dalle più grandi compagnie del mondo: Google, Nasa e RedHat sono solo alcuni di tali nomi rappresentativi. Ultimamente però si fa un gran parlare di questo linguaggio perché si è affermato come uno dei più adatti a settori che stanno attirando l’interesse di ogni azienda: - **Elaborazioni dati**, anche di carattere scientifico, che riguardano **Big Data**, **Machine Learning** e **Data Science in generale**. La grande accumulazione di dati effetto della diffusione di app mobile, Cloud Computing e connessioni capillari e veloci ha portato ad un sempre maggiore interesse verso tutte queste tecniche che permettono di utilizzarli per monitorare le attività in corso, predire scenari futuri ed estrarre informazioni a prima vista non rilevabili. La predisposizione di Python per il calcolo scientifico e la sua sintassi produttiva hanno reso questo linguaggio uno dei favoriti in questi ambiti. Inoltre esistono framework avanzati, disponibili gratuitamente presso i già citati repository pubblici tra cui, a titolo di esempio, ricordiamo Apache Spark per [Big Data](https://devacademy.it/big-data/) (utilizzabile con Python nonché con i linguaggi Scala, R e [Java](https://devacademy.it/corsi/fondamenti-di-java/)), [Pandas](https://devacademy.it/screencast/pandas-data-science-in-python/) per il Data Science, [NumPy](https://devacademy.it/screencast/python-e-calcolo-scientifico-dagli-operatori-aritmetici-fino-alla-potente-libreria-numpy/) per il calcolo e SciPy per il Machine Learning; - **IoT, Internet Of Things.** Si tratta di un mondo complesso in cui grazie alla continua miniaturizzazione dell’elettronica è possibile integrare “intelligenza” in qualsiasi oggetto mettendolo in condizione di inviare ai server dati relativi al loro utilizzo in modo da ottimizzarne il funzionamento, valutarne migliorie ed offrire maggiori vantaggi a chi li utilizza. Python è adatto per lavorare in microcontroller e allo scopo esiste una versione apposita del linguaggio, [MicroPython](https://micropython.org/). Tutto ciò spiega come mai si parli di Python come linguaggio perfetto non solo per grandi server ma anche per piattaforme operative miniaturizzate quali RaspBerry Pi, Arduino e [BBC Microbit](https://devacademy.it/screencast/bbc-microbit-programmare-un-microcontroller-a-blocchi/). ## Python 3 non è Python 2 Uno degli aspetti cui porre maggiore attenzione quando si inizia ad utilizzare Python è il rapporto tra le sue versioni più recenti. Attualmente, Python 3 è la versione dominante e non è compatibile con Python 2. Soprattutto chi inizia da zero lo studio del linguaggio, dovrebbe concentrarsi sull’edizione più recente stando attento a non confondere le tecniche delle due versioni. » VUOI SAPERNE DI PIU’? SCOPRI I NOSTRI [CORSI DEDICATI A PYTHON](https://devacademy.it/percorsi/python-developer/) « ## Strumenti per la programmazione in Python Per iniziare a lavorare in Python, è semplicemente necessario installare la piattaforma, reperibile presso l’[homepage del progetto](https://www.python.org/). Il primo approccio può essere affrontato con la console interattiva, un ambiente da riga di comando da lanciare invocando il programma python o python3 (a seconda della propria installazione) che permette l’immissione di direttive scritte in questo linguaggio. Ad esempio, nella seguente immagine possiamo vedere come l’avvio della console permetta di scrivere comandi ed ottenere immediatamente risultati: ![Programmare in Python 01](https://devacademy.it/wp-content/uploads/2019/07/programmare-in-python-01.jpg) Nell’esempio appena riportato abbiamo usato la console per stampare un messaggio di testo con la funzione *print* e per eseguire un calcolo diretto. La console interattiva è indicata per lo studio del linguaggio e la sperimentazione di tecniche, ma la vera scrittura di software in Python avviene salvando i propri programmi in file di estensione .py da invocare successivamente con il medesimo tool usato per avviare la console. Nell’immagine seguente abbiamo scritto un programmino in grado di stampare la tabellina del 3, denominato tabellina.py, e l’abbiamo lanciato da riga di comando: ![Programmare in Python 02](https://devacademy.it/wp-content/uploads/2019/07/programmare-in-python-02.jpg) Con un normale editor di testo possiamo scrivere qualsiasi programma in Python ed è proprio questo il modo in cui tantissimi programmatori lavorano. Nonostante ciò si può optare per molti ambienti di sviluppo completi, i cosiddetti IDE (Integrated Development Environment), nati appositamente per questo linguaggio come [PyCharm](https://www.jetbrains.com/pycharm/) o adattati mediante plugin ad hoc, pensiamo ai casi di [Visual Studio](https://code.visualstudio.com/docs/languages/python) di Microsoft, [Atom](https://atom.io/) e [PyDev](https://www.pydev.org/) basato su Eclipse. Altra opzione da considerare, soprattutto in fase di studio e sperimentazione, è la disponibilità di **ambienti di programmazione** on line utilizzabili senza installare Python sul proprio computer i quali richiedono esclusivamente l’uso di un browser: uno tra i vari è, ad esempio, [Repl](https://repl.it/languages/python3). ## Conclusioni Python, in definitiva, rappresenta in assoluto uno dei migliori linguaggi da imparare. Ha un approccio facile (tanto da essere indicato anche per i bambini), totalmente gratuito, fortemente didattico per un avvicinamento al mondo della programmazione e altamente richiesto in ambito professionale. Su quest’ultimo punto, non si può che sottolineare la sua diffusione inarrestabile e velocissima in ogni settore. Quindi che aspetti? Se questo articolo ha svegliato in te la voglia di studiare qualcosa di nuovo, interessante e molto remunerativo, siediti al computer ed inizia subito a studiare Python: materiale in Rete abbonda e soprattutto [i nostri corsi](https://devacademy.it/percorsi/python-developer/) sapranno guidarti velocemente alla meta. » VUOI SAPERNE DI PIU’? SCOPRI I NOSTRI [CORSI DEDICATI A PYTHON](https://devacademy.it/percorsi/python-developer/) « **Categorie:** Linguaggi di programmazione, Programmazione, Python **Tag:** linguaggi di programmazione, programmazione, Python --- ### [SQL Injection: cos’è e come proteggersi](https://devacademy.it/sql-injection-cos-e-e-come-proteggersi/) **Published:** Luglio 30, 2019 **Author:** Giuseppe Maggi **Content:** Cos’è e come possiamo proteggerci dalla **SQL Injection**, una tecnica di code injection utilizzata da hacker e cracker per violare siti web e portali, che sfrutta uno tra gli errori più diffusi nella programmazione Web. Già da quando si studiano le tecniche di interazione di un linguaggio di programmazione con un database, infatti, capita spesso di leggere che una determinata precauzione serve ad evitare una **SQL Injection**: un pericoloso attacco informatico contro le nostre pagine web. Cercheremo di capire in questo articolo su cosa si basa e come proteggersi. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## SQL Injection, cos’è e come funziona SQL Injection consiste nel passare ad un’applicazione del codice testuale che una volta inserito in un comando SQL causa la violazione di un database. L’attacco può essere svolto in vari modi, per questo, se riesce, può provocare effetti diversi come la distruzione o la modifica di dati, il recupero non autorizzato di informazioni o, più in generale, lo svolgimento di operazioni non consentite. Supponiamo, ad esempio, che in uno script PHP, sia presente un comando di questo tipo: ``` $query="SELECT * FROM allievo WHERE id='".$id."'" ``` Anche [per chi non conosce il PHP](https://devacademy.it/percorsi/php-developer/) la sintassi dovrebbe essere comprensibile: si tratta di una query scritta in forma testuale che sarà completata da un valore passato tramite la variabile $id. Supponiamo ora che un malintenzionato riesca a passare al software un valore in $id uguale alla stringa ``` "' OR '1'='1" ``` L’effetto sarebbe la composizione di un testo finale della query di questo tipo: ``` SELECT * FROM allievo WHERE id='' OR '1'='1' ``` L’esecuzione di una query simile non solo non causerà errore, ma produrrà la restituzione di tutti i dati presenti nella tabella perché la porzione `"OR '1'='1'"` renderà sempre *vero* il risultato della clausola WHERE. Cosa avrebbe potuto evitare ciò? Un controllo sui dati inseriti, ad esempio. Se la chiave primaria della tabella è un numero intero, di tale genere dovrebbe essere anche il contenuto della variabile $id pertanto una stringa come quella utilizzata nell’esempio non avrebbe dovuto superare un tale filtro. Tanto per fare un altro esempio rapido, se si riuscisse a passare all’interno della variabile $id la stringa ``` "'; DELETE FROM allievo WHERE '1'='1" ``` sfruttando l’uso del punto e virgola per inoltrare più comandi, si rischierebbe addirittura di permettere la cancellazione dei dati presenti. Questo sarebbe il risultato della concatenazione delle istruzioni: ``` SELECT * FROM allievo WHERE id=''; DELETE FROM allievo WHERE '1'='1' ``` Può sembrare improbabile subire attacchi simili in quanto l’attaccante dovrebbe conoscere la struttura del nostro database, ma ciò non è impossibile sia perché molti progetti sono open source pertanto se ne può conoscere il codice completo, sia perché in alcuni casi rischiamo di esporre dettagli della struttura del database come ad esempio quando facciamo trapelare un messaggio di errore troppo esplicito, che porterebbe il malintenzionato a scovare nomi di tabelle, username e password amministrative, colonne e quant’altro di suo interesse con pochi semplici comandi. **VUOI IMPARARE A PROGRAMMARE?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [**SCOPRI I CORSI**](https://devacademy.it/corsi/) | [**ISCRIVITI**](https://devacademy.it/prezzi/) ## SQL Injection, come proteggere il nostro sito o la nostra applicazione Vediamo ora come proteggerci da questa tecnica di hacking/cracking. Contrastare la SQL Injection può richiedere vari accorgimenti: - utilizzo dei Prepared Statement: costrutti con cui viene preparata la struttura di base del comando SQL mentre i parametri da utilizzare saranno inseriti successivamente con l’obbligo di eseguire determinati controlli; - verifica del tipo dei dati passati come input per l’applicazione, soprattutto quando devono essere impiegati poi nel comando SQL; - restrizione dei permessi sul database: tramite SQL Injection si potrebbe ad esempio fare eseguire con una query anche una cancellazione dei dati. Se l’applicazione ha solo il permesso di leggere dati (qualora non abbia bisogno di modificarli), l’inserimento clandestino di un comando di cancellazione non sarebbe possibile; - fornire meno informazioni possibile sulla struttura del nostro database. La SQL Injection è una trappola molto diffusa che ha colpito soprattutto siti web anche se costituisce una minaccia per qualsiasi tipo di applicazione che acceda ai dati via SQL. Per questo, quando una guida o un **corso di programmazione** ci invita ad utilizzare qualche meccanismo che impedisca la SQL Injection non prendiamola come una pedante norma accademica, ma ascoltiamola come un consiglio che permette di tutelare al massimo il database della nostra applicazione, cuore del suo valore informativo e della privacy dell’utente. » IMPARA A PROGRAMMARE, SCOPRI I NOSTRI [CORSI ONLINE](https://devacademy.it/corsi/) « **Categorie:** Database, Sicurezza **Tag:** database, sicurezza --- ### [PHP array: cosa sono e come si usano](https://devacademy.it/php-array/) **Published:** Agosto 1, 2019 **Author:** Giuseppe Maggi **Content:** Uno degli argomenti più interessanti (e a volte ostici) quando si inizia ad imparare a programmare in PHP sono gli Array. Il linguaggio PHP dimostra una particolare espressività sintattica con gli array. Si tratta delle strutture dati a scopo generico al centro di qualsiasi applicativo. Solitamente nei linguaggi di programmazione con il termine “array” si indica la struttura dati più semplice in grado di catalogare oggetti e permetterne il recupero in base alla posizione. In PHP il termine array indica la struttura dati principale, molto potente, con cui può essere svolta qualsiasi operazione. In PHP gli Array sono eterogenei pertanto possono contenere oggetti di vario genere, anche ulteriori array creando così strutture dati annidate. La sintassi degli array prevede l’uso di parentesi quadre sia per l’assegnazione di valori sia per la loro lettura. Di base, si interagisce con un array passando tra le parentesi quadre la posizione (conteggiata a partire da 0) dell’elemento con cui si vuole lavorare. Aspetto molto interessante è la possibilità di utilizzare gli array anche in modalità associativa dove, al posto di una chiave numerica di accesso, si avranno delle etichette univoche: per chi avesse già esperienza di programmazione, tale uso ricorda quello delle mappe di [Java](https://devacademy.it/corsi/fondamenti-di-java/) o dei dizionari di [Python](https://devacademy.it/corsi/strutture-dati-in-python/), tanto per intenderci. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## Creare un Array in PHP Un Array PHP può essere semplicemente creato mediante l’invocazione della funzione array: ``` $incasso=array(); ``` o inizializzando direttamente i suoi elementi mediante assegnazioni: ``` $incasso[0]=1000; $incasso[1]=450; $incasso[2]=120; $incasso[3]=400; ``` In questo caso, abbiamo inserito quattro elementi nelle prime posizioni valide, contandone gli indici a partire come indicato dallo zero. Come detto, gli array PHP possono contenere anche elementi eterogenei qualora questo sia funzionale agli scopi del nostro programma: ``` $vari_oggetti[]=1.5; $vari_oggetti[]=true; $vari_oggetti[]="Lorenzo"; $vari_oggetti[]=2000; ``` In questo caso, abbiamo inserito al suo interno, rispettivamente, un numero in virgola, un booleano, una stringa ed un numerico intero: l’array è perfettamente in grado di conservarli tutti. Se si vuole avere reale conferma delle varie tipologie di dato utilizzate si può ricorrere all’uso di una funzione inventata appositamente a scopo di debug che mostra la struttura interne delle variabili PHP (non solo array): `var_dump`. Applicandola all’array appena creato, con l’invocazione di `var_dump($vari_oggetti)`, otteniamo quanto riportato nella figura seguente: ![PHP Array](https://devacademy.it/wp-content/uploads/2019/08/php-array.png) Inoltre, nell’ultimo stralcio di codice, a differenza dell’esempio precedente, abbiamo usato le parentesi graffe vuote: questa notazione si usa quando l’elemento da aggiungere va inserito in coda all’array ossia nella prima posizione ancora non occupata. La verifica del contenuto, oltre che tante altre operazioni, può essere svolta sfruttando il costrutto del ciclo. Uno dei modi più pratici è la versione PHP del foreach che itera ogni elemento di una struttura dati eseguendo su di esso le operazioni previste nel blocco di codice: ``` foreach ($vari_oggetti as $a) { // operazioni da svolgere su $a } ``` In questo caso abbiamo percorso ogni elemento dell’array *$vari\_oggetti* etichettandolo con la variabile *$a*. Sinora abbiamo visto l’uso più immediato degli array, quello dove gli elementi sono indicati per posizione, ma quello associativo, già citato, riveste un ruolo di assoluto primo piano, vediamo come funziona. » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO PHP](https://devacademy.it/percorsi/php-developer/) « ## Array associativi in PHP Un elemento in un array può essere riconosciuto non solo dalla posizione, come detto precedentemente, ma anche in base ad una chiave univoca mediante la quale potrà essere estratto in maniera molto efficiente. Supponiamo di voler registrare una pagella scolastica in un programma PHP. Potremmo usare in questo caso proprio un array associativo: ``` $pagella['Italiano']=8; $pagella['Matematica']=6; $pagella['Geografia']=9; $pagella['Storia']=7; $pagella['Chimica']=5; ``` In questo modo, possiamo immaginare di avere inserito il valore 8 etichettato con la stringa ‘Italiano’, 6 con ‘Matematica’ e via dicendo. Tutto ciò contribuisce a dare una significatività molto più marcata ai valori. Se volessimo sapere il voto ottenuto in Storia, ad esempio, sarà sufficiente richiederlo con `$pagella['Storia']`. PHP permette inoltre di estrarre sia l’elenco delle chiavi con la funzione `array_keys()` sia quello dei valori con `array_values()`. L’invocazione di `array_keys($pagella)` fornirà la sequenza ‘Italiano’, ‘Matematica’, ‘Geografia’, ‘Storia’, ‘Chimica’ mentre quella di `array_values($pagella)` darà la lista 8,6,9,7,5. » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO PHP](https://devacademy.it/percorsi/php-developer/) « ## Funzioni per Array in PHP Ciò che rende ancora più versatili ed utili gli array PHP è il grande numero di funzioni offerto a loro supporto. Ne esistono molte e di categorie diverse ma qui di seguito proveremo ad individuarne alcune significative, suddivise per finalità. Per cominciare, ce ne sono alcune che permettono di gestire la “popolazione” di un array. Una delle più comuni in assoluto è `count` che restituisce la lunghezza di un array PHP ossia il numero di elementi presenti al suo interno al momento attuale. Riferendoci all’esempio della pagella visto in precedenza, l’espressione `count($pagella)` restituirebbe 5, vale a dire il numero di accoppiate materia/voto inserite. La popolazione di un array può essere anche generata in automatico. Particolarmente utili in questi casi sono funzioni come `array_fill()` che crea un nuovo array riempito di elementi uguali e `range()` che inizializza una struttura dati con numeri progressivi. Tanto per renderci conto del loro modus operandi, consideriamo che l’espressione `array_fill(0, 10, -1)` restituisce un nuovo array di 10 elementi tutti valorizzati con -1. Questo sarebbe il suo var\_dump: ``` array (size=10) 0 => int -1 1 => int -1 2 => int -1 … … 8 => int -1 9 => int -1 ``` La funzione range può essere utile con espressioni tipo `range(1,12)` che riempie un array, nelle posizioni da 0 a 11, dei valori compresi tra 1 e 12. Tale funzione può rivelarsi utile anche nei cicli per programmare più facilmente un for che dovrebbe contare in un range di valori. Ad esempio, il seguente ciclo: ``` foreach (range(1,12) as $n) { // operazioni da svolgere } ``` si può considerare identico a: ``` for ($n=1; $n **Categorie:** PHP **Tag:** PHP --- ### [REST API: cosa sono, come funzionano e come progettarle](https://devacademy.it/rest-api-cosa-sono-come-funzionano-e-come-progettarle/) **Published:** Agosto 6, 2019 **Author:** Giuseppe Maggi **Content:** Probabilmente avrai già sentito parlare di Web Service e di API e tutto ciò tipicamente coniugato con l’acronimo REST. L’argomento è articolato ed un po’ di chiarezza non guasterebbe ma per fortuna questo articolo nasce appositamente. Ti farò un quadro della situazione, partendo dalle esigenze scatenanti e vedremo a che punto siamo con queste importanti tecnologie. ## Web service ed API REST I Web Service o servizi web sono delle funzionalità esposte da un server che permettono di essere invocate da programmi esterni via rete e a seguito di elaborazione restituiscono un risultato. Una definizione simile può fornire un’idea del concetto, ma risulta al contempo piuttosto vaga. Ti potresti porre in questo momento le seguenti domande: di che tipo di funzionalità si tratta? Di che tipo sono questi programmi esterni? Come si dialoga attraverso le reti? Sono domande assolutamente lecite ma non abbiamo voluto essere vaghi appositamente, è proprio la natura di questi servizi web che li rende adattabili a qualsiasi scopo ed in una infinità di modi. Rispondiamo alle domande una per una. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) **Di che tipo di funzionalità si tratta?** Ogni server gestisce un certo insieme di informazioni, a seconda del motivo per cui è stato creato. Se si tratta di un server su cui è in esecuzione un sito di e-commerce conterrà articoli in vendita, prezzi, dati di clienti, aziende fornitrici, etc. Se si tratta di un network di informazioni conterrà notizie mentre se ospita un servizio chat avrà al suo interno messaggi, username, riferimenti personali e via dicendo. Chi gestisce servizi di questo tipo può decidere se e quali informazioni offrire pubblicamente. Ad esempio, un sito di e-commerce potrebbe decidere di offrire pubblicamente elenchi di prodotti in vendita, il relativo prezzario, statistiche sui prodotti più trattati ma non dati personali di utenti o lo storico dei loro acquisti. Potranno essere così pubblicate funzionalità che metteranno a disposizione di applicazioni esterne solo i dati che si vorranno condividere, tutto ciò fattibile praticamente con qualsiasi tecnologia (tra le più comuni per Web Service: [Javascript](https://devacademy.it/percorsi/javascript-developer/) con [Node.js](https://devacademy.it/percorsi/node-js-developer/), [PHP](https://devacademy.it/percorsi/php-developer/), [Java](https://devacademy.it/corsi/fondamenti-di-java/), [Python](https://devacademy.it/percorsi/python-developer/)). L’accesso ai servizi web può essere gratuito o a pagamento, a seconda delle intenzioni di chi gestisce il server che pubblica le funzionalità. **Di che tipo sono i programmi esterni che accedono ai Web Service?** Per lo più, al giorno d’oggi, web app (pagine web che grazie a [jQuery](https://devacademy.it/corsi/introduzione-a-jquery/) e altre tecnologie Javascript interagiscono con servizi web) e applicazioni mobile come app [Android](https://devacademy.it/percorsi/android-developer/) o app [iOS](https://devacademy.it/percorsi/ios-developer/). Oltre a ciò può trattarsi di qualsiasi programma informatico con o senza interfaccia utente. **Come si dialoga attraverso le reti?** Affinchè un server che offre i servizi web ed un client (web app, app mobile o qualsiasi altro programma) possano dialogare ci deve essere reciproco accordo sul protocollo di comunicazione da utilizzare e sui formati dei dati. Per quanto riguarda il primo, i servizi web si poggiano su quello che è il vettore principale della Rete ossia HTTP, il protocollo su cui tutto il sistema WWW si basa e che ha visto negli ultimi anni anche la nascita della sua versione evoluta, [HTTP/2](https://devacademy.it/screencast/http-2-il-web-del-futuro/). I formati di comunicazione sono per lo più XML e soprattutto JSON, ormai diffusissimo in ogni tipo di impiego pratico. Le applicazioni esterne che accederanno al servizio potranno essere prodotte dai suoi stessi gestori per offrire qualcosa in più agli utenti (esempio immediato: pensiamo ai possessori di un sito che realizzano la loro app mobile) oppure da entità esterne, le cosiddette “terze parti”, che sfrutteranno i dati di un servizio web per realizzare un proprio prodotto: ad esempio, se più compagnie aeree tramite i loro servizi web pubblicano tutte le loro offerte last-minute, un’azienda potrebbe realizzare un’app mobile di “terze parti” per aiutare gli utenti a trovare i viaggi più scontati. Questo aspetto delle applicazioni di entità esterne non è affatto trascurabile: molte aziende sono diventate grandi proprio permettendo ad altri di usare i loro dati pubblici, in fin dei conti tutto ciò si traduce in un maggiore traffico Internet attorno al proprio servizio on line. Le funzionalità che un servizio web offre prendono, nel loro complesso, il nome di **API** ossia Application Programming Interface. Molti servizi web sono stati tra gli anni ’90 e i primi 2000 realizzati con una tecnologia molto utile ma non sempre dall’approccio immediato denominata **SOAP** (Simple Object Access Protocol), basata su protocollo HTTP e **formato XML**. Il suo ruolo è stato però con il tempo ridimensionato dalla semplicità ed efficienza del modello **REST**, Representational State Transfer, basato su HTTP e **formato JSON** (anche se le API REST possono essere realizzate anche con altri formati). Proprio sulle API realizzate con REST ci soffermeremo nel resto di questo articolo. » VUOI SAPERNE DI PIU’? SCOPRI I NOSTRI [CORSI ONLINE](https://devacademy.it/corsi/) E I NOSTRI [VIDEO TUTORIAL](https://devacademy.it/screencast/) « ## Progettare API REST Come tante buone idee, REST è nato in un contesto accademico. La sua culla è stata la tesi di dottorato di Roy Thomas Fielding, pubblicata nel 2000. Il suo autore è oggi considerato uno dei maggiori esperti di comunicazione in Rete, essendo tra l’altro un grande contributor del protocollo HTTP nonché cofondatore del progetto Apache HTTP Server che fa da fondamento alla maggior parte dei siti Internet esistenti. Con REST, vengono identificate delle risorse, ossia degli aggregati di informazioni che il servizio web offre. Se ad esempio parliamo di un e-commerce che vuole rendere pubblici i prodotti in vendita e i relativi prezzi potremmo individuare come risorse il singolo prodotto, una lista di prodotti selezionati, etc. Tali risorse vengono condivise in Rete mediante protocollo HTTP e proprio qui sta l’idea geniale alla base di REST: al suo interno HTTP possiede già tutto ciò di cui uno scambio di informazioni necessita pertanto non c’è bisogno di creare alcuna ulteriore sovrastruttura. Sfruttando gli elementi interni a questo protocollo potremo instaurare un dialogo tra il client ed il server. **Il protocollo HTTP funziona mediante un modello richiesta/risposta**. Un client invia una richiesta al server, il server risponde. La richiesta può includere al suo interno una serie di funzionalità. Si può chiedere solo di leggere dati, di modificarli, crearli o cancellarli. Tutto ciò viene specificato mediante un campo della **richiesta HTTP** detto metodo. In REST si usano per lo più quattro metodi che indicheranno quali di queste operazioni il client starà richiedendo al server: con il metodo **GET** si chiederà solo di leggere dei dati, con il **POST** di crearne di nuovi, con il **PUT** di modificarli e con il **DELETE** di cancellarli. Ogni richiesta verrà inviata ad un particolare indirizzo web e tale URL sarà univoco per la risorsa su cui richiedere l’azione. Supponiamo che il nostro servizio abbia indirizzo web `www.mioservizioweb.org/api/` e che condivida articoli ognuno contraddistinto da un numero intero (ad esempio, una chiave nel database). Il progettista del servizio potrà decidere che: - per richiedere la lettura dei dati del prodotto con id pari a 1, si invocherà una richiesta **GET** all’indirizzo `www.mioservizioweb.org/api/prodotti/1` - per richiedere la lettura dei dati di tutti i prodotti in offerta si invierà una **GET** all’URL `www.mioservizioweb.org/api/offerte` - per inserire i dati di un nuovo prodotto (ad esempio, un’app ad uso del personale del servizio) si invierà una **POST** all’indirizzo `www.mioservizioweb.org/api/prodotti/nuovo` - per modificare i dati del prodotto già esistente con id pari a 1 si invierà una **PUT** all’indirizzo `www.mioservizioweb.org/api/prodotti/1` - per cancellare il prodotto con id 1 verrà inviata una **DELETE** a `www.mioservizioweb.org/api/prodotti/1` Come si può immaginare, l’id pari a 1 è a puro titolo di esempio ma in realtà andrà impiegato qualsiasi altro valore valido nel sistema. Questi sono solo alcuni esempi ma rendono l’idea del ruolo che i metodi e gli indirizzi web hanno. Si noti ad esempio che l’indirizzo `www.mioservizioweb.org/api/prodotti/1` può servire a vari scopi ma dipende da qual è il metodo che gli associamo. Altri due punti sono da approfondire: come vengono scambiati i dati e come si determina il significato della risposta del server. Tipicamente nelle **API REST** i dati vengono scambiati in [formato JSON](https://devacademy.it/json/), comodo da gestire in ogni linguaggio di programmazione. Se ad esempio inviamo la POST all’indirizzo `www.mioservizioweb.org/api/prodotti/nuovo` i dati del nuovo prodotto saranno scritti in formato JSON ed inseriti all’interno della richiesta HTTP. Anche tutte le risposte del server saranno redatte in **formato JSON** ed inserite nella risposta HTTP. Un elemento però molto importante è il cosiddetto codice di stato che consiste in un numero intero che il server inserisce nella risposta. Tale numero fornisce già da solo una forte indicazione sull’esito della richiesta. Ti è mai capitato di invocare una pagina web non esistente? Probabilmente avrai ricevuto come risposta il messaggio “404 Page not found”: ecco 404 è proprio un codice di ritorno HTTP che indica che la risorsa cercata non è disponibile. I codici di stato sono composti da tre numeri di cui il primo indica il tenore della risposta: se il numero inizia con 2 è buon segno, significa che la richiesta era corretta ed è stata processata con successo; se inizia con 4 il client ha eseguito una richiesta non corretta; se inizia con 5 si è verificato un errore non per colpa del client, ma internamente al server. Ecco alcuni dei codici di stato più utilizzati accompagnati ognuno dal messaggio testuale ufficiale: - **200 “OK”**: operazione eseguita con successo; - **201 “Created”**: successo con conseguente creazione di una nuova risorsa nel servizio. Ad esempio, potrebbe essere la risposta alla POST che inserisce un nuovo prodotto; - **400 “Bad Request”**: richiesta non formulata correttamente; - **401 “Unauthorized”**: è necessario eseguire prima un’autenticazione correttamente; - **403 “Forbidden”**: la richiesta sarebbe corretta ma si è chiesta una risorsa cui è vietato accedere; - **404 “Not found”**: risorsa non trovata. Immaginiamo ad esempio di inviare una GET all’indirizzo www.mioservizioweb.org/api/prodotti/999 ma il prodotto di id 999 non esiste nel database; - **500 “Internal server error”**: generico errore interno al server; - **501 “Not implemented”**: il tipo di richiesta non è stato implementato sul server. **VUOI IMPARARE A PROGRAMMARE?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [**SCOPRI I CORSI**](https://devacademy.it/corsi/) | [**ISCRIVITI**](https://devacademy.it/prezzi/) ## Conclusioni Così abbiamo visto tutti gli elementi principali del dialogo REST. Il client invia una chiamata ad un URL specificando un metodo (GET, POST, PUT, DELETE) e passando, se necessario, dei dati in JSON nel corpo della richiesta. Il server esegue la funzionalità collegata con l’URL e risponde inoltrando un codice di stato e, se previsto, un oggetto JSON nel corpo della richiesta. Tutto ciò può essere fatto con qualsiasi linguaggio che comprenda HTTP quindi, in pratica, con ogni tecnologia disponibile. Il modo di attuare REST non ha bisogno di requisiti specifici, in realtà va bene un qualsiasi server e librerie apposite permetteranno di creare le funzionalità sia lato client sia server. Oltre a ciò gli studi potranno essere approfonditi imparando, ad esempio, come gestire le fasi di autenticazione e autorizzazione di cui spesso si ha bisogno sia con servizi a pagamento sia gratuiti su cui il servizio vorrà monitorare l’utilizzo delle API o più in generale restringerne l’accesso. Ormai i concetti sono stati chiariti e tutto è pronto: non ti resta che mettere mano alla tastiera ed iniziare ad esercitarti per diventare un grande progettista di servizi REST. **Categorie:** Programmazione **Tag:** API, programmazione, Rest --- ### [JavaScript](https://devacademy.it/javascript/) **Published:** Agosto 28, 2019 **Author:** Giuseppe Maggi **Content:** [JavaScript](https://devacademy.it/percorsi/javascript-developer/) è una di quelle tante idee nate nell’arco di pochi giorni che sembrano semplicemente destinate a rappresentare un passatempo per chi le crea. Invece **JavaScript** si è dimostrato ben presto un **linguaggio di programmazione** efficace, semplice e divertente che nel tempo di un decennio ha conquistato il mondo. L’ha inventato un certo Brendan Eich, un informatico statunitense allora poco più che trentenne che lavorava alla Netscape Communications. Il nome Netscape a molti – soprattutto i più giovani – ormai non dirà granché ma può essere considerata una delle aziende che ha contribuito maggiormente a portare Internet in ogni casa con la creazione di uno dei primi browser esistenti. Tutto questo per dire che JavaScript è nato per Internet e ha cavalcato gli anni della New Economy che hanno visto un trionfo dell’uso della Rete. Questo linguaggio è però diventato uno degli strumenti più adattabili al mondo essendo ormai presente in ogni ambito dell’Informatica: web, desktop, mobile, iot e server. Questa guida punta a portarti in giro per il suo sconfinato impero illustrandoti tutti i vantaggi che si possono ottenere studiandolo. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## Caratteristiche di JavaScript JavaScript è un linguaggio che si può imparare senza troppa difficoltà. Ciò non significa che sia semplice o povero di elementi, diciamo piuttosto che offre un’interfaccia amichevole per chi lo studia. Chiariamo subito che spesso sentirai parlare non solo di JavaScript, ma anche di **ECMAScript**. Sappi che in buona parte possono essere considerati la stessa cosa, con un po’ di approssimazione. In pratica, JavaScript è stato standardizzato a fine anni ’90 da ECMA (European Computer Manufacturers Association) e da lì deriva il nome della sua versione “standardizzata”, ECMAScript appunto. JavaScript permette di svolgere qualsiasi operazione lavorando su stringhe, numeri, date e strutture dati. Inoltre è basato sugli oggetti pertanto permette di strutturare informazioni complesse facendo leva su tipi di dato più semplici. Sin dalla strutturazione di un oggetto JavaScript, si nota come questo linguaggio punti ad una estrema essenzialità. Vediamo un paio di esempi (non preoccuparti se ancora non comprendi il significato dei concetti presentati, gli esempi servono solo a mostrarti la semplicità di questo linguaggio). Se volessimo creare un oggetto “persona” con quattro proprietà (nome, cognome, eta e citta) non dovremmo far altro che scrivere: ``` persona={ nome: 'Claudio', cognome: 'Rossi', eta: 45, citta: 'Torino' } ``` Semplice vero? E’ bastata una coppia di parentesi graffe senza altri costrutti sintattici. Utilizzando invece le parentesi quadre si creano array, la struttura dati di base che permette di creare reti di informazioni anche di una certa complessità. Gli array possono anche avere come elementi degli oggetti creando una forma di annidamento ideale per molte applicazioni. Questo potrebbe essere un array che rappresenta un gruppo di persone con la stessa struttura del precedente: ``` gruppo_persone= [ { nome: 'Claudio', cognome: 'Rossi', eta: 27, citta: 'Torino'}, { nome: ‘Luigi’, cognome: 'Neri', eta: 38, citta: 'Roma'}, { nome: 'Simona', cognome: 'Verdi', eta: 21, citta: 'Bari'}, { nome: 'Noemi', cognome: 'Rossi', eta: 24, citta: 'Roma'} ] ``` La semplicità di array e oggetti è stata scelta inoltre per dare vita a [JSON](https://devacademy.it/json/), un formato testuale usatissimo al giorno d’oggi per far interagire servizi web e applicazioni. **VUOI IMPARARE A PROGRAMMARE IN JAVASCRIPT?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [VAI AL CORSO JAVASCRIPT](https://devacademy.it/percorsi/javascript-developer/) Con il tempo JavaScript si è arricchito di funzionalità che l’hanno reso più moderno e allineato con gli attuali standard di programmazione. Ad esempio, nella versione di ECMAScript pubblicata nel 2015 è stato introdotto il costrutto delle classi che permettono, come in tutti i linguaggi che supportano la **Programmazione Orientata agli Oggetti** di definire una struttura alla quale gli oggetti devono aderire. ## JavaScript ed il web Il destino di JavaScript è inesorabilmente legato al web. Nasce lì infatti e quello è il suo habitat naturale. Il codice scritto in questo linguaggio viene scaricato dal server al browser insieme a HTML e fogli di stile CSS e lì permette alla pagina web di prendere vita. Tutto ciò che normalmente vediamo fare di dinamico nel browser è dovuto in un modo o nell’altro proprio a JavaScript. In primis, gestisce la struttura di oggetti della pagina, il **DOM** (Document Object Model). Le funzioni originali demandate a questo compito sono facili da usare ma costringono a scrivere del codice piuttosto ripetitivo. Grande slancio lo si ha avuto con due importanti innovazioni: - **Ajax** (Asynchronous JavaScript And XML) che ha messo in condizione la pagina web di scaricare dati dal server senza la necessità di essere ricaricata. Ciò ha contribuito ad una migliore interazione con l’utente che non si limitava alla manipolazione in diretta degli oggetti visuali del DOM ma forniva aggiornamento costante dei dati mediante chiamate inoltrate dal browser che raggiungevano i server “dietro le quinte”, in maniera del tutto impercettibile per l’utente. Al giorno d’oggi, Ajax è uno strumento assolutamente imprescindibile nello sviluppo web; » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO AJAX](https://devacademy.it/corsi/ajax-comunicare-nel-web-con-jquery/) « - **jQuery**, un framework che ha di gran lunga semplificato l’uso di JavaScript offrendo, da un lato, delle funzioni e degli oggetti più comode per l’utente, dall’altro, un supporto immediato all’uso di Ajax. In brevissimo tempo, jQuery si è rivelato una piattaforma di lavoro a cui non si poteva rinunciare tanto da relegare le funzioni iniziali di JavaScript per il DOM ad una sorta di “primitive” di basso livello, da evitare in campo professionale. » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO JQUERY](https://devacademy.it/corsi/introduzione-a-jquery/) « Tutto ciò per quanto riguarda JavaScript, come linguaggio per rendere dinamiche le pagine web ma ben presto esso si è trasformato in qualcos’altro di più grande ancora. L’interazione via browser è diventata così comoda per l’utente che piuttosto che creare applicazioni desktop in senso classico le aziende hanno iniziato a preferire pagine web – le cosiddette **web app** – che, una volta invocate, offrivano tutte le funzionalità con interfaccia grafica necessarie all’uso del programma. Inoltre grazie alle chiamate Ajax, tali pagine non avevano bisogno di essere ricaricate spesso ma era sufficiente aprirle una volta e queste continuavano ad interagire con l’utente, da un lato, e a dialogare dietro le quinte con il server dall’altro: tale modello è diventato così comune che ha preso un nome tutto suo, **Single Page Application** (SPA). Alcuni framework realizzati in JavaScript si sono dimostrati ottimi per dare un’architettura alle web app e tra i molti possiamo citare **Angular.js**, strumento imponente nato in casa Google, e **Vue.js**, molto efficace ma estremamente più snello di Angular o ancora **React**. ## JavaScript fuori dal browser JavaScript per anni ha vissuto chiuso in un browser. Poteva quindi servire a tutto purché nel contesto di una pagina web. Una delle più grandi svolte dell’Informatica si è avuta con la nascita di **Node.js**, nel 2009. Finalmente JavaScript è uscito dal browser e si è trasformato in un linguaggio di programmazione con cui realizzare qualsiasi tipo di programma. Inoltre Node.js si è da subito dimostrato estremamente efficiente basando tutto il suo lavoro sulla reazione ad eventi in modo da attivare il codice solo al momento necessario. Uno dei suoi impieghi principali è stato quello di “server” per offrire **applicazioni web** e **web service**. Successivamente, i suoi consumi di risorse estremamente ridotti si sono dimostrati idonei all’impiego in contesti caratterizzati da hardware minimale come piccoli dispositivi elettronici: elementi in assoluta diffusione oggi, tempi caratterizzati dai cosiddetti **Microservizi** e **IoT** (Internet of Things). Su Node.js sono stati basati molti altri progetti tra cui **Electron**. Questo è un framework sviluppato da **GitHub** che permette di realizzare applicazioni desktop multipiattaforma in modo estremamente semplice e veloce, sfruttando le competenze comuni al mondo del web ovvero JavaScript, HTML e CSS. » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO NODE.JS](https://devacademy.it/percorsi/node-js-developer/) « ## JavaScript e il mobile Altro settore in cui JavaScript ha spopolato è il mobile. Da quando questo è diventato una delle miniere d’oro dell’Informatica molte aziende hanno iniziato a formare dipendenti e assumerne di nuovi in grado di calcare i principali sistemi operativi ovvero **iOS** e **Android**. Il problema è che le app sviluppate nativamente dovevano essere create da zero per ogni sistema, necessariamente duplicando i gruppi di lavoro. Infatti da un lato si doveva lavorare su sistemi Apple con i linguaggi **Objective-C** e **Swift**, dall’altro si richiedeva la conoscenza di **Java** e recentemente **Kotlin**. Sono nate per questo molte alternative per sviluppare app multipiattaforma con JavaScript, HTML e CSS dove professionisti già avvezzi al web potevano usare le proprie competenze per il mobile. Tra le varie soluzioni possiamo citare [Cordova](https://devacademy.it/screencast/apache-cordova-creare-app-mobile-con-html-css-javascript/) (il porting open source di PhoneGap), Ionic basato su Angular e NativeScript. Nonostante non sia sviluppato in JavaScript ci permettiamo di citare tra le soluzioni multipiattaforma per il mobile un altro framework sviluppato da Google protagonista in questi anni di un’ascesa verticale: [Flutter](https://devacademy.it/categoria_screencast/flutter/), le cui applicazioni sono sviluppate in [Dart](https://devacademy.it/screencast/imparare-dart-il-successore-di-javascript-per-web-e-mobile/), che da JavaScript ha ereditato molto tra cui una certa semplicità nella sintassi. ## Conclusioni In questa guida abbiamo voluto presentarti una panoramica sul mondo di JavaScript. Si tratta di un’aggregazione di tanti ambiti, tutti diversi, tutti pieni di opportunità ma con in comune una sola cosa: sfruttano lo stesso linguaggio di programmazione, efficace e divertente, che può essere imparato senza grandi difficoltà. Noi ti offriamo i migliori strumenti per farlo (scopri i nostri [corsi online](https://devacademy.it/corsi/)), non ti resta quindi che iniziare a studiare JavaScript e molto presto maneggerai una delle più potenti tecnologie mai esistite. » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO JAVASCRIPT](https://devacademy.it/percorsi/javascript-developer/) « **Categorie:** Javascript, Linguaggi di programmazione **Tag:** javascript --- ### [Backend: cos'è, a cosa serve e come si costruisce?](https://devacademy.it/backend/) **Published:** Settembre 17, 2019 **Author:** Giuseppe Maggi **Content:** In questo articolo parliamo di **Backend**, vediamo cos’è, a cosa serve e come si costruisce. Quali sono i linguaggi e le tecnologie che stanno dietro ad un Backend e come si diventa Backend developer, ma partiamo dall’inizio. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) Sin dagli albori dello sviluppo web qualsiasi progetto si vedeva suddiviso in due porzioni: lato server e lato client. Il primo rappresentava l’insieme delle attività dell’applicazione che rimaneva in ascolto sul server, quella che riceveva le richieste delle pagine e gestiva il database. La seconda era costituita da tutto ciò che il server, in risposta ad una richiesta, scaricava nel browser: HTML e fogli di stile CSS nonché codice Javascript. Molto spesso la stessa persona o lo stesso gruppo si occupavano di ambo le parti. Non di rado un programmatore PHP sapeva creare e gestire database MySQL e predisporre pagine web con tanto di codice Javascript, magari arricchito da una libreria produttiva come jQuery. Questo tanto per citare uno degli stack di sviluppo più comuni, ma lo stesso avveniva per altri tipi di tecnologie come Python, Microsoft .NET, Java e molto altro ancora. Tutto ciò poteva essere considerato sufficiente fino ad alcuni anni fa, quando la programmazione in Rete consisteva per lo più nella creazione pagine web. Sia il lato client sia quello server però si sono molto diversificati da allora, tanto da richiedere delle figure distinte altamente specializzate: da un lato sviluppatori esperti di framework Javascript come Angular.js e React, dall’altro programmatori qualificati in tecnologie server. Molti fattori hanno inciso su questa rivoluzione, tuttora in corso: - erogazione di servizi in Cloud; - nascita e diffusione di database NoSQL; - diffusione di applicazioni mobile; - applicazione di modalità di autenticazione basate su Social Network; - connessioni in numero costantemente crescente e sempre più veloci. Si è necessariamente iniziato a vedere il lato server non solo come una sorta di “erogatore di pagine web” ma come un’applicazione indipendente, di notevoli dimensioni, in grado di svolgere mansioni variegate e di accettare dialoghi con client di ogni tipo: web app (pagine web cui la programmazione lato client conferisce molta intelligenza), app mobile, applicazioni desktop, dispositivi elettronici. Tutto questo fondamentale ruolo passa ormai sotto il nome di **backend** e gli sviluppatori specializzati nella loro gestione sono figure sempre più ricercate dalle aziende. **VUOI IMPARARE A PROGRAMMARE?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [**SCOPRI I CORSI**](https://devacademy.it/corsi/) | [**ISCRIVITI**](https://devacademy.it/prezzi/) ## Cosa fa nello specifico un backend? Capire cosa fa esattamente un backend permette di sapere quali sono le competenze necessarie per diventare un professionista del settore. Ecco alcuni aspetti basilari: - innanzitutto i backend sono applicazioni. Permettono di svolgere elaborazioni, esportare dati in molti formati, interpretare file di ogni genere, interagire con database e molto altro. Per poter lavorare come sviluppatore backend è indispensabile saper programmare in uno o più linguaggi tra Java, Python, PHP, Javascript su Node.js e saper affrontare la gestione di problemi anche con un pizzico di progettazione visuale UML; - gestiscono database. Tutti i dati che un backend gestisce sono inseriti all’interno di database. In molti casi si tratta di database relazionali basati su MySQL, PostgreSQL, SQL Server, etc. ma nell’ultimo decennio si è avuta una grossa affermazione dei cosiddetti NoSQL che garantiscono prestazioni migliori in diversi casi, utilizzo in cluster, modelli di programmazione più vicini alle esigenze degli sviluppatori. Tra i più diffusi in assoluto troviamo MongoDB e Redis; - affinchè un backend possa essere utilizzato dai suoi client deve offrire delle interfacce tramite cui essere contattato. Il modo più comune è offrire API di tipo REST, un approccio comodo da applicare e perfettamente utilizzabile con qualsiasi linguaggio di programmazione. Chi volesse diventare un programmatore di backend dovrebbe approfondire ognuno di questi aspetti. L’approccio migliore è quello di scegliere un linguaggio di programmazione – magari provandone più di uno si può individuare quello di proprio gradimento – e iniziare a sviluppare programmi integrando via via tecniche di interazione con un database e definizione di proprie API REST. ## Come si costruisce un backend? In primis, un backend può essere costruito in proprio. Ci si basa su un’applicazione che fa da server, pensiamo ad un Apache Web Server, piuttosto che a nginx o a Node.js per il mondo Javascript, e su quello creiamo la nostra applicazione. Dovremo affrontare un po’ tutto da soli sia per quanto riguarda la produzione delle API da esporre, sia l’interazione con il database e via dicendo. Otteniamo così un prodotto perfetto per i nostri scopi, su misura al nostro business e allocato sul server che preferiamo. Il problema è che il costo in ore uomo non sarà sempre irrisorio ed in caso di backend piuttosto grandi l’impegno in termini di sviluppo e manutenzione potrebbe non essere così limitato. Inoltre c’è sempre la gestione dei server sia da un punto di vista hardware sia software, dovendo decidere se posizionarli in locali propri o affittare spazi in web farm. Tutto ciò può essere in parte o totalmente alleviato dall’adesione a servizi in Cloud. Ciò avrà effetto su vari aspetti sia gestionali sia operativi. Innanzitutto Cloud significa avere un potenziamento e un contemporaneo alleggerimento di diversi aspetti. Si può ricorrere a questi servizi per la creazione di macchine virtuali che eliminino il problema della gestione dei server. Lo si può utilizzare per avere in maniera molto elastica database con o senza API per l’interazione. In pratica, si può “astrarre” nel Cloud tutto ciò di cui non vogliamo preoccuparci in prima persona. Il Cloud comporta comunque costi da sostenere. Servizi di nuova generazione si basano sulla regola generale del pagare quanto si consuma. Hanno tariffe commisurate ai servizi che si utilizza e possono essere adattate, più o meno dinamicamente, alle circostanze di traffico e di intensità di utilizzo. Un servizio in Cloud particolarmente utile per la realizzazione di un backend è Firebase. Tra le varie piattaforme lo prendiamo come esempio in quanto offre molti vantaggi: - è un ambiente in continua espansione in quanto proprietà di Google; - offre una moltitudine di servizi non solo rivolti allo sviluppatore. Permette di caricare pagine web e usare i suoi database NoSQL, di gestire notifiche push (inviate dal server ai client di propria iniziativa) ma anche campagne di marketing, statistiche e molto altro ancora; - offre librerie software per l’integrazione con app mobile Android e iOS, web app in Javascript e applicazioni Unity; - ha piani tariffari piuttosto accessibili e soprattutto un piano gratuito per studiare e sperimentare con limiti davvero molto generosi. Senza dubbio, i backend su Cloud stanno conquistando sempre più spazio rispetto a quelli “fatti in casa”, i punti di forza sono notevoli ed i costi vantaggiosi. Un aspetto molto importante è che tutte queste piattaforme possono essere curate con programmi scritti nei linguaggi più comuni infatti tutte permettono di caricare codice Java, Python, Javascript, PHP e altro ancora. ## Conclusioni In definitiva, quello di sviluppatore backend è un percorso di formazione interessante soprattutto perché variegato. Si può scegliere il linguaggio che si preferisce, applicare le tecnologie di elezione, integrare il tutto con strumenti che già si conosce. Soprattutto orientarsi a questo settore permette di acquisire nozioni di carattere generale che saranno sempre utili in altri contesti. Comprendere come funziona il protocollo HTTP, il modello REST o un database sono esperienze indispensabili per essere uno sviluppatore sia di backend sia di app mobile Android pertanto un percorso simile amplifica in maniera solida il proprio bagaglio culturale. Vuoi provare? Perché non iniziare con uno dei migliori linguaggi per backend come **Java**, **Python**, **PHP** o magari con **Node.js**? I [nostri corsi](https://devacademy.it/corsi/) ti aspettano. » VUOI SAPERNE DI PIU’? SCOPRI I NOSTRI [CORSI ONLINE PER IMPARARE A PROGRAMMARE](https://devacademy.it/corsi/) « **Categorie:** Programmazione **Tag:** backend, programmazione --- ### [MySQL](https://devacademy.it/mysql/) **Published:** Dicembre 11, 2019 **Author:** Giuseppe Maggi **Content:** Se hai provato a cimentarti nello sviluppo di siti Internet, intendo non solo le pagine web ma tutto quello che ruota attorno alla parte server, non avrai potuto non incontrare il linguaggio PHP e, con esso, **MySQL**, il più famoso software per **database** del mondo. In questa guida parliamo proprio di quest’ultimo fondamentale strumento e cerchiamo di capire perché sia così centrale nell’Informatica degli ultimi decenni. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## Cos’è un database? Parliamo di database quindi. Ma ti è del tutto chiaro cosa intendiamo? Al di là dell’uso più o meno appropriato che si possa fare del termine, un database consiste in un insieme di dati, immagazzinati in maniera persistente su una memoria di massa di un computer e organizzati in maniera tale che la loro scrittura e recupero siano efficienti al massimo. Quindi, in parole povere, un database non è altro che un archivio elettronico di dati molto ben organizzato. Un programma che gestisce database prende il nome di **DBMS** (Database Management System): pertanto MySQL tecnicamente non è un “database” bensì un DBMS che permette di gestire tanti database. Di DBMS ne esistono tipologie diverse e possono essere classificati sotto aspetti diversi. In primis, in base al loro scopo. Spesso si ha il primo incontro con un database in ambienti di ufficio grazie ad Access, il programma destinato alla creazione archivi nella suite Microsoft Office. Questo però è un programma molto valido nei suoi scopi ma destinato per lo più a creare archivi da usare su un singolo computer o al più in una rete di PC di una Intranet. MySQL è un tipo di DBMS per l’uso enterprise ossia un servizio messo in esecuzione su di un server, raggiungibile tramite connessione in rete (ha indirizzo IP e porta TCP e può essere contattato anche attraverso Internet), in grado di gestire molti database diversi ed è ottimizzato per la connessione contemporanea di svariate migliaia di utenti. Questi aspetti hanno pertanto reso MySQL particolarmente adatto all’impiego per siti web. Un’altra tipologia di DBMS che vale la pena citare è quella cui appartiene SQLite, non un servizio in esecuzione come MySQL, ma una piccola libreria in grado di salvare database su un unico file: potrebbe sembrare una soluzione di nicchia ma basti considerare che è il tipo di database usato nelle app Android per rendersi conto di come questo sia uno dei più usati al mondo in assoluto. Altra distinzione tra DBMS, è l’appartenenza al mondo relazionale o meno. La teoria relazionale è nata negli anni ’70 del secolo scorso e da lì ha ispirato la progettazione di grandissima parte dei database esistenti. Si basa su database costituiti in maniera rigida da tabelle collegate tra loro da relazioni. Il meccanismo principe di interrogazione prende il nome di query, direttive scritte in **linguaggio SQL** molto simili ad una frase in inglese. Mysql è assolutamente relazionale tanto da potersi considerare un **RDBMS** (Relational Database Management System). L’altra metà del cielo rispetto ai database relazionali prende il nome di **NoSQL**, suddiviso in “etnie” diverse infatti vede tra le sue fila DBMS molti vari come **MongoDB**, **Redis** e **Cassandra**. Dopo questa breve introduzione entriamo un po’ nello specifico di MySQL. » VUOI SAPERNE DI PIU’? SCOPRI I NOSTRI [CORSI ONLINE](https://devacademy.it/corsi/) E I NOSTRI [VIDEO TUTORIAL](https://devacademy.it/screencast/) « ## Come iniziare con MySQL MySQL va innanzitutto installato. Si parte dal sito principale del progetto () e da lì si procede al download. Osservando l’homepage potresti rimanere un po’ stupito del fatto che sono proposti prodotti targati “Oracle MySQL”: l’associazione può sembrare strana in quanto stai cercando un gestore di database gratuito (cosa che speri di trovare in MySQL) e lo trovi accostato al nome Oracle, non solo il tipo di base di dati più diffuso per grandi realtà ma anche uno dei più costosi. Cerco di scioglierti subito i dubbi con un velocissimo excursus storico. MySQL è stato creato nel 1995 da una società svedese (niente di strano che non sia a stelle e strisce: pensa solo che a un finlandese dobbiamo Linux e ad un danese PHP) poi acquisita dalla Sun Microsystems (azienda creatrice del linguaggio Java) a sua volta, qualche anno dopo, fagocitata dalla Oracle, una delle più grandi aziende informatiche in assoluto. Dopo tutti questi passaggi, MySQL si è arricchito di soluzioni variegate e molto avanzate, tante a pagamento ma ancora con una buona fetta di offerta gratuita. Infatti spostandoci sulla pagina [Downloads](https://www.mysql.com/it/downloads/) troviamo almeno quattro soluzioni presentate: - **MySQL Enterprise Edition**: la versione di MySQL più completa, soggetta a licenza commerciale, che contempla non solo la memorizzazione dei dati ma anche Partitioning, High-Availability, Monitoring, Firewall e tanti altri aspetti per garantire massima sicurezza ed efficienza di una installazione Enterprise; - **Oracle MySQL Cloud Service**: è un servizio figlio di MySQL Enterprise Edition e di Oracle Cloud che permette di ottenere velocemente una soluzione ideale per business scalabili. Anche questo è un servizio a pagamento; - **MySQL Cluster CGE**: altra soluzione a pagamento, basata su MySQL Enterprise Edition, dedicata all’utilizzo in cluster, ancora rivolta ad alti livelli di business; - **MySQL Community**: questa è la versione sotto licenza GPL che possiamo utilizzare liberamente. E’ il campo più adatto per imparare ad utilizzare MySQL e soprattutto è assolutamente ricca di funzionalità. Una volta scaricato il pacchetto di installazione lo si può avviare ed averlo a disposizione nella propria macchina. » VUOI SAPERNE DI PIU’? SCOPRI I NOSTRI [CORSI ONLINE](https://devacademy.it/corsi/) E I NOSTRI [VIDEO TUTORIAL](https://devacademy.it/screencast/) « ## Interagire con MySQL Il primo modo per interagire con MySQL è utilizzare la console da riga di comando. Il software infatti è dotato non solo di server ma anche di un client testuale. Da questo si potrà creare database, tabelle ed altri elementi architetturali e lavorare sui dati: si tenga solo presente che è necessario conoscere il linguaggio SQL che però può essere imparato agevolmente a piccoli passi. Tuttavia per interagire con MySQL si può passare per molti altri programmi dotati di interfacce visuali più o meno comode, ad esempio [HeidiSQL](https://www.heidisql.com/) assolutamente gratuito, facile da utilizzare ed immediato da comprendere. MySQL è però famoso soprattutto perché offre ampissime possibilità agli sviluppatori. Questa piattaforma dispone di una serie di librerie per la connessione tramite tutti i principali linguaggi. Se ne può trovare un elenco alla pagina “[MySQL Connectors](https://www.mysql.com/it/products/connector/)” del sito del progetto e lì si potrà notare una distinzione: una parte sono Driver sviluppati dalla Community (ad esempio, tutti quelli per il linguaggio PHP) e molti sono i Connector veri e propri creati da MySQL (per .NET, Java, Python, Node.js e tanti altri). Oltre ai Connector, non si può certo tacere l’importantissimo uso di MySQL con il Web. Una percentuale altissima di siti nel mondo è realizzata con il cosiddetto stack LAMP (Linux Apache MySQL PHP) dove: - Linux offre il sistema operativo di base, assolutamente stabile ed efficiente; - Apache Web Server mette a disposizione il server su cui posizionare le pagine web e da cui richiamarle via protocollo HTTP; - MySQL offre il supporto per i database; - PHP è il linguaggio con cui si elaborano le richieste HTTP che Apache riceve, si interagisce con i dati custoditi da MySQL e si predispone la risposta da restituire al browser. Un ambiente Apache-MySQL-PHP può comunque essere allestito su macchine Windows o Mac installando tutti questi software gratuiti ed avviando i server Apache e MySQL. Esistono tuttavia una serie di piattaforme già predisposte che devono solo essere scaricate ed installate nel proprio sistema per poter offrire un ambiente simile già pronto, configurato e coeso. Tra queste ricordiamo [WAMP](http://www.wampserver.com/en/) dedicato a Windows, [XAMPP](https://www.apachefriends.org/it/index.html) per ogni sistema operativo ma ve ne sono molte altre come ad esempio [MAMP](https://www.mamp.info/en/), per mac e windows. Utilizzando MySQL su server web con PHP ci si potrà inoltre avvantaggiare di phpMyAdmin (https://www.phpmyadmin.net/), un applicativo web che mette a disposizione una completa interfaccia per la gestione di un’installazione MySQL. Da qui si potrà visualizzare dati, provare codici, esportare ed importare tabelle e molto altro: un aiuto preziosissimo per lo sviluppatore web direttamente nel browser. » VUOI SAPERNE DI PIU’? SCOPRI I NOSTRI [CORSI ONLINE](https://devacademy.it/corsi/) E I NOSTRI [VIDEO TUTORIAL](https://devacademy.it/screencast/) « ## L’alternativa MariaDB Si parla molto anche di MariaDB, quello che viene considerato da molti il “vero” MySQL. Questo perché è stato fondato da uno dei creatori originali di MySQL che non contento della definitiva acquisizione di MySQL da parte della commercialissima Oracle ha deciso di dare nuova vita al progetto fondando appunto MariaDB. Questo costituisce una validissima alternativa, assolutamente libera ed in rapidissima espansione. Non solo contiene tutte le caratteristiche di MySQL ma anche molte di più, assolutamente originali. Ad esempio, MariaDB include molti più Storage Engine rispetto a MySQL (sono i motori di memorizzazione fisica dei dati su disco) di cui alcuni ispirati al mondo NoSQL. Tra l’altro se si vuole usare velocemente MariaDB in un contesto web lo troviamo già incluso in alcuni dei pacchetti completi di cui abbiamo parlato poco fa, tra cui XAMPP. ## Conclusioni Chi può essere interessato a MySQL quindi? Chiunque perché la gestione dei dati riguarda tutti: lo sviluppatore web, l’amministratore di sistemi nonché programmatori di ogni categoria. Iniziare non pone alcuna difficoltà o costo: 1. si scarica ed installa la propria distribuzione che, al di là delle differenze, può essere identicamente un MySQL Community, un MariaDB o – perché no? – un pacchetto completo tipo XAMPP; 2. si installano sulla propria macchina i componenti rimanenti per il proprio ambiente di lavoro, Connector piuttosto che client visuali o linguaggi di programmazione; 3. si inizia a lavorare prima in SQL per gestire i database passando poi ad usare linguaggi ed ambienti di sviluppo. I nostri materiali sono a disposizione e non solo costituiranno un ottimo modo per iniziare, ma anche un contesto perfetto per forgiare una vera preparazione professionale. » VUOI SAPERNE DI PIU’? SCOPRI I NOSTRI [CORSI ONLINE](https://devacademy.it/corsi/) E I NOSTRI [VIDEO TUTORIAL](https://devacademy.it/screencast/) « **Categorie:** Database **Tag:** database, MySQL --- ### [Git](https://devacademy.it/git/) **Published:** Ottobre 30, 2019 **Author:** Giuseppe Maggi **Content:** In questa guida parliamo di **Git**, il software di controllo versione distribuito più diffuso e utilizzato al mondo, popolare anche grazie a servizi come GitHub, GitLab e Bitbucket. Se ti è mai capitato di lavorare ad un progetto, scrivere un documento o preparare del materiale un po’ articolato, ti sarai accorto di come sia facile perdersi anche nel proprio lavoro. Spesso, per tener traccia di modifiche e tentativi di correzione, i file iniziano a spuntare come funghi. Ecco che troviamo miodocumento.txt accompagnato da miodocumento.txt.old e da miodocumento.txt.versione1. Quale era quello giusto? L’ultimo a cui avevo lavorato contiene tutte le modifiche? Sono domande che capita di porsi e fretta, stress e stanchezza non aiutano certo a darsi le risposte corrette. Tutto ciò diventa sempre meno gestibile quando si inizia a parlare di grandi progetti, destinati a scenari produttivi, cui probabilmente partecipano professionisti diversi e (perché no?) dislocati in varie parti del mondo: figuriamoci in tali casi come può diventare tutto più complicato. Ciò ha portato alla nascita di un particolare tipo di strumenti software dedicati al controllo di versione, la soluzione ad ogni problema: ne trattiamo qui e ci soffermiamo soprattutto sul campione della categoria ovvero **Git**. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## Controllo di versione: a chi serve? Per “controllo di versione” intendiamo un sistema informatico che permette di tenere traccia di tutte le modifiche che vengono apportate ad uno specifico progetto. Spesso si tratta di progetti informatici, ma il controllo di versione può trovare spazio in ogni ambito. Gli strumenti di tale categoria si accollano l’onere di conservare ogni versione dei file permettendo il recupero di una delle precedenti, tenere traccia delle modifiche, rendere disponibile quanto realizzato fino ad un dato istante e offrire soluzioni in caso di errore. Attività del genere possono fare comodo a chiunque. Un grafico che lavora alla produzione di un’immagine potrebbe permettersi di tornare indietro al momento della necessità. Una maestra potrebbe conservare una versione di un quiz con le sole domande ed una successiva completa di risposte fornendole agli allievi in momenti differenti. Oppure una relazione potrebbe essere scritta e conservata tenendo traccia dello stato di avanzamento. L’uso di strumenti simili si rivela particolarmente utile soprattutto quando si lavora in team. Si ha la possibilità di garantire una certa consistenza di lavoro tra gruppi operativi differenti. Se, supponiamo, il nostro progetto è suddiviso nel modulo A e nel modulo B, chi lavora al secondo deve poter essere sicuro di farlo interagire con una certa versione del modulo A che espone determinate caratteristiche. ## Tratti principali del controllo di versione Di software per il controllo di versione ne esistono molti e la loro evoluzione si intreccia strettamente con i progressi compiuti dalla comunicazione in Rete, questo per due motivi principali: in primis, si hanno possibilità sempre migliori di trasmettere dati tra macchine differenti; in secondo luogo, il mondo del lavoro si è modificato in modo da agevolare il reperimento di collaboratori in luoghi diversi dal proprio. Una prima generazione del controllo di versione ha rivelato la sua utilità pur senza fare uso della Rete. Ad esempio, rcs (Revisione Control System), nato negli anni Ottanta, permetteva di salvare le modifiche apportate ad un file in una cartella presente nella propria macchina ed estrarle al momento opportuno. Va da sé che ciò, per utile che potesse essere, non era particolarmente efficace né nel favorire gruppi di lavoro né nel mettersi al riparo da guasti. Con gli anni Novanta e la diffusione di Internet in ogni casa ed ufficio, è apparsa la generazione a lungo (ed in buona parte tuttora) dominante: quella basata su repository. Un unico file server svolgeva tale ruolo accumulando ogni versione dei file. Tutti coloro coinvolti nel progetto potevano collegarsi ad esso con i propri computer come client scaricando il materiale su cui lavorare nella versione appropriata. Al termine, le modifiche tornavano al repository. Software come CVS (Concurrent Versions System) hanno segnato la storia dello sviluppo informatico ma sono considerati ormai superati in quanto un unico repository rappresentava il collo di bottiglia del network risultando sottoposto a troppi accessi ed un punto critico in caso di suoi guasti o perdita di dati. Per questo, i sistemi di controllo di versione distribuiti hanno conquistato il mondo e tra questi Git: ogni macchina coinvolta nel progetto scarica l’intero repository in modo che non ne esista mai un’unica copia disponibile. » VUOI SAPERNE DI PIU’? SCOPRI IL NOSTRO [CORSO GIT](https://devacademy.it/corsi/git-base/) « ## Cos’è Git? Git è stato ideato da Linus Torvalds, lo stesso che ha inventato il sistema operativo Linux. In realtà, la storia di questi due grandi progetti è collegata infatti Git nacque proprio per facilitare la gestione dell’immensa mole di codice che componeva il kernel di Linux. Abbiamo detto che Git lavora in maniera distribuita basandosi sullo scaricamento di un’immagine del progetto dal repository principale. Qui risiede il segreto della velocità di Git. Dopo esperienze con altri sistemi di controllo di versione ci si potrebbe stupire della rapidità con cui in Git vengono completate le operazioni. Il motivo sta proprio nella prassi di sincronizzare la cartella di lavoro corrente con un repository locale. Pertanto il grosso delle operazioni in Git verranno svolte localmente senza tempi di latenza e con la possibilità di lavorare off-line per buona parte del tempo. La vita in Git sarà sempre suddivisa in due emisferi: - quello remoto, costituito da un repository dal quale scaricheremo l’immagine del progetto e ve lo ricaricheremo al termine del lavoro mediante un’operazione di push; - quello locale in cui si svolgerà il grosso della nostra attività. Chiameremo working directory la cartella del file system in cui il lavoro verrà svolto fisicamente e repository locale la locazione dove salveremo i lavori finiti: da quest’ultimo lanceremo il push verso il repository remoto. Tra la working directory ed il repository locale si pone la staging area, una sorta di zona di sosta in cui segnalare i file che abbiamo candidato per il salvataggio nel repository locale. Questi sono i fondamenti di Git ma per iniziare a studiarlo è importante familiarizzare con il suo glossario di base. Termini tipici del controllo di versione sono checkout e commit. Hanno in genere un significato legato, rispettivamente, a recupero e salvataggio verso e da repository. In Git, sono entrambi intesi in senso locale infatti checkout indica il salvataggio nella working directory dal repository locale mentre commit indica il caricamento nel repository (locale, sempre) di tutto ciò che abbiamo segnalato nella staging area. ## Cosa serve per usare Git? Git può essere usato in ogni condizione. E’ un sistema multipiattaforma infatti ne esistono versioni per Linux (sua terra di origine), Windows e Mac. Appena scaricato e installato può essere utilizzato da riga di comando e, nonostante tale modalità non riceva i favori di tutti, Git non pone grandi difficoltà. Tutti i comandi richiamati rispecchiano infatti le principali fasi del ciclo di vita dei file: una buona confidenza con i principi di base del sistema faciliterà molto l’apprendimento del suo utilizzo. Comunque esistono molte modalità più comode per farne uso. Innanzitutto sono disponibili molti client con interfaccia grafica. In questo modo, qualsiasi utente riuscirà a trovarsi a suo agio, non dovrà imparare a memoria troppi comandi ed avrà a disposizione tutte le funzionalità di questo ottimo sistema. Inoltre i programmatori possono sfruttare Git dai propri ambienti di sviluppo come Android Studio, Visual Studio, etc.. Tutto il necessario potrà essere trovato direttamente all’interno di questi programmi o potrà essere aggiunto con appositi plugin. Tuttavia, prima di usare Git in maniera, per così dire, “comoda” converrebbe farvi esperienza con la versione di base, nuda e cruda, che da riga di comando permette di apprezzare a pieno tutte le caratteristiche del sistema. » VUOI SAPERNE DI PIU’? SCOPRI IL NOSTRO [CORSO GIT](https://devacademy.it/corsi/git-base/) « ## GitHub, GitLab e Bitbucket La fama di Git, già molto conosciuto, è stata incrementata da servizi on-line dedicati al mantenimento e alla condivisione del codice. Tra i più famosi ci sono [GitHub](https://github.com/), [GitLab](https://about.gitlab.com/) e [Bitbucket](https://bitbucket.org/), il primo, forse il più famoso tra i tre, è stato acquisito dalla Microsoft a metà 2018. Qualsiasi programmatore si sarà imbattuto in librerie, framework o progetti residenti in uno di questi servizi ed il motivo sta proprio nella facilità di distribuzione che essi garantiscono. Tipicamente su una pagina di progetto di Github si potrà trovare documentazione, informazioni, esempi ed il codice sorgente sempre aggiornato del progetto che ci interessa. Mediante Git e tutti i client messi a disposizione degli ambienti di sviluppo sarà molto facile iniziare da subito a trarne vantaggio. GitLab e BitBucket sono ottime alternative, rimandiamo ai rispettivi siti ufficiali per scoprire caratteristiche, vantaggi e svantaggi di una soluzione rispetto all’altra. ## Conclusioni Qualsiasi sviluppatore che voglia cimentarsi in contesti professionali non potrà non imbattersi nel controllo di versione e ciò al giorno d’oggi significa, per lo più, comprendere e conoscere Git. Tale sistema è divenuto ormai una skill in grado di arricchire qualsiasi curriculum in quanto se non lo si conosce già, sarà comunque l’azienda di assunzione a dover formare il dipendente visto che senza Git ormai non si può portare avanti con successo progetti impegnativi. Inoltre, una buona conoscenza di questo strumento dimostrerà più di molto altro la partecipazione a progetti di ampio respiro e di caratura professionale. Iniziare non è assolutamente complicato né proibitivo da nessun punto di vista. Esiste molto materiale on-line, documentazione e soprattutto le nostre preziose lezioni in materia. » VUOI SAPERNE DI PIU’? SCOPRI IL NOSTRO [CORSO GIT](https://devacademy.it/corsi/git-base/) « **Categorie:** Git, Tools **Tag:** git, tools --- ### [jQuery Ajax: cos'è, quando usarlo e come?](https://devacademy.it/jquery-ajax-cose-quando-usarlo-e-come/) **Published:** Gennaio 27, 2020 **Author:** Giuseppe Maggi **Content:** Se usi Internet da un po’ di anni, forse ricorderai quando l’aggiornamento di una pagina web la ricaricava totalmente e, nota dolente, le connessioni del tempo non avevano la velocità di oggi. Poteva bastare la selezione di una voce in un menu a tendina per assistere al caricamento dell’intera pagina con lo scopo, magari, di aggiornare solo qualche campo di un form. Poi tutto è cambiato. Ad un certo punto le pagine web hanno iniziato a ricaricarsi sempre meno e a sembrare molto più intelligenti oltre che intuitive. Toccavi un campo e di conseguenza si aggiornavano altre sezioni senza alcun bisogno di ridisegnare tutto il contenuto del browser. Passavi con il mouse da una parte e all’istante si apriva un’area a scomparsa che riportava tutta una serie di informazioni. Il motivo di questo avanzamento improvviso della tecnologia non sta tanto nel linguaggio usato – diciamo che [Javascript](https://devacademy.it/javascript) ha fatto sempre la sua parte – ma piuttosto nel modo in cui il dialogo tra client (il browser) ed il server (chi ti manda pagine web e dati) si è evoluto. La parola chiave di questa evoluzione è stata **Ajax**, il cuore di questa tecnologia e seppur oggi si lavori in modo differente è comunque importante conoscerne il funzionamento, vedremo quindi, in questa guida, come viene applicata e come una libreria fantastica (seppur ormai datata) chiamata **jQuery** sia stata in grado di facilitare il tutto. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## Client, server e… Ajax Il contesto di cui parliamo è il rapporto tra client e server. Il client potrebbe essere una qualsiasi applicazione ma in questo caso ci stiamo concentrando sul browser, un qualcosa perciò che riguarda ogni tipologia di utente. Questi i passaggi di una tipica connessione ad una pagina web: - Il browser invia la richiesta; - Il server elabora la risposta eseguendo script e programmi con un tipico linguaggio “lato server”: PHP, Java, Microsoft .NET, Python, Node.js e molti altri; - Alla fine dell’esecuzione lato server, è stata prodotta una risposta composta da tutto ciò che un browser può interpretare ed eseguire: HTML, CSS, Javascript e risorse varie; - Il server invia la risposta al browser che la interpreta e ne mostra i risultati all’utente. Il codice Javascript al suo interno rappresenterà l’intelligenza attiva di quella pagina, ciò che gestirà l’interazione utente. Così è sempre stato ed ogni volta che una pagina ha bisogno di richiedere elaborazioni o dati presenti sul server deve necessariamente avviare una nuova richiesta. Ciò che Ajax ha portato di nuovo è che tali richieste possono essere eseguite in background ossia senza che l’utente si accorga di niente. In pratica, mentre l’utente sta tranquillamente leggendo i contenuti della pagina, compilando un form o facendo altro, la tecnologia Ajax è in grado di connettersi al server e senza alcun ricaricamento dell’interfaccia scaricare dati da usare per aggiornarla più o meno parzialmente. Va da sé che il guadagno in termini di interattività e dinamicità è grandissimo. Per comprendere i capisaldi di questa tecnologia vediamo cosa significa Ajax. E’ l’acronimo di **Asynchronous JavaScript and XML**. Quindi la sua nascita scaturisce dall’incontro di tre fattori: - Asynchronous: in programmazione, si ha una richiesta asincrona quando il componente che l’ha inoltrata non resta bloccato in attesa di riceverne la risposta ma può proseguire con le proprie operazioni. Quando la risposta sarà pervenuta, verrà attivata una funzione che la gestirà. L’aspetto asincrono è proprio quello che permette l’azione di comunicazione “dietro le quinte” con il server; - JavaScript: su questo aspetto non serve spiegare molto ormai. Per attuare tali strategie un linguaggio lato client è assolutamente necessario; - XML: questo è il formato che si è affermato proprio per lo scambio di dati tra applicazioni. Ultimamente si è visto rubare terreno dal formato JSON (anche qui le lettere JS stanno per Javascript) ma è stato il cuore dell’avvento dei servizi web e di tutta la logica che porta a dialoghi automatici tra macchine e applicazioni. » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO AJAX](https://devacademy.it/corsi/ajax-comunicare-nel-web-con-jquery/) « ## Quando usare Ajax: facciamo un esempio Immaginiamo di avere due menu a tendina in una pagina web di cui il primo contiene le regioni d’Italia ed il secondo le province. L’utente deve indicare un indirizzo pertanto dovrà scegliere anche alcuni di questi elementi. Per evitare che vengano erroneamente selezionati dati non coerenti (ad esempio: come regione il Lazio e provincia Lecce) vogliamo fare in modo che al momento della selezione di una regione, il menu delle province mostri solo quelle appartenenti ad essa. Questo è un classico caso da interazione in background: l’utente seleziona come regione il Lazio e, senza alcun ricaricamento della pagina, totalmente in background, il browser invia al server una richiesta chiedendo “Quali sono le province del Lazio?”. La risposta del server sarà altrettanto dietro le quinte e porterà una sequenza di stringhe tipo \[Roma, Frosinone, Latina, Rieti, Viterbo\] che sarà usata per ripopolare il secondo menu a tendina. Affinchè tutto possa funzionare perfettamente, è necessario che lo scambio di richieste e risposte sia velocissimo ma al giorno d’oggi ciò non è assolutamente un problema. ## Come usare Ajax nello specifico? In realtà, il server non deve cambiare granché per adattarsi a questo modo di lavorare: che siano in background o meno le richieste del client pervengono sempre allo stesso modo. Generalmente l’applicazione lato server disporrà di classiche API, magari in stile REST, per scambiare dati con software esterni. Il client deve invece utilizzare apposite funzioni affiché possano essere svolte questo genere di operazioni. Diciamo che la nascita di Ajax si fa coincidere con la definizione di un oggetto, di nome XMLHttpRequest, che implementa tutto il suo meccanismo: invio di richieste (asincrone o eventualmente sincrone) ad un server , scambiando dati in XML, senza richiedere obbligatoriamente il ricaricamento della pagina web. In realtà, XMLHttpRequest è un’interfaccia di programmazione quindi può trovare applicazione in vari linguaggi. E’ stato infatti molto usato in Javascript ma potrebbe essere sfruttato anche in VBscript (il linguaggio derivato da Visual Basic per creare pagine con tecnologia ASP). Il suo uso non è complesso e tra l’altro – didatticamente parlando – mostra passo passo come avviene una connessione al server. Non è il massimo tuttavia in quanto a produttività del programmatore e per questo, nel lavoro, ci si orienta verso alternative molto più sintetiche come le funzioni offerte da jQuery. Per chi non lo conoscesse jQuery è una libreria che ha reso l’utilizzo di Javascript sintetico ed immediato. E’ riuscito così bene nella sua missione da diventare uno standard de facto nella stesura di pagine web. Infatti Javascript ha cambiato per sempre le vite degli esseri umani con il suo contributo di dinamicità ma il suo codice rischiava presto di diventare prolisso e frammentario. Da un lato ciò ha portato ad una serie di integrazioni con le versioni standardizzate che passano sotto il nome di ECMAScript, dall’altro ha visto l’insorgere di una serie di ottimi strumenti come appunto jQuery, nato nel 2006. Quest’ultimo dato ricorda che è praticamente coetaneo di Ajax e XMLHttpRequest pertanto un destino comune sembrava l’unica strada possibile. La libreria jQuery ha un uso immediato. E’ necessario importarla nei propri progetti in una delle seguenti modalità: 1. Con un download dal sito ufficiale ; 2. Ottenendolo con uno dei vari package manager e affini del mondo Javascript tipo npm, bower o yarn; 3. Integrando una CDN (Content Delivery Network) nel codice delle proprie pagine web. Per chiarezza, ricordiamo che una CDN è una rete di server che rende ampiamente disponibile in Internet delle risorse molto richieste come potrebbe essere jQuery. Esistono servizi che offrono tale funzionalità e molte CDN sono offerte da grossi attori della Rete quali Microsoft e Google. Il loro utilizzo è particolarmente semplice in quanto consiste nell’indicazione di un singolo indirizzo web, quello cui fa capo la CDN per l’appunto. Va riportato in un tag script, nell’intestazione della pagina: ``` … … ``` La libreria jQuery dispone di varie funzioni, molto comode, per gestire chiamate Ajax. Hanno tra loro una serie di aspetti in comune ma un fattore con cui bisogna prendere confidenza subito sono le funzioni di callback. Visto che le chiamate sono generalmente asincrone, riceveremo la risposta non subito ma quando sarà resa disponibile dal server, per questo dovremo indicare a quale funzione recapitare i dati scaricati sia in caso di errore sia di successo. Queste funzioni Javascript che passeremo alle richieste Ajax prendono appunto il nome di callback. Tra gli strumenti messi a disposizione da jQuery possiamo citarne alcuni di maggior rilievo. La generica funzione ajax ammette una serie di parametri per poter perfezionare la richiesta sotto ogni aspetto. Può sembrare meno comoda delle prossime che nomineremo ma sicuramente è adatta ad ogni scopo. Per gestire esplicitamente richieste GET (quando in http leggiamo dati) e POST (quando inviamo dati ad un server per modificare il suo set informativo) possiamo usare rispettivamente le funzioni get e post che essendo chiaramente mirate richiedono meno parametri di ajax. Ancora più istantanea è la funzione load che assolve una delle principali incombenze affidate ad Ajax: scaricare in modalità GET un testo da un indirizzo web (spesso un endpoint delle API REST) per immetterlo immediatamente in un campo HTML della pagina web. » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO AJAX](https://devacademy.it/corsi/ajax-comunicare-nel-web-con-jquery/) « ## Come si inizia? Facilissimo Questa presentazione ha tratteggiato i fattori essenziali di jQuery Ajax: perché esiste, in cosa consiste e come usarlo. Ora non manca che la pratica. Saranno sufficienti un editor di testo, un browser e tanta voglia di scoprire come tutto ciò sia alla portata di chiunque. Le nostre pagine web, inizialmente così statiche, prenderanno vita, impareranno a dialogare con server e riceveranno informazioni costantemente aggiornate. Non solo saranno più intriganti, ma sembreranno acquisire un maggiore interesse in quanto riusciranno immediatamente a raccogliere dati di Borsa, news, oroscopi, previsioni meteo e tanto altro, basterà solo contattare i giusti provider. Nel prossimo articolo vedremo nel dettaglio qualche esempio pratico, nel frattempo, se vuoi approfondire è disponibile un [ percorso di formazione online](https://devacademy.it/percorsi/javascript-developer/) che parte dalle basi di Javascript all’uso completo di Ajax con jQuery. La strada è tracciata, basta seguirla: buono studio! **Categorie:** Ajax, Javascript, jQuery **Tag:** Ajax, javascript, jQuery --- ### [Microbit: cos'è e come si programma?](https://devacademy.it/microbit/) **Published:** Febbraio 17, 2020 **Author:** Giuseppe Maggi **Content:** Hai mai sentito parlare di **Maker**? Probabilmente ti farà pensare a qualcosa di legato all’artigianato, ma in realtà è qualcosa di molto più ampio che si sta legando sempre più al mondo dell’Informatica. Indica – con i suoi derivati – chi si dedica alla programmazione di dispositivi elettronici tipicamente molto piccoli, dalle limitate dotazioni hardware e spesso piuttosto economici che possono essere utilizzati per controllare componenti elettriche o elettromeccaniche ad essi collegate. La definizione è piuttosto generica ma ciò non a caso: un maker può lavorare in qualsiasi ambito e con strumenti assolutamente variegati. Un maker sviluppa su piccole piattaforme elettroniche che con il loro hardware costituiscono veri computer in miniatura. Questi strumenti prendono il nome di board e sono spesso accomunati da una caratteristica: la semplicità di programmazione. Ciò perché piattaforme di questo tipo devono essere adeguate ad informatici ma, ancora più spesso, ad elettronici, appassionati amatoriali ed in maniera crescente a studenti di ogni età. Per mettere d’accordo un’utenza così variegata, ognuna di queste piattaforme può essere programmata in vari modi: con linguaggi tradizionali come il C (vedi [Arduino](https://devacademy.it/arduino-la-guida-completa/)) con strumenti a blocchi dall’utilizzo del tutto visuale fino a versioni apposite di linguaggi maturi come Python. In questa guida, ci concentriamo su una piattaforma molto duttile, pensata per l’approccio alla programmazione per studenti dai 7 anni in su: BBC **microbit**. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## Cos’è microbit La piattaforma [microbit](https://microbit.org/) è stata ideata da BBC, la grande emittente britannica, per offrire un modo economico e facile per avviare tutti gli studenti del Regno Unito allo studio dell’Informatica. E’ un dispositivo molto piccolo (meno del palmo di una mano) e costa molto poco essendo disponibile alla vendita per circa 20 euro. Nonostante ciò ha una struttura piuttosto articolata e diversi componenti visibili su un lato e sull’altro. Osserviamo bene la seguente figura. ![microbit](https://devacademy.it/wp-content/uploads/2020/02/microbit.png) Rappresenta le due facce di una piattaforma BBC microbit: in alto c’è la porzione frontale, in basso il retro. Sulla porzione frontale notiamo: - Un display centrale, l’aspetto più evidente, costituito da 25 led. Si utilizza per l’output più immediato, quello visuale; - Due pulsanti che possono da usare come input, si trovano uno a destra e uno a sinistra del display e sono chiamati A e B; - Sul lato lungo inferiore, vediamo una striscia metallica con dei fori che viene utilizzata per fornire collegamenti a dispositivi elettrici mediante fili. Sulla porzione posteriore si evidenzia la presenza di tutta la componentistica di comunicazione tra cui: - Il connettore al gruppo batterie: queste non sono montate sulla board ma vanno inserite in un apposito contenitore esterno; - Un pulsante di RESET per il ripristino del componente; - Una presa microUSB; - L’antenna per il collegamento Bluetooth Low Energy; - Il sensore di movimento. A livello di risorse di elaborazione, BBC microbit ha a disposizione un processore a 32 bit con core ARM Cortex-M0, 256 KB di Flash ROM, 16 KB di RAM. Quindi, come caratteristiche, microbit appare semplice, ma assolutamente completo. Il suo utilizzo può essere dei più vari. » VUOI IMPARARE A PROGRAMMARE? SCOPRI I NOSTRI [CORSI ONLINE](https://devacademy.it/corsi/) « Innanzitutto lo si può usare come essenziale piattaforma di programmazione. Con pochi step, si può realizzare un programma (con strumenti che vedremo a breve) tramite il proprio computer, caricarlo nella board grazie al collegamento USB e vederlo al lavoro. La disponibilità dei pulsanti A e B e del display di LED costituiscono già di per sé stessi basilari elementi di input e di output che non richiedono nell’immediato dispositivi esterni. Esempi di questo genere potrebbero essere semplici giochi basati sul movimento di puntini, indovinelli e altre forme di interazione dove, oltre a concepire il programma, lo studente sarà chiamato a scegliere le forme di dialogo tra la board e l’utente che la userà. In secondo luogo, si può abbinare alle capacità di programmazione suddette l’utilizzo di sensori e comunicazione bluetooth. In questo caso, si può creare velocemente un telecomando per dispositivi esterni dotati anch’essi di comunicazione Bluetooth. Non si avranno inizialmente molti comandi ma con l’utilizzo dei tasti A e B (la loro pressione congiunta viene rilevata come segnale a sé stante) si potrà decidere le direttive da inviare all’oggetto. Come ulteriore forma si può pensare a programmi che scambino segnali elettrici attraverso i collegamenti e ciò permetterebbe di innestare un esemplare di microbit all’interno di un oggetto a cui sarebbe in grado di fornire intelligenza. Tale contesto potrebbe vedere la board collegata ad elettrodomestici, componenti di domotica e molto altro. In generale, BBC microbit può essere considerato un nuovo contributo alla Internet of Things (IoT), quell’universo di oggetti che, dotati della capacità di rilevare dati e scambiarli, permettono a noi e alle nostre applicazioni di dialogare attraverso la Rete. ## Programmare con microbit Iniziare a lavorare con Microbit è davvero alla portata di tutti. Esiste un ambiente totalmente on-line ideato dalla Microsoft, gratuito e completo: [MakeCode](https://makecode.microbit.org/). Non appena invocata la pagina nel browser si apre la homepage che permette di scegliere tra creare un nuovo progetto o visionare esempi precedenti. Un progetto MakeCode si sviluppa in un ambiente come quello che appare in figura: ![microbit makecode](https://devacademy.it/wp-content/uploads/2020/02/microbit-makecode.png) Come si vede, è un pannello completo per tutto il ciclo di produzione di un’applicazione microbit: - Sulla sinistra c’è un emulatore che attivamente mostrerà i risultati del proprio programma, una volta completato; - La parte destra è dedicata allo sviluppo a blocchi. Con questa modalità si potrà creare dei programmi utilizzando non righe di codice bensì dei blocchi funzionali simboleggianti le possibili operazioni (cicli, input, output, segnali elettrici, costrutti condizionali e via dicendo). L’incastro tra i vari pezzi permetterà di dare spazio alla logica del programma che potrà essere provato, in primis, nell’emulatore e subito dopo scaricato nel dispositivo; - Al centro, vicino all’emulatore, c’è il menu completo dei blocchi che possono essere usati nella programmazione; - In basso a sinistra, è previsto un pulsante che avvia lo scaricamento del programma costruito. Un ambiente così è ideale per chiunque: intuitivo e divertente per i bambini ma completo e funzionante per adulti che non amano scrivere righe di codice. » VUOI IMPARARE A PROGRAMMARE? SCOPRI I NOSTRI [CORSI ONLINE](https://devacademy.it/corsi/) « Comunque l’esistenza di MakeCode non deve far passare Microbit per una sorta di giocattolo. Anche in questa pagina, in alto, si nota uno switch che permette di passare dalla scrittura “a blocchi” all’editor Javascript. Una volta spostato su quest’ultima modalità, inizierà la conversione di ciò che già è stato fatto a blocchi in codice Javascript. Questo ha una doppia utilità: si può vedere in codice cosa rappresentano i blocchi imparandone meglio il valore e si può spostare il lavoro in un ambito più informatico per curare meglio i dettagli della logica. Come abbiamo già detto, microbit dispone di una presa microUSB e con essa, una volta collegato al PC, si potrà passare il programma creato dal computer al dispositivo e vederlo funzionare all’istante. Queste non sono tuttavia le uniche opzioni per programmare con microbit. Una soluzione sempre più interessante si dimostra il MicroPython. Basato su Python 3, è un linguaggio che offre moduli per scrivere programmi per i più diffusi microcontroller. Nel 2013 è nato il supporto [MicroPython per microbit](https://python.microbit.org/v/2.0), ma già da tempo questo linguaggio era usato per le Pyboard, su cui è nato, Arduino e tante altre. ## Conclusioni Quindi si può considerare BBC microbit un’esperienza solo per bambini? Assolutamente no. I maker sono protagonisti del presente e lo saranno ancora di più del futuro: i libri di scuola dei ragazzi sono ormai pieni di esempi di coding con Scratch e programmazione a blocchi, Internet of Things mira ad inserire intelligenza in ogni oggetto e tanti di questi potrebbero essere animati proprio con una piattaforma piccola e compatta come BBC microbit. Inoltre abbiamo visto che i formalismi che impiega sono di assoluta universalità richiamando linguaggi importanti come Javascript e Python: quindi una programmazione di questo tipo completa alla perfezione una formazione professionale maturata in altri ambiti. Iniziare costa pochissimo, se si vuole acquistare microbit, o addirittura niente se lo si vuole studiare direttamente on-line con MakeCode. Questo il primo grande passo per diventare un maker. » VUOI IMPARARE A PROGRAMMARE? SCOPRI I NOSTRI [CORSI ONLINE](https://devacademy.it/corsi/) « **Categorie:** IoT **Tag:** IoT, microbit, microcontroller --- ### [Linguaggio SQL: cos'è e come funziona?](https://devacademy.it/linguaggio-sql/) **Published:** Febbraio 26, 2020 **Author:** Giuseppe Maggi **Content:** Nonostante con i computer si possa fare qualsiasi cosa, sono nati in realtà per compiere un’unica importante missione: espandere la mente umana. O meglio: fare in maniera efficiente, continuata ed instancabile quello che la mente umana non poteva fare negli stessi modi e tempi o con la stessa sostenibilità. Per questo i computer hanno iniziato a svolgere calcoli veloci, esatti e difficili (il concetto del calcolo si trova proprio nell’origine della parola “computer”) e a memorizzare dati. Quest’ultimo ambito si è sviluppato notevolmente e ha cambiato obiettivi e modalità più volte, da quando gli archivi erano contenuti in pochi kilobyte fino all’epoca dei Social Network e dei Big Data in cui ogni secondo vengono scambiati terabyte di dati. Al centro di questa evoluzione un ruolo fondamentale l’hanno svolto i **database**, archivi di dati ben strutturati che possono essere recuperati e salvati in maniera efficiente. In particolare, chi l’ha fatta e la fa ancora da padrone a partire dagli anni Settanta sono l’approccio relazionale ed il **linguaggio SQL**. In questa guida li ripercorriamo incontrandone principi, strumenti e prospettive. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## L’approccio relazionale Quando le tecnologie hardware per la memorizzazione di dati hanno iniziato a dischiudere nuovi scenari, gli approcci fino ad allora seguiti per l’organizzazione fisica dei dati hanno mostrato i propri limiti. Per quello, negli anni Settanta, Edgar F. Codd, ricercatore dell’IBM, ha steso i fondamenti dell’approccio relazionale: i dati sarebbero stati strutturati in più tabelle basate su uno schema rigido. Ogni tabella doveva archiviare per righe (dette record) i dati relativi ad un medesimo tipo di informazione appartenente alla base di dati. Per avere un’idea di come sia fatta una tabella, puoi pensare ad un foglio Excel o di qualsiasi altro programma simile: una griglia di informazioni, insomma. Tra le tabelle, i dati venivano messi in relazione tra loro con l’applicazione di valori collegati dall’una all’altra e questo permetteva di svolgere delle interrogazioni in grado di incrociarli fruttuosamente. In realtà un database è molto molto di più ma questi sono i principi alla base di questi strumenti usatissimi nello sviluppo di applicazioni: dai grandi motori di elaborazione bancari e industriali, alle applicazioni mobile o ai siti Internet. Nonostante siano passati molti anni, tutto ciò ancora vive in software come Oracle, MySQL, SQLite, Access e molti altri. Vive e soprattutto parla, grazie alla sua lingua ormai universale: SQL. ## Il linguaggio SQL Per definire i vari comandi da svolgere su un database è stato pensato un linguaggio molto comodo e sintetico le cui direttive somigliavano a frasi in lingua inglese: **il linguaggio SQL** (Structered Query Language). Il nome stesso del linguaggio contiene il termine query, ormai piuttosto diffuso, che indica un’interrogazione (un’operazione di lettura) da svolgere su un database. Il suo scopo è quello di recuperare dati eventualmente sviluppando il legame stabilito con le relazioni: tali operazioni a tabelle “incrociate” prendono il nome di JOIN. SQL è diventato sinonimo di accesso ai database ed ogni linguaggio di programmazione si è munito nel tempo di strumenti per poter inviare comandi in SQL. Per questo, tale formalismo risulta uno dei più usati al mondo e conoscenza fondamentale per qualsiasi professionista dell’Informatica. Ma quali sono le principali operazioni che possono essere svolte con il linguaggio SQL? » IMPARA A PROGRAMMARE, SCOPRI I NOSTRI [CORSI ONLINE](https://devacademy.it/corsi/) « ## Le operazioni CRUD Con il linguaggio SQL si possono svolgere vari tipi di operazioni: dalla creazione e rimozione del database stesso, a quelle architetturali (creazione, modifica e distruzione di tabelle e altri elementi interni del database) ma soprattutto quelli di elaborazione dati, oggetto di questo paragrafo. Le operazioni fondamentali per la lettura e la manipolazione dei dati in SQL sono di quattro tipologie: - **Create:** inserimento di nuovi dati; - **Read:** lettura, le query di cui abbiamo già parlato; - **Update:** aggiornamento, modifica di dati già presenti nel database; - **Delete:** cancellazione di dati presenti nel database. L’acronimo che si forma con le iniziali dei termini Create, Read, Update, Delete è CRUD ed è diventato il sinonimo – nei database ma anche in altri contesti – dell’insieme delle operazioni che possiamo svolgere su un set di dati. Ad ognuna di queste operazioni, corrisponde uno specifico comando SQL. Gli inserimenti, operazioni di Create, vengono svolte con il comando INSERT. Il comando SQL: ``` INSERT INTO citta (nome, regione, popolazione) VALUES (‘Milano', ‘Lombardia', 1385023) ``` significa che esiste nel nostro database una tabella di nome citta che ha almeno tre colonne denominate nome, regione e popolazione e vi vogliamo aggiungere all’interno una nuova riga in cui queste tre colonne saranno riempite, rispettivamente, con le due stringhe ‘Milano’ e ‘Lombardia’ ed il numero 1385023. Senza scendere troppo nei dettagli tecnici si vede che il comando SQL potrebbe essere letto quasi come una frase in inglese ed il suo significato è piuttosto evidente anche per i meno esperti. Con le query possiamo mettere in pratica le operazioni di READ. Volessimo estrarre da citta tutte le righe potremmo semplicemente dire: ``` SELECT * FROM citta ``` Ovvero “seleziona tutto dalla tabella citta”. L’asterisco indica che vogliamo tutte le colonne ma potremmo richiedere, ad esempio, solo nome e popolazione dei centri abitati: ``` SELECT nome, popolazione FROM citta ``` Anche in questo caso si vede che il comando SQL è piuttosto esplicito e proprio con il SELECT il linguaggio SQL esprime tutta la sua potenza. Si consideri infatti che con l’aggiunta di una clausola WHERE possiamo apporre le condizioni per un filtro indicando quali righe restituire come risultati mentre con il GROUP BY potremmo richiedere di raggruppare le righe in diverse sezioni in base al valore di un particolare campo: questi e poche altre funzioni rendono già il linguaggio SQL un perfetto ambiente di elaborazione dati. La modifica di dati viene svolta con il comando UPDATE. Supponendo ad esempio che nella tabella città fosse stato inserito un valore errato per la popolazione potremmo applicare una modifica dicendo: ``` UPDATE citta SET popolazione = 1385023 WHERE nome='Milano' ``` Ovvero “modifica la tabella citta assegnando il valore 1385023 al campo popolazione a tutte le righe in cui il campo nome è impostato a Milano”. Ciò avverrà presumibilmente su una sola riga ma UPDATE è in grado di modificare alcune o tutte le righe di una tabella in base al criterio impostato dopo il WHERE. Con il comando: ``` DELETE FROM citta WHERE regione='Lombardia' ``` epureremmo dalla tabella tutte le righe in cui il campo regione è impostato a Lombardia e questo sarebbe un esempio di operazione di Delete, la lettera D dell’acronimo CRUD. Come si può immaginare, da studiare ci sarebbe ancora molto ma questi esempi dimostrano come l’approccio concettuale al linguaggio SQL non sia affatto proibitivo: le tabelle in fin dei conti possono essere immaginate in quanto sono una struttura dati piuttosto comune nella nostra vita e SQL si applica perfettamente alla loro modellazione in campi. **VUOI IMPARARE A PROGRAMMARE?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [**SCOPRI I CORSI**](https://devacademy.it/corsi/) | [**ISCRIVITI**](https://devacademy.it/prezzi/) ## SQL come paradigma di gestione dei dati Il linguaggio SQL ha offerto una modalità così chiara di lavorare con i dati ed è così conosciuto che è diventato in breve tempo il modello per antonomasia di accesso ai dati. Ad esempio, per poter svolgere elaborazioni su set di informazioni si possono usare linguaggi di programmazione, framework, tool visuali e molto altro e studiarli non è sempre così semplice. Come si potrebbe spiegare quali sono le operazioni principali da conoscere di uno strumento del genere? Se chi deve impararlo ha già qualche esperienza informatica saprà molto probabilmente SQL quindi quale modo migliore per farlo se non confrontarlo proprio con SQL? Non capiterà raramente che ci si sentirà dire “Hai presente il SELECT di SQL? Ecco nel framework XYZ si fa in questo modo…”. SQL quindi non solo come strumento operativo ma anche come lingua di comunicazione in generale ha in informatica una grandissima valenza. Altro esempio: i servizi web o web service. Sono delle applicazioni che attraverso Internet gestiscono dati e possono essere invocati da programmi esterni (app mobile, siti web, altri web service e via dicendo). Come si chiama il set di operazioni che un servizio web può svolgere? Operazioni CRUD ovvero tutto ciò che nel suo set di dati (molto spesso un database su server) un web service può creare, leggere, modificare e cancellare. Chiunque si troverà a studiare un modello per servizi web diffuso come il pattern REST ne avrà una conferma immediata. Anche questa concezione è diretta discendenza dell’esperienza che nell’Informatica ha fornito SQL. ## Cosa succede ai database oggi? NoSQL e Big Data Alcuni anni fa, è sembrato improvvisamente che il mondo fosse stufo di SQL e che questo non fosse più in grado di soddisfare le sue esigenze. Nasceva il movimento NoSQL, un’ondata concettuale e tecnologica che proponeva alternative efficienti e moderne ai classici database basati sul modello relazionale. Così si sono diffusi alcuni dei database più usati al mondo come MongoDB e Redis che in effetti possono apparire più adeguati per determinati contesti ma che non sono comunque riusciti a superare in importanza i principali sistemi relazionali. Comunque vale la pena specificare che il termine NoSQL non indica un disprezzo totale di SQL bensì un tentativo di superare la concezione relazionale in alcuni punti. Inoltre molti di questi strumenti hanno internamente un linguaggio di interrogazione dati che può considerarsi SQL-like in quanto rispecchia in buona parte la sua sintassi e questo conferma quanto detto nel paragrafo precedente: SQL è considerato il paradigma universale di gestione dei dati. Altra realtà che domina il settore della conservazione e dell’analisi dei dati, è quel grande bacino che risponde al nome Big Data. Questo è un insieme di tecnologie che permettono la gestione di grandi quantità di dati, accumulate ad altissima velocità e contraddistinti da una grandissima varietà. Anche questo non ha fatto dimenticare SQL. Infatti in primo luogo nei progetti Big Data possono essere coinvolti dati provenienti da database sia relazionali che NoSQL. Secondo, SQL ha dato ispirazione a formalismi usati nelle tecnologie Big Data come HiveQL usato nel framework Hive, creato da Facebook, o quello usato con Apache Spark, importante ambiente per Big Data, modulare e altamente performante (nei nostri corsi lo trattiamo nella versione Python, PySpark). ## Quindi serve studiare SQL? Assolutamente sì! Si potrebbe apparire estremisti ma essere un informatico senza conoscere questo linguaggio risulterebbe quasi difficile. Il tuo sito web in PHP gestisce dati? Probabilmente avrai bisogno di salvarli e recuperarli da un database MySQL. La tua app Android conserva informazioni in locale? Dovrai gestire il tuo archivio in un database SQLite. Lavori in un ufficio e vuoi automatizzare le pratiche? La tua suite Microsoft Office offre Access per la gestione di dati: è un database relazionale, permette di conseguenza di impostare vari tipi di query che puoi scrivere da solo nel suo SQL. Insomma, SQL è uno strumento di lavoro indispensabile che permette di gestire dati e aprire la mente per abbracciare nuove esperienze dal NoSQL ai [Big Data](https://devacademy.it/percorsi/big-data-expert/). Studiarlo è semplice e dà soddisfazione molto rapidamente: devACADEMY è il posto migliore per iniziare. » IMPARA A PROGRAMMARE, SCOPRI I NOSTRI [CORSI ONLINE](https://devacademy.it/corsi/) « **Categorie:** Database, SQL **Tag:** database, sql --- ### [Raspberry Pi: cos'è, a cosa serve e versioni disponibili](https://devacademy.it/raspberry-pi/) **Published:** Aprile 10, 2020 **Author:** Giuseppe Maggi **Content:** **Raspberry Pi** è una piattaforma rivoluzionaria che dal 2012 ha dischiuso nuove prospettive per maker di ogni livello e per chiunque voglia **imparare a programmare** senza grandi investimenti. Ha le tipiche caratteristiche ricercate da professionisti ed amatori: costa pochissimo, è completa, piccolissima e facile da configurare. Probabilmente ne avrai sentito parlare se non altro perché esistono libri e riviste dedicate, ha un marchio a forma di lampone molto riconoscibile e sempre più spesso capita di sentire qualcuno che dice “quell’impiantino che mi serviva l’ho fatto da solo.. ci ho messo un Raspberry dentro..”. No, non si tratta di un genio, è solo qualcuno che ha imparato a sfruttare adeguatamente un dispositivo ben concepito e molto duttile. Indipendentemente da cosa ti interessi dell’Informatica e dell’Elettronica, Raspberry Pi può fare al caso tuo: vediamo come. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## Com’è fatto Raspberry Pi? Al di là dei tecnicismi, Raspberry Pi può essere considerato un “computer in miniatura”, un intero ecosistema hardware raccolto in un’unica board. Nasce in Inghilterra per favorire la diffusione della programmazione e della cultura informatica ma il suo incredibile successo ne ha svelato miriadi di altri utilizzi. Considerando la motivazione primaria, appare assolutamente adeguato il motto che campeggia sulla homepage del progetto: “Our mission is to put the power of computing and digital making into the hands of people all over the world” (“La nostra missione consiste nel mettere il potere della programmazione e della creazione digitale nelle mani di persone di ogni parte del mondo”). Questa frase è una sintesi perfetta per raccontare uno strumento che ha favorito il fiorire della creatività nel mondo senza limitazioni politiche, sociali o economiche: strada poi percorsa da BBC micro:bit, altro prodotto inglese. Per assolvere completamente una missione così impegnativa è necessario che il sistema sia il più completo possibile. La figura che segue è il modo in cui la documentazione ufficiale rappresenta uno schema di massima della piattaforma. ![Raspberry Pi](https://devacademy.it/wp-content/uploads/2020/04/Raspberry_Pi.jpg) Ciò che colpisce subito è l’alto livello di connettività. Si vedono cavi Ethernet, HDMI, microUSB, audio ed appare anche una scheda SD che svolge il ruolo di hard disk. Il lato lungo in alto è quasi totalmente occupato da una lunga base nera dotata di dentini: è il GPIO e completa il quadro della connettività offrendo la possibilità di collegamento a molteplici dispositivi elettrici. Per trattare l’hardware in maggiore dettaglio è necessario però orientarsi nel gran numero di versioni che si sono succedute negli anni. » IMPARA A PROGRAMMARE, SCOPRI I NOSTRI [CORSI ONLINE](https://devacademy.it/corsi/) « ### Le versioni di Raspberry Pi Il progetto si è evoluto in fretta negli anni dimostrando grande dinamicità e voglia di adattamento ad ogni contesto e necessità dei suoi utenti. Ogni anno ha visto la comparsa di almeno una nuova versione e, al di là dei singoli dettagli, possiamo accomunarne gli aspetti fondamentali così: - Ogni versione è contraddistinta da un numero, accompagnato da un modello identificato da una lettera maiuscola (A o B) e in alcuni casi dal simbolo +. Versioni esistenti di Raspberry Pi sono, ad esempio, la 2 model B o la 3 model A+, la Pi 4 model B, tutti gli altri riferimenti seguono questo formato; - Trattandosi di un computer, necessariamente ogni versione contempla un SoC (System-on-a-chip), una CPU la cui velocità non è mai stata inferiore ai 700 Mhz, memoria RAM dal mezzo Gigabyte in su nonché almeno una porta USB; - Ciò che distingue una versione dall’altra è l’adozione o meno della connettività di rete (Ethernet o WiFi) e del Bluetooth; - Tutte hanno GPIO a 40 PIN tranne i primi due modelli di Raspberry Pi (1 model A e 1 model B) che l’avevano a 26; - Infine le dimensioni della board sono sempre state ridotte. Possiamo individuare tre principali fattori di forma: Standard, quello nativo, di 85,60 X 56,5 mm; Compact di 65 X 56,5 mm e Zero di 65 X 30 mm. Ad oggi, le famiglie di Raspberry Pi sono cinque, da Raspberry Pi Zero a Raspberry Pi 4 e questa è una panoramica dettagliata in ordine cronologico: - **Raspberry Pi 1** (dal 2012 al 2014), la versione capostipite. E’ stata pubblicata in 4 edizioni (A, A+ e B, B+). Tutte erano accomunate da 700 Mhz di velocità e 512 MB di memoria RAM e nessuna era dotata di rete Wireless e Bluetooth. Le configurazioni A e A+ hanno una sola porta USB e non erano dotate di Ethernet mentre la B+ è arrivata ad avere quattro porte USB e Ethernet 100Base-T. Tutte sono state equipaggiate di SoC BCM2835. Il modello A e B sono le uniche Raspberry Pi non più in produzione mentre il modello A+ è stato il primo a introdurre il fattore di forma Compact; - **Raspberry 2** model B, versione nata nel 2015, è caratterizzata da SoC BCM2836/7, 900 Mhz di velocità ed 1 Gigabyte di memoria RAM. Per quanto riguarda la connettività, consolida i livelli raggiunti da Raspberry Pi model B+ con 4 prese USB, Ethernet 100Base-T senza ancora ottenere Wireless e Bluetooth. Il fattore di forma è Standard; - **Raspberry Zero** è stata forse una delle versioni più innovative. E’ la più piccola di tutte dotata del fattore di forma Zero ma caratterizzata in ogni sua tipologia da 1000Mhz di velocità e 512 MB di RAM nonché SoC BCM2835. E’ stata distribuita in due versioni. La prima, la Zero, nata nel 2015 ha una porta USB, nessun collegamento Wireless, Ethernet o Bluetooth. Può essere considerata un modo economico e poco invasivo di avere tutta l’intelligenza di questa piattaforma in poco spazio seppur rinunciando alla connettività. La seconda generazione, apparsa nel 2017, Raspberry Pi Zero W/WH ha aggiunto wireless di tipo N (802.11n) e Bluetooth 4.1, senza avere Ethernet, aspetto comprensibile date le sue dimensioni ridotte; - **Raspberry Pi 3** (prima comparsa nel 2016, aggiornamento nel 2018) è probabilmente la versione che nella sua evoluzione ha fatto segnare gli incrementi hardware più interessanti. Nel 2016 è nata Raspberry 3 model B: 1200 Mhz di velocità e 1 GB di RAM, 4 porte USB, Ethernet 100Base-T, wireless 802.11n e Bluetooth 4.1. Cronologicamente, è stata la prima versione assolutamente completa da ogni punto di vista. Nel 2018 si è voluto espandere la serie con due modelli: uno Compact ma con qualche ristrettezza hardware, la versione 3 model A+ ed uno più evoluto 3 model B+, anch’esso Standard. Entrambe hanno introdotto importanti innovazioni (1400 Mhz di CPU, wireless non solo di tipo N ma anche AC, Bluetooth alla versione 4.2) ma mentre il tipo A+ era più piccolo (fattore di forma Compact, niente Ethernet e RAM ancora a mezzo Gigabyte), sul modello B+ è stato dato il meglio montando anche Ethernet, portato a 1000Base-T, 1 Gigabyte di RAM e 4 porte USB; - **Raspberry Pi 4** model B (anno 2019) ha espanso ulteriormente le risorse della piattaforma portando 1500 Mhz di velocità di CPU, 2 porte USB2 e 2 USB3, Ethernet 1000Base-T, wireless 802.11ac/n e Bluetooth 5.0. Esiste in tre allestimenti, tutti con chipset BCM2711 e fattore di forma Standard, ma differenziati dalla quantità di RAM: 1 GB il primo, 2 GB il secondo e, per finire, 4 GB il terzo. » IMPARA A PROGRAMMARE, SCOPRI I NOSTRI [CORSI ONLINE](https://devacademy.it/corsi/) « ## Iniziare ad usare Raspberry Pi Per iniziare ad utilizzare Raspberry Pi (se non ne hai ancora uno puoi acquistarlo [cliccando qui](https://amzn.to/3O7jJdp)) abbiamo bisogno di tutto ciò che applicheremmo ad un computer “tradizionale” ed in particolare due categorie di elementi: periferiche e sistema operativo. Per quanto riguarda le periferiche, il minimo indispensabile consiste in: - Scheda SD; - Monitor e cavo HDMI; - Mouse e tastiera; - Alimentatore da 5V e 2A di corrente. Tutto ciò è fondamentale per il primo approccio al sistema e la sua configurazione nonché un ordinario utilizzo in stile PC. Il discorso cambia in base al progetto in cui coinvolgiamo la piattaforma: a quel punto potrà essere necessario hardware diverso. Esistono una grande varietà di sensori e strumenti che vi possono essere collegati per interazioni multimediali, gestione dell’input e molto altro. A titolo di esempio, si pensi al monitor. Un comune monitor da PC è perfetto per l’utilizzo generico di Raspberry Pi ma esistono su questo punto alternative quali display di poche righe solo per mostrare rapidi messaggi o touchscreen di almeno 7 pollici per la gestione stile tablet. Per far funzionare bene insieme questo ricco hardware è necessario un sistema operativo che faccia da collante. Esistono distribuzioni Linux per lo più di famiglia Debian/Ubuntu già predisposte per essere installate sulla SD di Raspberry. Se ne può avere una panoramica sulla pagina Downloads del sito ufficiale del progetto (). Vengono messe in bella vista due soluzioni: Raspbian e NOOBS. Raspbian è il Linux “ufficiale” per Raspberry mentre NOOBS è un installer – consigliato soprattutto per i principianti – che offre un modo comodo per installare il proprio sistema operativo. NOOBS contiene due soluzioni già pronte, Raspbian e LibreElec, per l’installazione offline, ma propone anche ulteriori soluzioni da scaricare attraverso Internet. Se si preferisce un’alternativa più leggera esiste anche NOOBS Lite che procede in ogni caso all’installazione via Rete. Tra le possibilità di approccio, può risultare comodo acquistare una scheda SD con NOOBS preinstallato all’interno. » IMPARA A PROGRAMMARE, SCOPRI I NOSTRI [CORSI ONLINE](https://devacademy.it/corsi/) « ## Programmare con Raspberry Quando tutto è pronto, si può iniziare a lavorare. Ma come possiamo utilizzare Raspberry? In generale, servono strumenti che siano ottimizzati per questa piattaforma e che offrano anche librerie per l’interazione con i vari aspetti di comunicazione elettrici ed elettronici. Quest’ultimo aspetto è di assoluto rilievo anche perché nonostante sia un vero e proprio computer, Raspberry Pi svolge un ruolo da protagonista nell’integrazione in progetti elettronici e di IoT per conferire connettività ed intelligenza anche ad oggetti comuni. Le distribuzioni per Raspberry Pi offrono diversi linguaggi per la produzione di software: da Java a C/C++, passando per Scratch, fino a Python. La community di sviluppatori Python si è dimostrata molto interessata a questa board tanto da produrre e distribuire diverse librerie specifiche per l’interazione con il suo hardware. Questo fattore, unito alla duttilità e semplicità del linguaggio, ha reso Python una delle soluzioni più apprezzate e studiate per questo genere di programmazione. ## Conclusioni Curioso di provarlo? In effetti, Raspberry Pi è una di quelle cose che non può lasciare indifferenti. Attrae i maker ed i docenti, i curiosi ed i genitori in cerca di hobby intelligenti per i propri figli, ma in fin dei conti può lavorare ormai come un PC, occupando uno spazio minuscolo e costando praticamente niente. Un altro modo insomma per sperimentare facilmente una nuova tecnologia richiesta nel mondo del lavoro. Solo qualche base di programmazione e si può iniziare. Non ne hai? Nessun problema, i nostri corsi esistono apposta. » IMPARA A PROGRAMMARE, SCOPRI I NOSTRI [CORSI ONLINE](https://devacademy.it/corsi/) « **Categorie:** Raspberry Pi **Tag:** Raspberry Pi --- ### [jQuery Ajax: le funzioni](https://devacademy.it/jquery-ajax-le-funzioni/) **Published:** Aprile 15, 2020 **Author:** Giuseppe Maggi **Content:** jQuery ha avuto il merito di rendere immediato tutto ciò che serve allo sviluppo web. Se hai provato a studiare un po’ di argomenti al riguardo, non puoi non aver notato Javascript nel lato client. Non è un linguaggio difficile, è sicuramente divertente e soddisfacente perché ti dà gli strumenti per fare bellissime cose in poco tempo e con pochissimo sforzo. Ma ormai studiare Javascript non sarebbe assolutamente completo senza utilizzare un framework e seppur oggi ne esistano diversi e di più moderni, non puoi non conoscere jQuery. Molti progetti online e librerie ne fanno infatti ancora largo uso. In realtà con il semplice Javascript potresti fare di tutto anche senza utilizzare questa libreria, ma rinunceresti al gusto di fare ancora di più scrivendo ancora di meno. E’ stato così anche per Ajax. L’uso di questa tecnologia è uno dei punti di forza di jQuery: non appena hai iniziato ad usarlo per animare un po’ di componenti visuali dell’interfaccia, il passo subito successivo è quello di utilizzarlo per rendere dinamico il recupero di informazioni dal web. In questa guida, lo guardiamo in dettaglio, concentrandoci sugli aspetti più pratici. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## Ajax e jQuery: cosa cerca lo sviluppatore? Mettiamo subito in chiaro un aspetto: da una libreria che sfrutta Ajax per interagire con i server cosa pretende uno sviluppatore? I punti sono essenzialmente tre: - Recuperare i dati, il lavoro puramente “informativo”. Questo è lo scopo fondamentale della libreria; - Convertire i dati dal loro formato originale: molto spesso gli scambi avvengono in JSON; - Aggiornare l’interfaccia utente. Javascript è una tecnologia che nasce per questo, non lo dimentichiamo, quindi i dati che vengono recuperati in un modo o nell’altro finiscono per la maggior parte a concorrere a questo scopo. Uno degli aspetti più significativi di jQuery Ajax è aver saputo concentrare tutte queste operazioni in pochissima sintassi, ben strutturata e molto comoda. Vedremo qual è la funzione centrale di tali operazioni. E’ la più completa, ma già avrà un aspetto estremamente compatto. Immagina poi che jQuery non si è accontentata realizzando delle funzioni ancora più mirate e abbreviate. » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO AJAX](https://devacademy.it/corsi/ajax-comunicare-nel-web-con-jquery/) « ## La funzione principale jQuery: $.ajax La funzione principale per dialogare con un server dalle pagine web è $.ajax. E’ la più generica in quanto permette di impostare parametri e può essere utilizzata per qualsiasi scopo. Tra gli argomenti di cui necessita ve ne sono due imprescindibili, senza i quali la connessione non può funzionare: - L’indirizzo del server da contattare, il suo URL; - La funzione di callback da chiamare in caso di successo. Ad esempio, se voglio contattare l’URL http://mioservizio.esempio.org, predispongo la seguente invocazione: ``` $.ajax({url: "http://mioservizio.esempio.org", success: function(data, textStatus, jqXHR){ //codice da eseguire in caso di successo } }) ``` Con $.ajax passo un argomento consistente in un oggetto Javascript con due proprietà all’interno: url per l’indirizzo e success per la funzione da eseguire se la chiamata va a buon fine. Gli argomenti di success sono tre anche se l’unico necessario assolutamente in un’operazione simile è il primo, data, che contiene i dati che abbiamo ottenuto in risposta dal server. Gli altri due portano comunque informazioni utili: textStatus è una stringa contenente un messaggio che tipicamente consiste in “success” nel caso in cui l’operazione sia andata a buon fine mentre jqXHR contiene dettagli a proposito della comunicazione intercorsa, ad esempio jqXHR.status equivale al codice di ritorno http (200 se non si sono verificati errori). L’operazione che svolgiamo in questo modo è una lettura, un’operazione GET per dirlo nei termini del protocollo http. Questo perché GET è il valore di default della proprietà type nell’oggetto passato alla funzione $.ajax. Il suo valore può essere ovviamente modificato per svolgere altre operazioni, ad esempio di modifica di dati. In tal caso, svolgeremmo un POST, operazione che nel protocollo http è finalizzata alla modifica del set di informazioni a disposizione del server. Affinchè la funzione $.ajax possa permetterlo dovremo impostare il parametro type a “post” nonché il campo data con i dati da inviare al server per il completamento della modifica: ``` $.ajax({ url: 'http://mioservizio.esempio.org', dataType: 'text', type: 'post', data: , success: function( data, textStatus, jQxhr ){ // codice da eseguire in caso di successo }, error: function( jqXhr, textStatus, err ){ // codice da eseguire in caso di successo } }) ``` In questo stralcio, si vede anche la proprietà error, utilizzabile in ogni caso in $.ajax, cui si assegna la funzione da eseguire al posto di success in caso di errori. » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO AJAX](https://devacademy.it/corsi/ajax-comunicare-nel-web-con-jquery/) « ## Versioni abbreviate della funzione jQuery $.ajax Considerando che il gran numero di parametri che permette di usare $.ajax è sovrabbondante rispetto alle tipiche esigenze del programmatore e che jQuery come un po’ tutto il mondo javascript mira alla produzione di programmi sintetici, esistono delle versioni abbreviate della funzione $.ajax che hanno ognuna uno scopo molto mirato e richiedono un minimo numero di parametri. Ecco le principali. La funzione $.get è una richiesta in lettura al server che richiede solo l’indirizzo da contattare e la funzione per gestire il successo dell’invocazione: ``` $.get("http://mioservizio.esempio.org", function(data, textStatus, jQxhr){ // codice per la gestione dei dati ottenuti }) ``` Esiste anche un’altra versione specializzata nell’interpretazione del formato JSON, $.getJSON, che impone un utilizzo molto simile alla precedente: ``` $.getJSON("http://mioservizio.esempio.org", function(data, textStatus, jQxhr){ // codice per la gestione dei dati ottenuti }) ``` La versione più compatta per la lettura di dati da un server è però probabilmente load. Questa funzione risolve un problema comunissimo in ogni pagina web: caricare un contenuto da un server direttamente come all’interno di un elemento HTML. Ecco come si fa: ``` $( **Categorie:** Ajax, Javascript, jQuery **Tag:** Ajax, javascript, jQuery --- ### [HTML: cos'è, a cosa serve e come funziona?](https://devacademy.it/html-cose-a-cosa-serve-e-come-funziona/) **Published:** Maggio 20, 2020 **Author:** Giuseppe Maggi **Content:** Se pensiamo al web e a tutto quello che ci offre oggi, di cui non possiamo praticamente più fare a meno, lo dobbiamo molto all’**HTML**, un linguaggio nato nei primi anni 90, grazie al quale è possibile creare le pagine web che ci permettono di essere connessi con il mondo e di usufruire di infiniti servizi online. Ma **cos’è HTML? A cosa serve esattamente e come funziona?** Se hai mai provato a studiare qualcosa a proposito di sviluppo di siti Internet o applicazioni web in genere, cercando di capire come creare anche solo un semplice sito web, avrai sicuramente incontrato durante la tua ricerca il termine **HTML**, magari associato ad altri termini come CSS, javascript o qualche linguaggio di programmazione “lato server” come ad esempio PHP. Nonostante siano tanti i termini che puoi aver incontrato durante la tua ricerca, e di conseguenza tante sono le tecnologie che interessano il mondo del web, imparare l’**HTML** è il primo passo da compiere se vuoi imparare a creare siti web e viene considerato, in genere, la parte più “facile” di uno studio simile in quanto ha una sintassi abbordabile, non è criptico come il CSS e non essendo un vero e proprio linguaggio di programmazione non richiede logica da programmatori come Javascript e PHP. Ok, è vero che non sia così complesso, ma ha un’importanza fondamentale nel panorama dell’Informatica e questa guida vuole metterlo bene in evidenza sottolineando la validità che può avere la sua conoscenza nell’arricchimento della tua professionalità. Iniziamo quindi a conoscerlo meglio. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## HTML agli albori del Web Il Wold Wide Web o WWW, come spesso si dice, è così diffuso e coincide così tanto con l’idea che l’utente ha di Internet che le loro identità vengono spesso confuse. Ciò è assolutamente errato. Internet è la cosiddetta “rete delle reti”, una via di comunicazione intricata e gigantesca che permette di offrire qualsiasi tipo di servizio. Affonda le sue radici verso la metà del secolo scorso e nasce come una forma di contatto tra pochi centri di ricerca degli Stati Uniti. Insomma, Internet può essere pensata come una sorta di gigantesca rete stradale dei dati che copre il pianeta intero. Il WWW è invece un’applicazione che viaggia su Internet, la sua applicazione principale se vogliamo essere precisi, nata nel 1989 ad opera di una delle maggiori personalità dell’Informatica di oggi e di sempre: Tim Berners-Lee. Questi, dai laboratori presso il CERN di Ginevra, propose un progetto di condivisione di ipertesti basato sul protocollo http ed il formato **HTML** (HyperText Markup Language). Gli ipertesti sono, in generale, quello che oggi chiamiamo pagine Web ovvero dei documenti che, oltre a contenere testo, sono in grado di offrire contenuti multimediali quali suoni, video, immagini, animazioni e link ad altre pagine e risorse. Per poter diffondere questi ipertesti serviva però preparare un insieme di strumenti. Era necessario che: - dei server li offrissero, macchine più potenti di computer normali che, collegate in rete, mettessero a disposizione di tutti tale tipo di contenuti; - sui computer degli utenti fossero disponibili programmi in grado di contattare il server, ricevere l’ipertesto e visualizzarlo in una forma di consultazione gradevole per l’essere umano. Questi software non erano altro che i browser; - esistesse un protocollo di comunicazione, basato sull’infrastruttura di Internet, che permettesse un efficiente e affidabile spostamento degli ipertesti dal server al browser. Questo è http (Hypertext Transfer Protocol, appunto il protocollo di trasferimento degli ipertesti); - fosse definito infine un formato in cui gli ipertesti venissero scritti, in grado di distinguere il testo, dalle immagini e dagli altri contenuti multimediali. Questo formato era proprio HTML. » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO HTML](https://devacademy.it/corsi/introduzione-a-html-e-css/) « Quindi HTML sin dall’inizio ricoprì un ruolo fondamentale nel WWW, ruolo in cui venne affiancato da altri formalismi quali CSS ed i vari linguaggi, senza perdere la sua importanza. Cosa eccezionale fu che, nonostante nei decenni Internet cambiasse così tanto vedendo la nascita di motori di ricerca, e-commerce, Social Network ed altro, HTML cambiò molto lentamente richiedendo sedici anni per passare dalla sua versione 4.01, quella con cui il WWW conquistò il mondo, alla versione 5, pubblicata nel 2014. Quale ne fu il motivo? Probabilmente, non è da individuare nella pigrizia di chi avrebbe potuto aggiornarla, ma in una sua completezza originaria piuttosto avanzata rispetto a quella che era la sua mission. Entriamo ora però nei dettagli tecnici. ## Com’è fatto HTML? Innanzitutto, HTML non è da considerare come un linguaggio di programmazione pertanto in HTML non ci si programma, e questo rende il suo studio davvero semplice e alla portata di tutti. Possiamo considerarlo un formato di marcatura dei contenuti e ottimi professionisti che lo usano in qualità di web designer non sono affatto programmatori. Per vedere come è fatto HTML, basta aprire una comune pagina web, fare click con il tasto destro del mouse e selezionare una voce che tutti i browser hanno (“Visualizza sorgente pagina”, “HTML” o simili) che serve a mostrare il sorgente HTML della pagina. Se provate a visualizzare ora l’html ad esempio di questa pagina non spaventatevi, è davvero più semplice di quanto si possa credere a prima vista. Il fatto che si possa vedere l’HTML di qualsiasi pagina a piacimento dimostra subito una cosa: l’HTML che costituisce una pagina è pubblico proprio perché deve viaggiare sulla comunicazione http e passare dal server al browser. Questo succede anche per CSS e Javascript e tutto ciò che costituisce il “lato client” o se vogliamo il “front-end” di un’applicazione o di un sito web. Affinché il browser interpreti questi contenuti deve possederli fisicamente e non vige alcuna regola di riservatezza perché non possa mostrarli all’utente. Il discorso cambia per PHP ed il resto del codice “lato server” o “back-end” che viene eseguito sul server e con la sua elaborazione produce buona parte di HTML inviato al client. Sicuramente il contenuto HTML che appare in questo modo nel browser non è molto comprensibile: si tratta spesso di pagine professionali pertanto piuttosto complesse. Per questo motivo, per capire com’è fatto HTML conviene partire da esempi iniziali più facili al fine di familiarizzare con la sua sintassi. » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO HTML](https://devacademy.it/corsi/introduzione-a-html-e-css/) « ## HTML: primo esempio Vediamo quindi subito un esempio di HTML. Questa è una pagina web, scritta utilizzando appunto il linguaggio HTML molto basilare: ``` Prima pagina Web Benvenuti! Questo è un esempio molto semplice di HTML ``` Per vedere cosa questo codice produce possiamo scrivere in un qualsiasi editor di testo il codice e salvarlo quindi in un file con estensione .html ed aprirlo infine con un browser per ottenere quanto mostrato in figura: ![](https://devacademy.it/wp-content/uploads/2020/05/esempio-pagina-html.jpg) **Attenzione al formato del file.** Se scrivete il codice all’interno di un qualsiasi editor di testo, come ad esempio il classico Blocco note di Windows, di default il vostro file verrà salvato con un’estensione di testo (es. .txt) occorre far attenzione quindi a salvare il file con estensione .html, non basta inserirlo nel nome, altrimenti potreste trovarvi ad avere un file di questo tipo *nome\_file.html.txt* che di fatto è un ancora un file di testo, ma dovrete creare proprio un file HTML, ovvero *nome\_file.html*. Può essere comodo aver attiva sul proprio computer la visualizzazione delle estensioni dei file in modo da verificare quale sia effettivamente il formato del file salvato Il formato HTML si distingue per le notazioni a tag come ad esempio ``` ``` Questo è il tag h1 ed è contenuto tra le parentesi uncinate < .. >. Un linguaggio che usa questo tipo di notazioni prende il nome di linguaggio a tag. I tag non vengono mostrati nel browser ma sarà visibile solo l’effetto che essi producono nei contenuti. Ad esempio ``` ``` crea un titolo, un testo più grande ed evidenziato, mentre ``` ``` è un paragrafo di testo normale. Osservando la figura, infatti, puoi notare la differenza che c’è tra il modo in cui appare “Benvenuti!” e l’aspetto di “Questo è un esempio molto semplice di HTML”. Il codice: ``` Benvenuti! ``` compone un nodo che inizia con il tag di apertura: ``` ``` e finisce con il tag di chiusura: ``` ``` Un tag di chiusura è uguale a quello di apertura, ma contiene come secondo carattere uno slash (/). L’espressione “Benvenuti!” è il contenuto del nodo. Oltre ai contenuti, un tag può contenere degli attributi come ``` ``` che include un attributo charset il cui valore è impostato a UTF-8. La struttura di una pagina HTML, sommariamente, è concentrica nel senso che è composta da più strutture, annidate l’una nell’altra. Il documento inizia con l’espressione ``` ``` e subito dopo vede un tag di apertura ``` ``` Nota che tale tag viene chiuso all’ultima riga da ``` ``` in fondo alla pagina, pertanto potremmo dire che l’intero documento è il suo contenuto. Internamente a vi sono due sezioni fondamentali: ``` e ``` La prima contiene le intestazioni, una serie di configurazioni, per così dire, della pagina nel suo complesso. Ad esempio, il nodo: ``` ``` contiene: ``` Prima pagina Web ``` ed infatti se guardi in alto nella figura il titolo della scheda è impostato proprio a “Prima pagina Web”. Il blocco: ``` ``` contiene tutto ciò che è destinato a costituire ciò che l’utente vedrà ed utilizzerà della pagina web quindi proprio qui si focalizzerà il grosso del lavoro del web designer. » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO HTML](https://devacademy.it/corsi/introduzione-a-html-e-css/) « ## Come studiare HTML Da studiare nel linguaggio HTML c’è ancora molto oltre a questi concetti di base e fortunatamente il nostro sito offre tutte le informazioni necessarie. Molto importante però è tenere presente che HTML da solo non basta. Se si vuole diventare creatori di pagine web è necessario, almeno, affiancare a questo lo studio di CSS e framework collegati. Negli anni, ad HTML è stato lasciato il ruolo importantissimo di fornire un’architettura alla pagina ed un significato alle sue componenti: cosa ne costituisce una sezione; cosa ne rappresenta un contenuto; qual è il suo header e il suo footer, etc. Tutti i tag dedicati per lo più alla formattazione dei contenuti come colori, stile ed evidenziazioni sono stati rimossi o sono caduti in disuso in quanto l’aspetto esteriore degli elementi è affidato ai CSS. Questa è la tecnologia dei cosiddetti fogli di stile, un insieme di regole applicate ai tag, che entrano in funzione una volta che il foglio è associato ad una pagina HTML. Il vantaggio dell’uso dei CSS è fondamentale in quanto uno stile può essere associato facilmente a più pagine e su di queste modificato uniformemente. Pertanto, HTML e CSS costituiscono la base per realizzare le pagine web e, se vuoi cimentarti un po’ con la programmazione, studiando Javascript ed i framework su di esso basati come Vue.js, React o Angular potrai diventare un completo realizzatore di interfacce utente per siti Internet. » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO HTML e CSS](https://devacademy.it/corsi/introduzione-a-html-e-css/) « **Categorie:** HTML **Tag:** HTML --- ### [Docker: cos'è, a cosa serve e come funziona?](https://devacademy.it/docker-cose-a-cosa-serve-e-come-funziona/) **Published:** Maggio 22, 2020 **Author:** Giuseppe Maggi **Content:** Mentre guardi video su Netflix o ascolti musica su Spotify, ti sei mi chiesto quanti altri nel mondo stiano facendo la stessa cosa in quel preciso istante? Sarebbe un pensiero stimolante non solo da utente ma anche da programmatore! Ti farebbe riflettere sulla mole di dati che le applicazioni gestiscono, sull’intensità dei loro flussi real-time e sul carico di lavoro che schizza alle stelle nei momenti di picco. Ciò, al giorno d’oggi, significa una sola cosa: la progettazione di sistemi software ha bisogno di flessibilità e scalabilità. In pratica, ha bisogno di tutto ciò per cui le tecnologie a container sono nate. In questa guida parliamo proprio di questo e soprattutto di **Docker**, la soluzione leader in questo ambito. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## La crisi del monolite Nei decenni che hanno reso lo sviluppo software un bisogno impellente per la società – parliamo degli anni Ottanta e Novanta – si sono affermate due pratiche assolutamente necessarie: - La programmazione orientata agli oggetti, lanciata in grande stile dal C++ ma adottata poi praticamente da ogni linguaggio; - La realizzazione di applicazioni sempre più grandi con una struttura che oggi viene chiamata – in senso un po’ dispregiativo – monolitica. La programmazione orientata agli oggetti permetteva di organizzare al meglio la rete di informazioni gestita dall’applicazione. In maniera, potremmo dire, piramidale i dati costituivano oggetti, questi venivano collegati in strutture dinamiche le quali a loro volta entravano a far parte di aggregazioni più grandi. Ciò permetteva di inglobare in maniera organizzata funzionalità che via via venivano richieste. Un approccio di questo tipo, oltre a tutti i risultati che l’Ingegneria del Software aveva portato, offriva la possibilità di realizzare grandi piattaforme di lavoro che con l’avvento di Internet potevano essere raggiunte attraverso la Rete offrendo servizi ovunque. Da un punto di vista progettuale però la struttura a monolite regnava. Si finiva per creare software a corpo unico che accedevano all’esterno, per lo più, solo per attingere a fonti dati quali database, file, archivi di vario genere ma per il resto tendevano a conservare al proprio interno ogni funzionalità. Il monolite venne messo in crisi dai tempi e dalle necessità che la crescente informatizzazione e diffusione della connettività portavano. Tra i principali svantaggi possiamo individuarne alcuni fortemente accentuati dalle dimensioni crescenti del software: - Difficoltà di manutenzione ed espansione. La modifica o integrazione di una piccola parte del software deve essere applicata ad un programma molto grande garantendo di raggiungere i propri scopi senza intaccare il suo funzionamento complessivo; - Ulteriore problema, legato a quello citato al punto precedente, verte sulle modalità da seguire per mandare in produzione queste modifiche. Se il programma costituisce un servizio on-line, costantemente utilizzato dagli utenti, per poter attivare la modifica generalmente è necessario spegnerlo e riavviarlo. Ciò spesso causa quelle fastidiose interruzioni di servizio che vengono notificate con banner o finestre di dialogo (“Si avvisa che per interventi tecnici il servizio non sarà disponibile dalle ore…”) ed in molti altri casi ciò non è affatto possibile semplicemente perché il servizio non può essere mai arrestato: non pochi committenti si tutelano di fronte a tale evenienza anche a livello contrattuale; - Difficoltà di attuazione di strategie di scalabilità. Si intende per scalabilità la capacità di un sistema di aumentare le proprie risorse nei momenti di picco e, altrettanto importante, ridurle nei momenti di minore carico. Con un monolite, la scalabilità può essere applicata solo a livello di intera applicazione replicandola su più server. Non è possibile infatti “scalare” solo certe funzionalità. Ad esempio, un sistema moderno esposto sul web potrebbe aver bisogno di scalare interfacce utente e gestione di alcune interazioni su database: con il monolite non è possibile, o lo replichi tutto o niente; - I monoliti sono generalmente scritti in un unico linguaggio perché compongono un solo progetto. Sarebbe utile ma problematico, ad esempio, sviluppare alcune parti in Node.js ed altre in Python, qualcosa in Java e – perché no? – un po’ in Microsoft .NET; - Un problema in qualsiasi parte del sistema rischierebbe di bloccarne l’intero funzionamento in quanto un errore nel programma, a seconda del punto in cui si verifica, potrebbe risultare fatale; - La gestione delle risorse non può essere elastica in quanto il monolite funziona come blocco unico e ciò non permette l’attuazione di risparmi in fatto di energia elettrica ma anche di gestione di RAM, connessioni a database, etc.; - Anche l’organizzazione dei team di lavoro non ne risulta agevolata in quanto le varie componenti del progetto collaborano strettamente e alcuni sviluppatori potrebbero aver bisogno di attendere il completamento del lavoro di altri per poter iniziare. Insomma, in generale, i problemi delle applicazioni monolitiche sono ravvisabili nelle loro dimensioni e unicità che impediscono la gestione autonoma delle singole componenti. Tutto ciò trova soluzioni efficacissime nei container e nelle architetture a microservizi. » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO DOCKER](https://devacademy.it/corsi/docker/) « ## Cosa sono i container Un container è un ambiente che crea un contesto completo per l’esecuzione di un’applicazione. Può essere considerato una forma di virtualizzazione, ma a differenza delle macchine virtuali non ha bisogno dell’installazione di un sistema operativo, occupa il minimo spazio indispensabile e non richiede l’allocazione fissa di risorse come la RAM. Un container è basato su un’immagine che rappresenta tutto il suo contenuto e definisce quale applicativo sarà eseguito al suo interno. L’immagine, una volta chiusa, continua a mantenere la sua composizione fissa e da essa potranno essere animati molteplici container: una buona progettazione delle immagini è al centro di qualsiasi strategia di containerizzazione. Facciamo qualche esempio. Ti serve usare dei database MySQL, ma non hai voglia di installare il servizio sul computer? Con una tecnologia a container puoi predisporre o scaricare un’immagine con all’interno tale software ed eseguirla in un container. Vuoi provare un nuovo linguaggio? Sperimentare Node.js, Go, Rust o qualsiasi altro? Idem: scarichi un’immagine e la usi. E così via per qualsiasi altro ambiente ti possa interessare. Allo stesso modo, quando avrai finito di completare la tua applicazione potrai predisporre un’immagine in cui definirai ciò che le occorre per funzionare bene e le risorse di cui avrà bisogno per poi impacchettare il tutto. Da quel momento in poi potrai avviare quanti container vuoi con la tua applicazione in esecuzione. Questo è il funzionamento in generale ma ora andiamo a vedere come questi concetti vengano applicati in Docker. ## Docker: iniziamo a lavorare Docker (https://www.docker.com/) è un prodotto open source, realizzato in linguaggio Go, disponibile in due versioni principali: - Docker CE (Community Edition): gratuito, utilizzabile pienamente come supporto alla containerizzazione; - Docker EE (Enterprise Edition): a pagamento, offre certificazioni e supporto nonché elementi architetturali ideali per soluzioni di grande respiro. Noi ci riferiremo da ora a Docker CE, il più utilizzato dagli sviluppatori per varie ragioni: primo, perché gratuito; secondo, perché piattaforma ricca e completissima per soluzioni professionali anche di livello notevole; terzo, perché contiene elementi fondamentali presenti nella versione EE ed in ogni altra piattaforma basata su Docker. Docker è disponibile in ogni piattaforma. Per Windows e MacOS possiamo installare [Docker Desktop](https://www.docker.com/products/docker-desktop)[Docker Desktop](https://www.docker.com/products/docker-desktop) seppur ponendo attenzione alle caratteristiche hardware e di sistema operativo che richiede. Per Linux, ambiente nativo e adattissimo a Docker, si può procedere con l’installazione del Docker Engine, il motore fondamentale sia mediante pacchetti precompilati disponibili nei repository sia attraverso scaricamento del prodotto. Una volta installato Docker si può iniziare con la creazione di container partendo da una delle tante immagini già esistenti e disponibili nel principale servizio on-line dedicato alla loro distribuzione: [Docker Hub](https://hub.docker.com/)[Docker Hub](https://hub.docker.com/). » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO DOCKER](https://devacademy.it/corsi/docker/) « Il primo strumento per l’invio di comandi a Docker è il suo tool da riga di comando. E’ necessario prenderci confidenza sin da subito e Docker Hub mette a disposizione un modo velocissimo per farlo: l’immagine hello-world (https://hub.docker.com/\_/hello-world) che già dal nome presuppone il suo ruolo di “esempio zero” di questa tecnologia. Basta aprire l’interfaccia da riga di comando del proprio sistema (terminale, Prompt dei comandi, shell o in qualsiasi modo si chiami nella macchina che stiamo usando) e digitare: ``` $ docker run hello-world ``` Il risultato sarà una serie di righe contenenti, tra l’altro, un saluto di benvenuto, alcune indicazioni di massima nonché indicazioni per ulteriori prove: questa è la dimostrazione che Docker è stato installato correttamente. Alla prima riga di output, probabilmente Docker riporterà il messaggio “Unable to find image ‘hello-world:latest’ locally” la quale suona un po’ come un errore ma in realtà sta dicendo semplicemente che, visto che non possediamo ancora in locale l’immagine hello-world con tag “latest”, Docker l’ha dovuta scaricare da Docker Hub per poterla eseguire. Il comando “docker” visto in precedenza è il client da riga di comando di cui dicevamo tramite il quale potremo veicolare tutte le direttive per la gestione delle immagini e dei container. Viene seguito in genere da una parola chiave che specifica un’azione – in questo caso run ma ne esistono molte altre –, dal nome dell’oggetto sui cu si applica (qui l’immagine hello-world) e da una serie di opzioni a seconda dei casi. Altro esempio super-rapido è l’avvio di un’immagine che contenga un sistema di programmazione. Proviamo a farci avviare Node.js senza averlo installato nel sistema: ``` $ docker run -it node ``` Viene in questo modo scaricata ed eseguita l’immagine node, ufficiale per Node.js, e lanciata in modalità interattiva ovvero in ascolto per ricevere i comandi dell’utente. Avremo così una console in cui poter digitare direttive Javascript: ``` $ docker run -it node > console.log(‘Ciao Node.js!’) Ciao Node.js! > a = 5 5 > b = 6 6 > somma=a+b 11 > .exit ``` Tutte le righe che iniziano con il simbolo > compongono la sessione di lavoro in Node.js all’interno del container e, al termine, con .exit abbiamo chiuso l’interazione con questo ambiente: ciò pone anche fine all’esecuzione del container stesso riportandoci alla console del sistema operativo. » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO DOCKER](https://devacademy.it/corsi/docker/) « ## Applicazioni multi-container, orchestrazione e microservizi I container nascono per lavorare insieme e collaborare tra loro. L’abbandono del monolite porta inesorabilmente alla creazione di architetture a microservizi dove ogni porzione del software viene sostituito da un container che la interpreta. Con un approccio simile, l’applicazione diventa la composizione di una moltitudine di nodi che dialogano tra loro portando al superamento di tutti i limiti che il monolite presentava: - Si può modificare e integrare codice frequentemente, anche a distanza di pochi giorni, modificando il singolo container e ricaricandolo; - Il riavvio di un container non richiede l’interruzione del servizio; - La scalabilità è applicata a livello di container pertanto possiamo ridondare in caso di necessità le porzioni applicative più nevralgiche in una data situazione. I moderni sistemi in Cloud devono saper fare tutto ciò in maniera automatica rendendosi conto delle evoluzioni del carico di lavoro. Si parla in tali casi di autoscaling; - Ogni container può essere sviluppato in un linguaggio diverso infatti il collante che li unirà sarà un dialogo secondo protocolli standard di rete, molto spesso API REST, neutre rispetto alle singole tecnologie. Il primo step per rendere un’applicazione multi-container sarà imparare la sintassi di Docker Compose, un tool che con un semplice file in formato YAML sarà in grado avviare insieme e secondo determinate politiche una serie di servizi interpretati da vari container. Per installazioni di dimensioni molto estese, si passa poi all’orchestrazione dove più nodi Docker mettono a disposizione i propri container per creare reti sempre più articolate di componenti applicative. Le principali soluzioni di orchestrazione sono Swarm, nativo e sempre disponibile in Docker, e Kubernetes, ideato da Google e affermatosi con forza in ogni scenario. Nomi di questo genere sono ricorrenti in tutte le piattaforme Cloud che offrono – ormai è doveroso – la possibilità di realizzare applicazioni distribuite su più container. ## Conclusioni Docker ormai è un passaggio obbligato nelle situazioni applicative ed è uno strumento che può arricchire molto il bagaglio culturale di un programmatore. E’ un mondo a parte, ricco di concetti particolari, ma non bisogna farsi spaventare perché è perfettamente abbordabile, interessantissimo, gratuito e si rende utile sin dai primi momenti di utilizzo. Una volta conosciutolo, non si installerà mai più un database, un linguaggio o un tool solo per provarlo: si cercherà un’immagine su Docker Hub e la si avvierà. Rotto il ghiaccio poi, poche righe di Docker Compose permetteranno di avviare ambienti di lavoro più articolati composti da più elementi. Si avranno così conoscenze importanti, acquisite in pochissimo tempo: basterà qualche ora di studio dei nostri videocorsi. » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO DOCKER](https://devacademy.it/corsi/docker/) « **Categorie:** Docker, Tools **Tag:** Docker, tools --- ### [Javascript substring: come estrarre caratteri da una stringa](https://devacademy.it/javascript-substring-come-estrarre-caratteri-da-una-stringa/) **Published:** Novembre 5, 2020 **Author:** Giuseppe Maggi **Content:** Le stringhe sono probabilmente uno dei principali vettori di dati nei programmi, soprattutto per la loro capacità di veicolare qualsiasi informazione esprimibile o convertibile in caratteri. Per tale motivo, vengono molto spesso sottoposte ad interpretazione (tecnicamente, parsing) per poterne sfruttare adeguatamente il contenuto. Una delle principali attività da svolgere a riguardo consiste nell’estrazione di porzioni di esse in base alla posizione dei caratteri ed in Javascript ciò prende corpo con due funzioni che in questo post andiamo ad analizzare: **substr** e **substring**. Esse hanno la medesima finalità, ma portata a termine in due modi differenti che non vanno confusi pena la produzione di errori o, peggio ancora, di bug difficili da individuare. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## Javascript substr La forma della funzione substr è la seguente: ``` stringa.substr(inizio, numero_caratteri) ``` dove: - stringa è la stringa su cui eseguire l’operazione; - inizio è la posizione iniziale nella stringa da cui voglio iniziare l’estrazione. Obbligatorio; - numero\_caratteri è il numero di caratteri che vogliamo estrarre. Opzionale, in sua assenza l’intera stringa verrà restituita ## Javascript substring La definizione di substring è invece la seguente: ``` stringa.substring(inizio, fine) ``` dove: - stringa è la stringa su cui eseguire l’operazione; - inizio è la posizione iniziale nella stringa da cui voglio iniziare l’estrazione. Obbligatorio; - fine è la posizione del carattere successivo all’ultimo selezionato con la sottostringa. Opzionale, in sua assenza l’intera stringa verrà restituita Chiariamo subito che le posizioni nelle stringhe vengono conteggiate a partire da zero quindi la stringa “cane” vedrà in posizione 0 la lettera c, nella 1 la a e via dicendo. Se una stringa contiene, ad esempio, dieci lettere non avrà alcuna di esse in posizione 10 in quanto queste saranno identificate dalla 0 alla 9. » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO JAVASCRIPT](https://devacademy.it/percorsi/javascript-developer/) « ## Esempi d’uso di Javascript substring e substr Ecco alcuni esempi, tutti presentati sulla seguente stringa: ``` stringa=”Ciao a tutti" ``` Chiediamo sette caratteri a partire dal secondo: ``` stringa.substr(1,7) ``` e otteniamo: ``` 'iao a t' ``` Gli stessi argomenti in substring: ``` stringa.substring(1,7) ``` restituiscono: ``` 'iao a ' ``` restituendo dal carattere in posizione 1 a quello in posizione 6 (il carattere prima di quanto indicato nel secondo argomento). Senza il secondo argomento entrambe le funzioni restituiscono il medesimo risultato, infatti sia: ``` stringa.substring(1) ``` che: ``` stringa.substr(1) ``` restituiscono tutta la stringa partendo dal secondo carattere: ``` 'iao a tutti' ``` Se forniamo un solo argomento negativo, substr conteggerà i caratteri a partire dal fondo. Infatti: ``` stringa.substr(-5) ``` restituisce: ``` 'tutti' ``` Ovvero gli ultimi 5 caratteri mentre substring considererà l’elemento negativo come 0 infatti: ``` stringa.substring(-5) ``` offre: ``` 'Ciao a tutti' ``` Inoltre, qualora la funzione substring, basandosi sulle posizioni degli elementi, ricevesse un secondo argomento maggiore del primo, si preoccuperebbe da sola di invertirli pertanto le seguenti espressioni: ``` stringa.substring(8,2) stringa.substring(2,8) ``` forniscono il medesimo risultato: ``` 'ao a t' ``` Infine, un ultimo caso spesso utile: se volessimo ottenere solo il primo carattere di una stringa ci basterebbe fornire ad entrambe le funzioni gli argomenti 0 e 1. Sia: ``` stringa.substring(0,1) ``` che: ``` stringa.substr(0,1) ``` restituiscono ``` 'C' ``` **VUOI IMPARARE A PROGRAMMARE IN JAVASCRIPT?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [VAI AL CORSO JAVASCRIPT](https://devacademy.it/percorsi/javascript-developer/) **Categorie:** Javascript **Tag:** javascript --- ### [PHP explode: come funziona ed esempi pratici](https://devacademy.it/php-explode-come-funziona-ed-esempi-pratici/) **Published:** Novembre 6, 2020 **Author:** Giuseppe Maggi **Content:** Una funzionalità molto comoda per chi programma in PHP consiste nel poter suddividere una stringa in un array in base ad uno specifico separatore. Tale attività viene spesso identificata come splitting ed in PHP può essere espressa con la funzione explode. In questo articolo vediamo come con qualche esempio pratico. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) Tale funzione ha il seguente formato: ``` explode(separatore, stringa, numero_porzioni) ``` dove: - separatore è la sequenza di caratteri che useremo per individuare i punti in cui spezzare la stringa; - stringa è l’oggetto che sottoporremo all’operazione; - numero\_porzioni (opzionale) è il massimo numero di elementi che vorremo ottenere. Sottolineiamo ancora che il risultato sarà un array. ## Esempi d’uso di PHP explode Vediamo ora insieme qualche esempio, partiamo dalla stringa: ``` $lista_spesa = "pane, latte, tonno, senape, latte, biscotti, frutta"; ``` separiamo quindi gli elementi in base alle virgole in questo modo: ``` explode(",", $lista_spesa); ``` Ecco cosa otterremo: ``` Array ( [0] => pane [1] => latte [2] => tonno [3] => senape [4] => latte [5] => biscotti [6] => frutta ) ``` un array di sette elementi ognuno dei quali è una porzione della stringa. **VUOI IMPARARE A PROGRAMMARE IN PHP?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [VAI AL CORSO PHP](https://devacademy.it/percorsi/php-developer/) Se volessimo invece, ad esempio, un massimo di tre elementi dovremmo specificarlo con un terzo argomento: ``` explode(",", $lista_spesa, 3) ``` ottenendo quindi: ``` Array ( [0] => pane [1] => latte [2] => tonno, senape, latte, biscotti, frutta ) ``` Notiamo come lo splitting della stringa si sia fermato alla seconda virgola. Ricordiamo infine che se il separatore non è incluso nella stringa, questa verrà restituita per intero come unica componente di un array, infatti: ``` explode(";", $lista_spesa); ``` restituirà: ``` Array ( [0] => pane, latte, tonno, senape, latte, biscotti, frutta ) ``` in quanto il punto e virgola non è presente in $lista\_spesa. » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO PHP](https://devacademy.it/percorsi/php-developer/) « **Categorie:** PHP **Tag:** PHP --- ### [SQL between: selezionare valori all'interno di un range](https://devacademy.it/sql-between-selezionare-valori-allinterno-di-un-range/) **Published:** Novembre 11, 2020 **Author:** Giuseppe Maggi **Content:** Tutto ciò che concerne la selezione di righe da una tabella di un database ruota in genere attorno alla cosiddetta clausola WHERE. Nella sua sintassi possono apparire operazioni di confronto, strutturate eventualmente con operatori logici, ma anche altre parole chiave come ad esempio BETWEEN, con cui possiamo verificare che un valore sia compreso all’interno di un intervallo. Vediamo in questa guida come funziona **SQL between** con qualche esempio. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## SQL between, come funziona? Supponiamo di avere una tabella articoli in cui ogni riga rappresenta un prodotto in vendita ed in particolare la colonna prezzo ne indica il costo in euro. Potremmo selezionare tutti i beni acquistabili con un minimo di 50 ed un massimo di 100 euro con la seguente query: ``` SELECT * FROM articoli WHERE prezzo BETWEEN 50 AND 100 ``` Si tenga sempre presente che entrambi i limiti indicati sono inclusivi pertanto potranno apparire sia i prodotti di prezzo 50 sia quelli di prezzo 100, oltre ovviamente tutti quelli inclusi nell’intervallo. Come si vede l’impiego della sintassi `BETWEEN … AND` ha permesso di evitare l’uso congiunto di due confronti incrociati come: ``` SELECT * FROM articoli WHERE prezzo >= 50 AND prezzo **Categorie:** Database, SQL **Tag:** database, sql --- ### [Python JSON: da JSON a Python e viceversa con loads e dumps](https://devacademy.it/python-json-da-json-a-python-e-viceversa-con-loads-e-dumps/) **Published:** Novembre 13, 2020 **Author:** Giuseppe Maggi **Content:** Il formato JSON è uno dei più diffusi in assoluto nel mondo dei servizi Web nonché nella memorizzazione dei dati in genere. Non poteva pertanto mancare un adeguato supporto in Python, che offre tutte le funzioni necessarie in un modulo denominato json. Vediamo come funziona e cosa possiamo farne in questa guida dedicata a Python json. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## Importare Python json Come accennato per lavorare in Python con il formato JSON occorre utilizzare il modulo Python json e per farlo occorre prima importarlo. Possiamo farlo con: ``` import json ``` Fatto ciò potremo utilizzare per la conversione dei dati, in entrambi i sensi (da e verso JSON) le funzioni loads e dumps. ## Da JSON a Dizionario Python Con la funzione loads, per esempio, importiamo una struttura JSON in un dizionario Python. Il seguente codice: ``` candidato = '{"nome": "Alessio", "cognome":"Rossi","eta":35,"laureato":true}' oggetto_json = json.loads(candidato) ``` produce infatti `oggetto_json` che sarà un normale dizionario Python (struttura dati pienamente uniforme al formato JSON) del quale potremo invocarne le proprietà. Il seguente comando, ad esempio: ``` print(oggetto_json["nome"]+" "+oggetto_json["cognome"]) ``` stamperà: `Alessio Rossi` innestando in una stringa i dati estratti dal JSON. **VUOI IMPARARE A PROGRAMMARE IN PYTHON?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [VAI AI CORSI PYTHON](https://devacademy.it/percorsi/python-developer/) ## Operazione inversa con la funzione dumps Con dumps potremo invece svolgere l’operazione inversa. Se per esperimento provassimo a modificare oggetto\_json in questo modo: ``` oggetto_json["eta"]=42 ``` ed ad esportarlo nuovamente con dumps: ``` in_json=json.dumps(oggetto_json) ``` otterremmo all’interno di in\_json una struttura come questa: ``` { "nome" : Alessio, "cognome" : Rossi, "eta" : 42, "laureato" : true } ``` con il campo eta opportunamente modificato. » VUOI SAPERNE DI PIU’? VAI AI NOSTRI [CORSI PYTHON](https://devacademy.it/percorsi/python-developer/) « **Categorie:** Python **Tag:** Python --- ### [Javascript forEach: eseguire una funzione per ogni elemento di un Array](https://devacademy.it/javascript-foreach-eseguire-una-funzione-per-ogni-elemento-di-un-array/) **Published:** Dicembre 7, 2020 **Author:** Giuseppe Maggi **Content:** Il meccanismo del forEach è una delle modalità più comode in assoluto di gestire cicli su strutture dati. Particolarmente utilizzato in Javascript è tuttavia qualcosa di molto diffuso nei linguaggi di programmazione. Serve ad eseguire la medesima funzione su ogni singolo oggetto appartenente ad una struttura dati come gli array nello specifico caso di Javascript. Vediamo in questa guida come funziona. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## Javascript forEach: come funziona Partiamo dal formato, che è il seguente: ``` array.forEach(funzione) ``` Con array intendiamo la struttura dati da elaborare e con funzione il nome della funzione cui sarà sottoposto ogni suo oggetto. Quest’ultima avrà un formato simile: ``` function funzione(item, index){ … … } ``` e riceverà come primo argomento l’oggetto (item) della struttura dati su cui lavorerà e come secondo la sua posizione in essa (index). Per capire meglio vediamo insieme un esempio. Partiamo da una lista di nomi scritti con lettere maiuscole e minuscole. La percorriamo dall’inizio alla fine stampando in output – in una pagina web – la posizione che il nome ha al suo interno ed il nome stesso convertito interamente in minuscolo: ``` ``` Questo l’output: ``` 0 = silvio 1 = adele 2 = paolo 3 = roberta 4 = simona ``` Come potete vedere dal risultato abbiamo ottenuto esattamente ciò che volevamo, ovvero eseguire la funzione *inMinuscolo* per ogni elemento dell’array *nomi*. **VUOI IMPARARE A PROGRAMMARE IN JAVASCRIPT?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [VAI AL CORSO JAVASCRIPT](https://devacademy.it/percorsi/javascript-developer/) **Categorie:** Javascript **Tag:** javascript --- ### [PHP echo: formato ed esempi per stampare stringhe e HTML in PHP](https://devacademy.it/php-echo-formato-ed-esempi-per-stampare-stringhe-e-html-in-php/) **Published:** Dicembre 17, 2020 **Author:** Giuseppe Maggi **Content:** La funzione PHP echo è probabilmente il primo incontro del programmatore con il codice PHP. Il suo scopo è quello di emettere testo in output dedicato principalmente alla produzione di messaggi ed informazioni per l’utente della pagina web. Trattandosi di output finalizzato per lo più – ma non solo – a pagine Internet può contenere testo semplice e, ancora più spesso, codice HTML. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ### Formato di PHP echo ed esempi Il suo formato è estremamente semplice, richiede solo una stringa da stampare che può essere fornita con o senza parentesi tonde. Le seguenti direttive, ad esempio, forniscono lo stesso risultato: ``` echo("Hello world!"); echo "Hello world!"; ``` Entrambe stamperanno la stringa Hello world! in output: Hello world! In PHP, ricordiamo che si possono utilizzare apici sia doppi sia singoli. Ciò non comporta differenze a meno che non ci siano variabili innestate all’interno della stringa infatti i primi, quelli doppi, producono la sostituzione della variabile con il suo valore a differenza dei secondi, quelli singoli. Ad esempio, supponiamo di avere questa variabile nel codice PHP: ``` $risultato = 100; ``` il comando: ``` echo "Abbiamo ottenuto $risultato" ``` stamperà: Abbiamo ottenuto 100 mentre, quest’altra istruzione, apparentemente molto simile, che si differenzia solo per l’uso dei singoli apici al posto dei doppi: ``` echo 'Abbiamo ottenuto $risultato'; ``` produrrà: Abbiamo ottenuto $risultato Come si vede, in un caso il nome della variabile appare letteralmente mentre nell’altro (il primo) il suo valore è stato incorporato nel testo. » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO PHP](https://devacademy.it/percorsi/php-developer/) « ### HTML nella funzione PHP echo e concatenazione di stringhe Molto spesso nell’uso della funzione PHP echo, come accennato sopra, è possibile incorporare codice HTML che, una volta visualizzato nel browser, verrà formattato secondo il suo contenuto. Se uno script ad esempio contiene: ``` echo "Testo in HTML con parti in grassetto e altre in corsivo"; ``` Il testo mostrato dal browser avrà parti in grassetto ed in corsivo: Testo in HTML con parti **in grassetto** e altre *in corsivo* Considerando che echo non produce il fine riga (o a capo) naturalmente, più sue invocazioni consecutive stamperanno testo sulla medesima riga (senza aggiungere neanche uno spazio). Per ovviare a ciò, qualora non sia il risultato che desideriamo possiamo, in una pagina web, usare il tag HTML ``. Infine, ricordiamo che è possibile concatenare più stringhe in PHP mediante l’operatore punto (.) e ciò può risultare comodo in molti casi. Ad esempio con: ``` $stringa1="Domani abbiamo"; $stringa2="il compito di"; $stringa3="Matematica"; echo $stringa1.' '.$stringa2.' '.$stringa3; ``` otterremo: Domani abbiamo il compito di Matematica » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO PHP](https://devacademy.it/percorsi/php-developer/) « **Categorie:** PHP **Tag:** PHP --- ### [SQL UNION: come concatenare più query](https://devacademy.it/sql-union-come-concatenare-piu-query/) **Published:** Dicembre 18, 2020 **Author:** Giuseppe Maggi **Content:** L’operatore **SQL UNION** permette di concatenare l’output di più query. Risulta molto utile quando vogliamo ottenere un risultato unico da più interrogazioni. La sintassi da utilizzare è molto semplice e vede solo l’elencazione delle query intervallate dalla parola chiave UNION. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ### Esempio d’uso di SQL UNION L’uso dell’operatore SQL UNION, come accennato, è davvero molto semplice, vediamo come poterlo sfruttare con un esempio: ``` SELECT * FROM tabella1 UNION SELECT * FROM tabella2 UNION SELECT * FROM tabella3 ``` Per semplicità in questo esempio abbiamo espresso interrogazioni basilari fondate sull’uso di `SELECT … FROM` ma potremmo arricchirle di ogni altro elemento compatibile come filtri WHERE, raggruppamenti, ordinamenti, ecc. Da tenere in considerazione il fatto che di default, l’operatore SQL UNION aggrega solo gli elementi distinti, volendo è possibile comunque modificare tale comportamento richiedendo come risultato la concatenazione totale degli output usando la sua variante `UNION ALL` in questo modo: ``` SELECT * FROM tabella1 UNION ALL SELECT * FROM tabella2 ``` Come vedete il suo uso è davvero molto semplice. **VUOI IMPARARE A PROGRAMMARE?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [**SCOPRI I CORSI**](https://devacademy.it/corsi/) | [**ISCRIVITI**](https://devacademy.it/prezzi/) **Categorie:** Database, SQL **Tag:** database, sql --- ### [Python list: come funzionano le liste in Python ed esempi pratici](https://devacademy.it/python-list-come-funzionano-le-liste-in-python-ed-esempi-pratici/) **Published:** Gennaio 8, 2021 **Author:** Giuseppe Maggi **Content:** In questa guida parliamo di Python list. Le liste in Python rappresentano una struttura dati sequenziale che memorizza gli elementi in un determinato ordine, ammette duplicati e permette di modificare gli oggetti che contiene. Vediamo come funziona. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## Come creare una lista in Python La creazione di una lista in Python è molto semplice, è possibile farlo semplicemente ponendo il suo contenuto all’interno di una coppia di parentesi quadre, in questo modo: ``` lista = ["Ugo", "Ernesto", "Carolina", "Mario", "Roberta"] ``` Gli elementi non solo saranno stati inclusi nella lista ma saranno anche stati, ognuno, indicizzati mediante la posizione di inserimento conteggiata a partire da zero. Si badi che qui abbiamo utilizzato delle stringhe ma possiamo creare liste di qualsiasi tipo di oggetto. Mediante l’uso delle parentesi quadre potremo accedere ai singoli elementi a specifiche posizioni sia in lettura, che in scrittura, infatti con: ``` print(lista[3]) ``` otterremo in output la stringa “Mario” e potremo sostituirla in questo modo: ``` lista[3]='Gianluca' ``` per ottenere un contenuto della lista di questo tipo: ``` ['Ugo', 'Ernesto', 'Carolina', 'Gianluca', 'Roberta'] ``` Per sapere invece quanti elementi contiene una lista possiamo utilizzare la funzione built-in len. Con il comando: ``` len(lista) ``` otterremo infatti il numero 5. » VUOI SAPERNE DI PIU’? VAI AI NOSTRI [CORSI PYTHON](https://devacademy.it/percorsi/python-developer/) « ## Indexing e slicing In generale, il meccanismo di accesso per posizione a singoli elementi delle liste prende il nome di indexing e diventa anche più flessibile con l’utilizzo di indici negativi con cui potremo indicizzare elementi a partire dalla fine: l’ultimo oggetto incluso nella lista sarà indicato con -1. Ad esempio, con le seguenti espressioni accederemo in entrambi i casi alla stringa Carolina: ``` lista[2] lista[-3] ``` Esiste anche il meccanismo dello slicing, anch’esso altamente diffuso, che permette di estrarre una sotto sequenza indicandone posizione iniziale e finale, come in questo esempio: ``` lista[1:3] ``` che restituisce una nuova lista contenente le stringhe in posizione 1 e 2: ``` ['Ernesto', 'Carolina'] ``` L’elemento in posizione 3 non è stato incluso in quanto l’indice finale indica il primo elemento non incluso nella selezione. Si possono utilizzare anche nello slicing indici negativi infatti la medesima sequenza \[‘Ernesto’,’Carolina’\] può essere ottenuta mediante: ``` lista[1:-2] ``` Nel caso in cui nello slicing non venga incluso uno dei due indici, da quella estremità si otterranno tutti gli elementi disponibili. Ad esempio, con: ``` lista[2:] ``` si ottengono tutti gli elementi dal terzo elemento (posizione 2 conteggiata a partire da 0) fino a fine lista: ``` ['Carolina', 'Gianluca', 'Roberta'] ``` Allo stesso modo, `lista[:2]` restituisce i primi due elementi: ``` ['Ugo', 'Ernesto'] ``` **VUOI IMPARARE A PROGRAMMARE IN PYTHON?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 ## Metodi delle liste Gli oggetti lista comprendono una serie di metodi per la manipolazione del loro contenuto accessibili mediante l’operatore punto (.): - **append(oggetto)**: riceve come argomento un oggetto che aggiunge alla lista; - **count(valore)**: restituisce il numero di oggetti di uno specifico valore; - **insert(posizione, oggetto)**: permette di inserire un elemento nuovo alla lista ma a differenza di append non lo fa in coda, ma nella posizione specificata. Riceve due argomenti: un intero che rappresenta la posizione e l’oggetto da inserire; - **reverse()**: inverte la lista; - **clear()**: svuota la lista; - **extend(lista)**: concatena gli elementi della lista passata come argomento alla lista su cui viene invocato; - **pop(indice)**: rimuove e restituisce l’elemento nella posizione indicata o l’ultimo della lista se questo non è specificato; - **sort()**: ordina la lista; - **copy()**: restituisce una copia della lista; - **index(valore)**: restituisce l’indice della prima occorrenza del valore specificato; - **remove(oggetto)**: rimuove dalla lista l’oggetto passato come argomento. Svolgiamo una veloce sessione di prova in cui sperimentiamo tutti questi metodi. Ogni operazione è accompagnata da un commento che indica il risultato che otteniamo. ``` lista = ['Alessia', 'Alessia', 'Mario', 'Samuele', 'Mario', 'Alessia'] # crea la lista ['Alessia', 'Alessia', 'Mario', 'Samuele', 'Mario', 'Alessia'] lista.append('Giovanni') # aggiunge Giovanni alla lista conta_mario = lista.count('Mario') # conta quante volta appare Mario lista.insert(2, 'Paola') # aggiunge Paola in terza posizione # ['Alessia', 'Alessia', 'Paola', 'Mario', 'Samuele', 'Mario', 'Alessia'] lista.reverse() # inverte la lista che diventa: # ['Alessia', 'Mario', 'Samuele', 'Mario', 'Paola', 'Alessia', 'Alessia'] lista.extend(['Nora', 'Simone', 'Alberta']) # aggiunge in fondo alla lista ['Nora', 'Simone', 'Alberta'] x = lista.pop(2) # rimuove Samuele dalla lista (terzo elemento) assegnandolo a x lista.sort() # ordina la lista in senso alfabetico crescente dove_mario = lista.index('Mario') # trova la prima istanza di Mario (posizione 4 perchè abbiamo ordinato la lista) lista.remove('Alessia') # rimuove la prima istanza di Alessia dalla lista che ora è: # ['Alberta', 'Alessia', 'Alessia', 'Mario', 'Mario', 'Nora', 'Paola', 'Simone'] copia = lista.copy() # crea una copia della lista lista.clear() # svuota la lista ma nell'oggetto copia avremo ancora tutti gli oggetti ``` Come detto nei commenti otterremo alla fine, in lista, una struttura totalmente vuota mentre in copia saranno rimasti tutti gli oggetti che abbiamo salvato durante l’esecuzione del metodo copy. ## Conclusione Come si vede le Python list costituiscono un completo insieme di funzionalità per la gestione di oggetti in sequenza. Saranno fondamentali per la manipolazione di valori di ogni genere e dati veicolati mediante diverse fonti di input. Tuttavia, Python possiede altre strutture dati che permetteranno di gestire situazioni diverse: ricordiamo a proposito le tuple, simili alle liste ma utilizzabili in sola lettura, i dizionari per l’allocazione di valori etichettati con una chiave univoca ed i set che non memorizzano la posizione degli oggetti e pertanto non ammettono duplicati. » VUOI SAPERNE DI PIU’? VAI AI NOSTRI [CORSI PYTHON](https://devacademy.it/percorsi/python-developer/) « **Categorie:** Python **Tag:** Python --- ### [PHP strpos: trova la posizione della prima occorrenza di una stringa in un'altra](https://devacademy.it/php-strpos-trova-la-posizione-della-prima-occorrenza-di-una-stringa-in-unaltra/) **Published:** Febbraio 2, 2021 **Author:** Giuseppe Maggi **Content:** Elaborazioni sulle stringhe sono assolutamente comuni in ogni contesto, soprattutto per il cosiddetto parsing ovvero l’interpretazione dei loro contenuti mediante l’estrazione di informazioni. In PHP, esistono varie funzioni allo scopo, ma una particolarmente comoda è **strpos** utilizzata per individuare la posizione della prima occorrenza di una stringa in un’altra. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) Il suo formato è il seguente: ``` strpos(stringa, sottostringa, inizio) ``` dove: - stringa è il testo su cui vogliamo eseguire la ricerca; - sottostringa è la porzione di testo di cui vogliamo, se presente, individuare la posizione nella stringa; - inizio è la posizione dalla quale partiremo con la ricerca. Parametro opzionale. Vediamo insieme un esempio. La stringa oggetto dell’indagine è la seguente: ``` $stringa="Se la gallina fa l'uovo, non c'è niente di nuovo"; ``` Invocando: ``` strpos($stringa, "uovo"); ``` otterremo come risultato `19` in quanto questa è la posizione, conteggiata a partire da zero, della parola “uovo” in $stringa. Con tale informazione avremo verificato che essa è presente nel testo almeno una volta e ci saremo riservati la possibilità di estrarla o svolgere altre operazioni che la riguardano. Se applicassimo il terzo parametro, ad esempio, con: ``` strpos($stringa, "uovo", 20); ``` faremmo iniziare la ricerca dalla posizione 20 ottenendo come risultato 45 ovvero la posizione della sottostringa “uovo” che fa parte della parola “nuovo”, collocata in fondo alla stringa. **VUOI IMPARARE A PROGRAMMARE IN PHP?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [VAI AL CORSO PHP](https://devacademy.it/percorsi/php-developer/) **Categorie:** PHP **Tag:** PHP --- ### [Javascript replace: sostituire una stringa con un'altra](https://devacademy.it/javascript-replace-sostituire-una-stringa-con-unaltra/) **Published:** Maggio 19, 2021 **Author:** Giuseppe Maggi **Content:** Nell’elaborazione di dati spesso capita di dover sostituire una porzione di stringa con un’altra. In Javascript lo si può fare con il metodo replace che riceve due argomenti in input: - la porzione da sostituire, che eventualmente possiamo indicare con un’espressione regolare; - la stringa con cui effettuare la sostituzione. Vediamolo subito al lavoro. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) Se eseguo il seguente codice: ``` var stringa = "Vado al mare con una mia amica"; var risultato = stringa.replace("al mare", "in montagna"); ``` Otterrò, in risultato, “Vado in montagna con una mia amica” in quanto al contenuto di stringa è stato sostituito “al mare” con “in montagna”. Come accennato all’inizio dell’articolo, come primo argomento potremmo utilizzare un’espressione regolare racchiusa tra simboli di slash. Il seguente codice, ad esempio: ``` var stringa = "Carlotta e Francesca sono amiche da tanti anni, si sono conosciute grazie a Marcella"; var risultato = stringa.replace(/[A-Z][a-z]+/, "NOME"); ``` produrrebbe come risultato “NOME e Francesca sono amiche da tanti anni, si sono conosciute grazie a Marcella”. La stessa espressione regolare individuerebbe anche le parole Francesca e Marcella ma **il comportamento standard di replace sostituisce solo la prima occorrenza trovata**. Se il primo argomento è un’espressione regolare, tuttavia, si può ovviare a questo inconveniente utilizzando il modificatore g che provvede alla sostituzione di tutte le sottostringhe con match positivo. Infatti, il codice: ``` var stringa = "Carlotta e Francesca sono amiche da tanti anni, si sono conosciute grazie a Marcella"; var risultato = stringa.replace(/[A-Z][a-z]+/g, "NOME"); ``` RESTITUIREBBE COME risultato “NOME e NOME sono amiche da tanti anni, si sono conosciute grazie a NOME”. **VUOI IMPARARE A PROGRAMMARE IN JAVASCRIPT?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [PROVA GRATIS IL CORSO JAVASCRIPT](https://devacademy.it/percorsi/javascript-developer/) **Categorie:** Javascript **Tag:** javascript --- ### [SQL COUNT: contare il numero di elementi in una tabella](https://devacademy.it/sql-count-contare-il-numero-di-elementi-in-una-tabella/) **Published:** Luglio 22, 2021 **Author:** Giuseppe Maggi **Content:** Contare il numero di elementi in un database è molto semplice e possiamo farlo utilizzando SQL COUNT. Con la parola chiave COUNT possiamo infatti richiedere il numero di elementi presenti in una singola colonna, nei risultati di una query o in una tabella in generale, specificando se necessario di contare solo gli elementi distinti. Si tratta di una parola chiave fondamentale e di uso comunissimo, vediamo come funziona con un esempio pratico. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) Supponiamo di avere una tabella di nome candidati dove appaiano i dati personali di un certo numero di candidati ad un posto di lavoro. Se volessimo sapere il loro numero complessivo potremmo farlo con: ``` SELECT COUNT(*) FROM candidati ``` Otterremmo così il numero di righe della tabella. In alternativa, possiamo chiedere il numero di elementi presenti in una singola colonna, ad esempio il campo citta, in questo modo: ``` SELECT COUNT(citta) FROM candidati ``` Questo conterebbe tutti i valori presenti contemplando anche quelli ripetuti. A questo ultimo aspetto si potrebbe ovviare con l’uso di DISTINCT, in questo modo: ``` SELECT COUNT(DISTINCT Citta) FROM candidati ``` Se, ad esempio, cento candidati provenissero da 45 città diverse, quest’ultima query risponderebbe 45 mentre, senza il DISTINCT, avremmo ottenuto 100, a patto che per ogni candidato fosse riportato il luogo di origine. **VUOI IMPARARE A PROGRAMMARE?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [**SCOPRI I CORSI**](https://devacademy.it/corsi/) | [**ISCRIVITI**](https://devacademy.it/prezzi/) **Categorie:** Database, SQL **Tag:** database, sql --- ### [Python if else: istruzioni condizionali in Python](https://devacademy.it/python-if-else-istruzioni-condizionali-in-python/) **Published:** Luglio 23, 2021 **Author:** Giuseppe Maggi **Content:** Oggi parliamo delle istruzioni condizionali in Python e in particolare di **Python if…else**. Ciò che permette ai programmi di prendere decisioni è la capacità di “valutare” se una determinata condizione è vera o falsa e comportarsi di conseguenza. Questa capacità deve però essere guidata dal programmatore con condizioni ben precise. L’operazione fondamentale per effettuare un confronto ed eseguire codice se il suo risultato è vero prende il nome di if ed esiste in ogni linguaggio. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) La sua struttura in Python è la seguente: ``` if condizione: ``` dove: - *condizione* rappresenta un confronto che può essere semplice (usa un simbolo di maggiore, minore, uguale e via dicendo tra due operandi) o composto in quanto reso con più confronti legati tra loro da operatori logici come and e or; - `` sarà l’insieme delle operazioni (può trattarsi di un blocco di più righe) da eseguire solo se condizione restituisce valore logico vero, True in Python. Si ricordi sempre che la condizione dell’if può essere qualsiasi cosa che restituisce un valore booleano quindi non solo un confronto, ma anche l’invocazione di una funzione che offre questo tipo di risultato. Facciamo un esempio. Abbiamo la variabile voto: ``` voto = 7 ``` Scrivendo: ``` if voto>=6: print(“Voto sufficiente”) ``` la stringa “Voto sufficiente” verrà stampata in quanto l’espressione `voto>=6` risulta vera perché 7 è maggiore di 6. Provassimo il tutto impostando voto ad un valore minore di 6, non otterremmo la stampa del messaggio. **VUOI IMPARARE A PROGRAMMARE IN PYTHON?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [VAI AI CORSI PYTHON](https://devacademy.it/percorsi/python-developer/) ## Python if…else La parola chiave if introduce quindi il principale costrutto condizionale del linguaggio Python. Serve per definire se un blocco di codice deve o meno essere eseguito in base ad una condizione booleana. La parola chiave if può essere accompagnata da altre due: - elif (corrispondente all’else if di molti altri linguaggi) propone un’alternativa da vagliare nel caso in cui la condizione dell’if risulti falsa. Si possono concatenare più condizioni con elif; - else: introduce un blocco di codice da eseguire se le condizioni dell’if e degli eventuali elif precedenti sono risultate false. Vediamo prima di tutto un semplice costrutto if…else: ``` eta=22 if eta>=18: print("Sei maggiorenne") else: print("Sei ancora minorenne") ``` L’esecuzione di tale codice stamperà “Sei maggiorenne” in quanto la variabile eta contiene 22 pertanto la condizione dell’if eta>=18 restituirà True, il “vero” logico. Qualora impostassimo eta ad un valore minore di 18 e riprovassimo il codice otterremo “Sei ancora minorenne” in quanto sarebbe eseguito il codice dell’else. Immaginiamo ora un altro esempio che tratta una sorta di tirassegno. Deve essere restituito un messaggio diverso in base a quanto si è distanti dal centro che è rappresentato dallo zero. Se la distanza è minore di 10 si faranno i complimenti al giocatore. Così non fosse, si valuta se si è al di sotto di 50 (ma sopra al 10 altrimenti sarebbe risultata vera la condizione dell’if). Infine, se entrambe le condizioni risultano false la distanza dal centro sarà compresa tra cinquanta e cento e lì si risponderà con un messaggio più critico all’utente: ``` distanza=88 if distanza **Categorie:** Python **Tag:** Python --- ### [PHP count: contare gli elementi in un array](https://devacademy.it/php-count-contare-gli-elementi-in-un-array/) **Published:** Agosto 31, 2021 **Author:** Giuseppe Maggi **Content:** In questa guida vedremo come contare il numero di elementi all’interno di un Array con **PHP count**. Gli array sono la struttura dati leader in PHP e possono essere usati per gestire qualsiasi archiviazione di informazioni. Molto utile è quindi poter sapere quanti oggetti contengono al loro interno e per questo si può usare la funzione PHP count(). [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ### PHP count: un esempio Definiamo un array rispondente al riferimento $nomi e popoliamolo con stringhe indicanti nomi di persona: ``` $nomi = array("Mario", "Antonio", "Simona", "Vera", "Giorgia", "Alessio"); ``` Se volessimo ottenere la stampa del numero di elementi che contiene l’array `$nomi` potremmo fare quanto segue: ``` echo count($nomi); ``` Come vedete è stato sufficiente invocare la funzione count() passandole come argomento il riferimento all’array di cui vogliamo conoscere la lunghezza per ottenere il risultato, niente di più semplice. Ottenere tale informazione risulta utile molto spesso soprattutto quando l’array contiene dati in input da elaborare o risultati di operazioni. Con count potremo, ad esempio, sapere se una certa funzione ha restituito risultati mediante un array o attivare un ciclo per iterare su tutti i suoi elementi. **VUOI IMPARARE A PROGRAMMARE IN PHP?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [VAI AL CORSO PHP](https://devacademy.it/percorsi/php-developer/) ### PHP Count: modalità di conteggio Mentre il primo argomento è richiesto, altrimenti la funzione non saprà di quale array dovrà restituire il numero di elementi al suo interno, esiste un altro parametro, questa volta opzionale, che indica alla funzione il modo di conteggio da utilizzare: default o ricorsivo. Di norma, se non specificato, il conteggio degli elementi è normale, quindi conta gli elementi non in modo ricorsivo, se invece abbiamo ad esempio bisogno di contare tutti gli elementi di un array multidimensionale dovremo specificare questa modalità, inserendo 1 come secondo argomento da passare alla funzione. Vediamo un esempio. Supponiamo di avere un array multidimensionale simile a questo: ``` $cibi = array("Primi" => array("Pasta", "Riso"), "Secondi" => array("Carne","Pesce"), "Frutta" => array("Pesche")); ``` Proviamo ora a contare il numero di elementi nell’array con entrambe le modalità di conteggio, standard e ricorsiva, in questo modo: ``` echo "Conteggio standard: " . count($cibi).""; echo "Conteggio ricorsivo: " . count($cibi,1); ``` riceveremo come risultato rispettivamente per le due chiamate alla funzione sul medesimo array: ``` Conteggio standard: 3 Conteggio ricorsivo: 8 ``` Nel primo caso conta solo gli elementi “principali” nell’array, nel secondo conta invece tutti gli elementi, inclusi quelli degli ulteriori array nell’array. Come vedete nulla di complicato, ma sicuramente una funzionalità utilissima da usare secondo esigenze. » VUOI SAPERNE DI PIU’? VAI AL NOSTRO [CORSO PHP](https://devacademy.it/percorsi/php-developer/) « **Categorie:** PHP **Tag:** PHP --- ### [Javascript array: cosa sono e come usarli](https://devacademy.it/javascript-array-cosa-sono-e-come-usarli/) **Published:** Ottobre 29, 2021 **Author:** Giuseppe Maggi **Content:** La struttura dati principale del Javascript sono gli array la cui flessibilità permette di utilizzarli per qualsiasi scopo. Un array non è nient’altro che un contenitore che, a differenza delle variabili che possono contenere al loro interno un solo valore, può contenere più valori (di vario genere) accessibili tramite un indice numerico che parte da zero. Un Javascript array può essere creato con il costruttore Array preceduto dall’operatore new in questo modo: ``` var nomi = new Array("Michele", "Sergio", "Simona", "Eva", "Giorgia", "Melania", "Marco") ``` oppure, in forma molto più sintetica, con il semplice impiego di parentesi quadre: ``` var nomi = ["Michele", "Sergio", "Simona", "Eva", "Giorgia", "Melania", "Marco"] ``` Gli elementi presenti in un array, come accennato, sono indicizzati per posizioni contate a partire da 0, pertanto nomi\[1\] equivale a Sergio, nomi\[3\] a Eva e via dicendo. La stessa notazione può essere impiegata per assegnare loro dei valori. Se eseguissimo: ``` nomi[3]="Saverio" ``` l’array diventerebbe: ``` ["Michele", "Sergio", "Simona", "Saverio", "Giorgia", "Melania", "Marco"] ``` [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ### Javascript array e oggetti L’impiego di array si sposa bene con quello degli oggetti, definiti con parentesi graffe, in cui si possono definire una serie di proprietà con uno specifico valore etichettate con un nome. Ad esempio, questo è un oggetto Javascript: ``` studente1={"nome":"Michele", "cognome":"Rossi", "citta":"Roma" } ``` Risponde al riferimento studente1 e contiene tre proprietà: nome, cognome e citta. Potremmo estrarre uno dei valori al suo interno semplicemente richiedendo una proprietà introdotta dal simbolo punto: `studente1.citta` per sapere la sua città o `studente1.cognome` per il suo cognome. Allo stesso modo potremmo utilizzare questa stessa dicitura per compiere un’assegnazione con: ``` studente1.citta="Lecce" ``` In un array Javascript, potremmo utilizzare oggetti di questo tipo come valori. Ad esempio, creando un array di nome “corso” potremmo coinvolgere studente1 ed altri oggetti creati al volo: ``` corso=[ studente1, {"nome":"Giorgia", "cognome":"Verdi", "citta":"Milano" }, {"nome":"Paolo", "cognome":"Neri", "citta":"Napoli" } ] ``` per poi recuperare il valore di una proprietà percorrendo le posizioni dell’array: con `corso[2].citta` otterremo Napoli, mentre con `corso[0].nome` otterremmo Michele. ### Javascript array: metodi e proprietà Di qualsiasi tipo di oggetti sia composto un array possiamo sfruttare su di esso alcuni metodi e proprietà, vediamo di seguito i principali. **VUOI IMPARARE A PROGRAMMARE IN JAVASCRIPT?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [PROVA GRATIS IL CORSO JAVASCRIPT](https://devacademy.it/percorsi/javascript-developer/) Prima cosa, è molto utile sapere la lunghezza di un array: possiamo farlo con length. Utilizzando l’array: ``` nomi = ["Michele", "Sergio", "Simona", "Eva", "Giorgia", "Melania", "Marco"] ``` con `nomi.length` viene restituito 7 ovvero il numero di oggetti che esso contiene. Altra necessità molto comune consiste nell’aggiungere elementi in coda all’array e possiamo farlo utilizzando push. Invocando quindi `nomi.push("Alessandro")` il contenuto della struttura dati diventerà: ``` [ 'Michele', 'Sergio', 'Simona', 'Eva', 'Giorgia', 'Melania', 'Marco', 'Alessandro' ] ``` e la lunghezza, di conseguenza, sarà ora pari a 8. Con pop invece svolgiamo due operazioni contemporaneamente: ci facciamo restituire l’ultimo oggetto e lo rimuoviamo dall’array. Ad esempio, `nomi.pop()` restituisce la stringa “Alessandro” e, contemporaneamente, la rimuove dall’array. Altro aspetto fondamentale è la possibilità di trasformare un array in una stringa. Lo si può fare in maniera molto standard utilizzando `toString` che restituisce una stringa come la seguente: `'Michele,Sergio,Simona,Eva,Giorgia,Melania,Marco'` costituita da tutti i nomi separati da virgola o con `join` che permette di specificare il separatore con cui verranno accodati tutti gli oggetti tra loro. Ad esempio con `nomi.join(' -- ')` otterremo questo risultato: `'Michele -- Sergio -- Simona -- Eva -- Giorgia -- Melania -- Marco'` forEach è un altro metodo che offre una potenzialità molto importante. Permette infatti di eseguire un ciclo in cui ogni oggetto dell’array sarà sottoposto ad una funzione. Ad esempio, potremo invocare: ``` nomi.forEach(funzione); ``` dove funzione viene definita separatamente: ``` function funzione(value, index, array) { // codice da eseguire } ``` e questa verrà richiamata e il suo codice eseguito per ogni elemento dell’array. L’aspetto interessante è che al momento di eseguire il codice di funzione avremo a disposizione tre argomenti: il primo sarà l’indice dell’oggetto che stiamo trattando in questa iterazione, il secondo sarà il suo valore ed il terzo l’array completo. » VUOI SAPERNE DI PIU’? PROVA GRATIS IL NOSTRO [CORSO JAVASCRIPT](https://devacademy.it/percorsi/javascript-developer/) « **Categorie:** Javascript **Tag:** javascript --- ### [SQL DISTINCT: come escludere i valori ripetuti in una query](https://devacademy.it/sql-distinct-come-escludere-i-valori-ripetuti-in-una-query/) **Published:** Febbraio 7, 2022 **Author:** Giuseppe Maggi **Content:** Nel linguaggio SQL capita spesso di trattare dati dove appaiono delle ripetizioni. Queste sono assolutamente frequenti e hanno una loro utilità. A volte però servirebbe **estrapolare i dati presenti in un database senza alcuna duplicazione**, per vedere una volta sola valori uguali ripetuti più volte. Scopriamo dunque a cosa serve il comando **SQL DISTINCT**. Se invece non sai ancora cosa sia l’SQL, leggi [**che cos’è e come funziona il linguaggio SQL**](https://devacademy.it/linguaggio-sql/) prima di proseguire. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) Supponiamo di avere una tabella dove il campo *Marca* mostri il nome delle aziende produttrici di pasta: ![SQL DISTINCT](https://devacademy.it/wp-content/uploads/2022/02/SQL-DISTINCT-300x226.png) Se più record possono essere riferiti alla stessa marca, eseguendo la query: ``` SELECT Marca FROM tabella ``` otterremo una colonna di risultati dove la stessa marca sarà citata più volte e dunque avremo questo set di risultati: ``` Barilla Voiello Voiello Rummo Rummo Rummo ``` E se volessimo lo stesso set di risultati ma epurato dei duplicati in modo da conoscere con chiarezza i nomi di tutte le marche coinvolte in una data colonna *senza* ripetizioni? Il codice da utilizzare in questo caso sarà: ``` SELECT DISTINCT Marca FROM tabella ``` applicando la stessa query ma associando semplicemente la parola chiave **DISTINCT** a **SELECT**. In questo modo otterremo dei valori differenti per quella colonna, valori che escludono la ripetizione degli stessi. Avremo dunque: ``` Barilla Voiello Rummo ``` Abbiamo imparato dunque a estrapolare i valori in un database grazie al **linguaggio SQL** tramite la funzione **SELECT** e a farlo senza duplicati grazie al comando **SELECT DISTINCT**. E se ora volessimo conoscere il numero dei risultati estrapolati dal database? Ti consigliamo di approfondire la conoscenza del comando **SQL COUNT** per sapere [come contare il numero di elementi presenti in una tabella](https://devacademy.it/sql-count-contare-il-numero-di-elementi-in-una-tabella/). **VUOI IMPARARE A PROGRAMMARE?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [**SCOPRI I CORSI**](https://devacademy.it/corsi/) | [**ISCRIVITI**](https://devacademy.it/prezzi/) **Categorie:** Database, SQL **Tag:** database, sql --- ### [PHP foreach: che cos'è e come usarlo](https://devacademy.it/php-foreach-che-cos-e-e-come-usarlo/) **Published:** Febbraio 11, 2022 **Author:** Giuseppe Maggi **Content:** Il costrutto **PHP foreach** è utile nel mondo della programmazione per effettuare dei cicli ed elaborare ogni elemento di un Array. Scopriamo insieme come usarlo e sfruttarlo subito con esempi reali. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## PHP foreach: di cosa si tratta I **cicli** sono uno dei meccanismi principali della programmazione in generale. Essi permettono di eseguire il medesimo codice su molti oggetti di una struttura dati. Spesso si utilizza un ciclo per **elaborare tutti gli oggetti di una sequenza**, e in questo caso si tende a semplificare la sua implementazione mediante un cosiddetto meccanismo di *foreach* disponibile in molti linguaggi tra i quali anche il PHP. ## Come applicare il *foreach* in PHP Il linguaggio PHP, come ogni linguaggio, ha un suo modo per applicare in fase di programmazione questo costrutto. Il formato della sua applicazione è quindi il seguente: ``` foreach ($array as $elemento){ // codice da applicare } ``` dove: - *$array* contiene tutti gli elementi da elaborare (nel caso ne avessi bisogno, ti spieghiamo qui [che cosa sono e come si usano in PHP gli array](https://devacademy.it/php-array/)) - *$elemento* è il singolo elemento di $array su cui svolgeremo il codice contenuto nel blocco tra parentesi graffe. Ecco un esempio. Abbiamo un array di nomi: ``` $nomi = array("Marco", "Sandro", "Eva", "Silvia", "Jessica"); ``` e vogliamo stamparli ognuno convertito in maiuscolo. Eseguiamo questo ciclo: ``` foreach ($nomi as $n) { echo strtoupper($n).""; } ``` Ad ogni iterazione *$n* conterrà un valore diverso dell’array e *strtoupper* lo convertirà in maiuscolo (il tag *
* serve ad andare a capo in una pagina HTML). La possibilità di utilizzare array di qualsiasi tipo e di scrivere il codice che si desidera nel blocco tra parentesi graffe rende il **foreach uno dei costrutti più usati** in assoluto. **VUOI IMPARARE A PROGRAMMARE IN PHP?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [VAI AI CORSI PHP](https://devacademy.it/percorsi/php-developer/) **Categorie:** PHP **Tag:** PHP --- ### [Javascript onclick: come far partire una funzione al click](https://devacademy.it/javascript-onclick-come-far-partire-una-funzione-al-click/) **Published:** Febbraio 14, 2022 **Author:** Giuseppe Maggi **Content:** Definiamo in **Javascript onclick** l’evento con cui, al click di un utente su un elemento, è possibile far partire una funzione prestabilita da chi programma. Ecco dunque come sfruttare un evento di questo tipo. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## L’evento Javascript onclick Quando inseriamo un pulsante HTML in una pagina web possiamo gestire l’azione che dovrà compiere alla sua pressione mediante l’attributo *onclick*. Con **Javascript onclick** potrai effettuare esattamente questa richiesta. Se inserissimo, ad esempio, un pulsante di questo tipo: ``` Salutami ``` otterremmo che, al momento della pressione, verrebbe eseguito il codice: ``` alert('Ciao e benvenuto! Ho visto che hai cliccato li pulsante') ``` facendo apparire una finestra di notifica con questo messaggio di benvenuto come testo. Nella stringa attribuita a *onclick* possiamo inserire qualsiasi codice [Javascript](https://devacademy.it/javascript/), anche invocando funzioni scritte da noi. Quest’ultimo caso è molto utile per organizzare meglio il codice in modo da poter pianificare un maggior numero di operazioni. Ad esempio, potremmo rielaborare l’esempio precedente scrivendo la funzione: ``` function saluto() { alert('Ciao e benvenuto! Ho visto che hai cliccato li pulsante') } ``` ed invocandola mediante il meccanismo di *onclick* ``` Salutami ``` Otterremmo così il medesimo risultato ma con la possibilità di includere più operazioni all’interno della funzione *saluto*. **VUOI IMPARARE A PROGRAMMARE IN JAVASCRIPT?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [VAI AI CORSI JAVASCRIPT](https://devacademy.it/percorsi/javascript-developer/) **Categorie:** Javascript **Tag:** javascript --- ### [SQL SUBSTRING: estrarre una sottostringa da una stringa](https://devacademy.it/sql-substring-estrarre-una-sottostringa-da-una-stringa/) **Published:** Febbraio 16, 2022 **Author:** Giuseppe Maggi **Content:** Con **SQL SUBSTRING** è possibile estrarre una sottostringa da una stringa a partire da qualsiasi posizione all’interno di un campo di una tabella (puoi trovare tutte le informazioni relative al linguaggio nell’articolo dedicato al [linguaggio SQL](https://devacademy.it/linguaggio-sql/)). Vediamo allora come usare al meglio questa funzione. ## SQL SUBSTRING: a cosa serve? Nel **linguaggio SQL** è possibile utilizzare molte funzioni per intervenire sui dati in diversi tipi di operazioni. A questo proposito, data la grande quantità di stringhe che vengono trattate, la funzione **SUBSTRING** ha grande utilità, in quanto permette di **leggere sottostringhe dai valori di un campo**. Vediamo allora come possiamo estrarre una sottostringa caratteri da una stringa in particolare della tabella. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## SQL SUBSTRING: come si usa? La funzione **SQL SUBSTRING** riceve tre **argomenti** (con questo termine intendiamo i parametri presenti all’interno della funzione): - il **nome del campo** della tabella su cui vogliamo intervenire; - la **posizione** (conteggiata a partire da 1) che indica da quale carattere della stringa inizia la porzione cui siamo interessati; - la **lunghezza della sottostringa** che vogliamo leggere. Questa particolare funzione può essere impiegata in varie posizioni dei comandi SQL. Ad esempio, possiamo utilizzarla in fase di proiezione dei risultati richiedendo di mostrare solo i primi tre caratteri del campo *nome*: ``` SELECT SUBSTRING(nome, 1, 3) FROM persone ``` oppure possiamo richiedere, in fase di selezione dei record, di recuperare solo quelli in cui il campo *nome* inizia con ‘Ma’: ``` SELECT * FROM persone WHERE SUBSTRING(nome, 1, 2)= 'Ma' ``` Come hai potuto vedere, estrarre sottostringhe dalle stringhe di una tabella con la funzione *SUBSTRING* con il **linguaggio SQL** non è per nulla complicato. Ora tocca a te! **VUOI IMPARARE A PROGRAMMARE?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [**SCOPRI I CORSI**](https://devacademy.it/corsi/) | [**ISCRIVITI**](https://devacademy.it/prezzi/) **Categorie:** Database, SQL **Tag:** database, sql --- ### [Python for: come ciclare una sequenza di dati](https://devacademy.it/python-for-come-ciclare-una-sequenza-di-dati/) **Published:** Febbraio 18, 2022 **Author:** Giuseppe Maggi **Content:** In linguaggio **Python**, **for** costituisce un costrutto che permette di eseguire parti di codice per un numero determinato di cicli. Questo in genere viene usato per iterare una sequenza dati come una lista, una tupla, un dizionario, un set o una stringa ed eseguire del codice per ogni elemento al suo interno. In questo articolo vediamo nel dettaglio come utilizzare questo costrutto, che dovrai necessariamente conoscere se stai imparando a **[programmare in Python](https://devacademy.it/programmare-in-python/)**. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## Programmare in Python: il ciclo *for* Come abbiamo accennato, il costrutto Python *for* viene utilizzato per eseguire **iterazioni su strutture iterabili**, ovvero costituite da più elementi, disposti in una sequenza, che verranno presi in considerazione uno per uno. Il blocco di codice sotteso al *for* sarà eseguito per ognuno di questi elementi. A seconda del tipo di struttura iterabile che utilizzeremo per animare il ciclo si avrà un comportamento differente. Per ottenere la tipica **variabile “contatore”** che si utilizza con il **ciclo for** in Python (ma in realtà un po’ in tutti i linguaggi di programmazione) si ricorre alla funzione *range*. **VUOI IMPARARE A PROGRAMMARE IN PYTHON?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [VAI AI CORSI PYTHON](https://devacademy.it/percorsi/python-developer/) Ad esempio, nel seguente caso, chiediamo a *range* di descrivere un intervallo di valori continui da 1 a 10 (si ferma all’elemento prima del secondo argomento). In questo caso, dunque, *for* percorrerà l’intervallo affinché stampi ogni singolo numero. Ecco la prova svolta su console: ``` >>> for i in range(1,11): ... print(i) ... 1 2 3 4 5 6 7 8 9 10 ``` ## Usare il *ciclo for* con le liste in Python Anche con strutture sequenziali come le **liste in Python** potremo usare il *ciclo for* per trattare ogni singolo elemento: ``` >>> nomi=["Augusto","Simone","Noemi","Alessia","Claudia"] >>> for i in nomi: ... print(i) ... Augusto Simone Noemi Alessia Claudia ``` Mentre nel caso dei dizionari il ***ciclo for*** prenderà in considerazione solo le chiavi di ogni singola accoppiata chiave/valore: ``` >>> pagella={'Italiano':8,'Storia':9,'Matematica':5,'Fisica':7} >>> for materia in pagella: ... print(materia) ... Italiano Storia Matematica Fisica ``` In conclusione, abbiamo visto in Python come utilizzare il **ciclo for**, su quali strutture si può applicare e in che modo scrivere il suo codice. Non ti resta che provare a metterlo in pratica! » VUOI SAPERNE DI PIÙ? VAI AI NOSTRI [CORSI PYTHON](https://devacademy.it/percorsi/python-developer/) « **Categorie:** Python **Tag:** Python --- ### [PHP date: come formattare date e orari](https://devacademy.it/php-date-come-formattare-date-e-orari/) **Published:** Febbraio 21, 2022 **Author:** Giuseppe Maggi **Content:** In questa guida osserveremo come la funzione **PHP date** ci aiuti a gestire e formattare le date e gli orari. Ecco dunque come impostare questo valore affinché ci venga restituito formattato esattamente come vorremmo. ## PHP date: come formattare una data La **data** è **una delle tipologie di informazione più utilizzata** in informatica. La sua importanza, infatti, è particolarmente rilevante nell’analisi di dati, nei salvataggi all’interno di database, nella memorizzazione di log e in molti altri casi. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) Il **linguaggio PHP** dispone di molte funzioni per la gestione di questi dati, tra cui *date*, il meccanismo fondamentale per la loro formattazione. La funzione *date* accetta **due argomenti**: - **formato**: una stringa che esprime quali informazioni della data vogliamo visualizzare e come vogliamo che ciò avvenga. Sarà definito mediante una sintassi che può essere approfondita nella [documentazione ufficiale sul sito PHP](https://www.php.net/manual/en/datetime.format.php); - **timestamp**: indica l’informazione temporale che la data deve offrire. É un argomento opzionale, pertanto se non definito il parametro indicherà l’istante di esecuzione. Se invece si desidera indicare un *timestamp* diverso da quello attuale si può utilizzare la funzione *mktime*. » VUOI SAPERNE DI PIÙ? VAI AL NOSTRO [CORSO PHP](https://devacademy.it/percorsi/php-developer/) « ## PHP date: alcuni esempi pratici Vediamo la **funzione PHP date** al lavoro con alcuni esempi. Supponiamo di voler esprimere ora e minuti attuali. Ecco cosa dovremmo digitare per vedere restituito questo dato: ``` date("H:i") ``` laddove *H* rappresenta le ore (indicate su 24 ore) e *i* indica i minuti. Per avere la data nel formato giorno, mese e anno separati da simboli di slash possiamo usare: ``` date("d/m/Y") ``` laddove *d* sta per giorno espresso in due cifre, *m* per il mese su due cifre e *Y* per l’anno espresso su quattro cifre. Se volessimo invece informazioni quali, ad esempio, data e ora relative al 5 aprile del 2010, e precisamente alle ore quattordici, ventuno minuti e trentotto secondi potremmo impostarlo con *mktime* e formattarlo con *date*, questo il comando: ``` date("d/m/Y H:i:s",mktime(14,21,38,4,5,2010)) ``` ed il valore formattato restituito sarebbe: 05/04/2010 14:21:38 Nel caso in cui il codice sia stato scritto correttamente, sarà possibile vedersi restituita la stringa di codice formattata nella modalità desiderata. In caso contrario, quando vi sono invece errori di battitura, sarà restituito solamente un messaggio di errore. **VUOI IMPARARE A PROGRAMMARE IN PHP?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [VAI AL CORSO PHP](https://devacademy.it/percorsi/php-developer/) **Categorie:** PHP **Tag:** PHP --- ### [Javascript switch: esegui azioni diverse a diverse condizioni](https://devacademy.it/javascript-switch-esegui-azioni-diverse-a-diverse-condizioni/) **Published:** Febbraio 23, 2022 **Author:** Giuseppe Maggi **Content:** In questa guida vediamo come usare l’istruzione **Javascript switch**, ovvero quel costrutto che ti permette di svolgere azioni diverse in funzione del valore di una particolare espressione. Prosegui nella lettura dell’articolo per scoprire come utilizzare questo costrutto nel tuo codice e impara a programmare con **[devACADEMY](https://devacademy.it/)**. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## L’istruzione Javascript Switch Il costrutto **Javascript switch** risulta molto utile nel caso in cui si voglia sostituire e rendere più fluidi i classici processi *if* e *else*. In generale, possiamo dire che lo *switch* è efficace per ricevere una determinata **selezione tra un numero esatto di possibilità**. In base al valore di un’espressione, infatti, generalmente una variabile o l’invocazione a una funzione, viene eseguito uno tra diversi blocchi di codice contrassegnati dalla **parola chiave *case***. Questa è la sua sintassi: ``` switch(espressione) { case valore_1: // blocco relativo a valore_1 break case valore_2: // blocco relativo a valore_2 break default: // blocco relativo a qualsiasi valore diverso dai precedenti } ``` Se, ad esempio, *espressione valesse valore\_1* verrebbe eseguito il primo blocco case, con *valore\_2* il secondo e via dicendo. Da notare che **ogni blocco *case* viene concluso da un’istruzione *break***. N.B. Nel caso in cui non venga inserita l’istruzione *break*, verrà eseguito il *case* successivo a prescindere dall’eventuale corrispondenza. Se è previsto un **blocco *default***, questo verrà eseguito solo nel caso in cui nessuno dei valori associati ai *case* precedenti combaci con il valore dell’espressione. Proviamo ora a descrivere un esempio per addentrarci meglio nell’istruzione **Javascript switch**. ## Javascript switch in pratica: ecco un esempio Vediamo a questo punto un esempio pratico di come utilizzare *switch* in **Javascript**. Supponiamo che la variabile *ruolo* possa contenere uno tra tre valori (“Professore”, “Studente”, “Preside”) ed in base a quale di questi viene riconosciuto sarà offerto un diverso saluto. Prepareremo un costrutto *switch* che, come espressione, conterrà la variabile *ruolo* e nei vari *case* imposterà un risultato in base alla situazione: ``` switch (ruolo) { case "Professore": saluto = "Buongiorno Professore"; break; case "Preside": saluto = "Buongiorno signor Preside"; break; case "Studente": saluto = "Ciao"; break; } ``` Ad esempio, eseguendolo impostando la variabile ruolo a “Preside” otterremmo l’esecuzione solo del secondo blocco *case* che restituirebbe *saluto* valorizzata a “Buongiorno signor Preside”. Ora sei in grado di utilizzare con sicurezza l’istruzione **Javascript switch**. Ancora qualche incertezza? Impara a programmare con devACADEMY! **VUOI IMPARARE A PROGRAMMARE IN JAVASCRIPT?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [VAI AI CORSI JAVASCRIPT](https://devacademy.it/percorsi/javascript-developer/) **Categorie:** Javascript **Tag:** javascript --- ### [SQL ORDER BY: ordinare i risultati di una SELECT](https://devacademy.it/sql-order-by-ordinare-i-risultati-di-una-select/) **Published:** Febbraio 25, 2022 **Author:** Giuseppe Maggi **Content:** Come sappiamo, il **[linguaggio SQL](https://devacademy.it/linguaggio-sql/)** ci permette di interrogare un database ricco di valori memorizzati al suo interno e tramite una SELECT ricevere alcuni di essi secondo le nostre esigenze. Ma come ci vengono restituiti questi dati? Con l’istruzione **SQL ORDER BY** è possibile ordinare i risultati ricevuti in modo ascendente o discendente, vediamo come. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## SQL ORDER BY: ordinare i risultati di una query Quando si mostrano i risultati di una SELECT, molto spesso, si ricorre al loro **ordinamento basato su dati presenti in uno o più campi**. Esiste allo scopo la clausola ***ORDER BY*** che richiede solo l’indicazione delle colonne in base a cui ordinare i risultati della query. **Di default, i dati saranno ordinati in senso crescente** ma applicando la parola chiave *DESC* si potrà avere un ordinamento decrescente. Ecco alcuni esempi messi in pratica. ## Esempi pratici di SQL ORDER BY Immaginiamo di avere un **database** per un e-commerce e di voler richiedere l’ordinamento dei prodotti per prezzo **crescente**. Ecco cosa dovremmo digitare: ``` SELECT * FROM prodotti ORDER BY prezzo ``` Se invece volessimo vedere restituito l’ordinamento dei prodotti per prezzo ma in ordine **decrescente**, allora dovremmo scrivere: ``` SELECT * FROM prodotti ORDER BY prezzo DESC ``` A parità di prezzo potremmo però richiedere di ordinare i prodotti per categoria (supponiamo che questo dato venga restituito come numero intero): ``` SELECT * FROM prodotti ORDER BY prezzo, categoria ``` Come si può vedere nell’esempio, affinché il **database** ci restituisca tutti questi dati basterà semplicemente indicare i due campi di nostro interesse (e non uno soltanto) a seguito di *ORDER BY* (in questo caso *prezzo* e *categoria*). Abbiamo visto quindi **come ordinare i dati** ricevuti da una query. Se desideri scoprire altre istruzioni proprie del **linguaggio SQL**, ad esempio [come escludere i valori ripetuti in una query](https://devacademy.it/sql-distinct-come-escludere-i-valori-ripetuti-in-una-query/) o [come contare il numero di elementi in una tabella](https://devacademy.it/sql-count-contare-il-numero-di-elementi-in-una-tabella/), puoi seguire uno dei nostri corsi e imparare questo linguaggio sicuramente utile anche ad ogni programmatore. **VUOI IMPARARE A PROGRAMMARE?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [**SCOPRI I CORSI**](https://devacademy.it/corsi/) | [**ISCRIVITI**](https://devacademy.it/prezzi/) **Categorie:** Database, SQL **Tag:** database, sql --- ### [Python dictionary: creare e usare dizionari in Python](https://devacademy.it/python-dictionary-creare-e-usare-dizionari-in-python/) **Published:** Febbraio 28, 2022 **Author:** Giuseppe Maggi **Content:** Ogni linguaggio di programmazione offre una **struttura dati di tipo chiave/valore** che permette di associare ad uno specifico dato (di qualsiasi tipo) una chiave per il suo recupero immediato. In **Python**, i **dictionary** ricoprono esattamente tale ruolo. Ma come si usano? Scopriamolo in questo articolo. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## Python dictionary: come si creano e come si usano Usare un dictionary in Python è fondamentale se vuoi associare valori a chiavi specifiche per poi recuperarli facilmente quando ti servono. Ma come si creano? In Python si possono **creare dizionari vuoti** con il semplice uso di una coppia di **parentesi graffe**, mentre per posizionarvi all’interno un elemento associato ad una specifica chiave si usano le parentesi quadre. Vediamo un esempio pratico. Supponiamo di avere una squadra di calcio in cui ogni giocatore è riconosciuto tramite un numero di maglia che sceglie ad inizio campionato. Il dato da immagazzinare sarà il nominativo del giocatore, mentre la chiave con cui identificarlo sarà il numero di maglia: ``` squadra={} squadra[1]='Riccardo Verdi' squadra[12]='Enea Bianchi' squadra[8]='Roberto Neri' squadra[19]='Silvio Arancioni' ``` Le chiavi sono tutti numeri interi mentre i valori associati sono stringhe. Se volessimo sapere come si chiama il giocatore con la maglia numero 8, a questo punto, sarà sufficiente richiedere *squadra\[8\]* e la stringa ‘Roberto Neri’ verrà prodotta in output. Le **chiavi sono univoche** pertanto qualora dovessimo svolgere una nuova assegnazione con la stessa chiave verrebbe sovrascritto il valore ad essa assegnato in precedenza. » VUOI SAPERNE DI PIÙ? VAI AI NOSTRI [CORSI PYTHON](https://devacademy.it/percorsi/python-developer/) « ## Iterare sui dizionari Python Con l’uso di **cicli** si può percorrere tutto ciò che abbiamo inserito in un dizionario. Infatti, con un normale [ciclo for](https://devacademy.it/python-for-come-ciclare-strutture-iterabili) su tale oggetto verranno estratte le sue chiavi. Il codice: ``` for chiave in squadra: print(chiave) ``` percorrerà tutte le chiavi dell’oggetto squadra, inserendole di volta in volta nella variabile *chiave* e da lì le stamperà: ``` 1 12 8 19 ``` Con il metodo *values* possiamo percorrere solamente i valori: ``` for valori in squadra.values(): print(valori) ``` ed ecco apparire i nomi dei giocatori: ``` Riccardo Verdi Enea Bianchi Roberto Neri Silvio Arancioni ``` Con il metodo *items* otterremo invece tutte le coppie chiave/valore e con un *ciclo for* le potremo disporre in variabili diverse in questo modo: ``` for chiave, valore in squadra.items(): print(f'{valore} maglia numero {chiave}') ``` Grazie a ciò otterremo la stampa dei nomi dei giocatori associati con il loro numero di maglia: ``` Riccardo Verdi maglia numero 1 Enea Bianchi maglia numero 12 Roberto Neri maglia numero 8 Silvio Arancioni maglia numero 19 ``` Si noti che nel primo *ciclo for* non è stato necessario in quanto comportamento automatico, ma con il metodo *keys* possiamo estrarre l’insieme delle chiavi dal dizionario. Da non dimenticare che i **dizionari non sono ordinati** pertanto l’estrazione dei valori con un ciclo non garantirà lo stesso ordine di inserimento. **VUOI IMPARARE A PROGRAMMARE IN PYTHON?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [VAI AI CORSI PYTHON](https://devacademy.it/percorsi/python-developer/) ## Dizionari Python: funzionalità interessanti I dizionari Python dispongono inoltre di molti altri **metodi** interessanti. Ad esempio, con *pop* possiamo richiedere l’**estrazione di uno o più valori**. Questo servirà a svolgere due operazioni: prima di tutto offrirà in lettura un elemento e, in seguito, lo rimuoverà dal dizionario. Con tale tipo di operazione potremo elaborare ogni singolo elemento una sola volta. Questa invocazione, ad esempio, restituirà ‘Riccardo Verdi’ e lo eliminerà dalla squadra: ``` squadra.pop(1) ``` Con *update* si può produrre un aggiornamento del dizionario aggregandogli un altro oggetto dello stesso tipo. Ad esempio, vogliamo arricchire il nostro dizionario con due ulteriori giocatori. Scriveremo allora: ``` squadra.udpate({25:'Sergio Marroni', 15:'Carmelo Gialli'}) ``` e ancora: ``` for chiave, valore in squadra.items(): print(f'{valore} maglia numero {chiave}') ``` per ottenere stampato questo: ``` Enea Bianchi maglia numero 12 Roberto Neri maglia numero 8 Silvio Arancioni maglia numero 19 Sergio Marroni maglia numero 25 Carmelo Gialli maglia numero 15 ``` (Da notare che manca Riccardo Verdi dalla lista in quanto estromesso poco prima con il *pop*). Infine, potremo svuotare un dizionario del suo contenuto con: ``` squadra.clear() ``` e da questo momento in poi la nostra struttura dati sarà vuota. In conclusione, i molti metodi e la duttilità di questa struttura permetteranno di asservirla a tantissimi scopi nei nostri programmi. » VUOI SAPERNE DI PIÙ? VAI AI NOSTRI [CORSI PYTHON](https://devacademy.it/percorsi/python-developer/) « **Categorie:** Python **Tag:** Python --- ### [Javascript for: come usare il ciclo for in Javascript](https://devacademy.it/javascript-for-come-usare-il-ciclo-for-in-javascript/) **Published:** Marzo 7, 2022 **Author:** Giuseppe Maggi **Content:** In questa guida parliamo di **Javascript for**, uno dei costrutti più importanti nella programmazione in generale, non solo in Javascript, che ci permette di eseguire più volte una stessa porzione di codice. Quando, creando un programma, sentiamo la necessità di ripetere delle operazioni in maniera quasi identica o su una sequenza di elementi che, ad esempio, fanno parte di un array, è il momento di ricorrere ad un ciclo ed il **ciclo for** rappresenta quello più tipico. In Javascript, come praticamente in ogni altro linguaggio, tale costrutto viene messo a disposizione e si può applicare in tre modi diversi. In questo articolo, li vediamo tutti evidenziando le diverse circostanze che li rendono necessari offrendo diversi esempi per valorizzarli. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## Il ciclo for standard La modalità standard di eseguire un ciclo for vede l’utilizzo di tre espressioni racchiuse tra parentesi tonde e separate da punto e virgola indicanti rispettivamente: - **inizializzazione:** da eseguire una sola volta prima dell’avvio del ciclo; - **condizione di iterazione:** di natura booleana, finchè risulta vera il ciclo prosegue. Viene eseguita prima di ogni iterazione del ciclo for. Se è falsa sin dall’inizio, il ciclo non sarà eseguito nemmeno una volta; - **incremento:** viene sempre eseguita alla fine di ogni iterazione e generalmente contiene l’incremento di una variabile contatore. Questa la forma generale del costrutto: ``` for (condizione iniziale; condizione di iterazione; condizione di incremento) // blocco di codice da eseguire ad ogni iterazione ``` Vediamo un esempio. Supponiamo di voler stampare una tabellina del 2 in una pagina web. Per far ciò dovremo eseguire un’iterazione su diversi numeri partendo da 1 e fino al 10, ognuno di essi sarà moltiplicato per il numero 2. Vediamo come. ``` ``` E l’output ottenuto sarà di questo tipo: ``` 1 X 2 = 2 2 X 2 = 4 3 X 2 = 6 4 X 2 = 8 5 X 2 = 10 6 X 2 = 12 7 X 2 = 14 8 X 2 = 16 9 X 2 = 18 10 X 2 = 20 ``` In molti altri casi però non abbiamo bisogno di una variabile contatore come “i” in questo caso perché il nostro scopo è attraversare un oggetto Javascript o una struttura dati iterabile come un array. Per queste casistiche estremamente comuni, Javascript ha predisposto due versioni del for: **for…in** e **for…of** **VUOI IMPARARE A PROGRAMMARE IN JAVASCRIPT?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [VAI AI CORSI JAVASCRIPT](https://devacademy.it/percorsi/javascript-developer/) ## Javascript for…in Vediamo come usare il ciclo Javascript for…in. Questo costrutto è particolarmente utile quando vogliamo ispezionare un oggetto al suo interno navigando tra le sue proprietà. Supponiamo di avere in una pagina web un oggetto etichettato con il nome *data* contenente tre proprietà: giorno, mese, anno. Vogliamo stamparne il contenuto estraendo ogni sua singola proprietà: ``` ``` ed il risultato visualizzato sarà: ``` giorno = 12 mese = marzo anno = 2020 ``` ## Javascript for…of Vediamo invece come utilizzare il ciclo Javascript for…of Se il nostro scopo fosse ancora diverso, ovvero muoverci tra gli elementi di un array potremmo usare il **for…of**. Ad esempio, prendiamo una lista di nomi e stampiamoli accompagnati dalla loro lunghezza. ``` ``` In output otterremmo questo: ``` Alessia = 7 caratteri Ugo = 3 caratteri Selvaggia = 9 caratteri Noemi = 5 caratteri Alessandro = 10 caratteri ``` Come vedi il ciclo for in Javascript è molto potente ed utile ed esistono più versioni e modi di utilizzarlo all’interno del proprio codice a seconda delle esigenze. Per altri approfondimenti su questo linguaggio ti rimando alle altre [guide Javascript](https://devacademy.it/category/javascript/) che trovi online sul nostro sito. » VUOI SAPERNE DI PIU’? PROVA GRATIS IL NOSTRO [CORSO JAVASCRIPT](https://devacademy.it/percorsi/javascript-developer/) « **Categorie:** Javascript **Tag:** javascript --- ### [SQL LIKE: che cos'è e come si usa l'operatore LIKE](https://devacademy.it/sql-like-che-cose-e-come-si-usa-loperatore-like/) **Published:** Marzo 9, 2022 **Author:** Giuseppe Maggi **Content:** Nell’articolo di oggi parliamo dell’operatore **SQL LIKE**, vedremo insieme cos’è, a che cosa serve e come utilizzarlo all’interno delle nostre query grazie ad alcuni esempi pratici. Vediamo quindi innanzitutto di cosa si tratta. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) Eseguendo delle query, molto spesso, forniamo dei criteri con cui filtrare i record che vogliamo ottenere. Si possono effettuare confronti, richiamare operatori logici e funzioni, ma una delle parole chiave più utilizzate in questo ambito è **LIKE**. Questo operatore ci permette di effettuare **comparazioni con un modello di valori** più che con un valore esatto. Possiamo far funzionare SQL LIKE attraverso dei **metacaratteri**: - il simbolo **percentuale**(**%**) che simboleggia una sequenza di zero o più caratteri; - il simbolo **underscore** (**\_**) che indica un singolo carattere. N.B. I due simboli possono anche essere usati in combinazione secondo esigenze attraverso gli operatori AND e OR. Se, ad esempio, in una query avessimo una clausola WHERE di questo tipo: ``` SELECT * FROM utenti WHERE nome LIKE ‘Ca%’ ``` staremmo cercando tutte le righe che nel campo nome hanno in ‘Ca’ la sillaba iniziale. Se si trattasse di persone, un modello di questo tipo sarebbe conforme a Carlo, Caterina, Carola e via dicendo. Il seguente modello, tanto per vedere un altro esempio, cercherebbe i valori del campo *username* inizianti con la lettera U seguiti da almeno altri due caratteri (quelli indicati dai due *underscore*): ``` SELECT * FROM utenti WHERE username LIKE ‘U__%’ ``` Questo sarebbe un modo per assicurarsi anche la lunghezza minima dei valori selezionati. In questa breve guida abbiamo visto come usare l’operatore **SQL LIKE** nelle nostre SELECT con la clausola WHERE. Se desideri imparare di più sul **[linguaggio SQL](https://devacademy.it/linguaggio-sql/)**, non perderti i prossimi articoli. **VUOI IMPARARE A PROGRAMMARE?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [**SCOPRI I CORSI**](https://devacademy.it/corsi/) | [**ISCRIVITI**](https://devacademy.it/prezzi/) **Categorie:** Database, SQL **Tag:** database, sql --- ### [Python string: funzionalità e metodi utili](https://devacademy.it/python-string-funzionalita-e-metodi-utili/) **Published:** Marzo 11, 2022 **Author:** Giuseppe Maggi **Content:** Nell’articolo di oggi scopriamo cosa sono le **stringhe in Python**, quali sono le funzionalità che possiamo applicarvi e i metodi utili per utilizzarle al meglio nel nostro codice. Prosegui dunque nella lettura per imparare a [programmare in Python](https://devacademy.it/programmare-in-python/) e padroneggiare questa tipologia di dati. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) ## Python string: cosa sono? Le stringhe sono tra le tipologie di dati più usate in assoluto nei software e per questo Python le rende con degli oggetti estremamente versatili pronti ad essere analizzati al meglio nei loro contenuti. Diciamo sin da subito che **da Python 3 le stringhe sono tutte Unicode** quindi possono ospitare una grandissima varietà di caratteri di ogni lingua e possono essere dichiarate semplicemente passando il loro **contenuto tra una coppia di apici singoli o doppi**: tra le due notazioni non esiste differenza. Creiamo subito una stringa d’esempio: ``` stringa='Oggi è una bella giornata' ``` e vediamo le diverse funzionalità che si possono applicare su di essa. ## Indexing e slicing nelle Python strings Tra le prime funzionalità, vediamo che possiamo applicare l’**indexing** e lo **slicing**. Il primo rappresenta una lettura di un singolo carattere passando per la sua posizione conteggiata a partire da zero. Ad esempio, il quarto carattere (il numero 3 contando a partire da 0) è la ‘i’ come ci direbbe: ``` stringa[3] ``` Con il termine **slicing** indichiamo invece la possibilità di estrarre una porzione di stringa indicando i due indici che la delimitano (il secondo non è incluso nel risultato). Con l’indicazione: ``` stringa[3:12] ``` otteniamo: ``` 'i è una b' ``` Aspetto molto interessante consiste nella possibilità di **omettere uno dei due indici**. In tal caso, in quella direzione la stringa verrà presa per intero. Inoltre, si possono utilizzare **indici negativi** con i quali le lettere saranno conteggiate a partire dalla fine della stringa e l’ultimo carattere sarà indicato con -1. L’espressione: ``` stringa[-6:] ``` restituisce infatti: ``` 'ornata' ``` » VUOI SAPERNE DI PIÙ? VAI AI NOSTRI [CORSI PYTHON](https://devacademy.it/percorsi/python-developer/) « ## Metodi delle stringhe in Python In **linguaggio Python** le stringhe dispongono anche di molti **metodi**. Ad esempio, *upper* concede la restituzione di una stringa convertita in maiuscolo, mentre *lower* una sua versione interamente minuscola. Ad esempio con: ``` stringa.upper() ``` abbiamo: ``` 'OGGI È UNA BELLA GIORNATA' ``` E al contrario con: ``` stringa.lower() ``` otteniamo: ``` 'oggi è una bella giornata' ``` Funzioni di questo tipo non hanno uno scopo puramente decorativo ma servono per eseguire confronti tra stringhe. Python è infatti un linguaggio *case-sensitive* pertanto se volessimo verificare che una stringa contenga la parola “stop” indipendentemente dall’uso di caratteri minuscoli o maiuscoli potremmo usare proprio tali funzioni di conversione. Il seguente controllo, ad esempio, è in grado di dimostrare che le stringhe “sTOp” e “STOP” contengono le stesse lettere sebbene con uso di maiuscole e minuscole diverso: ``` 'sTOp'.upper()=='STOP' ``` Per citare alcune funzionalità interessanti notiamo che con il metodo *replace* si può ottenere una nuova stringa in cui sia avvenuta una sostituzione. Con il seguente esempio possiamo trasformare: ``` “Oggi è una bella giornata” ``` in: ``` “Oggi non è una bella giornata” ``` Per fare ciò, bisognerà scrivere questo codice: ``` stringa.replace('è','non è') ``` Il metodo *split* rappresenta l’anello di congiunzione tra stringhe e liste infatti permette di separare le stringhe in porzioni diverse a seconda del carattere passato come argomento. Di default, *split* separa le stringhe in base agli spazi: ``` stringa.split() ``` producendo, nel nostro caso, la seguente lista: ``` ['Oggi', 'è', 'una', 'bella', 'giornata'] ``` Con *count* possiamo contare il numero di occorrenze di una certa stringa in un’altra. Quante ‘a’ ci sono in “Oggi è una bella giornata”? Ecco la risposta, sono quattro: ``` stringa.count('a') ``` Altre utilità interessanti sono, a titolo di esempio, *zfill* che porta una stringa almeno alla lunghezza da noi desiderata completandola con degli zero, molto utile per realizzare degli identificativi progressivi tutti del medesimo numero di caratteri. Con: ``` '4'.zfill(4) ``` otteniamo: ``` '0004' ``` » VUOI SAPERNE DI PIÙ? VAI AI NOSTRI [CORSI PYTHON](https://devacademy.it/percorsi/python-developer/) « ## Come concatenare le stringhe in Python Importante sapere che **una stringa non può essere concatenata con un numero**. Ad esempio, se volessimo creare una sola stringa unendo le seguenti parti: ``` nome='equipe' numero=84 ``` usando nome+numero otterremmo il seguente errore: ``` Traceback (most recent call last): File "", line 1, in TypeError: can only concatenate str (not "int") to str ``` Per ovviare a ciò si potrebbe convertire il numero in stringa con la funzione *str*: ``` nome+str(numero) ``` producendo così: ``` 'equipe84' ``` o, ancora meglio, utilizzando le **f-string**, l’elegantissimo sistema introdotto in Python 3.6, con cui si possono **concatenare variabili** all’interno di una stringa mediante l’uso di **parentesi graffe**: ``` f'{nome}{numero}' ``` Nei programmi Python che realizzeremo le stringhe saranno i vettori con cui trasporteremo dati raccolti in Rete, estratti da file o database o prodotti dai nostri utenti; con tutti i metodi a disposizione potremo dunque essere davvero padroni delle nostre informazioni. » VUOI SAPERNE DI PIÙ? VAI AI NOSTRI [CORSI PYTHON](https://devacademy.it/percorsi/python-developer/) « **Categorie:** Python **Tag:** Python --- ### [PHP substr: come estrarre una sottostringa da una stringa](https://devacademy.it/php-substr-come-estrarre-una-sottostringa-da-una-stringa/) **Published:** Marzo 14, 2022 **Author:** Giuseppe Maggi **Content:** La funzione **PHP substr** permette di **estrarre una sottostringa da una stringa** in base al conteggio di caratteri. Ma in che modo? Considera che la funzione **substr** riceve sempre un massimo di **tre argomenti**: - la **stringa** su cui lavorare; - la **posizione iniziale** di partenza; - il **numero di caratteri da estrarre** a partire dalla posizione di partenza. Questo argomento è opzionale e, se non indicato, substr restituirà tutta la porzione di stringa a destra di quella indicata dal secondo argomento. Vediamo allora alcuni esempi della funzione **substr** in PHP. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) Se invochiamo: ``` substr("Gallina vecchia fa buon brodo",4); ``` otterremo tutta la porzione di stringa a partire dal quinto carattere (posizione quattro conteggiata da zero) ovvero ``` “ina vecchia fa buon brodo” ``` Utilizzando anche il terzo argomento potremo richiedere quattordici caratteri a partire dal quinto ovvero con: ``` substr("Gallina vecchia fa buon brodo",4, 14); ``` otterremo ``` “ina vecchia fa” ``` Se desideri rimanere aggiornato sulle nostre guide e imparare tutto sul linguaggio di programmazione PHP, continua a leggere le nostre guide oppure segui il nostro corso. **VUOI IMPARARE A PROGRAMMARE IN PHP?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [VAI AL CORSO PHP](https://devacademy.it/percorsi/php-developer/) **Categorie:** PHP **Tag:** PHP --- ### [JavaScript date format: formati per le date in Javascript](https://devacademy.it/javascript-date-format-formati-per-le-date-in-javascript/) **Published:** Marzo 18, 2022 **Author:** Giuseppe Maggi **Content:** In [Javascript](https://devacademy.it/javascript/), le date vengono gestite mediante l’oggetto **Date**. Questo accetta informazioni in tre formati principali: - **Short date**, il formato corto: si tratta di indicare mese, giorno e anno (i primi due su due cifre ed il quarto su quattro) separati dal simbolo slash (/). Ad esempio, la stringa: ``` "07/16/2020" ``` starebbe ad indicare il 16 luglio del 2020. É un formato in stile “americano” pertanto si deve stare attenti a non farsi confondere dallo scambio di posizione tra giorno e mese rispetto alle date “all’italiana”; - **Long date**, il formato lungo: è caratterizzato dal mese espresso con tre lettere e l’uso degli spazi per separare le componenti al posto degli slash. Per indicare il 16 luglio del 2020, sarebbe valida sia la forma: ``` "16 Jul 2020" ``` che: ``` "Jul 16 2020" ``` - Lo **standard internazionale ISO**: molto usato nei salvataggi di dati in quanto l’ordine cronologico coincide con quello alfabetico. Si forma con anno su quattro cifre, mese su due e giorno su due separati da trattini. Ad esempio: ``` "2020-07-16" ``` Vediamoli ora con un po’ di codice. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) I seguenti oggetti dichiarati in JavaScript: ``` data1 = new Date("2020-07-16") ``` ``` data2 = new Date("Jul 16 2020") ``` ``` data3 = new Date("07/16/2020") ``` corrispondono tutti al giorno 16 luglio 2020. Si noti in particolare che il formato “Jul 16 2020”, come detto, sarebbe sostituibile perfettamente con “16 Jul 2020” mentre, per quanto riguarda la terza data, se sostituissimo “07/16/2020” con “16/07/2020” otterremmo un *Invalid Date* in quanto il mese numero 16 non esiste. **VUOI IMPARARE A PROGRAMMARE IN JAVASCRIPT?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [VAI AI CORSI JAVASCRIPT](https://devacademy.it/percorsi/javascript-developer/) **Categorie:** Javascript **Tag:** javascript --- ### [SQL SELECT: come interrogare un database con SELECT in SQL](https://devacademy.it/sql-select-come-interrogare-un-database-con-select-in-sql/) **Published:** Marzo 21, 2022 **Author:** Giuseppe Maggi **Content:** Il comando SQL **SELECT** è uno dei più utilizzati in assoluto nel [linguaggio SQL](https://devacademy.it/linguaggio-sql/) e serve per **interrogare database estraendo dati**, in pratica per svolgere quelle operazioni comunemente chiamate **query**. Vediamo in questo articolo come funziona attraverso alcuni esempi pratici. Il comando **SQL SELECT** si compone di diverse porzioni che possono servire per raffinare la ricerca che si sta eseguendo: - la parola chiave **SELECT** è seguita dai campi di una tabella che vogliamo visualizzare nel risultato. Se indichiamo in questo punto un asterisco stiamo specificando che vogliamo ottenere tutti i campi della tabella; - la parola **FROM** serve ad indicare da quale tabella vogliamo estrarre i dati. Può contenere una struttura più avanzata chiamata JOIN che permette di incrociare dati di più tabelle; - la clausola **WHERE** attua un filtro ovvero specifica le condizioni per cui una determinata riga della tabella può rientrare nel risultato; - il **GROUP BY** serve a raggruppare i risultati per eseguire delle elaborazioni; - la clausola **[ORDER BY](https://devacademy.it/sql-order-by-ordinare-i-risultati-di-una-select/)** serve ad ordinare i risultati; - **LIMIT** specifica il numero di risultati che vogliamo vengano restituiti. É il fondamento della paginazione. Vediamo alcuni esempi dell’uso di **SELECT** in SQL. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) Supponiamo di avere una tabella *candidati* con all’interno i dati di una serie di candidati ad una specifica posizione lavorativa. Con: ``` SELECT * FROM candidati ``` andiamo a richiedere tutto il contenuto della tabella, mentre con: ``` SELECT nome, cognome, voto_inglese FROM candidati WHERE voto_inglese>=6 ``` chiediamo tutti i candidati che hanno conseguito almeno 6 nella prova di inglese ed in particolare vogliamo sapere il loro nome, cognome e la valutazione conseguita. Con: ``` SELECT nome, cognome, voto_inglese FROM candidati WHERE voto_inglese>=6 ORDER BY voto_inglese DESC ``` li metteremo in ordine decrescente di voto di inglese, dal più alto al più basso mentre con: ``` SELECT nome, cognome, voto_inglese FROM candidati WHERE voto_inglese>=6 ORDER BY voto_inglese DESC LIMIT 10 ``` limiteremo i risultati alle prime dieci posizioni. Insomma, le potenzialità di esplorazione dei dati di una **SELECT** sono infinite. **VUOI IMPARARE A PROGRAMMARE?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [**SCOPRI I CORSI**](https://devacademy.it/corsi/) | [**ISCRIVITI**](https://devacademy.it/prezzi/) **Categorie:** Database, SQL **Tag:** database, sql --- ### [JavaScript if, else if, else: costrutti condizionali in Javascript](https://devacademy.it/javascript-if-else-if-else-costrutti-condizionali-in-javascript/) **Published:** Aprile 8, 2022 **Author:** Giuseppe Maggi **Content:** I **costrutti condizionali** vengono usati per eseguire azioni differenti a seconda di determinate condizioni. Tutto questo permette ai nostri programmi di prendere decisioni e di cambiare il suo flusso a seconda di quello che accade. Il costrutto **JavaScript if** ci aiuta proprio in questo, vediamo come. Elaborare costrutti condizionali, come accennato, permette di inserire punti di snodo nella logica di un programma in modo che, in base a determinate condizioni, il flusso di esecuzione possa essere convogliato verso un blocco di codice piuttosto che in un altro. La parola chiave regina di questo meccanismo è **if** in qualsiasi linguaggio ed in questo post la vediamo applicata in JavaScript. [![](https://devacademy.it/wp-content/uploads/2022/10/100-ore-gratis.gif)](https://devacademy.it/registrati/) La parola chiave **if** si trova spesso accompagnata da **else if** e **else**: - **if** è corredata con una condizione e seguita da un blocco di codice. Se la condizione risulta vera il blocco di codice viene eseguito una sola volta; - **else if** è usato a cascata di un if ed è seguito da un’altra condizione booleana e da un altro blocco di codice. Se la condizione dell’if a cui l’else if è collegato risulta falsa allora viene verificata quella dell’else if che, se vera, porterà all’esecuzione del blocco di codice al suo interno; - **else** si trova alla fine di un blocco if – else if e offre un’alternativa da attuare nel caso in cui tutte le condizioni dei vari if ed else if collegati siano risultate false. Proviamo a descrivere a parole un tipico **blocco if**, **else if**, **else**: ``` Se (questa condizione è vera): //esegui questo codice; Altrimenti Se (questa seconda condizione è vera): //esegui questo nuovo blocco di codice al posto del precedente Altrimenti (se nessuna delle condizioni di cui sopra è vera): //esegui questo blocco codice senza considerare i precedenti; ``` Come vedete più facile a farsi, che a dirsi. La struttura dell’**if in JavaScript** è la seguente: ``` if (condizione){ // blocco di codice da eseguire se la condizione è vera } ``` vediamo un piccolo esempio, vogliamo mostrare un alert che informa l’utente che può iscriversi a scuola guida per prendere la patente dell’auto solo se è maggiorenne: ``` if (eta >= 18){ alert("Sei maggiorenne! Puoi iscriverti a scuola guida!"); } ``` Se si vuole porre un’alternativa al blocco di codice qualora la condizione fosse falsa si potrebbe agganciare semplicemente un **else** (quindi quando non è necessario verificare ulteriori condizioni): ``` if (condizione){ // blocco di codice da eseguire se la condizione è vera } else{ // blocco di codice da eseguire se la condizione è falsa } ``` Riprendendo l’esempio precedente potremmo mostrare un altro alert nel caso l’età dell’utente fosse inferiore ai 18 anni: ``` if (eta >= 18){ alert("Sei maggiorenne! Puoi iscriverti a scuola guida!"); } else { alert("Sei troppo piccolo, non puoi ancora guidare!"); } ``` Tra l’if e l’else potremmo porre però delle alternative con uno o più **else if** in questo modo: ``` if (condizione1){ // blocco di codice da eseguire se condizione1 è vera } else if (condizione2 da valutare solo se condizione1 è falsa){ // blocco di codice da eseguire se condizione2 è vera } else{ // blocco di codice da eseguire se sia condizione1 sia condizione2 sono false } ``` Tornando al nostro esempio, se l’utente non è maggiorenne potremmo verificare se ha almeno 16 anni, in tal caso potremmo ricordargli che può guidare il motorino: ``` if (eta >= 18){ alert("Sei maggiorenne! Puoi iscriverti a scuola guida!"); } else if (eta >= 16) { alert("Non puoi guidare la macchina, ma puoi guidare il motorino!"); } else { alert("Sei troppo piccolo, non puoi ancora guidare!"); } ``` Come vedi è molto semplice da usare. Un blocco **if/else** if potrebbe anche non disporre di un else, anche se sarebbe sempre meglio prevederne uno. Se infine nel tuo codice prevedi l’uso di diversi else if, potresti pensare di utilizzare al suo posto il [costrutto switch](https://devacademy.it/javascript-switch-esegui-azioni-diverse-a-diverse-condizioni/). **VUOI IMPARARE A PROGRAMMARE IN JAVASCRIPT?**Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi! OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂 [VAI AI CORSI JAVASCRIPT](https://devacademy.it/percorsi/javascript-developer/) **Categorie:** Javascript **Tag:** javascript --- ## Pagine ### [Home](https://devacademy.it/) **Published:** Giugno 21, 2016 **Author:** Rino Picardi --- ### [Benvenuto](https://devacademy.it/thank-you/) **Published:** Ottobre 4, 2018 **Author:** Rino Picardi **Content:** Grazie per esserti registrato su devACADEMY. ## CONTROLLA LA MAIL E CONFERMA IL TUO INDIRIZZO o non potrai accedere al sito e l’account verrà sospeso. Se non trovi la mail controlla nella cartella dello spam. ## Con un’unica iscrizione puoi accedere a TUTTI i corsi 🙂 Non sai da dove partire? Scegli un corso e segui le prime lezioni gratuitamente. [Prova gratis](https://devacademy.it/corsi/) --- ### [Benvenuto](https://devacademy.it/benvenuto/) **Published:** Giugno 13, 2017 **Author:** Rino Picardi **Content:** Il tuo piano è ora attivo, grazie per esserti iscritto alla nostra academy. ## Hai già scelto il primo corso? Cosa aspetti, fallo subito 🙂 [SCOPRI TUTTI I NOSTRI CORSI](https://devacademy.it/corsi) --- ### [Call confermata](https://devacademy.it/call-confermata/) **Published:** Marzo 10, 2026 **Author:** Rino Picardi **Content:** Grazie per aver prenotato la call. Riceverai una mail con tutti i dettagli dell’appuntamento. A presto. --- ### [Prezzi](https://devacademy.it/prezzi/) **Published:** Giugno 21, 2016 **Author:** Rino Picardi --- ### [Cookies Policy](https://devacademy.it/cookies-policy/) **Published:** Settembre 26, 2016 **Author:** Rino Picardi **Content:** [Cookie Policy](https://www.iubenda.com/privacy-policy/7927146/cookie-policy "Cookie Policy") --- ### [Privacy Policy](https://devacademy.it/privacy-policy/) **Published:** Ottobre 2, 2020 **Author:** Rino Picardi **Content:** [Privacy Policy](https://www.iubenda.com/privacy-policy/7927146 "Privacy Policy") --- ### [Ordine Annullato](https://devacademy.it/ordine-annullato/) **Published:** Giugno 15, 2023 **Author:** Matteo Merlotti **Content:** Ops, il pagamento non è andato a buon fine…## Se hai riscontrato qualche problema durante la procedura scrivici via chat o via mail e ti daremo tutto il supporto di cui hai bisogno! ## Non vediamo l’ora di vederti tra noi 🙂 --- ### [Paypal Order](https://devacademy.it/paypal-order/) **Published:** Maggio 7, 2024 **Author:** Matteo Merlotti **Content:** Il tuo pacchetto è ora attivo, grazie per aver acquistato delle sessioni con i tutor.## Hai bisogno di un tutor? Cosa aspetti, prenota subito 🙂 [VAI AI CORSI](https://devacademy.it/corsi) --- ### [Crea annuncio di lavoro](https://devacademy.it/crea-annuncio-di-lavoro/) **Published:** Novembre 25, 2022 **Author:** Matteo Merlotti --- ### [Elenco annunci creati](https://devacademy.it/elenco-annunci-creati/) **Published:** Novembre 25, 2022 **Author:** Matteo Merlotti --- ### [Dettagli Annuncio](https://devacademy.it/dettagli-annuncio/) **Published:** Novembre 25, 2022 **Author:** Matteo Merlotti --- ### [token-login](https://devacademy.it/token-login/) **Published:** Maggio 31, 2021 **Author:** Rino Picardi --- ### [Termini e condizioni](https://devacademy.it/termini-e-condizioni/) **Published:** Luglio 1, 2016 **Author:** Rino Picardi **Content:** ## TERMINI E CONDIZIONI GENERALI DEL SERVIZIO **1. Oggetto** 1.1 devACADEMY è un progetto di DEVAPP S.r.l., corrente in Strada Volpiano 54, Leinì (TO), C.F. E P.IVA 11263180017, registrata presso la Camera di Commercio di Torino al n° 1199665 e consiste in un servizio in abbonamento, mediante il quale l’Utente può accedere a diversi contenuti digitali, fra cui corsi online e/o screencast, finalizzati all’apprendimento delle tecniche per realizzare e sviluppare applicazioni e siti web e applicazioni mobile per i principali smartphone e tablet . 1.2 devACADEMY è disponibile sul sito web [devacademy.it](http://devacademy.it) (di seguito, per brevità denominato solo “Sito”) attraverso tutti i principali browser, su PC, tablet e smartphone. 1.3 L’utilizzo di devACADEMY è consentito esclusivamente a soggetti (di seguito “Utente” o “Utenti”) che: (a) abbiano accettato le presenti Condizioni Generali; (b) abbiano preso visione de, e accettato, l’informativa relativa al trattamento dei dati personali; (c) siano iscritti al Sito mediante la creazione di un account “Utente Registrato” come previsto al punto 3 del presente contratto; (d) siano maggiorenni. **2. Generalità e normativa applicabile** 2.1 Le presenti condizioni generali regolano il funzionamento di devACADEMY, e costituiscono il quadro legale di riferimento che disciplina l’utilizzo del servizio. Qualsiasi disposizione divergente o supplementare stabilita alla conclusione del contratto, sarà applicata solo se concordata tra le parti e redatta per iscritto. 2.2 Le Condizioni Generali applicabili sono quelle in vigore alla data della conclusione del contratto. Le Condizioni Generali possono essere modificate in qualsiasi momento da DEVAPP S.r.l.; eventuali modifiche e/o nuove condizioni, saranno in vigore e si riterranno conosciute e/o conoscibili dall’Utente dal momento della loro pubblicazione sul Sito. 2.3 Le presenti Condizioni Generali non disciplinano la vendita di prodotti e/o la fornitura di servizi da parte di soggetti diversi da DEVAPP S.r.l. che siano eventualmente presenti sul Sito tramite link, banner o altri collegamenti ipertestuali. Prima di effettuare transazioni commerciali con tali soggetti è necessario che l’Utente verifichi le loro condizioni di vendita. DEVAPP S.r.l. non è responsabile in alcun modo per la fornitura di servizi e/o per la vendita di prodotti da parte di tali soggetti. Sui siti web eventualmente consultabili tramite tali collegamenti DEVAPP S.r.l. non effettua alcun controllo e/o monitoraggio. DEVAPP S.r.l. non è pertanto responsabile per i contenuti di tali siti né per eventuali errori e/o omissioni e/o violazioni di legge da parte degli stessi. **3. Registrazione dell’Utente e accettazione delle condizioni generali di vendita** 3.1 L’Utente, al fine di procedere alla registrazione a devACADEMY dovrà completare la procedura di registrazione al Sito fornendo le informazioni e i dati personali richiesti e indicare un indirizzo di posta elettronica per effettuare il login e una “password”, secondo quanto richiesto nell’apposita sezione del Sito. 3.2 L’Utente ha l’obbligo di fornire informazioni complete e veritiere nelle sezioni presenti nel modulo di registrazione. 3.3 L’Utente acconsente alla pubblicazione nella sezione “Curriculum Personale” del suo nome utente, delle informazioni contenute nel profilo, del percorso svolto e dei punteggi ottenuti, oltre a informazioni fornite volontariamente, come l’immagine del profilo o altro genere di dati da lui inseriti. 3.4 DEVAPP S.r.l. provvederà all’invio di una e-mail di conferma dell’avvenuta registrazione all’indirizzo di posta elettronica fornito dall’Utente Registrato nel corso della procedura di registrazione. 3.5 L’Utente Registrato è tenuto a leggere attentamente le presenti Condizioni Generali che potranno essere visualizzate in ogni momento durante il processo di registrazione e invio dell’ordine di acquisto mediante l’accesso a pop-up o link ipertestuale presente sul sito; le stesse si daranno per conosciute ed accettate cliccando nell’apposita casella contrassegnata dalla dicitura “Accetto i termini e le condizioni d’uso e dichiaro di essere maggiorenne”. 3.6 L’accettazione da parte dell’Utente delle presenti condizioni è, in ogni caso, condizione necessaria e imprescindibile per la valida conclusione del contratto. **4. Conclusione del contratto e disdetta** 4.1 L’Utente, registrato come al punto precedente, può scegliere tra quattro tipologie di abbonamento, in relazione al contenuto dell’offerta (basic o pro) e alla durata del rapporto (con rinnovo mensile o annuale). 4.2 La differenza tra il contratto di tipo basic o pro è indicata specificamente all’interno della relativa scheda sul Sito, all’interno della quale l’Utente trova tutte le indicazioni necessarie rispetto al prezzo (da intendersi comprensivo dell’IVA) ed al contenuto analitico dell’offerta. 4.3 Rispetto alla durata, l’Utente può optare tra le seguenti tipologie di rapporto: A) Abbonamento (basic o pro) con rinnovo mensile: optando per questa soluzione, l’Utente sottoscrive un abbonamento a devACADEMY con rinnovo di mese in mese. B) Abbonamento con rinnovo annuale: optando per questa soluzione, l’Utente sottoscrive un abbonamento a devACADEMY con rinnovo di anno in anno, a pagamento anticipato, beneficiando di uno sconto rispetto al prezzo indicato per l’abbonamento mensile. 4.4 Nel caso in cui l’utente effettui il pagamento a mezzo PayPal il rinnovo avverrà in automatico alla scadenza del periodo. La disdetta sarà sempre possibile attraverso il proprio account PayPal, con le modalità ivi previste, entro e non oltre la scadenza del periodo precedente. In caso di mancata disdetta, si intende che l’Utente abbia dato il proprio assenso a continuare l’abbonamento e il servizio proseguirà per il mese successivo, con addebito dei relativi costi. 4.5 In caso di pagamento con le altre modalità ammesse, indicate sul Sito, il servizio cesserà automaticamente alla scadenza del periodo concordato, fintanto che DEVAPP S.r.l. non riceva il pagamento per il periodo successivo; in questo caso, farà seguito l’aggiornamento della scadenza del contratto sul Sito. 4.6 Nel caso in cui il metodo di pagamento non dovesse risultare valido, il servizio verrà immediatamente sospeso, fino a che non risulti nuovamente possibile l’accredito a DEVAPP S.r.l. 4.7 Il tipo di addebito, i prezzi e il periodo sono definiti in ogni offerta e prima della conclusione del processo di ordinazione viene fornito un riepilogo. Premendo il tasto “Abbonati”, l’Utente viene reindirizzato sul sito PayPal.com per il pagamento. Il contratto è vincolante per l’Utente quando venga premuto il pulsante “Paga ora” sul sito PayPal.com, così confermando la volontà di sottoscrivere il servizio in abbonamento. Da questo momento diventa esigibile, da parte di DEVAPP S.r.l. il pagamento del prezzo, come indicato nella scheda descrittiva del Servizio. 4.8 Una volta inviato l’ordine di acquisto, DEVAPP S.r.l., in conformità all’artt. 51 co. 7 A e 49 Codice del Consumo, invierà al Cliente all’indirizzo di posta elettronica indicato, una e-mail di conferma contenente la descrizione del Servizio acquistato, della durata dell’abbonamento, del prezzo pagato, del mezzo di pagamento utilizzato, delle modalità di recesso (previste per il solo Utente Consumatore, per cui si rimanda al punto successivo delle presenti CG). 4.9. Il contratto è costituito dalle presenti condizioni e dalla mail di cui al punto che precede; pertanto, si raccomanda all’Utente di conservare entrambi i documenti su supporto durevole. 4.10 L’Utente verrà abilitato ad accedere ai corsi presenti sul Sito, non appena DEVAPP S.r.l. avrà ricevuto conferma del pagamento dell’importo totale dovuto. 4.11 DEVAPP S.r.l. si riserva il diritto di rifiutare gli ordini provenienti da Utenti che non diano sufficienti garanzie di solvibilità o con i quali siano pendenti controversie. **5. Recesso** 5.1. Il diritto di recesso riguarda unicamente l’Utente Consumatore ed è regolato dagli artt. 52 e ss. del Codice del Consumo. Non è previsto alcun diritto di recesso per il Cliente che non sia al contempo definibile Consumatore. 5.2 In caso di abbonamento mensile (basic o pro), l’Utente Consumatore viene immesso nella immediata disponibilità dei contenuti digitali che formano devACADEMY; ne consegue che, in conformità all’art. 59 lett. A e O Codice di Consumo, l’Utente Consumatore non dispone del diritto di recesso. Con l’acquisto del Servizio in abbonamento, si intende che l’esecuzione del contratto è iniziata con l’accordo espresso del consumatore e con la sua accettazione del fatto che, in tal modo, è perduto il diritto di recesso e, con esso, il diritto a ripetere il prezzo pagato al momento della conclusione del contratto. 5.3 In caso di abbonamento annuale (basic o pro), l’Utente Consumatore ha diritto di recedere dal contratto entro 14 giorni dalla sua sottoscrizione, senza alcuna penalità e senza specificarne il motivo. In questo caso, in considerazione del fatto che l’Utente ha già avuto accesso ai contenuti informatici del Sito, DEVAPP S.r.l. tratterrà comunque il prezzo corrispondente alla prima mensilità del servizio; quest’ultima verrà computata a prezzo pieno, come per il contratto di tipo mensile, senza lo sconto che, invece, è prerogativa del rapporto su base annuale. 5.4 Il diritto di recesso dovrà essere esercitato inoltrando all’indirizzo e-mail ovvero a mezzo posta alla sede di DEVAPP S.r.l., in Leinì, strada Volpiano 54, una dichiarazione dal contenuto conforme all’allegato b D. Lgs. 21/2014, contenente le generalità dell’Utente Consumatore, l’indicazione del numero del contratto e della data in cui questo è stato effettuato. 5.5. In caso di recesso dell’Utente Consumatore, il relativo rimborso avverrà mediante riaccredito del prezzo sul conto corrente PayPal intestato all’Utente, entro 14 giorni dal ricevimento da parte di DEVAPP S.r.l. della comunicazione contenente la dichiarazione di recesso. **6. Pagamento e fatturazione** 6.1 L’utente può effettuare il pagamento attraverso uno dei metodi indicati sul Sito. 6.2 La fattura elettronica verrà emessa entro i termini previsti dalle normative vigenti per i soli acquirenti con P.IVA (professionisti, ditte individuali, società…). 6.3 Per gli acquisti effettuati dal consumatore privato (senza P.IVA) non sarà emessa fattura a meno che questa non venga richiesta espressamente al momento dell’acquisto (Art. 22 comma 1 n. 1 – D.P.R. 633/72: “L’emissione della fattura non è obbligatoria, se non è richiesta dal cliente non oltre il momento di effettuazione dell’operazione). **7. Obblighi e responsabilità di DEVAPP S.r.l.** 7.1 DEVAPP S.r.l. si impegna ad assicurare il funzionamento corretto del portale in ogni momento, tuttavia, non garantisce l’accesso senza interruzioni. 7.2 Per la fornitura dei Servizi che costituiscono devACADEMY, DEVAPP S.r.l. utilizza la tecnologia correntemente e abitualmente impiegata nel settore. Per essere in grado di usufruire pienamente dei servizi offerti, l’Utente deve servirsi analogamente di queste tecnologie (ad es. browser aggiornato, Adobe Flash) oppure consentirne l’impiego sul proprio computer (ad es. attivare Java Script, autorizzare i cookies e le finestre popup). Se si utilizzano tecnologie non attuali o non di uso comune, l’Utente potrebbe essere in grado di usufruire di devACADEMY solo in modo limitato. 7.3 Sono escluse richieste di risarcimento danni da parte dell’Utente, in ipotesi di mancato o limitato funzionamento del Servizio per le motivazioni di cui al punto che precede. 7.4 In ogni caso, DEVAPP S.r.l. non sarà responsabile in ipotesi di mancato guadagno, perdite di ricavi, di utili, di dati o per ogni altro danno indiretto e consequenziale di qualsiasi natura derivante o comunque connesso ai contratti soggetti alle Condizioni Generali. 7.5 La responsabilità di DEVAPP S.r.l. in ogni caso, non potrà essere superiore al valore totale dell’ordine di acquisto. 7.6 In nessun caso DEVAPP S.r.l. potrà essere ritenuta responsabile per l’inadempimento a uno qualunque degli obblighi a essa derivanti dai contratti soggetti alle Condizioni Generali nell’ipotesi in cui l’inadempimento sia causato da caso fortuito e/o forza maggiore, ivi compresi, a titolo meramente esemplificativo, provvedimenti della Pubblica Autorità, scioperi, catastrofi naturali, atti terroristici, malfunzionamenti della rete e/o blackout. 7.7 In caso di disguido l’Utente potrà mettersi in contatto con DEVAPP S.r.l. tramite e-mail (), fax (+39 011 8003261), telefono (+39 011 8003261). 7.8. Anche gli eventuali reclami dovranno essere inoltrati al predetto indirizzo e-mail. **8. Contenuti del sito e diritti di proprietà intellettuale** 8.1 I diritti di proprietà intellettuale e/o industriale sui contenuti del Sito, quali, a titolo esemplificativo, le opere, le immagini, le fotografie, i dialoghi, le musiche, i suoni e i video, i documenti, i disegni, le figure, i loghi ed ogni altro materiale, in qualsiasi formato, compresi i menu, le pagine web, la grafica, i colori, gli schemi, gli strumenti, i caratteri ed il design del Sito stesso, i diagrammi, il layout, i metodi, i processi, le funzioni ed il software, sono di esclusiva proprietà di DEVAPP S.r.l. E’ vietata la riproduzione, la modifica, la duplicazione, la copia, la distribuzione, la vendita o comunque lo sfruttamento delle immagini, dei contenuti del Sito se non preventivamente autorizzata per iscritto da DEVAPP S.r.l. E’ altresì vietato qualsiasi uso dei contenuti del Sito per fini commerciali e/o pubblicitari. **9. Legge applicabile e foro competente** 9.1 Ogni controversia relativa all’applicazione, esecuzione, interpretazione e violazione del contratto stipulato online dall’Utente con DEVAPP S.r.l. è sottoposta alla legge e alla giurisdizione italiana. 9.2 Per qualsiasi controversia tra le parti relativa all’esecuzione o interpretazione del presente contratto è competente il Foro di Torino, fatte salve le disposizioni in materia contenute nel Codice del Consumo per i soli Clienti Consumatori. --- ### [Business](https://devacademy.it/business/) **Published:** Settembre 3, 2019 **Author:** Rino Picardi **Content:** Form Business Nome \* Cognome \* Azienda \* Numero dipendenti da iscrivere (min. 3) Email \* Telefono Messaggio \* Check box \* Ho preso visione dell’[informativa privacy](https://devacademy.it/privacy-policy/) e acconsento al trattamento dei miei dati personali per le finalità ivi indicate Invia Se sei un essere umano, lascia questo campo vuoto. Δ --- ### [Contattaci](https://devacademy.it/contattaci/) **Published:** Settembre 26, 2016 **Author:** Rino Picardi **Content:** Form Contatti Nome \* Cognome \* Indirizzo Email \* Telefono Motivo \* Richiesta informazioniUpgrade abbonamentoPagamento tramite bonificoCandidatura spontaneaAltro Motivo Oggetto \* Messaggio \* Check box \* Ho preso visione dell’[informativa privacy](https://devacademy.it/privacy-policy/) e acconsento al trattamento dei miei dati personali per le finalità ivi indicate reCAPTCHA ![Invio](https://devacademy.it/wp-content/plugins/formidable/images/ajax_loader.gif) Se sei un essere umano, lascia questo campo vuoto. Δ --- ### [StartupItalia](https://devacademy.it/startupitalia/) **Published:** Novembre 7, 2017 **Author:** Rino Picardi --- ### [Riepilogo](https://devacademy.it/riepilogo/) **Published:** Ottobre 23, 2017 **Author:** Rino Picardi **Content:** Accedi a tutti i corsi con un’unica iscrizione Una volta iscritto potrai gestire l’abbonamento in totale autonomia direttamente dal tuo account PayPal. Il prezzo resterà bloccato finché il piano sarà attivo. --- ### [Share badge corso](https://devacademy.it/s/) **Published:** Settembre 14, 2016 **Author:** Rino Picardi **Content:** qui ci sarà la pagina con il badge del corso --- ### [Share badge percorso](https://devacademy.it/share-badge-percorso/) **Published:** Settembre 14, 2016 **Author:** Rino Picardi **Content:** Qui ci sarà la pagina del badge del percorso --- ### [Accedi](https://devacademy.it/accedi/) **Published:** Giugno 21, 2016 **Author:** Rino Picardi **Content:** Ricordami [Registrati](https://devacademy.it/registrati/) [Hai perso la password?](https://devacademy.it/recupera-password/) --- ### [Fatture utente](https://devacademy.it/fatture-utente/) **Published:** Agosto 29, 2016 **Author:** Rino Picardi --- ### [Recupera password](https://devacademy.it/recupera-password/) **Published:** Luglio 1, 2016 **Author:** Rino Picardi **Content:** --- ### [Registrati](https://devacademy.it/registrati/) **Published:** Giugno 21, 2016 **Author:** Rino Picardi **Content:** \*Nome Utente \*Nome \*Cognome \*Email \*Password- - - - - \*Cosa vuoi fare?Voglio iniziare da zeroVoglio diventare sviluppatore webVoglio lavorare con l’Intelligenza ArtificialeVoglio lavorare con i dati (Data Science)Voglio sviluppare app mobileVoglio migliorare le mie competenzeVoglio creare progetti / applicazioni realiNon sono sicuro, voglio orientarmi(Ctrl + click oppure Cmd + click per selezione multipla) \*Qual è il tuo livello attuale?Nessuna esperienzaBaseIntermedioAvanzato \*Su cosa vuoi concentrarti?Intelligenza ArtificialeData Science, Big Data, Machine learningPythonCloud (AWS, Google Cloud)DevOps (Git, Docker, Kubernetes)Sviluppo Web Frontend (HTML, CSS, JavaScript, TypeScript)Framework Frontend (Angular, React, Vue.js)Sviluppo Web Backend (Node.js, PHP, Java, .NET, C#)Database (SQL, MySQL, MongoDB)Sviluppo App Mobile (React Native, Flutter, NativeScript)Sviluppo iOS / Android (Swift, Kotlin, Java)CMS WordPressAltro(Ctrl + click oppure Cmd + click per selezione multipla) \*Come ci hai conosciuti?Ricerca su google (o altro motore di ricerca)Annuncio o post su facebookAnnuncio o post su LinkedinTramite un link su un altro sitoPassaparolaConvenzioneEvento o fieraContatto commerciale Coupon [\*Accetto i termini e le condizioni d’uso, dichiaro inoltre di essere maggiorenne e che i dati da me inseriti, validi per la fatturazione, sono veritieri e reali](https://devacademy.it/termini-e-condizioni/) \*In caso di acquisto a mezzo PayPal accetto sin d’ora le condizioni di cui all’[art. 4 Condizioni Generali](https://devacademy.it/termini-e-condizioni/) del contratto in relazione a pagamento e disdetta del contrattoAccetto Desidero ricevere informazioni su sconti, promozioni e convenzioni da devACADEMYAccetto Desidero iscrivermi alla newsletter e ricevere aggiornamenti via mail da devACADEMY (es. disponibilità nuovi corsi online, comunicazioni e avvisi…)Accetto \*Ho preso visione dell’[informativa privacy](https://devacademy.it/privacy-policy/) e acconsento al trattamento dei miei dati personali per le finalità ivi indicateAccetto ## Dati di fatturazione Inserisci i dati di fatturazionefattura \*Tipo Accountprivatoazienda \*Codice Fiscale Partita IVA SDI / PEC Ragione Sociale \*Indirizzo \*C.A.P. \*Città \*Provincia --- ### [Account utente](https://devacademy.it/account-utente/) **Published:** Giugno 22, 2016 **Author:** Rino Picardi --- ### [I miei corsi](https://devacademy.it/i-miei-corsi/) **Published:** Luglio 7, 2016 **Author:** Rino Picardi --- ### [Logout](https://devacademy.it/logout/) **Published:** Luglio 1, 2016 **Author:** Rino Picardi --- ## Percorsi ### [Python Developer](https://devacademy.it/percorsi/python-developer/) **Published:** Giugno 17, 2019 **Author:** Rino Picardi **Excerpt:** Impara a programmare in Python, uno dei linguaggi di programmazione più usati al mondo dal web al networking, dall'analisi dei dati all'intelligenza artificiale e al machine learning. --- ### [Data Scientist](https://devacademy.it/percorsi/data-scientist/) **Published:** Luglio 29, 2021 **Author:** Rino Picardi **Excerpt:** Impara ad analizzare dati e costruire modelli di machine learning con Python, SQL e Spark, partendo da zero fino ai modelli predittivi. --- ### [PHP Developer](https://devacademy.it/percorsi/php-developer/) **Published:** Gennaio 9, 2017 **Author:** Rino Picardi **Excerpt:** Impara a creare siti dinamici e applicazioni web in genere con il linguaggio più usato nel web grazie al percorso per programmatori PHP. --- ### [AI Expert](https://devacademy.it/percorsi/ai-expert/) **Published:** Marzo 13, 2025 **Author:** Rino Picardi **Excerpt:** Diventa un esperto di Intelligenza Artificiale, grazie ad un percorso pratico, completo e in continua evoluzione per chiunque voglia passare dalla teoria alla costruzione di soluzioni reali con l'AI. --- ### [AWS Cloud Architect](https://devacademy.it/percorsi/aws-cloud-architect/) **Published:** Giugno 25, 2025 **Author:** Rino Picardi **Excerpt:** Progetta, costruisci e ottimizza soluzioni in Cloud su AWS, la piattaforma cloud più completa e diffusa al mondo, ideale per sviluppare applicazioni moderne, scalabili e sicure. --- ### [Javascript Developer](https://devacademy.it/percorsi/javascript-developer/) **Published:** Novembre 22, 2017 **Author:** Rino Picardi **Excerpt:** Impara a programmare in JavaScript, uno dei linguaggi di programmazione più popolari al mondo usato nel web, in ambito server, nelle app mobile e nell' IoT (Internet of things). --- ### [Java Web Developer](https://devacademy.it/percorsi/java-web-developer/) **Published:** Febbraio 9, 2024 **Author:** Rino Picardi **Excerpt:** Diventa un Web Developer, impara a creare applicazioni web (e non solo) utilizzando il linguaggio Java e Spring, le tecnologie per lo sviluppo più diffuse al mondo. --- ### [Full Stack Developer](https://devacademy.it/percorsi/full-stack-developer/) **Published:** Novembre 17, 2020 **Author:** Rino Picardi **Excerpt:** Diventa Full Stack Developer con Vue.js e Laravel, i più popolari framework per lo sviluppo di applicazioni web --- ### [.NET Web Developer](https://devacademy.it/percorsi/net-web-developer/) **Published:** Luglio 21, 2022 **Author:** Rino Picardi **Excerpt:** Diventa un Web Developer, impara a creare applicazioni web (e non solo) utilizzando il linguaggio C#, il framework .NET Core e le principali tecnologie Microsoft --- ### [Angular Developer](https://devacademy.it/percorsi/angular-developer/) **Published:** Luglio 1, 2020 **Author:** Rino Picardi **Excerpt:** Impara ad utilizzare Angular, il framework javascript creato da Google grazie al quale potrai creare fantastiche Single Page Application (SPA) con il framework più utilizzato al mondo --- ### [React Developer](https://devacademy.it/percorsi/react-developer/) **Published:** Luglio 1, 2020 **Author:** Rino Picardi **Excerpt:** Grazie al percorso per programmatori React imparerai a sviluppare fantastiche applicazioni web e mobile cross-platform per iOS e Android con React, Redux, React Native, Next e Gatsby --- ### [Vue.js Developer](https://devacademy.it/percorsi/vue-js-developer/) **Published:** Febbraio 14, 2020 **Author:** Rino Picardi **Excerpt:** Diventa Front-end Developer con Vue.js, il framework javascript progressivo e open source con il quale potrai creare User Interface e Single Page Application (SPA) reattive, scalabili e performanti. --- ### [Back-end Developer con Laravel](https://devacademy.it/percorsi/back-end-developer-con-laravel/) **Published:** Febbraio 14, 2020 **Author:** Rino Picardi **Excerpt:** Diventa Back-end developer con Laravel, il più popolare framework PHP open source per lo sviluppo di applicazioni web --- ### [Node.js Developer](https://devacademy.it/percorsi/node-js-developer/) **Published:** Giugno 17, 2019 **Author:** Rino Picardi **Excerpt:** Impara a creare applicazioni Node.js, il motore che ha portato Javascript fuori dal browser permettendo di utilizzare questo linguaggio per ogni scopo, non solo pagine web --- ### [Big Data Expert](https://devacademy.it/percorsi/big-data-expert/) **Published:** Febbraio 14, 2020 **Author:** Rino Picardi **Excerpt:** Diventa un esperto di Big Data. Impara a gestire e ad elaborare imponenti moli di dati di estrema varietà, accumulate ad altissima velocità grazie al linguaggio Python e al framework Apache Spark. --- ### [Git Expert](https://devacademy.it/percorsi/git-expert/) **Published:** Giugno 30, 2020 **Author:** Rino Picardi **Excerpt:** Diventa un esperto di git e impara ad utilizzare il sistema di versioning più diffuso al mondo. Commit, branching, pull, push, repository, protocolli, flussi di lavoro e molto altro non avranno più segreti. --- ### [Android Developer](https://devacademy.it/percorsi/android-developer/) **Published:** Giugno 21, 2016 **Author:** Rino Picardi **Excerpt:** Inizia il tuo percorso per diventare uno sviluppatore Android. Imparerai a creare splendide app usando Java, Android Studio e Android SDK --- ### [iOS Developer](https://devacademy.it/percorsi/ios-developer/) **Published:** Gennaio 9, 2017 **Author:** Rino Picardi **Excerpt:** Impara a creare applicazioni iOS con il percorso iOS Developer. Qui imparerai a creare app non solo per iPhone e iPad, ma anche per macOS, watchOS e tvOS --- ## Docenti ### [Giuseppe Maggi](https://devacademy.it/docenti/giuseppe-maggi/) **Published:** Agosto 19, 2016 **Author:** Rino Picardi **Excerpt:** Di formazione Ingegnere Informatico, coltiva la passione per la divulgazione scrivendo articoli, sostenendo docenze e realizzando videocorsi... --- ### [Matteo Merlotti](https://devacademy.it/docenti/matteo-merlotti/) **Published:** Maggio 8, 2024 **Author:** Rino Picardi **Excerpt:** Senior Full Stack Web Developer, specializzato nello sviluppo di gestionali verticalizzati sull'informatizzazione dei processi aziendali. --- ### [Gabriele Di Simone](https://devacademy.it/docenti/gabriele-di-simone/) **Published:** Marzo 31, 2023 **Author:** Rino Picardi **Excerpt:** Affascinato fin da piccolo dal mondo dell’elettronica e dell’informatica, si laurea in ingegneria elettronica ed inizia a lavorare come freelance dal 2010... --- ### [Matteo Valenzi](https://devacademy.it/docenti/matteo-valenzi/) **Published:** Febbraio 3, 2022 **Author:** Rino Picardi **Excerpt:** Fullstack developer dal 2000 specializzato in tecnologie Microsoft .Net e c# e Angular. --- ### [Cristina Galfo](https://devacademy.it/docenti/cristina-galfo/) **Published:** Novembre 23, 2020 **Author:** Rino Picardi **Excerpt:** Laureata in informatica presso l'Università degli studi di Catania è appassionata di programmazione di linguaggi per il web. Svolge da sempre due professioni, quella di Full Stack Developer, l'altra di docente. --- ### [Adriano Grimaldi](https://devacademy.it/docenti/adriano-grimaldi/) **Published:** Dicembre 30, 2019 **Author:** Rino Picardi **Excerpt:** Appassionato di programmazione web dal 2010, Front-end developer di professione e laureato in informatica oggi è specializzato nell'uso di framework front-end tra i più utilizzati come Vue.js, React ed Angular. --- ### [Giovanni Cavallo](https://devacademy.it/docenti/giovanni-cavallo/) **Published:** Novembre 7, 2019 **Author:** Rino Picardi **Excerpt:** Full Stack Developer specializzato nello sviluppo di applicazioni web e docente di videocorsi dedicati al framework Vue.js, che dal 2016 diventa la sua passione e tecnologia chiave della sua professione insieme ad Apollo GraphQL. --- ### [Andrea Simone Costa](https://devacademy.it/docenti/andrea-simone-costa/) **Published:** Ottobre 10, 2019 **Author:** Rino Picardi **Excerpt:** Front-end Developer e studente di Informatica presso l'Università di Pisa, si appassiona alla programmazione durante gli studi in Elettronica per poi immergersi nell'universo JS, trovando in Vue un perfetto compagno di avventure. --- ### [Massimo Oliviero](https://devacademy.it/docenti/massimo-oliviero/) **Published:** Luglio 27, 2017 **Author:** Rino Picardi **Excerpt:** Fin da bambino la programmazione è stata la mia passione principale. Ho iniziato a programmare all'età di 13 anni grazie ad un videogioco e al desiderio di volerne scrivere uno tutto mio. Dal 2001 la mia passione è finalmente diventata il mio lavoro. --- ### [Ignazio Calò](https://devacademy.it/docenti/ignazio-calo/) **Published:** Dicembre 5, 2016 **Author:** Rino Picardi **Excerpt:** Ho iniziato a scrivere codice per iOS quando "app mobile" significava Applet Java per Symbian nel lontano 2009. A quell'epoca si parlava poco di iOS e insieme a devAPP.it mi sono impegnato a diffondere la "cultura iOS" con articoli e tutorials. --- ## Screencasts ### [AWS: creiamo il nostro primo server web](https://devacademy.it/screencast/aws-creiamo-il-nostro-primo-server-web/) **Published:** Giugno 21, 2023 **Author:** Rino Picardi **Excerpt:** Il primo esempio in AWS consiste spesso nella creazione di un server su macchina virtuale. Lo faremo insieme. Sarà un'esperienza importantissima soprattutto se siamo agli inizi con il Cloud. Esploreremo strumenti e mentalità di questo mondo ma ricordiamo: è solo l'inizio del nostro percorso di studi **Categorie:** _Senza categoria **Tag:** AWS, Cloud **Categorie Screencast:** AWS, Cloud --- ### [C: allocazione dinamica della memoria](https://devacademy.it/screencast/c-allocazione-dinamica-della-memoria/) **Published:** Giugno 16, 2023 **Author:** Rino Picardi **Excerpt:** Vediamo come allocare la memoria in C. Non solo impareremo ad usare le funzioni malloc e free per farlo correttamente ma scopriremo come funziona il sistema, quanto possono essere utili i puntatori ed il legame di tutto ciò con gli array. Un viaggio fondamentale per le nostre conoscenze! **Categorie:** _Senza categoria **Tag:** C **Categorie Screencast:** C --- ### [Reti neurali passo passo: i tensori](https://devacademy.it/screencast/reti-neurali-passo-passo-i-tensori/) **Published:** Maggio 28, 2025 **Author:** Rino Picardi **Excerpt:** Le Reti Neurali sono il tentativo riuscitissimo di dotare la macchina di un'intelligenza simile a quella umana. Conoscerle permette non solo di risolvere problemi di alto livello su numeri, immagini e testi, ma anche di capire a fondo da dove proviene la moderna A.I.. Iniziamo ad esplorarle insieme **Categorie:** _Senza categoria **Tag:** Intelligenza Artificiale **Categorie Screencast:** Intelligenza Artificiale --- ### [Dataclass in Python: massima efficienza per custodire dati](https://devacademy.it/screencast/dataclass-in-python-massima-efficienza-per-custodire-dati/) **Published:** Maggio 15, 2025 **Author:** Rino Picardi **Excerpt:** Le dataclass sono un costrutto ottimizzato per definire classi specificamente dedicate alla custodia dei dati. Scopriamo come implementarle in Python. Sarà semplicissimo e ci metterà in condizione di progettare classi destinate nativamente alla conservazione di informazioni **Categorie:** _Senza categoria **Tag:** Python **Categorie Screencast:** Python --- ### [Python e XML: analizzare dati con lxml](https://devacademy.it/screencast/python-e-xml-analizzare-dati-con-lxml/) **Published:** Aprile 15, 2025 **Author:** Rino Picardi **Excerpt:** Ai tempi dell'Intelligenza Artificiale e della Data Science, è fondamentale saper elaborare e conoscere ogni tipo di formato di dati. Oggi parliamo di XML, estremamente popolare in ogni genere di applicazione, ed impareremo a gestirlo mediante la libreria lxml, ideale per i linguaggi a tag **Categorie:** _Senza categoria **Tag:** Python **Categorie Screencast:** Python --- ### [Docker: crea container con utenti non root](https://devacademy.it/screencast/docker-crea-container-con-utenti-non-root/) **Published:** Aprile 8, 2025 **Author:** Rino Picardi **Excerpt:** Questo screencast propone un caso di studio molto utile in Docker, ma anche un validissimo esercizio di scrittura di Dockerfile sia a livello di sintassi sia a livello di approccio metodologico. Vediamo come creare un'immagine che non si avvii con utente root bensì con uno appena creato per noi **Categorie:** _Senza categoria **Tag:** Docker **Categorie Screencast:** Docker --- ### [Django, prima applicazione web](https://devacademy.it/screencast/django-prima-applicazione-web/) **Published:** Marzo 13, 2025 **Author:** Rino Picardi **Excerpt:** In Python non mancano alternative per lo sviluppo di applicazioni web. Una delle più note è Django strutturato su un'architettura evoluta che permetterà di sviluppare ogni tipo di progetto. Forse meno intuitivo di altri, dopo averne compreso regole e componenti ci renderà estremamente produttivi **Categorie:** _Senza categoria **Tag:** django, Python **Categorie Screencast:** django, Python --- ### [FastAPI, il modo più FAST di creare applicazioni web in Python](https://devacademy.it/screencast/fastapi-il-modo-piu-fast-di-creare-applicazioni-web-in-python/) **Published:** Marzo 5, 2025 **Author:** Rino Picardi **Excerpt:** Esistono molti framework per creare applicazioni web in Python, oggi scopriamo uno dei più veloci ed efficaci: FastAPI. Velocissimo, performante, ad alta produttività, FastAPI permette di creare in poche righe applicazioni e API REST in linguaggio Python. Vediamolo al lavoro in due esempi **Categorie:** _Senza categoria **Tag:** API, FastAPI, Python **Categorie Screencast:** API, FastAPI, Python --- ### [Google Cloud: App Engine e il metodo POST](https://devacademy.it/screencast/google-cloud-app-engine-e-il-metodo-post/) **Published:** Luglio 26, 2024 **Author:** Rino Picardi **Excerpt:** Il metodo POST in API REST è il principale vettore per l'inserimento di dati in un sistema gestito in remoto. Lo sperimentiamo in questo screencast usando il linguaggio Python e Flask ma soprattutto la velocità di AppEngine per la pubblicazione e l'aggiornamento di applicazioni **Categorie:** _Senza categoria **Tag:** API, Google Cloud, Rest **Categorie Screencast:** API, Google Cloud, Rest --- ### [Geopy: lavorare con le coordinate geografiche in Python](https://devacademy.it/screencast/geopy-lavorare-con-le-coordinate-geografiche-in-python/) **Published:** Luglio 25, 2024 **Author:** Rino Picardi **Excerpt:** I servizi odierni hanno la necessità di gestire coordinate geografiche anzi alcuni di essi senza localizzazione non solo non funzionerebbero ma nemmeno avrebbero più senso, Esistono molti tool per affrontare la problematica e qui vediamo insieme Geopy una comoda soluzione in linguaggio Python **Categorie:** _Senza categoria **Tag:** Python **Categorie Screencast:** Python --- ### [Google Cloud: App Engine e paradigma REST](https://devacademy.it/screencast/google-cloud-app-engine-e-paradigma-rest/) **Published:** Luglio 24, 2024 **Author:** Rino Picardi **Excerpt:** Ampliare un'applicazione pubblicata su AppEngine è essenzialmente molto semplice. Sarà sufficiente modificare il codice ed eseguire un nuovo deployment: con assoluta continuità Google Cloud permetterà di avere on-line una versione aggiornata. Sperimentiamolo con API REST in Python **Categorie:** _Senza categoria **Tag:** API, Google Cloud, Rest **Categorie Screencast:** API, Google Cloud, Rest --- ### [Introduzione alla DevOps](https://devacademy.it/screencast/introduzione-alla-devops/) **Published:** Giugno 10, 2024 **Author:** Rino Picardi **Excerpt:** DevOps è un approccio alla gestione dei progetti che mira ad unificare il flusso di lavoro di team storicamente separati: development e operations. E' ormai il paradigma dominante perché implica condivisione delle responsabilità e maggiore continuità nel processo di evoluzione ed aggiornamento **Categorie:** _Senza categoria **Tag:** CI/CD, DevOps **Categorie Screencast:** CI/CD, DevOps --- ### [AWS IAM: servizio di gestione dei permessi](https://devacademy.it/screencast/aws-iam-servizio-di-gestione-dei-permessi/) **Published:** Giugno 17, 2024 **Author:** Rino Picardi **Excerpt:** Per utilizzare una piattaforma Cloud è necessario conoscerne bene il servizio di gestione dei permessi, non solo da un punto di vista tecnico ma anche logico. Presentiamo IAM, la base della sicurezza di AWS, e scopriamo come gestisce utenti, gruppi, policy e autorizzazioni **Categorie:** _Senza categoria **Tag:** AWS **Categorie Screencast:** AWS --- ### [Google Cloud: introduzione ad App Engine](https://devacademy.it/screencast/google-cloud-introduzione-ad-app-engine/) **Published:** Giugno 5, 2024 **Author:** Rino Picardi **Excerpt:** AppEngine è un servizio fondamentale di Google Cloud che mostra come il Cloud possa rendere efficiente ed immediata la pubblicazione di applicazioni. Si tratta della possibilità di avviare un servizio, scritto in uno di tanti linguaggi disponibili, senza dover allestire la piattaforma di runtime **Categorie:** _Senza categoria **Tag:** Google Cloud **Categorie Screencast:** Google Cloud --- ### [Hugging Face: i dataset](https://devacademy.it/screencast/hugging-face-i-dataset/) **Published:** Aprile 24, 2024 **Author:** Rino Picardi **Excerpt:** I dati sono il centro dell'Intelligenza Artificiale e per questo Hugging Face mette a disposizioni un intero sistema di condivisione di dataset. Impariamo a conoscere queste strutture per poterle sfruttare nell'addestramento dei modelli e saper condividere i nostri bacini di informazioni **Categorie:** _Senza categoria **Tag:** Intelligenza Artificiale **Categorie Screencast:** Intelligenza Artificiale --- ### [Hugging Face: trovare modelli per l'Intelligenza Artificiale](https://devacademy.it/screencast/hugging-face-trovare-modelli-per-lintelligenza-artificiale/) **Published:** Aprile 17, 2024 **Author:** Rino Picardi **Excerpt:** Hugging Face è il grande hub dell'Intelligenza Artificiale. E' un punto d'incontro tra sviluppatori, aziende, ricercatori finalizzato alla condivisione di modelli, dataset e applicazioni. Con le sue librerie Python mette tutto ciò a nostra disposizione in maniera estremamente facile. Scopriamolo! **Categorie:** _Senza categoria **Tag:** Intelligenza Artificiale **Categorie Screencast:** Intelligenza Artificiale --- ### [Rust: creare strutture dati articolate](https://devacademy.it/screencast/rust-creare-strutture-dati-articolate/) **Published:** Aprile 5, 2024 **Author:** Rino Picardi **Excerpt:** Una rete di informazioni si basa sulla creazione di propri tipi di dato e l'inserimento di istanze di questi in strutture dati. Iniziamo a sperimentarlo creando la nostra struct ed inserendo elementi, su di essa basati, all'interno di un vettore. Sperimenteremo il tutto con dei cicli **Categorie:** _Senza categoria **Tag:** Rust **Categorie Screencast:** Rust --- ### [Java: calcolare un numero fattoriale](https://devacademy.it/screencast/java-calcolare-un-numero-fattoriale/) **Published:** Marzo 29, 2024 **Author:** Rino Picardi **Excerpt:** Il calcolo di un numero fattoriale è un procedimento molto utile in matematica ma può anche essere un esercizio di programmazione davvero interessante. Lo facciamo in Java in due modi diversi ripercorrendo cicli, variabili di accumulazione e chiamate ricorsive **Categorie:** _Senza categoria **Tag:** java **Categorie Screencast:** Java --- ### [Selenium: gestire la comparizione di alert](https://devacademy.it/screencast/selenium-gestire-la-comparizione-di-alert/) **Published:** Marzo 18, 2024 **Author:** Rino Picardi **Excerpt:** Selenium è un ottimo framework per invocare pagine web ed interagire con esse. Alcuni effetti di interazione però potrebbero sfuggire al nostro controllo e rendere più difficili le nostre attività. Una di queste sono gli alert, sistemi di notifica molto comuni. Vediamo come possono essere gestiti **Categorie:** _Senza categoria **Tag:** Python, Selenium, unit testing **Categorie Screencast:** Python, Selenium, Unit Testing --- ### [Java: classi per numeri "big"](https://devacademy.it/screencast/java-classi-per-numeri-big/) **Published:** Marzo 13, 2024 **Author:** Rino Picardi **Excerpt:** Quelli numerici sono tipi di dato fondamentali in Java e permettono di gestire la maggior parte delle problematiche esistenti. Eppure calcoli per attività specifiche potrebbero richiedere la gestione di numeri troppo grandi per i tipi esistenti e per questo esistono classi apposite: le classi Big **Categorie:** _Senza categoria **Tag:** java **Categorie Screencast:** Java --- ### [C: creiamo il nostro comando COPY per i file](https://devacademy.it/screencast/c-creiamo-il-nostro-comando-copy-per-i-file/) **Published:** Marzo 4, 2024 **Author:** Rino Picardi **Excerpt:** Una volta compilato, un programma C può diventare un valido strumento da usare nel nostro sistema operativo. Questa volta proviamo a creare un tool per la copia di file in modo da realizzare qualcosa di utile praticando, al tempo stesso, un buon esercizio didattico **Categorie:** _Senza categoria **Tag:** C **Categorie Screencast:** C --- ### [GitHub: accesso con chiave SSH](https://devacademy.it/screencast/github-accesso-con-chiave-ssh/) **Published:** Febbraio 20, 2024 **Author:** Rino Picardi **Excerpt:** SSH offre un meccanismo sicurizzato per accedere a sistemi remoti. Date le sue prestazioni e la sua affidabilità nonché grandissima diffusione, il suo approccio basato su coppie di chiavi è stato adottato da vari servizi per l'accesso senza login esplicito. L'ha fatto anche GitHub: vediamo come **Categorie:** _Senza categoria **Tag:** GitHub, programmazione **Categorie Screencast:** GitHub, Programmazione --- ### [AWS: codice serverless con le Lambda Functions](https://devacademy.it/screencast/aws-codice-serverless-con-le-lambda-functions/) **Published:** Gennaio 29, 2024 **Author:** Rino Picardi **Excerpt:** L'approccio Serverless è estremamente interessante nel contesto Cloud: permette di risparmiare, gestire meglio le risorse e legare i costi all'andamento del nostro business. AWS Lambda è uno dei più importanti servizi serverless esistenti. Scopriamolo e sperimentiamolo **Categorie:** _Senza categoria **Tag:** AWS, Cloud **Categorie Screencast:** AWS, Cloud --- ### [OpenAI API: primo esempio in Python](https://devacademy.it/screencast/openai-api-primo-esempio-in-python/) **Published:** Febbraio 12, 2024 **Author:** Rino Picardi **Excerpt:** Mettiamoci al lavoro con le API di OpenAI utilizzando il linguaggio Python, estremamente pratico come sempre. Basteranno poche righe di codice per poter integrare in un nostro programma tutta la potenza dell'Intelligenza Artificiale generativa. Scopriamo come **Categorie:** _Senza categoria **Tag:** Intelligenza Artificiale **Categorie Screencast:** Intelligenza Artificiale --- ### [OpenAI: esploriamo le API](https://devacademy.it/screencast/openai-esploriamo-le-api/) **Published:** Febbraio 6, 2024 **Author:** Rino Picardi **Excerpt:** ChatGPT ha sconvolto il mondo dimostrando come le potenzialità dell'Intelligenza Artificiale generativa possano essere messe a disposizione della propria utenza in modo molto semplice. Alla base di tutto ciò, ci sono le API che OpenAI offre ed in questo screencast iniziamo a capire come funzionano **Categorie:** _Senza categoria **Tag:** Intelligenza Artificiale **Categorie Screencast:** Intelligenza Artificiale --- ### [Introduzione all'Intelligenza Artificiale Generativa](https://devacademy.it/screencast/introduzione-allintelligenza-artificiale-generativa/) **Published:** Gennaio 22, 2024 **Author:** Rino Picardi **Excerpt:** L'Intelligenza Artificiale, al giorno d'oggi, diventa sempre più generativa ovvero capace di creare contenuti in modo simile a ciò che potrebbe fare un essere umano. Cerchiamo di orientarci tra algoritmi, principi concettuali e LLM **Categorie:** _Senza categoria **Tag:** Intelligenza Artificiale **Categorie Screencast:** Intelligenza Artificiale --- ### [C: salvare dati su file](https://devacademy.it/screencast/c-salvare-dati-su-file/) **Published:** Gennaio 15, 2024 **Author:** Rino Picardi **Excerpt:** Salvare dati su disco è fondamentale in molte applicazioni perché permette di mantenere lo stato dell'esecuzione, conservare il lavoro degli utenti e tanto altro. In linguaggio C lo si può fare in maniera molto intuitiva grazie a funzioni messe a disposizione dalla libreria standard: scopriamo come **Categorie:** _Senza categoria **Tag:** C **Categorie Screencast:** C --- ### [Selenium: introduzione al web testing in Python](https://devacademy.it/screencast/selenium-introduzione-al-web-testing-in-python/) **Published:** Gennaio 8, 2024 **Author:** Rino Picardi **Excerpt:** Il testing garantisce che il corretto funzionamento delle applicazioni sia mantenuto per tutto il loro ciclo evolutivo. Per le web app servono strumenti in grado di manovrare browser come farebbe un umano: iniziamo a scoprire come farlo con Selenium in linguaggio Python **Categorie:** _Senza categoria **Tag:** Python, Selenium, unit testing **Categorie Screencast:** Python, Selenium, Unit Testing --- ### [Google Cloud Platform: creare una macchina virtuale](https://devacademy.it/screencast/google-cloud-platform-creare-una-macchina-virtuale/) **Published:** Dicembre 16, 2021 **Author:** Rino Picardi **Excerpt:** Google, come in ogni ambito, ha fortemente innovato le tecnologie Cloud. La sua Google Cloud Platform è una delle soluzioni più apprezzate sia da privati sia da aziende di ogni livello per la ricchezza dei prodotti, il periodo iniziale di prova nonché un'ampia fascia di servizi gratuiti per sempre **Categorie:** _Senza categoria **Tag:** Cloud **Categorie Screencast:** Cloud, Google Cloud --- ### [Google Cloud: interagire con il comando gcloud](https://devacademy.it/screencast/google-cloud-interagire-con-il-comando-gcloud/) **Published:** Febbraio 10, 2022 **Author:** Rino Picardi **Excerpt:** Oltre a console visuale e REST API, si può interagire con la Google Cloud Platform mediante un apposito tool, gcloud, installabile sulla propria macchina di lavoro. Ne scopriamo potenzialità e configurazioni dimostrando quanto il suo utilizzo sia immediato per l'invio di comandi. **Categorie:** _Senza categoria **Tag:** Cloud **Categorie Screencast:** Cloud, Google Cloud --- ### [Google Cloud: eseguire container con Cloud Run](https://devacademy.it/screencast/google-cloud-eseguire-container-con-cloud-run/) **Published:** Aprile 13, 2022 **Author:** Rino Picardi **Excerpt:** Cloud Run è un servizio Google che permette di eseguire container Docker in Cloud praticando vie estremamente comode quali interfaccia utente e gcloud. Tratteremo un esempio in codice Python ma tutto ciò che vedremo sarà pienamente applicabile con i maggiori linguaggi di programmazione. **Categorie:** _Senza categoria **Tag:** Cloud **Categorie Screencast:** Cloud, Google Cloud --- ### [Cloud Functions: eseguire funzioni in Cloud](https://devacademy.it/screencast/cloud-functions-eseguire-funzioni-in-cloud/) **Published:** Maggio 18, 2023 **Author:** Rino Picardi **Excerpt:** Le Cloud Functions rappresentano l'implementazione Function-as-a-Service di Google Cloud, un modo rapidissimo per scrivere funzioni e lanciarle in esecuzione nel Cloud senza allestire container, macchine virtuali o altri runtime. Scopriamo come funziona questo eccezionale modello **Categorie:** _Senza categoria **Tag:** Cloud **Categorie Screencast:** Cloud, Google Cloud --- ### [Google Cloud: Cloud Functions 2° Generazione](https://devacademy.it/screencast/google-cloud-cloud-functions-2-generazione/) **Published:** Novembre 2, 2023 **Author:** Rino Picardi **Excerpt:** Le Cloud Functions sono un elemento imprescindibile tra gli strumenti serverless di Google Cloud. Implementano da sempre ottimamente il pattern Function-as-a-Service ma con la seconda generazione Google è riuscito a migliorarle da ogni punto di vista e lo scopriamo in questo screencast **Categorie:** _Senza categoria **Tag:** Cloud, Google Cloud **Categorie Screencast:** Cloud, Google Cloud --- ### [Java: includere il database H2 nei progetti](https://devacademy.it/screencast/java-includere-il-database-h2-nei-progetti/) **Published:** Ottobre 12, 2023 **Author:** Rino Picardi **Excerpt:** I database rappresentano risorse molto importanti nei progetti di ogni tipo. Ne esistono di vario genere, spesso implementati come prodotti imponenti. A volte può fare comodo un motore per database snello, piccolo ma molto funzionale: è il caso di H2 e qui ne vediamo l'utilizzo in un programma Java **Categorie:** _Senza categoria **Tag:** java **Categorie Screencast:** Java --- ### [AWS S3: servizio di storage infinito per ogni tipo di applicazione](https://devacademy.it/screencast/aws-s3-servizio-di-storage-infinito-per-ogni-tipo-di-applicazione/) **Published:** Agosto 3, 2023 **Author:** Rino Picardi **Excerpt:** AWS S3 è uno dei servizi più conosciuti del Cloud perché è utile in ogni contesto, si adatta alle necessità dei nostri progetti e rappresenta un qualcosa di ben noto da ognuno di noi anche solo come semplici utenti: l'immagazzinamento di dati su Cloud. Iniziamo a scoprirne le infinite possibilità **Categorie:** _Senza categoria **Tag:** AWS, Cloud **Categorie Screencast:** AWS, Cloud --- ### [Pandas: ordinare dati in base a parti di un campo](https://devacademy.it/screencast/pandas-ordinare-dati-in-base-a-parti-di-un-campo/) **Published:** Luglio 5, 2023 **Author:** Rino Picardi **Excerpt:** I DataFrame Pandas offrono tutto il necessario per poter ordinare le righe in base ai valori di una o più colonne. In questo screencast, vediamo tecniche per ordinare i DataFrame in base ad informazioni contenute all'interno di un campo, casistica che può spesso presentarsi **Categorie:** _Senza categoria **Tag:** Data Science, Pandas **Categorie Screencast:** Data Science, Pandas --- ### [Java: classi Sealed](https://devacademy.it/screencast/java-classi-sealed/) **Published:** Giugno 29, 2023 **Author:** Rino Picardi **Excerpt:** L'ereditarietà è il principio cardine della Programmazione Orientata agli Oggetti, ma il suo approccio tradizionale in Java mancava di un meccanismo per un'oculata definizione delle possibili classi derivate. Le classi Sealed introdotte con l'evoluzione del linguaggio lo forniscono **Categorie:** _Senza categoria **Tag:** java **Categorie Screencast:** Java --- ### [Iniziare con AWS](https://devacademy.it/screencast/iniziare-con-aws/) **Published:** Maggio 31, 2023 **Author:** Rino Picardi **Excerpt:** Parliamo di AWS, la piattaforma Cloud più famosa al mondo, ricchissima di servizi e perfetta per qualsiasi nostra applicazione. Scopriamo cosa costituisce la Global Infrastructure di AWS, come si accede alla piattaforma e cos'è la Cloud Shell. Pochi concetti pratici per entrare in questo nuovo mondo **Categorie:** _Senza categoria **Tag:** AWS, Cloud **Categorie Screencast:** AWS, Cloud --- ### [PySpark: partizionare i dati](https://devacademy.it/screencast/pyspark-partizionare-i-dati/) **Published:** Maggio 4, 2023 **Author:** Rino Picardi **Excerpt:** I framework per Big Data, come Apache Spark, hanno la prerogativa di poter lavorare su cluster. In quest'ottica, la possibilità di partizionare i dati può essere davvero utile al fine di migliorare le prestazioni. Cerchiamo di capirne finalità ed impiego con PySpark **Categorie:** _Senza categoria **Tag:** Big Data **Categorie Screencast:** Big Data --- ### [C: progettare l'informazione con le Struct](https://devacademy.it/screencast/c-progettare-linformazione-con-le-struct/) **Published:** Aprile 26, 2023 **Author:** Rino Picardi **Excerpt:** Il C offre tipi di dato per definire le più comuni tipologie di valori ma nei nostri programmi ne individuiamo spesso di nuove che rispecchiano le entità che gestiamo nei progetti. Per questo esistono le Struct che aggregano dati e permettono di organizzare l'informazione **Categorie:** _Senza categoria **Tag:** C **Categorie Screencast:** C --- ### [Hey: tool per il test di applicazioni web](https://devacademy.it/screencast/hey-tool-per-il-test-di-applicazioni-web/) **Published:** Aprile 21, 2023 **Author:** Rino Picardi **Excerpt:** Spesso si ha bisogno di mettere alla prova i propri servizi web "bombardandoli" con richieste magari in parallelo. Si potrebbero scrivere in proprio dei programmi per farlo ma non sempre risulterebbe facile. Fortuna che esistono tool appositi come Hey, lo strumento che scopriamo in questo video **Categorie:** _Senza categoria **Tag:** Cloud, tools, web server **Categorie Screencast:** Cloud, Tools, Web Server --- ### [Docker: containerizzare applicazioni PHP](https://devacademy.it/screencast/docker-containerizzare-applicazioni-php/) **Published:** Aprile 7, 2023 **Author:** Rino Picardi **Excerpt:** PHP è uno dei linguaggi più utilizzati in assoluto per applicazioni web pertanto può essere davvero interessante conoscere quali immagini Docker lo mettano a disposizione. Scopriremo l'immagine ufficiale completa di server web Apache e vedremo come sarà comoda per pubblicare un sito web in PHP **Categorie:** _Senza categoria **Tag:** Docker, PHP **Categorie Screencast:** Docker, PHP --- ### [Standalone Components in Angular 15](https://devacademy.it/screencast/standalone-components-in-angular-15/) **Published:** Aprile 3, 2023 **Author:** Rino Picardi **Excerpt:** Angular 14 ha introdotto in developer preview la funzionalità degli standalone components che a partire da Angular 15 è diventata stable. Vediamo cosa sono gli standalone componente, perché sono stati introdotti e come utilizzarli. **Categorie:** _Senza categoria **Tag:** Angular **Categorie Screencast:** Angular --- ### [Pandas: applicare proprie funzioni alle righe di un DataFrame](https://devacademy.it/screencast/pandas-applicare-proprie-funzioni-alle-righe-di-un-dataframe/) **Published:** Marzo 31, 2023 **Author:** Rino Picardi **Excerpt:** Pandas permette di trattare dati strutturati grazie ai suoi costrutti DataFrame e Series. Le funzionalità che mette a disposizione rendono possibili grandi risultati, ma per operazioni che sfuggono alle normali regole delle strutture è necessario saper impostare le proprie funzioni. Vediamo come **Categorie:** _Senza categoria **Tag:** Data Science, Pandas **Categorie Screencast:** Data Science, Pandas --- ### [Docker: build multistage per ottimizzare le immagini](https://devacademy.it/screencast/docker-build-multistage-per-ottimizzare-le-immagini/) **Published:** Marzo 24, 2023 **Author:** Rino Picardi **Excerpt:** Il build multistage è una caratteristica fondamentale di Docker per procedere alla creazione di immagini ottimizzate. E' necessario comprenderne motivazioni e modalità di attuazione e per questo affrontiamo un esempio comparativo che ne metterà in risalto le doti **Categorie:** _Senza categoria **Tag:** Docker **Categorie Screencast:** Docker --- ### [CI/CD](https://devacademy.it/screencast/ci-cd/) **Published:** Marzo 16, 2023 **Author:** Rino Picardi **Excerpt:** La CI/CD offre un approccio di continua integrazione e continuo deployment che porta ad avere software costantemente aggiornati e funzionanti. Si tratta di un nuovo modo di creare e mantenere applicazioni ed ha ormai una posizione del tutto dominante in questa industria. Capiamone un pò di più **Categorie:** _Senza categoria **Tag:** CI/CD, programmazione **Categorie Screencast:** CI/CD, Programmazione --- ### [Pandas: analizzare dati dal formato ods](https://devacademy.it/screencast/pandas-analizzare-dati-dal-formato-ods/) **Published:** Marzo 9, 2023 **Author:** Rino Picardi **Excerpt:** I fogli di calcolo sono una fonte importantissima per l'analisi dati, diffusi non solo in ambienti informatici o scientifici, ma in ogni ambito aziendale e amministrativo. Pandas domina la Data Science e qui la impieghiamo con fogli di calcolo ods, formato reso famoso da LibreOffice e OpenOffice **Categorie:** _Senza categoria **Tag:** Data Science **Categorie Screencast:** Data Science --- ### [La codifica base64: scopi e funzionamento](https://devacademy.it/screencast/la-codifica-base64-scopi-e-funzionamento/) **Published:** Marzo 1, 2023 **Author:** Rino Picardi **Excerpt:** La codifica in Base64 è un elemento fondamentale del funzionamento di Internet. Permette di convertire dati binari in testo e viceversa. Lo scopo è quello di permettere un agevole trattamento dei dati binari durante la comunicazione in Rete. Scopriamo come funziona **Categorie:** _Senza categoria **Tag:** programmazione **Categorie Screencast:** Programmazione --- ### [Luigi: data pipeline in Python](https://devacademy.it/screencast/luigi-data-pipeline-in-python/) **Published:** Febbraio 10, 2023 **Author:** Rino Picardi **Excerpt:** In un mondo sempre più connesso, i dati accumulati crescono e con loro la necessità di elaborarli. Le data pipeline sono processi articolati in più task in cui i dati passano per varie fasi e vengono trattati. Ecco una libreria Python fondamentale nel settore: Luigi di Spotify **Categorie:** _Senza categoria **Tag:** Big Data, Data Science **Categorie Screencast:** Big Data, Data Science --- ### [C: funzioni per le stringhe](https://devacademy.it/screencast/c-funzioni-per-le-stringhe/) **Published:** Febbraio 6, 2023 **Author:** Rino Picardi **Excerpt:** Il linguaggio C offre diverse funzioni molto comode per svolgere operazioni fondamentali sulle stringhe. Tutto ciò potrebbe essere svolto lavorando con puntatori ed array ma sicuramente funzionalità di questo genere ci rendono molto più produttivi. Vediamone alcune. **Categorie:** _Senza categoria **Tag:** C **Categorie Screencast:** C --- ### [Avviare Wordpress con Docker](https://devacademy.it/screencast/avviare-wordpress-con-docker/) **Published:** Gennaio 26, 2023 **Author:** Rino Picardi **Excerpt:** Avviare Wordpress da Docker è un'esperienza molto istruttiva. Ci permette di ragionare su aspetti come le applicazioni multicontainer, i database ed il service discovery. Tutte conoscenze fondamentali per creare applicazioni moderne pronte per il Cloud e la produzione **Categorie:** _Senza categoria **Tag:** Docker, wordpress **Categorie Screencast:** Docker, Wordpress --- ### [MySQL: problemi di ranking](https://devacademy.it/screencast/mysql-problemi-di-ranking/) **Published:** Gennaio 20, 2023 **Author:** Rino Picardi **Excerpt:** Può capitare di trovarci in situazioni in cui dobbiamo stilare una classifica dei record inseriti in una tabella, ma avendo valori a pari merito l'ordinamento da solo può non bastare. Esploriamo in questo screencast i problemi di ranking prima con SQL base e poi con le Window Function **Categorie:** _Senza categoria **Tag:** MySQL **Categorie Screencast:** MySQL --- ### [EarSketch: fare musica con Python](https://devacademy.it/screencast/earsketch-fare-musica-con-python/) **Published:** Gennaio 5, 2023 **Author:** Rino Picardi **Excerpt:** EarSketch è uno strumento gratuito e online per creare musica programmando. Lo scopo del progetto è quello di avvicinare persone alla programmazione (anche inesperte) con il pretesto della creazione di tracce musicali. Il risultato è un approccio divertente, istruttivo e assolutamente originale **Categorie:** _Senza categoria **Tag:** Python **Categorie Screencast:** Python --- ### [Elenco dei comuni italiani aggiornati: elaborazione con Pandas](https://devacademy.it/screencast/elenco-dei-comuni-italiani-aggiornati-elaborazione-con-pandas/) **Published:** Dicembre 29, 2022 **Author:** Rino Picardi **Excerpt:** Un elenco dei comuni italiani affidabile e aggiornato è una risorsa fondamentale per le nostre applicazioni ed ora scopriamo come ottenerlo. Inoltre, trattandosi di un file CSV piuttosto corposo sfrutteremo l'occasione per riflettere su come processare file di questo genere **Categorie:** _Senza categoria **Tag:** Data Science, programmazione **Categorie Screencast:** Data Science, Programmazione --- ### [La codifica esadecimale](https://devacademy.it/screencast/la-codifica-esadecimale/) **Published:** Dicembre 15, 2022 **Author:** Rino Picardi **Excerpt:** In ogni ambito dell'Informatica, capita di incontrare valori in formato esadecimale espressi con cifre numeriche e lettere. E' una codifica dalla grandissima importanza ma che può risultare poco intuitiva. Cerchiamo di conoscerla meglio vedendola da vicino e osservando alcuni suoi casi d'uso **Categorie:** _Senza categoria **Tag:** programmazione **Categorie Screencast:** Programmazione --- ### [C: caratteri e stringhe](https://devacademy.it/screencast/c-caratteri-e-stringhe/) **Published:** Dicembre 9, 2022 **Author:** Rino Picardi **Excerpt:** Il C permette di vivere un'esperienza unica nel percorso di apprendimento di qualsiasi programmatore. In questo screencast ne approfitteremo studiando caratteri e stringhe ma anche ragionando sul modo in cui i dati vengono memorizzati nei sistemi elettronici e sul ruolo svolto dalle tabelle ASCII. **Categorie:** _Senza categoria **Tag:** C **Categorie Screencast:** C --- ### [Analizzare il formato JSON con jq](https://devacademy.it/screencast/analizzare-il-formato-json-con-jq/) **Published:** Novembre 25, 2022 **Author:** Rino Picardi **Excerpt:** JSON è utile universalmente sia in programmazione sia amministrando sistemi in Cloud e non. Le gerarchie JSON sono spesso articolate e non facili da navigare perciò è importante conoscere uno strumento come jq che permette con una sintassi molto semplice di interrogare file JSON in locale ed in rete. **Categorie:** _Senza categoria **Tag:** JSON **Categorie Screencast:** JSON --- ### [Python: leggere il contenuto dei PDF](https://devacademy.it/screencast/python-leggere-il-contenuto-dei-pdf/) **Published:** Dicembre 2, 2022 **Author:** Rino Picardi **Excerpt:** Il formato PDF è uno dei più diffusi al mondo per la distribuzione di documenti. Questi, indipendentemente dall'argomento che trattano, costituiscono una meravigliosa fonte di informazioni che possiamo sfruttare nelle nostre analisi e Python è proprio il linguaggio giusto **Categorie:** _Senza categoria **Tag:** Python **Categorie Screencast:** Python --- ### [GCP: creare Instance Group gestiti](https://devacademy.it/screencast/gcp-creare-instance-group-gestiti/) **Published:** Novembre 17, 2022 **Author:** Rino Picardi **Excerpt:** Il Cloud permette di automatizzare la gestione delle risorse per renderla più reattiva rispetto all'intervento umano. È fondamentale però che noi sappiamo programmare e ben calibrare i parametri in base ai quali questa deve agire. Gli Instance Group di Compute Engine applicano tutti questi principi. **Categorie:** _Senza categoria **Tag:** Cloud **Categorie Screencast:** Cloud --- ### [Spring e MongoDB: creare REST API](https://devacademy.it/screencast/spring-e-mongodb-creare-rest-api/) **Published:** Novembre 9, 2022 **Author:** Rino Picardi **Excerpt:** La flessibilità del framework Spring con le sue librerie per la gestione di dati e delle componenti web rende comoda non solo l'interazione con un DBMS potente come MongoDB ma anche la costruzione attorno ad esso di servizi web secondo il paradigma delle REST API. Vediamo il tutto al lavoro. **Categorie:** _Senza categoria **Tag:** API, MongoDB, Spring **Categorie Screencast:** API, MongoDB, Spring --- ### [Scratch: gestire il movimento dello sfondo](https://devacademy.it/screencast/scratch-gestire-il-movimento-dello-sfondo/) **Published:** Novembre 3, 2022 **Author:** Rino Picardi **Excerpt:** In Scratch possiamo creare animazioni e giochi molto comodamente. Il percorso che ci porterà a ottenere tali risultati richiede una serie di conoscenze da acquisire via via. In questo step, impariamo a creare l'effetto di scorrimento dello sfondo muovendone le componenti con un po' di programmazione. **Categorie:** _Senza categoria **Tag:** Scratch **Categorie Screencast:** Scratch --- ### [BigQuery: strutture dati articolate](https://devacademy.it/screencast/bigquery-strutture-dati-articolate/) **Published:** Ottobre 27, 2022 **Author:** Rino Picardi **Excerpt:** Con BigQuery associamo la complessità di Big Data con la semplicità di SQL. Possiamo costruire strutture dati articolate fondendo struct e array per poter rendere al meglio strutture di informazioni. Vediamo in questo screencast come esistano strumenti per poterle navigare ed esplorarne i valori. **Categorie:** _Senza categoria **Tag:** Big Data **Categorie Screencast:** Big Data --- ### [Creare un wiki per i propri progetti](https://devacademy.it/screencast/creare-un-wiki-per-i-propri-progetti/) **Published:** Ottobre 20, 2022 **Author:** Rino Picardi **Excerpt:** Un wiki è un tipo di applicativo che favorisce la creazione collaborativa di ricche fonti di informazione: Wikipedia ne è un colossale esempio che noi tutti conosciamo. Vediamo in questo screencast Dokuwiki, un prodotto molto comodo ed efficiente, che permette di creare un wiki per la nostra azienda. **Categorie:** _Senza categoria **Tag:** tools **Categorie Screencast:** Tools --- ### [Espressioni regolari: scegliere il pattern adatto](https://devacademy.it/screencast/espressioni-regolari-scegliere-il-pattern-adatto/) **Published:** Ottobre 13, 2022 **Author:** Rino Picardi **Excerpt:** In questo screencast riflettiamo sulle espressioni regolari, una delle tecniche di analisi del formato dei dati più concise e potenti che esistano. Vedremo alcuni tool on-line e ragioneremo su quale sia il giusto compromesso tra precisione del pattern ed efficacia. Porremo il caso del riconoscimento di indirizzi e-mail. **Categorie:** _Senza categoria **Tag:** programmazione **Categorie Screencast:** Programmazione --- ### [Data warehouse: cosa sono?](https://devacademy.it/screencast/data-warehouse-cosa-sono/) **Published:** Ottobre 6, 2022 **Author:** Rino Picardi **Excerpt:** Oggi, in piena era dei dati, tante tecnologie contengono nel nome la parola DATA. In questo screencast, in particolare, ragioniamo su due di esse, tra le quali si rischia spesso di fare confusione: database e data warehouse. Metteremo a confronto le loro caratteristiche e ne capiremo le differenze. **Categorie:** _Senza categoria **Tag:** database **Categorie Screencast:** Database --- ### [GCP: sfruttare i metadati nelle macchine virtuali](https://devacademy.it/screencast/gcp-sfruttare-i-metadati-nelle-macchine-virtuali/) **Published:** Settembre 29, 2022 **Author:** Rino Picardi **Excerpt:** I metadati creano un canale di comunicazione tra l'esterno e l'interno della macchina virtuale. Permettono di passare valori che possono essere sfruttati dai programmi in esecuzione nell'istanza. Scopriamo come impostarli e leggerli, sia quelli configurati da Compute Engine sia quelli da noi creati. **Categorie:** _Senza categoria **Tag:** Cloud **Categorie Screencast:** Cloud --- ### [Editor esadecimali: visionare il vero contenuto dei file](https://devacademy.it/screencast/editor-esadecimali-visionare-il-vero-contenuto-dei-file/) **Published:** Settembre 22, 2022 **Author:** Rino Picardi **Excerpt:** Siamo davvero sicuri di vedere sempre ciò che realmente un file contiene? Ogni file può essere visionato e modificato nel profondo con una specifica categoria di tool: gli editor esadecimali. Scopriamoli e cogliamo l'occasione per ragionare un po' su come i dati sono realmente salvati in memoria. **Categorie:** _Senza categoria **Tag:** tools **Categorie Screencast:** Tools --- ### [Spring: sviluppare applicazioni web con MongoDB](https://devacademy.it/screencast/spring-sviluppare-applicazioni-web-con-mongodb/) **Published:** Luglio 20, 2022 **Author:** Rino Picardi **Excerpt:** Un potentissimo framework web come Spring ed il database NoSQL più usato al mondo non potevano che dare vita ad una combinazione perfetta per le nostre applicazioni Internet. Grazie al framework Spring Data impareremo ad utilizzarli congiuntamente con una configurazione quasi del tutto automatica. **Categorie:** _Senza categoria **Tag:** MongoDB, Spring **Categorie Screencast:** MongoDB, Spring --- ### [PHP: il costrutto match](https://devacademy.it/screencast/php-il-costrutto-match/) **Published:** Settembre 14, 2022 **Author:** Rino Picardi **Excerpt:** PHP è uno dei linguaggi più usati al mondo ed il Web è il suo regno. Nel corso degli anni si è adeguato alle nuove sfide arricchendosi di funzioni e costrutti. Ne vediamo uno oggi, match, che permette con grande facilità di valutare espressioni e attivare funzioni. **Categorie:** _Senza categoria **Tag:** PHP **Categorie Screencast:** PHP --- ### [PyWebIO: applicazioni web in python](https://devacademy.it/screencast/pywebio-applicazioni-web-in-python/) **Published:** Settembre 7, 2022 **Author:** Rino Picardi **Excerpt:** PyWebIO è una libreria Python estremamente snella e versatile che permette di realizzare vere applicazioni web autonome in pochissime righe di codice. Si presta a molti utilizzi: soprattutto se si vuole creare interfacce condivisibili per interagire con il proprio codice, è davvero da provare. **Categorie:** _Senza categoria **Tag:** Python **Categorie Screencast:** Python --- ### [Go: creare un client web](https://devacademy.it/screencast/go-creare-un-client-web/) **Published:** Agosto 31, 2022 **Author:** Rino Picardi **Excerpt:** Il linguaggio Go può vantare una completezza assoluta in ogni settore. Di qualsiasi cosa si abbia bisogno dispone di tutti gli strumenti necessari senza ricorrere a librerie esterne. In questo screencast lo si vedrà al lavoro con un client web in grado di sfruttare connessioni su protocollo HTTP. **Categorie:** _Senza categoria **Tag:** Go **Categorie Screencast:** Go --- ### [C: gestire i puntatori](https://devacademy.it/screencast/c-gestire-i-puntatori/) **Published:** Agosto 24, 2022 **Author:** Rino Picardi **Excerpt:** I puntatori sono una caratteristica potentissima del linguaggio C e permettono di gestire in maniera flessibile i valori in memoria. Sarà importante però assimilarne bene il funzionamento per evitare bug nei nostri programmi. Compreso tale meccanismo, diventeranno i nostri migliori alleati. **Categorie:** _Senza categoria **Tag:** C **Categorie Screencast:** C --- ### [Replit: ambiente di sviluppo in-browser completo](https://devacademy.it/screencast/replit-ambiente-di-sviluppo-in-browser-completo/) **Published:** Agosto 4, 2022 **Author:** Rino Picardi **Excerpt:** Replit è un modernissimo IDE totalmente in-browser. In maniera gratuita, si potrà programmare in più di 50 linguaggi, collaborare, imparare e scambiare idee. Saranno richiesti solo un browser ed una connessione ad Internet e tutto questo mondo si dischiuderà a noi. Scopriamolo! **Categorie:** _Senza categoria **Tag:** IDE, tools **Categorie Screencast:** IDE, Tools --- ### [NFT e Web 3.0](https://devacademy.it/screencast/nft-e-web-3-0/) **Published:** Luglio 28, 2022 **Author:** Rino Picardi **Excerpt:** Nella nuova dimensione del Web, la 3.0, spadroneggiano Blockchain, Intelligenza Artificiale, Big Data e Cloud. Servizi decentralizzati e criptovalute sono sempre più protagonisti del business e gli NFT dettano nuove regole per la gestione dei diritti sulle opere. Cerchiamo di orientarci un po'. **Categorie:** _Senza categoria **Tag:** Blockchain **Categorie Screencast:** Blockchain --- ### [NLTK: analizzare la struttura del testo](https://devacademy.it/screencast/nltk-analizzare-la-struttura-del-testo/) **Published:** Luglio 14, 2022 **Author:** Rino Picardi **Excerpt:** NLTK dispone di moltissime funzionalità delle quali alcune mettono in campo capacità di analisi piuttosto evolute. In questo screencast parliamo della possibilità di analizzare automaticamente la struttura del testo scoprendo quale ruolo ha ogni singola parola all'interno della frase. **Categorie:** _Senza categoria **Tag:** Data Science, Intelligenza Artificiale, Machine Learning, Python **Categorie Screencast:** Data Science, Intelligenza Artificiale, Machine Learning, NLP, NLTK, Python --- ### [NLTK: analizzare il linguaggio naturale in Python](https://devacademy.it/screencast/nltk-analizzare-il-linguaggio-naturale-in-python/) **Published:** Novembre 24, 2021 **Author:** Rino Picardi **Excerpt:** Il linguaggio naturale rappresenta il formato dati più diffuso in assoluto sebbene il più ostico da interpretare automaticamente. Esiste in Python NLTK, uno dei framework più usati al mondo in materia, che parte dalla manipolazione del testo fino a spingersi alle tecniche di Intelligenza Artificiale **Categorie:** _Senza categoria **Tag:** Data Science, Intelligenza Artificiale, Machine Learning, Python **Categorie Screencast:** Data Science, Intelligenza Artificiale, Machine Learning, NLP, NLTK, Python --- ### [NLTK: utilizzare lo stemming per l'analisi del testo](https://devacademy.it/screencast/nltk-utilizzare-lo-stemming-per-l-analisi-del-testo/) **Published:** Marzo 31, 2022 **Author:** Rino Picardi **Excerpt:** L'ambiente NLTK offre una gamma completa di strumenti per l'analisi del linguaggio naturale. In questo screencast, incontriamo lo stemming, tecnica fondamentale per la semplificazione del testo, e ragioniamo sulle sue potenzialità soprattutto pensando ad una lingua complessa come l'Italiano. **Categorie:** _Senza categoria **Tag:** Data Science, Machine Learning **Categorie Screencast:** Data Science, Intelligenza Artificiale, Machine Learning, NLP, NLTK, Python --- ### [BigQuery: array e struct](https://devacademy.it/screencast/bigquery-array-e-struct/) **Published:** Giugno 29, 2022 **Author:** Rino Picardi **Excerpt:** BigQuery permette di gestire la potenza dei Big Data con la semplicità del linguaggio SQL. Quest'ultimo per l'occasione è stato arricchito di caratteristiche come campi array e struct per una più completa definizione delle informazioni che permettono di gestire efficacemente ogni situazione. **Categorie:** _Senza categoria **Tag:** Big Data, Data Science, Machine Learning **Categorie Screencast:** Big Data, Data Science, Machine Learning --- ### [Linguaggio C: comprendere gli array](https://devacademy.it/screencast/linguaggio-c-comprendere-gli-array/) **Published:** Giugno 23, 2022 **Author:** Rino Picardi **Excerpt:** Gli array costituiscono una delle più basilari strutture dati per ogni linguaggio di programmazione. In C sono particolarmente duttili e possono essere comodamente sfruttati per organizzare le proprie reti di informazioni. Vediamo come. **Categorie:** _Senza categoria **Tag:** C **Categorie Screencast:** C --- ### [Google Data Studio: creare report](https://devacademy.it/screencast/google-data-studio-creare-report/) **Published:** Giugno 15, 2022 **Author:** Rino Picardi **Excerpt:** Google Data Studio è uno strumento che offre data visualization di altissimo livello in maniera estremamente facile. Grazie a numerosi connector può essere sfruttato partendo da dataset disponibili su Cloud, database, Google Sheets e tantissime altre fonti. Creiamo insieme il nostro primo report! **Categorie:** _Senza categoria **Tag:** Big Data, Data Science **Categorie Screencast:** Big Data, Data Science --- ### [Linguaggio C: controllo del flusso](https://devacademy.it/screencast/linguaggio-c-controllo-del-flusso/) **Published:** Maggio 18, 2022 **Author:** Rino Picardi **Excerpt:** Affinché un programma possa perseguire i propri scopi, è necessario saperne controllare il flusso di esecuzione. Costrutti condizionali e cicli sono i protagonisti del settore, ed in questo screencast li vediamo al lavoro in un esempio unico. **Categorie:** _Senza categoria **Tag:** C **Categorie Screencast:** C --- ### [Linguaggio C: iniziare a programmare](https://devacademy.it/screencast/linguaggio-c-iniziare-a-programmare/) **Published:** Marzo 16, 2022 **Author:** Rino Picardi **Excerpt:** A distanza di decenni dalla sua creazione, C resta uno dei linguaggi di programmazione più usati al mondo. Ha contribuito alla creazione di praticamente tutto ciò che esiste oggi in Informatica e grazie alla sua sintassi snella e flessibile è ancora una delle migliori soluzioni per creare software **Categorie:** _Senza categoria **Tag:** C **Categorie Screencast:** C --- ### [Scratch: variabili e operatori](https://devacademy.it/screencast/scratch-variabili-e-operatori/) **Published:** Luglio 6, 2022 **Author:** Rino Picardi **Excerpt:** Scratch offre una dialettica semplice per avvicinare chiunque, a qualsiasi età, al mondo della programmazione. In questo screencast conosceremo l'impiego di variabili e operatori e la loro utilità per implementare vere logiche da sviluppatori. **Categorie:** _Senza categoria **Tag:** Scratch **Categorie Screencast:** Scratch --- ### [Iniziare con Scratch](https://devacademy.it/screencast/iniziare-con-scratch/) **Published:** Giugno 9, 2022 **Author:** Rino Picardi **Excerpt:** Scratch è uno strumento progettato per permettere a chiunque (bambini e non solo) di avvicinarsi alla programmazione in maniera divertente e fantasiosa. Propone uno stile di programmazione a blocchi che consente di sviluppare logica e animazioni con facilità senza richiedere alcuna esperienza. **Categorie:** _Senza categoria **Tag:** Scratch **Categorie Screencast:** Scratch --- ### [BigQuery: il potente Data Warehouse di Google](https://devacademy.it/screencast/bigquery-il-potente-data-warehouse-di-google/) **Published:** Giugno 3, 2022 **Author:** Rino Picardi **Excerpt:** BigQuery è lo strumento di analisi di Google che coniuga la complessità dei Big Data con la semplicità del linguaggio SQL. È integrato nella Google Cloud Platform e offre la possibilità di integrare in un unico Data Warehouse sorgenti dati diverse per creare un completo dataset. **Categorie:** _Senza categoria **Tag:** Big Data, Data Science, Machine Learning **Categorie Screencast:** Big Data, Data Science, Machine Learning --- ### [Il formato JSON Lines](https://devacademy.it/screencast/il-formato-json-lines/) **Published:** Maggio 25, 2022 **Author:** Rino Picardi **Excerpt:** Fruibile come CSV e flessibile come JSON, JSON Lines permette di salvare grandi quantità di dati come righe in formato JSON senza creare un'unica gerarchia. Risulta espressivo ma efficiente, veloce da elaborare senza grandi caricamenti in memoria: così ha conquistato il mondo dell'analisi dati. **Categorie:** _Senza categoria **Tag:** Formato dati, JSON **Categorie Screencast:** Formato dati, JSON --- ### [JSON: panoramica sul formato](https://devacademy.it/screencast/json-panoramica-sul-formato/) **Published:** Settembre 23, 2020 **Author:** Rino Picardi **Excerpt:** Il formato JSON è una conoscenza indispensabile per informatici di ogni genere, non solo programmatori ma anche analisti di dati, sistemisti nonché gestori di database. Nasce dal linguaggio Javascript e si è evoluto come formato autonomo per la definizione di gerarchie di informazioni **Categorie:** _Senza categoria **Tag:** JSON **Categorie Screencast:** Formato dati, JSON --- ### [Blockchain: trasferire valore con le chiavi private](https://devacademy.it/screencast/blockchain-trasferire-valore-con-le-chiavi-private/) **Published:** Maggio 11, 2022 **Author:** Rino Picardi **Excerpt:** Nello sviluppo di applicazioni Blockchain, l'utilizzo di wallet come Metamask è comodo ed assolutamente comune. Eppure si potrebbero utilizzare esplicitamente chiavi private ed indirizzi per autorizzare transazioni: in questo screencast vediamo come. **Categorie:** _Senza categoria **Tag:** Blockchain **Categorie Screencast:** Blockchain --- ### [Orientarsi tra le licenze open source](https://devacademy.it/screencast/orientarsi-tra-le-licenze-open-source/) **Published:** Maggio 4, 2022 **Author:** Rino Picardi **Excerpt:** Open source non significa gratis, sebbene le due circostanze spesso convivano. Ogni prodotto (software, multimediale, contenutistico, etc.) è generalmente legato ad una licenza e molte di queste derivano dagli stessi principi fondamentali. Cerchiamo di individuarne le maggiori linee guida. **Categorie:** _Senza categoria **Tag:** linux, programmazione **Categorie Screencast:** Linux, Programmazione --- ### [Concetti di statistica per ogni programmatore](https://devacademy.it/screencast/concetti-di-statistica-per-ogni-programmatore/) **Published:** Aprile 27, 2022 **Author:** Rino Picardi **Excerpt:** Ogni linguaggio di programmazione offre funzioni statistiche spesso trascurate dal programmatore in quanto considerate "di nicchia". Proponiamo qui - senza fare uso di codice - un caso comune dove concetti statistici possono tornare utili per creare nuove funzionalità nelle nostre applicazioni. **Categorie:** _Senza categoria **Tag:** Data Science, programmazione **Categorie Screencast:** Data Science, Programmazione --- ### [Pixabay API: ottenere contenuti multimediali per le nostre applicazioni](https://devacademy.it/screencast/pixabay-api-ottenere-contenuti-multimediali-per-le-nostre-applicazioni/) **Published:** Aprile 21, 2022 **Author:** Rino Picardi **Excerpt:** Pixabay è un servizio che offre contenuti multimediali per ogni uso. Dispone di un comodo sistema di API per richiedere tali materiali via codice mediante protocolli e formati universali quali JSON e https. Lo si può sfruttare con ogni linguaggio ma qui vediamo un esempio in JavaScript. **Categorie:** _Senza categoria **Tag:** API **Categorie Screencast:** API --- ### [MySQL Shell: interazione in JavaScript](https://devacademy.it/screencast/mysql-shell-interazione-in-javascript/) **Published:** Aprile 6, 2022 **Author:** Rino Picardi **Excerpt:** MySQL Shell è un tool che offre molteplici vie di interazione con un server MySQL. Oltre all'interfaccia classica SQL, permette di interagire con linguaggi estremamente noti quali Python e JavaScript. Proprio quest'ultimo sarà protagonista di questo screencast in pieno stile NoSQL. **Categorie:** _Senza categoria **Tag:** MySQL **Categorie Screencast:** MySQL --- ### [KNIME: realizzare grafici nel workflow](https://devacademy.it/screencast/knime-realizzare-grafici-nel-workflow/) **Published:** Marzo 23, 2022 **Author:** Rino Picardi **Excerpt:** Un'immagine dice molto più di mille parole: ecco perché in Data Science i grafici sono così importanti. Uno strumento votato all'interattività come KNIME non poteva non disporre di ottimi strumenti per una rapida creazione di grafici efficaci da introdurre nelle proprie analisi dati. **Categorie:** _Senza categoria **Tag:** Machine Learning **Categorie Screencast:** Machine Learning --- ### [HTTP Toolkit: analizzare il traffico web](https://devacademy.it/screencast/http-toolkit-analizzare-il-traffico-web/) **Published:** Marzo 10, 2022 **Author:** Rino Picardi **Excerpt:** Le nostre applicazioni interagiscono spesso in Rete mediante protocollo HTTP/HTTPS. A volte qualche malfunzionamento può rallentare il nostro lavoro pertanto è importante saper utilizzare opportuni strumenti di debug: potenti, accurati e semplici proprio come HTTP Toolkit **Categorie:** _Senza categoria **Tag:** tools **Categorie Screencast:** Tools --- ### [Docker e NoSQL: creazione di container Redis](https://devacademy.it/screencast/docker-e-nosql-creazione-di-container-redis/) **Published:** Marzo 4, 2022 **Author:** Rino Picardi **Excerpt:** Docker offre molti vantaggi, uno dei quali è la pronta possibilità di avere a disposizione server, software e piattaforme alla sola invocazione di un'immagine. In questo screencast lo sfruttiamo per ottenere velocemente un'istanza in esecuzione di Redis, uno dei DBMS NoSQL più diffusi al mondo **Categorie:** _Senza categoria **Tag:** Docker, NoSQL, Redis **Categorie Screencast:** Docker, NoSQL, Redis --- ### [Verificare la forza delle password con zxcvbn](https://devacademy.it/screencast/verificare-la-forza-delle-password-con-zxcvbn/) **Published:** Febbraio 24, 2022 **Author:** Rino Picardi **Excerpt:** Quanto sono forti le password che gli utenti delle nostre applicazioni scelgono? Piuttosto che inventare algoritmi personali ci si può affidare a librerie apposite come zxcvbn, inventata da Dropbox, semplice e sfruttabile in tantissimi linguaggi di programmazione. Qui la proviamo con Node.js **Categorie:** _Senza categoria **Tag:** javascript, Node.js, sicurezza **Categorie Screencast:** javascript, Node.js, Sicurezza --- ### [Indirizzi IP: subnet per programmatori e sistemisti](https://devacademy.it/screencast/indirizzi-ip-subnet-per-programmatori-e-sistemisti/) **Published:** Febbraio 17, 2022 **Author:** Rino Picardi **Excerpt:** Gli indirizzi IP sono tra i principali riferimenti nella Rete ma programmatori e sistemisti hanno spesso necessità di indicare intere subnet per poter configurare le applicazioni che creano e gestiscono, soprattutto al tempo del Cloud dove la sicurezza conta tantissimo. Scopriamo l'uso delle netmask **Categorie:** _Senza categoria **Tag:** Cloud **Categorie Screencast:** Cloud --- ### [KNIME: join e groupBy](https://devacademy.it/screencast/knime-join-e-groupby/) **Published:** Febbraio 2, 2022 **Author:** Rino Picardi **Excerpt:** Knime dispone di una vasta gamma di nodi che possono costituire un ottimo flusso di preparazione di un dataset per future elaborazioni e apprendimento automatico. Incontriamo in questo screencast le operazioni di join, raggruppamento e manipolazione di stringhe **Categorie:** _Senza categoria **Tag:** Machine Learning **Categorie Screencast:** Machine Learning --- ### [Data Science: analizzare i dati con i grafici a violino](https://devacademy.it/screencast/data-science-analizzare-i-dati-con-i-grafici-a-violino/) **Published:** Gennaio 24, 2022 **Author:** Rino Picardi **Excerpt:** Ogni tipologia di grafico mette in risalto aspetti diversi di una distribuzione. Il violinplot che incontriamo in questo screencast è un chiaro indicatore di proprietà statistiche e densità di distribuzione. Grazie alla libreria Seaborn e alle funzionalità dei DataFrame Pandas potremo apprezzarlo **Categorie:** _Senza categoria **Tag:** Data Science **Categorie Screencast:** Data Science --- ### [Rust: gestione dei puntatori](https://devacademy.it/screencast/rust-gestione-dei-puntatori/) **Published:** Gennaio 12, 2022 **Author:** Rino Picardi **Excerpt:** Un aspetto cruciale di ogni linguaggio è la gestione della memoria. Deve permettere di articolare bene le strutture dati, ma al contempo deve essere ottimizzata ed evitare inutili sprechi. In Rust, l'approccio a puntatori ne permette una gestione sicura ed efficiente. Iniziamo a scoprirlo **Categorie:** _Senza categoria **Tag:** Rust **Categorie Screencast:** Rust --- ### [Funzioni hash: importanza nella programmazione](https://devacademy.it/screencast/funzioni-hash-importanza-nella-programmazione/) **Published:** Gennaio 3, 2022 **Author:** Rino Picardi **Excerpt:** L'hashing è una tecnica onnipresente in ogni tecnologia volta alla sicurezza dei dati. Il programmatore si abitua velocemente a farne uso, specialmente in determinati ambiti, eppure una riflessione con qualche esempio pratico sulla sua importanza e caratteristiche può rivelarsi utile **Categorie:** _Senza categoria **Tag:** programmazione **Categorie Screencast:** Programmazione --- ### [KNIME: analisi Big Data senza programmare](https://devacademy.it/screencast/knime-analisi-big-data-senza-programmare/) **Published:** Dicembre 9, 2021 **Author:** Rino Picardi **Excerpt:** Analizzare dati richiede spesso la capacità di programmare in almeno un linguaggio e ciò può risultare ostico a professionisti senza le giuste conoscenze. Con KNIME scopriamo una soluzione importantissima che permette di analizzare Big Data e applicare Machine Learning senza una riga di codice **Categorie:** _Senza categoria **Tag:** Big Data, Machine Learning **Categorie Screencast:** Big Data, Machine Learning --- ### [NewsAPI: realizzare un newsreader in Node.js](https://devacademy.it/screencast/newsapi-realizzare-un-newsreader-in-node-js/) **Published:** Dicembre 1, 2021 **Author:** Rino Picardi **Excerpt:** In Rete sono disponibili moltissime API utili, in buona parte sfruttabili e sperimentabili in maniera gratuita. NewsAPI è una di queste e può essere integrata in ogni genere di software con qualsiasi linguaggio di programmazione. Qui la vediamo al lavoro con Node.js **Categorie:** _Senza categoria **Tag:** API, Node.js **Categorie Screencast:** API, Node.js --- ### [Data Science: effettuare confronti in Pandas e NumPy](https://devacademy.it/screencast/data-science-effettuare-confronti-in-pandas-e-numpy/) **Published:** Novembre 18, 2021 **Author:** Rino Picardi **Excerpt:** In Pandas e NumPy è fondamentale incrociare molte fonti dati per svolgere analisi. Talvolta possono però apparire messaggi di errore non facilmente comprensibili senza la necessaria esperienza, ad esempio non impiegando un giusto operatore logico. Esploriamo la problematica per vederci chiaro **Categorie:** _Senza categoria **Tag:** Data Science, NumPy, Pandas **Categorie Screencast:** Data Science, NumPy, Pandas --- ### [Docker: sperimentare versioni dei linguaggi di programmazione](https://devacademy.it/screencast/docker-sperimentare-versioni-dei-linguaggi-di-programmazione/) **Published:** Novembre 11, 2021 **Author:** Rino Picardi **Excerpt:** Docker non è solo un ambiente di produzione ma anche un'ottima piattaforma per lavoro e sperimentazione. E' una grande risorsa per ogni programmatore che può così verificare quanto il codice che ha scritto sia compatibile con versioni diverse dello stesso linguaggio. Vediamo qualche esempio pratico **Categorie:** _Senza categoria **Tag:** Docker **Categorie Screencast:** Docker --- ### [Rust: struct ed enum](https://devacademy.it/screencast/rust-struct-ed-enum/) **Published:** Novembre 4, 2021 **Author:** Rino Picardi **Excerpt:** L'aggregazione di dati è alla base della creazione di un buon sistema informativo. Gli sviluppatori di Rust lo sanno bene e per questo hanno integrato nel linguaggio struct ed enum per permettere una buona organizzazione delle informazioni. Scopriamo come si usano e quanto sono efficienti **Categorie:** _Senza categoria **Tag:** Rust **Categorie Screencast:** Rust --- ### [Ember.js: realizziamo la prima app](https://devacademy.it/screencast/ember-js-realizziamo-la-prima-app/) **Published:** Ottobre 27, 2021 **Author:** Rino Picardi **Excerpt:** I framework lato client oggi sono particolarmente intelligenti. Non solo animazione di interfacce web, offrono supporto per operazioni asincrone, gestione dei dati, testing ed altro ancora. Ember.js abbina a tutto questo anche una grande semplicità che ci renderà operativi in pochi minuti **Categorie:** _Senza categoria **Tag:** HTML, javascript **Categorie Screencast:** HTML, javascript --- ### [Json-schema: validazione di documenti JSON](https://devacademy.it/screencast/json-schema-validazione-di-documenti-json/) **Published:** Ottobre 20, 2021 **Author:** Rino Picardi **Excerpt:** JSON conquista per la sua infinita duttilità eppure in molti casi è necessario poter definire una "grammatica" per i nostri documenti specificando quali regole devono rispettare. Lo si può fare con Json Schema, uno standard molto flessibile che esploreremo in questo screencast **Categorie:** _Senza categoria **Tag:** API, JSON, Node.js **Categorie Screencast:** API, JSON, Node.js --- ### [MySQL Shell](https://devacademy.it/screencast/mysql-shell/) **Published:** Ottobre 13, 2021 **Author:** Rino Picardi **Excerpt:** L'interazione con server MySQL è indispensabile per molte figure: dallo sviluppatore al progettista, dall'amministratore al sistemista. Esistono molti tool sia da riga di comando sia visuali, offerti da MySQL stessa o di terze parti. Tra questi svetta MySQL Shell per caratteristiche ed efficienza **Categorie:** _Senza categoria **Tag:** database, MySQL **Categorie Screencast:** Database, MySQL --- ### [Python: uso dei context manager](https://devacademy.it/screencast/python-uso-dei-context-manager/) **Published:** Ottobre 6, 2021 **Author:** Rino Picardi **Excerpt:** Un linguaggio dinamico come Python ha bisogno di adeguate strutture per la corretta gestione di risorse. Risulta utilissimo per import/export di dati e sin da subito lo si sperimenta con il costrutto "with". Il programmatore può gestire tutto in proprio grazie ai Context Manager: capiamo come **Categorie:** _Senza categoria **Tag:** Python **Categorie Screencast:** Python --- ### [Handlebars.js: templating rapido per il web](https://devacademy.it/screencast/handlebars-js-templating-rapido-per-il-web/) **Published:** Settembre 30, 2021 **Author:** Rino Picardi **Excerpt:** Il templating è quell'attività che permette di innestare in maniera automatica ed efficiente dati all'interno di una pagina web. Esistono molte soluzioni, ma una facile da imparare nonché molto efficace è offerta da Handlebars.js, libreria che fa da "motore" a diversi altri ambienti di lavoro **Categorie:** _Senza categoria **Tag:** HTML, javascript **Categorie Screencast:** HTML, javascript --- ### [PHP: impiego dei trait](https://devacademy.it/screencast/php-impiego-dei-trait/) **Published:** Settembre 23, 2021 **Author:** Rino Picardi **Excerpt:** PHP dispone dei trait una caratteristica molto interessante che risulta fondamentale nell'organizzazione del codice. Permettono di estendere funzionalità di più classi grazie ad un aggregato di variabili e funzioni con una sintassi estremamente semplice che scopriremo in questo screencast **Categorie:** _Senza categoria **Tag:** PHP **Categorie Screencast:** PHP --- ### [Docker: confronto tra ARG e ENV](https://devacademy.it/screencast/docker-confronto-tra-arg-e-env/) **Published:** Settembre 15, 2021 **Author:** Rino Picardi **Excerpt:** Docker offre molte opportunità di automazione del flusso di lavoro con importanti elementi di personalizzazione tra cui argomenti e variabili d'ambiente. E' fondamentale non confonderli in quanto dedicati a scopi differenti pertanto approfittiamo di questo screencast per fare un po' di chiarezza **Categorie:** _Senza categoria **Tag:** Docker **Categorie Screencast:** Docker --- ### [Rust: funzioni ed espressioni](https://devacademy.it/screencast/rust-funzioni-ed-espressioni/) **Published:** Settembre 9, 2021 **Author:** Rino Picardi **Excerpt:** Il cuore dell'organizzazione del codice in Rust consiste nelle funzioni. Le si incontra sin dal primo giorno grazie all'uso della funzione main ma ci sono una serie di aspetti che vale la pena approfondire incluso il ruolo importante che le espressioni possono giocare **Categorie:** _Senza categoria **Tag:** Rust **Categorie Screencast:** Rust --- ### [Glimmer.js: sviluppare componenti per il web](https://devacademy.it/screencast/glimmer-js-sviluppare-componenti-per-il-web/) **Published:** Settembre 2, 2021 **Author:** Rino Picardi **Excerpt:** Glimmer.js è una libreria che nasce in seno al progetto Ember.js e che offre un modo pratico e produttivo per creare componenti per il web. In questo screencast, vedremo come la sua sintassi sintetizzi interessanti caratteristiche per la gestione di template ed informazioni interne alle componenti **Categorie:** _Senza categoria **Tag:** javascript, Typescript **Categorie Screencast:** javascript, Typescript --- ### [Data Science, l'importanza di grafici 3D](https://devacademy.it/screencast/data-science-limportanza-di-grafici-3d/) **Published:** Agosto 25, 2021 **Author:** Rino Picardi **Excerpt:** I dati da analizzare hanno spesso molteplici dimensioni e rappresentarli su piani bidimensionali non sempre risulta comodo. I grafici 3D possono offrire ulteriori prospettive soprattutto con uno strumento potente come Matplotlib. Vediamolo insieme **Categorie:** _Senza categoria **Tag:** Data Science, Machine Learning, Python **Categorie Screencast:** Data Science, Machine Learning, Python --- ### [Docker: Volume in pratica](https://devacademy.it/screencast/docker-volume-in-pratica/) **Published:** Luglio 28, 2021 **Author:** Rino Picardi **Excerpt:** I container Docker sono una via pratica, efficiente, moderna per eseguire applicazioni, ma ci sono aspetti cruciali da approfondire bene. Uno di questi riguarda i Volume, meccanismo nativo per mettere in comunicazione il file system del container con quello della macchina host. Esploriamo l'argomento **Categorie:** _Senza categoria **Tag:** Docker **Categorie Screencast:** Docker --- ### [Rust: tipologie di stringhe e loro impiego](https://devacademy.it/screencast/rust-tipologie-di-stringhe-e-loro-impiego/) **Published:** Luglio 21, 2021 **Author:** Rino Picardi **Excerpt:** In ogni forma di programmazione, le stringhe rivestono un ruolo fondamentale per la loro capacità di immagazzinare ogni genere di dato e di essere facilmente trattabili. In Rust, ne esistono due tipologie, entrambe altamente efficienti ma con caratteristiche di fondo differenti. Scopriamole! **Categorie:** _Senza categoria **Tag:** Rust **Categorie Screencast:** Rust --- ### [MQTT e Python: esempio pratico](https://devacademy.it/screencast/mqtt-e-python-esempio-pratico/) **Published:** Luglio 14, 2021 **Author:** Rino Picardi **Excerpt:** MQTT è il protocollo dominante dello scenario IoT e con ridotte quantità di codice permette di stabilire collegamenti tra device e software vari attraverso Internet. La sua praticità combacia perfettamente con la mentalità Python e per questo vediamo un esempio che li coinvolge entrambi **Categorie:** _Senza categoria **Tag:** IoT, Python **Categorie Screencast:** IoT, Python --- ### [Java: tutte le funzionalità dei record](https://devacademy.it/screencast/java-tutte-le-funzionalita-dei-record/) **Published:** Luglio 7, 2021 **Author:** Rino Picardi **Excerpt:** I record rappresentano una delle più interessanti innovazioni del mondo Java negli ultimi anni. Li vediamo al lavoro con esempi pratici approfondendo tutte le loro potenzialità e le regole da rispettare per farne buon uso **Categorie:** _Senza categoria **Tag:** java **Categorie Screencast:** Java --- ### [Quando servono davvero le classi?](https://devacademy.it/screencast/quando-servono-davvero-le-classi/) **Published:** Giugno 30, 2021 **Author:** Rino Picardi **Excerpt:** La Programmazione Orientata agli Oggetti si fonda sul concetto di classe e l'organizzazione delle informazioni in oggetti. Ma quando è davvero indispensabile programmare "a oggetti"? In alcuni linguaggi sempre, in altri si può scegliere: riflettiamo sulla necessità delle classi nella programmazione **Categorie:** _Senza categoria **Tag:** programmazione **Categorie Screencast:** Programmazione --- ### [Rust: array, vettori e slice](https://devacademy.it/screencast/rust-array-vettori-e-slice/) **Published:** Giugno 23, 2021 **Author:** Rino Picardi **Excerpt:** Rust mette a disposizione del programmatore diverse modalità per elaborare dati sotto forma di lista. In questo screencast, ne mettiamo a confronto i tre principali - array, vettori e slice - evidenziandone caratteristiche, differenze reciproche e casi d'uso **Categorie:** _Senza categoria **Tag:** Rust **Categorie Screencast:** Rust --- ### [Machine Learning: analisi delle componenti con PCA](https://devacademy.it/screencast/machine-learning-analisi-delle-componenti-con-pca/) **Published:** Giugno 16, 2021 **Author:** Rino Picardi **Excerpt:** Nel Machine Learning troviamo spesso grandi quantità di dati da trattare sia appartenenti al dataset sia prodotti dalle nostre elaborazioni. Tutto ciò può complicare la loro esplorazione ed analisi. Ecco una tecnica che può aiutarci ad affrontare queste situazioni: Principal Component Analysis o PCA **Categorie:** _Senza categoria **Tag:** Machine Learning **Categorie Screencast:** Machine Learning --- ### [MQTT, il protocollo per IoT](https://devacademy.it/screencast/mqtt-il-protocollo-per-iot/) **Published:** Giugno 9, 2021 **Author:** Rino Picardi **Excerpt:** Internet of Things, più comunemente IoT, è uno dei motori dell'industria attuale. Permette di raccogliere informazioni da "cose" di qualsiasi tipo grazie a sensori ed elettronica semplice ed efficiente. MQTT è un protocollo dominante nel settore sfruttabile in tantissimi linguaggi di programmazione **Categorie:** _Senza categoria **Tag:** IoT **Categorie Screencast:** IoT --- ### [Java: gestire dati con i record](https://devacademy.it/screencast/java-gestire-dati-con-i-record/) **Published:** Giugno 3, 2021 **Author:** Rino Picardi **Excerpt:** Tutto il mondo Java ruota attorno alla Programmazione Orientata agli Oggetti il cui costrutto base è rappresentato dalle classi. Queste vengono spesso usate per gestire dati immutabili ed è per questo che Java ha introdotto il record, un nuovo componente specifico ed efficiente ideale per lo scopo **Categorie:** _Senza categoria **Tag:** java **Categorie Screencast:** Java --- ### [Rust, organizzare progetti con Cargo](https://devacademy.it/screencast/rust-organizzare-progetti-con-cargo/) **Published:** Maggio 26, 2021 **Author:** Rino Picardi **Excerpt:** Rust è un linguaggio potente e adattabile a qualsiasi ambito, ideale per progetti di ampio respiro. Quando le architetture si complicano e le dipendenze si moltiplicano, serve uno strumento come Cargo, perfetto per organizzare bene il proprio codice e tutte le librerie importate via Internet **Categorie:** _Senza categoria **Tag:** Rust **Categorie Screencast:** Rust --- ### [Monitorare servizi web con Python](https://devacademy.it/screencast/monitorare-servizi-web-con-python/) **Published:** Maggio 19, 2021 **Author:** Rino Picardi **Excerpt:** Prepariamo un breve script Python che permetterà di monitorare la disponibilità di servizi e pagine web. Oltre alla sua utilità pratica, sarà un'occasione per vedere al lavoro la libreria requests, scoprire come avviare un server web in Python e ripassare alcuni concetti fondamentali di HTTP **Categorie:** _Senza categoria **Tag:** Python **Categorie Screencast:** Python --- ### [Generare numeri casuali: metodi e problematiche](https://devacademy.it/screencast/generare-numeri-casuali-metodi-e-problematiche/) **Published:** Maggio 12, 2021 **Author:** Rino Picardi **Excerpt:** Tutti i linguaggi permettono di generare dati casuali e questa è una funzionalità fondamentale in ogni ambito: dal gaming, alla sicurezza all'Intelligenza Artificiale. Ma si tratta di vera casualità? Scopriamo cosa si intende per pseudo-casualità con un esempio in Python ed il servizio Random.org **Categorie:** _Senza categoria **Tag:** Python **Categorie Screencast:** Python --- ### [Proteggere il contenuto delle pagine web](https://devacademy.it/screencast/proteggere-il-contenuto-delle-pagine-web/) **Published:** Maggio 5, 2021 **Author:** Rino Picardi **Excerpt:** Navigando nel web può capitare di notare a volte che alcuni siti riescano ad impedire il copia e incolla dei propri contenuti. Come ci riescono? In questo screencast analizziamo alcune tecniche basate su HTML, Javascript e CSS che permettono di implementare tale meccanismo **Categorie:** _Senza categoria **Tag:** CSS, HTML, javascript, jQuery **Categorie Screencast:** CSS, HTML, javascript, jQuery --- ### [PHP e Memcached: usare la cache con database MySQL](https://devacademy.it/screencast/php-e-memcached-usare-la-cache-con-database-mysql/) **Published:** Aprile 28, 2021 **Author:** Rino Picardi **Excerpt:** Comprendere il funzionamento di una cache in un'applicazione è di fondamentale importanza per progettare soluzioni efficienti. In questo screencast, vediamo tali principi al lavoro in un esempio realizzato con PHP e MySQL con Memcached che contribuisce all'ottimizzazione delle prestazioni **Categorie:** _Senza categoria **Tag:** Memcached, PHP, web server **Categorie Screencast:** Memcached, PHP, Web Server --- ### [PHP e Memcached: memoria cache per applicazioni web](https://devacademy.it/screencast/php-e-memcached-memoria-cache-per-applicazioni-web/) **Published:** Marzo 17, 2021 **Author:** Rino Picardi **Excerpt:** Gli sviluppatori web sono da sempre alla ricerca di prestazioni migliori per le loro applicazioni e ciò non può non tenere in considerazione un aspetto fondamentale: la cache. In questo screencast conosceremo Memcached, una delle principali soluzioni in materia, mettendolo alla prova con PHP **Categorie:** _Senza categoria **Tag:** Memcached, PHP, web server **Categorie Screencast:** Memcached, PHP, Web Server --- ### [Rust: controllo del flusso](https://devacademy.it/screencast/rust-controllo-del-flusso/) **Published:** Aprile 21, 2021 **Author:** Rino Picardi **Excerpt:** Rust è un linguaggio che si contraddistingue per una sintassi snella ma famigliare agli sviluppatori di qualsiasi provenienza. In questo screencast, proviamo alcuni costrutti di controllo del flusso in brevi programmi in cui sperimenteremo i meccanismi di compilazione del linguaggio **Categorie:** _Senza categoria **Tag:** Rust **Categorie Screencast:** Rust --- ### [Python: misurare le prestazioni del codice](https://devacademy.it/screencast/python-misurare-le-prestazioni-del-codice/) **Published:** Aprile 14, 2021 **Author:** Rino Picardi **Excerpt:** Per comprendere bene potenzialità e problematiche delle proprie applicazioni è importante saper misurare i tempi di esecuzione del codice. Ci sono vari modi per farlo ed in questo screencast incontriamo timeit, un modulo specifico che Python già include nativamente **Categorie:** _Senza categoria **Tag:** Python **Categorie Screencast:** Python --- ### [IntelliJ IDEA: un IDE per tutto il mondo Java](https://devacademy.it/screencast/intellij-idea-un-ide-per-tutto-il-mondo-java/) **Published:** Aprile 7, 2021 **Author:** Rino Picardi **Excerpt:** IntelliJ IDEA è uno degli ambienti di sviluppo più usati per il mondo Java. Prodotto da JetBrains, creatore di molti IDE nonché del linguaggio Kotlin, è uno strumento snello, intuitivo, ricco di funzionalità anche nella versione gratuita ed orientato all'integrazione dei vari linguaggi della JVM **Categorie:** _Senza categoria **Tag:** IDE, java, tools **Categorie Screencast:** IDE, Java, Tools --- ### [Streamlit: interfacce utente e gestione degli eventi](https://devacademy.it/screencast/streamlit-interfacce-utente-e-gestione-degli-eventi/) **Published:** Marzo 31, 2021 **Author:** Rino Picardi **Excerpt:** Streamlit permette di realizzare molto velocemente data app, ma la sua ricchezza di controlli utente permette di creare applicazioni in stile web di qualsiasi genere. In questo screencast mettiamo sotto la lente la sua gestione degli eventi e le possibilità di inserimento dati **Categorie:** _Senza categoria **Tag:** Data Science **Categorie Screencast:** Data Science --- ### [Docker: applicazioni PHP/MySQL su container](https://devacademy.it/screencast/docker-applicazioni-php-mysql-su-container/) **Published:** Marzo 24, 2021 **Author:** Rino Picardi **Excerpt:** Docker permette di creare rapidamente architetture estremamente flessibili distribuite su più container. Ne vediamo un esempio che offre un completo server web Apache con PHP e database MySQL. Tracceremo così delle linee guida fondamentali da applicare a qualsiasi contesto tecnologico **Categorie:** _Senza categoria **Tag:** Docker, MySQL, PHP, web server **Categorie Screencast:** Docker, MySQL, PHP, Web Server --- ### [Big Data su Cloud con Google Colab](https://devacademy.it/screencast/big-data-su-cloud-con-google-colab/) **Published:** Marzo 10, 2021 **Author:** Rino Picardi **Excerpt:** Studiare Big Data è ormai alla portata di tutti con ciò che Apache Spark ed il mondo Python offrono, ma lo si può rendere ancora più comodo sfruttando Google Colab, completo ambiente in Cloud. Vediamo in questo screencast alcune sue caratteristiche utili in generale, ma focalizzandoci su Pyspark **Categorie:** _Senza categoria **Tag:** Big Data, Cloud, Python **Categorie Screencast:** Big Data, Cloud, Python --- ### [Rust, introduzione al linguaggio](https://devacademy.it/screencast/rust-introduzione-al-linguaggio/) **Published:** Marzo 3, 2021 **Author:** Rino Picardi **Excerpt:** Rust è il linguaggio di programmazione inventato da Mozilla che sta attirando sempre più l'interesse degli sviluppatori. La sua sintassi snella unita ad una completa gestione della memoria e ad una grande ricchezza di funzionalità lo rendono estremamente produttivo e sicuro **Categorie:** _Senza categoria **Tag:** Rust **Categorie Screencast:** Rust --- ### [Axios, la libreria Javascript per la Rete](https://devacademy.it/screencast/axios-la-libreria-javascript-per-la-rete/) **Published:** Febbraio 24, 2021 **Author:** Rino Picardi **Excerpt:** Axios è una delle librerie più note ed utilizzate in Javascript per l'interazione in Rete. Efficiente e snella permette di scambiare dati via HTTP con servizi web e può essere integrata in pagine web o applicazioni Node.js: proviamola insieme! **Categorie:** _Senza categoria **Tag:** API, javascript, Node.js **Categorie Screencast:** API, javascript, Node.js --- ### [Eel: app desktop con HTML e Python](https://devacademy.it/screencast/eel-app-desktop-con-html-e-python/) **Published:** Febbraio 17, 2021 **Author:** Rino Picardi **Excerpt:** Eel è un framework che permette di realizzare applicazioni desktop coniugando le ricche funzionalità del linguaggio Python e l'espressività di HTML e Javascript per il design di interfacce. In questo screencast, lo vediamo all'opera apprezzando l'elevata produttività che offre **Categorie:** _Senza categoria **Tag:** Python **Categorie Screencast:** Python --- ### [MySQL, eseguire ricerche Full Text](https://devacademy.it/screencast/mysql-eseguire-ricerche-full-text/) **Published:** Febbraio 10, 2021 **Author:** Rino Picardi **Excerpt:** Gli operatori tradizionali per le ricerche testuali in MySQL sono spesso troppo legati alla struttura della frase e poco al loro contenuto. E' necessario pertanto imparare a svolgere interrogazioni Full Text che siano in grado di valutare l'attinenza dei testi ai termini di ricerca **Categorie:** _Senza categoria **Tag:** database, MySQL **Categorie Screencast:** Database, MySQL --- ### [Go: date e orari](https://devacademy.it/screencast/go-date-e-orari/) **Published:** Febbraio 3, 2021 **Author:** Rino Picardi **Excerpt:** Le date sono tipi di informazione fondamentali, indispensabili in molti ambiti. In Go, vengono trattate con un apposito package che sfrutta un'idea molto interessante per specificarne il formato. In questo screencast, scopriremo tutte le principali funzioni a disposizione **Categorie:** _Senza categoria **Tag:** Go **Categorie Screencast:** Go --- ### [Node.js: elaborare HTML con Cheerio.js](https://devacademy.it/screencast/node-js-elaborare-html-con-cheerio-js/) **Published:** Gennaio 27, 2021 **Author:** Rino Picardi **Excerpt:** In questo screencast, presentiamo Cheerio.js una libreria per Node.js che in pieno stile jQuery permette - in maniera molto efficiente - di interagire con contenuti HTML per elaborarli sia in lettura sia al fine della loro modifica **Categorie:** _Senza categoria **Tag:** javascript, Node.js **Categorie Screencast:** javascript, Node.js --- ### [PHP: creare QR code](https://devacademy.it/screencast/php-creare-qr-code/) **Published:** Gennaio 20, 2021 **Author:** Rino Picardi **Excerpt:** I codici QR sono ormai parte integrante dei cicli produttivi e commerciali della nostra società. Si tratta di codici a barre bidimensionali che possono essere automaticamente prodotti e sfruttati all'interno di applicazioni. In questo screencast, vediamo come crearli in linguaggio PHP **Categorie:** _Senza categoria **Tag:** PHP **Categorie Screencast:** PHP --- ### [Python: verificare la similarità tra stringhe](https://devacademy.it/screencast/python-verificare-la-similarita-tra-stringhe/) **Published:** Gennaio 13, 2021 **Author:** Rino Picardi **Excerpt:** Capire se due stringhe sono uguali non è affatto difficile, molto meno lo è misurare quanto si somiglino. La similarità tra stringhe è fondamentale per interpretare le richieste dell'utente e non farsi ingannare da errori di battitura: esistono molti modi per verificarla e qui lo facciamo in Python **Categorie:** _Senza categoria **Tag:** Python **Categorie Screencast:** Python --- ### [Go: organizzare funzioni con le interface](https://devacademy.it/screencast/go-organizzare-funzioni-con-le-interface/) **Published:** Gennaio 7, 2021 **Author:** Rino Picardi **Excerpt:** Nella programmazione è molto importante poter astrarre funzionalità in modo che possano essere applicate su tipologie di dati differenti. Go offre tale meccanismo mediante le interface, semplici da implementare ma particolarmente utili nei progetti. Vediamole insieme **Categorie:** _Senza categoria **Tag:** Go **Categorie Screencast:** Go --- ### [Blockchain in Python: distribuzione in Rete](https://devacademy.it/screencast/blockchain-in-python-distribuzione-in-rete/) **Published:** Dicembre 30, 2020 **Author:** Rino Picardi **Excerpt:** Oltre a raccogliere transazioni e offrire meccanismi di mining, una blockchain deve poter contenere funzionalità di distribuzione in rete tra nodi di pari livello affinché ognuno di essi possieda la stessa catena di blocchi accessibile in ogni momento. Sperimentiamolo insieme. **Categorie:** _Senza categoria **Tag:** Blockchain, Python **Categorie Screencast:** Blockchain, Python --- ### [Twig, template engine per PHP](https://devacademy.it/screencast/twig-template-engine-per-php/) **Published:** Dicembre 23, 2020 **Author:** Rino Picardi **Excerpt:** La separazione tra codice e grafica è da sempre una delle principali chiavi di gestione di progetti di ogni genere, dai più piccoli a quelli di più ampio respiro. I template engine sono una delle forme che tale principio assume e, nell'ambito PHP, Twig è uno dei più utilizzati: scopriamo perché **Categorie:** _Senza categoria **Tag:** PHP **Categorie Screencast:** PHP --- ### [R: raggruppare e sintetizzare dati con la libreria dplyr](https://devacademy.it/screencast/r-raggruppare-e-sintetizzare-dati-con-la-libreria-dplyr/) **Published:** Dicembre 16, 2020 **Author:** Rino Picardi **Excerpt:** Il linguaggio R spicca negli scenari attuali per ricchezza di funzionalità ed intuitività ma con la libreria dplyr fa un nuovo balzo in avanti sotto ogni aspetto. In questo screencast, vediamo le funzionalità di concatenazione di operazioni e sintesi di dati che essa offre **Categorie:** _Senza categoria **Tag:** Data Science, R **Categorie Screencast:** Data Science, R --- ### [Estrarre dati da pagine HTML in Python](https://devacademy.it/screencast/estrarre-dati-da-pagine-html-in-python/) **Published:** Dicembre 9, 2020 **Author:** Rino Picardi **Excerpt:** Estrarre dati da pagine HTML può essere utile in molti casi e per Python esiste BeautifulSoup, una libreria molto efficace per poter raggiungere l'obiettivo. Ne vediamo l'utilizzo in questo screencast scoprendo come semplici query permettano di esplorare intere pagine web **Categorie:** _Senza categoria **Tag:** Python **Categorie Screencast:** Python --- ### [Streamlit: integrare controlli utente nelle data app](https://devacademy.it/screencast/streamlit-integrare-controlli-utente-nelle-data-app/) **Published:** Dicembre 2, 2020 **Author:** Rino Picardi **Excerpt:** Uno degli aspetti più innovativi delle data app di Streamlit è la capacità di trasformare un'analisi di Data Science o Intelligenza Artificiale in un sito web interattivamente fruibile da qualsiasi utente. In questo screencast, vediamo l'impiego di controlli utente che completano questa missione **Categorie:** _Senza categoria **Tag:** Data Science **Categorie Screencast:** Data Science --- ### [Go, costruire liste con i puntatori](https://devacademy.it/screencast/go-costruire-liste-con-i-puntatori/) **Published:** Novembre 25, 2020 **Author:** Rino Picardi **Excerpt:** L'impiego dei puntatori in Go offre in un linguaggio moderno tutta la flessibilità del C. Grazie al loro impiego e a quello delle struct potremo creare strutture dati personalizzate da ottimizzare a piacimento. In questo screencast, lo dimostriamo costruendo una linked list **Categorie:** _Senza categoria **Tag:** Go **Categorie Screencast:** Go --- ### [Google Colab, ambiente on line per Data Science](https://devacademy.it/screencast/google-colab-ambiente-on-line-per-data-science/) **Published:** Novembre 18, 2020 **Author:** Rino Picardi **Excerpt:** Data Science e Machine Learning richiedono spesso grandi capacità di elaborazione e spazio di archiviazione, non sempre facili da individuare nei propri PC. Per tale motivo, Google mette a disposizione Colab un ambiente di lavoro on line gratuito per elaborare in Cloud i propri programmi **Categorie:** _Senza categoria **Tag:** Data Science **Categorie Screencast:** Data Science --- ### [PHP: la libreria Assert](https://devacademy.it/screencast/php-la-libreria-assert/) **Published:** Novembre 11, 2020 **Author:** Rino Picardi **Excerpt:** La libreria Assert permette con una sintassi molto snella di sottoporre a test di validazione dati in ogni punto del codice e lanciare eccezioni per segnalarne l'inadeguatezza. E' uno strumento semplice ma ricco di controlli già impostati che permette di irrobustire facilmente i nostri programmi **Categorie:** _Senza categoria **Tag:** PHP **Categorie Screencast:** PHP --- ### [R, introduzione alla libreria dplyr](https://devacademy.it/screencast/r-introduzione-alla-libreria-dplyr/) **Published:** Novembre 4, 2020 **Author:** Rino Picardi **Excerpt:** Il linguaggio R ha una sintassi ispirata alla massima sinteticità e produttività ma alcuni strumenti lo rendono ancora più attraente. In questo screencast ne vediamo uno, la libreria dplyr, sperimentandone le funzioni di base su un dataset storico della Data Science **Categorie:** _Senza categoria **Tag:** Data Science, R **Categorie Screencast:** Data Science, R --- ### [Go, utilizzare i puntatori](https://devacademy.it/screencast/go-utilizzare-i-puntatori/) **Published:** Ottobre 28, 2020 **Author:** Rino Picardi **Excerpt:** Go trae grandissimo spunto dal C. Tra i vari aspetti ereditati troviamo i puntatori, spesso oscurati dai più recenti linguaggi. Permettono di gestire in maniera assolutamente efficiente la memoria assegnando grandi poteri al programmatore. Iniziamo a conoscerli vedendo la loro sintassi **Categorie:** _Senza categoria **Tag:** Go **Categorie Screencast:** Go --- ### [Data app: web app per la Data Science con Streamlit](https://devacademy.it/screencast/data-app-web-app-per-la-data-science-con-streamlit/) **Published:** Ottobre 21, 2020 **Author:** Rino Picardi **Excerpt:** Python offre grandi strumenti per la Data Science ma non è sempre semplice mostrare ad altri i risultati delle elaborazioni soprattutto se si tratta di non addetti ai lavori. Streamlit permette di trasformare programmi Python in app web da condividere subito senza richiedere competenze front-end **Categorie:** _Senza categoria **Tag:** Data Science, Pandas, Python **Categorie Screencast:** Data Science, Pandas, Python --- ### [Java: stringhe multiriga con i TextBlocks](https://devacademy.it/screencast/java-stringhe-multiriga-con-i-textblocks/) **Published:** Ottobre 14, 2020 **Author:** Rino Picardi **Excerpt:** Java, con la sua versione 15, introduce definitivamente i TextBlocks, un'utilissima caratteristica che permette di definire stringhe multiriga. La sintassi per il loro utilizzo è assolutamente immediata ed in questo screencast la vediamo insieme **Categorie:** _Senza categoria **Tag:** java **Categorie Screencast:** Java --- ### [Java: integrare log nel codice](https://devacademy.it/screencast/java-integrare-log-nel-codice/) **Published:** Ottobre 7, 2020 **Author:** Rino Picardi **Excerpt:** Man mano che i nostri programmi si fanno sempre più articolati, è indispensabile verificarne il funzionamento in tempo reale sia per evitare malfunzionamenti sia per monitorarne le prestazioni. Per tutto ciò esiste il logging e Java ne offre una versione integrata molto completa **Categorie:** _Senza categoria **Tag:** java **Categorie Screencast:** Java --- ### [Python: metodi speciali per classi contenitore](https://devacademy.it/screencast/python-metodi-speciali-per-classi-contenitore/) **Published:** Settembre 30, 2020 **Author:** Rino Picardi **Excerpt:** Programmando ad oggetti in Python, abbiamo a disposizione metodi speciali la cui implementazione permetterà al linguaggio di attivare funzionalità utilizzando i più comuni operatori. Ciò porterà alla scrittura di codice sintetico, fluido e ancora più leggibile. Vediamone un esempio pratico **Categorie:** _Senza categoria **Tag:** Python **Categorie Screencast:** Python --- ### [Go: struttura dati map](https://devacademy.it/screencast/go-struttura-dati-map/) **Published:** Settembre 16, 2020 **Author:** Rino Picardi **Excerpt:** Il linguaggio Go offre un'utilissima struttura dati di tipo chiave/valore, denominata Map. Si rivela indispensabile nella soluzione di molti problemi ed in questo screencast ne vediamo le potenzialità e la semplicità di utilizzo **Categorie:** _Senza categoria **Tag:** Go **Categorie Screencast:** Go --- ### [Face Detection in Javascript](https://devacademy.it/screencast/face-detection-in-javascript/) **Published:** Settembre 9, 2020 **Author:** Rino Picardi **Excerpt:** La Face Detection può essere applicata velocemente in Javascript, integrando codice in una semplice pagina HTML. Ci viene incontro una libreria molto diffusa, face-api.js, che conosceremo in questo screencast. Ciò dimostrerà come l'Intelligenza Artificiale può essere davvero a disposizione di tutti **Categorie:** _Senza categoria **Tag:** Intelligenza Artificiale, javascript **Categorie Screencast:** Intelligenza Artificiale, javascript --- ### [Blockchain in Python: attivazione in rete](https://devacademy.it/screencast/blockchain-in-python-attivazione-in-rete/) **Published:** Settembre 2, 2020 **Author:** Rino Picardi **Excerpt:** Non appena pronta la nostra struttura dati Blockchain potremo esporne le funzionalità principali in Rete mediante il pattern REST. Con il framework Flask realizzeremo il tutto velocemente ottenendo così una base operativa da estendere non appena necessario **Categorie:** _Senza categoria **Tag:** Blockchain **Categorie Screencast:** Blockchain --- ### [R, panoramica sui tipi di dato](https://devacademy.it/screencast/r-panoramica-sui-tipi-di-dato/) **Published:** Agosto 26, 2020 **Author:** Rino Picardi **Excerpt:** Per utilizzare correttamente il linguaggio R con tutti i tool messi a sua disposizione, è necessario conoscerne bene i tipi di dato ed apprezzare le differenze che tra essi sussistono. Ne vediamo una panoramica mettendoli a confronto **Categorie:** _Senza categoria **Tag:** R **Categorie Screencast:** R --- ### [Java: type inference con var](https://devacademy.it/screencast/java-type-inference-con-var/) **Published:** Agosto 5, 2020 **Author:** Rino Picardi **Excerpt:** Java ha introdotto nella sua versione 10 un meccanismo di type inference. Così facendo, il programmatore potrà dichiarare variabili locali senza specificarne espressamente il tipo di dato, ma sarà Java ad intuirlo dal valore di inizializzazione. Tutto ciò ruota attorno ad una nuova direttiva: var. **Categorie:** _Senza categoria **Tag:** java **Categorie Screencast:** Java --- ### [Go: array e slice](https://devacademy.it/screencast/go-array-e-slice/) **Published:** Luglio 29, 2020 **Author:** Rino Picardi **Excerpt:** Go dispone di molte interessanti strutture dati. In questo screencast, ne vediamo due: gli array e gli slice. I primi sono una classica struttura sequenziale basata su indici numerici, mentre gli slice ne estendono il concetto con un funzionamento molto più elastico e votato all'elaborazione **Categorie:** _Senza categoria **Tag:** Go **Categorie Screencast:** Go --- ### [Blockchain in Python: Proof of work e mining](https://devacademy.it/screencast/blockchain-in-python-proof-of-work-e-mining/) **Published:** Luglio 22, 2020 **Author:** Rino Picardi **Excerpt:** Proseguiamo il lavoro sul nostro prototipo di Blockchain realizzata da zero in linguaggio Python. Alla gestione della struttura dati sarà il momento di affiancare un meccanismo di Proof of work, l'elemento scatenante delle competizioni tra i cosiddetti "miner". Comprendiamone l'importanza **Categorie:** _Senza categoria **Tag:** Blockchain **Categorie Screencast:** Blockchain --- ### [R, introduzione al linguaggio per Data Science e Intelligenza Artificiale](https://devacademy.it/screencast/r-introduzione-al-linguaggio-per-data-science-e-intelligenza-artificiale/) **Published:** Maggio 6, 2020 **Author:** Rino Picardi **Excerpt:** Il linguaggio R è una risorsa storica dell'Informatica. Nato nei primi '90 come piattaforma gratuita per la Statistica si è arricchito di funzionalità di ogni genere ed oggi la sua capacità di rapportarsi con Big Data e Machine Learning l'ha reso uno dei linguaggi in maggiore crescita al mondo **Categorie:** _Senza categoria **Tag:** Big Data, Data Science, Intelligenza Artificiale, Machine Learning, R **Categorie Screencast:** Big Data, Data Science, Intelligenza Artificiale, Machine Learning, R --- ### [Python: creare API REST con Flask](https://devacademy.it/screencast/python-creare-api-rest-con-flask/) **Published:** Luglio 15, 2020 **Author:** Rino Picardi **Excerpt:** Scopriamo Flask, un microframework Python, per la creazione veloce ed efficiente di servizi web. Implementa nativamente il modello REST offerto in modo comodo mediante il meccanismo Python dei decorator. In questo screencast, lo mettiamo alla prova partendo dalle sue fondamenta. **Categorie:** _Senza categoria **Tag:** API, Flask, Python, Rest **Categorie Screencast:** API, Flask, Python, Rest --- ### [Comporre gerarchie di dati in Yaml](https://devacademy.it/screencast/comporre-gerarchie-di-dati-in-yaml/) **Published:** Luglio 8, 2020 **Author:** Rino Picardi **Excerpt:** Il formato YAML ha conquistato una grande fetta di sviluppatori perseguendo in maniera efficace e pratica la missione già assolta bene da XML e JSON: offrire un formato testuale, fruibile dall'Essere Umano quanto dalla macchina, finalizzato alla definizione di gerarchie di dati. Scopriamolo insieme! **Categorie:** _Senza categoria **Tag:** Formato dati, Yaml **Categorie Screencast:** Formato dati, Yaml --- ### [Java: le switch expressions](https://devacademy.it/screencast/java-le-switch-expressions/) **Published:** Luglio 1, 2020 **Author:** Rino Picardi **Excerpt:** Le Switch expression sono nuove funzionalità che Java 14 rende definitivamente standard. Offrono un modo efficiente con sintassi moderna per utilizzare uno dei costrutti condizionali più usati di sempre. Vediamole al lavoro con esempi pratici apprezzando le loro varie modalità di utilizzo **Categorie:** _Senza categoria **Tag:** java **Categorie Screencast:** Java --- ### [Creare una semplice Blockchain: esempio pratico](https://devacademy.it/screencast/creare-una-semplice-blockchain-esempio-pratico/) **Published:** Giugno 24, 2020 **Author:** Rino Picardi **Excerpt:** Facciamo una Blockchain in casa con il linguaggio Python! E' una versione semplificata in quanto manca del mining e non offre la distribuzione dei dati in Rete, ma mostra come la struttura dati costituisca una catena di blocchi e quale sia il ruolo di transazioni e funzioni di hashing **Categorie:** _Senza categoria **Tag:** Blockchain **Categorie Screencast:** Blockchain --- ### [Face Detection in Python](https://devacademy.it/screencast/face-detection-in-python/) **Published:** Giugno 17, 2020 **Author:** Rino Picardi **Excerpt:** Sperimentare personalmente la Face Detection può risultare molto complesso, ma esistono condizioni che permettono di svolgere esercizi in maniera molto agevole. In questo screencast, vedremo come tutto ciò possa davvero diventare semplice con Python, OpenCV ed un modello già perfettamente istruito **Categorie:** _Senza categoria **Tag:** Intelligenza Artificiale, Machine Learning, Python **Categorie Screencast:** Intelligenza Artificiale, Machine Learning, Python --- ### [R, raccogliere dati ed elaborarli](https://devacademy.it/screencast/r-raccogliere-dati-ed-elaborarli/) **Published:** Giugno 10, 2020 **Author:** Rino Picardi **Excerpt:** R dimostra di essere un grande linguaggio alla portata di tutti quando con pochi passaggi permette di leggere file di dati, svolgere elaborazioni e salvare nuovamente i risultati su disco, tutto in maniera molto intuitiva. Vediamo come in questo screencast **Categorie:** _Senza categoria **Tag:** Data Science, R **Categorie Screencast:** Data Science, R --- ### [Go: gestire variabili e controllo del flusso](https://devacademy.it/screencast/go-gestire-variabili-e-controllo-del-flusso/) **Published:** Giugno 3, 2020 **Author:** Rino Picardi **Excerpt:** In questo screencast, affrontiamo una panoramica dei costrutti di base del linguaggio Go: variabili, costanti, cicli e programmazione condizionale. Potremo così apprezzarne la praticità che scaturisce dal connubio tra l'eredità del C e l'ispirazione tratta dai linguaggi più moderni **Categorie:** _Senza categoria **Tag:** Go **Categorie Screencast:** Go --- ### [Face Detection e Face Recognition](https://devacademy.it/screencast/face-detection-e-face-recognition/) **Published:** Maggio 27, 2020 **Author:** Rino Picardi **Excerpt:** Al giorno d'oggi impazza il dibattito su Face Detection, Face Recognition e riconoscimento facciale in genere. Sono tematiche "calde", ricche di opportunità professionali che si collocano a pieno nel bacino dell'Intelligenza Artificiale. Vediamone i fondamenti e prepariamoci a metterle in pratica **Categorie:** _Senza categoria **Tag:** Intelligenza Artificiale, Machine Learning **Categorie Screencast:** Intelligenza Artificiale, Machine Learning --- ### [Blockchain: aspetti tecnici e applicazioni](https://devacademy.it/screencast/blockchain-aspetti-tecnici-e-applicazioni/) **Published:** Maggio 20, 2020 **Author:** Rino Picardi **Excerpt:** Approfondiamo alcuni aspetti tecnici che caratterizzano ogni Blockchain: cosa sono le funzioni hash, perchè sono così importanti e cosa significa fare mining di un blocco. Con questi fondamenti, si potrà studiare qualsiasi sua implementazione e - perchè no? - crearne una propria **Categorie:** _Senza categoria **Tag:** Blockchain **Categorie Screencast:** Blockchain --- ### [Lavorare su Excel con Python e Pandas](https://devacademy.it/screencast/lavorare-su-excel-con-python-e-pandas/) **Published:** Maggio 13, 2020 **Author:** Rino Picardi **Excerpt:** Pandas è un framework Python per Data Science molto eclettico. Può collaborare con sorgenti dati di vario genere tra cui Excel, tool per fogli di calcolo di Microsoft molto usato negli ambienti d'ufficio. In questo screencast, vediamo come ottenere il massimo da questo connubio **Categorie:** _Senza categoria **Tag:** Data Science, Pandas, Python **Categorie Screencast:** Data Science, Pandas, Python --- ### [Visual Studio Code: editor gratuito per ogni linguaggio](https://devacademy.it/screencast/visual-studio-code-editor-gratuito-per-ogni-linguaggio/) **Published:** Aprile 29, 2020 **Author:** Rino Picardi **Excerpt:** Visual Studio Code è uno degli ambienti di sviluppo più utilizzati e rivoluzionari di oggi. Prodotto da Microsoft con mentalità molto moderna, è leggero, multipiattaforma ed utilizzabile con qualsiasi linguaggio. Lo scopriamo in questo screencast provandolo con Node.js e Python **Categorie:** _Senza categoria **Tag:** Editor, tools **Categorie Screencast:** Editor, Tools --- ### [Introduzione a Go](https://devacademy.it/screencast/introduzione-a-go/) **Published:** Aprile 22, 2020 **Author:** Rino Picardi **Excerpt:** Go, linguaggio di programmazione creato da Google, è una delle tecnologie in maggiore crescita degli ultimi anni. Semplice, efficiente, modulare: si impara velocemente e dà grandi soddisfazioni. In questo screencast, iniziamo ad impararlo con il suo editor on-line, senza installare niente **Categorie:** _Senza categoria **Tag:** Go **Categorie Screencast:** Go --- ### [Java: configurare un proprio programma con le Properties](https://devacademy.it/screencast/java-configurare-un-proprio-programma-con-le-properties/) **Published:** Aprile 15, 2020 **Author:** Rino Picardi **Excerpt:** Quando un'applicazione cresce, è fondamentale poterle passare una configurazione dall'esterno. Questa in genere consta di un certo numero di parametri, troppo pochi per potergli dedicare un database. La soluzione ideale è la classe Properties che li gestisce su file e li organizza in una struttura dati efficiente **Categorie:** _Senza categoria **Tag:** java **Categorie Screencast:** Java --- ### [Calcolare combinazioni di elementi](https://devacademy.it/screencast/calcolare-combinazioni-di-elementi/) **Published:** Aprile 8, 2020 **Author:** Rino Picardi **Excerpt:** Calcolare combinazioni è una tecnica utile, adatta agli scopi più disparati. Ogni linguaggio offre il modo per realizzarlo, ma è importante tenere in considerazione alcuni aspetti. Li vediamo insieme con esempi di codice in SQL e Python **Categorie:** _Senza categoria **Tag:** ingegneria del software, Python, sql **Categorie Screencast:** Ingegneria del software, Python, SQL --- ### [Steganografia: capirne il significato ed usarla in pratica](https://devacademy.it/screencast/steganografia-capirne-il-significato-ed-usarla-in-pratica/) **Published:** Aprile 1, 2020 **Author:** Rino Picardi **Excerpt:** La steganografia è l'antica arte di proteggere l'informazione nascondendola. Questa tecnica, impiegata già in molti campi, trova applicazione da sempre in informatica grazie a tool e librerie. In questo screencast la scopriamo insieme mettendola alla prova con un semplice esercizio **Categorie:** _Senza categoria **Tag:** Python, sicurezza **Categorie Screencast:** Python, Sicurezza --- ### [Analizzare dati a intervalli con Window Function per MySQL](https://devacademy.it/screencast/analizzare-dati-a-intervalli-con-window-function-per-mysql/) **Published:** Marzo 25, 2020 **Author:** Rino Picardi **Excerpt:** MySQL con la versione 8 ha introdotto la potente caratteristica delle Window Function. In questo screencast vediamo come utilizzarle individuando dinamicamente finestre di righe da trattare. Otterremo una modalità di analisi molto più flessibile rispetto alla logica storica del SQL **Categorie:** _Senza categoria **Tag:** MySQL **Categorie Screencast:** MySQL --- ### [Crittografare dati: dai concetti teorici all'uso pratico](https://devacademy.it/screencast/crittografare-dati-dai-concetti-teorici-all-uso-pratico/) **Published:** Marzo 18, 2020 **Author:** Rino Picardi **Excerpt:** Per programmatori, sistemisti o informatici in genere, conoscere i concetti base della crittografia è fondamentale. Serve a capire meglio i protocolli, a rendere più sicure le proprie applicazioni ed i processi produttivi. Vediamo insieme alcune nozioni con un rapido esempio in linguaggio PHP **Categorie:** _Senza categoria **Tag:** sicurezza **Categorie Screencast:** Sicurezza --- ### [Clean Code in Java](https://devacademy.it/screencast/clean-code-in-java/) **Published:** Marzo 11, 2020 **Author:** Rino Picardi **Excerpt:** Java è un linguaggio potentissimo e molto produttivo, ma per poterlo sfruttare al meglio è indispensabile scrivere del codice ben organizzato e aderente alle convenzioni ufficiali. In questo screencast, vediamo una serie di buone prassi da seguire, utili in qualsiasi tipo di programma **Categorie:** _Senza categoria **Tag:** Clean Code, java **Categorie Screencast:** Clean Code, Java --- ### [Javascript: gestire il drag&drop con Dragdealer.js](https://devacademy.it/screencast/javascript-gestire-il-dragdrop-con-dragdealer-js/) **Published:** Marzo 4, 2020 **Author:** Rino Picardi **Excerpt:** Il drag&drop è una delle pratiche più utilizzate nelle interfacce utente. Javascript permette di sfruttarlo al meglio, ma c'è una libreria che ne facilita l'uso: Dragdealer.js. In questo screencast lo vediamo al lavoro per sperimentare la sua efficacia e semplicità **Categorie:** _Senza categoria **Tag:** javascript **Categorie Screencast:** javascript --- ### [Blockchain: introduzione alla tecnologia](https://devacademy.it/screencast/blockchain-introduzione-alla-tecnologia/) **Published:** Febbraio 26, 2020 **Author:** Rino Picardi **Excerpt:** Blockchain si è fatta conoscere tramite Bitcoin, ma ha saputo dimostrare la sua validità come tecnologia di archiviazione sicura ed efficiente di transazioni. Ha proposto un nuovo modello di fiducia in grado di rivoluzionare molte attività che conosciamo oggigiorno **Categorie:** _Senza categoria **Tag:** Blockchain **Categorie Screencast:** Blockchain --- ### [Usare Window Functions in MySQL](https://devacademy.it/screencast/usare-window-functions-in-mysql/) **Published:** Febbraio 19, 2020 **Author:** Rino Picardi **Excerpt:** Le Window Function sono una recente introduzione di MySQL che mette a disposizione gli strumenti per attivare funzioni su finestre di record di dimensione variabile. Sono utilissime nell'analisi dei dati in quanto esulano dal classico modo di agire di SQL rendendo la creazione di query ancora più flessibile **Categorie:** _Senza categoria **Tag:** MySQL **Categorie Screencast:** MySQL --- ### [Javascript per Maker: programmare un Microbit](https://devacademy.it/screencast/javascript-per-maker-programmare-un-microbit/) **Published:** Febbraio 12, 2020 **Author:** Rino Picardi **Excerpt:** BBC Microbit è una piattaforma per maker che permette a chiunque di programmare. Lo si può fare con l'applicazione Makecode realizzata da Microsoft, molto comoda, dotata di editor a blocchi. In questo contesto si può fare uso anche di Javascript scoprendo un nuovo uso di questo fantastico linguaggio **Categorie:** _Senza categoria **Tag:** IoT, javascript, microbit, microcontroller **Categorie Screencast:** IoT, javascript, microbit, microcontroller --- ### [Generare dati "fake" per test in PHP](https://devacademy.it/screencast/generare-dati-fake-per-test-in-php/) **Published:** Febbraio 5, 2020 **Author:** Rino Picardi **Excerpt:** Spesso è necessario generare dati causali, ad esempio per popolare un database con dati fake o restituire informazioni da un servizio REST in costruzione nel frattempo che sia completato. In PHP possiamo farlo con funzioni molto comode e poche righe di codice **Categorie:** _Senza categoria **Tag:** PHP **Categorie Screencast:** PHP --- ### [Sperimentare il Machine Learning con Python: la regressione lineare](https://devacademy.it/screencast/sperimentare-il-machine-learning-con-python-la-regressione-lineare/) **Published:** Gennaio 29, 2020 **Author:** Rino Picardi **Excerpt:** Approcciamo in maniera semplice il Machine Learning senza preamboli matematici, ma mettendo subito mano al codice. Vedremo come con l'algoritmo della Regressione Lineare offerto dalla libreria Scikit-learn possiamo tracciare l'andamento di valori e attuare predizioni **Categorie:** _Senza categoria **Tag:** Data Science, Machine Learning, NumPy, Python **Categorie Screencast:** Data Science, Machine Learning, NumPy, Python --- ### [Prima app Android con Jetpack](https://devacademy.it/screencast/prima-app-android-con-jetpack/) **Published:** Gennaio 22, 2020 **Author:** Rino Picardi **Excerpt:** Jetpack è il framework che ha riorganizzato l'intero sistema di sviluppo delle app Android. Ciò è evidente sin dai casi più semplici in quanto offre le caratteristiche di compatibilità al passato, una volta proprie della Support Library, ed oggi garantite da AndroidX **Categorie:** _Senza categoria **Tag:** android **Categorie Screencast:** Android --- ### [Pandas: esempio pratico di analisi dati](https://devacademy.it/screencast/pandas-esempio-pratico-di-analisi-dati/) **Published:** Gennaio 15, 2020 **Author:** Rino Picardi **Excerpt:** Con Pandas possiamo svolgere un lavoro di Data Science in ogni suo aspetto: dal caricamento dei dati, alla loro analisi fino alla rappresentazione dei risultati. Tutto ciò può essere condotto con un flusso di lavoro lineare grazie alla flessibilità dei notebook Jupyter **Categorie:** _Senza categoria **Tag:** Data Science, Pandas, Python **Categorie Screencast:** Data Science, Pandas, Python --- ### [Pandas, eseguire elaborazioni sui dati](https://devacademy.it/screencast/pandas-eseguire-elaborazioni-sui-dati/) **Published:** Luglio 3, 2019 **Author:** Rino Picardi **Excerpt:** Tra le operazioni fondamentali che offre Pandas, il noto framework Python per Data Science, è indispensabile conoscere il raggruppamento di dati ed il merging di Dataframe, corrispondenti al GROUP BY e al JOIN del linguaggio SQL. Questo screencast ne mostra l'utilizzo con una serie di esempi pratici **Categorie:** _Senza categoria **Tag:** Data Science, Pandas, Python **Categorie Screencast:** Data Science, Pandas, Python --- ### [Pandas, Data Science in Python](https://devacademy.it/screencast/pandas-data-science-in-python/) **Published:** Giugno 12, 2019 **Author:** Rino Picardi **Excerpt:** Fare Data Science significa essere capaci di analizzare dati, interpretarli ed estrarne valore non visibile a prima vista. Il mondo Python offre uno strumento perfetto per questo: Pandas, una libreria efficiente, completa e dall'uso immediato. In questo screencast, iniziamo ad conoscerlo **Categorie:** _Senza categoria **Tag:** Data Science, Pandas, Python **Categorie Screencast:** Data Science, Pandas, Python --- ### [W3.CSS: gestire il layout con Container e Panel](https://devacademy.it/screencast/w3-css-gestire-il-layout-con-container-e-panel/) **Published:** Gennaio 8, 2020 **Author:** Rino Picardi **Excerpt:** Il framework W3.CSS permette di strutturare velocemente pagine web con un approccio moderno, flessibile e responsive. In questo screencast, vediamo il funzionamento degli elementi Panel e Container nonché la possibilità di applicare bordi, colori e dimensionamenti semplicemente associando alcune classi CSS **Categorie:** _Senza categoria **Tag:** CSS **Categorie Screencast:** CSS --- ### [Clean Code: scrivere bene in ogni linguaggio](https://devacademy.it/screencast/clean-code-scrivere-bene-in-ogni-linguaggio/) **Published:** Dicembre 18, 2019 **Author:** Rino Picardi **Excerpt:** Il codice non deve soltanto funzionare ma essere scritto bene per facilitare manutenzione, correzione e condivisione. Si parla di Clean Code quando i programmi seguono queste buone norme e nessun linguaggio ne è esentato. Eccovi i nostri consigli validi per programmatori di ogni tecnologia **Categorie:** _Senza categoria **Tag:** Clean Code, ingegneria del software **Categorie Screencast:** Clean Code, Ingegneria del software --- ### [W3.CSS, il framework CSS di W3Schools](https://devacademy.it/screencast/w3-css-il-framework-css-di-w3schools/) **Published:** Dicembre 11, 2019 **Author:** Rino Picardi **Excerpt:** W3.CSS è un framework CSS efficiente, gratuito e responsive che W3Schools ha creato. Permette di modellare pagine web con assoluta rapidità grazie alle classi CSS che offre. In questo screencast ne vediamo un'introduzione veloce apprezzando punti di forza e facilità di integrazione **Categorie:** _Senza categoria **Tag:** CSS **Categorie Screencast:** CSS --- ### [Java: Stack e Queue](https://devacademy.it/screencast/java-stack-e-queue/) **Published:** Dicembre 4, 2019 **Author:** Rino Picardi **Excerpt:** Per usare correttamente le strutture dati è fondamentale capirne le finalità e conoscere la loro politica di gestione degli oggetti. In Java, esistono varie implementazioni dei modelli Stack e Queue, perfette per risolvere una vasta serie di problemi. Qui le sperimentiamo con alcune classi del JDK **Categorie:** _Senza categoria **Tag:** java **Categorie Screencast:** Java --- ### [Javascript: Page Visibility API](https://devacademy.it/screencast/javascript-page-visibility-api/) **Published:** Novembre 27, 2019 **Author:** Rino Picardi **Excerpt:** Per gestire efficacemente l'interazione con l'utente può far comodo riconoscere dinamicamente se la pagina web è visibile o meno. Javascript offre le Page Visibility API, molto semplici ma ideali per raggiungere lo scopo. Le proviamo in questo screencast con e senza jQuery **Categorie:** _Senza categoria **Tag:** javascript **Categorie Screencast:** javascript --- ### [Integrare Redis in Node.js](https://devacademy.it/screencast/integrare-redis-in-node-js/) **Published:** Novembre 20, 2019 **Author:** Rino Picardi **Excerpt:** Redis e Node.js sono due grandi realtà dell'Informatica moderna: gratuiti, open source, duttili nei loro usi. Farli interagire risulta semplice grazie ai driver nati dall'impegno delle rispettive community. In questo screencast, apprezziamo i loro principi fondanti e li vediamo al lavoro insieme **Categorie:** _Senza categoria **Tag:** Node.js, Redis **Categorie Screencast:** Node.js, Redis --- ### [Telegram: realizzare un Bot in Python](https://devacademy.it/screencast/telegram-realizzare-un-bot-in-python/) **Published:** Novembre 13, 2019 **Author:** Rino Picardi **Excerpt:** Con un bot Telegram possiamo creare applicazioni che scambiano informazioni mediante i flussi di comunicazione già implementati da Telegram. Lo si può fare con tanti linguaggi grazie alle API aperte della piattaforma, ma in questo screencast lo faremo con Python stupendoci di quanto sia semplice **Categorie:** _Senza categoria **Tag:** API, Python, Telegram **Categorie Screencast:** API, Python, Telegram --- ### [Javascript: la libreria Popper.js e Tooltip.js](https://devacademy.it/screencast/javascript-la-libreria-popper-js-e-tooltip-js/) **Published:** Novembre 6, 2019 **Author:** Rino Picardi **Excerpt:** Popper.js e Tooltip.js sono due librerie che rendono ancora più semplici alcune operazioni in Javascript. La prima si occupa di posizionamento di elementi, la seconda della gestione di tooltip. Possono essere integrate facilmente nelle nostre pagine web ed in questo screencast ne vediamo l'utilizzo **Categorie:** _Senza categoria **Tag:** javascript, Librerie **Categorie Screencast:** javascript, Librerie --- ### [Python: realizzare grafici per il Data Science](https://devacademy.it/screencast/python-realizzare-grafici-per-il-data-science/) **Published:** Ottobre 30, 2019 **Author:** Rino Picardi **Excerpt:** Un'immagine spiega più di mille parole e mai ciò è stato così vero come nella Data Science. Python offre molti tool di visualizzazione dati per evidenziarne modelli e renderli comprensibili anche ai non addetti ai lavori. Vediamo al lavoro Matplotlib, uno strumento storico, ma sempre completissimo **Categorie:** _Senza categoria **Tag:** Data Science, Python **Categorie Screencast:** Data Science, Python --- ### [Design Pattern Facade](https://devacademy.it/screencast/design-pattern-facade/) **Published:** Ottobre 23, 2019 **Author:** Rino Picardi **Excerpt:** Quando i programmi crescono, organizzare bene il codice diventa prioritario. I Design Pattern forniscono soluzioni di successo già pronte, adatte ad ogni situazione. In questo screencast, scopriamo Facade ed il suo modo di semplificare il dialogo tra sottosistemi dell'applicazione **Categorie:** _Senza categoria **Tag:** design patterns **Categorie Screencast:** Design patterns --- ### [HTTP/2, il server Caddy](https://devacademy.it/screencast/http-2-il-server-caddy/) **Published:** Ottobre 16, 2019 **Author:** Rino Picardi **Excerpt:** Esistono moltissime implementazioni del protocollo HTTP/2 sia lato server sia client. In questo screencast, incontriamo Caddy un server gratuito, completo e velocissimo da configurare con la possibilità di aggiungere HTTPS in maniera assolutamente automatica **Categorie:** _Senza categoria **Tag:** HTTP/2 **Categorie Screencast:** HTTP/2 --- ### [Flutter e firebase: realizziamo un'app contatore](https://devacademy.it/screencast/flutter-e-firebase-realizziamo-un-app-contatore/) **Published:** Ottobre 9, 2019 **Author:** Rino Picardi **Excerpt:** Firebase costituisce in maniera veloce, efficiente ed economica un completo backend per le proprie applicazioni di ogni genere. Qui lo proviamo in un'app Flutter sperimentando la velocità con cui il tutto può essere configurato ed utilizzato **Categorie:** _Senza categoria **Tag:** Firebase, Flutter **Categorie Screencast:** Firebase, Flutter --- ### [Vue.js: creare componenti](https://devacademy.it/screencast/vue-js-creare-componenti/) **Published:** Ottobre 2, 2019 **Author:** Rino Picardi **Excerpt:** Vue.js permette di creare proprie componenti che includono dati, metodi e codice HTML che gli conferisce una forma. In questo screencast impariamo a crearle e vediamo come siano in grado di aiutarci a riutilizzare il codice che produciamo **Categorie:** _Senza categoria **Tag:** framework, javascript, Vue.js **Categorie Screencast:** Framework, javascript, Vue.js --- ### [Integrare Twitter in un'app web con PHP](https://devacademy.it/screencast/integrare-twitter-in-un-app-web-con-php/) **Published:** Settembre 25, 2019 **Author:** Rino Picardi **Excerpt:** Twitter è uno dei Social Network più importanti al mondo e deve buona parte della sua fama al suo ricco set di API messe a disposizione del programmatore. Possiamo sfruttarle con moltissimi linguaggi e qui le mettiamo alla prova con PHP **Categorie:** _Senza categoria **Tag:** API, PHP **Categorie Screencast:** API, PHP --- ### [Lubuntu su VirtualBox](https://devacademy.it/screencast/lubuntu-su-virtualbox/) **Published:** Settembre 18, 2019 **Author:** Rino Picardi **Excerpt:** Un Linux già pronto efficiente e facile da usare farebbe spesso comodo quando si lavora, si studia e si sperimenta, ma purtroppo incute sempre un po' di timore in chi non lo conosce. In questo video proponiamo una modalità comoda e immediata per usarlo subito grazie alle macchine virtuali VirtualBox **Categorie:** _Senza categoria **Tag:** linux, virtualbox **Categorie Screencast:** Linux, VirtualBox --- ### [Telegram Bot: cosa sono e come si realizzano](https://devacademy.it/screencast/telegram-bot-cosa-sono-e-come-si-realizzano/) **Published:** Settembre 11, 2019 **Author:** Rino Picardi **Excerpt:** Telegram è un servizio di messaggistica in forte espansione e la disponibilità di API ha attivato un mercato di produzione di applicazioni. I Bot ne sono una tipologia estremamente diffusa e permettono di creare software in grado di dialogare con utenti mediante messaggi Telegram. Capiamo come. **Categorie:** _Senza categoria **Tag:** Bot, Telegram **Categorie Screencast:** Bot, Telegram --- ### [Introduzione al Machine Learning](https://devacademy.it/screencast/introduzione-al-machine-learning/) **Published:** Settembre 4, 2019 **Author:** Rino Picardi **Excerpt:** Si parla molto di Machine Learning al giorno d'oggi. E' una branca dell'Intelligenza Artificiale che esiste da molto tempo, ma che le condizioni tecnologiche di questo periodo hanno reso particolarmente attraente. E' qualcosa di interessante e in grado offrire molti posti di lavoro **Categorie:** _Senza categoria **Tag:** Big Data, Intelligenza Artificiale, Machine Learning, Python **Categorie Screencast:** Big Data, Intelligenza Artificiale, Machine Learning, Python --- ### [Virtualenv per organizzare progetti in Python](https://devacademy.it/screencast/virtualenv-per-organizzare-progetti-in-python/) **Published:** Agosto 28, 2019 **Author:** Rino Picardi **Excerpt:** Python mette a disposizione un ottimo sistema per l'integrazione di ulteriori librerie attraverso la Rete. Per gestirle al meglio però è importante padroneggiare uno strumento che permette di creare ambienti virtuali in grado di isolare i progetti gli uni dagli altri: Virtualenv **Categorie:** _Senza categoria **Tag:** Python **Categorie Screencast:** Python --- ### [Android Jetpack](https://devacademy.it/screencast/android-jetpack/) **Published:** Luglio 31, 2019 **Author:** Rino Picardi **Excerpt:** Per sviluppare app native in Android esistono così tanti strumenti che è stato necessario mettere ordine. A questo scopo è nato Android Jetpack, un sistema di librerie, tool e best practise per guidare lo sviluppatore nella realizzazione di app in Java e Kotlin efficienti e ricche di funzionalità **Categorie:** _Senza categoria **Tag:** android **Categorie Screencast:** Android --- ### [Vue.js, cicli e condizioni](https://devacademy.it/screencast/vue-js-cicli-e-condizioni/) **Published:** Luglio 24, 2019 **Author:** Rino Picardi **Excerpt:** Vue.js offre un ricco sistema di direttive con cui si può gestire la produzione della pagina web. Tra queste troviamo anche cicli e costrutti condizionali che rendono i nostri script ancora più dinamici. Li vediamo al lavoro in questo screencast su un template web **Categorie:** _Senza categoria **Tag:** framework, javascript, Vue.js **Categorie Screencast:** Framework, javascript, Vue.js --- ### [PyCharm: l'ambiente di sviluppo completo per Python](https://devacademy.it/screencast/pycharm-l-ambiente-di-sviluppo-completo-per-python/) **Published:** Luglio 17, 2019 **Author:** Rino Picardi **Excerpt:** Per programmare in Python non occorre alcuno strumento particolare se non il linguaggio stesso. Eppure esistono strumenti che possono agevolarci nella gestione di progetti come PyCharm, un IDE molto completo sviluppato dagli stessi creatori di WebStorm, IntelliJ e del linguaggio Kotlin **Categorie:** _Senza categoria **Tag:** IDE, Python **Categorie Screencast:** IDE, Python --- ### [Flutter: creazione di un'interfaccia](https://devacademy.it/screencast/flutter-creazione-di-un-interfaccia/) **Published:** Luglio 10, 2019 **Author:** Rino Picardi **Excerpt:** Un'app ha bisogno di un'infrastruttura in cui incastonare le interfacce. Parliamo di menu, Navigation Drawer e qualsiasi altro elemento che permetta di attivarne le funzionalità. In questo screencast integriamo in un solo esempio questi elementi formando così una base di lavoro da personalizzare **Categorie:** _Senza categoria **Tag:** android, Dart, Flutter, ios **Categorie Screencast:** Android, Dart, Flutter, iOS --- ### [Firebase, Cloud Functions con database Firestore](https://devacademy.it/screencast/firebase-cloud-functions-con-database-firestore/) **Published:** Giugno 26, 2019 **Author:** Rino Picardi **Excerpt:** Tra i suoi molti servizi, Firebase offre Cloud Functions e Firestore: il primo consiste in funzioni pubblicate via HTTP, il secondo è un modernissimo database NoSQL. Combinati insieme permettono di creare servizi web serverless, veloci e affidabili, completamente in Cloud e resi sicuri con HTTPS **Categorie:** _Senza categoria **Tag:** Firebase, Serverless **Categorie Screencast:** Firebase, Serverless --- ### [Integrare Redis nei progetti Java](https://devacademy.it/screencast/integrare-redis-nei-progetti-java/) **Published:** Giugno 19, 2019 **Author:** Rino Picardi **Excerpt:** Redis può essere integrato in qualsiasi progetto grazie ai numerosi driver disponibili. In questo screencast impareremo ad usare Jedis, uno dei più conosciuti per la programmazione Java. Avremo così a disposizione una struttura dati condivisa e veloce, perfetta per ogni nostro programma **Categorie:** _Senza categoria **Tag:** java, Redis **Categorie Screencast:** Java, Redis --- ### [Introduzione a Vue.js](https://devacademy.it/screencast/introduzione-a-vue-js/) **Published:** Giugno 5, 2019 **Author:** Rino Picardi **Excerpt:** Vue.js è un framework Javascript per la creazione di web app comodo, leggero, reattivo e veloce da imparare. Con tali caratteristiche ha conquistato il mondo nel giro di pochissimi anni tanto da essere spesso preferito ad alternative più blasonate ma più complesse. Iniziamo a studiarlo insieme. **Categorie:** _Senza categoria **Tag:** framework, javascript, Vue.js **Categorie Screencast:** Framework, javascript, Vue.js --- ### [Flutter, gestire liste nelle proprie app](https://devacademy.it/screencast/flutter-gestire-liste-nelle-proprie-app/) **Published:** Maggio 29, 2019 **Author:** Rino Picardi **Excerpt:** Ogni volta che in un'app mobile guardiamo una lista di notizie, di post social o un elenco di chiamate stiamo in realtà osservando una ListView, un gestore di liste. Si tratta probabilmente di uno dei widget più utili e Flutter non può certo farne a meno. Vediamo come utilizzarlo **Categorie:** _Senza categoria **Tag:** android, Flutter, ios **Categorie Screencast:** Android, Flutter, iOS --- ### [Firebase: Realtime Database Vs Cloud Firestore](https://devacademy.it/screencast/firebase-realtime-database-vs-cloud-firestore/) **Published:** Maggio 22, 2019 **Author:** Rino Picardi **Excerpt:** Firebase propone, tra i vari servizi, due database NoSQL in Cloud: il Realtime Database e Cloud Firestore. Il primo è il progetto originario della piattaforma, veloce, rivolto a sincronizzazione e supporto offline. Il secondo è un prodotto maturo, esteso e perfettamente ambientato nell'epoca Cloud **Categorie:** _Senza categoria **Tag:** database, Firebase, NoSQL **Categorie Screencast:** Database, Firebase, NoSQL --- ### [Un server web sempre pronto con Python](https://devacademy.it/screencast/un-server-web-sempre-pronto-con-python/) **Published:** Maggio 8, 2019 **Author:** Rino Picardi **Excerpt:** Quando si sperimentano tecnologie client in qualsiasi linguaggio, sorge l'esigenza di avere a disposizione un server per la sperimentazione. Python ne possiede uno HTTP già pronto che si avvia con un solo comando e permette di condividere tutti i file che abbiamo nella cartella corrente **Categorie:** _Senza categoria **Tag:** Python, web server **Categorie Screencast:** Python, Web Server --- ### [HTTP/2, il web del futuro](https://devacademy.it/screencast/http-2-il-web-del-futuro/) **Published:** Maggio 15, 2019 **Author:** Rino Picardi **Excerpt:** A più di 15 anni da HTTP/1.1, il web ha ottenuto il suo nuovo protocollo applicativo efficiente, veloce, ottimizzato: HTTP/2. Ciò costituisce il vettore principale su cui correrà il web del futuro pertanto è fondamentale conoscerne le basi concettuali ed i punti di forza che lo rendono così speciale **Categorie:** _Senza categoria **Tag:** HTTP/2 **Categorie Screencast:** HTTP/2 --- ### [Flutter: gestire lo stato dell'applicazione con gli StatefulWidget](https://devacademy.it/screencast/flutter-gestire-lo-stato-dellapplicazione-con-gli-statefulwidget/) **Published:** Maggio 2, 2019 **Author:** Rino Picardi **Excerpt:** Le app mobile hanno bisogno di gestire informazioni in grado di popolare le interfacce utente. Tutto questo insieme di dati prende il nome di "stato" dell'applicazione e Flutter lo gestisce in maniera efficiente e reattiva con gli StatefulWidget. Vediamo come in un esempio pratico **Categorie:** _Senza categoria **Tag:** android, Dart, Flutter, ios **Categorie Screencast:** Android, Dart, Flutter, iOS --- ### [JSFiddle: testa e condividi online il tuo codice HTML, CSS e JavaScript](https://devacademy.it/screencast/jsfiddle-testa-e-condividi-online-il-tuo-codice-html-css-e-javascript/) **Published:** Aprile 24, 2019 **Author:** Rino Picardi **Excerpt:** JSFiddle è un applicativo web che permette di studiare, sperimentare ed eventualmente condividere codici in HTML, CSS e Javascript. E' un ambiente ideale per la proliferazione delle idee che non richiede alcuna preparazione: si contatta il sito ed è subito disponibile. Proviamolo! **Categorie:** _Senza categoria **Tag:** CSS, HTML, javascript, tools **Categorie Screencast:** CSS, HTML, javascript, Tools --- ### [Introduzione a Redis: il database NoSQL key/value](https://devacademy.it/screencast/introduzione-a-redis-il-database-nosql-key-value/) **Published:** Aprile 17, 2019 **Author:** Rino Picardi **Excerpt:** Redis è oggi una delle tecnologie per database più utilizzate al mondo. Tale risultato è dovuto ad elementi trainanti come la struttura chiave/valore, la flessibilità nella gestione delle informazioni e le alte prestazioni. Iniziamo ad usarlo da console, preambolo al suo impiego in progetti reali **Categorie:** _Senza categoria **Tag:** database, NoSQL, Redis **Categorie Screencast:** Database, NoSQL, Redis --- ### [Java HTTP client: ricevere e trasmettere oggetti JSON](https://devacademy.it/screencast/java-http-client-ricevere-e-trasmettere-oggetti-json/) **Published:** Aprile 10, 2019 **Author:** Rino Picardi **Excerpt:** Il client HTTP/Websocket che Java ha introdotto ufficialmente nella sua versione 11 può svolgere ogni tipo di operazione. In questo screencast lo utilizziamo per eseguire chiamate sia GET sia POST ricevendo e trasmettendo oggetti in formato JSON, il più usato della Rete **Categorie:** _Senza categoria **Tag:** java, JSON **Categorie Screencast:** Java, JSON --- ### [Imparare Dart, il successore di Javascript per web e mobile](https://devacademy.it/screencast/imparare-dart-il-successore-di-javascript-per-web-e-mobile/) **Published:** Aprile 3, 2019 **Author:** Rino Picardi **Excerpt:** Dart è il linguaggio proposto da Google per un Javascript più moderno, efficiente e completo. Dotato di sintassi snella e produttiva, ricco di funzionalità e package, può essere imparato molto velocemente. E' il linguaggio di elezione di Flutter, il framework che sta conquistando il mobile **Categorie:** _Senza categoria **Tag:** android, Dart, Flutter, ios **Categorie Screencast:** Android, Dart, Flutter, iOS --- ### [Java 11: nuovo client per HTTP e WebSocket](https://devacademy.it/screencast/java-11-nuovo-client-per-http-e-websocket/) **Published:** Gennaio 23, 2019 **Author:** Rino Picardi **Excerpt:** Con la versione 11, Java ha fornito un nuovo supporto per l'interazione in Rete: completo, moderno, efficiente. Viene garantita l'interoperabilità con il protocollo HTTP versioni 1.1 e 2 nonché con i WebSocket. Lo proviamo leggendo dati da un server web **Categorie:** _Senza categoria **Tag:** java, WebSocket **Categorie Screencast:** Java, WebSocket --- ### [Python: formattazione di stringhe](https://devacademy.it/screencast/python-formattazione-di-stringhe/) **Published:** Marzo 27, 2019 **Author:** Rino Picardi **Excerpt:** Python offre diverse modalità di formattazione delle stringhe, introdotte via via che il linguaggio andava evolvendosi. Questo screencast vuole fare chiarezza mostrando una panoramica di tutto ciò che si può usare per formattare dati, sempre all'insegna della sinteticità del codice tipica di Python **Categorie:** _Senza categoria **Tag:** Python **Categorie Screencast:** Python --- ### [Flutter: costruire layout](https://devacademy.it/screencast/flutter-costruire-layout/) **Published:** Marzo 20, 2019 **Author:** Rino Picardi **Excerpt:** In Flutter possiamo creare layout utilizzando soltanto codice Dart. In questo screencast vedremo come fare e quali sono i concetti principali da acquisire. Grazie alla sintassi sintetica del linguaggio ed il supporto alla Programmazione ad Oggetti saremo velocissimi a costruire app **Categorie:** _Senza categoria **Tag:** android, Flutter, ios **Categorie Screencast:** Android, Flutter, iOS --- ### [PHP: Guzzle libreria client per HTTP](https://devacademy.it/screencast/php-guzzle-libreria-client-per-http/) **Published:** Marzo 13, 2019 **Author:** Rino Picardi **Excerpt:** Non è raro che in un'applicazione PHP capiti di dover interagire con un web service o altre fonti di dati. La libreria Guzzle offre un modo efficace per poter avere funzionalità da client HTTP a propria disposizione con poche righe di codice **Categorie:** _Senza categoria **Tag:** Librerie, PHP **Categorie Screencast:** Librerie, PHP --- ### [Flutter: sviluppare app native multipiattaforma](https://devacademy.it/screencast/flutter-sviluppare-app-native-multipiattaforma/) **Published:** Marzo 6, 2019 **Author:** Rino Picardi **Excerpt:** Flutter ha rivoluzionato il mondo del mobile portando un approccio rapido, innovativo e efficace per realizzare app native multipiattaforma. Lo stesso codice permetterà di creare versioni della medesima applicazione per più sistemi operativi riducendo tempi di sviluppo e costi per le aziende **Categorie:** _Senza categoria **Tag:** android, Flutter, ios **Categorie Screencast:** Android, Flutter, iOS --- ### [MapReduce: algoritmo base per Big Data](https://devacademy.it/screencast/mapreduce-algoritmo-base-per-big-data/) **Published:** Febbraio 27, 2019 **Author:** Rino Picardi **Excerpt:** Hadoop e l'algoritmo MapReduce sono una delle pietre miliari dei Big Data: nonostante altri strumenti siano stati inventati, la loro importanza è tuttora grande. MapReduce è tuttavia un algoritmo di elaborazione sfruttabile in ambiti diversi pertanto comprenderlo a fondo ha una grande utilità **Categorie:** _Senza categoria **Tag:** Big Data, MapReduce **Categorie Screencast:** Big Data, MapReduce --- ### [Javascript: grafici con Chart.js](https://devacademy.it/screencast/javascript-grafici-con-chart-js/) **Published:** Febbraio 20, 2019 **Author:** Rino Picardi **Excerpt:** Un'immagine dice più di mille parole quindi come non considerare l'espressività di un grafico per illustrare i dati? Chart.js è un'ottima libreria Javascript che permette la creazione di grafici dinamici e configurabili da integrare nelle pagine web **Categorie:** _Senza categoria **Tag:** Chart.js, javascript **Categorie Screencast:** Chart.js, javascript --- ### [Creare un server web con Node.js](https://devacademy.it/screencast/creare-un-server-web-con-node-js/) **Published:** Febbraio 13, 2019 **Author:** Rino Picardi **Excerpt:** Uno dei grandi successi di Node.js è stato trasformare Javascript da linguaggio puramente client a soluzione apprezzata per lo sviluppo lato server. In questo screencast vediamo come si possa realizzare con Node.js un server web efficiente, pronto ad ospitare le funzionalità di un backend web **Categorie:** _Senza categoria **Tag:** Node.js, web server **Categorie Screencast:** Node.js, Web Server --- ### [Python e calcolo scientifico: dagli operatori aritmetici fino alla potente libreria NumPy](https://devacademy.it/screencast/python-e-calcolo-scientifico-dagli-operatori-aritmetici-fino-alla-potente-libreria-numpy/) **Published:** Febbraio 6, 2019 **Author:** Rino Picardi **Excerpt:** Partendo da operatori aritmetici e funzioni built-in fino alla potentissima libreria NumPy, passando per i moduli math, statistics e random già inclusi in Python: ecco l'arsenale a disposizione dello specialista di Big Data, Machine Learning e calcolo scientifico in genere **Categorie:** _Senza categoria **Tag:** Big Data, NumPy, Python **Categorie Screencast:** Big Data, NumPy, Python --- ### [Firebase: sviluppo serverless con Cloud Functions](https://devacademy.it/screencast/firebase-sviluppo-serverless-con-cloud-functions/) **Published:** Gennaio 30, 2019 **Author:** Rino Picardi **Excerpt:** Firebase è una delle principali soluzioni per lo sviluppo Serverless. Permette infatti di creare backend senza gestire server. Con Cloud Functions si possono predisporre semplicemente funzioni Javascript che, mediante URL, siano contattabili via web: il modo più veloce per creare web service **Categorie:** _Senza categoria **Tag:** Cloud, Firebase, Serverless **Categorie Screencast:** Cloud, Firebase, Serverless --- ### [WebSocket: realizzare un server in PHP](https://devacademy.it/screencast/websocket-realizzare-un-server-in-php/) **Published:** Gennaio 16, 2019 **Author:** Rino Picardi **Excerpt:** WebSocket è una tecnologia che può essere implementata in tantissimi linguaggi sia lato client sia lato server. In questo screencast vediamo come può essere realizzato un echo server in PHP con Ratchet, una libreria semplice ma completa **Categorie:** _Senza categoria **Tag:** PHP, WebSocket **Categorie Screencast:** PHP, WebSocket --- ### [Python e SQLAlchemy: soluzione completa per database](https://devacademy.it/screencast/python-e-sqlalchemy-soluzione-completa-per-database/) **Published:** Gennaio 9, 2019 **Author:** Rino Picardi **Excerpt:** SQLAlchemy è una delle più complete soluzioni per interagire con un database da un programma in Python. Contempla sia un approccio tradizionale sia quello ORM: nello screencast li indaghiamo entrambi cercando di cogliere le maggiori differenze che tra essi sussistono **Categorie:** _Senza categoria **Tag:** database, Python **Categorie Screencast:** Database, Python --- ### [WebSocket: fondamenti e primo esempio](https://devacademy.it/screencast/websocket-fondamenti-e-primo-esempio/) **Published:** Gennaio 2, 2019 **Author:** Rino Picardi **Excerpt:** WebSocket costruisce un canale full-duplex tra client e server che riduce di molto la complessità dei dialoghi in Rete. Il tutto può essere realizzato con molti linguaggi di programmazione e garantisce tempistiche tali da permettere scambio di dati in real-time **Categorie:** _Senza categoria **Tag:** API, WebSocket **Categorie Screencast:** API, WebSocket --- ### [Big Data: cosa sono e perchè studiarli](https://devacademy.it/screencast/big-data-cosa-sono-e-perche-studiarli/) **Published:** Dicembre 19, 2018 **Author:** Rino Picardi **Excerpt:** Con l'espressione Big Data ci riferiamo ad un ambito tecnologico ricco di strumenti per la gestione e l'analisi di grandi moli di dati, accumulati a velocità mai viste e dai contenuti più disparati. Offre grandissime opportunità, ma per farne parte è fondamentale aver ben chiari i concetti di fondo **Categorie:** _Senza categoria **Tag:** Big Data **Categorie Screencast:** Big Data --- ### [IPython e Jupyter Notebook](https://devacademy.it/screencast/ipython-e-jupyter-notebook/) **Published:** Dicembre 12, 2018 **Author:** Rino Picardi **Excerpt:** Per lavorare in Python, esistono due ottimi ambienti: iPython, una console interattiva potenziata ricca di funzionalità, ed i Notebook di Jupyter che permettono di eseguire codice integrandovi documentazione e contenuti multimediali. Li inizieremo ad usare qui e scopriremo come si integrano tra loro **Categorie:** _Senza categoria **Tag:** iPython, Jupyter Notebook, Python **Categorie Screencast:** iPython, Jupyter Notebook, Python --- ### [Firebase, piattaforma in Cloud per app di successo](https://devacademy.it/screencast/firebase-piattaforma-in-cloud-per-app-di-successo/) **Published:** Dicembre 5, 2018 **Author:** Rino Picardi **Excerpt:** Firebase è una piattaforma Cloud di Google che dispone di molti servizi tra cui database NoSQL, hosting, Functions ma anche statistiche, monitoraggio e pubblicità offrendosi come controparte ad app di ogni tipo, in primis Android e iOS. Ne vediamo una panoramica e proviamo il suo servizio di hosting **Categorie:** _Senza categoria **Tag:** Cloud, Firebase, Serverless **Categorie Screencast:** Cloud, Firebase, Serverless --- ### [Android: gestire ListView in Kotlin](https://devacademy.it/screencast/android-gestire-listview-in-kotlin/) **Published:** Novembre 28, 2018 **Author:** Rino Picardi **Excerpt:** La sintassi del linguaggio Kotlin ha arricchito la vita dello sviluppatore Android permettendo di produrre codice più sintetico ed espressivo. Vediamo con un esempio pratico come il classico costrutto delle ListView può essere sfruttato con questo linguaggio **Categorie:** _Senza categoria **Tag:** android, Kotlin **Categorie Screencast:** Android, Kotlin --- ### [Assegnazioni destrutturate in Javascript](https://devacademy.it/screencast/assegnazioni-destrutturate-in-javascript/) **Published:** Novembre 21, 2018 **Author:** Rino Picardi **Excerpt:** La continua ricerca di una sintassi sempre più moderna ha portato il linguaggio Javascript ad integrare le assegnazioni destrutturate, ormai molto usate in tutti i framework più recenti. In questo screencast, comprenderemo il loro utilizzo e ne apprezzeremo i vantaggi **Categorie:** _Senza categoria **Tag:** javascript **Categorie Screencast:** javascript --- ### [Python: integrare database MySQL nelle applicazioni](https://devacademy.it/screencast/python-integrare-database-mysql-nelle-applicazioni/) **Published:** Novembre 14, 2018 **Author:** Rino Picardi **Excerpt:** Integrare un database MySQL in un'applicazione Python significa mettere insieme due delle tecnologie più utilizzate al mondo nei rispettivi settori. Il sistema modulare a supporto di questo linguaggio permetterà di avere a disposizione rapidamente quanto di necessario. Ecco un esempio completo **Categorie:** _Senza categoria **Tag:** database, MySQL, Python **Categorie Screencast:** Database, MySQL, Python --- ### [Android: iniziare a programmare in Kotlin](https://devacademy.it/screencast/android-iniziare-a-programmare-in-kotlin/) **Published:** Novembre 7, 2018 **Author:** Rino Picardi **Excerpt:** Kotlin è a tutti gli effetti uno strumento ufficiale per lo sviluppo Android. La sua espressività permette di rendere più agevole il lavoro senza perdere nulla di quello cui siamo abituati. La totale compatibilità con Java rende possibile integrarlo gradualmente nei nostri progetti **Categorie:** _Senza categoria **Tag:** android, Kotlin **Categorie Screencast:** Android, Kotlin --- ### [Javascript: gestire le attività asincrone con le Promises native](https://devacademy.it/screencast/javascript-gestire-le-attivita-asincrone-con-le-promises-native/) **Published:** Ottobre 31, 2018 **Author:** Rino Picardi **Excerpt:** Il continuo aggiornamento del linguaggio Javascript ha portato all'introduzione delle Promises in forma nativa per evitare il ricorso a soluzioni personali o librerie di terze parti per la gestione delle attività asincrone. Vediamone i concetti fondanti ed il modo in cui attivarle nel nostro codice **Categorie:** _Senza categoria **Tag:** javascript **Categorie Screencast:** javascript --- ### [Typescript, la nuova generazione di Javascript](https://devacademy.it/screencast/typescript-la-nuova-generazione-di-javascript/) **Published:** Ottobre 24, 2018 **Author:** Rino Picardi **Excerpt:** Typescript è un superset di Javascript che permette di sfruttare i tipi di dato per rendere più sicuro e ottimizzato l'uso del linguaggio. Il suo impiego è ormai diffuso a tutti i framework più moderni e lo si può approcciare gradualmente senza fatica **Categorie:** _Senza categoria **Tag:** javascript, Typescript **Categorie Screencast:** javascript, Typescript --- ### [Ottimizzare le query in MySQL con gli indici](https://devacademy.it/screencast/ottimizzare-le-query-in-mysql-con-gli-indici/) **Published:** Ottobre 17, 2018 **Author:** Rino Picardi **Excerpt:** Man mano che un database accumula dati l'esecuzione delle query può risultare rallentata compromettendo le performance delle applicazioni. In questo screencast, impareremo a studiare il funzionamento di una query mediante il comando EXPLAIN e ad ottimizzarle tramite indici **Categorie:** _Senza categoria **Tag:** database, MySQL, sql **Categorie Screencast:** Database, MySQL, SQL --- ### [Kotlin, programmazione a oggetti avanzata](https://devacademy.it/screencast/kotlin-programmazione-a-oggetti-avanzata/) **Published:** Ottobre 10, 2018 **Author:** Rino Picardi **Excerpt:** In Kotlin, possiamo utilizzare ogni costrutto tipico della Programmazione Orientata agli Oggetti. Abbiamo a disposizione ereditarietà, override di metodi, classi astratte e molto altro ancora. In questo screencast, un esempio pratico ci illustra molti di questi elementi al lavoro **Categorie:** _Senza categoria **Tag:** android, Kotlin **Categorie Screencast:** Android, Kotlin --- ### [Gestione degli utenti in MySQL](https://devacademy.it/screencast/gestione-degli-utenti-in-mysql/) **Published:** Ottobre 3, 2018 **Author:** Rino Picardi **Excerpt:** La sicurezza è tutto per la gestione dei dati. Il primo passo per garantirsi tale obiettivo è una corretta profilazione degli utenti che metta persone fisiche e applicazioni in condizione di interagire con i database avendo a disposizione i soli privilegi necessari **Categorie:** _Senza categoria **Tag:** database, MySQL, sql **Categorie Screencast:** Database, MySQL, SQL --- ### [Kotlin: Programmazione Orientata agli Oggetti](https://devacademy.it/screencast/kotlin-programmazione-orientata-agli-oggetti/) **Published:** Settembre 26, 2018 **Author:** Rino Picardi **Excerpt:** Il linguaggio Kotlin offre tutto il supporto necessario alla Programmazione Orientata agli Oggetti. In questo screencast, ne vedremo i principali costrutti al lavoro: classi con metodi e costruttori, enum e le nuove data class, il tutto espresso con una sintassi concisa e leggibile **Categorie:** _Senza categoria **Tag:** android, Kotlin **Categorie Screencast:** Android, Kotlin --- ### [Realizzare pagine web con Markdown](https://devacademy.it/screencast/realizzare-pagine-web-con-markdown/) **Published:** Settembre 19, 2018 **Author:** Rino Picardi **Excerpt:** Il formato Markdown offre un modo testuale, sintetico e pratico per realizzare contenuti destinati al Web. Esistono molti strumenti per utilizzarlo i quali, tra l'altro, ne offrono la conversione automatica in HTML. Vediamone i fondamenti e impieghiamolo subito sulla piattaforma Github **Categorie:** _Senza categoria **Tag:** Markdown, tools **Categorie Screencast:** Markdown, Tools --- ### [Espressioni lambda in Android](https://devacademy.it/screencast/espressioni-lambda-in-android/) **Published:** Settembre 12, 2018 **Author:** Rino Picardi **Excerpt:** Java ha da sempre rappresentato per gli sviluppatori Android un linguaggio completo e flessibile pur evidenziando, a volte, una sintassi prolissa. Lo sviluppo Android contempla ormai molte novità recenti introdotte in questo linguaggio, a partire dalle espressioni lambda: ecco come usarle **Categorie:** _Senza categoria **Tag:** android **Categorie Screencast:** Android --- ### [Iniziamo a programmare con Kotlin](https://devacademy.it/screencast/iniziamo-a-programmare-con-kotlin/) **Published:** Settembre 5, 2018 **Author:** Rino Picardi **Excerpt:** Kotlin è giovane, moderno ed estremamente produttivo. Deriva da Java ed è recentemente diventato uno dei linguaggi di programmazione ufficiali per lo sviluppo di app Android. Presenta caratteristiche di livello elevato, ma non pone grandi ostacoli al programmatore che voglia iniziare ad usarlo: scopriamolo insieme **Categorie:** _Senza categoria **Tag:** android, Kotlin **Categorie Screencast:** Android, Kotlin --- ### [Java 10: novità per programmatori](https://devacademy.it/screencast/java-10-novita-per-programmatori/) **Published:** Luglio 25, 2018 **Author:** Rino Picardi **Excerpt:** Java dopo aver segnato la storia dell'Informatica si sta modernizzando introducendo elementi di sinteticità sintattica ed ottimizzazioni cui programmatori di ogni settore tengono molto. Java 10 presenta alcune caratteristiche rilevanti in tale direzione: vediamole in questo screencast **Categorie:** _Senza categoria **Tag:** java **Categorie Screencast:** Java --- ### [Creare trigger in MySQL](https://devacademy.it/screencast/creare-trigger-in-mysql/) **Published:** Luglio 18, 2018 **Author:** Rino Picardi **Excerpt:** Con i trigger possiamo automatizzare fondamentali funzioni di salvaguardia della consistenza di un database. Si tratta di procedure scritte in SQL che scattano "ad evento" e MySQL permette di crearne e configurarne in maniera estremamente pratica **Categorie:** _Senza categoria **Tag:** database, MySQL, sql **Categorie Screencast:** Database, MySQL, SQL --- ### [Monolog: libreria PHP per messaggi di log su file e database](https://devacademy.it/screencast/monolog-libreria-php-per-messaggi-di-log-su-file-e-database/) **Published:** Luglio 11, 2018 **Author:** Rino Picardi **Excerpt:** Monolog è una libreria PHP per la registrazione di messaggi di log, diffusissima tra i programmatori ed ampiamente utilizzata in congiuntura con altri framework. Semplice da usare, dispone di molti handler che permettono la memorizzazione dei dati su destinazioni diverse, ad esempio database MySQL **Categorie:** _Senza categoria **Tag:** Monolog, PHP **Categorie Screencast:** Monolog, PHP --- ### [UML: dall'analisi dei requisiti ai casi d'uso](https://devacademy.it/screencast/uml-dallanalisi-dei-requisiti-ai-casi-duso/) **Published:** Luglio 4, 2018 **Author:** Rino Picardi **Excerpt:** L'inizio di un progetto richiede una fase di analisi dei requisiti in cui i progettisti si confrontano con i committenti per definire chiaramente e completamente quali caratteristiche il sistema dovrà garantire: una buona metodologia ed appositi diagrammi UML saranno di grande aiuto **Categorie:** _Senza categoria **Tag:** ingegneria del software, uml **Categorie Screencast:** Ingegneria del software, UML --- ### [Android Room: relazioni con Type Converters](https://devacademy.it/screencast/android-room-relazioni-con-type-converters/) **Published:** Giugno 27, 2018 **Author:** Rino Picardi **Excerpt:** Per poter gestire completamente le relazioni in Android Room, è necessario conoscere i Type Converters, elementi che si occupano di convertire oggetti Java da e verso il database Sqlite. In questo screencast ne vediamo il funzionamento con l'aggiunta di altri elementi che ne fanno da corollario **Categorie:** _Senza categoria **Tag:** android, database, Room, sqlite **Categorie Screencast:** Android, Database, Room, SQLite --- ### [MySQL, gestire dati con le View](https://devacademy.it/screencast/mysql-gestire-dati-con-le-view/) **Published:** Giugno 20, 2018 **Author:** Rino Picardi **Excerpt:** MySQL dispone di tutti i meccanismi più avanzati per la gestione dei dati. Le View possono essere considerate tabelle "virtuali" con cui oscurare la complessità delle query e permettere allo sviluppatore di interagire in una modalità più organizzata con il database **Categorie:** _Senza categoria **Tag:** database, MySQL **Categorie Screencast:** Database, MySQL --- ### [Apache Cordova: creare app mobile con HTML/CSS/Javascript](https://devacademy.it/screencast/apache-cordova-creare-app-mobile-con-html-css-javascript/) **Published:** Giugno 13, 2018 **Author:** Rino Picardi **Excerpt:** Esiste la possibilità di realizzare app mobile per qualsiasi sistema operativo usando HTML, CSS e Javascript. In questo screencast, esploriamo una delle principali soluzioni del settore, Apache Cordova, dall'installazione fino all'esecuzione di un esempio pratico **Categorie:** _Senza categoria **Tag:** Cordova, cross-platform, framework **Categorie Screencast:** Cordova, cross-platform, Framework --- ### [JShell, ambiente interattivo per Java](https://devacademy.it/screencast/jshell-ambiente-interattivo-per-java/) **Published:** Giugno 6, 2018 **Author:** Rino Picardi **Excerpt:** Con JShell Java si dota di un ambiente interattivo dove poter digitare comandi, dichiarare classi ed immagazzinare variabili per ottenere risposte immediate. I vantaggi sono notevoli in ogni ambito, da quello didattico ai contesti professionali. Vediamone insieme il funzionamento **Categorie:** _Senza categoria **Tag:** java, JShell **Categorie Screencast:** Java, JShell --- ### [UML: modellare con gli Activity Diagram](https://devacademy.it/screencast/uml-modellare-con-gli-activity-diagram/) **Published:** Maggio 30, 2018 **Author:** Rino Picardi **Excerpt:** Gli Activity Diagram sono lo strumento che UML mette a disposizione per modellare processi di ogni tipo. Figli dei tradizionali diagrammi di flusso, offrono elementi idonei a definire azioni, aggregati di dati e controllo del flusso. Vediamo come usarli per progettare i nostri algoritmi **Categorie:** _Senza categoria **Tag:** ingegneria del software, uml **Categorie Screencast:** Ingegneria del software, UML --- ### [RedBeanPHP: un ORM per gestire database](https://devacademy.it/screencast/redbeanphp-un-orm-per-gestire-database/) **Published:** Maggio 23, 2018 **Author:** Rino Picardi **Excerpt:** RedBeanPHP è un ORM per PHP leggero e facile da apprendere. Non richiede alcuna configurazione nè pone difficoltà per l'installazione rendendo immediata l'integrazione di un database in un'applicazione PHP. In questo screencast, lo vediamo subito impiegato in un esempio pratico **Categorie:** _Senza categoria **Tag:** database, PHP, RedBeanPHP **Categorie Screencast:** Database, PHP, RedBeanPHP --- ### [Android, gestire relazioni uno-a-molti con Room](https://devacademy.it/screencast/android-gestire-relazioni-uno-a-molti-con-room/) **Published:** Maggio 16, 2018 **Author:** Rino Picardi **Excerpt:** Le informazioni sono tanto più importanti quanto più sono collegate tra loro. I database offrono vari tipi di relazioni tra tabelle e Room le supporta in ogni aspetto. Vediamo come lavorare con le relazioni uno-a-molti tra Entity, una delle tipologie più comuni in assoluto **Categorie:** _Senza categoria **Tag:** android, database, Room **Categorie Screencast:** Android, Database, Room --- ### [Java: elaborare dati con le Stream API](https://devacademy.it/screencast/java-elaborare-dati-con-le-stream-api/) **Published:** Maggio 9, 2018 **Author:** Rino Picardi **Excerpt:** Con le Stream API Java propone una modalità potente ed efficiente per sottoporre ad elaborazione le strutture dati. Niente più cicli e costrutti sintattici prolissi: scriveremo catene di funzioni che partiranno dai dati per arrivare direttamente al risultato **Categorie:** _Senza categoria **Tag:** java **Categorie Screencast:** Java --- ### [UML: progettare con i Class Diagram](https://devacademy.it/screencast/uml-progettare-con-i-class-diagram/) **Published:** Maggio 2, 2018 **Author:** Rino Picardi **Excerpt:** Per avere un'idea chiara di tutte le possibili classi da progettare nei software, dobbiamo rivolgerci al Class Diagram offerto dallo standard UML. E' uno strumento semplice ed espressivo ma anche universalmente noto pertanto ideale per scambi di idee con altri programmatori **Categorie:** _Senza categoria **Tag:** ingegneria del software, uml **Categorie Screencast:** Ingegneria del software, UML --- ### [Android: gestire database SQLite con Room](https://devacademy.it/screencast/android-gestire-database-sqlite-con-room/) **Published:** Aprile 25, 2018 **Author:** Rino Picardi **Excerpt:** Android offre un nuovo approccio ufficiale alla gestione dei database. Si chiama Room ed è una libreria di persistenza parte delle Android Architecture Components. Ispirato ad un approccio ORM, richiede pochissimo codice grazie all'uso pervasivo delle annotation Java. Scopriamolo insieme **Categorie:** _Senza categoria **Tag:** android, database, Room, sqlite **Categorie Screencast:** Android, Database, Room, SQLite --- ### [Progettare e documentare API REST con Swagger](https://devacademy.it/screencast/progettare-e-documentare-api-rest-con-swagger/) **Published:** Aprile 18, 2018 **Author:** Rino Picardi **Excerpt:** Swagger è una piattaforma che agevola il processo di progettazione, creazione e gestione di API REST. Composto da un insieme di tool, ne vediamo qui una panoramica approfondendone in particolare uno, lo Swagger Editor, con cui scriveremo documentazione per un ipotetico servizio REST esistente **Categorie:** _Senza categoria **Tag:** API, Rest, Swagger, tools **Categorie Screencast:** API, Rest, Swagger, Tools --- ### [Ruby Gems: cosa sono, come si installano e come si creano da zero](https://devacademy.it/screencast/ruby-gems-cosa-sono-come-si-installano-e-come-si-creano-da-zero/) **Published:** Aprile 11, 2018 **Author:** Rino Picardi **Excerpt:** In questo screencast parliamo delle Ruby Gems, la maniera Ruby di installare le dipendenze e condividere il codice tra sviluppatori cosi come accade con npn in nodejs, pip in python o cocoapods nel mondo iOS. Vedremo cosa sono le Ruby Gems, come si installano e come si creano da zero. **Categorie:** _Senza categoria **Tag:** Gems, Ruby, tools **Categorie Screencast:** Gems, Ruby, Tools --- ### [Java e Android: eseguire test automatici con JUnit](https://devacademy.it/screencast/java-e-android-eseguire-test-automatici-con-junit/) **Published:** Aprile 4, 2018 **Author:** Rino Picardi **Excerpt:** Un buon software deve essere robusto, efficiente e affidabile. Sottoporlo a sperimentazione manuale non basta, servono meticolosità, pazienza e continuità che solo una macchina può garantire. In questo screencast parliamo di test automatici in Java e Android con JUnit: programmi che mettono alla prova altri programmi **Categorie:** _Senza categoria **Tag:** android, java, unit testing **Categorie Screencast:** Android, Java, Unit Testing --- ### [Shell Scripting: programmare con cicli e costrutti condizionali](https://devacademy.it/screencast/shell-scripting-programmare-con-cicli-e-costrutti-condizionali/) **Published:** Marzo 28, 2018 **Author:** Rino Picardi **Excerpt:** Automatizzare processi su sistema operativo Linux richiede la possibilità di eseguire confronti, cicli e costrutti condizionali. Lo Shell Scripting offre tutto il necessario mettendo velocemente in condizione di creare veri e propri programmi: vediamo come **Categorie:** _Senza categoria **Tag:** bash, linux, scripting, server, shell, tools **Categorie Screencast:** Bash, Linux, Scripting, Server, Shell, Tools --- ### [BBC micro:bit, programmare un microcontroller a blocchi](https://devacademy.it/screencast/bbc-microbit-programmare-un-microcontroller-a-blocchi/) **Published:** Marzo 21, 2018 **Author:** Rino Picardi **Excerpt:** Il microcontroller BBC micro:bit sta riscuotendo grandissimo successo. Economico (20 euro circa), completo (contiene sensori, bluetooth e dispositivi di I/O) può essere programmato con editor a blocchi ma anche in Python, C++ ed altri linguaggi: ideale per neo-sviluppatori e maker. Usiamolo subito **Categorie:** _Senza categoria **Tag:** IoT, microbit, microcontroller **Categorie Screencast:** IoT, microbit, microcontroller --- ### [Android: attivare velocemente funzionalità delle app con gli Shortcuts](https://devacademy.it/screencast/android-attivare-velocemente-funzionalita-delle-app-con-gli-shortcuts/) **Published:** Marzo 14, 2018 **Author:** Rino Picardi **Excerpt:** Una novità entrata già nelle abitudini degli utenti Android è l'uso degli App Shortcuts, collegamenti rapidi attivabili direttamente dall'icona dell'app per accedere a servizi specifici ed invocare funzionalità. In questo screencast, vediamo come crearli ed integrarli nelle nostre applicazioni **Categorie:** _Senza categoria **Tag:** android **Categorie Screencast:** Android --- ### [CSS Grid: aspetti avanzati](https://devacademy.it/screencast/css-grid-aspetti-avanzati/) **Published:** Marzo 7, 2018 **Author:** Rino Picardi **Excerpt:** CSS Grid esprime tutta la sua potenza con grande sinteticità, non mancando di offrire diverse forme sintattiche alternative. Evidenzieremo aspetti interessanti che permettono di progettare pagine velocemente scoprendo soprattutto uno dei suoi tratti caratteristici: la definizione di aree **Categorie:** _Senza categoria **Tag:** CSS **Categorie Screencast:** CSS --- ### [Introduzione a CSS Grid](https://devacademy.it/screencast/introduzione-a-css-grid/) **Published:** Febbraio 28, 2018 **Author:** Rino Picardi **Excerpt:** CSS Grid offre una modalità flessibile, intuitiva e rapida per modellare layout web. In questo screencast, ne apprendiamo i fondamenti iniziando da subito a strutturare gli elementi web con l'utilizzo di pochi attributi CSS, il tutto concluso con un esempio pratico **Categorie:** _Senza categoria **Tag:** CSS **Categorie Screencast:** CSS --- ### [Linux: introduzione allo Shell Scripting](https://devacademy.it/screencast/linux-introduzione-allo-shell-scripting/) **Published:** Febbraio 21, 2018 **Author:** Rino Picardi **Excerpt:** Indipendentemente dall'uso che facciamo di una macchina Linux, è importante saper scrivere degli script che possano essere eseguiti direttamente dalla shell. Si tratta di una vera e propria forma di programmazione che ci renderà sempre più padroni delle nostre macchine. Iniziamo a conoscerla **Categorie:** _Senza categoria **Tag:** bash, linux, scripting, server, shell, tools **Categorie Screencast:** Bash, Linux, Scripting, Server, Shell, Tools --- ### [Retrofit e JSON per accedere a servizi REST](https://devacademy.it/screencast/retrofit-e-json-per-accedere-a-servizi-rest/) **Published:** Febbraio 14, 2018 **Author:** Rino Picardi **Excerpt:** I programmatori Java e Android trovano un ottimo strumento di interazione con i servizi REST in Retrofit. Allo scopo, è necessario saper gestire bene dati in formato JSON in invio e in ricezione ma fortunatamente questa libreria dispone dell'integrazione con GSON che rende tutto molto semplice **Categorie:** _Senza categoria **Tag:** android, API, java, JSON, Retrofit **Categorie Screencast:** Android, API, Java, JSON, Retrofit --- ### [Come creare un servizio REST completo di database con Slim e MySQL (parte 2)](https://devacademy.it/screencast/come-creare-un-servizio-rest-completo-di-database-con-slim-e-mysql-parte-2/) **Published:** Febbraio 7, 2018 **Author:** Rino Picardi **Excerpt:** Continuiamo, in questo screencast, la realizzazione di un servizio REST completo con PHP e MySQL. Aggiungiamo le funzionalità di cancellazione e modifica delle note sottolineando alcune interessanti caratteristiche del framework Slim **Categorie:** _Senza categoria **Tag:** API, database, MySQL, PHP, slim **Categorie Screencast:** API, Database, MySQL, PHP, Slim --- ### [Come creare un servizio REST completo di database con Slim e MySQL (parte 1)](https://devacademy.it/screencast/come-creare-un-servizio-rest-completo-di-database-con-slim-e-mysql-parte-1/) **Published:** Gennaio 31, 2018 **Author:** Rino Picardi **Excerpt:** Un servizio REST ha spesso bisogno di un database a disposizione per memorizzare le informazioni. Il ruolo del servizio sarà quello di convertire ogni invocazione ricevuta tramite HTTP in comandi per la manipolazione dei dati. Realizziamolo con PHP, Slim e MySQL **Categorie:** _Senza categoria **Tag:** API, database, MySQL, PHP, slim **Categorie Screencast:** API, Database, MySQL, PHP, Slim --- ### [Come installare un ambiente LEMP (Linux, nginx, MySQL e PHP)](https://devacademy.it/screencast/come-installare-un-ambiente-lemp-linux-nginx-mysql-e-php/) **Published:** Gennaio 24, 2018 **Author:** Rino Picardi **Excerpt:** Il server nginx fornisce un'ottima base per applicazioni web costruite con PHP e MySQL. In questo screencast vediamo come installare un ambiente LEMP (Linux, nginx, MySQL e PHP), ottima alternativa all'omologo LAMP basato su Apache, ormai non più unica soluzione possibile per sviluppatori PHP **Categorie:** _Senza categoria **Tag:** nginx, tools, web server **Categorie Screencast:** Nginx, Tools, Web Server --- ### [Introduzione a UML](https://devacademy.it/screencast/introduzione-a-uml/) **Published:** Gennaio 17, 2018 **Author:** Rino Picardi **Excerpt:** UML è la lingua universale della progettazione informatica. Viene utilizzato anche in molti ambiti divulgativi per spiegare, con immagini intuitive, l'organizzazione di componenti. E' però costituito da molti tipi di diagrammi diversi e prima di studiarli è necessario averne una panoramica chiara **Categorie:** _Senza categoria **Tag:** ingegneria del software, uml **Categorie Screencast:** Ingegneria del software, UML --- ### [Introduzione a Retrofit](https://devacademy.it/screencast/introduzione-a-retrofit/) **Published:** Gennaio 10, 2018 **Author:** Rino Picardi **Excerpt:** Retrofit è una libreria Java per l'interazione in Rete che ha acquistato un'importanza di assoluto rilievo ormai. Ideale anche per app Android permette di realizzare qualsiasi comunicazione HTTP, dalle più semplici ad avanzati dialoghi REST sfruttando costrutti come interface e annotazioni **Categorie:** _Senza categoria **Tag:** android, API, java, Retrofit **Categorie Screencast:** Android, API, Java, Retrofit --- ### [Slim Framework: richieste e risposte in JSON](https://devacademy.it/screencast/slim-framework-richieste-e-risposte-in-json/) **Published:** Gennaio 3, 2018 **Author:** Rino Picardi **Excerpt:** Tantissimi servizi REST oggigiorno utilizzano il formato JSON per scambiare dati: le nostre applicazioni con Slim non faranno eccezione. Tra l'altro, questo framework PHP rende il tutto molto facile con comode funzioni. Vediamo come. **Categorie:** _Senza categoria **Tag:** API, framework, PHP, slim **Categorie Screencast:** API, Framework, PHP, Slim --- ### [Primi passi con il web server nginx](https://devacademy.it/screencast/primi-passi-con-il-web-server-nginx/) **Published:** Dicembre 27, 2017 **Author:** Rino Picardi **Excerpt:** Da anni il web server Apache ha un validissimo concorrente, nginx che sta acquistando sempre più spazio nello sviluppo web. Caratterizzato da una filosofia che mira ad una maggiore ottimizzazione delle risorse, nginx si dimostra ideale per molteplici attività e innovativo su tutti i fronti **Categorie:** _Senza categoria **Tag:** nginx, tools, web server **Categorie Screencast:** Nginx, Tools, Web Server --- ### [Pattern Singleton per progetti Java e Android](https://devacademy.it/screencast/pattern-singleton-per-progetti-java-e-android/) **Published:** Dicembre 20, 2017 **Author:** Rino Picardi **Excerpt:** Un design pattern molto noto, il Singleton, determina le regole per definire classi che possono istanziare un solo oggetto. Sono situazioni in cui gestiamo risorse o dati critici per cui dobbiamo evitare conflitti e incongruenze. Vediamone un'implementazione valida per Java e Android **Categorie:** _Senza categoria **Tag:** android, design patterns, java **Categorie Screencast:** Android, Design patterns, Java --- ### [Le annotazioni in Java](https://devacademy.it/screencast/le-annotazioni-in-java/) **Published:** Dicembre 13, 2017 **Author:** Rino Picardi **Excerpt:** Le annotazioni sono metadati che possiamo aggiungere al codice Java. Si trovano nel programma, ma non ne fanno parte: permettono di definire comportamenti e limiti delle componenti del nostro software in estrema sintesi. In questo screencast approfondiamo le principali annotazioni predefinite **Categorie:** _Senza categoria **Tag:** java **Categorie Screencast:** Java --- ### [Introduzione a Slim Framework](https://devacademy.it/screencast/introduzione-a-slim-framework/) **Published:** Dicembre 6, 2017 **Author:** Rino Picardi **Excerpt:** Esiste un modo in PHP per realizzare velocemente e con facilità API REST e applicazioni web. Si chiama Slim ed è un micro framework rapido da imparare e ricco di strumenti. Iniziamo a scoprirlo insieme **Categorie:** _Senza categoria **Tag:** API, framework, PHP, slim **Categorie Screencast:** API, Framework, PHP, Slim --- ### [Robo 3T, client visuale per MongoDB](https://devacademy.it/screencast/robo-3t-client-visuale-per-mongodb/) **Published:** Novembre 29, 2017 **Author:** Rino Picardi **Excerpt:** MongoDB è un server di database potente e ricco di strumenti, ma alla comodità del client visuale si rinuncia difficilmente. Per fortuna, esiste uno tool leggero, efficiente e soprattutto gratuito per interagire con MongoDB attraverso un'interfaccia utente: Robo 3T. Conosciamolo in questo screencast **Categorie:** _Senza categoria **Tag:** database, MongoDB, tools **Categorie Screencast:** Database, MongoDB, Tools --- ### [Android: gestire le transazioni in SQLite](https://devacademy.it/screencast/android-gestire-le-transazioni-in-sqlite/) **Published:** Novembre 22, 2017 **Author:** Rino Picardi **Excerpt:** Per gestire correttamente un database non basta solo inserire e leggere dati ma serve curarne la consistenza. Lo si può ottenere con le transazioni che rendono più operazioni di modifica una sola unità atomica: o avranno successo tutte o saranno tutte annullate e la coerenza dei dati sarà assicurata **Categorie:** _Senza categoria **Tag:** android, database, sqlite **Categorie Screencast:** Android, Database, SQLite --- ### [Installare servizi su Linux (per non esperti)](https://devacademy.it/screencast/installare-servizi-su-linux-per-non-esperti/) **Published:** Novembre 15, 2017 **Author:** Rino Picardi **Excerpt:** A volte, gli sviluppatori devono installare servizi su server Linux (anche virtuale) per test e sperimentazioni. Purtroppo, senza la necessaria confidenza, si può riscontrare difficoltà pur seguendo tutorial ben scritti. Ecco alcuni fondamenti che permetteranno di farlo senza essere degli esperti **Categorie:** _Senza categoria **Tag:** linux, server, tools **Categorie Screencast:** Linux, Server, Tools --- ### [Come inviare mail con PHP](https://devacademy.it/screencast/come-inviare-mail-con-php/) **Published:** Novembre 8, 2017 **Author:** Rino Picardi **Excerpt:** Inviare mail da una pagina web è un'attività molto utile. Serve a fornire notifiche e supporto all'utente o a pubblicizzare nuovi servizi. PHP mette a disposizione una funzione apposita per farlo, molto comoda ed efficace. Vediamola al lavoro **Categorie:** _Senza categoria **Tag:** PHP **Categorie Screencast:** PHP --- ### [Java e MongoDB: cancellare e modificare documenti](https://devacademy.it/screencast/java-e-mongodb-cancellare-e-modificare-documenti/) **Published:** Novembre 2, 2017 **Author:** Rino Picardi **Excerpt:** Tramite Java è possibile cancellare e modificare documenti in un database MongoDB. Il driver offre metodi per svolgere l'azione in diverse modalità: la scelta starà a noi in base alle nostre necessità. In questo screencast, vediamo tali funzionalità al lavoro con esempi pratici **Categorie:** _Senza categoria **Tag:** java, MongoDB **Categorie Screencast:** Java, MongoDB --- ### [Introduzione a VirtualBox](https://devacademy.it/screencast/introduzione-a-virtualbox/) **Published:** Settembre 27, 2017 **Author:** Rino Picardi **Excerpt:** La virtualizzazione permette di avere vari sistemi operativi in esecuzione, contemporaneamente, sulla stessa macchina fisica. Diffusissima in ambito sperimentale e di produzione risulta indispensabile per informatici di ogni ramo e livello. VirtualBox ce la offre in modo gratuito ed efficiente **Categorie:** _Senza categoria **Tag:** tools, virtualbox **Categorie Screencast:** Tools, VirtualBox --- ### [VirtualBox: gestire dischi, Guest Additions e cartelle condivise](https://devacademy.it/screencast/virtualbox-gestire-dischi-guest-additions-e-cartelle-condivise/) **Published:** Ottobre 25, 2017 **Author:** Rino Picardi **Excerpt:** VirtualBox offre la possibilità di gestire le macchine virtuali in maniera estremamente dinamica. Si possono importare dischi virtuali con sistemi operativi già installati, condividere cartelle con la macchina host e avere molte funzionalità a disposizione con le Guest Additions: vediamolo da vicino **Categorie:** _Senza categoria **Tag:** tools, virtualbox **Categorie Screencast:** Tools, VirtualBox --- ### [Android, introduzione allo Storage esterno](https://devacademy.it/screencast/android-introduzione-allo-storage-esterno/) **Published:** Ottobre 18, 2017 **Author:** Rino Picardi **Excerpt:** Esistono varie opzioni per salvare dati in un dispositivo Android. Lo Storage esterno è una di queste. Permette di salvare informazioni da condividere tra applicazioni o con altri dispositivi. Android mette a disposizione strumenti per gestirlo: iniziamo a vedere quali. **Categorie:** _Senza categoria **Tag:** android **Categorie Screencast:** Android --- ### [Java e MongoDB: eseguire query](https://devacademy.it/screencast/java-e-mongodb-eseguire-query/) **Published:** Ottobre 11, 2017 **Author:** Rino Picardi **Excerpt:** Eseguire interrogazioni è una delle attività più delicate che si possono svolgere su un database: richiede precisione nella definizione dei filtri ed una risposta efficiente da parte del sistema. Vediamo cosa offre il driver Java per MongoDB per fare tutto ciò **Categorie:** _Senza categoria **Tag:** database, java, MongoDB **Categorie Screencast:** Database, Java, MongoDB --- ### [Come integrare un database Sqlite in un'applicazione PHP](https://devacademy.it/screencast/come-integrare-un-database-sqlite-in-unapplicazione-php/) **Published:** Ottobre 4, 2017 **Author:** Rino Picardi **Excerpt:** Sqlite è una delle tipologie di database più usate al mondo. Leggero, veloce, affidabile può essere una buona soluzione di persistenza per i nostri progetti PHP. L'uso di PDO inoltre non impone nemmeno di stravolgere le abitudini prese con altri DBMS. Vediamoli insieme al lavoro in un esempio **Categorie:** _Senza categoria **Tag:** database, PHP, sqlite **Categorie Screencast:** Database, PHP, SQLite --- ### [Integrare MongoDB in un'applicazione Java](https://devacademy.it/screencast/integrare-mongodb-in-unapplicazione-java/) **Published:** Settembre 20, 2017 **Author:** Rino Picardi **Excerpt:** MongoDB può essere un ottimo supporto per la persistenza in un progetto Java. Maven rende la loro integrazione immediata mettendoci subito in condizione di utilizzare l'apposito driver. Vediamo alcuni esempi per gestire inserimenti di documenti in un database MongoDB tramite Java **Categorie:** _Senza categoria **Tag:** database, java, MongoDB **Categorie Screencast:** Database, Java, MongoDB --- ### [Gestione di un progetto PHP con Composer](https://devacademy.it/screencast/gestione-di-un-progetto-php-con-composer/) **Published:** Settembre 13, 2017 **Author:** Rino Picardi **Excerpt:** Quando i progetti si fanno complicati è necessario utilizzare librerie e framework disponibili in Internet. Sarebbe necessario scaricarli, integrarli e gestire le loro dipendenze, ma tutto ciò può essere risolto velocemente grazie a Composer, il principale package manager per PHP **Categorie:** _Senza categoria **Tag:** PHP **Categorie Screencast:** PHP --- ### [Spring Framework: realizzare interfacce web con Thymeleaf](https://devacademy.it/screencast/spring-framework-realizzare-interfacce-web-con-thymeleaf/) **Published:** Settembre 6, 2017 **Author:** Rino Picardi **Excerpt:** In un progetto Spring Framework, Thymeleaf permette di integrare in un'interfaccia i dati messi a disposizione dal Model. Offre costrutti propri della programmazione (if, operatore ternario, switch...case e cicli) mediante semplici attributi HTML **Categorie:** _Senza categoria **Tag:** java, Spring **Categorie Screencast:** Java, Spring --- ### [Android Constraint Layout: relazioni tra elementi](https://devacademy.it/screencast/android-constraint-layout-relazioni-tra-elementi/) **Published:** Agosto 30, 2017 **Author:** Rino Picardi **Excerpt:** Nel ConstraintLayout è importante creare equilibri tra elementi. Pertanto, in questo screencast, non ci limiteremo a fondare la posizione dei widget rispetto al contenitore ma impareremo a stabilire vincoli basati sulla posizione di altri controlli dell'interfaccia e vedremo cosa sono le guideline **Categorie:** _Senza categoria **Tag:** android **Categorie Screencast:** Android --- ### [Introduzione allo Spring Framework](https://devacademy.it/screencast/introduzione-allo-spring-framework/) **Published:** Agosto 23, 2017 **Author:** Rino Picardi **Excerpt:** Le applicazioni web dietro le interfacce svolgono spesso elaborazioni complesse che richiedono efficienza, stabilità e sicurezza. Java è un linguaggio ideale per applicazioni web di ogni genere e lo Spring Framework rappresenta una piattaforma di lavoro ideale, ricca ed espandibile **Categorie:** _Senza categoria **Tag:** java, Spring **Categorie Screencast:** Java, Spring --- ### [Introduzione ai servizi REST](https://devacademy.it/screencast/introduzione-ai-servizi-rest/) **Published:** Luglio 26, 2017 **Author:** Rino Picardi **Excerpt:** I servizi web costituiscono ormai il supporto remoto ad ogni tipo di applicazione: web, mobile o desktop. Per progettarli è necessario conoscere i fondamenti del modello REST che permette di creare una struttura di dialogo semplice ma efficiente che fa perno su caratteristiche già insite in HTTP **Categorie:** _Senza categoria **Tag:** API, Rest **Categorie Screencast:** API, Rest --- ### [Mongodb: aggregare dati](https://devacademy.it/screencast/mongodb-aggregare-dati/) **Published:** Luglio 19, 2017 **Author:** Rino Picardi **Excerpt:** L'aggregazione è l'anima dell'analisi di un database. MongoDB offre gli strumenti necessari per curarne ogni aspetto ed estrapolarne i risultati. In questo screencast prendiamo confidenza con la logica di questo meccanismo e con la sua sintassi **Categorie:** _Senza categoria **Tag:** database, MongoDB **Categorie Screencast:** Database, MongoDB --- ### [PHP, verificare dati con Validation](https://devacademy.it/screencast/php-verificare-dati-con-validation/) **Published:** Luglio 12, 2017 **Author:** Rino Picardi **Excerpt:** Per mantenere coerenti le nostre applicazioni è fondamentale controllare bene la validità dei dati che gli utenti forniscono. PHP offre già strumenti utili allo scopo come le potenti espressioni regolari, ma esiste una libreria in grado di risparmiarci molto lavoro, Validation: vediamola insieme **Categorie:** _Senza categoria **Tag:** PHP **Categorie Screencast:** PHP --- ### [Android: creare interfacce adattabili con il ConstraintLayout](https://devacademy.it/screencast/android-creare-interfacce-adattabili-con-il-constraintlayout/) **Published:** Luglio 5, 2017 **Author:** Rino Picardi **Excerpt:** Il ConstraintLayout offre allo sviluppatore una modalità flessibile e visuale per realizzare le proprie interfacce, perfettamente adattabili ad ogni contesto. In questo screencast inizieremo a conoscerlo e ne apprezzeremo sin da subito le grandi qualità **Categorie:** _Senza categoria **Tag:** android **Categorie Screencast:** Android --- ### [MongoDB: filtrare, ordinare e paginare dati](https://devacademy.it/screencast/mongodb-filtrare-ordinare-e-paginare-dati/) **Published:** Giugno 28, 2017 **Author:** Rino Picardi **Excerpt:** Come ogni tecnologia per database, MongoDB deve essere in grado di effettuare selezioni sui dati in maniera efficiente e flessibile. Tali caratteristiche non gli mancano affatto e sono ulteriormente arricchite da capacità di ordinamento e paginazione dei risultati. Vediamo tutto ciò al lavoro **Categorie:** _Senza categoria **Tag:** database, MongoDB **Categorie Screencast:** Database, MongoDB --- ### [Java: gestire gli input utente con la classe Scanner](https://devacademy.it/screencast/java-gestire-gli-input-utente-con-la-classe-scanner/) **Published:** Giugno 21, 2017 **Author:** Rino Picardi **Excerpt:** A volte può rivelarsi utile permettere all'utente di immettere dell'input. Java offre la classe Scanner allo scopo, che non si limita a leggere i dati immessi una riga alla volta, ma permette di eseguirne il parsing riconoscendone l'appartenenza a tipi di dato primitivi e oggetti stringa **Categorie:** _Senza categoria **Tag:** java **Categorie Screencast:** Java --- ### [Come gestire le date in PHP con Carbon](https://devacademy.it/screencast/come-gestire-le-date-in-php-con-carbon/) **Published:** Giugno 14, 2017 **Author:** Rino Picardi **Excerpt:** Le informazioni temporali sono tanto importanti quanto ostiche da gestire. Ciò vale anche per PHP, linguaggio che offre già molti strumenti per la loro manipolazione. Andiamo quindi alla scoperta di Carbon, libreria ormai famosissima che mette a disposizione tante utilità su questo argomento **Categorie:** _Senza categoria **Tag:** PHP **Categorie Screencast:** PHP --- ### [Introduzione a MongoDB](https://devacademy.it/screencast/introduzione-a-mongodb/) **Published:** Giugno 7, 2017 **Author:** Rino Picardi **Excerpt:** MongoDB è ormai una delle grandi realtà dell'informatica: re dei database NoSQL, è oggi uno dei motori di persistenza più usati al mondo. Possiamo includerlo nei nostri progetti facendolo interagire con qualsiasi linguaggio di programmazione, ma prima dobbiamo impararne i fondamenti **Categorie:** _Senza categoria **Tag:** database, MongoDB **Categorie Screencast:** Database, MongoDB --- ### [Classi interne in Java](https://devacademy.it/screencast/classi-interne-in-java/) **Published:** Maggio 31, 2017 **Author:** Rino Picardi **Excerpt:** In Java è possibile innestare classi all'interno di altre: esistono vari modi per farlo ed ognuno di essi offre vantaggi diversi da un punto di vista della progettazione ad oggetti. Vediamo insieme queste tecniche cercando di apprezzarne le differenze in modo da fare un pò di chiarezza **Categorie:** _Senza categoria **Tag:** java **Categorie Screencast:** Java --- ### [Android: leggere e scrivere file nello storage interno](https://devacademy.it/screencast/android-leggere-e-scrivere-file-nello-storage-interno/) **Published:** Maggio 24, 2017 **Author:** Rino Picardi **Excerpt:** Database e SharedPreferences non sono gli unici modi per salvare dati in maniera persistente in un'app Android. Possiamo prendere in considerazione il salvataggio su file: è comodo, efficiente e sfrutta classici strumenti della programmazione Java **Categorie:** _Senza categoria **Tag:** android **Categorie Screencast:** Android --- ### [Dimensioni, risoluzioni e densità nelle interfacce Android](https://devacademy.it/screencast/dimensioni-risoluzioni-e-densita-nelle-interfacce-android/) **Published:** Maggio 17, 2017 **Author:** Rino Picardi **Excerpt:** Android ha conquistato il mondo cavalcando i dispositivi più disparati per fattore di forma, hardware e fasce di prezzo. Ciò ha richiesto più attenzione da parte dei programmatori in fase di sviluppo. Come possono le caratteristiche di un display condizionare immagini e layout? Scopriamolo insieme **Categorie:** _Senza categoria **Tag:** android **Categorie Screencast:** Android --- ### [Java: Collaborazione multi-threading con BlockingQueue](https://devacademy.it/screencast/java-collaborazione-multi-threading-con-blockingqueue/) **Published:** Maggio 10, 2017 **Author:** Rino Picardi **Excerpt:** Java mette a disposizione strumenti comodi per definire ed avviare thread ma le maggiori insidie si celano nella loro sincronizzazione per una corretta collaborazione. La BlockingQueue risolve molti problemi offrendo un'area di memoria con accesso ordinato **Categorie:** _Senza categoria **Tag:** java **Categorie Screencast:** Java --- ### [Java DateTime API](https://devacademy.it/screencast/java-datetime-api/) **Published:** Maggio 3, 2017 **Author:** Rino Picardi **Excerpt:** Per anni, Java ha gestito le informazioni data/ora con le classi Date e Calendar ma i loro limiti e la confusione creatasi nel settore hanno indotto i progettisti del linguaggio ad operare una ristrutturazione del settore: nascono così le DateTime API, incluse in Java8 **Categorie:** _Senza categoria **Tag:** java **Categorie Screencast:** Java --- ### [Android: Salvare dati nelle SharedPreferences](https://devacademy.it/screencast/android-salvare-dati-nelle-sharedpreferences/) **Published:** Aprile 26, 2017 **Author:** Rino Picardi **Excerpt:** Quando si ha necessità di salvare dati singoli in maniera persistente, si può ricorrere alle SharedPreferences piuttosto che allestire un intero database o ricorrere al salvataggio su file. E' una pratica semplice, ma da non sottovalutare in quanto particolarmente adatta a determinati casi **Categorie:** _Senza categoria **Tag:** android **Categorie Screencast:** Android --- ### [Gestione delle risorse per app adattabili](https://devacademy.it/screencast/gestione-delle-risorse-per-app-adattabili/) **Published:** Aprile 19, 2017 **Author:** Rino Picardi **Excerpt:** La nostra app Android dovrebbe essere distribuibile nel mondo intero adattandosi a qualsiasi tipo di dispositivo. Si può raggiungere tale obiettivo senza grandi difficoltà con una adeguata configurazione delle risorse: vediamo come **Categorie:** _Senza categoria **Tag:** android **Categorie Screencast:** Android --- ### [Programmazione concorrente con Thread ed Executors](https://devacademy.it/screencast/programmazione-concorrente-con-thread-ed-executors/) **Published:** Aprile 12, 2017 **Author:** Rino Picardi **Excerpt:** Quando le applicazioni crescono potrebbero aver bisogno di eseguire operazioni in parallelo: questo non è impossibile. Si può suddividere un programma in più filoni d'esecuzione attivandoli e coordinandoli con apposite classi Java. Iniziamo ad esplorare il mondo della programmazione concorrente **Categorie:** _Senza categoria **Tag:** java **Categorie Screencast:** Java --- ### [Leggere e scrivere file di testo in Java](https://devacademy.it/screencast/leggere-e-scrivere-file-di-testo-in-java/) **Published:** Aprile 5, 2017 **Author:** Rino Picardi **Excerpt:** La memorizzazione su file è una delle principali modalità di persistenza di dati nella programmazione. Java offre un intero sottosistema per affrontare questa tematica. Vediamo come si possono salvare e leggere file testuali su disco **Categorie:** _Senza categoria **Tag:** java **Categorie Screencast:** Java --- ### [Android: accedere alla rete con OkHttp](https://devacademy.it/screencast/android-accedere-alla-rete-con-okhttp/) **Published:** Marzo 29, 2017 **Author:** Rino Picardi **Excerpt:** L'accesso alla rete da un'app Android richiede un set necessario di operazioni da compiere nonchè adeguate configurazioni: OkHttp predispone alla perfezione il nostro lavoro per l'interazione con protocollo HTTP. Vediamone il funzionamento con un esempio pratico **Categorie:** _Senza categoria **Tag:** android **Categorie Screencast:** Android --- ### [Introduzione a P5.js](https://devacademy.it/screencast/introduzione-a-p5-js/) **Published:** Marzo 22, 2017 **Author:** Rino Picardi **Excerpt:** p5.js è una libreria JavaScript inusuale e al tempo stesso molto interessante e divertente nata, cosi come Processing, per rendere la programmazione accessibile ad artisti, designer, insegnati e chiunque sia alle prime armi con la programmazione in genere. **Categorie:** _Senza categoria **Tag:** javascript, p5.js **Categorie Screencast:** javascript, p5.js --- ### [JavaFX, usare i layout predefiniti](https://devacademy.it/screencast/javafx-usare-i-layout-predefiniti/) **Published:** Marzo 15, 2017 **Author:** Rino Picardi **Excerpt:** JavaFX viene distribuito con un gran numero di layout predefiniti inclusi che impongono politiche di gestione degli spazi in grado di rendere più leggero il nostro lavoro di progettazione. Vediamone alcuni al lavoro in questo esempio **Categorie:** _Senza categoria **Tag:** java, JavaFX **Categorie Screencast:** Java, JavaFX --- ### [AutoCompleteTextView in Android](https://devacademy.it/screencast/autocompletetextview-in-android/) **Published:** Marzo 8, 2017 **Author:** Rino Picardi **Excerpt:** E' fondamentale che l'utente inserisca dati corretti per poterli usare nelle nostre elaborazioni: noi, dal canto nostro, dobbiamo fare il massimo per aiutarlo. Un modo per indirizzarlo è quello di fornirgli dei suggerimenti e la AutoCompleteTextView permette di digitare testi in maniera guidata **Categorie:** _Senza categoria **Tag:** android **Categorie Screencast:** Android --- ### [Java: LinkedList e ArrayList a confronto](https://devacademy.it/screencast/java-linkedlist-e-arraylist-a-confronto/) **Published:** Marzo 1, 2017 **Author:** Rino Picardi **Excerpt:** In Java, l'ArrayList è il tipo di lista più comune ma non è l'unico. La LinkedList può essere molto utile, soprattutto in determinate casistiche. In questo tutorial, ne conosceremo le caratteristiche fondamentali e la metteremo a confronto con l'ArrayList **Categorie:** _Senza categoria **Tag:** java **Categorie Screencast:** Java --- ### [Android: inserimento di date con CalendarView](https://devacademy.it/screencast/android-inserimento-di-date-con-calendarview/) **Published:** Febbraio 22, 2017 **Author:** Rino Picardi **Excerpt:** Inserire date tramite l'interfaccia dell'app può essere noioso e foriero di errori per l'utente. L'ideale sarebbe offrire un calendario a comparsa per selezionare la data desiderata in maniera intuitiva ed immediata. Il web ci ha abituato a questo da anni ma anche in Android si può con CalendarView **Categorie:** _Senza categoria **Tag:** android **Categorie Screencast:** Android --- ### [JavaFX: grafici per l'interfaccia utente](https://devacademy.it/screencast/javafx-grafici-per-linterfaccia-utente/) **Published:** Febbraio 15, 2017 **Author:** Rino Picardi **Excerpt:** Se è vero che un'immagine dice più di mille parole, un grafico può essere un ottimo modo per visualizzare i dati che la nostra applicazione Java elabora. Tra gli strumenti che JavaFX offre, non poteva mancare un'abbondante raccolta di classi Chart ed in questo video iniziamo a conoscerle **Categorie:** _Senza categoria **Tag:** java, JavaFX **Categorie Screencast:** Java, JavaFX --- ### [Android: controllare l'input con TextWatcher](https://devacademy.it/screencast/android-controllare-linput-con-textwatcher/) **Published:** Febbraio 8, 2017 **Author:** Rino Picardi **Excerpt:** Le nostre app vivono dell'input fornito dall'utente pertanto è fondamentale verificarne la correttezza sin dall'introduzione. In questo, il TextWatcher può essere un validissimo alleato grazie ai suoi metodi che ci permettono di analizzare ogni carattere inserito dall'utente **Categorie:** _Senza categoria **Tag:** android **Categorie Screencast:** Android --- ### [Android: animazioni con ViewPropertyAnimator](https://devacademy.it/screencast/android-animazioni-con-viewpropertyanimator/) **Published:** Febbraio 1, 2017 **Author:** Rino Picardi **Excerpt:** Le animazioni conferiscono dinamicità, gradevolezza nonchè comunicatività alle nostre interfacce utente. Consistono, in primis, nella manipolazione di alcune proprietà attribuite alle View e Android propone con ViewPropertyAnimator un modo agevole per fare tutto ciò: sperimentiamolo insieme **Categorie:** _Senza categoria **Tag:** android **Categorie Screencast:** Android --- ### [Java: introduzione alle espressioni regolari](https://devacademy.it/screencast/java-introduzione-alle-espressioni-regolari/) **Published:** Gennaio 25, 2017 **Author:** Rino Picardi **Excerpt:** Le nostre applicazioni sono spesso destinate a manipolare grandi quantità di dati la cui validità deve essere sempre appurata prima dell'utilizzo. Le espressioni regolari - sintetiche, potenti e flessibili - permettono di verificare velocemente la correttezza formale delle informazioni: vediamo come. **Categorie:** _Senza categoria **Tag:** java **Categorie Screencast:** Java --- ### [JavaFX: ListView e ContextMenu](https://devacademy.it/screencast/javafx-listview-e-contextmenu/) **Published:** Gennaio 18, 2017 **Author:** Rino Picardi **Excerpt:** Java con le sue strutture dati offre modo di gestire molti dati efficientemente ma un'interfaccia utente deve saperli mostrare in maniera intuitiva: la ListView di JavaFX permette proprio questo. Impariamo ad utilizzarla arricchita di menu contestuale **Categorie:** _Senza categoria **Tag:** java, JavaFX **Categorie Screencast:** Java, JavaFX --- ### [Android: importare dati JSON in Realm](https://devacademy.it/screencast/android-importare-dati-json-in-realm/) **Published:** Gennaio 11, 2017 **Author:** Rino Picardi **Excerpt:** La maggior parte dei servizi web offrono dati in formato JSON. Memorizzarli in un database richiederebbe diverse linee di codice per l'elaborazione e il salvataggio ma, usando Realm, potremo sfruttare le sue funzionalità dedicate proprio a JSON: già pronte, efficienti, veloci **Categorie:** _Senza categoria **Tag:** android, database **Categorie Screencast:** Android, Database, JSON, Realm --- ### [Android: introduzione a Realm](https://devacademy.it/screencast/android-introduzione-a-realm/) **Published:** Gennaio 4, 2017 **Author:** Rino Picardi **Excerpt:** L'approccio classico alla memorizzazione di dati in un'app Android consiste nell'uso di un database Sqlite. Esiste però un'alternativa efficiente, funzionale e basata sulla programmazione ad oggetti: Realm, un sistema di persistenza che si offre come soluzione universale per il mobile **Categorie:** _Senza categoria **Tag:** android, database, realm **Categorie Screencast:** Android, Database, Realm --- ### [Java: salvare e cancellare dati in un database relazionale con JDBC](https://devacademy.it/screencast/java-salvare-e-cancellare-dati-in-un-database-relazionale-con-jdbc/) **Published:** Dicembre 28, 2016 **Author:** Rino Picardi **Excerpt:** Per modificare un database, inserendo e cancellando record, il linguaggio Java, grazie a JDBC, offre prassi standard, efficienti e personalizzabili. Vediamo come applicarle nei nostri programmi **Categorie:** _Senza categoria **Tag:** database, java **Categorie Screencast:** Database, Java --- ### [Intent impliciti in Android](https://devacademy.it/screencast/intent-impliciti-in-android/) **Published:** Dicembre 21, 2016 **Author:** Rino Picardi **Excerpt:** In Android, è possibile attivare azioni mediante l'invio di Intent impliciti. Saremo in grado di innescare l'apertura di un browser, la condivisione di dati, l'inoltro di una chiamata e molto altro: vediamo insieme gli aspetti applicativi di questo potente meccanismo. **Categorie:** _Senza categoria **Tag:** android **Categorie Screencast:** Android --- ### [REST API con Ruby & Heroku](https://devacademy.it/screencast/rest-api-con-ruby-heroku/) **Published:** Dicembre 14, 2016 **Author:** Rino Picardi **Excerpt:** Chi non ha bisogno di creare delle API? Ma chi l'ha detto che creare delle API debba essere qualcosa di complicato? In questo screencast vedremo come utilizzare Ruby e la gemma Grape per creare delle API e deployarle su Heroku. **Categorie:** _Senza categoria **Tag:** API, Heroku, Rest, Ruby **Categorie Screencast:** API, Heroku, Rest, Ruby --- ### [VAGRANT: virtualizzazione a portata di mano](https://devacademy.it/screencast/vagrant-virtualizzazione-a-portata-di-mano/) **Published:** Dicembre 7, 2016 **Author:** Rino Picardi **Excerpt:** Vagrant è un tool utilissimo per lavorare con macchine virtuali. Disponibile per tutti i maggiori sistemi operativi permette di creare e condividere macchine virtuali e la loro configurazione in un batter d'occhio. Per non dover più dire "sul mio computer funziona". In questo screencast vedremo come utilizzarlo e come creare una macchina virtuale con ubuntu. **Categorie:** _Senza categoria **Tag:** tools **Categorie Screencast:** Tools --- ### [Java: interrogare un database con JDBC](https://devacademy.it/screencast/java-interrogare-un-database-con-jdbc/) **Published:** Novembre 30, 2016 **Author:** Rino Picardi **Excerpt:** JDBC è un linguaggio universale con cui Java è in grado di dialogare con tutti i principali database relazionali esistenti. Tramite la sperimentazione diretta, interrogando direttamente un database, faremo la sua conoscenza. **Categorie:** _Senza categoria **Tag:** database, java **Categorie Screencast:** Database, Java --- ### [Introduzione a SQL: creare, cancellare e modificare dati](https://devacademy.it/screencast/introduzione-a-sql-creare-cancellare-e-modificare-dati/) **Published:** Novembre 23, 2016 **Author:** Rino Picardi **Excerpt:** Oltre alle query è necessario saper creare, modificare e cancellare dati per rendere durature nel tempo le informazioni che interessano l'utente. Con questo video, impareremo a farlo sfruttando i comandi INSERT, UPDATE e DELETE **Categorie:** _Senza categoria **Tag:** database, sql, sqlite **Categorie Screencast:** Database, SQL, SQLite --- ### [Introduzione a SQL: le query](https://devacademy.it/screencast/introduzione-a-sql-le-query/) **Published:** Novembre 16, 2016 **Author:** Rino Picardi **Excerpt:** Conoscendo il linguaggio SQL potremo inviare comandi ad un database dalle nostre applicazioni mettendole in condizione di memorizzare informazioni in maniera persistente. Iniziamo a conoscere questo linguaggio scrivendo le prime query utili ad interrogare un database **Categorie:** _Senza categoria **Tag:** database, sql, sqlite **Categorie Screencast:** Database, SQL, SQLite --- ### [Introduzione ai Service in Android](https://devacademy.it/screencast/introduzione-ai-service-in-android/) **Published:** Ottobre 17, 2016 **Author:** Rino Picardi **Excerpt:** La reattività di un'interfaccia utente dipende anche da quali e quante attività riusciamo a svolgere in background, in modalità asincrona. Abbiamo conosciuto AsyncTask nei nostri corsi ma in molti casi non basta: abbiamo bisogno dei Service. Vediamo come funzionano **Categorie:** _Senza categoria **Tag:** android **Categorie Screencast:** Android --- ### [Android: introduzione a RecyclerView e CardView](https://devacademy.it/screencast/android-introduzione-a-recyclerview-e-cardview/) **Published:** Ottobre 11, 2016 **Author:** Rino Picardi **Excerpt:** Il pattern Adapter permette di mostrare all'utente moltitudini di dati opportunamente formattati. Per gestire il tutto al meglio esiste ora RecyclerView, un componente visuale ottimizzato. Con questo video faremo la sua conoscenza, contemporaneamente ad un'altra importante innovazione: le CardView **Categorie:** _Senza categoria **Tag:** android, java **Categorie Screencast:** Android --- ### [JavaFX: progettazione visuale di interfacce con SceneBuilder](https://devacademy.it/screencast/javafx-progettazione-visuale-di-interfacce-con-scenebuilder/) **Published:** Ottobre 11, 2016 **Author:** Rino Picardi **Excerpt:** JavaFX è un framework ricco e articolato: il linguaggio Java offre l'espressività necessaria per programmare le nostre interfacce ma uno strumento di progettazione visuale come SceneBuilder può davvero accrescere la nostra produttività **Categorie:** _Senza categoria **Tag:** java, JavaFX **Categorie Screencast:** Java, JavaFX --- ### [Introduzione a JavaFX](https://devacademy.it/screencast/introduzione-a-javafx/) **Published:** Ottobre 4, 2016 **Author:** Rino Picardi **Excerpt:** Saper realizzare interfacce grafiche permette di aprire nuovi canali di dialogo con gli utenti delle proprie applicazioni, più interattivi e coinvolgenti. JavaFX è un ottimo strumento per fare tutto ciò in maniera produttiva ed efficiente e con questo screencast iniziamo a conoscerlo. **Categorie:** _Senza categoria **Tag:** java, JavaFX **Categorie Screencast:** Java, JavaFX --- ### [Introduzione alla Android Design Support Library](https://devacademy.it/screencast/introduzione-alla-android-design-support-library/) **Published:** Settembre 26, 2016 **Author:** Rino Picardi **Excerpt:** Da quando Android ha visto l'introduzione del Material Design le sue interfacce utente non sono state più le stesse diventando sempre più dinamiche, efficienti e accattivanti. Possiamo avere tutto ciò nelle nostre app semplicemente, grazie ad una libreria ufficiale: iniziamo a conoscerla insieme e lasciamoci stupire! **Categorie:** _Senza categoria **Tag:** android, design **Categorie Screencast:** Android, Design --- ### [Java: gestire le dipendenze con Maven](https://devacademy.it/screencast/java-gestire-le-dipendenze-con-maven/) **Published:** Settembre 19, 2016 **Author:** Rino Picardi **Excerpt:** Maven è un grande alleato per lo sviluppatore Java. Lo accompagna in tutte le fasi del progetto ma c’è qualcosa per cui è particolarmente famoso: la gestione delle dipendenze. Volete integrare una libreria o un framework nel vostro progetto Java? Vediamo come farlo velocemente con Maven. **Categorie:** _Senza categoria **Tag:** java, tools **Categorie Screencast:** Java --- ## Corsi ### [Excel: diventare produttivi davvero](https://devacademy.it/corsi/corso-excel-online-diventare-produttivi-davvero/) **Published:** Giugno 4, 2026 **Author:** Rino Picardi **Content:** ## Presentazione del corso **Excel** è ovunque: in contabilità, in amministrazione, sulla scrivania di ingegneri, scienziati e professionisti di ogni settore. Quasi tutti lo usano, pochissimi lo capiscono davvero. La maggior parte delle persone impara Excel “per esperienza”, accumulando trucchetti scollegati tra loro, e si ferma lì. Questo **corso Excel online** nasce per farti fare il salto opposto: smettere di andare a memoria e iniziare a capire come funziona lo strumento, così che ogni problema nuovo diventi risolvibile invece che da cercare su Google ogni volta. Lo segui quando e dove vuoi, al tuo ritmo, da qualsiasi dispositivo. Con Giuseppe Maggi, ingegnere informatico e divulgatore, scoprirai che Excel può darti tantissimo con piccolissimi gesti e che, sfruttato a piena potenza, diventa una vera piattaforma di analisi dati, all’altezza di un mondo fatto di internet, cloud e intelligenza artificiale. Si parte dalle fondamenta vere: l’ambiente di lavoro, i segreti delle celle e quel trascinamento dei valori che nasconde più logica di quanto sembri (incluso il classico caso della somma cumulativa). Poi passiamo alle tabelle, imparando la differenza tra le tabelle “artigianali” che fanno quasi tutti e le tabelle moderne di Excel, che cambiano il modo in cui gestisci i dati. Infine entriamo nel cuore della produttività: le funzioni SE e PIÙ.SE per far ragionare i tuoi fogli, e la formattazione condizionale per far parlare i dati a colpo d’occhio. Nessun prerequisito: parti da zero e lo segui da computer, tablet o smartphone, quando e dove vuoi. E un consiglio dal team: una volta finito, rifallo. Ti stupirà quante cose in più afferri alla seconda passata. Questo è solo il primo passo di una marcia lunga, ma è quello che ti fa smettere di “usare Excel” e ti fa iniziare a padroneggiarlo. **Requisiti:** nessuno **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** Excel **Tecnologie Corsi:** Excel **Aree di Competenza Corsi:** Data **Categorie Corso:** Excel --- ### [AWS: gestione dei costi](https://devacademy.it/corsi/aws-gestione-dei-costi/) **Published:** Giugno 4, 2026 **Author:** Rino Picardi **Content:** Coming soon ## Presentazione del corso **Requisiti:** nessuno **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** AWS, Cloud **Tecnologie Corsi:** AWS **Aree di Competenza Corsi:** Cloud, Data **Categorie Corso:** Cloud --- ### [Agents SDK: sviluppo rapido di agenti](https://devacademy.it/corsi/agents-sdk-sviluppo-rapido-di-agenti/) **Published:** Aprile 23, 2026 **Author:** Rino Picardi **Content:** ## Presentazione del corso Gli **agenti di intelligenza artificiale** rappresentano oggi uno degli elementi chiave nello sviluppo di applicazioni moderne. In questo corso imparerai a crearli partendo da zero, costruendo sistemi in grado di combinare la potenza dei modelli generativi con funzionalità esterne, chiamate tool, per ottenere risultati concreti e utilizzabili in contesti reali. Partiremo dalle basi, comprendendo come funziona un agente e quale architettura utilizzare, per poi passare subito alla pratica con la creazione del tuo primo agente. Utilizzerai un framework specifico sviluppato da OpenAI, **Agents SDK**, progettato per semplificare lo sviluppo e aumentare la produttività, permettendoti di concentrarti sulla logica e sulle funzionalità piuttosto che sulla complessità tecnica. Durante il corso affronterai esercizi pratici che ti guideranno passo dopo passo, aiutandoti a consolidare le competenze acquisite. Successivamente, entrerai in aspetti più avanzati come il funzionamento asincrono degli agenti, imparando a gestire interazioni più flessibili ed efficienti e a scegliere il modello più adatto alle diverse esigenze. Questo corso è il punto di partenza ideale per iniziare a costruire agenti AI in modo concreto, acquisendo un metodo che ti permetterà di evolvere rapidamente e sviluppare soluzioni sempre più sofisticate. **Requisiti:** - [Fondamenti di Python](https://devacademy.it/corsi/fondamenti-di-python/) - [Strutture dati in Python](https://devacademy.it/corsi/strutture-dati-in-python/) - [Funzioni e moduli in Python](https://devacademy.it/corsi/funzioni-e-moduli-in-python/) - [Programmazione a oggetti in Python](https://devacademy.it/corsi/programmazione-a-oggetti-in-python/) - [Applicazioni con AI](https://devacademy.it/corsi/applicazioni-con-ai/) - [Creare un Chatbot con AI](https://devacademy.it/corsi/creare-un-chatbot-con-ai/) - [Strumenti per applicazioni A.I.](https://devacademy.it/corsi/strumenti-per-applicazioni-a-i/) - [Creare RAG](https://devacademy.it/corsi/creare-rag/) - [ Agenti AI](https://devacademy.it/corsi/agenti-ai/) - [ Architetture per agenti AI ](https://devacademy.it/corsi/architetture-per-agenti-ai/) - [Chatbot web con AI](https://devacademy.it/corsi/chatbot-web-con-ai/) - [MCP: Costruire servizi per l’Intelligenza Artificiale](https://devacademy.it/corsi/mcp-costruire-servizi-per-lintelligenza-artificiale/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** Agenti AI, Agents SDK, AI, Intelligenza Artificiale, Python **Tecnologie Corsi:** Agenti AI, Agents SDK, AI, Intelligenza Artificiale, Python **Aree di Competenza Corsi:** AI/Machine Learning **Categorie Corso:** Intelligenza Artificiale --- ### [MCP: Costruire servizi per l'Intelligenza Artificiale](https://devacademy.it/corsi/mcp-costruire-servizi-per-lintelligenza-artificiale/) **Published:** Gennaio 29, 2026 **Author:** Rino Picardi **Content:** ## Presentazione del corso In questo corso MCP **impareremo a usare MCP** (Model Context Protocol), un protocollo aperto progettato per **integrare servizi e funzionalità personalizzate all’interno dei Large Language Model (LLM)**. MCP rappresenta una delle innovazioni più interessanti nello scenario attuale dell’Intelligenza Artificiale: permette di **estendere le capacità di un LLM** mettendogli a disposizione strumenti e servizi esterni, creati da noi o forniti da terze parti. In questo modo, chi già gestisce servizi — dai piccoli progetti fino ai provider più noti — può esporre le proprie funzionalità tramite tool MCP e renderle utilizzabili direttamente all’interno di applicazioni basate su AI. Nel corso vedremo come **mettere insieme modello e servizi**, insegnando a un LLM quando rispondere autonomamente e quando, invece, chiamare uno specifico tool offerto da un server MCP. Costruiremo passo dopo passo il nostro modello, comprendendo le logiche che stanno dietro a questa integrazione: un primo passo fondamentale per sviluppare sistemi di Intelligenza Artificiale davvero estendibili e potenti. **Requisiti:** - [Fondamenti di Python](https://devacademy.it/corsi/fondamenti-di-python/) - [Strutture dati in Python](https://devacademy.it/corsi/strutture-dati-in-python/) - [Funzioni e moduli in Python](https://devacademy.it/corsi/funzioni-e-moduli-in-python/) - [Programmazione a oggetti in Python](https://devacademy.it/corsi/programmazione-a-oggetti-in-python/) - [Applicazioni con AI](https://devacademy.it/corsi/applicazioni-con-ai/) - [Creare un Chatbot con AI](https://devacademy.it/corsi/creare-un-chatbot-con-ai/) - [Strumenti per applicazioni A.I.](https://devacademy.it/corsi/strumenti-per-applicazioni-a-i/) - [Creare RAG](https://devacademy.it/corsi/creare-rag/) - [ Agenti AI](https://devacademy.it/corsi/agenti-ai/) - [ Architetture per agenti AI ](https://devacademy.it/corsi/architetture-per-agenti-ai/) - [Chatbot web con AI](https://devacademy.it/corsi/chatbot-web-con-ai/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** AI, Intelligenza Artificiale, MCP, Python **Tecnologie Corsi:** AI, Intelligenza Artificiale, MCP, Python **Aree di Competenza Corsi:** AI/Machine Learning **Categorie Corso:** Intelligenza Artificiale --- ### [Chatbot web con AI](https://devacademy.it/corsi/chatbot-web-con-ai/) **Published:** Giugno 25, 2025 **Author:** Rino Picardi **Content:** ## Presentazione del corso Impara a creare un chatbot intelligente, simile a ChatGPT, direttamente sul web. Oggi l’intelligenza artificiale è parte della nostra quotidianità: conversiamo con assistenti virtuali e chatbot come se parlassimo con un amico. In questo corso imparerai a creare un chatbot basato su AI capace di interagire con gli utenti in modo naturale e fluido. Scoprirai passo dopo passo come progettare e sviluppare un’applicazione web che integri l’intelligenza artificiale generativa, partendo dalla scelta dell’interfaccia web più adatta alle tue esigenze. Analizzeremo le principali soluzioni disponibili, valutando insieme semplicità, praticità ed efficacia, fino a realizzare la tua interfaccia personalizzata. Infine, costruiremo il cuore del progetto: il motore AI del tuo chatbot, ovvero l’anima che renderà possibile la conversazione con gli utenti. Metteremo tutto in pratica lanciando una vera applicazione web funzionante, capace di collegare l’interfaccia al chatbot e rendere disponibile la tua intelligenza artificiale online. **Requisiti:** - [Fondamenti di Python](https://devacademy.it/corsi/fondamenti-di-python/) - [Strutture dati in Python](https://devacademy.it/corsi/strutture-dati-in-python/) - [Funzioni e moduli in Python](https://devacademy.it/corsi/funzioni-e-moduli-in-python/) - [Programmazione a oggetti in Python](https://devacademy.it/corsi/programmazione-a-oggetti-in-python/) - [Applicazioni con AI](https://devacademy.it/corsi/applicazioni-con-ai/) - [Creare un Chatbot con AI](https://devacademy.it/corsi/creare-un-chatbot-con-ai/) - [Strumenti per applicazioni A.I.](https://devacademy.it/corsi/strumenti-per-applicazioni-a-i/) - [Creare RAG](https://devacademy.it/corsi/creare-rag/) - [ Agenti AI](https://devacademy.it/corsi/agenti-ai/) - [ Architetture per agenti AI ](https://devacademy.it/corsi/architetture-per-agenti-ai/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** AI, Chatbot, Intelligenza Artificiale, Python **Tecnologie Corsi:** AI, Chatbot, Intelligenza Artificiale, Python **Aree di Competenza Corsi:** AI/Machine Learning **Categorie Corso:** Intelligenza Artificiale --- ### [AWS S3](https://devacademy.it/corsi/aws-s3/) **Published:** Ottobre 3, 2025 **Author:** Rino Picardi **Content:** ## Presentazione del corso Qual è uno dei servizi più utilizzati nei progetti AWS di qualsiasi genere e soprattutto qual è quel servizio che incarna in Cloud una delle prime necessità di qualsiasi progettista, programmatore o sistemista ovvero la conservazione duratura e scalabile di dati? È S3 (Simple Storage Service) ed è proprio quel servizio che andremo a conoscere in questo videocorso. In questo nuovo **Corso AWS** andremo a conoscere un altro tassello fondamentale di AWS ovvero il servizio S3 che permette di immagazzinare in maniera sicura e scalabile dati per qualsiasi utilizzo. Come vedremo lo potremo utilizzare per gestire dei siti internet, per immagazzinare dei backup, per condividere dei dati tra varie applicazioni oppure per raccogliere dati da analizzare successivamente con i nostri sistemi di elaborazioni o per l’intelligenza artificiale. Come tutti i servizi AWS fa di tutto per metterci a disposizione con la maggiore facilità possibile tutte le caratteristiche di cui abbiamo bisogno, come vedremo però, come in ogni caso, c’è da fare un percorso ben mirato che ci guiderà attraverso i vari concetti e ci insegnerà a fare tutte queste operazioni in maniera efficace, ma soprattutto nella maniera più sicura possibile visto che stiamo trattando i dati, ovvero il vero oro che c’è all’interno di ogni progetto. Questi sono i nostri obiettivi e da qui iniziamo a conoscere S3. **Requisiti:** - [AWS: da zero alle macchine virtuali](https://devacademy.it/corsi/aws-da-zero-alle-macchine-virtuali/) - [AWS: configurazioni di rete](https://devacademy.it/corsi/aws-configurazioni-di-rete/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** AWS, Cloud, S3 **Tecnologie Corsi:** AWS **Aree di Competenza Corsi:** Cloud, Coding, Data **Categorie Corso:** Cloud --- ### [MySQL](https://devacademy.it/corsi/mysql/) **Published:** Marzo 16, 2022 **Author:** Rino Picardi **Content:** ## Presentazione del corso Nel corso MySQL entreremo nel mondo dei database relazionali, e più in particolare parleremo di linguaggio SQL e della tecnologia MySQL. Inizieremo comprendendo cosa si intende quando si parla di database e quali ne sono le principali famiglie. Impareremo i fondamenti del linguaggio SQL, distinguendo tra le cosiddette operazioni CRUD: inserimento, lettura, modifica dei dati e cancellazione. Approfondiremo le tecniche messe a disposizione per lavorare all’architettura interna del database, specialmente per creare, cancellare e modificare tabelle ( le strutture dati principali). Parleremo quindi di progettazione di database per imparare a gestire opportunamente reti di informazioni che permettano di elaborarne dati ed estrarne il massimo del valore. Infine, concluderemo il corso con un progetto finale, per ripassare insieme tutti i concetti incontrati nelle lezioni e tutte le tecniche acquisite. **Requisiti:** nessuno **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** database, MySQL **Tecnologie Corsi:** MySQL **Aree di Competenza Corsi:** Data **Categorie Corso:** Database --- ### [Introduzione a PHP](https://devacademy.it/corsi/introduzione-a-php/) **Published:** Gennaio 9, 2017 **Author:** Rino Picardi **Content:** ## Presentazione del corso Con questo corso iniziamo il viaggio all’interno del linguaggio più usato nel web: il PHP. Dopo una prima panoramica sul funzionamento del web, sull’architettura client /server e sugli strumenti di sviluppo che si incontreranno durante il percorso di formazione e in generale durante la carriera di programmatore PHP, vengono proposti i concetti basilari del linguaggio: dalle variabili e i tipi di dato, alle stringhe fino all’uso di operatori aritmetici, logici e di confronto. Un punto di partenza semplice, che vi farà capire fin da subito il potenziale e il funzionamento di questo diffusissimo linguaggio di programmazione. **Requisiti:** nessuno **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** PHP **Tecnologie Corsi:** PHP **Aree di Competenza Corsi:** Coding **Categorie Corso:** Back-end, Linguaggi --- ### [Introduzione a HTML e CSS](https://devacademy.it/corsi/introduzione-a-html-e-css/) **Published:** Gennaio 9, 2017 **Author:** Rino Picardi **Content:** ## Presentazione del corso Con il corso “Introduzione a HTML e CSS” si intende offrire una veloce ma esaustiva panoramica circa la struttura e l’aspetto delle pagine web con cui ogni programmatore web dovrà interagire. Non importa infatti se ciò che si vuole imparare è creare siti web, piuttosto applicazioni web in php o con altre tecnologie client o server che siano: il linguaggio HTML è una componente che accomuna tutti, programmatori web e web designer e una conoscenza dello stesso non potrà che tornare utile a tutti. In questo corso scoprirai come sono fatte le pagine web, qual è la loro struttura e quali sono i principali strumenti che questo mette a disposizione. A seguire, imparerai a separare struttura e aspetto delle pagine, grazie alla panoramica sui CSS offerta da questo corso introduttivo. **Requisiti:** nessuno **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** CSS, HTML **Tecnologie Corsi:** CSS, HTML **Aree di Competenza Corsi:** Coding **Categorie Corso:** Design/UX, Front-end --- ### [Strutture di controllo e Array in PHP](https://devacademy.it/corsi/strutture-di-controllo-e-array-in-php/) **Published:** Marzo 14, 2017 **Author:** Rino Picardi **Content:** ## Presentazione del corso Con questo corso inizieremo a costruire programmi più potenti e intelligenti grazie all’uso di alcuni strumenti offerti dal PHP, ma presenti anche in qualsiasi altro linguaggio di programmazione: i costrutti condizionali, i cicli e gli array. Grazie a questi strumenti saremo infatti in grado di controllare il flusso di esecuzione dei nostri programmi, i quali impareranno a decidere autonomamente come comportarsi in funzione dei dati a loro disposizione e dei dati inseriti dall’utente. **Requisiti:** [Introduzione a PHP](http://devacademy.it/corsi/introduzione-a-php/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** PHP **Tecnologie Corsi:** PHP **Aree di Competenza Corsi:** Coding **Categorie Corso:** Back-end, Linguaggi --- ### [Funzioni in PHP](https://devacademy.it/corsi/funzioni-in-php/) **Published:** Marzo 14, 2017 **Author:** Rino Picardi **Content:** ## Presentazione del corso Indipendentemente dal linguaggio di programmazione con il quale siamo soliti lavorare, prima o poi sentiremo il bisogno di scrivere codice più pulito e meno ripetitivo. In questo corso faremo la conoscenza di uno strumento potentissimo: scopriremo cosa sono le funzioni, come si definiscono e usano in PHP e come possono aiutarci ad organizzare al meglio il nostro codice e a renderlo meno ripetitivo. **Requisiti:** [Introduzione a PHP](https://devacademy.it/corsi/introduzione-a-php/) – [Strutture di controllo e Array in PHP](https://devacademy.it/corsi/strutture-di-controllo-e-array-in-php/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** PHP **Tecnologie Corsi:** PHP **Aree di Competenza Corsi:** Coding **Categorie Corso:** Back-end, Linguaggi --- ### [PHP a oggetti](https://devacademy.it/corsi/php-a-oggetti/) **Published:** Aprile 27, 2017 **Author:** Rino Picardi **Content:** ## Presentazione del corso La programmazione orientata agli oggetti, conosciuta anche come OOP (Object Oriented Programming) è un paradigma di programmazione potente e affermato, che seppur possa sembrare ad un primo impatto più complesso rispetto alla classica programmazione procedurale, è in realtà molto vicino a come gli esseri umani percepiscono il mondo reale e compresi i meccanismi può aiutarci a trovare soluzioni ai nostri problemi più facilmente. In questo corso scopriremo il significato di termini come classe e oggetto e tutto ciò che la programmazione a oggetti in PHP ha da offrirci. **Requisiti:** [Introduzione a PHP](https://devacademy.it/corsi/introduzione-a-php/) – [Strutture di controllo e Array in PHP](https://devacademy.it/corsi/strutture-di-controllo-e-array-in-php/) – [Funzioni in PHP](https://devacademy.it/corsi/funzioni-in-php/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** PHP **Tecnologie Corsi:** PHP **Aree di Competenza Corsi:** Coding **Categorie Corso:** Back-end, Linguaggi --- ### [PHP e Database](https://devacademy.it/corsi/php-e-database/) **Published:** Giugno 7, 2017 **Author:** Rino Picardi **Content:** ## Presentazione del corso In questo corso impareremo ad usare i database nelle nostre applicazioni PHP. Dopo un’introduzione ai database, al loro funzionamento e al linguaggio SQL con cui saremo in grado di dialogare con essi, vedremo come utilizzare e interfacciare il nostro progetto in PHP con un database MySQL e impareremo ad effettuare le principali operazioni di manipolazione sui dati (CRUD) tramite MySQLi e PDO. Ultimo, ma non meno importante, scopriremo cosa sono e come utilizzare due formati molto importanti, soprattutto nell’ambito dello sviluppo di applicazioni web e mobile: XML e JSON. **Requisiti:** [Introduzione a PHP](https://devacademy.it/corsi/introduzione-a-php/) – [Strutture di controllo e Array in PHP](https://devacademy.it/corsi/strutture-di-controllo-e-array-in-php/) – [Funzioni in PHP](https://devacademy.it/corsi/funzioni-in-php/) – [PHP a oggetti](https://devacademy.it/corsi/php-a-oggetti/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** PHP **Tecnologie Corsi:** MySQL, PHP **Aree di Competenza Corsi:** Coding **Categorie Corso:** Back-end, Database, Linguaggi --- ### [PHP per il Web](https://devacademy.it/corsi/php-per-il-web/) **Published:** Settembre 5, 2017 **Author:** Rino Picardi **Content:** ## Presentazione del corso In questo corso di PHP orientato al web vedremo come integrare questo linguaggio di programmazione all’interno del codice HTML che compone una pagina web, introdurremo concetti come GET, POST, Header, Cookie, Sessioni, ecc. ed entreremo nel vivo della programmazione in PHP tramite esempi pratici. Verrà mostrato come rendere dinamiche pagine web partendo da un template html e css, vedremo come implementare un sistema di autenticazione e illustreremo come creare un backend di gestione dei contenuti delle nostre pagine sfruttando un altro template html e css su cui costruiremo le nostre logiche, incluse quelle per gestire notifiche e le operazioni CRUD per creare, leggere, modificare e cancellare dati sul database. **Requisiti:** [Introduzione a PHP](https://devacademy.it/corsi/introduzione-a-php/) – [Strutture di controllo e Array in PHP](https://devacademy.it/corsi/strutture-di-controllo-e-array-in-php/) – [Funzioni in PHP](https://devacademy.it/corsi/funzioni-in-php/) – [PHP a oggetti](https://devacademy.it/corsi/php-a-oggetti/) – [PHP e database](https://devacademy.it/corsi/php-e-database/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** PHP **Tecnologie Corsi:** PHP **Aree di Competenza Corsi:** Coding **Categorie Corso:** Back-end, Linguaggi --- ### [Introduzione a Javascript](https://devacademy.it/corsi/introduzione-a-javascript/) **Published:** Novembre 22, 2017 **Author:** Rino Picardi **Content:** ## Presentazione del corso In questo corso imparerai a programmare con uno dei linguaggi di programmazione più utilizzati al mondo: Javascript! Javascript nasce per rendere dinamiche le pagine web, ma oggi è utilizzato anche in ambienti server e nello sviluppo di applicazioni mobile, un linguaggio utile quindi in ogni ambito. Il corso è adatto a chiunque: a chi vuole imparare a programmare da zero, a chi ha già dimestichezza con la programmazione e a tutti i web designer con buoni fondamenti di html e css che vogliono rendere dinamici i propri siti web. Il corso introduttivo a Javascript parte dalle basi, ovvero dalla sintassi, passando poi ai tipi di dato, alle variabili, agli elementi di controllo del flusso di un programma (i costrutti condizionali e cicli) fino ad arrivare a studiare le funzioni, il tutto corredato da esempi pratici ed esercitazioni. **Requisiti:** [Conoscenza linguaggio HTML](https://devacademy.it/corsi/introduzione-a-html-e-css/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** javascript **Tecnologie Corsi:** Javascript **Aree di Competenza Corsi:** Coding **Categorie Corso:** Front-end, Linguaggi --- ### [Gestire dati con Javascript](https://devacademy.it/corsi/gestire-dati-con-javascript/) **Published:** Gennaio 23, 2018 **Author:** Rino Picardi **Content:** ## Presentazione del corso Per imparare a programmare in Javascript dovrai necessariamente apprendere come gestire i dati con questo linguaggio di programmazione. In questo corso conoscerai e prenderai confidenza con gli oggetti, strutture articolate di dati utilizzate per rappresentare ogni tipologia di dato come array, stringhe, date e molto altro. Imparerai a creare i tuoi oggetti e a padroneggiare concetti come classi ed ereditarietà, il tutto per gestire al meglio i dati in Javascript. **Requisiti:** [Introduzione a Javascript](https://devacademy.it/corsi/introduzione-a-javascript/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** javascript **Tecnologie Corsi:** Javascript **Aree di Competenza Corsi:** Coding **Categorie Corso:** Front-end, Linguaggi --- ### [Javascript e il Web](https://devacademy.it/corsi/javascript-e-il-web/) **Published:** Marzo 6, 2018 **Author:** Rino Picardi **Content:** ## Presentazione del corso In questo **Corso di Javascript online** imparerai ad utilizzare il linguaggio all’interno del browser, il suo habitat originario dove è in grado si svolgere funzionalità a livello client sempre più ricche. Scoprirai come interagire con gli elementi delle pagine web e come modificarli in base alle tue esigenze, navigando tra di essi grazie al DOM. Introdurremo inoltre il concetto di eventi e vedrai come programmare basandosi su questi grazie anche ad alcuni esempi pratici. **Requisiti:** [Introduzione a Javascript](https://devacademy.it/corsi/introduzione-a-javascript/) – [Gestire dati con Javascript](https://devacademy.it/corsi/gestire-dati-con-javascript/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** javascript **Tecnologie Corsi:** Javascript **Aree di Competenza Corsi:** Coding **Categorie Corso:** Front-end, Linguaggi --- ### [Introduzione a jQuery](https://devacademy.it/corsi/introduzione-a-jquery/) **Published:** Aprile 23, 2018 **Author:** Rino Picardi **Content:** ## Presentazione del corso In questo corso scopriremo jQuery, un framework fondamentale per qualsiasi sviluppatore web con cui è possibile utilizzare Javascript in modo più efficiente e produttivo grazie anche alla sua sintassi più concisa. Impareremo a interagire con l’albero DOM, a gestire gli eventi e a creare delle animazioni che renderanno più interattive e interessanti le nostre pagine web. Interagiremo con i form, acquisendo i dati che questi offrono ed elaborando le informazioni ricevute. Vedremo infine come jQuery possa essere impiegato nella realizzazione di template per le interfacce web per rendere sempre più interessanti le nostre applicazioni web e rendere più produttivo il nostro lavoro di sviluppatori. **Requisiti:** [Introduzione a Javascript](https://devacademy.it/corsi/introduzione-a-javascript/) – [Gestire dati con Javascript](https://devacademy.it/corsi/gestire-dati-con-javascript/) – [Javascript e il web](https://devacademy.it/corsi/javascript-e-il-web/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** javascript, jQuery **Tecnologie Corsi:** Javascript, jQuery **Aree di Competenza Corsi:** Coding **Categorie Corso:** Front-end --- ### [AJAX, comunicare nel Web con jQuery](https://devacademy.it/corsi/ajax-comunicare-nel-web-con-jquery/) **Published:** Giugno 13, 2018 **Author:** Rino Picardi **Content:** ## Presentazione del corso In questo corso scopriremo insieme la tecnologia AJAX nel mondo JavaScript. Studieremo HTTP e vedremo quali sono le modalità con cui si possono creare interazioni tra un client e un server. Si tratta di conoscenze fondamentali in JavaScript, ma anche nello studio di qualsiasi tecnologia moderna. Impareremo con la pratica: sperimenteremo molto scrivendo codice e sfruttando la sintassi elegante e produttiva offerta da jQuery. Vedremo com’è possibile creare interazioni tra una pagina web (in HTML e JavaScript) e un servizio remoto che offre dati e funzionalità. Scopriremo come funziona REST, il modello più diffuso al giorno d’oggi per la realizzazione di web services. Scopriremo insieme perché AJAX ha cambiato il web rendendo le pagine in grado di aggiornarsi mentre l’utente le utilizza. Vedremo infine come manipolare il dom per modificarne la struttura e creare delle interazioni e delle pagine sempre più dinamiche. **Requisiti:** [Introduzione a Javascript](https://devacademy.it/corsi/introduzione-a-javascript/) – [Gestire dati con Javascript](https://devacademy.it/corsi/gestire-dati-con-javascript/) – [Javascript e il web](https://devacademy.it/corsi/javascript-e-il-web/) – [Introduzione a jQuery](https://devacademy.it/corsi/introduzione-a-jquery/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** javascript, jQuery **Tecnologie Corsi:** Javascript, jQuery **Aree di Competenza Corsi:** Coding **Categorie Corso:** Front-end --- ### [Creare applicazioni web con Laravel](https://devacademy.it/corsi/creare-applicazioni-web-con-laravel/) **Published:** Dicembre 16, 2020 **Author:** Rino Picardi **Content:** ## Presentazione del corso Laravel è un framework PHP nato per creare applicazioni web in modo robusto ed elegante ed è oggi uno dei framework più utilizzati al mondo. In questo corso vedremo come creare applicazioni web con Laravel. Partiremo dall’installazione e dalla configurazione di MySQL Workbench e inizieremo a vedere come gestire le rotte della nostra applicazione che ci permetteranno di navigare tra le pagine del progetto. Affronteremo la gestione delle view, ovvero delle pagine vere e proprie, con Blade, il template engine utilizzato da Laravel andando a vedere come gestire i layout, i partials e le section. Passeremo quindi ai database vedendo cosa sono le migration, i seeders e le factory. Costruiremo insieme un progetto finale, un blog, con tutte le funzionalità CRUD e qualche funzionalità avanzata che aggiungeremo nell’ultimo modulo del corso, il tutto utilizzando un Resource Controller che ci permetterà di risparmiare il 90% del codice e la CLI di Laravel, chiamata Artisan, che faciliterà lo sviluppo della nostra applicazione. **Requisiti:** - [Conoscenza di HTML e CSS](https://devacademy.it/corsi/introduzione-a-html-e-css/) - [Conoscenza Bootstrap](https://devacademy.it/corsi/come-creare-un-sito-web-con-bootstrap/) - [Conoscenza di PHP](https://devacademy.it/percorsi/php-developer/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** Laravel, PHP **Tecnologie Corsi:** Laravel, PHP **Aree di Competenza Corsi:** Coding **Categorie Corso:** Back-end, Framework --- ### [Creare WebApp con Vue 3](https://devacademy.it/corsi/creare-web-app-con-vue-3/) **Published:** Dicembre 7, 2021 **Author:** Rino Picardi **Content:** ## Presentazione del corso Durante il corso “Come creare WebApp con Vue 3” creeremo insieme tre applicazioni. Nel primo esempio vedremo come creare un e-commerce con la gestione di un carrello. Questo ci permetterà di affrontare tutti i concetti di base, la gestione degli stili e le direttive. Vedremo quindi come gestire i componenti: input e output, props ed eventi, fino alla gestione dei metodi e dei computed. Passeremo poi alla creazione di un’applicazione per la gestione degli eventi con cui affronteremo lo studio della nuova API di Vue 3 (la grande differenza rispetto alla versione 2): la Composition API. Vedremo che cos’è, perché esiste e che cosa cambia rispetto alla versione precedente di Vue. Andremo a vedere inoltre tutti i concetti fondamentali per la gestione dei form. Infine creeremo insieme con gli ultimi moduli del corso una dashboard per la gestione delle criptovalute. Ci collegheremo ad un API gratuita chiamata Coingecko che ci restituirà tutte le informazioni relative alle criptovalute; integreremo una libreria di user-interface (UI) chiamata ElementPlus che ci fornirà dei componenti di interfaccia pronti all’uso, e andremo a integrare anche VUE router per gestire le rotte all’interno della nostra applicazione. Infine ci occuperemo della Build e del Deploy su Netlifly andando a vedere quindi come mettere online la nostra applicazione. **Requisiti:** - [Javascript](https://devacademy.it/percorsi/javascript-developer/) - [Vue.js](https://devacademy.it/percorsi/vue-js-developer/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** javascript, Vue.js **Tecnologie Corsi:** Javascript, Vue.js **Aree di Competenza Corsi:** Coding **Categorie Corso:** Framework, Front-end --- ### [Gestione dei layout con SASS](https://devacademy.it/corsi/gestione-dei-layout-con-sass/) **Published:** Luglio 28, 2021 **Author:** Rino Picardi **Content:** ## Presentazione del corso Nel Corso SASS imparerai a gestire i layout con questa importante estensione che ti permetterà di usare variabili e funzioni nei tuoi CSS. Vedremo quindi come gestire le variabili, come gestire grazie al nesting il codice che dipende da elementi padre, vedremo come suddividere i file css in file separati con i Partials e come creare delle funzioni che possiamo riutilizzare all’interno di tutto il nostro CSS con i Mixin. Vedremo inoltre come poter ciclare all’interno dei css sfruttando i cicli e vedremo infine come creare interi layout e come creare temi Bulma, una libreria CSS basata su Sass, sfruttando questa potente tecnologia a nostra disposizione. **Requisiti:** - [Conoscenza base di HTML e CSS](https://devacademy.it/corsi/introduzione-a-html-e-css/) - [Conoscenza di CSS](https://devacademy.it/corsi/css-avanzato/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** CSS **Tecnologie Corsi:** CSS, SASS **Aree di Competenza Corsi:** Coding **Categorie Corso:** Design/UX, Front-end --- ### [CSS Avanzato](https://devacademy.it/corsi/css-avanzato/) **Published:** Luglio 14, 2021 **Author:** Rino Picardi **Content:** ## Presentazione del corso Nel corso CSS avanzato approfondiremo tutti gli aspetti principali del CSS, da position a float per poi passare alle tecnologie più utilizzate per la creazione di layout: flexbox e grid. Vedremo insieme come gestire le animazioni e affronteremo la creazione di un layout sfruttando il metodo BEM. Durante il corso creeremo insieme dei layout, gestendo le media query per la visualizzazione mobile su smartphone e tablet, creeremo un layout con flexbox sfruttando il parallasse e altre proprietà CSS di ultima generazione, proveremo quindi grid, sempre con un occhio al responsive, il tutto con un approccio pratico. **Requisiti:** - [Conoscenza base di HTML e CSS](https://devacademy.it/corsi/introduzione-a-html-e-css/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** CSS **Tecnologie Corsi:** CSS **Aree di Competenza Corsi:** Coding **Categorie Corso:** Design/UX, Front-end, Linguaggi --- ### [Come creare un sito web con Bootstrap](https://devacademy.it/corsi/come-creare-un-sito-web-con-bootstrap/) **Published:** Dicembre 4, 2020 **Author:** Rino Picardi **Content:** ## Presentazione del corso Bootstrap è uno dei framework open source più utilizzati al mondo per la realizzazione di siti web responsive. In questo corso imparerai a creare un sito web responsive da zero utilizzando Bootstrap 4. Scoprirai il suo funzionamento e i principali elementi da cui è composto. Imparerai a sfruttare il grid system, un sistema a griglia che permette di creare layout di ogni genere grazie ad un sistema a 12 colonne, imparerai a integrare nei tuoi progetti carousel, navbar, hamburger menù, card, modal e molto altro. Scoprirai come gestire la corretta visualizzazione degli elementi delle tue pagine web alle diverse risoluzioni offerte dai differenti device (computer desktop, smartphone e tablet) e a personalizzare gli stili degli elementi delle tue pagine web sfruttando le classi offerte da Bootstrap. **Requisiti:** - [Conoscenza HTML e CSS](https://devacademy.it/corsi/introduzione-a-html-e-css/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** Bootstrap **Tecnologie Corsi:** Bootstrap, CSS, HTML **Aree di Competenza Corsi:** Coding **Categorie Corso:** Design/UX, Front-end --- ### [Creare un tema Wordpress](https://devacademy.it/corsi/creare-un-tema-wordpress/) **Published:** Febbraio 14, 2020 **Author:** Rino Picardi **Content:** ## Presentazione del corso Convertire un sito web statico in un tema per wordpress può sembrare un processo complicato, ma con i giusti strumenti possiamo creare un tema molto facilmente e in tempi da record. In questo corso ti spiegherò come convertire un sito web statico in un tema per wordpress completamente funzionante. Utilizzeremo il plugin Timber per creare dei template riutilizzabili con il linguaggio Twig e tramite il plugin Advanced Custom Fields creeremo dei campi personalizzati per le diverse pagine in modo tale da renderle facilmente modificabili. Vedremo insieme quali strumenti di sviluppo utilizzare e come configurarli al meglio. Tramite utilizzo di servizi esterni aggiungeremo un form di contatto e un widget per sottoscriversi alla newsletter. Infine creeremo una versione minimale del tema senza utilizzare nessun plugin in modo tale da fare un confronto tra le due versioni. **Requisiti:** - Conoscenza base di wordpress - [Conoscenza HTML/CSS](https://devacademy.it/corsi/introduzione-a-html-e-css/) - [Conoscenza di PHP](https://devacademy.it/percorsi/php-developer/) - Utile aver seguito il corso “[Come creare un sito web](https://devacademy.it/corsi/come-creare-un-sito-web/)” in quanto il template wordpress che si realizzerà in questo corso si basa sul sito statico creato in questo corso **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** wordpress **Tecnologie Corsi:** PHP, Wordpress **Aree di Competenza Corsi:** Coding **Categorie Corso:** CMS, Design/UX --- ### [Applicazioni con AI](https://devacademy.it/corsi/applicazioni-con-ai/) **Published:** Marzo 13, 2025 **Author:** Rino Picardi **Content:** ## Presentazione del corso **L’Intelligenza Artificiale** ogni giorno raggiunge traguardi più elevati, ma la sua evoluzione non è che all’inizio. È il momento giusto per inserirsi in questo ricchissimo settore e questo che stai per seguire è il corso che ti avvierà allo **sviluppo di applicazioni su Intelligenza Artificiale**. Impareremo ad implementare le nostre funzionalità con il linguaggio Python interagendo con gli **LLM**, i Large Language Model, i veri motori dell’AI generativa, creando architetture con un framework chiamato LangChain. Impareremo ad interagire con gli LLM remoti, come quelli di OpenAI e in locale con Ollama. Vedremo come chiedere loro di generare dati e contenuti per noi e come integrare tutto ciò in un normale programma Python. Mediante esempi pratici mirati e progressivi scopriremo quanto può essere veloce e soddisfacente questo tipo di sviluppo, ma ben consci che non è che l’inizio di un percorso che darà grandi soddisfazioni. **Requisiti:** - [Fondamenti di Python](https://devacademy.it/corsi/fondamenti-di-python/) - [Strutture dati in Python](https://devacademy.it/corsi/strutture-dati-in-python/) - [Funzioni e moduli in Python](https://devacademy.it/corsi/funzioni-e-moduli-in-python/) - [Programmazione a oggetti in Python](https://devacademy.it/corsi/programmazione-a-oggetti-in-python/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** AI, Intelligenza Artificiale, LLM, Python **Tecnologie Corsi:** AI, Intelligenza Artificiale, LLM, Python **Aree di Competenza Corsi:** AI/Machine Learning **Categorie Corso:** Intelligenza Artificiale --- ### [Creare un Chatbot con AI](https://devacademy.it/corsi/creare-un-chatbot-con-ai/) **Published:** Marzo 13, 2025 **Author:** Rino Picardi **Content:** ## Presentazione del corso L’**Intelligenza Artificiale Generativa** si distingue per i suoi aspetti conversazionali. Non sembrerà più di parlare con una macchina, ma con qualcuno che ci conosce bene. Ma come succede tutto questo? Nel **Corso “Creare un Chatbot con AI”** imparerai a creare chatbot con l’intelligenza artificiale. Sarà fondamentale comprendere bene cosa sono i messaggi, ovvero quelle strutture dati scambiate tra umani e LLM in un senso e nell’altro. Esploreremo attentamente come avviene la conversazione tra l’intelligenza artificiale e gli esseri umani e in particolare andremo a costruire due versioni di un chatbot. La prima sarà per così dire più artigianale, ma sarà costruita totalmente da zero da noi utilizzando liste di messaggi per andare veramente a vedere come la conversazione avviene e può essere influenzata, successivamente implementeremo il tutto con la libreria Langgraph, una libreria che si interfaccia perfettamente con LangChain e che offre una struttura a grafo capace di creare nodi di elaborazione che collaborano gli uni con gli altri. **Requisiti:** - [Fondamenti di Python](https://devacademy.it/corsi/fondamenti-di-python/) - [Strutture dati in Python](https://devacademy.it/corsi/strutture-dati-in-python/) - [Funzioni e moduli in Python](https://devacademy.it/corsi/funzioni-e-moduli-in-python/) - [Programmazione a oggetti in Python](https://devacademy.it/corsi/programmazione-a-oggetti-in-python/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** AI, Chatbot, Intelligenza Artificiale, Python **Tecnologie Corsi:** AI, Chatbot, Intelligenza Artificiale, Python **Aree di Competenza Corsi:** AI/Machine Learning **Categorie Corso:** Intelligenza Artificiale --- ### [Strumenti per applicazioni A.I.](https://devacademy.it/corsi/strumenti-per-applicazioni-a-i/) **Published:** Maggio 22, 2025 **Author:** Rino Picardi **Content:** ## Presentazione del corso Dopo aver appreso i rudimenti degli LLM e le basi dello **sviluppo di app con l’intelligenza artificiale generativa** è il momento di approfondire le potenzialità delle tecnologie acquisite. In questo nuovo corso vedremo insieme tanti strumenti utili per lo sviluppo di applicazioni con l’AI. Seguiremo due strade, da un lato cercheremo di capire meglio **come funzionano gli LLM** e come sfruttarli in maniera ottimale. Parleremo per questo di *token* e *temperature*, scoprendo come possono contribuire a personalizzare e ottimizzare e le nostre app. Dall’altro esploreremo nel dettaglio il settore dei *prompt* e degli *output parser*, arricchendoci di strumenti per la gestione di input e output al fine di soddisfare al meglio le richieste dei nostri utenti. **Requisiti:** - [Fondamenti di Python](https://devacademy.it/corsi/fondamenti-di-python/) - [Strutture dati in Python](https://devacademy.it/corsi/strutture-dati-in-python/) - [Funzioni e moduli in Python](https://devacademy.it/corsi/funzioni-e-moduli-in-python/) - [Programmazione a oggetti in Python](https://devacademy.it/corsi/programmazione-a-oggetti-in-python/) - [Applicazioni con AI](https://devacademy.it/corsi/applicazioni-con-ai/) - [Creare un Chatbot con AI](https://devacademy.it/corsi/creare-un-chatbot-con-ai/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** AI, Intelligenza Artificiale, Python **Tecnologie Corsi:** AI, Intelligenza Artificiale, Python **Aree di Competenza Corsi:** AI/Machine Learning **Categorie Corso:** Intelligenza Artificiale --- ### [Creare RAG](https://devacademy.it/corsi/creare-rag/) **Published:** Marzo 13, 2025 **Author:** Rino Picardi **Content:** ## Presentazione del corso L’Intelligenza Artificiale riconfigura processi spazi ed approcci che rappresentano ormai consuetudini da decenni. Dobbiamo approcciare questa grande rivoluzione nella maniera più sicura e responsabile possibile, soprattutto per quanto riguarda la gestione dei dati sensibili. In questo corso impareremo a creare RAG, ovvero una modalità di generazione contenuti che prende piede da una mole di documenti privati o aziendali che il nostro LLM userà come fonte e contesto per le sue risposte. Affinché il tutto venga gestito in maniera affidabile ed efficiente dovremo imparare a caricare documenti, lavorarli preservandone la significatività ed immagazzinarli in un database vettoriale. Su questo potranno lavorare i modelli generativi per soddisfare le richieste di collaborazione avanzate dall’essere umano. Inizia qui un percorso con uno scenario tutto nuovo che prende le mosse dagli aspetti più pratici e scientifici della gestione dei dati, ma che non può prescindere dai più fondamentali aspetti di sicurezza e privacy. **Requisiti:** - [Fondamenti di Python](https://devacademy.it/corsi/fondamenti-di-python/) - [Strutture dati in Python](https://devacademy.it/corsi/strutture-dati-in-python/) - [Funzioni e moduli in Python](https://devacademy.it/corsi/funzioni-e-moduli-in-python/) - [Programmazione a oggetti in Python](https://devacademy.it/corsi/programmazione-a-oggetti-in-python/) - [Applicazioni con AI](https://devacademy.it/corsi/applicazioni-con-ai/) - [Creare un Chatbot con AI](https://devacademy.it/corsi/creare-un-chatbot-con-ai/) - [Strumenti per applicazioni A.I.](https://devacademy.it/corsi/strumenti-per-applicazioni-a-i/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** AI, Intelligenza Artificiale, Python, RAG **Tecnologie Corsi:** AI, Intelligenza Artificiale, Python, RAG **Aree di Competenza Corsi:** AI/Machine Learning **Categorie Corso:** Intelligenza Artificiale --- ### [Agenti AI](https://devacademy.it/corsi/agenti-ai/) **Published:** Marzo 13, 2025 **Author:** Rino Picardi **Content:** ## Presentazione del corso La sfida che l’intelligenza artificiale deve vincere consiste nel fare in modo che il suo utilizzo venga percepito come non qualcosa di occasionale e accessorio, ma come qualcosa di profondamente integrato nella vita quotidiana, proprio come internet è percepito oggi da ognuno di noi. È un’altra grande evoluzione e gli agenti ne saranno il futuro. In questo corso impareremo a costruire Agenti AI. Partiremo dai tool per capire cosa sono e come costruirli. Vedremo l’architettura di base degli agenti, che è fondata sull’integrazione tra LLM e Tool. Passeremo poi subito a costruire i nostri agenti, lo faremo in maniera semplice, come sempre, ma cercando di capire come verificare ed esplorare il loro funzionamento interno. **Requisiti:** - [Fondamenti di Python](https://devacademy.it/corsi/fondamenti-di-python/) - [Strutture dati in Python](https://devacademy.it/corsi/strutture-dati-in-python/) - [Funzioni e moduli in Python](https://devacademy.it/corsi/funzioni-e-moduli-in-python/) - [Programmazione a oggetti in Python](https://devacademy.it/corsi/programmazione-a-oggetti-in-python/) - [Applicazioni con AI](https://devacademy.it/corsi/applicazioni-con-ai/) - [Creare un Chatbot con AI](https://devacademy.it/corsi/creare-un-chatbot-con-ai/) - [Strumenti per applicazioni A.I.](https://devacademy.it/corsi/strumenti-per-applicazioni-a-i/) - [Creare RAG](https://devacademy.it/corsi/creare-rag/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** Agenti AI, AI, Intelligenza Artificiale, Python **Tecnologie Corsi:** Agenti AI, AI, Intelligenza Artificiale, Python **Aree di Competenza Corsi:** AI/Machine Learning **Categorie Corso:** Intelligenza Artificiale --- ### [Architetture per agenti AI](https://devacademy.it/corsi/architetture-per-agenti-ai/) **Published:** Giugno 25, 2025 **Author:** Rino Picardi **Content:** ## Presentazione del corso Gli **agenti AI** permettono di creare una reale viva interazione con l’utente immettendo nuove potenzialità in ogni servizio. Eppure, man mano che le nostre idee prendono vita, servono architetture più flessibili per proiettarsi verso traguardi più complessi. In questo corso andremo alla scoperta delle **architetture per agenti AI**. Parleremo di **LangGraph**, ottimo framework derivato da **LangChain**, che permette di strutturare applicazioni di ogni genere con grafi costituiti da nodi di elaborazioni ed archi che li collegano permettendo al contempo di mantenere uno stato informativo sempre disponibile per lo scambio di dati tra nodi. Capiremo quanto realmente LangGraph possa essere utile per costruire e **ottimizzare agenti AI**, ma anche chatbot e tanti altri tipi di applicazioni. Grazie a questo corso potrai diventare un **progettista di agenti con l’intelligenza artificiale**. **Requisiti:** - [Fondamenti di Python](https://devacademy.it/corsi/fondamenti-di-python/) - [Strutture dati in Python](https://devacademy.it/corsi/strutture-dati-in-python/) - [Funzioni e moduli in Python](https://devacademy.it/corsi/funzioni-e-moduli-in-python/) - [Programmazione a oggetti in Python](https://devacademy.it/corsi/programmazione-a-oggetti-in-python/) - [Applicazioni con AI](https://devacademy.it/corsi/applicazioni-con-ai/) - [Creare un Chatbot con AI](https://devacademy.it/corsi/creare-un-chatbot-con-ai/) - [Strumenti per applicazioni A.I.](https://devacademy.it/corsi/strumenti-per-applicazioni-a-i/) - [Creare RAG](https://devacademy.it/corsi/creare-rag/) - [ Agenti AI](https://devacademy.it/corsi/agenti-ai/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** Agenti AI, AI, Intelligenza Artificiale, Python **Tecnologie Corsi:** Agenti AI, AI, Intelligenza Artificiale, Python **Aree di Competenza Corsi:** AI/Machine Learning **Categorie Corso:** Intelligenza Artificiale --- ### [AWS: configurazioni di rete](https://devacademy.it/corsi/aws-configurazioni-di-rete/) **Published:** Giugno 25, 2025 **Author:** Rino Picardi **Content:** ## Presentazione del corso Il Cloud connette il mondo offrendo servizi e strumenti di comunicazione. Oggi siamo interessati a scoprire come AWS gestisce le reti e mette a disposizione infrastrutture di connessione per le soluzioni che vogliamo creare. In questo corso ci avventuriamo tra Virtual Private Cloud, Subnet, indirizzi IP e porte TCP per imparare a gestire, configurare e mettere in sicurezza strati di rete in applicazioni aws. Ne impareremo i principi cardine e ci soffermeremo soprattutto su come implementare e ottimizzare regole firewall così fondamentali per la sicurezza. **Requisiti:** >> [AWS: da zero alle macchine virtuali](https://devacademy.it/corsi/aws-da-zero-alle-macchine-virtuali/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** AWS, Cloud **Tecnologie Corsi:** AWS **Aree di Competenza Corsi:** Cloud, Coding, Data **Categorie Corso:** Cloud --- ### [AWS: macchine virtuali e S3](https://devacademy.it/corsi/aws-macchine-virtuali-e-s3/) **Published:** Ottobre 3, 2025 **Author:** Rino Picardi **Content:** Coming soon ## Presentazione del corso **Requisiti:** nessuno **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** AWS, Cloud **Tecnologie Corsi:** AWS **Aree di Competenza Corsi:** Cloud, Coding, Data **Categorie Corso:** Cloud --- ### [AWS: da zero alle macchine virtuali](https://devacademy.it/corsi/aws-da-zero-alle-macchine-virtuali/) **Published:** Giugno 25, 2025 **Author:** Rino Picardi **Content:** ## Presentazione del corso Intelligenza artificiale, food delivery, e-commerce, home banking non sarebbero possibili al giorno d’oggi senza il cloud, o almeno non sarebbero gli stessi. E’ il momento di studiare e comprendere bene le tecnologie cloud passando per uno dei protagonisti assoluti di questa scena: **AWS**, **Amazon Web Services**, il potentissimo cloud di Amazon. In questo Corso introduttivo ad AWS, primo di una lunga serie di corsi dedicati, creeremo il nostro primo account e avvieremo le nostre prime macchine virtuali per generare server web pubblici e funzionanti. Comprenderemo i principi di funzionamento del cloud ed il suo sistema di costi, ma soprattutto inizieremo a toccare con mano come e quanto lo si possa studiare e apprezzare in maniera gratuita. **Requisiti:** nessuno **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** AWS, Cloud **Tecnologie Corsi:** AWS **Aree di Competenza Corsi:** Cloud, Coding, Data **Categorie Corso:** Cloud --- ### [Creare Single Page Application con Blazor](https://devacademy.it/corsi/creare-single-page-application-con-blazor/) **Published:** Ottobre 24, 2022 **Author:** Rino Picardi **Content:** ## Presentazione del corso **Blazor** è la risposta di Microsoft ai vari framework Javascript (quali Angular, Reatct, Vuejs, ecc) per creare Single Page Applications. Ci sono però due differenze sostanziali. La prima è che possiamo sviluppare la nostra SPA completamente con codice C# e framework .NET. Niente Javascript o Typescript. La seconda è che il nostro codice verrà compilato in WebAssembly, una nuova tecnologia che tutti i browser moderni sono in grado di gestire. In questo corso vedremo come realizzare un client web (o Single Page Application) per interagire col server API Giornale Online creato nel corso [Creare REST API con ASP.NET Core](https://devacademy.it/corsi/creare-rest-api-con-asp-dot-net-core/). Visualizzeremo e gestiremo Articoli e Categorie. Implementeremo anche un sistema di autenticazione per gestire Registrazione e Login. Alla fine del corso avremo una SPA perfettamente funzionante e con quasi tutte le caratteristiche che la rendono pronta per la produzione. Buon divertimento con il nuovo **corso Creare SPA con Blazor**. **Requisiti:** - [Introduzione a C#](https://devacademy.it/corsi/introduzione-a-c-sharp/) - [C# Funzioni](https://devacademy.it/corsi/c-sharp-funzioni/) - [C# OOP](https://devacademy.it/corsi/c-sharp-oop/) - [C# Linq](https://devacademy.it/corsi/c-sharp-linq/) - [HTML e CSS base](https://devacademy.it/corsi/introduzione-a-html-e-css/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** .NET Core, Blazor, C# **Tecnologie Corsi:** .NET Core, Blazor, C# **Aree di Competenza Corsi:** Coding **Categorie Corso:** Framework, Front-end --- ### [Creare REST API con ASP.NET Core](https://devacademy.it/corsi/creare-rest-api-con-asp-dot-net-core/) **Published:** Luglio 21, 2022 **Author:** Rino Picardi **Content:** ## Presentazione del corso In questo corso impareremo a progettare e sviluppare un’applicazione WEB API con ASP.NET Core per la gestione di un giornale online. La nostra applicazione potrà essere utilizzata, sia da SPA che da app mobile (e da qualsiasi altro client che abbia accesso a internet). Con un traffico internet sempre più generato da app su dispositivi mobili, diventa molto importante imparare a sviluppare applicazioni web in grado di fornire dati a tali app. Lo stesso discorso vale anche per lo spopolare di Single Page Application (sviluppate con moderni framework javascript come Angular, React e VueJs) che, a loro volta, necessitano di un backend WEB API per poter accedere ai dati. Svilupperemo un’applicazione semplice, ma che implementerà quasi tutte le caratteristiche di una reale applicazione pronta per la produzione. Testeremo i nostri progressi attraverso il programma Postman, lo strumento standard per la gestione di richieste e risposte http. Alla fine del corso avrete raggiunto un importante traguardo nel vostro percorso di formazione, perché avrete visto come sia possibile creare una reale applicazione grazie anche alle conoscenze acquisite nei precedenti corsi. Buon divertimento nella creazione di un progetto WEB API con ASP.NET Core. **Requisiti:** - [Introduzione a C#](https://devacademy.it/corsi/introduzione-a-c-sharp/) - [C# Funzioni](https://devacademy.it/corsi/c-sharp-funzioni/) - [C# OOP](https://devacademy.it/corsi/c-sharp-oop/) - [C# Linq](https://devacademy.it/corsi/c-sharp-linq/) - [Conoscenza Database Relazionali](https://devacademy.it/corsi/mysql/) - [SQL Server & Entity Framework](https://devacademy.it/corsi/sql-server-ed-entity-framework/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** .NET Core, C# **Tecnologie Corsi:** .NET Core, ASP.NET Core, C#, REST API **Aree di Competenza Corsi:** Coding **Categorie Corso:** Back-end, Framework --- ### [SQL Server & Entity Framework](https://devacademy.it/corsi/sql-server-ed-entity-framework/) **Published:** Giugno 6, 2022 **Author:** Rino Picardi **Content:** ## Presentazione del corso Lo sviluppo software si basa sui dati e, per questo motivo, l’accesso ai dati è una componente fondamentale di ogni framework e linguaggio di programmazione. In questo corso parleremo di **SQL Server**, il database relazionale di **Microsoft**. Impareremo ad interagire con esso attraverso **Sql Server Management Studio**. Vedremo poi come interagire con SQL Server attraverso 2 tecnologie fondamentali del framework: **ADO.NET** e l’**ORM Entity Framework**. Di Entity Framework analizzeremo i 2 approcci fondamentali: **DB First** e **Code First**. Vedremo inoltre come eseguire query LINQ che verranno tradotte in linguaggio SQL ed eseguite sul database. Al termine del corso avremo tutti gli elementi per poter cominciare a **sviluppare software con accesso ai dati**, sia sul database SQL Server che, potenzialmente, su qualsiasi altro database relazionale. Tutto il corso sarà sviluppato con **Visual Studio Community Edition**, il famosissimo IDE di Microsoft che vedremo insieme come installare e configurare. **Requisiti:** - [Introduzione a C#](https://devacademy.it/corsi/introduzione-a-c-sharp/) - [C# Funzioni](https://devacademy.it/corsi/c-sharp-funzioni/) - [C# OOP](https://devacademy.it/corsi/c-sharp-oop/) - [C# Linq](https://devacademy.it/corsi/c-sharp-linq/) - [Conoscenza Database Relazionali](https://devacademy.it/corsi/mysql/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** .NET, C#, MS SQL, SQL Server **Tecnologie Corsi:** .NET Core, C#, Entity Framework, SQL Server **Aree di Competenza Corsi:** Coding, Data **Categorie Corso:** Back-end, Database, Framework --- ### [Spring Framework](https://devacademy.it/corsi/spring-framework/) **Published:** Marzo 16, 2022 **Author:** Rino Picardi **Content:** ## Presentazione del corso In questo corso scopriremo **Spring Framework**, uno dei più famosi approcci allo sviluppo di applicazioni web (e non solo) del mondo Java. Inizieremo dai pilastri del suo core, scoprendo cosa si intende per **Inversion of Control** e come questa venga applicata con la **Dependency Injection**. Capiremo su cosa si basano le architetture dell’applicazione Spring, cosa sono i **bean** e qual è il ruolo giocato dal **context**. Apprezzeremo inoltre il **Model-View-Controller**, il paradigma che permette di separare logiche di presentazione e logiche di business nelle applicazioni con interfacce utente, concentrandoci soprattutto su quelle dedicate alla produzione web. Integreremo il tutto con **Spring Boot** e **Thymeleaf** per aumentare al massimo la nostra produttività e ottimizzare i nostri processi creativi. Infine, metteremo a lavoro quanto imparato personalizzando un template web grazie alle potenzialità di Spring Framework. **Requisiti:** Conoscenza Java **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** java, Spring **Tecnologie Corsi:** Java, Spring **Aree di Competenza Corsi:** Coding **Categorie Corso:** Back-end, Framework --- ### [Kubernetes](https://devacademy.it/corsi/kubernetes/) **Published:** Dicembre 13, 2022 **Author:** Rino Picardi **Content:** ## Presentazione del corso Kubernetes Le applicazioni nell’epoca del cloud devono essere dotate di architetture flessibili, dinamiche e scalabili. I Container sono i mattoni fondamentali di tutto questo e per gestirli al meglio esiste Kubernetes, uno dei progetti open source più importanti al mondo che offre una completissima piattaforma per l’orchestrazione di container. Nel **corso Kubernetes** impareremo a ripensare alle nostre applicazioni nell’ottica di Container e dell’orchestrazione Kubernetes. Scopriremo le componenti che Kubernetes mette a disposizione e capiremo quali di queste impiegare in ogni parte delle nostre architetture. Parleremo di Pod e ReplicaSet per la gestione dei container in esecuzione, ma anche di Deployment per quanto riguarda l’evoluzione delle nostre applicazioni. Capiremo come i service permettano di mettere in comunicazioni le nostre componenti all’interno e all’esterno del cluster. Vedremo il tutto con un approccio estremamente pratico sviluppando esempi su ogni argomento e cimentandoci in un progetto finale. **Requisiti:** [Conoscenza Docker](https://devacademy.it/corsi/docker/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** Kubernetes **Tecnologie Corsi:** Kubernetes **Aree di Competenza Corsi:** Data, DevOps **Categorie Corso:** Container, Kubernetes, Tools --- ### [Google Cloud: container, Kubernetes e DB NoSQL](https://devacademy.it/corsi/google-cloud-container-kubernetes-e-database-nosql/) **Published:** Agosto 31, 2022 **Author:** Rino Picardi **Content:** ## Presentazione del corso Nel corso **Google Cloud: container, Kubernetes e DB NoSQL** ti guideremo alla scoperta dei servizi basati su container e database firestore in Google Cloud. Partiremo dall’utilizzo di **container**, che hanno rivoluzionato il mondo dello sviluppo offrendo modularità e flessibilità di utilizzo e sperimentazione, e dai servizi **registry** che vengono messi a disposizione da Google. Impareremo a pubblicare i nostri servizi mediante **CloudRun**, partendo da immagini nostre o fornite da terze parti, e percorreremo tutte le fasi che portano dalla creazione di un’applicazione alla sua sperimentazione in locale, fino ad arrivare alla pubblicazione del servizio vero e proprio. Approcceremo poi **Google Kubernetes Engine** (**GKE**), la soluzione Kubernetes su Google Cloud, ideale per servizi scalabili e potenti in grado di soddisfare le richieste di qualsiasi platea di utenti. Scopriremo **Firestore**, il database NoSQL che fa da backend a un numero sempre crescente di applicazioni nel mondo. Ed infine ci adopereremo in un progetto riepilogativo che vedrà al lavoro congiuntamente tutti questi strumenti. **Requisiti:** - [Conoscenza Docker](https://devacademy.it/corsi/docker/) - [Conoscenza Google Cloud Platform](https://devacademy.it/corsi/google-cloud-infrastrutture-e-reti/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** Google Cloud, Kubernetes **Tecnologie Corsi:** CloudRun, Firestore, Google Cloud, Google Cloud Platform, Google Kubernetes Engine, Kubernetes **Aree di Competenza Corsi:** Cloud, Coding, Data, DevOps **Categorie Corso:** Cloud, Container, Database, Kubernetes, NoSQL --- ### [Google Cloud: infrastrutture e reti](https://devacademy.it/corsi/google-cloud-infrastrutture-e-reti/) **Published:** Maggio 20, 2022 **Author:** Rino Picardi **Content:** ## Presentazione del corso Google Cloud Platform è una delle soluzioni cloud più usate al mondo. Conoscerlo è fondamentale, ma è necessario che il nostro apprendimento segua il percorso giusto. In questo corso ti guideremo alla scoperta delle **infrastrutture Cloud di Google**. Scopriremo come questa piattaforma metta i nuovi utenti a loro perfetto agio, offrendo periodi di prova e strumenti ricchi e intuitivi come la **Cloud Console** e la **Cloud Shell**. Parleremo del servizio **Cloud Engine** e delle sue **macchine virtuali**, potenti ma estremamente flessibili. Scopriremo come **configurare i dischi** e **mettere al sicuro i nostri dati** con snapshot ed immagini. Faremo la conoscenza di **Cloud Storage**, un servizio di archiviazione di oggetti senza limiti, caratterizzato da politiche di prezzo estremamente convenienti. Impareremo a costruire reti, configurare firewall ed istruire connessioni articolate e avanzate. L’intero corso sarà accompagnato da esercitazioni pratiche e costanti esemplificazioni per concludere il tutto con la realizzazione di un progetto che metterà alla prova le abilità acquisite. **Requisiti:** nessun requisito **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** Google Cloud **Tecnologie Corsi:** Google Cloud, Google Cloud Platform **Aree di Competenza Corsi:** Cloud, Coding, Data **Categorie Corso:** Cloud --- ### [C# LINQ](https://devacademy.it/corsi/c-sharp-linq/) **Published:** Maggio 4, 2022 **Author:** Rino Picardi **Content:** ## Presentazione del corso Nel corso **C# LINQ** impareremo a interrogare, in maniera uniforme, varie sorgenti di dati (database relazionali, file XML, collections .NET) direttamente in C#. LINQ (*Language-Integrated Query*) è infatti il nome di un set di tecnologie che integrano varie funzionalità di query (interrogazione) e che contraddistingue fortemente C# e il Framework .NET da altri framework e/o linguaggi di programmazione. In questo corso esploreremo gran parte delle **istruzioni LINQ** attraverso molteplici esempi. Parleremo di **metodi di restrizione** per filtrare i dati e di **funzioni di proiezione** per trasformare i dati appena filtrati. Parleremo di **ordinamento e partizionamento dei dati**. Vedremo le **istruzioni di aggregazione** che ci consentiranno di raggruppare o unire sorgenti dati diverse. Vedremo inoltre come integrare queste istruzioni con **istruzioni custom** che si comporteranno come se fossero altre istruzioni LINQ. **Requisiti:** - [Introduzione a C#](https://devacademy.it/corsi/introduzione-a-c-sharp/) - [C# Funzioni](https://devacademy.it/corsi/c-sharp-funzioni/) - [C# OOP](https://devacademy.it/corsi/c-sharp-oop/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** C#, LINQ **Tecnologie Corsi:** .NET Core, C#, LINQ **Aree di Competenza Corsi:** Coding **Categorie Corso:** Framework, Linguaggi --- ### [Sviluppo di applicazioni su Blockchain](https://devacademy.it/corsi/sviluppo-di-applicazioni-su-blockchain/) **Published:** Aprile 5, 2022 **Author:** Rino Picardi **Content:** ## Presentazione del corso Nel corso di “Sviluppo di applicazioni su Blockchain” impareremo a conoscere il mondo della tecnologia più innovativa e rivoluzionaria del momento: la **blockchain**. Inizieremo apprendendo le basi, e apprezzando scopi e pratiche che hanno reso realtà questa sorprendente tecnologia. Studieremo il **linguaggio Solidity** grazie all’ambiente Remix (gratuito, online ed efficiente); creeremo i nostri primi **Smart Contract**, la vera ossatura delle applicazioni su Blockchain. Integreremo poi il tutto in applicazioni web, dove pagine basate su HTML, CSS e JavaScript impareranno ad accedere in maniera automatica a Smart Contract e Blockchain. Studieremo le **criptovalute**, la forma di pagamento più rivoluzionaria di sempre, e ne comprenderemo la grande importanza che possono rivestire nelle nostre applicazioni. Per nessuno degli esercizi sarà richiesto di possedere realmente delle criptovalute, in quanto costruiremo un ambiente locale di test, con strumenti quali **Ganache**, **Truffle** e **Metamask**, totalmente compatibile con la reale **Blockchain Ethereum**. **Requisiti:** nessuno **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** Blockchain **Tecnologie Corsi:** Blockchain, Smart Contract, Solidity **Aree di Competenza Corsi:** Data **Categorie Corso:** Blockchain, Linguaggi --- ### [C# OOP](https://devacademy.it/corsi/c-sharp-oop/) **Published:** Aprile 12, 2022 **Author:** Rino Picardi **Content:** ## Presentazione del corso La Programmazione Orientata agli Oggetti (OOP) è un paradigma di programmazione, un modo di scrivere software. In questo corso vedremo come C# e il Framework .NET implementino i 3 pilastri fondamentali della OOP: Incapsulamento, Ereditarietà e Polimorfismo. Queste informazioni sono un’anteprima sulla struttura di progetti software più complessi che vedremo in futuro. Tutti i modelli di progetto del Framework .NET sono infatti strutturati seguendo la OOP. Impareremo a conoscere le classi, le loro proprietà e i loro metodi. Impareremo come sfruttare l’ereditarietà e il polimorfismo delle classi a nostro vantaggio. Vedremo inoltre come utilizzare i namespace per organizzare il nostro codice. Parleremo poi di interfacce, un concetto molto utilizzato all’interno del Framework .NET Vedremo infine come utilizzare Nuget, il gestore per le librerie esterne al Framework .NET, per utilizzare nel nostro progetto, librerie software scritte da altri. Il corso alternerà teoria ad esercizi pratici per fissare le nozioni acquisite. **Requisiti:** - [Introduzione a C#](https://devacademy.it/corsi/introduzione-a-c-sharp/) - [C# Funzioni](https://devacademy.it/corsi/c-sharp-funzioni/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** C# **Tecnologie Corsi:** .NET Core, C# **Aree di Competenza Corsi:** Coding **Categorie Corso:** Back-end, Linguaggi --- ### [C# Funzioni](https://devacademy.it/corsi/c-sharp-funzioni/) **Published:** Marzo 30, 2022 **Author:** Rino Picardi **Content:** ## Presentazione del corso Le funzioni ci permettono di raggruppare all’interno di un programma una sequenza di istruzioni in un unico blocco, espletando così una specifica ed in generale più complessa operazione. I vantaggi di una funzione stanno nel fatto che può essere richiamata ogni volta in cui si ha la necessità di farlo come se fosse una singola istruzione, senza la necessità di doverne riscrivere ogni volta il relativo codice. In questo corso vedremo come C# gestisce le funzioni. Impareremo a **definire una funzione** ed i suoi **valori di ritorno**, e a definire e utilizzare i **parametri** passati in input alle funzioni col fine di rendere le nostre funzioni generiche e configurabili. Parleremo di **funzioni avanzate**, come ad esempio le **funzioni ricorsive** e le **funzioni lambda**. Vedremo nel dettaglio le **funzioni del Framework .NET** che ci permettono di: - operare sul filesystem e cioè su files e cartelle. - gestire le date ed il passare del tempo. - utilizzare le Espressioni Regolari o Regular Expressions Parleremo infine di **eccezioni** e della **gestione degli errori** in C#. Il corso alternerà **teoria** ad **esercizi pratici** per fissare le nozioni acquisite. **Requisiti:** [Introduzione a C#](https://devacademy.it/corsi/introduzione-a-c-sharp/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** C# **Tecnologie Corsi:** .NET Core, C# **Aree di Competenza Corsi:** Coding **Categorie Corso:** Back-end, Linguaggi --- ### [Introduzione a C#](https://devacademy.it/corsi/introduzione-a-c-sharp/) **Published:** Marzo 8, 2022 **Author:** Rino Picardi **Content:** ## Presentazione del corso C# è il linguaggio di programmazione che ci permette di scrivere programmi utilizzando il framework .NET, la piattaforma di sviluppo creata da Microsoft nel 2002, ma che dal 2016 è diventata open source e cross-platform. In questo corso “Introduzione a C#”, dopo una panoramica sulle potenzialità e sugli ambiti di applicazione, impareremo i concetti fondamentali e la sintassi del linguaggio, che ci serviranno per creare applicazioni cross-platform di qualsiasi tipo: applicazioni web, applicazioni desktop, IoT, Video Games, console e molte altre. Parleremo di tipi di dato, variabili e operatori, e impareremo a gestire dati numerici e di tipo stringa. Analizzeremo e studieremo tipi diversi di matrici, come liste ed array, per poi passare ai costrutti condizionali e ai cicli. Alla fine di questo corso saremo in grado di creare un’applicazione console, che gira su terminale, di pubblicarla e di distribuirla. **Requisiti:** nessuno **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** .NET, .NET Core, C# **Tecnologie Corsi:** .NET Core, C# **Aree di Competenza Corsi:** Coding **Categorie Corso:** Back-end, Linguaggi --- ### [Introduzione a Flutter](https://devacademy.it/corsi/introduzione-a-flutter/) **Published:** Febbraio 4, 2022 **Author:** Rino Picardi **Content:** ## Presentazione del corso In questo Corso imparerai a creare applicazioni cross-platform con **Flutter**, il framework Dart open-source creato da Google che ti permetterà di creare applicazioni Web, iOS e Android. Partiremo dall’installazione di Flutter SDK, vedremo come creare progetti e come eseguirli; scopriremo il mondo dei widget andando a vedere i principali e creeremo il nostro primo layout composto da righe, colonne, AppBar, MaterialApp e così via. Passeremo quindi ai widget Stateful andando a vedere la gestione dello stato di un widget fino alla gestione avanzata dei layout con Container, ListView, GridView e Stack. Creeremo insieme un clone di Instagram completo di tutte le pagine dell’applicazione; vedremo quindi come ricreare le stories e l’elenco dei post, come gestire i pulsanti e contenuti testuali e come riprodurre la pagina del profilo, incluso l’uso della TabBar. Infine nell’ultimo modulo impareremo a gestire le Gesture, le Future e il modulo HTTP all’interno delle nostre applicazioni. **Requisiti:** - [Conoscenza linguaggio Dart](https://devacademy.it/corsi/introduzione-a-dart/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** Dart, Flutter **Tecnologie Corsi:** Dart, Flutter **Aree di Competenza Corsi:** Coding **Categorie Corso:** Framework, Mobile --- ### [Creare Web App con Svelte](https://devacademy.it/corsi/creare-web-app-con-svelte/) **Published:** Marzo 3, 2022 **Author:** Rino Picardi **Content:** ## Presentazione del corso Durante il corso “Creare Web App con Svelte” imparerai a creare Web App grazie a **Svelte**, il framework che si comporta come un compilatore web e che si distingue dagli altri framework Javascript più conosciuti perché non utilizza più il Virtual DOM ma va a compilare il codice a tempo di build (diventando più veloce rispetto ai suoi competitor). Partiremo dalla sintassi di base, vedremo come creare le variabili (anche quelle reattive), come gestire lo stile, gli attributi dinamici sui tag HTML e le direttive. Introdurremo i componenti; vedremo la gestione dell’input e dell’output, quindi i props e gli eventi. Metteremo in pratica il tutto con un esempio: creeremo insieme un’app ToDoList, vedendo inoltre come gestire i form e il binding su tutti i campi di questi ultimi. Affronteremo poi alcuni concetti più avanzati: l’utilizzo dei Context, il Binding più avanzato sul This e sui componenti, e la gestione del ciclo di vita dei componenti. Con gli Store impareremo a gestire lo stato della nostra applicazione senza l’utilizzo di librerie esterne con delle funzionalità built-in di Svelte. In conclusione creeremo un’applicazione che rappresenterà un insieme di tools di finanza, ad esempio il saldo dell’utente sul conto corrente, il calcolo del mutuo, il calcolo degli interessi composti, il tutto attraverso un piccolo layout a widget e un layout custom che mostra la carta di credito. **Requisiti:** [Javascript](https://devacademy.it/percorsi/javascript-developer/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** Svelte **Tecnologie Corsi:** Javascript, Svelte **Aree di Competenza Corsi:** Coding **Categorie Corso:** Framework, Front-end --- ### [Introduzione a Dart](https://devacademy.it/corsi/introduzione-a-dart/) **Published:** Febbraio 4, 2022 **Author:** Rino Picardi **Content:** ## Presentazione del corso Con il **Corso “Introduzione a Dart”** imparerai a programmare in Dart, un linguaggio di programmazione nato da Google e alla base di **Flutter**, il framework con cui potrai creare applicazioni cross-platform per il web, iOS e Android. Partiremo dalle basi del linguaggio, cioè dalla sua sintassi andando a conoscere elementi come variabili, modificatori, condizioni e i cicli, inizieremo quindi a scrivere funzioni, andando a capire come gestire i parametri e lo scope delle variabili. Passeremo alla programmazione ad oggetti: Dart è infatti un linguaggio multi-paradigma. Andremo a vedere come creare le classi, che cosa sono gli oggetti, i metodi getter e setter e soprattutto extends (come far sì che una classe erediti da un’altra classe). Approfondiremo il discorso con interfacce, classi astratte e mixins, che sono i tre metodi che ci permettono di aggiungere funzionalità a delle classi e andremo a vedere che cosa sono variabili e metodi statici. Parleremo ancora di strutture dati, andando a vedere come gestire i dati in Dart grazie a liste, insiemi e mappe che potremo tipizzare dato che Dart è un linguaggio tipizzato, fino ad approfondire l’uso dei Generics. Parleremo di codice asincrono, vedremo quindi come collegarci a un API tramite le Future e vedremo insieme la sintassi Async/Await. Infine nell’ultimo modulo andremo a creare una Web App con Dart sfruttando il modulo Web Dev. **Requisiti:** nessuno **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** Dart **Tecnologie Corsi:** Dart **Aree di Competenza Corsi:** Coding **Categorie Corso:** Linguaggi, Mobile --- ### [Machine Learning avanzato](https://devacademy.it/corsi/machine-learning-avanzato/) **Published:** Luglio 29, 2021 **Author:** Rino Picardi **Content:** ## Presentazione del corso Nel Corso Machine Learning avanzato imparerai a conoscere altre tipologie di regressione oltre a quella lineare, vedremo infatti come usare in questo ambito gli alberi decisionali. Con i metodi Ensemble dimostreremo che l’applicazione in più modelli contemporaneamente può portare al miglioramento delle previsioni e lo metteremo in pratica grazie a RandomForest. Sarà poi il momento di parlare di Preprocessing dei dati e di quali tecniche si possono usare per preparare al meglio distribuzioni numeriche, testi e molto altro. Vedremo una delle famiglie di algoritmi più all’avanguardia, XGBoost, molto giovane ma già pronto alle nuove sfide imposte dal cloud e dai Big Data. Infine impareremo a processare ed elaborare il testo, il primo passo verso l’importantissimo scenario della Sentiment analysis, concludendo il corso con una ricca sperimentazione finale. **Requisiti:** - [Conoscenza base di Python](https://devacademy.it/percorsi/python-developer/) - [Data Science](https://devacademy.it/corsi/data-science-con-python/) - [Machine Learning](https://devacademy.it/corsi/machine-learning-in-python/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** Data Science, Machine Learning **Tecnologie Corsi:** Anaconda, Data Science, Machine Learning, Python, XGBoost **Aree di Competenza Corsi:** AI/Machine Learning, Data **Categorie Corso:** Data Science, Machine Learning --- ### [Creare applicazioni web con Express e Node](https://devacademy.it/corsi/creare-applicazioni-web-con-express-e-node/) **Published:** Luglio 16, 2021 **Author:** Rino Picardi **Content:** ## Presentazione del corso Nel Corso “Come Creare applicazioni web con Express e Node” imparerai a creare applicazioni web con Express.js, il framework open-source Node.js flessibile, potente e leggero. Partiremo da una panoramica sul protocollo HTTP, vedremo cosa sono le API di tipo Rest e quali sono gli status code di risposta, creeremo un progetto configurando express, il nostro web server e vedremo come gestire le rotte, come restituire un JSON, come gestire gli errori e come poter creare un server statico. Passeremo ai Middleware, vedremo cosa sono, a cosa servono e perché si utilizzano. Integreremo un database noSQL, MongoDB, utilizzando una libreria per la modellazione dei nostri schemi: Mongoose. Creeremo insieme un progetto completo, un blog, partendo dal backend andando a realizzare i modelli per il database, configurando il web server e tutto ciò che ci occorrerà per procedere. Passeremo quindi al front-end utilizzando un template engine per passare i dati dal server al client, PUG, uno dei template engine più utilizzati. Affronteremo il discorso dell’autenticazione sia custom, che dando uno sguardo a Passport, una delle librerie più utilizzate in ambito Express per implementare l’autenticazione e vedremo infine come effettuare il deploy di tutta l’applicazione su Heroku. **Requisiti:** - [Conoscenza di Javascript](https://devacademy.it/percorsi/javascript-developer/) - [Conoscenza di Node.js](https://devacademy.it/percorsi/node-js-developer/) - [Conoscenza di MongoDB](https://devacademy.it/corsi/introduzione-a-mongodb/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** Express.js, Node.js **Tecnologie Corsi:** Express, Javascript, Node.js **Aree di Competenza Corsi:** Coding **Categorie Corso:** Back-end, Framework --- ### [Javascript: approccio funzionale](https://devacademy.it/corsi/javascript-approccio-funzionale/) **Published:** Giugno 17, 2021 **Author:** Rino Picardi **Content:** ## Presentazione del corso Nel Corso Javascript funzionale scopriremo come programmare utilizzando un approccio funzionale sfruttando il linguaggio Javascript che, seppur non sia un linguaggio completamente funzionale, permette questa tipologia di programmazione soprattutto quando usato insieme ad alcune librerie. Durante il corso utilizzeremo quindi Javascript (dalla versione ES6 in poi) e andremo a vedere i concetti alla base di questo stile di programmazione. Utilizzeremo Ramda, una libreria di utilities funzionali per Javascript e accenneremo a Typescript, scoprendo insieme in che modo la tipizzazione in Javascript può aiutarci a scrivere un codice funzionale più ottimizzato. **Requisiti:** - [Conoscenza di Javascript](https://devacademy.it/percorsi/javascript-developer/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** javascript **Tecnologie Corsi:** Javascript **Aree di Competenza Corsi:** Coding **Categorie Corso:** Linguaggi --- ### [Creare web app con Vue e Laravel](https://devacademy.it/corsi/creare-web-app-con-vue-e-laravel/) **Published:** Aprile 27, 2021 **Author:** Rino Picardi **Content:** ## Presentazione del corso Nel corso “Come creare applicazioni web con Vue e Laravel” mostreremo due approcci fondamentali per utilizzare insieme questi due framework durante lo sviluppo delle applicazioni web. Nella prima parte del corso creeremo insieme un piccolo blog utilizzando Vue all’interno del progetto Laravel, mentre nella seconda parte andremo a creare uno shopping cart, simulando un piccolo e-commerce, creando due applicazioni completamente separate, che comunicheranno tra loro tramite delle API. Il tutto sfruttando Vue 3 e facendo un piccolo accenno alla Composition API, la nuova grande introduzione rispetto alla versione 2 di Vue. **Requisiti:** - [Conoscenza di HTML e CSS](https://devacademy.it/corsi/introduzione-a-html-e-css/) - [Conoscenza Bulma](https://devacademy.it/corsi/come-creare-un-sito-web) - [Conoscenza di Javascript](https://devacademy.it/percorsi/javascript-developer/) - [Conoscenza di Vue.js](https://devacademy.it/percorsi/front-end-developer-con-vue-js/) - [Conoscenza di PHP](https://devacademy.it/percorsi/php-developer/) - [Conoscenza di Laravel](https://devacademy.it/corsi/creare-applicazioni-web-con-laravel/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** Laravel, Vue.js **Tecnologie Corsi:** Javascript, Laravel, PHP, Vue.js **Aree di Competenza Corsi:** Coding **Categorie Corso:** Back-end, Framework, Front-end --- ### [Creare app mobile con NativeScript Angular](https://devacademy.it/corsi/creare-app-mobile-con-nativescript-angular/) **Published:** Marzo 12, 2021 **Author:** Rino Picardi **Content:** ## Presentazione del corso Scopri come creare applicazioni mobile cross-platform con NativeScript Angular, la fusione tra i framework front-end web Angular e il framework mobile NativeScript. Vedremo innanzitutto cos’è NativeScript e come funziona, affronteremo tutta la gestione dei layout facendo una carrellata dei componenti di base, capiremo come gestire la navigazione tra diverse pagine dell’applicazione, come creare piccole animazioni e come gestire le gesture. Nell’ultimo modulo presenteremo alcuni Tips & Tricks che ti aiuteranno a gestire vari elementi tra cui la Splash Screen, i form e così via. Durante il corso creeremo insieme un’applicazione completa da zero, una news feed app che va a simulare un giornale online, con una lista di notizie prelevate da una API esterna e una barra di ricerca. **Requisiti:** - [Conoscenza del linguaggio Javascript](https://devacademy.it/percorsi/javascript-developer/) - [TypeScript](https://devacademy.it/corsi/programmare-con-typescript/) - [Conoscenza Angular](https://devacademy.it/percorsi/angular-developer/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** Angular **Tecnologie Corsi:** Angular, Javascript, NativeScript, TypeScript **Aree di Competenza Corsi:** Coding **Categorie Corso:** Framework, Mobile --- ### [Introduzione a Next e Gatsby](https://devacademy.it/corsi/introduzione-a-next-e-gatsby/) **Published:** Marzo 2, 2021 **Author:** Rino Picardi **Content:** ## Presentazione del corso Impara a creare Web App con il corso introduttivo a Next e Gatsby, due framework basati su React che risolvono le stesse problematiche, ma con approcci in parte differenti. Next sfrutta il Server Side Rendering, che ci permette di migliorare le performance e la velocità di caricamento del nostro sito. Gatsby sfrutta la generazione statica (non abbiamo quindi bisogno di un server perché in fase di building tutte le nostre pagine saranno generate automaticamente) e GraphQL come linguaggio di querying per i nostri dati che possono provenire da fonti diverse. Durante il corso andremo a realizzare un blog con entrambi i framework in modo da analizzare i due approcci simili, ma diversi, di Next e Gatsby. **Requisiti:** - [Conoscenza del linguaggio Javascript](https://devacademy.it/percorsi/javascript-developer/) - [Conoscenza React](https://devacademy.it/percorsi/react-developer/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** React **Tecnologie Corsi:** Gatsby, Javascript, Next, React **Aree di Competenza Corsi:** Coding **Categorie Corso:** Framework, Front-end --- ### [Machine Learning in Python](https://devacademy.it/corsi/machine-learning-in-python/) **Published:** Gennaio 19, 2021 **Author:** Rino Picardi **Content:** ## Presentazione del corso Il Machine Learning è una delle branche più apprezzate oggi dell’Intelligenza Artificiale con la sua capacità di produrre previsioni basandosi su quanto un sistema informatico può imparare dai dati storici. In questo corso imparerai tutti i concetti di base del Machine Learning: cos’è un modello, cosa si intende per regressione e classificazione, cosa sono le feature e i target. Imparerai ad usare scikit-learn, una delle più importanti librerie per il Machine Learning in Python al mondo. Scoprirai cos’è la regressione lineare, come può essere imparata e applicata a dati per ottenere previsioni. Affronterai problemi di classificazione con alberi decisionali e con la regressione logistica sviluppando metodi per associare insiemi di dati a determinate categorie. Un corso ricco di esempi pratici ed esercitazioni continue che ti permetterò di diventare un esperto di Machine Learning. **Requisiti:** - [Conoscenza di Python](https://devacademy.it/percorsi/python-developer/) - [Data Science](https://devacademy.it/corsi/data-science-con-python/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** Data Science, Machine Learning **Tecnologie Corsi:** Data Science, Machine Learning, Python, Scikit-learn **Aree di Competenza Corsi:** AI/Machine Learning, Data **Categorie Corso:** Data Science, Machine Learning --- ### [Angular in produzione](https://devacademy.it/corsi/angular-in-produzione/) **Published:** Dicembre 22, 2020 **Author:** Rino Picardi **Content:** ## Presentazione del corso In questo Corso Angular dedicato alla gestione delle applicazioni in produzione vedremo tutte le fasi di creazione di un’applicazione: lo sviluppo, il testing, l’analisi delle performance e il deploy. Ci soffermeremo prima di tutto sull’Angular coding Styleguide, andando a vedere tutte le best practices per la creazione di codice Angular, passeremo quindi al testing della nostra applicazione andando a testare componenti e servizi. Analizzeremo le performance della nostra applicazione e vedremo due delle principali tecniche per migliorarne le performance: con Angular Universal e quindi con il Server Side Rendering, oppure trasformando la nostra applicazione in una PWA. Vedremo infine nell’ultimo modulo come effettuare il deploy delle nostre app in due modalità: con nginx e con Vercel, vedendo quindi come andare a mettere in produzione un’applicazione. **Requisiti:** - [Conoscenza del linguaggio Javascript](https://devacademy.it/percorsi/javascript-developer/) - [TypeScript](https://devacademy.it/corsi/programmare-con-typescript/) - [Conoscenza Angular](https://devacademy.it/percorsi/angular-developer/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** Angular, javascript, Typescript **Tecnologie Corsi:** Angular, Javascript, TypeScript **Aree di Competenza Corsi:** Coding **Categorie Corso:** Framework, Front-end --- ### [Introduzione a MongoDB](https://devacademy.it/corsi/introduzione-a-mongodb/) **Published:** Ottobre 2, 2020 **Author:** Rino Picardi **Content:** ## Presentazione del corso In questo corso imparerai ad usare MongoDB, il database più diffuso al mondo per la creazione di applicazioni web moderne. MongoDB è un database NoSQL distribuito e document based, nelle lezioni di questo corso vedremo cosa significa tutto questo. Partiremo dai concetti e dalla sintassi di base, vedremo insieme gli operatori per le classiche operazioni CRUD, imparando quindi a leggere, scrivere, aggiornare ed eliminare le proprie risorse. Parleremo poi delle aggregazioni, altro concetto di fondamentale importanza. Entreremo quindi nel vivo di MongoDB andando a vedere come sia possibile creare una API di tipo REST in modo davvero semplice e veloce anche grazie a Mongoose che useremo per modellare i nostri schemi e vedremo infine alcuni casi d’uso particolari e i design patterns che sfrutteremo per risolvere determinati problemi. **Requisiti:** nessuno **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** database, MongoDB **Tecnologie Corsi:** MongoDB **Aree di Competenza Corsi:** Data **Categorie Corso:** Database, NoSQL --- ### [Introduzione a React Native](https://devacademy.it/corsi/introduzione-a-react-native/) **Published:** Luglio 20, 2020 **Author:** Rino Picardi **Content:** ## Presentazione del corso In questo corso imparerai ad usare React Native, il framework open source utilizzato per la realizzazione di app mobile come Facebook, Facebook Ads, Instagram, Skype, Discord e molte altre. Grazie a React Native potrai creare quindi applicazioni mobile cross-platform, sia per iOS che per Android, utilizzando React e il linguaggio di programmazione Javascript. Durante il corso vedremo insieme tutti i componenti di base offerti da React Native, vedremo come creare le pagine per le nostre applicazioni e come gestire il routing per muoverci da una schermata all’altra. Creeremo insieme 2 applicazioni di esempio: una Pokemon app e una Budget app, che realizzeremo partendo da zero fino alla generazione dei file APK per l’installazione delle applicazioni sui nostri smartphone. **Requisiti:** - [Conoscenza del linguaggio Javascript](https://devacademy.it/percorsi/javascript-developer/) - [Conoscenza React](https://devacademy.it/percorsi/react-developer/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** javascript, React **Tecnologie Corsi:** Javascript, React, React Native **Aree di Competenza Corsi:** Coding **Categorie Corso:** Framework, Mobile --- ### [Data Science con Python](https://devacademy.it/corsi/data-science-con-python/) **Published:** Ottobre 30, 2020 **Author:** Rino Picardi **Content:** ## Presentazione del corso Grandi quantità di informazioni viaggiano ogni secondo nella rete accumulandosi in archivi elettronici e portando con sè il necessario per comprendere ogni aspetto del nostro mondo, per capire il passato, ma ancora più importante per predire il futuro. Occorre però mettere ordine in tutto questo ed è proprio questa la missione della Data Science, figlia dell’incrocio di scienze tradizionali e tecnologie moderne. In questo corso di Data Science con Python parleremo proprio di questo. Sfruttando il linguaggio Python passeremo per tutto ciò che serve all’elaborazione di informazioni. Scoprirai NumPy, la più grande libreria per il trattamento dei dati numerici, eccezionale nell’elaborazione e fondamento di tantissime altre librerie. Passeremo a Pandas, la libreria principe della Data Science, fondata su NumPy e che ruota attorno ai DataFrame, una struttura dati super performante che permette di trattare qualsiasi tipologia di informazione. Imparerai a sfruttare la potenza indagatrice e comunicativa delle immagini imparando a creare grafici con Matplotlib e Seaborn, due ambienti ricchissimi che offrono moltissime tipologie di grafico adatte ad ogni settore utili a condurre le proprie ricerche con successe e a comunicarne i risultati agli addetti ai lavori e non. Il tutto corredato da molta pratica, svolgeremo diversi esercizi e realizzeremo insieme un progetto finale. **Requisiti:** - [Conoscenza del linguaggio Python](https://devacademy.it/percorsi/python-developer/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** Data Science, Python **Tecnologie Corsi:** Data Science, Matplotlib, NumPy, Pandas, Python, Seaborn **Aree di Competenza Corsi:** AI/Machine Learning, Data **Categorie Corso:** Data Science --- ### [Angular UI](https://devacademy.it/corsi/angular-ui/) **Published:** Ottobre 2, 2020 **Author:** Rino Picardi **Content:** ## Presentazione del corso In questo nuovo Corso imparerai a creare UI complesse in Angular sfruttando il toolkit UI principale in ambito Angular: PrimeNg, un framework che mette a disposizione diversi componenti di base da utilizzare nelle nostre applicazioni come menù di navigazione, tabelle, grafici e diversi componenti per la gestione dei dati. Dopo aver visto una panoramica completa sui componenti di base impareremo a personalizzare in modo avanzato una tabella e a creare form avanzati. Creeremo quindi un progetto reale: un piccolo gestionale completo di dashboard, di una tabella per le fatture e una tabella degli utenti, che creeremo sfruttando questo framework e che completeremo grazie all’utilizzo di i18n e all’implementazione di animazioni al cambio di rotta. **Requisiti:** - [Conoscenza del linguaggio Javascript](https://devacademy.it/percorsi/javascript-developer/) - [TypeScript](https://devacademy.it/corsi/programmare-con-typescript/) - [Conoscenza Angular](https://devacademy.it/percorsi/angular-developer/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** Angular, javascript, Typescript **Tecnologie Corsi:** Angular, Javascript, TypeScript **Aree di Competenza Corsi:** Coding **Categorie Corso:** Framework, Front-end --- ### [Gestione dello stato in Angular con NgRx](https://devacademy.it/corsi/gestione-dello-stato-in-angular-con-ngrx/) **Published:** Settembre 21, 2020 **Author:** Rino Picardi **Content:** ## Presentazione del corso In questo nuovo Corso Angular scoprirai come gestire lo stato delle tue applicazioni con NgRx. Partiremo da una breve introduzione al paradigma alla base di RxJS, la libreria su cui si fonda NgRx e passeremo ad affrontare tutti i concetti chiavi di NgRx. Creeremo quindi un’applicazione da zero, una Fast Food App, dove simuleremo il funzionamento di un carrello, potremo aggiungere prodotti e calcolare il totale della spesa. Aggiungeremo quindi alla nostra app dei side effects, introdurremo un API in locale e vedremo come effettuare chiamate HTTP all’interno del flusso NgRx. Infine vedremo come debuggare un’applicazione creata con NgRx grazie ai Dev Tools. **Requisiti:** - [Conoscenza del linguaggio Javascript](https://devacademy.it/percorsi/javascript-developer/) - [TypeScript](https://devacademy.it/corsi/programmare-con-typescript/) - [Introduzione ad Angular](https://devacademy.it/corsi/introduzione-ad-angular/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** Angular, javascript, Typescript **Tecnologie Corsi:** Angular, Javascript, NgRx, TypeScript **Aree di Competenza Corsi:** Coding **Categorie Corso:** Framework, Front-end --- ### [Programmazione a oggetti in Python](https://devacademy.it/corsi/programmazione-a-oggetti-in-python/) **Published:** Settembre 21, 2020 **Author:** Rino Picardi **Content:** ## Presentazione del corso La programmazione orientata agli oggetti permette di strutturare in maniera efficiente e articolata le informazioni gestite da un software. È una caratteristica fondamentale per un linguaggio di programmazione moderno e Python non poteva farne a meno. In questo corso scoprirai la programmazione orientata agli oggetti in Python. Scoprirai perché esiste e perché è così importante. Scoprirai cosa si intende per classi e oggetti, cos’hanno in comune e le differenze fondamentali che tra di loro sussistono. Saprai progettare classi scegliendo nel modo migliore gli attributi e le funzionalità che dovranno avere a loro disposizione. Popoleremo strutture dati a oggetti realizzando vere e proprie reti di informazioni da esplorare per estrarne il reale valore. Imparerai anche il significato dell’ereditarietà e la sua utilità nella realizzazione di gerarchie di classe. Avrai la possibilità di apprendere gli aspetti più particolari della programmazione orientata agli oggetti in Python con metodi privati, variabili di classe, metodi statici e decorator, nonché l’uso delle eccezioni per la gestione di errori in situazioni anomale in totale sicurezza. Verrà inoltre messo alla prova il sottosistema con cui Python gestisce date e informazioni temporali, così indispensabili per una corretta elaborazione delle informazioni. Infine elaboreremo un progetto conclusivo per mettere alla prova tutte le conoscenze che hai acquisito durante il corso. **Requisiti:** [Fondamenti di Python](https://devacademy.it/corsi/fondamenti-di-python/), [Strutture dati in Python](https://devacademy.it/corsi/strutture-dati-in-python/), [Funzioni e moduli in Python](https://devacademy.it/corsi/funzioni-e-moduli-in-python/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** Python **Tecnologie Corsi:** Python **Aree di Competenza Corsi:** Coding **Categorie Corso:** Linguaggi --- ### [Introduzione ad Angular](https://devacademy.it/corsi/introduzione-ad-angular/) **Published:** Luglio 16, 2020 **Author:** Rino Picardi **Content:** ## Presentazione del corso Nel Corso introduttivo ad Angular imparerai ad usare il framework più famoso ed utilizzato al mondo per lo sviluppo di Single Page Application. Nel corso affronteremo tutti i concetti chiave alla base di Angular come la creazione di componenti tramite la CLI, l’utilizzo delle direttive, la gestione di input e di output e la creazione e la gestione dei moduli. Passeremo alle dependency injection, argomento fondamentale per chi sviluppa in angular e vedremo come creare dei servizi. Studieremo due dei moduli principali di Angular, il modulo dedicato al routing, vedremo quindi come spostarci tra le pagine e come dichiarare le rotte e il modulo dedicato all’http, che utilizzeremo per effettuare delle chiamate http ad un’API. Il tutto costruendo insieme un’applicazione completa. **Requisiti:** [Conoscenza del linguaggio Javascript](https://devacademy.it/percorsi/javascript-developer/) – [TypeScript](https://devacademy.it/corsi/programmare-con-typescript/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** Angular, javascript, Typescript **Tecnologie Corsi:** Angular, Javascript, TypeScript **Aree di Competenza Corsi:** Coding **Categorie Corso:** Framework, Front-end --- ### [Programmare con TypeScript](https://devacademy.it/corsi/programmare-con-typescript/) **Published:** Luglio 29, 2020 **Author:** Rino Picardi **Content:** ## Presentazione del corso TypeScript è un superset tipizzato del linguaggio JavaScript. È basato sulla medesima sintassi e semantica del linguaggio di scripting più famoso al mondo e viene compilato proprio in JavaScript, producendo codice in grado di girare su ogni environment. Facendo perno sui tipi e su un’ottima type inference, ci assicura la buona riuscita del nostro codice verificandone la correttezza prima che esso sia eseguito. In questo Corso TypeScript avremo modo di vedere come installare e compilare TypeScript, esamineremo a fondo i tipi utilizzati dal linguaggio, parleremo estensivamente di funzioni, polimorfismo, classi e tratteremo anche alcune delle feature più avanzate del linguaggio come i mapped types, i conditional types, l’uso della keyword infer e molto altro. Se conosci il JavaScript, ma pensi che la tipizzazione dinamica non sia abbastanza, questo corso fa per te. **Requisiti:** [Conoscenza del linguaggio Javascript](https://devacademy.it/percorsi/javascript-developer/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** javascript, Typescript **Tecnologie Corsi:** TypeScript **Aree di Competenza Corsi:** Coding **Categorie Corso:** Linguaggi --- ### [Gestione dello stato in React con Redux](https://devacademy.it/corsi/gestione-dello-stato-in-react-con-redux/) **Published:** Giugno 30, 2020 **Author:** Rino Picardi **Content:** ## Presentazione del corso Nel Corso Gestione dello stato in React con Redux, parleremo di Redux, una libreria per la gestione dello stato in Javascript, che riprende molti concetti dalla programmazione funzionale e che ci permette di gestire lo stato in modo prevedibile. Nella prima parte del corso affronteremo i concetti teorici alla base di Redux per passare poi alla pratica andando a riconvertire la logica di un progetto To Do List utilizzando Redux. Integreremo quindi nuove funzionalità e introdurremo i middleware, grazie ai quali potremo effettuare chiamate asincrone all’interno del nostro codice. Nella seconda parte del corso andremo a creare un’applicazione da zero sfruttando le API di Star Wars, vedremo quindi come analizzare e debuggare utilizzando i Redux DevTools. Infine andremo ad accennare a due delle alternative più importanti a Redax: Mobx e Recoil. **Requisiti:** [Conoscenza del linguaggio Javascript](https://devacademy.it/percorsi/javascript-developer/) – [Corso introduttivo a React](https://devacademy.it/corsi/introduzione-a-react/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** javascript, React **Tecnologie Corsi:** Javascript, React, Redux **Aree di Competenza Corsi:** Coding **Categorie Corso:** Framework, Front-end --- ### [Node.js e database relazionali](https://devacademy.it/corsi/node-js-e-database-relazionali/) **Published:** Gennaio 23, 2020 **Author:** Rino Picardi **Content:** ## Presentazione del corso Node.js è una tecnologia dai più ampi impieghi e non può, per questo, fare a meno della memorizzazione di dati in maniera persistente. In questo corso scopriremo come integrare database relazionali in applicazioni Node.js. Nello specifico vedremo questa piattaforma al lavoro con MySQL, uno dei DBMS relazionali più importanti al mondo, ma tutti i concetti che affronteremo saranno applicabili a qualsiasi altra tecnologia di questo genere. Inizieremo con l’orientamento concettuale, illustrando il mondo dei database e individuando l’ambito di quelli relazionali. Prepareremo poi il nostro ambiente di lavoro, costituito dalla piattaforma Node.js e da un’installazione funzionante MySQL, ma anche dai driver necessari alla loro connessione e da programmi client utili per osservare l’effetto dei nostri comandi sui database. Scopriremo come gestire connessioni tra un programma Node.js e un database relazionale, come stabilire questo collegamento, come amministrarlo e come chiuderlo al termine delle operazioni. A questo punto saremo pronti per imparare ad inserire, leggere, modificare e cancellare dati in un database mediante i comandi del linguaggio SQL trattati con Node.js. In questo modo saremo sempre in grado di mantenere i nostri archivi aggiornati in base alle necessità degli utenti. Impareremo anche il meccanismo del JOIN nelle sue varie declinazioni con cui esprimeremo la massima potenza delle query incrociando dati di più tabelle. Infine riepilogheremo il tutto in un esempio conclusivo, con cui metteremo al lavoro tutte le funzionalità che abbiamo studiato per la realizzazione di un’applicazione con Node.js e database relazionali. **Requisiti:** [Introduzione a Node.js](https://devacademy.it/corsi/introduzione-a-node-js/) – [I moduli di Node.js](https://devacademy.it/corsi/i-moduli-di-node-js/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** javascript, Node.js **Tecnologie Corsi:** Javascript, MySQL, Node.js **Aree di Competenza Corsi:** Coding **Categorie Corso:** Back-end, Database, Framework --- ### [Introduzione a React](https://devacademy.it/corsi/introduzione-a-react/) **Published:** Aprile 9, 2020 **Author:** Rino Picardi **Content:** ## Presentazione del corso Nel Corso React parleremo di una delle librerie Javascript più utilizzate al mondo per la creazione di interfacce utente, React, creata da facebook nel 2011 e resa Open Source nel 2013. Durante la prima parte del corso parleremo dei concetti di base come la sintassi JSX, la creazione di componenti, la gestione dello stato, degli eventi e dei form. Passeremo quindi a concetti un po’ più avanzati come i Fragment, la gestione del Context, i Portali e gli Higher-Order Component, fino alle ultime novità di React, come gli Hooks, introdotti dalla versione 16.8, che hanno rivoluzionato completamente la scrittura del codice. Costruiremo insieme una nostra applicazione da zero e andremo poi a riscriverla utilizzando soltanto gli Hooks introducendo infine l’utilizzo di Typescript all’interno di applicazioni React. **Requisiti:** [Conoscenza del linguaggio Javascript](https://devacademy.it/percorsi/javascript-developer/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** javascript, React **Tecnologie Corsi:** Javascript, React **Aree di Competenza Corsi:** Coding **Categorie Corso:** Framework, Front-end --- ### [Git avanzato](https://devacademy.it/corsi/git-avanzato/) **Published:** Maggio 22, 2020 **Author:** Rino Picardi **Content:** ## Presentazione del corso Git è uno strumento molto utile che permette di collaborare allo sviluppo di progetti in maniera rapida ed efficace, esistono però alcune funzionalità che non sempre vengono utilizzate e che possono agevolare ulteriormente lo sviluppo. In questo corso vedremo alcune funzionalità avanzate di git, esamineremo il funzionamento di git lato server e i diversi protocolli che vengono utilizzati. Analizzeremo insieme i flussi di lavoro più popolari e capiremo come sfruttarli al meglio per massimizzare la produttività. Proveremo a creare un piccolo blog statico e andremo ad automatizzare il processo di generazione e pubblicazione dei contenuti utilizzando una pipeline. Infine faremo una panoramica su alcuni degli argomenti più avanzati come i sotto moduli e gli hooks. **Requisiti:** [Corso Git base](https://devacademy.it/corsi/git-base/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** git, tools **Tecnologie Corsi:** Git **Aree di Competenza Corsi:** Coding **Categorie Corso:** Tools --- ### [Programmazione asincrona in Javascript](https://devacademy.it/corsi/programmazione-asincrona-in-javascript/) **Published:** Aprile 20, 2020 **Author:** Rino Picardi **Content:** ## Presentazione del corso Il Javascript è un linguaggio di scripting nato per lavorare nel web che, sin dalle prime versioni, si avvalse di un modello asincrono per svolgere numerose operazioni come gestire gli eventi del DOM, eseguire delle richieste AJAX, interagire con i file, dialogare con i WebWorkers e molto altro. In questo **Corso Javascript** avanzato vi accompagneremo in una completa escursione del lato asincrono del javascript. Partendo dal primitivo modello basato sulle Callback, del quale analizzeremo i difetti, proseguiremo esaminando gli svariati pregi e le molteplici caratteristiche delle Promise per poi riprendere il cammino attraversando iteratori, generatori, la recente sintassi Async/Await, fino ad arrivare alla moderna iterazione asincrona. Dopodiché avremo tutti gli strumenti necessari per esaminare nel dettaglio la Fetch API la quale fornisce l’interfaccia, basata sulle Promise, per ottenere risorse remote. Se hai una conoscenza base del linguaggio e ti interessa padroneggiare al meglio i suoi aspetti notoriamente più complessi, questo corso fa per te. **Requisiti:** [Conoscenza base del linguaggio Javascript](https://devacademy.it/percorsi/javascript-developer/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** javascript **Tecnologie Corsi:** Javascript **Aree di Competenza Corsi:** Coding **Categorie Corso:** Front-end, Linguaggi --- ### [Docker](https://devacademy.it/corsi/docker/) **Published:** Marzo 30, 2020 **Author:** Rino Picardi **Content:** ## Presentazione del corso Docker è la tecnologia per realizzare applicazioni moderne e distribuite su container, ideale per ogni soluzione, dal piccolo software al cluster enterprise. In questo corso ti guiderò alla scoperta di Docker. Ti spiegherò i motivi della sua esistenza e della sua importanza e vedremo insieme come sfruttarlo al meglio. Scoprirai cosa sono i container e come abbiano rivoluzionato il mondo dello sviluppo software e ti introdurrò a Docker, il leader di questo settore. Vedremo insieme quali versioni lo caratterizzano, i suoi componenti principali e come installarlo gratuitamente in ogni sistema operativo. Imparerai a creare e gestire i tuoi container. Scoprirai le immagini: parleremo di quelle esistenti e imparerai a crearne di tue rendendo le tue applicazioni idonee ad animare un container grazie ai Dockerfile. Con i Volume scoprirai come Docker memorizza i dati, come ne permette la condivisione tra container e macchina host e quali sono i comandi per poterli utilizzare. Vedremo quindi come i container comunicano tra loro e come ciò sia la chiave per creare vere applicazioni distribuite. Imparerai ad usare Docker Compose per sviluppare collaborazione tra container, ma anche soluzioni per l’orchestrazione di grandi cluster con Docker Swarm e Kubernetes Realizzeremo insieme un’applicazione costituita da più container ognuno dei quali animato da una tecnologia differente. Vedremo quindi come monitorare il lavoro dei container, come trovare errori al loro interno e come difenderci da minacce esterne ed infine, rivolgeremo il nostro guardo al mondo del Cloud e a come Docker sia la soluzione ideale per affrontarlo con la sua versione Enterprise, ma anche strumenti e best practices per la condivisione del lavoro. **Requisiti:** nessuno **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** Docker **Tecnologie Corsi:** Docker **Aree di Competenza Corsi:** Coding, DevOps **Categorie Corso:** Container, DevOps, Tools --- ### [Come creare un sito web](https://devacademy.it/corsi/come-creare-un-sito-web/) **Published:** Febbraio 14, 2020 **Author:** Rino Picardi **Content:** ## Presentazione del corso Smartphone e tablet sono i dispositivi che vengono più utilizzanti per accedere ad internet, avere quindi un sito web responsive è un grande vantaggio per attirare nuovi visitatori e migliorare l’esperienza utente. In questo corso ti insegnerò a creare un sito web statico (in html e css) completamente funzionante utilizzando un template come base grafica. Ti indicherò quali strumenti utilizzare e come configurarli al meglio. Utilizzeremo il framework CSS Bulma per rendere il sito web responsive, vedremo come creare una versione personalizzata del framework per modificarne rapidamente i colori. Aggiungeremo jQuery ed alcuni plugin per rendere il sito un po’ più dinamico e attraverso la libreria Animate.css inseriremo delle animazioni. **Requisiti:** Conoscenza di [HTML, CSS](https://devacademy.it/corsi/introduzione-a-html-e-css/) e [Javascript](https://devacademy.it/percorsi/javascript-developer/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** Siti Web **Tecnologie Corsi:** Bulma, CSS, HTML, Javascript, jQuery **Aree di Competenza Corsi:** Coding **Categorie Corso:** Design/UX, Front-end --- ### [Test delle applicazioni Vue.js](https://devacademy.it/corsi/test-delle-applicazioni-vue-js/) **Published:** Dicembre 30, 2019 **Author:** Rino Picardi **Content:** ## Presentazione del corso Testare un’applicazione è un processo che diventa sempre più complicato e dispendioso man mano che un progetto cresce in termini di dimensioni e complessità ed è in questi casi che i test automatizzati ci vengono incontro. In questo corso vedremo insieme come testare un’applicazione Vue.js, ti spiegherò le differenze tra le varie tecniche e tipi di test, ti indicherò quali strumenti utilizzare e come configurarli al meglio. Partendo dall’applicazione di Time Tracking del corso Vue.js per Single Page Application, vedremo come scrivere degli Unit Test con Jest e Vue Test Utils per verificare il corretto funzionamento di componenti, router e vuex. Scriveremo degli snapshot test per controllare che i componenti vengano renderizzati correttamente ad ogni esecuzione dell’applicazione e infine, utilizzando Cypress, vedremo come automatizzare il browser per creare dei test di tipo end-to-end. **Requisiti:** [Javascript](https://devacademy.it/percorsi/javascript-developer/) – [Introduzione a Vue.js](https://devacademy.it/corsi/introduzione-a-vue-js/) – [Vue.js per SPA](https://devacademy.it/corsi/vue-js-per-spa/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** javascript, Vue.js **Tecnologie Corsi:** Javascript, Vue.js **Aree di Competenza Corsi:** Coding **Categorie Corso:** DevOps, Framework, Front-end --- ### [Big Data: analisi con DataFrame](https://devacademy.it/corsi/big-data-analisi-con-dataframe/) **Published:** Novembre 27, 2019 **Author:** Rino Picardi **Content:** ## Presentazione del corso In questo **Corso Big Data** parliamo di SparkSQL, il modulo con cui il progetto Spark permette di lavorare in contesti **Big Data** utilizzando dati strutturati. Questo è un approccio assolutamente fondamentale perché permette di lavorare su grandi quantità di dati sfruttando le metodologie che ricordano molto da vicino i database relazionali e il lavoro sul database relazionale è un qualcosa che accomuna moltissimi informatici, perciò è un modo particolarmente intuitivo e amichevole per avvicinarsi al mondo dei Big Data e poter lavorare in maniera assolutamente produttiva (come richiesto oggigiorno dal mondo del lavoro). Potremo svolgere analisi ed elaborazioni sui dati e lo faremo sia con le API, per i DataFrame, la struttura dati principale di **SparkSQL**, sia con linguaggio SQL, proprio il linguaggio SQL che spesso si utilizza con i database relazionali e che tantissimi informatici conoscono è diventato uno degli strumenti principali per lavorare sui Big Data, proprio grazie a quello che ha fatto il progetto Spark con SparkSQL. **Requisiti:** [Big Data](https://devacademy.it/corsi/big-data/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** Big Data **Tecnologie Corsi:** Big Data, Data Science, PySpark, Python **Aree di Competenza Corsi:** AI/Machine Learning, Data **Categorie Corso:** Big Data, Data Science --- ### [Introduzione a Nuxt.js](https://devacademy.it/corsi/introduzione-a-nuxt-js/) **Published:** Dicembre 30, 2019 **Author:** Rino Picardi **Content:** ## Presentazione del corso In questo corso creeremo un’applicazione completa e ricca di funzionalità con **Nuxt.js**, un framework basato su Vue.js che offre diverse funzionalità, tra cui la gestione automatica del routing, la gestione dello store attraverso il Vuex, la gestione di plugin e moduli per integrare nuove funzionalità, il supporto multilingua con Nuxt-i18n e l’integrazione di meccanismi di autenticazione tramite Nuxt-Auth. Durante il corso creeremo insieme un’applicazione che emulerà il funzionamento di Trello sfruttando anche un’altra interessante libreria, Vue draggable, grazie alla quale gestiremo il drag&drop delle schede dei task del team. **Requisiti:** [Javascript](https://devacademy.it/percorsi/javascript-developer/) – [Introduzione a Vue.js](https://devacademy.it/corsi/introduzione-a-vue-js/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** javascript, Vue.js **Tecnologie Corsi:** Javascript, Nuxt.js, Vue.js **Aree di Competenza Corsi:** Coding **Categorie Corso:** Framework, Front-end --- ### [Swift avanzato](https://devacademy.it/corsi/swift-avanzato/) **Published:** Gennaio 29, 2019 **Author:** Rino Picardi **Content:** ## Presentazione del corso Swift è un linguaggio molto potente che mette a disposizione dello sviluppatore degli strumenti per migliorare, strutturare e rendere più efficiente il nostro codice. Nel **Corso avanzato di Swift** imparerai alcuni dei concetti più avanzati del linguaggio Swift. In particolare vedrai i Protocols, ovvero dei contratti che permettono di migliorare la riusabilità e l’estendibilità del codice. Ti insegnerò ad aggiungere nuove funzionalità a Type esistenti con le Extensions. Tramite le Extension si possono aggiungere nuovi metodi, init e proprietà anche senza avere il codice sorgente del Type che si sta estendendo. Ti spiegherò la programmazione generica, le sue potenzialità e perché è importante conoscerla. Imparerai a costruire algoritmi generici per ridurre la duplicazione e migliorare la riusabilità del codice. Infine ti farò vedere che cos’è e come si gestisce un errore in Swift, insomma vedremo quindi tutto il necessario per scrivere codice avanzato in Swift. **Requisiti:** [Introduzione a Swift](http://devacademy.it/corsi/introduzione-a-swift/) – [Funzioni e Closure in Swift](https://devacademy.it/corsi/funzioni-e-closure-in-swift/) – [Swift ad oggetti](https://devacademy.it/corsi/swift-ad-oggetti/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** swift **Tecnologie Corsi:** Swift **Aree di Competenza Corsi:** Coding **Categorie Corso:** Linguaggi, Mobile --- ### [Vue.js per SPA](https://devacademy.it/corsi/vue-js-per-spa/) **Published:** Novembre 13, 2019 **Author:** Rino Picardi **Content:** ## Presentazione del corso **Vue.js** è un framework per la creazione di applicazioni web che sta diventando sempre più popolare. È più semplice da imparare rispetto a React e Angular, ma non ha nulla da invidiare per quanto riguarda funzionalità e performance. In questo **corso** vedremo come creare un’applicazione utilizzando Vue.js, vedremo come generare e gestire un progetto con Vue CLI. Vedremo quali strumenti di sviluppo usare e come configurarli al meglio. Scopriremo insieme vari metodi per definire i componenti e implementeremo la navigazione lato client sfruttando Vue-router. Imparerai ad usare Vuex per gestire globalmente lo stato dell’applicazione e scopriremo insieme i concetti di state, actions, mutations e getters. Utilizzando i18n aggiungeremo il supporto multilingua al progetto e infine vedremo come utilizzare Buefy per velocizzare lo sviluppo di applicazioni Vue.js. **Requisiti:** - [Javascript](https://devacademy.it/percorsi/javascript-developer/) - [Introduzione a Vue.js](https://devacademy.it/corsi/introduzione-a-vue-js/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** javascript, Vue.js **Tecnologie Corsi:** Javascript, Vue.js **Aree di Competenza Corsi:** Coding **Categorie Corso:** Framework, Front-end --- ### [Funzioni e moduli in Python](https://devacademy.it/corsi/funzioni-e-moduli-in-python/) **Published:** Settembre 3, 2019 **Author:** Rino Picardi **Content:** ## Presentazione del corso In questo **Corso Python** impareremo come organizzare il codice delle nostre applicazioni scritte in Python. Il punto di partenza sono le funzioni, così in Python, come in tanti altri linguaggi. Con le funzioni impareremo a creare delle unità di lavoro, delle unità di codice, che potranno essere richiamate in base al loro nome. Il loro comportamento sarà definito dal codice inserito all’interno della funzione stessa e grazie agli argomenti potremo personalizzarne ogni singola invocazione. Collegate alle funzioni ci sono tante altre opportunità in Python ad esempio le espressioni lambda, i generatori, ma soprattutto la possibilità di organizzare in più file le nostre raccolte di funzioni. Questi file prendono il nome di moduli. Quindi un’applicazione Python sarà sempre di struttura modulare e man mano che crescerà aggiungeremo dei moduli e così avremo un codice sempre più ricco e riusciremo a mantenerlo comunque organizzato. Python ha una piattaforma di lavoro ricchissima ed è per questo che offre già tanti moduli predisposti nonché tante funzioni. Scopriremo alcuni dei moduli più importanti, tra i più utili in assoluto. Vedremo come importarli, come ottenerli anche dalla rete e come inserirli all’interno dei nostri progetti. **Requisiti:** [Fondamenti di Python](https://devacademy.it/corsi/fondamenti-di-python/), [Strutture dati in Python](https://devacademy.it/corsi/strutture-dati-in-python/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** Python **Tecnologie Corsi:** Python **Aree di Competenza Corsi:** Coding **Categorie Corso:** Linguaggi --- ### [Big Data](https://devacademy.it/corsi/big-data/) **Published:** Giugno 28, 2019 **Author:** Rino Picardi **Content:** ## Presentazione del corso I Big Data rappresentano una delle più importanti opportunità lavorative del momento. Aziende di tutto il mondo sono a caccia di esperti in grado di gestire le moli di dati che vengono accumulate sempre più velocemente e sono sempre più variegate. In questo corso impareremo cosa sono i Big Data, cosa si intende con questa espressione e quali sono le tecnologie e i linguaggi che fanno parte di questo ambito. Inizieremo inoltre ad utilizzarli con Spark, uno dei framework principali in assoluto nell’ambito dei Big Data e lo faremo con Python, un linguaggio estremamente sintetico, veloce e flessibile, che può essere utilizzato per tantissimi scopi e anche nei Big Data è diventato assolutamente protagonista. **Requisiti:** [Fondamenti di Python](https://devacademy.it/corsi/fondamenti-di-python/) – [Strutture dati in Python](https://devacademy.it/corsi/strutture-dati-in-python/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** Big Data, Python **Tecnologie Corsi:** Big Data, Data Science, PySpark, Python **Aree di Competenza Corsi:** AI/Machine Learning, Data **Categorie Corso:** Big Data, Data Science --- ### [Introduzione a Vue.js](https://devacademy.it/corsi/introduzione-a-vue-js/) **Published:** Ottobre 10, 2019 **Author:** Rino Picardi **Content:** ## Presentazione del corso **Vue.js** è un framework javascript progressivo e open source che ci aiuta a creare user interface e Single Page Application (SPA) reattive, scalabili e performanti. In questo corso scopriremo il framework Vue.js. Avremo modo di toccare con mano tutti gli aspetti fondamentali di questa tecnologia. Partiremo dalle basi installando il framework in una semplice pagina web, per poi costruire su di essa una to do list app completa di tutte le funzionalità. Attraverseremo concetti come il rendering dichiarativo, l’istanza Vue, la sintassi template, la gestione degli eventi, le props, i componenti e molto altro. Vue.js è la scelta ideale per chi intende muovere i primi passi nello sviluppo front-end e grazie ad esso saremo immediatamente produttivi senza alcuno sforzo. Se hai le competenze base di Javascript sei pronto per esplorare il mondo dei framework, partiamo quindi alla scoperta di Vue.js. **Requisiti:** [Conoscenza del linguaggio Javascript](https://devacademy.it/percorsi/javascript-developer/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** javascript, Vue.js **Tecnologie Corsi:** Javascript, Vue.js **Aree di Competenza Corsi:** Coding **Categorie Corso:** Framework, Front-end --- ### [Strutture dati in Python](https://devacademy.it/corsi/strutture-dati-in-python/) **Published:** Gennaio 22, 2019 **Author:** Rino Picardi **Content:** ## Presentazione del corso In questo **Corso Python** parleremo di strutture dati. Tanto più le informazioni sono aggregate e collegate tra loro, tanto più riusciremo a trarre vantaggio dalla loro analisi. Per fare questo servono delle appropriate strutture dati e Python, anche in questo ambito, offre tutto ciò di cui il programmatore ha bisogno. Anche in questo ambito la sintassi sarà estremamente sintetica ed espressiva. Sarà sufficiente utilizzare delle coppie di parentesi, scelte appositamente, per indicare a Python quale tipo di struttura dati vogliamo utilizzare. Potremmo utilizzare Liste, Set, Tuple, Dizionari ed altre strutture dati offerte da un package apposito che prende il nome di Collections. Avremo a disposizione tutti i metodi per poterle gestire al meglio. Applicheremo tutto ciò nelle nostre lezioni utilizzando dei casi realistici: ad esempio calcoleremo la classifica di un campionato partendo dall’analisi dei risultati che sono stati conseguiti durante le partite, faremo inoltre molti altri esempi che prenderanno spunto da casi della vita reale. Infine, per poter collaudare le competenze acquisite sulle strutture dati in Python, creeremo un piccolo modello che potrebbe rappresentare la base di un social network e questo allo scopo di poter vedere come le informazioni possono essere aggregate e collegate per fare in modo di creare una vera rete di informazioni successivamente da analizzare e sfruttare a nostro piacimento nelle applicazioni. **Requisiti:** [Fondamenti di Python](https://devacademy.it/corsi/fondamenti-di-python/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** Python **Tecnologie Corsi:** Python **Aree di Competenza Corsi:** Coding **Categorie Corso:** Linguaggi --- ### [I moduli di Node.js](https://devacademy.it/corsi/i-moduli-di-node-js/) **Published:** Maggio 7, 2019 **Author:** Rino Picardi **Content:** ## Presentazione del corso In questo corso Node.js vedremo come Node.js con la sua struttura modulare sia in grado di offrire moduli che mettano a disposizione tante funzionalità per i nostri progetti. Questi moduli possono essere parte dell’installazione di base della piattaforma Node.js, oppure possono essere forniti da programmatori, aziende, organizzazioni e tutti coloro che a vario titolo fanno parte della grande community che segue il mondo Node.js. Con questi moduli saremo in grado di gestire file, connessioni in rete, creare i nostri server, inviare email e svolgere tante altre operazioni. In questo corso impareremo ad integrare questi moduli e le loro funzionalità all’interno delle nostre applicazioni. In questo modo avremo a disposizione dei programmi ricchi di funzionalità in grado di soddisfare tutte le necessità nostre e dei nostri clienti. **Requisiti:** [Introduzione a Node.js](https://devacademy.it/corsi/introduzione-a-node-js/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** javascript, Node.js **Tecnologie Corsi:** Javascript, Node.js **Aree di Competenza Corsi:** Coding **Categorie Corso:** Back-end, Framework --- ### [Swift ad oggetti](https://devacademy.it/corsi/swift-ad-oggetti/) **Published:** Luglio 24, 2018 **Author:** Rino Picardi **Content:** ## Presentazione del corso In Swift la programmazione ad oggetti ricopre un ruolo fondamentale. In questo **corso di Swift** ad oggetti vedremo cosa sono e come utilizzare al meglio Enum, Struct e Classi. Vedremo quali sono le potenzialità degli Enum, come modellare le informazioni con le Struct usando proprietà e metodi. Capiremo la differenza tra Struct e Class e in particolare impareremo i principi della programmazione ad oggetti come l’ereditarietà e l’incapsulamento. Vedremo cosa sono i metodi di istanza, i metodi mutating e i metodi di type. Vedremo nel dettaglio cosa sono i value type e i reference type e che impatto hanno sulla gestione della memoria. Infine vedremo in dettaglio le varie tipologie di proprietà che ci fornisce il linguaggio. Insomma, un corso definitivo sul più importante paradigma di programmazione. **Requisiti:** [Introduzione a Swift](http://devacademy.it/corsi/introduzione-a-swift/) – [Funzioni e Closure in Swift](https://devacademy.it/corsi/funzioni-e-closure-in-swift/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** swift **Tecnologie Corsi:** Swift **Aree di Competenza Corsi:** Coding **Categorie Corso:** Linguaggi, Mobile --- ### [Introduzione a Node.js](https://devacademy.it/corsi/introduzione-a-node-js/) **Published:** Novembre 30, 2018 **Author:** Rino Picardi **Content:** ## Presentazione del corso Segui il corso Node.js online. Node.js è l’ambiente di programmazione che ha portato JavaScript fuori dal browser. Con Node.js potremo utilizzare JavaScript come un qualsiasi linguaggio di programmazione: lo potremo usare per creare le nostre applicazioni desktop, i nostri server, i nostri servizi in grado di collegarsi a database, file e rete per poter elaborare informazioni. Node.js è un sistema dalle altissime prestazioni ottimizzato, efficiente, semplice da programmare, e questo perché si basa su una struttura ben organizzata, modulare e su un progetto potente come il motore V8 che Google ha creato per poter eseguire JavaScript nel suo browser Chrome. Siamo quindi pronti per iniziare a creare le nostre molteplici applicazioni in JavaScript dedicate ai server, ai desktop e a qualsiasi ambiente e non solo più al browser. **Requisiti:** [Percorso Javascript](https://devacademy.it/percorsi/javascript-developer/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** javascript, Node.js **Tecnologie Corsi:** Javascript, Node.js **Aree di Competenza Corsi:** Coding **Categorie Corso:** Back-end, Framework --- ### [Fondamenti di Python](https://devacademy.it/corsi/fondamenti-di-python/) **Published:** Settembre 19, 2018 **Author:** Rino Picardi **Content:** ## Presentazione del corso Python è uno dei linguaggi più utilizzati al mondo, il suo successo dura ormai da decenni ed è stato ampiamente utilizzato da Google, la Nasa, Mozilla e molti altri protagonisti dell’informatica e della tecnologia moderna. Il segreto del suo successo risiede in molti aspetti ed in questo primo corso Python ne inizieremo a vedere alcuni. Conosceremo ad esempio la sua sintassi potente, espressiva e sintetica: con poche righe di codice in Python potremmo ottenere grandi risultati con i nostri programmi. Conosceremo i tipi di dato fondamentali che utilizza, come si gestiscono numeri e stringhe e quanti strumenti ci sono per poter utilizzare al meglio questo tipo di dato. Vedremo inoltre come si controlla il flusso di esecuzione: cicli e costrutti condizionali permettono di implementare tutte le logiche di cui avremo bisogno all’interno dei nostri programmi. Tutto questo verrà spiegato, illustrato e sperimentato grazie ai molti esempi pratici che vedremo insieme in questo corso di Python sui fondamenti della programmazione. **Requisiti:** nessuno **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** Python **Tecnologie Corsi:** Python **Aree di Competenza Corsi:** Coding **Categorie Corso:** Linguaggi --- ### [Funzioni e Closure in Swift](https://devacademy.it/corsi/funzioni-e-closure-in-swift/) **Published:** Marzo 7, 2018 **Author:** Rino Picardi **Content:** ## Presentazione del corso Con questo **Corso Swift** prosegue il nostro percorso per imparare a programmare con questo linguaggio di programmazione. In swift le funzioni sono una parte essenziale del linguaggio, esse costituiscono i mattoncini fondamentali su cui costruire un’applicazione. In questo corso vedremo cosa sono e come utilizzare le funzioni e le closure. Vedremo come definire e gestire i valori di ritorno di una funzione, spiegheremo lo scope e la visibilità delle variabili globali. Vedremo come definire parametri normali, interni ed esterni, con valori di default e parametri variadici. Scopriremo perchè le funzioni sono definite first class type, cosa implica e quali sono le potenzialità. Vedremo cosa sono e come utilizzare le closure nelle sue varie forme, scopriremo insieme le funzioni globali di swift e vedremo infine le hiHigher Order Functions e dove trovarle all’interno del linguaggio. Insomma, un corso definitivo sul più importante costrutto sintattico. **Requisiti:** [Introduzione a Swift](https://devacademy.it/corsi/introduzione-a-swift/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** swift **Tecnologie Corsi:** Swift **Aree di Competenza Corsi:** Coding **Categorie Corso:** Linguaggi, Mobile --- ### [Introduzione a Swift](https://devacademy.it/corsi/introduzione-a-swift/) **Published:** Ottobre 5, 2017 **Author:** Rino Picardi **Content:** ## Presentazione del corso In questo corso imparerai i fondamenti di Swift, il linguaggio di programmazione ad oggetti che apre le porte all’universo delle tecnologie Apple e che viene utilizzato per creare applicazioni iOS, macOS, watchOS e tvOS. Scopriremo insieme le caratteristiche di questo linguaggio, vedremo cos’è e come funziona un playground in Xcode e impareremo ad installare e configurare Swift anche su Linux Ubuntu. Ci addentreremo quindi nel linguaggio scoprendo le fasi di un programma, i tipi e i valori che può gestire, impareremo la sintassi fondamentale del linguaggio passando dalle variabili e costanti, agli operatori e alle stringhe. Impareremo ad utilizzare strumenti più avanzati come le collezioni di dati (ad esempio dictionary e array), impareremo a gestire il flusso del programma con i control flow e a gestire le assenze di valori con gli optional. Insomma, un corso completo che parte da zero e che crea le basi fondamentali e solide per un percorso di formazione completo sul linguaggio Swift. **Requisiti:** nessuno **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** swift **Tecnologie Corsi:** Swift **Aree di Competenza Corsi:** Coding **Categorie Corso:** Linguaggi, Mobile --- ### [Git base](https://devacademy.it/corsi/git-base/) **Published:** Ottobre 4, 2017 **Author:** Rino Picardi **Content:** ## Presentazione del corso In questo corso impareremo ad usare Git, il sistema di versioning del software più utilizzato al mondo. Il corso, adatto a chi non ha mai utilizzato git o ne conosce solo gli aspetti basilari, illustra concetti teorici ed esempi pratici all’uso sia da riga di comando, che tramite uso di tools grafici (in particolare Sourcetree). Scopriremo cos’è git e quali problemi risolve, perché è cresciuto così tanto e perché è un tool ormai indispensabile per qualsiasi tipologia di programmatore, web o mobile che sia. Vengono presentati inoltre i servizi online più famosi che sfruttano git, come ad esempio GitHub, Bitbucket o GitLab di cui vedremo le differenze più importanti. Inizieremo poi a prendere confidenza con git in locale imparando ad usare Stage Area, Commits, Branches e scopriremo la potenza di git, in remoto, per il lavoro in team, grazie a push, pull, pull request e via dicendo. Infine, nell’ultima parte, vedremo insieme alcuni problemi tipici che si presentano a chi usa costantemente git (come, ad esempio, i conflitti o la modifica dei commits) e come risolverli da riga di comando. **Requisiti:** nessuno **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** git, tools **Tecnologie Corsi:** Git **Aree di Competenza Corsi:** Coding **Categorie Corso:** Tools --- ### [Fondamenti di Java](https://devacademy.it/corsi/fondamenti-di-java/) **Published:** Giugno 21, 2016 **Author:** Rino Picardi **Content:** ## Presentazione del corso Java è un linguaggio di programmazione dal grandissimo successo, molto richiesto nel mondo del lavoro per lo sviluppo di software in diversi ambiti. Se vuoi imparare a **programmare in java** il nostro **Corso Java** è quello che fa per te. Fornisce infatti ai partecipanti le prime nozioni di programmazione, utili soprattutto a chi parte da zero con questo linguaggio o con la programmazione in genere e a chiunque voglia **imparare a programmare**. Il corso di programmazione java illustra i Fondamenti essenziali del linguaggio partendo dalla la sintassi di base e dalle strutture fondamentali fino ad arrivare alla programmazione ad oggetti. Al termine di ogni lezione vengono proposti quiz di autovalutazione, che ti aiuteranno a comprendere meglio il livello di conoscenze acquisite e terminato con successo il corso e tutti i quiz proposti riceverai il certificato di fine corso. Sei pronto per iniziare il tuo percorso formativo? Iscriviti subito, prova le prime video lezioni gratis e sfrutta la migliore risorsa per imparare java online. **Requisiti:** nessun requisito richiesto **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più consoliderai semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** java **Tecnologie Corsi:** Java **Aree di Competenza Corsi:** Coding **Categorie Corso:** Linguaggi --- ### [Programmazione Android di base](https://devacademy.it/corsi/programmazione-android-di-base/) **Published:** Giugno 21, 2016 **Author:** Rino Picardi **Content:** ## Presentazione del corso Il corso introduttivo alla programmazione Android illustra gli strumenti utili e necessari per realizzare applicazioni per questo sistema operativo. Si scoprirà come realizzare le interfaccia utente tramite l’uso di elementi come Activity e Widget e si approfondirà conoscendo il pattern Adapter e le AdapterView, fino all’integrazione di un database SQLite all’interno dell’applicazione per il quale verranno mostrate le tipiche operazioni CRUD di manipolazione dei dati al suo interno. **Requisiti:** [Linguaggio Java (programmazione ad oggetti)](https://devacademy.it/corsi/fondamenti-di-java/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** android, java **Tecnologie Corsi:** Android, Java **Aree di Competenza Corsi:** Coding **Categorie Corso:** Mobile --- ### [Android e Networking](https://devacademy.it/corsi/android-e-networking/) **Published:** Giugno 21, 2016 **Author:** Rino Picardi **Content:** ## Presentazione del corso Il corso Android e Networking illustra gli strumenti e le tecniche necessarie per gestire le connessioni tra le nostre app e la rete internet. Vedremo come è possibile collegarsi a servizi web terzi per ottenere dati interessanti da usare all’interno delle app, scopriremo i principali formati in cui questi ci vengono forniti (XML e JSON) e impareremo a sfruttare questi dati all’interno delle nostre applicazioni Android. Tutto questo grazie ad alcuni esempi pratici che vedremo durante il corso. Realizzeremo insieme una semplice app che mostrerà le notizie prelevate dai server dell’ansa, un’app in cui cercare informazioni legate al mondo del cinema e un progetto in cui preleveremo e mostreremo a video le informazioni meteo delle principali città italiane. **Requisiti:** - [Linguaggio Java (programmazione ad oggetti)](https://devacademy.it/corsi/fondamenti-di-java/) - [Programmazione android base](https://devacademy.it/corsi/programmazione-android-di-base/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più consoliderai semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** android, java **Tecnologie Corsi:** Android, Java **Aree di Competenza Corsi:** Coding **Categorie Corso:** Mobile --- ### [Android e Google Services](https://devacademy.it/corsi/android-e-google-services/) **Published:** Giugno 21, 2016 **Author:** Rino Picardi **Content:** ## Presentazione del corso Con il corso “Android e Google Services” scoprirai e imparerai ad utilizzare i servizi offerti da Google all’interno delle tue applicazioni Android. Verranno illustrati sia gli strumenti base di interazione, ovvero Google Developers Console e Google Play Services, che i meccanismi di autenticazione ed uso delle API stesse. Il tutto tramite esempi pratici, che permetteranno di provare, lezione dopo lezione, servizi molto comuni tra cui: Google Maps, Location Services e Google Drive. **Requisiti:** - [Linguaggio Java (programmazione ad oggetti)](https://devacademy.it/corsi/fondamenti-di-java/) - [Programmazione android base](https://devacademy.it/corsi/programmazione-android-di-base/) - [Android e networking](https://devacademy.it/corsi/android-e-networking/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** android, java **Tecnologie Corsi:** Android, Java **Aree di Competenza Corsi:** Coding **Categorie Corso:** Mobile --- ### [Java: gestione dei dati e OOP avanzata](https://devacademy.it/corsi/java-gestione-dei-dati-e-oop-avanzata/) **Published:** Febbraio 9, 2024 **Author:** Rino Picardi **Content:** ## Presentazione del corso Per essere dei bravi programmatori Java è fondamentale non solo conoscere le regole di base, ma anche imparare a gestire al meglio le proprie gerarchie ad oggetti. Nel corso gestione dei dati e programmazione orientata agli oggetti avanzata in linguaggio Java scopriremo degli aspetti fondamentali per la gestione delle gerarchie di oggetti come le interface, i generics e come utilizzare dei meccanismi particolarmente flessibili per la gestione degli oggetti come l’upcasting. Ci sposteremo quindi su aspetti estremamente pratici, come la scelta delle strutture dati più adeguate, la gestione dei dati con la costruzione di stringhe, la gestione delle informazioni temporali e l’utilizzo delle espressioni regolari per l’analisi del testo e un corretto inserimento dei dati all’interno dei nostri progetti. Scopriremo anche quanto questo linguaggio sia in rapida evoluzione vedendo alcune caratteristiche moderne nate nel tempo nel corso della veloce evoluzione del linguaggio Java come le espressioni Lambda, gli streaming e i record. Concluderemo il tutto con un progetto finale che metterà alla prova tutte le nuove conoscenze che avremo acquisito. **Requisiti:** - [Java: iniziare a programmare](https://devacademy.it/corsi/java-iniziare-a-programmare/) - [Java: Programmazione Orientata agli Oggetti](https://devacademy.it/corsi/java-programmazione-orientata-agli-oggetti/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** java **Tecnologie Corsi:** Java **Aree di Competenza Corsi:** Coding **Categorie Corso:** Back-end, Linguaggi --- ### [Java: Programmazione Orientata agli Oggetti](https://devacademy.it/corsi/java-programmazione-orientata-agli-oggetti/) **Published:** Febbraio 9, 2024 **Author:** Rino Picardi **Content:** ## Presentazione del corso Il linguaggio Java rappresenta una delle massime espressioni della programmazione orientata agli oggetti, ed in questo corso vedremo proprio tutti i fondamenti di questo importantissimo paradigma di programmazione. Nel **Corso di programmazione orientata agli oggetti con Java** parleremo innanzitutto di classi e oggetti, vedremo cosa rappresentano questi concetti, come utilizzarli e quali sono le differenze. Impareremo a strutturare l’informazione all’interno dei nostri programmi per poter dar vita progetti di e-commerce, gestionali e qualsiasi forma di sistema informatico che debba gestire informazioni ben strutturate e collegate tra loro. Scopriremo cos’è l’ereditarietà, il meccanismo che permette di definire delle classi che non inizino da zero, ma che rappresentino la derivazioni di classi più generiche. Un meccanismo assolutamente fondamentale per poter creare delle gerarchie di classi all’interno dei nostri progetti. Vedremo ancora i package, l’astrazione e i meccanismi utili alla gestione degli errori, fondamentali per far in modo che i nostri programmi siano robusti e non rischino di collassare per qualche malfunzionamento interno. **Requisiti:** - [Java: iniziare a programmare](https://devacademy.it/corsi/java-iniziare-a-programmare/) **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** java **Tecnologie Corsi:** Java **Aree di Competenza Corsi:** Coding **Categorie Corso:** Back-end, Linguaggi --- ### [Java: iniziare a programmare](https://devacademy.it/corsi/java-iniziare-a-programmare/) **Published:** Febbraio 9, 2024 **Author:** Rino Picardi **Content:** ## Presentazione del corso In questo corso parliamo di uno dei linguaggi più studiati, diffusi e amati al mondo: Java. Il corso è adatto a chiunque voglia apprendere le basi della programmazione, non richiede conoscenze pregresse e può essere seguito anche da chi parte da zero. Partiremo infatti dalle sue caratteristiche fondamentali passando dalla preparazione dell’ambiente di sviluppo fino ad arrivare alla scrittura ed esecuzione dei nostri programmi. In questo corso comprenderemo i tipi di dato e capiremo come l’informazione viene tratta all’interno di un programma. Comprenderemo insieme come funziona l’esecuzione di un programma mediante un flusso di istruzioni condizionali e cicli e si arriverà infine alla prima struttura dati ovvero gli array, un modo per poter inserire e organizzare meglio i nostri dati e gestire le nostre prime elaborazioni. **Requisiti:** nessuno **Puoi seguire il corso da qualunque dispositivo:** computer desktop, tablet o smartphone. **Vuoi un consiglio?** Terminato il corso prova a ripeterlo, vedrai quante nozioni in più riuscirai ad apprendere semplicemente seguendo una seconda volta o più il corso. **Categorie:** _Senza categoria **Tag:** java **Tecnologie Corsi:** Java **Aree di Competenza Corsi:** Coding **Categorie Corso:** Back-end, Linguaggi --- ## Categorie ### [_Senza categoria](https://devacademy.it/category/_senza-categoria/) --- ### [Programmazione](https://devacademy.it/category/programmazione/) --- ### [Java](https://devacademy.it/category/java/) --- ### [Arduino](https://devacademy.it/category/arduino/) --- ### [Android](https://devacademy.it/category/android/) --- ### [Big Data](https://devacademy.it/category/big-data/) --- ### [Python](https://devacademy.it/category/python/) --- ### [Linguaggi di programmazione](https://devacademy.it/category/linguaggi-di-programmazione/) --- ### [Database](https://devacademy.it/category/database/) --- ### [Sicurezza](https://devacademy.it/category/sicurezza/) --- ### [PHP](https://devacademy.it/category/php/) --- ### [Javascript](https://devacademy.it/category/javascript/) --- ### [Node.js](https://devacademy.it/category/node-js/) --- ### [Git](https://devacademy.it/category/git/) --- ### [Tools](https://devacademy.it/category/tools/) --- ### [IoT](https://devacademy.it/category/iot/) --- ### [Raspberry Pi](https://devacademy.it/category/raspberry-pi/) --- ### [HTML](https://devacademy.it/category/html/) --- ### [Docker](https://devacademy.it/category/docker/) --- ### [SQL](https://devacademy.it/category/sql/) --- ### [jQuery](https://devacademy.it/category/jquery/) --- ### [Ajax](https://devacademy.it/category/ajax/) --- ### [Laravel](https://devacademy.it/category/laravel/) --- ### [HTTP](https://devacademy.it/category/http/) --- ### [Bootstrap](https://devacademy.it/category/bootstrap/) --- ### [Machine Learning](https://devacademy.it/category/machine-learning/) --- ### [Intelligenza Artificiale](https://devacademy.it/category/intelligenza-artificiale/) --- ## Tag ### [java](https://devacademy.it/tag/java/) --- ### [android](https://devacademy.it/tag/android/) --- ### [ios](https://devacademy.it/tag/ios/) --- ### [swift](https://devacademy.it/tag/swift/) --- ### [wordpress](https://devacademy.it/tag/wordpress/) --- ### [tools](https://devacademy.it/tag/tools/) --- ### [design](https://devacademy.it/tag/design/) --- ### [sql](https://devacademy.it/tag/sql/) --- ### [database](https://devacademy.it/tag/database/) --- ### [sqlite](https://devacademy.it/tag/sqlite/) --- ### [API](https://devacademy.it/tag/api/) --- ### [Ruby](https://devacademy.it/tag/ruby/) --- ### [Heroku](https://devacademy.it/tag/heroku/) --- ### [realm](https://devacademy.it/tag/realm/) --- ### [JavaFX](https://devacademy.it/tag/javafx/) --- ### [CSS](https://devacademy.it/tag/css/) --- ### [HTML](https://devacademy.it/tag/html/) --- ### [PHP](https://devacademy.it/tag/php/) --- ### [javascript](https://devacademy.it/tag/javascript/) --- ### [p5.js](https://devacademy.it/tag/p5-js/) --- ### [MongoDB](https://devacademy.it/tag/mongodb/) --- ### [git](https://devacademy.it/tag/git/) --- ### [Rest](https://devacademy.it/tag/rest/) --- ### [Spring](https://devacademy.it/tag/spring/) --- ### [virtualbox](https://devacademy.it/tag/virtualbox/) --- ### [linux](https://devacademy.it/tag/linux/) --- ### [server](https://devacademy.it/tag/server/) --- ### [slim](https://devacademy.it/tag/slim/) --- ### [framework](https://devacademy.it/tag/framework/) --- ### [design patterns](https://devacademy.it/tag/design-patterns/) --- ### [web server](https://devacademy.it/tag/web-server/) --- ### [nginx](https://devacademy.it/tag/nginx/) --- ### [uml](https://devacademy.it/tag/uml/) --- ### [ingegneria del software](https://devacademy.it/tag/ingegneria-del-software/) --- ### [MySQL](https://devacademy.it/tag/mysql/) --- ### [JSON](https://devacademy.it/tag/json/) --- ### [Retrofit](https://devacademy.it/tag/retrofit/) --- ### [scripting](https://devacademy.it/tag/scripting/) --- ### [shell](https://devacademy.it/tag/shell/) --- ### [bash](https://devacademy.it/tag/bash/) --- ### [IoT](https://devacademy.it/tag/iot/) --- ### [microbit](https://devacademy.it/tag/microbit/) --- ### [microcontroller](https://devacademy.it/tag/microcontroller/) --- ### [unit testing](https://devacademy.it/tag/unit-testing/) --- ### [Gems](https://devacademy.it/tag/gems/) --- ### [Swagger](https://devacademy.it/tag/swagger/) --- ### [Room](https://devacademy.it/tag/room/) --- ### [RedBeanPHP](https://devacademy.it/tag/redbeanphp/) --- ### [JShell](https://devacademy.it/tag/jshell/) --- ### [jQuery](https://devacademy.it/tag/jquery/) --- ### [cross-platform](https://devacademy.it/tag/cross-platform/) --- ### [Cordova](https://devacademy.it/tag/cordova/) --- ### [Monolog](https://devacademy.it/tag/monolog/) --- ### [programmazione](https://devacademy.it/tag/programmazione/) --- ### [Kotlin](https://devacademy.it/tag/kotlin/) --- ### [Python](https://devacademy.it/tag/python/) --- ### [Markdown](https://devacademy.it/tag/markdown/) --- ### [Typescript](https://devacademy.it/tag/typescript/) --- ### [Node.js](https://devacademy.it/tag/node-js/) --- ### [Firebase](https://devacademy.it/tag/firebase/) --- ### [Cloud](https://devacademy.it/tag/cloud/) --- ### [Serverless](https://devacademy.it/tag/serverless/) --- ### [iPython](https://devacademy.it/tag/ipython/) --- ### [Jupyter Notebook](https://devacademy.it/tag/jupyter-notebook/) --- ### [Big Data](https://devacademy.it/tag/big-data/) --- ### [WebSocket](https://devacademy.it/tag/websocket/) --- ### [NumPy](https://devacademy.it/tag/numpy/) --- ### [Chart.js](https://devacademy.it/tag/chart-js/) --- ### [MapReduce](https://devacademy.it/tag/mapreduce/) --- ### [Flutter](https://devacademy.it/tag/flutter/) --- ### [Librerie](https://devacademy.it/tag/librerie/) --- ### [Dart](https://devacademy.it/tag/dart/) --- ### [Arduino](https://devacademy.it/tag/arduino/) --- ### [linguaggi di programmazione](https://devacademy.it/tag/linguaggi-di-programmazione/) --- ### [Redis](https://devacademy.it/tag/redis/) --- ### [NoSQL](https://devacademy.it/tag/nosql/) --- ### [HTTP/2](https://devacademy.it/tag/http-2/) --- ### [android studio](https://devacademy.it/tag/android-studio/) --- ### [Hadoop](https://devacademy.it/tag/hadoop/) --- ### [Spark](https://devacademy.it/tag/spark/) --- ### [Vue.js](https://devacademy.it/tag/vue-js/) --- ### [Data Science](https://devacademy.it/tag/data-science/) --- ### [IDE](https://devacademy.it/tag/ide/) --- ### [sicurezza](https://devacademy.it/tag/sicurezza/) --- ### [Machine Learning](https://devacademy.it/tag/machine-learning/) --- ### [Intelligenza Artificiale](https://devacademy.it/tag/intelligenza-artificiale/) --- ### [Telegram](https://devacademy.it/tag/telegram/) --- ### [Bot](https://devacademy.it/tag/bot/) --- ### [backend](https://devacademy.it/tag/backend/) --- ### [Ajax](https://devacademy.it/tag/ajax/) --- ### [Clean Code](https://devacademy.it/tag/clean-code/) --- ### [Pandas](https://devacademy.it/tag/pandas/) --- ### [Blockchain](https://devacademy.it/tag/blockchain/) --- ### [Siti Web](https://devacademy.it/tag/siti-web/) --- ### [Docker](https://devacademy.it/tag/docker/) --- ### [React](https://devacademy.it/tag/react/) --- ### [Raspberry Pi](https://devacademy.it/tag/raspberry-pi/) --- ### [Go](https://devacademy.it/tag/go/) --- ### [Editor](https://devacademy.it/tag/editor/) --- ### [R](https://devacademy.it/tag/r/) --- ### [Yaml](https://devacademy.it/tag/yaml/) --- ### [Formato dati](https://devacademy.it/tag/formato-dati/) --- ### [Flask](https://devacademy.it/tag/flask/) --- ### [Angular](https://devacademy.it/tag/angular/) --- ### [Bootstrap](https://devacademy.it/tag/bootstrap/) --- ### [React Native](https://devacademy.it/tag/react-native/) --- ### [Laravel](https://devacademy.it/tag/laravel/) --- ### [Rust](https://devacademy.it/tag/rust/) --- ### [Memcached](https://devacademy.it/tag/memcached/) --- ### [Express.js](https://devacademy.it/tag/express-js/) --- ### [Svelte](https://devacademy.it/tag/svelte/) --- ### [C#](https://devacademy.it/tag/c-sharp/) --- ### [.NET](https://devacademy.it/tag/net/) --- ### [.NET Core](https://devacademy.it/tag/net-core/) --- ### [LINQ](https://devacademy.it/tag/linq/) --- ### [Google Cloud](https://devacademy.it/tag/google-cloud/) --- ### [MS SQL](https://devacademy.it/tag/ms-sql/) --- ### [SQL Server](https://devacademy.it/tag/sql-server/) --- ### [Scratch](https://devacademy.it/tag/scratch/) --- ### [C](https://devacademy.it/tag/c/) --- ### [Kubernetes](https://devacademy.it/tag/kubernetes/) --- ### [Blazor](https://devacademy.it/tag/blazor/) --- ### [CI/CD](https://devacademy.it/tag/ci-cd/) --- ### [AWS](https://devacademy.it/tag/aws/) --- ### [Selenium](https://devacademy.it/tag/selenium/) --- ### [GitHub](https://devacademy.it/tag/github/) --- ### [DevOps](https://devacademy.it/tag/devops/) --- ### [HTTP](https://devacademy.it/tag/http/) --- ### [HTML5](https://devacademy.it/tag/html5/) --- ### [FastAPI](https://devacademy.it/tag/fastapi/) --- ### [django](https://devacademy.it/tag/django/) --- ### [LLM](https://devacademy.it/tag/llm/) --- ### [Chatbot](https://devacademy.it/tag/chatbot/) --- ### [RAG](https://devacademy.it/tag/rag/) --- ### [Agenti AI](https://devacademy.it/tag/agenti-ai/) --- ### [AI](https://devacademy.it/tag/ai/) --- ### [S3](https://devacademy.it/tag/s3/) --- ### [MCP](https://devacademy.it/tag/mcp/) --- ### [Agents SDK](https://devacademy.it/tag/agents-sdk/) --- ### [Excel](https://devacademy.it/tag/excel/) --- ## Categorie Screencast ### [Java](https://devacademy.it/categoria_screencast/java/) --- ### [Android](https://devacademy.it/categoria_screencast/android/) --- ### [Tools](https://devacademy.it/categoria_screencast/tools/) --- ### [SQL](https://devacademy.it/categoria_screencast/sql/) --- ### [Database](https://devacademy.it/categoria_screencast/database/) --- ### [SQLite](https://devacademy.it/categoria_screencast/sqlite/) --- ### [Design](https://devacademy.it/categoria_screencast/design/) --- ### [API](https://devacademy.it/categoria_screencast/api/) --- ### [Ruby](https://devacademy.it/categoria_screencast/ruby/) --- ### [Heroku](https://devacademy.it/categoria_screencast/heroku/) --- ### [Realm](https://devacademy.it/categoria_screencast/realm/) --- ### [JSON](https://devacademy.it/categoria_screencast/json/) --- ### [JavaFX](https://devacademy.it/categoria_screencast/javafx/) --- ### [javascript](https://devacademy.it/categoria_screencast/javascript/) --- ### [p5.js](https://devacademy.it/categoria_screencast/p5-js/) --- ### [MongoDB](https://devacademy.it/categoria_screencast/mongodb/) --- ### [PHP](https://devacademy.it/categoria_screencast/php/) --- ### [Rest](https://devacademy.it/categoria_screencast/rest/) --- ### [Spring](https://devacademy.it/categoria_screencast/spring/) --- ### [VirtualBox](https://devacademy.it/categoria_screencast/virtualbox/) --- ### [Linux](https://devacademy.it/categoria_screencast/linux/) --- ### [Server](https://devacademy.it/categoria_screencast/server/) --- ### [Slim](https://devacademy.it/categoria_screencast/slim/) --- ### [Framework](https://devacademy.it/categoria_screencast/framework/) --- ### [Design patterns](https://devacademy.it/categoria_screencast/design-patterns/) --- ### [Web Server](https://devacademy.it/categoria_screencast/web-server/) --- ### [Nginx](https://devacademy.it/categoria_screencast/nginx/) --- ### [UML](https://devacademy.it/categoria_screencast/uml/) --- ### [Ingegneria del software](https://devacademy.it/categoria_screencast/ingegneria-del-software/) --- ### [MySQL](https://devacademy.it/categoria_screencast/mysql/) --- ### [Retrofit](https://devacademy.it/categoria_screencast/retrofit/) --- ### [Scripting](https://devacademy.it/categoria_screencast/scripting/) --- ### [Shell](https://devacademy.it/categoria_screencast/shell/) --- ### [Bash](https://devacademy.it/categoria_screencast/bash/) --- ### [CSS](https://devacademy.it/categoria_screencast/css/) --- ### [IoT](https://devacademy.it/categoria_screencast/iot/) --- ### [microbit](https://devacademy.it/categoria_screencast/microbit/) --- ### [microcontroller](https://devacademy.it/categoria_screencast/microcontroller/) --- ### [Unit Testing](https://devacademy.it/categoria_screencast/unit-testing/) --- ### [Gems](https://devacademy.it/categoria_screencast/gems/) --- ### [Swagger](https://devacademy.it/categoria_screencast/swagger/) --- ### [Room](https://devacademy.it/categoria_screencast/room/) --- ### [RedBeanPHP](https://devacademy.it/categoria_screencast/redbeanphp/) --- ### [JShell](https://devacademy.it/categoria_screencast/jshell/) --- ### [cross-platform](https://devacademy.it/categoria_screencast/cross-platform/) --- ### [Cordova](https://devacademy.it/categoria_screencast/cordova/) --- ### [Monolog](https://devacademy.it/categoria_screencast/monolog/) --- ### [Kotlin](https://devacademy.it/categoria_screencast/kotlin/) --- ### [Markdown](https://devacademy.it/categoria_screencast/markdown/) --- ### [Typescript](https://devacademy.it/categoria_screencast/typescript/) --- ### [Python](https://devacademy.it/categoria_screencast/python/) --- ### [Firebase](https://devacademy.it/categoria_screencast/firebase/) --- ### [Cloud](https://devacademy.it/categoria_screencast/cloud/) --- ### [Serverless](https://devacademy.it/categoria_screencast/serverless/) --- ### [iPython](https://devacademy.it/categoria_screencast/ipython/) --- ### [Jupyter Notebook](https://devacademy.it/categoria_screencast/jupyter-notebook/) --- ### [Big Data](https://devacademy.it/categoria_screencast/big-data/) --- ### [WebSocket](https://devacademy.it/categoria_screencast/websocket/) --- ### [NumPy](https://devacademy.it/categoria_screencast/numpy/) --- ### [Node.js](https://devacademy.it/categoria_screencast/node-js/) --- ### [Chart.js](https://devacademy.it/categoria_screencast/chart-js/) --- ### [MapReduce](https://devacademy.it/categoria_screencast/mapreduce/) --- ### [Flutter](https://devacademy.it/categoria_screencast/flutter/) --- ### [iOS](https://devacademy.it/categoria_screencast/ios/) --- ### [Librerie](https://devacademy.it/categoria_screencast/librerie/) --- ### [Dart](https://devacademy.it/categoria_screencast/dart/) --- ### [Redis](https://devacademy.it/categoria_screencast/redis/) --- ### [NoSQL](https://devacademy.it/categoria_screencast/nosql/) --- ### [HTML](https://devacademy.it/categoria_screencast/html/) --- ### [HTTP/2](https://devacademy.it/categoria_screencast/http-2/) --- ### [Vue.js](https://devacademy.it/categoria_screencast/vue-js/) --- ### [Data Science](https://devacademy.it/categoria_screencast/data-science/) --- ### [IDE](https://devacademy.it/categoria_screencast/ide/) --- ### [Machine Learning](https://devacademy.it/categoria_screencast/machine-learning/) --- ### [Intelligenza Artificiale](https://devacademy.it/categoria_screencast/intelligenza-artificiale/) --- ### [Telegram](https://devacademy.it/categoria_screencast/telegram/) --- ### [Bot](https://devacademy.it/categoria_screencast/bot/) --- ### [Clean Code](https://devacademy.it/categoria_screencast/clean-code/) --- ### [Pandas](https://devacademy.it/categoria_screencast/pandas/) --- ### [Blockchain](https://devacademy.it/categoria_screencast/blockchain/) --- ### [Sicurezza](https://devacademy.it/categoria_screencast/sicurezza/) --- ### [Go](https://devacademy.it/categoria_screencast/go/) --- ### [Editor](https://devacademy.it/categoria_screencast/editor/) --- ### [R](https://devacademy.it/categoria_screencast/r/) --- ### [Yaml](https://devacademy.it/categoria_screencast/yaml/) --- ### [Formato dati](https://devacademy.it/categoria_screencast/formato-dati/) --- ### [Flask](https://devacademy.it/categoria_screencast/flask/) --- ### [Rust](https://devacademy.it/categoria_screencast/rust/) --- ### [Docker](https://devacademy.it/categoria_screencast/docker/) --- ### [Memcached](https://devacademy.it/categoria_screencast/memcached/) --- ### [jQuery](https://devacademy.it/categoria_screencast/jquery/) --- ### [Programmazione](https://devacademy.it/categoria_screencast/programmazione/) --- ### [C](https://devacademy.it/categoria_screencast/c/) --- ### [Scratch](https://devacademy.it/categoria_screencast/scratch/) --- ### [NLTK](https://devacademy.it/categoria_screencast/nltk/) --- ### [NLP](https://devacademy.it/categoria_screencast/nlp/) --- ### [Wordpress](https://devacademy.it/categoria_screencast/wordpress/) --- ### [CI/CD](https://devacademy.it/categoria_screencast/ci-cd/) --- ### [Angular](https://devacademy.it/categoria_screencast/angular/) --- ### [AWS](https://devacademy.it/categoria_screencast/aws/) --- ### [Google Cloud](https://devacademy.it/categoria_screencast/google-cloud/) --- ### [Selenium](https://devacademy.it/categoria_screencast/selenium/) --- ### [GitHub](https://devacademy.it/categoria_screencast/github/) --- ### [DevOps](https://devacademy.it/categoria_screencast/devops/) --- ### [FastAPI](https://devacademy.it/categoria_screencast/fastapi/) --- ### [django](https://devacademy.it/categoria_screencast/django/) --- ## Tecnologie Corsi ### [Android](https://devacademy.it/tecnologie_corso/android/) --- ### [Java](https://devacademy.it/tecnologie_corso/java/) --- ### [HTML](https://devacademy.it/tecnologie_corso/html/) --- ### [CSS](https://devacademy.it/tecnologie_corso/css/) --- ### [PHP](https://devacademy.it/tecnologie_corso/php/) --- ### [MySQL](https://devacademy.it/tecnologie_corso/mysql/) --- ### [Git](https://devacademy.it/tecnologie_corso/git/) --- ### [Swift](https://devacademy.it/tecnologie_corso/swift/) --- ### [Javascript](https://devacademy.it/tecnologie_corso/javascript/) --- ### [jQuery](https://devacademy.it/tecnologie_corso/jquery/) --- ### [Python](https://devacademy.it/tecnologie_corso/python/) --- ### [Node.js](https://devacademy.it/tecnologie_corso/node-js/) --- ### [Big Data](https://devacademy.it/tecnologie_corso/big-data/) --- ### [Data Science](https://devacademy.it/tecnologie_corso/data-science/) --- ### [PySpark](https://devacademy.it/tecnologie_corso/pyspark/) --- ### [Vue.js](https://devacademy.it/tecnologie_corso/vue-js/) --- ### [Nuxt.js](https://devacademy.it/tecnologie_corso/nuxt-js/) --- ### [Bulma](https://devacademy.it/tecnologie_corso/bulma/) --- ### [Wordpress](https://devacademy.it/tecnologie_corso/wordpress/) --- ### [Docker](https://devacademy.it/tecnologie_corso/docker/) --- ### [React](https://devacademy.it/tecnologie_corso/react/) --- ### [Redux](https://devacademy.it/tecnologie_corso/redux/) --- ### [TypeScript](https://devacademy.it/tecnologie_corso/typescript/) --- ### [Angular](https://devacademy.it/tecnologie_corso/angular/) --- ### [NgRx](https://devacademy.it/tecnologie_corso/ngrx/) --- ### [NumPy](https://devacademy.it/tecnologie_corso/numpy/) --- ### [Pandas](https://devacademy.it/tecnologie_corso/pandas/) --- ### [Matplotlib](https://devacademy.it/tecnologie_corso/matplotlib/) --- ### [Seaborn](https://devacademy.it/tecnologie_corso/seaborn/) --- ### [Bootstrap](https://devacademy.it/tecnologie_corso/bootstrap/) --- ### [React Native](https://devacademy.it/tecnologie_corso/react-native/) --- ### [MongoDB](https://devacademy.it/tecnologie_corso/mongodb/) --- ### [Laravel](https://devacademy.it/tecnologie_corso/laravel/) --- ### [Machine Learning](https://devacademy.it/tecnologie_corso/machine-learning/) --- ### [Scikit-learn](https://devacademy.it/tecnologie_corso/scikit-learn/) --- ### [Gatsby](https://devacademy.it/tecnologie_corso/gatsby/) --- ### [Next](https://devacademy.it/tecnologie_corso/next/) --- ### [NativeScript](https://devacademy.it/tecnologie_corso/nativescript/) --- ### [Express](https://devacademy.it/tecnologie_corso/express/) --- ### [SASS](https://devacademy.it/tecnologie_corso/sass/) --- ### [Anaconda](https://devacademy.it/tecnologie_corso/anaconda/) --- ### [XGBoost](https://devacademy.it/tecnologie_corso/xgboost/) --- ### [Dart](https://devacademy.it/tecnologie_corso/dart/) --- ### [Flutter](https://devacademy.it/tecnologie_corso/flutter/) --- ### [Svelte](https://devacademy.it/tecnologie_corso/svelte/) --- ### [.NET Core](https://devacademy.it/tecnologie_corso/net-core/) --- ### [C#](https://devacademy.it/tecnologie_corso/c/) --- ### [Spring](https://devacademy.it/tecnologie_corso/spring/) --- ### [Blockchain](https://devacademy.it/tecnologie_corso/blockchain/) --- ### [Smart Contract](https://devacademy.it/tecnologie_corso/smart-contract/) --- ### [Solidity](https://devacademy.it/tecnologie_corso/solidity/) --- ### [LINQ](https://devacademy.it/tecnologie_corso/linq/) --- ### [Entity Framework](https://devacademy.it/tecnologie_corso/entity-framework/) --- ### [SQL Server](https://devacademy.it/tecnologie_corso/sql-server/) --- ### [Google Cloud](https://devacademy.it/tecnologie_corso/google-cloud/) --- ### [Google Cloud Platform](https://devacademy.it/tecnologie_corso/google-cloud-platform/) --- ### [ASP.NET Core](https://devacademy.it/tecnologie_corso/asp-net-core/) --- ### [REST API](https://devacademy.it/tecnologie_corso/rest-api/) --- ### [Kubernetes](https://devacademy.it/tecnologie_corso/kubernetes/) --- ### [CloudRun](https://devacademy.it/tecnologie_corso/cloudrun/) --- ### [Firestore](https://devacademy.it/tecnologie_corso/firestore/) --- ### [Google Kubernetes Engine](https://devacademy.it/tecnologie_corso/google-kubernetes-engine/) --- ### [Blazor](https://devacademy.it/tecnologie_corso/blazor/) --- ### [AWS](https://devacademy.it/tecnologie_corso/aws/) --- ### [Intelligenza Artificiale](https://devacademy.it/tecnologie_corso/intelligenza-artificiale/) --- ### [LLM](https://devacademy.it/tecnologie_corso/llm/) --- ### [Chatbot](https://devacademy.it/tecnologie_corso/chatbot/) --- ### [RAG](https://devacademy.it/tecnologie_corso/rag/) --- ### [Agenti AI](https://devacademy.it/tecnologie_corso/agenti-ai/) --- ### [AI](https://devacademy.it/tecnologie_corso/ai/) --- ### [MCP](https://devacademy.it/tecnologie_corso/mcp/) --- ### [Agents SDK](https://devacademy.it/tecnologie_corso/agents-sdk/) --- ### [Excel](https://devacademy.it/tecnologie_corso/excel/) --- ## Aree di Competenza Corsi ### [Coding](https://devacademy.it/aree_di_competenza_corso/coding/) --- ### [AI/Machine Learning](https://devacademy.it/aree_di_competenza_corso/ai-machine-learning/) --- ### [Data](https://devacademy.it/aree_di_competenza_corso/data/) --- ### [DevOps](https://devacademy.it/aree_di_competenza_corso/devops/) --- ### [Cloud](https://devacademy.it/aree_di_competenza_corso/cloud/) --- ## Categorie Corso ### [Mobile](https://devacademy.it/categorie_corso/mobile/) --- ### [Linguaggi](https://devacademy.it/categorie_corso/linguaggi/) --- ### [Design/UX](https://devacademy.it/categorie_corso/design-ux/) --- ### [Front-end](https://devacademy.it/categorie_corso/front-end/) --- ### [Back-end](https://devacademy.it/categorie_corso/back-end/) --- ### [Database](https://devacademy.it/categorie_corso/database/) --- ### [Tools](https://devacademy.it/categorie_corso/tools/) --- ### [Framework](https://devacademy.it/categorie_corso/framework/) --- ### [Big Data](https://devacademy.it/categorie_corso/big-data/) --- ### [Data Science](https://devacademy.it/categorie_corso/data-science/) --- ### [DevOps](https://devacademy.it/categorie_corso/devops/) --- ### [CMS](https://devacademy.it/categorie_corso/cms/) --- ### [NoSQL](https://devacademy.it/categorie_corso/nosql/) --- ### [Machine Learning](https://devacademy.it/categorie_corso/machine-learning/) --- ### [Blockchain](https://devacademy.it/categorie_corso/blockchain/) --- ### [Cloud](https://devacademy.it/categorie_corso/cloud/) --- ### [Container](https://devacademy.it/categorie_corso/container/) --- ### [Kubernetes](https://devacademy.it/categorie_corso/kubernetes/) --- ### [Intelligenza Artificiale](https://devacademy.it/categorie_corso/intelligenza-artificiale/) --- ### [Excel](https://devacademy.it/categorie_corso/excel/) ---