tldr italyinformatica

This commit is contained in:
Francesco Mecca 2018-08-15 11:48:39 +02:00
parent 6aef3588b9
commit cf3c6be0e9
76 changed files with 5768 additions and 4584 deletions

View file

@ -6,7 +6,7 @@
<a class="btn" href="{{ site.baseurl }}contattami/">Contact me</a>
<a class="btn" href="{{ site.baseurl }}archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="{{ site.baseurl }}curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>

196
_posts/2018-27-07-dtldr.md Normal file
View file

@ -0,0 +1,196 @@
---
title: Un articolo per r/italyinformatica
date: 2018-07-27
author: pesceWanda
layout: post
categories:
- PesceWanda
tags:
- handbrake
- hacker news
- apple
- vendor lockin
- propaganda
---
Questo articolo è stato originalmente scritto per il [blog](https://tldr.italyinformatica.org)di [r/italyinformatica](https://reddit.com/r/italyinformatica).
Negli ultimi anni abbiamo assistito all'ascesa di un gran numero di linguaggi di programmazione, in particolare [Go](https://golang.rg) (2009), [Rust](https://www.rust-lang.org/en-US/) (2010), [Kotlin](https://kotlinlang.org/) (2011), [Elixir](https://elixir-lang.org/) (2011), [Crystal](https://crystal-lang.org/) (2014), [Pony](https://www.ponylang.or) (2014).
Questa esplosione di nuovi linguaggi è dovuta, fra le molte motivazioni, alla necessità di adottare paradigmi di programmazione non immediatamente recenti come cittadini di primo tipo.
Rispetto ai più maturi C, C++ o Java, Python o Ruby questi linguaggi offrono "out of the box" supporto per:
- una visione moderna delle concorrenze (le goroutines di Go o il modello ad attori di Pony ed Elixir)
- Memory safeness, in particolare:
- assenza di NULL (Pony, Rust, Kotlin)
- gestione automatica della memoria, il cosiddetto [Garbage Collector](https://en.wikipedia.org/wiki/Garbage_collection_(computer_science) (o [Reference Counting](https://en.wikipedia.org/wiki/Reference_counting) per Rust)
- assenza di puntatori
- assenza di deadlocks
- Supporto ad HTTP nella standard library
- Management delle dipendenze (ad eccezione di Kotlin)
- Namespaces
Chiaramente nessuno di questi linguaggi è oggettivamente superiore agli altri, sono tutti [turing completi](https://en.wikipedia.org/wiki/Turing_completeness) e la scelta del programmatore ricade su motivazioni del tutto personali (stile, programmazione ad oggetti, familiarità con altri linguaggi).
## Un pò di contesto
Ho scritto la mie prime due righe di codice nel 2013 per il corso di Computer Science del Politecnico di Torino.
Per mia fortuna, al Politecnico le cose si muovono ancora lentamente e ci hanno fatto usare C per tutta la durata della triennale. Si è aggiunto un corso di principi della programmazione ad oggetti al terzo anno, in Java.
Personalmente ho imparato durante l'estate di quel primo anno le basi di C++ e Python poco dopo.
Sono stati con i miei primi [progetti](https://github.com/framecca) che ho capito che non si può avere un buon linguaggio senza un buon tooling ed una community vivace e soprattutto tanta, tanta documentazione. Per questo, per molto tempo C è stata la mia prima scelta, dato che il mio target è sempre Linux.
## Gli obbiettivi prima del linguaggio
Questo post vuole essere una raccolta più o meno organizzata delle motivazioni per cui mi sono dovuto muovere oltre la frontiera di C nel mio ultimo progetto, ovvero un backend per la raccolta e presentazione di pubblicazione di ricerca e materiale didattico per più di 80 centri di ricerca.
Per il Centro [Nexa](http://nexa.polito.it/) del Politecnico di Torino mi sono ritrovato per la prima volta responsabile del codice che dovevo scrivere e dell'uso che se ne sarebbe fatto.
Ho dovuto tenere in considerazione, oltre chiaramente alla funzionalità della piattaforma, in ordine di priorità:
1. Sicurezza
2. Performance e scalabilità
3. Separazione dal frontend
4. Facilità di deploy in un server che non controllo
Fortunatamente non mi è stata imposta nessuna limitazione sulla scelta del linguaggio, altrimenti Python sarebbe stato la scelta più adeguata se avessi dovuto tener conto anche di altri programmatori.
## Benvenuto D
La mia scelta è caduta su [D](https://dlang.org).
Voglio provare ad affrontare ad uno ad uno i motivi di questa scelta magari inusuale.
#### Sicurezza
Nessuno vuole davvero vantarsi di usare un backend scritto in C/C++. Il [buffer overflow](https://en.wikipedia.org/wiki/Buffer_overflow) può essere considerato il bug più comune e ci sono [situazioni](https://techaeris.com/2017/09/27/buzz-fuzzing-find-uncommon-vulnerability/) in cui non appaiono affatto in maniera ovvia.
Inoltre per un applicativo distribuito il Garbage Collector è la scelta più performante, [specialmente se coordinato fra le varie istanze](https://www.usenix.org/node/189882).
D offre questo di design, e benchè il suo GC sia frutto di numerose [discussioni](https://www.quora.com/Which-language-has-the-brightest-future-in-replacement-of-C-between-D-Go-and-Rust-And-Why/answer/Andrei-Alexandrescu), offre in maniera del tutto innovativa, robustezza e [sicurezza](http://www.walterbright.com/gonewild.pdf).
In particolare, D presenta:
- Array che sono slices (o ranges) ma non puntatori (e neanche oggetti)
- Bound checking durante la fase di compilazione.
- Inizializzazione automatica delle variabili.
- Safe Casting (chiaramente come eredità di C++).
- Restricted pointers: si può passare una funzione per referenza dichiarandola `ref`, ma solo quando passata come parametro o di ritorno. Inoltre non c'è nessuna pointer arithmetic.
- [RAII](https://en.wikipedia.org/wiki/Resource_acquisition_is_initialization), ovvero l'acquisizione delle risorse equivale alla loro assegnazione e Scopes: le variabili hanno una lifetime limitata allo scope di dichiarazione. Nessun dangling pointer come in C.
- Strutture immutabili: come nelle specifiche di molti linguaggi funzionali, si può dichiarare una variabile come `immutable` e quindi può essere facilmente condivisa fra threads.
- @safe, @trusted: le specifiche del linguaggio permettono di annotare delle funzioni come sicure o affidabili affinchè il compilatore controlli che non gestiscano puntatori (ad esempio interfacciandosi con C) ed utilizzino il subset "sicuro" del linguaggio (maggiori dettagli in seguito).
- funzioni pure: le funzioni inoltre possono essere dichiarate pure, prive di effetti collaterali e sempre [rientranti](https://en.wikipedia.org/wiki/Reentrancy_(computing)). Questo permette di evitare [deadlocks](https://en.wikipedia.org/wiki/Deadlock) e un controllo totale sul risultato delle funzioni.
#### Performance
Ci sono moltissime soluzioni per scrivere un applicativo che si interfaccia con il web, ma hanno tutte la loro origine nel famoso [C10K problem](http://www.kegel.com/c10k.html).
Nel mio caso ho deciso di utilizzare un approccio [asincrono](https://stackoverflow.com/questions/10960998/how-different-async-programming-is-from-threads) con coroutines (anche detti [threads leggeri](https://en.wikipedia.org/wiki/Green_threads)).
Benchè D abbia [supporto nativo](https://dlang.org/library/core/thread/fiber.html) alle coroutines, ho deciso di appoggiarmi al framework più comune per web dev in D: [vibe.d](vibed.org).
Ogni volta che Vibe accetta una richiesta dall'esterno ed esegue una funzione bloccante (che interrompe l'esecuzione del programma fino al ritorno della funzione), questa viene messa in una pool di azioni da eseguire e Vibe controlla periodicamente che almeno una di queste sia pronta a ritornare un risultato e continuare con l'esecuzione di questa.
Inoltre, benchè questo meccanismo funzioni interamente su un solo thread, è elementare coordinare una [thread pool](https://en.wikipedia.org/wiki/Thread_pool) che distribuisa il carico fra i vari core che eseguono migliaia di threads leggeri concorrentemente.
#### Contratti e Tests
Non amo scrivere commenti sui programmi. Penso sia assolutamente necessario commentare il codice di librerie ma al di fuori di queste il codice (buon codice) dovrebbe essere autoesplicativo.
Inoltre, nelle mie recenti esperienze, il comportamento del programma era chiaro a partire dai tests.
In D questo concetto viene portato agli estremi applicando il ["Design by Contract programming](https://en.wikipedia.org/wiki/Design_by_contract).
Un contratto è la divisione di una funzione in:
- Precondizione, ovvero le condizioni che devono essersi verificate prima della chiamata della funzione;
- Postcondizione, ovvero le condizioni che devono essere rispettate all'uscita della funzione (solitamente applicate al risultato);
- Invarianti, ovvero le specifiche di una struttura dati che devono rimanere verificate in ogni funzione;
- Corpo della funzione
Un esempio:
```
struct Clock {
short time;
invariant {
assert (time > 0);
}
}
short addReturnTime(Clock c, short n)
in {
n > 0;
}
body {
return c->time + t;
}
out (result){
result > c->time;
}
unittest {
auto clock = Clock(60);
assert (addReturnTime(clock, 10) == 70);
}
```
Come si nota dall'esempio il supporto ai tests è built-in nel linguaggio e distanti solo una flag in fase di compilazione.
#### Un approccio moderno alle concorrenze
Il modello primitivo delle concorrenze in Posix è discutibilmente datato e prono ad errori per il programmatore.
D di default evita la condivisione di dati fra Threads.
Fra le varie motivazioni c'è il fatto che questo rifletta più realisticamente l'hardware, ma sicuramente l'obbiettivo finale è la riduzione di bug.
Non voglio dilungarmi nei dettagli di ogni singolo approccio, ma per completezza D offre out of the box i seguenti modelli:
- Message passing e [attori](http://dist-prog-book.com/chapter/3/message-passing.html), ovvero tutti i dati che vogliono essere condivisi fra thread sono incapsulati in [RPC](https://en.wikipedia.org/wiki/Remote_procedure_call);
- Green threads, come nel mio caso;
- Multi processing, ovvero ` man 3 fork `
- TaskPools, ovvero future e promises di Python e Javascript;
- [SIMD vectorization](http://moss.csc.ncsu.edu/~mueller/cluster/ps3/SDK3.0/docs/accessibility/sdkpt/cbet_1simdvector.html)
Andrei Alexandrescu, uno dei due creatori del linguaggio, dedica un intero capitolo alle concorrenze che potete leggere liberamente [qui](http://www.informit.com/articles/article.aspx?p=1609144).
#### Assenza di dogmatismi
Non potrei mai pensare di scrivere un linguaggio di programmazione senza mettere al secondo posto la semplicità.
Ma chiaramente ancora prima di discutere di semplicità la dobbiamo definire.
Go e Python sono due linguaggi semplici. Lo sono per la ridotta sintassi (Go in particolare) e perchè attraverso il loro dogmatismo costringono il programmatore ad adottare dei paradigmi di programmazione scelti dai designer di quel linguaggio. E\` il motivo per cui in python non abbiamo delle vere lambda e per cui Go non ha le eccezioni.
In D il programmatore ha libertà piena di scelta. Oltre ad un paradigma di programmazione si può ridefinire la sintassi e evitare il Garbage Collector. Si può in ultimo disattivare tutte le feature del linguaggio che sono @safe e adottare uno stile molto più vicino al C/C++, con tanto di inline asm.
## Dove iniziare
Non posso non concludere un post propagandistico senza indirizzare i più interessati alle prime risorse per imparare D.
Personalmente consiglio il [libro](http://www.informit.com/store/d-programming-language-9780321635365?w_ptgrevartcl=Concurrency+in+the+D+Programming+Language_1609144) di Andrei che offre in particolare moltissimi dettagli sulle motivazioni del design di D. Non ho ancora letto un libro che affrontasse così chiaramente il design di linguaggi di programmazione e i vari compromessi fra performance, semplicità e complessità del compilatore.
Inoltre il sito della community offre due intro per chi proviene da [C](https://dlang.org/ctod.html) e [C++](https://dlang.org/cpptod.html), oltre al classi [tour](https://tour.dlang.org/).
Inoltre la libreria standard, [Phobos](https://github.com/dlang/phobos), è talmente chiara che solitamente mi trovo a mio agio a consultare direttamente il codice piuttosto che la documentazione online.

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -35,6 +35,7 @@
<h2 id="blog-posts">Blog Posts</h2>
<ul>
<li><p>27 Jul 2018 &raquo; <a href="/pescewanda/2018/07/27/dtldr/"> Un articolo per r/italyinformatica </a></p></li>
<li><p>27 Mar 2018 &raquo; <a href="/pescewanda/2018/03/27/addio-reddit/"> Addio Reddit </a></p></li>
<li><p>02 Oct 2017 &raquo; <a href="/pescewanda/2017/10/02/minidoxguide/"> Minidox, a guide for the Europeans and the Scrooges </a></p></li>
<li><p>09 May 2017 &raquo; <a href="/pescewanda/2017/05/09/vaporwave/"> Cyber-utopia and vaporwave </a></p></li>

View file

@ -4,7 +4,7 @@
<title>Caught in the Net</title>
<link href="francescomecca.eu/atom.xml" rel="self"/>
<link href="francescomecca.eu/"/>
<updated>2018-03-27T04:25:50+02:00</updated>
<updated>2018-08-15T11:48:04+02:00</updated>
<id>francescomecca.eu</id>
<author>
<name>Francesco Mecca</name>
@ -12,6 +12,205 @@
</author>
<entry>
<title>Un articolo per r/italyinformatica</title>
<link href="francescomecca.eu/pescewanda/2018/07/27/dtldr/"/>
<updated>2018-07-27T00:00:00+02:00</updated>
<id>francescomecca.eu/pescewanda/2018/07/27/dtldr</id>
<content type="html">&lt;p&gt;Questo articolo è stato originalmente scritto per il &lt;a href=&quot;https://tldr.italyinformatica.org&quot;&gt;blog&lt;/a&gt;di &lt;a href=&quot;https://reddit.com/r/italyinformatica&quot;&gt;r/italyinformatica&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Negli ultimi anni abbiamo assistito all&amp;#39;ascesa di un gran numero di linguaggi di programmazione, in particolare &lt;a href=&quot;https://golang.rg&quot;&gt;Go&lt;/a&gt; (2009), &lt;a href=&quot;https://www.rust-lang.org/en-US/&quot;&gt;Rust&lt;/a&gt; (2010), &lt;a href=&quot;https://kotlinlang.org/&quot;&gt;Kotlin&lt;/a&gt; (2011), &lt;a href=&quot;https://elixir-lang.org/&quot;&gt;Elixir&lt;/a&gt; (2011), &lt;a href=&quot;https://crystal-lang.org/&quot;&gt;Crystal&lt;/a&gt; (2014), &lt;a href=&quot;https://www.ponylang.or&quot;&gt;Pony&lt;/a&gt; (2014).&lt;/p&gt;
&lt;p&gt;Questa esplosione di nuovi linguaggi è dovuta, fra le molte motivazioni, alla necessità di adottare paradigmi di programmazione non immediatamente recenti come cittadini di primo tipo.&lt;/p&gt;
&lt;p&gt;Rispetto ai più maturi C, C++ o Java, Python o Ruby questi linguaggi offrono &amp;quot;out of the box&amp;quot; supporto per:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;una visione moderna delle concorrenze (le goroutines di Go o il modello ad attori di Pony ed Elixir)&lt;/li&gt;
&lt;li&gt;Memory safeness, in particolare:
&lt;ul&gt;
&lt;li&gt;assenza di NULL (Pony, Rust, Kotlin)&lt;/li&gt;
&lt;li&gt;gestione automatica della memoria, il cosiddetto [Garbage Collector](&lt;a href=&quot;https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)&quot;&gt;https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)&lt;/a&gt; (o &lt;a href=&quot;https://en.wikipedia.org/wiki/Reference_counting&quot;&gt;Reference Counting&lt;/a&gt; per Rust)&lt;/li&gt;
&lt;li&gt;assenza di puntatori&lt;/li&gt;
&lt;li&gt;assenza di deadlocks&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Supporto ad HTTP nella standard library&lt;/li&gt;
&lt;li&gt;Management delle dipendenze (ad eccezione di Kotlin)&lt;/li&gt;
&lt;li&gt;Namespaces&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Chiaramente nessuno di questi linguaggi è oggettivamente superiore agli altri, sono tutti &lt;a href=&quot;https://en.wikipedia.org/wiki/Turing_completeness&quot;&gt;turing completi&lt;/a&gt; e la scelta del programmatore ricade su motivazioni del tutto personali (stile, programmazione ad oggetti, familiarità con altri linguaggi).&lt;/p&gt;
&lt;h2 id=&quot;un-p-di-contesto&quot;&gt;Un pò di contesto&lt;/h2&gt;
&lt;p&gt;Ho scritto la mie prime due righe di codice nel 2013 per il corso di Computer Science del Politecnico di Torino.&lt;/p&gt;
&lt;p&gt;Per mia fortuna, al Politecnico le cose si muovono ancora lentamente e ci hanno fatto usare C per tutta la durata della triennale. Si è aggiunto un corso di principi della programmazione ad oggetti al terzo anno, in Java.&lt;/p&gt;
&lt;p&gt;Personalmente ho imparato durante l&amp;#39;estate di quel primo anno le basi di C++ e Python poco dopo.&lt;/p&gt;
&lt;p&gt;Sono stati con i miei primi &lt;a href=&quot;https://github.com/framecca&quot;&gt;progetti&lt;/a&gt; che ho capito che non si può avere un buon linguaggio senza un buon tooling ed una community vivace e soprattutto tanta, tanta documentazione. Per questo, per molto tempo C è stata la mia prima scelta, dato che il mio target è sempre Linux.&lt;/p&gt;
&lt;h2 id=&quot;gli-obbiettivi-prima-del-linguaggio&quot;&gt;Gli obbiettivi prima del linguaggio&lt;/h2&gt;
&lt;p&gt;Questo post vuole essere una raccolta più o meno organizzata delle motivazioni per cui mi sono dovuto muovere oltre la frontiera di C nel mio ultimo progetto, ovvero un backend per la raccolta e presentazione di pubblicazione di ricerca e materiale didattico per più di 80 centri di ricerca.&lt;/p&gt;
&lt;p&gt;Per il Centro &lt;a href=&quot;http://nexa.polito.it/&quot;&gt;Nexa&lt;/a&gt; del Politecnico di Torino mi sono ritrovato per la prima volta responsabile del codice che dovevo scrivere e dell&amp;#39;uso che se ne sarebbe fatto.&lt;/p&gt;
&lt;p&gt;Ho dovuto tenere in considerazione, oltre chiaramente alla funzionalità della piattaforma, in ordine di priorità:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Sicurezza&lt;/li&gt;
&lt;li&gt;Performance e scalabilità&lt;/li&gt;
&lt;li&gt;Separazione dal frontend&lt;/li&gt;
&lt;li&gt;Facilità di deploy in un server che non controllo&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Fortunatamente non mi è stata imposta nessuna limitazione sulla scelta del linguaggio, altrimenti Python sarebbe stato la scelta più adeguata se avessi dovuto tener conto anche di altri programmatori.&lt;/p&gt;
&lt;h2 id=&quot;benvenuto-d&quot;&gt;Benvenuto D&lt;/h2&gt;
&lt;p&gt;La mia scelta è caduta su &lt;a href=&quot;https://dlang.org&quot;&gt;D&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Voglio provare ad affrontare ad uno ad uno i motivi di questa scelta magari inusuale.&lt;/p&gt;
&lt;h4 id=&quot;sicurezza&quot;&gt;Sicurezza&lt;/h4&gt;
&lt;p&gt;Nessuno vuole davvero vantarsi di usare un backend scritto in C/C++. Il &lt;a href=&quot;https://en.wikipedia.org/wiki/Buffer_overflow&quot;&gt;buffer overflow&lt;/a&gt; può essere considerato il bug più comune e ci sono &lt;a href=&quot;https://techaeris.com/2017/09/27/buzz-fuzzing-find-uncommon-vulnerability/&quot;&gt;situazioni&lt;/a&gt; in cui non appaiono affatto in maniera ovvia.&lt;/p&gt;
&lt;p&gt;Inoltre per un applicativo distribuito il Garbage Collector è la scelta più performante, &lt;a href=&quot;https://www.usenix.org/node/189882&quot;&gt;specialmente se coordinato fra le varie istanze&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;D offre questo di design, e benchè il suo GC sia frutto di numerose &lt;a href=&quot;https://www.quora.com/Which-language-has-the-brightest-future-in-replacement-of-C-between-D-Go-and-Rust-And-Why/answer/Andrei-Alexandrescu&quot;&gt;discussioni&lt;/a&gt;, offre in maniera del tutto innovativa, robustezza e &lt;a href=&quot;http://www.walterbright.com/gonewild.pdf&quot;&gt;sicurezza&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In particolare, D presenta:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Array che sono slices (o ranges) ma non puntatori (e neanche oggetti)&lt;/li&gt;
&lt;li&gt;Bound checking durante la fase di compilazione.&lt;/li&gt;
&lt;li&gt;Inizializzazione automatica delle variabili.&lt;/li&gt;
&lt;li&gt;Safe Casting (chiaramente come eredità di C++).&lt;/li&gt;
&lt;li&gt;Restricted pointers: si può passare una funzione per referenza dichiarandola &lt;code&gt;ref&lt;/code&gt;, ma solo quando passata come parametro o di ritorno. Inoltre non c&amp;#39;è nessuna pointer arithmetic.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Resource_acquisition_is_initialization&quot;&gt;RAII&lt;/a&gt;, ovvero l&amp;#39;acquisizione delle risorse equivale alla loro assegnazione e Scopes: le variabili hanno una lifetime limitata allo scope di dichiarazione. Nessun dangling pointer come in C.&lt;/li&gt;
&lt;li&gt;Strutture immutabili: come nelle specifiche di molti linguaggi funzionali, si può dichiarare una variabile come &lt;code&gt;immutable&lt;/code&gt; e quindi può essere facilmente condivisa fra threads.&lt;/li&gt;
&lt;li&gt;@safe, @trusted: le specifiche del linguaggio permettono di annotare delle funzioni come sicure o affidabili affinchè il compilatore controlli che non gestiscano puntatori (ad esempio interfacciandosi con C) ed utilizzino il subset &amp;quot;sicuro&amp;quot; del linguaggio (maggiori dettagli in seguito).&lt;/li&gt;
&lt;li&gt;funzioni pure: le funzioni inoltre possono essere dichiarate pure, prive di effetti collaterali e sempre &lt;a href=&quot;https://en.wikipedia.org/wiki/Reentrancy_(computing)&quot;&gt;rientranti&lt;/a&gt;. Questo permette di evitare &lt;a href=&quot;https://en.wikipedia.org/wiki/Deadlock&quot;&gt;deadlocks&lt;/a&gt; e un controllo totale sul risultato delle funzioni.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;performance&quot;&gt;Performance&lt;/h4&gt;
&lt;p&gt;Ci sono moltissime soluzioni per scrivere un applicativo che si interfaccia con il web, ma hanno tutte la loro origine nel famoso &lt;a href=&quot;http://www.kegel.com/c10k.html&quot;&gt;C10K problem&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Nel mio caso ho deciso di utilizzare un approccio &lt;a href=&quot;https://stackoverflow.com/questions/10960998/how-different-async-programming-is-from-threads&quot;&gt;asincrono&lt;/a&gt; con coroutines (anche detti &lt;a href=&quot;https://en.wikipedia.org/wiki/Green_threads&quot;&gt;threads leggeri&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Benchè D abbia &lt;a href=&quot;https://dlang.org/library/core/thread/fiber.html&quot;&gt;supporto nativo&lt;/a&gt; alle coroutines, ho deciso di appoggiarmi al framework più comune per web dev in D: &lt;a href=&quot;vibed.org&quot;&gt;vibe.d&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Ogni volta che Vibe accetta una richiesta dall&amp;#39;esterno ed esegue una funzione bloccante (che interrompe l&amp;#39;esecuzione del programma fino al ritorno della funzione), questa viene messa in una pool di azioni da eseguire e Vibe controlla periodicamente che almeno una di queste sia pronta a ritornare un risultato e continuare con l&amp;#39;esecuzione di questa.&lt;/p&gt;
&lt;p&gt;Inoltre, benchè questo meccanismo funzioni interamente su un solo thread, è elementare coordinare una &lt;a href=&quot;https://en.wikipedia.org/wiki/Thread_pool&quot;&gt;thread pool&lt;/a&gt; che distribuisa il carico fra i vari core che eseguono migliaia di threads leggeri concorrentemente.&lt;/p&gt;
&lt;h4 id=&quot;contratti-e-tests&quot;&gt;Contratti e Tests&lt;/h4&gt;
&lt;p&gt;Non amo scrivere commenti sui programmi. Penso sia assolutamente necessario commentare il codice di librerie ma al di fuori di queste il codice (buon codice) dovrebbe essere autoesplicativo.&lt;/p&gt;
&lt;p&gt;Inoltre, nelle mie recenti esperienze, il comportamento del programma era chiaro a partire dai tests.&lt;/p&gt;
&lt;p&gt;In D questo concetto viene portato agli estremi applicando il &lt;a href=&quot;https://en.wikipedia.org/wiki/Design_by_contract&quot;&gt;&amp;quot;Design by Contract programming&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Un contratto è la divisione di una funzione in:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Precondizione, ovvero le condizioni che devono essersi verificate prima della chiamata della funzione;&lt;/li&gt;
&lt;li&gt;Postcondizione, ovvero le condizioni che devono essere rispettate all&amp;#39;uscita della funzione (solitamente applicate al risultato);&lt;/li&gt;
&lt;li&gt;Invarianti, ovvero le specifiche di una struttura dati che devono rimanere verificate in ogni funzione;&lt;/li&gt;
&lt;li&gt;Corpo della funzione&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Un esempio:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;
struct Clock {
short time;
invariant {
assert (time &amp;gt; 0);
}
}
short addReturnTime(Clock c, short n)
in {
n &amp;gt; 0;
}
body {
return c-&amp;gt;time + t;
}
out (result){
result &amp;gt; c-&amp;gt;time;
}
unittest {
auto clock = Clock(60);
assert (addReturnTime(clock, 10) == 70);
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Come si nota dall&amp;#39;esempio il supporto ai tests è built-in nel linguaggio e distanti solo una flag in fase di compilazione.&lt;/p&gt;
&lt;h4 id=&quot;un-approccio-moderno-alle-concorrenze&quot;&gt;Un approccio moderno alle concorrenze&lt;/h4&gt;
&lt;p&gt;Il modello primitivo delle concorrenze in Posix è discutibilmente datato e prono ad errori per il programmatore.&lt;/p&gt;
&lt;p&gt;D di default evita la condivisione di dati fra Threads.
Fra le varie motivazioni c&amp;#39;è il fatto che questo rifletta più realisticamente l&amp;#39;hardware, ma sicuramente l&amp;#39;obbiettivo finale è la riduzione di bug.&lt;/p&gt;
&lt;p&gt;Non voglio dilungarmi nei dettagli di ogni singolo approccio, ma per completezza D offre out of the box i seguenti modelli:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Message passing e &lt;a href=&quot;http://dist-prog-book.com/chapter/3/message-passing.html&quot;&gt;attori&lt;/a&gt;, ovvero tutti i dati che vogliono essere condivisi fra thread sono incapsulati in &lt;a href=&quot;https://en.wikipedia.org/wiki/Remote_procedure_call&quot;&gt;RPC&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;Green threads, come nel mio caso;&lt;/li&gt;
&lt;li&gt;Multi processing, ovvero &lt;code&gt;man 3 fork&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;TaskPools, ovvero future e promises di Python e Javascript;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://moss.csc.ncsu.edu/%7Emueller/cluster/ps3/SDK3.0/docs/accessibility/sdkpt/cbet_1simdvector.html&quot;&gt;SIMD vectorization&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Andrei Alexandrescu, uno dei due creatori del linguaggio, dedica un intero capitolo alle concorrenze che potete leggere liberamente &lt;a href=&quot;http://www.informit.com/articles/article.aspx?p=1609144&quot;&gt;qui&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&quot;assenza-di-dogmatismi&quot;&gt;Assenza di dogmatismi&lt;/h4&gt;
&lt;p&gt;Non potrei mai pensare di scrivere un linguaggio di programmazione senza mettere al secondo posto la semplicità.&lt;/p&gt;
&lt;p&gt;Ma chiaramente ancora prima di discutere di semplicità la dobbiamo definire.&lt;/p&gt;
&lt;p&gt;Go e Python sono due linguaggi semplici. Lo sono per la ridotta sintassi (Go in particolare) e perchè attraverso il loro dogmatismo costringono il programmatore ad adottare dei paradigmi di programmazione scelti dai designer di quel linguaggio. E` il motivo per cui in python non abbiamo delle vere lambda e per cui Go non ha le eccezioni.&lt;/p&gt;
&lt;p&gt;In D il programmatore ha libertà piena di scelta. Oltre ad un paradigma di programmazione si può ridefinire la sintassi e evitare il Garbage Collector. Si può in ultimo disattivare tutte le feature del linguaggio che sono @safe e adottare uno stile molto più vicino al C/C++, con tanto di inline asm.&lt;/p&gt;
&lt;h2 id=&quot;dove-iniziare&quot;&gt;Dove iniziare&lt;/h2&gt;
&lt;p&gt;Non posso non concludere un post propagandistico senza indirizzare i più interessati alle prime risorse per imparare D.&lt;/p&gt;
&lt;p&gt;Personalmente consiglio il &lt;a href=&quot;http://www.informit.com/store/d-programming-language-9780321635365?w_ptgrevartcl=Concurrency+in+the+D+Programming+Language_1609144&quot;&gt;libro&lt;/a&gt; di Andrei che offre in particolare moltissimi dettagli sulle motivazioni del design di D. Non ho ancora letto un libro che affrontasse così chiaramente il design di linguaggi di programmazione e i vari compromessi fra performance, semplicità e complessità del compilatore.&lt;/p&gt;
&lt;p&gt;Inoltre il sito della community offre due intro per chi proviene da &lt;a href=&quot;https://dlang.org/ctod.html&quot;&gt;C&lt;/a&gt; e &lt;a href=&quot;https://dlang.org/cpptod.html&quot;&gt;C++&lt;/a&gt;, oltre al classi &lt;a href=&quot;https://tour.dlang.org/&quot;&gt;tour&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Inoltre la libreria standard, &lt;a href=&quot;https://github.com/dlang/phobos&quot;&gt;Phobos&lt;/a&gt;, è talmente chiara che solitamente mi trovo a mio agio a consultare direttamente il codice piuttosto che la documentazione online.&lt;/p&gt;
</content>
</entry>
<entry>
<title>Addio Reddit</title>
<link href="francescomecca.eu/pescewanda/2018/03/27/addio-reddit/"/>

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>

View file

@ -6,6 +6,207 @@
<link>francescomecca.eu</link>
<item>
<title>Un articolo per r/italyinformatica</title>
<description>&lt;p&gt;Questo articolo è stato originalmente scritto per il &lt;a href=&quot;https://tldr.italyinformatica.org&quot;&gt;blog&lt;/a&gt;di &lt;a href=&quot;https://reddit.com/r/italyinformatica&quot;&gt;r/italyinformatica&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Negli ultimi anni abbiamo assistito all&amp;#39;ascesa di un gran numero di linguaggi di programmazione, in particolare &lt;a href=&quot;https://golang.rg&quot;&gt;Go&lt;/a&gt; (2009), &lt;a href=&quot;https://www.rust-lang.org/en-US/&quot;&gt;Rust&lt;/a&gt; (2010), &lt;a href=&quot;https://kotlinlang.org/&quot;&gt;Kotlin&lt;/a&gt; (2011), &lt;a href=&quot;https://elixir-lang.org/&quot;&gt;Elixir&lt;/a&gt; (2011), &lt;a href=&quot;https://crystal-lang.org/&quot;&gt;Crystal&lt;/a&gt; (2014), &lt;a href=&quot;https://www.ponylang.or&quot;&gt;Pony&lt;/a&gt; (2014).&lt;/p&gt;
&lt;p&gt;Questa esplosione di nuovi linguaggi è dovuta, fra le molte motivazioni, alla necessità di adottare paradigmi di programmazione non immediatamente recenti come cittadini di primo tipo.&lt;/p&gt;
&lt;p&gt;Rispetto ai più maturi C, C++ o Java, Python o Ruby questi linguaggi offrono &amp;quot;out of the box&amp;quot; supporto per:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;una visione moderna delle concorrenze (le goroutines di Go o il modello ad attori di Pony ed Elixir)&lt;/li&gt;
&lt;li&gt;Memory safeness, in particolare:
&lt;ul&gt;
&lt;li&gt;assenza di NULL (Pony, Rust, Kotlin)&lt;/li&gt;
&lt;li&gt;gestione automatica della memoria, il cosiddetto [Garbage Collector](&lt;a href=&quot;https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)&quot;&gt;https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)&lt;/a&gt; (o &lt;a href=&quot;https://en.wikipedia.org/wiki/Reference_counting&quot;&gt;Reference Counting&lt;/a&gt; per Rust)&lt;/li&gt;
&lt;li&gt;assenza di puntatori&lt;/li&gt;
&lt;li&gt;assenza di deadlocks&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Supporto ad HTTP nella standard library&lt;/li&gt;
&lt;li&gt;Management delle dipendenze (ad eccezione di Kotlin)&lt;/li&gt;
&lt;li&gt;Namespaces&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Chiaramente nessuno di questi linguaggi è oggettivamente superiore agli altri, sono tutti &lt;a href=&quot;https://en.wikipedia.org/wiki/Turing_completeness&quot;&gt;turing completi&lt;/a&gt; e la scelta del programmatore ricade su motivazioni del tutto personali (stile, programmazione ad oggetti, familiarità con altri linguaggi).&lt;/p&gt;
&lt;h2 id=&quot;un-p-di-contesto&quot;&gt;Un pò di contesto&lt;/h2&gt;
&lt;p&gt;Ho scritto la mie prime due righe di codice nel 2013 per il corso di Computer Science del Politecnico di Torino.&lt;/p&gt;
&lt;p&gt;Per mia fortuna, al Politecnico le cose si muovono ancora lentamente e ci hanno fatto usare C per tutta la durata della triennale. Si è aggiunto un corso di principi della programmazione ad oggetti al terzo anno, in Java.&lt;/p&gt;
&lt;p&gt;Personalmente ho imparato durante l&amp;#39;estate di quel primo anno le basi di C++ e Python poco dopo.&lt;/p&gt;
&lt;p&gt;Sono stati con i miei primi &lt;a href=&quot;https://github.com/framecca&quot;&gt;progetti&lt;/a&gt; che ho capito che non si può avere un buon linguaggio senza un buon tooling ed una community vivace e soprattutto tanta, tanta documentazione. Per questo, per molto tempo C è stata la mia prima scelta, dato che il mio target è sempre Linux.&lt;/p&gt;
&lt;h2 id=&quot;gli-obbiettivi-prima-del-linguaggio&quot;&gt;Gli obbiettivi prima del linguaggio&lt;/h2&gt;
&lt;p&gt;Questo post vuole essere una raccolta più o meno organizzata delle motivazioni per cui mi sono dovuto muovere oltre la frontiera di C nel mio ultimo progetto, ovvero un backend per la raccolta e presentazione di pubblicazione di ricerca e materiale didattico per più di 80 centri di ricerca.&lt;/p&gt;
&lt;p&gt;Per il Centro &lt;a href=&quot;http://nexa.polito.it/&quot;&gt;Nexa&lt;/a&gt; del Politecnico di Torino mi sono ritrovato per la prima volta responsabile del codice che dovevo scrivere e dell&amp;#39;uso che se ne sarebbe fatto.&lt;/p&gt;
&lt;p&gt;Ho dovuto tenere in considerazione, oltre chiaramente alla funzionalità della piattaforma, in ordine di priorità:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Sicurezza&lt;/li&gt;
&lt;li&gt;Performance e scalabilità&lt;/li&gt;
&lt;li&gt;Separazione dal frontend&lt;/li&gt;
&lt;li&gt;Facilità di deploy in un server che non controllo&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Fortunatamente non mi è stata imposta nessuna limitazione sulla scelta del linguaggio, altrimenti Python sarebbe stato la scelta più adeguata se avessi dovuto tener conto anche di altri programmatori.&lt;/p&gt;
&lt;h2 id=&quot;benvenuto-d&quot;&gt;Benvenuto D&lt;/h2&gt;
&lt;p&gt;La mia scelta è caduta su &lt;a href=&quot;https://dlang.org&quot;&gt;D&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Voglio provare ad affrontare ad uno ad uno i motivi di questa scelta magari inusuale.&lt;/p&gt;
&lt;h4 id=&quot;sicurezza&quot;&gt;Sicurezza&lt;/h4&gt;
&lt;p&gt;Nessuno vuole davvero vantarsi di usare un backend scritto in C/C++. Il &lt;a href=&quot;https://en.wikipedia.org/wiki/Buffer_overflow&quot;&gt;buffer overflow&lt;/a&gt; può essere considerato il bug più comune e ci sono &lt;a href=&quot;https://techaeris.com/2017/09/27/buzz-fuzzing-find-uncommon-vulnerability/&quot;&gt;situazioni&lt;/a&gt; in cui non appaiono affatto in maniera ovvia.&lt;/p&gt;
&lt;p&gt;Inoltre per un applicativo distribuito il Garbage Collector è la scelta più performante, &lt;a href=&quot;https://www.usenix.org/node/189882&quot;&gt;specialmente se coordinato fra le varie istanze&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;D offre questo di design, e benchè il suo GC sia frutto di numerose &lt;a href=&quot;https://www.quora.com/Which-language-has-the-brightest-future-in-replacement-of-C-between-D-Go-and-Rust-And-Why/answer/Andrei-Alexandrescu&quot;&gt;discussioni&lt;/a&gt;, offre in maniera del tutto innovativa, robustezza e &lt;a href=&quot;http://www.walterbright.com/gonewild.pdf&quot;&gt;sicurezza&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In particolare, D presenta:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Array che sono slices (o ranges) ma non puntatori (e neanche oggetti)&lt;/li&gt;
&lt;li&gt;Bound checking durante la fase di compilazione.&lt;/li&gt;
&lt;li&gt;Inizializzazione automatica delle variabili.&lt;/li&gt;
&lt;li&gt;Safe Casting (chiaramente come eredità di C++).&lt;/li&gt;
&lt;li&gt;Restricted pointers: si può passare una funzione per referenza dichiarandola &lt;code&gt;ref&lt;/code&gt;, ma solo quando passata come parametro o di ritorno. Inoltre non c&amp;#39;è nessuna pointer arithmetic.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Resource_acquisition_is_initialization&quot;&gt;RAII&lt;/a&gt;, ovvero l&amp;#39;acquisizione delle risorse equivale alla loro assegnazione e Scopes: le variabili hanno una lifetime limitata allo scope di dichiarazione. Nessun dangling pointer come in C.&lt;/li&gt;
&lt;li&gt;Strutture immutabili: come nelle specifiche di molti linguaggi funzionali, si può dichiarare una variabile come &lt;code&gt;immutable&lt;/code&gt; e quindi può essere facilmente condivisa fra threads.&lt;/li&gt;
&lt;li&gt;@safe, @trusted: le specifiche del linguaggio permettono di annotare delle funzioni come sicure o affidabili affinchè il compilatore controlli che non gestiscano puntatori (ad esempio interfacciandosi con C) ed utilizzino il subset &amp;quot;sicuro&amp;quot; del linguaggio (maggiori dettagli in seguito).&lt;/li&gt;
&lt;li&gt;funzioni pure: le funzioni inoltre possono essere dichiarate pure, prive di effetti collaterali e sempre &lt;a href=&quot;https://en.wikipedia.org/wiki/Reentrancy_(computing)&quot;&gt;rientranti&lt;/a&gt;. Questo permette di evitare &lt;a href=&quot;https://en.wikipedia.org/wiki/Deadlock&quot;&gt;deadlocks&lt;/a&gt; e un controllo totale sul risultato delle funzioni.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;performance&quot;&gt;Performance&lt;/h4&gt;
&lt;p&gt;Ci sono moltissime soluzioni per scrivere un applicativo che si interfaccia con il web, ma hanno tutte la loro origine nel famoso &lt;a href=&quot;http://www.kegel.com/c10k.html&quot;&gt;C10K problem&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Nel mio caso ho deciso di utilizzare un approccio &lt;a href=&quot;https://stackoverflow.com/questions/10960998/how-different-async-programming-is-from-threads&quot;&gt;asincrono&lt;/a&gt; con coroutines (anche detti &lt;a href=&quot;https://en.wikipedia.org/wiki/Green_threads&quot;&gt;threads leggeri&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Benchè D abbia &lt;a href=&quot;https://dlang.org/library/core/thread/fiber.html&quot;&gt;supporto nativo&lt;/a&gt; alle coroutines, ho deciso di appoggiarmi al framework più comune per web dev in D: &lt;a href=&quot;vibed.org&quot;&gt;vibe.d&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Ogni volta che Vibe accetta una richiesta dall&amp;#39;esterno ed esegue una funzione bloccante (che interrompe l&amp;#39;esecuzione del programma fino al ritorno della funzione), questa viene messa in una pool di azioni da eseguire e Vibe controlla periodicamente che almeno una di queste sia pronta a ritornare un risultato e continuare con l&amp;#39;esecuzione di questa.&lt;/p&gt;
&lt;p&gt;Inoltre, benchè questo meccanismo funzioni interamente su un solo thread, è elementare coordinare una &lt;a href=&quot;https://en.wikipedia.org/wiki/Thread_pool&quot;&gt;thread pool&lt;/a&gt; che distribuisa il carico fra i vari core che eseguono migliaia di threads leggeri concorrentemente.&lt;/p&gt;
&lt;h4 id=&quot;contratti-e-tests&quot;&gt;Contratti e Tests&lt;/h4&gt;
&lt;p&gt;Non amo scrivere commenti sui programmi. Penso sia assolutamente necessario commentare il codice di librerie ma al di fuori di queste il codice (buon codice) dovrebbe essere autoesplicativo.&lt;/p&gt;
&lt;p&gt;Inoltre, nelle mie recenti esperienze, il comportamento del programma era chiaro a partire dai tests.&lt;/p&gt;
&lt;p&gt;In D questo concetto viene portato agli estremi applicando il &lt;a href=&quot;https://en.wikipedia.org/wiki/Design_by_contract&quot;&gt;&amp;quot;Design by Contract programming&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Un contratto è la divisione di una funzione in:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Precondizione, ovvero le condizioni che devono essersi verificate prima della chiamata della funzione;&lt;/li&gt;
&lt;li&gt;Postcondizione, ovvero le condizioni che devono essere rispettate all&amp;#39;uscita della funzione (solitamente applicate al risultato);&lt;/li&gt;
&lt;li&gt;Invarianti, ovvero le specifiche di una struttura dati che devono rimanere verificate in ogni funzione;&lt;/li&gt;
&lt;li&gt;Corpo della funzione&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Un esempio:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;
struct Clock {
short time;
invariant {
assert (time &amp;gt; 0);
}
}
short addReturnTime(Clock c, short n)
in {
n &amp;gt; 0;
}
body {
return c-&amp;gt;time + t;
}
out (result){
result &amp;gt; c-&amp;gt;time;
}
unittest {
auto clock = Clock(60);
assert (addReturnTime(clock, 10) == 70);
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Come si nota dall&amp;#39;esempio il supporto ai tests è built-in nel linguaggio e distanti solo una flag in fase di compilazione.&lt;/p&gt;
&lt;h4 id=&quot;un-approccio-moderno-alle-concorrenze&quot;&gt;Un approccio moderno alle concorrenze&lt;/h4&gt;
&lt;p&gt;Il modello primitivo delle concorrenze in Posix è discutibilmente datato e prono ad errori per il programmatore.&lt;/p&gt;
&lt;p&gt;D di default evita la condivisione di dati fra Threads.
Fra le varie motivazioni c&amp;#39;è il fatto che questo rifletta più realisticamente l&amp;#39;hardware, ma sicuramente l&amp;#39;obbiettivo finale è la riduzione di bug.&lt;/p&gt;
&lt;p&gt;Non voglio dilungarmi nei dettagli di ogni singolo approccio, ma per completezza D offre out of the box i seguenti modelli:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Message passing e &lt;a href=&quot;http://dist-prog-book.com/chapter/3/message-passing.html&quot;&gt;attori&lt;/a&gt;, ovvero tutti i dati che vogliono essere condivisi fra thread sono incapsulati in &lt;a href=&quot;https://en.wikipedia.org/wiki/Remote_procedure_call&quot;&gt;RPC&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;Green threads, come nel mio caso;&lt;/li&gt;
&lt;li&gt;Multi processing, ovvero &lt;code&gt;man 3 fork&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;TaskPools, ovvero future e promises di Python e Javascript;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://moss.csc.ncsu.edu/%7Emueller/cluster/ps3/SDK3.0/docs/accessibility/sdkpt/cbet_1simdvector.html&quot;&gt;SIMD vectorization&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Andrei Alexandrescu, uno dei due creatori del linguaggio, dedica un intero capitolo alle concorrenze che potete leggere liberamente &lt;a href=&quot;http://www.informit.com/articles/article.aspx?p=1609144&quot;&gt;qui&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&quot;assenza-di-dogmatismi&quot;&gt;Assenza di dogmatismi&lt;/h4&gt;
&lt;p&gt;Non potrei mai pensare di scrivere un linguaggio di programmazione senza mettere al secondo posto la semplicità.&lt;/p&gt;
&lt;p&gt;Ma chiaramente ancora prima di discutere di semplicità la dobbiamo definire.&lt;/p&gt;
&lt;p&gt;Go e Python sono due linguaggi semplici. Lo sono per la ridotta sintassi (Go in particolare) e perchè attraverso il loro dogmatismo costringono il programmatore ad adottare dei paradigmi di programmazione scelti dai designer di quel linguaggio. E` il motivo per cui in python non abbiamo delle vere lambda e per cui Go non ha le eccezioni.&lt;/p&gt;
&lt;p&gt;In D il programmatore ha libertà piena di scelta. Oltre ad un paradigma di programmazione si può ridefinire la sintassi e evitare il Garbage Collector. Si può in ultimo disattivare tutte le feature del linguaggio che sono @safe e adottare uno stile molto più vicino al C/C++, con tanto di inline asm.&lt;/p&gt;
&lt;h2 id=&quot;dove-iniziare&quot;&gt;Dove iniziare&lt;/h2&gt;
&lt;p&gt;Non posso non concludere un post propagandistico senza indirizzare i più interessati alle prime risorse per imparare D.&lt;/p&gt;
&lt;p&gt;Personalmente consiglio il &lt;a href=&quot;http://www.informit.com/store/d-programming-language-9780321635365?w_ptgrevartcl=Concurrency+in+the+D+Programming+Language_1609144&quot;&gt;libro&lt;/a&gt; di Andrei che offre in particolare moltissimi dettagli sulle motivazioni del design di D. Non ho ancora letto un libro che affrontasse così chiaramente il design di linguaggi di programmazione e i vari compromessi fra performance, semplicità e complessità del compilatore.&lt;/p&gt;
&lt;p&gt;Inoltre il sito della community offre due intro per chi proviene da &lt;a href=&quot;https://dlang.org/ctod.html&quot;&gt;C&lt;/a&gt; e &lt;a href=&quot;https://dlang.org/cpptod.html&quot;&gt;C++&lt;/a&gt;, oltre al classi &lt;a href=&quot;https://tour.dlang.org/&quot;&gt;tour&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Inoltre la libreria standard, &lt;a href=&quot;https://github.com/dlang/phobos&quot;&gt;Phobos&lt;/a&gt;, è talmente chiara che solitamente mi trovo a mio agio a consultare direttamente il codice piuttosto che la documentazione online.&lt;/p&gt;
</description>
<pubDate>2018-07-27T00:00:00+02:00</pubDate>
<link>francescomecca.eu/pescewanda/2018/07/27/dtldr/</link>
<guid isPermaLink="true">francescomecca.eu/pescewanda/2018/07/27/dtldr/</guid>
</item>
<item>
<title>Addio Reddit</title>
<description>&lt;blockquote&gt;

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -32,6 +32,213 @@
<div class="posts">
<div class="post">
<h1 class="post-title">
<a href="/pescewanda/2018/07/27/dtldr/">
Un articolo per r/italyinformatica
</a>
</h1>
<span class="post-date">27 Jul 2018</span>
<p>Questo articolo è stato originalmente scritto per il <a href="https://tldr.italyinformatica.org">blog</a>di <a href="https://reddit.com/r/italyinformatica">r/italyinformatica</a>.</p>
<p>Negli ultimi anni abbiamo assistito all&#39;ascesa di un gran numero di linguaggi di programmazione, in particolare <a href="https://golang.rg">Go</a> (2009), <a href="https://www.rust-lang.org/en-US/">Rust</a> (2010), <a href="https://kotlinlang.org/">Kotlin</a> (2011), <a href="https://elixir-lang.org/">Elixir</a> (2011), <a href="https://crystal-lang.org/">Crystal</a> (2014), <a href="https://www.ponylang.or">Pony</a> (2014).</p>
<p>Questa esplosione di nuovi linguaggi è dovuta, fra le molte motivazioni, alla necessità di adottare paradigmi di programmazione non immediatamente recenti come cittadini di primo tipo.</p>
<p>Rispetto ai più maturi C, C++ o Java, Python o Ruby questi linguaggi offrono &quot;out of the box&quot; supporto per:</p>
<ul>
<li>una visione moderna delle concorrenze (le goroutines di Go o il modello ad attori di Pony ed Elixir)</li>
<li>Memory safeness, in particolare:
<ul>
<li>assenza di NULL (Pony, Rust, Kotlin)</li>
<li>gestione automatica della memoria, il cosiddetto [Garbage Collector](<a href="https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)">https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)</a> (o <a href="https://en.wikipedia.org/wiki/Reference_counting">Reference Counting</a> per Rust)</li>
<li>assenza di puntatori</li>
<li>assenza di deadlocks</li>
</ul></li>
<li>Supporto ad HTTP nella standard library</li>
<li>Management delle dipendenze (ad eccezione di Kotlin)</li>
<li>Namespaces</li>
</ul>
<p>Chiaramente nessuno di questi linguaggi è oggettivamente superiore agli altri, sono tutti <a href="https://en.wikipedia.org/wiki/Turing_completeness">turing completi</a> e la scelta del programmatore ricade su motivazioni del tutto personali (stile, programmazione ad oggetti, familiarità con altri linguaggi).</p>
<h2 id="un-p-di-contesto">Un pò di contesto</h2>
<p>Ho scritto la mie prime due righe di codice nel 2013 per il corso di Computer Science del Politecnico di Torino.</p>
<p>Per mia fortuna, al Politecnico le cose si muovono ancora lentamente e ci hanno fatto usare C per tutta la durata della triennale. Si è aggiunto un corso di principi della programmazione ad oggetti al terzo anno, in Java.</p>
<p>Personalmente ho imparato durante l&#39;estate di quel primo anno le basi di C++ e Python poco dopo.</p>
<p>Sono stati con i miei primi <a href="https://github.com/framecca">progetti</a> che ho capito che non si può avere un buon linguaggio senza un buon tooling ed una community vivace e soprattutto tanta, tanta documentazione. Per questo, per molto tempo C è stata la mia prima scelta, dato che il mio target è sempre Linux.</p>
<h2 id="gli-obbiettivi-prima-del-linguaggio">Gli obbiettivi prima del linguaggio</h2>
<p>Questo post vuole essere una raccolta più o meno organizzata delle motivazioni per cui mi sono dovuto muovere oltre la frontiera di C nel mio ultimo progetto, ovvero un backend per la raccolta e presentazione di pubblicazione di ricerca e materiale didattico per più di 80 centri di ricerca.</p>
<p>Per il Centro <a href="http://nexa.polito.it/">Nexa</a> del Politecnico di Torino mi sono ritrovato per la prima volta responsabile del codice che dovevo scrivere e dell&#39;uso che se ne sarebbe fatto.</p>
<p>Ho dovuto tenere in considerazione, oltre chiaramente alla funzionalità della piattaforma, in ordine di priorità:</p>
<ol>
<li>Sicurezza</li>
<li>Performance e scalabilità</li>
<li>Separazione dal frontend</li>
<li>Facilità di deploy in un server che non controllo</li>
</ol>
<p>Fortunatamente non mi è stata imposta nessuna limitazione sulla scelta del linguaggio, altrimenti Python sarebbe stato la scelta più adeguata se avessi dovuto tener conto anche di altri programmatori.</p>
<h2 id="benvenuto-d">Benvenuto D</h2>
<p>La mia scelta è caduta su <a href="https://dlang.org">D</a>.</p>
<p>Voglio provare ad affrontare ad uno ad uno i motivi di questa scelta magari inusuale.</p>
<h4 id="sicurezza">Sicurezza</h4>
<p>Nessuno vuole davvero vantarsi di usare un backend scritto in C/C++. Il <a href="https://en.wikipedia.org/wiki/Buffer_overflow">buffer overflow</a> può essere considerato il bug più comune e ci sono <a href="https://techaeris.com/2017/09/27/buzz-fuzzing-find-uncommon-vulnerability/">situazioni</a> in cui non appaiono affatto in maniera ovvia.</p>
<p>Inoltre per un applicativo distribuito il Garbage Collector è la scelta più performante, <a href="https://www.usenix.org/node/189882">specialmente se coordinato fra le varie istanze</a>.</p>
<p>D offre questo di design, e benchè il suo GC sia frutto di numerose <a href="https://www.quora.com/Which-language-has-the-brightest-future-in-replacement-of-C-between-D-Go-and-Rust-And-Why/answer/Andrei-Alexandrescu">discussioni</a>, offre in maniera del tutto innovativa, robustezza e <a href="http://www.walterbright.com/gonewild.pdf">sicurezza</a>.</p>
<p>In particolare, D presenta:</p>
<ul>
<li>Array che sono slices (o ranges) ma non puntatori (e neanche oggetti)</li>
<li>Bound checking durante la fase di compilazione.</li>
<li>Inizializzazione automatica delle variabili.</li>
<li>Safe Casting (chiaramente come eredità di C++).</li>
<li>Restricted pointers: si può passare una funzione per referenza dichiarandola <code>ref</code>, ma solo quando passata come parametro o di ritorno. Inoltre non c&#39;è nessuna pointer arithmetic.</li>
<li><a href="https://en.wikipedia.org/wiki/Resource_acquisition_is_initialization">RAII</a>, ovvero l&#39;acquisizione delle risorse equivale alla loro assegnazione e Scopes: le variabili hanno una lifetime limitata allo scope di dichiarazione. Nessun dangling pointer come in C.</li>
<li>Strutture immutabili: come nelle specifiche di molti linguaggi funzionali, si può dichiarare una variabile come <code>immutable</code> e quindi può essere facilmente condivisa fra threads.</li>
<li>@safe, @trusted: le specifiche del linguaggio permettono di annotare delle funzioni come sicure o affidabili affinchè il compilatore controlli che non gestiscano puntatori (ad esempio interfacciandosi con C) ed utilizzino il subset &quot;sicuro&quot; del linguaggio (maggiori dettagli in seguito).</li>
<li>funzioni pure: le funzioni inoltre possono essere dichiarate pure, prive di effetti collaterali e sempre <a href="https://en.wikipedia.org/wiki/Reentrancy_(computing)">rientranti</a>. Questo permette di evitare <a href="https://en.wikipedia.org/wiki/Deadlock">deadlocks</a> e un controllo totale sul risultato delle funzioni.</li>
</ul>
<h4 id="performance">Performance</h4>
<p>Ci sono moltissime soluzioni per scrivere un applicativo che si interfaccia con il web, ma hanno tutte la loro origine nel famoso <a href="http://www.kegel.com/c10k.html">C10K problem</a>.</p>
<p>Nel mio caso ho deciso di utilizzare un approccio <a href="https://stackoverflow.com/questions/10960998/how-different-async-programming-is-from-threads">asincrono</a> con coroutines (anche detti <a href="https://en.wikipedia.org/wiki/Green_threads">threads leggeri</a>).</p>
<p>Benchè D abbia <a href="https://dlang.org/library/core/thread/fiber.html">supporto nativo</a> alle coroutines, ho deciso di appoggiarmi al framework più comune per web dev in D: <a href="vibed.org">vibe.d</a>.</p>
<p>Ogni volta che Vibe accetta una richiesta dall&#39;esterno ed esegue una funzione bloccante (che interrompe l&#39;esecuzione del programma fino al ritorno della funzione), questa viene messa in una pool di azioni da eseguire e Vibe controlla periodicamente che almeno una di queste sia pronta a ritornare un risultato e continuare con l&#39;esecuzione di questa.</p>
<p>Inoltre, benchè questo meccanismo funzioni interamente su un solo thread, è elementare coordinare una <a href="https://en.wikipedia.org/wiki/Thread_pool">thread pool</a> che distribuisa il carico fra i vari core che eseguono migliaia di threads leggeri concorrentemente.</p>
<h4 id="contratti-e-tests">Contratti e Tests</h4>
<p>Non amo scrivere commenti sui programmi. Penso sia assolutamente necessario commentare il codice di librerie ma al di fuori di queste il codice (buon codice) dovrebbe essere autoesplicativo.</p>
<p>Inoltre, nelle mie recenti esperienze, il comportamento del programma era chiaro a partire dai tests.</p>
<p>In D questo concetto viene portato agli estremi applicando il <a href="https://en.wikipedia.org/wiki/Design_by_contract">&quot;Design by Contract programming</a>.</p>
<p>Un contratto è la divisione di una funzione in:</p>
<ul>
<li>Precondizione, ovvero le condizioni che devono essersi verificate prima della chiamata della funzione;</li>
<li>Postcondizione, ovvero le condizioni che devono essere rispettate all&#39;uscita della funzione (solitamente applicate al risultato);</li>
<li>Invarianti, ovvero le specifiche di una struttura dati che devono rimanere verificate in ogni funzione;</li>
<li>Corpo della funzione</li>
</ul>
<p>Un esempio:</p>
<div class="highlight"><pre><code class="language-" data-lang="">
struct Clock {
short time;
invariant {
assert (time &gt; 0);
}
}
short addReturnTime(Clock c, short n)
in {
n &gt; 0;
}
body {
return c-&gt;time + t;
}
out (result){
result &gt; c-&gt;time;
}
unittest {
auto clock = Clock(60);
assert (addReturnTime(clock, 10) == 70);
}
</code></pre></div>
<p>Come si nota dall&#39;esempio il supporto ai tests è built-in nel linguaggio e distanti solo una flag in fase di compilazione.</p>
<h4 id="un-approccio-moderno-alle-concorrenze">Un approccio moderno alle concorrenze</h4>
<p>Il modello primitivo delle concorrenze in Posix è discutibilmente datato e prono ad errori per il programmatore.</p>
<p>D di default evita la condivisione di dati fra Threads.
Fra le varie motivazioni c&#39;è il fatto che questo rifletta più realisticamente l&#39;hardware, ma sicuramente l&#39;obbiettivo finale è la riduzione di bug.</p>
<p>Non voglio dilungarmi nei dettagli di ogni singolo approccio, ma per completezza D offre out of the box i seguenti modelli:</p>
<ul>
<li>Message passing e <a href="http://dist-prog-book.com/chapter/3/message-passing.html">attori</a>, ovvero tutti i dati che vogliono essere condivisi fra thread sono incapsulati in <a href="https://en.wikipedia.org/wiki/Remote_procedure_call">RPC</a>;</li>
<li>Green threads, come nel mio caso;</li>
<li>Multi processing, ovvero <code>man 3 fork</code></li>
<li>TaskPools, ovvero future e promises di Python e Javascript;</li>
<li><a href="http://moss.csc.ncsu.edu/%7Emueller/cluster/ps3/SDK3.0/docs/accessibility/sdkpt/cbet_1simdvector.html">SIMD vectorization</a></li>
</ul>
<p>Andrei Alexandrescu, uno dei due creatori del linguaggio, dedica un intero capitolo alle concorrenze che potete leggere liberamente <a href="http://www.informit.com/articles/article.aspx?p=1609144">qui</a>.</p>
<h4 id="assenza-di-dogmatismi">Assenza di dogmatismi</h4>
<p>Non potrei mai pensare di scrivere un linguaggio di programmazione senza mettere al secondo posto la semplicità.</p>
<p>Ma chiaramente ancora prima di discutere di semplicità la dobbiamo definire.</p>
<p>Go e Python sono due linguaggi semplici. Lo sono per la ridotta sintassi (Go in particolare) e perchè attraverso il loro dogmatismo costringono il programmatore ad adottare dei paradigmi di programmazione scelti dai designer di quel linguaggio. E` il motivo per cui in python non abbiamo delle vere lambda e per cui Go non ha le eccezioni.</p>
<p>In D il programmatore ha libertà piena di scelta. Oltre ad un paradigma di programmazione si può ridefinire la sintassi e evitare il Garbage Collector. Si può in ultimo disattivare tutte le feature del linguaggio che sono @safe e adottare uno stile molto più vicino al C/C++, con tanto di inline asm.</p>
<h2 id="dove-iniziare">Dove iniziare</h2>
<p>Non posso non concludere un post propagandistico senza indirizzare i più interessati alle prime risorse per imparare D.</p>
<p>Personalmente consiglio il <a href="http://www.informit.com/store/d-programming-language-9780321635365?w_ptgrevartcl=Concurrency+in+the+D+Programming+Language_1609144">libro</a> di Andrei che offre in particolare moltissimi dettagli sulle motivazioni del design di D. Non ho ancora letto un libro che affrontasse così chiaramente il design di linguaggi di programmazione e i vari compromessi fra performance, semplicità e complessità del compilatore.</p>
<p>Inoltre il sito della community offre due intro per chi proviene da <a href="https://dlang.org/ctod.html">C</a> e <a href="https://dlang.org/cpptod.html">C++</a>, oltre al classi <a href="https://tour.dlang.org/">tour</a>.</p>
<p>Inoltre la libreria standard, <a href="https://github.com/dlang/phobos">Phobos</a>, è talmente chiara che solitamente mi trovo a mio agio a consultare direttamente il codice piuttosto che la documentazione online.</p>
</div>
</br>
<hr>
</br>
<span> </span>
<div class="post">
<h1 class="post-title">
<a href="/pescewanda/2018/03/27/addio-reddit/">
@ -348,74 +555,6 @@ GND [ ] [x] GND
</br>
<hr>
</br>
<span> </span>
<div class="post">
<h1 class="post-title">
<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">
Some shallow thoughts from my tiny virtual space
</a>
</h1>
<span class="post-date">20 Mar 2017</span>
<p>I am not the kind of guy who goes to concerts. Ever.</p>
<p>I prefer studio recordings because in these, the logical thoughts of the artist emerge as the track comes to life and reaches our ears. I have always been attracted by that, much more than to the sprinkle of emotions that come from venues and theaters.</p>
<p>In my case the exceptions are the live performances of Dale Crover (from The Melvins) and Jeff Mangum. Both of which were some kind of unshaped epiphanic experiences for me. </p>
<p>Milan, December 2015, The Melvins were at the end of their most recent European tour when Jeff Pinkus drops the bass guitar, tunes the effects pedal and kicks the bass with his bare foot until the right repetition of sounds comes out of the speakers. Slowly, each one of the members leaves the stage, sounds are still coming from
the earlier kicks to the speakers up to my ears.</p>
<p>Once home, the performance by The Melvins made me recognize the different stages of communication. </p>
<p>We can think of three stages. The first one is <strong>trial</strong>, or
experimentation, field test. This first phase is as obvious as it is accidental.</p>
<p>The second stage is about <strong>excess</strong>. Excess is to acknowledge that what was played today will be different to what will be played tomorrow. A draft becomes a singular work that may not come to an end.</p>
<p>The last one is the most important one if we want to understand the dynamics of the Internet: <strong>dissipation</strong>. With the act of dissipation, the work of the artist that reached its own way on a tiny and crucial fraction of time, that is the moment, folds on itself, and it is forever lost by an act of absence, the absence of objective memory.</p>
<h2 id="internet-dynamics">Internet dynamics</h2>
<p>On the internet <strong>hounding</strong> supersedes <em>dissipation</em>.</p>
<p>Hounding is the reason why thousands of men from different backgrounds congregate in small Facebook groups and share photos of their friends, wives and relevant others.</p>
<p>On the original Italian <a href="http://francescomecca.eu/pescewanda/2017/03/07/spazio-digitale-rant-facebook/">blog post</a> I reported some Italian references on this phenomenon that dont have much cultural significance for the English readers. Therefore,
I want to explain the phenomenon in other words. </p>
<p>The discussion about these Facebook groups in Italy consist of an online phenomenon regarding group of males playing what they call the game of &quot;What would you do&quot;
with sexually or less explicit photos of friends and wives.</p>
<p>The game is as far as ever from an online <a href="https://en.wikipedia.org/wiki/Role-playing_game">rpg</a> or creative. It degrades every time in vulgar and extremist comments about the body of the girls depicted.</p>
<p>I do believe that one of the many reasons to explain the inception of these online groups is the impossibility to overcome the absence of dissipation in online
communication.</p>
<p>Machines do not remember but they never make us forget, they cross our space online with a continuous stream of photos and other people&#39;s moments.
Algorithms do not follow our placid flow of continuous time online and they snap it in collages of instants.</p>
<h2 id="recollection">Recollection</h2>
<p>In my first online experience, the interactions I had did not have the quality of recollection.
I divided my time between irc and mailing lists. I felt the obligation to archive every tiny succession of words that gave some light to me.</p>
<p>(I still do).</p>
<p>Then web caches arrived, the <a href="archive.org">Wayback Machine</a>, Reddit, social networks. Nowdata can hardly ever disappear.</p>
<p>It seems to me that it is just a worthy form of tenacity, not remembrance in any form.</p>
<p>For the joy of archivists and the ones with a wistful gaze. And still unpleasant for someone.</p>
<p>(This translation is for Madeline, thank you for still taking the time to read my blog)</p>
</div>
</br>
<hr>
</br>
<span> </span>
</div>

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -123,6 +123,15 @@
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -160,15 +169,6 @@
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -215,6 +215,59 @@
@ -633,79 +686,6 @@

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -153,6 +153,15 @@
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -190,15 +199,6 @@
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -237,6 +237,49 @@
@ -591,65 +634,6 @@

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -117,6 +117,15 @@
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -154,15 +163,6 @@
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -209,6 +209,59 @@
@ -627,79 +680,6 @@

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -107,6 +107,15 @@
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -144,15 +153,6 @@
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -191,6 +191,49 @@
@ -527,65 +570,6 @@

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -111,6 +111,15 @@
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -148,15 +157,6 @@
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -195,6 +195,49 @@
@ -531,65 +574,6 @@

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -76,6 +76,15 @@ David Gomez, un ex agente dell&#8217;FBI , ha detto che il velivolo di sorveglia
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -113,15 +122,6 @@ David Gomez, un ex agente dell&#8217;FBI , ha detto che il velivolo di sorveglia
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -136,6 +136,19 @@ David Gomez, un ex agente dell&#8217;FBI , ha detto che il velivolo di sorveglia
@ -229,23 +242,6 @@ David Gomez, un ex agente dell&#8217;FBI , ha detto che il velivolo di sorveglia

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -49,6 +49,15 @@
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -86,15 +95,6 @@
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -109,6 +109,19 @@
@ -202,23 +215,6 @@

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -93,6 +93,15 @@
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -130,15 +139,6 @@
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -185,6 +185,59 @@
@ -603,79 +656,6 @@

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -166,6 +166,15 @@ Command successful.</pre>
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -203,15 +212,6 @@ Command successful.</pre>
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -266,6 +266,69 @@ Command successful.</pre>
@ -766,93 +829,6 @@ Command successful.</pre>

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -69,6 +69,15 @@ perl-cleaner --all</pre>
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -106,15 +115,6 @@ perl-cleaner --all</pre>
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -177,6 +177,79 @@ perl-cleaner --all</pre>
@ -759,107 +832,6 @@ perl-cleaner --all</pre>

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -131,6 +131,15 @@ The original idea for the Buridan&#39;s donkey came from my mentor <a href="http
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -168,15 +177,6 @@ The original idea for the Buridan&#39;s donkey came from my mentor <a href="http
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -247,6 +247,89 @@ The original idea for the Buridan&#39;s donkey came from my mentor <a href="http
@ -911,121 +994,6 @@ The original idea for the Buridan&#39;s donkey came from my mentor <a href="http

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -85,6 +85,15 @@
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -122,15 +131,6 @@
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -193,6 +193,79 @@
@ -775,107 +848,6 @@

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -108,6 +108,15 @@ Truecrypt permette di creare un volume crittografico che si presenta come un fil
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -145,15 +154,6 @@ Truecrypt permette di creare un volume crittografico che si presenta come un fil
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -192,6 +192,49 @@ Truecrypt permette di creare un volume crittografico che si presenta come un fil
@ -528,65 +571,6 @@ Truecrypt permette di creare un volume crittografico che si presenta come un fil

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -667,6 +667,15 @@
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -704,15 +713,6 @@
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -727,6 +727,19 @@
@ -820,23 +833,6 @@

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -92,6 +92,15 @@
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -129,15 +138,6 @@
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -152,6 +152,19 @@
@ -245,23 +258,6 @@

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -68,6 +68,15 @@
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -105,15 +114,6 @@
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -128,6 +128,19 @@
@ -221,23 +234,6 @@

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -184,6 +184,15 @@
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -221,15 +230,6 @@
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -268,6 +268,49 @@
@ -604,65 +647,6 @@

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -105,6 +105,15 @@ Alcuni <a href="https://trac.torproject.org/projects/tor/wiki/doc/GoodBadISPs" t
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -142,15 +151,6 @@ Alcuni <a href="https://trac.torproject.org/projects/tor/wiki/doc/GoodBadISPs" t
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -189,6 +189,49 @@ Alcuni <a href="https://trac.torproject.org/projects/tor/wiki/doc/GoodBadISPs" t
@ -525,65 +568,6 @@ Alcuni <a href="https://trac.torproject.org/projects/tor/wiki/doc/GoodBadISPs" t

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -59,6 +59,15 @@ L&#8217;opera si trova a Berlino.</p>
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -96,15 +105,6 @@ L&#8217;opera si trova a Berlino.</p>
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -119,6 +119,19 @@ L&#8217;opera si trova a Berlino.</p>
@ -212,23 +225,6 @@ L&#8217;opera si trova a Berlino.</p>

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -113,6 +113,15 @@
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -150,15 +159,6 @@
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -173,6 +173,19 @@
@ -266,23 +279,6 @@

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -61,6 +61,15 @@ L&#8217;attacco avviene attraverso l&#8217;uso di codice Javascript e analizza l
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -98,15 +107,6 @@ L&#8217;attacco avviene attraverso l&#8217;uso di codice Javascript e analizza l
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -121,6 +121,19 @@ L&#8217;attacco avviene attraverso l&#8217;uso di codice Javascript e analizza l
@ -214,23 +227,6 @@ L&#8217;attacco avviene attraverso l&#8217;uso di codice Javascript e analizza l

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -149,6 +149,15 @@
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -186,15 +195,6 @@
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -209,6 +209,19 @@
@ -302,23 +315,6 @@

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -71,6 +71,15 @@ Secondo alcuni amministartori del sito, tra cui OptimusCrime, Boneless vendette
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -108,15 +117,6 @@ Secondo alcuni amministartori del sito, tra cui OptimusCrime, Boneless vendette
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -131,6 +131,19 @@ Secondo alcuni amministartori del sito, tra cui OptimusCrime, Boneless vendette
@ -224,23 +237,6 @@ Secondo alcuni amministartori del sito, tra cui OptimusCrime, Boneless vendette

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -124,6 +124,15 @@ Estimates of the current size of the body of federal criminal law vary. It has b
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -161,15 +170,6 @@ Estimates of the current size of the body of federal criminal law vary. It has b
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -216,6 +216,59 @@ Estimates of the current size of the body of federal criminal law vary. It has b
@ -651,93 +704,6 @@ Estimates of the current size of the body of federal criminal law vary. It has b
<h4>Similar Posts</h4>
<ul>
<li class="relatedPost">
<a href="/pescewanda/2016/07/07/pres-berk/">A short talk about cryptography at the Berkman Klein Center
</a>
</li>
</ul>

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -89,6 +89,15 @@ In questo modo ed attraverso i cookie Facebook riesce a riunire la maggior parte
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -126,15 +135,6 @@ In questo modo ed attraverso i cookie Facebook riesce a riunire la maggior parte
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -213,6 +213,99 @@ In questo modo ed attraverso i cookie Facebook riesce a riunire la maggior parte
@ -977,135 +1070,6 @@ In questo modo ed attraverso i cookie Facebook riesce a riunire la maggior parte

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -138,6 +138,15 @@
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -175,15 +184,6 @@
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -198,6 +198,19 @@
@ -291,23 +304,6 @@

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -61,6 +61,15 @@ Il payload è un tipo di shellcode, ovvero un piccolo pezzo di codice, che sfrut
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -98,15 +107,6 @@ Il payload è un tipo di shellcode, ovvero un piccolo pezzo di codice, che sfrut
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -121,6 +121,19 @@ Il payload è un tipo di shellcode, ovvero un piccolo pezzo di codice, che sfrut
@ -214,23 +227,6 @@ Il payload è un tipo di shellcode, ovvero un piccolo pezzo di codice, che sfrut

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -63,6 +63,15 @@
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -100,15 +109,6 @@
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -123,6 +123,19 @@
@ -216,23 +229,6 @@

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -113,6 +113,15 @@
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -150,15 +159,6 @@
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -173,6 +173,19 @@
@ -266,23 +279,6 @@

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -100,6 +100,15 @@ I dati sono la risposta economica a: “Iscriviti, e&#8217; gratis e lo sarà se
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -137,15 +146,6 @@ I dati sono la risposta economica a: “Iscriviti, e&#8217; gratis e lo sarà se
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -200,6 +200,69 @@ I dati sono la risposta economica a: “Iscriviti, e&#8217; gratis e lo sarà se
@ -700,93 +763,6 @@ I dati sono la risposta economica a: “Iscriviti, e&#8217; gratis e lo sarà se

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -90,6 +90,15 @@
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -127,15 +136,6 @@
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -150,6 +150,19 @@
@ -243,23 +256,6 @@

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -79,6 +79,15 @@ echo Complete.
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -116,15 +125,6 @@ echo Complete.
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -163,6 +163,49 @@ echo Complete.
@ -499,65 +542,6 @@ echo Complete.

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -50,6 +50,15 @@
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -87,15 +96,6 @@
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -110,6 +110,19 @@
@ -203,23 +216,6 @@

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -92,6 +92,15 @@
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -129,15 +138,6 @@
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -176,6 +176,49 @@
@ -512,65 +555,6 @@

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -32,6 +32,131 @@
<div class="posts">
<div class="post">
<h1 class="post-title">
<a href="/index.php/archives/57">
Suicide Linux
</a>
</h1>
<span class="post-date">19 Apr 2015</span>
<div class="MsoNormal" style="text-align:center;">
</div>
<div class="MsoNormal" style="text-align:center;">
Tradotto da:<a href="http://qntm.org/suicide">http://qntm.org/suicide</a>
</div>
<div class="MsoNormal" style="text-align:justify;">
</div>
<div class="MsoNormal">
</div>
<div class="MsoNormal" style="text-align:justify;">
Sai come qualche volta se sbagli a digitare il nome di un file nella bash, questa corregge il tuo spelling e fa comunque partire il comando? Come quando si cambia directory, o si apre un file.
</div>
<div class="MsoNormal" style="text-align:justify;">
</div>
<div class="MsoNormal" style="text-align:justify;">
Io ho inventato Suicide Linux. Ogni volta &#8211;<i>ogni</i> volta- scrivi qualsiasi comando remoto non corretto, linterprete lo risolve creativamente in un<span style="color:red;"> rm rf</span> / e pulisce il tuo hard drive.
</div>
<div class="MsoNormal" style="text-align:justify;">
</div>
<div class="MsoNormal" style="text-align:justify;">
È un gioco. Come camminare sul filo di un rasoio. Devi vedere quanto a lungo puoi continuare a usare il sistema operativo prima di perdere tutti i tuoi dati.</p>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left:auto;margin-right:auto;text-align:center;">
<tr>
<td style="text-align:center;">
<a href="http://francescomecca.eu/wp-content/uploads/2015/08/06c29-suicide2blinux.png" style="margin-left:auto;margin-right:auto;"><img border="0" height="300" src="http://francescomecca.eu/wp-content/uploads/2015/08/06c29-suicide2blinux.png?w=300" width="400" /></a>
</td>
</tr>
<tr>
<td class="tr-caption" style="text-align:center;">
<a href="https://d.maxfile.ro/pswtpazxfd.png">fonte</a>
</td>
</tr>
</table>
<div style="text-align:center;">
</div>
</div>
<div class="MsoNormal" style="text-align:justify;">
</div>
<div class="MsoNormal" style="text-align:justify;">
<b>Aggiornamento 2011-12-26</b>
</div>
<div class="MsoNormal" style="text-align:justify;">
</div>
<div class="MsoNormal" style="text-align:justify;">
Suicide Linux ora sembra essere un pacchetto di Debian. Spettacolare!
</div>
<div class="MsoNormal" style="text-align:justify;">
</div>
<div class="MsoNormal" style="text-align:justify;">
Una video dimostrazione è disponibile. La reazione del sistema operativo è attualmente piuttosto deludente. Penseresti che il sistema operativo faccia spuntare alcuni errori piuttosto urgenti se vai in giro a cancellare parti di esso?
</div>
<div class="MsoNormal" style="text-align:justify;">
</div>
<div class="MsoNormal" style="text-align:justify;">
Forse <span style="color:red;">rm rf / </span>dovrebbe essere rimpiazzato con qualcosa che abbia impostato più flags dettagliati. In questo modo, quando esegui un comando sbagliato, ti viene detto immediatamente che le cose stanno per essere cancellate e tu hai una possibilità di combattere per annullare loperazione prima che il tuo sistema diventi inoperabile. Questo ti permette di vedere quanto a lungo puoi lavorare e quanti documenti puoi perdere prima che il sistema fallisca interamente.
</div>
<div class="MsoNormal" style="text-align:justify;">
</div>
<div class="MsoNormal" style="text-align:justify;">
Un altro, un suggerimento un po più serio, se Suicide Linux cancella in maniera casuale un singolo file senza dirtelo ogni volta che fai un errore tipografico, può essere uno sguardo interessante nella stabilità del tuo sistema operativo e uno strumento educativo per la diagnosi e la riparazione dei sistemi corrotti. Non sto pretendendo che Suicide Linux abbia qualche merito genuino, certamente.
</div>
<div class="MsoNormal" style="text-align:justify;">
</div>
<div class="MsoNormal" style="text-align:justify;">
<b>Aggiornamento 2015-04-18</b>
</div>
<div class="MsoNormal" style="text-align:justify;">
</div>
<div class="MsoNormal" style="text-align:justify;">
La funzionalità correzione automatica che io ho originariamente descritto qui fu una caratteristica del primo sistema Linux che io abbia mai usato, così ho assunto che fosse come ogni sistema Linux lavorato di default. Da quando sono venuto a conoscenza che è un doodad extra completamente opzionale.
</div>
<div class="MsoNormal" style="text-align:justify;">
</div>
<div class="MsoNormal" style="text-align:justify;">
</div>
<div class="MsoNormal" style="text-align:justify;">
</div>
<div style="text-align:right;">
<span style="font-family:Calibri, sans-serif;font-size:11pt;">Gabriele Corso </span>
</div>
</div>
</br>
<hr>
</br>
<span> </span>
<div class="post">
<h1 class="post-title">
<a href="/index.php/archives/60">
@ -356,43 +481,6 @@ In questo modo ed attraverso i cookie Facebook riesce a riunire la maggior parte
</br>
<hr>
</br>
<span> </span>
<div class="post">
<h1 class="post-title">
<a href="/index.php/archives/73">
L&#8217;anonimato violato di TOR
</a>
</h1>
<span class="post-date">13 Apr 2015</span>
<p>Miliardi di persone usano giornalmente internet, ma sono poche quelle a conoscenza del suo lato oscuro, il deep web,nel quale sono presenti siti che gestiscono business illegali (dalla vendita di account rubati alla clonazione di carte di credito) e al quale tutti possono accedere tramite &#8220;Tor&#8221;. Questo è un software che rende chi lo utilizza invisibile, poichè nasconde l&#8217;indirizzo IP del computer tramite la crittografia a strati, da qui il nome scelto che sta per &#8220;The Onion Router&#8221;. Infatti grazie a Tor l&#8217;utente si collega al sito che vuole visitare passando però da una serie di altri server che fungono da router e cifrano la comunicazione.</p>
<div class="separator" style="clear:both;text-align:center;">
<a href="http://francescomecca.eu/wp-content/uploads/2015/08/a2cc6-tor_newsbitcoin.jpg" style="margin-left:1em;margin-right:1em;"><img border="0" height="196" src="http://francescomecca.eu/wp-content/uploads/2015/08/a2cc6-tor_newsbitcoin.jpg" width="320" /></a>
</div>
<div class="separator" style="clear:both;text-align:center;">
foto presa da <a href="http://www.newsbitcoin.it/190/tor-installazione-e-configurazione/" target="_blank">newsbitcoin.it</a>
</div>
<p>Tuttavia, dal 30 Gennaio al 4 Luglio 2014, Tor è stato colpito da attacchi da parte dell&#8217;FBI che miravano a togliere l&#8217;anonimato. Il bersaglio dell&#8217;attacco non sono state solo le persone che hanno utilizzato il software per la navigazione anonima, ma anche chi creava e gestiva siti web e servizi online in maniera anonima. Le persone a rischio infatti erano quelle che visitavano i siti che erano stati precedentemente compromessi, ovvero quei siti che incorporavano nel loro codice il payload.<br>
Il payload è un tipo di shellcode, ovvero un piccolo pezzo di codice, che sfrutta una vulnerabilità del software per lanciare un command shell dal pc infetto ed eseguire determinate funzioni. Questo payload, chiamato magneto, si avviava in un pezzo non mappato di memoria e mandava comandi ARP all&#8217;host e in seguito si connetteva tramite una semplice richiesta HTTP a un indirizzo localizzato in Virginia USA. Questa richiesta avveniva al di fuori di TOR, in maniera tale da esporre, oltre l&#8217;indirizzo MAC, l&#8217;IP del computer.</p>
<p>Sullo smascheramento delle identità di persone che fanno uso di software come TOR però si sono create due correnti di pensiero diverse. Una da più peso all&#8217;aspetto negativo che deriva dal fatto di concedere l&#8217;anonimato e si schiera a favore di questi metodi per rivelare l&#8217;identità di chi naviga su tali software, come per esempio la Russia che è arrivata a offrire 3,9 milioni di rubli a chiunque trovasse un modo per togliere l&#8217;anonimato agli utenti del sistema. L&#8217;altra corrente di pensiero, della quale fa parte anche il movimento &#8220;Anonymous&#8221;, crede sia necessario avere un modo per restare invisibili sulla rete poichè questi sistemi sono usati anche da attivisti politici che si trovano in paesi in cui vige una forte censura e quindi l&#8217;anonimato gli permette di non essere rintracciati dai loro governi.</p>
<p>fonti[<a href="http://www.ilsole24ore.com/art/tecnologie/2014-07-31/tor-attacco-hacker-ha-violato-mesi-anonimato-utenti-204102.shtml?uuid=ABCPcFgB">ilsole24ore.com</a> , <a href="http://it.ibtimes.com/lanonimato-sul-web-violato-6-mesi-la-rete-tor-colpita-dagli-hacker-1353982">ibtimes.com</a>]</p>
<p>                                                                                                                                                                                                                                                                               Eugenio Corso </p>
<div>
</div>
</div>
</br>
<hr>
</br>
<span> </span>
</div>

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -32,6 +32,43 @@
<div class="posts">
<div class="post">
<h1 class="post-title">
<a href="/index.php/archives/73">
L&#8217;anonimato violato di TOR
</a>
</h1>
<span class="post-date">13 Apr 2015</span>
<p>Miliardi di persone usano giornalmente internet, ma sono poche quelle a conoscenza del suo lato oscuro, il deep web,nel quale sono presenti siti che gestiscono business illegali (dalla vendita di account rubati alla clonazione di carte di credito) e al quale tutti possono accedere tramite &#8220;Tor&#8221;. Questo è un software che rende chi lo utilizza invisibile, poichè nasconde l&#8217;indirizzo IP del computer tramite la crittografia a strati, da qui il nome scelto che sta per &#8220;The Onion Router&#8221;. Infatti grazie a Tor l&#8217;utente si collega al sito che vuole visitare passando però da una serie di altri server che fungono da router e cifrano la comunicazione.</p>
<div class="separator" style="clear:both;text-align:center;">
<a href="http://francescomecca.eu/wp-content/uploads/2015/08/a2cc6-tor_newsbitcoin.jpg" style="margin-left:1em;margin-right:1em;"><img border="0" height="196" src="http://francescomecca.eu/wp-content/uploads/2015/08/a2cc6-tor_newsbitcoin.jpg" width="320" /></a>
</div>
<div class="separator" style="clear:both;text-align:center;">
foto presa da <a href="http://www.newsbitcoin.it/190/tor-installazione-e-configurazione/" target="_blank">newsbitcoin.it</a>
</div>
<p>Tuttavia, dal 30 Gennaio al 4 Luglio 2014, Tor è stato colpito da attacchi da parte dell&#8217;FBI che miravano a togliere l&#8217;anonimato. Il bersaglio dell&#8217;attacco non sono state solo le persone che hanno utilizzato il software per la navigazione anonima, ma anche chi creava e gestiva siti web e servizi online in maniera anonima. Le persone a rischio infatti erano quelle che visitavano i siti che erano stati precedentemente compromessi, ovvero quei siti che incorporavano nel loro codice il payload.<br>
Il payload è un tipo di shellcode, ovvero un piccolo pezzo di codice, che sfrutta una vulnerabilità del software per lanciare un command shell dal pc infetto ed eseguire determinate funzioni. Questo payload, chiamato magneto, si avviava in un pezzo non mappato di memoria e mandava comandi ARP all&#8217;host e in seguito si connetteva tramite una semplice richiesta HTTP a un indirizzo localizzato in Virginia USA. Questa richiesta avveniva al di fuori di TOR, in maniera tale da esporre, oltre l&#8217;indirizzo MAC, l&#8217;IP del computer.</p>
<p>Sullo smascheramento delle identità di persone che fanno uso di software come TOR però si sono create due correnti di pensiero diverse. Una da più peso all&#8217;aspetto negativo che deriva dal fatto di concedere l&#8217;anonimato e si schiera a favore di questi metodi per rivelare l&#8217;identità di chi naviga su tali software, come per esempio la Russia che è arrivata a offrire 3,9 milioni di rubli a chiunque trovasse un modo per togliere l&#8217;anonimato agli utenti del sistema. L&#8217;altra corrente di pensiero, della quale fa parte anche il movimento &#8220;Anonymous&#8221;, crede sia necessario avere un modo per restare invisibili sulla rete poichè questi sistemi sono usati anche da attivisti politici che si trovano in paesi in cui vige una forte censura e quindi l&#8217;anonimato gli permette di non essere rintracciati dai loro governi.</p>
<p>fonti[<a href="http://www.ilsole24ore.com/art/tecnologie/2014-07-31/tor-attacco-hacker-ha-violato-mesi-anonimato-utenti-204102.shtml?uuid=ABCPcFgB">ilsole24ore.com</a> , <a href="http://it.ibtimes.com/lanonimato-sul-web-violato-6-mesi-la-rete-tor-colpita-dagli-hacker-1353982">ibtimes.com</a>]</p>
<p>                                                                                                                                                                                                                                                                               Eugenio Corso </p>
<div>
</div>
</div>
</br>
<hr>
</br>
<span> </span>
<div class="post">
<h1 class="post-title">
<a href="/index.php/archives/78">
@ -300,39 +337,13 @@ I dati sono la risposta economica a: “Iscriviti, e&#8217; gratis e lo sarà se
</br>
<hr>
</br>
<span> </span>
<div class="post">
<h1 class="post-title">
<a href="/index.php/archives/90">
Chiave PGP
</a>
</h1>
<span class="post-date">31 Mar 2015</span>
<p>Questa e` la nostra chiave PGP con la quale possiamo essere contattati all&#8217;indirizzo<br>
<strong>pescewanda3 [at] gmail.com</strong></p>
<div class="code">
&#8212;&#8211;BEGIN PGP PUBLIC KEY BLOCK&#8212;&#8211;<br />Version: GnuPG v2</p>
<p>
mQENBFUa5j4BCAC8clTqI75PkKJ+YewmyXqjBtlsqXCWlunS4CkQTaaI3I5c13yz<br />+Nc+gibHrxhQZcOULYhjlhe9PNv/8Bnj4i2qBMjJNORAlJycjgyzCTy3OY+Hkt6Q<br />c/6uXp5ObnLblKwnPSgaij9GuH4PD1fe+fN0LORMqNJ8PNdk1a5qNJ7fuH8/nIus<br />F2+Rv6qej0OcLIUUebeiMLu+Nc52tDX76kjdvq9cG7AyAXpo478Xr4EnhPDB0sXc<br />TAGJ3I93caVXa9lqP+njI9mPDTyrl+lobLgQhdIOsW50JZmbG/EHMHFKahcaEssM<br />50lz+PtqZ0VblIDTe9xjukdcPaKhPaGuW2OxABEBAAG0KWNhdWdodF9pbl90aGVf<br />bmV0IDxwZXNjZXdhbmRhM0BnbWFpbC5jb20+iQE5BBMBCAAjBQJVGuY+AhsDBwsJ<br />CAcDAgEGFQgCCQoLBBYCAwECHgECF4AACgkQ12NuZ5rBCRLsOgf9EhR2I0M30jzP<br />rDYU5jFwyaFzWheiKO9yAiHHj2+iJXYsPcyNEIa0E+IqqMWu9e7AksscRe/rkq7U<br />wOANtiYMVTfdqnPE13c4KqKTXjikua/j4lE3fDU4IF5+sRgK62H+Ee64flP1ReO8<br />Zo4z2mwcYxqag+uSNBE0pnuICSd9NCCOiKjS0HRaG0CbpyDQ+fuqjulfn9zpU1a2<br />6y/Lg1uixIDZZICmVKfZkl5ZqkS/1Sdx4AK6rnnFH0gZ1k2J6LsE4cqvazIroRgr<br />opnuSQsfwMNiu6oaBe/+kzlhSZy/vb/vw0HT5oZHtY2so/dZe42v40weyxroZgaY<br />SR2wE5wsM7kBDQRVGuY+AQgArq1F9dl61MOSQi/SYTgmPYjptcgm0L5QBmsOeN1v<br />9YWPFn/AR8GOiGRF1//TI+ECjfL8uAdzbK1xJURXcBTrO0BdgRBlaZgSRiq+KFGT<br />pmyjj+q1toVLPwIZmsxHL6j7doSnt9Z4oesKIJ2hrdEGZ3hpFBekxMR2lmHk3zQB<br />e/qsSUwS/rIk/BBWtdifdEzcK7AJb0nRAJzQu6kyEdOGOuEprtSkG8789SkKGFxz<br />HuEIyRxoLz/KQJ7FGINQwNYXM6+5pjNt7vu5knFGF71TjVN0UjFck/mxWObxwxO3<br />EoZtW6tNgkxdOoFBIo8hhSxsVqIHoyztf58Ppo/IOgSCyQARAQABiQEfBBgBCAAJ<br />BQJVGuY+AhsMAAoJENdjbmeawQkSx/EIAK26MGlFMzviE9mWRF09vljESVbfRcnE<br />ybMZNlq/w6AdU1R6g2nbooKX1KuB8uBTZYegLJByj+ssiZagrW7rASLLVADzfP3D<br />m2TFCqE/LeOJzgMtaUfEAgvee4jNVHFvAJ2k5fejk9aQ+r3EskqACqfnY4y5SE30<br />tFsS+Wwz1C+NHFv0EnVyJaDUGKq7ZX7BQHGlxW0AFz17l4hMQztgx6Il36yC5EQr<br />BQULGVPCHpadUGpzPWIqKhIg33P3FlCqzSVBGB9aXqfBQYAUjP2MrieWcaLdJbRM<br />MBR29ROibDEd8qOPvcHrRg3cb2OPw9/Ia19VqEE9/tjn094CCuVkDPU=<br />=/XCq<br />&#8212;&#8211;END PGP PUBLIC KEY BLOCK&#8212;&#8211;
</p>
</div>
</div>
</br>
<hr>
</br>
<span> </span>
</div>
<div class="pagination">
<span class="pagination-item older">Older</span>
<a class="pagination-item older" href="/page12">Older</a>

85
_site/page12/index.html Normal file
View file

@ -0,0 +1,85 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<meta charset="UTF-8">
<title>Caught in the Net</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#157878">
<link rel="stylesheet" href="/css/normalize.css">
<!--<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700' rel='stylesheet' type='text/css'>-->
<link rel="stylesheet" href="/fonts/opensans.css">
<link rel="stylesheet" href="/css/cayman.css">
</head>
<body>
<section class="page-header">
<h1 class="project-name">Caught in the Net</h1>
<h2 class="project-tagline">La rete ti cattura ma libera il pensiero</h2>
<a class="btn" href="/">Home</a>
<a class="btn" href="/about/">About me</a>
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
<section class="main-content">
<div class="posts">
<div class="post">
<h1 class="post-title">
<a href="/index.php/archives/90">
Chiave PGP
</a>
</h1>
<span class="post-date">31 Mar 2015</span>
<p>Questa e` la nostra chiave PGP con la quale possiamo essere contattati all&#8217;indirizzo<br>
<strong>pescewanda3 [at] gmail.com</strong></p>
<div class="code">
&#8212;&#8211;BEGIN PGP PUBLIC KEY BLOCK&#8212;&#8211;<br />Version: GnuPG v2</p>
<p>
mQENBFUa5j4BCAC8clTqI75PkKJ+YewmyXqjBtlsqXCWlunS4CkQTaaI3I5c13yz<br />+Nc+gibHrxhQZcOULYhjlhe9PNv/8Bnj4i2qBMjJNORAlJycjgyzCTy3OY+Hkt6Q<br />c/6uXp5ObnLblKwnPSgaij9GuH4PD1fe+fN0LORMqNJ8PNdk1a5qNJ7fuH8/nIus<br />F2+Rv6qej0OcLIUUebeiMLu+Nc52tDX76kjdvq9cG7AyAXpo478Xr4EnhPDB0sXc<br />TAGJ3I93caVXa9lqP+njI9mPDTyrl+lobLgQhdIOsW50JZmbG/EHMHFKahcaEssM<br />50lz+PtqZ0VblIDTe9xjukdcPaKhPaGuW2OxABEBAAG0KWNhdWdodF9pbl90aGVf<br />bmV0IDxwZXNjZXdhbmRhM0BnbWFpbC5jb20+iQE5BBMBCAAjBQJVGuY+AhsDBwsJ<br />CAcDAgEGFQgCCQoLBBYCAwECHgECF4AACgkQ12NuZ5rBCRLsOgf9EhR2I0M30jzP<br />rDYU5jFwyaFzWheiKO9yAiHHj2+iJXYsPcyNEIa0E+IqqMWu9e7AksscRe/rkq7U<br />wOANtiYMVTfdqnPE13c4KqKTXjikua/j4lE3fDU4IF5+sRgK62H+Ee64flP1ReO8<br />Zo4z2mwcYxqag+uSNBE0pnuICSd9NCCOiKjS0HRaG0CbpyDQ+fuqjulfn9zpU1a2<br />6y/Lg1uixIDZZICmVKfZkl5ZqkS/1Sdx4AK6rnnFH0gZ1k2J6LsE4cqvazIroRgr<br />opnuSQsfwMNiu6oaBe/+kzlhSZy/vb/vw0HT5oZHtY2so/dZe42v40weyxroZgaY<br />SR2wE5wsM7kBDQRVGuY+AQgArq1F9dl61MOSQi/SYTgmPYjptcgm0L5QBmsOeN1v<br />9YWPFn/AR8GOiGRF1//TI+ECjfL8uAdzbK1xJURXcBTrO0BdgRBlaZgSRiq+KFGT<br />pmyjj+q1toVLPwIZmsxHL6j7doSnt9Z4oesKIJ2hrdEGZ3hpFBekxMR2lmHk3zQB<br />e/qsSUwS/rIk/BBWtdifdEzcK7AJb0nRAJzQu6kyEdOGOuEprtSkG8789SkKGFxz<br />HuEIyRxoLz/KQJ7FGINQwNYXM6+5pjNt7vu5knFGF71TjVN0UjFck/mxWObxwxO3<br />EoZtW6tNgkxdOoFBIo8hhSxsVqIHoyztf58Ppo/IOgSCyQARAQABiQEfBBgBCAAJ<br />BQJVGuY+AhsMAAoJENdjbmeawQkSx/EIAK26MGlFMzviE9mWRF09vljESVbfRcnE<br />ybMZNlq/w6AdU1R6g2nbooKX1KuB8uBTZYegLJByj+ssiZagrW7rASLLVADzfP3D<br />m2TFCqE/LeOJzgMtaUfEAgvee4jNVHFvAJ2k5fejk9aQ+r3EskqACqfnY4y5SE30<br />tFsS+Wwz1C+NHFv0EnVyJaDUGKq7ZX7BQHGlxW0AFz17l4hMQztgx6Il36yC5EQr<br />BQULGVPCHpadUGpzPWIqKhIg33P3FlCqzSVBGB9aXqfBQYAUjP2MrieWcaLdJbRM<br />MBR29ROibDEd8qOPvcHrRg3cb2OPw9/Ia19VqEE9/tjn094CCuVkDPU=<br />=/XCq<br />&#8212;&#8211;END PGP PUBLIC KEY BLOCK&#8212;&#8211;
</p>
</div>
</div>
</br>
<hr>
</br>
<span> </span>
</div>
<div class="pagination">
<span class="pagination-item older">Older</span>
<a class="pagination-item newer" href="/page11">Newer</a>
</div>
<footer class="site-footer">
<!--<span class="site-footer-owner"><a href="http://francescomecca.eu">Caught in the Net</a> is maintained by <a href="contattami">Francesco Mecca</a>.</span>-->
<span> CC BY-SA 4.0 International.</br> </span>
<span class="site-footer-credits"><a href="https://jekyllrb.com">Jekyll</a>, <a href="https://github.com/jasonlong/cayman-theme">Cayman theme</a>.</span>
</footer>
</section>
</body>
</html>

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -32,6 +32,74 @@
<div class="posts">
<div class="post">
<h1 class="post-title">
<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">
Some shallow thoughts from my tiny virtual space
</a>
</h1>
<span class="post-date">20 Mar 2017</span>
<p>I am not the kind of guy who goes to concerts. Ever.</p>
<p>I prefer studio recordings because in these, the logical thoughts of the artist emerge as the track comes to life and reaches our ears. I have always been attracted by that, much more than to the sprinkle of emotions that come from venues and theaters.</p>
<p>In my case the exceptions are the live performances of Dale Crover (from The Melvins) and Jeff Mangum. Both of which were some kind of unshaped epiphanic experiences for me. </p>
<p>Milan, December 2015, The Melvins were at the end of their most recent European tour when Jeff Pinkus drops the bass guitar, tunes the effects pedal and kicks the bass with his bare foot until the right repetition of sounds comes out of the speakers. Slowly, each one of the members leaves the stage, sounds are still coming from
the earlier kicks to the speakers up to my ears.</p>
<p>Once home, the performance by The Melvins made me recognize the different stages of communication. </p>
<p>We can think of three stages. The first one is <strong>trial</strong>, or
experimentation, field test. This first phase is as obvious as it is accidental.</p>
<p>The second stage is about <strong>excess</strong>. Excess is to acknowledge that what was played today will be different to what will be played tomorrow. A draft becomes a singular work that may not come to an end.</p>
<p>The last one is the most important one if we want to understand the dynamics of the Internet: <strong>dissipation</strong>. With the act of dissipation, the work of the artist that reached its own way on a tiny and crucial fraction of time, that is the moment, folds on itself, and it is forever lost by an act of absence, the absence of objective memory.</p>
<h2 id="internet-dynamics">Internet dynamics</h2>
<p>On the internet <strong>hounding</strong> supersedes <em>dissipation</em>.</p>
<p>Hounding is the reason why thousands of men from different backgrounds congregate in small Facebook groups and share photos of their friends, wives and relevant others.</p>
<p>On the original Italian <a href="http://francescomecca.eu/pescewanda/2017/03/07/spazio-digitale-rant-facebook/">blog post</a> I reported some Italian references on this phenomenon that dont have much cultural significance for the English readers. Therefore,
I want to explain the phenomenon in other words. </p>
<p>The discussion about these Facebook groups in Italy consist of an online phenomenon regarding group of males playing what they call the game of &quot;What would you do&quot;
with sexually or less explicit photos of friends and wives.</p>
<p>The game is as far as ever from an online <a href="https://en.wikipedia.org/wiki/Role-playing_game">rpg</a> or creative. It degrades every time in vulgar and extremist comments about the body of the girls depicted.</p>
<p>I do believe that one of the many reasons to explain the inception of these online groups is the impossibility to overcome the absence of dissipation in online
communication.</p>
<p>Machines do not remember but they never make us forget, they cross our space online with a continuous stream of photos and other people&#39;s moments.
Algorithms do not follow our placid flow of continuous time online and they snap it in collages of instants.</p>
<h2 id="recollection">Recollection</h2>
<p>In my first online experience, the interactions I had did not have the quality of recollection.
I divided my time between irc and mailing lists. I felt the obligation to archive every tiny succession of words that gave some light to me.</p>
<p>(I still do).</p>
<p>Then web caches arrived, the <a href="archive.org">Wayback Machine</a>, Reddit, social networks. Nowdata can hardly ever disappear.</p>
<p>It seems to me that it is just a worthy form of tenacity, not remembrance in any form.</p>
<p>For the joy of archivists and the ones with a wistful gaze. And still unpleasant for someone.</p>
<p>(This translation is for Madeline, thank you for still taking the time to read my blog)</p>
</div>
</br>
<hr>
</br>
<span> </span>
<div class="post">
<h1 class="post-title">
<a href="/pescewanda/2017/03/07/spazio-digitale-rant-facebook/">
@ -441,279 +509,6 @@ Proviamo a visualizzarla in un&#39;immagine dove i box arancioni sono i nodi di
</br>
<hr>
</br>
<span> </span>
<div class="post">
<h1 class="post-title">
<a href="/pescewanda/2016/07/07/pres-berk/">
A short talk about cryptography at the Berkman Klein Center
</a>
</h1>
<span class="post-date">07 Jul 2016</span>
<p>The 7th of July me and <a href="http://studentprivacy.ca">Aaron</a>, as interns at the <a href="http://cyber.law.harvard.edu">Berkman Klein for Internet and Society</a>, gave a presentation on the basics of cryptography and a quick overview on the essential tools.</p>
<p>What follows is a short summary of that presentation. The slides are available <a href="/wp-content/uploads/2016/fwneas.pptx">here</a></p>
<h3 id="whose-security">Whose Security?</h3>
<p>Let&#39;s define what security is. Security is the possibility to being set free from structural costraints, and as that we can distinguish various levels of security depending on who we are.</p>
<p>Also, if we want to investigate security we should also define our threats: security, as being set free, from intelligence surveillance can be our target. Our concerns as different if we consider instead security from censorship or corporation data mining.</p>
<p><img src="/wp-content/uploads/2016/godmode.png" alt="uber god view">
<img src="/wp-content/uploads/2016/fb.png" alt="facebook law enforcement form"></p>
<p>What is shown above is the <a href="http://www.theverge.com/2016/1/6/10726004/uber-god-mode-settlement-fine">Uber God View</a>, a tool Uber used to track a Buzzfeed&#39;s journalist locations, and the Facebook standard form that is given to law enforcement when requested.</p>
<h3 id="security-is-a-state-of-mind">Security is a state of mind</h3>
<p>Security is hard. It is really rare to reach a state of complete security and even in that case, it depends on our target.</p>
<p>What is important is to train ourselves to security. Security is a state of mind and there are no tools that automatically protect us without our active partecipation.</p>
<p>Let&#39;s explore that in details.</p>
<h3 id="the-layers-of-security">The layers of security</h3>
<p>We can distinguish four layers of security:</p>
<ul>
<li>Device Security</li>
<li>Network Security</li>
<li>Message Security</li>
<li>Human Security</li>
</ul>
<h6 id="device-security-where-everything-happens">Device Security, where everything happens</h6>
<p>Device security is related to the &quot;physical host&quot;.</p>
<p>If the computer we use is tampered, at the hardware level, or the phone is bugged, there is no way to escape using higher level tools.</p>
<p>In other words, it doesn&#39;t matter if we use a super secure password if our computer is registering all our keystrokes and send them to a third party.</p>
<p>Also, device security is useful if we consider that our device can fall into the hands of attackers that may be able to traceback all the activities.</p>
<p>Some precautions for this purpose:</p>
<ul>
<li>full disk encryption</li>
<li>minimal set of application installed</li>
<li>open source operating systems</li>
</ul>
<h6 id="network-security">Network Security</h6>
<p>The network is the infrastructures that our device is attached to. In most of the case, when we consider our computer is the internet (and the GSM network in case of mobile phones).</p>
<p>Network security is essential to evade censorship, behavioural tracking and identity theft.</p>
<p>Some tools that may help in this case:</p>
<ul>
<li>vpn</li>
<li>tor</li>
<li>p2p networks</li>
<li>mesh networks</li>
</ul>
<p>And for the web:</p>
<ul>
<li>opensource web browsers (such as firefox)</li>
<li>no google apps on android phones</li>
<li>https</li>
</ul>
<h6 id="message-security">Message Security</h6>
<p>Message security is the level of protection regarding the content that you want to send or receive.</p>
<p>Message security is essential if you want to avoid any third party snooping and the confidentiality of your messages.</p>
<p>The tools we can use in this context:</p>
<ul>
<li>OTR</li>
<li>opensource messaging protocols (XMPP, matrix)</li>
<li>Signal</li>
<li>PGP</li>
</ul>
<p>Also, always remember that encrypting the content of the message doesn&#39;t guarantee that your identity and the metadata are hidden.</p>
<h6 id="human-security-the-weakest-link">Human Security, the weakest link</h6>
<p>Everything comes down to the human level at a certain point.</p>
<p>This is way it is important to train ourselves in security.</p>
<p>If we consider <a href="https://en.wikipedia.org/wiki/Kevin_Mitnick">Kevin Mitnick&#39;s history</a>, or the recent <a href="http://thehackernews.com/2015/11/fbi-cia-director-hack.html">FBI deputy director hack</a> we see that social engineering plays a big role when we want to undermine the security of an individual of interest.</p>
<p>But security matters even if we are not target of interest.</p>
<p>For example let&#39;s consider our password. If we use the same password on every site and one cracker manages to gain access to just one of them, our whole activities online can be exposed and our identity stolen. <a href="http://www.nydailynews.com/news/national/mark-zuckerberg-twitter-account-hacked-password-dadada-article-1.2662351">This is relevant</a>. Myspace had its database breached and the password of Zuckerberg (even a simple one) was exposed. Given that he used the same password on twitter and other sites, his multiple accounts were compromised.</p>
<h3 id="what-is-tor-and-how-it-works">What is TOR and how it works</h3>
<p>When you visit a website with your mobile phone or a browser on your computer lots of things go on under the hoods.</p>
<p>Your computer, as a client, makes what is called an <a href="https://en.wikipedia.org/wiki/Transmission_Control_Protocol#Connection_establishment">handshake</a> with the server.</p>
<p>After telling the server that the client is interested in its content, a series of packets containing data is exchanged.</p>
<p>That is the content of a connection. Inside this packets there are a multitude of information of two kinds:</p>
<ul>
<li>the web page or the content we are trying to visualize</li>
<li>information on the status of both the server and the client</li>
</ul>
<p>The informations contained in every packet can be analized to understand the &quot;identity&quot; of the client that is requesting the content on the server, first of all the IP that is a sort of web address that every computer on the net has.</p>
<p>Not only, during the transmission of this packets, various entity on the communication channel can analize the content and mine our data.</p>
<p><img src="/wp-content/uploads/2016/tor-https-0.png" alt="Cute infographic"></p>
<p>TOR still uses this kind of routine to gather the content of a web page, but instead of connecting directly to the destination server it goes through a series of other servers called relay: instead of going directly from A to B, it goes from A to C to D to E to F to B.</p>
<p>If the web was a kindergarden Alice instead of telling directly her phrase to Bob, she would tell the word to a friend that in turn would tell the word to a friend and so on, until Bob heards the word, without knowing that Alice said that at the beginning.</p>
<p>At this point you should ask yourself: are the data more protected if it goes through a network of relays? It actually is given that every time you send a packet through the TOR network, it gets encrypted so that no one knows it&#39;s content.</p>
<p>To tell the truth, actually the relay (called exit node) that will send the packet to the destination server, knows the content of the packet but does not know the origin.</p>
<p>Ultimately a website can be entirely hosted on the TOR network, called the onion network, so that the packets never exit from the relays and the relay don&#39;t know the phisycal location of the server, so every entity on the network reach a perfect level of anonimacy.</p>
<h3 id="who-owns-the-relays">Who owns the relays?</h3>
<p>Actually every one can host and own a relay if they are willing to do so.
I personally host one right now and there are many others that share a little fraction of their network connection.</p>
<p><img src="/wp-content/uploads/2016/screenraspy.png" alt="My little raspi is moving some packets right now"></p>
<p>Running a relay node is very easy and everybody should do so. Running an exit node instead is more troublesome and I don&#39;t suggest it if you are not a big entity that can handle some sorts of occasional trouble.</p>
<h3 id="don-39-t-play-the-fool-on-the-tor-network">Don&#39;t play the fool on the TOR network</h3>
<p>Of course TOR doesn&#39;t guarantee you perfect anonimacy. At the end it all comes to the human layer.</p>
<p>It&#39;s no use to surf the web through TOR if we then log in to our personal blog or our personal facebook page.</p>
<p>But there are other subtle factors that can be exploited by web companies to gather info and track their users.A</p>
<p>Such factors are:</p>
<ul>
<li>the size of the screen and the colors supported by it</li>
<li>the timezone</li>
<li>canvas and images that the server asks your computer to generate</li>
<li>information about your OS that are sent through packets</li>
<li>the fonts available on your system</li>
<li>touch support</li>
<li>cookies</li>
<li>ads and cross site requests</li>
</ul>
<p>In particular, most of these are exploitable using a web programming language, javascript, that lots of web pages uses to render content. TOR users should avoid the use of javascript.</p>
<h3 id="public-private-key-encryption">Public Private Key Encryption</h3>
<p>While TOR is recent technology, public key encryption is a concept way older.</p>
<p>What happens when we use public / private key encryption tools is conceptually similar to what happens with our physical correspondence.</p>
<p>A public key is similar to our mailbox.</p>
<p>Everyone that knows the location of a person&#39;s mailbox can write a message and put it inside but only the owner of that mailbox, using is own key can open the mailbox and read the various messages.</p>
<p>When we use PGP or GPG (an implementation of the public key encription concept) we generate a pair of key.</p>
<p>A public one that we should broadcast or at least share with our social circle, and a private key that must remain secret at any cost.</p>
<p>Everyone can encrypt every kind of digital content using our public key (that is just a really long string) and only the owner of the private key can proceed to decryption of the content.</p>
<p>This also means that we know who is gonna read the message if encrypted using this kind of technologies.</p>
<p>One easy tool for GPG encryption is <a href="https://www.gnupg.org/%28en%29/related_software/gpa/index.html">GPA</a></p>
<h3 id="metadata">Metadata</h3>
<p>What would you do if you were asked to put under surveillance one person?</p>
<p>For sure placing a bug with microphone and recording capabilities would be the best option.</p>
<p>But what if, instead of recording every thing the subject does, we just take a note of all his actions, without taking care of the content. For example, if the subject speaks to someone, we record the time, the place, the duration of the conversation and all the info of the person he is talking with.
What if, when the person walks into a mall, we record the time, the location, the shops he entered, the money he spent, the number of things bought, but not the things he bought, in detail.</p>
<p>You can see that you can have a fairly precise idea of the habits of the person under your surveillance.</p>
<p>Actually from metadata is easy to grab all kinds of personal information. Also, if a tiny portions of the information we have on the subject are more detailed (for example social network photos) we have a picture as clear as never.</p>
<p>This is not just one of the biggest concern that should pop into your mind when you are talking about nation wide mass surveillance, it is also the core of the business of corporations like Facebook and Google.</p>
<p>Whatsapp does not read the content of your messages but it stores every single bit of metadata that comes with it.</p>
<p>Metadatas are enought to build a complete profile of the users and they are even more dangerous in the hands of an evil state agency.</p>
<h3 id="nothing-to-hide">Nothing to hide</h3>
<p>Even if we have nothing to hide, we have much to fear.</p>
<p>The &quot;nothing to hide&quot; argument is something that everyone of us in this room has heard, at least one time.</p>
<p>We should fear this sentence because it is the ultimate ammision of a big misunderstanding on the whole debate.</p>
<p>Privacy, first of all, is <strong>control</strong> over our data, not only the right to secrecy.</p>
<h6 id="transparency-should-be-for-everyone">Transparency should be for everyone</h6>
<p>There is a big incoherence when asking to your citizens to handle over their data. </p>
<p>Transparency should be a two way thing, while at the current state big three letter agencies, but high level people as well, cover their tracks and are not transparent on their reports. </p>
<p>This enhance a situation of big inequality between the people and the State.</p>
<p>Even worse, it is not the citizen by himself that can choose if he has something to hide, but the autority.</p>
<p>This may seem a little naive to say, but with Bruce words:</p>
<blockquote>
<p>If you give me six lines written by the hand of the most honest of men, I will find something in them which will hang him.</p>
</blockquote>
<p>This is true even without considering social discrimination and mass media manipolation.</p>
<h6 id="the-fundamental-of-society">The fundamental of society</h6>
<p>Every action can be seen as either legal or illegal. When we take a decision this is one of the first, implicit concern.</p>
<p>This is not true in a surveillance system: when you are doing something your concern is all about the possibility of raising suspicion.</p>
<p>An idea not an action is what is needed in such a dystopic condition to prove a citizen guilty.</p>
<h6 id="sometimes-two-wrongs-make-a-right">Sometimes two wrongs make a right</h6>
<p>In America we are now discussing weed legalization.</p>
<p>Do you think that such debate would have been possible if no one could had the possibility, even if against the law, to try that substance and show other citizen the real implications of their actions?</p>
<p>The same goes for gay marriages, that we are discussing in Italy. Challenging the law, breaking it if needed, is a way to improve the current system.</p>
<p>Inside the panopticon every <strong>potential</strong> criminal would be persecuted and this kind of advancement would not be possible.</p>
<h3 id="to-hide-is-to-care">To hide is to care</h3>
<p>A simple truth is that we don&#39;t close the windows to cover up our crimes. </p>
<p>Our innermost experiences become in our intimacy, which is the most sacred place.</p>
</div>
</br>
<hr>
</br>
<span> </span>
</div>

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -32,6 +32,279 @@
<div class="posts">
<div class="post">
<h1 class="post-title">
<a href="/pescewanda/2016/07/07/pres-berk/">
A short talk about cryptography at the Berkman Klein Center
</a>
</h1>
<span class="post-date">07 Jul 2016</span>
<p>The 7th of July me and <a href="http://studentprivacy.ca">Aaron</a>, as interns at the <a href="http://cyber.law.harvard.edu">Berkman Klein for Internet and Society</a>, gave a presentation on the basics of cryptography and a quick overview on the essential tools.</p>
<p>What follows is a short summary of that presentation. The slides are available <a href="/wp-content/uploads/2016/fwneas.pptx">here</a></p>
<h3 id="whose-security">Whose Security?</h3>
<p>Let&#39;s define what security is. Security is the possibility to being set free from structural costraints, and as that we can distinguish various levels of security depending on who we are.</p>
<p>Also, if we want to investigate security we should also define our threats: security, as being set free, from intelligence surveillance can be our target. Our concerns as different if we consider instead security from censorship or corporation data mining.</p>
<p><img src="/wp-content/uploads/2016/godmode.png" alt="uber god view">
<img src="/wp-content/uploads/2016/fb.png" alt="facebook law enforcement form"></p>
<p>What is shown above is the <a href="http://www.theverge.com/2016/1/6/10726004/uber-god-mode-settlement-fine">Uber God View</a>, a tool Uber used to track a Buzzfeed&#39;s journalist locations, and the Facebook standard form that is given to law enforcement when requested.</p>
<h3 id="security-is-a-state-of-mind">Security is a state of mind</h3>
<p>Security is hard. It is really rare to reach a state of complete security and even in that case, it depends on our target.</p>
<p>What is important is to train ourselves to security. Security is a state of mind and there are no tools that automatically protect us without our active partecipation.</p>
<p>Let&#39;s explore that in details.</p>
<h3 id="the-layers-of-security">The layers of security</h3>
<p>We can distinguish four layers of security:</p>
<ul>
<li>Device Security</li>
<li>Network Security</li>
<li>Message Security</li>
<li>Human Security</li>
</ul>
<h6 id="device-security-where-everything-happens">Device Security, where everything happens</h6>
<p>Device security is related to the &quot;physical host&quot;.</p>
<p>If the computer we use is tampered, at the hardware level, or the phone is bugged, there is no way to escape using higher level tools.</p>
<p>In other words, it doesn&#39;t matter if we use a super secure password if our computer is registering all our keystrokes and send them to a third party.</p>
<p>Also, device security is useful if we consider that our device can fall into the hands of attackers that may be able to traceback all the activities.</p>
<p>Some precautions for this purpose:</p>
<ul>
<li>full disk encryption</li>
<li>minimal set of application installed</li>
<li>open source operating systems</li>
</ul>
<h6 id="network-security">Network Security</h6>
<p>The network is the infrastructures that our device is attached to. In most of the case, when we consider our computer is the internet (and the GSM network in case of mobile phones).</p>
<p>Network security is essential to evade censorship, behavioural tracking and identity theft.</p>
<p>Some tools that may help in this case:</p>
<ul>
<li>vpn</li>
<li>tor</li>
<li>p2p networks</li>
<li>mesh networks</li>
</ul>
<p>And for the web:</p>
<ul>
<li>opensource web browsers (such as firefox)</li>
<li>no google apps on android phones</li>
<li>https</li>
</ul>
<h6 id="message-security">Message Security</h6>
<p>Message security is the level of protection regarding the content that you want to send or receive.</p>
<p>Message security is essential if you want to avoid any third party snooping and the confidentiality of your messages.</p>
<p>The tools we can use in this context:</p>
<ul>
<li>OTR</li>
<li>opensource messaging protocols (XMPP, matrix)</li>
<li>Signal</li>
<li>PGP</li>
</ul>
<p>Also, always remember that encrypting the content of the message doesn&#39;t guarantee that your identity and the metadata are hidden.</p>
<h6 id="human-security-the-weakest-link">Human Security, the weakest link</h6>
<p>Everything comes down to the human level at a certain point.</p>
<p>This is way it is important to train ourselves in security.</p>
<p>If we consider <a href="https://en.wikipedia.org/wiki/Kevin_Mitnick">Kevin Mitnick&#39;s history</a>, or the recent <a href="http://thehackernews.com/2015/11/fbi-cia-director-hack.html">FBI deputy director hack</a> we see that social engineering plays a big role when we want to undermine the security of an individual of interest.</p>
<p>But security matters even if we are not target of interest.</p>
<p>For example let&#39;s consider our password. If we use the same password on every site and one cracker manages to gain access to just one of them, our whole activities online can be exposed and our identity stolen. <a href="http://www.nydailynews.com/news/national/mark-zuckerberg-twitter-account-hacked-password-dadada-article-1.2662351">This is relevant</a>. Myspace had its database breached and the password of Zuckerberg (even a simple one) was exposed. Given that he used the same password on twitter and other sites, his multiple accounts were compromised.</p>
<h3 id="what-is-tor-and-how-it-works">What is TOR and how it works</h3>
<p>When you visit a website with your mobile phone or a browser on your computer lots of things go on under the hoods.</p>
<p>Your computer, as a client, makes what is called an <a href="https://en.wikipedia.org/wiki/Transmission_Control_Protocol#Connection_establishment">handshake</a> with the server.</p>
<p>After telling the server that the client is interested in its content, a series of packets containing data is exchanged.</p>
<p>That is the content of a connection. Inside this packets there are a multitude of information of two kinds:</p>
<ul>
<li>the web page or the content we are trying to visualize</li>
<li>information on the status of both the server and the client</li>
</ul>
<p>The informations contained in every packet can be analized to understand the &quot;identity&quot; of the client that is requesting the content on the server, first of all the IP that is a sort of web address that every computer on the net has.</p>
<p>Not only, during the transmission of this packets, various entity on the communication channel can analize the content and mine our data.</p>
<p><img src="/wp-content/uploads/2016/tor-https-0.png" alt="Cute infographic"></p>
<p>TOR still uses this kind of routine to gather the content of a web page, but instead of connecting directly to the destination server it goes through a series of other servers called relay: instead of going directly from A to B, it goes from A to C to D to E to F to B.</p>
<p>If the web was a kindergarden Alice instead of telling directly her phrase to Bob, she would tell the word to a friend that in turn would tell the word to a friend and so on, until Bob heards the word, without knowing that Alice said that at the beginning.</p>
<p>At this point you should ask yourself: are the data more protected if it goes through a network of relays? It actually is given that every time you send a packet through the TOR network, it gets encrypted so that no one knows it&#39;s content.</p>
<p>To tell the truth, actually the relay (called exit node) that will send the packet to the destination server, knows the content of the packet but does not know the origin.</p>
<p>Ultimately a website can be entirely hosted on the TOR network, called the onion network, so that the packets never exit from the relays and the relay don&#39;t know the phisycal location of the server, so every entity on the network reach a perfect level of anonimacy.</p>
<h3 id="who-owns-the-relays">Who owns the relays?</h3>
<p>Actually every one can host and own a relay if they are willing to do so.
I personally host one right now and there are many others that share a little fraction of their network connection.</p>
<p><img src="/wp-content/uploads/2016/screenraspy.png" alt="My little raspi is moving some packets right now"></p>
<p>Running a relay node is very easy and everybody should do so. Running an exit node instead is more troublesome and I don&#39;t suggest it if you are not a big entity that can handle some sorts of occasional trouble.</p>
<h3 id="don-39-t-play-the-fool-on-the-tor-network">Don&#39;t play the fool on the TOR network</h3>
<p>Of course TOR doesn&#39;t guarantee you perfect anonimacy. At the end it all comes to the human layer.</p>
<p>It&#39;s no use to surf the web through TOR if we then log in to our personal blog or our personal facebook page.</p>
<p>But there are other subtle factors that can be exploited by web companies to gather info and track their users.A</p>
<p>Such factors are:</p>
<ul>
<li>the size of the screen and the colors supported by it</li>
<li>the timezone</li>
<li>canvas and images that the server asks your computer to generate</li>
<li>information about your OS that are sent through packets</li>
<li>the fonts available on your system</li>
<li>touch support</li>
<li>cookies</li>
<li>ads and cross site requests</li>
</ul>
<p>In particular, most of these are exploitable using a web programming language, javascript, that lots of web pages uses to render content. TOR users should avoid the use of javascript.</p>
<h3 id="public-private-key-encryption">Public Private Key Encryption</h3>
<p>While TOR is recent technology, public key encryption is a concept way older.</p>
<p>What happens when we use public / private key encryption tools is conceptually similar to what happens with our physical correspondence.</p>
<p>A public key is similar to our mailbox.</p>
<p>Everyone that knows the location of a person&#39;s mailbox can write a message and put it inside but only the owner of that mailbox, using is own key can open the mailbox and read the various messages.</p>
<p>When we use PGP or GPG (an implementation of the public key encription concept) we generate a pair of key.</p>
<p>A public one that we should broadcast or at least share with our social circle, and a private key that must remain secret at any cost.</p>
<p>Everyone can encrypt every kind of digital content using our public key (that is just a really long string) and only the owner of the private key can proceed to decryption of the content.</p>
<p>This also means that we know who is gonna read the message if encrypted using this kind of technologies.</p>
<p>One easy tool for GPG encryption is <a href="https://www.gnupg.org/%28en%29/related_software/gpa/index.html">GPA</a></p>
<h3 id="metadata">Metadata</h3>
<p>What would you do if you were asked to put under surveillance one person?</p>
<p>For sure placing a bug with microphone and recording capabilities would be the best option.</p>
<p>But what if, instead of recording every thing the subject does, we just take a note of all his actions, without taking care of the content. For example, if the subject speaks to someone, we record the time, the place, the duration of the conversation and all the info of the person he is talking with.
What if, when the person walks into a mall, we record the time, the location, the shops he entered, the money he spent, the number of things bought, but not the things he bought, in detail.</p>
<p>You can see that you can have a fairly precise idea of the habits of the person under your surveillance.</p>
<p>Actually from metadata is easy to grab all kinds of personal information. Also, if a tiny portions of the information we have on the subject are more detailed (for example social network photos) we have a picture as clear as never.</p>
<p>This is not just one of the biggest concern that should pop into your mind when you are talking about nation wide mass surveillance, it is also the core of the business of corporations like Facebook and Google.</p>
<p>Whatsapp does not read the content of your messages but it stores every single bit of metadata that comes with it.</p>
<p>Metadatas are enought to build a complete profile of the users and they are even more dangerous in the hands of an evil state agency.</p>
<h3 id="nothing-to-hide">Nothing to hide</h3>
<p>Even if we have nothing to hide, we have much to fear.</p>
<p>The &quot;nothing to hide&quot; argument is something that everyone of us in this room has heard, at least one time.</p>
<p>We should fear this sentence because it is the ultimate ammision of a big misunderstanding on the whole debate.</p>
<p>Privacy, first of all, is <strong>control</strong> over our data, not only the right to secrecy.</p>
<h6 id="transparency-should-be-for-everyone">Transparency should be for everyone</h6>
<p>There is a big incoherence when asking to your citizens to handle over their data. </p>
<p>Transparency should be a two way thing, while at the current state big three letter agencies, but high level people as well, cover their tracks and are not transparent on their reports. </p>
<p>This enhance a situation of big inequality between the people and the State.</p>
<p>Even worse, it is not the citizen by himself that can choose if he has something to hide, but the autority.</p>
<p>This may seem a little naive to say, but with Bruce words:</p>
<blockquote>
<p>If you give me six lines written by the hand of the most honest of men, I will find something in them which will hang him.</p>
</blockquote>
<p>This is true even without considering social discrimination and mass media manipolation.</p>
<h6 id="the-fundamental-of-society">The fundamental of society</h6>
<p>Every action can be seen as either legal or illegal. When we take a decision this is one of the first, implicit concern.</p>
<p>This is not true in a surveillance system: when you are doing something your concern is all about the possibility of raising suspicion.</p>
<p>An idea not an action is what is needed in such a dystopic condition to prove a citizen guilty.</p>
<h6 id="sometimes-two-wrongs-make-a-right">Sometimes two wrongs make a right</h6>
<p>In America we are now discussing weed legalization.</p>
<p>Do you think that such debate would have been possible if no one could had the possibility, even if against the law, to try that substance and show other citizen the real implications of their actions?</p>
<p>The same goes for gay marriages, that we are discussing in Italy. Challenging the law, breaking it if needed, is a way to improve the current system.</p>
<p>Inside the panopticon every <strong>potential</strong> criminal would be persecuted and this kind of advancement would not be possible.</p>
<h3 id="to-hide-is-to-care">To hide is to care</h3>
<p>A simple truth is that we don&#39;t close the windows to cover up our crimes. </p>
<p>Our innermost experiences become in our intimacy, which is the most sacred place.</p>
</div>
</br>
<hr>
</br>
<span> </span>
<div class="post">
<h1 class="post-title">
<a href="/pescewanda/2016/07/06/IM-services/">
@ -343,97 +616,6 @@ Anyway for simple cases the GA yields good results, as an example for points (0
</br>
<hr>
</br>
<span> </span>
<div class="post">
<h1 class="post-title">
<a href="/pescewanda/2016/05/03/satoshisignature/">
Why Wright's proof is a fake
</a>
</h1>
<span class="post-date">03 May 2016</span>
<p>I explained in my previous <a href="http://francescomecca.eu/pescewanda/2016/04/17/wright-nakamoto/">post</a> (in italian) that the signature that Wright provided as a public proof is in fact invalid.
I want to explain briefly how you could check this claim.
The key in Wright&#39;s <a href="http://www.drcraigwright.net/jean-paul-sartre-signing-significance/">post</a> is this:</p>
<div class="highlight"><pre><code class="language-" data-lang="">------------------------- Signature File -------------------------
MEUCIQDBKn1Uly8m0UyzETObUSL4wYdBfd4ejvtoQfVcNCIK4AIgZmMsXNQWHvo6KDd2Tu6euEl1
3VTC3ihl6XUlhcU+fM4=
------------------------- End Signature --------------------------
</code></pre></div>
<p>Now we can use some bash utilities:</p>
<ul>
<li>base64, that translates encoded ASCII text;</li>
<li>hexdump, that displays hexadecimal contents from the input;</li>
<li>cut, used to remove the binary part of the input;</li>
<li>tr, used to delete spaces and carriage return from the input;</li>
</ul>
<div class="highlight"><pre><code class="language-" data-lang="">base64 -d &lt;&lt;&lt;'MEUCIQDBKn1Uly8m0UyzETObUSL4wYdBfd4ejvtoQfVcNCIK4AIgZmMsXNQWHvo6KDd2Tu6euEl13VTC3ihl6XUlhcU+fM4=' | hexdump -C| cut -b 11-60| tr -d ' \n'
3045022100c12a7d54972f26d14cb311339b5122f8c187417dde1e8efb6841f55c34220ae0022066632c5cd4161efa3a2837764eee9eb84975dd54c2de2865e9752585c53e7cce
</code></pre></div>
<p>Let&#39;s analyze the command one by one:</p>
<ul>
<li><code>base64 -d</code> decodes the redirected string, the output is some gibberish characters so I won&#39;t display them here;</li>
<li><code>hexdump -C</code> is used with a pipe to convert to hexadecimal:</li>
</ul>
<div class="highlight"><pre><code class="language-" data-lang="">00000000 30 45 02 21 00 c1 2a 7d 54 97 2f 26 d1 4c b3 11 |0E.!..*}T./&amp;.L..|
00000010 33 9b 51 22 f8 c1 87 41 7d de 1e 8e fb 68 41 f5 |3.Q"...A}....hA.|
00000020 5c 34 22 0a e0 02 20 66 63 2c 5c d4 16 1e fa 3a |\4"... fc,\....:|
00000030 28 37 76 4e ee 9e b8 49 75 dd 54 c2 de 28 65 e9 |(7vN...Iu.T..(e.|
00000040 75 25 85 c5 3e 7c ce |u%..&gt;|.|
</code></pre></div>
<ul>
<li>cut -b 11-60 displays only the characters from column 11 to 60:</li>
</ul>
<div class="highlight"><pre><code class="language-" data-lang="">30 45 02 21 00 c1 2a 7d 54 97 2f 26 d1 4c b3 11
33 9b 51 22 f8 c1 87 41 7d de 1e 8e fb 68 41 f5
5c 34 22 0a e0 02 20 66 63 2c 5c d4 16 1e fa 3a
28 37 76 4e ee 9e b8 49 75 dd 54 c2 de 28 65 e9
75 25 85 c5 3e 7c ce
</code></pre></div>
<ul>
<li><code>tr -d &#39; \n&#39;</code> is used to delete spaces and carriage returns from the output so that is shown in one line and it gives us the final result:</li>
</ul>
<div class="highlight"><pre><code class="language-" data-lang="">3045022100c12a7d54972f26d14cb311339b5122f8c187417dde1e8efb6841f55c34220ae0022066632c5cd4161efa3a2837764eee9eb84975dd54c2de2865e9752585c53e7cce
</code></pre></div>
<p>If you noticed, there is also another cleartext string at the beginning of Wright&#39;s post:</p>
<div class="highlight"><pre><code class="language-" data-lang="">$ base64 -d &lt;&lt;&lt;'IFdyaWdodCwgaXQgaXMgbm90IHRoZSBzYW1lIGFzIGlmIEkgc2lnbiBDcmFpZyBXcmlnaHQsIFNhdG9zaGkuCgo='
Wright, it is not the same as if I sign Craig Wright, Satoshi.
</code></pre></div>
<p>Now let&#39;s head to blockchain.info.
Blockchain.info has a little <a href="https://blockchain.info/decode-tx">utility</a> to get hexadecimal informations out of a transaction on the blockchain, so let&#39;s use it to get the related info about this transaction:</p>
<p><a href="https://blockchain.info/tx/828ef3b079f9c23829c56fe86e85b4a69d9e06e5b54ea597eef5fb3ffef509fe">tx/828ef3b079f9c23829c56fe86e85b4a69d9e06e5b54ea597eef5fb3ffef509fe</a>
<a href="https://blockchain.info/tx/828ef3b079f9c23829c56fe86e85b4a69d9e06e5b54ea597eef5fb3ffef509fe?format=hex">tx/828ef3b079f9... in hexadecimal</a></p>
<p>As you can see the entire output of the first bash command, that is
<code>
3045022100c12a7d54972f26d14cb311339b5122f8c187417dde1e8efb6841f55c34220ae0022066632c5cd4161efa3a2837764eee9eb84975dd54c2de2865e9752585c53e7cce
</code>
is contained in:
<code>
&quot;script&quot;:&quot;483045022100c12a7d54972f26d14cb311339b5122f8c187417dde1e8efb6841f55c34220ae0022066632c5cd4161efa3a2837764eee9eb84975dd54c2de2865e9752585c53e7cce01&quot;
</code>
except for the 48 at the beginning and the 01 at the end.</p>
<p>That is a signature hash:
this <a href="https://en.bitcoin.it/wiki/List_of_address_prefixes">page</a> explains that the 48 is just a decimal prefix given to uncompressed transactions, and the 01 at the end is just a SIGHASH_ALL <a href="https://bitcoin.org/en/glossary/signature-hash">code</a> that flags the end of the signature.</p>
<h2 id="so-is-it-a-fake">So, is it a fake?</h2>
<p>Yes, indeed.
At the end, I ask, why would you choose anything else than the easiest and most conclusive way to prove something?</p>
<p><img src="/wp-content/uploads/2016/satosh.jpg" alt="Wright &quot;signs&quot; the blockchain"></p>
</div>
</br>
<hr>
</br>
<span> </span>
</div>

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -32,6 +32,97 @@
<div class="posts">
<div class="post">
<h1 class="post-title">
<a href="/pescewanda/2016/05/03/satoshisignature/">
Why Wright's proof is a fake
</a>
</h1>
<span class="post-date">03 May 2016</span>
<p>I explained in my previous <a href="http://francescomecca.eu/pescewanda/2016/04/17/wright-nakamoto/">post</a> (in italian) that the signature that Wright provided as a public proof is in fact invalid.
I want to explain briefly how you could check this claim.
The key in Wright&#39;s <a href="http://www.drcraigwright.net/jean-paul-sartre-signing-significance/">post</a> is this:</p>
<div class="highlight"><pre><code class="language-" data-lang="">------------------------- Signature File -------------------------
MEUCIQDBKn1Uly8m0UyzETObUSL4wYdBfd4ejvtoQfVcNCIK4AIgZmMsXNQWHvo6KDd2Tu6euEl1
3VTC3ihl6XUlhcU+fM4=
------------------------- End Signature --------------------------
</code></pre></div>
<p>Now we can use some bash utilities:</p>
<ul>
<li>base64, that translates encoded ASCII text;</li>
<li>hexdump, that displays hexadecimal contents from the input;</li>
<li>cut, used to remove the binary part of the input;</li>
<li>tr, used to delete spaces and carriage return from the input;</li>
</ul>
<div class="highlight"><pre><code class="language-" data-lang="">base64 -d &lt;&lt;&lt;'MEUCIQDBKn1Uly8m0UyzETObUSL4wYdBfd4ejvtoQfVcNCIK4AIgZmMsXNQWHvo6KDd2Tu6euEl13VTC3ihl6XUlhcU+fM4=' | hexdump -C| cut -b 11-60| tr -d ' \n'
3045022100c12a7d54972f26d14cb311339b5122f8c187417dde1e8efb6841f55c34220ae0022066632c5cd4161efa3a2837764eee9eb84975dd54c2de2865e9752585c53e7cce
</code></pre></div>
<p>Let&#39;s analyze the command one by one:</p>
<ul>
<li><code>base64 -d</code> decodes the redirected string, the output is some gibberish characters so I won&#39;t display them here;</li>
<li><code>hexdump -C</code> is used with a pipe to convert to hexadecimal:</li>
</ul>
<div class="highlight"><pre><code class="language-" data-lang="">00000000 30 45 02 21 00 c1 2a 7d 54 97 2f 26 d1 4c b3 11 |0E.!..*}T./&amp;.L..|
00000010 33 9b 51 22 f8 c1 87 41 7d de 1e 8e fb 68 41 f5 |3.Q"...A}....hA.|
00000020 5c 34 22 0a e0 02 20 66 63 2c 5c d4 16 1e fa 3a |\4"... fc,\....:|
00000030 28 37 76 4e ee 9e b8 49 75 dd 54 c2 de 28 65 e9 |(7vN...Iu.T..(e.|
00000040 75 25 85 c5 3e 7c ce |u%..&gt;|.|
</code></pre></div>
<ul>
<li>cut -b 11-60 displays only the characters from column 11 to 60:</li>
</ul>
<div class="highlight"><pre><code class="language-" data-lang="">30 45 02 21 00 c1 2a 7d 54 97 2f 26 d1 4c b3 11
33 9b 51 22 f8 c1 87 41 7d de 1e 8e fb 68 41 f5
5c 34 22 0a e0 02 20 66 63 2c 5c d4 16 1e fa 3a
28 37 76 4e ee 9e b8 49 75 dd 54 c2 de 28 65 e9
75 25 85 c5 3e 7c ce
</code></pre></div>
<ul>
<li><code>tr -d &#39; \n&#39;</code> is used to delete spaces and carriage returns from the output so that is shown in one line and it gives us the final result:</li>
</ul>
<div class="highlight"><pre><code class="language-" data-lang="">3045022100c12a7d54972f26d14cb311339b5122f8c187417dde1e8efb6841f55c34220ae0022066632c5cd4161efa3a2837764eee9eb84975dd54c2de2865e9752585c53e7cce
</code></pre></div>
<p>If you noticed, there is also another cleartext string at the beginning of Wright&#39;s post:</p>
<div class="highlight"><pre><code class="language-" data-lang="">$ base64 -d &lt;&lt;&lt;'IFdyaWdodCwgaXQgaXMgbm90IHRoZSBzYW1lIGFzIGlmIEkgc2lnbiBDcmFpZyBXcmlnaHQsIFNhdG9zaGkuCgo='
Wright, it is not the same as if I sign Craig Wright, Satoshi.
</code></pre></div>
<p>Now let&#39;s head to blockchain.info.
Blockchain.info has a little <a href="https://blockchain.info/decode-tx">utility</a> to get hexadecimal informations out of a transaction on the blockchain, so let&#39;s use it to get the related info about this transaction:</p>
<p><a href="https://blockchain.info/tx/828ef3b079f9c23829c56fe86e85b4a69d9e06e5b54ea597eef5fb3ffef509fe">tx/828ef3b079f9c23829c56fe86e85b4a69d9e06e5b54ea597eef5fb3ffef509fe</a>
<a href="https://blockchain.info/tx/828ef3b079f9c23829c56fe86e85b4a69d9e06e5b54ea597eef5fb3ffef509fe?format=hex">tx/828ef3b079f9... in hexadecimal</a></p>
<p>As you can see the entire output of the first bash command, that is
<code>
3045022100c12a7d54972f26d14cb311339b5122f8c187417dde1e8efb6841f55c34220ae0022066632c5cd4161efa3a2837764eee9eb84975dd54c2de2865e9752585c53e7cce
</code>
is contained in:
<code>
&quot;script&quot;:&quot;483045022100c12a7d54972f26d14cb311339b5122f8c187417dde1e8efb6841f55c34220ae0022066632c5cd4161efa3a2837764eee9eb84975dd54c2de2865e9752585c53e7cce01&quot;
</code>
except for the 48 at the beginning and the 01 at the end.</p>
<p>That is a signature hash:
this <a href="https://en.bitcoin.it/wiki/List_of_address_prefixes">page</a> explains that the 48 is just a decimal prefix given to uncompressed transactions, and the 01 at the end is just a SIGHASH_ALL <a href="https://bitcoin.org/en/glossary/signature-hash">code</a> that flags the end of the signature.</p>
<h2 id="so-is-it-a-fake">So, is it a fake?</h2>
<p>Yes, indeed.
At the end, I ask, why would you choose anything else than the easiest and most conclusive way to prove something?</p>
<p><img src="/wp-content/uploads/2016/satosh.jpg" alt="Wright &quot;signs&quot; the blockchain"></p>
</div>
</br>
<hr>
</br>
<span> </span>
<div class="post">
<h1 class="post-title">
<a href="/pescewanda/2016/04/17/wright-nakamoto/">
@ -252,49 +343,6 @@ instantaneously.</p></li>
</br>
<hr>
</br>
<span> </span>
<div class="post">
<h1 class="post-title">
<a href="/pescewanda/2016/04/02/buridan_donkey/">
The Buridan's donkey in python
</a>
</h1>
<span class="post-date">02 Apr 2016</span>
<p>During the final weeks of my exam session I started reading a bit about python 3 using an excellent book: <a href="http://www.diveintopython.net/">Dive into Python</a>.
When I noted that python uses the <a href="https://en.wikipedia.org/wiki/Mersenne_Twister">Mersenne Twister PRNG</a> as well I decided to write another version of my <a href="http://francescomecca.eu/index.php/archives/207">Buridan&#39;s donkey program</a>.</p>
<figure class="highlight"><pre><code class="language-python" data-lang="python"> <span class="kn">import</span> <span class="nn">random</span><span class="o">,</span> <span class="nn">sys</span>
<span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">'__main__'</span><span class="p">:</span>
<span class="n">args</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">sys</span><span class="o">.</span><span class="n">stdin</span><span class="o">.</span><span class="n">isatty</span><span class="p">():</span>
<span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">stdin</span><span class="p">:</span>
<span class="k">if</span> <span class="n">line</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="ow">is</span> <span class="s">'</span><span class="se">\n</span><span class="s">'</span><span class="p">:</span>
<span class="n">line</span> <span class="o">=</span> <span class="n">line</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
<span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">line</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">args</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span>
<span class="n">argRange</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">argRange</span><span class="p">):</span>
<span class="k">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="s">'.'</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">random</span><span class="o">.</span><span class="n">randrange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">))))</span></code></pre></figure>
<p>This script works in a different way than the one in c++.
Rather than shuffling a list made by the entries in the arguments, it pops randomly one entry from the list till the list is empty.</p>
<p>Not satisfied enough, I wrote also a telegram bot using the <a href="https://github.com/eternnoir/pyTelegramBotAPI">telebot library</a> that works as the script above but inside the telegram app.
The bot can be added to your contact list by simply searching for <a href="http://telegram.me/duridan_donkey_bot">@duridan_donkey_bot</a> (yes, a typo!)</p>
<p>All the code is opensource and can be found on my github page.</p>
<p>Francesco Mecca</p>
</div>
</br>
<hr>
</br>
<span> </span>
</div>

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -32,6 +32,49 @@
<div class="posts">
<div class="post">
<h1 class="post-title">
<a href="/pescewanda/2016/04/02/buridan_donkey/">
The Buridan's donkey in python
</a>
</h1>
<span class="post-date">02 Apr 2016</span>
<p>During the final weeks of my exam session I started reading a bit about python 3 using an excellent book: <a href="http://www.diveintopython.net/">Dive into Python</a>.
When I noted that python uses the <a href="https://en.wikipedia.org/wiki/Mersenne_Twister">Mersenne Twister PRNG</a> as well I decided to write another version of my <a href="http://francescomecca.eu/index.php/archives/207">Buridan&#39;s donkey program</a>.</p>
<figure class="highlight"><pre><code class="language-python" data-lang="python"> <span class="kn">import</span> <span class="nn">random</span><span class="o">,</span> <span class="nn">sys</span>
<span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">'__main__'</span><span class="p">:</span>
<span class="n">args</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">sys</span><span class="o">.</span><span class="n">stdin</span><span class="o">.</span><span class="n">isatty</span><span class="p">():</span>
<span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">stdin</span><span class="p">:</span>
<span class="k">if</span> <span class="n">line</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="ow">is</span> <span class="s">'</span><span class="se">\n</span><span class="s">'</span><span class="p">:</span>
<span class="n">line</span> <span class="o">=</span> <span class="n">line</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
<span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">line</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">args</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span>
<span class="n">argRange</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">argRange</span><span class="p">):</span>
<span class="k">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="s">'.'</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">random</span><span class="o">.</span><span class="n">randrange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">))))</span></code></pre></figure>
<p>This script works in a different way than the one in c++.
Rather than shuffling a list made by the entries in the arguments, it pops randomly one entry from the list till the list is empty.</p>
<p>Not satisfied enough, I wrote also a telegram bot using the <a href="https://github.com/eternnoir/pyTelegramBotAPI">telebot library</a> that works as the script above but inside the telegram app.
The bot can be added to your contact list by simply searching for <a href="http://telegram.me/duridan_donkey_bot">@duridan_donkey_bot</a> (yes, a typo!)</p>
<p>All the code is opensource and can be found on my github page.</p>
<p>Francesco Mecca</p>
</div>
</br>
<hr>
</br>
<span> </span>
<div class="post">
<h1 class="post-title">
<a href="/pescewanda/2016/04/02/blog-migrated/">
@ -310,31 +353,6 @@ perl-cleaner --all</pre>
</br>
<hr>
</br>
<span> </span>
<div class="post">
<h1 class="post-title">
<a href="/index.php/archives/171">
Addio Blogspot
</a>
</h1>
<span class="post-date">25 Aug 2015</span>
<p><a href="http://dashburst.com/nsa-needs-google-eye-in-sky/"><img class="aligncenter wp-image-172 size-medium" src="http://francescomecca.eu/wp-content/uploads/2015/08/googlebigbrother-296x300.jpg" alt="" width="296" height="300" srcset="http://francescomecca.eu/wp-content/uploads/2015/08/googlebigbrother-296x300.jpg 296w, http://francescomecca.eu/wp-content/uploads/2015/08/googlebigbrother.jpg 669w" sizes="(max-width: 296px) 100vw, 296px" /></a>Ho deciso di abbandonare Blogspot per le stesse ragioni per cui ho smesso di utilizzare i servizi Google due anni fa: privacy e controllo.</p>
<p>Ora il blog e` disponibile a questo indirizzo ed e` fisicamente sul mio Raspberry PI che utilizza Raspbian + WordPress.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp; </p>
</div>
</br>
<hr>
</br>
<span> </span>
</div>

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -32,6 +32,31 @@
<div class="posts">
<div class="post">
<h1 class="post-title">
<a href="/index.php/archives/171">
Addio Blogspot
</a>
</h1>
<span class="post-date">25 Aug 2015</span>
<p><a href="http://dashburst.com/nsa-needs-google-eye-in-sky/"><img class="aligncenter wp-image-172 size-medium" src="http://francescomecca.eu/wp-content/uploads/2015/08/googlebigbrother-296x300.jpg" alt="" width="296" height="300" srcset="http://francescomecca.eu/wp-content/uploads/2015/08/googlebigbrother-296x300.jpg 296w, http://francescomecca.eu/wp-content/uploads/2015/08/googlebigbrother.jpg 669w" sizes="(max-width: 296px) 100vw, 296px" /></a>Ho deciso di abbandonare Blogspot per le stesse ragioni per cui ho smesso di utilizzare i servizi Google due anni fa: privacy e controllo.</p>
<p>Ora il blog e` disponibile a questo indirizzo ed e` fisicamente sul mio Raspberry PI che utilizza Raspbian + WordPress.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp; </p>
</div>
</br>
<hr>
</br>
<span> </span>
<div class="post">
<h1 class="post-title">
<a href="/index.php/archives/99">
@ -419,61 +444,6 @@
</br>
<hr>
</br>
<span> </span>
<div class="post">
<h1 class="post-title">
<a href="/index.php/archives/9">
Script per il bulk download da Archive.org
</a>
</h1>
<span class="post-date">30 Jun 2015</span>
<p>In questi giorni mi e` capitato di dover scaricare varie collezioni da <a href="https://en.wikipedia.org/wiki/Internet_Archive">archive.org</a>, una libreria digitale multimediale la cui missione e` l&#8217;accesso universale a tutta la conoscenza.</p>
<p>Principalmente lo uso per scaricare tantissime registrazioni live di vari concerti registrati a mio avviso in maniera impeccabile.</p>
<p>Nel sito si trova una guida per scaricare in bulk usando wget e gli strumenti del sito, ma risulta piuttosto prolissa e complicata se si vuole fare un download al volo.</p>
<p>Questo e` lo script che uso, modificato da <a href="https://github.com/ghalfacree/bash-scripts/blob/master/archivedownload.sh">questo</a> script: e` scritto in bash e funziona su tutte le distribuzioni sulle quali e` installato wget, tail e sed.</p>
<pre class="wp-code-highlight prettyprint linenums:1">#!/bin/bash
# Write here the extension of the file that you want to accept
#filetype =.flac
#append this to line 24
#-A .$filetype
#Write here the extension of the file that you want to reject, divided by a comma
fileremove = .null
if [ “$1” = “” ]; then
echo USAGE: archivedownload.sh collectionname
echo See Archive.org entry page for the collection name.
echo Collection name must be entered exactly as shown: lower case, with hyphens.
exit
fi
echo Downloading list of entries for collection name $1…
wget -nd -q “http://archive.org/advancedsearch.php?q=collection%3A$1&amp;fl%5B%5D=identifier&amp;sort%5B%5D=identifier+asc&amp;sort%5B%5D=&amp;sort%5B%5D=&amp;rows=9999&amp;page=1&amp;callback=callback&amp;save=yes&amp;output=csv” -O identifiers.txt
echo Processing entry list for wget parsing…
tail -n +2 identifiers.txt | sed s/”//g &gt; processedidentifiers.txt
if [ “`cat processedidentifiers.txt | wc -l`” = “0” ]; then
echo No identifiers found for collection $1. Check name and try again.
rm processedidentifiers.txt identifiers.txt
exit
fi
echo Beginning wget download of `cat processedidentifiers.txt | wc -l` identifiers…
wget -r -H -nc -np -nH -nd -e -R $fileremove robots=off -i processedidentifiers.txt -B http://archive.org/download/
rm identifiers.txt processedidentifiers.txt
echo Complete.
</pre>
<p>Francesco Mecca </p>
</div>
</br>
<hr>
</br>
<span> </span>
</div>

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -32,6 +32,61 @@
<div class="posts">
<div class="post">
<h1 class="post-title">
<a href="/index.php/archives/9">
Script per il bulk download da Archive.org
</a>
</h1>
<span class="post-date">30 Jun 2015</span>
<p>In questi giorni mi e` capitato di dover scaricare varie collezioni da <a href="https://en.wikipedia.org/wiki/Internet_Archive">archive.org</a>, una libreria digitale multimediale la cui missione e` l&#8217;accesso universale a tutta la conoscenza.</p>
<p>Principalmente lo uso per scaricare tantissime registrazioni live di vari concerti registrati a mio avviso in maniera impeccabile.</p>
<p>Nel sito si trova una guida per scaricare in bulk usando wget e gli strumenti del sito, ma risulta piuttosto prolissa e complicata se si vuole fare un download al volo.</p>
<p>Questo e` lo script che uso, modificato da <a href="https://github.com/ghalfacree/bash-scripts/blob/master/archivedownload.sh">questo</a> script: e` scritto in bash e funziona su tutte le distribuzioni sulle quali e` installato wget, tail e sed.</p>
<pre class="wp-code-highlight prettyprint linenums:1">#!/bin/bash
# Write here the extension of the file that you want to accept
#filetype =.flac
#append this to line 24
#-A .$filetype
#Write here the extension of the file that you want to reject, divided by a comma
fileremove = .null
if [ “$1” = “” ]; then
echo USAGE: archivedownload.sh collectionname
echo See Archive.org entry page for the collection name.
echo Collection name must be entered exactly as shown: lower case, with hyphens.
exit
fi
echo Downloading list of entries for collection name $1…
wget -nd -q “http://archive.org/advancedsearch.php?q=collection%3A$1&amp;fl%5B%5D=identifier&amp;sort%5B%5D=identifier+asc&amp;sort%5B%5D=&amp;sort%5B%5D=&amp;rows=9999&amp;page=1&amp;callback=callback&amp;save=yes&amp;output=csv” -O identifiers.txt
echo Processing entry list for wget parsing…
tail -n +2 identifiers.txt | sed s/”//g &gt; processedidentifiers.txt
if [ “`cat processedidentifiers.txt | wc -l`” = “0” ]; then
echo No identifiers found for collection $1. Check name and try again.
rm processedidentifiers.txt identifiers.txt
exit
fi
echo Beginning wget download of `cat processedidentifiers.txt | wc -l` identifiers…
wget -r -H -nc -np -nH -nd -e -R $fileremove robots=off -i processedidentifiers.txt -B http://archive.org/download/
rm identifiers.txt processedidentifiers.txt
echo Complete.
</pre>
<p>Francesco Mecca </p>
</div>
</br>
<hr>
</br>
<span> </span>
<div class="post">
<h1 class="post-title">
<a href="/index.php/archives/104">
@ -386,67 +441,6 @@ Command successful.</pre>
questa opzione non richiede password ed e` irreversibile.
</p>
<p style="text-align: right;">
Francesco Mecca
</p>
</div>
</br>
<hr>
</br>
<span> </span>
<div class="post">
<h1 class="post-title">
<a href="/index.php/archives/23">
La taglia unica del Web 2.0
</a>
</h1>
<span class="post-date">01 Jun 2015</span>
<p><a href="https://www.youtube.com/embed/e3Zs74IH0mc?feature=player_embedded">In questo discorso</a> al summit Web 2.0 del 2011 Chris Poole, il fondatore di 4chan, riflette sul concetto di identita` e di come stia cambiando con l&#8217;introduzione del Web 2.0.</p>
<p>Nel mare di Internet assistiamo a due spiagge molto lontane che delimitano lo spazio della nostra attivita`: l&#8217;anonimato e l&#8217;identita` virtuale (che ci identifica nel mondo reale).</p>
<p>E` un po` come misurare i due poli opposti, Facebook e Google Plus che richiedono il tuo nome vero e quindi ogni attivita` online e` un riflesso del proprio io reale, e 4chan, una delle poche risorse anonime nel Web che permette a ciascun utente di fare post anonimi e discutere quindi senza una forma di censura.</p>
<h3 id="><span style="font-size: large;"><span style="font-weight: normal;"> </span></span></h3>
<h4 id="the-core-problem-is-not-the-audience-is-who-you-share-out"><span style="font-size: large;"><span style="font-weight: normal;">The core problem is not the audience, is who you share out</span></span></h4>
<p>Secondo Chris Poole, quando Google introdusse sul proprio social network la feature “circles”, ovvero la possibilita` di condividere i propri post solo con una parte dei propri followers (l&#8217;equivalente delle smart list di Facebook), si e` perso di vista il problema principale, ovvero che non importa l&#8217;audience bensi` quale versione di te condividi ).</p>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tr>
<td style="text-align: center;">
<a style="margin-left: auto; margin-right: auto;" href="http://francescomecca.eu/wp-content/uploads/2015/08/d574d-twoheads.png"><img src="http://francescomecca.eu/wp-content/uploads/2015/08/d574d-twoheads.png?w=300" alt="" width="400" height="200" border="0" /></a>
</td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">
<a href="http://www.jisc.ac.uk/blog/whats-the-cost-of-curating-content-in-the-digital-age-01-apr-2015">fonte</a>
</td>
</tr>
</table>
<p>Il Chris che parla al summit e` un Chris diverso dal Chris figlio, Chris fondatore di una startup, Chris admin di 4chan e magari, in un ipotetico futuro, Chris padre.</p>
<p><u>L&#8217; identita` e` un prisma.</u></p>
<p>Facebook e gli altri giganti del web vogliono invece essere uno specchio della nostra identita`.</p>
<h4 id="one-size-fits-all"><span style="font-size: large;"><span style="font-weight: normal;">One size fits all</span></span></h4>
<p>Il modello della taglia unica e` completamente opposto al principio per cui molte persone gestiscono vari account online. Su ogni account scegli di mostrare una parte di te e con il tempo ti costruisci un&#8217;identita` unica ed altrettanto vera.</p>
<p>E` preoccupante che con il passare del tempo queste possibilita` vengano erose dai giganti del web.</p>
<p>Spostiamo la nostra attenzione sulle generazioni future: da giovani si compiono naturalmente degli errori che poi ci lasciamo alle spalle crescendo.</p>
<p>In un mondo dove la linea offline/online sta sbiadendo e non si puo` prendere le distanze da una monolitica identita` virtuale non solo perdiamo la possibilita` di lasciarci alle spalle delle scelte o degli sbagli, ma corriamo incontro al rischio di veder scomparire ogni sfumatura della nostra personalita`.</p>
<p style="text-align: right;">
Francesco Mecca
</p>

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -32,6 +32,67 @@
<div class="posts">
<div class="post">
<h1 class="post-title">
<a href="/index.php/archives/23">
La taglia unica del Web 2.0
</a>
</h1>
<span class="post-date">01 Jun 2015</span>
<p><a href="https://www.youtube.com/embed/e3Zs74IH0mc?feature=player_embedded">In questo discorso</a> al summit Web 2.0 del 2011 Chris Poole, il fondatore di 4chan, riflette sul concetto di identita` e di come stia cambiando con l&#8217;introduzione del Web 2.0.</p>
<p>Nel mare di Internet assistiamo a due spiagge molto lontane che delimitano lo spazio della nostra attivita`: l&#8217;anonimato e l&#8217;identita` virtuale (che ci identifica nel mondo reale).</p>
<p>E` un po` come misurare i due poli opposti, Facebook e Google Plus che richiedono il tuo nome vero e quindi ogni attivita` online e` un riflesso del proprio io reale, e 4chan, una delle poche risorse anonime nel Web che permette a ciascun utente di fare post anonimi e discutere quindi senza una forma di censura.</p>
<h3 id="><span style="font-size: large;"><span style="font-weight: normal;"> </span></span></h3>
<h4 id="the-core-problem-is-not-the-audience-is-who-you-share-out"><span style="font-size: large;"><span style="font-weight: normal;">The core problem is not the audience, is who you share out</span></span></h4>
<p>Secondo Chris Poole, quando Google introdusse sul proprio social network la feature “circles”, ovvero la possibilita` di condividere i propri post solo con una parte dei propri followers (l&#8217;equivalente delle smart list di Facebook), si e` perso di vista il problema principale, ovvero che non importa l&#8217;audience bensi` quale versione di te condividi ).</p>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tr>
<td style="text-align: center;">
<a style="margin-left: auto; margin-right: auto;" href="http://francescomecca.eu/wp-content/uploads/2015/08/d574d-twoheads.png"><img src="http://francescomecca.eu/wp-content/uploads/2015/08/d574d-twoheads.png?w=300" alt="" width="400" height="200" border="0" /></a>
</td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">
<a href="http://www.jisc.ac.uk/blog/whats-the-cost-of-curating-content-in-the-digital-age-01-apr-2015">fonte</a>
</td>
</tr>
</table>
<p>Il Chris che parla al summit e` un Chris diverso dal Chris figlio, Chris fondatore di una startup, Chris admin di 4chan e magari, in un ipotetico futuro, Chris padre.</p>
<p><u>L&#8217; identita` e` un prisma.</u></p>
<p>Facebook e gli altri giganti del web vogliono invece essere uno specchio della nostra identita`.</p>
<h4 id="one-size-fits-all"><span style="font-size: large;"><span style="font-weight: normal;">One size fits all</span></span></h4>
<p>Il modello della taglia unica e` completamente opposto al principio per cui molte persone gestiscono vari account online. Su ogni account scegli di mostrare una parte di te e con il tempo ti costruisci un&#8217;identita` unica ed altrettanto vera.</p>
<p>E` preoccupante che con il passare del tempo queste possibilita` vengano erose dai giganti del web.</p>
<p>Spostiamo la nostra attenzione sulle generazioni future: da giovani si compiono naturalmente degli errori che poi ci lasciamo alle spalle crescendo.</p>
<p>In un mondo dove la linea offline/online sta sbiadendo e non si puo` prendere le distanze da una monolitica identita` virtuale non solo perdiamo la possibilita` di lasciarci alle spalle delle scelte o degli sbagli, ma corriamo incontro al rischio di veder scomparire ogni sfumatura della nostra personalita`.</p>
<p style="text-align: right;">
Francesco Mecca
</p>
</div>
</br>
<hr>
</br>
<span> </span>
<div class="post">
<h1 class="post-title">
<a href="/index.php/archives/27">
@ -869,166 +930,6 @@ Truecrypt permette di creare un volume crittografico che si presenta come un fil
</br>
<hr>
</br>
<span> </span>
<div class="post">
<h1 class="post-title">
<a href="/index.php/archives/44">
La prima volta non si scorda mai!
</a>
</h1>
<span class="post-date">08 May 2015</span>
<p><span style="font-family:inherit;">Questa e` un&#8217; intervista fatta da noi del blog per noi del blog dove descriviamo la nostra prima esperienza nel Web, le nostre prime impressioni e le avventure che in questi anni ci hanno aiutato a maturare confidenza e consapevolezza in Internet. </span></p>
<h4 id="><strong><span style="font-weight:normal;"><span style="font-family:inherit;"> </span></span></strong></h4>
<h4 id="a-che-eta-hai-utilizzato-per-la-prima-volta-il-computer"><strong><span style="font-weight:normal;"><span style="font-family:inherit;"></span></span></strong><span style="font-weight:normal;"><span style="font-family:inherit;">A che eta` hai utilizzato per la prima volta il computer?</span></span></h4>
<h4 id="><span style="font-weight:normal;"><span style="font-family:inherit;"> </span></span></h4>
<p><span style="font-family:inherit;"><b>Francesco: </b>Mi ricordo che la prima volta che un computer varco` la soglia di casa era l&#39;anno 2000 poiche` i miei genitori per lavoro si son trovati e si trovano tutt&#39;ora ad usare giornalmente il computer ed ogni tanto permettevano anche a me di giocarci un pochino. A 6 anni ricevetti come regalo un grigio computer fisso che divenne da allora il mio personale. </span><br>
<span style="font-family:inherit;"><b><br />Eugenio: </b>La prima volta che utilizzai il computer avevo circa 10 anni, prima l&#8217;avevo visto solo utilizzare ai miei genitori, poi quando incominciai a fare le medie iniziai a utilizzare il computer per imparare a usare power point, con il quale scrissi e presentai la tesina degli esami di terza media, e questo mi fece acquisire una certa familiarita&#8217; con il computer, anche se molto limitata. <br /> </span><br>
<span style="font-family:inherit;"><b>Gabriele:</b> La prima volta che ho utilizzato il computer ero un po piccolo, risale a nove anni fa e avevo dieci anni, spinto dalla curiosità di questo nuovo oggetto misterioso, mi piacque molto sin da subito, ovviamente a causa della presenza dei giochi, che erano le uniche cose che a quellepoca usavo, naturalmente ero ignaro del suo vero potenziale e lo vedevo solo come un oggetto di divertimento. </span></p>
<h4 id="><span style="font-family:inherit;"> <br /></h4>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left:auto;margin-right:auto;text-align:center;">
<tr>
<td style="text-align:center;">
<a href="http://francescomecca.eu/wp-content/uploads/2015/08/dac55-9297-windows-start-button-on-a-computer-screen-pv.jpg" style="margin-left:auto;margin-right:auto;"><img border="0" height="265" src="http://francescomecca.eu/wp-content/uploads/2015/08/dac55-9297-windows-start-button-on-a-computer-screen-pv.jpg?w=300" width="400" /></a>
</td>
</tr>
<tr>
<td class="tr-caption" style="text-align:center;">
<a href="http://www.publicdomainpictures.net/view-image.php?image=1829&picture=internet-browsing" target="_blank"><span style="font-family:inherit;">f<span style="font-family:inherit;">onte</span></span></a>
</td>
</tr>
</table>
<div class="separator" style="clear:both;text-align:center;">
</div>
<p>
<div class="separator" style="clear:both;text-align:center;">
</div>
<p>
</span></h4>
<h4>
<span style="font-family:inherit;">Quando ti sei approcciato ad Internet la prima volta e cosa ti ha spinto? </span>
</h4>
<h4>
<span style="font-family:inherit;"> </span>
</h4>
<h4>
<span style="font-family:inherit;"></span>
</h4>
<p>
<span style="font-family:inherit;"><b><span style="font-family:inherit;"><span style="font-size:small;">Francesco: </span></span></b>Facevo la seconda elementare quando in casa arrivo` un modem ISDN 128kb/s e nel 2004 adottammo la banda larga con Telecom. Ero incuriosito dal mondo del Web che per me rappresentava il grande mare che Ulisse navigava con il suo equipaggio. </span><br /><span style="font-family:inherit;">La curiosita` e` stat<span style="font-family:inherit;">o</span> <span style="font-family:inherit;">il</span> principale <span style="font-family:inherit;">motivo </span>del mio approdo nel mondo del Web e tutt&#8217;ora mi spinge ad affrontare nuove sfide tecnologiche. <br /> </span><br /><span style="font-family:inherit;"><span style="font-size:small;"><b>Eugenio:</b></span> Risale al periodo in cui iniziai le medie la prima volta che andai su internet, il motivo fu che I professori chiedevano di fare ricerce su vari tipi di argomenti e io trovai comodo andare su Internet per trovare le informazioni che mi servivano, visto che sapevo di poterle trovare istantaneamente li&#8217;. Così, dopo aver chiesto il permesso ai miei genitori, aprii internet explorer e iniziai a navigare nel Web. <br /> </span><br /><span style="font-family:inherit;"><span style="font-size:small;"><b>Gabriele:</b></span> Qualche tempo dopo aver iniziato a utilizzare il computer venni a conoscenza di questo immenso mondo virtuale al quale si poteva accedere avendo una connessione. Il motivo principale era quello di dover fare una ricerca per la scuola, e internet risultava lo strumento perfetto per ciò a causa della grande quantità di dati che contiene e dellimmediatezza con cui si possono reperire. </span><br />
<h4>
<span style="font-family:inherit;"> </span>
</h4>
<h4>
<span style="font-family:inherit;"> </span>
</h4>
<h4>
<span style="font-family:inherit;">Internet e Web: come si e` sviluppata in te la consapevolezza che non fossero la stessa cosa? </span>
</h4>
<h4>
<span style="font-family:inherit;"> </span>
</h4>
<h4>
<span style="font-family:inherit;"></span>
</h4>
<p>
<span style="font-family:inherit;"><b>Francesco:</b> Inizialmente non ero cosciente che Internet fosse solo la base su cui si fonda il Web e che in realta` si completa con molti altri strumenti; quando organizzavo con i miei compagni LAN party e giocavamo in rete locale iniziai a chiedermi se effettivamente Internet avesse molto altro da offrire che le sole pagine online (indicizzate dai motori di ricerca) e cosa c&#8217;era al di la` del Web che fino ad allora conoscevo. <br /> </span><br /><span style="font-family:inherit;"><b>Eugenio:</b> Questa consapevolezza l&#8217;ho sviluppata non all&#8217;inizio, ma con il passare del tempo aumentando la mia esperienza con il computer, ma fin dai primi anni di utilizzo capivo che c&#8217;era una distinzione tra I due grazie anche al fatto dell&#8217;utilizzo di messanger o la posta elettronica, in breve mi rendevo sempre piu&#8217; conto che il web era solo una piccola parte di Internet e dei servizi che puo&#8217; offrire che va oltre le pagine Web da visitare. <br /><u> </u></span><br /><span style="font-family:inherit;"><b><span style="font-size:small;">Gabriele:</span> </b>Col passare del tempo e usando sempre più il computer, mi resi conto che quello che io chiamavo internet era un insieme più vasto di quel che pensavo. La consapevolezza venne quando scoprii che non si poteva solo visitare siti, ma anche che esistevano servizi di posta elettronica per poter inviare le e-mail, oppure altri dove poter scaricare tutto ciò di cui avevo bisogno. </span><br />
<h4>
 <br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left:auto;margin-right:auto;text-align:center;">
<tr>
<td style="text-align:center;">
<a href="http://planeta.wikispaces.com/digitalnatives" style="margin-left:auto;margin-right:auto;" target="_blank"><img alt=" fonte" border="0" height="480" src="http://francescomecca.eu/wp-content/uploads/2015/08/f2a10-url.jpe" width="640" /></a>
</td>
</tr>
<tr>
<td class="tr-caption" style="text-align:center;">
<a href="http://planeta.wikispaces.com/digitalnatives">fonte</a>
</td>
</tr>
</table>
</h4>
<h4>
 <span style="font-family:inherit;">Ti sei mai reso sentito di far parte di una nuova classe che molti definiscono con il termine “nativi digitali”? </span>
</h4>
<h4>
</h4>
<h4>
<span style="font-family:inherit;"></span>
</h4>
<p>
<span style="font-family:inherit;"><b>Francesco:</b> Sono cresciuto con il computer e i computer sono cresciuti con me. Tecnicamente sono un nativo digitale, mi sono sempre approcciato alle nuove tecnologie con molto interesse e un&#8217; innata naturalezza. Mi sento figlio del digitale ma non mi sento allineato con la visione che i grandi giganti della rete hanno adottato e stanno cercando di diffondere. Spesso il web mi offre rifugio, spesso sono io stesso che lo rifuggo. </span><br /><span style="font-family:inherit;"><b><br />Eugenio:</b> All&#8217;inizio no, pensavo che usare il computer e saperne utilizzare gli strumenti base fosse una cosa normale che tutti sapessero fare, ma poi mi accorsi che non era cosi<span style="font-family:inherit;">`</span>, il fatto che io sapessi utilzzare il computer sin da bambino e che mi ci trovassi a mio agio era legato al fatto di far parte di un periodo storico che ha visto I computer sempre piu<span style="font-family:inherit;">`</span> presenti nella vita quotidiana delle persone. Quindi quelli nati nel mio stesso periodo vedevano <span style="font-family:inherit;">i</span> computer come una cosa che e<span style="font-family:inherit;">`</span> sempre stata presente nella nosta quotidianita<span style="font-family:inherit;">`</span>,per questo molti ci definiscono con il termine &#8220;nativi digitali&#8221;, mentre le persone che appartengono a generazioni passate si sono trovate a fare <span style="font-family:inherit;">i</span> conti con questa nuova tecnologia a loro poco familiare e con cui, magari, hanno avuto difficolta&#8217; ad approcciarsi. </span><br /><span style="font-family:inherit;"><br /><b>Gabriele: </b>Non <span style="font-family:inherit;">e<span style="font-family:inherit;">`</span></span> un pensiero che <span style="font-family:inherit;">e`</span> nato subito quello di far parte della classe dei nativi digitali, si riscontra col tempo, quando scopri che il modo di crescere delle persone di generazioni precedenti era diverso, perch<span style="font-family:inherit;">e`</span> non avevano nessun rapporto con la tecnologia perché era meno presente, infatti per noi <span style="font-family:inherit;">e`</span> qualcosa che siamo abituati a vedere sin da piccoli e ci cresciamo, mentre le altre generazioni hanno visto e vissuto il cambiamento dovendosi adattare. </span><br />
<h4>
  <br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float:left;margin-right:1em;text-align:left;">
<tr>
<td style="text-align:center;">
<a href="http://www.allpurposeguru.com/2011/09/information-seeking-the-internet-vs-bookstores-vs-the-library" style="clear:left;margin-bottom:1em;margin-left:auto;margin-right:auto;"><img alt="" border="0" height="566" src="http://francescomecca.eu/wp-content/uploads/2015/08/035d8-5727308332_8635bee3d9_o.jpg" title="" width="640" /></a>
</td>
</tr>
<tr>
<td class="tr-caption" style="text-align:center;">
<a href="http://www.allpurposeguru.com/2011/09/information-seeking-the-internet-vs-bookstores-vs-the-library/">fonte</a><a href="http://www.allpurposeguru.com/2011/09/information-seeking-the-internet-vs-bookstores-vs-the-library"></a>
</td>
</tr>
</table>
</h4>
<h4>
<span style="font-family:inherit;">In questi anni il tuo rapporto con Internet e` sicuramente cambiato. Che punto di vista hai maturato? Pensi di aver maturato una “coscienza digitale” consapevole?</span>
</h4>
<h4>
<span style="font-family:inherit;"> </span>
</h4>
<p>
<span style="font-family:inherit;"><b>Francesco: </b>Ne<span style="font-family:inherit;">i</span> primi anni tutta la mia attivita` informatica si concentrava <span style="font-family:inherit;">nello</span> scoprire cosa internet aveva da offrire. Appena venni a conoscenza del protocollo Bittorrent (era appena il 2004) iniziai ad approfondire il vasto campo del p2p e la condivisione online dei contenuti. La maggior parte del tempo la trascorrevo provando e approfondendo vari protocolli di messaggistica, scambio dati e successivamente, con gli strumenti necessari, algoritmi crittografici. </span><br /><span style="font-family:inherit;"><span style="font-family:inherit;">Nei p<span style="font-family:inherit;">rimi anni</span></span> Internet e` stato per me un cappello magico dal quale potevo estrarre conigli o nascondere me stesso. Dalle scuole medie in poi scopri nel mondo digitale un tempio di cultura e di conoscenza (non sempre ortodossa e ancora piu` affascinante). A partire dalla diffusione del “Web 2.0” la mia coscienza digitale e` evoluta sempre piu` in fretta mentre vedevo una piccola parte del mio mondo invasa dai “colossi” dell&#8217;industria moderna che per <span style="font-family:inherit;">p<span style="font-family:inherit;">er <span style="font-family:inherit;">un ingenuo ragazzo liceale, quale io ero,</span></span></span> non avevano ancora peso. Mentre lo spazio in rete si <span style="font-family:inherit;">re</span>stringeva la mia consapevolezza del mondo digitale aumentava: tutt&#8217;ora assisto a cambiamenti forti nel panorama dell&#8217;informatica che si discostano dalla mia visione<span style="font-family:inherit;">, </span>e dal mio utilizzo del web<span style="font-family:inherit;">,</span> ma che per il principio di azione e reazione mi fanno comprendere chi sono e che tipo di nativo digitale voglio essere. </p>
<div class="highlight"><pre><code class="language-" data-lang=""> &lt;p&gt;
&lt;b&gt;Eugenio:&lt;/b&gt; Sicuramente il mio rapporto con internet e&lt;span style="font-family:inherit;"&gt;`&lt;/span&gt; cambiato nel corso degli anni, infatti nei primi tempi usavo internet per fare ricerche sul web o chattare con I miei amici tramite servizi quali messenger, ma con il passare del tempo divenni sempre piu&lt;span style="font-family:inherit;"&gt;`&lt;/span&gt; consapevole dei servizi che internet offriva, iniziai a informarmi su argomenti di attualita&amp;#8217; o che mi interessavano, giocare a giochi online o anche in rete locale con amici, fare acquisti su vari siti di e-commerce e intrattenermi sulle varie piattaforme che si possono trovare che si sono sostituite alla televisione. Posso dire dal mio punto di vista che internet e&lt;span style="font-family:inherit;"&gt;`&lt;/span&gt; senz&amp;#8217;altro un vastissimo luogo che offre molte occasioni sia di crescita culturale, vista la quantita&amp;#8217; di informazioni che vi si possono trovare, sia personale, poiche&lt;span style="font-family:inherit;"&gt;`&lt;/span&gt; e&lt;span style="font-family:inherit;"&gt;`&lt;/span&gt; anche un luogo di incontro tra persone che si confrontano tra loro, anche se a volte possono trovarsi contenuti espliciti. Vista l&amp;#8217;importanza di internet e&lt;span style="font-family:inherit;"&gt;`&lt;/span&gt; bene maturare una coscienza diditale quanto piu&lt;span style="font-family:inherit;"&gt;`&lt;/span&gt; consapevole per far in modo che le nostre azioni sulla rete siano eticamente corrette e quindi evitare di scaricare file piratati, o evitare azioni di cyberbullismo contro altre persone e tutti quei comportamenti che possono danneggiare gli altri. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:inherit;"&gt;&lt;br /&gt;&lt;b&gt;Gabriele:&lt;/b&gt; Crescendo ovviamente il mio rapporto con Internet &lt;span style="font-family:inherit;"&gt;e`&lt;/span&gt; cambiato, mentre prima quando ero piccolo lo usavo per giocare, col passare del tempo ho scoperto che Internet &lt;span style="font-family:inherit;"&gt;e`&lt;/span&gt; molto di pi&lt;span style="font-family:inherit;"&gt;u`&lt;/span&gt;, mette in contatto le persone, è un mezzo per la diffusione di informazioni, musica e molto altro. Oggi lo uso principalmente per &lt;span style="font-family:inherit;"&gt;i&lt;/span&gt; social, ascoltare musica, comprare articoli e anche quando posso restare informato. Durante questi anni &lt;span style="font-family:inherit;"&gt;e`&lt;/span&gt; cambiata anche la mia considerazione su Internet, infatti pensavo erroneamente che fosse un posto innocuo, ma mi dovetti ricredere perch&lt;span style="font-family:inherit;"&gt;e`&lt;/span&gt; non è un luogo adatto a tutti a causa dei contenuti espliciti che contiene. Per quanto riguarda la coscienza digitale questa è una caratteristica che si può sviluppare una volta che si è a conoscenza di averla, perché ogni cosa che facciamo su Internet ha un peso, grande o piccolo che sia, e dobbiamo esserne a conoscenza per limitare eventuali danni o per trarne beneficio, infatti personalmente ogni volta che faccio qualcosa su Internet mi chiedo sempre quali potrebbero essere le conseguenze della mia azione, cosa che dovrebbe fare chiunque. &lt;/span&gt;
&lt;/p&gt;
&lt;div style="text-align:right;"&gt;
&lt;span style="font-family:inherit;"&gt;Fran&lt;span style="font-family:inherit;"&gt;cesco &lt;span style="font-family:inherit;"&gt;Mecca&lt;/span&gt;, Eugenio Corso, Gabriele&lt;/span&gt; &lt;span style="font-family:inherit;"&gt;Cor&lt;span style="font-family:inherit;"&gt;so&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/div&gt;
</code></pre></div>
</div>
</br>
<hr>
</br>
<span> </span>
</div>

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -32,6 +32,166 @@
<div class="posts">
<div class="post">
<h1 class="post-title">
<a href="/index.php/archives/44">
La prima volta non si scorda mai!
</a>
</h1>
<span class="post-date">08 May 2015</span>
<p><span style="font-family:inherit;">Questa e` un&#8217; intervista fatta da noi del blog per noi del blog dove descriviamo la nostra prima esperienza nel Web, le nostre prime impressioni e le avventure che in questi anni ci hanno aiutato a maturare confidenza e consapevolezza in Internet. </span></p>
<h4 id="><strong><span style="font-weight:normal;"><span style="font-family:inherit;"> </span></span></strong></h4>
<h4 id="a-che-eta-hai-utilizzato-per-la-prima-volta-il-computer"><strong><span style="font-weight:normal;"><span style="font-family:inherit;"></span></span></strong><span style="font-weight:normal;"><span style="font-family:inherit;">A che eta` hai utilizzato per la prima volta il computer?</span></span></h4>
<h4 id="><span style="font-weight:normal;"><span style="font-family:inherit;"> </span></span></h4>
<p><span style="font-family:inherit;"><b>Francesco: </b>Mi ricordo che la prima volta che un computer varco` la soglia di casa era l&#39;anno 2000 poiche` i miei genitori per lavoro si son trovati e si trovano tutt&#39;ora ad usare giornalmente il computer ed ogni tanto permettevano anche a me di giocarci un pochino. A 6 anni ricevetti come regalo un grigio computer fisso che divenne da allora il mio personale. </span><br>
<span style="font-family:inherit;"><b><br />Eugenio: </b>La prima volta che utilizzai il computer avevo circa 10 anni, prima l&#8217;avevo visto solo utilizzare ai miei genitori, poi quando incominciai a fare le medie iniziai a utilizzare il computer per imparare a usare power point, con il quale scrissi e presentai la tesina degli esami di terza media, e questo mi fece acquisire una certa familiarita&#8217; con il computer, anche se molto limitata. <br /> </span><br>
<span style="font-family:inherit;"><b>Gabriele:</b> La prima volta che ho utilizzato il computer ero un po piccolo, risale a nove anni fa e avevo dieci anni, spinto dalla curiosità di questo nuovo oggetto misterioso, mi piacque molto sin da subito, ovviamente a causa della presenza dei giochi, che erano le uniche cose che a quellepoca usavo, naturalmente ero ignaro del suo vero potenziale e lo vedevo solo come un oggetto di divertimento. </span></p>
<h4 id="><span style="font-family:inherit;"> <br /></h4>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left:auto;margin-right:auto;text-align:center;">
<tr>
<td style="text-align:center;">
<a href="http://francescomecca.eu/wp-content/uploads/2015/08/dac55-9297-windows-start-button-on-a-computer-screen-pv.jpg" style="margin-left:auto;margin-right:auto;"><img border="0" height="265" src="http://francescomecca.eu/wp-content/uploads/2015/08/dac55-9297-windows-start-button-on-a-computer-screen-pv.jpg?w=300" width="400" /></a>
</td>
</tr>
<tr>
<td class="tr-caption" style="text-align:center;">
<a href="http://www.publicdomainpictures.net/view-image.php?image=1829&picture=internet-browsing" target="_blank"><span style="font-family:inherit;">f<span style="font-family:inherit;">onte</span></span></a>
</td>
</tr>
</table>
<div class="separator" style="clear:both;text-align:center;">
</div>
<p>
<div class="separator" style="clear:both;text-align:center;">
</div>
<p>
</span></h4>
<h4>
<span style="font-family:inherit;">Quando ti sei approcciato ad Internet la prima volta e cosa ti ha spinto? </span>
</h4>
<h4>
<span style="font-family:inherit;"> </span>
</h4>
<h4>
<span style="font-family:inherit;"></span>
</h4>
<p>
<span style="font-family:inherit;"><b><span style="font-family:inherit;"><span style="font-size:small;">Francesco: </span></span></b>Facevo la seconda elementare quando in casa arrivo` un modem ISDN 128kb/s e nel 2004 adottammo la banda larga con Telecom. Ero incuriosito dal mondo del Web che per me rappresentava il grande mare che Ulisse navigava con il suo equipaggio. </span><br /><span style="font-family:inherit;">La curiosita` e` stat<span style="font-family:inherit;">o</span> <span style="font-family:inherit;">il</span> principale <span style="font-family:inherit;">motivo </span>del mio approdo nel mondo del Web e tutt&#8217;ora mi spinge ad affrontare nuove sfide tecnologiche. <br /> </span><br /><span style="font-family:inherit;"><span style="font-size:small;"><b>Eugenio:</b></span> Risale al periodo in cui iniziai le medie la prima volta che andai su internet, il motivo fu che I professori chiedevano di fare ricerce su vari tipi di argomenti e io trovai comodo andare su Internet per trovare le informazioni che mi servivano, visto che sapevo di poterle trovare istantaneamente li&#8217;. Così, dopo aver chiesto il permesso ai miei genitori, aprii internet explorer e iniziai a navigare nel Web. <br /> </span><br /><span style="font-family:inherit;"><span style="font-size:small;"><b>Gabriele:</b></span> Qualche tempo dopo aver iniziato a utilizzare il computer venni a conoscenza di questo immenso mondo virtuale al quale si poteva accedere avendo una connessione. Il motivo principale era quello di dover fare una ricerca per la scuola, e internet risultava lo strumento perfetto per ciò a causa della grande quantità di dati che contiene e dellimmediatezza con cui si possono reperire. </span><br />
<h4>
<span style="font-family:inherit;"> </span>
</h4>
<h4>
<span style="font-family:inherit;"> </span>
</h4>
<h4>
<span style="font-family:inherit;">Internet e Web: come si e` sviluppata in te la consapevolezza che non fossero la stessa cosa? </span>
</h4>
<h4>
<span style="font-family:inherit;"> </span>
</h4>
<h4>
<span style="font-family:inherit;"></span>
</h4>
<p>
<span style="font-family:inherit;"><b>Francesco:</b> Inizialmente non ero cosciente che Internet fosse solo la base su cui si fonda il Web e che in realta` si completa con molti altri strumenti; quando organizzavo con i miei compagni LAN party e giocavamo in rete locale iniziai a chiedermi se effettivamente Internet avesse molto altro da offrire che le sole pagine online (indicizzate dai motori di ricerca) e cosa c&#8217;era al di la` del Web che fino ad allora conoscevo. <br /> </span><br /><span style="font-family:inherit;"><b>Eugenio:</b> Questa consapevolezza l&#8217;ho sviluppata non all&#8217;inizio, ma con il passare del tempo aumentando la mia esperienza con il computer, ma fin dai primi anni di utilizzo capivo che c&#8217;era una distinzione tra I due grazie anche al fatto dell&#8217;utilizzo di messanger o la posta elettronica, in breve mi rendevo sempre piu&#8217; conto che il web era solo una piccola parte di Internet e dei servizi che puo&#8217; offrire che va oltre le pagine Web da visitare. <br /><u> </u></span><br /><span style="font-family:inherit;"><b><span style="font-size:small;">Gabriele:</span> </b>Col passare del tempo e usando sempre più il computer, mi resi conto che quello che io chiamavo internet era un insieme più vasto di quel che pensavo. La consapevolezza venne quando scoprii che non si poteva solo visitare siti, ma anche che esistevano servizi di posta elettronica per poter inviare le e-mail, oppure altri dove poter scaricare tutto ciò di cui avevo bisogno. </span><br />
<h4>
 <br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left:auto;margin-right:auto;text-align:center;">
<tr>
<td style="text-align:center;">
<a href="http://planeta.wikispaces.com/digitalnatives" style="margin-left:auto;margin-right:auto;" target="_blank"><img alt=" fonte" border="0" height="480" src="http://francescomecca.eu/wp-content/uploads/2015/08/f2a10-url.jpe" width="640" /></a>
</td>
</tr>
<tr>
<td class="tr-caption" style="text-align:center;">
<a href="http://planeta.wikispaces.com/digitalnatives">fonte</a>
</td>
</tr>
</table>
</h4>
<h4>
 <span style="font-family:inherit;">Ti sei mai reso sentito di far parte di una nuova classe che molti definiscono con il termine “nativi digitali”? </span>
</h4>
<h4>
</h4>
<h4>
<span style="font-family:inherit;"></span>
</h4>
<p>
<span style="font-family:inherit;"><b>Francesco:</b> Sono cresciuto con il computer e i computer sono cresciuti con me. Tecnicamente sono un nativo digitale, mi sono sempre approcciato alle nuove tecnologie con molto interesse e un&#8217; innata naturalezza. Mi sento figlio del digitale ma non mi sento allineato con la visione che i grandi giganti della rete hanno adottato e stanno cercando di diffondere. Spesso il web mi offre rifugio, spesso sono io stesso che lo rifuggo. </span><br /><span style="font-family:inherit;"><b><br />Eugenio:</b> All&#8217;inizio no, pensavo che usare il computer e saperne utilizzare gli strumenti base fosse una cosa normale che tutti sapessero fare, ma poi mi accorsi che non era cosi<span style="font-family:inherit;">`</span>, il fatto che io sapessi utilzzare il computer sin da bambino e che mi ci trovassi a mio agio era legato al fatto di far parte di un periodo storico che ha visto I computer sempre piu<span style="font-family:inherit;">`</span> presenti nella vita quotidiana delle persone. Quindi quelli nati nel mio stesso periodo vedevano <span style="font-family:inherit;">i</span> computer come una cosa che e<span style="font-family:inherit;">`</span> sempre stata presente nella nosta quotidianita<span style="font-family:inherit;">`</span>,per questo molti ci definiscono con il termine &#8220;nativi digitali&#8221;, mentre le persone che appartengono a generazioni passate si sono trovate a fare <span style="font-family:inherit;">i</span> conti con questa nuova tecnologia a loro poco familiare e con cui, magari, hanno avuto difficolta&#8217; ad approcciarsi. </span><br /><span style="font-family:inherit;"><br /><b>Gabriele: </b>Non <span style="font-family:inherit;">e<span style="font-family:inherit;">`</span></span> un pensiero che <span style="font-family:inherit;">e`</span> nato subito quello di far parte della classe dei nativi digitali, si riscontra col tempo, quando scopri che il modo di crescere delle persone di generazioni precedenti era diverso, perch<span style="font-family:inherit;">e`</span> non avevano nessun rapporto con la tecnologia perché era meno presente, infatti per noi <span style="font-family:inherit;">e`</span> qualcosa che siamo abituati a vedere sin da piccoli e ci cresciamo, mentre le altre generazioni hanno visto e vissuto il cambiamento dovendosi adattare. </span><br />
<h4>
  <br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float:left;margin-right:1em;text-align:left;">
<tr>
<td style="text-align:center;">
<a href="http://www.allpurposeguru.com/2011/09/information-seeking-the-internet-vs-bookstores-vs-the-library" style="clear:left;margin-bottom:1em;margin-left:auto;margin-right:auto;"><img alt="" border="0" height="566" src="http://francescomecca.eu/wp-content/uploads/2015/08/035d8-5727308332_8635bee3d9_o.jpg" title="" width="640" /></a>
</td>
</tr>
<tr>
<td class="tr-caption" style="text-align:center;">
<a href="http://www.allpurposeguru.com/2011/09/information-seeking-the-internet-vs-bookstores-vs-the-library/">fonte</a><a href="http://www.allpurposeguru.com/2011/09/information-seeking-the-internet-vs-bookstores-vs-the-library"></a>
</td>
</tr>
</table>
</h4>
<h4>
<span style="font-family:inherit;">In questi anni il tuo rapporto con Internet e` sicuramente cambiato. Che punto di vista hai maturato? Pensi di aver maturato una “coscienza digitale” consapevole?</span>
</h4>
<h4>
<span style="font-family:inherit;"> </span>
</h4>
<p>
<span style="font-family:inherit;"><b>Francesco: </b>Ne<span style="font-family:inherit;">i</span> primi anni tutta la mia attivita` informatica si concentrava <span style="font-family:inherit;">nello</span> scoprire cosa internet aveva da offrire. Appena venni a conoscenza del protocollo Bittorrent (era appena il 2004) iniziai ad approfondire il vasto campo del p2p e la condivisione online dei contenuti. La maggior parte del tempo la trascorrevo provando e approfondendo vari protocolli di messaggistica, scambio dati e successivamente, con gli strumenti necessari, algoritmi crittografici. </span><br /><span style="font-family:inherit;"><span style="font-family:inherit;">Nei p<span style="font-family:inherit;">rimi anni</span></span> Internet e` stato per me un cappello magico dal quale potevo estrarre conigli o nascondere me stesso. Dalle scuole medie in poi scopri nel mondo digitale un tempio di cultura e di conoscenza (non sempre ortodossa e ancora piu` affascinante). A partire dalla diffusione del “Web 2.0” la mia coscienza digitale e` evoluta sempre piu` in fretta mentre vedevo una piccola parte del mio mondo invasa dai “colossi” dell&#8217;industria moderna che per <span style="font-family:inherit;">p<span style="font-family:inherit;">er <span style="font-family:inherit;">un ingenuo ragazzo liceale, quale io ero,</span></span></span> non avevano ancora peso. Mentre lo spazio in rete si <span style="font-family:inherit;">re</span>stringeva la mia consapevolezza del mondo digitale aumentava: tutt&#8217;ora assisto a cambiamenti forti nel panorama dell&#8217;informatica che si discostano dalla mia visione<span style="font-family:inherit;">, </span>e dal mio utilizzo del web<span style="font-family:inherit;">,</span> ma che per il principio di azione e reazione mi fanno comprendere chi sono e che tipo di nativo digitale voglio essere. </p>
<div class="highlight"><pre><code class="language-" data-lang=""> &lt;p&gt;
&lt;b&gt;Eugenio:&lt;/b&gt; Sicuramente il mio rapporto con internet e&lt;span style="font-family:inherit;"&gt;`&lt;/span&gt; cambiato nel corso degli anni, infatti nei primi tempi usavo internet per fare ricerche sul web o chattare con I miei amici tramite servizi quali messenger, ma con il passare del tempo divenni sempre piu&lt;span style="font-family:inherit;"&gt;`&lt;/span&gt; consapevole dei servizi che internet offriva, iniziai a informarmi su argomenti di attualita&amp;#8217; o che mi interessavano, giocare a giochi online o anche in rete locale con amici, fare acquisti su vari siti di e-commerce e intrattenermi sulle varie piattaforme che si possono trovare che si sono sostituite alla televisione. Posso dire dal mio punto di vista che internet e&lt;span style="font-family:inherit;"&gt;`&lt;/span&gt; senz&amp;#8217;altro un vastissimo luogo che offre molte occasioni sia di crescita culturale, vista la quantita&amp;#8217; di informazioni che vi si possono trovare, sia personale, poiche&lt;span style="font-family:inherit;"&gt;`&lt;/span&gt; e&lt;span style="font-family:inherit;"&gt;`&lt;/span&gt; anche un luogo di incontro tra persone che si confrontano tra loro, anche se a volte possono trovarsi contenuti espliciti. Vista l&amp;#8217;importanza di internet e&lt;span style="font-family:inherit;"&gt;`&lt;/span&gt; bene maturare una coscienza diditale quanto piu&lt;span style="font-family:inherit;"&gt;`&lt;/span&gt; consapevole per far in modo che le nostre azioni sulla rete siano eticamente corrette e quindi evitare di scaricare file piratati, o evitare azioni di cyberbullismo contro altre persone e tutti quei comportamenti che possono danneggiare gli altri. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:inherit;"&gt;&lt;br /&gt;&lt;b&gt;Gabriele:&lt;/b&gt; Crescendo ovviamente il mio rapporto con Internet &lt;span style="font-family:inherit;"&gt;e`&lt;/span&gt; cambiato, mentre prima quando ero piccolo lo usavo per giocare, col passare del tempo ho scoperto che Internet &lt;span style="font-family:inherit;"&gt;e`&lt;/span&gt; molto di pi&lt;span style="font-family:inherit;"&gt;u`&lt;/span&gt;, mette in contatto le persone, è un mezzo per la diffusione di informazioni, musica e molto altro. Oggi lo uso principalmente per &lt;span style="font-family:inherit;"&gt;i&lt;/span&gt; social, ascoltare musica, comprare articoli e anche quando posso restare informato. Durante questi anni &lt;span style="font-family:inherit;"&gt;e`&lt;/span&gt; cambiata anche la mia considerazione su Internet, infatti pensavo erroneamente che fosse un posto innocuo, ma mi dovetti ricredere perch&lt;span style="font-family:inherit;"&gt;e`&lt;/span&gt; non è un luogo adatto a tutti a causa dei contenuti espliciti che contiene. Per quanto riguarda la coscienza digitale questa è una caratteristica che si può sviluppare una volta che si è a conoscenza di averla, perché ogni cosa che facciamo su Internet ha un peso, grande o piccolo che sia, e dobbiamo esserne a conoscenza per limitare eventuali danni o per trarne beneficio, infatti personalmente ogni volta che faccio qualcosa su Internet mi chiedo sempre quali potrebbero essere le conseguenze della mia azione, cosa che dovrebbe fare chiunque. &lt;/span&gt;
&lt;/p&gt;
&lt;div style="text-align:right;"&gt;
&lt;span style="font-family:inherit;"&gt;Fran&lt;span style="font-family:inherit;"&gt;cesco &lt;span style="font-family:inherit;"&gt;Mecca&lt;/span&gt;, Eugenio Corso, Gabriele&lt;/span&gt; &lt;span style="font-family:inherit;"&gt;Cor&lt;span style="font-family:inherit;"&gt;so&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/div&gt;
</code></pre></div>
</div>
</br>
<hr>
</br>
<span> </span>
<div class="post">
<h1 class="post-title">
<a href="/index.php/archives/46">
@ -272,131 +432,6 @@ L&#8217;attacco avviene attraverso l&#8217;uso di codice Javascript e analizza l
</br>
<hr>
</br>
<span> </span>
<div class="post">
<h1 class="post-title">
<a href="/index.php/archives/57">
Suicide Linux
</a>
</h1>
<span class="post-date">19 Apr 2015</span>
<div class="MsoNormal" style="text-align:center;">
</div>
<div class="MsoNormal" style="text-align:center;">
Tradotto da:<a href="http://qntm.org/suicide">http://qntm.org/suicide</a>
</div>
<div class="MsoNormal" style="text-align:justify;">
</div>
<div class="MsoNormal">
</div>
<div class="MsoNormal" style="text-align:justify;">
Sai come qualche volta se sbagli a digitare il nome di un file nella bash, questa corregge il tuo spelling e fa comunque partire il comando? Come quando si cambia directory, o si apre un file.
</div>
<div class="MsoNormal" style="text-align:justify;">
</div>
<div class="MsoNormal" style="text-align:justify;">
Io ho inventato Suicide Linux. Ogni volta &#8211;<i>ogni</i> volta- scrivi qualsiasi comando remoto non corretto, linterprete lo risolve creativamente in un<span style="color:red;"> rm rf</span> / e pulisce il tuo hard drive.
</div>
<div class="MsoNormal" style="text-align:justify;">
</div>
<div class="MsoNormal" style="text-align:justify;">
È un gioco. Come camminare sul filo di un rasoio. Devi vedere quanto a lungo puoi continuare a usare il sistema operativo prima di perdere tutti i tuoi dati.</p>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left:auto;margin-right:auto;text-align:center;">
<tr>
<td style="text-align:center;">
<a href="http://francescomecca.eu/wp-content/uploads/2015/08/06c29-suicide2blinux.png" style="margin-left:auto;margin-right:auto;"><img border="0" height="300" src="http://francescomecca.eu/wp-content/uploads/2015/08/06c29-suicide2blinux.png?w=300" width="400" /></a>
</td>
</tr>
<tr>
<td class="tr-caption" style="text-align:center;">
<a href="https://d.maxfile.ro/pswtpazxfd.png">fonte</a>
</td>
</tr>
</table>
<div style="text-align:center;">
</div>
</div>
<div class="MsoNormal" style="text-align:justify;">
</div>
<div class="MsoNormal" style="text-align:justify;">
<b>Aggiornamento 2011-12-26</b>
</div>
<div class="MsoNormal" style="text-align:justify;">
</div>
<div class="MsoNormal" style="text-align:justify;">
Suicide Linux ora sembra essere un pacchetto di Debian. Spettacolare!
</div>
<div class="MsoNormal" style="text-align:justify;">
</div>
<div class="MsoNormal" style="text-align:justify;">
Una video dimostrazione è disponibile. La reazione del sistema operativo è attualmente piuttosto deludente. Penseresti che il sistema operativo faccia spuntare alcuni errori piuttosto urgenti se vai in giro a cancellare parti di esso?
</div>
<div class="MsoNormal" style="text-align:justify;">
</div>
<div class="MsoNormal" style="text-align:justify;">
Forse <span style="color:red;">rm rf / </span>dovrebbe essere rimpiazzato con qualcosa che abbia impostato più flags dettagliati. In questo modo, quando esegui un comando sbagliato, ti viene detto immediatamente che le cose stanno per essere cancellate e tu hai una possibilità di combattere per annullare loperazione prima che il tuo sistema diventi inoperabile. Questo ti permette di vedere quanto a lungo puoi lavorare e quanti documenti puoi perdere prima che il sistema fallisca interamente.
</div>
<div class="MsoNormal" style="text-align:justify;">
</div>
<div class="MsoNormal" style="text-align:justify;">
Un altro, un suggerimento un po più serio, se Suicide Linux cancella in maniera casuale un singolo file senza dirtelo ogni volta che fai un errore tipografico, può essere uno sguardo interessante nella stabilità del tuo sistema operativo e uno strumento educativo per la diagnosi e la riparazione dei sistemi corrotti. Non sto pretendendo che Suicide Linux abbia qualche merito genuino, certamente.
</div>
<div class="MsoNormal" style="text-align:justify;">
</div>
<div class="MsoNormal" style="text-align:justify;">
<b>Aggiornamento 2015-04-18</b>
</div>
<div class="MsoNormal" style="text-align:justify;">
</div>
<div class="MsoNormal" style="text-align:justify;">
La funzionalità correzione automatica che io ho originariamente descritto qui fu una caratteristica del primo sistema Linux che io abbia mai usato, così ho assunto che fosse come ogni sistema Linux lavorato di default. Da quando sono venuto a conoscenza che è un doodad extra completamente opzionale.
</div>
<div class="MsoNormal" style="text-align:justify;">
</div>
<div class="MsoNormal" style="text-align:justify;">
</div>
<div class="MsoNormal" style="text-align:justify;">
</div>
<div style="text-align:right;">
<span style="font-family:Calibri, sans-serif;font-size:11pt;">Gabriele Corso </span>
</div>
</div>
</br>
<hr>
</br>
<span> </span>
</div>

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -83,6 +83,15 @@ Finally I put a link to the archive, my github page and the atom feed on the sid
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -120,15 +129,6 @@ Finally I put a link to the archive, my github page and the atom feed on the sid
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -159,6 +159,39 @@ Finally I put a link to the archive, my github page and the atom feed on the sid
@ -413,51 +446,6 @@ Finally I put a link to the archive, my github page and the atom feed on the sid

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -67,6 +67,15 @@ The bot can be added to your contact list by simply searching for <a href="http:
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -104,15 +113,6 @@ The bot can be added to your contact list by simply searching for <a href="http:
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -159,6 +159,59 @@ The bot can be added to your contact list by simply searching for <a href="http:
@ -577,79 +630,6 @@ The bot can be added to your contact list by simply searching for <a href="http:

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -51,6 +51,15 @@ instantaneously.</p></li>
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -88,15 +97,6 @@ instantaneously.</p></li>
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -127,6 +127,39 @@ instantaneously.</p></li>
@ -381,51 +414,6 @@ instantaneously.</p></li>

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -45,6 +45,15 @@
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -82,15 +91,6 @@
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -99,6 +99,39 @@
<h4>Similar Posts</h4>
<ul>
@ -384,51 +417,6 @@

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -90,6 +90,15 @@ The source for our program is stored in my git <a href="http://francescomecca.eu
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -127,15 +136,6 @@ The source for our program is stored in my git <a href="http://francescomecca.eu
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -182,6 +182,59 @@ The source for our program is stored in my git <a href="http://francescomecca.eu
@ -647,79 +700,6 @@ The source for our program is stored in my git <a href="http://francescomecca.eu
</ul>

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -132,6 +132,15 @@ Ogni altra prova è discutibile e non necessaria.</p>
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -169,15 +178,6 @@ Ogni altra prova è discutibile e non necessaria.</p>
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -232,6 +232,69 @@ Ogni altra prova è discutibile e non necessaria.</p>
@ -732,93 +795,6 @@ Ogni altra prova è discutibile e non necessaria.</p>

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -115,6 +115,15 @@ At the end, I ask, why would you choose anything else than the easiest and most
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -152,15 +161,6 @@ At the end, I ask, why would you choose anything else than the easiest and most
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -207,6 +207,59 @@ At the end, I ask, why would you choose anything else than the easiest and most
@ -625,79 +678,6 @@ At the end, I ask, why would you choose anything else than the easiest and most

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -119,6 +119,15 @@ Anyway for simple cases the GA yields good results, as an example for points (0
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -156,15 +165,6 @@ Anyway for simple cases the GA yields good results, as an example for points (0
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -211,6 +211,59 @@ Anyway for simple cases the GA yields good results, as an example for points (0
@ -656,79 +709,6 @@ Anyway for simple cases the GA yields good results, as an example for points (0

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -47,6 +47,15 @@
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -84,15 +93,6 @@
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -123,6 +123,39 @@
@ -377,51 +410,6 @@

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -108,6 +108,15 @@ dfu-programmer atmega16u2 reset
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -145,15 +154,6 @@ dfu-programmer atmega16u2 reset
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -208,6 +208,69 @@ dfu-programmer atmega16u2 reset
@ -764,93 +827,6 @@ dfu-programmer atmega16u2 reset
</ul>

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -135,6 +135,15 @@
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -172,15 +181,6 @@
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -235,6 +235,69 @@
@ -735,93 +798,6 @@

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -297,6 +297,15 @@ What if, when the person walks into a mall, we record the time, the location, th
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -334,15 +343,6 @@ What if, when the person walks into a mall, we record the time, the location, th
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -413,6 +413,89 @@ What if, when the person walks into a mall, we record the time, the location, th
@ -1077,89 +1160,6 @@ What if, when the person walks into a mall, we record the time, the location, th

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -253,6 +253,15 @@ Proviamo a visualizzarla in un&#39;immagine dove i box arancioni sono i nodi di
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -290,15 +299,6 @@ Proviamo a visualizzarla in un&#39;immagine dove i box arancioni sono i nodi di
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -361,6 +361,79 @@ Proviamo a visualizzarla in un&#39;immagine dove i box arancioni sono i nodi di
@ -975,79 +1048,6 @@ Proviamo a visualizzarla in un&#39;immagine dove i box arancioni sono i nodi di

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -88,6 +88,15 @@ Pierre aking his soul came to the packs and drove up his father-in-law women.
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -125,15 +134,6 @@ Pierre aking his soul came to the packs and drove up his father-in-law women.
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -196,6 +196,79 @@ Pierre aking his soul came to the packs and drove up his father-in-law women.
@ -810,79 +883,6 @@ Pierre aking his soul came to the packs and drove up his father-in-law women.

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -83,6 +83,15 @@ Questi pattern corrispondono alle caratteristiche proprie di un oggetto (quali p
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -120,15 +129,6 @@ Questi pattern corrispondono alle caratteristiche proprie di un oggetto (quali p
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -191,6 +191,79 @@ Questi pattern corrispondono alle caratteristiche proprie di un oggetto (quali p
@ -805,79 +878,6 @@ Questi pattern corrispondono alle caratteristiche proprie di un oggetto (quali p

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -83,6 +83,15 @@ Attraverso la dissipazione l&#39;opera, che fissata nel momento aveva acquisito
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -120,15 +129,6 @@ Attraverso la dissipazione l&#39;opera, che fissata nel momento aveva acquisito
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -175,6 +175,59 @@ Attraverso la dissipazione l&#39;opera, che fissata nel momento aveva acquisito
@ -632,59 +685,6 @@ Attraverso la dissipazione l&#39;opera, che fissata nel momento aveva acquisito

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -92,6 +92,15 @@ I divided my time between irc and mailing lists. I felt the obligation to archiv
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -129,15 +138,6 @@ I divided my time between irc and mailing lists. I felt the obligation to archiv
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/07/spazio-digitale-rant-facebook/">-->
<!--Breve riflessione dal mio piccolo mondo virtuale-->
<!--<small>07 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -192,6 +192,69 @@ I divided my time between irc and mailing lists. I felt the obligation to archiv
@ -725,69 +788,6 @@ I divided my time between irc and mailing lists. I felt the obligation to archiv

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -43,6 +43,15 @@
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -80,15 +89,6 @@
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/07/spazio-digitale-rant-facebook/">-->
<!--Breve riflessione dal mio piccolo mondo virtuale-->
<!--<small>07 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -97,6 +97,81 @@
<h4>Similar Posts</h4>
<ul>
<li class="relatedPost">
<a href="/pescewanda/2018/07/27/dtldr/">Un articolo per r/italyinformatica
</a>
</li>
@ -684,69 +759,8 @@
</ul>

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -87,6 +87,15 @@
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -124,15 +133,6 @@
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/07/spazio-digitale-rant-facebook/">-->
<!--Breve riflessione dal mio piccolo mondo virtuale-->
<!--<small>07 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -195,6 +195,79 @@
@ -791,79 +864,6 @@

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -215,6 +215,15 @@ GND [ ] [x] GND
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -252,15 +261,6 @@ GND [ ] [x] GND
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/07/spazio-digitale-rant-facebook/">-->
<!--Breve riflessione dal mio piccolo mondo virtuale-->
<!--<small>07 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -299,6 +299,49 @@ GND [ ] [x] GND
@ -667,49 +710,6 @@ GND [ ] [x] GND

View file

@ -22,7 +22,7 @@
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/explore/repos">Personal Git</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
@ -69,6 +69,15 @@ Ho interessi di nicchia e Reddit mi permetteva di riunirmi con persone dall&#39;
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/07/27/dtldr/">-->
<!--Un articolo per r/italyinformatica-->
<!--<small>27 Jul 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
@ -106,15 +115,6 @@ Ho interessi di nicchia e Reddit mi permetteva di riunirmi con persone dall&#39;
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/07/spazio-digitale-rant-facebook/">-->
<!--Breve riflessione dal mio piccolo mondo virtuale-->
<!--<small>07 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
@ -151,6 +151,59 @@ Ho interessi di nicchia e Reddit mi permetteva di riunirmi con persone dall&#39;
@ -609,59 +662,6 @@ Ho interessi di nicchia e Reddit mi permetteva di riunirmi con persone dall&#39;

View file

@ -0,0 +1,965 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<meta charset="UTF-8">
<title>Caught in the Net</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#157878">
<link rel="stylesheet" href="/css/normalize.css">
<!--<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700' rel='stylesheet' type='text/css'>-->
<link rel="stylesheet" href="/fonts/opensans.css">
<link rel="stylesheet" href="/css/cayman.css">
</head>
<body>
<section class="page-header">
<h1 class="project-name">Caught in the Net</h1>
<h2 class="project-tagline">La rete ti cattura ma libera il pensiero</h2>
<a class="btn" href="/">Home</a>
<a class="btn" href="/about/">About me</a>
<a class="btn" href="/contattami/">Contact me</a>
<a class="btn" href="/archive/">Archive</a>
<a class="btn" href="/feed.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">Personal Git</a>
<a class="btn" href="https://github.com/FraMecca">Github</a>
<a class="btn" href="/curriculum/CV_Mecca_Francesco.pdf">Curriculum</a>
</section>
<section class="main-content">
<div class="post">
<h1 class="post-title">Un articolo per r/italyinformatica</h1>
<span class="post-date">27 Jul 2018</span>
<p>Questo articolo è stato originalmente scritto per il <a href="https://tldr.italyinformatica.org">blog</a>di <a href="https://reddit.com/r/italyinformatica">r/italyinformatica</a>.</p>
<p>Negli ultimi anni abbiamo assistito all&#39;ascesa di un gran numero di linguaggi di programmazione, in particolare <a href="https://golang.rg">Go</a> (2009), <a href="https://www.rust-lang.org/en-US/">Rust</a> (2010), <a href="https://kotlinlang.org/">Kotlin</a> (2011), <a href="https://elixir-lang.org/">Elixir</a> (2011), <a href="https://crystal-lang.org/">Crystal</a> (2014), <a href="https://www.ponylang.or">Pony</a> (2014).</p>
<p>Questa esplosione di nuovi linguaggi è dovuta, fra le molte motivazioni, alla necessità di adottare paradigmi di programmazione non immediatamente recenti come cittadini di primo tipo.</p>
<p>Rispetto ai più maturi C, C++ o Java, Python o Ruby questi linguaggi offrono &quot;out of the box&quot; supporto per:</p>
<ul>
<li>una visione moderna delle concorrenze (le goroutines di Go o il modello ad attori di Pony ed Elixir)</li>
<li>Memory safeness, in particolare:
<ul>
<li>assenza di NULL (Pony, Rust, Kotlin)</li>
<li>gestione automatica della memoria, il cosiddetto [Garbage Collector](<a href="https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)">https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)</a> (o <a href="https://en.wikipedia.org/wiki/Reference_counting">Reference Counting</a> per Rust)</li>
<li>assenza di puntatori</li>
<li>assenza di deadlocks</li>
</ul></li>
<li>Supporto ad HTTP nella standard library</li>
<li>Management delle dipendenze (ad eccezione di Kotlin)</li>
<li>Namespaces</li>
</ul>
<p>Chiaramente nessuno di questi linguaggi è oggettivamente superiore agli altri, sono tutti <a href="https://en.wikipedia.org/wiki/Turing_completeness">turing completi</a> e la scelta del programmatore ricade su motivazioni del tutto personali (stile, programmazione ad oggetti, familiarità con altri linguaggi).</p>
<h2 id="un-p-di-contesto">Un pò di contesto</h2>
<p>Ho scritto la mie prime due righe di codice nel 2013 per il corso di Computer Science del Politecnico di Torino.</p>
<p>Per mia fortuna, al Politecnico le cose si muovono ancora lentamente e ci hanno fatto usare C per tutta la durata della triennale. Si è aggiunto un corso di principi della programmazione ad oggetti al terzo anno, in Java.</p>
<p>Personalmente ho imparato durante l&#39;estate di quel primo anno le basi di C++ e Python poco dopo.</p>
<p>Sono stati con i miei primi <a href="https://github.com/framecca">progetti</a> che ho capito che non si può avere un buon linguaggio senza un buon tooling ed una community vivace e soprattutto tanta, tanta documentazione. Per questo, per molto tempo C è stata la mia prima scelta, dato che il mio target è sempre Linux.</p>
<h2 id="gli-obbiettivi-prima-del-linguaggio">Gli obbiettivi prima del linguaggio</h2>
<p>Questo post vuole essere una raccolta più o meno organizzata delle motivazioni per cui mi sono dovuto muovere oltre la frontiera di C nel mio ultimo progetto, ovvero un backend per la raccolta e presentazione di pubblicazione di ricerca e materiale didattico per più di 80 centri di ricerca.</p>
<p>Per il Centro <a href="http://nexa.polito.it/">Nexa</a> del Politecnico di Torino mi sono ritrovato per la prima volta responsabile del codice che dovevo scrivere e dell&#39;uso che se ne sarebbe fatto.</p>
<p>Ho dovuto tenere in considerazione, oltre chiaramente alla funzionalità della piattaforma, in ordine di priorità:</p>
<ol>
<li>Sicurezza</li>
<li>Performance e scalabilità</li>
<li>Separazione dal frontend</li>
<li>Facilità di deploy in un server che non controllo</li>
</ol>
<p>Fortunatamente non mi è stata imposta nessuna limitazione sulla scelta del linguaggio, altrimenti Python sarebbe stato la scelta più adeguata se avessi dovuto tener conto anche di altri programmatori.</p>
<h2 id="benvenuto-d">Benvenuto D</h2>
<p>La mia scelta è caduta su <a href="https://dlang.org">D</a>.</p>
<p>Voglio provare ad affrontare ad uno ad uno i motivi di questa scelta magari inusuale.</p>
<h4 id="sicurezza">Sicurezza</h4>
<p>Nessuno vuole davvero vantarsi di usare un backend scritto in C/C++. Il <a href="https://en.wikipedia.org/wiki/Buffer_overflow">buffer overflow</a> può essere considerato il bug più comune e ci sono <a href="https://techaeris.com/2017/09/27/buzz-fuzzing-find-uncommon-vulnerability/">situazioni</a> in cui non appaiono affatto in maniera ovvia.</p>
<p>Inoltre per un applicativo distribuito il Garbage Collector è la scelta più performante, <a href="https://www.usenix.org/node/189882">specialmente se coordinato fra le varie istanze</a>.</p>
<p>D offre questo di design, e benchè il suo GC sia frutto di numerose <a href="https://www.quora.com/Which-language-has-the-brightest-future-in-replacement-of-C-between-D-Go-and-Rust-And-Why/answer/Andrei-Alexandrescu">discussioni</a>, offre in maniera del tutto innovativa, robustezza e <a href="http://www.walterbright.com/gonewild.pdf">sicurezza</a>.</p>
<p>In particolare, D presenta:</p>
<ul>
<li>Array che sono slices (o ranges) ma non puntatori (e neanche oggetti)</li>
<li>Bound checking durante la fase di compilazione.</li>
<li>Inizializzazione automatica delle variabili.</li>
<li>Safe Casting (chiaramente come eredità di C++).</li>
<li>Restricted pointers: si può passare una funzione per referenza dichiarandola <code>ref</code>, ma solo quando passata come parametro o di ritorno. Inoltre non c&#39;è nessuna pointer arithmetic.</li>
<li><a href="https://en.wikipedia.org/wiki/Resource_acquisition_is_initialization">RAII</a>, ovvero l&#39;acquisizione delle risorse equivale alla loro assegnazione e Scopes: le variabili hanno una lifetime limitata allo scope di dichiarazione. Nessun dangling pointer come in C.</li>
<li>Strutture immutabili: come nelle specifiche di molti linguaggi funzionali, si può dichiarare una variabile come <code>immutable</code> e quindi può essere facilmente condivisa fra threads.</li>
<li>@safe, @trusted: le specifiche del linguaggio permettono di annotare delle funzioni come sicure o affidabili affinchè il compilatore controlli che non gestiscano puntatori (ad esempio interfacciandosi con C) ed utilizzino il subset &quot;sicuro&quot; del linguaggio (maggiori dettagli in seguito).</li>
<li>funzioni pure: le funzioni inoltre possono essere dichiarate pure, prive di effetti collaterali e sempre <a href="https://en.wikipedia.org/wiki/Reentrancy_(computing)">rientranti</a>. Questo permette di evitare <a href="https://en.wikipedia.org/wiki/Deadlock">deadlocks</a> e un controllo totale sul risultato delle funzioni.</li>
</ul>
<h4 id="performance">Performance</h4>
<p>Ci sono moltissime soluzioni per scrivere un applicativo che si interfaccia con il web, ma hanno tutte la loro origine nel famoso <a href="http://www.kegel.com/c10k.html">C10K problem</a>.</p>
<p>Nel mio caso ho deciso di utilizzare un approccio <a href="https://stackoverflow.com/questions/10960998/how-different-async-programming-is-from-threads">asincrono</a> con coroutines (anche detti <a href="https://en.wikipedia.org/wiki/Green_threads">threads leggeri</a>).</p>
<p>Benchè D abbia <a href="https://dlang.org/library/core/thread/fiber.html">supporto nativo</a> alle coroutines, ho deciso di appoggiarmi al framework più comune per web dev in D: <a href="vibed.org">vibe.d</a>.</p>
<p>Ogni volta che Vibe accetta una richiesta dall&#39;esterno ed esegue una funzione bloccante (che interrompe l&#39;esecuzione del programma fino al ritorno della funzione), questa viene messa in una pool di azioni da eseguire e Vibe controlla periodicamente che almeno una di queste sia pronta a ritornare un risultato e continuare con l&#39;esecuzione di questa.</p>
<p>Inoltre, benchè questo meccanismo funzioni interamente su un solo thread, è elementare coordinare una <a href="https://en.wikipedia.org/wiki/Thread_pool">thread pool</a> che distribuisa il carico fra i vari core che eseguono migliaia di threads leggeri concorrentemente.</p>
<h4 id="contratti-e-tests">Contratti e Tests</h4>
<p>Non amo scrivere commenti sui programmi. Penso sia assolutamente necessario commentare il codice di librerie ma al di fuori di queste il codice (buon codice) dovrebbe essere autoesplicativo.</p>
<p>Inoltre, nelle mie recenti esperienze, il comportamento del programma era chiaro a partire dai tests.</p>
<p>In D questo concetto viene portato agli estremi applicando il <a href="https://en.wikipedia.org/wiki/Design_by_contract">&quot;Design by Contract programming</a>.</p>
<p>Un contratto è la divisione di una funzione in:</p>
<ul>
<li>Precondizione, ovvero le condizioni che devono essersi verificate prima della chiamata della funzione;</li>
<li>Postcondizione, ovvero le condizioni che devono essere rispettate all&#39;uscita della funzione (solitamente applicate al risultato);</li>
<li>Invarianti, ovvero le specifiche di una struttura dati che devono rimanere verificate in ogni funzione;</li>
<li>Corpo della funzione</li>
</ul>
<p>Un esempio:</p>
<div class="highlight"><pre><code class="language-" data-lang="">
struct Clock {
short time;
invariant {
assert (time &gt; 0);
}
}
short addReturnTime(Clock c, short n)
in {
n &gt; 0;
}
body {
return c-&gt;time + t;
}
out (result){
result &gt; c-&gt;time;
}
unittest {
auto clock = Clock(60);
assert (addReturnTime(clock, 10) == 70);
}
</code></pre></div>
<p>Come si nota dall&#39;esempio il supporto ai tests è built-in nel linguaggio e distanti solo una flag in fase di compilazione.</p>
<h4 id="un-approccio-moderno-alle-concorrenze">Un approccio moderno alle concorrenze</h4>
<p>Il modello primitivo delle concorrenze in Posix è discutibilmente datato e prono ad errori per il programmatore.</p>
<p>D di default evita la condivisione di dati fra Threads.
Fra le varie motivazioni c&#39;è il fatto che questo rifletta più realisticamente l&#39;hardware, ma sicuramente l&#39;obbiettivo finale è la riduzione di bug.</p>
<p>Non voglio dilungarmi nei dettagli di ogni singolo approccio, ma per completezza D offre out of the box i seguenti modelli:</p>
<ul>
<li>Message passing e <a href="http://dist-prog-book.com/chapter/3/message-passing.html">attori</a>, ovvero tutti i dati che vogliono essere condivisi fra thread sono incapsulati in <a href="https://en.wikipedia.org/wiki/Remote_procedure_call">RPC</a>;</li>
<li>Green threads, come nel mio caso;</li>
<li>Multi processing, ovvero <code>man 3 fork</code></li>
<li>TaskPools, ovvero future e promises di Python e Javascript;</li>
<li><a href="http://moss.csc.ncsu.edu/%7Emueller/cluster/ps3/SDK3.0/docs/accessibility/sdkpt/cbet_1simdvector.html">SIMD vectorization</a></li>
</ul>
<p>Andrei Alexandrescu, uno dei due creatori del linguaggio, dedica un intero capitolo alle concorrenze che potete leggere liberamente <a href="http://www.informit.com/articles/article.aspx?p=1609144">qui</a>.</p>
<h4 id="assenza-di-dogmatismi">Assenza di dogmatismi</h4>
<p>Non potrei mai pensare di scrivere un linguaggio di programmazione senza mettere al secondo posto la semplicità.</p>
<p>Ma chiaramente ancora prima di discutere di semplicità la dobbiamo definire.</p>
<p>Go e Python sono due linguaggi semplici. Lo sono per la ridotta sintassi (Go in particolare) e perchè attraverso il loro dogmatismo costringono il programmatore ad adottare dei paradigmi di programmazione scelti dai designer di quel linguaggio. E` il motivo per cui in python non abbiamo delle vere lambda e per cui Go non ha le eccezioni.</p>
<p>In D il programmatore ha libertà piena di scelta. Oltre ad un paradigma di programmazione si può ridefinire la sintassi e evitare il Garbage Collector. Si può in ultimo disattivare tutte le feature del linguaggio che sono @safe e adottare uno stile molto più vicino al C/C++, con tanto di inline asm.</p>
<h2 id="dove-iniziare">Dove iniziare</h2>
<p>Non posso non concludere un post propagandistico senza indirizzare i più interessati alle prime risorse per imparare D.</p>
<p>Personalmente consiglio il <a href="http://www.informit.com/store/d-programming-language-9780321635365?w_ptgrevartcl=Concurrency+in+the+D+Programming+Language_1609144">libro</a> di Andrei che offre in particolare moltissimi dettagli sulle motivazioni del design di D. Non ho ancora letto un libro che affrontasse così chiaramente il design di linguaggi di programmazione e i vari compromessi fra performance, semplicità e complessità del compilatore.</p>
<p>Inoltre il sito della community offre due intro per chi proviene da <a href="https://dlang.org/ctod.html">C</a> e <a href="https://dlang.org/cpptod.html">C++</a>, oltre al classi <a href="https://tour.dlang.org/">tour</a>.</p>
<p>Inoltre la libreria standard, <a href="https://github.com/dlang/phobos">Phobos</a>, è talmente chiara che solitamente mi trovo a mio agio a consultare direttamente il codice piuttosto che la documentazione online.</p>
</div>
<!--<div class="related">-->
<!--<related-posts />-->
<!--<h2>Related Posts</h2>-->
<!--<ul class="related-posts">-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2018/03/27/addio-reddit/">-->
<!--Addio Reddit-->
<!--<small>27 Mar 2018</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/10/02/minidoxguide/">-->
<!--Minidox, a guide for the Europeans and the Scrooges-->
<!--<small>02 Oct 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/05/09/vaporwave/">-->
<!--Cyber-utopia and vaporwave-->
<!--<small>09 May 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/05/07/latestage_handbrake/">-->
<!--Late Stage Capitalism meets FOSS-->
<!--<small>07 May 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--<li>-->
<!--<h3>-->
<!--<a href="/pescewanda/2017/03/20/spazio-digitale-rant-facebook__eng/">-->
<!--Some shallow thoughts from my tiny virtual space-->
<!--<small>20 Mar 2017</small>-->
<!--</a>-->
<!--</h3>-->
<!--</li>-->
<!---->
<!--</ul>-->
<!--</div>-->
<h4>Similar Posts</h4>
<ul>
<li class="relatedPost">
<a href="/pescewanda/2017/05/07/latestage_handbrake/">Late Stage Capitalism meets FOSS
</a>
</li>
</ul>
<footer class="site-footer">
<!--<span class="site-footer-owner"><a href="http://francescomecca.eu">Caught in the Net</a> is maintained by <a href="contattami">Francesco Mecca</a>.</span>-->
<span> CC BY-SA 4.0 International.</br> </span>
<span class="site-footer-credits"><a href="https://jekyllrb.com">Jekyll</a>, <a href="https://github.com/jasonlong/cayman-theme">Cayman theme</a>.</span>
</footer>
</section>
</body>
</html>