CAP Theorem

Il teorema del CAP (ConsistencyAvailability and Partition tolerance), ideato dall’informatico statunitense Eric Brewer, afferma afferma che è impossibile per un sistema informatico distribuito fornire simultaneamente tutte e tre le seguenti garanzie: Coerenza, Disponibilità e Tolleranza delle partizioni.

Di seguito è riportata una breve definizione di questi tre termini:

  • Consistency: E’ la garanzia che ogni nodo in un cluster distribuito restituisca lo stesso dato più recente, ovvero proveniente dall’ultima scrittura dello stesso, oppure un messaggio di errore. Ogni client che interroga un qualsiasi cluster del sistema distribuito ha la stessa “vista” dei dati.  Ad esempio, un’applicazione bancaria distribuita mostrerà sempre il saldo corretto nel proprio account.
  • Availability: significa semplicemente che ogni richiesta deve ricevere una risposta. Un server funzionante non può ignorare una richiesta di un client ed è obbligato a dare una risposta. Nella maggior parte dei sistemi reali, ovviamente, una risposta sufficientemente ritardata è altrettanto negativa quanto una risposta non data.
  • Partition tolerance: il sistema continua a funzionare, nonostante il numero di messaggi ritardati dalla rete tra i nodi. Un sistema tollerante alle partizioni può sopportare qualsiasi problema di rete che non si traduce per forza in un guasto dell’intera rete. I record di dati sono sufficientemente replicati tra i nodi che garantiscono una tolleranza anche su interruzioni intermittenti. Quando si tratta di sistemi distribuiti moderni, il Partition Tolerance non è un’opzione, ma una necessità.

Lo schema seguente mostra i tre termini sopra riportati. Come si può vedere non si raggiungerà mai lo stato formato dall’unione di tutti e tre gli stati:

Teorema CAP – Coerenza, disponibilità, tolleranza delle partizioni

Continue Reading


Conoscere il Cloud computing

Nella sua forma più basilare, il cloud computing si riferisce all’uso on demand di risorse da parte di un cliente attraverso la rete Internet. Il cloud computing come idea racchiude una vasta gamma di servizi aziendali e di consumo.  Le risorse non vengono pienamente configurate e messe in opera dal fornitore appositamente per l’utente, ma gli sono assegnate, rapidamente e convenientemente, grazie a procedure automatizzate, a partire da un insieme di risorse condivise con altri utenti lasciando all’utente parte dell’onere della configurazione. Quando l’utente rilascia la risorsa, essa viene similmente riconfigurata nello stato iniziale e rimessa a disposizione nel pool condiviso delle risorse, con altrettanta velocità ed economia per il fornitore.

L’interazione con un servizio cloud viene generalmente eseguita tramite un browser Web o tramite riga di comando. Di solito non c’è alcun software da installare, nessun hardware da configurare e nessun centro dati da cui affittare lo spazio.

Google e Amazon sono stati i primi al mondo a fornire servizi di cloud computing, presto seguiti da Microsoft. Il portfolio di prodotti offerti dalle aziende cloud è maturato e si è evoluto nel tempo, così come la concorrenza. Aziende come IBM e Rackspace, tra le altre, si sono unite alla mischia. Il mondo del cloud computing include ora una miriade di aziende che offrono i servizi di qualsiasi tipo. Questo articolo si concentrerà su Google, Amazon e Microsoft poiché punto di riferimento di milioni di sviluppatori.

Continue Reading


SQL o NO-SQL?

Un filo conduttore della tecnologia è l’evoluzione – come del resto anche per gli esseri umani. Non è insolito, vedere le cose evolversi e adattarsi mentre il mondo intorno a loro cambia. Un esempio che conosciamo benissimo sono gli aggiornamenti nei software applicativi del nostro pc o del nostro smartphone… Questo adattamento significa che a volte appaiono nuove “varianti” nei nostri strumenti, per servire meglio determinati scopi specifici.

Il mondo del database non fa eccezione. Sin dai tempi di EF Codd e della sua introduzione del modello di dati relazionali, abbiamo visto i database, e le loro esigenze, evolversi da modelli puramente transazionali ACID (Atomic, Consistent, Isolated, Durable), richiedendo maggiore flessibilità, capacità di scalare (in sistemi distribuiti) e velocità (in termini di latenza e velocità effettiva).

Queste evoluzioni potrebbero essere state, in molti casi, le motivazioni per cui si è preferito, in passato, l’adozione dei sistemi RDBMS. Chi lo sa?

In questo articolo, faremo riferimento ai tradizionali database SQL – sistemi di database relazionali – come RDBMS. La loro controparte è la categoria di database NoSQL – che include molti sottotipi.

Continue Reading


Etica della persuasione

Il primo maggio 2018 termina di esistere Cambridge Analytica. Il motivo è stato trattato per diverse settimane dai media nazionali e internazionali e il mondo è rimasto scioccato nell’apprendere che Cambridge Analytica ha usato impropriamente i dati di un innocuo quiz pubblicato su Facebook, per indirizzare il pubblico della piattaforma con pubblicità persuasiva: l’intento era di convincere loro a votare in un certo modo. Solo una parte dei dati è stata ottenuta con il consenso al trattamento dei dati; i dati sono stati memorizzati dal creatore dell’app e poi venduti a Cambridge Analytica in violazione dei termini di utilizzo. Questo è stato uno dei tanti esempi esistenti in rete per cui si applicano tecniche di persuasione in modo ingannevole, combinato all’uso non etico delle informazioni personali…

Ma d’altra parte chi non conosce Amazon o eBay? Non vi è mai capitato di entrare in Amazon e trovare in prima pagina gli oggetti del desiderio? Magari avete fatto una ricerca di prodotti qualche settimana addietro: Amazon conserva i vostri interessi (lo fa in maniera del tutto lecita e vi informa di ciò) e crea un profilo personalizzato in base alle vostre scelte. Un po’ come fa Facebook e i suoi annunci sponsorizzati: a quanti è capitato di trovare nello stream della propria pagina, degli annunci sponsorizzati di proprio interesse?

Continue Reading


L’albero decisionale nel machine learning

In un articolo precedente abbiamo introdotto il concetto di Machine learning e come l’apprendimento statistico possa identificare automaticamente delle strutture nei dati e quindi effettuare predizioni con elevata accuratezza. In questo articolo, usando dei dati che riportano specifiche informazioni, creeremo un modello di machine learning.

Oltre ad essere un elemento così importante per la sopravvivenza degli esseri umani, gli alberi hanno anche ispirato un’ampia varietà di algoritmi nel Machine Learning sia per la classificazione che per la regressione.  Gli alberi decisionali, come suggerisce il nome, sono alberi di decisioni. Continue Reading


Machine Learning

Machine Learning (o Apprendimento Automatico) rappresenta un insieme di metodi sviluppati a partire dagli ultimi decenni del XX secolo che porta i computer ad apprendere e agire come fanno gli umani, migliorare in modo autonomo il loro apprendimento nel tempo, “alimentandoli” con dati e informazioni sotto forma di osservazioni e interazioni reali.

Varie comunità scientifiche hanno utilizzato nel tempo diversi nomi quali statistica computazionale, riconoscimento di pattern, reti neurali artificiali, filtraggio adattivo, teoria dei sistemi dinamici, elaborazione delle immagini, data mining, algoritmi adattivi, ecc. Tutti sinonimi per indicare l’applicazione di metodi statistici al fine di migliorare progressivamente la performance di un algoritmo nell’identificare pattern nei dati. Continue Reading


Consigli spassionati sull’ambito della sicurezza informatica

Only the paranoid survive” – Andrew “Andy” Grove

Andy Grove è una delle figure più importanti di sempre per lo sviluppo dell’industria informatica. Crebbe nell’Ungheria comunista, da cui fuggì nel 1956, studiò ingegneria in America e alla fine guidò la rivoluzione dei personal computer come CEO di Intel. È morto nel marzo del 2016 nella Silicon Valley dopo una lunga battaglia con la malattia di Parkinson. Ma cosa c’entra con la sicurezza tutto questo? Beh, quando una delle persone più potenti del mondo ci incoraggia a essere paranoici, forse dovremmo ascoltarlo…

Persino il direttore dell’FBI  James Comey – lo stesso dirigente che ha pagato degli hacker un milione di dollari per sbloccare l’iPhone – sta incoraggiando tutti a coprire le loro webcam. Dopotutto negli uffici governativi americani è prassi consolidata utilizzare una cover per coprire la webcam. E se lo dice lui…

Di cosa ti devi preoccupare? Come ricorda il motto del programma di sorveglianza del Regno Unito, “Se non hai nulla da nascondere, non hai nulla da temere”. I cittadini rispettosi della legge, invece, hanno ragione di temere! Hanno tutti i motivi per proteggere i loro dispositivi, i loro file e le loro comunicazioni con i propri cari.

Continue Reading


La programmazione ad oggetti spiegata a mio figlio

Quali sono i principi fondamentali della programmazione orientata agli oggetti? È uno di quegli argomenti che viene chiesto così spesso che un informatico non può permettersi di non sapere. Come le classiche domande banali in un colloquio, anche questa serve principalmente a scoprire il grado di preparazione di un candidato o il livello di comprensione di un argomento.

Ma torniamo a noi… Quattro principi basilari: incapsulamento, astrazione, eredità e polimorfismo.

Queste parole possono sembrare spaventose per uno sviluppatore junior. E le complesse spiegazioni eccessivamente lunghe di Wikipedia a volte non aiutano ma raddoppiano la confusione. Per questo motivo, questo articolo è dedicato ad una spiegazione semplice, breve e chiara per ciascuno dei 4 concetti, come se davanti a me ci fosse mio figlio. Continue Reading


Come costruire un motore di ricerca basato su MySQL

Nei siti web content-heavy (con molti contenuti), è importante dare la possibilità di poter effettuare ricerche in grado di aiutare gli utenti a trovare esattamente ciò che stanno cercando. La soluzione più ovvia è la ricerca diretta all’interno delle tabelle del database MySQL. Tuttavia, l’implementazione di una ricerca MySQL generica non è affatto banale. Ecco come evitare insidie ​​e creare un motore di ricerca robusto basato su MySQL.

MySQL è un database relazionale, non un motore di ricerca. Sebbene fornisca alcuni strumenti per cercare all’interno delle tabelle, è meglio integrare un vero motore di ricerca se stai cercando una soluzione a tutti gli effetti. Alcuni dei più popolari motori di ricerca (open source) sono:

Le opzioni di cui sopra sono sicuramente di gran lunga superiori, tuttavia potrebbe avere senso costruire un motore di ricerca basato solo su MySQL, magari per evitare l’installazione e la manutenzione di software aggiuntivo o perchè il nostro hosting ha risorse limitate. Continue Reading



Pagine:123456789

Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o cliccando su "Accetta" permetti il loro utilizzo.

Chiudi