Compare commits

..

No commits in common. "6acba75cd5fdcae2f10aa83ef55c75d4a460a161" and "15b26397ffee567468a70e50a46e2730d14dfa30" have entirely different histories.

415 changed files with 6521 additions and 13337 deletions

View file

@ -26,7 +26,7 @@
<a class="btn" href="../rss.xml">RSS</a> <a class="btn" href="../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><article class="listpage"><header><h1>Posts for year 2015</h1> </section><section class="main-content"><article class="listpage"><header><h1>Posts for year 2015</h1>
</header><ul class="postlist"> </header><ul class="postlist">
<li> <li>

View file

@ -26,7 +26,7 @@
<a class="btn" href="../rss.xml">RSS</a> <a class="btn" href="../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><article class="listpage"><header><h1>Posts for year 2016</h1> </section><section class="main-content"><article class="listpage"><header><h1>Posts for year 2016</h1>
</header><ul class="postlist"> </header><ul class="postlist">
<li> <li>

View file

@ -26,7 +26,7 @@
<a class="btn" href="../rss.xml">RSS</a> <a class="btn" href="../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><article class="listpage"><header><h1>Posts for year 2017</h1> </section><section class="main-content"><article class="listpage"><header><h1>Posts for year 2017</h1>
</header><ul class="postlist"> </header><ul class="postlist">
<li> <li>

View file

@ -26,7 +26,7 @@
<a class="btn" href="../rss.xml">RSS</a> <a class="btn" href="../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><article class="listpage"><header><h1>Posts for year 2018</h1> </section><section class="main-content"><article class="listpage"><header><h1>Posts for year 2018</h1>
</header><ul class="postlist"> </header><ul class="postlist">
<li> <li>

View file

@ -26,7 +26,7 @@
<a class="btn" href="../rss.xml">RSS</a> <a class="btn" href="../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><article class="listpage"><header><h1>Posts for year 2019</h1> </section><section class="main-content"><article class="listpage"><header><h1>Posts for year 2019</h1>
</header><ul class="postlist"> </header><ul class="postlist">
<li> <li>

View file

@ -1,40 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>Posts for year 2020 | Caught in the Net</title>
<link rel="stylesheet" href="../assets/blog/fonts/opensans.css">
<link href="../assets/blog/css/normalize.css" rel="stylesheet" type="text/css">
<link href="../assets/blog/css/cayman.css" rel="stylesheet" type="text/css">
<meta name="theme-color" content="#5670d4">
<meta name="generator" content="Nikola (getnikola.com)">
<link rel="alternate" type="application/rss+xml" title="RSS" hreflang="en" href="../rss.xml">
<link rel="canonical" href="francescomecca.eu/2020/">
</head>
<body>
<div id="container">
<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="../pages/about/">About me</a>
<a class="btn" href="../pages/contattami/">Contact me</a>
<a class="btn" href="../archiveall.html">Archive</a>
<a class="btn" href="../rss.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="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a>
</section><section class="main-content"><article class="listpage"><header><h1>Posts for year 2020</h1>
</header><ul class="postlist">
<li>
<time class="listdate" datetime="2020-04-06T00:00:00Z" title="2020-04-06 00:00">2020-04-06 00:00</time><a href="../blog/2019/05/18/cultura-hacker/" class="listtitle">Breve storia della cultura hacker</a>
</li>
</ul></article><footer class="site-footer" id="footer"><span> CC BY-SA 4.0 International.<br></span>
<span class="site-footer-credits"><a href="https://getnikola.com">Nikola</a>, <a href="https://github.com/jasonlong/cayman-theme">Cayman theme</a>.</span>
</footer></section>
</div>
</body>
</html>

View file

@ -1,40 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>Posts for year 2023 | Caught in the Net</title>
<link rel="stylesheet" href="../assets/blog/fonts/opensans.css">
<link href="../assets/blog/css/normalize.css" rel="stylesheet" type="text/css">
<link href="../assets/blog/css/cayman.css" rel="stylesheet" type="text/css">
<meta name="theme-color" content="#5670d4">
<meta name="generator" content="Nikola (getnikola.com)">
<link rel="alternate" type="application/rss+xml" title="RSS" hreflang="en" href="../rss.xml">
<link rel="canonical" href="francescomecca.eu/2023/">
</head>
<body>
<div id="container">
<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="../pages/about/">About me</a>
<a class="btn" href="../pages/contattami/">Contact me</a>
<a class="btn" href="../archiveall.html">Archive</a>
<a class="btn" href="../rss.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="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a>
</section><section class="main-content"><article class="listpage"><header><h1>Posts for year 2023</h1>
</header><ul class="postlist">
<li>
<time class="listdate" datetime="2023-08-12T00:00:00Z" title="2023-08-12 00:00">2023-08-12 00:00</time><a href="../blog/2023/08/12/three-years-later/" class="listtitle">Three years later</a>
</li>
</ul></article><footer class="site-footer" id="footer"><span> CC BY-SA 4.0 International.<br></span>
<span class="site-footer-credits"><a href="https://getnikola.com">Nikola</a>, <a href="https://github.com/jasonlong/cayman-theme">Cayman theme</a>.</span>
</footer></section>
</div>
</body>
</html>

View file

@ -1,43 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>Posts for year 2024 | Caught in the Net</title>
<link rel="stylesheet" href="../assets/blog/fonts/opensans.css">
<link href="../assets/blog/css/normalize.css" rel="stylesheet" type="text/css">
<link href="../assets/blog/css/cayman.css" rel="stylesheet" type="text/css">
<meta name="theme-color" content="#5670d4">
<meta name="generator" content="Nikola (getnikola.com)">
<link rel="alternate" type="application/rss+xml" title="RSS" hreflang="en" href="../rss.xml">
<link rel="canonical" href="francescomecca.eu/2024/">
</head>
<body>
<div id="container">
<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="../pages/about/">About me</a>
<a class="btn" href="../pages/contattami/">Contact me</a>
<a class="btn" href="../archiveall.html">Archive</a>
<a class="btn" href="../rss.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="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a>
</section><section class="main-content"><article class="listpage"><header><h1>Posts for year 2024</h1>
</header><ul class="postlist">
<li>
<time class="listdate" datetime="2024-02-28T00:00:00Z" title="2024-02-28 00:00">2024-02-28 00:00</time><a href="../blog/2024/2/28/wine-gentoo/" class="listtitle">Playing videogames with WINE on Gentoo</a>
</li>
<li>
<time class="listdate" datetime="2024-01-12T00:00:00Z" title="2024-01-12 00:00">2024-01-12 00:00</time><a href="../blog/2024/1/12/happy-new-year-2024/" class="listtitle">Welkom 2024!</a>
</li>
</ul></article><footer class="site-footer" id="footer"><span> CC BY-SA 4.0 International.<br></span>
<span class="site-footer-credits"><a href="https://getnikola.com">Nikola</a>, <a href="https://github.com/jasonlong/cayman-theme">Cayman theme</a>.</span>
</footer></section>
</div>
</body>
</html>

View file

@ -26,22 +26,10 @@
<a class="btn" href="rss.xml">RSS</a> <a class="btn" href="rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><article class="listpage"><header><h1>Archive</h1> </section><section class="main-content"><article class="listpage"><header><h1>Archive</h1>
</header><ul class="postlist"> </header><ul class="postlist">
<li> <li>
<a href="2024/">2024</a>
(2)
</li>
<li>
<a href="2023/">2023</a>
(1)
</li>
<li>
<a href="2020/">2020</a>
(1)
</li>
<li>
<a href="2019/">2019</a> <a href="2019/">2019</a>
(1) (1)
</li> </li>

View file

@ -26,28 +26,9 @@
<a class="btn" href="rss.xml">RSS</a> <a class="btn" href="rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><article class="listpage"><header><h1>Archive</h1> </section><section class="main-content"><article class="listpage"><header><h1>Archive</h1>
</header><ul class="postlist"> </header><ul class="postlist">
<li style="list-style-type:none">2024 (2):
</li>
<hr>
<ul>
<li style="list-style-type:disc"><p>28 February 2024 » <a href="blog/2024/2/28/wine-gentoo/">Playing videogames with WINE on Gentoo</a></p></li>
<li style="list-style-type:disc"><p>12 January 2024 » <a href="blog/2024/1/12/happy-new-year-2024/">Welkom 2024!</a></p></li>
</ul>
<li style="list-style-type:none">2023 (1):
</li>
<hr>
<ul>
<li style="list-style-type:disc"><p>12 August 2023 » <a href="blog/2023/08/12/three-years-later/">Three years later</a></p></li>
</ul>
<li style="list-style-type:none">2020 (1):
</li>
<hr>
<ul>
<li style="list-style-type:disc"><p>06 April 2020 » <a href="blog/2019/05/18/cultura-hacker/">Breve storia della cultura hacker</a></p></li>
</ul>
<li style="list-style-type:none">2019 (1): <li style="list-style-type:none">2019 (1):
</li> </li>
<hr> <hr>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
/*! /*!
* baguetteBox.js * baguetteBox.js
* @author feimosi * @author feimosi
* @version 1.11.1 * @version 1.11.0
* @url https://github.com/feimosi/baguetteBox.js * @url https://github.com/feimosi/baguetteBox.js
*/#baguetteBox-overlay{display:none;opacity:0;position:fixed;overflow:hidden;top:0;left:0;width:100%;height:100%;z-index:1000000;background-color:#222;background-color:rgba(0,0,0,.8);-webkit-transition:opacity .5s ease;transition:opacity .5s ease}#baguetteBox-overlay.visible{opacity:1}#baguetteBox-overlay .full-image{display:inline-block;position:relative;width:100%;height:100%;text-align:center}#baguetteBox-overlay .full-image figure{display:inline;margin:0;height:100%}#baguetteBox-overlay .full-image img{display:inline-block;width:auto;height:auto;max-height:100%;max-width:100%;vertical-align:middle;-webkit-box-shadow:0 0 8px rgba(0,0,0,.6);-moz-box-shadow:0 0 8px rgba(0,0,0,.6);box-shadow:0 0 8px rgba(0,0,0,.6)}#baguetteBox-overlay .full-image figcaption{display:block;position:absolute;bottom:0;width:100%;text-align:center;line-height:1.8;white-space:normal;color:#ccc;background-color:#000;background-color:rgba(0,0,0,.6);font-family:sans-serif}#baguetteBox-overlay .full-image:before{content:"";display:inline-block;height:50%;width:1px;margin-right:-1px}#baguetteBox-slider{position:absolute;left:0;top:0;height:100%;width:100%;white-space:nowrap;-webkit-transition:left .4s ease,-webkit-transform .4s ease;transition:left .4s ease,-webkit-transform .4s ease;transition:left .4s ease,transform .4s ease;transition:left .4s ease,transform .4s ease,-webkit-transform .4s ease,-moz-transform .4s ease}#baguetteBox-slider.bounce-from-right{-webkit-animation:bounceFromRight .4s ease-out;animation:bounceFromRight .4s ease-out}#baguetteBox-slider.bounce-from-left{-webkit-animation:bounceFromLeft .4s ease-out;animation:bounceFromLeft .4s ease-out}@-webkit-keyframes bounceFromRight{0%,100%{margin-left:0}50%{margin-left:-30px}}@keyframes bounceFromRight{0%,100%{margin-left:0}50%{margin-left:-30px}}@-webkit-keyframes bounceFromLeft{0%,100%{margin-left:0}50%{margin-left:30px}}@keyframes bounceFromLeft{0%,100%{margin-left:0}50%{margin-left:30px}}.baguetteBox-button#next-button,.baguetteBox-button#previous-button{top:50%;top:calc(50% - 30px);width:44px;height:60px}.baguetteBox-button{position:absolute;cursor:pointer;outline:0;padding:0;margin:0;border:0;-moz-border-radius:15%;border-radius:15%;background-color:#323232;background-color:rgba(50,50,50,.5);color:#ddd;font:1.6em sans-serif;-webkit-transition:background-color .4s ease;transition:background-color .4s ease}.baguetteBox-button:focus,.baguetteBox-button:hover{background-color:rgba(50,50,50,.9)}.baguetteBox-button#next-button{right:2%}.baguetteBox-button#previous-button{left:2%}.baguetteBox-button#close-button{top:20px;right:2%;right:calc(2% + 6px);width:30px;height:30px}.baguetteBox-button svg{position:absolute;left:0;top:0}.baguetteBox-spinner{width:40px;height:40px;display:inline-block;position:absolute;top:50%;left:50%;margin-top:-20px;margin-left:-20px}.baguetteBox-double-bounce1,.baguetteBox-double-bounce2{width:100%;height:100%;-moz-border-radius:50%;border-radius:50%;background-color:#fff;opacity:.6;position:absolute;top:0;left:0;-webkit-animation:bounce 2s infinite ease-in-out;animation:bounce 2s infinite ease-in-out}.baguetteBox-double-bounce2{-webkit-animation-delay:-1s;animation-delay:-1s}@-webkit-keyframes bounce{0%,100%{-webkit-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes bounce{0%,100%{-webkit-transform:scale(0);-moz-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1);-moz-transform:scale(1);transform:scale(1)}} */#baguetteBox-overlay{display:none;opacity:0;position:fixed;overflow:hidden;top:0;left:0;width:100%;height:100%;z-index:1000000;background-color:#222;background-color:rgba(0,0,0,.8);-webkit-transition:opacity .5s ease;transition:opacity .5s ease}#baguetteBox-overlay.visible{opacity:1}#baguetteBox-overlay .full-image{display:inline-block;position:relative;width:100%;height:100%;text-align:center}#baguetteBox-overlay .full-image figure{display:inline;margin:0;height:100%}#baguetteBox-overlay .full-image img{display:inline-block;width:auto;height:auto;max-height:100%;max-width:100%;vertical-align:middle;-webkit-box-shadow:0 0 8px rgba(0,0,0,.6);-moz-box-shadow:0 0 8px rgba(0,0,0,.6);box-shadow:0 0 8px rgba(0,0,0,.6)}#baguetteBox-overlay .full-image figcaption{display:block;position:absolute;bottom:0;width:100%;text-align:center;line-height:1.8;white-space:normal;color:#ccc;background-color:#000;background-color:rgba(0,0,0,.6);font-family:sans-serif}#baguetteBox-overlay .full-image:before{content:"";display:inline-block;height:50%;width:1px;margin-right:-1px}#baguetteBox-slider{position:absolute;left:0;top:0;height:100%;width:100%;white-space:nowrap;-webkit-transition:left .4s ease,-webkit-transform .4s ease;transition:left .4s ease,-webkit-transform .4s ease;transition:left .4s ease,transform .4s ease;transition:left .4s ease,transform .4s ease,-webkit-transform .4s ease,-moz-transform .4s ease}#baguetteBox-slider.bounce-from-right{-webkit-animation:bounceFromRight .4s ease-out;animation:bounceFromRight .4s ease-out}#baguetteBox-slider.bounce-from-left{-webkit-animation:bounceFromLeft .4s ease-out;animation:bounceFromLeft .4s ease-out}@-webkit-keyframes bounceFromRight{0%,100%{margin-left:0}50%{margin-left:-30px}}@keyframes bounceFromRight{0%,100%{margin-left:0}50%{margin-left:-30px}}@-webkit-keyframes bounceFromLeft{0%,100%{margin-left:0}50%{margin-left:30px}}@keyframes bounceFromLeft{0%,100%{margin-left:0}50%{margin-left:30px}}.baguetteBox-button#next-button,.baguetteBox-button#previous-button{top:50%;top:calc(50% - 30px);width:44px;height:60px}.baguetteBox-button{position:absolute;cursor:pointer;outline:0;padding:0;margin:0;border:0;-moz-border-radius:15%;border-radius:15%;background-color:#323232;background-color:rgba(50,50,50,.5);color:#ddd;font:1.6em sans-serif;-webkit-transition:background-color .4s ease;transition:background-color .4s ease}.baguetteBox-button:focus,.baguetteBox-button:hover{background-color:rgba(50,50,50,.9)}.baguetteBox-button#next-button{right:2%}.baguetteBox-button#previous-button{left:2%}.baguetteBox-button#close-button{top:20px;right:2%;right:calc(2% + 6px);width:30px;height:30px}.baguetteBox-button svg{position:absolute;left:0;top:0}.baguetteBox-spinner{width:40px;height:40px;display:inline-block;position:absolute;top:50%;left:50%;margin-top:-20px;margin-left:-20px}.baguetteBox-double-bounce1,.baguetteBox-double-bounce2{width:100%;height:100%;-moz-border-radius:50%;border-radius:50%;background-color:#fff;opacity:.6;position:absolute;top:0;left:0;-webkit-animation:bounce 2s infinite ease-in-out;animation:bounce 2s infinite ease-in-out}.baguetteBox-double-bounce2{-webkit-animation-delay:-1s;animation-delay:-1s}@-webkit-keyframes bounce{0%,100%{-webkit-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes bounce{0%,100%{-webkit-transform:scale(0);-moz-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1);-moz-transform:scale(1);transform:scale(1)}}

View file

@ -1,86 +1,71 @@
/* code.css file generated by Nikola */ /* code.css file generated by Nikola */
pre { line-height: 125%; } pre.code , .highlight pre .hll { background-color: #ffffcc }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } pre.code , .highlight pre { background: #f8f8f8; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } pre.code .c, .highlight pre .c { color: #408080; font-style: italic } /* Comment */
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } pre.code .err, .highlight pre .err { border: 1px solid #FF0000 } /* Error */
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } pre.code .k, .highlight pre .k { color: #008000; font-weight: bold } /* Keyword */
pre.code .hll, .code .codetable .hll, .highlight pre .hll { background-color: #ffffcc } pre.code .o, .highlight pre .o { color: #666666 } /* Operator */
pre.code , .code .codetable , .highlight pre { background: #f8f8f8; } pre.code .ch, .highlight pre .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
pre.code .c, .code .codetable .c, .highlight pre .c { color: #3D7B7B; font-style: italic } /* Comment */ pre.code .cm, .highlight pre .cm { color: #408080; font-style: italic } /* Comment.Multiline */
pre.code .err, .code .codetable .err, .highlight pre .err { border: 1px solid #FF0000 } /* Error */ pre.code .cp, .highlight pre .cp { color: #BC7A00 } /* Comment.Preproc */
pre.code .k, .code .codetable .k, .highlight pre .k { color: #008000; font-weight: bold } /* Keyword */ pre.code .cpf, .highlight pre .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
pre.code .o, .code .codetable .o, .highlight pre .o { color: #666666 } /* Operator */ pre.code .c1, .highlight pre .c1 { color: #408080; font-style: italic } /* Comment.Single */
pre.code .ch, .code .codetable .ch, .highlight pre .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */ pre.code .cs, .highlight pre .cs { color: #408080; font-style: italic } /* Comment.Special */
pre.code .cm, .code .codetable .cm, .highlight pre .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */ pre.code .gd, .highlight pre .gd { color: #A00000 } /* Generic.Deleted */
pre.code .cp, .code .codetable .cp, .highlight pre .cp { color: #9C6500 } /* Comment.Preproc */ pre.code .ge, .highlight pre .ge { font-style: italic } /* Generic.Emph */
pre.code .cpf, .code .codetable .cpf, .highlight pre .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */ pre.code .gr, .highlight pre .gr { color: #FF0000 } /* Generic.Error */
pre.code .c1, .code .codetable .c1, .highlight pre .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */ pre.code .gh, .highlight pre .gh { color: #000080; font-weight: bold } /* Generic.Heading */
pre.code .cs, .code .codetable .cs, .highlight pre .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */ pre.code .gi, .highlight pre .gi { color: #00A000 } /* Generic.Inserted */
pre.code .gd, .code .codetable .gd, .highlight pre .gd { color: #A00000 } /* Generic.Deleted */ pre.code .go, .highlight pre .go { color: #888888 } /* Generic.Output */
pre.code .ge, .code .codetable .ge, .highlight pre .ge { font-style: italic } /* Generic.Emph */ pre.code .gp, .highlight pre .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
pre.code .ges, .code .codetable .ges, .highlight pre .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ pre.code .gs, .highlight pre .gs { font-weight: bold } /* Generic.Strong */
pre.code .gr, .code .codetable .gr, .highlight pre .gr { color: #E40000 } /* Generic.Error */ pre.code .gu, .highlight pre .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
pre.code .gh, .code .codetable .gh, .highlight pre .gh { color: #000080; font-weight: bold } /* Generic.Heading */ pre.code .gt, .highlight pre .gt { color: #0044DD } /* Generic.Traceback */
pre.code .gi, .code .codetable .gi, .highlight pre .gi { color: #008400 } /* Generic.Inserted */ pre.code .kc, .highlight pre .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
pre.code .go, .code .codetable .go, .highlight pre .go { color: #717171 } /* Generic.Output */ pre.code .kd, .highlight pre .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
pre.code .gp, .code .codetable .gp, .highlight pre .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ pre.code .kn, .highlight pre .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
pre.code .gs, .code .codetable .gs, .highlight pre .gs { font-weight: bold } /* Generic.Strong */ pre.code .kp, .highlight pre .kp { color: #008000 } /* Keyword.Pseudo */
pre.code .gu, .code .codetable .gu, .highlight pre .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ pre.code .kr, .highlight pre .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
pre.code .gt, .code .codetable .gt, .highlight pre .gt { color: #0044DD } /* Generic.Traceback */ pre.code .kt, .highlight pre .kt { color: #B00040 } /* Keyword.Type */
pre.code .kc, .code .codetable .kc, .highlight pre .kc { color: #008000; font-weight: bold } /* Keyword.Constant */ pre.code .m, .highlight pre .m { color: #666666 } /* Literal.Number */
pre.code .kd, .code .codetable .kd, .highlight pre .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ pre.code .s, .highlight pre .s { color: #BA2121 } /* Literal.String */
pre.code .kn, .code .codetable .kn, .highlight pre .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ pre.code .na, .highlight pre .na { color: #7D9029 } /* Name.Attribute */
pre.code .kp, .code .codetable .kp, .highlight pre .kp { color: #008000 } /* Keyword.Pseudo */ pre.code .nb, .highlight pre .nb { color: #008000 } /* Name.Builtin */
pre.code .kr, .code .codetable .kr, .highlight pre .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ pre.code .nc, .highlight pre .nc { color: #0000FF; font-weight: bold } /* Name.Class */
pre.code .kt, .code .codetable .kt, .highlight pre .kt { color: #B00040 } /* Keyword.Type */ pre.code .no, .highlight pre .no { color: #880000 } /* Name.Constant */
pre.code .m, .code .codetable .m, .highlight pre .m { color: #666666 } /* Literal.Number */ pre.code .nd, .highlight pre .nd { color: #AA22FF } /* Name.Decorator */
pre.code .s, .code .codetable .s, .highlight pre .s { color: #BA2121 } /* Literal.String */ pre.code .ni, .highlight pre .ni { color: #999999; font-weight: bold } /* Name.Entity */
pre.code .na, .code .codetable .na, .highlight pre .na { color: #687822 } /* Name.Attribute */ pre.code .ne, .highlight pre .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
pre.code .nb, .code .codetable .nb, .highlight pre .nb { color: #008000 } /* Name.Builtin */ pre.code .nf, .highlight pre .nf { color: #0000FF } /* Name.Function */
pre.code .nc, .code .codetable .nc, .highlight pre .nc { color: #0000FF; font-weight: bold } /* Name.Class */ pre.code .nl, .highlight pre .nl { color: #A0A000 } /* Name.Label */
pre.code .no, .code .codetable .no, .highlight pre .no { color: #880000 } /* Name.Constant */ pre.code .nn, .highlight pre .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
pre.code .nd, .code .codetable .nd, .highlight pre .nd { color: #AA22FF } /* Name.Decorator */ pre.code .nt, .highlight pre .nt { color: #008000; font-weight: bold } /* Name.Tag */
pre.code .ni, .code .codetable .ni, .highlight pre .ni { color: #717171; font-weight: bold } /* Name.Entity */ pre.code .nv, .highlight pre .nv { color: #19177C } /* Name.Variable */
pre.code .ne, .code .codetable .ne, .highlight pre .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */ pre.code .ow, .highlight pre .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
pre.code .nf, .code .codetable .nf, .highlight pre .nf { color: #0000FF } /* Name.Function */ pre.code .w, .highlight pre .w { color: #bbbbbb } /* Text.Whitespace */
pre.code .nl, .code .codetable .nl, .highlight pre .nl { color: #767600 } /* Name.Label */ pre.code .mb, .highlight pre .mb { color: #666666 } /* Literal.Number.Bin */
pre.code .nn, .code .codetable .nn, .highlight pre .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ pre.code .mf, .highlight pre .mf { color: #666666 } /* Literal.Number.Float */
pre.code .nt, .code .codetable .nt, .highlight pre .nt { color: #008000; font-weight: bold } /* Name.Tag */ pre.code .mh, .highlight pre .mh { color: #666666 } /* Literal.Number.Hex */
pre.code .nv, .code .codetable .nv, .highlight pre .nv { color: #19177C } /* Name.Variable */ pre.code .mi, .highlight pre .mi { color: #666666 } /* Literal.Number.Integer */
pre.code .ow, .code .codetable .ow, .highlight pre .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ pre.code .mo, .highlight pre .mo { color: #666666 } /* Literal.Number.Oct */
pre.code .w, .code .codetable .w, .highlight pre .w { color: #bbbbbb } /* Text.Whitespace */ pre.code .sa, .highlight pre .sa { color: #BA2121 } /* Literal.String.Affix */
pre.code .mb, .code .codetable .mb, .highlight pre .mb { color: #666666 } /* Literal.Number.Bin */ pre.code .sb, .highlight pre .sb { color: #BA2121 } /* Literal.String.Backtick */
pre.code .mf, .code .codetable .mf, .highlight pre .mf { color: #666666 } /* Literal.Number.Float */ pre.code .sc, .highlight pre .sc { color: #BA2121 } /* Literal.String.Char */
pre.code .mh, .code .codetable .mh, .highlight pre .mh { color: #666666 } /* Literal.Number.Hex */ pre.code .dl, .highlight pre .dl { color: #BA2121 } /* Literal.String.Delimiter */
pre.code .mi, .code .codetable .mi, .highlight pre .mi { color: #666666 } /* Literal.Number.Integer */ pre.code .sd, .highlight pre .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
pre.code .mo, .code .codetable .mo, .highlight pre .mo { color: #666666 } /* Literal.Number.Oct */ pre.code .s2, .highlight pre .s2 { color: #BA2121 } /* Literal.String.Double */
pre.code .sa, .code .codetable .sa, .highlight pre .sa { color: #BA2121 } /* Literal.String.Affix */ pre.code .se, .highlight pre .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
pre.code .sb, .code .codetable .sb, .highlight pre .sb { color: #BA2121 } /* Literal.String.Backtick */ pre.code .sh, .highlight pre .sh { color: #BA2121 } /* Literal.String.Heredoc */
pre.code .sc, .code .codetable .sc, .highlight pre .sc { color: #BA2121 } /* Literal.String.Char */ pre.code .si, .highlight pre .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
pre.code .dl, .code .codetable .dl, .highlight pre .dl { color: #BA2121 } /* Literal.String.Delimiter */ pre.code .sx, .highlight pre .sx { color: #008000 } /* Literal.String.Other */
pre.code .sd, .code .codetable .sd, .highlight pre .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */ pre.code .sr, .highlight pre .sr { color: #BB6688 } /* Literal.String.Regex */
pre.code .s2, .code .codetable .s2, .highlight pre .s2 { color: #BA2121 } /* Literal.String.Double */ pre.code .s1, .highlight pre .s1 { color: #BA2121 } /* Literal.String.Single */
pre.code .se, .code .codetable .se, .highlight pre .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */ pre.code .ss, .highlight pre .ss { color: #19177C } /* Literal.String.Symbol */
pre.code .sh, .code .codetable .sh, .highlight pre .sh { color: #BA2121 } /* Literal.String.Heredoc */ pre.code .bp, .highlight pre .bp { color: #008000 } /* Name.Builtin.Pseudo */
pre.code .si, .code .codetable .si, .highlight pre .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */ pre.code .fm, .highlight pre .fm { color: #0000FF } /* Name.Function.Magic */
pre.code .sx, .code .codetable .sx, .highlight pre .sx { color: #008000 } /* Literal.String.Other */ pre.code .vc, .highlight pre .vc { color: #19177C } /* Name.Variable.Class */
pre.code .sr, .code .codetable .sr, .highlight pre .sr { color: #A45A77 } /* Literal.String.Regex */ pre.code .vg, .highlight pre .vg { color: #19177C } /* Name.Variable.Global */
pre.code .s1, .code .codetable .s1, .highlight pre .s1 { color: #BA2121 } /* Literal.String.Single */ pre.code .vi, .highlight pre .vi { color: #19177C } /* Name.Variable.Instance */
pre.code .ss, .code .codetable .ss, .highlight pre .ss { color: #19177C } /* Literal.String.Symbol */ pre.code .vm, .highlight pre .vm { color: #19177C } /* Name.Variable.Magic */
pre.code .bp, .code .codetable .bp, .highlight pre .bp { color: #008000 } /* Name.Builtin.Pseudo */ pre.code .il, .highlight pre .il { color: #666666 } /* Literal.Number.Integer.Long */
pre.code .fm, .code .codetable .fm, .highlight pre .fm { color: #0000FF } /* Name.Function.Magic */ table.codetable { width: 100%;} td.linenos {text-align: right; width: 4em;}
pre.code .vc, .code .codetable .vc, .highlight pre .vc { color: #19177C } /* Name.Variable.Class */
pre.code .vg, .code .codetable .vg, .highlight pre .vg { color: #19177C } /* Name.Variable.Global */
pre.code .vi, .code .codetable .vi, .highlight pre .vi { color: #19177C } /* Name.Variable.Instance */
pre.code .vm, .code .codetable .vm, .highlight pre .vm { color: #19177C } /* Name.Variable.Magic */
pre.code .il, .code .codetable .il, .highlight pre .il { color: #666666 } /* Literal.Number.Integer.Long */
.highlight table, .highlight tr, .highlight td, .code table, .code tr, .code td { border-spacing: 0; border-collapse: separate; padding: 0 }
.highlight pre, .code pre { white-space: pre-wrap; line-height: normal }
.highlighttable td.linenos, .codetable td.linenos { vertical-align: top; padding-left: 10px; padding-right: 10px; user-select: none; -webkit-user-select: none }
.highlighttable td.linenos code:before, .codetable td.linenos code:before { content: attr(data-line-number) }
.highlighttable td.code, .codetable td.code { overflow-wrap: normal; border-collapse: collapse }
.highlighttable td.code code, .codetable td.code code { overflow: unset; border: none; padding: 0; margin: 0; white-space: pre-wrap; line-height: unset; background: none }
.highlight .lineno.nonumber, .code .lineno.nonumber { list-style: none }
table.codetable, table.highlighttable { width: 100%;}
.codetable td.linenos, td.linenos { text-align: right; width: 3.5em; padding-right: 0.5em; background: rgba(127, 127, 127, 0.2) }
.codetable td.code, td.code { padding-left: 0.5em; }

View file

@ -62,18 +62,3 @@ div.warning p.admonition-title, div.system-message p.system-message-title {
div.sidebar { div.sidebar {
margin-right: 0; margin-right: 0;
} }
/* Improved margin overrides */
div.topic,
pre.literal-block,
pre.doctest-block,
pre.math,
pre.code,
div.code {
margin-left: 1rem;
margin-right: 1rem;
}
div.code {
margin-bottom: 1rem;
}

View file

@ -1,294 +1,7 @@
/* Minimal style sheet for the HTML output of Docutils. */ /* Minimal style sheet for the HTML output of Docutils. */
/* */ /* */
/* :Author: Günter Milde, based on html4css1.css by David Goodger */ /* :Author: Günter Milde, based on html4css1.css by David Goodger */
/* :Id: $Id: minimal.css 9079 2022-06-19 14:00:56Z milde $ */ /* :Id: $Id: minimal.css 7952 2016-07-26 18:15:59Z milde $ */
/* :Copyright: © 2015, 2021 Günter Milde. */
/* :License: Released under the terms of the `2-Clause BSD license`_, */
/* in short: */
/* */
/* Copying and distribution of this file, with or without modification, */
/* are permitted in any medium without royalty provided the copyright */
/* notice and this notice are preserved. */
/* */
/* This file is offered as-is, without any warranty. */
/* */
/* .. _2-Clause BSD license: http://www.spdx.org/licenses/BSD-2-Clause */
/* This CSS3 stylesheet defines rules for Docutils elements without */
/* HTML equivalent. It is required to make the document semantics visible. */
/* */
/* .. _validates: http://jigsaw.w3.org/css-validator/validator$link */
/* titles */
p.topic-title,
p.admonition-title,
p.system-message-title {
font-weight: bold;
}
p.sidebar-title,
p.rubric {
font-weight: bold;
font-size: larger;
}
p.rubric {
color: maroon;
}
p.subtitle,
p.section-subtitle,
p.sidebar-subtitle {
font-weight: bold;
margin-top: -0.5em;
}
h1 + p.subtitle {
font-size: 1.6em;
}
a.toc-backref {
color: inherit;
text-decoration: none;
}
/* Warnings, Errors */
.system-messages h2,
.system-message-title,
span.problematic {
color: red;
}
/* Inline Literals */
.docutils.literal {
font-family: monospace;
white-space: pre-wrap;
}
/* do not wrap at hyphens and similar: */
.literal > span.pre { white-space: nowrap; }
/* Lists */
/* compact and simple lists: no margin between items */
.simple li, .simple ul, .simple ol,
.compact li, .compact ul, .compact ol,
.simple > li p, dl.simple > dd,
.compact > li p, dl.compact > dd {
margin-top: 0;
margin-bottom: 0;
}
/* Nested Paragraphs */
p:first-child { margin-top: 0; }
p:last-child { margin-bottom: 0; }
details > p:last-child { margin-bottom: 1em; }
/* Table of Contents */
.contents ul.auto-toc { /* section numbers present */
list-style-type: none;
}
/* Enumerated Lists */
ol.arabic { list-style: decimal }
ol.loweralpha { list-style: lower-alpha }
ol.upperalpha { list-style: upper-alpha }
ol.lowerroman { list-style: lower-roman }
ol.upperroman { list-style: upper-roman }
/* Definition Lists and Derivatives */
dt .classifier { font-style: italic }
dt .classifier:before {
font-style: normal;
margin: 0.5em;
content: ":";
}
/* Field Lists and similar */
/* bold field name, content starts on the same line */
dl.field-list,
dl.option-list,
dl.docinfo,
dl.footnote,
dl.citation {
display: flow-root;
}
dl.field-list > dt,
dl.option-list > dt,
dl.docinfo > dt,
dl.footnote > dt,
dl.citation > dt {
font-weight: bold;
clear: left;
float: left;
margin: 0;
padding: 0;
padding-right: 0.2em;
}
/* Offset for field content (corresponds to the --field-name-limit option) */
dl.field-list > dd,
dl.option-list > dd,
dl.docinfo > dd {
margin-left: 9em; /* ca. 14 chars in the test examples, fit all Docinfo fields */
}
/* start nested lists on new line */
dd > dl:first-child,
dd > ul:first-child,
dd > ol:first-child {
clear: left;
}
/* start field-body on a new line after long field names */
dl.field-list > dd > *:first-child,
dl.option-list > dd > *:first-child
{
display: inline-block;
width: 100%;
margin: 0;
}
/* Bibliographic Fields (docinfo) */
dl.docinfo pre.address {
font: inherit;
margin: 0.5em 0;
}
dl.docinfo > dd.authors > p { margin: 0; }
/* Option Lists */
dl.option-list > dt { font-weight: normal; }
span.option { white-space: nowrap; }
/* Footnotes and Citations */
.footnote, .citation { margin: 1em 0; } /* default paragraph skip (Firefox) */
/* hanging indent */
.citation { padding-left: 2em; }
.footnote { padding-left: 1.7em; }
.footnote.superscript { padding-left: 1.0em; }
.citation > .label { margin-left: -2em; }
.footnote > .label { margin-left: -1.7em; }
.footnote.superscript > .label { margin-left: -1.0em; }
.footnote > .label + *,
.citation > .label + * {
display: inline-block;
margin-top: 0;
vertical-align: top;
}
.footnote > .backrefs + *,
.citation > .backrefs + * {
margin-top: 0;
}
.footnote > .label + p, .footnote > .backrefs + p,
.citation > .label + p, .citation > .backrefs + p {
display: inline;
vertical-align: inherit;
}
.backrefs { user-select: none; }
.backrefs > a { font-style: italic; }
/* superscript footnotes */
a[role="doc-noteref"].superscript,
.footnote.superscript > .label,
.footnote.superscript > .backrefs {
vertical-align: super;
font-size: smaller;
line-height: 1;
}
a[role="doc-noteref"].superscript > .fn-bracket,
.footnote.superscript > .label > .fn-bracket {
/* hide brackets in display but leave for copy/paste */
display: inline-block;
width: 0;
overflow: hidden;
}
[role="doc-noteref"].superscript + [role="doc-noteref"].superscript {
padding-left: 0.15em; /* separate consecutive footnote references */
/* TODO: unfortunately, "+" also selects with text between the references. */
}
/* Legacy Footnotes and Citations */
dl.footnote.superscript > dd { margin-left: 1em; }
dl.footnote.brackets > dd { margin-left: 2em; }
dl.footnote > dt { font-weight: normal; }
dt.label > span.brackets:before { content: "["; }
dt.label > span.brackets:after { content: "]"; }
a.footnote-reference.superscript,
dl.footnote.superscript > dt.label {
vertical-align: super;
font-size: small;
}
dt.label > span.fn-backref {
margin-left: 0.2em;
font-weight: normal;
}
dt.label > span.fn-backref > a { font-style: italic; }
/* Alignment */
.align-left {
text-align: left;
margin-right: auto;
}
.align-center {
text-align: center;
margin-left: auto;
margin-right: auto;
}
.align-right {
text-align: right;
margin-left: auto;
}
.align-top { vertical-align: top; }
.align-middle { vertical-align: middle; }
.align-bottom { vertical-align: bottom; }
img.align-left, img.align-center, img.align-right,
.figure.align-left, .figure.align-center, .figure.align-right,
object.align-left, object.align-center, object.align-right {
display: block;
}
/* reset inner alignment in figures and tables */
figure.align-left, figure.align-right,
table.align-left, table.align-center, table.align-right {
text-align: inherit;
}
/* Text Blocks */
.topic { margin: 1em 2em; }
.sidebar,
.admonition,
.system-message {
margin: 1em 2em;
border: thin solid;
padding: 0.5em 1em;
}
div.line-block { display: block; }
div.line-block div.line-block, pre { margin-left: 2em; }
/* Code line numbers: dropped when copying text from the page */
pre.code .ln { display: none; }
pre.code code:before {
content: attr(data-lineno); /* …, none) fallback not supported by any browser */
color: gray;
}
/* Tables */
td > p:first-child, th > p:first-child { margin-top: 0; }
td > p, th > p { margin-bottom: 0; }
.borderless td, .borderless th {
border: 0;
padding: 0;
padding-right: 0.5em /* separate table cells */
}
table > caption {
text-align: left;
margin-top: 0.2em;
margin-bottom: 0.2em;
}
table.captionbelow {
caption-side: bottom;
}
/* CSS31_ style sheet for the output of Docutils HTML writers. */
/* Rules for easy reading and pre-defined style variants. */
/* */
/* :Author: Günter Milde, based on html4css1.css by David Goodger */
/* :Id: $Id: plain.css 9081 2022-06-19 20:23:12Z milde $ */
/* :Copyright: © 2015 Günter Milde. */ /* :Copyright: © 2015 Günter Milde. */
/* :License: Released under the terms of the `2-Clause BSD license`_, */ /* :License: Released under the terms of the `2-Clause BSD license`_, */
/* in short: */ /* in short: */
@ -300,28 +13,278 @@ table.captionbelow {
/* This file is offered as-is, without any warranty. */ /* This file is offered as-is, without any warranty. */
/* */ /* */
/* .. _2-Clause BSD license: http://www.spdx.org/licenses/BSD-2-Clause */ /* .. _2-Clause BSD license: http://www.spdx.org/licenses/BSD-2-Clause */
/* .. _CSS3: https://www.w3.org/Style/CSS/ */
/* This CSS2.1_ stylesheet defines rules for Docutils elements without */
/* HTML equivalent. It is required to make the document semantic visible. */
/* */
/* .. _CSS2.1: http://www.w3.org/TR/CSS2 */
/* .. _validates: http://jigsaw.w3.org/css-validator/validator$link */
/* alignment of text and inline objects inside block objects*/
.align-left { text-align: left; }
.align-right { text-align: right; }
.align-center { clear: both; text-align: center; }
.align-top { vertical-align: top; }
.align-middle { vertical-align: middle; }
.align-bottom { vertical-align: bottom; }
/* titles */
h1.title, p.subtitle {
text-align: center;
}
p.admonition-title,
p.topic-title,
p.sidebar-title,
p.rubric,
p.system-message-title {
font-weight: bold;
}
h1 + p.subtitle,
h1 + p.section-subtitle {
font-size: 1.6em;
}
h2 + p.section-subtitle { font-size: 1.28em; }
p.subtitle,
p.section-subtitle,
p.sidebar-subtitle {
font-weight: bold;
margin-top: -0.5em;
}
p.sidebar-title,
p.rubric {
font-size: larger;
}
p.rubric { color: maroon; }
a.toc-backref {
color: black;
text-decoration: none; }
/* Warnings, Errors */
div.caution p.admonition-title,
div.attention p.admonition-title,
div.danger p.admonition-title,
div.error p.admonition-title,
div.warning p.admonition-title,
div.system-messages h1,
div.error,
span.problematic,
p.system-message-title {
color: red;
}
/* inline literals */
span.docutils.literal {
font-family: monospace;
white-space: pre-wrap;
}
/* do not wraph at hyphens and similar: */
.literal > span.pre { white-space: nowrap; }
/* Lists */
/* compact and simple lists: no margin between items */
.simple li, .compact li,
.simple ul, .compact ul,
.simple ol, .compact ol,
.simple > li p, .compact > li p,
dl.simple > dd, dl.compact > dd {
margin-top: 0;
margin-bottom: 0;
}
/* Table of Contents */
/*div.topic.contents { margin: 0; }*/
ul.auto-toc {
list-style-type: none;
padding-left: 1.5em; }
/* Enumerated Lists */
ol.arabic { list-style: decimal }
ol.loweralpha { list-style: lower-alpha }
ol.upperalpha { list-style: upper-alpha }
ol.lowerroman { list-style: lower-roman }
ol.upperroman { list-style: upper-roman }
dt span.classifier { font-style: italic }
dt span.classifier:before {
font-style: normal;
margin: 0.5em;
content: ":";
}
/* Field Lists and drivatives */
/* bold field name, content starts on the same line */
dl.field-list > dt,
dl.option-list > dt,
dl.docinfo > dt,
dl.footnote > dt,
dl.citation > dt {
font-weight: bold;
clear: left;
float: left;
margin: 0;
padding: 0;
padding-right: 0.5em;
}
/* Offset for field content (corresponds to the --field-name-limit option) */
dl.field-list > dd,
dl.option-list > dd,
dl.docinfo > dd {
margin-left: 9em; /* ca. 14 chars in the test examples */
}
/* start field-body on a new line after long field names */
dl.field-list > dd > *:first-child,
dl.option-list > dd > *:first-child
{
display: inline-block;
width: 100%;
margin: 0;
}
/* field names followed by a colon */
dl.field-list > dt:after,
dl.docinfo > dt:after {
content: ":";
}
/* Bibliographic Fields (docinfo) */
pre.address { font: inherit; }
dd.authors > p { margin: 0; }
/* Option Lists */
dl.option-list { margin-left: 40px; }
dl.option-list > dt { font-weight: normal; }
span.option { white-space: nowrap; }
/* Footnotes and Citations */
dl.footnote.superscript > dd {margin-left: 1em; }
dl.footnote.brackets > dd {margin-left: 2em; }
dl > dt.label { font-weight: normal; }
a.footnote-reference.brackets:before,
dt.label > span.brackets:before { content: "["; }
a.footnote-reference.brackets:after,
dt.label > span.brackets:after { content: "]"; }
a.footnote-reference.superscript,
dl.footnote.superscript > dt.label {
vertical-align: super;
font-size: smaller;
}
dt.label > span.fn-backref { margin-left: 0.2em; }
dt.label > span.fn-backref > a { font-style: italic; }
/* Line Blocks */
div.line-block { display: block; }
div.line-block div.line-block {
margin-top: 0;
margin-bottom: 0;
margin-left: 40px;
}
/* Figures, Images, and Tables */
.figure.align-left,
img.align-left,
object.align-left,
table.align-left {
margin-right: auto;
}
.figure.align-center,
img.align-center,
object.align-center {
margin-left: auto;
margin-right: auto;
display: block;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.figure.align-right,
img.align-right,
object.align-right,
table.align-right {
margin-left: auto;
}
/* reset inner alignment in figures and tables */
div.align-left, div.align-center, div.align-right,
table.align-left, table.align-center, table.align-right
{ text-align: inherit }
/* Admonitions and System Messages */
div.admonition,
div.system-message,
div.sidebar{
margin: 40px;
border: medium outset;
padding-right: 1em;
padding-left: 1em;
}
/* Sidebar */
div.sidebar {
width: 30%;
max-width: 26em;
float: right;
clear: right;
}
/* Text Blocks */
div.topic,
pre.literal-block,
pre.doctest-block,
pre.math,
pre.code {
margin-right: 40px;
margin-left: 40px;
}
pre.code .ln { color: gray; } /* line numbers */
/* Tables */
table.docutils { border-collapse: collapse; }
table.docutils > td, table.docutils > th {
border-style: solid;
border-color: silver;
padding: 0 1ex;
border-width: thin;
}
table.docutils > td > p:first-child, table.docutils > th > p:first-child { margin-top: 0; }
table.docutils > td > p, table.docutils > th > p { margin-bottom: 0; }
table.docutils > caption {
text-align: left;
margin-bottom: 0.25em
}
table.borderless td, table.borderless th {
border: 0;
padding: 0;
padding-right: 0.5em /* separate table cells */
}
/* CSS31_ style sheet for the output of Docutils HTML writers. */
/* Rules for easy reading and pre-defined style variants. */
/* */
/* :Author: Günter Milde, based on html4css1.css by David Goodger */
/* :Id: $Id: plain.css 7952 2016-07-26 18:15:59Z milde $ */
/* :Copyright: © 2015 Günter Milde. */
/* :License: Released under the terms of the `2-Clause BSD license`_, */
/* in short: */
/* */
/* Copying and distribution of this file, with or without modification, */
/* are permitted in any medium without royalty provided the copyright */
/* notice and this notice are preserved. */
/* */
/* This file is offered as-is, without any warranty. */
/* */
/* .. _2-Clause BSD license: http://www.spdx.org/licenses/BSD-2-Clause */
/* .. _CSS3: http://www.w3.org/TR/CSS3 */
/* Document Structure */ /* Document Structure */
/* ****************** */ /* ****************** */
/* Table of Contents */ /* Sections */
ul.auto-toc > li > p {
padding-left: 1em;
text-indent: -1em;
}
nav.contents ul {
padding-left: 1em;
}
main > nav.contents ul ul ul ul:not(.auto-toc) {
list-style-type: '\2B29\ ';
}
main > nav.contents ul ul ul ul ul:not(.auto-toc) {
list-style-type: '\2B1D\ ';
}
/* Transitions */ /* Transitions */
hr.docutils { hr.docutils {
width: 80%; width: 80%;
margin-top: 1em; margin-top: 1em;
@ -329,46 +292,50 @@ hr.docutils {
clear: both; clear: both;
} }
/* Paragraphs */
/* ========== */
/* vertical space (parskip) */
/*p, ol, ul, dl,*/
/*div.line-block,*/
/*table{*/
/*margin-top: 0.5em;*/
/*margin-bottom: 0.5em;*/
/*}*/
/*h1, h2, h3, h4, h5, h6, */
dl > dd { dl > dd {
margin-bottom: 0.5em; margin-bottom: 0.5em;
} }
/* Lists */ /* Lists */
/* ===== */ /* ========== */
/* Definition Lists */ /* Definition Lists */
/* Indent lists nested in definition lists */
dl > dd p:first-child { margin-top: 0; }
/* :last-child is not part of CSS 2.1 (introduced in CSS 3) */
/* dl > dd p:last-child { margin-bottom: 0; } */
/* lists nested in definition lists */
/* :only-child is not part of CSS 2.1 (introduced in CSS 3) */
dd > ul:only-child, dd > ol:only-child { padding-left: 1em; } dd > ul:only-child, dd > ol:only-child { padding-left: 1em; }
/* Description Lists */ /* Description Lists */
/* styled like in most dictionaries, encyclopedias etc. */ /* styled like in most dictionaries, encyclopedias etc. */
dl.description {
display: flow-root;
}
dl.description > dt { dl.description > dt {
font-weight: bold; font-weight: bold;
clear: left; clear: left;
float: left; float: left;
margin: 0; margin: 0;
padding: 0; padding: 0;
padding-right: 0.3em; padding-right: 0.5em;
}
dl.description > dd:after {
display: table;
content: "";
clear: left; /* clearfix for empty descriptions */
} }
/* Field Lists */ /* Field Lists */
dl.field-list > dd,
dl.docinfo > dd {
margin-left: var(--field-indent); /* adapted in media queries or HTML */
}
/* example for custom field-name width */ /* example for custom field-name width */
dl.field-list.narrow > dd { dl.field-list.narrow > dd {
--field-indent: 5em; margin-left: 5em;
} }
/* run-in: start field-body on same line after long field names */ /* run-in: start field-body on same line after long field names */
dl.field-list.run-in > dd p { dl.field-list.run-in > dd p {
@ -377,8 +344,8 @@ dl.field-list.run-in > dd p {
/* Bibliographic Fields */ /* Bibliographic Fields */
/* generally, bibliographic fields use dl.docinfo */ /* generally, bibliographic fields use special definition list dl.docinfo */
/* but dedication and abstract are placed into divs */ /* but dedication and abstract are placed into "topic" divs */
div.abstract p.topic-title { div.abstract p.topic-title {
text-align: center; text-align: center;
} }
@ -391,28 +358,44 @@ div.dedication p.topic-title {
font-style: normal; font-style: normal;
} }
/* disclosures */ /* Citations */
details { padding-left: 1em; } dl.citation dt.label {
summary { margin-left: -1em; } font-weight: bold;
}
/* Text Blocks */ span.fn-backref {
/* =========== */ font-weight: normal;
/* Literal Blocks */
pre.literal-block, pre.doctest-block,
pre.math, pre.code {
font-family: monospace;
} }
/* Block Quotes and Topics */ /* Text Blocks */
/* ============ */
/* Literal Blocks */
pre.literal-block, pre.doctest-block,
pre.math, pre.code {
margin-left: 1.5em;
margin-right: 1.5em
}
/* Block Quotes */
blockquote,
div.topic {
margin-left: 1.5em;
margin-right: 1.5em
}
blockquote > table,
div.topic > table {
margin-top: 0;
margin-bottom: 0;
}
blockquote p.attribution, blockquote p.attribution,
.topic p.attribution { div.topic p.attribution {
text-align: right; text-align: right;
margin-left: 20%; margin-left: 20%;
} }
/* Tables */ /* Tables */
/* ====== */ /* ====== */
/* th { vertical-align: bottom; } */ /* th { vertical-align: bottom; } */
@ -439,77 +422,53 @@ table.numbered > caption:before {
font-weight: bold; font-weight: bold;
} }
/* Explicit Markup Blocks */ /* Explicit Markup Blocks */
/* ====================== */ /* ====================== */
/* Footnotes and Citations */ /* Footnotes and Citations */
/* ----------------------- */ /* ----------------------- */
/* line on the left */ /* line on the left */
.footnote-list {
border-left: solid thin;
padding-left: 0.25em;
}
/* same thing for old docutils versions */
dl.footnote { dl.footnote {
padding-left: 1ex; padding-left: 1ex;
border-left: solid; border-left: solid;
border-left-width: thin; border-left-width: thin;
} }
/* Directives */ /* Directives */
/* ---------- */ /* ---------- */
/* Body Elements */ /* Body Elements */
/* ~~~~~~~~~~~~~ */ /* ~~~~~~~~~~~~~ */
/* Images and Figures */ /* Images and Figures */
/* let content flow to the side of aligned images and figures */ /* let content flow to the side of aligned images and figures */
figure.align-left, .figure.align-left,
img.align-left, img.align-left,
video.align-left,
object.align-left { object.align-left {
display: block;
clear: left; clear: left;
float: left; float: left;
margin-right: 1em; margin-right: 1em
} }
figure.align-right, .figure.align-right,
img.align-right, img.align-right,
video.align-right,
object.align-right { object.align-right {
display: block;
clear: right; clear: right;
float: right; float: right;
margin-left: 1em; margin-left: 1em
}
/* Numbered figures */
figure.numbered > figcaption > p:before {
counter-increment: figure;
content: "Figure " counter(figure) ": ";
font-weight: bold;
}
/* Admonitions and System Messages */
.caution p.admonition-title,
.attention p.admonition-title,
.danger p.admonition-title,
.error p.admonition-title,
.warning p.admonition-title,
div.error {
color: red;
} }
/* Sidebar */ /* Sidebar */
/* Move right. In a layout with fixed margins, */
/* it can be moved into the margin. */ /* Move into the margin. In a layout with fixed margins, */
aside.sidebar { /* it can be moved into the margin completely. */
div.sidebar {
width: 30%; width: 30%;
max-width: 26em; max-width: 26em;
float: right;
clear: right;
margin-left: 1em; margin-left: 1em;
margin-right: -1%; margin-right: -5.5%;
background-color: #fffffa; background-color: #ffffee ;
} }

View file

@ -1,7 +1,7 @@
@charset "UTF-8"; @charset "UTF-8";
/* /*
Copyright © 2014-2023 Daniel Aleksandersen and others. Copyright © 2014-2019 Daniel Aleksandersen and others.
Permission is hereby granted, free of charge, to any Permission is hereby granted, free of charge, to any
person obtaining a copy of this software and associated person obtaining a copy of this software and associated
@ -67,9 +67,9 @@ body {
margin-right: 1.5em; margin-right: 1.5em;
} }
html[dir="rtl"] #menu ul li, #menu ul li:dir(rtl),
html[dir="rtl"] #toptranslations ul li, #toptranslations ul li:dir(rtl),
html[dir="rtl"] #toptranslations h2 { #toptranslations h2:dir(rtl) {
margin-left: 1.5em; margin-left: 1.5em;
margin-right: 0; margin-right: 0;
} }
@ -79,7 +79,7 @@ html[dir="rtl"] #toptranslations h2 {
float: right; float: right;
} }
html[dir="rtl"] #toptranslations { #toptranslations:dir(rtl) {
text-align: left; text-align: left;
float: left; float: left;
} }
@ -127,9 +127,6 @@ html[dir="rtl"] #toptranslations {
.postlist li { .postlist li {
margin-bottom: .33em; margin-bottom: .33em;
} }
.byline a:not(:last-child):after {
content: ",";
}
/* Post and archive pagers */ /* Post and archive pagers */
.postindexpager .pager .next:before { .postindexpager .pager .next:before {
@ -143,24 +140,19 @@ html[dir="rtl"] #toptranslations {
.archivenav .pager .next:after { .archivenav .pager .next:after {
content: " →"; content: " →";
} }
html[dir="rtl"] .postpromonav .pager .previous:after, .postpromonav .pager .previous:dir(rtl):after,
html[dir="rtl"] .archivenav .pager .previous:after { .archivenav .pager .previous:dir(rtl):after {
content: " →"; content: " →";
} }
.postpromonav .pager .previous:before, .postpromonav .pager .previous:before,
.archivenav .pager .previous:before { .archivenav .pager .previous:before {
content: "← "; content: "← ";
} }
html[dir="rtl"] .postpromonav .pager .next:before, .postpromonav .pager .next:dir(rtl):before,
html[dir="rtl"] .archivenav .pager .next:before { .archivenav .pager .next:dir(rtl):before {
content: "← "; content: "← ";
} }
html[dir="rtl"] .postpromonav .pager .next:after,
html[dir="rtl"] .archivenav .pager .next:after,
html[dir="rtl"] .postpromonav .pager .previous:before,
html[dir="rtl"] .archivenav .pager .previous:before {
content: "";
}
.metadata p:first-of-type:before, .metadata p:first-of-type:before,
.postpromonav .tags li:first-of-type:before, .postpromonav .tags li:first-of-type:before,
.translationslist p:first-of-type:before { .translationslist p:first-of-type:before {
@ -182,8 +174,8 @@ html[dir="rtl"] .archivenav .pager .previous:before {
.archivenav .pager .next { .archivenav .pager .next {
float: right; float: right;
} }
html[dir="rtl"] .postpromonav .pager .next, .postpromonav .pager .next:dir(rtl),
html[dir="rtl"] .archivenav .pager .next { .archivenav .pager .next:dir(rtl) {
float: left; float: left;
} }
@ -191,16 +183,16 @@ html[dir="rtl"] .archivenav .pager .next {
.archivenav .pager .previous { .archivenav .pager .previous {
float: left; float: left;
} }
html[dir="rtl"] .postpromonav .pager .previous, .postpromonav .pager .previous:dir(rtl),
html[dir="rtl"] .archivenav .pager .previous { .archivenav .pager .previous:dir(rtl) {
float: right; float: right;
} }
.archivenav .pager .disabled, .archivenav .pager .disabled,
.archivenav .pager .disabled a, .archivenav .pager .disabled a,
.archivenav .pager .disabled:link { .archivenav .pager .disabled:link {
color: #888; color: #888;
cursor: not-allowed; cursor: not-allowed;
} }
.metadata p, .metadata p,
@ -285,6 +277,10 @@ img {
margin-right: 0; margin-right: 0;
} }
.codetable .linenos {
padding-right: 10px;
}
.sr-only { .sr-only {
position: absolute; position: absolute;
width: 1px; width: 1px;
@ -307,16 +303,11 @@ img {
} }
pre.code, code { pre.code, code {
white-space: pre-wrap; white-space: pre;
word-wrap: normal; word-wrap: normal;
overflow: auto; overflow: auto;
} }
/* Set a minimum logo height to ensure .svg are displayed if there is no brand text (#3493) */
#logo {
min-height: 25px;
}
/* SOURCE: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ /* SOURCE: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
@media print { @media print {
*, *,

View file

@ -22,7 +22,7 @@ pescewanda3 [at] gmail.com
BEGIN PGP PUBLIC KEY BLOCK—Version: GnuPG v2 BEGIN PGP PUBLIC KEY BLOCK—Version: GnuPG v2
mQENBFUa5j4BCAC8clTqI75PkKJ+"> mQENBFUa5j4BCAC8clTqI75PkKJ+Y">
<meta property="og:type" content="article"> <meta property="og:type" content="article">
<meta property="article:published_time" content="2015-03-31T20:36:00Z"> <meta property="article:published_time" content="2015-03-31T20:36:00Z">
<meta property="article:tag" content="Mr E."> <meta property="article:tag" content="Mr E.">
@ -42,7 +42,7 @@ pescewanda3 [at] gmail.com
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -56,13 +56,15 @@ pescewanda3 [at] gmail.com
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<p>Questa e` la nostra chiave PGP con la quale possiamo essere contattati allindirizzo<br><strong>pescewanda3 [at] gmail.com</strong></p> <div>
<p>Questa e` la nostra chiave PGP con la quale possiamo essere contattati allindirizzo<br><strong>pescewanda3 [at] gmail.com</strong></p>
<div class="code"> <div class="code">
BEGIN PGP PUBLIC KEY BLOCK—<br>Version: GnuPG v2 BEGIN PGP PUBLIC KEY BLOCK—<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>END PGP PUBLIC KEY BLOCK— 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>END PGP PUBLIC KEY BLOCK—
</p> </p>
</div>
</div> </div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -36,7 +36,7 @@
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -50,7 +50,8 @@
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<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 “Tor”. Questo è un software che rende chi lo utilizza invisibile, poichè nasconde lindirizzo IP del computer tramite la crittografia a strati, da qui il nome scelto che sta per “The Onion Router”. Infatti grazie a Tor lutente 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>
<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 “Tor”. Questo è un software che rende chi lo utilizza invisibile, poichè nasconde lindirizzo IP del computer tramite la crittografia a strati, da qui il nome scelto che sta per “The Onion Router”. Infatti grazie a Tor lutente 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;"> <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> <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>
@ -65,6 +66,7 @@ Il payload è un tipo di shellcode, ovvero un piccolo pezzo di codice, che sfrut
<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>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> <p>Eugenio Corso </p>
<div> <div>
</div>
</div> </div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -40,7 +40,7 @@
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -54,7 +54,8 @@
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<blockquote class="tr_bq"> <div>
<blockquote class="tr_bq">
<div style="text-align:center;"> <div style="text-align:center;">
<span style="color:#555555;display:inline !important;float:none;font-family:Helvetica, Arial, Helvetica, Geneva, sans-serif;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:20px;text-align:left;text-indent:0;text-transform:none;white-space:normal;widows:1;word-spacing:0;"><span style="font-size:large;"><i>“Lutilizzo dei bambini per fini politici? Piuttosto abietto. </i></span></span> <span style="color:#555555;display:inline !important;float:none;font-family:Helvetica, Arial, Helvetica, Geneva, sans-serif;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:20px;text-align:left;text-indent:0;text-transform:none;white-space:normal;widows:1;word-spacing:0;"><span style="font-size:large;"><i>“Lutilizzo dei bambini per fini politici? Piuttosto abietto. </i></span></span>
</div> </div>
@ -77,6 +78,7 @@
</div> </div>
<p><span id="goog_1004488977"></span><span id="goog_1004488978"></span> </p> <p><span id="goog_1004488977"></span><span id="goog_1004488978"></span> </p>
</div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -36,7 +36,7 @@
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -50,7 +50,8 @@
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<div class="MsoNormal" style="text-align:justify;"> <div>
<div class="MsoNormal" style="text-align:justify;">
Trattando argomenti quali lanonimato e la privacy, non si può fare a meno di parlare di uno dei movimenti più rappresentativi di queste due tematiche, ovvero Anonymous. Questo movimento nasce nel 2003, e per il suo nome prende ispirazione dal nickname usato nei siti di imageboard, siti nei quali un thread può essere iniziato solo con un immagine, quali per esempio 4chan, 711chan, dove chi commentava senza identificarsi appariva come “anonymous”, e da qui si incominciò a identificare anonymous come una persona reale. Trattando argomenti quali lanonimato e la privacy, non si può fare a meno di parlare di uno dei movimenti più rappresentativi di queste due tematiche, ovvero Anonymous. Questo movimento nasce nel 2003, e per il suo nome prende ispirazione dal nickname usato nei siti di imageboard, siti nei quali un thread può essere iniziato solo con un immagine, quali per esempio 4chan, 711chan, dove chi commentava senza identificarsi appariva come “anonymous”, e da qui si incominciò a identificare anonymous come una persona reale.
</div> </div>
@ -100,56 +101,57 @@
Fonti: <a href="https://www.youtube.com/watch?v=YJmRqgBE_t8">www.youtube.com</a></p> Fonti: <a href="https://www.youtube.com/watch?v=YJmRqgBE_t8">www.youtube.com</a></p>
</div> </div>
<div class="code"><pre class="code literal-block"><span class="nt">&lt;div</span><span class="w"> </span><span class="na">class=</span><span class="s">"MsoNormal"</span><span class="w"> </span><span class="na">style=</span><span class="s">"text-align:justify;"</span><span class="nt">&gt;</span> <pre class="code literal-block"><span></span><span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"MsoNormal"</span> <span class="na">style=</span><span class="s">"text-align:justify;"</span><span class="nt">&gt;</span>
<span class="w"> </span><span class="nt">&lt;p&gt;</span> <span class="nt">&lt;p&gt;</span>
<span class="w"> </span><span class="nt">&lt;/div&gt;</span> <span class="nt">&lt;/div&gt;</span>
<span class="w"> </span><span class="nt">&lt;div</span><span class="w"> </span><span class="na">class=</span><span class="s">"MsoNormal"</span><span class="w"> </span><span class="na">style=</span><span class="s">"text-align:justify;"</span><span class="nt">&gt;</span> <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"MsoNormal"</span> <span class="na">style=</span><span class="s">"text-align:justify;"</span><span class="nt">&gt;</span>
<span class="w"> </span><span class="nt">&lt;div</span><span class="w"> </span><span class="na">style=</span><span class="s">"text-align:center;"</span><span class="nt">&gt;</span> <span class="nt">&lt;div</span> <span class="na">style=</span><span class="s">"text-align:center;"</span><span class="nt">&gt;</span>
<span class="w"> </span><span class="nt">&lt;/div&gt;</span> <span class="nt">&lt;/div&gt;</span>
<span class="w"> </span><span class="nt">&lt;div</span><span class="w"> </span><span class="na">class=</span><span class="s">"separator"</span><span class="w"> </span><span class="na">style=</span><span class="s">"clear:both;text-align:center;"</span><span class="nt">&gt;</span> <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"separator"</span> <span class="na">style=</span><span class="s">"clear:both;text-align:center;"</span><span class="nt">&gt;</span>
<span class="w"> </span><span class="nt">&lt;a</span><span class="w"> </span><span class="na">href=</span><span class="s">"https://www.youtube.com/embed/LiFrjbjASk4?feature=player_embedded"</span><span class="nt">&gt;</span>https://www.youtube.com/embed/LiFrjbjASk4?feature=player_embedded<span class="nt">&lt;/a&gt;</span> <span class="nt">&lt;a</span> <span class="na">href=</span><span class="s">"https://www.youtube.com/embed/LiFrjbjASk4?feature=player_embedded"</span><span class="nt">&gt;</span>https://www.youtube.com/embed/LiFrjbjASk4?feature=player_embedded<span class="nt">&lt;/a&gt;</span>
<span class="w"> </span><span class="nt">&lt;/div&gt;</span> <span class="nt">&lt;/div&gt;</span>
<span class="w"> </span><span class="nt">&lt;div</span><span class="w"> </span><span class="na">style=</span><span class="s">"text-align:center;"</span><span class="nt">&gt;</span> <span class="nt">&lt;div</span> <span class="na">style=</span><span class="s">"text-align:center;"</span><span class="nt">&gt;</span>
<span class="w"> </span><span class="nt">&lt;/div&gt;</span> <span class="nt">&lt;/div&gt;</span>
<span class="w"> </span><span class="nt">&lt;/div&gt;</span> <span class="nt">&lt;/div&gt;</span>
<span class="w"> </span><span class="nt">&lt;div</span><span class="w"> </span><span class="na">class=</span><span class="s">"MsoNormal"</span><span class="w"> </span><span class="na">style=</span><span class="s">"text-align:justify;"</span><span class="nt">&gt;</span> <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"MsoNormal"</span> <span class="na">style=</span><span class="s">"text-align:justify;"</span><span class="nt">&gt;</span>
<span class="w"> </span><span class="nt">&lt;/div&gt;</span> <span class="nt">&lt;/div&gt;</span>
<span class="w"> </span><span class="nt">&lt;div</span><span class="w"> </span><span class="na">class=</span><span class="s">"MsoNormal"</span><span class="w"> </span><span class="na">style=</span><span class="s">"text-align:center;"</span><span class="nt">&gt;</span> <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"MsoNormal"</span> <span class="na">style=</span><span class="s">"text-align:center;"</span><span class="nt">&gt;</span>
<span class="w"> </span><span class="nt">&lt;span</span><span class="w"> </span><span class="na">lang=</span><span class="s">"EN-US"</span><span class="w"> </span><span class="na">style=</span><span class="s">"background:white;font-family:Arial, sans-serif;font-size:10pt;"</span><span class="nt">&gt;</span>We<span class="w"> </span>are<span class="w"> </span>Anonymous.<span class="nt">&lt;/span&gt;</span> <span class="nt">&lt;span</span> <span class="na">lang=</span><span class="s">"EN-US"</span> <span class="na">style=</span><span class="s">"background:white;font-family:Arial, sans-serif;font-size:10pt;"</span><span class="nt">&gt;</span>We are Anonymous.<span class="nt">&lt;/span&gt;</span>
<span class="w"> </span><span class="nt">&lt;/div&gt;</span> <span class="nt">&lt;/div&gt;</span>
<span class="w"> </span><span class="nt">&lt;div</span><span class="w"> </span><span class="na">class=</span><span class="s">"MsoNormal"</span><span class="w"> </span><span class="na">style=</span><span class="s">"text-align:center;"</span><span class="nt">&gt;</span> <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"MsoNormal"</span> <span class="na">style=</span><span class="s">"text-align:center;"</span><span class="nt">&gt;</span>
<span class="w"> </span><span class="nt">&lt;span</span><span class="w"> </span><span class="na">lang=</span><span class="s">"EN-US"</span><span class="w"> </span><span class="na">style=</span><span class="s">"background:white;font-family:Arial, sans-serif;font-size:10pt;"</span><span class="nt">&gt;</span><span class="w"> </span>We<span class="w"> </span>are<span class="w"> </span>legion.<span class="nt">&lt;/span&gt;</span> <span class="nt">&lt;span</span> <span class="na">lang=</span><span class="s">"EN-US"</span> <span class="na">style=</span><span class="s">"background:white;font-family:Arial, sans-serif;font-size:10pt;"</span><span class="nt">&gt;</span> We are legion.<span class="nt">&lt;/span&gt;</span>
<span class="w"> </span><span class="nt">&lt;/div&gt;</span> <span class="nt">&lt;/div&gt;</span>
<span class="w"> </span><span class="nt">&lt;div</span><span class="w"> </span><span class="na">class=</span><span class="s">"MsoNormal"</span><span class="w"> </span><span class="na">style=</span><span class="s">"text-align:center;"</span><span class="nt">&gt;</span> <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"MsoNormal"</span> <span class="na">style=</span><span class="s">"text-align:center;"</span><span class="nt">&gt;</span>
<span class="w"> </span><span class="nt">&lt;span</span><span class="w"> </span><span class="na">lang=</span><span class="s">"EN-US"</span><span class="w"> </span><span class="na">style=</span><span class="s">"background:white;font-family:Arial, sans-serif;font-size:10pt;"</span><span class="nt">&gt;</span><span class="w"> </span>We<span class="w"> </span>do<span class="w"> </span>not<span class="w"> </span>forgive.<span class="w"> </span><span class="nt">&lt;/span&gt;</span> <span class="nt">&lt;span</span> <span class="na">lang=</span><span class="s">"EN-US"</span> <span class="na">style=</span><span class="s">"background:white;font-family:Arial, sans-serif;font-size:10pt;"</span><span class="nt">&gt;</span> We do not forgive. <span class="nt">&lt;/span&gt;</span>
<span class="w"> </span><span class="nt">&lt;/div&gt;</span> <span class="nt">&lt;/div&gt;</span>
<span class="w"> </span><span class="nt">&lt;div</span><span class="w"> </span><span class="na">class=</span><span class="s">"MsoNormal"</span><span class="w"> </span><span class="na">style=</span><span class="s">"text-align:center;"</span><span class="nt">&gt;</span> <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"MsoNormal"</span> <span class="na">style=</span><span class="s">"text-align:center;"</span><span class="nt">&gt;</span>
<span class="w"> </span><span class="nt">&lt;span</span><span class="w"> </span><span class="na">lang=</span><span class="s">"EN-US"</span><span class="w"> </span><span class="na">style=</span><span class="s">"background:white;font-family:Arial, sans-serif;font-size:10pt;"</span><span class="nt">&gt;</span>We<span class="w"> </span>do<span class="w"> </span>not<span class="w"> </span>forget.<span class="w"> </span><span class="nt">&lt;/span&gt;</span> <span class="nt">&lt;span</span> <span class="na">lang=</span><span class="s">"EN-US"</span> <span class="na">style=</span><span class="s">"background:white;font-family:Arial, sans-serif;font-size:10pt;"</span><span class="nt">&gt;</span>We do not forget. <span class="nt">&lt;/span&gt;</span>
<span class="w"> </span><span class="nt">&lt;/div&gt;</span> <span class="nt">&lt;/div&gt;</span>
<span class="w"> </span><span class="nt">&lt;div</span><span class="w"> </span><span class="na">class=</span><span class="s">"MsoNormal"</span><span class="w"> </span><span class="na">style=</span><span class="s">"text-align:center;"</span><span class="nt">&gt;</span> <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"MsoNormal"</span> <span class="na">style=</span><span class="s">"text-align:center;"</span><span class="nt">&gt;</span>
<span class="w"> </span><span class="nt">&lt;span</span><span class="w"> </span><span class="na">lang=</span><span class="s">"EN-US"</span><span class="w"> </span><span class="na">style=</span><span class="s">"background:white;font-family:Arial, sans-serif;font-size:10pt;"</span><span class="nt">&gt;</span>Expect<span class="w"> </span>us<span class="nt">&lt;/span&gt;</span>! <span class="nt">&lt;span</span> <span class="na">lang=</span><span class="s">"EN-US"</span> <span class="na">style=</span><span class="s">"background:white;font-family:Arial, sans-serif;font-size:10pt;"</span><span class="nt">&gt;</span>Expect us<span class="nt">&lt;/span&gt;</span>!
<span class="w"> </span><span class="nt">&lt;/div&gt;</span> <span class="nt">&lt;/div&gt;</span>
<span class="w"> </span><span class="nt">&lt;div</span><span class="w"> </span><span class="na">class=</span><span class="s">"MsoNormal"</span><span class="w"> </span><span class="na">style=</span><span class="s">"text-align:center;"</span><span class="nt">&gt;</span> <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"MsoNormal"</span> <span class="na">style=</span><span class="s">"text-align:center;"</span><span class="nt">&gt;</span>
<span class="w"> </span><span class="nt">&lt;/div&gt;</span> <span class="nt">&lt;/div&gt;</span>
<span class="w"> </span><span class="nt">&lt;div</span><span class="w"> </span><span class="na">class=</span><span class="s">"MsoNormal"</span><span class="nt">&gt;</span> <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"MsoNormal"</span><span class="nt">&gt;</span>
<span class="w"> </span><span class="nt">&lt;/div&gt;</span> <span class="nt">&lt;/div&gt;</span>
<span class="w"> </span><span class="nt">&lt;p&gt;</span> <span class="nt">&lt;p&gt;</span>
<span class="w"> </span><span class="nt">&lt;div</span><span class="w"> </span><span class="na">class=</span><span class="s">"MsoNormal"</span><span class="w"> </span><span class="na">style=</span><span class="s">"text-align:center;"</span><span class="nt">&gt;</span> <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"MsoNormal"</span> <span class="na">style=</span><span class="s">"text-align:center;"</span><span class="nt">&gt;</span>
<span class="w"> </span><span class="nt">&lt;span</span><span class="w"> </span><span class="na">lang=</span><span class="s">"EN-US"</span><span class="nt">&gt;</span><span class="w">                                                                                                        </span>Gabriele<span class="w"> </span>Corso<span class="nt">&lt;/span&gt;</span> <span class="nt">&lt;span</span> <span class="na">lang=</span><span class="s">"EN-US"</span><span class="nt">&gt;</span>                                                                                                        Gabriele Corso<span class="nt">&lt;/span&gt;</span>
<span class="w"> </span><span class="nt">&lt;/div&gt;</span> <span class="nt">&lt;/div&gt;</span>
</pre></div> </pre>
</div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -44,7 +44,7 @@
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -58,7 +58,8 @@
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<p>La BPC, Belgian Privacy Commision, il 31 marzo ha pubblicato un <a href="http://www.law.kuleuven.be/icri/en/news/item/facebooks-revised-policies-and-terms-v1-2.pdf">documento</a> investigativo sulle policy di Facebook e da questa indagine e` emersa una violazione delle leggi europee sul <a href="http://rt.com/news/245769-facebook-spies-eu-laws/">tracciamento online</a>.</p> <div>
<p>La BPC, Belgian Privacy Commision, il 31 marzo ha pubblicato un <a href="http://www.law.kuleuven.be/icri/en/news/item/facebooks-revised-policies-and-terms-v1-2.pdf">documento</a> investigativo sulle policy di Facebook e da questa indagine e` emersa una violazione delle leggi europee sul <a href="http://rt.com/news/245769-facebook-spies-eu-laws/">tracciamento online</a>.</p>
<p>Ogni volta che un utente non loggato, o perfino senza account sul social network, visita una pagina che incorpora il bottone “like” o altri plugin sociali riceve un piccolo file di testo chiamato <a href="https://www.facebook.com/help/cookies">cookie</a> che incorpora una miriade di informazioni e la propria attivita` online in toto. Anche se si ha scelto per lopt out un particolare cookie chiamato <a href="http://www.zdnet.com/article/facebook-tracking-cookie-returns-according-to-hacker/">datr</a> contenente un ID unico viene scaricato e mantenuto nella cache del browser identificando il computer dellutente in maniera indistinguibile.<br> <p>Ogni volta che un utente non loggato, o perfino senza account sul social network, visita una pagina che incorpora il bottone “like” o altri plugin sociali riceve un piccolo file di testo chiamato <a href="https://www.facebook.com/help/cookies">cookie</a> che incorpora una miriade di informazioni e la propria attivita` online in toto. Anche se si ha scelto per lopt out un particolare cookie chiamato <a href="http://www.zdnet.com/article/facebook-tracking-cookie-returns-according-to-hacker/">datr</a> contenente un ID unico viene scaricato e mantenuto nella cache del browser identificando il computer dellutente in maniera indistinguibile.<br>
Per quale motivo Facebook usa questo sistema di tracciamento?</p> Per quale motivo Facebook usa questo sistema di tracciamento?</p>
<div class="separator" style="clear:both;text-align:center;"> <div class="separator" style="clear:both;text-align:center;">
@ -93,6 +94,7 @@ In questo modo ed attraverso i cookie Facebook riesce a riunire la maggior parte
<div style="text-align:right;"> <div style="text-align:right;">
Francesco Mecca Francesco Mecca
</div>
</div> </div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -45,7 +45,7 @@ Un normale cittadino inglese in due sole occasioni puo` ascoltare la frase: “s
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -59,7 +59,8 @@ Un normale cittadino inglese in due sole occasioni puo` ascoltare la frase: “s
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<div class="separator" style="clear: both; text-align: center;"> <div>
<div class="separator" style="clear: both; text-align: center;">
</div> </div>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center"> <table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
@ -139,6 +140,7 @@ Estimates of the current size of the body of federal criminal law vary. It has b
<div style="text-align: right;"> <div style="text-align: right;">
<span style="font-family: Arial, Helvetica, sans-serif;">Francesco Mecca </span> <span style="font-family: Arial, Helvetica, sans-serif;">Francesco Mecca </span>
</div> </div>
</div>
</div> </div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -36,7 +36,7 @@
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -50,7 +50,8 @@
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<p>Tra i molti siti illegali del Deep Web uno molto popolare che si occupa di molte attività illegali, dalla vendita di carte di credito rubate all hacking di personal computer e server, è HackBB che nel 2013 fu soggetto a uno dei pù grossi furti mai avvenuti in rete da parte di un suo amministratore chiamato Boneless.</p> <div>
<p>Tra i molti siti illegali del Deep Web uno molto popolare che si occupa di molte attività illegali, dalla vendita di carte di credito rubate all hacking di personal computer e server, è HackBB che nel 2013 fu soggetto a uno dei pù grossi furti mai avvenuti in rete da parte di un suo amministratore chiamato Boneless.</p>
<div class="separator" style="clear:both;text-align:center;"> <div class="separator" style="clear:both;text-align:center;">
</div> </div>
@ -73,6 +74,7 @@ Secondo alcuni amministartori del sito, tra cui OptimusCrime, Boneless vendette
<p>fonti[<a href="http://www.dailydot.com/crime/deep-web-boneless-optimuscrime-hackbb-credit-card-fraud/">dailydot.com</a>]</p> <p>fonti[<a href="http://www.dailydot.com/crime/deep-web-boneless-optimuscrime-hackbb-credit-card-fraud/">dailydot.com</a>]</p>
<p>Eugenio Corso </p> <p>Eugenio Corso </p>
<div> <div>
</div>
</div> </div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -46,7 +46,7 @@
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -60,7 +60,8 @@
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<div class="MsoNormal" style="text-align:center;"> <div>
<div class="MsoNormal" style="text-align:center;">
</div> </div>
<div class="MsoNormal" style="text-align:center;"> <div class="MsoNormal" style="text-align:center;">
@ -166,6 +167,7 @@
<div style="text-align:right;"> <div style="text-align:right;">
<span style="font-family:Calibri, sans-serif;font-size:11pt;">Gabriele Corso </span> <span style="font-family:Calibri, sans-serif;font-size:11pt;">Gabriele Corso </span>
</div>
</div> </div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -37,7 +37,7 @@ Lattacco avviene attr">
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -51,7 +51,8 @@ Lattacco avviene attr">
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<p>Lo scorso febbraio 4 ricercatori della Columbia University hanno ideato un attacco <a href="https://en.wikipedia.org/wiki/Side-channel_attack">side channel</a> in grado di penetrare la cache dei processori intel piu` recenti di qualsiasi OS.<br> <div>
<p>Lo scorso febbraio 4 ricercatori della Columbia University hanno ideato un attacco <a href="https://en.wikipedia.org/wiki/Side-channel_attack">side channel</a> in grado di penetrare la cache dei processori intel piu` recenti di qualsiasi OS.<br>
Lattacco avviene attraverso luso di codice Javascript e analizza la cache di terzo livello del processore. Il pdf tecnico e` disponibile a questo <a href="http://arxiv.org/abs/1502.07373">indirizzo</a>.</p> Lattacco avviene attraverso luso di codice Javascript e analizza la cache di terzo livello del processore. Il pdf tecnico e` disponibile a questo <a href="http://arxiv.org/abs/1502.07373">indirizzo</a>.</p>
<p>Di seguito una breve spiegazione dellattacco.<br> <p>Di seguito una breve spiegazione dellattacco.<br>
Attacco side channel: i dati vengono estratti da fenomeni fisici correlati al funzionamento del terminale: ritardi nella risposta, consumo della cpu,voltaggio e altro se misurati in maniera molto precisa e in correlazione ad eventi esterni permettono di capire che informazioni stava processando la CPU.</p> Attacco side channel: i dati vengono estratti da fenomeni fisici correlati al funzionamento del terminale: ritardi nella risposta, consumo della cpu,voltaggio e altro se misurati in maniera molto precisa e in correlazione ad eventi esterni permettono di capire che informazioni stava processando la CPU.</p>
@ -69,6 +70,7 @@ Lattacco avviene attraverso luso di codice Javascript e analizza la cache
<div style="text-align:right;"> <div style="text-align:right;">
Francesco Mecca Francesco Mecca
</div> </div>
</div>
</div> </div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -36,7 +36,7 @@
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -50,7 +50,8 @@
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<p><span style="font-family:inherit;">Questo blog non puo<code>essere &lt;a href="http://www.greatfirewallofchina.org/index.php?siteurl=caught-in-thenet.blogspot.it" rel="nofollow" target="_blank"&gt;visualizzato&lt;/a&gt; in Cina.&lt;br /&gt;A partire dal 1993 mentre molti altri Stati si occupavano delle leggi sul cyber crimine il CCP (Chinese Communist Party) ha dato inizio ad una delle piu</code> grandi operazioni di censura moderna mai messa in atto: il Grande Firewall Cinese. </span> </p> <div>
<p><span style="font-family:inherit;">Questo blog non puo<code>essere &lt;a href="http://www.greatfirewallofchina.org/index.php?siteurl=caught-in-thenet.blogspot.it" rel="nofollow" target="_blank"&gt;visualizzato&lt;/a&gt; in Cina.&lt;br /&gt;A partire dal 1993 mentre molti altri Stati si occupavano delle leggi sul cyber crimine il CCP (Chinese Communist Party) ha dato inizio ad una delle piu</code> grandi operazioni di censura moderna mai messa in atto: il Grande Firewall Cinese. </span> </p>
<div style="text-align:center;"> <div style="text-align:center;">
<blockquote class="tr_bq"> <blockquote class="tr_bq">
<span style="font-family:inherit;">“If you open the window for fresh air, you have to expect some flies to blow in.”</span> <span style="font-family:inherit;">“If you open the window for fresh air, you have to expect some flies to blow in.”</span>
@ -98,23 +99,26 @@
In moltissimi Stati europei molti siti vengono bloccati (talvolta con un semplice <a href="https://en.wikipedia.org/wiki/DNS_spoofing" target="_blank">DNS poisoning</a>) e quindi il cittadino in molti casi non e`consapevole che non puo` accedere ad una risorsa, oppure sceglie di adottare tecniche per circumnavigare il blocco. <br> <br><span style="font-family:inherit;">In Cina invece quando lo Stato oltre che alla censura sceglie di adoperare contromisure oppressive nei confronti dei “fuorilegge” si crea un il Panopticon di Michael Foucault: ogni comportamente viene misurato dal punto di vista del “sospettabile” e da questo ne scaturisce la normalizzazione dellindividuo.</span><span style="font-family:inherit;"><br>Judy Blume in uno dei suoi discorsi piu` celebri riguardo la censura e il mondo giovanile afferma:<i> </i></span><br></p> In moltissimi Stati europei molti siti vengono bloccati (talvolta con un semplice <a href="https://en.wikipedia.org/wiki/DNS_spoofing" target="_blank">DNS poisoning</a>) e quindi il cittadino in molti casi non e`consapevole che non puo` accedere ad una risorsa, oppure sceglie di adottare tecniche per circumnavigare il blocco. <br> <br><span style="font-family:inherit;">In Cina invece quando lo Stato oltre che alla censura sceglie di adoperare contromisure oppressive nei confronti dei “fuorilegge” si crea un il Panopticon di Michael Foucault: ogni comportamente viene misurato dal punto di vista del “sospettabile” e da questo ne scaturisce la normalizzazione dellindividuo.</span><span style="font-family:inherit;"><br>Judy Blume in uno dei suoi discorsi piu` celebri riguardo la censura e il mondo giovanile afferma:<i> </i></span><br></p>
<blockquote class="tr_bq"> <blockquote class="tr_bq">
<span style="font-family:inherit;"><i>  <span style="font-style:normal;">“Non sono solo i libri bruciati ora che mi preoccupano. Sono i libri che non saranno mai scritti. i libri che non saranno mai letti. E tutto questo per la paura della censura”</span></i></span> <span style="font-family:inherit;"><i>  <span style="font-style:normal;">“Non sono solo i libri bruciati ora che mi preoccupano. Sono i libri che non saranno mai scritti. i libri che non saranno mai letti. E tutto questo per la paura della censura”</span></i></span>
</blockquote> </blockquote>
<p></p>
<div style="line-height:100%;margin-bottom:0;"> <div style="line-height:100%;margin-bottom:0;">
<p> <p>
<i><span style="font-family:inherit;">Viviamo <span style="font-family:inherit;">in un periodo di <span style="font-family:inherit;">forte e radicale cam<span style="font-family:inherit;">biamento, questo notevole avanzamento tecnologico non solo fornisce al <span style="font-family:inherit;">censore tutti gli strumenti per per<span style="font-family:inherit;">petuare la sua tirannia, ma con<span style="font-family:inherit;">ce<span style="font-family:inherit;">de anche all<span style="font-family:inherit;">u<span style="font-family:inherit;">omo gli strumenti per liberars<span style="font-family:inherit;">e<span style="font-family:inherit;">ne e far volare libere le idee e i pensieri.</span></span></span></span></span></span></span></span></span></span></span></span></i></p> <i><span style="font-family:inherit;">Viviamo <span style="font-family:inherit;">in un periodo di <span style="font-family:inherit;">forte e radicale cam<span style="font-family:inherit;">biamento, questo notevole avanzamento tecnologico non solo fornisce al <span style="font-family:inherit;">censore tutti gli strumenti per per<span style="font-family:inherit;">petuare la sua tirannia, ma con<span style="font-family:inherit;">ce<span style="font-family:inherit;">de anche all<span style="font-family:inherit;">u<span style="font-family:inherit;">omo gli strumenti per liberars<span style="font-family:inherit;">e<span style="font-family:inherit;">ne e far volare libere le idee e i pensieri.</span></span></span></span></span></span></span></span></span></span></span></span></i></p>
</div> </div>
<pre class="code literal-block"><span></span> <span class="nt">&lt;div</span> <span class="na">style=</span><span class="s">"line-height:100%;margin-bottom:0;"</span><span class="nt">&gt;</span>
<span class="nt">&lt;/div&gt;</span>
<div class="code"><pre class="code literal-block"><span class="w"> </span><span class="nt">&lt;div</span><span class="w"> </span><span class="na">style=</span><span class="s">"line-height:100%;margin-bottom:0;"</span><span class="nt">&gt;</span> <span class="nt">&lt;div</span> <span class="na">style=</span><span class="s">"line-height:100%;margin-bottom:0;text-align:right;"</span><span class="nt">&gt;</span>
<span class="w"> </span><span class="nt">&lt;/div&gt;</span> <span class="nt">&lt;span</span> <span class="na">style=</span><span class="s">"font-family:inherit;"</span><span class="nt">&gt;&lt;span</span> <span class="na">style=</span><span class="s">"font-style:normal;"</span><span class="nt">&gt;</span>Francesco Mecca <span class="nt">&lt;/span&gt;&lt;/span&gt;</span>
<span class="nt">&lt;/div&gt;</span>
<span class="w"> </span><span class="nt">&lt;div</span><span class="w"> </span><span class="na">style=</span><span class="s">"line-height:100%;margin-bottom:0;text-align:right;"</span><span class="nt">&gt;</span> <span class="nt">&lt;p&gt;</span>
<span class="w"> </span><span class="nt">&lt;span</span><span class="w"> </span><span class="na">style=</span><span class="s">"font-family:inherit;"</span><span class="nt">&gt;&lt;span</span><span class="w"> </span><span class="na">style=</span><span class="s">"font-style:normal;"</span><span class="nt">&gt;</span>Francesco<span class="w"> </span>Mecca<span class="w"> </span><span class="nt">&lt;/span&gt;&lt;/span&gt;</span> <span class="nt">&lt;span</span> <span class="na">style=</span><span class="s">"font-family:inherit;"</span><span class="nt">&gt;</span> <span class="nt">&lt;/span&gt;</span>
<span class="w"> </span><span class="nt">&lt;/div&gt;</span> <span class="nt">&lt;/p&gt;</span>
</pre>
<span class="w"> </span><span class="nt">&lt;p&gt;</span> </div>
<span class="w"> </span><span class="nt">&lt;span</span><span class="w"> </span><span class="na">style=</span><span class="s">"font-family:inherit;"</span><span class="nt">&gt;</span><span class="w"> </span><span class="nt">&lt;/span&gt;</span>
<span class="w"> </span><span class="nt">&lt;/p&gt;</span>
</pre></div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -47,7 +47,7 @@
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -61,7 +61,8 @@
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<p><span style="font-family: inherit;">Salve a tutti,</span></p> <div>
<p><span style="font-family: inherit;">Salve a tutti,</span></p>
<div style="line-height: 100%; margin-bottom: 0;"> <div style="line-height: 100%; margin-bottom: 0;">
<span style="font-family: inherit;">siamo tre studenti della facolta` di ingegneria del Politecnico di Torino ed abbiamo aperto questo blog come strumento di giudizio per il corso di </span><a href="http://rivoluzionedigitale.polito.it/" target="_blank" rel="nofollow"><span style="font-family: inherit;">Rivoluzione Digitale</span></a><span style="font-family: inherit;">.</span><br><span style="font-family: inherit;"><br></span> <span style="font-family: inherit;">siamo tre studenti della facolta` di ingegneria del Politecnico di Torino ed abbiamo aperto questo blog come strumento di giudizio per il corso di </span><a href="http://rivoluzionedigitale.polito.it/" target="_blank" rel="nofollow"><span style="font-family: inherit;">Rivoluzione Digitale</span></a><span style="font-family: inherit;">.</span><br><span style="font-family: inherit;"><br></span>
</div> </div>
@ -106,6 +107,7 @@
<p> </p> <p> </p>
<div style="line-height: 100%; margin-bottom: 0;" align="RIGHT"> <div style="line-height: 100%; margin-bottom: 0;" align="RIGHT">
<span style="font-family: inherit;">Francesco Mecca, Eugenio Corso, Gabriele Corso</span> <span style="font-family: inherit;">Francesco Mecca, Eugenio Corso, Gabriele Corso</span>
</div>
</div> </div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -43,7 +43,7 @@ Lattenzione di Huang si e` concentr">
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -57,7 +57,8 @@ Lattenzione di Huang si e` concentr">
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<p>“Perche` sto puntando tutto sul deep learning? Perche sara` il nuovo Big Bang”</p> <div>
<p>“Perche` sto puntando tutto sul deep learning? Perche sara` il nuovo Big Bang”</p>
<p>Cosi` ha parlato il CEO di Nvidia Jensen Huang il 3 marzo scorso alla sua <a href="http://www.gputechconf.com/">GTC 2015</a>.<br> <p>Cosi` ha parlato il CEO di Nvidia Jensen Huang il 3 marzo scorso alla sua <a href="http://www.gputechconf.com/">GTC 2015</a>.<br>
Lattenzione di Huang si e` concentrata sul deep learning e come le deep neural networks negli ultimi anni abbiano compiuto progressi impressionanti tali da superare il cervello umano nei test di analisi immagine.</p> Lattenzione di Huang si e` concentrata sul deep learning e come le deep neural networks negli ultimi anni abbiano compiuto progressi impressionanti tali da superare il cervello umano nei test di analisi immagine.</p>
<p>Molta della ricerca negli ultimi anni, in particolare dal 2012 ad oggi, si sta concentrando sul programmare algoritmi tali da consentire alle intelligenze artificiali di processare dati in maniera gerarchica e organizzata tramite lapprendimento progressivo dei livelli di rappresentazione.<br> <p>Molta della ricerca negli ultimi anni, in particolare dal 2012 ad oggi, si sta concentrando sul programmare algoritmi tali da consentire alle intelligenze artificiali di processare dati in maniera gerarchica e organizzata tramite lapprendimento progressivo dei livelli di rappresentazione.<br>
@ -102,6 +103,7 @@ I dati sono la risposta economica a: “Iscriviti, e gratis e lo sarà sempre
<p>La via di uscita sembra essere una sola, anche se poco desiderabile: <a href="http://en.wikipedia.org/wiki/Opt-out">lopt out</a> ovvero la rinuncia consapevole da parte dellutente al servizio.</p> <p>La via di uscita sembra essere una sola, anche se poco desiderabile: <a href="http://en.wikipedia.org/wiki/Opt-out">lopt out</a> ovvero la rinuncia consapevole da parte dellutente al servizio.</p>
<div style="text-align:right;"> <div style="text-align:right;">
Francesco Mecca Francesco Mecca
</div>
</div> </div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -36,7 +36,7 @@
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -50,7 +50,8 @@
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<div style="line-height:100%;margin-bottom:0;"> <div>
<div style="line-height:100%;margin-bottom:0;">
<span style="font-family:Arial, Helvetica, sans-serif;">Lo scorso 26 marzo 4 ricercatori della Ben Gurion University in Israele hanno sviluppato Bitwhisper, un inconsueto malware per PC che dimostra la possibilita` di penetrare macchine anche non connesse in rete.</span> <span style="font-family:Arial, Helvetica, sans-serif;">Lo scorso 26 marzo 4 ricercatori della Ben Gurion University in Israele hanno sviluppato Bitwhisper, un inconsueto malware per PC che dimostra la possibilita` di penetrare macchine anche non connesse in rete.</span>
</div> </div>
@ -121,6 +122,7 @@
<p><span style="font-family:Arial, Helvetica, sans-serif;"><br></span> </p> <p><span style="font-family:Arial, Helvetica, sans-serif;"><br></span> </p>
<div style="line-height:100%;margin-bottom:0;"> <div style="line-height:100%;margin-bottom:0;">
<span style="font-family:Arial, Helvetica, sans-serif;"><br></span> <span style="font-family:Arial, Helvetica, sans-serif;"><br></span>
</div>
</div> </div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -45,7 +45,7 @@ Richard aveva avuto un lungo viaggio in macchina alle spalle. Circa unora pri
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -59,7 +59,8 @@ Richard aveva avuto un lungo viaggio in macchina alle spalle. Circa unora pri
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<p>Articolo tradotto da <a href="http://motherboard.vice.com/read/the-operators">motherboard.vice.com</a><span id="goog_42434934"></span><span id="goog_42434935"></span></p> <div>
<p>Articolo tradotto da <a href="http://motherboard.vice.com/read/the-operators">motherboard.vice.com</a><span id="goog_42434934"></span><span id="goog_42434935"></span></p>
<p>Richard aveva avuto un lungo viaggio in macchina alle spalle. Circa unora prima, alle 05:30, la moglie Lisa aveva telefonato: </p> <p>Richard aveva avuto un lungo viaggio in macchina alle spalle. Circa unora prima, alle 05:30, la moglie Lisa aveva telefonato: </p>
<div> <div>
</div> </div>
@ -108,12 +109,15 @@ Richard aveva avuto un lungo viaggio in macchina alle spalle. Circa unora pri
<a href="http://francescomecca.eu/wp-content/uploads/2015/08/e8ff7-computer_keyboard.png" style="margin-left:1em;margin-right:1em;"><img border="0" src="http://francescomecca.eu/wp-content/uploads/2015/08/e8ff7-computer_keyboard.png"></a> <a href="http://francescomecca.eu/wp-content/uploads/2015/08/e8ff7-computer_keyboard.png" style="margin-left:1em;margin-right:1em;"><img border="0" src="http://francescomecca.eu/wp-content/uploads/2015/08/e8ff7-computer_keyboard.png"></a>
</div> </div>
<div style="text-align:center;"> <pre class="code literal-block"><span></span><span class="nt">&lt;div</span> <span class="na">style=</span><span class="s">"text-align:center;"</span><span class="nt">&gt;</span>
<span style="font-size:x-small;">immagine presa da <a href="http://en.wikipedia.org/wiki/Typing">wikipedia</a></span> <span class="nt">&lt;span</span> <span class="na">style=</span><span class="s">"font-size:x-small;"</span><span class="nt">&gt;</span>immagine presa da <span class="nt">&lt;a</span> <span class="na">href=</span><span class="s">"http://en.wikipedia.org/wiki/Typing"</span><span class="nt">&gt;</span>wikipedia<span class="nt">&lt;/a&gt;&lt;/span&gt;</span>
</div> <span class="nt">&lt;/div&gt;</span>
</div> </pre>
</div>
<p></p>
</div>
</div>
<div> <div>
</div> </div>
@ -680,6 +684,7 @@ Richard aveva avuto un lungo viaggio in macchina alle spalle. Circa unora pri
Gabriele Corso Gabriele Corso
</div> </div>
</div> </div> </div> </div> </div> </div> </div> </div>
</div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -40,7 +40,7 @@ Questa legge, intitolata RIPA, R">
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -54,7 +54,8 @@ Questa legge, intitolata RIPA, R">
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<p>Nel 2000, ben molto prima dello scandalo datagate, prima perfino dellattacco alle torri gemelle, il Parlamento inglese approvo` una legge sulla sorveglianza di massa.<br> <div>
<p>Nel 2000, ben molto prima dello scandalo datagate, prima perfino dellattacco alle torri gemelle, il Parlamento inglese approvo` una legge sulla sorveglianza di massa.<br>
Questa legge, intitolata <a href="https://en.wikipedia.org/wiki/Regulation_of_Investigatory_Powers_Act_2000">RIPA</a>, Regulation of Investigatory Powers Act, interviene su come il corpo di polizia puo` condurre le investigazioni telematiche. </p> Questa legge, intitolata <a href="https://en.wikipedia.org/wiki/Regulation_of_Investigatory_Powers_Act_2000">RIPA</a>, Regulation of Investigatory Powers Act, interviene su come il corpo di polizia puo` condurre le investigazioni telematiche. </p>
<p>Con questa legge viene permesso: </p> <p>Con questa legge viene permesso: </p>
<ul> <ul>
@ -103,6 +104,7 @@ Truecrypt permette di creare un volume crittografico che si presenta come un fil
<p><a href="http://caught-in-thenet.blogspot.it/2015/04/non-abbiamo-nulla-da-nascondere.html">Anche se non abbiamo nulla da nascondere</a></p> <p><a href="http://caught-in-thenet.blogspot.it/2015/04/non-abbiamo-nulla-da-nascondere.html">Anche se non abbiamo nulla da nascondere</a></p>
<div style="text-align:right;"> <div style="text-align:right;">
Francesco Mecca  Francesco Mecca 
</div>
</div> </div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -36,7 +36,7 @@
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -50,7 +50,8 @@
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float:right;margin-left:1em;text-align:right;"> <div>
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float:right;margin-left:1em;text-align:right;">
<tr> <tr>
<td style="text-align:center;"> <td style="text-align:center;">
<a href="http://francescomecca.eu/wp-content/uploads/2015/08/9bc25-cd_hirkwmaemr03.jpg" style="clear:right;margin-bottom:1em;margin-left:auto;margin-right:auto;"><img border="0" src="http://francescomecca.eu/wp-content/uploads/2015/08/9bc25-cd_hirkwmaemr03.jpg"></a> <a href="http://francescomecca.eu/wp-content/uploads/2015/08/9bc25-cd_hirkwmaemr03.jpg" style="clear:right;margin-bottom:1em;margin-left:auto;margin-right:auto;"><img border="0" src="http://francescomecca.eu/wp-content/uploads/2015/08/9bc25-cd_hirkwmaemr03.jpg"></a>
@ -65,6 +66,7 @@
Lopera si trova a Berlino.</p> Lopera si trova a Berlino.</p>
<div style="text-align:right;"> <div style="text-align:right;">
Francesco Mecca Francesco Mecca
</div>
</div> </div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -39,7 +39,7 @@ Google inc. sta progettando di dare ai suoi utenti android più controllo riguar
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -53,7 +53,8 @@ Google inc. sta progettando di dare ai suoi utenti android più controllo riguar
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<div style="text-align:center;"> <div>
<div style="text-align:center;">
articolo tradotto da <a href="http://www.bloomberg.com/news/articles/2015-05-07/google-said-ready-to-give-android-users-more-privacy-controls" target="_blank">bloomberg.com</a> articolo tradotto da <a href="http://www.bloomberg.com/news/articles/2015-05-07/google-said-ready-to-give-android-users-more-privacy-controls" target="_blank">bloomberg.com</a>
</div> </div>
@ -75,6 +76,7 @@ Google inc. sta progettando di dare ai suoi utenti android più controllo riguar
</div> </div>
<div> <div>
</div>
</div> </div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

File diff suppressed because one or more lines are too long

View file

@ -40,7 +40,7 @@ Presupponiamo che possiamo acceder">
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -54,7 +54,8 @@ Presupponiamo che possiamo acceder">
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<p>Quando ogni giorno ci connettiamo al web lo facciamo con dei presupposti di cui magari non siamo consapevoli, ma che sono alla base della nostra esperienza in rete. </p> <div>
<p>Quando ogni giorno ci connettiamo al web lo facciamo con dei presupposti di cui magari non siamo consapevoli, ma che sono alla base della nostra esperienza in rete. </p>
<p>Presupponiamo che possiamo accedere a qualsiasi sito web che desideriamo e che la velocita` a cui accediamo a questo sito web dipenda solamente da quanto paghiamo il nostro provider. Ogni servizio che noi usiamo nel web, che sia lo streaming di video da Youtube, lupload di foto su Flickr, linvio di piccoli messaggi di testo su qualche IRC e tanto altro, non puo` essere soggetto a discriminazioni da parte di chi fornisce la connessione. Questi sono i principi della Net Neutrality. </p> <p>Presupponiamo che possiamo accedere a qualsiasi sito web che desideriamo e che la velocita` a cui accediamo a questo sito web dipenda solamente da quanto paghiamo il nostro provider. Ogni servizio che noi usiamo nel web, che sia lo streaming di video da Youtube, lupload di foto su Flickr, linvio di piccoli messaggi di testo su qualche IRC e tanto altro, non puo` essere soggetto a discriminazioni da parte di chi fornisce la connessione. Questi sono i principi della Net Neutrality. </p>
<p>Il 26 febbraio scorso FCC (la Commissione Federale per le Comunicazioni negli Stati Uniti) ha riaffermato la validita` di queste regole che in precedenza gli ISP avevano provato ad abolire. Abolire come?</p> <p>Il 26 febbraio scorso FCC (la Commissione Federale per le Comunicazioni negli Stati Uniti) ha riaffermato la validita` di queste regole che in precedenza gli ISP avevano provato ad abolire. Abolire come?</p>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left:auto;margin-right:auto;text-align:center;"> <table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left:auto;margin-right:auto;text-align:center;">
@ -105,6 +106,7 @@ Alcuni <a href="https://trac.torproject.org/projects/tor/wiki/doc/GoodBadISPs" t
<p>Gli ISP potrebbero richiedere di connettersi obbligatoriamente attraverso i loro servizi senza la possibilita` di utilizzare un canale alternativo criptato: ogni protocollo che garantisce la nostra liberta` nel web (i2p, TOR, Freenet, ma anche semplicemente una VPN) non puo` operare senza le basi della network neutrality.</p> <p>Gli ISP potrebbero richiedere di connettersi obbligatoriamente attraverso i loro servizi senza la possibilita` di utilizzare un canale alternativo criptato: ogni protocollo che garantisce la nostra liberta` nel web (i2p, TOR, Freenet, ma anche semplicemente una VPN) non puo` operare senza le basi della network neutrality.</p>
<div style="text-align:right;"> <div style="text-align:right;">
Francesco Mecca Francesco Mecca
</div>
</div> </div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

File diff suppressed because one or more lines are too long

View file

@ -53,7 +53,7 @@
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -67,7 +67,8 @@
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<blockquote> <div>
<blockquote>
<p></p> <p></p>
<div style="text-align: left;"> <div style="text-align: left;">
<i>“When privacy is outlawed, only outlaws will have privacy”</i> <i>“When privacy is outlawed, only outlaws will have privacy”</i>
@ -180,6 +181,7 @@ Command successful.</pre>
<p style="text-align: right;"> <p style="text-align: right;">
Francesco Mecca Francesco Mecca
</p> </p>
</div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -43,7 +43,7 @@ Nel mare di Internet assis">
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -57,7 +57,8 @@ Nel mare di Internet assis">
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<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 lintroduzione del Web 2.0.</p> <div>
<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 lintroduzione del Web 2.0.</p>
<p>Nel mare di Internet assistiamo a due spiagge molto lontane che delimitano lo spazio della nostra attivita`: lanonimato e lidentita` virtuale (che ci identifica nel mondo reale).</p> <p>Nel mare di Internet assistiamo a due spiagge molto lontane che delimitano lo spazio della nostra attivita`: lanonimato e lidentita` 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> <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>
<h4><span style="font-size: large;"><span style="font-weight: normal;"> </span></span></h4> <h4><span style="font-size: large;"><span style="font-weight: normal;"> </span></span></h4>
@ -86,6 +87,7 @@ Nel mare di Internet assis">
<p style="text-align: right;"> <p style="text-align: right;">
Francesco Mecca Francesco Mecca
</p> </p>
</div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -39,7 +39,7 @@
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -53,7 +53,8 @@
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<p> </p> <div>
<p> </p>
<blockquote class="tr_bq"> <blockquote class="tr_bq">
<p> <p>
<span style="font-family: inherit;">Facebook per molti utenti è lunico sito visitato, tanto da essere per molti sinonimo e sostituto integrale di Internet. Qui le regole duso vengono decise unilateralmente, senza dibattito […] È un ambiente chiuso, controllato secondo criteri bizzarri e soprattutto insindacabili. Il parco pubblico è stato sostituito dal centro commerciale. E a<span style="font-family: inherit;">d</span> un miliardo e cento milioni di utenti questo va benissimo. </span><br><span style="font-family: inherit;"><br> I dati indicano che stiamo rinunciando progressivamente agli elementi tecnici fondamentali che hanno permesso lo sviluppo della Rete, sostituendoli con un ecosistema hardware e software progressivamente sempre più chiuso. La mia preoccupazione è che tutto questo non crea nativi digitali. Crea polli di batteria</span> <span style="font-family: inherit;">Facebook per molti utenti è lunico sito visitato, tanto da essere per molti sinonimo e sostituto integrale di Internet. Qui le regole duso vengono decise unilateralmente, senza dibattito […] È un ambiente chiuso, controllato secondo criteri bizzarri e soprattutto insindacabili. Il parco pubblico è stato sostituito dal centro commerciale. E a<span style="font-family: inherit;">d</span> un miliardo e cento milioni di utenti questo va benissimo. </span><br><span style="font-family: inherit;"><br> I dati indicano che stiamo rinunciando progressivamente agli elementi tecnici fondamentali che hanno permesso lo sviluppo della Rete, sostituendoli con un ecosistema hardware e software progressivamente sempre più chiuso. La mia preoccupazione è che tutto questo non crea nativi digitali. Crea polli di batteria</span>
@ -100,6 +101,7 @@
<p>La strada per la riduzione del divario digitale e la democratizzazione del web passa per le scuole e listruzione, forse uno dei pochi settori dove le istituzioni pubbliche hanno piu` potere della macchina del denaro della Silicon Valley.</p> <p>La strada per la riduzione del divario digitale e la democratizzazione del web passa per le scuole e listruzione, forse uno dei pochi settori dove le istituzioni pubbliche hanno piu` potere della macchina del denaro della Silicon Valley.</p>
<div style="text-align: right;"> <div style="text-align: right;">
Francesco Mecca Francesco Mecca
</div>
</div> </div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -39,7 +39,7 @@
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -53,7 +53,8 @@
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<div class="MsoNormal" style="text-align: justify;"> <div>
<div class="MsoNormal" style="text-align: justify;">
Un argomento sul quale si è discusso molto negli ultimi tempi è quello della crittografia dei dati, un ufficiale dellFBI ha testimoniato che lo scopo delle forze dellordine è quello di collaborare con una società tecnologica per prevenire la crittografia. Anche se le compagnie non dovrebbero mettere laccesso alla crittazione dei clienti prima di preoccupazioni per la sicurezza nazionale, perché la maggiore priorità del governo è quella di prevenire luso di tecnologie che proteggono ogni cosa che le persone fanno online. Il loro scopo non è quello di usare una “back door”, termine usato dagli esperti per descrivere punti di accesso integrati, ma quello di accedere ai contenuti dopo essere passati per un processo giudiziario. Un argomento sul quale si è discusso molto negli ultimi tempi è quello della crittografia dei dati, un ufficiale dellFBI ha testimoniato che lo scopo delle forze dellordine è quello di collaborare con una società tecnologica per prevenire la crittografia. Anche se le compagnie non dovrebbero mettere laccesso alla crittazione dei clienti prima di preoccupazioni per la sicurezza nazionale, perché la maggiore priorità del governo è quella di prevenire luso di tecnologie che proteggono ogni cosa che le persone fanno online. Il loro scopo non è quello di usare una “back door”, termine usato dagli esperti per descrivere punti di accesso integrati, ma quello di accedere ai contenuti dopo essere passati per un processo giudiziario.
</div> </div>
@ -118,6 +119,7 @@
<div class="MsoNormal" style="text-align: right;"> <div class="MsoNormal" style="text-align: right;">
Gabriele Corso Gabriele Corso
</div>
</div> </div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -40,7 +40,7 @@ Principalmente lo ">
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -54,7 +54,8 @@ Principalmente lo ">
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<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` laccesso universale a tutta la conoscenza.</p> <div>
<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` laccesso 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>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>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> <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>
@ -89,6 +90,7 @@ echo Complete.
</pre> </pre>
<p>Francesco Mecca </p> <p>Francesco Mecca </p>
</div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -36,7 +36,7 @@
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -50,7 +50,8 @@
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<p>Recentemente l<a href="http://bigstory.ap.org/article/4b3f220e33b64123a3909c60845da045/fbi-behind-mysterious-surveillance-aircraft-over-us-cities">Associated Press</a> ha dichiarato che sono stati avvistati numerosi aerei americani che volavano a bassa quota nei pressi di alcune città americane. Dopo averli tracciati si è scoperto che gli aerei erano in possesso dellFBI, che ne aveva menzionato ben 115 nel documento di bilancio federale del 2009.</p> <div>
<p>Recentemente l<a href="http://bigstory.ap.org/article/4b3f220e33b64123a3909c60845da045/fbi-behind-mysterious-surveillance-aircraft-over-us-cities">Associated Press</a> ha dichiarato che sono stati avvistati numerosi aerei americani che volavano a bassa quota nei pressi di alcune città americane. Dopo averli tracciati si è scoperto che gli aerei erano in possesso dellFBI, che ne aveva menzionato ben 115 nel documento di bilancio federale del 2009.</p>
<p>Per molti anni questi aerei avevano aiutato lFBI con le operazioni di sorveglianza al suolo, ora invece sono stati equipaggiati con telecamere hi-tech e dispositivi in grado di tracciare migliaia di telefoni e risalire ai propri possessori anche se non si stanno effettuando chiamate, anche se a quanto detto dallagenzia questultima tecnologia è usata raramente.</p> <p>Per molti anni questi aerei avevano aiutato lFBI con le operazioni di sorveglianza al suolo, ora invece sono stati equipaggiati con telecamere hi-tech e dispositivi in grado di tracciare migliaia di telefoni e risalire ai propri possessori anche se non si stanno effettuando chiamate, anche se a quanto detto dallagenzia questultima tecnologia è usata raramente.</p>
<p>Charles Grasseley, presidente della commissione Giustizia del Senato, ha detto: “E importante che le forze dellordine abbiano gli strumenti essenziali per rintracciare e catturare i criminali, ma quando unoperazione monitora anche i cittadini americani che non sono sospettati, dobbiamo essere sicuri di salvaguardare la libertà degli americani innocenti”.</p> <p>Charles Grasseley, presidente della commissione Giustizia del Senato, ha detto: “E importante che le forze dellordine abbiano gli strumenti essenziali per rintracciare e catturare i criminali, ma quando unoperazione monitora anche i cittadini americani che non sono sospettati, dobbiamo essere sicuri di salvaguardare la libertà degli americani innocenti”.</p>
<div class="separator" style="clear:both;text-align:center;"> <div class="separator" style="clear:both;text-align:center;">
@ -75,6 +76,7 @@ David Gomez, un ex agente dellFBI , ha detto che il velivolo di sorveglianza
</div> </div>
<div> <div>
</div>
</div> </div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -40,7 +40,7 @@
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -54,7 +54,8 @@
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<p><span style="font-family: inherit;">Il 25 giugno sono stato alla presentazione del master di primo livello in “<a href="http://nexacenter.org/2015/06/master-software-libero">Management del Software Libero</a>”, che si e` tenuto nella sala della palazzo della Regione Piemonte. </span></p> <div>
<p><span style="font-family: inherit;">Il 25 giugno sono stato alla presentazione del master di primo livello in “<a href="http://nexacenter.org/2015/06/master-software-libero">Management del Software Libero</a>”, che si e` tenuto nella sala della palazzo della Regione Piemonte. </span></p>
<p><span style="font-family: inherit;"><br> Non mento dicendo che a questo incontro ci sono andato principalmente per ascoltare il professor <a href="https://www.youtube.com/watch?v=gdsd2L_pqs4">Raffaele Meo</a> (che ha aiutato a curare parte del programma del master) e <a href="http://stallman.org/">Richard Stallman</a>. </span></p> <p><span style="font-family: inherit;"><br> Non mento dicendo che a questo incontro ci sono andato principalmente per ascoltare il professor <a href="https://www.youtube.com/watch?v=gdsd2L_pqs4">Raffaele Meo</a> (che ha aiutato a curare parte del programma del master) e <a href="http://stallman.org/">Richard Stallman</a>. </span></p>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center"> <table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tr> <tr>
@ -101,6 +102,7 @@
<p><span style="font-family: inherit;">Sono state indimenticabili le espressioni dei 2 relatori quando Stallman ha indossato la veste di <a href="https://stallman.org/cgi-bin/showpage.cgi?path=/saint.html&amp;term=saint&amp;type=norm&amp;case=0">Saint IGNUcius</a> e quando ha aperto lasta per un peluche di gnu, mascotte della FSF. </span></p> <p><span style="font-family: inherit;">Sono state indimenticabili le espressioni dei 2 relatori quando Stallman ha indossato la veste di <a href="https://stallman.org/cgi-bin/showpage.cgi?path=/saint.html&amp;term=saint&amp;type=norm&amp;case=0">Saint IGNUcius</a> e quando ha aperto lasta per un peluche di gnu, mascotte della FSF. </span></p>
<div style="text-align: right;"> <div style="text-align: right;">
<span style="font-family: inherit;">Francesco Mecca </span> <span style="font-family: inherit;">Francesco Mecca </span>
</div>
</div> </div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -40,7 +40,7 @@
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -54,7 +54,8 @@
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<p>Nel <a href="https://en.wikipedia.org/wiki/De_Arte_Combinatoria">De Arte Combinatoria</a> (1666) Leibniz afferma che tutta la logica del pensiero umano non sia altro che una combinazione di pensieri piu` piccoli che a loro volta possono essere frammentati in idee semplicissime e concatenabili.</p> <div>
<p>Nel <a href="https://en.wikipedia.org/wiki/De_Arte_Combinatoria">De Arte Combinatoria</a> (1666) Leibniz afferma che tutta la logica del pensiero umano non sia altro che una combinazione di pensieri piu` piccoli che a loro volta possono essere frammentati in idee semplicissime e concatenabili.</p>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center"> <table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tr> <tr>
<td style="text-align: center;"> <td style="text-align: center;">
@ -112,6 +113,7 @@
<p>Se si dovesse lavorare per creare un cervello “umano” in laboratorio si partirebbe proprio da questo, che e` un requisito necessario, che si potrebbe definire come molto piu` di una semplice “istruzione” che ci porta a dire: “io sono”, e delle volte dubitare anche di questo.</p> <p>Se si dovesse lavorare per creare un cervello “umano” in laboratorio si partirebbe proprio da questo, che e` un requisito necessario, che si potrebbe definire come molto piu` di una semplice “istruzione” che ci porta a dire: “io sono”, e delle volte dubitare anche di questo.</p>
<div style="text-align: right;"> <div style="text-align: right;">
Francesco Mecca Francesco Mecca
</div>
</div> </div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -40,7 +40,7 @@ La Rivoluzione Digitale ha toccato la societa` in tutti i suoi aspetti, e fra qu
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -54,7 +54,8 @@ La Rivoluzione Digitale ha toccato la societa` in tutti i suoi aspetti, e fra qu
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<h5><span style="font-size: large;">Premessa </span></h5> <div>
<h5><span style="font-size: large;">Premessa </span></h5>
<p>La Rivoluzione Digitale ha toccato la societa` in tutti i suoi aspetti, e fra questi ha anche minato le fondamenta di un settore, quello dellinformazione, alle fondamenta della nostra societa`.</p> <p>La Rivoluzione Digitale ha toccato la societa` in tutti i suoi aspetti, e fra questi ha anche minato le fondamenta di un settore, quello dellinformazione, alle fondamenta della nostra societa`.</p>
<p>La decentralizzazione delle fonti di informazione, che avviene attraverso i blog e le piattaforme online, la micro messaggistica istantanea e i tweet, i social media, ma piu` in generale tutti gli strumenti che Internet ci offre, hanno mutato radicalmente non solo il modo di fare giornalismo, ma il rapporto del cittadino digitale con linformazione cartacea e digitale.</p> <p>La decentralizzazione delle fonti di informazione, che avviene attraverso i blog e le piattaforme online, la micro messaggistica istantanea e i tweet, i social media, ma piu` in generale tutti gli strumenti che Internet ci offre, hanno mutato radicalmente non solo il modo di fare giornalismo, ma il rapporto del cittadino digitale con linformazione cartacea e digitale.</p>
<p>Per questo abbiamo posto 12 domande a <a href="https://twitter.com/cidigi">Carla De Girolamo</a>, vicecaporedattore di <a href="http://panorama.it/">Panorama</a>, basandoci sulle parole di <a href="http://blog.debiase.com/">Luca de Biase</a>, il quale <a href="https://www.youtube.com/watch?v=6al_1ELORXk">afferma</a> che nel mondo delleditoria la Rivoluzione Digitale e` stata una rivoluzione di tre nature: Francese, Copernica e Industriale.</p> <p>Per questo abbiamo posto 12 domande a <a href="https://twitter.com/cidigi">Carla De Girolamo</a>, vicecaporedattore di <a href="http://panorama.it/">Panorama</a>, basandoci sulle parole di <a href="http://blog.debiase.com/">Luca de Biase</a>, il quale <a href="https://www.youtube.com/watch?v=6al_1ELORXk">afferma</a> che nel mondo delleditoria la Rivoluzione Digitale e` stata una rivoluzione di tre nature: Francese, Copernica e Industriale.</p>
@ -77,7 +78,7 @@ La Rivoluzione Digitale ha toccato la societa` in tutti i suoi aspetti, e fra qu
<p><strong>2. Ogni giorno ricevete piu` visite dai dispositi mobili o dai computer o tradizionale cartaceo?</strong></p> <p><strong>2. Ogni giorno ricevete piu` visite dai dispositi mobili o dai computer o tradizionale cartaceo?</strong></p>
<p>Decisamente prevale il digitale. Mobile e fisso sono ormai quasi equivalenti, il mobile tra pochissimo prevarra`, dati i trend costanti di crescita.</p> <p>Decisamente prevale il digitale. Mobile e fisso sono ormai quasi equivalenti, il mobile tra pochissimo prevarra`, dati i trend costanti di crescita.</p>
<p>**</p> <p>**</p>
<p>** <strong>3. <a href="https://twitter.com/annamasera">Anna Masera</a> ci ha <a href="https://www.youtube.com/watch?v=TANsxwwGCjw" target="_blank" rel="nofollow">mostrato</a> che nonostante le regole del giornalismo siano rimaste le stesse, sono emersi nuovi ruoli, come ad esempio quello del social media manager. Che evoluzione ha subito il ruolo del giornalista?</strong></p> <p><strong> </strong>3. <a href="https://twitter.com/annamasera">Anna Masera</a> ci ha <a href="https://www.youtube.com/watch?v=TANsxwwGCjw" target="_blank" rel="nofollow">mostrato</a> che nonostante le regole del giornalismo siano rimaste le stesse, sono emersi nuovi ruoli, come ad esempio quello del social media manager. Che evoluzione ha subito il ruolo del giornalista?**</p>
<p>Per ora in Italia ci sono figure di giornalisti che si evolvono, e che integrano alle capacita` e competenze tradizionali altre funzioni. Quindi una persona che normalmente si occupava di “desk”, per il lavoro online deve anche diventare social media manager, photo editor, videomaker… Insomma si assommano più funzioni in una sola persona, e a mio avviso e` la parte migliore e più divertente del lavoro sul settore digitale.</p> <p>Per ora in Italia ci sono figure di giornalisti che si evolvono, e che integrano alle capacita` e competenze tradizionali altre funzioni. Quindi una persona che normalmente si occupava di “desk”, per il lavoro online deve anche diventare social media manager, photo editor, videomaker… Insomma si assommano più funzioni in una sola persona, e a mio avviso e` la parte migliore e più divertente del lavoro sul settore digitale.</p>
<p><strong>4. La Rivoluzione Digitale quali basi ha tolto al giornalismo? Quali ne ha create?</strong></p> <p><strong>4. La Rivoluzione Digitale quali basi ha tolto al giornalismo? Quali ne ha create?</strong></p>
<p>Il giornalismo di qualita` resta tale, anche sul digitale. Deve pero` necessariamente evolversi e, come detto, arricchirsi di nuove funzioni e nuove capacita`.</p> <p>Il giornalismo di qualita` resta tale, anche sul digitale. Deve pero` necessariamente evolversi e, come detto, arricchirsi di nuove funzioni e nuove capacita`.</p>
@ -103,13 +104,13 @@ La Rivoluzione Digitale ha toccato la societa` in tutti i suoi aspetti, e fra qu
<p><strong>8. I giornalisti di Panorama hanno delle linee guida per il comportamento da tenere online?</strong></p> <p><strong>8. I giornalisti di Panorama hanno delle linee guida per il comportamento da tenere online?</strong></p>
<p>Le linee guida sullaccuratezza e la serieta` dellinformazione e sul rispetto per i lettori non cambiano. Cambiano i modi di scrivere per il settore digitale rispetto al cartaceo.</p> <p>Le linee guida sullaccuratezza e la serieta` dellinformazione e sul rispetto per i lettori non cambiano. Cambiano i modi di scrivere per il settore digitale rispetto al cartaceo.</p>
<p>**</p> <p>**</p>
<p>** <strong>9. Come e` cambiato il rapporto interdipendente fra giornalisti ed utenti/lettori?</strong></p> <p><strong> </strong>9. Come e` cambiato il rapporto interdipendente fra giornalisti ed utenti/lettori?**</p>
<p>Grazie ai social media il rapporto e` molto più stretto e immediato. Non tutti i giornalisti purtroppo sono ancora pronti a cogliere questa opportunita`.</p> <p>Grazie ai social media il rapporto e` molto più stretto e immediato. Non tutti i giornalisti purtroppo sono ancora pronti a cogliere questa opportunita`.</p>
<p>**</p> <p>**</p>
<p>** <strong>10. Le regole del giornalismo sono davvero rimaste le stesse?</strong> </p> <p><strong> </strong>10. Le regole del giornalismo sono davvero rimaste le stesse?** </p>
<p>Assolutamente si`.</p> <p>Assolutamente si`.</p>
<p>**</p> <p>**</p>
<p>** <strong>11. Si puo` affermare che ora grazie ad Internet le 5 W alla base del giornalismo sono state passate ai cittadini?</strong></p> <p><strong> </strong>11. Si puo` affermare che ora grazie ad Internet le 5 W alla base del giornalismo sono state passate ai cittadini?**</p>
<p>No. I cittadini possono fare a loro volta informazione, ma difficilmente le 5W sono soddisfatte dagli articoli di un blog personale</p> <p>No. I cittadini possono fare a loro volta informazione, ma difficilmente le 5W sono soddisfatte dagli articoli di un blog personale</p>
<p><strong>12. Secondo Stefano Quintarelli con i nuovi social media il “fatto” si e` trasformato in</strong> </p> <p><strong>12. Secondo Stefano Quintarelli con i nuovi social media il “fatto” si e` trasformato in</strong> </p>
<p><strong>“opinione”, nel senso che il ruolo e l`importanza del primo ora e` stata oscurata dallimporsi del secondo. Quanto ce` di vero in questa frase?</strong></p> <p><strong>“opinione”, nel senso che il ruolo e l`importanza del primo ora e` stata oscurata dallimporsi del secondo. Quanto ce` di vero in questa frase?</strong></p>
@ -126,6 +127,7 @@ La Rivoluzione Digitale ha toccato la societa` in tutti i suoi aspetti, e fra qu
<div style="text-align: right;"> <div style="text-align: right;">
Francesco Mecca Francesco Mecca
</div>
</div> </div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -41,7 +41,7 @@ Con lavvento dellinformatizzazione e` notevolmente mutata la modalita` con
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -55,7 +55,8 @@ Con lavvento dellinformatizzazione e` notevolmente mutata la modalita` con
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<h5><span style="font-size: large;">Premessa</span></h5> <div>
<h5><span style="font-size: large;">Premessa</span></h5>
<p>Con lavvento dellinformatizzazione e` notevolmente mutata la modalita` con cui lavvocato svolge la propria professione; sinteticamente si puo` arrivare ad affermare che al di la` della partecipazione alle udienze e il ricevimento dei clienti, tutta lattivita` si puo` svolgere con il computer nel proprio studio, senza alzarsi dalla poltrona.</p> <p>Con lavvento dellinformatizzazione e` notevolmente mutata la modalita` con cui lavvocato svolge la propria professione; sinteticamente si puo` arrivare ad affermare che al di la` della partecipazione alle udienze e il ricevimento dei clienti, tutta lattivita` si puo` svolgere con il computer nel proprio studio, senza alzarsi dalla poltrona.</p>
<p>Per quanto mi riguarda vorrei premettere che io sono un avvocato dipendente di un ente pubblico (lINAIL) e pertanto unico mio cliente e` lIstituto che io difendo sia in ambito giudiziario (cause legali) che extragiudiziario (composizione bonaria delle liti).</p> <p>Per quanto mi riguarda vorrei premettere che io sono un avvocato dipendente di un ente pubblico (lINAIL) e pertanto unico mio cliente e` lIstituto che io difendo sia in ambito giudiziario (cause legali) che extragiudiziario (composizione bonaria delle liti).</p>
<p>Lavvento dellinformatica ha modificato il modo di lavorare nella sua globalita`, vediamo pertanto le singole fasi dellattivita`.</p> <p>Lavvento dellinformatica ha modificato il modo di lavorare nella sua globalita`, vediamo pertanto le singole fasi dellattivita`.</p>
@ -108,6 +109,7 @@ Con lavvento dellinformatizzazione e` notevolmente mutata la modalita` con
</div> </div>
<p>  </p> <p>  </p>
</div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -37,7 +37,7 @@ Ora il blog e` disponibile a questo indirizzo ed e` fisicamen">
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -51,11 +51,13 @@ Ora il blog e` disponibile a questo indirizzo ed e` fisicamen">
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<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> <div>
<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>Ora il blog e` disponibile a questo indirizzo ed e` fisicamente sul mio Raspberry PI che utilizza Raspbian + WordPress.</p>
<p> </p> <p> </p>
<p> </p> <p> </p>
<p>  </p> <p>  </p>
</div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -40,7 +40,7 @@
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -54,7 +54,8 @@
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<p><a href="http://www.mantellini.it/2015/08/26/state-al-riparo/" target="_blank" rel="http://www.mantellini.it/2015/08/26/state-al-riparo/"><img class="aligncenter wp-image-178 size-full" src="http://francescomecca.eu/wp-content/uploads/2015/08/Schermata-2015-08-26-alle-22.29.31.jpg" alt="" width="644" height="533" srcset="http://francescomecca.eu/wp-content/uploads/2015/08/Schermata-2015-08-26-alle-22.29.31-300x248.jpg 300w, http://francescomecca.eu/wp-content/uploads/2015/08/Schermata-2015-08-26-alle-22.29.31.jpg 644w" sizes="(max-width: 644px) 100vw, 644px"></a></p> <div>
<p><a href="http://www.mantellini.it/2015/08/26/state-al-riparo/" target="_blank" rel="http://www.mantellini.it/2015/08/26/state-al-riparo/"><img class="aligncenter wp-image-178 size-full" src="http://francescomecca.eu/wp-content/uploads/2015/08/Schermata-2015-08-26-alle-22.29.31.jpg" alt="" width="644" height="533" srcset="http://francescomecca.eu/wp-content/uploads/2015/08/Schermata-2015-08-26-alle-22.29.31-300x248.jpg 300w, http://francescomecca.eu/wp-content/uploads/2015/08/Schermata-2015-08-26-alle-22.29.31.jpg 644w" sizes="(max-width: 644px) 100vw, 644px"></a></p>
<p>Dura 56 secondi il video di Vester Lee Flanagan che testimonia lomicidio in prima persona di due giornalisti in Virginia durante un live broadcast televisivo. Durante linseguimento nel quale si e` tolto la vita Flanagan ha caricato su Twitter e Facebook il video delluccisione in prima persona.</p> <p>Dura 56 secondi il video di Vester Lee Flanagan che testimonia lomicidio in prima persona di due giornalisti in Virginia durante un live broadcast televisivo. Durante linseguimento nel quale si e` tolto la vita Flanagan ha caricato su Twitter e Facebook il video delluccisione in prima persona.</p>
<p>Twitter e Facebook hanno tempestivamente censurato il video e rimosso laccount dellomicida ed alcune emittenti televisive (come SkyTg24) hanno scelto allo stesso modo di non pubblicare il video in diretta.</p> <p>Twitter e Facebook hanno tempestivamente censurato il video e rimosso laccount dellomicida ed alcune emittenti televisive (come SkyTg24) hanno scelto allo stesso modo di non pubblicare il video in diretta.</p>
<h4>To publish or not to publish?</h4> <h4>To publish or not to publish?</h4>
@ -83,6 +84,7 @@
<p style="text-align: right;"> <p style="text-align: right;">
Francesco Mecca Francesco Mecca
</p> </p>
</div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -43,7 +43,7 @@ First of all the core distribution of Perl is included in ">
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -57,7 +57,8 @@ First of all the core distribution of Perl is included in ">
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<p>In this post I wish to explain a bit about Perl related ebuilds in Gentoo and how to update from perl-core to virtual/perl without conflicts.</p> <div>
<p>In this post I wish to explain a bit about Perl related ebuilds in Gentoo and how to update from perl-core to virtual/perl without conflicts.</p>
<p>First of all the core distribution of Perl is included in <a href="https://packages.gentoo.org/package/dev-lang/perl">dev-lang/Perl</a> along with <a href="http://perldoc.perl.org/index-modules-A.html">modules</a>.</p> <p>First of all the core distribution of Perl is included in <a href="https://packages.gentoo.org/package/dev-lang/perl">dev-lang/Perl</a> along with <a href="http://perldoc.perl.org/index-modules-A.html">modules</a>.</p>
<p>The <a href="https://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/perl-core/">perl-core category</a> in portage contains ebuilds for perl modules, some of which are included in the core perl distibution. The perl-core ebuilds overrides the perl-core modules such that you can update them without recompiling dev-lang/Perl.</p> <p>The <a href="https://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/perl-core/">perl-core category</a> in portage contains ebuilds for perl modules, some of which are included in the core perl distibution. The perl-core ebuilds overrides the perl-core modules such that you can update them without recompiling dev-lang/Perl.</p>
<p>Each perl-core module has a corrensponding virtual/perl-* package. The virtual category is used by portage when emerging to take into account that a module can be either provided by dev-lang/perl package or found in perl-core category.</p> <p>Each perl-core module has a corrensponding virtual/perl-* package. The virtual category is used by portage when emerging to take into account that a module can be either provided by dev-lang/perl package or found in perl-core category.</p>
@ -77,6 +78,7 @@ perl-cleaner --all</pre>
<p style="text-align: right;"> <p style="text-align: right;">
Francesco Mecca Francesco Mecca
</p> </p>
</div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -47,7 +47,7 @@
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -61,7 +61,8 @@
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<p style="text-align: left;"> <div>
<p style="text-align: left;">
The Buridans donkey is an illustration of a paradox regarding the philosophy of moral determinism and free will. The Buridans donkey is an illustration of a paradox regarding the philosophy of moral determinism and free will.
</p> </p>
@ -72,77 +73,82 @@
<p><a href="https://en.wikipedia.org/wiki/Buridan's_ass"><img class="aligncenter size-full wp-image-209" src="http://francescomecca.eu/wp-content/uploads/2015/09/Deliberations_of_Congress.jpg" alt="Deliberations_of_Congress" width="431" height="425" srcset="http://francescomecca.eu/wp-content/uploads/2015/09/Deliberations_of_Congress-300x296.jpg 300w, http://francescomecca.eu/wp-content/uploads/2015/09/Deliberations_of_Congress.jpg 431w" sizes="(max-width: 431px) 100vw, 431px"></a>I have decided to write a cli program that chooses for me when I cant make up my mind.</p> <p><a href="https://en.wikipedia.org/wiki/Buridan's_ass"><img class="aligncenter size-full wp-image-209" src="http://francescomecca.eu/wp-content/uploads/2015/09/Deliberations_of_Congress.jpg" alt="Deliberations_of_Congress" width="431" height="425" srcset="http://francescomecca.eu/wp-content/uploads/2015/09/Deliberations_of_Congress-300x296.jpg 300w, http://francescomecca.eu/wp-content/uploads/2015/09/Deliberations_of_Congress.jpg 431w" sizes="(max-width: 431px) 100vw, 431px"></a>I have decided to write a cli program that chooses for me when I cant make up my mind.</p>
<p>The program is written in C++ and when invoked along with two or more arguments it puts them in a vector and then changes the order randomly.</p> <p>The program is written in C++ and when invoked along with two or more arguments it puts them in a vector and then changes the order randomly.</p>
<p>.. code:: c</p> <p>.. code:: c</p>
<div class="code"><pre class="code literal-block"><span class="n">#include</span><span class="w"> </span><span class="o">&lt;</span><span class="n">iostream</span><span class="o">&gt;</span> <pre class="code literal-block"><span></span><span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
<span class="n">#include</span><span class="w"> </span><span class="o">&lt;</span><span class="n">vector</span><span class="o">&gt;</span> <span class="cp">#include</span> <span class="cpf">&lt;vector&gt;</span><span class="cp"></span>
<span class="n">#include</span><span class="w"> </span><span class="o">&lt;</span><span class="n">algorithm</span><span class="o">&gt;</span> <span class="cp">#include</span> <span class="cpf">&lt;algorithm&gt;</span><span class="cp"></span>
<span class="n">#include</span><span class="w"> </span><span class="o">&lt;</span><span class="n">random</span><span class="o">&gt;</span> <span class="cp">#include</span> <span class="cpf">&lt;random&gt;</span><span class="cp"></span>
<span class="n">#include</span><span class="w"> </span><span class="o">&lt;</span><span class="n">string</span><span class="o">&gt;</span> <span class="cp">#include</span> <span class="cpf">&lt;string&gt;</span><span class="cp"></span>
<span class="n">#include</span><span class="w"> </span><span class="o">&lt;</span><span class="n">sys</span><span class="o">/</span><span class="n">poll</span><span class="p">.</span><span class="n">h</span><span class="o">&gt;</span> <span class="cp">#include</span> <span class="cpf">&lt;sys/poll.h&gt;</span><span class="cp"></span>
<span class="k">using</span><span class="w"> </span><span class="n">namespace</span><span class="w"> </span><span class="n">std</span><span class="p">;</span> <span class="n">using</span> <span class="n">namespace</span> <span class="n">std</span><span class="p">;</span>
<span class="n">struct</span><span class="w"> </span><span class="n">pollfd</span><span class="w"> </span><span class="n">stdin_poll</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="err">{</span> <span class="kr">struct</span> <span class="n">pollfd</span> <span class="n">stdin_poll</span> <span class="o">=</span> <span class="p">{</span>
<span class="w"> </span><span class="p">.</span><span class="n">fd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fileno</span><span class="w"> </span><span class="p">(</span><span class="n">stdin</span><span class="p">),</span><span class="w"> </span><span class="p">.</span><span class="n">events</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">POLLIN</span> <span class="p">.</span><span class="n">fd</span> <span class="o">=</span> <span class="n">fileno</span> <span class="p">(</span><span class="n">stdin</span><span class="p">),</span> <span class="p">.</span><span class="n">events</span> <span class="o">=</span> <span class="n">POLLIN</span>
<span class="err">}</span><span class="p">;</span> <span class="p">};</span>
<span class="n">void</span><span class="w"> </span><span class="n">read_from_piped_input</span><span class="w"> </span><span class="p">(</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">string</span><span class="o">&gt;&amp;</span><span class="w"> </span><span class="n">lst</span><span class="p">)</span> <span class="kr">void</span> <span class="nf">read_from_piped_input</span> <span class="p">(</span><span class="n">vector</span><span class="o">&lt;</span><span class="kr">string</span><span class="o">&gt;&amp;</span> <span class="n">lst</span><span class="p">)</span>
<span class="err">{</span> <span class="p">{</span>
<span class="w"> </span><span class="n">string</span><span class="w"> </span><span class="n">x</span><span class="p">;</span> <span class="kr">string</span> <span class="n">x</span><span class="p">;</span>
<span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">getline</span><span class="w"> </span><span class="p">(</span><span class="n">cin</span><span class="p">,</span><span class="w"> </span><span class="n">x</span><span class="p">))</span><span class="w"> </span><span class="err">{</span> <span class="k">while</span> <span class="p">(</span><span class="n">getline</span> <span class="p">(</span><span class="n">cin</span><span class="p">,</span> <span class="n">x</span><span class="p">))</span> <span class="p">{</span>
<span class="w"> </span><span class="n">lst</span><span class="p">.</span><span class="n">push_back</span><span class="w"> </span><span class="p">(</span><span class="n">x</span><span class="p">);</span> <span class="n">lst</span><span class="p">.</span><span class="n">push_back</span> <span class="p">(</span><span class="n">x</span><span class="p">);</span>
<span class="w"> </span><span class="err">}</span> <span class="p">}</span>
<span class="err">}</span> <span class="p">}</span>
<span class="n">void</span><span class="w"> </span><span class="n">read_from_arguments</span><span class="w"> </span><span class="p">(</span><span class="n">const</span><span class="w"> </span><span class="nc">int</span><span class="o">&amp;</span><span class="w"> </span><span class="n">argc</span><span class="p">,</span><span class="w"> </span><span class="nc">char</span><span class="o">*</span><span class="w"> </span><span class="n">argv</span><span class="err">[]</span><span class="p">,</span><span class="w"> </span><span class="n">vector</span><span class="o">&lt;</span><span class="n">string</span><span class="o">&gt;&amp;</span><span class="w"> </span><span class="n">lst</span><span class="p">)</span> <span class="kr">void</span> <span class="nf">read_from_arguments</span> <span class="p">(</span><span class="kr">const</span> <span class="kr">int</span><span class="o">&amp;</span> <span class="n">argc</span><span class="p">,</span> <span class="kr">char</span><span class="o">*</span> <span class="n">argv</span><span class="p">[],</span> <span class="n">vector</span><span class="o">&lt;</span><span class="kr">string</span><span class="o">&gt;&amp;</span> <span class="n">lst</span><span class="p">)</span>
<span class="err">{</span> <span class="p">{</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">argc</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="err">{</span> <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
<span class="w"> </span><span class="n">cout</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="ss">"Usage: asino [string] [string] ..."</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">endl</span><span class="p">;</span> <span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">"Usage: asino [string] [string] ..."</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span><span class="p">;</span>
<span class="w"> </span><span class="k">exit</span><span class="p">;</span> <span class="n">exit</span><span class="p">;</span>
<span class="w"> </span><span class="err">}</span> <span class="p">}</span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">string</span><span class="o">&gt;::</span><span class="n">size_type</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">argc</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="err">{</span> <span class="k">for</span> <span class="p">(</span><span class="n">vector</span><span class="o">&lt;</span><span class="kr">string</span><span class="o">&gt;::</span><span class="n">size_type</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
<span class="w"> </span><span class="n">lst</span><span class="p">.</span><span class="n">push_back</span><span class="w"> </span><span class="p">(</span><span class="n">argv</span><span class="o">[</span><span class="n">i</span><span class="o">]</span><span class="p">);</span> <span class="n">lst</span><span class="p">.</span><span class="n">push_back</span> <span class="p">(</span><span class="n">argv</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
<span class="w"> </span><span class="err">}</span> <span class="p">}</span>
<span class="err">}</span> <span class="p">}</span>
<span class="nc">int</span><span class="w"> </span><span class="n">main</span><span class="w"> </span><span class="p">(</span><span class="nc">int</span><span class="w"> </span><span class="n">argc</span><span class="p">,</span><span class="w"> </span><span class="nc">char</span><span class="o">*</span><span class="w"> </span><span class="n">argv</span><span class="err">[]</span><span class="p">)</span> <span class="kr">int</span> <span class="nf">main</span> <span class="p">(</span><span class="kr">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kr">char</span><span class="o">*</span> <span class="n">argv</span><span class="p">[])</span>
<span class="err">{</span> <span class="p">{</span>
<span class="w"> </span><span class="n">vector</span><span class="o">&lt;</span><span class="n">string</span><span class="o">&gt;</span><span class="w"> </span><span class="n">lst</span><span class="p">;</span> <span class="n">vector</span><span class="o">&lt;</span><span class="kr">string</span><span class="o">&gt;</span> <span class="n">lst</span><span class="p">;</span>
<span class="w"> </span><span class="nc">int</span><span class="w"> </span><span class="n">poll_ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">poll</span><span class="w"> </span><span class="p">(</span><span class="o">&amp;</span><span class="n">stdin_poll</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span> <span class="kr">int</span> <span class="n">poll_ret</span> <span class="o">=</span> <span class="n">poll</span> <span class="p">(</span><span class="o">&amp;</span><span class="n">stdin_poll</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">poll_ret</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="err">{</span> <span class="k">if</span> <span class="p">(</span><span class="n">poll_ret</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="w"> </span><span class="n">read_from_piped_input</span><span class="w"> </span><span class="p">(</span><span class="n">lst</span><span class="p">);</span> <span class="n">read_from_piped_input</span> <span class="p">(</span><span class="n">lst</span><span class="p">);</span>
<span class="w"> </span><span class="err">}</span> <span class="p">}</span>
<span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="err">{</span> <span class="k">else</span> <span class="p">{</span>
<span class="w"> </span><span class="n">read_from_arguments</span><span class="w"> </span><span class="p">(</span><span class="n">argc</span><span class="p">,</span><span class="w"> </span><span class="n">argv</span><span class="p">,</span><span class="w"> </span><span class="n">lst</span><span class="p">);</span> <span class="n">read_from_arguments</span> <span class="p">(</span><span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">,</span> <span class="n">lst</span><span class="p">);</span>
<span class="w"> </span><span class="err">}</span> <span class="p">}</span>
<span class="w"> </span><span class="n">random_device</span><span class="w"> </span><span class="n">rd</span><span class="p">;</span> <span class="n">random_device</span> <span class="n">rd</span><span class="p">;</span>
<span class="w"> </span><span class="n">mt19937</span><span class="w"> </span><span class="n">m</span><span class="p">(</span><span class="n">rd</span><span class="p">());</span> <span class="n">mt19937</span> <span class="n">m</span><span class="p">(</span><span class="n">rd</span><span class="p">());</span>
<span class="w"> </span><span class="n">shuffle</span><span class="w"> </span><span class="p">(</span><span class="n">lst</span><span class="p">.</span><span class="k">begin</span><span class="w"> </span><span class="p">(),</span><span class="w"> </span><span class="n">lst</span><span class="p">.</span><span class="k">end</span><span class="w"> </span><span class="p">(),</span><span class="w"> </span><span class="n">m</span><span class="p">);</span> <span class="n">shuffle</span> <span class="p">(</span><span class="n">lst</span><span class="p">.</span><span class="nf">begin</span> <span class="p">(),</span> <span class="n">lst</span><span class="p">.</span><span class="nf">end</span> <span class="p">(),</span> <span class="n">m</span><span class="p">);</span>
<span class="kr">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="k">for</span> <span class="p">(</span><span class="n">vector</span><span class="o">&lt;</span><span class="kr">string</span><span class="o">&gt;::</span><span class="n">iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">lst</span><span class="p">.</span><span class="nf">begin</span> <span class="p">();</span> <span class="n">it</span> <span class="o">!=</span> <span class="n">lst</span><span class="p">.</span><span class="nf">end</span> <span class="p">();</span> <span class="o">++</span><span class="n">it</span><span class="p">)</span> <span class="p">{</span>
<span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">i</span><span class="o">++</span> <span class="o">&lt;&lt;</span> <span class="s">". "</span> <span class="o">&lt;&lt;</span> <span class="o">*</span><span class="n">it</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
</pre>
<span class="w"> </span><span class="nc">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">string</span><span class="o">&gt;::</span><span class="n">iterator</span><span class="w"> </span><span class="n">it</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">lst</span><span class="p">.</span><span class="k">begin</span><span class="w"> </span><span class="p">();</span><span class="w"> </span><span class="n">it</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">lst</span><span class="p">.</span><span class="k">end</span><span class="w"> </span><span class="p">();</span><span class="w"> </span><span class="o">++</span><span class="n">it</span><span class="p">)</span><span class="w"> </span><span class="err">{</span>
<span class="w"> </span><span class="n">cout</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="ss">". "</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="o">*</span><span class="n">it</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">endl</span><span class="p">;</span>
<span class="w"> </span><span class="err">}</span>
<span class="err">}</span>
</pre></div>
<p>I have used the <a href="http://en.cppreference.com/w/cpp/numeric/random/mersenne_twister_engine" target="_blank">Mersenne Twister PRNG</a> just to give it a try.</p> <p>I have used the <a href="http://en.cppreference.com/w/cpp/numeric/random/mersenne_twister_engine" target="_blank">Mersenne Twister PRNG</a> just to give it a try.</p>
<p style="text-align: left;"> <p style="text-align: left;">
One of the challenges was to read from stdin instead of arguments when the program is piped after another program in the shell: One of the challenges was to read from stdin instead of arguments when the program is piped after another program in the shell:
</p> </p>
<p>.. code:: sh</p> <p>.. code:: sh</p>
<div class="code"><pre class="code literal-block">ls /media/my_movies/ | buridan <pre class="code literal-block"><span></span>ls /media/my_movies/ | buridan
</pre></div> </pre>
<p>So I have used poll() that checks for a specified amount of time if the selected device (/dev/stdin in my case) can perform I/O operations; in my code:</p> <p>So I have used poll() that checks for a specified amount of time if the selected device (/dev/stdin in my case) can perform I/O operations; in my code:</p>
<p>.. code:: bash</p> <p>.. code:: bash</p>
<div class="code"><pre class="code literal-block">poll (&amp;stdin_poll, 1, 0) <pre class="code literal-block"><span></span>poll (&amp;stdin_poll, 1, 0)
</pre></div> </pre>
<p>I selected the POLLIN as event so poll() only checks if there is data to read, 1 as the number of items in the fds array, 0 milliseconds of timeout because when the program is invoked /dev/stdin may already contain input.</p> <p>I selected the POLLIN as event so poll() only checks if there is data to read, 1 as the number of items in the fds array, 0 milliseconds of timeout because when the program is invoked /dev/stdin may already contain input.</p>
<p>The program should be compiled this way:</p> <p>The program should be compiled this way:</p>
<p>.. code:: bash</p> <p>.. code:: bash</p>
<div class="code"><pre class="code literal-block">g++ -std=c++11 ./program.cpp -o output <pre class="code literal-block"><span></span>g++ -std=c++11 ./program.cpp -o output
</pre></div> </pre>
<p>You are free to reuse this little piece of code as you wish.</p> <p>You are free to reuse this little piece of code as you wish.</p>
<p>EDIT: 02-04-2016 <p>EDIT: 02-04-2016
@ -150,6 +156,7 @@ The original idea for the Buridan's donkey came from my mentor <a href="https://
<p style="text-align: right;"> <p style="text-align: right;">
Francesco Mecca Francesco Mecca
</p> </p>
</div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -43,7 +43,7 @@ Mi auguro che">
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -57,7 +57,8 @@ Mi auguro che">
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<p>Questo è il primo di una serie di post che hanno l'obbiettivo di fornire una breve e generale introduzione al mondo del machine learning e delle intelligenze artificiali più in generale. <div>
<p>Questo è il primo di una serie di post che hanno l'obbiettivo di fornire una breve e generale introduzione al mondo del machine learning e delle intelligenze artificiali più in generale.
Mi auguro che questa breve introduzione al mondo dell'apprendimento automatico sia una sorta di vaccino contro il sensazionalismo mediatico e la disinformazione che negli ultimi anni fanno da contorno al progresso in questo settore.</p> Mi auguro che questa breve introduzione al mondo dell'apprendimento automatico sia una sorta di vaccino contro il sensazionalismo mediatico e la disinformazione che negli ultimi anni fanno da contorno al progresso in questo settore.</p>
<h3>Non c'è risultato senza algoritmo</h3> <h3>Non c'è risultato senza algoritmo</h3>
<p>Nelle scienze informatiche un algoritmo è un insieme di istruzioni che partendo da uno stato iniziale (input) permette di arrivare ad uno stato finale (output) attraverso una serie di step logici. <p>Nelle scienze informatiche un algoritmo è un insieme di istruzioni che partendo da uno stato iniziale (input) permette di arrivare ad uno stato finale (output) attraverso una serie di step logici.
@ -73,34 +74,34 @@ Noi abbiamo questi dati:</p>
<table> <table>
<thead><tr> <thead><tr>
<th>PREZZO ORIGINALE</th> <th>PREZZO ORIGINALE</th>
<th style="text-align: center;">Km percorsi</th> <th align="center">Km percorsi</th>
<th style="text-align: center;">stato di usura</th> <th align="center">stato di usura</th>
<th style="text-align: right;">PREZZO FINALE</th> <th align="right">PREZZO FINALE</th>
</tr></thead> </tr></thead>
<tbody> <tbody>
<tr> <tr>
<td>50 000</td> <td>50 000</td>
<td style="text-align: center;">120 000</td> <td align="center">120 000</td>
<td style="text-align: center;">lieve</td> <td align="center">lieve</td>
<td style="text-align: right;">40 000</td> <td align="right">40 000</td>
</tr> </tr>
<tr> <tr>
<td>30 000</td> <td>30 000</td>
<td style="text-align: center;">150 000</td> <td align="center">150 000</td>
<td style="text-align: center;">notevole</td> <td align="center">notevole</td>
<td style="text-align: right;">8 000</td> <td align="right">8 000</td>
</tr> </tr>
<tr> <tr>
<td>20 000</td> <td>20 000</td>
<td style="text-align: center;">80 000</td> <td align="center">80 000</td>
<td style="text-align: center;">lieve</td> <td align="center">lieve</td>
<td style="text-align: right;">15 000</td> <td align="right">15 000</td>
</tr> </tr>
<tr> <tr>
<td>20 000</td> <td>20 000</td>
<td style="text-align: center;">120 000</td> <td align="center">120 000</td>
<td style="text-align: center;">notevole</td> <td align="center">notevole</td>
<td style="text-align: right;">...</td> <td align="right">...</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@ -115,29 +116,29 @@ Possiamo capire già da ora che nel caso ci fossero dati che "inquinano" il nost
<table> <table>
<thead><tr> <thead><tr>
<th>PREZZO ORIGINALE</th> <th>PREZZO ORIGINALE</th>
<th style="text-align: center;">Km percorsi</th> <th align="center">Km percorsi</th>
<th style="text-align: right;">stato di usura</th> <th align="right">stato di usura</th>
</tr></thead> </tr></thead>
<tbody> <tbody>
<tr> <tr>
<td>50 000</td> <td>50 000</td>
<td style="text-align: center;">120 000</td> <td align="center">120 000</td>
<td style="text-align: right;">lieve</td> <td align="right">lieve</td>
</tr> </tr>
<tr> <tr>
<td>30 000</td> <td>30 000</td>
<td style="text-align: center;">150 000</td> <td align="center">150 000</td>
<td style="text-align: right;">notevole</td> <td align="right">notevole</td>
</tr> </tr>
<tr> <tr>
<td>20 000</td> <td>20 000</td>
<td style="text-align: center;">80 000</td> <td align="center">80 000</td>
<td style="text-align: right;">lieve</td> <td align="right">lieve</td>
</tr> </tr>
<tr> <tr>
<td>20 000</td> <td>20 000</td>
<td style="text-align: center;">120 000</td> <td align="center">120 000</td>
<td style="text-align: right;">notevole</td> <td align="right">notevole</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@ -150,53 +151,54 @@ Nel caso della vendita dell'automobile, abbiamo un semplice problema con una sol
<p>Ovviamente ogni incognita nella nostra equazione influisce diversamente sul prezzo finale e quindi possiamo riscriverla come: <p>Ovviamente ogni incognita nella nostra equazione influisce diversamente sul prezzo finale e quindi possiamo riscriverla come:
<em>prezzo finale</em> = A <em><em>prezzo originale</em> + B </em><em>km percorsi</em> + C * stato di usura</p> <em>prezzo finale</em> = A <em><em>prezzo originale</em> + B </em><em>km percorsi</em> + C * stato di usura</p>
<p>Se pensiamo ad un algoritmo possiamo ragionare in questo modo:</p> <p>Se pensiamo ad un algoritmo possiamo ragionare in questo modo:</p>
<div class="code"><pre class="code literal-block"><span class="n">funzione</span><span class="o">:</span><span class="w"> </span><span class="n">calcola_prezzo_auto</span><span class="o">:</span> <pre class="code literal-block"><span></span><span class="n">funzione</span><span class="o">:</span> <span class="n">calcola_prezzo_auto</span><span class="o">:</span>
<span class="w"> </span><span class="n">parametri</span><span class="o">:</span><span class="w"> </span><span class="n">prezzo_originale</span><span class="o">,</span><span class="w"> </span><span class="n">km_percorsi</span><span class="o">,</span><span class="w"> </span><span class="n">stato_usura</span> <span class="n">parametri</span><span class="o">:</span> <span class="n">prezzo_originale</span><span class="o">,</span> <span class="n">km_percorsi</span><span class="o">,</span> <span class="n">stato_usura</span>
<span class="w"> </span><span class="n">variabili</span><span class="o">:</span><span class="w"> </span><span class="n">prezzo_finale</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span> <span class="n">variabili</span><span class="o">:</span> <span class="n">prezzo_finale</span> <span class="o">=</span> <span class="mi">0</span>
<span class="n">prezzo</span> <span class="n">finale</span> <span class="o">=</span> <span class="n">prezzo_originale</span> <span class="o">*</span> <span class="mf">0.804246</span>
<span class="n">prezzo</span> <span class="n">finale</span> <span class="o">=</span> <span class="n">prezzo_finale</span> <span class="o">+</span> <span class="n">km_percorsi</span> <span class="o">*</span> <span class="o">-</span><span class="mf">0.000125</span>
<span class="n">prezzo</span> <span class="n">finale</span> <span class="o">=</span> <span class="n">prezzo_finale</span> <span class="o">+</span> <span class="n">stato_usura</span> <span class="o">*</span> <span class="o">-</span><span class="mi">2500</span>
</pre>
<span class="w"> </span><span class="n">prezzo</span><span class="w"> </span><span class="n">finale</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">prezzo_originale</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">0.804246</span>
<span class="w"> </span><span class="n">prezzo</span><span class="w"> </span><span class="n">finale</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">prezzo_finale</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">km_percorsi</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="o">-</span><span class="mf">0.000125</span>
<span class="w"> </span><span class="n">prezzo</span><span class="w"> </span><span class="n">finale</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">prezzo_finale</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">stato_usura</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="o">-</span><span class="mi">2500</span>
</pre></div>
<p>I valori di quelle costanti, stabilite casualmente nell'esempio, sono chiamate <em>pesi</em> e servono a stimare il prezzo finale. <p>I valori di quelle costanti, stabilite casualmente nell'esempio, sono chiamate <em>pesi</em> e servono a stimare il prezzo finale.
Una volta stabiliti i pesi, il nostro algoritmo di supervised learning applica questi pesi ai dati originali e ne valuta l'errore:</p> Una volta stabiliti i pesi, il nostro algoritmo di supervised learning applica questi pesi ai dati originali e ne valuta l'errore:</p>
<table> <table>
<thead><tr> <thead><tr>
<th>PREZZO ORIGINALE</th> <th>PREZZO ORIGINALE</th>
<th style="text-align: center;">Km percorsi</th> <th align="center">Km percorsi</th>
<th style="text-align: center;">stato di usura</th> <th align="center">stato di usura</th>
<th style="text-align: center;">PREZZO FINALE</th> <th align="center">PREZZO FINALE</th>
<th style="text-align: right;">PREZZO STIMATO</th> <th align="right">PREZZO STIMATO</th>
</tr></thead> </tr></thead>
<tbody> <tbody>
<tr> <tr>
<td>50 000</td> <td>50 000</td>
<td style="text-align: center;">120 000</td> <td align="center">120 000</td>
<td style="text-align: center;">lieve</td> <td align="center">lieve</td>
<td style="text-align: center;">40 000</td> <td align="center">40 000</td>
<td style="text-align: right;">374888</td> <td align="right">374888</td>
</tr> </tr>
<tr> <tr>
<td>30 000</td> <td>30 000</td>
<td style="text-align: center;">150 000</td> <td align="center">150 000</td>
<td style="text-align: center;">notevole</td> <td align="center">notevole</td>
<td style="text-align: center;">8 000</td> <td align="center">8 000</td>
<td style="text-align: right;">16000</td> <td align="right">16000</td>
</tr> </tr>
<tr> <tr>
<td>20 000</td> <td>20 000</td>
<td style="text-align: center;">80 000</td> <td align="center">80 000</td>
<td style="text-align: center;">lieve</td> <td align="center">lieve</td>
<td style="text-align: center;">15 000</td> <td align="center">15 000</td>
<td style="text-align: right;">13492</td> <td align="right">13492</td>
</tr> </tr>
<tr> <tr>
<td>20 000</td> <td>20 000</td>
<td style="text-align: center;">120 000</td> <td align="center">120 000</td>
<td style="text-align: center;">notevole</td> <td align="center">notevole</td>
<td style="text-align: center;">...</td> <td align="center">...</td>
<td style="text-align: right;">10988</td> <td align="right">10988</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@ -207,36 +209,38 @@ Ci sono varie funzioni che stimano l'errore e permettono di correggere i pesi o
<p>Ora, come possiamo immaginare, il prezzo di un'auto ha molti fattori che si aggiungono a quelli elencati nell'esempio. <p>Ora, come possiamo immaginare, il prezzo di un'auto ha molti fattori che si aggiungono a quelli elencati nell'esempio.
Non solo, ma molti problemi non hanno una soluzione lineare, ovvero una soluzione che si può semplicemente esprimere attraverso una funzione che aggiunge e moltiplica i valori una sola volta.</p> Non solo, ma molti problemi non hanno una soluzione lineare, ovvero una soluzione che si può semplicemente esprimere attraverso una funzione che aggiunge e moltiplica i valori una sola volta.</p>
<p>Possiamo arricchire l'esempio dell'automobile immaginando di avere più set di pesi e di ripetere il procedimento più volte:</p> <p>Possiamo arricchire l'esempio dell'automobile immaginando di avere più set di pesi e di ripetere il procedimento più volte:</p>
<div class="code"><pre class="code literal-block"><span class="c">|</span><span class="nb">---------------------------------------------------</span><span class="c">|</span> <pre class="code literal-block"><span></span>|---------------------------------------------------|
<span class="c">| PREZZO_ORIG * peso A1 </span><span class="nb">-----</span><span class="nv">&gt;</span><span class="c"> |</span> | PREZZO_ORIG * peso A1 -----&gt; |
<span class="c">| KM_PERCORSI * peso B1 </span><span class="nb">-----</span><span class="nv">&gt;</span><span class="c"> |</span> | KM_PERCORSI * peso B1 -----&gt; |
<span class="c">| STATO_USURA * peso C1 </span><span class="nb">-----</span><span class="nv">&gt;</span><span class="c"> |</span> | STATO_USURA * peso C1 -----&gt; |
<span class="c">| PREZZO FINALE STIMATO 1|</span> | PREZZO FINALE STIMATO 1|
<span class="c">|</span><span class="nb">---------------------------------------------------</span><span class="c">|</span> |---------------------------------------------------|
<span class="c">| </span><span class="nb">--------------------------------------------------</span><span class="c">|</span> | --------------------------------------------------|
<span class="c">| PREZZO_ORIG * peso A2 </span><span class="nb">-----</span><span class="nv">&gt;</span><span class="c"> |</span> | PREZZO_ORIG * peso A2 -----&gt; |
<span class="c">| KM_PERCORSI * peso B2 </span><span class="nb">-----</span><span class="nv">&gt;</span><span class="c"> |</span> | KM_PERCORSI * peso B2 -----&gt; |
<span class="c">| STATO_USURA * peso C2 </span><span class="nb">-----</span><span class="nv">&gt;</span><span class="c"> |</span> | STATO_USURA * peso C2 -----&gt; |
<span class="c">| PREZZO FINALE STIMATO 2|</span> | PREZZO FINALE STIMATO 2|
<span class="c">|</span><span class="nb">---------------------------------------------------</span><span class="c">|</span> |---------------------------------------------------|
| --------------------------------------------------|
| PREZZO_ORIG * peso A3 -----&gt; |
| KM_PERCORSI * peso B3 -----&gt; |
| STATO_USURA * peso C3 -----&gt; |
| PREZZO FINALE STIMATO 3|
|---------------------------------------------------|
</pre>
<span class="c">| </span><span class="nb">--------------------------------------------------</span><span class="c">|</span>
<span class="c">| PREZZO_ORIG * peso A3 </span><span class="nb">-----</span><span class="nv">&gt;</span><span class="c"> |</span>
<span class="c">| KM_PERCORSI * peso B3 </span><span class="nb">-----</span><span class="nv">&gt;</span><span class="c"> |</span>
<span class="c">| STATO_USURA * peso C3 </span><span class="nb">-----</span><span class="nv">&gt;</span><span class="c"> |</span>
<span class="c">| PREZZO FINALE STIMATO 3|</span>
<span class="c">|</span><span class="nb">---------------------------------------------------</span><span class="c">|</span>
</pre></div>
<p>E ora immaginiamo di combinare ogni PREZZO FINALE STIMATO in un'ultimo risultato:</p> <p>E ora immaginiamo di combinare ogni PREZZO FINALE STIMATO in un'ultimo risultato:</p>
<div class="code"><pre class="code literal-block"><span class="c">| </span><span class="nb">--------------------------------------------------</span><span class="c">|</span> <pre class="code literal-block"><span></span>| --------------------------------------------------|
<span class="c">| PREZZO_1 * peso X </span><span class="nb">-----</span><span class="nv">&gt;</span><span class="c"> |</span> | PREZZO_1 * peso X -----&gt; |
<span class="c">| PREZZO_2 * peso Y </span><span class="nb">-----</span><span class="nv">&gt;</span><span class="c"> |</span> | PREZZO_2 * peso Y -----&gt; |
<span class="c">| PREZZO_3 * peso Z </span><span class="nb">-----</span><span class="nv">&gt;</span><span class="c"> |</span> | PREZZO_3 * peso Z -----&gt; |
<span class="c">| PREZZO FINALE DEF |</span> | PREZZO FINALE DEF |
<span class="c">|</span><span class="nb">---------------------------------------------------</span><span class="c">|</span> |---------------------------------------------------|
</pre></div> </pre>
<p>Questa é, seppur molto basica, una rete neurale. <p>Questa é, seppur molto basica, una rete neurale.
Proviamo a visualizzarla in un'immagine dove i box arancioni sono i nodi di input e i rossi sono i nodi "nascosti" e temporanei.</p> Proviamo a visualizzarla in un'immagine dove i box arancioni sono i nodi di input e i rossi sono i nodi "nascosti" e temporanei.</p>
@ -251,6 +255,7 @@ Proviamo a visualizzarla in un'immagine dove i box arancioni sono i nodi di inpu
</li> </li>
</ul> </ul>
<p>Nel prossimo <a href="../../../../../pescewanda/2016/11/11/machine-learning-PARTE2">post</a> cercherò di approfondire il concetto di rete neurale con degli esempi di applicazioni concrete.</p> <p>Nel prossimo <a href="../../../../../pescewanda/2016/11/11/machine-learning-PARTE2">post</a> cercherò di approfondire il concetto di rete neurale con degli esempi di applicazioni concrete.</p>
</div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -45,7 +45,7 @@ La rete ">
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -59,7 +59,8 @@ La rete ">
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<p>Nel precedente <a href="../../../../../pescewanda/2016/11/10/machine-learning-intro/">post</a> abbiamo preso in considerazione una rete neurale molto basica. <div>
<p>Nel precedente <a href="../../../../../pescewanda/2016/11/10/machine-learning-intro/">post</a> abbiamo preso in considerazione una rete neurale molto basica.
Proviamo ora ad approfondire il concetto aggiungendo una proprietà fondamentale, la memoria.</p> Proviamo ora ad approfondire il concetto aggiungendo una proprietà fondamentale, la memoria.</p>
<h3>Memoria e Stati</h3> <h3>Memoria e Stati</h3>
<p>La rete neurale che abbiamo modellato non ha alcun tipo di memoria. con gli stessi dati di input, l'output è (quasi certamente) lo stesso. <p>La rete neurale che abbiamo modellato non ha alcun tipo di memoria. con gli stessi dati di input, l'output è (quasi certamente) lo stesso.
@ -75,34 +76,39 @@ Abbiamo in questo modo una <em>recurrent neural network</em> (RNN) dove ogni sta
La RNN analizza carattere dopo carattere e costruisce un grande grafo dove collega ogni carattere al suo successivo. La RNN analizza carattere dopo carattere e costruisce un grande grafo dove collega ogni carattere al suo successivo.
Inizialmente l'output della nostra RNN non ha alcun valore: Inizialmente l'output della nostra RNN non ha alcun valore:
in questo esempio, abbiamo l'output di una RNN allenata attraverso Guerra e Pace:</p> in questo esempio, abbiamo l'output di una RNN allenata attraverso Guerra e Pace:</p>
<div class="code"><pre class="code literal-block"><span class="n">tyntd</span><span class="o">-</span><span class="n">iafhatawiaoihrdemot</span><span class="w"> </span><span class="n">lytdws</span><span class="w"> </span><span class="n">e</span><span class="w"> </span><span class="p">,</span><span class="n">tfti</span><span class="p">,</span><span class="w"> </span><span class="n">astai</span><span class="w"> </span><span class="n">f</span><span class="w"> </span><span class="n">ogoh</span><span class="w"> </span><span class="n">eoase</span><span class="w"> </span><span class="n">rrranbyne</span><span class="w"> </span><span class="p">'</span><span class="n">nhthnee</span><span class="w"> </span><span class="n">e</span><span class="w"> </span> <pre class="code literal-block"><span></span>tyntd-iafhatawiaoihrdemot lytdws e ,tfti, astai f ogoh eoase rrranbyne 'nhthnee e
<span class="n">plia</span><span class="w"> </span><span class="n">tklrgd</span><span class="w"> </span><span class="n">t</span><span class="w"> </span><span class="n">o</span><span class="w"> </span><span class="n">idoe</span><span class="w"> </span><span class="n">ns</span><span class="p">,</span><span class="n">smtt</span><span class="w"> </span><span class="n">h</span><span class="w"> </span><span class="n">ne</span><span class="w"> </span><span class="n">etie</span><span class="w"> </span><span class="n">h</span><span class="p">,</span><span class="n">hregtrs</span><span class="w"> </span><span class="n">nigtike</span><span class="p">,</span><span class="n">aoaenns</span><span class="w"> </span><span class="n">lngty</span> plia tklrgd t o idoe ns,smtt h ne etie h,hregtrs nigtike,aoaenns lngty
</pre></div> </pre>
<p>L'output prodotto dalla RNN, benchè non abbia nessun valore per un umano, viene analizzato dalla RNN per arricchire il grafo costituito inizialmente dai caratteri (e le loro relazioni) di Guerra e Pace. <p>L'output prodotto dalla RNN, benchè non abbia nessun valore per un umano, viene analizzato dalla RNN per arricchire il grafo costituito inizialmente dai caratteri (e le loro relazioni) di Guerra e Pace.
Questo procedimento continua all'infinito. Questo procedimento continua all'infinito.
Ogni volta che la RNN produce dell'output lo salva e lo riutilizza come input in maniera ricorsiva per generare nuovo output.</p> Ogni volta che la RNN produce dell'output lo salva e lo riutilizza come input in maniera ricorsiva per generare nuovo output.</p>
<p>Dopo 300 iterazioni abbiamo un output di questo tipo:</p> <p>Dopo 300 iterazioni abbiamo un output di questo tipo:</p>
<div class="code"><pre class="code literal-block">"Tmont thithey" fomesscerliund <pre class="code literal-block"><span></span>"Tmont thithey" fomesscerliund
Keushey. Thom here Keushey. Thom here
sheulke, anmerenith ol sivh I lalterthend Bleipile shuwy fil on aseterlome sheulke, anmerenith ol sivh I lalterthend Bleipile shuwy fil on aseterlome
coaniogennc Phe lism thond hon at. MeiDimorotion in ther thize." coaniogennc Phe lism thond hon at. MeiDimorotion in ther thize."
</pre></div> </pre>
<p>Dopo quasi mille:</p> <p>Dopo quasi mille:</p>
<div class="code"><pre class="code literal-block"><span class="nv">Aftair</span><span class="w"> </span><span class="nv">fall</span><span class="w"> </span><span class="nv">unsuch</span><span class="w"> </span><span class="nv">that</span><span class="w"> </span><span class="nv">the</span><span class="w"> </span><span class="nv">hall</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nv">Prince</span><span class="w"> </span><span class="nv">Velzonski</span><span class="err">'s that me of</span> <pre class="code literal-block"><span></span>Aftair fall unsuch that the hall for Prince Velzonski's that me of
<span class="err">her hearly, and behs to so arwage fiving were to it beloge, pavu say falling misfort </span> her hearly, and behs to so arwage fiving were to it beloge, pavu say falling misfort
<span class="err">how, and Gogition is so overelical and ofter.</span> how, and Gogition is so overelical and ofter.
</pre></div> </pre>
<p>Duemila:</p> <p>Duemila:</p>
<div class="code"><pre class="code literal-block"><span class="s2">"Why do what that day,"</span><span class="w"> </span><span class="nv">replied</span><span class="w"> </span><span class="nv">Natasha</span>,<span class="w"> </span><span class="nv">and</span><span class="w"> </span><span class="nv">wishing</span><span class="w"> </span><span class="nv">to</span><span class="w"> </span><span class="nv">himself</span><span class="w"> </span><span class="nv">the</span><span class="w"> </span><span class="nv">fact</span><span class="w"> </span><span class="nv">the</span> <pre class="code literal-block"><span></span>"Why do what that day," replied Natasha, and wishing to himself the fact the
<span class="nv">princess</span>,<span class="w"> </span><span class="nv">Princess</span><span class="w"> </span><span class="nv">Mary</span><span class="w"> </span><span class="nv">was</span><span class="w"> </span><span class="nv">easier</span>,<span class="w"> </span><span class="nv">fed</span><span class="w"> </span><span class="nv">in</span><span class="w"> </span><span class="nv">had</span><span class="w"> </span><span class="nv">oftened</span><span class="w"> </span><span class="nv">him</span>. princess, Princess Mary was easier, fed in had oftened him.
<span class="nv">Pierre</span><span class="w"> </span><span class="nv">aking</span><span class="w"> </span><span class="nv">his</span><span class="w"> </span><span class="nv">soul</span><span class="w"> </span><span class="nv">came</span><span class="w"> </span><span class="nv">to</span><span class="w"> </span><span class="nv">the</span><span class="w"> </span><span class="nv">packs</span><span class="w"> </span><span class="nv">and</span><span class="w"> </span><span class="nv">drove</span><span class="w"> </span><span class="nv">up</span><span class="w"> </span><span class="nv">his</span><span class="w"> </span><span class="nv">father</span><span class="o">-</span><span class="nv">in</span><span class="o">-</span><span class="nv">law</span><span class="w"> </span><span class="nv">women</span>. Pierre aking his soul came to the packs and drove up his father-in-law women.
</pre></div> </pre>
<p>Possiamo notare come l'output migliori visibilmente.</p> <p>Possiamo notare come l'output migliori visibilmente.</p>
<p>Nel prossimo post tratterò una variante di rete neurale utilizzata per classificare e riconoscere immagini.</p> <p>Nel prossimo post tratterò una variante di rete neurale utilizzata per classificare e riconoscere immagini.</p>
</div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -44,7 +44,7 @@ La tipologia di rete neurale utilizzata per questa applicazione è chiamata rete
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -58,7 +58,8 @@ La tipologia di rete neurale utilizzata per questa applicazione è chiamata rete
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<h3>Riconoscimento delle immagini</h3> <div>
<h3>Riconoscimento delle immagini</h3>
<p>Il machine learning viene utilizzato anche per il riconoscimento delle immagini. <p>Il machine learning viene utilizzato anche per il riconoscimento delle immagini.
La tipologia di rete neurale utilizzata per questa applicazione è chiamata rete neural a convoluzione ( <strong>convolutional neural networks</strong>), abbreviata CNN.</p> La tipologia di rete neurale utilizzata per questa applicazione è chiamata rete neural a convoluzione ( <strong>convolutional neural networks</strong>), abbreviata CNN.</p>
<p>Innanzitutto consideriamo che ogni immagine può essere codificata come una matrice di valori</p> <p>Innanzitutto consideriamo che ogni immagine può essere codificata come una matrice di valori</p>
@ -81,6 +82,7 @@ Questi pattern corrispondono alle caratteristiche proprie di un oggetto (quali p
<p>Questo procedimento a livello algoritmo si esplicita con una connessione completa fra tutti i nodi della rete neurale che possono poi restituire l'output (probabilità che l'immagine appartenga ad una determinata categoria).</p> <p>Questo procedimento a livello algoritmo si esplicita con una connessione completa fra tutti i nodi della rete neurale che possono poi restituire l'output (probabilità che l'immagine appartenga ad una determinata categoria).</p>
<h5>Fase di rinforzo</h5> <h5>Fase di rinforzo</h5>
<p>Durante il training é presente un'ultima fase (o strato), chiamato più propriamente <strong>loss layer</strong>. Questo strato provvede a dare un <strong>feedback</strong> alla rete neurale analizzando l'output in relazione ai dati di partenza (ovvero le immagini già categorizzate).</p> <p>Durante il training é presente un'ultima fase (o strato), chiamato più propriamente <strong>loss layer</strong>. Questo strato provvede a dare un <strong>feedback</strong> alla rete neurale analizzando l'output in relazione ai dati di partenza (ovvero le immagini già categorizzate).</p>
</div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -41,7 +41,7 @@ Do not buy your girlfriend or wife flowers in an attempt to make nice after you
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">

View file

@ -38,7 +38,7 @@
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -52,10 +52,12 @@
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<blockquote> <div>
<blockquote>
<p>My father used to tell us ridiculous false information all the time. The catch was if we could catch one out and prove him wrong he'd give us a dollar. As we got older it would got a little less outrageous, but we'd still get that dollar if we could prove it. Looking back it was a good way to get us to think for ourselves.</p> <p>My father used to tell us ridiculous false information all the time. The catch was if we could catch one out and prove him wrong he'd give us a dollar. As we got older it would got a little less outrageous, but we'd still get that dollar if we could prove it. Looking back it was a good way to get us to think for ourselves.</p>
</blockquote> </blockquote>
<p><a href="https://www.reddit.com/user/zedoriah">zedoria</a> on <a href="https://www.reddit.com/r/AskReddit/comments/u1ili/what_did_school_teach_you_that_was_blatantly/?ref=search_posts">reddit</a></p> <p><a href="https://www.reddit.com/user/zedoriah">zedoria</a> on <a href="https://www.reddit.com/r/AskReddit/comments/u1ili/what_did_school_teach_you_that_was_blatantly/?ref=search_posts">reddit</a></p>
</div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -41,7 +41,7 @@ So I switched to mpd">
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -55,7 +55,8 @@ So I switched to mpd">
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<p>For a long time I have been using Clementine music player on my workstation. Recently I reinstalled Gentoo on my desktop and I wanted to avoid installing QT libraries of any sort. <div>
<p>For a long time I have been using Clementine music player on my workstation. Recently I reinstalled Gentoo on my desktop and I wanted to avoid installing QT libraries of any sort.
So I switched to <a href="https://www.musicpd.org/">mpd</a> and I have fallen in love with it. It is very flexible, fast and enriched by a lot of community software. So I switched to <a href="https://www.musicpd.org/">mpd</a> and I have fallen in love with it. It is very flexible, fast and enriched by a lot of community software.
For some weeks I used mpc client as my primary client for mpd but I was not satisfied with it. Even though it is pretty minimal but packed with every feature mpd permits, the search feels uncomfortable because is case sensitive and need artist, album, etc. flags before any entry. For some weeks I used mpc client as my primary client for mpd but I was not satisfied with it. Even though it is pretty minimal but packed with every feature mpd permits, the search feels uncomfortable because is case sensitive and need artist, album, etc. flags before any entry.
This is why I have written kpd together with Francesco Gallà</p> This is why I have written kpd together with Francesco Gallà</p>
@ -69,12 +70,13 @@ Anyway in this post I want to explain bits of the code.</p>
<p>The main kpd file invoked when the command is run in the console is kpd.py <p>The main kpd file invoked when the command is run in the console is kpd.py
The most interesting part in this file IMHO is these lines:</p> The most interesting part in this file IMHO is these lines:</p>
<p>.. code:: python</p> <p>.. code:: python</p>
<div class="code"><pre class="code literal-block"><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">el</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="nl">argsOrder</span><span class="p">:</span> <pre class="code literal-block"><span></span> for el in argsOrder:
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">dictArgs</span><span class="o">[</span><span class="n">el</span><span class="o">]</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="k">False</span><span class="err">:</span> if dictArgs[el] != False:
<span class="w"> </span><span class="n">client</span><span class="p">.</span><span class="n">update_status</span><span class="w"> </span><span class="p">()</span> client.update_status ()
<span class="w"> </span><span class="n">methodToCall</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">getattr</span><span class="w"> </span><span class="p">(</span><span class="n">util</span><span class="p">,</span><span class="w"> </span><span class="n">el</span><span class="p">)</span> methodToCall = getattr (util, el)
<span class="w"> </span><span class="n">retUtil</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">methodToCall</span><span class="w"> </span><span class="p">(</span><span class="n">client</span><span class="p">,</span><span class="w"> </span><span class="n">dictArgs</span><span class="o">[</span><span class="n">el</span><span class="o">]</span><span class="p">,</span><span class="w"> </span><span class="n">searchRes</span><span class="p">)</span> retUtil = methodToCall (client, dictArgs[el], searchRes)
</pre></div> </pre>
<p>argsOrder is a list of the arguments on the command line in the order the user wrote them. <p>argsOrder is a list of the arguments on the command line in the order the user wrote them.
kpd uses a dictionary to store for every argument the corrispective string for the function that will be invoked using getattr. kpd uses a dictionary to store for every argument the corrispective string for the function that will be invoked using getattr.
@ -95,6 +97,7 @@ In this way the search lasts about 40 milliseconds on the same database that was
<p>This was really fun. It was our first hand on python project and the first real program we have written since we started learning programming at our university. <p>This was really fun. It was our first hand on python project and the first real program we have written since we started learning programming at our university.
I discovered that programming allows me to relax and that is really cool to have custom software for activities you do every day. I discovered that programming allows me to relax and that is really cool to have custom software for activities you do every day.
The source for our program is stored in my git <a href="http://francescomecca.eu:3000/pesceWanda/kpd">here</a> and you are free to modify it.</p> The source for our program is stored in my git <a href="http://francescomecca.eu:3000/pesceWanda/kpd">here</a> and you are free to modify it.</p>
</div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -42,7 +42,7 @@ In quelle righe Gavin attribuisce l'identità di Satoshi Nakamoto">
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -56,7 +56,8 @@ In quelle righe Gavin attribuisce l'identità di Satoshi Nakamoto">
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<p>Ieri mattina appena sveglio mi sono imbattuto in questo <a href="http://gavinandresen.ninja/satoshi">post</a> di Gavin Andresen, uno dei più importanti membri della Bitcoin Foundation. <div>
<p>Ieri mattina appena sveglio mi sono imbattuto in questo <a href="http://gavinandresen.ninja/satoshi">post</a> di Gavin Andresen, uno dei più importanti membri della Bitcoin Foundation.
In quelle righe Gavin attribuisce l'identità di Satoshi Nakamoto, il padre dei Bitcoin, a Craig Wright, un imprenditore australiano. In quelle righe Gavin attribuisce l'identità di Satoshi Nakamoto, il padre dei Bitcoin, a Craig Wright, un imprenditore australiano.
Sono stato subito scosso dall'articolo, dove si spiega:</p> Sono stato subito scosso dall'articolo, dove si spiega:</p>
<blockquote> <blockquote>
@ -64,7 +65,7 @@ Sono stato subito scosso dall'articolo, dove si spiega:</p>
</blockquote> </blockquote>
<p>Continuo la mia navigazione imbattendomi nei seguenti titoli di alcune testate italiane:</p> <p>Continuo la mia navigazione imbattendomi nei seguenti titoli di alcune testate italiane:</p>
<ul> <ul>
<li>Repubblica: <a href='http://www.repubblica.it/tecnologia/2016/05/02/news/l_imprenditore_australiano_craig_wright_sono_io_il_creatore_del_bitcoin_-138896449/?ref=HREC1-12"'>"Bitcoin: il creatore sono io", l'imprenditore australiano Craig Wright esce allo scoperto</a> <li>Repubblica: <a href="http://www.repubblica.it/tecnologia/2016/05/02/news/l_imprenditore_australiano_craig_wright_sono_io_il_creatore_del_bitcoin_-138896449/?ref=HREC1-12%22">"Bitcoin: il creatore sono io", l'imprenditore australiano Craig Wright esce allo scoperto</a>
</li> </li>
<li>La Stampa: <a href="http://www.lastampa.it/2016/05/02/economia/imprenditore-australiano-fa-coming-out-sono-linventore-del-bitcoin-l6G9XXHlFGXOavjRv4snQL/pagina.html">Imprenditore australiano fa coming out: sono linventore del Bitcoin</a> <li>La Stampa: <a href="http://www.lastampa.it/2016/05/02/economia/imprenditore-australiano-fa-coming-out-sono-linventore-del-bitcoin-l6G9XXHlFGXOavjRv4snQL/pagina.html">Imprenditore australiano fa coming out: sono linventore del Bitcoin</a>
</li> </li>
@ -113,7 +114,7 @@ Si legge:</p>
Questa firma: <code>MEUCIQDBKn1Uly8m0UyzETObUSL4wYdBfd4ejvtoQfVcNCIK4AIgZmMsXNQWHvo6KDd2Tu6euEl13VTC3ihl6XUlhcU+fM4=</code> non è altro che la versione esadecimale della <a href="https://blockchain.info/tx/828ef3b079f9c23829c56fe86e85b4a69d9e06e5b54ea597eef5fb3ffef509fe">transazione</a> che Satoshi ha fatto nel 2009. Questa firma: <code>MEUCIQDBKn1Uly8m0UyzETObUSL4wYdBfd4ejvtoQfVcNCIK4AIgZmMsXNQWHvo6KDd2Tu6euEl13VTC3ihl6XUlhcU+fM4=</code> non è altro che la versione esadecimale della <a href="https://blockchain.info/tx/828ef3b079f9c23829c56fe86e85b4a69d9e06e5b54ea597eef5fb3ffef509fe">transazione</a> che Satoshi ha fatto nel 2009.
Quella stringa (in base64) non è affatto una firma, bensì è un messaggio in chiaro: "Wright, it is not the same as if I sign Craig Wright, Satoshi.\n\n".</p> Quella stringa (in base64) non è affatto una firma, bensì è un messaggio in chiaro: "Wright, it is not the same as if I sign Craig Wright, Satoshi.\n\n".</p>
<hr> <hr>
<!--![Wright firma il genesis block](http://francescomecca.eu/wp-content/uploads/satosh.jpg)--><h2>wikiHow: how to claim you're Satoshi</h2> <!--<img alt="Wright firma il genesis block" src="http://francescomecca.eu/wp-content/uploads/satosh.jpg">--><h2>wikiHow: how to claim you're Satoshi</h2>
<p>Charlie Lee, il creatore dei Litecoin su medium ci ha dato una <a href="https://decentralize.today/satoshilite-1e2dad89a017#.xljsji88r">dimostrazione</a> semplice e concisa di come il vero Satoshi si sarebbe dovuto autenticare. <p>Charlie Lee, il creatore dei Litecoin su medium ci ha dato una <a href="https://decentralize.today/satoshilite-1e2dad89a017#.xljsji88r">dimostrazione</a> semplice e concisa di come il vero Satoshi si sarebbe dovuto autenticare.
Non abbiamo bisogno di colloqui privati, laptop nuovi di fabbrica e screenshot di script. Nei primi blocchi, i genesis blocks, rimangono registatrate un numero sufficiente di chiavi pubbliche appartenenti al creatore della blockchain. Non abbiamo bisogno di colloqui privati, laptop nuovi di fabbrica e screenshot di script. Nei primi blocchi, i genesis blocks, rimangono registatrate un numero sufficiente di chiavi pubbliche appartenenti al creatore della blockchain.
Chiunque dichiari di essere Satoshi deve poter firmare un messaggio utilizzando una di quelle chiavi. Questo è quello che il creatore dei Litecoin mostra in 4 righe. Chiunque dichiari di essere Satoshi deve poter firmare un messaggio utilizzando una di quelle chiavi. Questo è quello che il creatore dei Litecoin mostra in 4 righe.
@ -124,6 +125,7 @@ Ogni altra prova è discutibile e non necessaria.</p>
<p>Note: There was no download of a signature file of electrum (.asc file) from a UK IP on Apr 7th.</p> <p>Note: There was no download of a signature file of electrum (.asc file) from a UK IP on Apr 7th.</p>
</blockquote> </blockquote>
<p>Questo significa che il 7 Aprile, quando Wright ha mostrato a Gavin le sue chiavi utilizzando Electrum, nessuna delle due parti si è preoccupata di verificare che il client fosse autentico. Questo invalida ulteriormente tutte le affermazioni di Gavin.</p> <p>Questo significa che il 7 Aprile, quando Wright ha mostrato a Gavin le sue chiavi utilizzando Electrum, nessuna delle due parti si è preoccupata di verificare che il client fosse autentico. Questo invalida ulteriormente tutte le affermazioni di Gavin.</p>
</div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -38,7 +38,7 @@
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -52,7 +52,8 @@
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<p>Until one week ago my blog was hosted at my house, on a raspberrypi with debian + wordpress. I was not satisfied by my setup because given the minimal size of my blog and the really scarce content I post every now and then, a full LLMP stack was overblown. <div>
<p>Until one week ago my blog was hosted at my house, on a raspberrypi with debian + wordpress. I was not satisfied by my setup because given the minimal size of my blog and the really scarce content I post every now and then, a full LLMP stack was overblown.
I decided to change distribution (my server now runs <a href="http://www.voidlinux.eu/">Void</a>) and to migrate to a static blog without CMS nor PHP.</p> I decided to change distribution (my server now runs <a href="http://www.voidlinux.eu/">Void</a>) and to migrate to a static blog without CMS nor PHP.</p>
<h2>Welcome to Jekyll and Hyde</h2> <h2>Welcome to Jekyll and Hyde</h2>
<p>The process of migration was rather painless. <p>The process of migration was rather painless.
@ -72,22 +73,25 @@ When Jekyll builds a website it parses all the markdown files and stores them in
layout: page layout: page
title: Archive title: Archive
---</p> ---</p>
<div class="code"><pre class="code literal-block"><span class="x">## Blog Posts</span> <pre class="code literal-block"><span></span><span class="x">## Blog Posts</span>
<span class="cp">{%</span> <span class="k">for</span> <span class="nv">post</span> <span class="k">in</span> <span class="nv">site.posts</span> <span class="cp">%}</span> <span class="cp">{%</span> <span class="k">for</span> <span class="nv">post</span> <span class="k">in</span> <span class="nv">site.posts</span> <span class="cp">%}</span><span class="x"></span>
<span class="x"> * </span><span class="cp">{{</span> <span class="nv">post.date</span> <span class="o">|</span> <span class="nf">date_to_string</span> <span class="cp">}}</span><span class="x"> &amp;raquo; [ </span><span class="cp">{{</span> <span class="nv">post.title</span> <span class="cp">}}</span><span class="x"> ](</span><span class="cp">{{</span> <span class="nv">post.url</span> <span class="cp">}}</span><span class="x">)</span> <span class="x"> * </span><span class="cp">{{</span> <span class="nv">post.date</span> <span class="o">|</span> <span class="nf">date_to_string</span> <span class="cp">}}</span><span class="x"> &amp;raquo; [ </span><span class="cp">{{</span> <span class="nv">post.title</span> <span class="cp">}}</span><span class="x"> ](</span><span class="cp">{{</span> <span class="nv">post.url</span> <span class="cp">}}</span><span class="x">)</span>
<span class="cp">{%</span> <span class="k">endfor</span> <span class="cp">%}</span><span class="x">:wq</span> <span class="cp">{%</span> <span class="k">endfor</span> <span class="cp">%}</span><span class="x">:wq</span>
</pre></div> </pre>
<p>{% endraw %} <p>{% endraw %}
I noticed that in _includes/head.html there is this line:</p> I noticed that in _includes/head.html there is this line:</p>
<div class="code"><pre class="code literal-block"><span class="p">&lt;</span><span class="nx">link</span><span class="w"> </span><span class="nx">href</span><span class="p">=</span><span class="err">'</span><span class="nx">https</span><span class="p">:</span><span class="c1">//fonts.googleapis.com/css?family=Open+Sans:400,300,700,800,600' rel='stylesheet' type='text/css'</span> <pre class="code literal-block"><span></span>&lt;link href='https://fonts.googleapis.com/css?family=Open+Sans:400,300,700,800,600' rel='stylesheet' type='text/css'
</pre></div> </pre>
<p>so I proceed to remove it because is not needed for my blog. <p>so I proceed to remove it because is not needed for my blog.
Finally I put a link to the archive, my github page and the atom feed on the sidebar by simple adding a href on _includes/sidebar.html.</p> Finally I put a link to the archive, my github page and the atom feed on the sidebar by simple adding a href on _includes/sidebar.html.</p>
<p>I did not proceed with further modifications but there are tons of possibilities with jekyll. I think that the main advantages are the fact that you don't have to manage html code when writing a new post and that everything can be done via cli.</p> <p>I did not proceed with further modifications but there are tons of possibilities with jekyll. I think that the main advantages are the fact that you don't have to manage html code when writing a new post and that everything can be done via cli.</p>
<p>Francesco Mecca</p> <p>Francesco Mecca</p>
</div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -41,7 +41,7 @@ When I noted that python uses the Mersenne Twister PRNG as well I decided to">
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -55,24 +55,26 @@ When I noted that python uses the Mersenne Twister PRNG as well I decided to">
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<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>. <div>
<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's donkey program</a>.</p> 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's donkey program</a>.</p>
<p>.. code:: python</p> <p>.. code:: python</p>
<div class="code"><pre class="code literal-block"> <span class="kn">import</span> <span class="nn">random</span><span class="o">,</span> <span class="nn">sys</span> <pre class="code literal-block"><span></span> <span class="s s-Atom">import</span> <span class="s s-Atom">random</span><span class="p">,</span> <span class="s s-Atom">sys</span>
<span class="s s-Atom">if</span> <span class="k">__</span><span class="s s-Atom">name__</span> <span class="o">==</span> <span class="s s-Atom">'__main__':</span>
<span class="s s-Atom">args</span> <span class="o">=</span> <span class="nf">list</span><span class="p">()</span>
<span class="s s-Atom">if</span> <span class="o">not</span> <span class="s s-Atom">sys</span><span class="p">.</span><span class="s s-Atom">stdin</span><span class="p">.</span><span class="nf">isatty</span><span class="p">()</span><span class="s s-Atom">:</span>
<span class="s s-Atom">for</span> <span class="s s-Atom">line</span> <span class="s s-Atom">in</span> <span class="s s-Atom">sys</span><span class="p">.</span><span class="nn">stdin</span><span class="p">:</span>
<span class="s s-Atom">if</span> <span class="s s-Atom">line</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">is</span> <span class="s s-Atom">'\n':</span>
<span class="s s-Atom">line</span> <span class="o">=</span> <span class="s s-Atom">line</span><span class="p">[:-</span><span class="mi">1</span><span class="p">]</span>
<span class="s s-Atom">args</span><span class="p">.</span><span class="nf">append</span><span class="p">(</span><span class="s s-Atom">line</span><span class="p">)</span>
<span class="nn">else</span><span class="p">:</span>
<span class="s s-Atom">args</span> <span class="o">=</span> <span class="s s-Atom">sys</span><span class="p">.</span><span class="s s-Atom">argv</span><span class="p">[</span><span class="mi">1</span><span class="s s-Atom">:</span><span class="p">]</span>
<span class="s s-Atom">argRange</span> <span class="o">=</span> <span class="nf">len</span><span class="p">(</span><span class="s s-Atom">args</span><span class="p">)</span>
<span class="s s-Atom">for</span> <span class="s s-Atom">i</span> <span class="s s-Atom">in</span> <span class="nf">range</span><span class="p">(</span><span class="s s-Atom">argRange</span><span class="p">)</span><span class="s s-Atom">:</span>
<span class="nf">print</span><span class="p">(</span><span class="nf">str</span><span class="p">(</span><span class="s s-Atom">i</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="s s-Atom">'.'</span><span class="p">,</span> <span class="s s-Atom">args</span><span class="p">.</span><span class="nf">pop</span><span class="p">(</span><span class="s s-Atom">random</span><span class="p">.</span><span class="nf">randrange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nf">len</span><span class="p">(</span><span class="s s-Atom">args</span><span class="p">))))</span>
</pre>
<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s1">'__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="s1">'</span><span class="se">\n</span><span class="s1">'</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="nb">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="s1">'.'</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>
</pre></div>
<p>This script works in a different way than the one in c++. <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> 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>
@ -80,6 +82,7 @@ Rather than shuffling a list made by the entries in the arguments, it pops rando
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> 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>All the code is opensource and can be found on my github page.</p>
<p>Francesco Mecca</p> <p>Francesco Mecca</p>
</div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -42,7 +42,7 @@ In thi">
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -56,7 +56,8 @@ In thi">
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<p>This weekend I was in Milan to get a visa and I had the opportunity to work with a friend, Michele, on genetic algorithms. <div>
<p>This weekend I was in Milan to get a visa and I had the opportunity to work with a friend, Michele, on genetic algorithms.
It was the first time I dig up in such field and it was very exciting. It was the first time I dig up in such field and it was very exciting.
In this post I want to explain some bits of our work.</p> In this post I want to explain some bits of our work.</p>
<h3>A brief introduction to GA</h3> <h3>A brief introduction to GA</h3>
@ -83,41 +84,46 @@ The main components of a GA are:</p>
<p>Our program, that is available <a href="http://francescomecca.eu:3000/pesceWanda/interpol_genetica">here</a> uses a class to define the various members of the population and a string for the genes, a class as well for the points on the plane.</p> <p>Our program, that is available <a href="http://francescomecca.eu:3000/pesceWanda/interpol_genetica">here</a> uses a class to define the various members of the population and a string for the genes, a class as well for the points on the plane.</p>
<p>The fitness function is not as precise as it should be because this is only a proof of concept:</p> <p>The fitness function is not as precise as it should be because this is only a proof of concept:</p>
<p>.. code:: python</p> <p>.. code:: python</p>
<div class="code"><pre class="code literal-block"><span class="n">mutationProbability</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0.1</span> <pre class="code literal-block"><span></span>mutationProbability = 0.1
<span class="n">rangeLimit</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">5</span> rangeLimit = 5
<span class="n">def</span><span class="w"> </span><span class="n">fitness</span><span class="p">(</span><span class="n">item</span><span class="p">,</span><span class="w"> </span><span class="n">pointList</span><span class="p">,</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="err">:</span> def fitness(item, pointList, n):
<span class="w"> </span><span class="k">value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span> value = 0
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">p</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="nl">pointList</span><span class="p">:</span> for p in pointList:
<span class="w"> </span><span class="n">y</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span> y = 0
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="k">range</span><span class="p">(</span><span class="n">n</span><span class="p">)</span><span class="err">:</span> for i in range(n):
<span class="w"> </span><span class="n">y</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">item</span><span class="p">.</span><span class="n">gene</span><span class="o">[</span><span class="n">i</span><span class="o">]</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">pow</span><span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">x</span><span class="p">,</span><span class="w"> </span><span class="n">i</span><span class="p">)</span> y += item.gene[i] * pow(p.x, i)
<span class="w"> </span><span class="k">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="p">(</span><span class="nf">abs</span><span class="w"> </span><span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">y</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">y</span><span class="p">)</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">rangeLimit</span><span class="p">)</span> result = 1 - (abs (p.y - y) / rangeLimit)
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="k">result</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">0</span><span class="err">:</span> if result &lt; 0:
<span class="w"> </span><span class="k">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span> result = 0
<span class="w"> </span><span class="k">value</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="k">result</span> value += result
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">value</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">n</span> return value / n
</pre></div> </pre>
<p>item is just a member of the population, poinList is the list of points and n is the number of points (n - 1 is the grade of the function).</p> <p>item is just a member of the population, poinList is the list of points and n is the number of points (n - 1 is the grade of the function).</p>
<div class="code"><pre class="code literal-block"><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="k">range</span><span class="p">(</span><span class="n">n</span><span class="p">)</span><span class="err">:</span> <pre class="code literal-block"><span></span>for i in range(n):
<span class="w"> </span><span class="n">y</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">item</span><span class="p">.</span><span class="n">gene</span><span class="o">[</span><span class="n">i</span><span class="o">]</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">pow</span><span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">x</span><span class="p">,</span><span class="w"> </span><span class="n">i</span><span class="p">)</span> y += item.gene[i] * pow(p.x, i)
</pre></div> </pre>
<p>this piece of code gives us the value of the function encoded in the genes in the points of pointList;</p> <p>this piece of code gives us the value of the function encoded in the genes in the points of pointList;</p>
<div class="code"><pre class="code literal-block"><span class="nb">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="ss">(</span><span class="nv">abs</span><span class="w"> </span><span class="ss">(</span><span class="nv">p</span>.<span class="nv">y</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nv">y</span><span class="ss">)</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nv">rangeLimit</span><span class="ss">)</span> <pre class="code literal-block"><span></span>result = 1 - (abs (p.y - y) / rangeLimit)
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nb">result</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">0</span>: if result &lt; 0:
<span class="w"> </span><span class="nb">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span> result = 0
</pre></div> </pre>
<p>while here the script stores 1 - the previous result because if the GA has yield a good result there should be distance = 0 from the function evaluated and the points; If this is the case, the fitness function should attribute the highest possible reproduction probability for that member. <p>while here the script stores 1 - the previous result because if the GA has yield a good result there should be distance = 0 from the function evaluated and the points; If this is the case, the fitness function should attribute the highest possible reproduction probability for that member.
At the end the fitness function returns the total value over the number of points evaluated.</p> At the end the fitness function returns the total value over the number of points evaluated.</p>
<p>As you can see this fitness function is by no means an optimal one. The reproduction probability is higher for functions that crosses some points and are really distant from others rather than for functions that are closer to every point but crosses none. <p>As you can see this fitness function is by no means an optimal one. The reproduction probability is higher for functions that crosses some points and are really distant from others rather than for functions that are closer to every point but crosses none.
Anyway for simple cases the GA yields good results, as an example for points (0 0), (1 4), (2 9) one of the member with the highest reproduction probability has this function in its genes:</p> Anyway for simple cases the GA yields good results, as an example for points (0 0), (1 4), (2 9) one of the member with the highest reproduction probability has this function in its genes:</p>
<div class="code"><pre class="code literal-block">-0.0487839869993989 <span class="gs">* x^0 + 4.600339125358671 *</span> x^1 + -0.2780958075230644 * x^2 <pre class="code literal-block"><span></span>-0.0487839869993989 * x^0 + 4.600339125358671 * x^1 + -0.2780958075230644 * x^2
</pre></div> </pre>
<p>that crosses this points: (0 -0.0488), (1 4.2735), (2 8.0395) given 80 iterations, initial population of 600 members and a two digit approximation.</p> <p>that crosses this points: (0 -0.0488), (1 4.2735), (2 8.0395) given 80 iterations, initial population of 600 members and a two digit approximation.</p>
<p>For a more precise computation a higher population size and a really high number of iterations should be used.</p> <p>For a more precise computation a higher population size and a really high number of iterations should be used.</p>
</div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -41,7 +41,7 @@ Never buy high-end c">
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">

View file

@ -42,7 +42,7 @@ The key in Wright's">
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -56,14 +56,16 @@ The key in Wright's">
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<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. <div>
<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. I want to explain briefly how you could check this claim.
The key in Wright's <a href="http://www.drcraigwright.net/jean-paul-sartre-signing-significance/">post</a> is this:</p> The key in Wright's <a href="http://www.drcraigwright.net/jean-paul-sartre-signing-significance/">post</a> is this:</p>
<div class="code"><pre class="code literal-block"><span class="nb">-------------------------</span><span class="c"> Signature File </span><span class="nb">-------------------------</span> <pre class="code literal-block"><span></span>------------------------- Signature File -------------------------
<span class="c">MEUCIQDBKn1Uly8m0UyzETObUSL4wYdBfd4ejvtoQfVcNCIK4AIgZmMsXNQWHvo6KDd2Tu6euEl1</span> MEUCIQDBKn1Uly8m0UyzETObUSL4wYdBfd4ejvtoQfVcNCIK4AIgZmMsXNQWHvo6KDd2Tu6euEl1
<span class="c">3VTC3ihl6XUlhcU</span><span class="nb">+</span><span class="c">fM4=</span> 3VTC3ihl6XUlhcU+fM4=
<span class="nb">-------------------------</span><span class="c"> End Signature </span><span class="nb">--------------------------</span> ------------------------- End Signature --------------------------
</pre></div> </pre>
<p>Now we can use some bash utilities:</p> <p>Now we can use some bash utilities:</p>
<ul> <ul>
@ -72,10 +74,11 @@ The key in Wright's <a href="http://www.drcraigwright.net/jean-paul-sartre-signi
<li>cut, used to remove the binary part of 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> <li>tr, used to delete spaces and carriage return from the input;</li>
</ul> </ul>
<div class="code"><pre class="code literal-block">base64 -d &lt;&lt;&lt;'MEUCIQDBKn1Uly8m0UyzETObUSL4wYdBfd4ejvtoQfVcNCIK4AIgZmMsXNQWHvo6KDd2Tu6euEl13VTC3ihl6XUlhcU+fM4=' | hexdump -C| cut -b 11-60| tr -d ' \n' <pre class="code literal-block"><span></span>base64 -d &lt;&lt;&lt;'MEUCIQDBKn1Uly8m0UyzETObUSL4wYdBfd4ejvtoQfVcNCIK4AIgZmMsXNQWHvo6KDd2Tu6euEl13VTC3ihl6XUlhcU+fM4=' | hexdump -C| cut -b 11-60| tr -d ' \n'
3045022100c12a7d54972f26d14cb311339b5122f8c187417dde1e8efb6841f55c34220ae0022066632c5cd4161efa3a2837764eee9eb84975dd54c2de2865e9752585c53e7cce 3045022100c12a7d54972f26d14cb311339b5122f8c187417dde1e8efb6841f55c34220ae0022066632c5cd4161efa3a2837764eee9eb84975dd54c2de2865e9752585c53e7cce
</pre></div> </pre>
<p>Let's analyze the command one by one:</p> <p>Let's analyze the command one by one:</p>
<ul> <ul>
@ -84,46 +87,52 @@ The key in Wright's <a href="http://www.drcraigwright.net/jean-paul-sartre-signi
<li> <li>
<code>hexdump -C</code> is used with a pipe to convert to hexadecimal:</li> <code>hexdump -C</code> is used with a pipe to convert to hexadecimal:</li>
</ul> </ul>
<div class="code"><pre class="code literal-block"><span class="mf">00000000</span><span class="w"> </span><span class="mf">30</span><span class="w"> </span><span class="mf">45</span><span class="w"> </span><span class="mf">02</span><span class="w"> </span><span class="mf">21</span><span class="w"> </span><span class="mf">00</span><span class="w"> </span><span class="n">c1</span><span class="w"> </span><span class="mf">2</span><span class="n">a</span><span class="w"> </span><span class="mf">7</span><span class="n">d</span><span class="w"> </span><span class="mf">54</span><span class="w"> </span><span class="mf">97</span><span class="w"> </span><span class="mf">2</span><span class="n">f</span><span class="w"> </span><span class="mf">26</span><span class="w"> </span><span class="n">d1</span><span class="w"> </span><span class="mf">4</span><span class="n">c</span><span class="w"> </span><span class="n">b3</span><span class="w"> </span><span class="mf">11</span><span class="w"> </span><span class="err">|</span><span class="mf">0</span><span class="n">E</span><span class="mf">.</span><span class="err">!</span><span class="mf">..</span><span class="o">*</span><span class="err">}</span><span class="n">T</span><span class="mf">.</span><span class="o">/</span><span class="err">&amp;</span><span class="mf">.</span><span class="n">L</span><span class="mf">..</span><span class="err">|</span> <pre class="code literal-block"><span></span>00000000 30 45 02 21 00 c1 2a 7d 54 97 2f 26 d1 4c b3 11 |0E.!..*}T./&amp;.L..|
<span class="mf">00000010</span><span class="w"> </span><span class="mf">33</span><span class="w"> </span><span class="mf">9</span><span class="n">b</span><span class="w"> </span><span class="mf">51</span><span class="w"> </span><span class="mf">22</span><span class="w"> </span><span class="n">f8</span><span class="w"> </span><span class="n">c1</span><span class="w"> </span><span class="mf">87</span><span class="w"> </span><span class="mf">41</span><span class="w"> </span><span class="mf">7</span><span class="n">d</span><span class="w"> </span><span class="n">de</span><span class="w"> </span><span class="mf">1</span><span class="n">e</span><span class="w"> </span><span class="mf">8</span><span class="n">e</span><span class="w"> </span><span class="n">fb</span><span class="w"> </span><span class="mf">68</span><span class="w"> </span><span class="mf">41</span><span class="w"> </span><span class="n">f5</span><span class="w"> </span><span class="err">|</span><span class="mf">3.</span><span class="n">Q</span><span class="s">"...A}....hA.|</span> 00000010 33 9b 51 22 f8 c1 87 41 7d de 1e 8e fb 68 41 f5 |3.Q"...A}....hA.|
<span class="mf">00000020</span><span class="w"> </span><span class="mf">5</span><span class="n">c</span><span class="w"> </span><span class="mf">34</span><span class="w"> </span><span class="mf">22</span><span class="w"> </span><span class="mf">0</span><span class="n">a</span><span class="w"> </span><span class="n">e0</span><span class="w"> </span><span class="mf">02</span><span class="w"> </span><span class="mf">20</span><span class="w"> </span><span class="mf">66</span><span class="w"> </span><span class="mf">63</span><span class="w"> </span><span class="mf">2</span><span class="n">c</span><span class="w"> </span><span class="mf">5</span><span class="n">c</span><span class="w"> </span><span class="n">d4</span><span class="w"> </span><span class="mf">16</span><span class="w"> </span><span class="mf">1</span><span class="n">e</span><span class="w"> </span><span class="n">fa</span><span class="w"> </span><span class="mf">3</span><span class="n">a</span><span class="w"> </span><span class="err">|\</span><span class="mf">4</span><span class="s">"... fc,\....:|</span> 00000020 5c 34 22 0a e0 02 20 66 63 2c 5c d4 16 1e fa 3a |\4"... fc,\....:|
<span class="mf">00000030</span><span class="w"> </span><span class="mf">28</span><span class="w"> </span><span class="mf">37</span><span class="w"> </span><span class="mf">76</span><span class="w"> </span><span class="mf">4</span><span class="n">e</span><span class="w"> </span><span class="n">ee</span><span class="w"> </span><span class="mf">9</span><span class="n">e</span><span class="w"> </span><span class="n">b8</span><span class="w"> </span><span class="mf">49</span><span class="w"> </span><span class="mf">75</span><span class="w"> </span><span class="n">dd</span><span class="w"> </span><span class="mf">54</span><span class="w"> </span><span class="n">c2</span><span class="w"> </span><span class="n">de</span><span class="w"> </span><span class="mf">28</span><span class="w"> </span><span class="mf">65</span><span class="w"> </span><span class="n">e9</span><span class="w"> </span><span class="err">|</span><span class="p">(</span><span class="mf">7</span><span class="n">vN</span><span class="mf">...</span><span class="n">Iu</span><span class="mf">.</span><span class="n">T</span><span class="mf">..</span><span class="p">(</span><span class="n">e</span><span class="mf">.</span><span class="err">|</span> 00000030 28 37 76 4e ee 9e b8 49 75 dd 54 c2 de 28 65 e9 |(7vN...Iu.T..(e.|
<span class="mf">00000040</span><span class="w"> </span><span class="mf">75</span><span class="w"> </span><span class="mf">25</span><span class="w"> </span><span class="mf">85</span><span class="w"> </span><span class="n">c5</span><span class="w"> </span><span class="mf">3</span><span class="n">e</span><span class="w"> </span><span class="mf">7</span><span class="n">c</span><span class="w"> </span><span class="n">ce</span><span class="w"> </span><span class="err">|</span><span class="n">u%</span><span class="mf">..</span><span class="o">&gt;</span><span class="err">|</span><span class="mf">.</span><span class="err">|</span> 00000040 75 25 85 c5 3e 7c ce |u%..&gt;|.|
</pre></div> </pre>
<ul> <ul>
<li>cut -b 11-60 displays only the characters from column 11 to 60:</li> <li>cut -b 11-60 displays only the characters from column 11 to 60:</li>
</ul> </ul>
<div class="code"><pre class="code literal-block"><span class="mf">30</span><span class="w"> </span><span class="mf">45</span><span class="w"> </span><span class="mf">02</span><span class="w"> </span><span class="mf">21</span><span class="w"> </span><span class="mf">00</span><span class="w"> </span><span class="n">c1</span><span class="w"> </span><span class="mf">2</span><span class="n">a</span><span class="w"> </span><span class="mf">7</span><span class="n">d</span><span class="w"> </span><span class="mf">54</span><span class="w"> </span><span class="mf">97</span><span class="w"> </span><span class="mf">2</span><span class="n">f</span><span class="w"> </span><span class="mf">26</span><span class="w"> </span><span class="n">d1</span><span class="w"> </span><span class="mf">4</span><span class="n">c</span><span class="w"> </span><span class="n">b3</span><span class="w"> </span><span class="mf">11</span><span class="w"> </span> <pre class="code literal-block"><span></span>30 45 02 21 00 c1 2a 7d 54 97 2f 26 d1 4c b3 11
<span class="mf">33</span><span class="w"> </span><span class="mf">9</span><span class="n">b</span><span class="w"> </span><span class="mf">51</span><span class="w"> </span><span class="mf">22</span><span class="w"> </span><span class="n">f8</span><span class="w"> </span><span class="n">c1</span><span class="w"> </span><span class="mf">87</span><span class="w"> </span><span class="mf">41</span><span class="w"> </span><span class="mf">7</span><span class="n">d</span><span class="w"> </span><span class="n">de</span><span class="w"> </span><span class="mf">1</span><span class="n">e</span><span class="w"> </span><span class="mf">8</span><span class="n">e</span><span class="w"> </span><span class="n">fb</span><span class="w"> </span><span class="mf">68</span><span class="w"> </span><span class="mf">41</span><span class="w"> </span><span class="n">f5</span><span class="w"> </span> 33 9b 51 22 f8 c1 87 41 7d de 1e 8e fb 68 41 f5
<span class="mf">5</span><span class="n">c</span><span class="w"> </span><span class="mf">34</span><span class="w"> </span><span class="mf">22</span><span class="w"> </span><span class="mf">0</span><span class="n">a</span><span class="w"> </span><span class="n">e0</span><span class="w"> </span><span class="mf">02</span><span class="w"> </span><span class="mf">20</span><span class="w"> </span><span class="mf">66</span><span class="w"> </span><span class="mf">63</span><span class="w"> </span><span class="mf">2</span><span class="n">c</span><span class="w"> </span><span class="mf">5</span><span class="n">c</span><span class="w"> </span><span class="n">d4</span><span class="w"> </span><span class="mf">16</span><span class="w"> </span><span class="mf">1</span><span class="n">e</span><span class="w"> </span><span class="n">fa</span><span class="w"> </span><span class="mf">3</span><span class="n">a</span><span class="w"> </span> 5c 34 22 0a e0 02 20 66 63 2c 5c d4 16 1e fa 3a
<span class="mf">28</span><span class="w"> </span><span class="mf">37</span><span class="w"> </span><span class="mf">76</span><span class="w"> </span><span class="mf">4</span><span class="n">e</span><span class="w"> </span><span class="n">ee</span><span class="w"> </span><span class="mf">9</span><span class="n">e</span><span class="w"> </span><span class="n">b8</span><span class="w"> </span><span class="mf">49</span><span class="w"> </span><span class="mf">75</span><span class="w"> </span><span class="n">dd</span><span class="w"> </span><span class="mf">54</span><span class="w"> </span><span class="n">c2</span><span class="w"> </span><span class="n">de</span><span class="w"> </span><span class="mf">28</span><span class="w"> </span><span class="mf">65</span><span class="w"> </span><span class="n">e9</span><span class="w"> </span> 28 37 76 4e ee 9e b8 49 75 dd 54 c2 de 28 65 e9
<span class="mf">75</span><span class="w"> </span><span class="mf">25</span><span class="w"> </span><span class="mf">85</span><span class="w"> </span><span class="n">c5</span><span class="w"> </span><span class="mf">3</span><span class="n">e</span><span class="w"> </span><span class="mf">7</span><span class="n">c</span><span class="w"> </span><span class="n">ce</span><span class="w"> </span> 75 25 85 c5 3e 7c ce
</pre></div> </pre>
<ul> <ul>
<li> <li>
<code>tr -d ' \n'</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> <code>tr -d ' \n'</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> </ul>
<div class="code"><pre class="code literal-block"><span class="mf">3045022100</span><span class="n">c12a7d54972f26d14cb311339b5122f8c187417dde1e8efb6841f55c34220ae0022066632c5cd4161efa3a2837764eee9eb84975dd54c2de2865e9752585c53e7cce</span> <pre class="code literal-block"><span></span>3045022100c12a7d54972f26d14cb311339b5122f8c187417dde1e8efb6841f55c34220ae0022066632c5cd4161efa3a2837764eee9eb84975dd54c2de2865e9752585c53e7cce
</pre></div> </pre>
<p>If you noticed, there is also another cleartext string at the beginning of Wright's post:</p> <p>If you noticed, there is also another cleartext string at the beginning of Wright's post:</p>
<div class="code"><pre class="code literal-block">$<span class="w"> </span>base64<span class="w"> </span>-d<span class="w"> </span><span class="o">&lt;&lt;&lt;</span><span class="s1">'IFdyaWdodCwgaXQgaXMgbm90IHRoZSBzYW1lIGFzIGlmIEkgc2lnbiBDcmFpZyBXcmlnaHQsIFNhdG9zaGkuCgo='</span> <pre class="code literal-block"><span></span>$ base64 -d <span class="o">&lt;&lt;&lt;</span><span class="s1">'IFdyaWdodCwgaXQgaXMgbm90IHRoZSBzYW1lIGFzIGlmIEkgc2lnbiBDcmFpZyBXcmlnaHQsIFNhdG9zaGkuCgo='</span>
Wright,<span class="w"> </span>it<span class="w"> </span>is<span class="w"> </span>not<span class="w"> </span>the<span class="w"> </span>same<span class="w"> </span>as<span class="w"> </span><span class="k">if</span><span class="w"> </span>I<span class="w"> </span>sign<span class="w"> </span>Craig<span class="w"> </span>Wright,<span class="w"> </span>Satoshi. Wright, it is not the same as <span class="k">if</span> I sign Craig Wright, Satoshi.
</pre></div> </pre>
<p>Now let's head to blockchain.info. <p>Now let'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's use it to get the related info about this transaction:</p> 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's use it to get the related info about this transaction:</p>
<p><a href="https://blockchain.info/tx/828ef3b079f9c23829c56fe86e85b4a69d9e06e5b54ea597eef5fb3ffef509fe">tx/828ef3b079f9c23829c56fe86e85b4a69d9e06e5b54ea597eef5fb3ffef509fe</a> <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> <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</p> <p>As you can see the entire output of the first bash command, that is</p>
<div class="code"><pre class="code literal-block"><span class="mf">3045022100</span><span class="n">c12a7d54972f26d14cb311339b5122f8c187417dde1e8efb6841f55c34220ae0022066632c5cd4161efa3a2837764eee9eb84975dd54c2de2865e9752585c53e7cce</span> <pre class="code literal-block"><span></span>3045022100c12a7d54972f26d14cb311339b5122f8c187417dde1e8efb6841f55c34220ae0022066632c5cd4161efa3a2837764eee9eb84975dd54c2de2865e9752585c53e7cce
</pre></div> </pre>
<p>is contained in:</p> <p>is contained in:</p>
<div class="code"><pre class="code literal-block">"script":"483045022100c12a7d54972f26d14cb311339b5122f8c187417dde1e8efb6841f55c34220ae0022066632c5cd4161efa3a2837764eee9eb84975dd54c2de2865e9752585c53e7cce01" <pre class="code literal-block"><span></span>"script":"483045022100c12a7d54972f26d14cb311339b5122f8c187417dde1e8efb6841f55c34220ae0022066632c5cd4161efa3a2837764eee9eb84975dd54c2de2865e9752585c53e7cce01"
</pre></div> </pre>
<p>except for the 48 at the beginning and the 01 at the end.</p> <p>except for the 48 at the beginning and the 01 at the end.</p>
<p>That is a signature hash: <p>That is a signature hash:
@ -132,6 +141,7 @@ this <a href="https://en.bitcoin.it/wiki/List_of_address_prefixes">page</a> expl
<p>Yes, indeed. <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> At the end, I ask, why would you choose anything else than the easiest and most conclusive way to prove something?</p>
<p><img alt='Wright "signs" the blockchain' src="../../../../../wp-content/uploads/2016/satosh.jpg"></p> <p><img alt='Wright "signs" the blockchain' src="../../../../../wp-content/uploads/2016/satosh.jpg"></p>
</div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -42,7 +42,7 @@ For 60$ I bought a cheap (but still good!) ">
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -56,7 +56,8 @@ For 60$ I bought a cheap (but still good!) ">
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<p>Turin is the hometown of Arduino. I have been at the <a href="http://fablabtorino.org/">fablab</a> multiple times but I had to come all the way to America to get my hands on a simple Arduino Uno.</p> <div>
<p>Turin is the hometown of Arduino. I have been at the <a href="http://fablabtorino.org/">fablab</a> multiple times but I had to come all the way to America to get my hands on a simple Arduino Uno.</p>
<p>For 60$ I bought a cheap (but still good!) mechanical keyboard by Qisan, a clone of the Arduino Uno and a USB host shield.</p> <p>For 60$ I bought a cheap (but still good!) mechanical keyboard by Qisan, a clone of the Arduino Uno and a USB host shield.</p>
<p>Given that is 3 years since I have been using a dvorak layout and it's a pain to change layout on every machine that you have to use. <p>Given that is 3 years since I have been using a dvorak layout and it's a pain to change layout on every machine that you have to use.
You can imagine that given this three pieces of hardware together I put together an hardware key mapper for the keyboard.</p> You can imagine that given this three pieces of hardware together I put together an hardware key mapper for the keyboard.</p>
@ -94,14 +95,16 @@ Every time you want to flash a new firmware the Arduino must be put in DFU mode
To do that simply create a shortcircuit using a small metal wire on the two pins near the reset button and a led will blink. To do that simply create a shortcircuit using a small metal wire on the two pins near the reset button and a led will blink.
This <a href="https://www.youtube.com/watch?v=E8XyRwXQr8Q">video</a> shows the method briefly (no real need for a jumper). This <a href="https://www.youtube.com/watch?v=E8XyRwXQr8Q">video</a> shows the method briefly (no real need for a jumper).
The commands are the following and there is no risk to brick the Uno:</p> The commands are the following and there is no risk to brick the Uno:</p>
<div class="code"><pre class="code literal-block">dfu-programmer atmega16u2 erase <pre class="code literal-block"><span></span>dfu-programmer atmega16u2 erase
dfu-programmer atmega16u2 flash Arduino-keyboard-0.2.hex dfu-programmer atmega16u2 flash Arduino-keyboard-0.2.hex
dfu-programmer atmega16u2 reset dfu-programmer atmega16u2 reset
</pre></div> </pre>
<p>After each flashing the device needs to be disconnected once. Of course you can flash the original firmware back. It is included in my repo or on the official ones.</p> <p>After each flashing the device needs to be disconnected once. Of course you can flash the original firmware back. It is included in my repo or on the official ones.</p>
<p><img alt="Arduino and the shield" src="../../../../../wp-content/uploads/2016/IMG_20160706_011143.jpg"></p> <p><img alt="Arduino and the shield" src="../../../../../wp-content/uploads/2016/IMG_20160706_011143.jpg"></p>
<p>That's it, as you can see is not difficult at all. The worst part is gathering the various info that are left dormant in blogs or forums.</p> <p>That's it, as you can see is not difficult at all. The worst part is gathering the various info that are left dormant in blogs or forums.</p>
</div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -66,7 +66,7 @@ sta">
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -80,102 +80,104 @@ sta">
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<p>I made this chart for a presentation at the <a href="https://cyber.law.harvard.edu/">Berkman Klein Center</a></p> <div>
<p>I made this chart for a presentation at the <a href="https://cyber.law.harvard.edu/">Berkman Klein Center</a></p>
<table> <table>
<thead><tr> <thead><tr>
<th></th> <th></th>
<th style="text-align: center;">Whatsapp</th> <th align="center">Whatsapp</th>
<th style="text-align: center;">Telegram</th> <th align="center">Telegram</th>
<th style="text-align: right;">Signal</th> <th align="right">Signal</th>
</tr></thead> </tr></thead>
<tbody> <tbody>
<tr> <tr>
<td>Source code</td> <td>Source code</td>
<td style="text-align: center;">closed source</td> <td align="center">closed source</td>
<td style="text-align: center;">open source</td> <td align="center">open source</td>
<td style="text-align: right;">open source</td> <td align="right">open source</td>
</tr> </tr>
<tr> <tr>
<td>Api</td> <td>Api</td>
<td style="text-align: center;">none</td> <td align="center">none</td>
<td style="text-align: center;">various</td> <td align="center">various</td>
<td style="text-align: right;">library</td> <td align="right">library</td>
</tr> </tr>
<tr> <tr>
<td>Encription protocol</td> <td>Encription protocol</td>
<td style="text-align: center;">state of the art</td> <td align="center">state of the art</td>
<td style="text-align: center;">self made</td> <td align="center">self made</td>
<td style="text-align: right;">state of the art</td> <td align="right">state of the art</td>
</tr> </tr>
<tr> <tr>
<td>Contact list location</td> <td>Contact list location</td>
<td style="text-align: center;">cloud</td> <td align="center">cloud</td>
<td style="text-align: center;">cloud</td> <td align="center">cloud</td>
<td style="text-align: right;">cloud, encrypted</td> <td align="right">cloud, encrypted</td>
</tr> </tr>
<tr> <tr>
<td>Forward Secrecy</td> <td>Forward Secrecy</td>
<td style="text-align: center;">yes</td> <td align="center">yes</td>
<td style="text-align: center;">yes</td> <td align="center">yes</td>
<td style="text-align: right;">yes</td> <td align="right">yes</td>
</tr> </tr>
<tr> <tr>
<td>Database</td> <td>Database</td>
<td style="text-align: center;">phone storage</td> <td align="center">phone storage</td>
<td style="text-align: center;">cloud</td> <td align="center">cloud</td>
<td style="text-align: right;">phone storage</td> <td align="right">phone storage</td>
</tr> </tr>
<tr> <tr>
<td>Backup capability</td> <td>Backup capability</td>
<td style="text-align: center;">Icloud or Gcloud</td> <td align="center">Icloud or Gcloud</td>
<td style="text-align: center;">builtin</td> <td align="center">builtin</td>
<td style="text-align: right;">none</td> <td align="right">none</td>
</tr> </tr>
<tr> <tr>
<td>Revenue</td> <td>Revenue</td>
<td style="text-align: center;">ads (Facebook)</td> <td align="center">ads (Facebook)</td>
<td style="text-align: center;">donation based</td> <td align="center">donation based</td>
<td style="text-align: right;">donation based</td> <td align="right">donation based</td>
</tr> </tr>
<tr> <tr>
<td>Federation</td> <td>Federation</td>
<td style="text-align: center;">no</td> <td align="center">no</td>
<td style="text-align: center;">no</td> <td align="center">no</td>
<td style="text-align: right;">no</td> <td align="right">no</td>
</tr> </tr>
<tr> <tr>
<td>Alternative download location</td> <td>Alternative download location</td>
<td style="text-align: center;">website</td> <td align="center">website</td>
<td style="text-align: center;">F-Droid</td> <td align="center">F-Droid</td>
<td style="text-align: right;">none</td> <td align="right">none</td>
</tr> </tr>
<tr> <tr>
<td>Uses third party services</td> <td>Uses third party services</td>
<td style="text-align: center;">no</td> <td align="center">no</td>
<td style="text-align: center;">no</td> <td align="center">no</td>
<td style="text-align: right;">Google Cloud Messaging</td> <td align="right">Google Cloud Messaging</td>
</tr> </tr>
<tr> <tr>
<td>Servers location</td> <td>Servers location</td>
<td style="text-align: center;">US</td> <td align="center">US</td>
<td style="text-align: center;">Russia</td> <td align="center">Russia</td>
<td style="text-align: right;">US</td> <td align="right">US</td>
</tr> </tr>
<tr> <tr>
<td>Tied to mobile number</td> <td>Tied to mobile number</td>
<td style="text-align: center;">yes</td> <td align="center">yes</td>
<td style="text-align: center;">yes, but nickname available</td> <td align="center">yes, but nickname available</td>
<td style="text-align: right;">yes</td> <td align="right">yes</td>
</tr> </tr>
<tr> <tr>
<td>Desktop client</td> <td>Desktop client</td>
<td style="text-align: center;">no</td> <td align="center">no</td>
<td style="text-align: center;">yes</td> <td align="center">yes</td>
<td style="text-align: right;">no</td> <td align="right">no</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
</div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>
<ul itemprop="keywords" class="tags"> <ul itemprop="keywords" class="tags">

View file

@ -44,7 +44,7 @@ What follows is a">
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -58,7 +58,8 @@ What follows is a">
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<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> <div>
<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> <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>
<h4>Whose Security?</h4> <h4>Whose Security?</h4>
<p>Let'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>Let'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>
@ -206,6 +207,7 @@ What if, when the person walks into a mall, we record the time, the location, th
<h4>To hide is to care</h4> <h4>To hide is to care</h4>
<p>A simple truth is that we don't close the windows to cover up our crimes. </p> <p>A simple truth is that we don'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> <p>Our innermost experiences become in our intimacy, which is the most sacred place.</p>
</div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -43,7 +43,7 @@ Helpful references
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -57,7 +57,8 @@ Helpful references
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<p>This guide is adapted from the <a href="https://github.com/nicinabox/lets-split-guide/blob/master/assembly.md">Let's split guide</a>.</p> <div>
<p>This guide is adapted from the <a href="https://github.com/nicinabox/lets-split-guide/blob/master/assembly.md">Let's split guide</a>.</p>
<p>It is tailored between the Scrooges like me and all the europeans that couldn't find some TRRS jacks.</p> <p>It is tailored between the Scrooges like me and all the europeans that couldn't find some TRRS jacks.</p>
<h3>Helpful references</h3> <h3>Helpful references</h3>
<ul> <ul>
@ -83,29 +84,29 @@ Helpful references
<h3>Cost Breakdown</h3> <h3>Cost Breakdown</h3>
<table> <table>
<thead><tr> <thead><tr>
<th style="text-align: left;">Cost</th> <th align="left">Cost</th>
<th style="text-align: left;">Part</th> <th align="left">Part</th>
</tr></thead> </tr></thead>
<tbody> <tbody>
<tr> <tr>
<td style="text-align: left;">$8</td> <td align="left">$8</td>
<td style="text-align: left;">PCB</td> <td align="left">PCB</td>
</tr> </tr>
<tr> <tr>
<td style="text-align: left;">€ 12-30</td> <td align="left">€ 12-30</td>
<td style="text-align: left;">Pro Micros</td> <td align="left">Pro Micros</td>
</tr> </tr>
<tr> <tr>
<td style="text-align: left;">€3-8</td> <td align="left">€3-8</td>
<td style="text-align: left;">Diodes</td> <td align="left">Diodes</td>
</tr> </tr>
<tr> <tr>
<td style="text-align: left;">€14-80</td> <td align="left">€14-80</td>
<td style="text-align: left;">Switches</td> <td align="left">Switches</td>
</tr> </tr>
<tr> <tr>
<td style="text-align: left;">€14-180</td> <td align="left">€14-180</td>
<td style="text-align: left;">Keycaps</td> <td align="left">Keycaps</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@ -122,10 +123,11 @@ Helpful references
<p>This part is not really needed, but you may want to do it in case you will mount the TRRS jacks in the future.</p> <p>This part is not really needed, but you may want to do it in case you will mount the TRRS jacks in the future.</p>
</blockquote> </blockquote>
<p>On the <strong>underside</strong> of the PCB, right below the TRRS jack, you'll see two sets of 3 pads labelled VCC and GND. Jumper them like this:</p> <p>On the <strong>underside</strong> of the PCB, right below the TRRS jack, you'll see two sets of 3 pads labelled VCC and GND. Jumper them like this:</p>
<div class="code"><pre class="code literal-block"><span class="n">VCC</span><span class="w"> </span><span class="o">[</span><span class="n">x</span><span class="o">]</span><span class="w"> </span><span class="o">[</span><span class="n"> </span><span class="o">]</span><span class="w"> </span><span class="n">VCC</span> <pre class="code literal-block"><span></span>VCC [x] [ ] VCC
<span class="w"> </span><span class="o">[</span><span class="n">x</span><span class="o">]</span><span class="w"> </span><span class="o">[</span><span class="n">x</span><span class="o">]</span> [x] [x]
<span class="n">GND</span><span class="w"> </span><span class="o">[</span><span class="n"> </span><span class="o">]</span><span class="w"> </span><span class="o">[</span><span class="n">x</span><span class="o">]</span><span class="w"> </span><span class="n">GND</span> GND [ ] [x] GND
</pre></div> </pre>
<p>Do both PCBs the same.</p> <p>Do both PCBs the same.</p>
<p><img alt="" src="https://i.imgur.com/AUT3VUd.png"></p> <p><img alt="" src="https://i.imgur.com/AUT3VUd.png"></p>
@ -185,6 +187,7 @@ Helpful references
<h2>End Result</h2> <h2>End Result</h2>
<p>Beautiful? <a href="https://en.wikipedia.org/wiki/Don%27t-care_term">W</a>.</p> <p>Beautiful? <a href="https://en.wikipedia.org/wiki/Don%27t-care_term">W</a>.</p>
<p><img alt="" src="../../../../../wp-content/uploads/2017/promicro3.jpg"></p> <p><img alt="" src="../../../../../wp-content/uploads/2017/promicro3.jpg"></p>
</div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -42,7 +42,7 @@ I prefer studio recordings because in these, the logical thoughts of the artist
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -56,7 +56,8 @@ I prefer studio recordings because in these, the logical thoughts of the artist
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<p>I am not the kind of guy who goes to concerts. Ever.</p> <div>
<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>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>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 <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
@ -86,6 +87,7 @@ I divided my time between irc and mailing lists. I felt the obligation to archiv
<p>It seems to me that it is just a worthy form of tenacity, not remembrance in any form.</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>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> <p>(This translation is for Madeline, thank you for still taking the time to read my blog)</p>
</div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -41,7 +41,7 @@ La registrazione in studio esplicita i processi logici che l'artista segue per a
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -55,7 +55,8 @@ La registrazione in studio esplicita i processi logici che l'artista segue per a
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<p>Non sono una persona che va ai concerti. </p> <div>
<p>Non sono una persona che va ai concerti. </p>
<p>La registrazione in studio esplicita i processi logici che l'artista segue per arrivare al processo di consegna e questo mi ha sempre affascinato, in maniera assai maggiore della carica emotiva sprigionata da un concerto di notte.</p> <p>La registrazione in studio esplicita i processi logici che l'artista segue per arrivare al processo di consegna e questo mi ha sempre affascinato, in maniera assai maggiore della carica emotiva sprigionata da un concerto di notte.</p>
<p>Ma ci sono due artisti, Dale Crover dei Melvins e Jeff Mangum le cui performance live sono state per me, come spettatore, in qualche modo epifaniche.</p> <p>Ma ci sono due artisti, Dale Crover dei Melvins e Jeff Mangum le cui performance live sono state per me, come spettatore, in qualche modo epifaniche.</p>
<p>Milano, dicembre del 2015, i Melvins stanno concludendo il loro più recente tour in Europa quando Jeff Pinkus lascia cadere il basso sul pavimento, regola gli effetti sulla pedaliera e lo prende a calci finché non produce la giusta ripetizione di suoni. Lentamente ciascun musicista si allontana dal palco, il basso insistente, ancora a terra.</p> <p>Milano, dicembre del 2015, i Melvins stanno concludendo il loro più recente tour in Europa quando Jeff Pinkus lascia cadere il basso sul pavimento, regola gli effetti sulla pedaliera e lo prende a calci finché non produce la giusta ripetizione di suoni. Lentamente ciascun musicista si allontana dal palco, il basso insistente, ancora a terra.</p>
@ -78,6 +79,7 @@ Attraverso la dissipazione l'opera, che fissata nel momento aveva acquisito una
<p>Eppure mi ci é voluto un po' per capire che questa non é memoria, solo una forma nobile di accanimento.</p> <p>Eppure mi ci é voluto un po' per capire che questa non é memoria, solo una forma nobile di accanimento.</p>
<p>Piace ai nostalgici, agli archivisti. </p> <p>Piace ai nostalgici, agli archivisti. </p>
<p>Spaventa a chi di Internet non vuole farsene una ragione.</p> <p>Spaventa a chi di Internet non vuole farsene una ragione.</p>
</div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -41,7 +41,7 @@
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -55,8 +55,10 @@
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<p><img alt="brainwashing" src="../../../../../wp-content/uploads/2017/hn_handbrake_hack.jpg"></p> <div>
<p><img alt="brainwashing" src="../../../../../wp-content/uploads/2017/hn_handbrake_hack.jpg"></p>
<p><a href="http://archive.is/XA3rj">source</a></p> <p><a href="http://archive.is/XA3rj">source</a></p>
</div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -43,7 +43,7 @@ Although I don't listen to a lot of electronic music, 2814 has been my go to mus
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -57,7 +57,8 @@ Although I don't listen to a lot of electronic music, 2814 has been my go to mus
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<p>Recently I decided to change the <a href="https://github.com/jasonlong/cayman-theme">css</a> of my blog to reflect a vaporwave-ish aestethic. </p> <div>
<p>Recently I decided to change the <a href="https://github.com/jasonlong/cayman-theme">css</a> of my blog to reflect a vaporwave-ish aestethic. </p>
<p>Although I don't listen to a lot of electronic music, 2814 has been my go to music when I am programming and I go through a lot of James Ferraro's works during the day.</p> <p>Although I don't listen to a lot of electronic music, 2814 has been my go to music when I am programming and I go through a lot of James Ferraro's works during the day.</p>
<p>What is the reason for my recent obsession on vaporwave culture?</p> <p>What is the reason for my recent obsession on vaporwave culture?</p>
<h3>A dream that disappeared</h3> <h3>A dream that disappeared</h3>
@ -84,6 +85,7 @@ Although I don't listen to a lot of electronic music, 2814 has been my go to mus
</blockquote> </blockquote>
<p>In the novel <a href="https://en.wikipedia.org/wiki/Neuromancer">Neuromance</a> by cyberpunk father William Gibson the Internet is conceived as some sort of "consensual allucination". In the world where that book was written Internet is just a collective delusion.</p> <p>In the novel <a href="https://en.wikipedia.org/wiki/Neuromancer">Neuromance</a> by cyberpunk father William Gibson the Internet is conceived as some sort of "consensual allucination". In the world where that book was written Internet is just a collective delusion.</p>
<p>Vaporwave forces us to recognize our helplessness with the Dataspace and for me it is a remembrace of a cyber-utopia that never got off the ground.</p> <p>Vaporwave forces us to recognize our helplessness with the Dataspace and for me it is a remembrace of a cyber-utopia that never got off the ground.</p>
</div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -39,7 +39,7 @@ Negli ultimi anni abbiamo assistito all'ascesa di un gran numero di linguaggi di
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -53,7 +53,8 @@ Negli ultimi anni abbiamo assistito all'ascesa di un gran numero di linguaggi di
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<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> <div>
<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'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>Negli ultimi anni abbiamo assistito all'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>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 "out of the box" supporto per:</p> <p>Rispetto ai più maturi C, C++ o Java, Python o Ruby questi linguaggi offrono "out of the box" supporto per:</p>
@ -61,7 +62,8 @@ Negli ultimi anni abbiamo assistito all'ascesa di un gran numero di linguaggi di
<li>una visione moderna delle concorrenze (le goroutines di Go o il modello ad attori di Pony ed Elixir)</li> <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>Memory safeness, in particolare:<ul>
<li>assenza di NULL (Pony, Rust, Kotlin)</li> <li>assenza di NULL (Pony, Rust, Kotlin)</li>
<li>gestione automatica della memoria, il cosiddetto [Garbage Collector](https://en.wikipedia.org/wiki/Garbage_collection_(computer_science) (o <a href="https://en.wikipedia.org/wiki/Reference_counting">Reference Counting</a> per Rust)</li> <li>gestione automatica della memoria, il cosiddetto <a href="https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)%20(o%20%5BReference%20Counting%5D(https://en.wikipedia.org/wiki/Reference_counting)%20per%20Rust">Garbage Collector</a>
</li>
<li>assenza di puntatori</li> <li>assenza di puntatori</li>
<li>assenza di deadlocks</li> <li>assenza di deadlocks</li>
</ul> </ul>
@ -125,45 +127,46 @@ Negli ultimi anni abbiamo assistito all'ascesa di un gran numero di linguaggi di
<li>Corpo della funzione</li> <li>Corpo della funzione</li>
</ul> </ul>
<p>Un esempio:</p> <p>Un esempio:</p>
<div class="code"><pre class="code literal-block"><span class="n">struct</span><span class="w"> </span><span class="n">Clock</span><span class="w"> </span><span class="p">{</span> <pre class="code literal-block"><span></span>struct Clock {
<span class="w"> </span><span class="n">short</span><span class="w"> </span><span class="n">time</span><span class="p">;</span> short time;
<span class="w"> </span><span class="n">invariant</span><span class="w"> </span><span class="p">{</span> invariant {
<span class="w"> </span><span class="nb">assert</span><span class="w"> </span><span class="p">(</span><span class="n">time</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span> assert (time &gt; 0);
<span class="w"> </span><span class="p">}</span> }
<span class="p">}</span> }
<span class="n">short</span><span class="w"> </span><span class="n">addReturnTime</span><span class="p">(</span><span class="n">Clock</span><span class="w"> </span><span class="n">c</span><span class="p">,</span><span class="w"> </span><span class="n">short</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span> short addReturnTime(Clock c, short n)
<span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="p">{</span> in {
<span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span> n &gt; 0;
<span class="w"> </span><span class="p">}</span> }
<span class="w"> </span><span class="n">body</span><span class="w"> </span><span class="p">{</span> body {
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">c</span><span class="o">-&gt;</span><span class="n">time</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">t</span><span class="p">;</span> return c-&gt;time + t;
<span class="w"> </span><span class="p">}</span> }
<span class="w"> </span><span class="n">out</span><span class="w"> </span><span class="p">(</span><span class="n">result</span><span class="p">){</span> out (result){
<span class="w"> </span><span class="n">result</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="n">c</span><span class="o">-&gt;</span><span class="n">time</span><span class="p">;</span> result &gt; c-&gt;time;
<span class="w"> </span><span class="p">}</span> }
<span class="n">unittest</span><span class="w"> </span><span class="p">{</span> unittest {
<span class="w"> </span><span class="n">auto</span><span class="w"> </span><span class="n">clock</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Clock</span><span class="p">(</span><span class="mi">60</span><span class="p">);</span> auto clock = Clock(60);
<span class="w"> </span><span class="nb">assert</span><span class="w"> </span><span class="p">(</span><span class="n">addReturnTime</span><span class="p">(</span><span class="n">clock</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">)</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">70</span><span class="p">);</span> assert (addReturnTime(clock, 10) == 70);
}
</pre>
<span class="p">}</span>
</pre></div>
<p>Come si nota dall'esempio il supporto ai tests è built-in nel linguaggio e distanti solo una flag in fase di compilazione.</p> <p>Come si nota dall'esempio il supporto ai tests è built-in nel linguaggio e distanti solo una flag in fase di compilazione.</p>
<h5>Un approccio moderno alle concorrenze</h5> <h5>Un approccio moderno alle concorrenze</h5>
@ -190,6 +193,7 @@ Fra le varie motivazioni c'è il fatto che questo rifletta più realisticamente
<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>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 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> <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> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -43,7 +43,7 @@ Learning Management Systems appeared on the market around the be">
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -57,7 +57,8 @@ Learning Management Systems appeared on the market around the be">
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<p>This is the revised transcript of my <a href="http://conf.owlteh.org/contributions/published/elearning-in-the-age-of-social-networks-the-eduhack-model/">talk</a> at the <a href="https://www.conf.owlteh.org/">OWLTEH Conference 2018</a> at the Coventry University.</p> <div>
<p>This is the revised transcript of my <a href="http://conf.owlteh.org/contributions/published/elearning-in-the-age-of-social-networks-the-eduhack-model/">talk</a> at the <a href="https://www.conf.owlteh.org/">OWLTEH Conference 2018</a> at the Coventry University.</p>
<p><img alt="Me, giving the talk" src="../../../../../wp-content/uploads/2018/coventry.jpg"></p> <p><img alt="Me, giving the talk" src="../../../../../wp-content/uploads/2018/coventry.jpg"></p>
<h2>In the beginning there was the LMS</h2> <h2>In the beginning there was the LMS</h2>
<p>Learning Management Systems appeared on the market around the beginning of 2000.</p> <p>Learning Management Systems appeared on the market around the beginning of 2000.</p>
@ -341,6 +342,7 @@ The following is a list of the positive and negative results of such studies gro
</li> </li>
</ul> </ul>
</div> </div>
</div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>
<ul itemprop="keywords" class="tags"> <ul itemprop="keywords" class="tags">

View file

@ -42,7 +42,7 @@ Tempo fa rimasi colpi">
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -56,7 +56,8 @@ Tempo fa rimasi colpi">
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<blockquote> <div>
<blockquote>
<p>It is also common ground, however, that the First Amendment does not guarantee the right to communicate one's views at all times and places or in any manner that may be desired.</p> <p>It is also common ground, however, that the First Amendment does not guarantee the right to communicate one's views at all times and places or in any manner that may be desired.</p>
</blockquote> </blockquote>
<p>Tempo fa rimasi colpito nel leggere questo <a href="https://www.courtlistener.com/opinion/110532/heffron-v-international-soc-for-krishna-consciousness-inc/">orientamento</a> della corte degli Stati Uniti dal quale ho tratto la precedente citazione.</p> <p>Tempo fa rimasi colpito nel leggere questo <a href="https://www.courtlistener.com/opinion/110532/heffron-v-international-soc-for-krishna-consciousness-inc/">orientamento</a> della corte degli Stati Uniti dal quale ho tratto la precedente citazione.</p>
@ -73,6 +74,7 @@ Ho interessi di nicchia e Reddit mi permetteva di riunirmi con persone dall'altr
<p>Con questo post dico addio a Reddit. Da spazio di discussione a spazio di intolleranza e divisione politica, dove delle comunità che non rientrano nei canoni di buona reputazione per delle agenzie pubblicitarie devono essere eliminate.</p> <p>Con questo post dico addio a Reddit. Da spazio di discussione a spazio di intolleranza e divisione politica, dove delle comunità che non rientrano nei canoni di buona reputazione per delle agenzie pubblicitarie devono essere eliminate.</p>
<p>Non voglio che ogni mia parola sia pesata oltre i valori della comunità a cui sottoscrivo, non voglio fare esercizi di autocensura nei post che scrivo.</p> <p>Non voglio che ogni mia parola sia pesata oltre i valori della comunità a cui sottoscrivo, non voglio fare esercizi di autocensura nei post che scrivo.</p>
<p>Aderivo a delle regole ben definite e delle quali gli amministratori si assumevano la responsabilità. Con il ban di marzo 2018 il sito che conoscevo ha cambiato faccia ed il post di un <a href="https://np.reddit.com/user/Reddit-Policy">utente anonimo</a> sarà l'ultimo post che downvoterò.</p> <p>Aderivo a delle regole ben definite e delle quali gli amministratori si assumevano la responsabilità. Con il ban di marzo 2018 il sito che conoscevo ha cambiato faccia ed il post di un <a href="https://np.reddit.com/user/Reddit-Policy">utente anonimo</a> sarà l'ultimo post che downvoterò.</p>
</div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -13,7 +13,6 @@
<link rel="canonical" href="francescomecca.eu/blog/2019/03/06/Dconf-2019/"> <link rel="canonical" href="francescomecca.eu/blog/2019/03/06/Dconf-2019/">
<meta name="author" content="Francesco Mecca"> <meta name="author" content="Francesco Mecca">
<link rel="prev" href="../../../../2018/10/2/eduhack-coventry/" title="eLearning in the age of Social Networks, the EduHack Platform" type="text/html"> <link rel="prev" href="../../../../2018/10/2/eduhack-coventry/" title="eLearning in the age of Social Networks, the EduHack Platform" type="text/html">
<link rel="next" href="../../../05/18/cultura-hacker/" title="Breve storia della cultura hacker" type="text/html">
<meta property="og:site_name" content="Caught in the Net"> <meta property="og:site_name" content="Caught in the Net">
<meta property="og:title" content="Dconf 2019"> <meta property="og:title" content="Dconf 2019">
<meta property="og:url" content="francescomecca.eu/blog/2019/03/06/Dconf-2019/"> <meta property="og:url" content="francescomecca.eu/blog/2019/03/06/Dconf-2019/">
@ -40,7 +39,7 @@ I miei sforzi nell'imparare questo linguaggio sono confluiti nella partecipazion
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -54,10 +53,12 @@ I miei sforzi nell'imparare questo linguaggio sono confluiti nella partecipazion
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<p>Quest'anno molto del mio tempo passato al pc e` stato investito per D e la sua community. <div>
<p>Quest'anno molto del mio tempo passato al pc e` stato investito per D e la sua community.
I miei sforzi nell'imparare questo linguaggio sono confluiti nella partecipazione al <a href="https://dlang.org/blog/symmetry-autumn-of-code">SAOC</a> con il mio amico e collega <a href="https://fragal.eu">Francesco Galla`</a>.</p> I miei sforzi nell'imparare questo linguaggio sono confluiti nella partecipazione al <a href="https://dlang.org/blog/symmetry-autumn-of-code">SAOC</a> con il mio amico e collega <a href="https://fragal.eu">Francesco Galla`</a>.</p>
<p>Accompagnero` Francesco all'edizione del 2019 della <a href="https://dconf.org/2019/index.html">DConf</a> che si terra` dall'otto all'undici marzo a Londra.</p> <p>Accompagnero` Francesco all'edizione del 2019 della <a href="https://dconf.org/2019/index.html">DConf</a> che si terra` dall'otto all'undici marzo a Londra.</p>
<p>See you there!</p> <p>See you there!</p>
</div>
</div> </div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>

View file

@ -12,15 +12,15 @@
<link rel="alternate" type="application/rss+xml" title="RSS" hreflang="en" href="../../../../../rss.xml"> <link rel="alternate" type="application/rss+xml" title="RSS" hreflang="en" href="../../../../../rss.xml">
<link rel="canonical" href="francescomecca.eu/blog/2019/05/18/cultura-hacker/"> <link rel="canonical" href="francescomecca.eu/blog/2019/05/18/cultura-hacker/">
<meta name="author" content="Francesco Mecca"> <meta name="author" content="Francesco Mecca">
<link rel="prev" href="../../../03/06/Dconf-2019/" title="Dconf 2019" type="text/html"> <meta name="robots" content="noindex">
<link rel="next" href="../../../../2023/08/12/three-years-later/" title="Three years later" type="text/html">
<meta property="og:site_name" content="Caught in the Net"> <meta property="og:site_name" content="Caught in the Net">
<meta property="og:title" content="Breve storia della cultura hacker"> <meta property="og:title" content="Breve storia della cultura hacker">
<meta property="og:url" content="francescomecca.eu/blog/2019/05/18/cultura-hacker/"> <meta property="og:url" content="francescomecca.eu/blog/2019/05/18/cultura-hacker/">
<meta property="og:description" content="Per tre anni ho svolto una lezione sulla cultura hacker che precedentemente era tenuta da Simone Basso al Politecnico di Torino per il corso Rivoluzione Digitale. <meta property="og:description" content="Questo e` un post tratto dalla lezione che ho svolto negli ultimi tre anni al Politecnico di Torino per il corso Rivoluzione Digitale.
Quest'anno, data la situazione con il"> Scopo della lezione
Capire la cultura hacker significa entrare in">
<meta property="og:type" content="article"> <meta property="og:type" content="article">
<meta property="article:published_time" content="2020-04-06T00:00:00Z"> <meta property="article:published_time" content="2019-05-18T00:00:00Z">
<meta property="article:tag" content="lezione"> <meta property="article:tag" content="lezione">
<meta property="article:tag" content="PesceWanda"> <meta property="article:tag" content="PesceWanda">
<meta property="article:tag" content="politecnico"> <meta property="article:tag" content="politecnico">
@ -41,7 +41,7 @@ Quest'anno, data la situazione con il">
<a class="btn" href="../../../../../rss.xml">RSS</a> <a class="btn" href="../../../../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><div class="post"> </section><section class="main-content"><div class="post">
<header><h1 class="post-title"> <header><h1 class="post-title">
@ -49,19 +49,19 @@ Quest'anno, data la situazione con il">
<h1 class="p-name post-title" itemprop="headline name">Breve storia della cultura hacker</h1> <h1 class="p-name post-title" itemprop="headline name">Breve storia della cultura hacker</h1>
</h1> </h1>
</header><p class="dateline post-date">06 April 2020</p> </header><p class="dateline post-date">18 May 2019</p>
</div> </div>
<div class="e-content entry-content" itemprop="articleBody text"> <div class="e-content entry-content" itemprop="articleBody text">
<p>Per tre anni ho svolto una lezione sulla cultura hacker che precedentemente era tenuta da <a href="https://nexa.polito.it/people/sbasso">Simone Basso</a> al Politecnico di Torino per il corso <a href="http://rivoluzionedigitale.polito.it/">Rivoluzione Digitale</a>. <div>
Quest'anno, data la situazione con il corona virus e dato che non voglio essere registrato (cosa inevitabile qualora organizzassi una videolezione), ho deciso di scrivere questo blogpost dove riassumo quello che solitamente espongo.</p> <p>Questo e` un post tratto dalla lezione che ho svolto negli ultimi tre anni al Politecnico di Torino per il corso <a href="http://rivoluzionedigitale.polito.it/">Rivoluzione Digitale</a>.</p>
<h2>Scopo della lezione</h2> <h2>Scopo della lezione</h2>
<p>Capire la cultura hacker significa entrare in contatto con quelle che sono le motivazioni e la storia di persone che hanno contribuito in maniera fondamentale alla nascita di internet e hanno presentato al mondo un modo di pensare che ancora oggi è alle radici dell'informatica come strumento di cultura di massa.</p> <p>Capire la cultura hacker significa entrare in contatto con quelle che sono le motivazioni e la storia di persone che hanno contribuito in maniera fondamentale alla nascita di internet e hanno presentato al mondo un modo di pensare che ancora oggi e` alle radici dell'informatica come scienza e come strumento di cultura di massa.</p>
<h2>Jargon File</h2> <h2>Jargon File</h2>
<p>Così come oggi utilizziamo i social network per portare avanti discussioni (si spera) con una cerchia di interessati online, allo stesso modo a partire dal 1970 alcune persone si ritrovarono su usenet e mailing list: in maniera non organizzata alcuni membri di queste comunità iniziarono a raccogliere gli slang più utilizzati e le storie legate a questi modi di esprimersi.</p> <p>Cosi` come oggi utilizziamo i social network per portare avanti discussioni (si spera) con una cerchia di interessati online, allo stesso modo a partire dal 1970 alcune persone si ritrovarono su usenet e mailing list: in maniera non organizzata alcuni membri di queste comunita` iniziarono a raccogliere gli slang piu` utilizzati e le storie legate a questi modi di esprimersi.</p>
<p>Con l'espandersi della comunità il Jargon File funge da guida introduttiva ai canoni e alle etichette in uso: per questo <a href="https://en.wikipedia.org/wiki/Eric_S._Raymond">Eric S. Raymond</a> compì un lavoro di riorganizzazione sistematica che terminò con l'ultima edizione del 2003.</p> <p>Con l'espandersi della comunita` il Jargon File funge da guida introduttiva ai canoni e alle etichette in uso: per questo <a href="https://en.wikipedia.org/wiki/Eric_S._Raymond">Eric S. Raymond</a> compiette un lavoro di riorganizzazione sistematica che termino` con l'ultima edizione del 2003.</p>
<p><a href="http://catdb.org/esr">ESR</a> scrive:</p> <p><a href="http://catdb.org/esr">ESR</a> scrive:</p>
<blockquote> <blockquote>
<p>Among hackers, though, slang has a subtler aspect, paralleled perhaps in the slang of jazz musicians and some kinds of fine artists but hard to detect in most technical or scientific cultures; parts of it are code for shared states of consciousness. There is a whole range of altered states and problem-solving mental stances basic to high-level hacking which don't fit into conventional linguistic reality any better than a Coltrane solo or one of Maurits Escher's surreal trompe l'oeil compositions (Escher is a favorite of hackers), and hacker slang encodes these subtleties in many unobvious ways. </p> <p>Among hackers, though, slang has a subtler aspect, paralleled perhaps in the slang of jazz musicians and some kinds of fine artists but hard to detect in most technical or scientific cultures; parts of it are code for shared states of consciousness. There is a whole range of altered states and problem-solving mental stances basic to high-level hacking which don't fit into conventional linguistic reality any better than a Coltrane solo or one of Maurits Escher's surreal trompe l'oeil compositions (Escher is a favorite of hackers), and hacker slang encodes these subtleties in many unobvious ways. </p>
@ -102,12 +102,15 @@ Quest'anno, data la situazione con il corona virus e dato che non voglio essere
<p>C# -&gt; C Flat</p> <p>C# -&gt; C Flat</p>
</li> </li>
<li> <li>
<p>Più generale: "Ready for foodP?" (in Lisp la P sta per predicato con risultato booleano true|false)</p> <p>Piu` generale: "Ready for foodP?" (in Lisp la P sta per predicato con risultato booleano <code>true</code> <code>false</code>)</p>
</li> </li>
</ul> </ul>
<h3>Definizione della parola hacker</h3> <h3>Definizione della parola hacker</h3>
<p><img alt="Definition of hacker" src="../../../../../wp-content/uploads/2019/def_hacker.jpg"></p> <p><img alt="Definition of hacker" src="../../../../../wp-content/uploads/2019/def_hacker.jpg"></p>
<p>Del termine hacker abbiamo più definizioni, alcune indifferenti all'uso di sistemi informatici:</p> <p>Come si evince dall'immagine il significato della parola hacker nel gergo comune si e` via via svuotato per poi andare a sostituire quello del termine cracker.</p>
<p>Un cracker e` una persona che fa un uso non previsto e malevolo di un sistema informatico.
Nel Jargon File viene specificato che ci si aspetta che un hacker abbia compiuto del cracking e ne conosca le tecniche ma ma debba velocemente maturare verso forme creative piu` nobili.</p>
<p>Del termine hacker abbiamo piu` definizioni, alcune indifferenti all'uso di sistemi informatici:</p>
<ol> <ol>
<li> <li>
<p>Una persona che prova delizia dall'esplorare i dettagli di un sistema programmabile fino a raggiungerne i limiti possibili</p> <p>Una persona che prova delizia dall'esplorare i dettagli di un sistema programmabile fino a raggiungerne i limiti possibili</p>
@ -125,11 +128,7 @@ Quest'anno, data la situazione con il corona virus e dato che non voglio essere
<p>una persona che trova piacere nella sfida intellettuale di superare un limite in maniera creativa</p> <p>una persona che trova piacere nella sfida intellettuale di superare un limite in maniera creativa</p>
</li> </li>
</ol> </ol>
<p>A me piace raccogliere queste definizioni parafrasando Larry Wall: essere un hacker non è l'obbiettivo: gli obbiettivi variano in base alle persone ed al contesto. Un hacker è qualcuno che raggiunge il proprio obbiettivo superando le norme culturali e sociali.</p> <p>A me piace raccogliere queste definizioni parafrasando Larry Wall: essere un hacker non e` l'obbiettivo: gli obbiettivi variano in base alle persone ed al contesto. Un hacker e` qualcuno che raggiunge il proprio obbiettivo superando le norme culturali e sociali.</p>
<p>Nell'immagine appaiono due definizioni, la prima che abbiamo già analizzato, è la definizione contenuta nel Jargon File e in fondo appare quella dell'Oxford Dictionary.
Si evince che il significato della parola hacker nel gergo comune si è via via svuotato per poi andare a sostituire quello del termine cracker.</p>
<p>Un cracker è una persona che fa un uso non previsto e malevolo di un sistema informatico.
Nel Jargon File viene specificato che ci si aspetta che un hacker abbia compiuto del cracking e ne conosca le tecniche ma ma debba velocemente maturare verso forme creative più nobili.</p>
<h2>Chiave di lettura</h2> <h2>Chiave di lettura</h2>
<p>Nella storia della cultura hacker si possono distinguere tre tipi di persone:</p> <p>Nella storia della cultura hacker si possono distinguere tre tipi di persone:</p>
<ul> <ul>
@ -140,46 +139,42 @@ Nel Jargon File viene specificato che ci si aspetta che un hacker abbia compiuto
<p>gli esperti di determinate tipologie di hardware o software, come Bruce Schneier</p> <p>gli esperti di determinate tipologie di hardware o software, come Bruce Schneier</p>
</li> </li>
<li> <li>
<p>i makers, coloro che costruiscono ciò che gli altri usano, come Bill Gates. <p>i makers, coloro che costruiscono cio` che gli altri usano, come Bill Gates.
Chiaramente moltissime delle personalità di cui parleremo rientrano in più di una di queste categoria. In tutti i casi è importante capire che sono tre approcci complementari.</p> Chiaramente moltissime delle personalita` di cui parleremo rientrano in piu` di una di queste categoria. In tutti i casi e` importante capire che sono tre approcci complementari.</p>
</li> </li>
</ul> </ul>
<h2>Storia</h2> <h2>Storia</h2>
<h3>In the beginning there were the real programmers</h3> <h3>In the beginning there were the real programmers</h3>
<p>La storia della cultura hacker inizia da persone che all'epoca chiaramente non si nominavano tali.</p> <p>La storia della cultura hacker inizia da persone che all'epoca chiaramente non si nominavano tali.</p>
<p>Persone che solitamente avevano un background in elettronica o fisica e si occupavano di batch computing, ovvero l'uso del computer in maniera non interattiva, solitamente per scopi scientifici.</p> <p>Persone che solitamente avevano un background in elettronica o fisica e si occupavano di batch computing, ovvero l'uso del computer in maniera non interattiva, solitamente per scopi scientifici.</p>
<p>Fra i più famosi, Seymour Cray: si dice abbia una volta scritto un sistema operativo in linguaggio macchina tramite gli switch frontali di un computer da lui progettato che funzionò al primo avvio.</p> <p>Fra i piu` famosi, Seymour Cray: si dice abbia una volta scritto un sistema operativo in linguaggio macchina tramite gli switch frontali di un computer da lui progettato che funziono` al primo avvio.</p>
<p>Queste persone rientrano nella definizione di hacker che prende in considerazione l'esperienza in un campo, quella del calcolo scientifico, soppiantato poi dalla computazione interattiva.</p> <p>Queste persone rientrano nella definizione di hacker che prende in considerazione l'esperienza in un campo, quella del calcolo scientifico, soppiantato poi dalla computazione interattiva.</p>
<p>Da qui parte il primo filone della storia della cultura hacker, quello universitario.</p> <p>Da qui parte il primo filone della storia della cultura hacker, quello universitario.</p>
<h4>I primi hacker, la tribù connessa</h4> <h4>I primi hacker, la tribu` connessa</h4>
<p>Rimanendo all'interno delle università gli albori della cultura hacker sono estremamente legati alle macchine che queste istituzioni mettevano a disposizione degli studenti.</p> <p>Rimanendo all'interno delle universita` gli albori della cultura hacker sono estremamente legati alle macchine che queste istituzioni mettevano a disposizione degli studenti.</p>
<p>Le macchine preferite dagli hacker appartenevano alla linea dei PDP, prodotti dalla Digital Equipment Corporation (DEC). <p>Le macchine preferite dagli hacker era la linea dei PDP, prodotti dalla Digital Equipment Corporation (DEC).</p>
Lo stesso PDP-11, come evidenziato da <a href="https://web.archive.org/web/20080718223330/cm.bell-labs.com/cm/cs/who/dmr/chist.html">questo racconto</a>, è stato molto influente nello sviluppo del linguaggio C.</p> <p>Nei laboratori del MIT, nonostante utilizzassero le stesse macchine che in altre universita` (PDP-10 in particolare), alcuni studenti decisero di sviluppare un proprio sistema operativo, l'Incompatible Time Sharing System, con l'obbiettivo di poter utilizzare un linguaggio di piu` alto livello (LISP, lingua franca della cultura hacker) rispetto al sistema operativo distribuito da DEC nei PDP.</p>
<p><img alt="pdp-11" src="../../../../../wp-content/uploads/2019/pdp11.jpg"></p> <p>Questo e` un atteggiamento esemplificativo della cultura hacker di quel tempo: esplorare un sistema nei dettagli per poi superarne i limiti in maniera creativa.</p>
<p>Nei laboratori del MIT, nonostante utilizzassero le stesse macchine che in altre università (PDP-10 in particolare), alcuni studenti decisero di sviluppare un proprio sistema operativo, l'Incompatible Time Sharing System, con l'obbiettivo di poter utilizzare un linguaggio di più alto livello (LISP, lingua franca della cultura hacker) rispetto al sistema operativo distribuito da DEC nei PDP.</p> <p>Nel frattempo stava nascendo Arpanet, per altro inizialmente costituita da computer della linea dei PDP, che forniva l'accesso a centinaia di universita` e laboratori di ricerca.</p>
<p>Questo è un atteggiamento esemplificativo della cultura hacker di quel tempo: esplorare un sistema nei dettagli per poi superarne i limiti in maniera creativa.</p> <p>Questo permise a moltissimi hacker di superare le loro cerchie ristrette e condividere i propri lavori con una massa sempre piu` ampia di entusiasti.</p>
<p>Nel frattempo stava nascendo Arpanet, per altro inizialmente costituita da computer della linea dei PDP, che forniva l'accesso a centinaia di università e laboratori di ricerca.</p>
<p>Questo permise a moltissimi hacker di superare le loro cerchie ristrette e condividere i propri lavori con una massa sempre più ampia di entusiasti.</p>
<p>Arpanet permise la propagazione di tantissimi artefatti, fra questi le prime versioni del Jargon File.</p> <p>Arpanet permise la propagazione di tantissimi artefatti, fra questi le prime versioni del Jargon File.</p>
<h4>La nascita di Unix</h4> <h4>La nascita di Unix</h4>
<p>Nel frattempo, nello stesso anno in cui nacque Arpanet, nei Bell Labs veniva sviluppato Unix.</p> <p>Nel frattempo, nello stesso anno in cui nacque Arpanet, nei Bell Labs veniva sviluppato Unix.</p>
<p>All'epoca ogni computer forniva strumenti ed interfacce incompatibili fra loro. L'idea di Ken Thompson è stata quella di fornire un'interfaccia unificata e le stesse funzionalità su macchine diverse.</p> <p>All'epoca ogni computer forniva strumenti ed interfacce incompatibili fra loro. L'idea di Ken Thompson e` stata quella di fornire un'interfaccia unificata e le stesse funzionalita` su macchine diverse.</p>
<p>Per raggiungere questo scopo, ovvero un sistema operativo universale chiamato Unix, Dennis Ritchie inventò un nuovo linguaggio che potesse facilitare lo sviluppo per Thompson: C. <p>Per raggiungere questo scopo, ovvero un sistema operativo universale chiamato Unix, Dennis Ritchie invento` un nuovo linguaggio che potesse facilitare lo sviluppo per Thompson: C.
Anche C ha lo stesso obbiettivo di Unix, la portabilità fra macchine diverse.</p> Anche C ha lo stesso obbiettivo di Unix, la portabilita` fra macchine diverse.</p>
<p>C è sopravvissuto fino ad oggi e la filosofia di Unix, Keep It Simple and Stupid, è rimasta valida nei suoi discendenti.</p> <p>C e` sopravvissuto fino ad oggi e la filosofia di Unix, Keep It Simple and Stupid, e` rimasta valida nei suoi discendenti.</p>
<h3>Freak + Phone = Phreaking</h3> <h3>Freak + Phone = Phreaking</h3>
<p>Il reverse engineering è una pratica comune a molti hacker che consiste nel deconstruire un oggetto (o successivamente del software) in modo da rivelarne il funzionamento.</p> <p>Il reverse engineering e` una pratica comune a molti hacker che consiste nel deconstruire un oggetto (o successivamente del software) in modo da rivelarne il funzionamento.</p>
<p>I phreaker si occupano del reverse engineering della rete telefonica, usando nel 1970 dei toni audio per emettere comandi in rete.</p> <p>I phreaker si occupano del reverse engineering della rete telefonica, usando nel 1970 dei toni audio per emettere comandi in rete.</p>
<p>Il più celebre fra questi è John Draper che scoprì che il fischietto giocattolo fornito all'interno dei cereali Cap'n Crunch emetteva un tono a 2600 Hz, coincidentalmente lo stesso utilizzato dalle linee telefoniche per instradare le chiamate.</p> <p>Il piu` celebre fra questi e` John Draper che scopri` che il fischietto giocattolo fornito all'interno dei cereali Cap'n Crunch emetteva un tono a 2600 Hz, coincidentalmente lo stesso utilizzato dalle linee telefoniche per instradare le chiamate.</p>
<p><img alt="John Draper e il fischietto blue" src="../../../../../wp-content/uploads/2019/draper.jpg"></p> <p>Gli stessi Jobs e Wozniak iniziarono la loro carriera producendo delle blue box che permettevano di fare chiamate gratis o internazionali a prezzi ridotti.</p>
<p>Gli stessi Jobs e Wozniak iniziarono la loro carriera producendo delle blue box che permettevano di fare chiamate gratis o internazionali a prezzi ridotti.
L'azione di John Draper ebbe anche effetti benefici: le telefonate in quegli anni erano molto costose, specialmente da stato a stato, ed il fischietto blu permetteva a persone molto isolate in quegli anni di comunicare come mai prima di allora.</p>
<h3>Digressione: Anarco Illuminismo</h3> <h3>Digressione: Anarco Illuminismo</h3>
<p>La cultura hacker, perlomeno fino a questa parte del racconto, raccoglie in sé ideali di due ideologie differenti.</p> <p>La cultura hacker, perlomeno fino a questa parte del racconto, raccoglie in se` ideali di due ideologie differenti.</p>
<p>Da una parte l'ideale illuminista della diffusione della conoscenza era l'obbiettivo ultimo di moltissimi hacker, forse secondo solo al piacere intellettuale.</p> <p>Da una parte l'ideale illuminista della diffusione della conoscenza era l'obbiettivo ultimo di moltissimi hacker, forse secondo solo al piacere intellettuale.</p>
<p>Le informazioni venivano sempre condivise su Arpanet e successivamente su Internet e concesse senza alcuna restrizione.</p> <p>Le informazioni venivano sempre condivise su Arpanet e successivamente su Internet e concesse senza alcuna restrizione.</p>
<p>Dall'altra parte questo obbiettivo veniva spesso raggiunto con pratiche anarchiche, come la distruzione o manipolazione di oggetti al fine di comprenderli (cracking e phreaking) o l'apertura forzata di laboratori per concedere a masse di entusiasti l'accesso a strumentazione costosa o rara.</p> <p>Dall'altra parte questo obbiettivo veniva spesso raggiunto con pratiche anarchiche, come la distruzione o manipolazione di oggetti al fine di comprenderli (cracking e phreaking) o l'apertura forzata di laboratori per concedere a masse di entusiasti l'accesso a strumentazione costosa o rara.</p>
<p>Nonostante ciò fino ad allora non era stato compiuto nessun tentativo di formalizzare gli ideali di questa cultura.</p> <p>Nonostante cio` fino ad allora non era stato compiuto nessun tentativo di formalizzare gli ideali di questa cultura.</p>
<h3>L'era del software proprietario</h3> <h3>L'era del software proprietario</h3>
<p>Negli anni 80 la cultura hacker era sostanzialmente spaccata in tre gruppi diversi, dagli ideali simili ma organizzati attorno a tecnologie estremamente differenti:</p> <p>Negli anni 80 la cultura hacker era sostanzialmente spaccata in tre gruppi diversi, dagli ideali simili ma organizzati attorno a tecnologie estremamente differenti:</p>
<ul> <ul>
@ -190,19 +185,19 @@ L'azione di John Draper ebbe anche effetti benefici: le telefonate in quegli ann
<p>il gruppo di Unix e C, che poneva le basi di internet e dei protocolli ancora oggi utilizzati</p> <p>il gruppo di Unix e C, che poneva le basi di internet e dei protocolli ancora oggi utilizzati</p>
</li> </li>
<li> <li>
<p>una serie meno organizzata di gruppetti più anarchici che si dedicavano al reverse engineering e allo studio di tecnologie e linguaggi alternativi a quelle viste precedentemente</p> <p>una serie meno organizzata di gruppetti piu` anarchici che si dedicavano al reverse engineering e allo studio di tecnologie e linguaggi alternativi a quelle viste precedentemente</p>
</li> </li>
</ul> </ul>
<p>Nel frattempo iniziavano a diventare più comuni le prime macchine prodotte da Apple e Microsoft. In realtà questi ebbero un'importanza marginale nella cultura hacker in quanto erano sistemi sottoposti a continue evoluzioni imposte dall'alto e privi di strumenti per l'analisi e lo sviluppo.</p> <p>Nel frattempo iniziavano a diventare piu` comuni le prime macchine prodotte da Apple e Microsoft. In realta` questi ebbero un'importanza marginale nella cultura hacker in quanto erano sistemi sottoposti a continue evoluzioni imposte dall'alto e privi di strumenti per l'analisi e lo sviluppo.</p>
<p>La cultura hacker era alla fine del suo slancio iniziale e era ormai un dato di fatto che colossi come Microsoft e IBM avrebbero dominato l'industria del software e di internet.</p> <p>La cultura hacker era alla fine del suo slancio iniziale e era ormai un dato di fatto che colossi come Microsoft e IBM avrebbero dominato l'industria del software e di internet.</p>
<p>Nel 1983 DEC annunciò la fine della linea dei PDP, definendo così la morte del primo gruppo. <p>Nel 1983 DEC annuncio` la fine della linea dei PDP, definendo cosi` la morte del primo gruppo.
Nel 1984 Bell fu scorporata e AT&amp;T acquisi i diritti di molti dei suoi prodotti, tra cui Unix.</p> Nel 1984 Bell fu scorporata e AT&amp;T acquisi i diritti di molti dei suoi prodotti, tra cui Unix.</p>
<p>L'hackerdom vide il pericolo che uno dei suoi più cari lavori venisse rubato da una grande compagnia e facesse la fine di tutto il software proprietario di quell'epoca.</p> <p>L'hackerdom vide il pericolo che uno dei suoi piu` cari lavori venisse rubato da una grande compagnia e facesse la fine di tutto il software proprietario di quell'epoca.</p>
<p>Per questo in quel decennio si combatté una dura battaglia fra le prime versioni di BSD Unix, nato dalle ceneri di Unix, e la versione proprietaria di AT&amp;T. <p>Per questo in quel decennio si combatte` una dura battaglia fra le prime versioni di BSD Unix, nato dalle ceneri di Unix, e la versione proprietaria di AT&amp;T.
BSD Unix si diffuse in maniera capillare, in particolare nelle infrastrutture di rete data la qualità delle sue implementazioni, ma AT&amp;T vinse molte battaglie legali appropriandosi di vari standard.</p> BSD Unix si diffuse in maniera capillare, in particolare nelle infrastrutture di rete data la qualita` delle sue implementazioni, ma AT&amp;T vinse molte battaglie legali appropriandosi di vari standard.</p>
<h3>Verso una prima ideologia hacker</h3> <h3>Verso una prima ideologia hacker</h3>
<p>In quegli anni era ormai ovvio che senza acquisire maggiore consapevolezza molto del potere in mano a queste comunità sarebbe sparito lentamente.</p> <p>In quegli anni era ormai ovvio che senza acquisire maggiore consapevolezza molto del potere in mano a queste comunita` sarebbe sparito lentamente.</p>
<p>Inoltre iniziavano ad avere risalto i primi fenomeni di cracking e l'intervento dei governi si fece più severo (benché non sia paragonabile alla copertura che tali eventi hanno oggi).</p> <p>Inoltre iniziavano ad avere risalto i primi fenomeni di cracking e l'intervento dei governi si fece piu` severo (benche` non sia paragonabile alla copertura che tali eventi hanno oggi).</p>
<p>La soluzione proposta risiede nella congiunzione di tre idee:</p> <p>La soluzione proposta risiede nella congiunzione di tre idee:</p>
<ul> <ul>
<li> <li>
@ -216,37 +211,32 @@ BSD Unix si diffuse in maniera capillare, in particolare nelle infrastrutture di
</li> </li>
</ul> </ul>
<h4>Decentralizzazione</h4> <h4>Decentralizzazione</h4>
<p>La decentralizzazione è il processo in cui un'attività viene distribuita in maniera equa fra tutti i partecipanti, in opposizione ad un'organizzazione più gerarchica e autoritaria.</p> <p>La decentralizzazione e` il processo in cui un'attivita` viene distribuita in maniera equa fra tutti i partecipanti, in opposizione ad un'organizzazione piu` gerarchica e autoritaria.</p>
<p>L'assunto alla base è il principio Manzoniano per cui una persona che detiene il potere si ritroverà prima o poi costretta a compiere decisioni non etiche. La soluzione è quella di ridurre il potere distribuendolo ai margini dell'infrastruttura.</p> <p>L'assunto alla base e` il principio Manzoniano per cui una persona che detiene il potere si ritrovera` prima o poi costretta a compiere decisioni non etiche. La soluzione e` quella di ridurre il potere distribuendolo ai margini dell'infrastruttura.</p>
<p>Un'esempio di decentralizzazione è l'architettura di internet, almeno nelle sue prime forme, dove non c'è un'autorità centrale ma ogni nodo ha eguale importanza. <p>Un'esempio di decentralizzazione e` l'architettura di internet, almeno nelle sue prime forme, dove non c'e` un'autorita` centrale ma ogni nodo ha eguale importanza.
Un'esempio più attuale è la rete BitTorrent.</p> Un'esempio piu` attuale e` la rete Bittorrent.</p>
<h4>Crittografia</h4> <h4>Crittografia</h4>
<p>Nel 1992 nasce una mailing list (ad oggi ancora attiva) chiamata Cypherpunks, dal gioco fra i termini cypher e cyberpunk.</p> <p>Nel 1992 nasce una mailing list (ad oggi ancora attiva) chiamata Cypherpunk, dal gioco fra i termini cypher e cyberpunk.</p>
<p>Tutte le discussioni di questo gruppo vertono sull'uso della crittografia e sul concetto di privacy e anonimato.</p> <p>Tutte le discussioni di questo gruppo vertono sull'uso della crittografia e sul concetto di privacy e anonimato.</p>
<p>L'idea alla base (<a href="http://project.cyberpunk.ru/idb/cyberpunk_manifesto.html">Cypherpunk's Manifesto</a>) è che la privacy è necessaria per poter costituire una società aperta nell'era dell'informazione; non c'è alcuna garanzia che i governi o le corporazioni si facciano garanti di questi ideali quindi la privacy va difesa dai singoli.</p> <p>L'idea alla base (Cypherpunk's Manifesto) e` che la privacy e` necessaria per poter costituire una societa` aperta nell'era dell'informazione; non c'e` alcuna garanzia che i governi o le corporazioni si facciano garanti di questi ideali quindi la privacy va difesa dai singoli.</p>
<p>Il gruppo ha portato alla creazione di software crittografico (fra cui Tor), protocolli per la comunicazione riservata e atti di disobbedienza civile.</p> <p>Il gruppo ha portato alla creazione di software crittografico (fra cui TOR), protocolli per la comunicazione riservata e atti di disobbedienza civile.</p>
<p>Sempre in quegli anni, mentre il governo americano cercava di indebolire le infrastrutture di telecomunicazione con il Telecommunications Act del '96, John Perry Barlow pubblicò un manifesto: <a href="https://www.eff.org/cyberspace-independence">la dichiarazione di independenza del Cyberspazio</a>.
Nel manifesto il governo (americano) viene dipinto come un gigante di acciaio e carne e gli hacker come individui autoeletti, proveniente dal futuro, che si oppongo all'invasione di potere nel cyberspazio. Barlow evidenzia come le leggi che governano questa comunità indipendente sono del tutto estranee alle angherie e alle regole imposte con la forza del mondo prima del cyberspazio.</p>
<p>Un documento ben più estremo di quello di Barlow è il <a href="http://web.archive.org/web/20110922120111/http://www.cypherpunks.to/faq/cyphernomicron/cyphernomicon.txt">Cyphernomicon</a> di Timothy C. May, uno dei primi ingegneri di Intel e importantissima figura nella mailing list Cypherpunks.
Nel Cyphernomicon vengono discussi argomenti con una forte connotazione antagonista e vengono affrontati molti argomenti tabù.</p>
<h4>Software Libero</h4> <h4>Software Libero</h4>
<p>Richard Stallman nel 1980 modificò il software di una stampante Xerox in modo da mandare un messaggio di posta elettronica agli utenti in attesa di stampa ogni qualvolta la stampante si bloccasse per qualche errore.</p> <p>Richard Stallman aveva modificato il software di una stampante xerox in modo da mandare un messaggio di posta elettronica agli utenti in attesa di stampa ogni qualvolta la stampante si bloccasse per qualche errore.</p>
<p>Quando nel 1980 la stampante fu sostituita Xerox si rifiutò di concedere a Stallman le facoltà necessarie per poter modificare il firmware della nuova stampante. Chiaramente questo inconveniente fu risolto con delle pratiche di reverse engineering ma questo inconveniente convinse Stallman a mettere le basi per l'ideologia del software libero.</p> <p>Quando nel 1980 la stampante fu sostituita Xerox si rifiuto` di concedere a Stallman le facolta` necessarie per poter modificare il firmware della nuova stampante. Chiaramente questo inconveniente fu risolto con delle pratiche di reverse engineering ma questo inconveniente convinse Stallman a mettere le basi per l'ideologia del software libero.</p>
<p>Nel 1984 Stallman si licenziò dal MIT per lavorare a tempo pieno al suo progetto, GNU: una versione di Unix modificata che concedesse agli utenti finali le libertà da lui desiderate tramite l'utilizzo esclusivo di software libero. <p>Nel 1984 Stallman si licenzio` dal MIT per lavorare a tempo pieno al suo progetto, GNU: una versione di Unix modificata che concedesse agli utenti finali le liberta` da lui desiderate tramite l'utilizzo esclusivo di software libero.
Nel rispetto della cultura hacker GNU conquistò subito l'interesse della comunità.</p> Nel rispetto della cultura hacker GNU conquisto` subito l'interesse della comunita`.</p>
<p>Il progetto GNU è una collezione di software di qualsiasi tipo che rispetti le libertà garantite dalla licenza <a href="https://en.wikipedia.org/wiki/GNU_General_Public_License">GPL</a>; fra questi i più famosi sono <a href="https://gcc.gnu.org/">GCC</a>, <a href="https://www.gnu.org/software/emacs/">emacs</a>, <a href="https://www.gnu.org/software/octave/">Octave</a>, <a href="https://www.r-project.org/">R</a> ma anche software di attivismo, gestione delle finanze e tant'altro.</p> <p>Il progetto GNU e` una collezione di software di qualsiasi tipo che rispetti le liberta` garantite dalla licenza <a href="https://en.wikipedia.org/wiki/GNU_General_Public_License">GPL</a>; fra questi i piu` famosi sono <a href="https://gcc.gnu.org/">GCC</a>, <a href="https://www.gnu.org/software/emacs/">emacs</a>, <a href="https://www.gnu.org/software/octave/">Octave</a>, <a href="https://www.r-project.org/">R</a> ma anche software di attivismo, gestione delle finanze e tant'altro.</p>
<p>Il progetto sarebbe dovuto essere completato da un kernel, HURD, che ad oggi è ancora molto instabile.</p> <p>Il progetto sarebbe dovuto essere completato da un kernel, HURD, che ad oggi e` ancora molto instabile.</p>
<p>Nel frattempo, in Europa, Linus Torvalds, in sintonia con quell'atteggiamento di opposizione e rivolta tipico della cultura hacker, iniziò a sviluppare il kernel Linux seguendo un approccio che fu fortemente criticato dal suo professore, Andrew S. Tanenbaum. <a href="https://en.wikipedia.org/wiki/Tanenbaum-Torvalds_debate">Questo dibattito fu il soggetto di un'enorme flame war su usenet</a>.</p> <p>Nel frattempo, in Europa, Linus Torvalds, in sintonia con quell'atteggiamento di opposizione e rivolta tipico della cultura hacker , inizio` a sviluppare il kernel Linux seguendo un approccio inusuale che fu fortemente criticato dal suo professore, Andrew S. Tanenbaum. <a href="https://en.wikipedia.org/wiki/Tanenbaum-Torvalds_debate">Questo dibattito fu il soggetto di un'enorme flame war su usenet</a>.</p>
<p>Linus per lavorare al suo progetto stava utilizzato moltissimi degli strumenti della suite di GNU e fu contattato da Stallman per collaborare ed adottare Linux come kernel, pezzo mancante del sistema operativo GNU.</p> <p>Linus per lavorare al suo progetto stava utilizzato moltissimi degli strumenti della suite di GNU e fu contattato da Stallman per collaborare ed adottare Linux come kernel, pezzo mancante del sistema operativo GNU.</p>
<p>Questo ha portato a quello che oggi viene chiamato da molti Linux ma che in realtà andrebbe chiamato <a href="https://www.gnu.org/gnu/why-gnu-linux.html">GNU/Linux</a>.</p> <p>Questo ha portato a quello che oggi viene chiamato da molti Linux ma che in realta` andrebbe chiamato <a href="https://www.gnu.org/gnu/why-gnu-linux.html">GNU/Linux</a>.</p>
<p><img alt="Linus Torvalds e Richard Stallman" src="../../../../../wp-content/uploads/2019/stl.jpg"></p>
<h2>Lo stato della cultura hacker oggi</h2> <h2>Lo stato della cultura hacker oggi</h2>
<p>Abbiamo visto fino ad ora che ci sono stati tre filoni della cultura hacker, quello universitario, quello più amatoriale e pratico, rivolto all'exploitation e infine quello più ideologico.</p> <p>Abbiamo visto fino ad ora che ci sono stati tre filoni della cultura hacker, quello universitario, quello piu` amatoriale e pratico, rivolto all'exploitation e infine quello piu` ideologico.</p>
<p>È molto difficile cercare di interpretare la direzione di questa sottocultura (se ancora si può definire tale), specialmente per chi come me non ne ha le competenze benché si ritrovi spesso a parlare e conoscere con persone che hanno fatto proprio l'atteggiamento della cultura hacker.</p> <p>E` molto difficile cercare di interpretare la direzione di questa sottocultura (se ancora si puo` definire tale), specialmente per chi come me non ne ha le competenze benche` si ritrovi spesso a parlare e conoscere con persone che hanno fatto proprio l'atteggiamento della cultura hacker.</p>
<p>Nonostante ciò ogni anno ho provato a trasmettere agli studenti delle mie considerazioni sulla situazione presente, da differenti punti di vista.</p> <p>Nonostante cio` ogni anno ho provato a trasmettere agli studenti delle mie considerazioni sulla situazione presente, da differenti punti di vista.</p>
<h3>Disobbedienza civile elettronica</h3> <h3>Disobbedienza civile elettronica</h3>
<p>Non penso di dovermi soffermare ma due figure molto importanti della cultura hacker sono Edward Snowden e Julian Assange (Mendax).</p> <p>Non penso di dovermi soffermare ma due figure molto importanti della cultura hacker sono Edward Snowden e Julian Assange (Mendax).</p>
<p>Queste due persone e tutto quello che hanno fatto rappresentano <a href="http://www.mantellini.it/2012/08/17/perche-assange-e-internet/">ciò che il potere teme di internet</a>.</p> <p>Queste due persone e tutto quello che hanno fatto rappresentano <a href="http://www.mantellini.it/2012/08/17/perche-assange-e-internet/">cio` che il potere teme di internet</a>.</p>
<p>Inoltre, riguardo i fatti recenti:</p> <p>Inoltre, riguardo i fatti recenti:</p>
<blockquote> <blockquote>
<p>A un certo punto su Julian Assange è diventato impossibile dire qualsiasi cosa. È semplicemente accaduto, non è colpa di nessuno. Da un certo momento in avanti, dire qualcosa di sensato su Assange, qualcosa di non ovvio e cialtrone, di vagamente correlato ad unidea minima di verità sulla vita e le gesta dellhacker australiano dai capelli argentati è diventato non solo complicato ma perfino inutile. Troppe cose nel frattempo si erano sommate, troppe bugie, troppe interpretazioni di segno opposto si erano saldamente ancorate alla biografia di un uomo indubitabilmente unico, i cui tratti biografici e di comportamento hanno disegnato fin dallinizio, a complicare ulteriormente le cose, i tratti della stranezza, se non quelli del disturbo psichico. <p>A un certo punto su Julian Assange è diventato impossibile dire qualsiasi cosa. È semplicemente accaduto, non è colpa di nessuno. Da un certo momento in avanti, dire qualcosa di sensato su Assange, qualcosa di non ovvio e cialtrone, di vagamente correlato ad unidea minima di verità sulla vita e le gesta dellhacker australiano dai capelli argentati è diventato non solo complicato ma perfino inutile. Troppe cose nel frattempo si erano sommate, troppe bugie, troppe interpretazioni di segno opposto si erano saldamente ancorate alla biografia di un uomo indubitabilmente unico, i cui tratti biografici e di comportamento hanno disegnato fin dallinizio, a complicare ulteriormente le cose, i tratti della stranezza, se non quelli del disturbo psichico.
@ -255,22 +245,25 @@ Nel rispetto della cultura hacker GNU conquistò subito l'interesse della comuni
<p>I primi due anni ho provato a concentrarmi su queste domande:</p> <p>I primi due anni ho provato a concentrarmi su queste domande:</p>
<ul> <ul>
<li> <li>
<p>la cultura hacker ha ancora una componente di forte antagonismo nei confronti del potere stabilito?</p> <p>la cultura hacker ha ancora una componente anarchica?</p>
</li> </li>
<li> <li>
<p>Sono ancora possibili atti come quelli degli attivisti del cypherpunk?</p> <p>Sono ancora possibili atti come quelli degli attivisti del cypherpunk?</p>
</li> </li>
<li>
<p>In che ottica possiamo inquadrare le azioni di Assange e Snowden?</p>
</li>
</ul> </ul>
<p>Quando si parla di Assange e Snowden si parla di politica e media, ovvero potere e controllo.</p> <p>Quando si parla di Assange e Snowden si parla di politica e media, ovvero potere e controllo.</p>
<p>Prima dell'arrivo di internet e dell'informatica il cuore degli organismi di potere e controllo era facile da individuare.</p> <p>Prima dell'arrivo di internet e dell'informatica il cuore degli organismi di potere e controllo era facile da individuare.</p>
<p>Penso al fascismo, dove come spiega Mosse in "Il fascismo. Verso una teoria generale", l'architettura stessa aveva carattere intimidatorio.</p> <p>Penso al fascismo, dove come spiega Mosse in "Il fascismo. Verso una teoria generale", l'architettura stessa aveva carattere intimidatorio.</p>
<p>Gli "antagonisti" del potere non dovevano fare altro che riunirsi in qualche maniera organizzata e far fronte a queste strutture, fisicamente affrontare la loro solidità. <p>Gli "antagonisti" del potere non dovevano fare altro che riunirsi in qualche maniera organizzata e far fronte a queste strutture, fisicamente affrontare la loro solidita`.
È il motivo per cui nella cultura pop V per Vendetta termina con l'esplosione del parlamento e Fight Club con il crollo delle banche.</p> E` il motivo per cui nella cultura pop V per Vendetta termina con l'esplosione del parlamento e Fight Club con il crollo delle banche.</p>
<p>Il regime collassa una volta che l'opposizione ne ha distrutto la fortezza in cui risiede.</p> <p>Il regime collassa una volta che l'opposizione ne ha distrutto la fortezza in cui risiede.</p>
<p>Questo ad oggi non è più vero, gli edifici benché siano ancora visibili si sono svuotati e il potere si muove come desidera attraverso un flusso ininterrompibile di bits.</p> <p>Questo ad oggi non e` piu` vero, gli edifici benche` siano ancora visibili si sono svuotati e il potere si muove come desidera attraverso un flusso ininterrompibile di bits.</p>
<p>Così quando nel <a href="https://en.wikipedia.org/wiki/2016_Turkish_coup_d%27%C3%A9tat_attempt">2016</a> i militari turchi riuscirono a far fuoco sul parlamento e prendere il controllo di radio e televisioni, Erdogan, fisicamente non presente, con una semplice chiamata Facetime riuscì a recuperare il controllo della situazione prendendo contatto e mobilitando la resistenza.</p> <p>Cosi` quando nel <a href="https://en.wikipedia.org/wiki/2016_Turkish_coup_d%27%C3%A9tat_attempt">2016</a> i militari turchi riuscirono a far fuoco sul parlamento e prendere il controllo di radio e televisioni, Erdogan, fisicamente non presente, con una semplice chiamata Facetime riusci` a recuperare il controllo della situazione prendendo contatto e mobilitando la resistenza.</p>
<p>Possiamo a questo punto provare ad affermare che il potere risieda nelle persone e non più nelle strutture fisiche.</p> <p>Possiamo a questo punto provare ad affermare che il potere risieda nelle persone e non piu` nelle strutture fisiche.</p>
<p>Eppure quando nell'aprile del 2018 il congresso statunitense ha affrontato Zuckerberg con un documento di più di 1000 pagine, il potere di Facebook non era presente neanche sotto la forma fisica di un ragazzo di trent'anni.</p> <p>Eppure quando nell'aprile del 2018 il congresso statunitense ha affrontato Zuckerberg con un documento di piu` di 1000 pagine, il potere di Facebook non era presente neanche sotto la forma fisica di un ragazzo di trent'anni.</p>
<p>Questo ce lo dimostra il fatto che a domande come:</p> <p>Questo ce lo dimostra il fatto che a domande come:</p>
<ul> <ul>
<li> <li>
@ -286,7 +279,7 @@ Nel rispetto della cultura hacker GNU conquistò subito l'interesse della comuni
<p>"What data is being sold?"</p> <p>"What data is being sold?"</p>
</li> </li>
<li> <li>
<p>"Is Facebook censoring specific groups?"</p> <p>"Is facebook censoring specific groups?"</p>
</li> </li>
<li> <li>
<p>"Whats Facebooks reach beyond its website?"</p> <p>"Whats Facebooks reach beyond its website?"</p>
@ -295,38 +288,37 @@ Nel rispetto della cultura hacker GNU conquistò subito l'interesse della comuni
<p>"How much information does Facebook have on non-Facebook users?"</p> <p>"How much information does Facebook have on non-Facebook users?"</p>
</li> </li>
</ul> </ul>
<p>Zuckerberg ha potuto affermare che non conosce la risposta o che può chiedere al suo team e rispondere in futuro.</p> <p>Zuckerberg ha potuto affermare che non conosce la risposta o che puo` chiedere al suo team e rispondere in futuro.</p>
<blockquote> <blockquote>
<p>Whether you know it or not, if you are a hacker, you are a revolutionary</p> <p>Whether you know it or not, if you are a hacker, you are a revolutionary</p>
</blockquote> </blockquote>
<p>Una volta compreso ciò queste parole di Doctor Crash su <a href="http://phrack.org/issues/6/3.html">phrack</a> appaiono ingenue.</p> <p>Una volta compreso cio` queste parole di Doctor Crash su <a href="http://phrack.org/issues/6/3.html">phrack</a> appaiono ingenue.</p>
<p>Gli hacker combattono per il libero accesso all'informazione senza poi discutere di come queste nuove conoscenze andrebbero applicate.</p> <p>Gli hacker combattono per il libero accesso all'informazione senza poi discutere di come queste nuove conoscenze andrebbero applicate.</p>
<p>Sempre Doctor Crash scrive:</p> <p>Sempre Doctor Crash scrive:</p>
<blockquote> <blockquote>
<p>There is one last method of this war against computer abusers. This is a less subtle, less electronic method, but much more direct and gets the message across. I am speaking of what is called Anarchy. Anarchy as we know it does not refer to the true meaning of the word (no ruling body), but to the process of physically destroying buildings and governmental establishments. This is a very drastic, yet vital part of this "techno-revolution." </p> <p>There is one last method of this war against computer abusers. This is a less subtle, less electronic method, but much more direct and gets the message across. I am speaking of what is called Anarchy. Anarchy as we know it does not refer to the true meaning of the word (no ruling body), but to the process of physically destroying buildings and governmental establishments. This is a very drastic, yet vital part of this "techno-revolution." </p>
</blockquote> </blockquote>
<p>Questo, complice la cultura hacker, oggi non è più possibile.</p> <p>Questo, complice la cultura hacker, oggi non e` piu` possibile.</p>
<p>Per questo, la risposta alle prima domanda è no, la cultura hacker non ha mantenuto, A MIO PARERE, una componente antagonista. Questo perché, azioni di protesta come quelle degli hacktivisti alla Anonymous, o come nel più romanzato Mr Robot, ammontano a nulla per i motivi sopracitati. Lo stesso leak dei documenti della NSA compiuto da Snowden ha avuto effetti <a href="https://web.archive.org/web/20150810184125/https://www.washingtonpost.com/news/volokh-conspiracy/wp/2015/04/09/edward-snowdens-impact/">discutibili</a> e di sicuro non ci ha portati ad un cambiamento di tendenza nei confronti della <a href="https://www.valigiablu.it/freedom-net-censura-sorveglianza/">tecnosorveglianza</a>.</p>
<h3>Opensource e Free Software</h3> <h3>Opensource e Free Software</h3>
<p>Nell'ultima lezione, anno 2019, mi son concentrato maggiormente sulla cultura del software libero.</p> <p>Quest'ultimo anno mi son concentrato maggiormente sulla cultura del software libero.</p>
<p>Nel 2019 il termine opensource ha soppiantato quello di software libero allo stesso modo di come il termine hacker è stato corrotto mediaticamente andando a ricoprire il significato di cracker.</p> <p>Nel 2019 il termine opensource ha soppiantato quello di software libero allo stesso modo di come il termine hacker e` stato corrotto mediaticamente andando a ricoprire il significato di cracker.</p>
<p>Stallman nel 2007 già ci avvertiva che il software opensource manca l'obbiettivo:</p> <p>Stallman nel 2007 gia` ci avvertiva che il software opensource manca l'obbiettivo:</p>
<blockquote> <blockquote>
<p>I due termini descrivono all'incirca la stessa categoria di software. Ma si basano su valori fondamentalmente diversi. <p>I due termini descrivono all'incirca la stessa categoria di software. Ma si basano su valori fondamentalmente diversi.
L'open source è una metodologia di sviluppo; il software libero è un movimento sociale. Per il movimento per il software libero, il software libero è un imperativo etico, il rispetto essenziale della libertà degli utenti. Al contrario la filosofia dell'open source pensa a come "migliorare" il software soltanto da un punto di vista pratico. Dice che il software non libero è una soluzione non ottimale. Spesso le discussioni sull'“open source” non considerano quel che è giusto o sbagliato, ma solo il successo e la popolarità. </p> L'open source è una metodologia di sviluppo; il software libero è un movimento sociale. Per il movimento per il software libero, il software libero è un imperativo etico, il rispetto essenziale della libertà degli utenti. Al contrario la filosofia dell'open source pensa a come "migliorare" il software soltanto da un punto di vista pratico. Dice che il software non libero è una soluzione non ottimale. Spesso le discussioni sull'“open source” non considerano quel che è giusto o sbagliato, ma solo il successo e la popolarità. </p>
</blockquote> </blockquote>
<p>Quando ancora GNU/Linux girava sotto forma di dischi o floppy Steve Ballmer diceva che il software libero è cancro o comunismo.</p> <p>Quando ancora GNU/Linux girava sotto forma di dischi o floppy Steve Ballmer diceva che il software libero e` cancro o comunismo.</p>
<p>Vent'anni dopo lui stesso afferma di aver sbagliato giudizio e che l'opensource ha divorato il mondo: non solo quasi tutto lo sviluppo avviene utilizzando tool opensource ma banche, data center, agenzie governative, perfino le auto, usano software libero, almeno in parte se non completamente.</p> <p>Vent'anni dopo lui stesso afferma di aver sbagliato giudizio e che l'opensource ha divorato il mondo: non solo quasi tutto lo sviluppo avviene utilizzando tool opensource ma banche, data center, agenzie governative, perfino le auto, usano software libero, almeno in parte se non completamente.</p>
<p>Basta fare un giro su <a href="https://stackshare.io/stacks">stackshare.io</a> per avere un'idea di quanto i colossi del web siano dipendenti dal software opensource.</p> <p>Basta fare un giro su <a href="https://stackshare.io/stacks">stackshare.io</a> per avere un'idea di quanto i colossi del web siano dipendenti dal software opensource.</p>
<p>Inoltre moltissime startup o aziende fondano il loro business sul modello "open-core", ovvero il fornire un'edizione del proprio prodotto come software libero e una versione commerciale solitamente sviluppata a partire dalla precedente.</p> <p>Inoltre moltissime startup o aziende fondano il loro business sul modello "open-core", ovvero il fornire un'edizione del proprio prodotto come software libero e una versione commerciale solitamente sviluppata a partire dalla precedente.</p>
<p>Ne sono un esempio gitlab, redislab e elasticsearch.</p> <p>Ne sono un esempio gitlab, redislab e elasticsearch.</p>
<p>Nonostante l'opensource abbia avuto un successo incomparabile nelle "core tecnologies", come librerie, tooling e linguaggi di programmazione, ha fallito nel liberare l'utente finale, obbiettivo con il quale era nato.</p> <p>Nonostante l'opensource abbia avuto un successo incomparabile nelle "core tecnologies", come librerie, tooling e linguaggi di programmazione, ha fallito nel liberare l'utente finale, obbiettivo con il quale era nato.</p>
<p>Questo lo dimostra il fatto che i servizi forniti dalle SaaS (software as a service) e i grandi servizi di cloud non trasmettono nessuna delle quattro libertà del software libero fino all'utente finale e hanno catturato il potenziale radicale del software libero per renderlo un mero strumento del tutto insignificante e sconosciuto al destinatario del servizio.</p> <p>Questo lo dimostra il fatto che i servizi forniti dalle SaaS (software as a service) e i grandi servizi di cloud non trasmettono nessuna delle quattro liberta` del software libero fino all'utente finale e hanno catturato il potenziale radicale del software libero per renderlo un mero strumento del tutto insignificante e sconosciuto al destinatario del servizio.</p>
<h2>Conclusione: come diventare un hacker</h2> <h2>Conclusione: come diventare un hacker</h2>
<p>ESR <a href="http://www.catb.org/~esr/faqs/hacker-howto.html">mantiene da anni</a> una breve guida a come diventare un hacker, organizzata su cinque punti:</p> <p>ESR <a href="http://www.catb.org/~esr/faqs/hacker-howto.html">mantiene da anni</a> una breve guida a come diventare un hacker, organizzata su cinque punti:</p>
<ol> <ol>
<li> <li>
<p>Il mondo è pieno di problemi affascinanti che aspettano di essere risolti</p> <p>Il mondo e` pieno di problemi affascinanti che aspettano di essere risolti</p>
</li> </li>
<li> <li>
<p>Nessun problema andrebbe risolto due volte</p> <p>Nessun problema andrebbe risolto due volte</p>
@ -335,61 +327,14 @@ L'open source è una metodologia di sviluppo; il software libero è un movim
<p>La noia e la fatica sono malvagi</p> <p>La noia e la fatica sono malvagi</p>
</li> </li>
<li> <li>
<p>La libertà è una buona cosa</p> <p>La liberta` e` una buona cosa</p>
</li> </li>
<li> <li>
<p>Le maniere e la forma non mascherano le competenze</p> <p>Le maniere e la forma non mascherano le competenze</p>
</li> </li>
</ol> </ol>
<h2>Appendice: Hacker oggi</h2>
<p>Immagino che al termine di questa lettura sorga un dubbio: dove sono andati a finire gli hacker?
O meglio, una persona nata inevitabilmente nell'era del <a href="https://www.agendadigitale.eu/cultura-digitale/capitalismo-della-sorveglianza-come-salvarci-dalle-nuove-derive-delleconomia-globale/">capitalismo della sorveglianza</a> dove può imparare e poi mettere in pratica o far sue gli ideali propri della cultura hacker?</p>
<p>Nutro molte pochissime speranze nei confronti del web che a mio avviso è morto nel 1995 quando emersero i primi siti a scopo di lucro. Oggi il web è diventato un agglomerato di isole irraggiungibili le une dall'altre (i famosi walled garden) dove in molti casi si formano comunità di utenti che senza originalità propongono gli stessi contenuti o ripetono le stesse domande. Ne è un esempio reddit la cui qualità è andata degradando di anno in anno nel tentantivo di essere il più accogliente possibile nei confronti dei nuovi utenti. Quando l'effetto <a href="https://en.wikipedia.org/wiki/Eternal_September">eternal september</a> non dovesse bastare, masse di "growth hacker", uffici di marketing o giganti di metallo e carne si impossessano degli ultimi angoli inesplorati del web per renderli una palude pubblicitaria, come è successo a:</p>
<ul>
<li>
<p><a href="https://francescomecca.eu/blog/2018/3/27/addio-reddit/">reddit</a></p>
</li>
<li>
<p>hacker news</p>
</li>
<li>
<p>medium</p>
</li>
<li>
<p>github</p>
</li>
<li>
<p>yahoo</p>
</li>
<li>
<p>youtube</p>
</li>
<li>
<p>la lista è infinita</p>
</li>
</ul>
<p>Come già affermato per i sistemi Microsoft ed Apple, l'assenza di comunità hacker nel web è dovuto alle forti imposizioni (motivate dal profitto) e l'impossibilità di riuso dei costumi e delle conoscenze sviluppati una volta che la piattaforma cambia.</p>
<p>Il catalizzatore della cultura hacker sembra essere in questi anni il carne-spazio, luoghi e situazioni sovversive in cui ho avuto la fortuna di conoscere moltissimi hacker. Consiglio di partire dagli hacklab, gli incontri a cadenza annuale (hackmeeting, offdem), gli spazi occupati e i fablab. Talvolta si ha fortuna anche nelle università, specialmente se ci sono gruppi che partecipano ai Capture The Flag.
Quando si vuole tornare nel cyberspazio è pieno di posti felici (e soprattutto interessanti) che si mantengono ancora distanti dai germi del web:</p>
<ul>
<li>
<p>irc</p>
</li>
<li>
<p>le mailing list</p>
</li>
<li>
<p>i tracker privati</p>
</li>
<li>
<p>forum e blog su reti alternative (Tor, I2P, Freenet)</p>
</li>
<li>
<p>I cyberspazi di incontro delle stesse comunità sovversive: <a href="https://www.autistici.org/">autistici</a>, <a href="riseup.net/">riseup</a>, <a href="disroot.org">disroot</a></p>
</li>
</ul>
<!-- La messa é finita --><!-- Andate a fanculo -->
</div> </div>
</div>
<aside class="postpromonav"><nav><h4>Categories</h4> <aside class="postpromonav"><nav><h4>Categories</h4>
<ul itemprop="keywords" class="tags"> <ul itemprop="keywords" class="tags">

View file

@ -1,26 +1,26 @@
<!-- <!--
.. title: Breve storia della cultura hacker .. title: Breve storia della cultura hacker
.. slug: cultura-hacker .. slug: cultura-hacker
.. date: 2020-04-06 .. date: 2019-05-18
.. tags: lezione,Rivoluzione Digitale,PesceWanda,polito,politecnico,Rivoluzione Digitale, lezione .. tags: lezione,Rivoluzione Digitale,PesceWanda,polito,politecnico
.. category: PesceWanda .. category: PesceWanda
.. link: .. link:
.. status: draft
.. description: .. description:
.. type: text .. type: text
--> -->
Per tre anni ho svolto una lezione sulla cultura hacker che precedentemente era tenuta da [Simone Basso](https://nexa.polito.it/people/sbasso) al Politecnico di Torino per il corso [Rivoluzione Digitale](http://rivoluzionedigitale.polito.it/). Questo e\` un post tratto dalla lezione che ho svolto negli ultimi tre anni al Politecnico di Torino per il corso [Rivoluzione Digitale](http://rivoluzionedigitale.polito.it/).
Quest'anno, data la situazione con il corona virus e dato che non voglio essere registrato (cosa inevitabile qualora organizzassi una videolezione), ho deciso di scrivere questo blogpost dove riassumo quello che solitamente espongo.
# Scopo della lezione # Scopo della lezione
Capire la cultura hacker significa entrare in contatto con quelle che sono le motivazioni e la storia di persone che hanno contribuito in maniera fondamentale alla nascita di internet e hanno presentato al mondo un modo di pensare che ancora oggi è alle radici dell'informatica come strumento di cultura di massa. Capire la cultura hacker significa entrare in contatto con quelle che sono le motivazioni e la storia di persone che hanno contribuito in maniera fondamentale alla nascita di internet e hanno presentato al mondo un modo di pensare che ancora oggi e\` alle radici dell'informatica come scienza e come strumento di cultura di massa.
# Jargon File # Jargon File
Così come oggi utilizziamo i social network per portare avanti discussioni (si spera) con una cerchia di interessati online, allo stesso modo a partire dal 1970 alcune persone si ritrovarono su usenet e mailing list: in maniera non organizzata alcuni membri di queste comunità iniziarono a raccogliere gli slang più utilizzati e le storie legate a questi modi di esprimersi. Cosi\` come oggi utilizziamo i social network per portare avanti discussioni (si spera) con una cerchia di interessati online, allo stesso modo a partire dal 1970 alcune persone si ritrovarono su usenet e mailing list: in maniera non organizzata alcuni membri di queste comunita\` iniziarono a raccogliere gli slang piu\` utilizzati e le storie legate a questi modi di esprimersi.
Con l'espandersi della comunità il Jargon File funge da guida introduttiva ai canoni e alle etichette in uso: per questo [Eric S. Raymond](https://en.wikipedia.org/wiki/Eric_S._Raymond) compì un lavoro di riorganizzazione sistematica che terminò con l'ultima edizione del 2003. Con l'espandersi della comunita\` il Jargon File funge da guida introduttiva ai canoni e alle etichette in uso: per questo [Eric S. Raymond](https://en.wikipedia.org/wiki/Eric_S._Raymond) compiette un lavoro di riorganizzazione sistematica che termino` con l'ultima edizione del 2003.
[ESR](http://catdb.org/esr) scrive: [ESR](http://catdb.org/esr) scrive:
> Among hackers, though, slang has a subtler aspect, paralleled perhaps in the slang of jazz musicians and some kinds of fine artists but hard to detect in most technical or scientific cultures; parts of it are code for shared states of consciousness. There is a whole range of altered states and problem-solving mental stances basic to high-level hacking which don't fit into conventional linguistic reality any better than a Coltrane solo or one of Maurits Escher's surreal trompe l'oeil compositions (Escher is a favorite of hackers), and hacker slang encodes these subtleties in many unobvious ways. > Among hackers, though, slang has a subtler aspect, paralleled perhaps in the slang of jazz musicians and some kinds of fine artists but hard to detect in most technical or scientific cultures; parts of it are code for shared states of consciousness. There is a whole range of altered states and problem-solving mental stances basic to high-level hacking which don't fit into conventional linguistic reality any better than a Coltrane solo or one of Maurits Escher's surreal trompe l'oeil compositions (Escher is a favorite of hackers), and hacker slang encodes these subtleties in many unobvious ways.
@ -49,13 +49,18 @@ Esempi di slang e trasformazioni del lessico:
* C# -> C Flat * C# -> C Flat
* Più generale: "Ready for foodP?" (in Lisp la P sta per predicato con risultato booleano true|false) * Piu\` generale: "Ready for foodP?" (in Lisp la P sta per predicato con risultato booleano `true` `false`)
## Definizione della parola hacker ## Definizione della parola hacker
![Definition of hacker](/wp-content/uploads/2019/def_hacker.jpg) ![Definition of hacker](/wp-content/uploads/2019/def_hacker.jpg)
Del termine hacker abbiamo più definizioni, alcune indifferenti all'uso di sistemi informatici: Come si evince dall'immagine il significato della parola hacker nel gergo comune si e\` via via svuotato per poi andare a sostituire quello del termine cracker.
Un cracker e\` una persona che fa un uso non previsto e malevolo di un sistema informatico.
Nel Jargon File viene specificato che ci si aspetta che un hacker abbia compiuto del cracking e ne conosca le tecniche ma ma debba velocemente maturare verso forme creative piu\` nobili.
Del termine hacker abbiamo piu\` definizioni, alcune indifferenti all'uso di sistemi informatici:
1. Una persona che prova delizia dall'esplorare i dettagli di un sistema programmabile fino a raggiungerne i limiti possibili 1. Una persona che prova delizia dall'esplorare i dettagli di un sistema programmabile fino a raggiungerne i limiti possibili
@ -67,15 +72,9 @@ Del termine hacker abbiamo più definizioni, alcune indifferenti all'uso di sist
5. una persona che trova piacere nella sfida intellettuale di superare un limite in maniera creativa 5. una persona che trova piacere nella sfida intellettuale di superare un limite in maniera creativa
A me piace raccogliere queste definizioni parafrasando Larry Wall: essere un hacker non è l'obbiettivo: gli obbiettivi variano in base alle persone ed al contesto. Un hacker è qualcuno che raggiunge il proprio obbiettivo superando le norme culturali e sociali. A me piace raccogliere queste definizioni parafrasando Larry Wall: essere un hacker non e\` l'obbiettivo: gli obbiettivi variano in base alle persone ed al contesto. Un hacker e\` qualcuno che raggiunge il proprio obbiettivo superando le norme culturali e sociali.
Nell'immagine appaiono due definizioni, la prima che abbiamo già analizzato, è la definizione contenuta nel Jargon File e in fondo appare quella dell'Oxford Dictionary.
Si evince che il significato della parola hacker nel gergo comune si è via via svuotato per poi andare a sostituire quello del termine cracker.
Un cracker è una persona che fa un uso non previsto e malevolo di un sistema informatico.
Nel Jargon File viene specificato che ci si aspetta che un hacker abbia compiuto del cracking e ne conosca le tecniche ma ma debba velocemente maturare verso forme creative più nobili.
# Chiave di lettura # Chiave di lettura
Nella storia della cultura hacker si possono distinguere tre tipi di persone: Nella storia della cultura hacker si possono distinguere tre tipi di persone:
@ -84,8 +83,8 @@ Nella storia della cultura hacker si possono distinguere tre tipi di persone:
* gli esperti di determinate tipologie di hardware o software, come Bruce Schneier * gli esperti di determinate tipologie di hardware o software, come Bruce Schneier
* i makers, coloro che costruiscono ciò che gli altri usano, come Bill Gates. * i makers, coloro che costruiscono cio\` che gli altri usano, come Bill Gates.
Chiaramente moltissime delle personalità di cui parleremo rientrano in più di una di queste categoria. In tutti i casi è importante capire che sono tre approcci complementari. Chiaramente moltissime delle personalita\` di cui parleremo rientrano in piu\` di una di queste categoria. In tutti i casi e\` importante capire che sono tre approcci complementari.
# Storia # Storia
@ -95,29 +94,26 @@ La storia della cultura hacker inizia da persone che all'epoca chiaramente non s
Persone che solitamente avevano un background in elettronica o fisica e si occupavano di batch computing, ovvero l'uso del computer in maniera non interattiva, solitamente per scopi scientifici. Persone che solitamente avevano un background in elettronica o fisica e si occupavano di batch computing, ovvero l'uso del computer in maniera non interattiva, solitamente per scopi scientifici.
Fra i più famosi, Seymour Cray: si dice abbia una volta scritto un sistema operativo in linguaggio macchina tramite gli switch frontali di un computer da lui progettato che funzionò al primo avvio. Fra i piu\` famosi, Seymour Cray: si dice abbia una volta scritto un sistema operativo in linguaggio macchina tramite gli switch frontali di un computer da lui progettato che funziono\` al primo avvio.
Queste persone rientrano nella definizione di hacker che prende in considerazione l'esperienza in un campo, quella del calcolo scientifico, soppiantato poi dalla computazione interattiva. Queste persone rientrano nella definizione di hacker che prende in considerazione l'esperienza in un campo, quella del calcolo scientifico, soppiantato poi dalla computazione interattiva.
Da qui parte il primo filone della storia della cultura hacker, quello universitario. Da qui parte il primo filone della storia della cultura hacker, quello universitario.
### I primi hacker, la tribù connessa ### I primi hacker, la tribu\` connessa
Rimanendo all'interno delle università gli albori della cultura hacker sono estremamente legati alle macchine che queste istituzioni mettevano a disposizione degli studenti. Rimanendo all'interno delle universita\` gli albori della cultura hacker sono estremamente legati alle macchine che queste istituzioni mettevano a disposizione degli studenti.
Le macchine preferite dagli hacker appartenevano alla linea dei PDP, prodotti dalla Digital Equipment Corporation (DEC). Le macchine preferite dagli hacker era la linea dei PDP, prodotti dalla Digital Equipment Corporation (DEC).
Lo stesso PDP-11, come evidenziato da [questo racconto](https://web.archive.org/web/20080718223330/cm.bell-labs.com/cm/cs/who/dmr/chist.html), è stato molto influente nello sviluppo del linguaggio C.
![pdp-11](/wp-content/uploads/2019/pdp11.jpg) Nei laboratori del MIT, nonostante utilizzassero le stesse macchine che in altre universita\` (PDP-10 in particolare), alcuni studenti decisero di sviluppare un proprio sistema operativo, l'Incompatible Time Sharing System, con l'obbiettivo di poter utilizzare un linguaggio di piu\` alto livello (LISP, lingua franca della cultura hacker) rispetto al sistema operativo distribuito da DEC nei PDP.
Nei laboratori del MIT, nonostante utilizzassero le stesse macchine che in altre università (PDP-10 in particolare), alcuni studenti decisero di sviluppare un proprio sistema operativo, l'Incompatible Time Sharing System, con l'obbiettivo di poter utilizzare un linguaggio di più alto livello (LISP, lingua franca della cultura hacker) rispetto al sistema operativo distribuito da DEC nei PDP. Questo e\` un atteggiamento esemplificativo della cultura hacker di quel tempo: esplorare un sistema nei dettagli per poi superarne i limiti in maniera creativa.
Questo è un atteggiamento esemplificativo della cultura hacker di quel tempo: esplorare un sistema nei dettagli per poi superarne i limiti in maniera creativa. Nel frattempo stava nascendo Arpanet, per altro inizialmente costituita da computer della linea dei PDP, che forniva l'accesso a centinaia di universita\` e laboratori di ricerca.
Nel frattempo stava nascendo Arpanet, per altro inizialmente costituita da computer della linea dei PDP, che forniva l'accesso a centinaia di università e laboratori di ricerca. Questo permise a moltissimi hacker di superare le loro cerchie ristrette e condividere i propri lavori con una massa sempre piu\` ampia di entusiasti.
Questo permise a moltissimi hacker di superare le loro cerchie ristrette e condividere i propri lavori con una massa sempre più ampia di entusiasti.
Arpanet permise la propagazione di tantissimi artefatti, fra questi le prime versioni del Jargon File. Arpanet permise la propagazione di tantissimi artefatti, fra questi le prime versioni del Jargon File.
@ -125,29 +121,26 @@ Arpanet permise la propagazione di tantissimi artefatti, fra questi le prime ver
Nel frattempo, nello stesso anno in cui nacque Arpanet, nei Bell Labs veniva sviluppato Unix. Nel frattempo, nello stesso anno in cui nacque Arpanet, nei Bell Labs veniva sviluppato Unix.
All'epoca ogni computer forniva strumenti ed interfacce incompatibili fra loro. L'idea di Ken Thompson è stata quella di fornire un'interfaccia unificata e le stesse funzionalità su macchine diverse. All'epoca ogni computer forniva strumenti ed interfacce incompatibili fra loro. L'idea di Ken Thompson e\` stata quella di fornire un'interfaccia unificata e le stesse funzionalita\` su macchine diverse.
Per raggiungere questo scopo, ovvero un sistema operativo universale chiamato Unix, Dennis Ritchie inventò un nuovo linguaggio che potesse facilitare lo sviluppo per Thompson: C. Per raggiungere questo scopo, ovvero un sistema operativo universale chiamato Unix, Dennis Ritchie invento\` un nuovo linguaggio che potesse facilitare lo sviluppo per Thompson: C.
Anche C ha lo stesso obbiettivo di Unix, la portabilità fra macchine diverse. Anche C ha lo stesso obbiettivo di Unix, la portabilita\` fra macchine diverse.
C è sopravvissuto fino ad oggi e la filosofia di Unix, Keep It Simple and Stupid, è rimasta valida nei suoi discendenti. C e\` sopravvissuto fino ad oggi e la filosofia di Unix, Keep It Simple and Stupid, e\` rimasta valida nei suoi discendenti.
## Freak + Phone = Phreaking ## Freak + Phone = Phreaking
Il reverse engineering è una pratica comune a molti hacker che consiste nel deconstruire un oggetto (o successivamente del software) in modo da rivelarne il funzionamento. Il reverse engineering e\` una pratica comune a molti hacker che consiste nel deconstruire un oggetto (o successivamente del software) in modo da rivelarne il funzionamento.
I phreaker si occupano del reverse engineering della rete telefonica, usando nel 1970 dei toni audio per emettere comandi in rete. I phreaker si occupano del reverse engineering della rete telefonica, usando nel 1970 dei toni audio per emettere comandi in rete.
Il più celebre fra questi è John Draper che scoprì che il fischietto giocattolo fornito all'interno dei cereali Cap'n Crunch emetteva un tono a 2600 Hz, coincidentalmente lo stesso utilizzato dalle linee telefoniche per instradare le chiamate. Il piu\` celebre fra questi e\` John Draper che scopri\` che il fischietto giocattolo fornito all'interno dei cereali Cap'n Crunch emetteva un tono a 2600 Hz, coincidentalmente lo stesso utilizzato dalle linee telefoniche per instradare le chiamate.
![John Draper e il fischietto blue](/wp-content/uploads/2019/draper.jpg)
Gli stessi Jobs e Wozniak iniziarono la loro carriera producendo delle blue box che permettevano di fare chiamate gratis o internazionali a prezzi ridotti. Gli stessi Jobs e Wozniak iniziarono la loro carriera producendo delle blue box che permettevano di fare chiamate gratis o internazionali a prezzi ridotti.
L'azione di John Draper ebbe anche effetti benefici: le telefonate in quegli anni erano molto costose, specialmente da stato a stato, ed il fischietto blu permetteva a persone molto isolate in quegli anni di comunicare come mai prima di allora.
## Digressione: Anarco Illuminismo ## Digressione: Anarco Illuminismo
La cultura hacker, perlomeno fino a questa parte del racconto, raccoglie in sé ideali di due ideologie differenti. La cultura hacker, perlomeno fino a questa parte del racconto, raccoglie in se\` ideali di due ideologie differenti.
Da una parte l'ideale illuminista della diffusione della conoscenza era l'obbiettivo ultimo di moltissimi hacker, forse secondo solo al piacere intellettuale. Da una parte l'ideale illuminista della diffusione della conoscenza era l'obbiettivo ultimo di moltissimi hacker, forse secondo solo al piacere intellettuale.
@ -155,7 +148,7 @@ Le informazioni venivano sempre condivise su Arpanet e successivamente su Intern
Dall'altra parte questo obbiettivo veniva spesso raggiunto con pratiche anarchiche, come la distruzione o manipolazione di oggetti al fine di comprenderli (cracking e phreaking) o l'apertura forzata di laboratori per concedere a masse di entusiasti l'accesso a strumentazione costosa o rara. Dall'altra parte questo obbiettivo veniva spesso raggiunto con pratiche anarchiche, come la distruzione o manipolazione di oggetti al fine di comprenderli (cracking e phreaking) o l'apertura forzata di laboratori per concedere a masse di entusiasti l'accesso a strumentazione costosa o rara.
Nonostante ciò fino ad allora non era stato compiuto nessun tentativo di formalizzare gli ideali di questa cultura. Nonostante cio\` fino ad allora non era stato compiuto nessun tentativo di formalizzare gli ideali di questa cultura.
## L'era del software proprietario ## L'era del software proprietario
@ -165,26 +158,26 @@ Negli anni 80 la cultura hacker era sostanzialmente spaccata in tre gruppi diver
* il gruppo di Unix e C, che poneva le basi di internet e dei protocolli ancora oggi utilizzati * il gruppo di Unix e C, che poneva le basi di internet e dei protocolli ancora oggi utilizzati
* una serie meno organizzata di gruppetti più anarchici che si dedicavano al reverse engineering e allo studio di tecnologie e linguaggi alternativi a quelle viste precedentemente * una serie meno organizzata di gruppetti piu\` anarchici che si dedicavano al reverse engineering e allo studio di tecnologie e linguaggi alternativi a quelle viste precedentemente
Nel frattempo iniziavano a diventare più comuni le prime macchine prodotte da Apple e Microsoft. In realtà questi ebbero un'importanza marginale nella cultura hacker in quanto erano sistemi sottoposti a continue evoluzioni imposte dall'alto e privi di strumenti per l'analisi e lo sviluppo. Nel frattempo iniziavano a diventare piu\` comuni le prime macchine prodotte da Apple e Microsoft. In realta\` questi ebbero un'importanza marginale nella cultura hacker in quanto erano sistemi sottoposti a continue evoluzioni imposte dall'alto e privi di strumenti per l'analisi e lo sviluppo.
La cultura hacker era alla fine del suo slancio iniziale e era ormai un dato di fatto che colossi come Microsoft e IBM avrebbero dominato l'industria del software e di internet. La cultura hacker era alla fine del suo slancio iniziale e era ormai un dato di fatto che colossi come Microsoft e IBM avrebbero dominato l'industria del software e di internet.
Nel 1983 DEC annunciò la fine della linea dei PDP, definendo così la morte del primo gruppo. Nel 1983 DEC annuncio\` la fine della linea dei PDP, definendo cosi\` la morte del primo gruppo.
Nel 1984 Bell fu scorporata e AT&T acquisi i diritti di molti dei suoi prodotti, tra cui Unix. Nel 1984 Bell fu scorporata e AT&T acquisi i diritti di molti dei suoi prodotti, tra cui Unix.
L'hackerdom vide il pericolo che uno dei suoi più cari lavori venisse rubato da una grande compagnia e facesse la fine di tutto il software proprietario di quell'epoca. L'hackerdom vide il pericolo che uno dei suoi piu\` cari lavori venisse rubato da una grande compagnia e facesse la fine di tutto il software proprietario di quell'epoca.
Per questo in quel decennio si combatté una dura battaglia fra le prime versioni di BSD Unix, nato dalle ceneri di Unix, e la versione proprietaria di AT&T. Per questo in quel decennio si combatte\` una dura battaglia fra le prime versioni di BSD Unix, nato dalle ceneri di Unix, e la versione proprietaria di AT&T.
BSD Unix si diffuse in maniera capillare, in particolare nelle infrastrutture di rete data la qualità delle sue implementazioni, ma AT&T vinse molte battaglie legali appropriandosi di vari standard. BSD Unix si diffuse in maniera capillare, in particolare nelle infrastrutture di rete data la qualita\` delle sue implementazioni, ma AT&T vinse molte battaglie legali appropriandosi di vari standard.
## Verso una prima ideologia hacker ## Verso una prima ideologia hacker
In quegli anni era ormai ovvio che senza acquisire maggiore consapevolezza molto del potere in mano a queste comunità sarebbe sparito lentamente. In quegli anni era ormai ovvio che senza acquisire maggiore consapevolezza molto del potere in mano a queste comunita\` sarebbe sparito lentamente.
Inoltre iniziavano ad avere risalto i primi fenomeni di cracking e l'intervento dei governi si fece più severo (benché non sia paragonabile alla copertura che tali eventi hanno oggi). Inoltre iniziavano ad avere risalto i primi fenomeni di cracking e l'intervento dei governi si fece piu\` severo (benche\` non sia paragonabile alla copertura che tali eventi hanno oggi).
La soluzione proposta risiede nella congiunzione di tre idee: La soluzione proposta risiede nella congiunzione di tre idee:
@ -196,63 +189,56 @@ La soluzione proposta risiede nella congiunzione di tre idee:
### Decentralizzazione ### Decentralizzazione
La decentralizzazione è il processo in cui un'attività viene distribuita in maniera equa fra tutti i partecipanti, in opposizione ad un'organizzazione più gerarchica e autoritaria. La decentralizzazione e\` il processo in cui un'attivita\` viene distribuita in maniera equa fra tutti i partecipanti, in opposizione ad un'organizzazione piu\` gerarchica e autoritaria.
L'assunto alla base è il principio Manzoniano per cui una persona che detiene il potere si ritroverà prima o poi costretta a compiere decisioni non etiche. La soluzione è quella di ridurre il potere distribuendolo ai margini dell'infrastruttura. L'assunto alla base e\` il principio Manzoniano per cui una persona che detiene il potere si ritrovera\` prima o poi costretta a compiere decisioni non etiche. La soluzione e\` quella di ridurre il potere distribuendolo ai margini dell'infrastruttura.
Un'esempio di decentralizzazione è l'architettura di internet, almeno nelle sue prime forme, dove non c'è un'autorità centrale ma ogni nodo ha eguale importanza. Un'esempio di decentralizzazione e\` l'architettura di internet, almeno nelle sue prime forme, dove non c'e\` un'autorita\` centrale ma ogni nodo ha eguale importanza.
Un'esempio più attuale è la rete BitTorrent. Un'esempio piu\` attuale e\` la rete Bittorrent.
### Crittografia ### Crittografia
Nel 1992 nasce una mailing list (ad oggi ancora attiva) chiamata Cypherpunks, dal gioco fra i termini cypher e cyberpunk. Nel 1992 nasce una mailing list (ad oggi ancora attiva) chiamata Cypherpunk, dal gioco fra i termini cypher e cyberpunk.
Tutte le discussioni di questo gruppo vertono sull'uso della crittografia e sul concetto di privacy e anonimato. Tutte le discussioni di questo gruppo vertono sull'uso della crittografia e sul concetto di privacy e anonimato.
L'idea alla base ([Cypherpunk's Manifesto](http://project.cyberpunk.ru/idb/cyberpunk_manifesto.html)) è che la privacy è necessaria per poter costituire una società aperta nell'era dell'informazione; non c'è alcuna garanzia che i governi o le corporazioni si facciano garanti di questi ideali quindi la privacy va difesa dai singoli. L'idea alla base (Cypherpunk's Manifesto) e\` che la privacy e\` necessaria per poter costituire una societa\` aperta nell'era dell'informazione; non c'e\` alcuna garanzia che i governi o le corporazioni si facciano garanti di questi ideali quindi la privacy va difesa dai singoli.
Il gruppo ha portato alla creazione di software crittografico (fra cui Tor), protocolli per la comunicazione riservata e atti di disobbedienza civile. Il gruppo ha portato alla creazione di software crittografico (fra cui TOR), protocolli per la comunicazione riservata e atti di disobbedienza civile.
Sempre in quegli anni, mentre il governo americano cercava di indebolire le infrastrutture di telecomunicazione con il Telecommunications Act del '96, John Perry Barlow pubblicò un manifesto: [la dichiarazione di independenza del Cyberspazio](https://www.eff.org/cyberspace-independence).
Nel manifesto il governo (americano) viene dipinto come un gigante di acciaio e carne e gli hacker come individui autoeletti, proveniente dal futuro, che si oppongo all'invasione di potere nel cyberspazio. Barlow evidenzia come le leggi che governano questa comunità indipendente sono del tutto estranee alle angherie e alle regole imposte con la forza del mondo prima del cyberspazio.
Un documento ben più estremo di quello di Barlow è il [Cyphernomicon](http://web.archive.org/web/20110922120111/http://www.cypherpunks.to/faq/cyphernomicron/cyphernomicon.txt) di Timothy C. May, uno dei primi ingegneri di Intel e importantissima figura nella mailing list Cypherpunks.
Nel Cyphernomicon vengono discussi argomenti con una forte connotazione antagonista e vengono affrontati molti argomenti tabù.
### Software Libero ### Software Libero
Richard Stallman nel 1980 modificò il software di una stampante Xerox in modo da mandare un messaggio di posta elettronica agli utenti in attesa di stampa ogni qualvolta la stampante si bloccasse per qualche errore. Richard Stallman aveva modificato il software di una stampante xerox in modo da mandare un messaggio di posta elettronica agli utenti in attesa di stampa ogni qualvolta la stampante si bloccasse per qualche errore.
Quando nel 1980 la stampante fu sostituita Xerox si rifiutò di concedere a Stallman le facoltà necessarie per poter modificare il firmware della nuova stampante. Chiaramente questo inconveniente fu risolto con delle pratiche di reverse engineering ma questo inconveniente convinse Stallman a mettere le basi per l'ideologia del software libero. Quando nel 1980 la stampante fu sostituita Xerox si rifiuto\` di concedere a Stallman le facolta\` necessarie per poter modificare il firmware della nuova stampante. Chiaramente questo inconveniente fu risolto con delle pratiche di reverse engineering ma questo inconveniente convinse Stallman a mettere le basi per l'ideologia del software libero.
Nel 1984 Stallman si licenziò dal MIT per lavorare a tempo pieno al suo progetto, GNU: una versione di Unix modificata che concedesse agli utenti finali le libertà da lui desiderate tramite l'utilizzo esclusivo di software libero. Nel 1984 Stallman si licenzio\` dal MIT per lavorare a tempo pieno al suo progetto, GNU: una versione di Unix modificata che concedesse agli utenti finali le liberta\` da lui desiderate tramite l'utilizzo esclusivo di software libero.
Nel rispetto della cultura hacker GNU conquistò subito l'interesse della comunità. Nel rispetto della cultura hacker GNU conquisto\` subito l'interesse della comunita\`.
Il progetto GNU è una collezione di software di qualsiasi tipo che rispetti le libertà garantite dalla licenza [GPL](https://en.wikipedia.org/wiki/GNU_General_Public_License); fra questi i più famosi sono [GCC](https://gcc.gnu.org/), [emacs](https://www.gnu.org/software/emacs/), [Octave](https://www.gnu.org/software/octave/), [R](https://www.r-project.org/) ma anche software di attivismo, gestione delle finanze e tant'altro. Il progetto GNU e\` una collezione di software di qualsiasi tipo che rispetti le liberta\` garantite dalla licenza [GPL](https://en.wikipedia.org/wiki/GNU_General_Public_License); fra questi i piu\` famosi sono [GCC](https://gcc.gnu.org/), [emacs](https://www.gnu.org/software/emacs/), [Octave](https://www.gnu.org/software/octave/), [R](https://www.r-project.org/) ma anche software di attivismo, gestione delle finanze e tant'altro.
Il progetto sarebbe dovuto essere completato da un kernel, HURD, che ad oggi è ancora molto instabile. Il progetto sarebbe dovuto essere completato da un kernel, HURD, che ad oggi e\` ancora molto instabile.
Nel frattempo, in Europa, Linus Torvalds, in sintonia con quell'atteggiamento di opposizione e rivolta tipico della cultura hacker, iniziò a sviluppare il kernel Linux seguendo un approccio che fu fortemente criticato dal suo professore, Andrew S. Tanenbaum. [Questo dibattito fu il soggetto di un'enorme flame war su usenet](https://en.wikipedia.org/wiki/Tanenbaum-Torvalds_debate). Nel frattempo, in Europa, Linus Torvalds, in sintonia con quell'atteggiamento di opposizione e rivolta tipico della cultura hacker , inizio\` a sviluppare il kernel Linux seguendo un approccio inusuale che fu fortemente criticato dal suo professore, Andrew S. Tanenbaum. [Questo dibattito fu il soggetto di un'enorme flame war su usenet](https://en.wikipedia.org/wiki/Tanenbaum-Torvalds_debate).
Linus per lavorare al suo progetto stava utilizzato moltissimi degli strumenti della suite di GNU e fu contattato da Stallman per collaborare ed adottare Linux come kernel, pezzo mancante del sistema operativo GNU. Linus per lavorare al suo progetto stava utilizzato moltissimi degli strumenti della suite di GNU e fu contattato da Stallman per collaborare ed adottare Linux come kernel, pezzo mancante del sistema operativo GNU.
Questo ha portato a quello che oggi viene chiamato da molti Linux ma che in realtà andrebbe chiamato [GNU/Linux](https://www.gnu.org/gnu/why-gnu-linux.html). Questo ha portato a quello che oggi viene chiamato da molti Linux ma che in realta\` andrebbe chiamato [GNU/Linux](https://www.gnu.org/gnu/why-gnu-linux.html).
![Linus Torvalds e Richard Stallman](/wp-content/uploads/2019/stl.jpg)
# Lo stato della cultura hacker oggi # Lo stato della cultura hacker oggi
Abbiamo visto fino ad ora che ci sono stati tre filoni della cultura hacker, quello universitario, quello più amatoriale e pratico, rivolto all'exploitation e infine quello più ideologico. Abbiamo visto fino ad ora che ci sono stati tre filoni della cultura hacker, quello universitario, quello piu\` amatoriale e pratico, rivolto all'exploitation e infine quello piu\` ideologico.
È molto difficile cercare di interpretare la direzione di questa sottocultura (se ancora si può definire tale), specialmente per chi come me non ne ha le competenze benché si ritrovi spesso a parlare e conoscere con persone che hanno fatto proprio l'atteggiamento della cultura hacker. E\` molto difficile cercare di interpretare la direzione di questa sottocultura (se ancora si puo\` definire tale), specialmente per chi come me non ne ha le competenze benche\` si ritrovi spesso a parlare e conoscere con persone che hanno fatto proprio l'atteggiamento della cultura hacker.
Nonostante ciò ogni anno ho provato a trasmettere agli studenti delle mie considerazioni sulla situazione presente, da differenti punti di vista. Nonostante cio\` ogni anno ho provato a trasmettere agli studenti delle mie considerazioni sulla situazione presente, da differenti punti di vista.
## Disobbedienza civile elettronica ## Disobbedienza civile elettronica
Non penso di dovermi soffermare ma due figure molto importanti della cultura hacker sono Edward Snowden e Julian Assange (Mendax). Non penso di dovermi soffermare ma due figure molto importanti della cultura hacker sono Edward Snowden e Julian Assange (Mendax).
Queste due persone e tutto quello che hanno fatto rappresentano [ciò che il potere teme di internet](http://www.mantellini.it/2012/08/17/perche-assange-e-internet/). Queste due persone e tutto quello che hanno fatto rappresentano [cio\` che il potere teme di internet](http://www.mantellini.it/2012/08/17/perche-assange-e-internet/).
Inoltre, riguardo i fatti recenti: Inoltre, riguardo i fatti recenti:
> A un certo punto su Julian Assange è diventato impossibile dire qualsiasi cosa. È semplicemente accaduto, non è colpa di nessuno. Da un certo momento in avanti, dire qualcosa di sensato su Assange, qualcosa di non ovvio e cialtrone, di vagamente correlato ad unidea minima di verità sulla vita e le gesta dellhacker australiano dai capelli argentati è diventato non solo complicato ma perfino inutile. Troppe cose nel frattempo si erano sommate, troppe bugie, troppe interpretazioni di segno opposto si erano saldamente ancorate alla biografia di un uomo indubitabilmente unico, i cui tratti biografici e di comportamento hanno disegnato fin dallinizio, a complicare ulteriormente le cose, i tratti della stranezza, se non quelli del disturbo psichico. > A un certo punto su Julian Assange è diventato impossibile dire qualsiasi cosa. È semplicemente accaduto, non è colpa di nessuno. Da un certo momento in avanti, dire qualcosa di sensato su Assange, qualcosa di non ovvio e cialtrone, di vagamente correlato ad unidea minima di verità sulla vita e le gesta dellhacker australiano dai capelli argentati è diventato non solo complicato ma perfino inutile. Troppe cose nel frattempo si erano sommate, troppe bugie, troppe interpretazioni di segno opposto si erano saldamente ancorate alla biografia di un uomo indubitabilmente unico, i cui tratti biografici e di comportamento hanno disegnato fin dallinizio, a complicare ulteriormente le cose, i tratti della stranezza, se non quelli del disturbo psichico.
@ -260,28 +246,30 @@ Inoltre, riguardo i fatti recenti:
I primi due anni ho provato a concentrarmi su queste domande: I primi due anni ho provato a concentrarmi su queste domande:
* la cultura hacker ha ancora una componente di forte antagonismo nei confronti del potere stabilito? * la cultura hacker ha ancora una componente anarchica?
* Sono ancora possibili atti come quelli degli attivisti del cypherpunk? * Sono ancora possibili atti come quelli degli attivisti del cypherpunk?
* In che ottica possiamo inquadrare le azioni di Assange e Snowden?
Quando si parla di Assange e Snowden si parla di politica e media, ovvero potere e controllo. Quando si parla di Assange e Snowden si parla di politica e media, ovvero potere e controllo.
Prima dell'arrivo di internet e dell'informatica il cuore degli organismi di potere e controllo era facile da individuare. Prima dell'arrivo di internet e dell'informatica il cuore degli organismi di potere e controllo era facile da individuare.
Penso al fascismo, dove come spiega Mosse in "Il fascismo. Verso una teoria generale", l'architettura stessa aveva carattere intimidatorio. Penso al fascismo, dove come spiega Mosse in "Il fascismo. Verso una teoria generale", l'architettura stessa aveva carattere intimidatorio.
Gli "antagonisti" del potere non dovevano fare altro che riunirsi in qualche maniera organizzata e far fronte a queste strutture, fisicamente affrontare la loro solidità. Gli "antagonisti" del potere non dovevano fare altro che riunirsi in qualche maniera organizzata e far fronte a queste strutture, fisicamente affrontare la loro solidita\`.
È il motivo per cui nella cultura pop V per Vendetta termina con l'esplosione del parlamento e Fight Club con il crollo delle banche. E\` il motivo per cui nella cultura pop V per Vendetta termina con l'esplosione del parlamento e Fight Club con il crollo delle banche.
Il regime collassa una volta che l'opposizione ne ha distrutto la fortezza in cui risiede. Il regime collassa una volta che l'opposizione ne ha distrutto la fortezza in cui risiede.
Questo ad oggi non è più vero, gli edifici benché siano ancora visibili si sono svuotati e il potere si muove come desidera attraverso un flusso ininterrompibile di bits. Questo ad oggi non e\` piu\` vero, gli edifici benche\` siano ancora visibili si sono svuotati e il potere si muove come desidera attraverso un flusso ininterrompibile di bits.
Così quando nel [2016](https://en.wikipedia.org/wiki/2016_Turkish_coup_d%27%C3%A9tat_attempt) i militari turchi riuscirono a far fuoco sul parlamento e prendere il controllo di radio e televisioni, Erdogan, fisicamente non presente, con una semplice chiamata Facetime riuscì a recuperare il controllo della situazione prendendo contatto e mobilitando la resistenza. Cosi\` quando nel [2016](https://en.wikipedia.org/wiki/2016_Turkish_coup_d%27%C3%A9tat_attempt) i militari turchi riuscirono a far fuoco sul parlamento e prendere il controllo di radio e televisioni, Erdogan, fisicamente non presente, con una semplice chiamata Facetime riusci\` a recuperare il controllo della situazione prendendo contatto e mobilitando la resistenza.
Possiamo a questo punto provare ad affermare che il potere risieda nelle persone e non più nelle strutture fisiche. Possiamo a questo punto provare ad affermare che il potere risieda nelle persone e non piu\` nelle strutture fisiche.
Eppure quando nell'aprile del 2018 il congresso statunitense ha affrontato Zuckerberg con un documento di più di 1000 pagine, il potere di Facebook non era presente neanche sotto la forma fisica di un ragazzo di trent'anni. Eppure quando nell'aprile del 2018 il congresso statunitense ha affrontato Zuckerberg con un documento di piu\` di 1000 pagine, il potere di Facebook non era presente neanche sotto la forma fisica di un ragazzo di trent'anni.
Questo ce lo dimostra il fatto che a domande come: Questo ce lo dimostra il fatto che a domande come:
@ -293,39 +281,38 @@ Questo ce lo dimostra il fatto che a domande come:
- "What data is being sold?" - "What data is being sold?"
- "Is Facebook censoring specific groups?" - "Is facebook censoring specific groups?"
- "Whats Facebooks reach beyond its website?" - "Whats Facebooks reach beyond its website?"
- "How much information does Facebook have on non-Facebook users?" - "How much information does Facebook have on non-Facebook users?"
Zuckerberg ha potuto affermare che non conosce la risposta o che può chiedere al suo team e rispondere in futuro. Zuckerberg ha potuto affermare che non conosce la risposta o che puo\` chiedere al suo team e rispondere in futuro.
> Whether you know it or not, if you are a hacker, you are a revolutionary > Whether you know it or not, if you are a hacker, you are a revolutionary
Una volta compreso ciò queste parole di Doctor Crash su [phrack](http://phrack.org/issues/6/3.html) appaiono ingenue. Una volta compreso cio\` queste parole di Doctor Crash su [phrack](http://phrack.org/issues/6/3.html) appaiono ingenue.
Gli hacker combattono per il libero accesso all'informazione senza poi discutere di come queste nuove conoscenze andrebbero applicate. Gli hacker combattono per il libero accesso all'informazione senza poi discutere di come queste nuove conoscenze andrebbero applicate.
Sempre Doctor Crash scrive: Sempre Doctor Crash scrive:
> There is one last method of this war against computer abusers. This is a less subtle, less electronic method, but much more direct and gets the message across. I am speaking of what is called Anarchy. Anarchy as we know it does not refer to the true meaning of the word (no ruling body), but to the process of physically destroying buildings and governmental establishments. This is a very drastic, yet vital part of this "techno-revolution." > There is one last method of this war against computer abusers. This is a less subtle, less electronic method, but much more direct and gets the message across. I am speaking of what is called Anarchy. Anarchy as we know it does not refer to the true meaning of the word (no ruling body), but to the process of physically destroying buildings and governmental establishments. This is a very drastic, yet vital part of this "techno-revolution."
Questo, complice la cultura hacker, oggi non è più possibile. Questo, complice la cultura hacker, oggi non e\` piu\` possibile.
Per questo, la risposta alle prima domanda è no, la cultura hacker non ha mantenuto, A MIO PARERE, una componente antagonista. Questo perché, azioni di protesta come quelle degli hacktivisti alla Anonymous, o come nel più romanzato Mr Robot, ammontano a nulla per i motivi sopracitati. Lo stesso leak dei documenti della NSA compiuto da Snowden ha avuto effetti [discutibili](https://web.archive.org/web/20150810184125/https://www.washingtonpost.com/news/volokh-conspiracy/wp/2015/04/09/edward-snowdens-impact/) e di sicuro non ci ha portati ad un cambiamento di tendenza nei confronti della [tecnosorveglianza](https://www.valigiablu.it/freedom-net-censura-sorveglianza/).
## Opensource e Free Software ## Opensource e Free Software
Nell'ultima lezione, anno 2019, mi son concentrato maggiormente sulla cultura del software libero. Quest'ultimo anno mi son concentrato maggiormente sulla cultura del software libero.
Nel 2019 il termine opensource ha soppiantato quello di software libero allo stesso modo di come il termine hacker è stato corrotto mediaticamente andando a ricoprire il significato di cracker. Nel 2019 il termine opensource ha soppiantato quello di software libero allo stesso modo di come il termine hacker e\` stato corrotto mediaticamente andando a ricoprire il significato di cracker.
Stallman nel 2007 già ci avvertiva che il software opensource manca l'obbiettivo: Stallman nel 2007 gia\` ci avvertiva che il software opensource manca l'obbiettivo:
> I due termini descrivono all'incirca la stessa categoria di software. Ma si basano su valori fondamentalmente diversi. > I due termini descrivono all'incirca la stessa categoria di software. Ma si basano su valori fondamentalmente diversi.
> L'open source è una metodologia di sviluppo; il software libero è un movimento sociale. Per il movimento per il software libero, il software libero è un imperativo etico, il rispetto essenziale della libertà degli utenti. Al contrario la filosofia dell'open source pensa a come "migliorare" il software soltanto da un punto di vista pratico. Dice che il software non libero è una soluzione non ottimale. Spesso le discussioni sull'“open source” non considerano quel che è giusto o sbagliato, ma solo il successo e la popolarità. > L'open source è una metodologia di sviluppo; il software libero è un movimento sociale. Per il movimento per il software libero, il software libero è un imperativo etico, il rispetto essenziale della libertà degli utenti. Al contrario la filosofia dell'open source pensa a come "migliorare" il software soltanto da un punto di vista pratico. Dice che il software non libero è una soluzione non ottimale. Spesso le discussioni sull'“open source” non considerano quel che è giusto o sbagliato, ma solo il successo e la popolarità.
Quando ancora GNU/Linux girava sotto forma di dischi o floppy Steve Ballmer diceva che il software libero è cancro o comunismo. Quando ancora GNU/Linux girava sotto forma di dischi o floppy Steve Ballmer diceva che il software libero e\` cancro o comunismo.
Vent'anni dopo lui stesso afferma di aver sbagliato giudizio e che l'opensource ha divorato il mondo: non solo quasi tutto lo sviluppo avviene utilizzando tool opensource ma banche, data center, agenzie governative, perfino le auto, usano software libero, almeno in parte se non completamente. Vent'anni dopo lui stesso afferma di aver sbagliato giudizio e che l'opensource ha divorato il mondo: non solo quasi tutto lo sviluppo avviene utilizzando tool opensource ma banche, data center, agenzie governative, perfino le auto, usano software libero, almeno in parte se non completamente.
@ -337,58 +324,19 @@ Ne sono un esempio gitlab, redislab e elasticsearch.
Nonostante l'opensource abbia avuto un successo incomparabile nelle "core tecnologies", come librerie, tooling e linguaggi di programmazione, ha fallito nel liberare l'utente finale, obbiettivo con il quale era nato. Nonostante l'opensource abbia avuto un successo incomparabile nelle "core tecnologies", come librerie, tooling e linguaggi di programmazione, ha fallito nel liberare l'utente finale, obbiettivo con il quale era nato.
Questo lo dimostra il fatto che i servizi forniti dalle SaaS (software as a service) e i grandi servizi di cloud non trasmettono nessuna delle quattro libertà del software libero fino all'utente finale e hanno catturato il potenziale radicale del software libero per renderlo un mero strumento del tutto insignificante e sconosciuto al destinatario del servizio. Questo lo dimostra il fatto che i servizi forniti dalle SaaS (software as a service) e i grandi servizi di cloud non trasmettono nessuna delle quattro liberta\` del software libero fino all'utente finale e hanno catturato il potenziale radicale del software libero per renderlo un mero strumento del tutto insignificante e sconosciuto al destinatario del servizio.
# Conclusione: come diventare un hacker # Conclusione: come diventare un hacker
ESR [mantiene da anni](http://www.catb.org/~esr/faqs/hacker-howto.html) una breve guida a come diventare un hacker, organizzata su cinque punti: ESR [mantiene da anni](http://www.catb.org/~esr/faqs/hacker-howto.html) una breve guida a come diventare un hacker, organizzata su cinque punti:
1. Il mondo è pieno di problemi affascinanti che aspettano di essere risolti 1. Il mondo e\` pieno di problemi affascinanti che aspettano di essere risolti
2. Nessun problema andrebbe risolto due volte 2. Nessun problema andrebbe risolto due volte
3. La noia e la fatica sono malvagi 3. La noia e la fatica sono malvagi
4. La libertà è una buona cosa 4. La liberta\` e\` una buona cosa
5. Le maniere e la forma non mascherano le competenze 5. Le maniere e la forma non mascherano le competenze
# Appendice: Hacker oggi
Immagino che al termine di questa lettura sorga un dubbio: dove sono andati a finire gli hacker?
O meglio, una persona nata inevitabilmente nell'era del [capitalismo della sorveglianza](https://www.agendadigitale.eu/cultura-digitale/capitalismo-della-sorveglianza-come-salvarci-dalle-nuove-derive-delleconomia-globale/) dove può imparare e poi mettere in pratica o far sue gli ideali propri della cultura hacker?
Nutro molte pochissime speranze nei confronti del web che a mio avviso è morto nel 1995 quando emersero i primi siti a scopo di lucro. Oggi il web è diventato un agglomerato di isole irraggiungibili le une dall'altre (i famosi walled garden) dove in molti casi si formano comunità di utenti che senza originalità propongono gli stessi contenuti o ripetono le stesse domande. Ne è un esempio reddit la cui qualità è andata degradando di anno in anno nel tentantivo di essere il più accogliente possibile nei confronti dei nuovi utenti. Quando l'effetto [eternal september](https://en.wikipedia.org/wiki/Eternal_September) non dovesse bastare, masse di "growth hacker", uffici di marketing o giganti di metallo e carne si impossessano degli ultimi angoli inesplorati del web per renderli una palude pubblicitaria, come è successo a:
* [reddit](https://francescomecca.eu/blog/2018/3/27/addio-reddit/)
* hacker news
* medium
* github
* yahoo
* youtube
* la lista è infinita
Come già affermato per i sistemi Microsoft ed Apple, l'assenza di comunità hacker nel web è dovuto alle forti imposizioni (motivate dal profitto) e l'impossibilità di riuso dei costumi e delle conoscenze sviluppati una volta che la piattaforma cambia.
Il catalizzatore della cultura hacker sembra essere in questi anni il carne-spazio, luoghi e situazioni sovversive in cui ho avuto la fortuna di conoscere moltissimi hacker. Consiglio di partire dagli hacklab, gli incontri a cadenza annuale (hackmeeting, offdem), gli spazi occupati e i fablab. Talvolta si ha fortuna anche nelle università, specialmente se ci sono gruppi che partecipano ai Capture The Flag.
Quando si vuole tornare nel cyberspazio è pieno di posti felici (e soprattutto interessanti) che si mantengono ancora distanti dai germi del web:
* irc
* le mailing list
* i tracker privati
* forum e blog su reti alternative (Tor, I2P, Freenet)
* I cyberspazi di incontro delle stesse comunità sovversive: [autistici](https://www.autistici.org/), [riseup](riseup.net/), [disroot](disroot.org)
<!-- La messa é finita -->
<!-- Andate a fanculo -->

View file

@ -1,102 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>Three years later | Caught in the Net</title>
<link rel="stylesheet" href="../../../../../assets/blog/fonts/opensans.css">
<link href="../../../../../assets/blog/css/normalize.css" rel="stylesheet" type="text/css">
<link href="../../../../../assets/blog/css/cayman.css" rel="stylesheet" type="text/css">
<meta name="theme-color" content="#5670d4">
<meta name="generator" content="Nikola (getnikola.com)">
<link rel="alternate" type="application/rss+xml" title="RSS" hreflang="en" href="../../../../../rss.xml">
<link rel="canonical" href="francescomecca.eu/blog/2023/08/12/three-years-later/">
<meta name="author" content="Francesco Mecca">
<link rel="prev" href="../../../../2019/05/18/cultura-hacker/" title="Breve storia della cultura hacker" type="text/html">
<link rel="next" href="../../../../2024/1/12/happy-new-year-2024/" title="Welkom 2024!" type="text/html">
<meta property="og:site_name" content="Caught in the Net">
<meta property="og:title" content="Three years later">
<meta property="og:url" content="francescomecca.eu/blog/2023/08/12/three-years-later/">
<meta property="og:description" content="More than three years have passed since my last blogpost. I used
to believe that a more hectic life would provide me with a
surplus of things to write about. While that holds true, the flip side
is t">
<meta property="og:type" content="article">
<meta property="article:published_time" content="2023-08-12T00:00:00Z">
<meta property="article:tag" content="blogging">
<meta property="article:tag" content="internet">
</head>
<body>
<div id="container">
<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="../../../../../pages/about/">About me</a>
<a class="btn" href="../../../../../pages/contattami/">Contact me</a>
<a class="btn" href="../../../../../archiveall.html">Archive</a>
<a class="btn" href="../../../../../rss.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="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a>
</section><section class="main-content"><div class="post">
<header><h1 class="post-title">
<h1 class="p-name post-title" itemprop="headline name">Three years later</h1>
</h1>
</header><p class="dateline post-date">12 August 2023</p>
</div>
<div class="e-content entry-content" itemprop="articleBody text">
<p>More than three years have passed since my last blogpost. I used
to believe that a more hectic life would provide me with a
surplus of things to write about. While that holds true, the flip side
is that I now find myself with less and less time for writing.</p>
<p>Let's be honest, it's not just that. I have been growing a little bit
unsatisfied with the current evolution of the corporate web.</p>
<p>I have already touched this topic when I stopped using reddit for good
(<a href="https://francescomecca.eu/blog/2018/3/27/addio-reddit/">here, in
italian</a>) but
I really stopped to reflect when
<del>AOL-Time-Warner-Pepsico-Viacom-Halliburton-Skynet-Toyota-Trader-Joe's</del>Microsoft
bought Github. At the time I removed the dust from my personal git
server and moved most of my stuff there. For more than a year now my
GitHub heatmap has remained empty, despite it being one of the
platforms where I used to engage the most frequently.</p>
<p>It's not that I'm exposed to more sunlight these days: I still utilize
the internet, albeit in a more pseudonymous manner now.</p>
<p>As I mastered the art of evading the corporate web everyday I
gallivanted my way across three relocations: from Paris to London and
finally to Amsterdam. My faithful companion through it all? None other
than my (t)rusty server. I bid adieu to all of the social networks in favor
of selfhosted and federated solutions. Email is now king in my social
online life but I still indulge lurking on the orange site.</p>
<p>A bunch of good friends joined me on this adventure, and we formed a
close-knit community around the services we host ourselves. We
interact daily through our servers. We also worked on a few art
projects, if you'll permit the exageration, embodying the essence of the bygone web era.
The pièce de résistance among these creations can
be accessed by playfully prodding at my IP address.</p>
<p>To be continued.</p>
</div>
<aside class="postpromonav"><nav><h4>Categories</h4>
<ul itemprop="keywords" class="tags">
<li><a class="tag p-category" href="../../../../../categories/blogging/" rel="tag">blogging</a></li>
<li><a class="tag p-category" href="../../../../../categories/internet/" rel="tag">internet</a></li>
</ul></nav></aside><p class="sourceline"><a href="index.md" class="sourcelink">Source</a></p>
<footer class="site-footer" id="footer"><span> CC BY-SA 4.0 International.<br></span>
<span class="site-footer-credits"><a href="https://getnikola.com">Nikola</a>, <a href="https://github.com/jasonlong/cayman-theme">Cayman theme</a>.</span>
</footer></section>
</div>
</body>
</html>

View file

@ -1,47 +0,0 @@
<!--
.. title: Three years later
.. slug: three-years-later
.. date: 2023-08-12
.. tags: blogging,internet
.. category: PesceWanda
.. link:
.. description:
.. type: text
-->
More than three years have passed since my last blogpost. I used
to believe that a more hectic life would provide me with a
surplus of things to write about. While that holds true, the flip side
is that I now find myself with less and less time for writing.
Let's be honest, it's not just that. I have been growing a little bit
unsatisfied with the current evolution of the corporate web.
I have already touched this topic when I stopped using reddit for good
([here, in
italian](https://francescomecca.eu/blog/2018/3/27/addio-reddit/)) but
I really stopped to reflect when
~~AOL-Time-Warner-Pepsico-Viacom-Halliburton-Skynet-Toyota-Trader-Joe's~~Microsoft
bought Github. At the time I removed the dust from my personal git
server and moved most of my stuff there. For more than a year now my
GitHub heatmap has remained empty, despite it being one of the
platforms where I used to engage the most frequently.
It's not that I'm exposed to more sunlight these days: I still utilize
the internet, albeit in a more pseudonymous manner now.
As I mastered the art of evading the corporate web everyday I
gallivanted my way across three relocations: from Paris to London and
finally to Amsterdam. My faithful companion through it all? None other
than my (t)rusty server. I bid adieu to all of the social networks in favor
of selfhosted and federated solutions. Email is now king in my social
online life but I still indulge lurking on the orange site.
A bunch of good friends joined me on this adventure, and we formed a
close-knit community around the services we host ourselves. We
interact daily through our servers. We also worked on a few art
projects, if you'll permit the exageration, embodying the essence of the bygone web era.
The pièce de résistance among these creations can
be accessed by playfully prodding at my IP address.
To be continued.

View file

@ -1,169 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>Welkom 2024! | Caught in the Net</title>
<link rel="stylesheet" href="../../../../../assets/blog/fonts/opensans.css">
<link href="../../../../../assets/blog/css/normalize.css" rel="stylesheet" type="text/css">
<link href="../../../../../assets/blog/css/cayman.css" rel="stylesheet" type="text/css">
<meta name="theme-color" content="#5670d4">
<meta name="generator" content="Nikola (getnikola.com)">
<link rel="alternate" type="application/rss+xml" title="RSS" hreflang="en" href="../../../../../rss.xml">
<link rel="canonical" href="francescomecca.eu/blog/2024/1/12/happy-new-year-2024/">
<meta name="author" content="Francesco Mecca">
<link rel="prev" href="../../../../2023/08/12/three-years-later/" title="Three years later" type="text/html">
<link rel="next" href="../../../2/28/wine-gentoo/" title="Playing videogames with WINE on Gentoo" type="text/html">
<meta property="og:site_name" content="Caught in the Net">
<meta property="og:title" content="Welkom 2024!">
<meta property="og:url" content="francescomecca.eu/blog/2024/1/12/happy-new-year-2024/">
<meta property="og:description" content="Il 2023 è stato un anno molto molto intenso, sia dal punto di vista
lavorativo che personale. Per quanto riguarda il lavoro uno dei più
grandi cambiamenti è stato l'arrivo del nuovo CTO (direttore te">
<meta property="og:type" content="article">
<meta property="article:published_time" content="2024-01-12T00:00:00Z">
<meta property="article:tag" content="resolutions">
<meta property="article:tag" content="work">
</head>
<body>
<div id="container">
<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="../../../../../pages/about/">About me</a>
<a class="btn" href="../../../../../pages/contattami/">Contact me</a>
<a class="btn" href="../../../../../archiveall.html">Archive</a>
<a class="btn" href="../../../../../rss.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="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a>
</section><section class="main-content"><div class="post">
<header><h1 class="post-title">
<h1 class="p-name post-title" itemprop="headline name">Welkom 2024!</h1>
</h1>
</header><p class="dateline post-date">12 January 2024</p>
</div>
<div class="e-content entry-content" itemprop="articleBody text">
<p>Il 2023 è stato un anno molto molto intenso, sia dal punto di vista
lavorativo che personale. Per quanto riguarda il lavoro uno dei più
grandi cambiamenti è stato l'arrivo del nuovo CTO (direttore tecnico)
in azienda, a Dicembre 2022. Avevo una collaborazione molto stretta
con il precedente e questo mi ha permesso non solo di catapultare la
mia carriera, ma soprattutto di acquisire tantissima conoscenza dei
meccanismi aziendali e finanziari da vicino, spalla a spalla con le
persone coinvolte invece di vivere soltanto di resoconti ed esperienze
indirette.</p>
<p>Nel corso di questi tre anni, il mio ruolo ha subito una brusca
trasformazione, passando da un focus sulla ricerca e sviluppo a una
posizione di sviluppo strettamente legata al front office
aziendale. In questo contesto, ho frequentemente affrontato le mie
lacune nel campo econometrico e finanziario. In breve, ho dovuto
esplorare diversi settori, occupandomi di risk management, portofolio
research e acquisizione dati, spesso completando il doppio del lavoro
necessario: prima la fase esplorativa e successivamente quella
esecutiva. </p>
<p>Questo percorso è stato affrontato con le spalle cariche di
responsabilità per il mio minuscolo team formatosi a
Settembre 2022. In quest'anno che si è appena concluso ho vissuto il
ruolo di manager con grandissima soddisfazione e ho potuto constatare
una significativa crescita professionale del mio collaboratore durante
la valutazione delle performance di fine anno.</p>
<p>Per quanto riguarda la mia vita personale, il 2023 ha segnato l'inizio
del mio esperimento di vita in Olanda, che posso dichiarare concluso
con successo. Mi sono davvero innamorato di questo paese, dei suoi
abitanti e della sua cultura. Scrivere nel dettaglio le mie
motivazioni va ben oltre l'intenzione di questo post, però voglio
accennare alcuni elementi.</p>
<p>Dal punto di vista culturale: ho apprezzato l'atteggiamento in cui la
religione occupa uno spazio secondario, l'assenza di ostentazione, la
frugalità.</p>
<p>Dal punto di vista sociale: ho notato un'attitudine progressiva che
differisce notevolmente dal medioevo che caratterizza molti dei paesi
in cui ho vissuto. Rispetto a ciò, ho percepito come una sorta di
parodia per edgy teenagers i paesi auto-proclamati
"progressivi" in cui ho vissuto, come la California e Londra. Infine,
una menzione d'onore va fatta alla <strong>bespreekbaarheid</strong>. Ben Coates nel
suo libro "Why the Dutch are Different: A Journey into the Hidden
Heart of the Netherlands" la definisce come la capacità di affrontare
e discutere apertamente di determinati argomenti, anche quelli
sensibili o difficili. Quando un argomento è "bespreekbaar" significa
che è possibile parlarne in modo aperto, onesto e <strong>diretto</strong>, senza timori o tabù.</p>
<p>Queste invece sono gli argomenti che sto esplorando attualmente:</p>
<ul>
<li>la cultura sociale e politica della bici in Olanda, ma anche dei
restanti paesi del Nord Europa</li>
<li>la musica classica olandese, da Jan Pieterszoon Sweelinck a Bernard Haitink</li>
</ul>
<p>Questa esplorazione della cultura olandese e della città di Amsterdam
è vissuta nella cornice di convivenza da poco iniziata. Un percorso
arduo ma piacevoli per questi due nuovi expat.</p>
<p>Fatta questa lunghissima premessa arriviamo all'obiettivo di questo
post, ovvero elencare i buoni propositi dell'anno appena iniziato:</p>
<ul>
<li>
<strong>lavorare meno</strong>: la quantità di stress che ho vissuto quest'anno è
stata notevole. Devo essere più distaccato dal lavoro e ritrovare i
miei spazi personali.</li>
<li>
<strong>pensare meno ai soldi</strong>: tre anni in finanza sono stati proficui e
mi hanno avvicinato moltissimo all'obiettivo di comprare casa. Ora
posso rilassarmi da questo punto di vista e ristabilire le mie
priorità</li>
<li>
<strong>mangiare meno</strong>: dedicare tanto tempo al lavoro significa che le
uniche pause che ho potuto permettermi sono state quelle per il cibo</li>
<li><strong>offrire del lavoro volontario ad un'associazione di mio interesse</strong></li>
<li>dal punto di vista informatico, <strong>ritornare alle radici</strong>: devo tornare
ad utilizzare il pc fisso, Gentoo, che per pigrizia ho soppiantato
da Debian negli ultimi due anni per il mio portatile, ed utilizzare software
ancora più minimale. Troppo spesso sento di usare il pc senza
conoscere il software che sto digitando nel dettaglio</li>
<li>
<strong>giocare tutta la mia libreria su WINE</strong>: questo non dipende certo da
me, ma di sicuro la situazione negli ultimi anni è migliorata
notevolmente per il panorama dei videogiochi. Devo sforzarmi ad
esplorare la compatibilità con Linux ogni volta che voglio rigiocare
qualcosa o provare una novità</li>
<li>
<strong>continuare gli studi di cucina</strong>: in particolare riprendere a
tracciare tutto sul mio ricettario </li>
<li>nel 2023 ho adottato molto rigore nella gestione del patrimonio
personale, tracciando tutte le spese su
<a href="http://homebank.free.fr/">homebank</a> e avendo un rapporto costante e
continuativo con il mio consulente finanziario. Voglio continuare in
questa direzione</li>
<li>usare il venerdì come <strong>giorno di scrittura</strong>, sia per i progetti
personali come questo blog, che per il worklog e altra comunicazione
aziendale e lavorativa</li>
<li>uno dei tasti dolenti del 2023 è che spesso ho sostituito il libro a
letto con la lettura di siti web attraverso il cellulare. Questa
abitudine va assolutamente persa nel 2024. Insomma, <strong>riprendere a leggere prima di andare a dormire</strong>.</li>
</ul>
<blockquote>
<p>Fortuna opes auferre, non animum, potest.</p>
</blockquote>
</div>
<aside class="postpromonav"><nav><h4>Categories</h4>
<ul itemprop="keywords" class="tags">
<li><a class="tag p-category" href="../../../../../categories/resolutions/" rel="tag">resolutions</a></li>
<li><a class="tag p-category" href="../../../../../categories/work/" rel="tag">work</a></li>
</ul></nav></aside><p class="sourceline"><a href="index.md" class="sourcelink">Source</a></p>
<footer class="site-footer" id="footer"><span> CC BY-SA 4.0 International.<br></span>
<span class="site-footer-credits"><a href="https://getnikola.com">Nikola</a>, <a href="https://github.com/jasonlong/cayman-theme">Cayman theme</a>.</span>
</footer></section>
</div>
</body>
</html>

View file

@ -1,109 +0,0 @@
<!--
.. title: Welkom 2024!
.. slug: happy-new-year-2024
.. date: 2024-01-12
.. tags: resolutions, work
.. category: PesceWanda
.. link:
.. description:
.. type: text
-->
Il 2023 è stato un anno molto molto intenso, sia dal punto di vista
lavorativo che personale. Per quanto riguarda il lavoro uno dei più
grandi cambiamenti è stato l'arrivo del nuovo CTO (direttore tecnico)
in azienda, a Dicembre 2022. Avevo una collaborazione molto stretta
con il precedente e questo mi ha permesso non solo di catapultare la
mia carriera, ma soprattutto di acquisire tantissima conoscenza dei
meccanismi aziendali e finanziari da vicino, spalla a spalla con le
persone coinvolte invece di vivere soltanto di resoconti ed esperienze
indirette.
Nel corso di questi tre anni, il mio ruolo ha subito una brusca
trasformazione, passando da un focus sulla ricerca e sviluppo a una
posizione di sviluppo strettamente legata al front office
aziendale. In questo contesto, ho frequentemente affrontato le mie
lacune nel campo econometrico e finanziario. In breve, ho dovuto
esplorare diversi settori, occupandomi di risk management, portofolio
research e acquisizione dati, spesso completando il doppio del lavoro
necessario: prima la fase esplorativa e successivamente quella
esecutiva.
Questo percorso è stato affrontato con le spalle cariche di
responsabilità per il mio minuscolo team formatosi a
Settembre 2022. In quest'anno che si è appena concluso ho vissuto il
ruolo di manager con grandissima soddisfazione e ho potuto constatare
una significativa crescita professionale del mio collaboratore durante
la valutazione delle performance di fine anno.
Per quanto riguarda la mia vita personale, il 2023 ha segnato l'inizio
del mio esperimento di vita in Olanda, che posso dichiarare concluso
con successo. Mi sono davvero innamorato di questo paese, dei suoi
abitanti e della sua cultura. Scrivere nel dettaglio le mie
motivazioni va ben oltre l'intenzione di questo post, però voglio
accennare alcuni elementi.
Dal punto di vista culturale: ho apprezzato l'atteggiamento in cui la
religione occupa uno spazio secondario, l'assenza di ostentazione, la
frugalità.
Dal punto di vista sociale: ho notato un'attitudine progressiva che
differisce notevolmente dal medioevo che caratterizza molti dei paesi
in cui ho vissuto. Rispetto a ciò, ho percepito come una sorta di
parodia per edgy teenagers i paesi auto-proclamati
"progressivi" in cui ho vissuto, come la California e Londra. Infine,
una menzione d'onore va fatta alla __bespreekbaarheid__. Ben Coates nel
suo libro "Why the Dutch are Different: A Journey into the Hidden
Heart of the Netherlands" la definisce come la capacità di affrontare
e discutere apertamente di determinati argomenti, anche quelli
sensibili o difficili. Quando un argomento è "bespreekbaar" significa
che è possibile parlarne in modo aperto, onesto e **diretto**, senza timori o tabù.
Queste invece sono gli argomenti che sto esplorando attualmente:
- la cultura sociale e politica della bici in Olanda, ma anche dei
restanti paesi del Nord Europa
- la musica classica olandese, da Jan Pieterszoon Sweelinck a Bernard Haitink
Questa esplorazione della cultura olandese e della città di Amsterdam
è vissuta nella cornice di convivenza da poco iniziata. Un percorso
arduo ma piacevoli per questi due nuovi expat.
Fatta questa lunghissima premessa arriviamo all'obiettivo di questo
post, ovvero elencare i buoni propositi dell'anno appena iniziato:
- **lavorare meno**: la quantità di stress che ho vissuto quest'anno è
stata notevole. Devo essere più distaccato dal lavoro e ritrovare i
miei spazi personali.
- **pensare meno ai soldi**: tre anni in finanza sono stati proficui e
mi hanno avvicinato moltissimo all'obiettivo di comprare casa. Ora
posso rilassarmi da questo punto di vista e ristabilire le mie
priorità
- **mangiare meno**: dedicare tanto tempo al lavoro significa che le
uniche pause che ho potuto permettermi sono state quelle per il cibo
- **offrire del lavoro volontario ad un'associazione di mio interesse**
- dal punto di vista informatico, **ritornare alle radici**: devo tornare
ad utilizzare il pc fisso, Gentoo, che per pigrizia ho soppiantato
da Debian negli ultimi due anni per il mio portatile, ed utilizzare software
ancora più minimale. Troppo spesso sento di usare il pc senza
conoscere il software che sto digitando nel dettaglio
- **giocare tutta la mia libreria su WINE**: questo non dipende certo da
me, ma di sicuro la situazione negli ultimi anni è migliorata
notevolmente per il panorama dei videogiochi. Devo sforzarmi ad
esplorare la compatibilità con Linux ogni volta che voglio rigiocare
qualcosa o provare una novità
- **continuare gli studi di cucina**: in particolare riprendere a
tracciare tutto sul mio ricettario
- nel 2023 ho adottato molto rigore nella gestione del patrimonio
personale, tracciando tutte le spese su
[homebank](http://homebank.free.fr/) e avendo un rapporto costante e
continuativo con il mio consulente finanziario. Voglio continuare in
questa direzione
- usare il venerdì come **giorno di scrittura**, sia per i progetti
personali come questo blog, che per il worklog e altra comunicazione
aziendale e lavorativa
- uno dei tasti dolenti del 2023 è che spesso ho sostituito il libro a
letto con la lettura di siti web attraverso il cellulare. Questa
abitudine va assolutamente persa nel 2024. Insomma, **riprendere a leggere prima di andare a dormire**.
> Fortuna opes auferre, non animum, potest.

View file

@ -1,325 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>Playng videogames with WINE on Gentoo | Caught in the Net</title>
<link rel="stylesheet" href="../../../../../assets/blog/fonts/opensans.css">
<link href="../../../../../assets/blog/css/normalize.css" rel="stylesheet" type="text/css">
<link href="../../../../../assets/blog/css/cayman.css" rel="stylesheet" type="text/css">
<meta name="theme-color" content="#5670d4">
<meta name="generator" content="Nikola (getnikola.com)">
<link rel="alternate" type="application/rss+xml" title="RSS" hreflang="en" href="../../../../../rss.xml">
<link rel="canonical" href="francescomecca.eu/blog/2024/2/28/three-years-later/">
<meta name="author" content="Francesco Mecca">
<link rel="prev" href="../../../1/12/happy-new-year-2024/" title="Welkom 2024!" type="text/html">
<meta property="og:site_name" content="Caught in the Net">
<meta property="og:title" content="Playng videogames with WINE on Gentoo">
<meta property="og:url" content="francescomecca.eu/blog/2024/2/28/three-years-later/">
<meta property="og:description" content="Playing videogames with WINE on Gentoo
One of my new year's resolution are
related to playing videogames on GNU/Linux rather than resorting to
dual booting as I did for the last 15 years. This blogpos">
<meta property="og:type" content="article">
<meta property="article:published_time" content="2024-02-28T00:00:00Z">
<meta property="article:tag" content="Gentoo">
<meta property="article:tag" content="linux">
<meta property="article:tag" content="videogames">
</head>
<body>
<div id="container">
<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="../../../../../pages/about/">About me</a>
<a class="btn" href="../../../../../pages/contattami/">Contact me</a>
<a class="btn" href="../../../../../archiveall.html">Archive</a>
<a class="btn" href="../../../../../rss.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="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a>
</section><section class="main-content"><div class="post">
<header><h1 class="post-title">
<h1 class="p-name post-title" itemprop="headline name">Playng videogames with WINE on Gentoo</h1>
</h1>
</header><p class="dateline post-date">28 February 2024</p>
</div>
<div class="e-content entry-content" itemprop="articleBody text">
<h2>Playing videogames with WINE on Gentoo</h2>
<p><a href="../../../../../2024/1/12/happy-new-year-2024/">One of my new year's resolution</a> are
related to playing videogames on GNU/Linux rather than resorting to
dual booting as I did for the last 15 years. This blogpost aims to be
a continuosly updated guide to my journey in having a proper gaming
setup on my Gentoo workstation. My main resources are the <a href="https://wiki.gentoo.org/wiki/Wine">Gentoo
wiki</a> and the <a href="https://wiki.archlinux.org/title/Wine">Arch
Wiki</a>. </p>
<p>These objectives should be clear:</p>
<ul>
<li>I will not use steam: I only buy from <a href="https://www.gog.com/games">GOG</a> or use CDs</li>
<li>I want to use one of my controllers for games that need it</li>
<li>use as much software from the Gentoo repos as possible. This means avoiding <a href="https://usebottles.com/">Bottles</a> and <a href="https://lutris.net/">Lutris</a>
</li>
</ul>
<h3>Hardware</h3>
<div class="code"><pre class="code literal-block"><span class="n">user</span><span class="w"> </span><span class="o">~&gt;</span><span class="w"> </span><span class="n">sudo</span><span class="w"> </span><span class="n">inxi</span><span class="w"> </span><span class="o">-</span><span class="n">AGSC</span>
<span class="n">System</span><span class="p">:</span>
<span class="w"> </span><span class="n">Host</span><span class="p">:</span><span class="w"> </span><span class="n">____</span><span class="w"> </span><span class="n">Kernel</span><span class="p">:</span><span class="w"> </span><span class="mf">6.1</span><span class="o">.</span><span class="mi">69</span><span class="o">-</span><span class="n">gentoo</span><span class="o">-</span><span class="n">dist</span><span class="w"> </span><span class="n">arch</span><span class="p">:</span><span class="w"> </span><span class="n">x86_64</span><span class="w"> </span><span class="n">bits</span><span class="p">:</span><span class="w"> </span><span class="mi">64</span><span class="w"> </span><span class="n">Desktop</span><span class="p">:</span><span class="w"> </span><span class="n">spectrwm</span>
<span class="w"> </span><span class="n">Distro</span><span class="p">:</span><span class="w"> </span><span class="n">Gentoo</span><span class="w"> </span><span class="n">Base</span><span class="w"> </span><span class="n">System</span><span class="w"> </span><span class="n">release</span><span class="w"> </span><span class="mf">2.14</span>
<span class="n">CPU</span><span class="p">:</span>
<span class="w"> </span><span class="n">Info</span><span class="p">:</span><span class="w"> </span><span class="mi">6</span><span class="o">-</span><span class="n">core</span><span class="w"> </span><span class="n">model</span><span class="p">:</span><span class="w"> </span><span class="n">AMD</span><span class="w"> </span><span class="n">Ryzen</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="mi">2600</span><span class="w"> </span><span class="n">bits</span><span class="p">:</span><span class="w"> </span><span class="mi">64</span><span class="w"> </span><span class="n">type</span><span class="p">:</span><span class="w"> </span><span class="n">MT</span><span class="w"> </span><span class="n">MCP</span><span class="w"> </span><span class="n">cache</span><span class="p">:</span><span class="w"> </span><span class="n">L2</span><span class="p">:</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="n">MiB</span>
<span class="w"> </span><span class="n">Speed</span><span class="w"> </span><span class="p">(</span><span class="n">MHz</span><span class="p">):</span><span class="w"> </span><span class="n">avg</span><span class="p">:</span><span class="w"> </span><span class="mi">1858</span><span class="w"> </span><span class="nb">min</span><span class="o">/</span><span class="nb">max</span><span class="p">:</span><span class="w"> </span><span class="mi">1550</span><span class="o">/</span><span class="mi">3400</span><span class="w"> </span><span class="n">cores</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">:</span><span class="w"> </span><span class="mi">3400</span><span class="w"> </span><span class="mi">2</span><span class="p">:</span><span class="w"> </span><span class="mi">1550</span><span class="w"> </span><span class="mi">3</span><span class="p">:</span><span class="w"> </span><span class="mi">1550</span>
<span class="w"> </span><span class="mi">4</span><span class="p">:</span><span class="w"> </span><span class="mi">1550</span><span class="w"> </span><span class="mi">5</span><span class="p">:</span><span class="w"> </span><span class="mi">1550</span><span class="w"> </span><span class="mi">6</span><span class="p">:</span><span class="w"> </span><span class="mi">1550</span><span class="w"> </span><span class="mi">7</span><span class="p">:</span><span class="w"> </span><span class="mi">1550</span><span class="w"> </span><span class="mi">8</span><span class="p">:</span><span class="w"> </span><span class="mi">1550</span><span class="w"> </span><span class="mi">9</span><span class="p">:</span><span class="w"> </span><span class="mi">3400</span><span class="w"> </span><span class="mi">10</span><span class="p">:</span><span class="w"> </span><span class="mi">1550</span><span class="w"> </span><span class="mi">11</span><span class="p">:</span><span class="w"> </span><span class="mi">1550</span><span class="w"> </span><span class="mi">12</span><span class="p">:</span><span class="w"> </span><span class="mi">1550</span>
<span class="n">Graphics</span><span class="p">:</span>
<span class="w"> </span><span class="n">Device</span><span class="o">-</span><span class="mi">1</span><span class="p">:</span><span class="w"> </span><span class="n">AMD</span><span class="w"> </span><span class="n">Navi</span><span class="w"> </span><span class="mi">22</span><span class="w"> </span><span class="p">[</span><span class="n">Radeon</span><span class="w"> </span><span class="n">RX</span><span class="w"> </span><span class="mi">6700</span><span class="o">/</span><span class="mi">6700</span><span class="w"> </span><span class="n">XT</span><span class="o">/</span><span class="mi">6750</span><span class="w"> </span><span class="n">XT</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">6800</span><span class="n">M</span><span class="o">/</span><span class="mi">6850</span><span class="n">M</span><span class="w"> </span><span class="n">XT</span><span class="p">]</span>
<span class="w"> </span><span class="n">driver</span><span class="p">:</span><span class="w"> </span><span class="n">amdgpu</span><span class="w"> </span><span class="n">v</span><span class="p">:</span><span class="w"> </span><span class="n">kernel</span>
<span class="w"> </span><span class="n">Device</span><span class="o">-</span><span class="mi">2</span><span class="p">:</span><span class="w"> </span><span class="n">Logitech</span><span class="w"> </span><span class="n">C920</span><span class="w"> </span><span class="n">HD</span><span class="w"> </span><span class="n">Pro</span><span class="w"> </span><span class="n">Webcam</span><span class="w"> </span><span class="n">driver</span><span class="p">:</span><span class="w"> </span><span class="n">usbfs</span><span class="w"> </span><span class="n">type</span><span class="p">:</span><span class="w"> </span><span class="n">USB</span>
<span class="w"> </span><span class="n">Display</span><span class="p">:</span><span class="w"> </span><span class="n">server</span><span class="p">:</span><span class="w"> </span><span class="n">X</span><span class="o">.</span><span class="n">org</span><span class="w"> </span><span class="n">v</span><span class="p">:</span><span class="w"> </span><span class="mf">1.21</span><span class="o">.</span><span class="mf">1.11</span><span class="w"> </span><span class="n">driver</span><span class="p">:</span><span class="w"> </span><span class="n">X</span><span class="p">:</span><span class="w"> </span><span class="n">loaded</span><span class="p">:</span><span class="w"> </span><span class="n">amdgpu</span>
<span class="w"> </span><span class="n">unloaded</span><span class="p">:</span><span class="w"> </span><span class="n">modesetting</span><span class="p">,</span><span class="n">radeon</span><span class="w"> </span><span class="n">dri</span><span class="p">:</span><span class="w"> </span><span class="n">radeonsi</span><span class="w"> </span><span class="n">gpu</span><span class="p">:</span><span class="w"> </span><span class="n">amdgpu</span>
<span class="w"> </span><span class="n">resolution</span><span class="p">:</span><span class="w"> </span><span class="mi">1920</span><span class="n">x1200</span><span class="o">~</span><span class="mi">60</span><span class="n">Hz</span>
<span class="w"> </span><span class="n">API</span><span class="p">:</span><span class="w"> </span><span class="n">EGL</span><span class="w"> </span><span class="n">v</span><span class="p">:</span><span class="w"> </span><span class="mf">1.5</span><span class="w"> </span><span class="n">drivers</span><span class="p">:</span><span class="w"> </span><span class="n">radeonsi</span><span class="p">,</span><span class="n">swrast</span>
<span class="w"> </span><span class="n">platforms</span><span class="p">:</span><span class="w"> </span><span class="n">gbm</span><span class="p">,</span><span class="n">x11</span><span class="p">,</span><span class="n">surfaceless</span><span class="p">,</span><span class="n">device</span>
<span class="w"> </span><span class="n">API</span><span class="p">:</span><span class="w"> </span><span class="n">OpenGL</span><span class="w"> </span><span class="n">v</span><span class="p">:</span><span class="w"> </span><span class="mf">4.6</span><span class="w"> </span><span class="n">vendor</span><span class="p">:</span><span class="w"> </span><span class="n">amd</span><span class="w"> </span><span class="n">mesa</span><span class="w"> </span><span class="n">v</span><span class="p">:</span><span class="w"> </span><span class="mf">23.3</span><span class="o">.</span><span class="mi">5</span><span class="w"> </span><span class="n">renderer</span><span class="p">:</span><span class="w"> </span><span class="n">AMD</span><span class="w"> </span><span class="n">Radeon</span><span class="w"> </span><span class="n">RX</span>
<span class="w"> </span><span class="mi">6750</span><span class="w"> </span><span class="n">XT</span><span class="w"> </span><span class="p">(</span><span class="n">radeonsi</span><span class="w"> </span><span class="n">navi22</span><span class="w"> </span><span class="n">LLVM</span><span class="w"> </span><span class="mf">17.0</span><span class="o">.</span><span class="mi">6</span><span class="w"> </span><span class="n">DRM</span><span class="w"> </span><span class="mf">3.49</span><span class="w"> </span><span class="mf">6.1</span><span class="o">.</span><span class="mi">69</span><span class="o">-</span><span class="n">gentoo</span><span class="o">-</span><span class="n">dist</span><span class="p">)</span>
<span class="w"> </span><span class="n">API</span><span class="p">:</span><span class="w"> </span><span class="n">Vulkan</span><span class="w"> </span><span class="n">v</span><span class="p">:</span><span class="w"> </span><span class="mf">1.3</span><span class="o">.</span><span class="mi">275</span><span class="w"> </span><span class="n">drivers</span><span class="p">:</span><span class="w"> </span><span class="n">N</span><span class="o">/</span><span class="n">A</span><span class="w"> </span><span class="n">surfaces</span><span class="p">:</span><span class="w"> </span><span class="n">xcb</span><span class="p">,</span><span class="n">xlib</span>
<span class="n">Audio</span><span class="p">:</span>
<span class="w"> </span><span class="n">Device</span><span class="o">-</span><span class="mi">1</span><span class="p">:</span><span class="w"> </span><span class="n">AMD</span><span class="w"> </span><span class="n">Navi</span><span class="w"> </span><span class="mi">21</span><span class="o">/</span><span class="mi">23</span><span class="w"> </span><span class="n">HDMI</span><span class="o">/</span><span class="n">DP</span><span class="w"> </span><span class="n">Audio</span><span class="w"> </span><span class="n">driver</span><span class="p">:</span><span class="w"> </span><span class="n">snd_hda_intel</span>
<span class="w"> </span><span class="n">Device</span><span class="o">-</span><span class="mi">2</span><span class="p">:</span><span class="w"> </span><span class="n">AMD</span><span class="w"> </span><span class="n">Family</span><span class="w"> </span><span class="mi">17</span><span class="n">h</span><span class="w"> </span><span class="n">HD</span><span class="w"> </span><span class="n">Audio</span><span class="w"> </span><span class="n">driver</span><span class="p">:</span><span class="w"> </span><span class="n">snd_hda_intel</span>
<span class="w"> </span><span class="n">Device</span><span class="o">-</span><span class="mi">5</span><span class="p">:</span><span class="w"> </span><span class="n">Focusrite</span><span class="o">-</span><span class="n">Novation</span><span class="w"> </span><span class="n">Focusrite</span><span class="w"> </span><span class="n">Scarlett</span><span class="w"> </span><span class="mi">2</span><span class="n">i2</span><span class="w"> </span><span class="n">driver</span><span class="p">:</span><span class="w"> </span><span class="n">snd</span><span class="o">-</span><span class="n">usb</span><span class="o">-</span><span class="n">audio</span>
<span class="w"> </span><span class="n">type</span><span class="p">:</span><span class="w"> </span><span class="n">USB</span>
<span class="w"> </span><span class="n">API</span><span class="p">:</span><span class="w"> </span><span class="n">ALSA</span><span class="w"> </span><span class="n">v</span><span class="p">:</span><span class="w"> </span><span class="n">k6</span><span class="o">.</span><span class="mf">1.69</span><span class="o">-</span><span class="n">gentoo</span><span class="o">-</span><span class="n">dist</span><span class="w"> </span><span class="n">status</span><span class="p">:</span><span class="w"> </span><span class="n">kernel</span><span class="o">-</span><span class="n">api</span>
<span class="w"> </span><span class="n">Server</span><span class="o">-</span><span class="mi">1</span><span class="p">:</span><span class="w"> </span><span class="n">PulseAudio</span><span class="w"> </span><span class="n">v</span><span class="p">:</span><span class="w"> </span><span class="mf">16.1</span><span class="w"> </span><span class="n">status</span><span class="p">:</span><span class="w"> </span><span class="n">active</span><span class="w"> </span><span class="p">(</span><span class="n">root</span><span class="p">,</span><span class="w"> </span><span class="n">process</span><span class="p">)</span>
<span class="n">USB</span><span class="p">:</span>
<span class="w"> </span><span class="n">Device</span><span class="o">-</span><span class="mi">1</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="o">-</span><span class="mi">4</span><span class="p">:</span><span class="mi">2</span><span class="w"> </span><span class="n">info</span><span class="p">:</span><span class="w"> </span><span class="n">splitkb</span><span class="o">.</span><span class="n">com</span><span class="w"> </span><span class="n">Kyria</span><span class="w"> </span><span class="n">rev2</span><span class="w"> </span><span class="n">type</span><span class="p">:</span><span class="w"> </span><span class="n">keyboard</span><span class="p">,</span><span class="n">HID</span><span class="w"> </span><span class="n">rev</span><span class="p">:</span><span class="w"> </span><span class="mf">2.0</span>
<span class="w"> </span><span class="n">Device</span><span class="o">-</span><span class="mi">2</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="o">-</span><span class="mi">7</span><span class="p">:</span><span class="mi">4</span><span class="w"> </span><span class="n">info</span><span class="p">:</span><span class="w"> </span><span class="n">Microsoft</span><span class="w"> </span><span class="n">Xbox360</span><span class="w"> </span><span class="n">Controller</span><span class="w"> </span><span class="n">type</span><span class="p">:</span><span class="w"> </span><span class="o">&lt;</span><span class="n">vendor</span><span class="w"> </span><span class="n">specific</span><span class="o">&gt;</span>
<span class="w"> </span><span class="n">rev</span><span class="p">:</span><span class="w"> </span><span class="mf">2.0</span>
<span class="w"> </span><span class="n">Device</span><span class="o">-</span><span class="mi">3</span><span class="p">:</span><span class="w"> </span><span class="mi">3</span><span class="o">-</span><span class="mi">2</span><span class="p">:</span><span class="mi">3</span><span class="w"> </span><span class="n">info</span><span class="p">:</span><span class="w"> </span><span class="n">Focusrite</span><span class="o">-</span><span class="n">Novation</span><span class="w"> </span><span class="n">Focusrite</span><span class="w"> </span><span class="n">Scarlett</span><span class="w"> </span><span class="mi">2</span><span class="n">i2</span>
<span class="w"> </span><span class="n">type</span><span class="p">:</span><span class="w"> </span><span class="n">audio</span><span class="w"> </span><span class="n">rev</span><span class="p">:</span><span class="w"> </span><span class="mf">2.0</span>
<span class="w"> </span><span class="n">Device</span><span class="o">-</span><span class="mi">4</span><span class="p">:</span><span class="w"> </span><span class="mi">3</span><span class="o">-</span><span class="mi">4</span><span class="p">:</span><span class="mi">6</span><span class="w"> </span><span class="n">info</span><span class="p">:</span><span class="w"> </span><span class="n">ThrustMaster</span><span class="w"> </span><span class="n">XB1</span><span class="w"> </span><span class="n">Classic</span><span class="w"> </span><span class="n">Controller</span>
<span class="w"> </span><span class="n">type</span><span class="p">:</span><span class="w"> </span><span class="o">&lt;</span><span class="n">vendor</span><span class="w"> </span><span class="n">specific</span><span class="o">&gt;</span><span class="w"> </span><span class="n">rev</span><span class="p">:</span><span class="w"> </span><span class="mf">2.0</span>
</pre></div>
<h3>Drivers</h3>
<p>For the kernel, I am using the <code>gentoo-kernel</code> seed.</p>
<p>For the GPU setup you need:</p>
<ul>
<li>the open source drivers, see https://wiki.gentoo.org/wiki/AMDGPU</li>
<li>the proprietary drivers, see https://wiki.gentoo.org/wiki/AMDGPU-PRO</li>
<li>the vulkan drivers, see https://wiki.gentoo.org/wiki/AMDVLK
These are useful commands to check if the drivers are loaded correctly:</li>
</ul>
<div class="code"><pre class="code literal-block">user ~&gt; lspci -k | grep -A 3 -E "(VGA|3D)"
08:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Navi 22 [Radeon RX 6700/6700 XT/6750 XT / 6800M/6850M XT] (rev c0)
Subsystem: Tul Corporation / PowerColor Navi 22 [Radeon RX 6700/6700 XT/6750 XT / 6800M/6850M XT]
Kernel driver in use: amdgpu
Kernel modules: amdgpu
</pre></div>
<div class="code"><pre class="code literal-block">user ~&gt; glxinfo -B
name of display: :0
display: :0 screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
Vendor: AMD (0x1002)
Device: AMD Radeon RX 6750 XT (radeonsi, navi22, LLVM 17.0.6, DRM 3.49, 6.1.69-gentoo-dist) (0x73df)
Version: 23.3.5
Accelerated: yes
Video memory: 12288MB
Unified memory: no
Preferred profile: core (0x1)
Max core profile version: 4.6
Max compat profile version: 4.6
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.2
Memory info (GL_ATI_meminfo):
VBO free memory - total: 11874 MB, largest block: 11874 MB
VBO free aux. memory - total: 32064 MB, largest block: 32064 MB
Texture free memory - total: 11874 MB, largest block: 11874 MB
Texture free aux. memory - total: 32064 MB, largest block: 32064 MB
Renderbuffer free memory - total: 11874 MB, largest block: 11874 MB
Renderbuffer free aux. memory - total: 32064 MB, largest block: 32064 MB
Memory info (GL_NVX_gpu_memory_info):
Dedicated video memory: 12288 MB
Total available memory: 44400 MB
Currently available dedicated video memory: 11874 MB
OpenGL vendor string: AMD
OpenGL renderer string: AMD Radeon RX 6750 XT (radeonsi, navi22, LLVM 17.0.6, DRM 3.49, 6.1.69-gentoo-dist)
OpenGL core profile version string: 4.6 (Core Profile) Mesa 23.3.5
OpenGL core profile shading language version string: 4.60
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL version string: 4.6 (Compatibility Profile) Mesa 23.3.5
OpenGL shading language version string: 4.60
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 23.3.5
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
</pre></div>
<div class="code"><pre class="code literal-block"><span class="n">user</span><span class="w"> </span><span class="o">~&gt;</span><span class="w"> </span><span class="n">vulkaninfo</span><span class="w"> </span><span class="o">--</span><span class="n">summary</span><span class="w"> </span>
<span class="n">ac_compute_device_uuid</span><span class="s1">'s output is based on invalid pci bus info.</span>
<span class="o">==========</span>
<span class="n">VULKANINFO</span>
<span class="o">==========</span>
<span class="n">Vulkan</span><span class="w"> </span><span class="n">Instance</span><span class="w"> </span><span class="n">Version</span><span class="p">:</span><span class="w"> </span><span class="mf">1.3</span><span class="o">.</span><span class="mi">275</span>
<span class="n">Instance</span><span class="w"> </span><span class="n">Extensions</span><span class="p">:</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">22</span>
<span class="o">-------------------------------</span>
<span class="n">VK_EXT_acquire_drm_display</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">1</span>
<span class="n">VK_EXT_acquire_xlib_display</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">1</span>
<span class="n">VK_EXT_debug_report</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">10</span>
<span class="n">VK_EXT_debug_utils</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">2</span>
<span class="n">VK_EXT_direct_mode_display</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">1</span>
<span class="n">VK_EXT_display_surface_counter</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">1</span>
<span class="n">VK_EXT_surface_maintenance1</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">1</span>
<span class="n">VK_EXT_swapchain_colorspace</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">4</span>
<span class="n">VK_KHR_device_group_creation</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">1</span>
<span class="n">VK_KHR_display</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">23</span>
<span class="n">VK_KHR_external_fence_capabilities</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">1</span>
<span class="n">VK_KHR_external_memory_capabilities</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">1</span>
<span class="n">VK_KHR_external_semaphore_capabilities</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">1</span>
<span class="n">VK_KHR_get_display_properties2</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">1</span>
<span class="n">VK_KHR_get_physical_device_properties2</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">2</span>
<span class="n">VK_KHR_get_surface_capabilities2</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">1</span>
<span class="n">VK_KHR_portability_enumeration</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">1</span>
<span class="n">VK_KHR_surface</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">25</span>
<span class="n">VK_KHR_surface_protected_capabilities</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">1</span>
<span class="n">VK_KHR_xcb_surface</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">6</span>
<span class="n">VK_KHR_xlib_surface</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">6</span>
<span class="n">VK_LUNARG_direct_driver_loading</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">1</span>
<span class="n">Instance</span><span class="w"> </span><span class="n">Layers</span><span class="p">:</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">3</span>
<span class="o">--------------------------</span>
<span class="n">VK_LAYER_AMD_switchable_graphics_32</span><span class="w"> </span><span class="n">AMD</span><span class="w"> </span><span class="n">switchable</span><span class="w"> </span><span class="n">graphics</span><span class="w"> </span><span class="n">layer</span><span class="w"> </span><span class="mf">1.3</span><span class="o">.</span><span class="mi">241</span><span class="w"> </span><span class="n">version</span><span class="w"> </span><span class="mi">1</span>
<span class="n">VK_LAYER_AMD_switchable_graphics_64</span><span class="w"> </span><span class="n">AMD</span><span class="w"> </span><span class="n">switchable</span><span class="w"> </span><span class="n">graphics</span><span class="w"> </span><span class="n">layer</span><span class="w"> </span><span class="mf">1.3</span><span class="o">.</span><span class="mi">241</span><span class="w"> </span><span class="n">version</span><span class="w"> </span><span class="mi">1</span>
<span class="n">VK_LAYER_MESA_device_select</span><span class="w"> </span><span class="n">Linux</span><span class="w"> </span><span class="n">device</span><span class="w"> </span><span class="n">selection</span><span class="w"> </span><span class="n">layer</span><span class="w"> </span><span class="mf">1.3</span><span class="o">.</span><span class="mi">211</span><span class="w"> </span><span class="n">version</span><span class="w"> </span><span class="mi">1</span>
<span class="n">Devices</span><span class="p">:</span>
<span class="o">========</span>
<span class="n">GPU0</span><span class="p">:</span>
<span class="w"> </span><span class="n">apiVersion</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">1.3</span><span class="o">.</span><span class="mi">260</span>
<span class="w"> </span><span class="n">driverVersion</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">2.0</span><span class="o">.</span><span class="mi">279</span>
<span class="w"> </span><span class="n">vendorID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mh">0x1002</span>
<span class="w"> </span><span class="n">deviceID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mh">0x73df</span>
<span class="w"> </span><span class="n">deviceType</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">PHYSICAL_DEVICE_TYPE_DISCRETE_GPU</span>
<span class="w"> </span><span class="n">deviceName</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">AMD</span><span class="w"> </span><span class="n">Radeon</span><span class="w"> </span><span class="n">RX</span><span class="w"> </span><span class="mi">6750</span><span class="w"> </span><span class="n">XT</span>
<span class="w"> </span><span class="n">driverID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">DRIVER_ID_AMD_PROPRIETARY</span>
<span class="w"> </span><span class="n">driverName</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">AMD</span><span class="w"> </span><span class="n">proprietary</span><span class="w"> </span><span class="n">driver</span>
<span class="w"> </span><span class="n">driverInfo</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="n">AMD</span><span class="w"> </span><span class="n">proprietary</span><span class="w"> </span><span class="n">shader</span><span class="w"> </span><span class="n">compiler</span><span class="p">)</span>
<span class="w"> </span><span class="n">conformanceVersion</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">1.3</span><span class="o">.</span><span class="mf">3.1</span>
<span class="w"> </span><span class="n">deviceUUID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>
<span class="w"> </span><span class="n">driverUUID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">414</span><span class="n">d442d</span><span class="o">-</span><span class="mi">4</span><span class="n">c49</span><span class="o">-</span><span class="mf">4e55</span><span class="o">-</span><span class="mi">582</span><span class="n">d</span><span class="o">-</span><span class="mi">445256000000</span>
<span class="n">GPU1</span><span class="p">:</span>
<span class="w"> </span><span class="n">apiVersion</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">1.3</span><span class="o">.</span><span class="mi">241</span>
<span class="w"> </span><span class="n">driverVersion</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">2.0</span><span class="o">.</span><span class="mi">257</span>
<span class="w"> </span><span class="n">vendorID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mh">0x1002</span>
<span class="w"> </span><span class="n">deviceID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mh">0x73df</span>
<span class="w"> </span><span class="n">deviceType</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">PHYSICAL_DEVICE_TYPE_DISCRETE_GPU</span>
<span class="w"> </span><span class="n">deviceName</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">AMD</span><span class="w"> </span><span class="n">Radeon</span><span class="w"> </span><span class="n">RX</span><span class="w"> </span><span class="mi">6750</span><span class="w"> </span><span class="n">XT</span>
<span class="w"> </span><span class="n">driverID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">DRIVER_ID_AMD_OPEN_SOURCE</span>
<span class="w"> </span><span class="n">driverName</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">AMD</span><span class="w"> </span><span class="n">open</span><span class="o">-</span><span class="n">source</span><span class="w"> </span><span class="n">driver</span>
<span class="w"> </span><span class="n">driverInfo</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">2023.</span><span class="n">Q1</span><span class="o">.</span><span class="mi">3</span><span class="w"> </span><span class="p">(</span><span class="n">LLPC</span><span class="p">)</span>
<span class="w"> </span><span class="n">conformanceVersion</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">1.3</span><span class="o">.</span><span class="mf">0.0</span>
<span class="w"> </span><span class="n">deviceUUID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>
<span class="w"> </span><span class="n">driverUUID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">414</span><span class="n">d442d</span><span class="o">-</span><span class="mi">4</span><span class="n">c49</span><span class="o">-</span><span class="mf">4e55</span><span class="o">-</span><span class="mi">582</span><span class="n">d</span><span class="o">-</span><span class="mi">445256000000</span>
</pre></div>
<p>The most important bits are:</p>
<ul>
<li><code>Kernel driver in use: amdgpu</code></li>
<li><code>direct rendering: Yes</code></li>
<li>that <code>vulkaninfo</code> doesn't produce any errors</li>
</ul>
<h3>Wine and other software packages</h3>
<p>These are my current useflags:</p>
<ul>
<li>wine: <code>+abi_x86_32 +abi_x86_64 +proton</code>
</li>
<li>wine-staging: <code>+X +abi_x86_32 +abi_x86_64 -alsa -capi -crossdev-mingw -cups -custom-cflags -dos +fontconfig +gecko -gphoto2 +gstreamer -kerberos -llvm-libunwind +mingw +mono -netapi +nls -opencl +opengl -osmesa -pcap -perl +pulseaudio -samba -scanner +sdl -smartcard +ssl +strip +truetype -udev -udisks +unwind +usb -v4l +vulkan -wayland -wow64 +xcomposite -xinerama</code>
</li>
<li>wine-proton: <code>+X +abi_x86_32 +abi_x86_64 -alsa -capi -crossdev-mingw -cups -custom-cflags -dos +fontconfig +gecko -gphoto2 +gstreamer -kerberos -llvm-libunwind +mingw +mono -netapi +nls -odbc -opencl +opengl -osmesa -pcap -perl +pulseaudio -samba -scanner +sdl -smartcard +ssl +strip +truetype -udev -udisks +unwind -usb -v4l +vulkan -wayland -wow64 +xcomposite -xinerama</code>
</li>
<li>wine-vanilla: <code>+abi_x86_32 +abi_x86_64 -alsa -crossdev-mingw -custom-cflags +fontconfig +gecko +gstreamer -llvm-libunwind +mono +nls -osmesa -perl +pulseaudio +sdl +ssl +strip -udev -udisks +unwind +usb -v4l +video_cards_amdgpu +xcomposite -xinerama</code>
Notice that I am targeting all WINE packages in order to test slightly different configurations. Use <code>eselect wine</code> to switch between versions.</li>
</ul>
<p>I have enable the <code>abi_x86_32</code> use flag for many packages, probably more than needed. This is to ensure that I avoid problems related to my configuration. Enabling the flag globally seems like a waste of cpu and disk.</p>
<p>These are the additional WINE related packages that I installed:</p>
<ul>
<li>app-emulation/winetricks: <code>+gtk +rar</code>
</li>
<li>app-emulation/vkd3d-proton: <code>+abi_x86_32 +strip</code>
</li>
</ul>
<p>GPU related packages:</p>
<ul>
<li>dev-util/DirectXShaderCompiler: necessary for proper directX support with vulkan</li>
<li>media-libs/vulkan-loader: <code>+X +abi_x86_32 +layers</code>
</li>
<li>dev-util/vulkan-tools: <code>+X</code>
</li>
<li>media-libs/amdgpu-pro-vulkan: <code>+abi_x86_32 +video_cards_amdgpu</code>
</li>
<li>media-libs/amdvlk: <code>+abi_x86_32 +raytracing</code> but I am not sure my gpu supports raytracing</li>
<li>media-libs/shaderc</li>
</ul>
<p>Controller related tools:</p>
<ul>
<li>app-misc/evtest: to test the controllers input</li>
</ul>
<p>I am using spectrwm as my windows manager. It is not the best option and I would suggest to use a more featured DE.
This is an example of an innocous error that is caused by spectrwm when using WINE:</p>
<div class="code"><pre class="code literal-block"><span class="n">ERROR</span><span class="p">:</span><span class="w"> </span><span class="n">ld</span><span class="o">.</span><span class="n">so</span><span class="p">:</span><span class="w"> </span><span class="n">object</span><span class="w"> </span><span class="s1">'/usr/lib64/libswmhack.so.0.0'</span><span class="w"> </span><span class="n">from</span><span class="w"> </span><span class="n">LD_PRELOAD</span><span class="w"> </span><span class="n">cannot</span><span class="w"> </span><span class="n">be</span><span class="w"> </span><span class="n">preloaded</span><span class="w"> </span><span class="p">(</span><span class="n">wrong</span><span class="w"> </span><span class="n">ELF</span><span class="w"> </span><span class="k">class</span><span class="p">:</span><span class="w"> </span><span class="n">ELFCLASS64</span><span class="p">):</span><span class="w"> </span><span class="n">ignored</span><span class="o">.</span>
</pre></div>
<p>Consider that WMs need a compositor to avoid some clashes with WINE. I am using x11-misc/picom with drm and opengl support.</p>
<p>user ~&gt; WINEPREFIX=/home/user/.wine setup_vkd3d_proton.sh install --symlink</p>
<ul>
<li>wineboot</li>
<li>la demo</li>
<li>app-emulation/vkd3d-proton<div class="code"><pre class="code literal-block">elog " WINEPREFIX=/path/to/prefix setup_dxvk.sh install --symlink"
</pre></div>
</li>
</ul>
<p>WINEPREFIX=user ~&gt; setup_vkd3d_proton.sh install</p>
<ul>
<li>evtest; wine control joy....; dxdiag?</li>
</ul>
<p>windows managers?</p>
<ul>
<li>
<p>hardware: controller, gpu, cpu, audio</p>
</li>
<li>
<p>snapshot .cache/wine</p>
</li>
</ul>
</div>
<aside class="postpromonav"><nav><h4>Categories</h4>
<ul itemprop="keywords" class="tags">
<li><a class="tag p-category" href="../../../../../categories/gentoo/" rel="tag">Gentoo</a></li>
<li><a class="tag p-category" href="../../../../../categories/linux/" rel="tag">linux</a></li>
<li><a class="tag p-category" href="../../../../../categories/videogames/" rel="tag">videogames</a></li>
</ul></nav></aside><p class="sourceline"><a href="index.md" class="sourcelink">Source</a></p>
<footer class="site-footer" id="footer"><span> CC BY-SA 4.0 International.<br></span>
<span class="site-footer-credits"><a href="https://getnikola.com">Nikola</a>, <a href="https://github.com/jasonlong/cayman-theme">Cayman theme</a>.</span>
</footer></section>
</div>
</body>
</html>

View file

@ -1,258 +0,0 @@
<!--
.. title: Playng videogames with WINE on Gentoo
.. slug: three-years-later
.. date: 2024-02-28
.. tags: videogames,linux,Gentoo
.. category: PesceWanda
.. link:
.. description:
.. type: text
-->
# Playing videogames with WINE on Gentoo
[One of my new year's resolution](/2024/1/12/happy-new-year-2024/) are
related to playing videogames on GNU/Linux rather than resorting to
dual booting as I did for the last 15 years. This blogpost aims to be
a continuosly updated guide to my journey in having a proper gaming
setup on my Gentoo workstation. My main resources are the [Gentoo
wiki](https://wiki.gentoo.org/wiki/Wine) and the [Arch
Wiki](https://wiki.archlinux.org/title/Wine).
These objectives should be clear:
- I will not use steam: I only buy from [GOG](https://www.gog.com/games) or use CDs
- I want to use one of my controllers for games that need it
- use as much software from the Gentoo repos as possible. This means avoiding [Bottles](https://usebottles.com/) and [Lutris](https://lutris.net/)
## Hardware
```
user ~> sudo inxi -AGSC
System:
Host: ____ Kernel: 6.1.69-gentoo-dist arch: x86_64 bits: 64 Desktop: spectrwm
Distro: Gentoo Base System release 2.14
CPU:
Info: 6-core model: AMD Ryzen 5 2600 bits: 64 type: MT MCP cache: L2: 3 MiB
Speed (MHz): avg: 1858 min/max: 1550/3400 cores: 1: 3400 2: 1550 3: 1550
4: 1550 5: 1550 6: 1550 7: 1550 8: 1550 9: 3400 10: 1550 11: 1550 12: 1550
Graphics:
Device-1: AMD Navi 22 [Radeon RX 6700/6700 XT/6750 XT / 6800M/6850M XT]
driver: amdgpu v: kernel
Device-2: Logitech C920 HD Pro Webcam driver: usbfs type: USB
Display: server: X.org v: 1.21.1.11 driver: X: loaded: amdgpu
unloaded: modesetting,radeon dri: radeonsi gpu: amdgpu
resolution: 1920x1200~60Hz
API: EGL v: 1.5 drivers: radeonsi,swrast
platforms: gbm,x11,surfaceless,device
API: OpenGL v: 4.6 vendor: amd mesa v: 23.3.5 renderer: AMD Radeon RX
6750 XT (radeonsi navi22 LLVM 17.0.6 DRM 3.49 6.1.69-gentoo-dist)
API: Vulkan v: 1.3.275 drivers: N/A surfaces: xcb,xlib
Audio:
Device-1: AMD Navi 21/23 HDMI/DP Audio driver: snd_hda_intel
Device-2: AMD Family 17h HD Audio driver: snd_hda_intel
Device-5: Focusrite-Novation Focusrite Scarlett 2i2 driver: snd-usb-audio
type: USB
API: ALSA v: k6.1.69-gentoo-dist status: kernel-api
Server-1: PulseAudio v: 16.1 status: active (root, process)
USB:
Device-1: 1-4:2 info: splitkb.com Kyria rev2 type: keyboard,HID rev: 2.0
Device-2: 1-7:4 info: Microsoft Xbox360 Controller type: <vendor specific>
rev: 2.0
Device-3: 3-2:3 info: Focusrite-Novation Focusrite Scarlett 2i2
type: audio rev: 2.0
Device-4: 3-4:6 info: ThrustMaster XB1 Classic Controller
type: <vendor specific> rev: 2.0
```
## Drivers
For the kernel, I am using the `gentoo-kernel` seed.
For the GPU setup you need:
- the open source drivers, see https://wiki.gentoo.org/wiki/AMDGPU
- the proprietary drivers, see https://wiki.gentoo.org/wiki/AMDGPU-PRO
- the vulkan drivers, see https://wiki.gentoo.org/wiki/AMDVLK
These are useful commands to check if the drivers are loaded correctly:
```
user ~> lspci -k | grep -A 3 -E "(VGA|3D)"
08:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Navi 22 [Radeon RX 6700/6700 XT/6750 XT / 6800M/6850M XT] (rev c0)
Subsystem: Tul Corporation / PowerColor Navi 22 [Radeon RX 6700/6700 XT/6750 XT / 6800M/6850M XT]
Kernel driver in use: amdgpu
Kernel modules: amdgpu
```
```
user ~> glxinfo -B
name of display: :0
display: :0 screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
Vendor: AMD (0x1002)
Device: AMD Radeon RX 6750 XT (radeonsi, navi22, LLVM 17.0.6, DRM 3.49, 6.1.69-gentoo-dist) (0x73df)
Version: 23.3.5
Accelerated: yes
Video memory: 12288MB
Unified memory: no
Preferred profile: core (0x1)
Max core profile version: 4.6
Max compat profile version: 4.6
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.2
Memory info (GL_ATI_meminfo):
VBO free memory - total: 11874 MB, largest block: 11874 MB
VBO free aux. memory - total: 32064 MB, largest block: 32064 MB
Texture free memory - total: 11874 MB, largest block: 11874 MB
Texture free aux. memory - total: 32064 MB, largest block: 32064 MB
Renderbuffer free memory - total: 11874 MB, largest block: 11874 MB
Renderbuffer free aux. memory - total: 32064 MB, largest block: 32064 MB
Memory info (GL_NVX_gpu_memory_info):
Dedicated video memory: 12288 MB
Total available memory: 44400 MB
Currently available dedicated video memory: 11874 MB
OpenGL vendor string: AMD
OpenGL renderer string: AMD Radeon RX 6750 XT (radeonsi, navi22, LLVM 17.0.6, DRM 3.49, 6.1.69-gentoo-dist)
OpenGL core profile version string: 4.6 (Core Profile) Mesa 23.3.5
OpenGL core profile shading language version string: 4.60
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL version string: 4.6 (Compatibility Profile) Mesa 23.3.5
OpenGL shading language version string: 4.60
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 23.3.5
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
```
```
user ~> vulkaninfo --summary
ac_compute_device_uuid's output is based on invalid pci bus info.
==========
VULKANINFO
==========
Vulkan Instance Version: 1.3.275
Instance Extensions: count = 22
-------------------------------
VK_EXT_acquire_drm_display : extension revision 1
VK_EXT_acquire_xlib_display : extension revision 1
VK_EXT_debug_report : extension revision 10
VK_EXT_debug_utils : extension revision 2
VK_EXT_direct_mode_display : extension revision 1
VK_EXT_display_surface_counter : extension revision 1
VK_EXT_surface_maintenance1 : extension revision 1
VK_EXT_swapchain_colorspace : extension revision 4
VK_KHR_device_group_creation : extension revision 1
VK_KHR_display : extension revision 23
VK_KHR_external_fence_capabilities : extension revision 1
VK_KHR_external_memory_capabilities : extension revision 1
VK_KHR_external_semaphore_capabilities : extension revision 1
VK_KHR_get_display_properties2 : extension revision 1
VK_KHR_get_physical_device_properties2 : extension revision 2
VK_KHR_get_surface_capabilities2 : extension revision 1
VK_KHR_portability_enumeration : extension revision 1
VK_KHR_surface : extension revision 25
VK_KHR_surface_protected_capabilities : extension revision 1
VK_KHR_xcb_surface : extension revision 6
VK_KHR_xlib_surface : extension revision 6
VK_LUNARG_direct_driver_loading : extension revision 1
Instance Layers: count = 3
--------------------------
VK_LAYER_AMD_switchable_graphics_32 AMD switchable graphics layer 1.3.241 version 1
VK_LAYER_AMD_switchable_graphics_64 AMD switchable graphics layer 1.3.241 version 1
VK_LAYER_MESA_device_select Linux device selection layer 1.3.211 version 1
Devices:
========
GPU0:
apiVersion = 1.3.260
driverVersion = 2.0.279
vendorID = 0x1002
deviceID = 0x73df
deviceType = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
deviceName = AMD Radeon RX 6750 XT
driverID = DRIVER_ID_AMD_PROPRIETARY
driverName = AMD proprietary driver
driverInfo = (AMD proprietary shader compiler)
conformanceVersion = 1.3.3.1
deviceUUID =
driverUUID = 414d442d-4c49-4e55-582d-445256000000
GPU1:
apiVersion = 1.3.241
driverVersion = 2.0.257
vendorID = 0x1002
deviceID = 0x73df
deviceType = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
deviceName = AMD Radeon RX 6750 XT
driverID = DRIVER_ID_AMD_OPEN_SOURCE
driverName = AMD open-source driver
driverInfo = 2023.Q1.3 (LLPC)
conformanceVersion = 1.3.0.0
deviceUUID =
driverUUID = 414d442d-4c49-4e55-582d-445256000000
```
The most important bits are:
- `Kernel driver in use: amdgpu`
- `direct rendering: Yes`
- that `vulkaninfo` doesn't produce any errors
## Wine and other software packages
These are my current useflags:
- wine: `+abi_x86_32 +abi_x86_64 +proton`
- wine-staging: `+X +abi_x86_32 +abi_x86_64 -alsa -capi -crossdev-mingw -cups -custom-cflags -dos +fontconfig +gecko -gphoto2 +gstreamer -kerberos -llvm-libunwind +mingw +mono -netapi +nls -opencl +opengl -osmesa -pcap -perl +pulseaudio -samba -scanner +sdl -smartcard +ssl +strip +truetype -udev -udisks +unwind +usb -v4l +vulkan -wayland -wow64 +xcomposite -xinerama`
- wine-proton: `+X +abi_x86_32 +abi_x86_64 -alsa -capi -crossdev-mingw -cups -custom-cflags -dos +fontconfig +gecko -gphoto2 +gstreamer -kerberos -llvm-libunwind +mingw +mono -netapi +nls -odbc -opencl +opengl -osmesa -pcap -perl +pulseaudio -samba -scanner +sdl -smartcard +ssl +strip +truetype -udev -udisks +unwind -usb -v4l +vulkan -wayland -wow64 +xcomposite -xinerama`
- wine-vanilla: `+abi_x86_32 +abi_x86_64 -alsa -crossdev-mingw -custom-cflags +fontconfig +gecko +gstreamer -llvm-libunwind +mono +nls -osmesa -perl +pulseaudio +sdl +ssl +strip -udev -udisks +unwind +usb -v4l +video_cards_amdgpu +xcomposite -xinerama`
Notice that I am targeting all WINE packages in order to test slightly different configurations. Use `eselect wine` to switch between versions.
I have enable the `abi_x86_32` use flag for many packages, probably more than needed. This is to ensure that I avoid problems related to my configuration. Enabling the flag globally seems like a waste of cpu and disk.
These are the additional WINE related packages that I installed:
- app-emulation/winetricks: `+gtk +rar`
- app-emulation/vkd3d-proton: `+abi_x86_32 +strip`
GPU related packages:
- dev-util/DirectXShaderCompiler: necessary for proper directX support with vulkan
- media-libs/vulkan-loader: `+X +abi_x86_32 +layers`
- dev-util/vulkan-tools: `+X`
- media-libs/amdgpu-pro-vulkan: `+abi_x86_32 +video_cards_amdgpu`
- media-libs/amdvlk: `+abi_x86_32 +raytracing` but I am not sure my gpu supports raytracing
- media-libs/shaderc
Controller related tools:
- app-misc/evtest: to test the controllers input
I am using spectrwm as my windows manager. It is not the best option and I would suggest to use a more featured DE.
This is an example of an innocous error that is caused by spectrwm when using WINE:
```
ERROR: ld.so: object '/usr/lib64/libswmhack.so.0.0' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
```
Consider that WMs need a compositor to avoid some clashes with WINE. I am using x11-misc/picom with drm and opengl support.
user ~> WINEPREFIX=/home/user/.wine setup_vkd3d_proton.sh install --symlink
- wineboot
- la demo
- app-emulation/vkd3d-proton
elog " WINEPREFIX=/path/to/prefix setup_dxvk.sh install --symlink"
WINEPREFIX=user ~> setup_vkd3d_proton.sh install
- evtest; wine control joy....; dxdiag?
windows managers?
- hardware: controller, gpu, cpu, audio
- snapshot .cache/wine

View file

@ -1,358 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>Playing videogames with WINE on Gentoo | Caught in the Net</title>
<link rel="stylesheet" href="../../../../../assets/blog/fonts/opensans.css">
<link href="../../../../../assets/blog/css/normalize.css" rel="stylesheet" type="text/css">
<link href="../../../../../assets/blog/css/cayman.css" rel="stylesheet" type="text/css">
<meta name="theme-color" content="#5670d4">
<meta name="generator" content="Nikola (getnikola.com)">
<link rel="alternate" type="application/rss+xml" title="RSS" hreflang="en" href="../../../../../rss.xml">
<link rel="canonical" href="francescomecca.eu/blog/2024/2/28/wine-gentoo/">
<meta name="author" content="Francesco Mecca">
<link rel="prev" href="../../../1/12/happy-new-year-2024/" title="Welkom 2024!" type="text/html">
<meta property="og:site_name" content="Caught in the Net">
<meta property="og:title" content="Playing videogames with WINE on Gentoo">
<meta property="og:url" content="francescomecca.eu/blog/2024/2/28/wine-gentoo/">
<meta property="og:description" content="One of my new year's resolution are
related to playing videogames on GNU/Linux rather than resorting to
dual booting as I did for the last 15 years. This blogpost aims to be
a continuosly updated guid">
<meta property="og:type" content="article">
<meta property="article:published_time" content="2024-02-28T00:00:00Z">
<meta property="article:tag" content="Gentoo">
<meta property="article:tag" content="linux">
<meta property="article:tag" content="videogames">
</head>
<body>
<div id="container">
<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="../../../../../pages/about/">About me</a>
<a class="btn" href="../../../../../pages/contattami/">Contact me</a>
<a class="btn" href="../../../../../archiveall.html">Archive</a>
<a class="btn" href="../../../../../rss.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="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a>
</section><section class="main-content"><div class="post">
<header><h1 class="post-title">
<h1 class="p-name post-title" itemprop="headline name">Playing videogames with WINE on Gentoo</h1>
</h1>
</header><p class="dateline post-date">28 February 2024</p>
</div>
<div class="e-content entry-content" itemprop="articleBody text">
<p><a href="../../../../../2024/1/12/happy-new-year-2024/">One of my new year's resolution</a> are
related to playing videogames on GNU/Linux rather than resorting to
dual booting as I did for the last 15 years. This blogpost aims to be
a continuosly updated guide to my journey in having a proper gaming
setup on my Gentoo workstation. My main resources are the <a href="https://wiki.gentoo.org/wiki/Wine">Gentoo
wiki</a> and the <a href="https://wiki.archlinux.org/title/Wine">Arch
Wiki</a>. </p>
<p>These objectives should be clear:</p>
<ul>
<li>I will not use steam: I only buy from <a href="https://www.gog.com/games">GOG</a> or use CDs</li>
<li>I want to use one of my controllers for games that need it</li>
<li>use as much software from the Gentoo repos as possible; this means avoiding <a href="https://usebottles.com/">Bottles</a> and <a href="https://lutris.net/">Lutris</a>
</li>
</ul>
<h3>Hardware</h3>
<div class="code"><pre class="code literal-block"><span class="n">user</span><span class="w"> </span><span class="o">~&gt;</span><span class="w"> </span><span class="n">sudo</span><span class="w"> </span><span class="n">inxi</span><span class="w"> </span><span class="o">-</span><span class="n">AGSC</span>
<span class="n">System</span><span class="p">:</span>
<span class="w"> </span><span class="n">Host</span><span class="p">:</span><span class="w"> </span><span class="n">____</span><span class="w"> </span><span class="n">Kernel</span><span class="p">:</span><span class="w"> </span><span class="mf">6.1</span><span class="o">.</span><span class="mi">69</span><span class="o">-</span><span class="n">gentoo</span><span class="o">-</span><span class="n">dist</span><span class="w"> </span><span class="n">arch</span><span class="p">:</span><span class="w"> </span><span class="n">x86_64</span><span class="w"> </span><span class="n">bits</span><span class="p">:</span><span class="w"> </span><span class="mi">64</span><span class="w"> </span><span class="n">Desktop</span><span class="p">:</span><span class="w"> </span><span class="n">spectrwm</span>
<span class="w"> </span><span class="n">Distro</span><span class="p">:</span><span class="w"> </span><span class="n">Gentoo</span><span class="w"> </span><span class="n">Base</span><span class="w"> </span><span class="n">System</span><span class="w"> </span><span class="n">release</span><span class="w"> </span><span class="mf">2.14</span>
<span class="n">CPU</span><span class="p">:</span>
<span class="w"> </span><span class="n">Info</span><span class="p">:</span><span class="w"> </span><span class="mi">6</span><span class="o">-</span><span class="n">core</span><span class="w"> </span><span class="n">model</span><span class="p">:</span><span class="w"> </span><span class="n">AMD</span><span class="w"> </span><span class="n">Ryzen</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="mi">2600</span><span class="w"> </span><span class="n">bits</span><span class="p">:</span><span class="w"> </span><span class="mi">64</span><span class="w"> </span><span class="n">type</span><span class="p">:</span><span class="w"> </span><span class="n">MT</span><span class="w"> </span><span class="n">MCP</span><span class="w"> </span><span class="n">cache</span><span class="p">:</span><span class="w"> </span><span class="n">L2</span><span class="p">:</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="n">MiB</span>
<span class="w"> </span><span class="n">Speed</span><span class="w"> </span><span class="p">(</span><span class="n">MHz</span><span class="p">):</span><span class="w"> </span><span class="n">avg</span><span class="p">:</span><span class="w"> </span><span class="mi">1858</span><span class="w"> </span><span class="nb">min</span><span class="o">/</span><span class="nb">max</span><span class="p">:</span><span class="w"> </span><span class="mi">1550</span><span class="o">/</span><span class="mi">3400</span><span class="w"> </span><span class="n">cores</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">:</span><span class="w"> </span><span class="mi">3400</span><span class="w"> </span><span class="mi">2</span><span class="p">:</span><span class="w"> </span><span class="mi">1550</span><span class="w"> </span><span class="mi">3</span><span class="p">:</span><span class="w"> </span><span class="mi">1550</span>
<span class="w"> </span><span class="mi">4</span><span class="p">:</span><span class="w"> </span><span class="mi">1550</span><span class="w"> </span><span class="mi">5</span><span class="p">:</span><span class="w"> </span><span class="mi">1550</span><span class="w"> </span><span class="mi">6</span><span class="p">:</span><span class="w"> </span><span class="mi">1550</span><span class="w"> </span><span class="mi">7</span><span class="p">:</span><span class="w"> </span><span class="mi">1550</span><span class="w"> </span><span class="mi">8</span><span class="p">:</span><span class="w"> </span><span class="mi">1550</span><span class="w"> </span><span class="mi">9</span><span class="p">:</span><span class="w"> </span><span class="mi">3400</span><span class="w"> </span><span class="mi">10</span><span class="p">:</span><span class="w"> </span><span class="mi">1550</span><span class="w"> </span><span class="mi">11</span><span class="p">:</span><span class="w"> </span><span class="mi">1550</span><span class="w"> </span><span class="mi">12</span><span class="p">:</span><span class="w"> </span><span class="mi">1550</span>
<span class="n">Graphics</span><span class="p">:</span>
<span class="w"> </span><span class="n">Device</span><span class="o">-</span><span class="mi">1</span><span class="p">:</span><span class="w"> </span><span class="n">AMD</span><span class="w"> </span><span class="n">Navi</span><span class="w"> </span><span class="mi">22</span><span class="w"> </span><span class="p">[</span><span class="n">Radeon</span><span class="w"> </span><span class="n">RX</span><span class="w"> </span><span class="mi">6700</span><span class="o">/</span><span class="mi">6700</span><span class="w"> </span><span class="n">XT</span><span class="o">/</span><span class="mi">6750</span><span class="w"> </span><span class="n">XT</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">6800</span><span class="n">M</span><span class="o">/</span><span class="mi">6850</span><span class="n">M</span><span class="w"> </span><span class="n">XT</span><span class="p">]</span>
<span class="w"> </span><span class="n">driver</span><span class="p">:</span><span class="w"> </span><span class="n">amdgpu</span><span class="w"> </span><span class="n">v</span><span class="p">:</span><span class="w"> </span><span class="n">kernel</span>
<span class="w"> </span><span class="n">Device</span><span class="o">-</span><span class="mi">2</span><span class="p">:</span><span class="w"> </span><span class="n">Logitech</span><span class="w"> </span><span class="n">C920</span><span class="w"> </span><span class="n">HD</span><span class="w"> </span><span class="n">Pro</span><span class="w"> </span><span class="n">Webcam</span><span class="w"> </span><span class="n">driver</span><span class="p">:</span><span class="w"> </span><span class="n">usbfs</span><span class="w"> </span><span class="n">type</span><span class="p">:</span><span class="w"> </span><span class="n">USB</span>
<span class="w"> </span><span class="n">Display</span><span class="p">:</span><span class="w"> </span><span class="n">server</span><span class="p">:</span><span class="w"> </span><span class="n">X</span><span class="o">.</span><span class="n">org</span><span class="w"> </span><span class="n">v</span><span class="p">:</span><span class="w"> </span><span class="mf">1.21</span><span class="o">.</span><span class="mf">1.11</span><span class="w"> </span><span class="n">driver</span><span class="p">:</span><span class="w"> </span><span class="n">X</span><span class="p">:</span><span class="w"> </span><span class="n">loaded</span><span class="p">:</span><span class="w"> </span><span class="n">amdgpu</span>
<span class="w"> </span><span class="n">unloaded</span><span class="p">:</span><span class="w"> </span><span class="n">modesetting</span><span class="p">,</span><span class="n">radeon</span><span class="w"> </span><span class="n">dri</span><span class="p">:</span><span class="w"> </span><span class="n">radeonsi</span><span class="w"> </span><span class="n">gpu</span><span class="p">:</span><span class="w"> </span><span class="n">amdgpu</span>
<span class="w"> </span><span class="n">resolution</span><span class="p">:</span><span class="w"> </span><span class="mi">1920</span><span class="n">x1200</span><span class="o">~</span><span class="mi">60</span><span class="n">Hz</span>
<span class="w"> </span><span class="n">API</span><span class="p">:</span><span class="w"> </span><span class="n">EGL</span><span class="w"> </span><span class="n">v</span><span class="p">:</span><span class="w"> </span><span class="mf">1.5</span><span class="w"> </span><span class="n">drivers</span><span class="p">:</span><span class="w"> </span><span class="n">radeonsi</span><span class="p">,</span><span class="n">swrast</span>
<span class="w"> </span><span class="n">platforms</span><span class="p">:</span><span class="w"> </span><span class="n">gbm</span><span class="p">,</span><span class="n">x11</span><span class="p">,</span><span class="n">surfaceless</span><span class="p">,</span><span class="n">device</span>
<span class="w"> </span><span class="n">API</span><span class="p">:</span><span class="w"> </span><span class="n">OpenGL</span><span class="w"> </span><span class="n">v</span><span class="p">:</span><span class="w"> </span><span class="mf">4.6</span><span class="w"> </span><span class="n">vendor</span><span class="p">:</span><span class="w"> </span><span class="n">amd</span><span class="w"> </span><span class="n">mesa</span><span class="w"> </span><span class="n">v</span><span class="p">:</span><span class="w"> </span><span class="mf">23.3</span><span class="o">.</span><span class="mi">5</span><span class="w"> </span><span class="n">renderer</span><span class="p">:</span><span class="w"> </span><span class="n">AMD</span><span class="w"> </span><span class="n">Radeon</span><span class="w"> </span><span class="n">RX</span>
<span class="w"> </span><span class="mi">6750</span><span class="w"> </span><span class="n">XT</span><span class="w"> </span><span class="p">(</span><span class="n">radeonsi</span><span class="w"> </span><span class="n">navi22</span><span class="w"> </span><span class="n">LLVM</span><span class="w"> </span><span class="mf">17.0</span><span class="o">.</span><span class="mi">6</span><span class="w"> </span><span class="n">DRM</span><span class="w"> </span><span class="mf">3.49</span><span class="w"> </span><span class="mf">6.1</span><span class="o">.</span><span class="mi">69</span><span class="o">-</span><span class="n">gentoo</span><span class="o">-</span><span class="n">dist</span><span class="p">)</span>
<span class="w"> </span><span class="n">API</span><span class="p">:</span><span class="w"> </span><span class="n">Vulkan</span><span class="w"> </span><span class="n">v</span><span class="p">:</span><span class="w"> </span><span class="mf">1.3</span><span class="o">.</span><span class="mi">275</span><span class="w"> </span><span class="n">drivers</span><span class="p">:</span><span class="w"> </span><span class="n">N</span><span class="o">/</span><span class="n">A</span><span class="w"> </span><span class="n">surfaces</span><span class="p">:</span><span class="w"> </span><span class="n">xcb</span><span class="p">,</span><span class="n">xlib</span>
<span class="n">Audio</span><span class="p">:</span>
<span class="w"> </span><span class="n">Device</span><span class="o">-</span><span class="mi">1</span><span class="p">:</span><span class="w"> </span><span class="n">AMD</span><span class="w"> </span><span class="n">Navi</span><span class="w"> </span><span class="mi">21</span><span class="o">/</span><span class="mi">23</span><span class="w"> </span><span class="n">HDMI</span><span class="o">/</span><span class="n">DP</span><span class="w"> </span><span class="n">Audio</span><span class="w"> </span><span class="n">driver</span><span class="p">:</span><span class="w"> </span><span class="n">snd_hda_intel</span>
<span class="w"> </span><span class="n">Device</span><span class="o">-</span><span class="mi">2</span><span class="p">:</span><span class="w"> </span><span class="n">AMD</span><span class="w"> </span><span class="n">Family</span><span class="w"> </span><span class="mi">17</span><span class="n">h</span><span class="w"> </span><span class="n">HD</span><span class="w"> </span><span class="n">Audio</span><span class="w"> </span><span class="n">driver</span><span class="p">:</span><span class="w"> </span><span class="n">snd_hda_intel</span>
<span class="w"> </span><span class="n">Device</span><span class="o">-</span><span class="mi">5</span><span class="p">:</span><span class="w"> </span><span class="n">Focusrite</span><span class="o">-</span><span class="n">Novation</span><span class="w"> </span><span class="n">Focusrite</span><span class="w"> </span><span class="n">Scarlett</span><span class="w"> </span><span class="mi">2</span><span class="n">i2</span><span class="w"> </span><span class="n">driver</span><span class="p">:</span><span class="w"> </span><span class="n">snd</span><span class="o">-</span><span class="n">usb</span><span class="o">-</span><span class="n">audio</span>
<span class="w"> </span><span class="n">type</span><span class="p">:</span><span class="w"> </span><span class="n">USB</span>
<span class="w"> </span><span class="n">API</span><span class="p">:</span><span class="w"> </span><span class="n">ALSA</span><span class="w"> </span><span class="n">v</span><span class="p">:</span><span class="w"> </span><span class="n">k6</span><span class="o">.</span><span class="mf">1.69</span><span class="o">-</span><span class="n">gentoo</span><span class="o">-</span><span class="n">dist</span><span class="w"> </span><span class="n">status</span><span class="p">:</span><span class="w"> </span><span class="n">kernel</span><span class="o">-</span><span class="n">api</span>
<span class="w"> </span><span class="n">Server</span><span class="o">-</span><span class="mi">1</span><span class="p">:</span><span class="w"> </span><span class="n">PulseAudio</span><span class="w"> </span><span class="n">v</span><span class="p">:</span><span class="w"> </span><span class="mf">16.1</span><span class="w"> </span><span class="n">status</span><span class="p">:</span><span class="w"> </span><span class="n">active</span><span class="w"> </span><span class="p">(</span><span class="n">root</span><span class="p">,</span><span class="w"> </span><span class="n">process</span><span class="p">)</span>
<span class="n">USB</span><span class="p">:</span>
<span class="w"> </span><span class="n">Device</span><span class="o">-</span><span class="mi">1</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="o">-</span><span class="mi">4</span><span class="p">:</span><span class="mi">2</span><span class="w"> </span><span class="n">info</span><span class="p">:</span><span class="w"> </span><span class="n">splitkb</span><span class="o">.</span><span class="n">com</span><span class="w"> </span><span class="n">Kyria</span><span class="w"> </span><span class="n">rev2</span><span class="w"> </span><span class="n">type</span><span class="p">:</span><span class="w"> </span><span class="n">keyboard</span><span class="p">,</span><span class="n">HID</span><span class="w"> </span><span class="n">rev</span><span class="p">:</span><span class="w"> </span><span class="mf">2.0</span>
<span class="w"> </span><span class="n">Device</span><span class="o">-</span><span class="mi">2</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="o">-</span><span class="mi">7</span><span class="p">:</span><span class="mi">4</span><span class="w"> </span><span class="n">info</span><span class="p">:</span><span class="w"> </span><span class="n">Microsoft</span><span class="w"> </span><span class="n">Xbox360</span><span class="w"> </span><span class="n">Controller</span><span class="w"> </span><span class="n">type</span><span class="p">:</span><span class="w"> </span><span class="o">&lt;</span><span class="n">vendor</span><span class="w"> </span><span class="n">specific</span><span class="o">&gt;</span>
<span class="w"> </span><span class="n">rev</span><span class="p">:</span><span class="w"> </span><span class="mf">2.0</span>
<span class="w"> </span><span class="n">Device</span><span class="o">-</span><span class="mi">3</span><span class="p">:</span><span class="w"> </span><span class="mi">3</span><span class="o">-</span><span class="mi">2</span><span class="p">:</span><span class="mi">3</span><span class="w"> </span><span class="n">info</span><span class="p">:</span><span class="w"> </span><span class="n">Focusrite</span><span class="o">-</span><span class="n">Novation</span><span class="w"> </span><span class="n">Focusrite</span><span class="w"> </span><span class="n">Scarlett</span><span class="w"> </span><span class="mi">2</span><span class="n">i2</span>
<span class="w"> </span><span class="n">type</span><span class="p">:</span><span class="w"> </span><span class="n">audio</span><span class="w"> </span><span class="n">rev</span><span class="p">:</span><span class="w"> </span><span class="mf">2.0</span>
<span class="w"> </span><span class="n">Device</span><span class="o">-</span><span class="mi">4</span><span class="p">:</span><span class="w"> </span><span class="mi">3</span><span class="o">-</span><span class="mi">4</span><span class="p">:</span><span class="mi">6</span><span class="w"> </span><span class="n">info</span><span class="p">:</span><span class="w"> </span><span class="n">ThrustMaster</span><span class="w"> </span><span class="n">XB1</span><span class="w"> </span><span class="n">Classic</span><span class="w"> </span><span class="n">Controller</span>
<span class="w"> </span><span class="n">type</span><span class="p">:</span><span class="w"> </span><span class="o">&lt;</span><span class="n">vendor</span><span class="w"> </span><span class="n">specific</span><span class="o">&gt;</span><span class="w"> </span><span class="n">rev</span><span class="p">:</span><span class="w"> </span><span class="mf">2.0</span>
</pre></div>
<h3>Drivers</h3>
<p>For the kernel, I am using the <code>gentoo-kernel</code> seed.</p>
<p>For the GPU setup you need:</p>
<ul>
<li>the open source drivers, see https://wiki.gentoo.org/wiki/AMDGPU</li>
<li>the proprietary drivers, see https://wiki.gentoo.org/wiki/AMDGPU-PRO</li>
<li>the vulkan drivers, see https://wiki.gentoo.org/wiki/AMDVLK
These are useful commands to check if the drivers are loaded correctly:</li>
</ul>
<div class="code"><pre class="code literal-block">user ~&gt; lspci -k | grep -A 3 -E "(VGA|3D)"
08:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Navi 22 [Radeon RX 6700/6700 XT/6750 XT / 6800M/6850M XT] (rev c0)
Subsystem: Tul Corporation / PowerColor Navi 22 [Radeon RX 6700/6700 XT/6750 XT / 6800M/6850M XT]
Kernel driver in use: amdgpu
Kernel modules: amdgpu
</pre></div>
<div class="code"><pre class="code literal-block">user ~&gt; glxinfo -B
name of display: :0
display: :0 screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
Vendor: AMD (0x1002)
Device: AMD Radeon RX 6750 XT (radeonsi, navi22, LLVM 17.0.6, DRM 3.49, 6.1.69-gentoo-dist) (0x73df)
Version: 23.3.5
Accelerated: yes
Video memory: 12288MB
Unified memory: no
Preferred profile: core (0x1)
Max core profile version: 4.6
Max compat profile version: 4.6
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.2
Memory info (GL_ATI_meminfo):
VBO free memory - total: 11874 MB, largest block: 11874 MB
VBO free aux. memory - total: 32064 MB, largest block: 32064 MB
Texture free memory - total: 11874 MB, largest block: 11874 MB
Texture free aux. memory - total: 32064 MB, largest block: 32064 MB
Renderbuffer free memory - total: 11874 MB, largest block: 11874 MB
Renderbuffer free aux. memory - total: 32064 MB, largest block: 32064 MB
Memory info (GL_NVX_gpu_memory_info):
Dedicated video memory: 12288 MB
Total available memory: 44400 MB
Currently available dedicated video memory: 11874 MB
OpenGL vendor string: AMD
OpenGL renderer string: AMD Radeon RX 6750 XT (radeonsi, navi22, LLVM 17.0.6, DRM 3.49, 6.1.69-gentoo-dist)
OpenGL core profile version string: 4.6 (Core Profile) Mesa 23.3.5
OpenGL core profile shading language version string: 4.60
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL version string: 4.6 (Compatibility Profile) Mesa 23.3.5
OpenGL shading language version string: 4.60
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 23.3.5
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
</pre></div>
<div class="code"><pre class="code literal-block"><span class="n">user</span><span class="w"> </span><span class="o">~&gt;</span><span class="w"> </span><span class="n">vulkaninfo</span><span class="w"> </span><span class="o">--</span><span class="n">summary</span><span class="w"> </span>
<span class="n">ac_compute_device_uuid</span><span class="s1">'s output is based on invalid pci bus info.</span>
<span class="o">==========</span>
<span class="n">VULKANINFO</span>
<span class="o">==========</span>
<span class="n">Vulkan</span><span class="w"> </span><span class="n">Instance</span><span class="w"> </span><span class="n">Version</span><span class="p">:</span><span class="w"> </span><span class="mf">1.3</span><span class="o">.</span><span class="mi">275</span>
<span class="n">Instance</span><span class="w"> </span><span class="n">Extensions</span><span class="p">:</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">22</span>
<span class="o">-------------------------------</span>
<span class="n">VK_EXT_acquire_drm_display</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">1</span>
<span class="n">VK_EXT_acquire_xlib_display</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">1</span>
<span class="n">VK_EXT_debug_report</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">10</span>
<span class="n">VK_EXT_debug_utils</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">2</span>
<span class="n">VK_EXT_direct_mode_display</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">1</span>
<span class="n">VK_EXT_display_surface_counter</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">1</span>
<span class="n">VK_EXT_surface_maintenance1</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">1</span>
<span class="n">VK_EXT_swapchain_colorspace</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">4</span>
<span class="n">VK_KHR_device_group_creation</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">1</span>
<span class="n">VK_KHR_display</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">23</span>
<span class="n">VK_KHR_external_fence_capabilities</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">1</span>
<span class="n">VK_KHR_external_memory_capabilities</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">1</span>
<span class="n">VK_KHR_external_semaphore_capabilities</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">1</span>
<span class="n">VK_KHR_get_display_properties2</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">1</span>
<span class="n">VK_KHR_get_physical_device_properties2</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">2</span>
<span class="n">VK_KHR_get_surface_capabilities2</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">1</span>
<span class="n">VK_KHR_portability_enumeration</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">1</span>
<span class="n">VK_KHR_surface</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">25</span>
<span class="n">VK_KHR_surface_protected_capabilities</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">1</span>
<span class="n">VK_KHR_xcb_surface</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">6</span>
<span class="n">VK_KHR_xlib_surface</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">6</span>
<span class="n">VK_LUNARG_direct_driver_loading</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">extension</span><span class="w"> </span><span class="n">revision</span><span class="w"> </span><span class="mi">1</span>
<span class="n">Instance</span><span class="w"> </span><span class="n">Layers</span><span class="p">:</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">3</span>
<span class="o">--------------------------</span>
<span class="n">VK_LAYER_AMD_switchable_graphics_32</span><span class="w"> </span><span class="n">AMD</span><span class="w"> </span><span class="n">switchable</span><span class="w"> </span><span class="n">graphics</span><span class="w"> </span><span class="n">layer</span><span class="w"> </span><span class="mf">1.3</span><span class="o">.</span><span class="mi">241</span><span class="w"> </span><span class="n">version</span><span class="w"> </span><span class="mi">1</span>
<span class="n">VK_LAYER_AMD_switchable_graphics_64</span><span class="w"> </span><span class="n">AMD</span><span class="w"> </span><span class="n">switchable</span><span class="w"> </span><span class="n">graphics</span><span class="w"> </span><span class="n">layer</span><span class="w"> </span><span class="mf">1.3</span><span class="o">.</span><span class="mi">241</span><span class="w"> </span><span class="n">version</span><span class="w"> </span><span class="mi">1</span>
<span class="n">VK_LAYER_MESA_device_select</span><span class="w"> </span><span class="n">Linux</span><span class="w"> </span><span class="n">device</span><span class="w"> </span><span class="n">selection</span><span class="w"> </span><span class="n">layer</span><span class="w"> </span><span class="mf">1.3</span><span class="o">.</span><span class="mi">211</span><span class="w"> </span><span class="n">version</span><span class="w"> </span><span class="mi">1</span>
<span class="n">Devices</span><span class="p">:</span>
<span class="o">========</span>
<span class="n">GPU0</span><span class="p">:</span>
<span class="w"> </span><span class="n">apiVersion</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">1.3</span><span class="o">.</span><span class="mi">260</span>
<span class="w"> </span><span class="n">driverVersion</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">2.0</span><span class="o">.</span><span class="mi">279</span>
<span class="w"> </span><span class="n">vendorID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mh">0x1002</span>
<span class="w"> </span><span class="n">deviceID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mh">0x73df</span>
<span class="w"> </span><span class="n">deviceType</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">PHYSICAL_DEVICE_TYPE_DISCRETE_GPU</span>
<span class="w"> </span><span class="n">deviceName</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">AMD</span><span class="w"> </span><span class="n">Radeon</span><span class="w"> </span><span class="n">RX</span><span class="w"> </span><span class="mi">6750</span><span class="w"> </span><span class="n">XT</span>
<span class="w"> </span><span class="n">driverID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">DRIVER_ID_AMD_PROPRIETARY</span>
<span class="w"> </span><span class="n">driverName</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">AMD</span><span class="w"> </span><span class="n">proprietary</span><span class="w"> </span><span class="n">driver</span>
<span class="w"> </span><span class="n">driverInfo</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="n">AMD</span><span class="w"> </span><span class="n">proprietary</span><span class="w"> </span><span class="n">shader</span><span class="w"> </span><span class="n">compiler</span><span class="p">)</span>
<span class="w"> </span><span class="n">conformanceVersion</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">1.3</span><span class="o">.</span><span class="mf">3.1</span>
<span class="w"> </span><span class="n">deviceUUID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>
<span class="w"> </span><span class="n">driverUUID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">414</span><span class="n">d442d</span><span class="o">-</span><span class="mi">4</span><span class="n">c49</span><span class="o">-</span><span class="mf">4e55</span><span class="o">-</span><span class="mi">582</span><span class="n">d</span><span class="o">-</span><span class="mi">445256000000</span>
<span class="n">GPU1</span><span class="p">:</span>
<span class="w"> </span><span class="n">apiVersion</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">1.3</span><span class="o">.</span><span class="mi">241</span>
<span class="w"> </span><span class="n">driverVersion</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">2.0</span><span class="o">.</span><span class="mi">257</span>
<span class="w"> </span><span class="n">vendorID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mh">0x1002</span>
<span class="w"> </span><span class="n">deviceID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mh">0x73df</span>
<span class="w"> </span><span class="n">deviceType</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">PHYSICAL_DEVICE_TYPE_DISCRETE_GPU</span>
<span class="w"> </span><span class="n">deviceName</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">AMD</span><span class="w"> </span><span class="n">Radeon</span><span class="w"> </span><span class="n">RX</span><span class="w"> </span><span class="mi">6750</span><span class="w"> </span><span class="n">XT</span>
<span class="w"> </span><span class="n">driverID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">DRIVER_ID_AMD_OPEN_SOURCE</span>
<span class="w"> </span><span class="n">driverName</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">AMD</span><span class="w"> </span><span class="n">open</span><span class="o">-</span><span class="n">source</span><span class="w"> </span><span class="n">driver</span>
<span class="w"> </span><span class="n">driverInfo</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">2023.</span><span class="n">Q1</span><span class="o">.</span><span class="mi">3</span><span class="w"> </span><span class="p">(</span><span class="n">LLPC</span><span class="p">)</span>
<span class="w"> </span><span class="n">conformanceVersion</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">1.3</span><span class="o">.</span><span class="mf">0.0</span>
<span class="w"> </span><span class="n">deviceUUID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>
<span class="w"> </span><span class="n">driverUUID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">414</span><span class="n">d442d</span><span class="o">-</span><span class="mi">4</span><span class="n">c49</span><span class="o">-</span><span class="mf">4e55</span><span class="o">-</span><span class="mi">582</span><span class="n">d</span><span class="o">-</span><span class="mi">445256000000</span>
</pre></div>
<p>The most important bits are:</p>
<ul>
<li><code>Kernel driver in use: amdgpu</code></li>
<li><code>direct rendering: Yes</code></li>
<li>that <code>vulkaninfo</code> doesn't produce any errors</li>
</ul>
<h3>Wine and other software packages</h3>
<p>These are my current useflags:</p>
<ul>
<li>wine: <code>+abi_x86_32 +abi_x86_64 +proton</code>
</li>
<li>wine-staging: <code>+X +abi_x86_32 +abi_x86_64 +fontconfig +gecko +gstreamer +mingw +mono +nls +opengl +pulseaudio +sdl +ssl +strip +truetype +unwind +usb +vulkan +xcomposite -wow64</code>
</li>
<li>wine-proton: <code>+X +abi_x86_32 +abi_x86_64 +fontconfig +gecko +gstreamer +mingw +mono +nls +opengl +pulseaudio +sdl +ssl +strip +truetype +unwind +vulkan +xcomposite -wow64</code>
</li>
<li>[ ] wine-vanilla: <code>+abi_x86_32 +abi_x86_64 +fontconfig +gecko +gstreamer +mono +nls +pulseaudio +sdl +ssl +strip +unwind +usb +video_cards_amdgpu +xcomposite -wow6</code>
Notice that I am targeting all WINE packages in order to test slightly different configurations. Use <code>eselect wine</code> to switch between versions.
Until the Gentoo devs says that wow64 feature is stable and fully functional, I will keep it off.</li>
</ul>
<p>I have enable the <code>abi_x86_32</code> use flag for many packages, probably more than needed. This is to ensure that I avoid problems related to my configuration. Enabling the flag globally seems like a waste of cpu and disk.</p>
<p>These are the additional WINE related packages that I installed:</p>
<ul>
<li>app-emulation/winetricks: <code>+gtk +rar</code>
</li>
<li>app-emulation/vkd3d-proton: <code>+abi_x86_32 +strip</code>
</li>
<li>app-emulation/dxvk: <code>+d3d10 +d3d11 +d3d9 +dxgi +strig +abi_x86_32</code>
</li>
</ul>
<p>GPU related packages:</p>
<ul>
<li>dev-util/DirectXShaderCompiler: necessary for proper directX support with vulkan</li>
<li>media-libs/vulkan-loader: <code>+X +abi_x86_32 +layers</code>
</li>
<li>dev-util/vulkan-tools: <code>+X</code>
</li>
<li>media-libs/amdgpu-pro-vulkan: <code>+abi_x86_32 +video_cards_amdgpu</code>
</li>
<li>media-libs/amdvlk: <code>+abi_x86_32 +raytracing</code> but I am not sure my gpu supports raytracing</li>
<li>media-libs/shaderc</li>
</ul>
<p>I am using spectrwm as my windows manager. It is not the best option and I would suggest to use a more featured DE.
This is an example of an innocous error that is caused by spectrwm when using WINE:</p>
<div class="code"><pre class="code literal-block"><span class="n">ERROR</span><span class="p">:</span><span class="w"> </span><span class="n">ld</span><span class="o">.</span><span class="n">so</span><span class="p">:</span><span class="w"> </span><span class="n">object</span><span class="w"> </span><span class="s1">'/usr/lib64/libswmhack.so.0.0'</span><span class="w"> </span><span class="n">from</span><span class="w"> </span><span class="n">LD_PRELOAD</span><span class="w"> </span><span class="n">cannot</span><span class="w"> </span><span class="n">be</span><span class="w"> </span><span class="n">preloaded</span><span class="w"> </span><span class="p">(</span><span class="n">wrong</span><span class="w"> </span><span class="n">ELF</span><span class="w"> </span><span class="k">class</span><span class="p">:</span><span class="w"> </span><span class="n">ELFCLASS64</span><span class="p">):</span><span class="w"> </span><span class="n">ignored</span><span class="o">.</span>
</pre></div>
<p>Consider that WMs need a compositor to avoid some clashes with WINE. I am using x11-misc/picom with drm and opengl support.</p>
<h3>Using WINE</h3>
<p>If you have no clue about how WINE works, start by reading the <a href="https://wiki.winehq.org/FAQ#Wineprefixes">FAQs</a>.</p>
<p>The biggest considerations you have to make when using WINE are the
software dependencies of the Windows program you want to use. For the
moment I have been able to survive with only two prefixes, one for 32
bits games and one for more recent software.</p>
<p>What all of this means, is that I have two folders in my home, <code>.wine</code> and <code>.wine32</code> in which I instruct WINE to start a new program using the environment variable (that is what WINEPREFIX is all about). When I feel lazy, I select the WINE prefix using winetricks, then navigate to the game using explorer.exe.</p>
<p>It's important to remember that whenever you create a new WINE prefix, you need to symlink the correct directx dependencies, as the Gentoo ebuilds suggests:</p>
<ul>
<li>
<code>WINEPREFIX=/home/user/.wine setup_vkd3d_proton.sh install --symlink</code> for directx12</li>
<li>
<code>WINEPREFIX=/home/user/.wine setup_dxvk.sh install --symlink</code> for directx11 and earlier</li>
</ul>
<p>Usually WINE takes care of starting up necessary processes inside the
prefixes. This is done by the <code>wineboot</code> program so I suggest to read
its manpage.</p>
<p>To install software dependencies, I use winetricks. If a dependency is
not available through winetricks, it's always possible to install the
.exe as you would on Windows. Take in mind that WINE uses some Linux
specific software in place of some Windows libraries. Some key replacements include:</p>
<ul>
<li>wine-mono in place of dotnet</li>
<li>dxvk and vkd3d in place of directx</li>
<li>gallium-nine and wined3d, in place of directx but I had better experience with dxvk and vkd3d</li>
<li>wine-gecko in place of whatever web view IE was offering</li>
<li>wineconsole in place of the Windows cmd program</li>
<li>your dotnet installation is usually enough for WINE, you don't need
to install the dotnet runtimes, although I have to check this assertion on a
fresh installation</li>
</ul>
<h4>Dependencies rules of thumb</h4>
<ol>
<li>lots of games prompt you to install dependencies such as directx. Avoid it as much as possible and rely on WINE specific libraries</li>
<li>winetricks can manage most if not all of those dependencies for you. It will save you time to figure out the correct paths for each library and automate the install as much as possible</li>
<li>recent games usually want the Visual C++ libraries. You can install them all with the vcrun2022 package </li>
<li>older games usually want Visual C++ libraries, but you need to install the different yearly versions one by one</li>
<li>you can backup or modify the winetricks installers. They are in you cache directory, usually <code>~/.cache/winetricks</code>
</li>
</ol>
<h4>Debugging</h4>
<p>In all honesty, it's too early in this journey to write a comprehensive chapter on this topic. The <code>winedbg</code> command is still shrouded in mystery.</p>
<p>At the moment I am keeping a small set of games that are self contained and allows me to check if WINE inside the wineprefix is working as I expect.</p>
<p>I have uploaded some mostly self contained demos that you can use to test that directx and you GPU is working as it should:</p>
<ul>
<li><a href="UnrealEngine4%20tech%20demo%20for%20directx12">https://archive.org/details/elemental-demo-dx-12-guru-3-d.com</a></li>
<li><a href="the%20same%20demo,%20but%20for%20directx11">https://archive.org/details/ue-4-elemental-demo</a></li>
<li><a href="ATI%20Radeon%209700%20Debevec%20RNL%20Demo%20v1.1ATI%20Radeon%209700%20Debevec%20RNL%20Demo%20for%20directx9">https://archive.org/details/ati-radeon-9700-debevec-rnl-demo-v-1.1.7z</a></li>
</ul>
<p>You can find more video card demos at <a href="soggi.org">https://soggi.org/video-cards/tech-demos.htm</a>.</p>
<p>For controllers, you can use two tools:</p>
<ul>
<li>
<code>wine dxdiag</code> that launches the directx toolbox, useful not only for the gpu, but also for audio and input devices</li>
<li>
<code>wine control joy.cpl</code>, a cool utility to see your XInput and DInput compatible hardware</li>
</ul>
</div>
<aside class="postpromonav"><nav><h4>Categories</h4>
<ul itemprop="keywords" class="tags">
<li><a class="tag p-category" href="../../../../../categories/gentoo/" rel="tag">Gentoo</a></li>
<li><a class="tag p-category" href="../../../../../categories/linux/" rel="tag">linux</a></li>
<li><a class="tag p-category" href="../../../../../categories/videogames/" rel="tag">videogames</a></li>
</ul></nav></aside><p class="sourceline"><a href="index.md" class="sourcelink">Source</a></p>
<footer class="site-footer" id="footer"><span> CC BY-SA 4.0 International.<br></span>
<span class="site-footer-credits"><a href="https://getnikola.com">Nikola</a>, <a href="https://github.com/jasonlong/cayman-theme">Cayman theme</a>.</span>
</footer></section>
</div>
</body>
</html>

View file

@ -1,292 +0,0 @@
<!--
.. title: Playing videogames with WINE on Gentoo
.. slug: wine-gentoo
.. date: 2024-02-28
.. tags: videogames,linux,Gentoo
.. category: PesceWanda
.. link:
.. description:
.. type: text
-->
[One of my new year's resolution](/2024/1/12/happy-new-year-2024/) are
related to playing videogames on GNU/Linux rather than resorting to
dual booting as I did for the last 15 years. This blogpost aims to be
a continuosly updated guide to my journey in having a proper gaming
setup on my Gentoo workstation. My main resources are the [Gentoo
wiki](https://wiki.gentoo.org/wiki/Wine) and the [Arch
Wiki](https://wiki.archlinux.org/title/Wine).
These objectives should be clear:
- I will not use steam: I only buy from [GOG](https://www.gog.com/games) or use CDs
- I want to use one of my controllers for games that need it
- use as much software from the Gentoo repos as possible; this means avoiding [Bottles](https://usebottles.com/) and [Lutris](https://lutris.net/)
## Hardware
```
user ~> sudo inxi -AGSC
System:
Host: ____ Kernel: 6.1.69-gentoo-dist arch: x86_64 bits: 64 Desktop: spectrwm
Distro: Gentoo Base System release 2.14
CPU:
Info: 6-core model: AMD Ryzen 5 2600 bits: 64 type: MT MCP cache: L2: 3 MiB
Speed (MHz): avg: 1858 min/max: 1550/3400 cores: 1: 3400 2: 1550 3: 1550
4: 1550 5: 1550 6: 1550 7: 1550 8: 1550 9: 3400 10: 1550 11: 1550 12: 1550
Graphics:
Device-1: AMD Navi 22 [Radeon RX 6700/6700 XT/6750 XT / 6800M/6850M XT]
driver: amdgpu v: kernel
Device-2: Logitech C920 HD Pro Webcam driver: usbfs type: USB
Display: server: X.org v: 1.21.1.11 driver: X: loaded: amdgpu
unloaded: modesetting,radeon dri: radeonsi gpu: amdgpu
resolution: 1920x1200~60Hz
API: EGL v: 1.5 drivers: radeonsi,swrast
platforms: gbm,x11,surfaceless,device
API: OpenGL v: 4.6 vendor: amd mesa v: 23.3.5 renderer: AMD Radeon RX
6750 XT (radeonsi navi22 LLVM 17.0.6 DRM 3.49 6.1.69-gentoo-dist)
API: Vulkan v: 1.3.275 drivers: N/A surfaces: xcb,xlib
Audio:
Device-1: AMD Navi 21/23 HDMI/DP Audio driver: snd_hda_intel
Device-2: AMD Family 17h HD Audio driver: snd_hda_intel
Device-5: Focusrite-Novation Focusrite Scarlett 2i2 driver: snd-usb-audio
type: USB
API: ALSA v: k6.1.69-gentoo-dist status: kernel-api
Server-1: PulseAudio v: 16.1 status: active (root, process)
USB:
Device-1: 1-4:2 info: splitkb.com Kyria rev2 type: keyboard,HID rev: 2.0
Device-2: 1-7:4 info: Microsoft Xbox360 Controller type: <vendor specific>
rev: 2.0
Device-3: 3-2:3 info: Focusrite-Novation Focusrite Scarlett 2i2
type: audio rev: 2.0
Device-4: 3-4:6 info: ThrustMaster XB1 Classic Controller
type: <vendor specific> rev: 2.0
```
## Drivers
For the kernel, I am using the `gentoo-kernel` seed.
For the GPU setup you need:
- the open source drivers, see https://wiki.gentoo.org/wiki/AMDGPU
- the proprietary drivers, see https://wiki.gentoo.org/wiki/AMDGPU-PRO
- the vulkan drivers, see https://wiki.gentoo.org/wiki/AMDVLK
These are useful commands to check if the drivers are loaded correctly:
```
user ~> lspci -k | grep -A 3 -E "(VGA|3D)"
08:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Navi 22 [Radeon RX 6700/6700 XT/6750 XT / 6800M/6850M XT] (rev c0)
Subsystem: Tul Corporation / PowerColor Navi 22 [Radeon RX 6700/6700 XT/6750 XT / 6800M/6850M XT]
Kernel driver in use: amdgpu
Kernel modules: amdgpu
```
```
user ~> glxinfo -B
name of display: :0
display: :0 screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
Vendor: AMD (0x1002)
Device: AMD Radeon RX 6750 XT (radeonsi, navi22, LLVM 17.0.6, DRM 3.49, 6.1.69-gentoo-dist) (0x73df)
Version: 23.3.5
Accelerated: yes
Video memory: 12288MB
Unified memory: no
Preferred profile: core (0x1)
Max core profile version: 4.6
Max compat profile version: 4.6
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.2
Memory info (GL_ATI_meminfo):
VBO free memory - total: 11874 MB, largest block: 11874 MB
VBO free aux. memory - total: 32064 MB, largest block: 32064 MB
Texture free memory - total: 11874 MB, largest block: 11874 MB
Texture free aux. memory - total: 32064 MB, largest block: 32064 MB
Renderbuffer free memory - total: 11874 MB, largest block: 11874 MB
Renderbuffer free aux. memory - total: 32064 MB, largest block: 32064 MB
Memory info (GL_NVX_gpu_memory_info):
Dedicated video memory: 12288 MB
Total available memory: 44400 MB
Currently available dedicated video memory: 11874 MB
OpenGL vendor string: AMD
OpenGL renderer string: AMD Radeon RX 6750 XT (radeonsi, navi22, LLVM 17.0.6, DRM 3.49, 6.1.69-gentoo-dist)
OpenGL core profile version string: 4.6 (Core Profile) Mesa 23.3.5
OpenGL core profile shading language version string: 4.60
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL version string: 4.6 (Compatibility Profile) Mesa 23.3.5
OpenGL shading language version string: 4.60
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 23.3.5
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
```
```
user ~> vulkaninfo --summary
ac_compute_device_uuid's output is based on invalid pci bus info.
==========
VULKANINFO
==========
Vulkan Instance Version: 1.3.275
Instance Extensions: count = 22
-------------------------------
VK_EXT_acquire_drm_display : extension revision 1
VK_EXT_acquire_xlib_display : extension revision 1
VK_EXT_debug_report : extension revision 10
VK_EXT_debug_utils : extension revision 2
VK_EXT_direct_mode_display : extension revision 1
VK_EXT_display_surface_counter : extension revision 1
VK_EXT_surface_maintenance1 : extension revision 1
VK_EXT_swapchain_colorspace : extension revision 4
VK_KHR_device_group_creation : extension revision 1
VK_KHR_display : extension revision 23
VK_KHR_external_fence_capabilities : extension revision 1
VK_KHR_external_memory_capabilities : extension revision 1
VK_KHR_external_semaphore_capabilities : extension revision 1
VK_KHR_get_display_properties2 : extension revision 1
VK_KHR_get_physical_device_properties2 : extension revision 2
VK_KHR_get_surface_capabilities2 : extension revision 1
VK_KHR_portability_enumeration : extension revision 1
VK_KHR_surface : extension revision 25
VK_KHR_surface_protected_capabilities : extension revision 1
VK_KHR_xcb_surface : extension revision 6
VK_KHR_xlib_surface : extension revision 6
VK_LUNARG_direct_driver_loading : extension revision 1
Instance Layers: count = 3
--------------------------
VK_LAYER_AMD_switchable_graphics_32 AMD switchable graphics layer 1.3.241 version 1
VK_LAYER_AMD_switchable_graphics_64 AMD switchable graphics layer 1.3.241 version 1
VK_LAYER_MESA_device_select Linux device selection layer 1.3.211 version 1
Devices:
========
GPU0:
apiVersion = 1.3.260
driverVersion = 2.0.279
vendorID = 0x1002
deviceID = 0x73df
deviceType = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
deviceName = AMD Radeon RX 6750 XT
driverID = DRIVER_ID_AMD_PROPRIETARY
driverName = AMD proprietary driver
driverInfo = (AMD proprietary shader compiler)
conformanceVersion = 1.3.3.1
deviceUUID =
driverUUID = 414d442d-4c49-4e55-582d-445256000000
GPU1:
apiVersion = 1.3.241
driverVersion = 2.0.257
vendorID = 0x1002
deviceID = 0x73df
deviceType = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
deviceName = AMD Radeon RX 6750 XT
driverID = DRIVER_ID_AMD_OPEN_SOURCE
driverName = AMD open-source driver
driverInfo = 2023.Q1.3 (LLPC)
conformanceVersion = 1.3.0.0
deviceUUID =
driverUUID = 414d442d-4c49-4e55-582d-445256000000
```
The most important bits are:
- `Kernel driver in use: amdgpu`
- `direct rendering: Yes`
- that `vulkaninfo` doesn't produce any errors
## Wine and other software packages
These are my current useflags:
- wine: `+abi_x86_32 +abi_x86_64 +proton`
- wine-staging: `+X +abi_x86_32 +abi_x86_64 +fontconfig +gecko +gstreamer +mingw +mono +nls +opengl +pulseaudio +sdl +ssl +strip +truetype +unwind +usb +vulkan +xcomposite -wow64`
- wine-proton: `+X +abi_x86_32 +abi_x86_64 +fontconfig +gecko +gstreamer +mingw +mono +nls +opengl +pulseaudio +sdl +ssl +strip +truetype +unwind +vulkan +xcomposite -wow64`
- [ ] wine-vanilla: `+abi_x86_32 +abi_x86_64 +fontconfig +gecko +gstreamer +mono +nls +pulseaudio +sdl +ssl +strip +unwind +usb +video_cards_amdgpu +xcomposite -wow6`
Notice that I am targeting all WINE packages in order to test slightly different configurations. Use `eselect wine` to switch between versions.
Until the Gentoo devs says that wow64 feature is stable and fully functional, I will keep it off.
I have enable the `abi_x86_32` use flag for many packages, probably more than needed. This is to ensure that I avoid problems related to my configuration. Enabling the flag globally seems like a waste of cpu and disk.
These are the additional WINE related packages that I installed:
- app-emulation/winetricks: `+gtk +rar`
- app-emulation/vkd3d-proton: `+abi_x86_32 +strip`
- app-emulation/dxvk: `+d3d10 +d3d11 +d3d9 +dxgi +strig +abi_x86_32`
GPU related packages:
- dev-util/DirectXShaderCompiler: necessary for proper directX support with vulkan
- media-libs/vulkan-loader: `+X +abi_x86_32 +layers`
- dev-util/vulkan-tools: `+X`
- media-libs/amdgpu-pro-vulkan: `+abi_x86_32 +video_cards_amdgpu`
- media-libs/amdvlk: `+abi_x86_32 +raytracing` but I am not sure my gpu supports raytracing
- media-libs/shaderc
I am using spectrwm as my windows manager. It is not the best option and I would suggest to use a more featured DE.
This is an example of an innocous error that is caused by spectrwm when using WINE:
```
ERROR: ld.so: object '/usr/lib64/libswmhack.so.0.0' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
```
Consider that WMs need a compositor to avoid some clashes with WINE. I am using x11-misc/picom with drm and opengl support.
## Using WINE
If you have no clue about how WINE works, start by reading the [FAQs](https://wiki.winehq.org/FAQ#Wineprefixes).
The biggest considerations you have to make when using WINE are the
software dependencies of the Windows program you want to use. For the
moment I have been able to survive with only two prefixes, one for 32
bits games and one for more recent software.
What all of this means, is that I have two folders in my home, `.wine` and `.wine32` in which I instruct WINE to start a new program using the environment variable (that is what WINEPREFIX is all about). When I feel lazy, I select the WINE prefix using winetricks, then navigate to the game using explorer.exe.
It's important to remember that whenever you create a new WINE prefix, you need to symlink the correct directx dependencies, as the Gentoo ebuilds suggests:
- `WINEPREFIX=/home/user/.wine setup_vkd3d_proton.sh install --symlink` for directx12
- `WINEPREFIX=/home/user/.wine setup_dxvk.sh install --symlink` for directx11 and earlier
Usually WINE takes care of starting up necessary processes inside the
prefixes. This is done by the `wineboot` program so I suggest to read
its manpage.
To install software dependencies, I use winetricks. If a dependency is
not available through winetricks, it's always possible to install the
.exe as you would on Windows. Take in mind that WINE uses some Linux
specific software in place of some Windows libraries. Some key replacements include:
- wine-mono in place of dotnet
- dxvk and vkd3d in place of directx
- gallium-nine and wined3d, in place of directx but I had better experience with dxvk and vkd3d
- wine-gecko in place of whatever web view IE was offering
- wineconsole in place of the Windows cmd program
- your dotnet installation is usually enough for WINE, you don't need
to install the dotnet runtimes, although I have to check this assertion on a
fresh installation
### Dependencies rules of thumb
1. lots of games prompt you to install dependencies such as directx. Avoid it as much as possible and rely on WINE specific libraries
2. winetricks can manage most if not all of those dependencies for you. It will save you time to figure out the correct paths for each library and automate the install as much as possible
3. recent games usually want the Visual C++ libraries. You can install them all with the vcrun2022 package
4. older games usually want Visual C++ libraries, but you need to install the different yearly versions one by one
5. you can backup or modify the winetricks installers. They are in you cache directory, usually `~/.cache/winetricks`
### Debugging
In all honesty, it's too early in this journey to write a comprehensive chapter on this topic. The `winedbg` command is still shrouded in mystery.
At the moment I am keeping a small set of games that are self contained and allows me to check if WINE inside the wineprefix is working as I expect.
I have uploaded some mostly self contained demos that you can use to test that directx and you GPU is working as it should:
- [https://archive.org/details/elemental-demo-dx-12-guru-3-d.com](UnrealEngine4 tech demo for directx12)
- [https://archive.org/details/ue-4-elemental-demo](the same demo, but for directx11)
- [https://archive.org/details/ati-radeon-9700-debevec-rnl-demo-v-1.1.7z](ATI Radeon 9700 Debevec RNL Demo v1.1ATI Radeon 9700 Debevec RNL Demo for directx9)
You can find more video card demos at [https://soggi.org/video-cards/tech-demos.htm](soggi.org).
For controllers, you can use two tools:
- `wine dxdiag` that launches the directx toolbox, useful not only for the gpu, but also for audio and input devices
- `wine control joy.cpl`, a cool utility to see your XInput and DInput compatible hardware

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Caught in the Net (Posts about AI)</title><link>francescomecca.eu</link><description></description><atom:link href="francescomecca.eu/categories/ai.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2024 &lt;a href="mailto:francescomecca.eu"&gt;Francesco Mecca&lt;/a&gt; </copyright><lastBuildDate>Wed, 28 Feb 2024 09:29:26 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Capire il Machine Learning (parte 3)</title><link>francescomecca.eu/blog/2016/11/15/machine-learning-parte3/</link><dc:creator>Francesco Mecca</dc:creator><description>&lt;h3&gt;Riconoscimento delle immagini&lt;/h3&gt; <?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Caught in the Net (Posts about AI)</title><link>francescomecca.eu</link><description></description><atom:link href="francescomecca.eu/categories/ai.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2020 &lt;a href="mailto:francescomecca.eu"&gt;Francesco Mecca&lt;/a&gt; </copyright><lastBuildDate>Wed, 29 Jan 2020 10:04:36 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Capire il Machine Learning (parte 3)</title><link>francescomecca.eu/blog/2016/11/15/machine-learning-parte3/</link><dc:creator>Francesco Mecca</dc:creator><description>&lt;div&gt;&lt;h3&gt;Riconoscimento delle immagini&lt;/h3&gt;
&lt;p&gt;Il machine learning viene utilizzato anche per il riconoscimento delle immagini. &lt;p&gt;Il machine learning viene utilizzato anche per il riconoscimento delle immagini.
La tipologia di rete neurale utilizzata per questa applicazione è chiamata rete neural a convoluzione ( &lt;strong&gt;convolutional neural networks&lt;/strong&gt;), abbreviata CNN.&lt;/p&gt; La tipologia di rete neurale utilizzata per questa applicazione è chiamata rete neural a convoluzione ( &lt;strong&gt;convolutional neural networks&lt;/strong&gt;), abbreviata CNN.&lt;/p&gt;
&lt;p&gt;Innanzitutto consideriamo che ogni immagine può essere codificata come una matrice di valori&lt;/p&gt; &lt;p&gt;Innanzitutto consideriamo che ogni immagine può essere codificata come una matrice di valori&lt;/p&gt;
@ -21,7 +21,7 @@ Questi pattern corrispondono alle caratteristiche proprie di un oggetto (quali p
&lt;p&gt;Alla fine dell'analisi tutte le caratteristiche estrapolate vengono considerate nell'insieme e in questo modo possiamo capire a quale categoria appartiene l'immagine.&lt;/p&gt; &lt;p&gt;Alla fine dell'analisi tutte le caratteristiche estrapolate vengono considerate nell'insieme e in questo modo possiamo capire a quale categoria appartiene l'immagine.&lt;/p&gt;
&lt;p&gt;Questo procedimento a livello algoritmo si esplicita con una connessione completa fra tutti i nodi della rete neurale che possono poi restituire l'output (probabilità che l'immagine appartenga ad una determinata categoria).&lt;/p&gt; &lt;p&gt;Questo procedimento a livello algoritmo si esplicita con una connessione completa fra tutti i nodi della rete neurale che possono poi restituire l'output (probabilità che l'immagine appartenga ad una determinata categoria).&lt;/p&gt;
&lt;h5&gt;Fase di rinforzo&lt;/h5&gt; &lt;h5&gt;Fase di rinforzo&lt;/h5&gt;
&lt;p&gt;Durante il training é presente un'ultima fase (o strato), chiamato più propriamente &lt;strong&gt;loss layer&lt;/strong&gt;. Questo strato provvede a dare un &lt;strong&gt;feedback&lt;/strong&gt; alla rete neurale analizzando l'output in relazione ai dati di partenza (ovvero le immagini già categorizzate).&lt;/p&gt;</description><category>AI</category><category>algoritmi genetici</category><category>Genetic algorithm</category><category>Neural networks</category><category>PesceWanda</category><category>programming</category><category>reti neurali</category><guid>francescomecca.eu/blog/2016/11/15/machine-learning-parte3/</guid><pubDate>Tue, 15 Nov 2016 00:00:00 GMT</pubDate></item><item><title>Capire il Machine Learning (parte 2)</title><link>francescomecca.eu/blog/2016/11/11/machine-learning-parte2/</link><dc:creator>Francesco Mecca</dc:creator><description>&lt;p&gt;Nel precedente &lt;a href="francescomecca.eu/pescewanda/2016/11/10/machine-learning-intro/"&gt;post&lt;/a&gt; abbiamo preso in considerazione una rete neurale molto basica. &lt;p&gt;Durante il training é presente un'ultima fase (o strato), chiamato più propriamente &lt;strong&gt;loss layer&lt;/strong&gt;. Questo strato provvede a dare un &lt;strong&gt;feedback&lt;/strong&gt; alla rete neurale analizzando l'output in relazione ai dati di partenza (ovvero le immagini già categorizzate).&lt;/p&gt;&lt;/div&gt;</description><category>AI</category><category>algoritmi genetici</category><category>Genetic algorithm</category><category>Neural networks</category><category>PesceWanda</category><category>programming</category><category>reti neurali</category><guid>francescomecca.eu/blog/2016/11/15/machine-learning-parte3/</guid><pubDate>Tue, 15 Nov 2016 00:00:00 GMT</pubDate></item><item><title>Capire il Machine Learning (parte 2)</title><link>francescomecca.eu/blog/2016/11/11/machine-learning-parte2/</link><dc:creator>Francesco Mecca</dc:creator><description>&lt;div&gt;&lt;p&gt;Nel precedente &lt;a href="francescomecca.eu/pescewanda/2016/11/10/machine-learning-intro/"&gt;post&lt;/a&gt; abbiamo preso in considerazione una rete neurale molto basica.
Proviamo ora ad approfondire il concetto aggiungendo una proprietà fondamentale, la memoria.&lt;/p&gt; Proviamo ora ad approfondire il concetto aggiungendo una proprietà fondamentale, la memoria.&lt;/p&gt;
&lt;h3&gt;Memoria e Stati&lt;/h3&gt; &lt;h3&gt;Memoria e Stati&lt;/h3&gt;
&lt;p&gt;La rete neurale che abbiamo modellato non ha alcun tipo di memoria. con gli stessi dati di input, l'output è (quasi certamente) lo stesso. &lt;p&gt;La rete neurale che abbiamo modellato non ha alcun tipo di memoria. con gli stessi dati di input, l'output è (quasi certamente) lo stesso.
@ -37,34 +37,38 @@ Abbiamo in questo modo una &lt;em&gt;recurrent neural network&lt;/em&gt; (RNN) d
La RNN analizza carattere dopo carattere e costruisce un grande grafo dove collega ogni carattere al suo successivo. La RNN analizza carattere dopo carattere e costruisce un grande grafo dove collega ogni carattere al suo successivo.
Inizialmente l'output della nostra RNN non ha alcun valore: Inizialmente l'output della nostra RNN non ha alcun valore:
in questo esempio, abbiamo l'output di una RNN allenata attraverso Guerra e Pace:&lt;/p&gt; in questo esempio, abbiamo l'output di una RNN allenata attraverso Guerra e Pace:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="n"&gt;tyntd&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;iafhatawiaoihrdemot&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;lytdws&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;tfti&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;astai&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ogoh&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;eoase&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rrranbyne&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;'&lt;/span&gt;&lt;span class="n"&gt;nhthnee&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt; &lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;tyntd-iafhatawiaoihrdemot lytdws e ,tfti, astai f ogoh eoase rrranbyne 'nhthnee e
&lt;span class="n"&gt;plia&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;tklrgd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;o&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;idoe&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ns&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;smtt&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;h&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ne&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;etie&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;h&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;hregtrs&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;nigtike&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;aoaenns&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;lngty&lt;/span&gt; plia tklrgd t o idoe ns,smtt h ne etie h,hregtrs nigtike,aoaenns lngty
&lt;/pre&gt;&lt;/div&gt; &lt;/pre&gt;
&lt;p&gt;L'output prodotto dalla RNN, benchè non abbia nessun valore per un umano, viene analizzato dalla RNN per arricchire il grafo costituito inizialmente dai caratteri (e le loro relazioni) di Guerra e Pace. &lt;p&gt;L'output prodotto dalla RNN, benchè non abbia nessun valore per un umano, viene analizzato dalla RNN per arricchire il grafo costituito inizialmente dai caratteri (e le loro relazioni) di Guerra e Pace.
Questo procedimento continua all'infinito. Questo procedimento continua all'infinito.
Ogni volta che la RNN produce dell'output lo salva e lo riutilizza come input in maniera ricorsiva per generare nuovo output.&lt;/p&gt; Ogni volta che la RNN produce dell'output lo salva e lo riutilizza come input in maniera ricorsiva per generare nuovo output.&lt;/p&gt;
&lt;p&gt;Dopo 300 iterazioni abbiamo un output di questo tipo:&lt;/p&gt; &lt;p&gt;Dopo 300 iterazioni abbiamo un output di questo tipo:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;"Tmont thithey" fomesscerliund &lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;"Tmont thithey" fomesscerliund
Keushey. Thom here Keushey. Thom here
sheulke, anmerenith ol sivh I lalterthend Bleipile shuwy fil on aseterlome sheulke, anmerenith ol sivh I lalterthend Bleipile shuwy fil on aseterlome
coaniogennc Phe lism thond hon at. MeiDimorotion in ther thize." coaniogennc Phe lism thond hon at. MeiDimorotion in ther thize."
&lt;/pre&gt;&lt;/div&gt; &lt;/pre&gt;
&lt;p&gt;Dopo quasi mille:&lt;/p&gt; &lt;p&gt;Dopo quasi mille:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="nv"&gt;Aftair&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;fall&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;unsuch&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;that&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;hall&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;Prince&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;Velzonski&lt;/span&gt;&lt;span class="err"&gt;'s that me of&lt;/span&gt; &lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;Aftair fall unsuch that the hall for Prince Velzonski's that me of
&lt;span class="err"&gt;her hearly, and behs to so arwage fiving were to it beloge, pavu say falling misfort &lt;/span&gt; her hearly, and behs to so arwage fiving were to it beloge, pavu say falling misfort
&lt;span class="err"&gt;how, and Gogition is so overelical and ofter.&lt;/span&gt; how, and Gogition is so overelical and ofter.
&lt;/pre&gt;&lt;/div&gt; &lt;/pre&gt;
&lt;p&gt;Duemila:&lt;/p&gt; &lt;p&gt;Duemila:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="s2"&gt;"Why do what that day,"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;replied&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;Natasha&lt;/span&gt;,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;wishing&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;himself&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;fact&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;the&lt;/span&gt; &lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;"Why do what that day," replied Natasha, and wishing to himself the fact the
&lt;span class="nv"&gt;princess&lt;/span&gt;,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;Princess&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;Mary&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;was&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;easier&lt;/span&gt;,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;fed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;had&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;oftened&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;him&lt;/span&gt;. princess, Princess Mary was easier, fed in had oftened him.
&lt;span class="nv"&gt;Pierre&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;aking&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;his&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;soul&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;came&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;packs&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;drove&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;up&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;his&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;father&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;in&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;law&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;women&lt;/span&gt;. Pierre aking his soul came to the packs and drove up his father-in-law women.
&lt;/pre&gt;&lt;/div&gt; &lt;/pre&gt;
&lt;p&gt;Possiamo notare come l'output migliori visibilmente.&lt;/p&gt; &lt;p&gt;Possiamo notare come l'output migliori visibilmente.&lt;/p&gt;
&lt;p&gt;Nel prossimo post tratterò una variante di rete neurale utilizzata per classificare e riconoscere immagini.&lt;/p&gt;</description><category>AI</category><category>algoritmi genetici</category><category>Genetic algorithm</category><category>Neural networks</category><category>PesceWanda</category><category>programming</category><category>reti neurali</category><guid>francescomecca.eu/blog/2016/11/11/machine-learning-parte2/</guid><pubDate>Fri, 11 Nov 2016 00:00:00 GMT</pubDate></item><item><title>Capire il Machine Learning (parte 1)</title><link>francescomecca.eu/blog/2016/11/10/machine-learning-intro/</link><dc:creator>Francesco Mecca</dc:creator><description>&lt;p&gt;Questo è il primo di una serie di post che hanno l'obbiettivo di fornire una breve e generale introduzione al mondo del machine learning e delle intelligenze artificiali più in generale. &lt;p&gt;Nel prossimo post tratterò una variante di rete neurale utilizzata per classificare e riconoscere immagini.&lt;/p&gt;&lt;/div&gt;</description><category>AI</category><category>algoritmi genetici</category><category>Genetic algorithm</category><category>Neural networks</category><category>PesceWanda</category><category>programming</category><category>reti neurali</category><guid>francescomecca.eu/blog/2016/11/11/machine-learning-parte2/</guid><pubDate>Fri, 11 Nov 2016 00:00:00 GMT</pubDate></item><item><title>Capire il Machine Learning (parte 1)</title><link>francescomecca.eu/blog/2016/11/10/machine-learning-intro/</link><dc:creator>Francesco Mecca</dc:creator><description>&lt;div&gt;&lt;p&gt;Questo è il primo di una serie di post che hanno l'obbiettivo di fornire una breve e generale introduzione al mondo del machine learning e delle intelligenze artificiali più in generale.
Mi auguro che questa breve introduzione al mondo dell'apprendimento automatico sia una sorta di vaccino contro il sensazionalismo mediatico e la disinformazione che negli ultimi anni fanno da contorno al progresso in questo settore.&lt;/p&gt; Mi auguro che questa breve introduzione al mondo dell'apprendimento automatico sia una sorta di vaccino contro il sensazionalismo mediatico e la disinformazione che negli ultimi anni fanno da contorno al progresso in questo settore.&lt;/p&gt;
&lt;h3&gt;Non c'è risultato senza algoritmo&lt;/h3&gt; &lt;h3&gt;Non c'è risultato senza algoritmo&lt;/h3&gt;
&lt;p&gt;Nelle scienze informatiche un algoritmo è un insieme di istruzioni che partendo da uno stato iniziale (input) permette di arrivare ad uno stato finale (output) attraverso una serie di step logici. &lt;p&gt;Nelle scienze informatiche un algoritmo è un insieme di istruzioni che partendo da uno stato iniziale (input) permette di arrivare ad uno stato finale (output) attraverso una serie di step logici.
@ -81,35 +85,35 @@ Noi abbiamo questi dati:&lt;/p&gt;
&lt;thead&gt; &lt;thead&gt;
&lt;tr&gt; &lt;tr&gt;
&lt;th&gt;PREZZO ORIGINALE&lt;/th&gt; &lt;th&gt;PREZZO ORIGINALE&lt;/th&gt;
&lt;th style="text-align: center;"&gt;Km percorsi&lt;/th&gt; &lt;th align="center"&gt;Km percorsi&lt;/th&gt;
&lt;th style="text-align: center;"&gt;stato di usura&lt;/th&gt; &lt;th align="center"&gt;stato di usura&lt;/th&gt;
&lt;th style="text-align: right;"&gt;PREZZO FINALE&lt;/th&gt; &lt;th align="right"&gt;PREZZO FINALE&lt;/th&gt;
&lt;/tr&gt; &lt;/tr&gt;
&lt;/thead&gt; &lt;/thead&gt;
&lt;tbody&gt; &lt;tbody&gt;
&lt;tr&gt; &lt;tr&gt;
&lt;td&gt;50 000&lt;/td&gt; &lt;td&gt;50 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;120 000&lt;/td&gt; &lt;td align="center"&gt;120 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;lieve&lt;/td&gt; &lt;td align="center"&gt;lieve&lt;/td&gt;
&lt;td style="text-align: right;"&gt;40 000&lt;/td&gt; &lt;td align="right"&gt;40 000&lt;/td&gt;
&lt;/tr&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;tr&gt;
&lt;td&gt;30 000&lt;/td&gt; &lt;td&gt;30 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;150 000&lt;/td&gt; &lt;td align="center"&gt;150 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;notevole&lt;/td&gt; &lt;td align="center"&gt;notevole&lt;/td&gt;
&lt;td style="text-align: right;"&gt;8 000&lt;/td&gt; &lt;td align="right"&gt;8 000&lt;/td&gt;
&lt;/tr&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;tr&gt;
&lt;td&gt;20 000&lt;/td&gt; &lt;td&gt;20 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;80 000&lt;/td&gt; &lt;td align="center"&gt;80 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;lieve&lt;/td&gt; &lt;td align="center"&gt;lieve&lt;/td&gt;
&lt;td style="text-align: right;"&gt;15 000&lt;/td&gt; &lt;td align="right"&gt;15 000&lt;/td&gt;
&lt;/tr&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;tr&gt;
&lt;td&gt;20 000&lt;/td&gt; &lt;td&gt;20 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;120 000&lt;/td&gt; &lt;td align="center"&gt;120 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;notevole&lt;/td&gt; &lt;td align="center"&gt;notevole&lt;/td&gt;
&lt;td style="text-align: right;"&gt;...&lt;/td&gt; &lt;td align="right"&gt;...&lt;/td&gt;
&lt;/tr&gt; &lt;/tr&gt;
&lt;/tbody&gt; &lt;/tbody&gt;
&lt;/table&gt; &lt;/table&gt;
@ -125,30 +129,30 @@ Possiamo capire già da ora che nel caso ci fossero dati che "inquinano" il nost
&lt;thead&gt; &lt;thead&gt;
&lt;tr&gt; &lt;tr&gt;
&lt;th&gt;PREZZO ORIGINALE&lt;/th&gt; &lt;th&gt;PREZZO ORIGINALE&lt;/th&gt;
&lt;th style="text-align: center;"&gt;Km percorsi&lt;/th&gt; &lt;th align="center"&gt;Km percorsi&lt;/th&gt;
&lt;th style="text-align: right;"&gt;stato di usura&lt;/th&gt; &lt;th align="right"&gt;stato di usura&lt;/th&gt;
&lt;/tr&gt; &lt;/tr&gt;
&lt;/thead&gt; &lt;/thead&gt;
&lt;tbody&gt; &lt;tbody&gt;
&lt;tr&gt; &lt;tr&gt;
&lt;td&gt;50 000&lt;/td&gt; &lt;td&gt;50 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;120 000&lt;/td&gt; &lt;td align="center"&gt;120 000&lt;/td&gt;
&lt;td style="text-align: right;"&gt;lieve&lt;/td&gt; &lt;td align="right"&gt;lieve&lt;/td&gt;
&lt;/tr&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;tr&gt;
&lt;td&gt;30 000&lt;/td&gt; &lt;td&gt;30 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;150 000&lt;/td&gt; &lt;td align="center"&gt;150 000&lt;/td&gt;
&lt;td style="text-align: right;"&gt;notevole&lt;/td&gt; &lt;td align="right"&gt;notevole&lt;/td&gt;
&lt;/tr&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;tr&gt;
&lt;td&gt;20 000&lt;/td&gt; &lt;td&gt;20 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;80 000&lt;/td&gt; &lt;td align="center"&gt;80 000&lt;/td&gt;
&lt;td style="text-align: right;"&gt;lieve&lt;/td&gt; &lt;td align="right"&gt;lieve&lt;/td&gt;
&lt;/tr&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;tr&gt;
&lt;td&gt;20 000&lt;/td&gt; &lt;td&gt;20 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;120 000&lt;/td&gt; &lt;td align="center"&gt;120 000&lt;/td&gt;
&lt;td style="text-align: right;"&gt;notevole&lt;/td&gt; &lt;td align="right"&gt;notevole&lt;/td&gt;
&lt;/tr&gt; &lt;/tr&gt;
&lt;/tbody&gt; &lt;/tbody&gt;
&lt;/table&gt; &lt;/table&gt;
@ -161,14 +165,15 @@ Nel caso della vendita dell'automobile, abbiamo un semplice problema con una sol
&lt;p&gt;Ovviamente ogni incognita nella nostra equazione influisce diversamente sul prezzo finale e quindi possiamo riscriverla come: &lt;p&gt;Ovviamente ogni incognita nella nostra equazione influisce diversamente sul prezzo finale e quindi possiamo riscriverla come:
&lt;em&gt;prezzo finale&lt;/em&gt; = A &lt;em&gt;&lt;em&gt;prezzo originale&lt;/em&gt; + B &lt;/em&gt;&lt;em&gt;km percorsi&lt;/em&gt; + C * stato di usura&lt;/p&gt; &lt;em&gt;prezzo finale&lt;/em&gt; = A &lt;em&gt;&lt;em&gt;prezzo originale&lt;/em&gt; + B &lt;/em&gt;&lt;em&gt;km percorsi&lt;/em&gt; + C * stato di usura&lt;/p&gt;
&lt;p&gt;Se pensiamo ad un algoritmo possiamo ragionare in questo modo:&lt;/p&gt; &lt;p&gt;Se pensiamo ad un algoritmo possiamo ragionare in questo modo:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="n"&gt;funzione&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;calcola_prezzo_auto&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;funzione&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;calcola_prezzo_auto&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;parametri&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;prezzo_originale&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;km_percorsi&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;stato_usura&lt;/span&gt; &lt;span class="n"&gt;parametri&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;prezzo_originale&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;km_percorsi&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;stato_usura&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;variabili&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;prezzo_finale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="n"&gt;variabili&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;prezzo_finale&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="n"&gt;prezzo&lt;/span&gt; &lt;span class="n"&gt;finale&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;prezzo_originale&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mf"&gt;0.804246&lt;/span&gt;
&lt;span class="n"&gt;prezzo&lt;/span&gt; &lt;span class="n"&gt;finale&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;prezzo_finale&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;km_percorsi&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;0.000125&lt;/span&gt;
&lt;span class="n"&gt;prezzo&lt;/span&gt; &lt;span class="n"&gt;finale&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;prezzo_finale&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;stato_usura&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;2500&lt;/span&gt;
&lt;/pre&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;prezzo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;finale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;prezzo_originale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.804246&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;prezzo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;finale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;prezzo_finale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;km_percorsi&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;0.000125&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;prezzo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;finale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;prezzo_finale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;stato_usura&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;2500&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;I valori di quelle costanti, stabilite casualmente nell'esempio, sono chiamate &lt;em&gt;pesi&lt;/em&gt; e servono a stimare il prezzo finale. &lt;p&gt;I valori di quelle costanti, stabilite casualmente nell'esempio, sono chiamate &lt;em&gt;pesi&lt;/em&gt; e servono a stimare il prezzo finale.
Una volta stabiliti i pesi, il nostro algoritmo di supervised learning applica questi pesi ai dati originali e ne valuta l'errore:&lt;/p&gt; Una volta stabiliti i pesi, il nostro algoritmo di supervised learning applica questi pesi ai dati originali e ne valuta l'errore:&lt;/p&gt;
@ -176,40 +181,40 @@ Una volta stabiliti i pesi, il nostro algoritmo di supervised learning applica q
&lt;thead&gt; &lt;thead&gt;
&lt;tr&gt; &lt;tr&gt;
&lt;th&gt;PREZZO ORIGINALE&lt;/th&gt; &lt;th&gt;PREZZO ORIGINALE&lt;/th&gt;
&lt;th style="text-align: center;"&gt;Km percorsi&lt;/th&gt; &lt;th align="center"&gt;Km percorsi&lt;/th&gt;
&lt;th style="text-align: center;"&gt;stato di usura&lt;/th&gt; &lt;th align="center"&gt;stato di usura&lt;/th&gt;
&lt;th style="text-align: center;"&gt;PREZZO FINALE&lt;/th&gt; &lt;th align="center"&gt;PREZZO FINALE&lt;/th&gt;
&lt;th style="text-align: right;"&gt;PREZZO STIMATO&lt;/th&gt; &lt;th align="right"&gt;PREZZO STIMATO&lt;/th&gt;
&lt;/tr&gt; &lt;/tr&gt;
&lt;/thead&gt; &lt;/thead&gt;
&lt;tbody&gt; &lt;tbody&gt;
&lt;tr&gt; &lt;tr&gt;
&lt;td&gt;50 000&lt;/td&gt; &lt;td&gt;50 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;120 000&lt;/td&gt; &lt;td align="center"&gt;120 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;lieve&lt;/td&gt; &lt;td align="center"&gt;lieve&lt;/td&gt;
&lt;td style="text-align: center;"&gt;40 000&lt;/td&gt; &lt;td align="center"&gt;40 000&lt;/td&gt;
&lt;td style="text-align: right;"&gt;374888&lt;/td&gt; &lt;td align="right"&gt;374888&lt;/td&gt;
&lt;/tr&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;tr&gt;
&lt;td&gt;30 000&lt;/td&gt; &lt;td&gt;30 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;150 000&lt;/td&gt; &lt;td align="center"&gt;150 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;notevole&lt;/td&gt; &lt;td align="center"&gt;notevole&lt;/td&gt;
&lt;td style="text-align: center;"&gt;8 000&lt;/td&gt; &lt;td align="center"&gt;8 000&lt;/td&gt;
&lt;td style="text-align: right;"&gt;16000&lt;/td&gt; &lt;td align="right"&gt;16000&lt;/td&gt;
&lt;/tr&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;tr&gt;
&lt;td&gt;20 000&lt;/td&gt; &lt;td&gt;20 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;80 000&lt;/td&gt; &lt;td align="center"&gt;80 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;lieve&lt;/td&gt; &lt;td align="center"&gt;lieve&lt;/td&gt;
&lt;td style="text-align: center;"&gt;15 000&lt;/td&gt; &lt;td align="center"&gt;15 000&lt;/td&gt;
&lt;td style="text-align: right;"&gt;13492&lt;/td&gt; &lt;td align="right"&gt;13492&lt;/td&gt;
&lt;/tr&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;tr&gt;
&lt;td&gt;20 000&lt;/td&gt; &lt;td&gt;20 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;120 000&lt;/td&gt; &lt;td align="center"&gt;120 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;notevole&lt;/td&gt; &lt;td align="center"&gt;notevole&lt;/td&gt;
&lt;td style="text-align: center;"&gt;...&lt;/td&gt; &lt;td align="center"&gt;...&lt;/td&gt;
&lt;td style="text-align: right;"&gt;10988&lt;/td&gt; &lt;td align="right"&gt;10988&lt;/td&gt;
&lt;/tr&gt; &lt;/tr&gt;
&lt;/tbody&gt; &lt;/tbody&gt;
&lt;/table&gt; &lt;/table&gt;
@ -220,36 +225,38 @@ Ci sono varie funzioni che stimano l'errore e permettono di correggere i pesi o
&lt;p&gt;Ora, come possiamo immaginare, il prezzo di un'auto ha molti fattori che si aggiungono a quelli elencati nell'esempio. &lt;p&gt;Ora, come possiamo immaginare, il prezzo di un'auto ha molti fattori che si aggiungono a quelli elencati nell'esempio.
Non solo, ma molti problemi non hanno una soluzione lineare, ovvero una soluzione che si può semplicemente esprimere attraverso una funzione che aggiunge e moltiplica i valori una sola volta.&lt;/p&gt; Non solo, ma molti problemi non hanno una soluzione lineare, ovvero una soluzione che si può semplicemente esprimere attraverso una funzione che aggiunge e moltiplica i valori una sola volta.&lt;/p&gt;
&lt;p&gt;Possiamo arricchire l'esempio dell'automobile immaginando di avere più set di pesi e di ripetere il procedimento più volte:&lt;/p&gt; &lt;p&gt;Possiamo arricchire l'esempio dell'automobile immaginando di avere più set di pesi e di ripetere il procedimento più volte:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="c"&gt;|&lt;/span&gt;&lt;span class="nb"&gt;---------------------------------------------------&lt;/span&gt;&lt;span class="c"&gt;|&lt;/span&gt; &lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;|---------------------------------------------------|
&lt;span class="c"&gt;| PREZZO_ORIG * peso A1 &lt;/span&gt;&lt;span class="nb"&gt;-----&lt;/span&gt;&lt;span class="nv"&gt;&amp;gt;&lt;/span&gt;&lt;span class="c"&gt; |&lt;/span&gt; | PREZZO_ORIG * peso A1 -----&amp;gt; |
&lt;span class="c"&gt;| KM_PERCORSI * peso B1 &lt;/span&gt;&lt;span class="nb"&gt;-----&lt;/span&gt;&lt;span class="nv"&gt;&amp;gt;&lt;/span&gt;&lt;span class="c"&gt; |&lt;/span&gt; | KM_PERCORSI * peso B1 -----&amp;gt; |
&lt;span class="c"&gt;| STATO_USURA * peso C1 &lt;/span&gt;&lt;span class="nb"&gt;-----&lt;/span&gt;&lt;span class="nv"&gt;&amp;gt;&lt;/span&gt;&lt;span class="c"&gt; |&lt;/span&gt; | STATO_USURA * peso C1 -----&amp;gt; |
&lt;span class="c"&gt;| PREZZO FINALE STIMATO 1|&lt;/span&gt; | PREZZO FINALE STIMATO 1|
&lt;span class="c"&gt;|&lt;/span&gt;&lt;span class="nb"&gt;---------------------------------------------------&lt;/span&gt;&lt;span class="c"&gt;|&lt;/span&gt; |---------------------------------------------------|
&lt;span class="c"&gt;| &lt;/span&gt;&lt;span class="nb"&gt;--------------------------------------------------&lt;/span&gt;&lt;span class="c"&gt;|&lt;/span&gt; | --------------------------------------------------|
&lt;span class="c"&gt;| PREZZO_ORIG * peso A2 &lt;/span&gt;&lt;span class="nb"&gt;-----&lt;/span&gt;&lt;span class="nv"&gt;&amp;gt;&lt;/span&gt;&lt;span class="c"&gt; |&lt;/span&gt; | PREZZO_ORIG * peso A2 -----&amp;gt; |
&lt;span class="c"&gt;| KM_PERCORSI * peso B2 &lt;/span&gt;&lt;span class="nb"&gt;-----&lt;/span&gt;&lt;span class="nv"&gt;&amp;gt;&lt;/span&gt;&lt;span class="c"&gt; |&lt;/span&gt; | KM_PERCORSI * peso B2 -----&amp;gt; |
&lt;span class="c"&gt;| STATO_USURA * peso C2 &lt;/span&gt;&lt;span class="nb"&gt;-----&lt;/span&gt;&lt;span class="nv"&gt;&amp;gt;&lt;/span&gt;&lt;span class="c"&gt; |&lt;/span&gt; | STATO_USURA * peso C2 -----&amp;gt; |
&lt;span class="c"&gt;| PREZZO FINALE STIMATO 2|&lt;/span&gt; | PREZZO FINALE STIMATO 2|
&lt;span class="c"&gt;|&lt;/span&gt;&lt;span class="nb"&gt;---------------------------------------------------&lt;/span&gt;&lt;span class="c"&gt;|&lt;/span&gt; |---------------------------------------------------|
| --------------------------------------------------|
| PREZZO_ORIG * peso A3 -----&amp;gt; |
| KM_PERCORSI * peso B3 -----&amp;gt; |
| STATO_USURA * peso C3 -----&amp;gt; |
| PREZZO FINALE STIMATO 3|
|---------------------------------------------------|
&lt;/pre&gt;
&lt;span class="c"&gt;| &lt;/span&gt;&lt;span class="nb"&gt;--------------------------------------------------&lt;/span&gt;&lt;span class="c"&gt;|&lt;/span&gt;
&lt;span class="c"&gt;| PREZZO_ORIG * peso A3 &lt;/span&gt;&lt;span class="nb"&gt;-----&lt;/span&gt;&lt;span class="nv"&gt;&amp;gt;&lt;/span&gt;&lt;span class="c"&gt; |&lt;/span&gt;
&lt;span class="c"&gt;| KM_PERCORSI * peso B3 &lt;/span&gt;&lt;span class="nb"&gt;-----&lt;/span&gt;&lt;span class="nv"&gt;&amp;gt;&lt;/span&gt;&lt;span class="c"&gt; |&lt;/span&gt;
&lt;span class="c"&gt;| STATO_USURA * peso C3 &lt;/span&gt;&lt;span class="nb"&gt;-----&lt;/span&gt;&lt;span class="nv"&gt;&amp;gt;&lt;/span&gt;&lt;span class="c"&gt; |&lt;/span&gt;
&lt;span class="c"&gt;| PREZZO FINALE STIMATO 3|&lt;/span&gt;
&lt;span class="c"&gt;|&lt;/span&gt;&lt;span class="nb"&gt;---------------------------------------------------&lt;/span&gt;&lt;span class="c"&gt;|&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;E ora immaginiamo di combinare ogni PREZZO FINALE STIMATO in un'ultimo risultato:&lt;/p&gt; &lt;p&gt;E ora immaginiamo di combinare ogni PREZZO FINALE STIMATO in un'ultimo risultato:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="c"&gt;| &lt;/span&gt;&lt;span class="nb"&gt;--------------------------------------------------&lt;/span&gt;&lt;span class="c"&gt;|&lt;/span&gt; &lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;| --------------------------------------------------|
&lt;span class="c"&gt;| PREZZO_1 * peso X &lt;/span&gt;&lt;span class="nb"&gt;-----&lt;/span&gt;&lt;span class="nv"&gt;&amp;gt;&lt;/span&gt;&lt;span class="c"&gt; |&lt;/span&gt; | PREZZO_1 * peso X -----&amp;gt; |
&lt;span class="c"&gt;| PREZZO_2 * peso Y &lt;/span&gt;&lt;span class="nb"&gt;-----&lt;/span&gt;&lt;span class="nv"&gt;&amp;gt;&lt;/span&gt;&lt;span class="c"&gt; |&lt;/span&gt; | PREZZO_2 * peso Y -----&amp;gt; |
&lt;span class="c"&gt;| PREZZO_3 * peso Z &lt;/span&gt;&lt;span class="nb"&gt;-----&lt;/span&gt;&lt;span class="nv"&gt;&amp;gt;&lt;/span&gt;&lt;span class="c"&gt; |&lt;/span&gt; | PREZZO_3 * peso Z -----&amp;gt; |
&lt;span class="c"&gt;| PREZZO FINALE DEF |&lt;/span&gt; | PREZZO FINALE DEF |
&lt;span class="c"&gt;|&lt;/span&gt;&lt;span class="nb"&gt;---------------------------------------------------&lt;/span&gt;&lt;span class="c"&gt;|&lt;/span&gt; |---------------------------------------------------|
&lt;/pre&gt;&lt;/div&gt; &lt;/pre&gt;
&lt;p&gt;Questa é, seppur molto basica, una rete neurale. &lt;p&gt;Questa é, seppur molto basica, una rete neurale.
Proviamo a visualizzarla in un'immagine dove i box arancioni sono i nodi di input e i rossi sono i nodi "nascosti" e temporanei.&lt;/p&gt; Proviamo a visualizzarla in un'immagine dove i box arancioni sono i nodi di input e i rossi sono i nodi "nascosti" e temporanei.&lt;/p&gt;
@ -263,7 +270,7 @@ Proviamo a visualizzarla in un'immagine dove i box arancioni sono i nodi di inpu
&lt;p&gt;le catene: i collegamenti fra neuroni che permettono di valutare il prezzo più volte.&lt;/p&gt; &lt;p&gt;le catene: i collegamenti fra neuroni che permettono di valutare il prezzo più volte.&lt;/p&gt;
&lt;/li&gt; &lt;/li&gt;
&lt;/ul&gt; &lt;/ul&gt;
&lt;p&gt;Nel prossimo &lt;a href="francescomecca.eu/pescewanda/2016/11/11/machine-learning-PARTE2"&gt;post&lt;/a&gt; cercherò di approfondire il concetto di rete neurale con degli esempi di applicazioni concrete.&lt;/p&gt;</description><category>AI</category><category>algoritmi genetici</category><category>Genetic algorithm</category><category>Neural networks</category><category>PesceWanda</category><category>programming</category><category>reti neurali</category><guid>francescomecca.eu/blog/2016/11/10/machine-learning-intro/</guid><pubDate>Thu, 10 Nov 2016 00:00:00 GMT</pubDate></item><item><title>Interpolation using a genetic algorithm</title><link>francescomecca.eu/blog/2016/5/15/genetic-alg/</link><dc:creator>Francesco Mecca</dc:creator><description>&lt;p&gt;This weekend I was in Milan to get a visa and I had the opportunity to work with a friend, Michele, on genetic algorithms. &lt;p&gt;Nel prossimo &lt;a href="francescomecca.eu/pescewanda/2016/11/11/machine-learning-PARTE2"&gt;post&lt;/a&gt; cercherò di approfondire il concetto di rete neurale con degli esempi di applicazioni concrete.&lt;/p&gt;&lt;/div&gt;</description><category>AI</category><category>algoritmi genetici</category><category>Genetic algorithm</category><category>Neural networks</category><category>PesceWanda</category><category>programming</category><category>reti neurali</category><guid>francescomecca.eu/blog/2016/11/10/machine-learning-intro/</guid><pubDate>Thu, 10 Nov 2016 00:00:00 GMT</pubDate></item><item><title>Interpolation using a genetic algorithm</title><link>francescomecca.eu/blog/2016/5/15/genetic-alg/</link><dc:creator>Francesco Mecca</dc:creator><description>&lt;div&gt;&lt;p&gt;This weekend I was in Milan to get a visa and I had the opportunity to work with a friend, Michele, on genetic algorithms.
It was the first time I dig up in such field and it was very exciting. It was the first time I dig up in such field and it was very exciting.
In this post I want to explain some bits of our work.&lt;/p&gt; In this post I want to explain some bits of our work.&lt;/p&gt;
&lt;h3&gt;A brief introduction to GA&lt;/h3&gt; &lt;h3&gt;A brief introduction to GA&lt;/h3&gt;
@ -290,38 +297,42 @@ The main components of a GA are:&lt;/p&gt;
&lt;p&gt;Our program, that is available &lt;a href="http://francescomecca.eu:3000/pesceWanda/interpol_genetica"&gt;here&lt;/a&gt; uses a class to define the various members of the population and a string for the genes, a class as well for the points on the plane.&lt;/p&gt; &lt;p&gt;Our program, that is available &lt;a href="http://francescomecca.eu:3000/pesceWanda/interpol_genetica"&gt;here&lt;/a&gt; uses a class to define the various members of the population and a string for the genes, a class as well for the points on the plane.&lt;/p&gt;
&lt;p&gt;The fitness function is not as precise as it should be because this is only a proof of concept:&lt;/p&gt; &lt;p&gt;The fitness function is not as precise as it should be because this is only a proof of concept:&lt;/p&gt;
&lt;p&gt;.. code:: python&lt;/p&gt; &lt;p&gt;.. code:: python&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="n"&gt;mutationProbability&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt; &lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;mutationProbability = 0.1
&lt;span class="n"&gt;rangeLimit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt; rangeLimit = 5
&lt;span class="n"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fitness&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pointList&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; def fitness(item, pointList, n):
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;value&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; value = 0
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;pointList&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; for p in pointList:
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; y = 0
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; for i in range(n):
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;gene&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; y += item.gene[i] * pow(p.x, i)
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;result&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;abs&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rangeLimit&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; result = 1 - (abs (p.y - y) / rangeLimit)
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;result&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; if result &amp;lt; 0:
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;result&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; result = 0
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;value&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;result&lt;/span&gt; value += result
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;value&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; return value / n
&lt;/pre&gt;&lt;/div&gt; &lt;/pre&gt;
&lt;p&gt;item is just a member of the population, poinList is the list of points and n is the number of points (n - 1 is the grade of the function).&lt;/p&gt; &lt;p&gt;item is just a member of the population, poinList is the list of points and n is the number of points (n - 1 is the grade of the function).&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;for i in range(n):
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;gene&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; y += item.gene[i] * pow(p.x, i)
&lt;/pre&gt;&lt;/div&gt; &lt;/pre&gt;
&lt;p&gt;this piece of code gives us the value of the function encoded in the genes in the points of pointList;&lt;/p&gt; &lt;p&gt;this piece of code gives us the value of the function encoded in the genes in the points of pointList;&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="nb"&gt;result&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;abs&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;p&lt;/span&gt;.&lt;span class="nv"&gt;y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;y&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;rangeLimit&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;result = 1 - (abs (p.y - y) / rangeLimit)
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;result&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;: if result &amp;lt; 0:
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;result&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; result = 0
&lt;/pre&gt;&lt;/div&gt; &lt;/pre&gt;
&lt;p&gt;while here the script stores 1 - the previous result because if the GA has yield a good result there should be distance = 0 from the function evaluated and the points; If this is the case, the fitness function should attribute the highest possible reproduction probability for that member. &lt;p&gt;while here the script stores 1 - the previous result because if the GA has yield a good result there should be distance = 0 from the function evaluated and the points; If this is the case, the fitness function should attribute the highest possible reproduction probability for that member.
At the end the fitness function returns the total value over the number of points evaluated.&lt;/p&gt; At the end the fitness function returns the total value over the number of points evaluated.&lt;/p&gt;
&lt;p&gt;As you can see this fitness function is by no means an optimal one. The reproduction probability is higher for functions that crosses some points and are really distant from others rather than for functions that are closer to every point but crosses none. &lt;p&gt;As you can see this fitness function is by no means an optimal one. The reproduction probability is higher for functions that crosses some points and are really distant from others rather than for functions that are closer to every point but crosses none.
Anyway for simple cases the GA yields good results, as an example for points (0 0), (1 4), (2 9) one of the member with the highest reproduction probability has this function in its genes:&lt;/p&gt; Anyway for simple cases the GA yields good results, as an example for points (0 0), (1 4), (2 9) one of the member with the highest reproduction probability has this function in its genes:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;-0.0487839869993989 &lt;span class="gs"&gt;* x^0 + 4.600339125358671 *&lt;/span&gt; x^1 + -0.2780958075230644 * x^2 &lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;-0.0487839869993989 * x^0 + 4.600339125358671 * x^1 + -0.2780958075230644 * x^2
&lt;/pre&gt;&lt;/div&gt; &lt;/pre&gt;
&lt;p&gt;that crosses this points: (0 -0.0488), (1 4.2735), (2 8.0395) given 80 iterations, initial population of 600 members and a two digit approximation.&lt;/p&gt; &lt;p&gt;that crosses this points: (0 -0.0488), (1 4.2735), (2 8.0395) given 80 iterations, initial population of 600 members and a two digit approximation.&lt;/p&gt;
&lt;p&gt;For a more precise computation a higher population size and a really high number of iterations should be used.&lt;/p&gt;</description><category>AI</category><category>Genetic algorithm</category><category>PesceWanda</category><category>programming</category><category>python</category><guid>francescomecca.eu/blog/2016/5/15/genetic-alg/</guid><pubDate>Sun, 15 May 2016 00:00:00 GMT</pubDate></item></channel></rss> &lt;p&gt;For a more precise computation a higher population size and a really high number of iterations should be used.&lt;/p&gt;&lt;/div&gt;</description><category>AI</category><category>Genetic algorithm</category><category>PesceWanda</category><category>programming</category><category>python</category><guid>francescomecca.eu/blog/2016/5/15/genetic-alg/</guid><pubDate>Sun, 15 May 2016 00:00:00 GMT</pubDate></item></channel></rss>

View file

@ -27,7 +27,7 @@
<a class="btn" href="../../rss.xml">RSS</a> <a class="btn" href="../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><article class="tagpage"><header><h1>Posts about AI</h1> </section><section class="main-content"><article class="tagpage"><header><h1>Posts about AI</h1>
<div class="metadata"> <div class="metadata">

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Caught in the Net (Posts about algoritmi genetici)</title><link>francescomecca.eu</link><description></description><atom:link href="francescomecca.eu/categories/algoritmi-genetici.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2024 &lt;a href="mailto:francescomecca.eu"&gt;Francesco Mecca&lt;/a&gt; </copyright><lastBuildDate>Wed, 28 Feb 2024 09:29:26 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Capire il Machine Learning (parte 3)</title><link>francescomecca.eu/blog/2016/11/15/machine-learning-parte3/</link><dc:creator>Francesco Mecca</dc:creator><description>&lt;h3&gt;Riconoscimento delle immagini&lt;/h3&gt; <?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Caught in the Net (Posts about algoritmi genetici)</title><link>francescomecca.eu</link><description></description><atom:link href="francescomecca.eu/categories/algoritmi-genetici.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2020 &lt;a href="mailto:francescomecca.eu"&gt;Francesco Mecca&lt;/a&gt; </copyright><lastBuildDate>Wed, 29 Jan 2020 10:04:36 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Capire il Machine Learning (parte 3)</title><link>francescomecca.eu/blog/2016/11/15/machine-learning-parte3/</link><dc:creator>Francesco Mecca</dc:creator><description>&lt;div&gt;&lt;h3&gt;Riconoscimento delle immagini&lt;/h3&gt;
&lt;p&gt;Il machine learning viene utilizzato anche per il riconoscimento delle immagini. &lt;p&gt;Il machine learning viene utilizzato anche per il riconoscimento delle immagini.
La tipologia di rete neurale utilizzata per questa applicazione è chiamata rete neural a convoluzione ( &lt;strong&gt;convolutional neural networks&lt;/strong&gt;), abbreviata CNN.&lt;/p&gt; La tipologia di rete neurale utilizzata per questa applicazione è chiamata rete neural a convoluzione ( &lt;strong&gt;convolutional neural networks&lt;/strong&gt;), abbreviata CNN.&lt;/p&gt;
&lt;p&gt;Innanzitutto consideriamo che ogni immagine può essere codificata come una matrice di valori&lt;/p&gt; &lt;p&gt;Innanzitutto consideriamo che ogni immagine può essere codificata come una matrice di valori&lt;/p&gt;
@ -21,7 +21,7 @@ Questi pattern corrispondono alle caratteristiche proprie di un oggetto (quali p
&lt;p&gt;Alla fine dell'analisi tutte le caratteristiche estrapolate vengono considerate nell'insieme e in questo modo possiamo capire a quale categoria appartiene l'immagine.&lt;/p&gt; &lt;p&gt;Alla fine dell'analisi tutte le caratteristiche estrapolate vengono considerate nell'insieme e in questo modo possiamo capire a quale categoria appartiene l'immagine.&lt;/p&gt;
&lt;p&gt;Questo procedimento a livello algoritmo si esplicita con una connessione completa fra tutti i nodi della rete neurale che possono poi restituire l'output (probabilità che l'immagine appartenga ad una determinata categoria).&lt;/p&gt; &lt;p&gt;Questo procedimento a livello algoritmo si esplicita con una connessione completa fra tutti i nodi della rete neurale che possono poi restituire l'output (probabilità che l'immagine appartenga ad una determinata categoria).&lt;/p&gt;
&lt;h5&gt;Fase di rinforzo&lt;/h5&gt; &lt;h5&gt;Fase di rinforzo&lt;/h5&gt;
&lt;p&gt;Durante il training é presente un'ultima fase (o strato), chiamato più propriamente &lt;strong&gt;loss layer&lt;/strong&gt;. Questo strato provvede a dare un &lt;strong&gt;feedback&lt;/strong&gt; alla rete neurale analizzando l'output in relazione ai dati di partenza (ovvero le immagini già categorizzate).&lt;/p&gt;</description><category>AI</category><category>algoritmi genetici</category><category>Genetic algorithm</category><category>Neural networks</category><category>PesceWanda</category><category>programming</category><category>reti neurali</category><guid>francescomecca.eu/blog/2016/11/15/machine-learning-parte3/</guid><pubDate>Tue, 15 Nov 2016 00:00:00 GMT</pubDate></item><item><title>Capire il Machine Learning (parte 2)</title><link>francescomecca.eu/blog/2016/11/11/machine-learning-parte2/</link><dc:creator>Francesco Mecca</dc:creator><description>&lt;p&gt;Nel precedente &lt;a href="francescomecca.eu/pescewanda/2016/11/10/machine-learning-intro/"&gt;post&lt;/a&gt; abbiamo preso in considerazione una rete neurale molto basica. &lt;p&gt;Durante il training é presente un'ultima fase (o strato), chiamato più propriamente &lt;strong&gt;loss layer&lt;/strong&gt;. Questo strato provvede a dare un &lt;strong&gt;feedback&lt;/strong&gt; alla rete neurale analizzando l'output in relazione ai dati di partenza (ovvero le immagini già categorizzate).&lt;/p&gt;&lt;/div&gt;</description><category>AI</category><category>algoritmi genetici</category><category>Genetic algorithm</category><category>Neural networks</category><category>PesceWanda</category><category>programming</category><category>reti neurali</category><guid>francescomecca.eu/blog/2016/11/15/machine-learning-parte3/</guid><pubDate>Tue, 15 Nov 2016 00:00:00 GMT</pubDate></item><item><title>Capire il Machine Learning (parte 2)</title><link>francescomecca.eu/blog/2016/11/11/machine-learning-parte2/</link><dc:creator>Francesco Mecca</dc:creator><description>&lt;div&gt;&lt;p&gt;Nel precedente &lt;a href="francescomecca.eu/pescewanda/2016/11/10/machine-learning-intro/"&gt;post&lt;/a&gt; abbiamo preso in considerazione una rete neurale molto basica.
Proviamo ora ad approfondire il concetto aggiungendo una proprietà fondamentale, la memoria.&lt;/p&gt; Proviamo ora ad approfondire il concetto aggiungendo una proprietà fondamentale, la memoria.&lt;/p&gt;
&lt;h3&gt;Memoria e Stati&lt;/h3&gt; &lt;h3&gt;Memoria e Stati&lt;/h3&gt;
&lt;p&gt;La rete neurale che abbiamo modellato non ha alcun tipo di memoria. con gli stessi dati di input, l'output è (quasi certamente) lo stesso. &lt;p&gt;La rete neurale che abbiamo modellato non ha alcun tipo di memoria. con gli stessi dati di input, l'output è (quasi certamente) lo stesso.
@ -37,34 +37,38 @@ Abbiamo in questo modo una &lt;em&gt;recurrent neural network&lt;/em&gt; (RNN) d
La RNN analizza carattere dopo carattere e costruisce un grande grafo dove collega ogni carattere al suo successivo. La RNN analizza carattere dopo carattere e costruisce un grande grafo dove collega ogni carattere al suo successivo.
Inizialmente l'output della nostra RNN non ha alcun valore: Inizialmente l'output della nostra RNN non ha alcun valore:
in questo esempio, abbiamo l'output di una RNN allenata attraverso Guerra e Pace:&lt;/p&gt; in questo esempio, abbiamo l'output di una RNN allenata attraverso Guerra e Pace:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="n"&gt;tyntd&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;iafhatawiaoihrdemot&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;lytdws&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;tfti&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;astai&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ogoh&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;eoase&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rrranbyne&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;'&lt;/span&gt;&lt;span class="n"&gt;nhthnee&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt; &lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;tyntd-iafhatawiaoihrdemot lytdws e ,tfti, astai f ogoh eoase rrranbyne 'nhthnee e
&lt;span class="n"&gt;plia&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;tklrgd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;o&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;idoe&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ns&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;smtt&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;h&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ne&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;etie&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;h&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;hregtrs&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;nigtike&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;aoaenns&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;lngty&lt;/span&gt; plia tklrgd t o idoe ns,smtt h ne etie h,hregtrs nigtike,aoaenns lngty
&lt;/pre&gt;&lt;/div&gt; &lt;/pre&gt;
&lt;p&gt;L'output prodotto dalla RNN, benchè non abbia nessun valore per un umano, viene analizzato dalla RNN per arricchire il grafo costituito inizialmente dai caratteri (e le loro relazioni) di Guerra e Pace. &lt;p&gt;L'output prodotto dalla RNN, benchè non abbia nessun valore per un umano, viene analizzato dalla RNN per arricchire il grafo costituito inizialmente dai caratteri (e le loro relazioni) di Guerra e Pace.
Questo procedimento continua all'infinito. Questo procedimento continua all'infinito.
Ogni volta che la RNN produce dell'output lo salva e lo riutilizza come input in maniera ricorsiva per generare nuovo output.&lt;/p&gt; Ogni volta che la RNN produce dell'output lo salva e lo riutilizza come input in maniera ricorsiva per generare nuovo output.&lt;/p&gt;
&lt;p&gt;Dopo 300 iterazioni abbiamo un output di questo tipo:&lt;/p&gt; &lt;p&gt;Dopo 300 iterazioni abbiamo un output di questo tipo:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;"Tmont thithey" fomesscerliund &lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;"Tmont thithey" fomesscerliund
Keushey. Thom here Keushey. Thom here
sheulke, anmerenith ol sivh I lalterthend Bleipile shuwy fil on aseterlome sheulke, anmerenith ol sivh I lalterthend Bleipile shuwy fil on aseterlome
coaniogennc Phe lism thond hon at. MeiDimorotion in ther thize." coaniogennc Phe lism thond hon at. MeiDimorotion in ther thize."
&lt;/pre&gt;&lt;/div&gt; &lt;/pre&gt;
&lt;p&gt;Dopo quasi mille:&lt;/p&gt; &lt;p&gt;Dopo quasi mille:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="nv"&gt;Aftair&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;fall&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;unsuch&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;that&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;hall&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;Prince&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;Velzonski&lt;/span&gt;&lt;span class="err"&gt;'s that me of&lt;/span&gt; &lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;Aftair fall unsuch that the hall for Prince Velzonski's that me of
&lt;span class="err"&gt;her hearly, and behs to so arwage fiving were to it beloge, pavu say falling misfort &lt;/span&gt; her hearly, and behs to so arwage fiving were to it beloge, pavu say falling misfort
&lt;span class="err"&gt;how, and Gogition is so overelical and ofter.&lt;/span&gt; how, and Gogition is so overelical and ofter.
&lt;/pre&gt;&lt;/div&gt; &lt;/pre&gt;
&lt;p&gt;Duemila:&lt;/p&gt; &lt;p&gt;Duemila:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="s2"&gt;"Why do what that day,"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;replied&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;Natasha&lt;/span&gt;,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;wishing&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;himself&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;fact&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;the&lt;/span&gt; &lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;"Why do what that day," replied Natasha, and wishing to himself the fact the
&lt;span class="nv"&gt;princess&lt;/span&gt;,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;Princess&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;Mary&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;was&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;easier&lt;/span&gt;,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;fed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;had&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;oftened&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;him&lt;/span&gt;. princess, Princess Mary was easier, fed in had oftened him.
&lt;span class="nv"&gt;Pierre&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;aking&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;his&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;soul&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;came&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;packs&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;drove&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;up&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;his&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;father&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;in&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;law&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;women&lt;/span&gt;. Pierre aking his soul came to the packs and drove up his father-in-law women.
&lt;/pre&gt;&lt;/div&gt; &lt;/pre&gt;
&lt;p&gt;Possiamo notare come l'output migliori visibilmente.&lt;/p&gt; &lt;p&gt;Possiamo notare come l'output migliori visibilmente.&lt;/p&gt;
&lt;p&gt;Nel prossimo post tratterò una variante di rete neurale utilizzata per classificare e riconoscere immagini.&lt;/p&gt;</description><category>AI</category><category>algoritmi genetici</category><category>Genetic algorithm</category><category>Neural networks</category><category>PesceWanda</category><category>programming</category><category>reti neurali</category><guid>francescomecca.eu/blog/2016/11/11/machine-learning-parte2/</guid><pubDate>Fri, 11 Nov 2016 00:00:00 GMT</pubDate></item><item><title>Capire il Machine Learning (parte 1)</title><link>francescomecca.eu/blog/2016/11/10/machine-learning-intro/</link><dc:creator>Francesco Mecca</dc:creator><description>&lt;p&gt;Questo è il primo di una serie di post che hanno l'obbiettivo di fornire una breve e generale introduzione al mondo del machine learning e delle intelligenze artificiali più in generale. &lt;p&gt;Nel prossimo post tratterò una variante di rete neurale utilizzata per classificare e riconoscere immagini.&lt;/p&gt;&lt;/div&gt;</description><category>AI</category><category>algoritmi genetici</category><category>Genetic algorithm</category><category>Neural networks</category><category>PesceWanda</category><category>programming</category><category>reti neurali</category><guid>francescomecca.eu/blog/2016/11/11/machine-learning-parte2/</guid><pubDate>Fri, 11 Nov 2016 00:00:00 GMT</pubDate></item><item><title>Capire il Machine Learning (parte 1)</title><link>francescomecca.eu/blog/2016/11/10/machine-learning-intro/</link><dc:creator>Francesco Mecca</dc:creator><description>&lt;div&gt;&lt;p&gt;Questo è il primo di una serie di post che hanno l'obbiettivo di fornire una breve e generale introduzione al mondo del machine learning e delle intelligenze artificiali più in generale.
Mi auguro che questa breve introduzione al mondo dell'apprendimento automatico sia una sorta di vaccino contro il sensazionalismo mediatico e la disinformazione che negli ultimi anni fanno da contorno al progresso in questo settore.&lt;/p&gt; Mi auguro che questa breve introduzione al mondo dell'apprendimento automatico sia una sorta di vaccino contro il sensazionalismo mediatico e la disinformazione che negli ultimi anni fanno da contorno al progresso in questo settore.&lt;/p&gt;
&lt;h3&gt;Non c'è risultato senza algoritmo&lt;/h3&gt; &lt;h3&gt;Non c'è risultato senza algoritmo&lt;/h3&gt;
&lt;p&gt;Nelle scienze informatiche un algoritmo è un insieme di istruzioni che partendo da uno stato iniziale (input) permette di arrivare ad uno stato finale (output) attraverso una serie di step logici. &lt;p&gt;Nelle scienze informatiche un algoritmo è un insieme di istruzioni che partendo da uno stato iniziale (input) permette di arrivare ad uno stato finale (output) attraverso una serie di step logici.
@ -81,35 +85,35 @@ Noi abbiamo questi dati:&lt;/p&gt;
&lt;thead&gt; &lt;thead&gt;
&lt;tr&gt; &lt;tr&gt;
&lt;th&gt;PREZZO ORIGINALE&lt;/th&gt; &lt;th&gt;PREZZO ORIGINALE&lt;/th&gt;
&lt;th style="text-align: center;"&gt;Km percorsi&lt;/th&gt; &lt;th align="center"&gt;Km percorsi&lt;/th&gt;
&lt;th style="text-align: center;"&gt;stato di usura&lt;/th&gt; &lt;th align="center"&gt;stato di usura&lt;/th&gt;
&lt;th style="text-align: right;"&gt;PREZZO FINALE&lt;/th&gt; &lt;th align="right"&gt;PREZZO FINALE&lt;/th&gt;
&lt;/tr&gt; &lt;/tr&gt;
&lt;/thead&gt; &lt;/thead&gt;
&lt;tbody&gt; &lt;tbody&gt;
&lt;tr&gt; &lt;tr&gt;
&lt;td&gt;50 000&lt;/td&gt; &lt;td&gt;50 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;120 000&lt;/td&gt; &lt;td align="center"&gt;120 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;lieve&lt;/td&gt; &lt;td align="center"&gt;lieve&lt;/td&gt;
&lt;td style="text-align: right;"&gt;40 000&lt;/td&gt; &lt;td align="right"&gt;40 000&lt;/td&gt;
&lt;/tr&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;tr&gt;
&lt;td&gt;30 000&lt;/td&gt; &lt;td&gt;30 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;150 000&lt;/td&gt; &lt;td align="center"&gt;150 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;notevole&lt;/td&gt; &lt;td align="center"&gt;notevole&lt;/td&gt;
&lt;td style="text-align: right;"&gt;8 000&lt;/td&gt; &lt;td align="right"&gt;8 000&lt;/td&gt;
&lt;/tr&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;tr&gt;
&lt;td&gt;20 000&lt;/td&gt; &lt;td&gt;20 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;80 000&lt;/td&gt; &lt;td align="center"&gt;80 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;lieve&lt;/td&gt; &lt;td align="center"&gt;lieve&lt;/td&gt;
&lt;td style="text-align: right;"&gt;15 000&lt;/td&gt; &lt;td align="right"&gt;15 000&lt;/td&gt;
&lt;/tr&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;tr&gt;
&lt;td&gt;20 000&lt;/td&gt; &lt;td&gt;20 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;120 000&lt;/td&gt; &lt;td align="center"&gt;120 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;notevole&lt;/td&gt; &lt;td align="center"&gt;notevole&lt;/td&gt;
&lt;td style="text-align: right;"&gt;...&lt;/td&gt; &lt;td align="right"&gt;...&lt;/td&gt;
&lt;/tr&gt; &lt;/tr&gt;
&lt;/tbody&gt; &lt;/tbody&gt;
&lt;/table&gt; &lt;/table&gt;
@ -125,30 +129,30 @@ Possiamo capire già da ora che nel caso ci fossero dati che "inquinano" il nost
&lt;thead&gt; &lt;thead&gt;
&lt;tr&gt; &lt;tr&gt;
&lt;th&gt;PREZZO ORIGINALE&lt;/th&gt; &lt;th&gt;PREZZO ORIGINALE&lt;/th&gt;
&lt;th style="text-align: center;"&gt;Km percorsi&lt;/th&gt; &lt;th align="center"&gt;Km percorsi&lt;/th&gt;
&lt;th style="text-align: right;"&gt;stato di usura&lt;/th&gt; &lt;th align="right"&gt;stato di usura&lt;/th&gt;
&lt;/tr&gt; &lt;/tr&gt;
&lt;/thead&gt; &lt;/thead&gt;
&lt;tbody&gt; &lt;tbody&gt;
&lt;tr&gt; &lt;tr&gt;
&lt;td&gt;50 000&lt;/td&gt; &lt;td&gt;50 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;120 000&lt;/td&gt; &lt;td align="center"&gt;120 000&lt;/td&gt;
&lt;td style="text-align: right;"&gt;lieve&lt;/td&gt; &lt;td align="right"&gt;lieve&lt;/td&gt;
&lt;/tr&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;tr&gt;
&lt;td&gt;30 000&lt;/td&gt; &lt;td&gt;30 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;150 000&lt;/td&gt; &lt;td align="center"&gt;150 000&lt;/td&gt;
&lt;td style="text-align: right;"&gt;notevole&lt;/td&gt; &lt;td align="right"&gt;notevole&lt;/td&gt;
&lt;/tr&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;tr&gt;
&lt;td&gt;20 000&lt;/td&gt; &lt;td&gt;20 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;80 000&lt;/td&gt; &lt;td align="center"&gt;80 000&lt;/td&gt;
&lt;td style="text-align: right;"&gt;lieve&lt;/td&gt; &lt;td align="right"&gt;lieve&lt;/td&gt;
&lt;/tr&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;tr&gt;
&lt;td&gt;20 000&lt;/td&gt; &lt;td&gt;20 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;120 000&lt;/td&gt; &lt;td align="center"&gt;120 000&lt;/td&gt;
&lt;td style="text-align: right;"&gt;notevole&lt;/td&gt; &lt;td align="right"&gt;notevole&lt;/td&gt;
&lt;/tr&gt; &lt;/tr&gt;
&lt;/tbody&gt; &lt;/tbody&gt;
&lt;/table&gt; &lt;/table&gt;
@ -161,14 +165,15 @@ Nel caso della vendita dell'automobile, abbiamo un semplice problema con una sol
&lt;p&gt;Ovviamente ogni incognita nella nostra equazione influisce diversamente sul prezzo finale e quindi possiamo riscriverla come: &lt;p&gt;Ovviamente ogni incognita nella nostra equazione influisce diversamente sul prezzo finale e quindi possiamo riscriverla come:
&lt;em&gt;prezzo finale&lt;/em&gt; = A &lt;em&gt;&lt;em&gt;prezzo originale&lt;/em&gt; + B &lt;/em&gt;&lt;em&gt;km percorsi&lt;/em&gt; + C * stato di usura&lt;/p&gt; &lt;em&gt;prezzo finale&lt;/em&gt; = A &lt;em&gt;&lt;em&gt;prezzo originale&lt;/em&gt; + B &lt;/em&gt;&lt;em&gt;km percorsi&lt;/em&gt; + C * stato di usura&lt;/p&gt;
&lt;p&gt;Se pensiamo ad un algoritmo possiamo ragionare in questo modo:&lt;/p&gt; &lt;p&gt;Se pensiamo ad un algoritmo possiamo ragionare in questo modo:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="n"&gt;funzione&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;calcola_prezzo_auto&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;funzione&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;calcola_prezzo_auto&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;parametri&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;prezzo_originale&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;km_percorsi&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;stato_usura&lt;/span&gt; &lt;span class="n"&gt;parametri&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;prezzo_originale&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;km_percorsi&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;stato_usura&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;variabili&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;prezzo_finale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="n"&gt;variabili&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;prezzo_finale&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="n"&gt;prezzo&lt;/span&gt; &lt;span class="n"&gt;finale&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;prezzo_originale&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mf"&gt;0.804246&lt;/span&gt;
&lt;span class="n"&gt;prezzo&lt;/span&gt; &lt;span class="n"&gt;finale&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;prezzo_finale&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;km_percorsi&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;0.000125&lt;/span&gt;
&lt;span class="n"&gt;prezzo&lt;/span&gt; &lt;span class="n"&gt;finale&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;prezzo_finale&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;stato_usura&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;2500&lt;/span&gt;
&lt;/pre&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;prezzo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;finale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;prezzo_originale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.804246&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;prezzo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;finale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;prezzo_finale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;km_percorsi&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;0.000125&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;prezzo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;finale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;prezzo_finale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;stato_usura&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;2500&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;I valori di quelle costanti, stabilite casualmente nell'esempio, sono chiamate &lt;em&gt;pesi&lt;/em&gt; e servono a stimare il prezzo finale. &lt;p&gt;I valori di quelle costanti, stabilite casualmente nell'esempio, sono chiamate &lt;em&gt;pesi&lt;/em&gt; e servono a stimare il prezzo finale.
Una volta stabiliti i pesi, il nostro algoritmo di supervised learning applica questi pesi ai dati originali e ne valuta l'errore:&lt;/p&gt; Una volta stabiliti i pesi, il nostro algoritmo di supervised learning applica questi pesi ai dati originali e ne valuta l'errore:&lt;/p&gt;
@ -176,40 +181,40 @@ Una volta stabiliti i pesi, il nostro algoritmo di supervised learning applica q
&lt;thead&gt; &lt;thead&gt;
&lt;tr&gt; &lt;tr&gt;
&lt;th&gt;PREZZO ORIGINALE&lt;/th&gt; &lt;th&gt;PREZZO ORIGINALE&lt;/th&gt;
&lt;th style="text-align: center;"&gt;Km percorsi&lt;/th&gt; &lt;th align="center"&gt;Km percorsi&lt;/th&gt;
&lt;th style="text-align: center;"&gt;stato di usura&lt;/th&gt; &lt;th align="center"&gt;stato di usura&lt;/th&gt;
&lt;th style="text-align: center;"&gt;PREZZO FINALE&lt;/th&gt; &lt;th align="center"&gt;PREZZO FINALE&lt;/th&gt;
&lt;th style="text-align: right;"&gt;PREZZO STIMATO&lt;/th&gt; &lt;th align="right"&gt;PREZZO STIMATO&lt;/th&gt;
&lt;/tr&gt; &lt;/tr&gt;
&lt;/thead&gt; &lt;/thead&gt;
&lt;tbody&gt; &lt;tbody&gt;
&lt;tr&gt; &lt;tr&gt;
&lt;td&gt;50 000&lt;/td&gt; &lt;td&gt;50 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;120 000&lt;/td&gt; &lt;td align="center"&gt;120 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;lieve&lt;/td&gt; &lt;td align="center"&gt;lieve&lt;/td&gt;
&lt;td style="text-align: center;"&gt;40 000&lt;/td&gt; &lt;td align="center"&gt;40 000&lt;/td&gt;
&lt;td style="text-align: right;"&gt;374888&lt;/td&gt; &lt;td align="right"&gt;374888&lt;/td&gt;
&lt;/tr&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;tr&gt;
&lt;td&gt;30 000&lt;/td&gt; &lt;td&gt;30 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;150 000&lt;/td&gt; &lt;td align="center"&gt;150 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;notevole&lt;/td&gt; &lt;td align="center"&gt;notevole&lt;/td&gt;
&lt;td style="text-align: center;"&gt;8 000&lt;/td&gt; &lt;td align="center"&gt;8 000&lt;/td&gt;
&lt;td style="text-align: right;"&gt;16000&lt;/td&gt; &lt;td align="right"&gt;16000&lt;/td&gt;
&lt;/tr&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;tr&gt;
&lt;td&gt;20 000&lt;/td&gt; &lt;td&gt;20 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;80 000&lt;/td&gt; &lt;td align="center"&gt;80 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;lieve&lt;/td&gt; &lt;td align="center"&gt;lieve&lt;/td&gt;
&lt;td style="text-align: center;"&gt;15 000&lt;/td&gt; &lt;td align="center"&gt;15 000&lt;/td&gt;
&lt;td style="text-align: right;"&gt;13492&lt;/td&gt; &lt;td align="right"&gt;13492&lt;/td&gt;
&lt;/tr&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;tr&gt;
&lt;td&gt;20 000&lt;/td&gt; &lt;td&gt;20 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;120 000&lt;/td&gt; &lt;td align="center"&gt;120 000&lt;/td&gt;
&lt;td style="text-align: center;"&gt;notevole&lt;/td&gt; &lt;td align="center"&gt;notevole&lt;/td&gt;
&lt;td style="text-align: center;"&gt;...&lt;/td&gt; &lt;td align="center"&gt;...&lt;/td&gt;
&lt;td style="text-align: right;"&gt;10988&lt;/td&gt; &lt;td align="right"&gt;10988&lt;/td&gt;
&lt;/tr&gt; &lt;/tr&gt;
&lt;/tbody&gt; &lt;/tbody&gt;
&lt;/table&gt; &lt;/table&gt;
@ -220,36 +225,38 @@ Ci sono varie funzioni che stimano l'errore e permettono di correggere i pesi o
&lt;p&gt;Ora, come possiamo immaginare, il prezzo di un'auto ha molti fattori che si aggiungono a quelli elencati nell'esempio. &lt;p&gt;Ora, come possiamo immaginare, il prezzo di un'auto ha molti fattori che si aggiungono a quelli elencati nell'esempio.
Non solo, ma molti problemi non hanno una soluzione lineare, ovvero una soluzione che si può semplicemente esprimere attraverso una funzione che aggiunge e moltiplica i valori una sola volta.&lt;/p&gt; Non solo, ma molti problemi non hanno una soluzione lineare, ovvero una soluzione che si può semplicemente esprimere attraverso una funzione che aggiunge e moltiplica i valori una sola volta.&lt;/p&gt;
&lt;p&gt;Possiamo arricchire l'esempio dell'automobile immaginando di avere più set di pesi e di ripetere il procedimento più volte:&lt;/p&gt; &lt;p&gt;Possiamo arricchire l'esempio dell'automobile immaginando di avere più set di pesi e di ripetere il procedimento più volte:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="c"&gt;|&lt;/span&gt;&lt;span class="nb"&gt;---------------------------------------------------&lt;/span&gt;&lt;span class="c"&gt;|&lt;/span&gt; &lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;|---------------------------------------------------|
&lt;span class="c"&gt;| PREZZO_ORIG * peso A1 &lt;/span&gt;&lt;span class="nb"&gt;-----&lt;/span&gt;&lt;span class="nv"&gt;&amp;gt;&lt;/span&gt;&lt;span class="c"&gt; |&lt;/span&gt; | PREZZO_ORIG * peso A1 -----&amp;gt; |
&lt;span class="c"&gt;| KM_PERCORSI * peso B1 &lt;/span&gt;&lt;span class="nb"&gt;-----&lt;/span&gt;&lt;span class="nv"&gt;&amp;gt;&lt;/span&gt;&lt;span class="c"&gt; |&lt;/span&gt; | KM_PERCORSI * peso B1 -----&amp;gt; |
&lt;span class="c"&gt;| STATO_USURA * peso C1 &lt;/span&gt;&lt;span class="nb"&gt;-----&lt;/span&gt;&lt;span class="nv"&gt;&amp;gt;&lt;/span&gt;&lt;span class="c"&gt; |&lt;/span&gt; | STATO_USURA * peso C1 -----&amp;gt; |
&lt;span class="c"&gt;| PREZZO FINALE STIMATO 1|&lt;/span&gt; | PREZZO FINALE STIMATO 1|
&lt;span class="c"&gt;|&lt;/span&gt;&lt;span class="nb"&gt;---------------------------------------------------&lt;/span&gt;&lt;span class="c"&gt;|&lt;/span&gt; |---------------------------------------------------|
&lt;span class="c"&gt;| &lt;/span&gt;&lt;span class="nb"&gt;--------------------------------------------------&lt;/span&gt;&lt;span class="c"&gt;|&lt;/span&gt; | --------------------------------------------------|
&lt;span class="c"&gt;| PREZZO_ORIG * peso A2 &lt;/span&gt;&lt;span class="nb"&gt;-----&lt;/span&gt;&lt;span class="nv"&gt;&amp;gt;&lt;/span&gt;&lt;span class="c"&gt; |&lt;/span&gt; | PREZZO_ORIG * peso A2 -----&amp;gt; |
&lt;span class="c"&gt;| KM_PERCORSI * peso B2 &lt;/span&gt;&lt;span class="nb"&gt;-----&lt;/span&gt;&lt;span class="nv"&gt;&amp;gt;&lt;/span&gt;&lt;span class="c"&gt; |&lt;/span&gt; | KM_PERCORSI * peso B2 -----&amp;gt; |
&lt;span class="c"&gt;| STATO_USURA * peso C2 &lt;/span&gt;&lt;span class="nb"&gt;-----&lt;/span&gt;&lt;span class="nv"&gt;&amp;gt;&lt;/span&gt;&lt;span class="c"&gt; |&lt;/span&gt; | STATO_USURA * peso C2 -----&amp;gt; |
&lt;span class="c"&gt;| PREZZO FINALE STIMATO 2|&lt;/span&gt; | PREZZO FINALE STIMATO 2|
&lt;span class="c"&gt;|&lt;/span&gt;&lt;span class="nb"&gt;---------------------------------------------------&lt;/span&gt;&lt;span class="c"&gt;|&lt;/span&gt; |---------------------------------------------------|
| --------------------------------------------------|
| PREZZO_ORIG * peso A3 -----&amp;gt; |
| KM_PERCORSI * peso B3 -----&amp;gt; |
| STATO_USURA * peso C3 -----&amp;gt; |
| PREZZO FINALE STIMATO 3|
|---------------------------------------------------|
&lt;/pre&gt;
&lt;span class="c"&gt;| &lt;/span&gt;&lt;span class="nb"&gt;--------------------------------------------------&lt;/span&gt;&lt;span class="c"&gt;|&lt;/span&gt;
&lt;span class="c"&gt;| PREZZO_ORIG * peso A3 &lt;/span&gt;&lt;span class="nb"&gt;-----&lt;/span&gt;&lt;span class="nv"&gt;&amp;gt;&lt;/span&gt;&lt;span class="c"&gt; |&lt;/span&gt;
&lt;span class="c"&gt;| KM_PERCORSI * peso B3 &lt;/span&gt;&lt;span class="nb"&gt;-----&lt;/span&gt;&lt;span class="nv"&gt;&amp;gt;&lt;/span&gt;&lt;span class="c"&gt; |&lt;/span&gt;
&lt;span class="c"&gt;| STATO_USURA * peso C3 &lt;/span&gt;&lt;span class="nb"&gt;-----&lt;/span&gt;&lt;span class="nv"&gt;&amp;gt;&lt;/span&gt;&lt;span class="c"&gt; |&lt;/span&gt;
&lt;span class="c"&gt;| PREZZO FINALE STIMATO 3|&lt;/span&gt;
&lt;span class="c"&gt;|&lt;/span&gt;&lt;span class="nb"&gt;---------------------------------------------------&lt;/span&gt;&lt;span class="c"&gt;|&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;E ora immaginiamo di combinare ogni PREZZO FINALE STIMATO in un'ultimo risultato:&lt;/p&gt; &lt;p&gt;E ora immaginiamo di combinare ogni PREZZO FINALE STIMATO in un'ultimo risultato:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="c"&gt;| &lt;/span&gt;&lt;span class="nb"&gt;--------------------------------------------------&lt;/span&gt;&lt;span class="c"&gt;|&lt;/span&gt; &lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;| --------------------------------------------------|
&lt;span class="c"&gt;| PREZZO_1 * peso X &lt;/span&gt;&lt;span class="nb"&gt;-----&lt;/span&gt;&lt;span class="nv"&gt;&amp;gt;&lt;/span&gt;&lt;span class="c"&gt; |&lt;/span&gt; | PREZZO_1 * peso X -----&amp;gt; |
&lt;span class="c"&gt;| PREZZO_2 * peso Y &lt;/span&gt;&lt;span class="nb"&gt;-----&lt;/span&gt;&lt;span class="nv"&gt;&amp;gt;&lt;/span&gt;&lt;span class="c"&gt; |&lt;/span&gt; | PREZZO_2 * peso Y -----&amp;gt; |
&lt;span class="c"&gt;| PREZZO_3 * peso Z &lt;/span&gt;&lt;span class="nb"&gt;-----&lt;/span&gt;&lt;span class="nv"&gt;&amp;gt;&lt;/span&gt;&lt;span class="c"&gt; |&lt;/span&gt; | PREZZO_3 * peso Z -----&amp;gt; |
&lt;span class="c"&gt;| PREZZO FINALE DEF |&lt;/span&gt; | PREZZO FINALE DEF |
&lt;span class="c"&gt;|&lt;/span&gt;&lt;span class="nb"&gt;---------------------------------------------------&lt;/span&gt;&lt;span class="c"&gt;|&lt;/span&gt; |---------------------------------------------------|
&lt;/pre&gt;&lt;/div&gt; &lt;/pre&gt;
&lt;p&gt;Questa é, seppur molto basica, una rete neurale. &lt;p&gt;Questa é, seppur molto basica, una rete neurale.
Proviamo a visualizzarla in un'immagine dove i box arancioni sono i nodi di input e i rossi sono i nodi "nascosti" e temporanei.&lt;/p&gt; Proviamo a visualizzarla in un'immagine dove i box arancioni sono i nodi di input e i rossi sono i nodi "nascosti" e temporanei.&lt;/p&gt;
@ -263,4 +270,4 @@ Proviamo a visualizzarla in un'immagine dove i box arancioni sono i nodi di inpu
&lt;p&gt;le catene: i collegamenti fra neuroni che permettono di valutare il prezzo più volte.&lt;/p&gt; &lt;p&gt;le catene: i collegamenti fra neuroni che permettono di valutare il prezzo più volte.&lt;/p&gt;
&lt;/li&gt; &lt;/li&gt;
&lt;/ul&gt; &lt;/ul&gt;
&lt;p&gt;Nel prossimo &lt;a href="francescomecca.eu/pescewanda/2016/11/11/machine-learning-PARTE2"&gt;post&lt;/a&gt; cercherò di approfondire il concetto di rete neurale con degli esempi di applicazioni concrete.&lt;/p&gt;</description><category>AI</category><category>algoritmi genetici</category><category>Genetic algorithm</category><category>Neural networks</category><category>PesceWanda</category><category>programming</category><category>reti neurali</category><guid>francescomecca.eu/blog/2016/11/10/machine-learning-intro/</guid><pubDate>Thu, 10 Nov 2016 00:00:00 GMT</pubDate></item></channel></rss> &lt;p&gt;Nel prossimo &lt;a href="francescomecca.eu/pescewanda/2016/11/11/machine-learning-PARTE2"&gt;post&lt;/a&gt; cercherò di approfondire il concetto di rete neurale con degli esempi di applicazioni concrete.&lt;/p&gt;&lt;/div&gt;</description><category>AI</category><category>algoritmi genetici</category><category>Genetic algorithm</category><category>Neural networks</category><category>PesceWanda</category><category>programming</category><category>reti neurali</category><guid>francescomecca.eu/blog/2016/11/10/machine-learning-intro/</guid><pubDate>Thu, 10 Nov 2016 00:00:00 GMT</pubDate></item></channel></rss>

View file

@ -27,7 +27,7 @@
<a class="btn" href="../../rss.xml">RSS</a> <a class="btn" href="../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><article class="tagpage"><header><h1>Posts about algoritmi genetici</h1> </section><section class="main-content"><article class="tagpage"><header><h1>Posts about algoritmi genetici</h1>
<div class="metadata"> <div class="metadata">

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Caught in the Net (Posts about anonimato)</title><link>francescomecca.eu</link><description></description><atom:link href="francescomecca.eu/categories/anonimato.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2024 &lt;a href="mailto:francescomecca.eu"&gt;Francesco Mecca&lt;/a&gt; </copyright><lastBuildDate>Wed, 28 Feb 2024 09:29:26 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Non abbiamo nulla da nascondere</title><link>francescomecca.eu/blog/2015/4/15/non-abbiamo-nulla-da-nascondere/</link><dc:creator>Francesco Mecca</dc:creator><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt; <?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Caught in the Net (Posts about anonimato)</title><link>francescomecca.eu</link><description></description><atom:link href="francescomecca.eu/categories/anonimato.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2020 &lt;a href="mailto:francescomecca.eu"&gt;Francesco Mecca&lt;/a&gt; </copyright><lastBuildDate>Wed, 29 Jan 2020 10:04:34 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Non abbiamo nulla da nascondere</title><link>francescomecca.eu/blog/2015/4/15/non-abbiamo-nulla-da-nascondere/</link><dc:creator>Francesco Mecca</dc:creator><description>&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt; &lt;/div&gt;
&lt;table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center"&gt; &lt;table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center"&gt;
@ -80,7 +80,7 @@ Estimates of the current size of the body of federal criminal law vary. It has b
&lt;div style="text-align: right;"&gt; &lt;div style="text-align: right;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Francesco Mecca &lt;/span&gt; &lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Francesco Mecca &lt;/span&gt;
&lt;/div&gt;&lt;/div&gt;</description><category>anonimato</category><category>discrezione</category><category>nothing to hide</category><category>PesceWanda</category><category>privacy</category><guid>francescomecca.eu/blog/2015/4/15/non-abbiamo-nulla-da-nascondere/</guid><pubDate>Wed, 15 Apr 2015 10:54:00 GMT</pubDate></item><item><title>Facciamo luce sui profili ombra</title><link>francescomecca.eu/blog/2015/4/13/facciamo-luce-sui-profili-ombra/</link><dc:creator>Francesco Mecca</dc:creator><description>&lt;p&gt;La BPC, Belgian Privacy Commision, il 31 marzo ha pubblicato un &lt;a href="http://www.law.kuleuven.be/icri/en/news/item/facebooks-revised-policies-and-terms-v1-2.pdf"&gt;documento&lt;/a&gt; investigativo sulle policy di Facebook e da questa indagine e` emersa una violazione delle leggi europee sul &lt;a href="http://rt.com/news/245769-facebook-spies-eu-laws/"&gt;tracciamento online&lt;/a&gt;.&lt;/p&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description><category>anonimato</category><category>discrezione</category><category>nothing to hide</category><category>PesceWanda</category><category>privacy</category><guid>francescomecca.eu/blog/2015/4/15/non-abbiamo-nulla-da-nascondere/</guid><pubDate>Wed, 15 Apr 2015 10:54:00 GMT</pubDate></item><item><title>Facciamo luce sui profili ombra</title><link>francescomecca.eu/blog/2015/4/13/facciamo-luce-sui-profili-ombra/</link><dc:creator>Francesco Mecca</dc:creator><description>&lt;div&gt;&lt;p&gt;La BPC, Belgian Privacy Commision, il 31 marzo ha pubblicato un &lt;a href="http://www.law.kuleuven.be/icri/en/news/item/facebooks-revised-policies-and-terms-v1-2.pdf"&gt;documento&lt;/a&gt; investigativo sulle policy di Facebook e da questa indagine e` emersa una violazione delle leggi europee sul &lt;a href="http://rt.com/news/245769-facebook-spies-eu-laws/"&gt;tracciamento online&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Ogni volta che un utente non loggato, o perfino senza account sul social network, visita una pagina che incorpora il bottone “like” o altri plugin sociali riceve un piccolo file di testo chiamato &lt;a href="https://www.facebook.com/help/cookies"&gt;cookie&lt;/a&gt; che incorpora una miriade di informazioni e la propria attivita` online in toto. Anche se si ha scelto per lopt out un particolare cookie chiamato &lt;a href="http://www.zdnet.com/article/facebook-tracking-cookie-returns-according-to-hacker/"&gt;datr&lt;/a&gt; contenente un ID unico viene scaricato e mantenuto nella cache del browser identificando il computer dellutente in maniera indistinguibile.&lt;br&gt; &lt;p&gt;Ogni volta che un utente non loggato, o perfino senza account sul social network, visita una pagina che incorpora il bottone “like” o altri plugin sociali riceve un piccolo file di testo chiamato &lt;a href="https://www.facebook.com/help/cookies"&gt;cookie&lt;/a&gt; che incorpora una miriade di informazioni e la propria attivita` online in toto. Anche se si ha scelto per lopt out un particolare cookie chiamato &lt;a href="http://www.zdnet.com/article/facebook-tracking-cookie-returns-according-to-hacker/"&gt;datr&lt;/a&gt; contenente un ID unico viene scaricato e mantenuto nella cache del browser identificando il computer dellutente in maniera indistinguibile.&lt;br&gt;
Per quale motivo Facebook usa questo sistema di tracciamento?&lt;/p&gt; Per quale motivo Facebook usa questo sistema di tracciamento?&lt;/p&gt;
&lt;div class="separator" style="clear:both;text-align:center;"&gt; &lt;div class="separator" style="clear:both;text-align:center;"&gt;
@ -120,7 +120,7 @@ In questo modo ed attraverso i cookie Facebook riesce a riunire la maggior parte
&lt;div style="text-align:right;"&gt; &lt;div style="text-align:right;"&gt;
Francesco Mecca Francesco Mecca
&lt;/div&gt;</description><category>anonimato</category><category>bpc</category><category>cookie</category><category>Facebook</category><category>PesceWanda</category><category>privacy</category><category>tracciamento</category><category>tracking</category><category>Traduzione</category><guid>francescomecca.eu/blog/2015/4/13/facciamo-luce-sui-profili-ombra/</guid><pubDate>Mon, 13 Apr 2015 01:25:00 GMT</pubDate></item><item><title>Il Big Bang dei Big Data</title><link>francescomecca.eu/blog/2015/4/5/il-big-bang-dei-big-data/</link><dc:creator>Francesco Mecca</dc:creator><description>&lt;p&gt;“Perche` sto puntando tutto sul deep learning? Perche sara` il nuovo Big Bang”&lt;/p&gt; &lt;/div&gt;&lt;/div&gt;</description><category>anonimato</category><category>bpc</category><category>cookie</category><category>Facebook</category><category>PesceWanda</category><category>privacy</category><category>tracciamento</category><category>tracking</category><category>Traduzione</category><guid>francescomecca.eu/blog/2015/4/13/facciamo-luce-sui-profili-ombra/</guid><pubDate>Mon, 13 Apr 2015 01:25:00 GMT</pubDate></item><item><title>Il Big Bang dei Big Data</title><link>francescomecca.eu/blog/2015/4/5/il-big-bang-dei-big-data/</link><dc:creator>Francesco Mecca</dc:creator><description>&lt;div&gt;&lt;p&gt;“Perche` sto puntando tutto sul deep learning? Perche sara` il nuovo Big Bang”&lt;/p&gt;
&lt;p&gt;Cosi` ha parlato il CEO di Nvidia Jensen Huang il 3 marzo scorso alla sua &lt;a href="http://www.gputechconf.com/"&gt;GTC 2015&lt;/a&gt;.&lt;br&gt; &lt;p&gt;Cosi` ha parlato il CEO di Nvidia Jensen Huang il 3 marzo scorso alla sua &lt;a href="http://www.gputechconf.com/"&gt;GTC 2015&lt;/a&gt;.&lt;br&gt;
Lattenzione di Huang si e` concentrata sul deep learning e come le deep neural networks negli ultimi anni abbiano compiuto progressi impressionanti tali da superare il cervello umano nei test di analisi immagine.&lt;/p&gt; Lattenzione di Huang si e` concentrata sul deep learning e come le deep neural networks negli ultimi anni abbiano compiuto progressi impressionanti tali da superare il cervello umano nei test di analisi immagine.&lt;/p&gt;
&lt;p&gt;Molta della ricerca negli ultimi anni, in particolare dal 2012 ad oggi, si sta concentrando sul programmare algoritmi tali da consentire alle intelligenze artificiali di processare dati in maniera gerarchica e organizzata tramite lapprendimento progressivo dei livelli di rappresentazione.&lt;br&gt; &lt;p&gt;Molta della ricerca negli ultimi anni, in particolare dal 2012 ad oggi, si sta concentrando sul programmare algoritmi tali da consentire alle intelligenze artificiali di processare dati in maniera gerarchica e organizzata tramite lapprendimento progressivo dei livelli di rappresentazione.&lt;br&gt;
@ -169,4 +169,4 @@ I dati sono la risposta economica a: “Iscriviti, e gratis e lo sarà sempre
&lt;p&gt;La via di uscita sembra essere una sola, anche se poco desiderabile: &lt;a href="http://en.wikipedia.org/wiki/Opt-out"&gt;lopt out&lt;/a&gt; ovvero la rinuncia consapevole da parte dellutente al servizio.&lt;/p&gt; &lt;p&gt;La via di uscita sembra essere una sola, anche se poco desiderabile: &lt;a href="http://en.wikipedia.org/wiki/Opt-out"&gt;lopt out&lt;/a&gt; ovvero la rinuncia consapevole da parte dellutente al servizio.&lt;/p&gt;
&lt;div style="text-align:right;"&gt; &lt;div style="text-align:right;"&gt;
Francesco Mecca Francesco Mecca
&lt;/div&gt;</description><category>anonimato</category><category>Big data</category><category>Deep learning</category><category>huang</category><category>PesceWanda</category><category>privacy</category><guid>francescomecca.eu/blog/2015/4/5/il-big-bang-dei-big-data/</guid><pubDate>Sun, 05 Apr 2015 22:44:00 GMT</pubDate></item></channel></rss> &lt;/div&gt;&lt;/div&gt;</description><category>anonimato</category><category>Big data</category><category>Deep learning</category><category>huang</category><category>PesceWanda</category><category>privacy</category><guid>francescomecca.eu/blog/2015/4/5/il-big-bang-dei-big-data/</guid><pubDate>Sun, 05 Apr 2015 22:44:00 GMT</pubDate></item></channel></rss>

View file

@ -27,7 +27,7 @@
<a class="btn" href="../../rss.xml">RSS</a> <a class="btn" href="../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><article class="tagpage"><header><h1>Posts about anonimato</h1> </section><section class="main-content"><article class="tagpage"><header><h1>Posts about anonimato</h1>
<div class="metadata"> <div class="metadata">

View file

@ -1,3 +1,3 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Caught in the Net (Posts about apple)</title><link>francescomecca.eu</link><description></description><atom:link href="francescomecca.eu/categories/apple.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2024 &lt;a href="mailto:francescomecca.eu"&gt;Francesco Mecca&lt;/a&gt; </copyright><lastBuildDate>Wed, 28 Feb 2024 09:29:26 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Late Stage Capitalism meets FOSS</title><link>francescomecca.eu/blog/2017/5/7/latestage_handbrake/</link><dc:creator>Francesco Mecca</dc:creator><description>&lt;p&gt;&lt;img alt="brainwashing" src="francescomecca.eu/wp-content/uploads/2017/hn_handbrake_hack.jpg"&gt;&lt;/p&gt; <?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Caught in the Net (Posts about apple)</title><link>francescomecca.eu</link><description></description><atom:link href="francescomecca.eu/categories/apple.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2020 &lt;a href="mailto:francescomecca.eu"&gt;Francesco Mecca&lt;/a&gt; </copyright><lastBuildDate>Wed, 29 Jan 2020 10:04:36 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Late Stage Capitalism meets FOSS</title><link>francescomecca.eu/blog/2017/5/7/latestage_handbrake/</link><dc:creator>Francesco Mecca</dc:creator><description>&lt;div&gt;&lt;p&gt;&lt;img alt="brainwashing" src="francescomecca.eu/wp-content/uploads/2017/hn_handbrake_hack.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://archive.is/XA3rj"&gt;source&lt;/a&gt;&lt;/p&gt;</description><category>apple</category><category>hacker news</category><category>handbrake</category><category>PesceWanda</category><category>propaganda</category><category>vendor lockin</category><guid>francescomecca.eu/blog/2017/5/7/latestage_handbrake/</guid><pubDate>Sun, 07 May 2017 00:00:00 GMT</pubDate></item></channel></rss> &lt;p&gt;&lt;a href="http://archive.is/XA3rj"&gt;source&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</description><category>apple</category><category>hacker news</category><category>handbrake</category><category>PesceWanda</category><category>propaganda</category><category>vendor lockin</category><guid>francescomecca.eu/blog/2017/5/7/latestage_handbrake/</guid><pubDate>Sun, 07 May 2017 00:00:00 GMT</pubDate></item></channel></rss>

View file

@ -27,7 +27,7 @@
<a class="btn" href="../../rss.xml">RSS</a> <a class="btn" href="../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><article class="tagpage"><header><h1>Posts about apple</h1> </section><section class="main-content"><article class="tagpage"><header><h1>Posts about apple</h1>
<div class="metadata"> <div class="metadata">

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Caught in the Net (Posts about archive.org)</title><link>francescomecca.eu</link><description></description><atom:link href="francescomecca.eu/categories/archiveorg.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2024 &lt;a href="mailto:francescomecca.eu"&gt;Francesco Mecca&lt;/a&gt; </copyright><lastBuildDate>Wed, 28 Feb 2024 09:29:26 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Script per il bulk download da Archive.org</title><link>francescomecca.eu/blog/2015/6/30/script-per-il-bulk-download-da-archive-org/</link><dc:creator>Francesco Mecca</dc:creator><description>&lt;p&gt;In questi giorni mi e` capitato di dover scaricare varie collezioni da &lt;a href="https://en.wikipedia.org/wiki/Internet_Archive"&gt;archive.org&lt;/a&gt;, una libreria digitale multimediale la cui missione e` laccesso universale a tutta la conoscenza.&lt;/p&gt; <?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Caught in the Net (Posts about archive.org)</title><link>francescomecca.eu</link><description></description><atom:link href="francescomecca.eu/categories/archiveorg.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2020 &lt;a href="mailto:francescomecca.eu"&gt;Francesco Mecca&lt;/a&gt; </copyright><lastBuildDate>Wed, 29 Jan 2020 10:04:36 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Script per il bulk download da Archive.org</title><link>francescomecca.eu/blog/2015/6/30/script-per-il-bulk-download-da-archive-org/</link><dc:creator>Francesco Mecca</dc:creator><description>&lt;div&gt;&lt;p&gt;In questi giorni mi e` capitato di dover scaricare varie collezioni da &lt;a href="https://en.wikipedia.org/wiki/Internet_Archive"&gt;archive.org&lt;/a&gt;, una libreria digitale multimediale la cui missione e` laccesso universale a tutta la conoscenza.&lt;/p&gt;
&lt;p&gt;Principalmente lo uso per scaricare tantissime registrazioni live di vari concerti registrati a mio avviso in maniera impeccabile.&lt;/p&gt; &lt;p&gt;Principalmente lo uso per scaricare tantissime registrazioni live di vari concerti registrati a mio avviso in maniera impeccabile.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt; &lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Questo e` lo script che uso, modificato da &lt;a href="https://github.com/ghalfacree/bash-scripts/blob/master/archivedownload.sh"&gt;questo&lt;/a&gt; script: e` scritto in bash e funziona su tutte le distribuzioni sulle quali e` installato wget, tail e sed.&lt;/p&gt; &lt;p&gt;Questo e` lo script che uso, modificato da &lt;a href="https://github.com/ghalfacree/bash-scripts/blob/master/archivedownload.sh"&gt;questo&lt;/a&gt; script: e` scritto in bash e funziona su tutte le distribuzioni sulle quali e` installato wget, tail e sed.&lt;/p&gt;
@ -33,4 +33,4 @@ rm identifiers.txt processedidentifiers.txt
echo Complete. echo Complete.
&lt;/pre&gt; &lt;/pre&gt;
&lt;p&gt;Francesco Mecca &lt;/p&gt;</description><category>archive.org</category><category>bulk download archive.org</category><category>PesceWanda</category><category>script</category><guid>francescomecca.eu/blog/2015/6/30/script-per-il-bulk-download-da-archive-org/</guid><pubDate>Tue, 30 Jun 2015 13:39:00 GMT</pubDate></item></channel></rss> &lt;p&gt;Francesco Mecca &lt;/p&gt;&lt;/div&gt;</description><category>archive.org</category><category>bulk download archive.org</category><category>PesceWanda</category><category>script</category><guid>francescomecca.eu/blog/2015/6/30/script-per-il-bulk-download-da-archive-org/</guid><pubDate>Tue, 30 Jun 2015 13:39:00 GMT</pubDate></item></channel></rss>

View file

@ -27,7 +27,7 @@
<a class="btn" href="../../rss.xml">RSS</a> <a class="btn" href="../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><article class="tagpage"><header><h1>Posts about archive.org</h1> </section><section class="main-content"><article class="tagpage"><header><h1>Posts about archive.org</h1>
<div class="metadata"> <div class="metadata">

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Caught in the Net (Posts about arduino uno)</title><link>francescomecca.eu</link><description></description><atom:link href="francescomecca.eu/categories/arduino-uno.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2024 &lt;a href="mailto:francescomecca.eu"&gt;Francesco Mecca&lt;/a&gt; </copyright><lastBuildDate>Wed, 28 Feb 2024 09:29:26 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Arduino Uno as HID keyboard</title><link>francescomecca.eu/blog/2016/7/5/arduino_keyboard/</link><dc:creator>Francesco Mecca</dc:creator><description>&lt;p&gt;Turin is the hometown of Arduino. I have been at the &lt;a href="http://fablabtorino.org/"&gt;fablab&lt;/a&gt; multiple times but I had to come all the way to America to get my hands on a simple Arduino Uno.&lt;/p&gt; <?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Caught in the Net (Posts about arduino uno)</title><link>francescomecca.eu</link><description></description><atom:link href="francescomecca.eu/categories/arduino-uno.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2020 &lt;a href="mailto:francescomecca.eu"&gt;Francesco Mecca&lt;/a&gt; </copyright><lastBuildDate>Wed, 29 Jan 2020 10:04:35 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Arduino Uno as HID keyboard</title><link>francescomecca.eu/blog/2016/7/5/arduino_keyboard/</link><dc:creator>Francesco Mecca</dc:creator><description>&lt;div&gt;&lt;p&gt;Turin is the hometown of Arduino. I have been at the &lt;a href="http://fablabtorino.org/"&gt;fablab&lt;/a&gt; multiple times but I had to come all the way to America to get my hands on a simple Arduino Uno.&lt;/p&gt;
&lt;p&gt;For 60$ I bought a cheap (but still good!) mechanical keyboard by Qisan, a clone of the Arduino Uno and a USB host shield.&lt;/p&gt; &lt;p&gt;For 60$ I bought a cheap (but still good!) mechanical keyboard by Qisan, a clone of the Arduino Uno and a USB host shield.&lt;/p&gt;
&lt;p&gt;Given that is 3 years since I have been using a dvorak layout and it's a pain to change layout on every machine that you have to use. &lt;p&gt;Given that is 3 years since I have been using a dvorak layout and it's a pain to change layout on every machine that you have to use.
You can imagine that given this three pieces of hardware together I put together an hardware key mapper for the keyboard.&lt;/p&gt; You can imagine that given this three pieces of hardware together I put together an hardware key mapper for the keyboard.&lt;/p&gt;
@ -37,11 +37,12 @@ Every time you want to flash a new firmware the Arduino must be put in DFU mode
To do that simply create a shortcircuit using a small metal wire on the two pins near the reset button and a led will blink. To do that simply create a shortcircuit using a small metal wire on the two pins near the reset button and a led will blink.
This &lt;a href="https://www.youtube.com/watch?v=E8XyRwXQr8Q"&gt;video&lt;/a&gt; shows the method briefly (no real need for a jumper). This &lt;a href="https://www.youtube.com/watch?v=E8XyRwXQr8Q"&gt;video&lt;/a&gt; shows the method briefly (no real need for a jumper).
The commands are the following and there is no risk to brick the Uno:&lt;/p&gt; The commands are the following and there is no risk to brick the Uno:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;dfu-programmer atmega16u2 erase &lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;dfu-programmer atmega16u2 erase
dfu-programmer atmega16u2 flash Arduino-keyboard-0.2.hex dfu-programmer atmega16u2 flash Arduino-keyboard-0.2.hex
dfu-programmer atmega16u2 reset dfu-programmer atmega16u2 reset
&lt;/pre&gt;&lt;/div&gt; &lt;/pre&gt;
&lt;p&gt;After each flashing the device needs to be disconnected once. Of course you can flash the original firmware back. It is included in my repo or on the official ones.&lt;/p&gt; &lt;p&gt;After each flashing the device needs to be disconnected once. Of course you can flash the original firmware back. It is included in my repo or on the official ones.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Arduino and the shield" src="francescomecca.eu/wp-content/uploads/2016/IMG_20160706_011143.jpg"&gt;&lt;/p&gt; &lt;p&gt;&lt;img alt="Arduino and the shield" src="francescomecca.eu/wp-content/uploads/2016/IMG_20160706_011143.jpg"&gt;&lt;/p&gt;
&lt;p&gt;That's it, as you can see is not difficult at all. The worst part is gathering the various info that are left dormant in blogs or forums.&lt;/p&gt;</description><category>Arduino</category><category>arduino uno</category><category>HID arduino</category><category>mechanical keyboard</category><category>PesceWanda</category><category>programming</category><guid>francescomecca.eu/blog/2016/7/5/arduino_keyboard/</guid><pubDate>Tue, 05 Jul 2016 00:00:00 GMT</pubDate></item></channel></rss> &lt;p&gt;That's it, as you can see is not difficult at all. The worst part is gathering the various info that are left dormant in blogs or forums.&lt;/p&gt;&lt;/div&gt;</description><category>Arduino</category><category>arduino uno</category><category>HID arduino</category><category>mechanical keyboard</category><category>PesceWanda</category><category>programming</category><guid>francescomecca.eu/blog/2016/7/5/arduino_keyboard/</guid><pubDate>Tue, 05 Jul 2016 00:00:00 GMT</pubDate></item></channel></rss>

View file

@ -27,7 +27,7 @@
<a class="btn" href="../../rss.xml">RSS</a> <a class="btn" href="../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><article class="tagpage"><header><h1>Posts about arduino uno</h1> </section><section class="main-content"><article class="tagpage"><header><h1>Posts about arduino uno</h1>
<div class="metadata"> <div class="metadata">

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Caught in the Net (Posts about Arduino)</title><link>francescomecca.eu</link><description></description><atom:link href="francescomecca.eu/categories/arduino.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2024 &lt;a href="mailto:francescomecca.eu"&gt;Francesco Mecca&lt;/a&gt; </copyright><lastBuildDate>Wed, 28 Feb 2024 09:29:26 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Arduino Uno as HID keyboard</title><link>francescomecca.eu/blog/2016/7/5/arduino_keyboard/</link><dc:creator>Francesco Mecca</dc:creator><description>&lt;p&gt;Turin is the hometown of Arduino. I have been at the &lt;a href="http://fablabtorino.org/"&gt;fablab&lt;/a&gt; multiple times but I had to come all the way to America to get my hands on a simple Arduino Uno.&lt;/p&gt; <?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Caught in the Net (Posts about Arduino)</title><link>francescomecca.eu</link><description></description><atom:link href="francescomecca.eu/categories/arduino.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2020 &lt;a href="mailto:francescomecca.eu"&gt;Francesco Mecca&lt;/a&gt; </copyright><lastBuildDate>Wed, 29 Jan 2020 10:04:35 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Arduino Uno as HID keyboard</title><link>francescomecca.eu/blog/2016/7/5/arduino_keyboard/</link><dc:creator>Francesco Mecca</dc:creator><description>&lt;div&gt;&lt;p&gt;Turin is the hometown of Arduino. I have been at the &lt;a href="http://fablabtorino.org/"&gt;fablab&lt;/a&gt; multiple times but I had to come all the way to America to get my hands on a simple Arduino Uno.&lt;/p&gt;
&lt;p&gt;For 60$ I bought a cheap (but still good!) mechanical keyboard by Qisan, a clone of the Arduino Uno and a USB host shield.&lt;/p&gt; &lt;p&gt;For 60$ I bought a cheap (but still good!) mechanical keyboard by Qisan, a clone of the Arduino Uno and a USB host shield.&lt;/p&gt;
&lt;p&gt;Given that is 3 years since I have been using a dvorak layout and it's a pain to change layout on every machine that you have to use. &lt;p&gt;Given that is 3 years since I have been using a dvorak layout and it's a pain to change layout on every machine that you have to use.
You can imagine that given this three pieces of hardware together I put together an hardware key mapper for the keyboard.&lt;/p&gt; You can imagine that given this three pieces of hardware together I put together an hardware key mapper for the keyboard.&lt;/p&gt;
@ -37,11 +37,12 @@ Every time you want to flash a new firmware the Arduino must be put in DFU mode
To do that simply create a shortcircuit using a small metal wire on the two pins near the reset button and a led will blink. To do that simply create a shortcircuit using a small metal wire on the two pins near the reset button and a led will blink.
This &lt;a href="https://www.youtube.com/watch?v=E8XyRwXQr8Q"&gt;video&lt;/a&gt; shows the method briefly (no real need for a jumper). This &lt;a href="https://www.youtube.com/watch?v=E8XyRwXQr8Q"&gt;video&lt;/a&gt; shows the method briefly (no real need for a jumper).
The commands are the following and there is no risk to brick the Uno:&lt;/p&gt; The commands are the following and there is no risk to brick the Uno:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;dfu-programmer atmega16u2 erase &lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;dfu-programmer atmega16u2 erase
dfu-programmer atmega16u2 flash Arduino-keyboard-0.2.hex dfu-programmer atmega16u2 flash Arduino-keyboard-0.2.hex
dfu-programmer atmega16u2 reset dfu-programmer atmega16u2 reset
&lt;/pre&gt;&lt;/div&gt; &lt;/pre&gt;
&lt;p&gt;After each flashing the device needs to be disconnected once. Of course you can flash the original firmware back. It is included in my repo or on the official ones.&lt;/p&gt; &lt;p&gt;After each flashing the device needs to be disconnected once. Of course you can flash the original firmware back. It is included in my repo or on the official ones.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Arduino and the shield" src="francescomecca.eu/wp-content/uploads/2016/IMG_20160706_011143.jpg"&gt;&lt;/p&gt; &lt;p&gt;&lt;img alt="Arduino and the shield" src="francescomecca.eu/wp-content/uploads/2016/IMG_20160706_011143.jpg"&gt;&lt;/p&gt;
&lt;p&gt;That's it, as you can see is not difficult at all. The worst part is gathering the various info that are left dormant in blogs or forums.&lt;/p&gt;</description><category>Arduino</category><category>arduino uno</category><category>HID arduino</category><category>mechanical keyboard</category><category>PesceWanda</category><category>programming</category><guid>francescomecca.eu/blog/2016/7/5/arduino_keyboard/</guid><pubDate>Tue, 05 Jul 2016 00:00:00 GMT</pubDate></item></channel></rss> &lt;p&gt;That's it, as you can see is not difficult at all. The worst part is gathering the various info that are left dormant in blogs or forums.&lt;/p&gt;&lt;/div&gt;</description><category>Arduino</category><category>arduino uno</category><category>HID arduino</category><category>mechanical keyboard</category><category>PesceWanda</category><category>programming</category><guid>francescomecca.eu/blog/2016/7/5/arduino_keyboard/</guid><pubDate>Tue, 05 Jul 2016 00:00:00 GMT</pubDate></item></channel></rss>

View file

@ -27,7 +27,7 @@
<a class="btn" href="../../rss.xml">RSS</a> <a class="btn" href="../../rss.xml">RSS</a>
<a class="btn" href="http://francescomecca.eu/git/pesceWanda">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="https://github.com/FraMecca">Github</a>
<a class="btn" href="https://lezzo.org/git/public/Curriculum_vitae/raw/master/latex.dir/francesco_mecca_cv_eng.pdf">Curriculum</a> <a class="btn" href="https://francescomecca.eu/git/pesceWanda/Curriculum_vitae/raw/master/latex.dir/cv.pdf">Curriculum</a>
</section><section class="main-content"><article class="tagpage"><header><h1>Posts about Arduino</h1> </section><section class="main-content"><article class="tagpage"><header><h1>Posts about Arduino</h1>
<div class="metadata"> <div class="metadata">

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Caught in the Net (Posts about avvocato 2.0)</title><link>francescomecca.eu</link><description></description><atom:link href="francescomecca.eu/categories/avvocato-20.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2024 &lt;a href="mailto:francescomecca.eu"&gt;Francesco Mecca&lt;/a&gt; </copyright><lastBuildDate>Wed, 28 Feb 2024 09:29:26 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>La Rivoluzione Digitale nella Professione dell&amp;#8217;Avvocato</title><link>francescomecca.eu/blog/2015/7/7/la-rivoluzione-digitale-nella-professione-dellavvocato/</link><dc:creator>Francesco Mecca</dc:creator><description>&lt;h5&gt;&lt;span style="font-size: large;"&gt;Premessa&lt;/span&gt;&lt;/h5&gt; <?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Caught in the Net (Posts about avvocato 2.0)</title><link>francescomecca.eu</link><description></description><atom:link href="francescomecca.eu/categories/avvocato-20.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2020 &lt;a href="mailto:francescomecca.eu"&gt;Francesco Mecca&lt;/a&gt; </copyright><lastBuildDate>Wed, 29 Jan 2020 10:04:36 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>La Rivoluzione Digitale nella Professione dell&amp;#8217;Avvocato</title><link>francescomecca.eu/blog/2015/7/7/la-rivoluzione-digitale-nella-professione-dellavvocato/</link><dc:creator>Francesco Mecca</dc:creator><description>&lt;div&gt;&lt;h5&gt;&lt;span style="font-size: large;"&gt;Premessa&lt;/span&gt;&lt;/h5&gt;
&lt;p&gt;Con lavvento dellinformatizzazione e` notevolmente mutata la modalita` con cui lavvocato svolge la propria professione; sinteticamente si puo` arrivare ad affermare che al di la` della partecipazione alle udienze e il ricevimento dei clienti, tutta lattivita` si puo` svolgere con il computer nel proprio studio, senza alzarsi dalla poltrona.&lt;/p&gt; &lt;p&gt;Con lavvento dellinformatizzazione e` notevolmente mutata la modalita` con cui lavvocato svolge la propria professione; sinteticamente si puo` arrivare ad affermare che al di la` della partecipazione alle udienze e il ricevimento dei clienti, tutta lattivita` si puo` svolgere con il computer nel proprio studio, senza alzarsi dalla poltrona.&lt;/p&gt;
&lt;p&gt;Per quanto mi riguarda vorrei premettere che io sono un avvocato dipendente di un ente pubblico (lINAIL) e pertanto unico mio cliente e` lIstituto che io difendo sia in ambito giudiziario (cause legali) che extragiudiziario (composizione bonaria delle liti).&lt;/p&gt; &lt;p&gt;Per quanto mi riguarda vorrei premettere che io sono un avvocato dipendente di un ente pubblico (lINAIL) e pertanto unico mio cliente e` lIstituto che io difendo sia in ambito giudiziario (cause legali) che extragiudiziario (composizione bonaria delle liti).&lt;/p&gt;
&lt;p&gt;Lavvento dellinformatica ha modificato il modo di lavorare nella sua globalita`, vediamo pertanto le singole fasi dellattivita`.&lt;/p&gt; &lt;p&gt;Lavvento dellinformatica ha modificato il modo di lavorare nella sua globalita`, vediamo pertanto le singole fasi dellattivita`.&lt;/p&gt;
@ -55,4 +55,4 @@
Avvocatura Regionale INAIL delle Marche Avvocatura Regionale INAIL delle Marche
&lt;/div&gt; &lt;/div&gt;
&lt;p&gt;  &lt;/p&gt;</description><category>avvocato</category><category>avvocato 2.0</category><category>PesceWanda</category><category>processo telematico</category><category>rivoluzione digitale avvocato</category><guid>francescomecca.eu/blog/2015/7/7/la-rivoluzione-digitale-nella-professione-dellavvocato/</guid><pubDate>Tue, 07 Jul 2015 15:35:00 GMT</pubDate></item></channel></rss> &lt;p&gt;  &lt;/p&gt;&lt;/div&gt;</description><category>avvocato</category><category>avvocato 2.0</category><category>PesceWanda</category><category>processo telematico</category><category>rivoluzione digitale avvocato</category><guid>francescomecca.eu/blog/2015/7/7/la-rivoluzione-digitale-nella-professione-dellavvocato/</guid><pubDate>Tue, 07 Jul 2015 15:35:00 GMT</pubDate></item></channel></rss>

Some files were not shown because too many files have changed in this diff Show more