La classe java.net.URL veniva aggiunta nella libreria standard di Java nel 1995, e già allora era presente un grave problema con l’implementazione del suo…
Programmazione
Introduzione alle metodologie di testing: unit testing, integration testing, e2e testing e property testing
Nel libro ‘Working Effectively with Legacy Code‘, Michael Feathers definisce il codice legacy come “codice senza test”. Questo perché è praticamente impossibile sapere se,…
Crash del Sistema: i principi di Fail Closed, Fail Open, Fail Safe e Failover
Nel momento del design di un sistema, è sempre importante cercare di prevedere i possibili stati di errore. Durante il suo utilizzo però, a…
Cosa sono e come funzionano le invarianti di ciclo (loop invariants)
Le invarianti di ciclo sono un utile strumento che permette di provare la correttezza e la terminazione di un algoritmo che esegue al suo…
[OOP] Che cos’è la legge di Demetra
Popolarizzata dall’ottimo libro “The Pragmatic Programmer”, la legge di Demetra è anche conosciuta come Principle of Least Knowledge (“principio della conoscenza minima”) e suggerisce…
Intrusive Linked List: Cosa sono e a cosa servono
Introduzione Le liste linkate intrusive sono una implementazione particolare di una lista linkata. Le sue proprietà particolari lo rendono molto utile per alcuni casi…
Sulle molte rappresentazioni di un indirizzo IP
L’ Internet Protocol, o più comunemente conosciuto come IP, è stato introdotto nell’ RFC 791 nel 1981. Il primo sistema operativo ad introdurre uno…
LDP: differenza fra pass by value e pass by reference
Definizione del problema In questo articolo vedremo cosa si intende e che differenza c’è, nell’ambito dei linguaggi di programmazione, per pass by value e…
Viaggio all’interno di una CPU con il MK1 8bit Computer
Finora ci siamo accontentati di alcune simulazioni software per capire il funzionamento di una CPU. Questi strumenti supportano sia le architetture classiche a 8…
Perchè è importante controllare il valore di ritorno di fork()
Fork (e la sorella Exec) è una funzione utilizzata sui sistemi basati su Posix per la creazione di un nuovo processo. Uno dei problemi…