Browsing posts in: Technology

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


La sicurezza web dal punto di vista di uno sviluppatore

Esistono molte situazioni per cui bisogna preoccuparsi della propria sicurezza nel Web. Per citarne alcuni, ad esempio:

  • Sei un utente che giustamente è preoccupato per la sicurezza dei propri dati personali
  • Sei uno sviluppatore web interessato a rendere le proprie app web più sicure
  • Sei uno sviluppatore web che vuole saper rispondere alle eventuali domande sulla sicurezza web in un colloquio di lavoro…

L’obiettivo di questo post è quello di illustrare alcuni acronimi comuni di sicurezza Web in un modo facile da capire ma comunque accurato. Ma prima di farlo, fissiamo un paio di concetti fondamentali di sicurezza. 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


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



React, da dove iniziare?

Nel precedente articolo, ho parlato di DOM e Virtual DOM e di quali potenzialità quest’ultimo offre agli sviluppatori per creare interfacce dinamiche performanti e veloci. Tutto questo può avvenire grazie alla libreria React.

In questo articolo, proverò a spiegarti i concetti fondamentali di React attraverso un esempio step-by-step su come creare una semplice app. Si presuppone che tu abbia già conoscenza del linguaggio Javascript e che abbia installato l’ambiente NodeJs. Continue Reading


Pagine:123456

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