Compare commits
No commits in common. "6acba75cd5fdcae2f10aa83ef55c75d4a460a161" and "15b26397ffee567468a70e50a46e2730d14dfa30" have entirely different histories.
6acba75cd5
...
15b26397ff
415 changed files with 6521 additions and 13337 deletions
|
@ -26,7 +26,7 @@
|
|||
<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>
|
||||
<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>
|
||||
</header><ul class="postlist">
|
||||
<li>
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
<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>
|
||||
<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>
|
||||
</header><ul class="postlist">
|
||||
<li>
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
<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>
|
||||
<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>
|
||||
</header><ul class="postlist">
|
||||
<li>
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
<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>
|
||||
<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>
|
||||
</header><ul class="postlist">
|
||||
<li>
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
<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>
|
||||
<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>
|
||||
</header><ul class="postlist">
|
||||
<li>
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -26,22 +26,10 @@
|
|||
<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>
|
||||
<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>
|
||||
</header><ul class="postlist">
|
||||
<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>
|
||||
(1)
|
||||
</li>
|
||||
|
|
|
@ -26,28 +26,9 @@
|
|||
<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>
|
||||
<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>
|
||||
</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>
|
||||
<hr>
|
||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
2
output/assets/css/baguetteBox.min.css
vendored
2
output/assets/css/baguetteBox.min.css
vendored
|
@ -1,6 +1,6 @@
|
|||
/*!
|
||||
* baguetteBox.js
|
||||
* @author feimosi
|
||||
* @version 1.11.1
|
||||
* @version 1.11.0
|
||||
* @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)}}
|
|
@ -1,86 +1,71 @@
|
|||
/* code.css file generated by Nikola */
|
||||
pre { line-height: 125%; }
|
||||
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
|
||||
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
|
||||
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
|
||||
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
|
||||
pre.code .hll, .code .codetable .hll, .highlight pre .hll { background-color: #ffffcc }
|
||||
pre.code , .code .codetable , .highlight pre { background: #f8f8f8; }
|
||||
pre.code .c, .code .codetable .c, .highlight pre .c { color: #3D7B7B; font-style: italic } /* Comment */
|
||||
pre.code .err, .code .codetable .err, .highlight pre .err { border: 1px solid #FF0000 } /* Error */
|
||||
pre.code .k, .code .codetable .k, .highlight pre .k { color: #008000; font-weight: bold } /* Keyword */
|
||||
pre.code .o, .code .codetable .o, .highlight pre .o { color: #666666 } /* Operator */
|
||||
pre.code .ch, .code .codetable .ch, .highlight pre .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */
|
||||
pre.code .cm, .code .codetable .cm, .highlight pre .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */
|
||||
pre.code .cp, .code .codetable .cp, .highlight pre .cp { color: #9C6500 } /* Comment.Preproc */
|
||||
pre.code .cpf, .code .codetable .cpf, .highlight pre .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */
|
||||
pre.code .c1, .code .codetable .c1, .highlight pre .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */
|
||||
pre.code .cs, .code .codetable .cs, .highlight pre .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */
|
||||
pre.code .gd, .code .codetable .gd, .highlight pre .gd { color: #A00000 } /* Generic.Deleted */
|
||||
pre.code .ge, .code .codetable .ge, .highlight pre .ge { font-style: italic } /* Generic.Emph */
|
||||
pre.code .ges, .code .codetable .ges, .highlight pre .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
|
||||
pre.code .gr, .code .codetable .gr, .highlight pre .gr { color: #E40000 } /* Generic.Error */
|
||||
pre.code .gh, .code .codetable .gh, .highlight pre .gh { color: #000080; font-weight: bold } /* Generic.Heading */
|
||||
pre.code .gi, .code .codetable .gi, .highlight pre .gi { color: #008400 } /* Generic.Inserted */
|
||||
pre.code .go, .code .codetable .go, .highlight pre .go { color: #717171 } /* Generic.Output */
|
||||
pre.code .gp, .code .codetable .gp, .highlight pre .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
|
||||
pre.code .gs, .code .codetable .gs, .highlight pre .gs { font-weight: bold } /* Generic.Strong */
|
||||
pre.code .gu, .code .codetable .gu, .highlight pre .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
|
||||
pre.code .gt, .code .codetable .gt, .highlight pre .gt { color: #0044DD } /* Generic.Traceback */
|
||||
pre.code .kc, .code .codetable .kc, .highlight pre .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
|
||||
pre.code .kd, .code .codetable .kd, .highlight pre .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
|
||||
pre.code .kn, .code .codetable .kn, .highlight pre .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
|
||||
pre.code .kp, .code .codetable .kp, .highlight pre .kp { color: #008000 } /* Keyword.Pseudo */
|
||||
pre.code .kr, .code .codetable .kr, .highlight pre .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
|
||||
pre.code .kt, .code .codetable .kt, .highlight pre .kt { color: #B00040 } /* Keyword.Type */
|
||||
pre.code .m, .code .codetable .m, .highlight pre .m { color: #666666 } /* Literal.Number */
|
||||
pre.code .s, .code .codetable .s, .highlight pre .s { color: #BA2121 } /* Literal.String */
|
||||
pre.code .na, .code .codetable .na, .highlight pre .na { color: #687822 } /* Name.Attribute */
|
||||
pre.code .nb, .code .codetable .nb, .highlight pre .nb { color: #008000 } /* Name.Builtin */
|
||||
pre.code .nc, .code .codetable .nc, .highlight pre .nc { color: #0000FF; font-weight: bold } /* Name.Class */
|
||||
pre.code .no, .code .codetable .no, .highlight pre .no { color: #880000 } /* Name.Constant */
|
||||
pre.code .nd, .code .codetable .nd, .highlight pre .nd { color: #AA22FF } /* Name.Decorator */
|
||||
pre.code .ni, .code .codetable .ni, .highlight pre .ni { color: #717171; font-weight: bold } /* Name.Entity */
|
||||
pre.code .ne, .code .codetable .ne, .highlight pre .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */
|
||||
pre.code .nf, .code .codetable .nf, .highlight pre .nf { color: #0000FF } /* Name.Function */
|
||||
pre.code .nl, .code .codetable .nl, .highlight pre .nl { color: #767600 } /* Name.Label */
|
||||
pre.code .nn, .code .codetable .nn, .highlight pre .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
|
||||
pre.code .nt, .code .codetable .nt, .highlight pre .nt { color: #008000; font-weight: bold } /* Name.Tag */
|
||||
pre.code .nv, .code .codetable .nv, .highlight pre .nv { color: #19177C } /* Name.Variable */
|
||||
pre.code .ow, .code .codetable .ow, .highlight pre .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
|
||||
pre.code .w, .code .codetable .w, .highlight pre .w { color: #bbbbbb } /* Text.Whitespace */
|
||||
pre.code .mb, .code .codetable .mb, .highlight pre .mb { color: #666666 } /* Literal.Number.Bin */
|
||||
pre.code .mf, .code .codetable .mf, .highlight pre .mf { color: #666666 } /* Literal.Number.Float */
|
||||
pre.code .mh, .code .codetable .mh, .highlight pre .mh { color: #666666 } /* Literal.Number.Hex */
|
||||
pre.code .mi, .code .codetable .mi, .highlight pre .mi { color: #666666 } /* Literal.Number.Integer */
|
||||
pre.code .mo, .code .codetable .mo, .highlight pre .mo { color: #666666 } /* Literal.Number.Oct */
|
||||
pre.code .sa, .code .codetable .sa, .highlight pre .sa { color: #BA2121 } /* Literal.String.Affix */
|
||||
pre.code .sb, .code .codetable .sb, .highlight pre .sb { color: #BA2121 } /* Literal.String.Backtick */
|
||||
pre.code .sc, .code .codetable .sc, .highlight pre .sc { color: #BA2121 } /* Literal.String.Char */
|
||||
pre.code .dl, .code .codetable .dl, .highlight pre .dl { color: #BA2121 } /* Literal.String.Delimiter */
|
||||
pre.code .sd, .code .codetable .sd, .highlight pre .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
|
||||
pre.code .s2, .code .codetable .s2, .highlight pre .s2 { color: #BA2121 } /* Literal.String.Double */
|
||||
pre.code .se, .code .codetable .se, .highlight pre .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */
|
||||
pre.code .sh, .code .codetable .sh, .highlight pre .sh { color: #BA2121 } /* Literal.String.Heredoc */
|
||||
pre.code .si, .code .codetable .si, .highlight pre .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */
|
||||
pre.code .sx, .code .codetable .sx, .highlight pre .sx { color: #008000 } /* Literal.String.Other */
|
||||
pre.code .sr, .code .codetable .sr, .highlight pre .sr { color: #A45A77 } /* Literal.String.Regex */
|
||||
pre.code .s1, .code .codetable .s1, .highlight pre .s1 { color: #BA2121 } /* Literal.String.Single */
|
||||
pre.code .ss, .code .codetable .ss, .highlight pre .ss { color: #19177C } /* Literal.String.Symbol */
|
||||
pre.code .bp, .code .codetable .bp, .highlight pre .bp { color: #008000 } /* Name.Builtin.Pseudo */
|
||||
pre.code .fm, .code .codetable .fm, .highlight pre .fm { color: #0000FF } /* Name.Function.Magic */
|
||||
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; }
|
||||
pre.code , .highlight pre .hll { background-color: #ffffcc }
|
||||
pre.code , .highlight pre { background: #f8f8f8; }
|
||||
pre.code .c, .highlight pre .c { color: #408080; font-style: italic } /* Comment */
|
||||
pre.code .err, .highlight pre .err { border: 1px solid #FF0000 } /* Error */
|
||||
pre.code .k, .highlight pre .k { color: #008000; font-weight: bold } /* Keyword */
|
||||
pre.code .o, .highlight pre .o { color: #666666 } /* Operator */
|
||||
pre.code .ch, .highlight pre .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
|
||||
pre.code .cm, .highlight pre .cm { color: #408080; font-style: italic } /* Comment.Multiline */
|
||||
pre.code .cp, .highlight pre .cp { color: #BC7A00 } /* Comment.Preproc */
|
||||
pre.code .cpf, .highlight pre .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
|
||||
pre.code .c1, .highlight pre .c1 { color: #408080; font-style: italic } /* Comment.Single */
|
||||
pre.code .cs, .highlight pre .cs { color: #408080; font-style: italic } /* Comment.Special */
|
||||
pre.code .gd, .highlight pre .gd { color: #A00000 } /* Generic.Deleted */
|
||||
pre.code .ge, .highlight pre .ge { font-style: italic } /* Generic.Emph */
|
||||
pre.code .gr, .highlight pre .gr { color: #FF0000 } /* Generic.Error */
|
||||
pre.code .gh, .highlight pre .gh { color: #000080; font-weight: bold } /* Generic.Heading */
|
||||
pre.code .gi, .highlight pre .gi { color: #00A000 } /* Generic.Inserted */
|
||||
pre.code .go, .highlight pre .go { color: #888888 } /* Generic.Output */
|
||||
pre.code .gp, .highlight pre .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
|
||||
pre.code .gs, .highlight pre .gs { font-weight: bold } /* Generic.Strong */
|
||||
pre.code .gu, .highlight pre .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
|
||||
pre.code .gt, .highlight pre .gt { color: #0044DD } /* Generic.Traceback */
|
||||
pre.code .kc, .highlight pre .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
|
||||
pre.code .kd, .highlight pre .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
|
||||
pre.code .kn, .highlight pre .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
|
||||
pre.code .kp, .highlight pre .kp { color: #008000 } /* Keyword.Pseudo */
|
||||
pre.code .kr, .highlight pre .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
|
||||
pre.code .kt, .highlight pre .kt { color: #B00040 } /* Keyword.Type */
|
||||
pre.code .m, .highlight pre .m { color: #666666 } /* Literal.Number */
|
||||
pre.code .s, .highlight pre .s { color: #BA2121 } /* Literal.String */
|
||||
pre.code .na, .highlight pre .na { color: #7D9029 } /* Name.Attribute */
|
||||
pre.code .nb, .highlight pre .nb { color: #008000 } /* Name.Builtin */
|
||||
pre.code .nc, .highlight pre .nc { color: #0000FF; font-weight: bold } /* Name.Class */
|
||||
pre.code .no, .highlight pre .no { color: #880000 } /* Name.Constant */
|
||||
pre.code .nd, .highlight pre .nd { color: #AA22FF } /* Name.Decorator */
|
||||
pre.code .ni, .highlight pre .ni { color: #999999; font-weight: bold } /* Name.Entity */
|
||||
pre.code .ne, .highlight pre .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
|
||||
pre.code .nf, .highlight pre .nf { color: #0000FF } /* Name.Function */
|
||||
pre.code .nl, .highlight pre .nl { color: #A0A000 } /* Name.Label */
|
||||
pre.code .nn, .highlight pre .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
|
||||
pre.code .nt, .highlight pre .nt { color: #008000; font-weight: bold } /* Name.Tag */
|
||||
pre.code .nv, .highlight pre .nv { color: #19177C } /* Name.Variable */
|
||||
pre.code .ow, .highlight pre .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
|
||||
pre.code .w, .highlight pre .w { color: #bbbbbb } /* Text.Whitespace */
|
||||
pre.code .mb, .highlight pre .mb { color: #666666 } /* Literal.Number.Bin */
|
||||
pre.code .mf, .highlight pre .mf { color: #666666 } /* Literal.Number.Float */
|
||||
pre.code .mh, .highlight pre .mh { color: #666666 } /* Literal.Number.Hex */
|
||||
pre.code .mi, .highlight pre .mi { color: #666666 } /* Literal.Number.Integer */
|
||||
pre.code .mo, .highlight pre .mo { color: #666666 } /* Literal.Number.Oct */
|
||||
pre.code .sa, .highlight pre .sa { color: #BA2121 } /* Literal.String.Affix */
|
||||
pre.code .sb, .highlight pre .sb { color: #BA2121 } /* Literal.String.Backtick */
|
||||
pre.code .sc, .highlight pre .sc { color: #BA2121 } /* Literal.String.Char */
|
||||
pre.code .dl, .highlight pre .dl { color: #BA2121 } /* Literal.String.Delimiter */
|
||||
pre.code .sd, .highlight pre .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
|
||||
pre.code .s2, .highlight pre .s2 { color: #BA2121 } /* Literal.String.Double */
|
||||
pre.code .se, .highlight pre .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
|
||||
pre.code .sh, .highlight pre .sh { color: #BA2121 } /* Literal.String.Heredoc */
|
||||
pre.code .si, .highlight pre .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
|
||||
pre.code .sx, .highlight pre .sx { color: #008000 } /* Literal.String.Other */
|
||||
pre.code .sr, .highlight pre .sr { color: #BB6688 } /* Literal.String.Regex */
|
||||
pre.code .s1, .highlight pre .s1 { color: #BA2121 } /* Literal.String.Single */
|
||||
pre.code .ss, .highlight pre .ss { color: #19177C } /* Literal.String.Symbol */
|
||||
pre.code .bp, .highlight pre .bp { color: #008000 } /* Name.Builtin.Pseudo */
|
||||
pre.code .fm, .highlight pre .fm { color: #0000FF } /* Name.Function.Magic */
|
||||
pre.code .vc, .highlight pre .vc { color: #19177C } /* Name.Variable.Class */
|
||||
pre.code .vg, .highlight pre .vg { color: #19177C } /* Name.Variable.Global */
|
||||
pre.code .vi, .highlight pre .vi { color: #19177C } /* Name.Variable.Instance */
|
||||
pre.code .vm, .highlight pre .vm { color: #19177C } /* Name.Variable.Magic */
|
||||
pre.code .il, .highlight pre .il { color: #666666 } /* Literal.Number.Integer.Long */
|
||||
table.codetable { width: 100%;} td.linenos {text-align: right; width: 4em;}
|
||||
|
|
|
@ -62,18 +62,3 @@ div.warning p.admonition-title, div.system-message p.system-message-title {
|
|||
div.sidebar {
|
||||
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;
|
||||
}
|
||||
|
|
|
@ -1,294 +1,7 @@
|
|||
/* Minimal style sheet for the HTML output of Docutils. */
|
||||
/* */
|
||||
/* :Author: Günter Milde, based on html4css1.css by David Goodger */
|
||||
/* :Id: $Id: minimal.css 9079 2022-06-19 14:00:56Z 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 $ */
|
||||
/* :Id: $Id: minimal.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: */
|
||||
|
@ -300,28 +13,278 @@ table.captionbelow {
|
|||
/* This file is offered as-is, without any warranty. */
|
||||
/* */
|
||||
/* .. _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 */
|
||||
/* ****************** */
|
||||
|
||||
/* Table of Contents */
|
||||
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\ ';
|
||||
}
|
||||
/* Sections */
|
||||
|
||||
/* Transitions */
|
||||
|
||||
hr.docutils {
|
||||
width: 80%;
|
||||
margin-top: 1em;
|
||||
|
@ -329,46 +292,50 @@ hr.docutils {
|
|||
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 {
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
/* 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; }
|
||||
|
||||
/* Description Lists */
|
||||
/* styled like in most dictionaries, encyclopedias etc. */
|
||||
dl.description {
|
||||
display: flow-root;
|
||||
}
|
||||
dl.description > dt {
|
||||
font-weight: bold;
|
||||
clear: left;
|
||||
float: left;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
padding-right: 0.3em;
|
||||
}
|
||||
dl.description > dd:after {
|
||||
display: table;
|
||||
content: "";
|
||||
clear: left; /* clearfix for empty descriptions */
|
||||
padding-right: 0.5em;
|
||||
}
|
||||
|
||||
/* 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 */
|
||||
dl.field-list.narrow > dd {
|
||||
--field-indent: 5em;
|
||||
margin-left: 5em;
|
||||
}
|
||||
/* run-in: start field-body on same line after long field names */
|
||||
dl.field-list.run-in > dd p {
|
||||
|
@ -377,8 +344,8 @@ dl.field-list.run-in > dd p {
|
|||
|
||||
/* Bibliographic Fields */
|
||||
|
||||
/* generally, bibliographic fields use dl.docinfo */
|
||||
/* but dedication and abstract are placed into divs */
|
||||
/* generally, bibliographic fields use special definition list dl.docinfo */
|
||||
/* but dedication and abstract are placed into "topic" divs */
|
||||
div.abstract p.topic-title {
|
||||
text-align: center;
|
||||
}
|
||||
|
@ -391,22 +358,38 @@ div.dedication p.topic-title {
|
|||
font-style: normal;
|
||||
}
|
||||
|
||||
/* disclosures */
|
||||
details { padding-left: 1em; }
|
||||
summary { margin-left: -1em; }
|
||||
/* Citations */
|
||||
dl.citation dt.label {
|
||||
font-weight: bold;
|
||||
}
|
||||
span.fn-backref {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
/* Text Blocks */
|
||||
/* =========== */
|
||||
/* ============ */
|
||||
|
||||
/* Literal Blocks */
|
||||
pre.literal-block, pre.doctest-block,
|
||||
pre.math, pre.code {
|
||||
font-family: monospace;
|
||||
margin-left: 1.5em;
|
||||
margin-right: 1.5em
|
||||
}
|
||||
|
||||
/* Block Quotes and Topics */
|
||||
/* 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,
|
||||
.topic p.attribution {
|
||||
div.topic p.attribution {
|
||||
text-align: right;
|
||||
margin-left: 20%;
|
||||
}
|
||||
|
@ -446,12 +429,6 @@ table.numbered > caption:before {
|
|||
/* ----------------------- */
|
||||
|
||||
/* line on the left */
|
||||
.footnote-list {
|
||||
border-left: solid thin;
|
||||
padding-left: 0.25em;
|
||||
}
|
||||
|
||||
/* same thing for old docutils versions */
|
||||
dl.footnote {
|
||||
padding-left: 1ex;
|
||||
border-left: solid;
|
||||
|
@ -467,49 +444,31 @@ dl.footnote {
|
|||
/* Images and Figures */
|
||||
|
||||
/* let content flow to the side of aligned images and figures */
|
||||
figure.align-left,
|
||||
.figure.align-left,
|
||||
img.align-left,
|
||||
video.align-left,
|
||||
object.align-left {
|
||||
display: block;
|
||||
clear: left;
|
||||
float: left;
|
||||
margin-right: 1em;
|
||||
margin-right: 1em
|
||||
}
|
||||
figure.align-right,
|
||||
.figure.align-right,
|
||||
img.align-right,
|
||||
video.align-right,
|
||||
object.align-right {
|
||||
display: block;
|
||||
clear: right;
|
||||
float: right;
|
||||
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;
|
||||
margin-left: 1em
|
||||
}
|
||||
|
||||
/* Sidebar */
|
||||
/* Move right. In a layout with fixed margins, */
|
||||
/* it can be moved into the margin. */
|
||||
aside.sidebar {
|
||||
|
||||
/* Move into the margin. In a layout with fixed margins, */
|
||||
/* it can be moved into the margin completely. */
|
||||
div.sidebar {
|
||||
width: 30%;
|
||||
max-width: 26em;
|
||||
float: right;
|
||||
clear: right;
|
||||
margin-left: 1em;
|
||||
margin-right: -1%;
|
||||
background-color: #fffffa;
|
||||
margin-right: -5.5%;
|
||||
background-color: #ffffee ;
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
@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
|
||||
person obtaining a copy of this software and associated
|
||||
|
@ -67,9 +67,9 @@ body {
|
|||
margin-right: 1.5em;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #menu ul li,
|
||||
html[dir="rtl"] #toptranslations ul li,
|
||||
html[dir="rtl"] #toptranslations h2 {
|
||||
#menu ul li:dir(rtl),
|
||||
#toptranslations ul li:dir(rtl),
|
||||
#toptranslations h2:dir(rtl) {
|
||||
margin-left: 1.5em;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
@ -79,7 +79,7 @@ html[dir="rtl"] #toptranslations h2 {
|
|||
float: right;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #toptranslations {
|
||||
#toptranslations:dir(rtl) {
|
||||
text-align: left;
|
||||
float: left;
|
||||
}
|
||||
|
@ -127,9 +127,6 @@ html[dir="rtl"] #toptranslations {
|
|||
.postlist li {
|
||||
margin-bottom: .33em;
|
||||
}
|
||||
.byline a:not(:last-child):after {
|
||||
content: ",";
|
||||
}
|
||||
|
||||
/* Post and archive pagers */
|
||||
.postindexpager .pager .next:before {
|
||||
|
@ -143,24 +140,19 @@ html[dir="rtl"] #toptranslations {
|
|||
.archivenav .pager .next:after {
|
||||
content: " →";
|
||||
}
|
||||
html[dir="rtl"] .postpromonav .pager .previous:after,
|
||||
html[dir="rtl"] .archivenav .pager .previous:after {
|
||||
.postpromonav .pager .previous:dir(rtl):after,
|
||||
.archivenav .pager .previous:dir(rtl):after {
|
||||
content: " →";
|
||||
}
|
||||
.postpromonav .pager .previous:before,
|
||||
.archivenav .pager .previous:before {
|
||||
content: "← ";
|
||||
}
|
||||
html[dir="rtl"] .postpromonav .pager .next:before,
|
||||
html[dir="rtl"] .archivenav .pager .next:before {
|
||||
.postpromonav .pager .next:dir(rtl):before,
|
||||
.archivenav .pager .next:dir(rtl):before {
|
||||
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,
|
||||
.postpromonav .tags li:first-of-type:before,
|
||||
.translationslist p:first-of-type:before {
|
||||
|
@ -182,8 +174,8 @@ html[dir="rtl"] .archivenav .pager .previous:before {
|
|||
.archivenav .pager .next {
|
||||
float: right;
|
||||
}
|
||||
html[dir="rtl"] .postpromonav .pager .next,
|
||||
html[dir="rtl"] .archivenav .pager .next {
|
||||
.postpromonav .pager .next:dir(rtl),
|
||||
.archivenav .pager .next:dir(rtl) {
|
||||
float: left;
|
||||
}
|
||||
|
||||
|
@ -191,8 +183,8 @@ html[dir="rtl"] .archivenav .pager .next {
|
|||
.archivenav .pager .previous {
|
||||
float: left;
|
||||
}
|
||||
html[dir="rtl"] .postpromonav .pager .previous,
|
||||
html[dir="rtl"] .archivenav .pager .previous {
|
||||
.postpromonav .pager .previous:dir(rtl),
|
||||
.archivenav .pager .previous:dir(rtl) {
|
||||
float: right;
|
||||
}
|
||||
|
||||
|
@ -285,6 +277,10 @@ img {
|
|||
margin-right: 0;
|
||||
}
|
||||
|
||||
.codetable .linenos {
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
.sr-only {
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
|
@ -307,16 +303,11 @@ img {
|
|||
}
|
||||
|
||||
pre.code, code {
|
||||
white-space: pre-wrap;
|
||||
white-space: pre;
|
||||
word-wrap: normal;
|
||||
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 */
|
||||
@media print {
|
||||
*,
|
||||
|
|
|
@ -22,7 +22,7 @@ pescewanda3 [at] gmail.com
|
|||
—–BEGIN PGP PUBLIC KEY BLOCK—–Version: GnuPG v2
|
||||
|
||||
|
||||
mQENBFUa5j4BCAC8clTqI75PkKJ+">
|
||||
mQENBFUa5j4BCAC8clTqI75PkKJ+Y">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="article:published_time" content="2015-03-31T20:36:00Z">
|
||||
<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="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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -56,13 +56,15 @@ pescewanda3 [at] gmail.com
|
|||
|
||||
|
||||
<div class="e-content entry-content" itemprop="articleBody text">
|
||||
<p>Questa e` la nostra chiave PGP con la quale possiamo essere contattati all’indirizzo<br><strong>pescewanda3 [at] gmail.com</strong></p>
|
||||
<div>
|
||||
<p>Questa e` la nostra chiave PGP con la quale possiamo essere contattati all’indirizzo<br><strong>pescewanda3 [at] gmail.com</strong></p>
|
||||
<div class="code">
|
||||
—–BEGIN PGP PUBLIC KEY BLOCK—–<br>Version: GnuPG v2
|
||||
|
||||
<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—–
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -50,7 +50,8 @@
|
|||
|
||||
|
||||
<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 l’indirizzo IP del computer tramite la crittografia a strati, da qui il nome scelto che sta per “The Onion Router”. Infatti grazie a Tor l’utente si collega al sito che vuole visitare passando però da una serie di altri server che fungono da router e cifrano la comunicazione.</p>
|
||||
<div>
|
||||
<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 l’indirizzo IP del computer tramite la crittografia a strati, da qui il nome scelto che sta per “The Onion Router”. Infatti grazie a Tor l’utente si collega al sito che vuole visitare passando però da una serie di altri server che fungono da router e cifrano la comunicazione.</p>
|
||||
<div class="separator" style="clear:both;text-align:center;">
|
||||
<a href="http://francescomecca.eu/wp-content/uploads/2015/08/a2cc6-tor_newsbitcoin.jpg" style="margin-left:1em;margin-right:1em;"><img border="0" height="196" src="http://francescomecca.eu/wp-content/uploads/2015/08/a2cc6-tor_newsbitcoin.jpg" width="320"></a>
|
||||
</div>
|
||||
|
@ -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>Eugenio Corso </p>
|
||||
<div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -54,7 +54,8 @@
|
|||
|
||||
|
||||
<div class="e-content entry-content" itemprop="articleBody text">
|
||||
<blockquote class="tr_bq">
|
||||
<div>
|
||||
<blockquote class="tr_bq">
|
||||
<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>“L’utilizzo dei bambini per fini politici? Piuttosto abietto. </i></span></span>
|
||||
</div>
|
||||
|
@ -77,6 +78,7 @@
|
|||
</div>
|
||||
|
||||
<p><span id="goog_1004488977"></span><span id="goog_1004488978"></span> </p>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -50,7 +50,8 @@
|
|||
|
||||
|
||||
<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 l’anonimato 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>
|
||||
|
||||
|
@ -100,56 +101,57 @@
|
|||
Fonti: <a href="https://www.youtube.com/watch?v=YJmRqgBE_t8">www.youtube.com</a></p>
|
||||
</div>
|
||||
|
||||
<div class="code"><pre class="code literal-block"><span class="nt"><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">></span>
|
||||
<span class="w"> </span><span class="nt"><p></span>
|
||||
<span class="w"> </span><span class="nt"></div></span>
|
||||
<pre class="code literal-block"><span></span><span class="nt"><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">></span>
|
||||
<span class="nt"><p></span>
|
||||
<span class="nt"></div></span>
|
||||
|
||||
<span class="w"> </span><span class="nt"><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">></span>
|
||||
<span class="w"> </span><span class="nt"><div</span><span class="w"> </span><span class="na">style=</span><span class="s">"text-align:center;"</span><span class="nt">></span>
|
||||
<span class="w"> </span><span class="nt"></div></span>
|
||||
<span class="nt"><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">></span>
|
||||
<span class="nt"><div</span> <span class="na">style=</span><span class="s">"text-align:center;"</span><span class="nt">></span>
|
||||
<span class="nt"></div></span>
|
||||
|
||||
<span class="w"> </span><span class="nt"><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">></span>
|
||||
<span class="w"> </span><span class="nt"><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">></span>https://www.youtube.com/embed/LiFrjbjASk4?feature=player_embedded<span class="nt"></a></span>
|
||||
<span class="w"> </span><span class="nt"></div></span>
|
||||
<span class="nt"><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">></span>
|
||||
<span class="nt"><a</span> <span class="na">href=</span><span class="s">"https://www.youtube.com/embed/LiFrjbjASk4?feature=player_embedded"</span><span class="nt">></span>https://www.youtube.com/embed/LiFrjbjASk4?feature=player_embedded<span class="nt"></a></span>
|
||||
<span class="nt"></div></span>
|
||||
|
||||
<span class="w"> </span><span class="nt"><div</span><span class="w"> </span><span class="na">style=</span><span class="s">"text-align:center;"</span><span class="nt">></span>
|
||||
<span class="w"> </span><span class="nt"></div></span>
|
||||
<span class="w"> </span><span class="nt"></div></span>
|
||||
<span class="nt"><div</span> <span class="na">style=</span><span class="s">"text-align:center;"</span><span class="nt">></span>
|
||||
<span class="nt"></div></span>
|
||||
<span class="nt"></div></span>
|
||||
|
||||
<span class="w"> </span><span class="nt"><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">></span>
|
||||
<span class="w"> </span><span class="nt"></div></span>
|
||||
<span class="nt"><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">></span>
|
||||
<span class="nt"></div></span>
|
||||
|
||||
<span class="w"> </span><span class="nt"><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">></span>
|
||||
<span class="w"> </span><span class="nt"><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">></span>We<span class="w"> </span>are<span class="w"> </span>Anonymous.<span class="nt"></span></span>
|
||||
<span class="w"> </span><span class="nt"></div></span>
|
||||
<span class="nt"><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">></span>
|
||||
<span class="nt"><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">></span>We are Anonymous.<span class="nt"></span></span>
|
||||
<span class="nt"></div></span>
|
||||
|
||||
<span class="w"> </span><span class="nt"><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">></span>
|
||||
<span class="w"> </span><span class="nt"><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">></span><span class="w"> </span>We<span class="w"> </span>are<span class="w"> </span>legion.<span class="nt"></span></span>
|
||||
<span class="w"> </span><span class="nt"></div></span>
|
||||
<span class="nt"><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">></span>
|
||||
<span class="nt"><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">></span> We are legion.<span class="nt"></span></span>
|
||||
<span class="nt"></div></span>
|
||||
|
||||
<span class="w"> </span><span class="nt"><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">></span>
|
||||
<span class="w"> </span><span class="nt"><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">></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"></span></span>
|
||||
<span class="w"> </span><span class="nt"></div></span>
|
||||
<span class="nt"><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">></span>
|
||||
<span class="nt"><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">></span> We do not forgive. <span class="nt"></span></span>
|
||||
<span class="nt"></div></span>
|
||||
|
||||
<span class="w"> </span><span class="nt"><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">></span>
|
||||
<span class="w"> </span><span class="nt"><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">></span>We<span class="w"> </span>do<span class="w"> </span>not<span class="w"> </span>forget.<span class="w"> </span><span class="nt"></span></span>
|
||||
<span class="w"> </span><span class="nt"></div></span>
|
||||
<span class="nt"><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">></span>
|
||||
<span class="nt"><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">></span>We do not forget. <span class="nt"></span></span>
|
||||
<span class="nt"></div></span>
|
||||
|
||||
<span class="w"> </span><span class="nt"><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">></span>
|
||||
<span class="w"> </span><span class="nt"><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">></span>Expect<span class="w"> </span>us<span class="nt"></span></span>!
|
||||
<span class="w"> </span><span class="nt"></div></span>
|
||||
<span class="nt"><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">></span>
|
||||
<span class="nt"><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">></span>Expect us<span class="nt"></span></span>!
|
||||
<span class="nt"></div></span>
|
||||
|
||||
<span class="w"> </span><span class="nt"><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">></span>
|
||||
<span class="w"> </span><span class="nt"></div></span>
|
||||
<span class="nt"><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">></span>
|
||||
<span class="nt"></div></span>
|
||||
|
||||
<span class="w"> </span><span class="nt"><div</span><span class="w"> </span><span class="na">class=</span><span class="s">"MsoNormal"</span><span class="nt">></span>
|
||||
<span class="w"> </span><span class="nt"></div></span>
|
||||
<span class="nt"><div</span> <span class="na">class=</span><span class="s">"MsoNormal"</span><span class="nt">></span>
|
||||
<span class="nt"></div></span>
|
||||
|
||||
<span class="w"> </span><span class="nt"><p></span>
|
||||
<span class="w"> </span><span class="nt"><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">></span>
|
||||
<span class="w"> </span><span class="nt"><span</span><span class="w"> </span><span class="na">lang=</span><span class="s">"EN-US"</span><span class="nt">></span><span class="w"> </span>Gabriele<span class="w"> </span>Corso<span class="nt"></span></span>
|
||||
<span class="w"> </span><span class="nt"></div></span>
|
||||
</pre></div>
|
||||
<span class="nt"><p></span>
|
||||
<span class="nt"><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">></span>
|
||||
<span class="nt"><span</span> <span class="na">lang=</span><span class="s">"EN-US"</span><span class="nt">></span> Gabriele Corso<span class="nt"></span></span>
|
||||
<span class="nt"></div></span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -58,7 +58,8 @@
|
|||
|
||||
|
||||
<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 l’opt 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 dell’utente in maniera indistinguibile.<br>
|
||||
Per quale motivo Facebook usa questo sistema di tracciamento?</p>
|
||||
<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;">
|
||||
Francesco Mecca
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
|
|
@ -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="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>
|
||||
<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">
|
||||
|
||||
<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="separator" style="clear: both; text-align: center;">
|
||||
<div>
|
||||
<div class="separator" style="clear: both; text-align: center;">
|
||||
</div>
|
||||
|
||||
<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;">
|
||||
<span style="font-family: Arial, Helvetica, sans-serif;">Francesco Mecca </span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -50,7 +50,8 @@
|
|||
|
||||
|
||||
<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>
|
||||
|
||||
|
@ -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>Eugenio Corso </p>
|
||||
<div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -60,7 +60,8 @@
|
|||
|
||||
|
||||
<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 class="MsoNormal" style="text-align:center;">
|
||||
|
@ -166,6 +167,7 @@
|
|||
|
||||
<div style="text-align:right;">
|
||||
<span style="font-family:Calibri, sans-serif;font-size:11pt;">Gabriele Corso </span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
|
|
@ -37,7 +37,7 @@ L’attacco avviene attr">
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -51,7 +51,8 @@ L’attacco avviene attr">
|
|||
|
||||
|
||||
<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>
|
||||
L’attacco avviene attraverso l’uso 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 dell’attacco.<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>
|
||||
|
@ -69,6 +70,7 @@ L’attacco avviene attraverso l’uso di codice Javascript e analizza la cache
|
|||
<div style="text-align:right;">
|
||||
Francesco Mecca
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -50,7 +50,8 @@
|
|||
|
||||
|
||||
<div class="e-content entry-content" itemprop="articleBody text">
|
||||
<p><span style="font-family:inherit;">Questo blog non puo<code>essere <a href="http://www.greatfirewallofchina.org/index.php?siteurl=caught-in-thenet.blogspot.it" rel="nofollow" target="_blank">visualizzato</a> in Cina.<br />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 <a href="http://www.greatfirewallofchina.org/index.php?siteurl=caught-in-thenet.blogspot.it" rel="nofollow" target="_blank">visualizzato</a> in Cina.<br />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;">
|
||||
<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>
|
||||
|
@ -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 dell’individuo.</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">
|
||||
<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>
|
||||
|
||||
<p></p>
|
||||
<div style="line-height:100%;margin-bottom:0;">
|
||||
<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>
|
||||
<pre class="code literal-block"><span></span> <span class="nt"><div</span> <span class="na">style=</span><span class="s">"line-height:100%;margin-bottom:0;"</span><span class="nt">></span>
|
||||
<span class="nt"></div></span>
|
||||
|
||||
<div class="code"><pre class="code literal-block"><span class="w"> </span><span class="nt"><div</span><span class="w"> </span><span class="na">style=</span><span class="s">"line-height:100%;margin-bottom:0;"</span><span class="nt">></span>
|
||||
<span class="w"> </span><span class="nt"></div></span>
|
||||
<span class="nt"><div</span> <span class="na">style=</span><span class="s">"line-height:100%;margin-bottom:0;text-align:right;"</span><span class="nt">></span>
|
||||
<span class="nt"><span</span> <span class="na">style=</span><span class="s">"font-family:inherit;"</span><span class="nt">><span</span> <span class="na">style=</span><span class="s">"font-style:normal;"</span><span class="nt">></span>Francesco Mecca <span class="nt"></span></span></span>
|
||||
<span class="nt"></div></span>
|
||||
|
||||
<span class="w"> </span><span class="nt"><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">></span>
|
||||
<span class="w"> </span><span class="nt"><span</span><span class="w"> </span><span class="na">style=</span><span class="s">"font-family:inherit;"</span><span class="nt">><span</span><span class="w"> </span><span class="na">style=</span><span class="s">"font-style:normal;"</span><span class="nt">></span>Francesco<span class="w"> </span>Mecca<span class="w"> </span><span class="nt"></span></span></span>
|
||||
<span class="w"> </span><span class="nt"></div></span>
|
||||
|
||||
<span class="w"> </span><span class="nt"><p></span>
|
||||
<span class="w"> </span><span class="nt"><span</span><span class="w"> </span><span class="na">style=</span><span class="s">"font-family:inherit;"</span><span class="nt">></span><span class="w"> </span><span class="nt"></span></span>
|
||||
<span class="w"> </span><span class="nt"></p></span>
|
||||
</pre></div>
|
||||
<span class="nt"><p></span>
|
||||
<span class="nt"><span</span> <span class="na">style=</span><span class="s">"font-family:inherit;"</span><span class="nt">></span> <span class="nt"></span></span>
|
||||
<span class="nt"></p></span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
|
|
|
@ -47,7 +47,7 @@
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -61,7 +61,8 @@
|
|||
|
||||
|
||||
<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;">
|
||||
<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>
|
||||
|
@ -106,6 +107,7 @@
|
|||
<p> </p>
|
||||
<div style="line-height: 100%; margin-bottom: 0;" align="RIGHT">
|
||||
<span style="font-family: inherit;">Francesco Mecca, Eugenio Corso, Gabriele Corso</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
|
|
@ -43,7 +43,7 @@ L’attenzione di Huang si e` concentr">
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -57,7 +57,8 @@ L’attenzione di Huang si e` concentr">
|
|||
|
||||
|
||||
<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>
|
||||
L’attenzione 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 l’apprendimento 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">l’opt out</a> ovvero la rinuncia consapevole da parte dell’utente al servizio.</p>
|
||||
<div style="text-align:right;">
|
||||
Francesco Mecca
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -50,7 +50,8 @@
|
|||
|
||||
|
||||
<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>
|
||||
</div>
|
||||
|
||||
|
@ -121,6 +122,7 @@
|
|||
<p><span style="font-family:Arial, Helvetica, sans-serif;"><br></span> </p>
|
||||
<div style="line-height:100%;margin-bottom:0;">
|
||||
<span style="font-family:Arial, Helvetica, sans-serif;"><br></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
|
|
@ -45,7 +45,7 @@ Richard aveva avuto un lungo viaggio in macchina alle spalle. Circa un’ora pri
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -59,7 +59,8 @@ Richard aveva avuto un lungo viaggio in macchina alle spalle. Circa un’ora pri
|
|||
|
||||
|
||||
<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 un’ora prima, alle 05:30, la moglie Lisa aveva telefonato: </p>
|
||||
<div>
|
||||
</div>
|
||||
|
@ -108,12 +109,15 @@ Richard aveva avuto un lungo viaggio in macchina alle spalle. Circa un’ora 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>
|
||||
</div>
|
||||
|
||||
<div style="text-align:center;">
|
||||
<span style="font-size:x-small;">immagine presa da <a href="http://en.wikipedia.org/wiki/Typing">wikipedia</a></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<pre class="code literal-block"><span></span><span class="nt"><div</span> <span class="na">style=</span><span class="s">"text-align:center;"</span><span class="nt">></span>
|
||||
<span class="nt"><span</span> <span class="na">style=</span><span class="s">"font-size:x-small;"</span><span class="nt">></span>immagine presa da <span class="nt"><a</span> <span class="na">href=</span><span class="s">"http://en.wikipedia.org/wiki/Typing"</span><span class="nt">></span>wikipedia<span class="nt"></a></span></span>
|
||||
<span class="nt"></div></span>
|
||||
</pre>
|
||||
|
||||
|
||||
<p></p>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
</div>
|
||||
|
||||
|
@ -680,6 +684,7 @@ Richard aveva avuto un lungo viaggio in macchina alle spalle. Circa un’ora pri
|
|||
Gabriele Corso
|
||||
</div>
|
||||
</div> </div> </div> </div>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ Questa legge, intitolata RIPA, R">
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -54,7 +54,8 @@ Questa legge, intitolata RIPA, R">
|
|||
|
||||
|
||||
<div class="e-content entry-content" itemprop="articleBody text">
|
||||
<p>Nel 2000, ben molto prima dello scandalo datagate, prima perfino dell’attacco 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 dell’attacco 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>
|
||||
<p>Con questa legge viene permesso: </p>
|
||||
<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>
|
||||
<div style="text-align:right;">
|
||||
Francesco Mecca
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -50,7 +50,8 @@
|
|||
|
||||
|
||||
<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>
|
||||
<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>
|
||||
|
@ -65,6 +66,7 @@
|
|||
L’opera si trova a Berlino.</p>
|
||||
<div style="text-align:right;">
|
||||
Francesco Mecca
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
|
|
@ -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="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>
|
||||
<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">
|
||||
|
||||
<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 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>
|
||||
</div>
|
||||
|
||||
|
@ -75,6 +76,7 @@ Google inc. sta progettando di dare ai suoi utenti android più controllo riguar
|
|||
</div>
|
||||
|
||||
<div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -40,7 +40,7 @@ Presupponiamo che possiamo acceder">
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -54,7 +54,8 @@ Presupponiamo che possiamo acceder">
|
|||
|
||||
|
||||
<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, l’upload di foto su Flickr, l’invio 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>
|
||||
<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>
|
||||
<div style="text-align:right;">
|
||||
Francesco Mecca
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -53,7 +53,7 @@
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -67,7 +67,8 @@
|
|||
|
||||
|
||||
<div class="e-content entry-content" itemprop="articleBody text">
|
||||
<blockquote>
|
||||
<div>
|
||||
<blockquote>
|
||||
<p></p>
|
||||
<div style="text-align: left;">
|
||||
<i>“When privacy is outlawed, only outlaws will have privacy”</i>
|
||||
|
@ -180,6 +181,7 @@ Command successful.</pre>
|
|||
<p style="text-align: right;">
|
||||
Francesco Mecca
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
|
|
|
@ -43,7 +43,7 @@ Nel mare di Internet assis">
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -57,7 +57,8 @@ Nel mare di Internet assis">
|
|||
|
||||
|
||||
<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 l’introduzione 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 l’introduzione del Web 2.0.</p>
|
||||
<p>Nel mare di Internet assistiamo a due spiagge molto lontane che delimitano lo spazio della nostra attivita`: l’anonimato e l’identita` virtuale (che ci identifica nel mondo reale).</p>
|
||||
<p>E` un po` come misurare i due poli opposti, Facebook e Google Plus che richiedono il tuo nome vero e quindi ogni attivita` online e` un riflesso del proprio io reale, e 4chan, una delle poche risorse anonime nel Web che permette a ciascun utente di fare post anonimi e discutere quindi senza una forma di censura.</p>
|
||||
<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;">
|
||||
Francesco Mecca
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -53,7 +53,8 @@
|
|||
|
||||
|
||||
<div class="e-content entry-content" itemprop="articleBody text">
|
||||
<p> </p>
|
||||
<div>
|
||||
<p> </p>
|
||||
<blockquote class="tr_bq">
|
||||
<p>
|
||||
<span style="font-family: inherit;">Facebook per molti utenti è l’unico sito visitato, tanto da essere per molti sinonimo e sostituto integrale di Internet. Qui le regole d’uso 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 l’istruzione, 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;">
|
||||
Francesco Mecca
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -53,7 +53,8 @@
|
|||
|
||||
|
||||
<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 dell’FBI ha testimoniato che lo scopo delle forze dell’ordine è quello di collaborare con una società tecnologica per prevenire la crittografia. Anche se le compagnie non dovrebbero mettere l’accesso alla crittazione dei clienti prima di preoccupazioni per la sicurezza nazionale, perché la maggiore priorità del governo è quella di prevenire l’uso 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>
|
||||
|
||||
|
@ -118,6 +119,7 @@
|
|||
|
||||
<div class="MsoNormal" style="text-align: right;">
|
||||
Gabriele Corso
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
|
|
@ -40,7 +40,7 @@ Principalmente lo ">
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -54,7 +54,8 @@ Principalmente lo ">
|
|||
|
||||
|
||||
<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` l’accesso 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` l’accesso universale a tutta la conoscenza.</p>
|
||||
<p>Principalmente lo uso per scaricare tantissime registrazioni live di vari concerti registrati a mio avviso in maniera impeccabile.</p>
|
||||
<p>Nel sito si trova una guida per scaricare in bulk usando wget e gli strumenti del sito, ma risulta piuttosto prolissa e complicata se si vuole fare un download al volo.</p>
|
||||
<p>Questo e` lo script che uso, modificato da <a href="https://github.com/ghalfacree/bash-scripts/blob/master/archivedownload.sh">questo</a> script: e` scritto in bash e funziona su tutte le distribuzioni sulle quali e` installato wget, tail e sed.</p>
|
||||
|
@ -89,6 +90,7 @@ echo Complete.
|
|||
</pre>
|
||||
|
||||
<p>Francesco Mecca </p>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -50,7 +50,8 @@
|
|||
|
||||
|
||||
<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 dell’FBI, 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 dell’FBI, che ne aveva menzionato ben 115 nel documento di bilancio federale del 2009.</p>
|
||||
<p>Per molti anni questi aerei avevano aiutato l’FBI 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 dall’agenzia quest’ultima tecnologia è usata raramente.</p>
|
||||
<p>Charles Grasseley, presidente della commissione Giustizia del Senato, ha detto: “E’ importante che le forze dell’ordine abbiano gli strumenti essenziali per rintracciare e catturare i criminali, ma quando un’operazione 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;">
|
||||
|
@ -75,6 +76,7 @@ David Gomez, un ex agente dell’FBI , ha detto che il velivolo di sorveglianza
|
|||
</div>
|
||||
|
||||
<div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -54,7 +54,8 @@
|
|||
|
||||
|
||||
<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>
|
||||
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
|
||||
<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&term=saint&type=norm&case=0">Saint IGNUcius</a> e quando ha aperto l’asta per un peluche di gnu, mascotte della FSF. </span></p>
|
||||
<div style="text-align: right;">
|
||||
<span style="font-family: inherit;">Francesco Mecca </span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -54,7 +54,8 @@
|
|||
|
||||
|
||||
<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">
|
||||
<tr>
|
||||
<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>
|
||||
<div style="text-align: right;">
|
||||
Francesco Mecca
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
|
|
@ -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="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>
|
||||
<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">
|
||||
|
||||
<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">
|
||||
<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 dell’informazione, 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 l’informazione 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 dell’editoria 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>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>** <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><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>
|
||||
|
@ -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>Le linee guida sull’accuratezza e la serieta` dell’informazione e sul rispetto per i lettori non cambiano. Cambiano i modi di scrivere per il settore digitale rispetto al cartaceo.</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>**</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>**</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><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 dall’imporsi del secondo. Quanto c’e` 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;">
|
||||
Francesco Mecca
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
|
|
@ -41,7 +41,7 @@ Con l’avvento dell’informatizzazione e` notevolmente mutata la modalita` con
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -55,7 +55,8 @@ Con l’avvento dell’informatizzazione e` notevolmente mutata la modalita` con
|
|||
|
||||
|
||||
<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 l’avvento dell’informatizzazione e` notevolmente mutata la modalita` con cui l’avvocato svolge la propria professione; sinteticamente si puo` arrivare ad affermare che al di la` della partecipazione alle udienze e il ricevimento dei clienti, tutta l’attivita` 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 (l’INAIL) e pertanto unico mio cliente e` l’Istituto che io difendo sia in ambito giudiziario (cause legali) che extragiudiziario (composizione bonaria delle liti).</p>
|
||||
<p>L’avvento dell’informatica ha modificato il modo di lavorare nella sua globalita`, vediamo pertanto le singole fasi dell’attivita`.</p>
|
||||
|
@ -108,6 +109,7 @@ Con l’avvento dell’informatizzazione e` notevolmente mutata la modalita` con
|
|||
</div>
|
||||
|
||||
<p> </p>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
|
|
|
@ -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="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>
|
||||
<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">
|
||||
|
||||
<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">
|
||||
<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> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -54,7 +54,8 @@
|
|||
|
||||
|
||||
<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 l’omicidio in prima persona di due giornalisti in Virginia durante un live broadcast televisivo. Durante l’inseguimento nel quale si e` tolto la vita Flanagan ha caricato su Twitter e Facebook il video dell’uccisione in prima persona.</p>
|
||||
<p>Twitter e Facebook hanno tempestivamente censurato il video e rimosso l’account dell’omicida 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>
|
||||
|
@ -83,6 +84,7 @@
|
|||
<p style="text-align: right;">
|
||||
Francesco Mecca
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
|
|
|
@ -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="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>
|
||||
<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">
|
||||
|
||||
<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">
|
||||
<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>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>
|
||||
|
@ -77,6 +78,7 @@ perl-cleaner --all</pre>
|
|||
<p style="text-align: right;">
|
||||
Francesco Mecca
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
|
|
|
@ -47,7 +47,7 @@
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -61,7 +61,8 @@
|
|||
|
||||
|
||||
<div class="e-content entry-content" itemprop="articleBody text">
|
||||
<p style="text-align: left;">
|
||||
<div>
|
||||
<p style="text-align: left;">
|
||||
The Buridan’s donkey is an illustration of a paradox regarding the philosophy of moral determinism and free will.
|
||||
</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 can’t 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>.. code:: c</p>
|
||||
<div class="code"><pre class="code literal-block"><span class="n">#include</span><span class="w"> </span><span class="o"><</span><span class="n">iostream</span><span class="o">></span>
|
||||
<span class="n">#include</span><span class="w"> </span><span class="o"><</span><span class="n">vector</span><span class="o">></span>
|
||||
<span class="n">#include</span><span class="w"> </span><span class="o"><</span><span class="n">algorithm</span><span class="o">></span>
|
||||
<span class="n">#include</span><span class="w"> </span><span class="o"><</span><span class="n">random</span><span class="o">></span>
|
||||
<span class="n">#include</span><span class="w"> </span><span class="o"><</span><span class="n">string</span><span class="o">></span>
|
||||
<span class="n">#include</span><span class="w"> </span><span class="o"><</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">></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>
|
||||
<pre class="code literal-block"><span></span><span class="cp">#include</span> <span class="cpf"><iostream></span><span class="cp"></span>
|
||||
<span class="cp">#include</span> <span class="cpf"><vector></span><span class="cp"></span>
|
||||
<span class="cp">#include</span> <span class="cpf"><algorithm></span><span class="cp"></span>
|
||||
<span class="cp">#include</span> <span class="cpf"><random></span><span class="cp"></span>
|
||||
<span class="cp">#include</span> <span class="cpf"><string></span><span class="cp"></span>
|
||||
<span class="cp">#include</span> <span class="cpf"><sys/poll.h></span><span class="cp"></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="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="err">}</span><span class="p">;</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="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="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"><</span><span class="n">string</span><span class="o">>&</span><span class="w"> </span><span class="n">lst</span><span class="p">)</span>
|
||||
<span class="err">{</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="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="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="w"> </span><span class="err">}</span>
|
||||
<span class="err">}</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"><</span><span class="kr">string</span><span class="o">>&</span> <span class="n">lst</span><span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="kr">string</span> <span class="n">x</span><span class="p">;</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="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="p">}</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">&</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"><</span><span class="n">string</span><span class="o">>&</span><span class="w"> </span><span class="n">lst</span><span class="p">)</span>
|
||||
<span class="err">{</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="w"> </span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="ss">"Usage: asino [string] [string] ..."</span><span class="w"> </span><span class="o"><<</span><span class="w"> </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="w"> </span><span class="err">}</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"><</span><span class="n">string</span><span class="o">>::</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"><</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="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="w"> </span><span class="err">}</span>
|
||||
<span class="err">}</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">&</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"><</span><span class="kr">string</span><span class="o">>&</span> <span class="n">lst</span><span class="p">)</span>
|
||||
<span class="p">{</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="n">cout</span> <span class="o"><<</span> <span class="s">"Usage: asino [string] [string] ..."</span> <span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
|
||||
<span class="n">exit</span><span class="p">;</span>
|
||||
<span class="p">}</span>
|
||||
<span class="k">for</span> <span class="p">(</span><span class="n">vector</span><span class="o"><</span><span class="kr">string</span><span class="o">>::</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"><</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="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="p">}</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="err">{</span>
|
||||
<span class="w"> </span><span class="n">vector</span><span class="o"><</span><span class="n">string</span><span class="o">></span><span class="w"> </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">&</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="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">></span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="err">{</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="w"> </span><span class="err">}</span>
|
||||
<span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="err">{</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="w"> </span><span class="err">}</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="p">{</span>
|
||||
<span class="n">vector</span><span class="o"><</span><span class="kr">string</span><span class="o">></span> <span class="n">lst</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">&</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="k">if</span> <span class="p">(</span><span class="n">poll_ret</span> <span class="o">></span> <span class="mi">0</span><span class="p">)</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="p">}</span>
|
||||
<span class="k">else</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="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="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="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">random_device</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="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"><</span><span class="kr">string</span><span class="o">>::</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"><<</span> <span class="n">i</span><span class="o">++</span> <span class="o"><<</span> <span class="s">". "</span> <span class="o"><<</span> <span class="o">*</span><span class="n">it</span> <span class="o"><<</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"><</span><span class="n">string</span><span class="o">>::</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"><<</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="ss">". "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="o">*</span><span class="n">it</span><span class="w"> </span><span class="o"><<</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 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:
|
||||
</p>
|
||||
|
||||
<p>.. code:: sh</p>
|
||||
<div class="code"><pre class="code literal-block">ls /media/my_movies/ | buridan
|
||||
</pre></div>
|
||||
<pre class="code literal-block"><span></span>ls /media/my_movies/ | buridan
|
||||
</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>.. code:: bash</p>
|
||||
<div class="code"><pre class="code literal-block">poll (&stdin_poll, 1, 0)
|
||||
</pre></div>
|
||||
<pre class="code literal-block"><span></span>poll (&stdin_poll, 1, 0)
|
||||
</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>The program should be compiled this way:</p>
|
||||
<p>.. code:: bash</p>
|
||||
<div class="code"><pre class="code literal-block">g++ -std=c++11 ./program.cpp -o output
|
||||
</pre></div>
|
||||
<pre class="code literal-block"><span></span>g++ -std=c++11 ./program.cpp -o output
|
||||
</pre>
|
||||
|
||||
|
||||
<p>You are free to reuse this little piece of code as you wish.</p>
|
||||
<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;">
|
||||
Francesco Mecca
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
|
|
|
@ -43,7 +43,7 @@ Mi auguro che">
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -57,7 +57,8 @@ Mi auguro che">
|
|||
|
||||
|
||||
<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>
|
||||
<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.
|
||||
|
@ -73,34 +74,34 @@ Noi abbiamo questi dati:</p>
|
|||
<table>
|
||||
<thead><tr>
|
||||
<th>PREZZO ORIGINALE</th>
|
||||
<th style="text-align: center;">Km percorsi</th>
|
||||
<th style="text-align: center;">stato di usura</th>
|
||||
<th style="text-align: right;">PREZZO FINALE</th>
|
||||
<th align="center">Km percorsi</th>
|
||||
<th align="center">stato di usura</th>
|
||||
<th align="right">PREZZO FINALE</th>
|
||||
</tr></thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>50 000</td>
|
||||
<td style="text-align: center;">120 000</td>
|
||||
<td style="text-align: center;">lieve</td>
|
||||
<td style="text-align: right;">40 000</td>
|
||||
<td align="center">120 000</td>
|
||||
<td align="center">lieve</td>
|
||||
<td align="right">40 000</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>30 000</td>
|
||||
<td style="text-align: center;">150 000</td>
|
||||
<td style="text-align: center;">notevole</td>
|
||||
<td style="text-align: right;">8 000</td>
|
||||
<td align="center">150 000</td>
|
||||
<td align="center">notevole</td>
|
||||
<td align="right">8 000</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>20 000</td>
|
||||
<td style="text-align: center;">80 000</td>
|
||||
<td style="text-align: center;">lieve</td>
|
||||
<td style="text-align: right;">15 000</td>
|
||||
<td align="center">80 000</td>
|
||||
<td align="center">lieve</td>
|
||||
<td align="right">15 000</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>20 000</td>
|
||||
<td style="text-align: center;">120 000</td>
|
||||
<td style="text-align: center;">notevole</td>
|
||||
<td style="text-align: right;">...</td>
|
||||
<td align="center">120 000</td>
|
||||
<td align="center">notevole</td>
|
||||
<td align="right">...</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -115,29 +116,29 @@ Possiamo capire già da ora che nel caso ci fossero dati che "inquinano" il nost
|
|||
<table>
|
||||
<thead><tr>
|
||||
<th>PREZZO ORIGINALE</th>
|
||||
<th style="text-align: center;">Km percorsi</th>
|
||||
<th style="text-align: right;">stato di usura</th>
|
||||
<th align="center">Km percorsi</th>
|
||||
<th align="right">stato di usura</th>
|
||||
</tr></thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>50 000</td>
|
||||
<td style="text-align: center;">120 000</td>
|
||||
<td style="text-align: right;">lieve</td>
|
||||
<td align="center">120 000</td>
|
||||
<td align="right">lieve</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>30 000</td>
|
||||
<td style="text-align: center;">150 000</td>
|
||||
<td style="text-align: right;">notevole</td>
|
||||
<td align="center">150 000</td>
|
||||
<td align="right">notevole</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>20 000</td>
|
||||
<td style="text-align: center;">80 000</td>
|
||||
<td style="text-align: right;">lieve</td>
|
||||
<td align="center">80 000</td>
|
||||
<td align="right">lieve</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>20 000</td>
|
||||
<td style="text-align: center;">120 000</td>
|
||||
<td style="text-align: right;">notevole</td>
|
||||
<td align="center">120 000</td>
|
||||
<td align="right">notevole</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</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:
|
||||
<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>
|
||||
<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>
|
||||
<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="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>
|
||||
<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="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="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.
|
||||
Una volta stabiliti i pesi, il nostro algoritmo di supervised learning applica questi pesi ai dati originali e ne valuta l'errore:</p>
|
||||
<table>
|
||||
<thead><tr>
|
||||
<th>PREZZO ORIGINALE</th>
|
||||
<th style="text-align: center;">Km percorsi</th>
|
||||
<th style="text-align: center;">stato di usura</th>
|
||||
<th style="text-align: center;">PREZZO FINALE</th>
|
||||
<th style="text-align: right;">PREZZO STIMATO</th>
|
||||
<th align="center">Km percorsi</th>
|
||||
<th align="center">stato di usura</th>
|
||||
<th align="center">PREZZO FINALE</th>
|
||||
<th align="right">PREZZO STIMATO</th>
|
||||
</tr></thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>50 000</td>
|
||||
<td style="text-align: center;">120 000</td>
|
||||
<td style="text-align: center;">lieve</td>
|
||||
<td style="text-align: center;">40 000</td>
|
||||
<td style="text-align: right;">374888</td>
|
||||
<td align="center">120 000</td>
|
||||
<td align="center">lieve</td>
|
||||
<td align="center">40 000</td>
|
||||
<td align="right">374888</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>30 000</td>
|
||||
<td style="text-align: center;">150 000</td>
|
||||
<td style="text-align: center;">notevole</td>
|
||||
<td style="text-align: center;">8 000</td>
|
||||
<td style="text-align: right;">16000</td>
|
||||
<td align="center">150 000</td>
|
||||
<td align="center">notevole</td>
|
||||
<td align="center">8 000</td>
|
||||
<td align="right">16000</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>20 000</td>
|
||||
<td style="text-align: center;">80 000</td>
|
||||
<td style="text-align: center;">lieve</td>
|
||||
<td style="text-align: center;">15 000</td>
|
||||
<td style="text-align: right;">13492</td>
|
||||
<td align="center">80 000</td>
|
||||
<td align="center">lieve</td>
|
||||
<td align="center">15 000</td>
|
||||
<td align="right">13492</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>20 000</td>
|
||||
<td style="text-align: center;">120 000</td>
|
||||
<td style="text-align: center;">notevole</td>
|
||||
<td style="text-align: center;">...</td>
|
||||
<td style="text-align: right;">10988</td>
|
||||
<td align="center">120 000</td>
|
||||
<td align="center">notevole</td>
|
||||
<td align="center">...</td>
|
||||
<td align="right">10988</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</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.
|
||||
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>
|
||||
<div class="code"><pre class="code literal-block"><span class="c">|</span><span class="nb">---------------------------------------------------</span><span class="c">|</span>
|
||||
<span class="c">| PREZZO_ORIG * peso A1 </span><span class="nb">-----</span><span class="nv">></span><span class="c"> |</span>
|
||||
<span class="c">| KM_PERCORSI * peso B1 </span><span class="nb">-----</span><span class="nv">></span><span class="c"> |</span>
|
||||
<span class="c">| STATO_USURA * peso C1 </span><span class="nb">-----</span><span class="nv">></span><span class="c"> |</span>
|
||||
<span class="c">| PREZZO FINALE STIMATO 1|</span>
|
||||
<span class="c">|</span><span class="nb">---------------------------------------------------</span><span class="c">|</span>
|
||||
<pre class="code literal-block"><span></span>|---------------------------------------------------|
|
||||
| PREZZO_ORIG * peso A1 -----> |
|
||||
| KM_PERCORSI * peso B1 -----> |
|
||||
| STATO_USURA * peso C1 -----> |
|
||||
| PREZZO FINALE STIMATO 1|
|
||||
|---------------------------------------------------|
|
||||
|
||||
<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">></span><span class="c"> |</span>
|
||||
<span class="c">| KM_PERCORSI * peso B2 </span><span class="nb">-----</span><span class="nv">></span><span class="c"> |</span>
|
||||
<span class="c">| STATO_USURA * peso C2 </span><span class="nb">-----</span><span class="nv">></span><span class="c"> |</span>
|
||||
<span class="c">| PREZZO FINALE STIMATO 2|</span>
|
||||
<span class="c">|</span><span class="nb">---------------------------------------------------</span><span class="c">|</span>
|
||||
| --------------------------------------------------|
|
||||
| PREZZO_ORIG * peso A2 -----> |
|
||||
| KM_PERCORSI * peso B2 -----> |
|
||||
| STATO_USURA * peso C2 -----> |
|
||||
| PREZZO FINALE STIMATO 2|
|
||||
|---------------------------------------------------|
|
||||
|
||||
| --------------------------------------------------|
|
||||
| PREZZO_ORIG * peso A3 -----> |
|
||||
| KM_PERCORSI * peso B3 -----> |
|
||||
| STATO_USURA * peso C3 -----> |
|
||||
| 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">></span><span class="c"> |</span>
|
||||
<span class="c">| KM_PERCORSI * peso B3 </span><span class="nb">-----</span><span class="nv">></span><span class="c"> |</span>
|
||||
<span class="c">| STATO_USURA * peso C3 </span><span class="nb">-----</span><span class="nv">></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>
|
||||
<div class="code"><pre class="code literal-block"><span class="c">| </span><span class="nb">--------------------------------------------------</span><span class="c">|</span>
|
||||
<span class="c">| PREZZO_1 * peso X </span><span class="nb">-----</span><span class="nv">></span><span class="c"> |</span>
|
||||
<span class="c">| PREZZO_2 * peso Y </span><span class="nb">-----</span><span class="nv">></span><span class="c"> |</span>
|
||||
<span class="c">| PREZZO_3 * peso Z </span><span class="nb">-----</span><span class="nv">></span><span class="c"> |</span>
|
||||
<span class="c">| PREZZO FINALE DEF |</span>
|
||||
<span class="c">|</span><span class="nb">---------------------------------------------------</span><span class="c">|</span>
|
||||
</pre></div>
|
||||
<pre class="code literal-block"><span></span>| --------------------------------------------------|
|
||||
| PREZZO_1 * peso X -----> |
|
||||
| PREZZO_2 * peso Y -----> |
|
||||
| PREZZO_3 * peso Z -----> |
|
||||
| PREZZO FINALE DEF |
|
||||
|---------------------------------------------------|
|
||||
</pre>
|
||||
|
||||
|
||||
<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>
|
||||
|
@ -251,6 +255,7 @@ Proviamo a visualizzarla in un'immagine dove i box arancioni sono i nodi di inpu
|
|||
</li>
|
||||
</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>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ La rete ">
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -59,7 +59,8 @@ La rete ">
|
|||
|
||||
|
||||
<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>
|
||||
<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.
|
||||
|
@ -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.
|
||||
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>
|
||||
<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>
|
||||
<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>
|
||||
</pre></div>
|
||||
<pre class="code literal-block"><span></span>tyntd-iafhatawiaoihrdemot lytdws e ,tfti, astai f ogoh eoase rrranbyne 'nhthnee e
|
||||
plia tklrgd t o idoe ns,smtt h ne etie h,hregtrs nigtike,aoaenns lngty
|
||||
</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.
|
||||
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>
|
||||
<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
|
||||
sheulke, anmerenith ol sivh I lalterthend Bleipile shuwy fil on aseterlome
|
||||
coaniogennc Phe lism thond hon at. MeiDimorotion in ther thize."
|
||||
</pre></div>
|
||||
</pre>
|
||||
|
||||
|
||||
<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>
|
||||
<span class="err">her hearly, and behs to so arwage fiving were to it beloge, pavu say falling misfort </span>
|
||||
<span class="err">how, and Gogition is so overelical and ofter.</span>
|
||||
</pre></div>
|
||||
<pre class="code literal-block"><span></span>Aftair fall unsuch that the hall for Prince Velzonski's that me of
|
||||
her hearly, and behs to so arwage fiving were to it beloge, pavu say falling misfort
|
||||
how, and Gogition is so overelical and ofter.
|
||||
</pre>
|
||||
|
||||
|
||||
<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>
|
||||
<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>.
|
||||
<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>.
|
||||
</pre></div>
|
||||
<pre class="code literal-block"><span></span>"Why do what that day," replied Natasha, and wishing to himself the fact the
|
||||
princess, Princess Mary was easier, fed in had oftened him.
|
||||
Pierre aking his soul came to the packs and drove up his father-in-law women.
|
||||
</pre>
|
||||
|
||||
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
|
|
|
@ -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="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>
|
||||
<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">
|
||||
|
||||
<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">
|
||||
<h3>Riconoscimento delle immagini</h3>
|
||||
<div>
|
||||
<h3>Riconoscimento delle immagini</h3>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
|
|
|
@ -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="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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -52,10 +52,12 @@
|
|||
|
||||
|
||||
<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>
|
||||
</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>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
|
|
|
@ -41,7 +41,7 @@ So I switched to mpd">
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -55,7 +55,8 @@ So I switched to mpd">
|
|||
|
||||
|
||||
<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.
|
||||
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>
|
||||
|
@ -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
|
||||
The most interesting part in this file IMHO is these lines:</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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
</pre></div>
|
||||
<pre class="code literal-block"><span></span> for el in argsOrder:
|
||||
if dictArgs[el] != False:
|
||||
client.update_status ()
|
||||
methodToCall = getattr (util, el)
|
||||
retUtil = methodToCall (client, dictArgs[el], searchRes)
|
||||
</pre>
|
||||
|
||||
|
||||
<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.
|
||||
|
@ -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.
|
||||
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>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
|
|
|
@ -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="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>
|
||||
<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">
|
||||
|
||||
<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">
|
||||
<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.
|
||||
Sono stato subito scosso dall'articolo, dove si spiega:</p>
|
||||
<blockquote>
|
||||
|
@ -64,7 +65,7 @@ Sono stato subito scosso dall'articolo, dove si spiega:</p>
|
|||
</blockquote>
|
||||
<p>Continuo la mia navigazione imbattendomi nei seguenti titoli di alcune testate italiane:</p>
|
||||
<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>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 l’inventore del Bitcoin</a>
|
||||
</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.
|
||||
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>
|
||||
<!--![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.
|
||||
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.
|
||||
|
@ -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>
|
||||
</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>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -52,7 +52,8 @@
|
|||
|
||||
|
||||
<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>
|
||||
<h2>Welcome to Jekyll and Hyde</h2>
|
||||
<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
|
||||
title: Archive
|
||||
---</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"> &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>
|
||||
</pre></div>
|
||||
</pre>
|
||||
|
||||
|
||||
<p>{% endraw %}
|
||||
I noticed that in _includes/head.html there is this line:</p>
|
||||
<div class="code"><pre class="code literal-block"><span class="p"><</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></div>
|
||||
<pre class="code literal-block"><span></span><link href='https://fonts.googleapis.com/css?family=Open+Sans:400,300,700,800,600' rel='stylesheet' type='text/css'
|
||||
</pre>
|
||||
|
||||
|
||||
<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>
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
|
|
|
@ -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="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>
|
||||
<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">
|
||||
|
||||
<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">
|
||||
<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>
|
||||
<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++.
|
||||
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>
|
||||
<p>All the code is opensource and can be found on my github page.</p>
|
||||
<p>Francesco Mecca</p>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
|
|
|
@ -42,7 +42,7 @@ In thi">
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -56,7 +56,8 @@ In thi">
|
|||
|
||||
|
||||
<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.
|
||||
In this post I want to explain some bits of our work.</p>
|
||||
<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>The fitness function is not as precise as it should be because this is only a proof of concept:</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>
|
||||
<span class="n">rangeLimit</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">5</span>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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"><</span><span class="w"> </span><span class="mi">0</span><span class="err">:</span>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
</pre></div>
|
||||
<pre class="code literal-block"><span></span>mutationProbability = 0.1
|
||||
rangeLimit = 5
|
||||
def fitness(item, pointList, n):
|
||||
value = 0
|
||||
for p in pointList:
|
||||
y = 0
|
||||
for i in range(n):
|
||||
y += item.gene[i] * pow(p.x, i)
|
||||
result = 1 - (abs (p.y - y) / rangeLimit)
|
||||
if result < 0:
|
||||
result = 0
|
||||
value += result
|
||||
return value / n
|
||||
</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>
|
||||
<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>
|
||||
<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>
|
||||
</pre></div>
|
||||
<pre class="code literal-block"><span></span>for i in range(n):
|
||||
y += item.gene[i] * pow(p.x, i)
|
||||
</pre>
|
||||
|
||||
|
||||
<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>
|
||||
<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"><</span><span class="w"> </span><span class="mi">0</span>:
|
||||
<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>
|
||||
</pre></div>
|
||||
<pre class="code literal-block"><span></span>result = 1 - (abs (p.y - y) / rangeLimit)
|
||||
if result < 0:
|
||||
result = 0
|
||||
</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.
|
||||
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.
|
||||
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></div>
|
||||
<pre class="code literal-block"><span></span>-0.0487839869993989 * x^0 + 4.600339125358671 * x^1 + -0.2780958075230644 * x^2
|
||||
</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>For a more precise computation a higher population size and a really high number of iterations should be used.</p>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
|
|
|
@ -41,7 +41,7 @@ Never buy high-end c">
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
|
|
@ -42,7 +42,7 @@ The key in Wright's">
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -56,14 +56,16 @@ The key in Wright's">
|
|||
|
||||
|
||||
<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.
|
||||
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>
|
||||
<span class="c">MEUCIQDBKn1Uly8m0UyzETObUSL4wYdBfd4ejvtoQfVcNCIK4AIgZmMsXNQWHvo6KDd2Tu6euEl1</span>
|
||||
<span class="c">3VTC3ihl6XUlhcU</span><span class="nb">+</span><span class="c">fM4=</span>
|
||||
<span class="nb">-------------------------</span><span class="c"> End Signature </span><span class="nb">--------------------------</span>
|
||||
</pre></div>
|
||||
<pre class="code literal-block"><span></span>------------------------- Signature File -------------------------
|
||||
MEUCIQDBKn1Uly8m0UyzETObUSL4wYdBfd4ejvtoQfVcNCIK4AIgZmMsXNQWHvo6KDd2Tu6euEl1
|
||||
3VTC3ihl6XUlhcU+fM4=
|
||||
------------------------- End Signature --------------------------
|
||||
</pre>
|
||||
|
||||
|
||||
<p>Now we can use some bash utilities:</p>
|
||||
<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>tr, used to delete spaces and carriage return from the input;</li>
|
||||
</ul>
|
||||
<div class="code"><pre class="code literal-block">base64 -d <<<'MEUCIQDBKn1Uly8m0UyzETObUSL4wYdBfd4ejvtoQfVcNCIK4AIgZmMsXNQWHvo6KDd2Tu6euEl13VTC3ihl6XUlhcU+fM4=' | hexdump -C| cut -b 11-60| tr -d ' \n'
|
||||
<pre class="code literal-block"><span></span>base64 -d <<<'MEUCIQDBKn1Uly8m0UyzETObUSL4wYdBfd4ejvtoQfVcNCIK4AIgZmMsXNQWHvo6KDd2Tu6euEl13VTC3ihl6XUlhcU+fM4=' | hexdump -C| cut -b 11-60| tr -d ' \n'
|
||||
|
||||
3045022100c12a7d54972f26d14cb311339b5122f8c187417dde1e8efb6841f55c34220ae0022066632c5cd4161efa3a2837764eee9eb84975dd54c2de2865e9752585c53e7cce
|
||||
</pre></div>
|
||||
</pre>
|
||||
|
||||
|
||||
<p>Let's analyze the command one by one:</p>
|
||||
<ul>
|
||||
|
@ -84,46 +87,52 @@ The key in Wright's <a href="http://www.drcraigwright.net/jean-paul-sartre-signi
|
|||
<li>
|
||||
<code>hexdump -C</code> is used with a pipe to convert to hexadecimal:</li>
|
||||
</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">&</span><span class="mf">.</span><span class="n">L</span><span class="mf">..</span><span class="err">|</span>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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">></span><span class="err">|</span><span class="mf">.</span><span class="err">|</span>
|
||||
</pre></div>
|
||||
<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./&.L..|
|
||||
00000010 33 9b 51 22 f8 c1 87 41 7d de 1e 8e fb 68 41 f5 |3.Q"...A}....hA.|
|
||||
00000020 5c 34 22 0a e0 02 20 66 63 2c 5c d4 16 1e fa 3a |\4"... fc,\....:|
|
||||
00000030 28 37 76 4e ee 9e b8 49 75 dd 54 c2 de 28 65 e9 |(7vN...Iu.T..(e.|
|
||||
00000040 75 25 85 c5 3e 7c ce |u%..>|.|
|
||||
</pre>
|
||||
|
||||
|
||||
<ul>
|
||||
<li>cut -b 11-60 displays only the characters from column 11 to 60:</li>
|
||||
</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>
|
||||
<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="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="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="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>
|
||||
</pre></div>
|
||||
<pre class="code literal-block"><span></span>30 45 02 21 00 c1 2a 7d 54 97 2f 26 d1 4c b3 11
|
||||
33 9b 51 22 f8 c1 87 41 7d de 1e 8e fb 68 41 f5
|
||||
5c 34 22 0a e0 02 20 66 63 2c 5c d4 16 1e fa 3a
|
||||
28 37 76 4e ee 9e b8 49 75 dd 54 c2 de 28 65 e9
|
||||
75 25 85 c5 3e 7c ce
|
||||
</pre>
|
||||
|
||||
|
||||
<ul>
|
||||
<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>
|
||||
<div class="code"><pre class="code literal-block"><span class="mf">3045022100</span><span class="n">c12a7d54972f26d14cb311339b5122f8c187417dde1e8efb6841f55c34220ae0022066632c5cd4161efa3a2837764eee9eb84975dd54c2de2865e9752585c53e7cce</span>
|
||||
</pre></div>
|
||||
<pre class="code literal-block"><span></span>3045022100c12a7d54972f26d14cb311339b5122f8c187417dde1e8efb6841f55c34220ae0022066632c5cd4161efa3a2837764eee9eb84975dd54c2de2865e9752585c53e7cce
|
||||
</pre>
|
||||
|
||||
|
||||
<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"><<<</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.
|
||||
</pre></div>
|
||||
<pre class="code literal-block"><span></span>$ base64 -d <span class="o"><<<</span><span class="s1">'IFdyaWdodCwgaXQgaXMgbm90IHRoZSBzYW1lIGFzIGlmIEkgc2lnbiBDcmFpZyBXcmlnaHQsIFNhdG9zaGkuCgo='</span>
|
||||
Wright, it is not the same as <span class="k">if</span> I sign Craig Wright, Satoshi.
|
||||
</pre>
|
||||
|
||||
|
||||
<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>
|
||||
<p><a href="https://blockchain.info/tx/828ef3b079f9c23829c56fe86e85b4a69d9e06e5b54ea597eef5fb3ffef509fe">tx/828ef3b079f9c23829c56fe86e85b4a69d9e06e5b54ea597eef5fb3ffef509fe</a>
|
||||
<a href="https://blockchain.info/tx/828ef3b079f9c23829c56fe86e85b4a69d9e06e5b54ea597eef5fb3ffef509fe?format=hex">tx/828ef3b079f9... in hexadecimal</a></p>
|
||||
<p>As you can see the entire output of the first bash command, that is</p>
|
||||
<div class="code"><pre class="code literal-block"><span class="mf">3045022100</span><span class="n">c12a7d54972f26d14cb311339b5122f8c187417dde1e8efb6841f55c34220ae0022066632c5cd4161efa3a2837764eee9eb84975dd54c2de2865e9752585c53e7cce</span>
|
||||
</pre></div>
|
||||
<pre class="code literal-block"><span></span>3045022100c12a7d54972f26d14cb311339b5122f8c187417dde1e8efb6841f55c34220ae0022066632c5cd4161efa3a2837764eee9eb84975dd54c2de2865e9752585c53e7cce
|
||||
</pre>
|
||||
|
||||
|
||||
<p>is contained in:</p>
|
||||
<div class="code"><pre class="code literal-block">"script":"483045022100c12a7d54972f26d14cb311339b5122f8c187417dde1e8efb6841f55c34220ae0022066632c5cd4161efa3a2837764eee9eb84975dd54c2de2865e9752585c53e7cce01"
|
||||
</pre></div>
|
||||
<pre class="code literal-block"><span></span>"script":"483045022100c12a7d54972f26d14cb311339b5122f8c187417dde1e8efb6841f55c34220ae0022066632c5cd4161efa3a2837764eee9eb84975dd54c2de2865e9752585c53e7cce01"
|
||||
</pre>
|
||||
|
||||
|
||||
<p>except for the 48 at the beginning and the 01 at the end.</p>
|
||||
<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.
|
||||
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>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
|
|
|
@ -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="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>
|
||||
<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">
|
||||
|
||||
<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">
|
||||
<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>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>
|
||||
|
@ -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.
|
||||
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>
|
||||
<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 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><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>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
|
|
|
@ -66,7 +66,7 @@ sta">
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -80,102 +80,104 @@ sta">
|
|||
|
||||
|
||||
<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>
|
||||
<thead><tr>
|
||||
<th></th>
|
||||
<th style="text-align: center;">Whatsapp</th>
|
||||
<th style="text-align: center;">Telegram</th>
|
||||
<th style="text-align: right;">Signal</th>
|
||||
<th align="center">Whatsapp</th>
|
||||
<th align="center">Telegram</th>
|
||||
<th align="right">Signal</th>
|
||||
</tr></thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Source code</td>
|
||||
<td style="text-align: center;">closed source</td>
|
||||
<td style="text-align: center;">open source</td>
|
||||
<td style="text-align: right;">open source</td>
|
||||
<td align="center">closed source</td>
|
||||
<td align="center">open source</td>
|
||||
<td align="right">open source</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Api</td>
|
||||
<td style="text-align: center;">none</td>
|
||||
<td style="text-align: center;">various</td>
|
||||
<td style="text-align: right;">library</td>
|
||||
<td align="center">none</td>
|
||||
<td align="center">various</td>
|
||||
<td align="right">library</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Encription protocol</td>
|
||||
<td style="text-align: center;">state of the art</td>
|
||||
<td style="text-align: center;">self made</td>
|
||||
<td style="text-align: right;">state of the art</td>
|
||||
<td align="center">state of the art</td>
|
||||
<td align="center">self made</td>
|
||||
<td align="right">state of the art</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Contact list location</td>
|
||||
<td style="text-align: center;">cloud</td>
|
||||
<td style="text-align: center;">cloud</td>
|
||||
<td style="text-align: right;">cloud, encrypted</td>
|
||||
<td align="center">cloud</td>
|
||||
<td align="center">cloud</td>
|
||||
<td align="right">cloud, encrypted</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Forward Secrecy</td>
|
||||
<td style="text-align: center;">yes</td>
|
||||
<td style="text-align: center;">yes</td>
|
||||
<td style="text-align: right;">yes</td>
|
||||
<td align="center">yes</td>
|
||||
<td align="center">yes</td>
|
||||
<td align="right">yes</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Database</td>
|
||||
<td style="text-align: center;">phone storage</td>
|
||||
<td style="text-align: center;">cloud</td>
|
||||
<td style="text-align: right;">phone storage</td>
|
||||
<td align="center">phone storage</td>
|
||||
<td align="center">cloud</td>
|
||||
<td align="right">phone storage</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Backup capability</td>
|
||||
<td style="text-align: center;">Icloud or Gcloud</td>
|
||||
<td style="text-align: center;">builtin</td>
|
||||
<td style="text-align: right;">none</td>
|
||||
<td align="center">Icloud or Gcloud</td>
|
||||
<td align="center">builtin</td>
|
||||
<td align="right">none</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Revenue</td>
|
||||
<td style="text-align: center;">ads (Facebook)</td>
|
||||
<td style="text-align: center;">donation based</td>
|
||||
<td style="text-align: right;">donation based</td>
|
||||
<td align="center">ads (Facebook)</td>
|
||||
<td align="center">donation based</td>
|
||||
<td align="right">donation based</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Federation</td>
|
||||
<td style="text-align: center;">no</td>
|
||||
<td style="text-align: center;">no</td>
|
||||
<td style="text-align: right;">no</td>
|
||||
<td align="center">no</td>
|
||||
<td align="center">no</td>
|
||||
<td align="right">no</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Alternative download location</td>
|
||||
<td style="text-align: center;">website</td>
|
||||
<td style="text-align: center;">F-Droid</td>
|
||||
<td style="text-align: right;">none</td>
|
||||
<td align="center">website</td>
|
||||
<td align="center">F-Droid</td>
|
||||
<td align="right">none</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Uses third party services</td>
|
||||
<td style="text-align: center;">no</td>
|
||||
<td style="text-align: center;">no</td>
|
||||
<td style="text-align: right;">Google Cloud Messaging</td>
|
||||
<td align="center">no</td>
|
||||
<td align="center">no</td>
|
||||
<td align="right">Google Cloud Messaging</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Servers location</td>
|
||||
<td style="text-align: center;">US</td>
|
||||
<td style="text-align: center;">Russia</td>
|
||||
<td style="text-align: right;">US</td>
|
||||
<td align="center">US</td>
|
||||
<td align="center">Russia</td>
|
||||
<td align="right">US</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Tied to mobile number</td>
|
||||
<td style="text-align: center;">yes</td>
|
||||
<td style="text-align: center;">yes, but nickname available</td>
|
||||
<td style="text-align: right;">yes</td>
|
||||
<td align="center">yes</td>
|
||||
<td align="center">yes, but nickname available</td>
|
||||
<td align="right">yes</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Desktop client</td>
|
||||
<td style="text-align: center;">no</td>
|
||||
<td style="text-align: center;">yes</td>
|
||||
<td style="text-align: right;">no</td>
|
||||
<td align="center">no</td>
|
||||
<td align="center">yes</td>
|
||||
<td align="right">no</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
<ul itemprop="keywords" class="tags">
|
||||
|
|
|
@ -44,7 +44,7 @@ What follows is 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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -58,7 +58,8 @@ What follows is a">
|
|||
|
||||
|
||||
<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>
|
||||
<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>
|
||||
|
@ -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>
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
|
|
|
@ -43,7 +43,7 @@ Helpful references
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -57,7 +57,8 @@ Helpful references
|
|||
|
||||
|
||||
<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>
|
||||
<h3>Helpful references</h3>
|
||||
<ul>
|
||||
|
@ -83,29 +84,29 @@ Helpful references
|
|||
<h3>Cost Breakdown</h3>
|
||||
<table>
|
||||
<thead><tr>
|
||||
<th style="text-align: left;">Cost</th>
|
||||
<th style="text-align: left;">Part</th>
|
||||
<th align="left">Cost</th>
|
||||
<th align="left">Part</th>
|
||||
</tr></thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left;">$8</td>
|
||||
<td style="text-align: left;">PCB</td>
|
||||
<td align="left">$8</td>
|
||||
<td align="left">PCB</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left;">€ 12-30</td>
|
||||
<td style="text-align: left;">Pro Micros</td>
|
||||
<td align="left">€ 12-30</td>
|
||||
<td align="left">Pro Micros</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left;">€3-8</td>
|
||||
<td style="text-align: left;">Diodes</td>
|
||||
<td align="left">€3-8</td>
|
||||
<td align="left">Diodes</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left;">€14-80</td>
|
||||
<td style="text-align: left;">Switches</td>
|
||||
<td align="left">€14-80</td>
|
||||
<td align="left">Switches</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left;">€14-180</td>
|
||||
<td style="text-align: left;">Keycaps</td>
|
||||
<td align="left">€14-180</td>
|
||||
<td align="left">Keycaps</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</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>
|
||||
</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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
</pre></div>
|
||||
<pre class="code literal-block"><span></span>VCC [x] [ ] VCC
|
||||
[x] [x]
|
||||
GND [ ] [x] GND
|
||||
</pre>
|
||||
|
||||
|
||||
<p>Do both PCBs the same.</p>
|
||||
<p><img alt="" src="https://i.imgur.com/AUT3VUd.png"></p>
|
||||
|
@ -185,6 +187,7 @@ Helpful references
|
|||
<h2>End Result</h2>
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
|
|
|
@ -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="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>
|
||||
<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">
|
||||
|
||||
<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">
|
||||
<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>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
|
||||
|
@ -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>For the joy of archivists and the ones with a wistful gaze. And still unpleasant for someone.</p>
|
||||
<p>(This translation is for Madeline, thank you for still taking the time to read my blog)</p>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
|
|
|
@ -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="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>
|
||||
<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">
|
||||
|
||||
<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">
|
||||
<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>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>
|
||||
|
@ -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>Piace ai nostalgici, agli archivisti. </p>
|
||||
<p>Spaventa a chi di Internet non vuole farsene una ragione.</p>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -55,8 +55,10 @@
|
|||
|
||||
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
|
|
|
@ -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="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>
|
||||
<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">
|
||||
|
||||
<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">
|
||||
<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>What is the reason for my recent obsession on vaporwave culture?</p>
|
||||
<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>
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
|
|
|
@ -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="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>
|
||||
<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">
|
||||
|
||||
<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">
|
||||
<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>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>
|
||||
|
@ -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>Memory safeness, in particolare:<ul>
|
||||
<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 deadlocks</li>
|
||||
</ul>
|
||||
|
@ -125,45 +127,46 @@ Negli ultimi anni abbiamo assistito all'ascesa di un gran numero di linguaggi di
|
|||
<li>Corpo della funzione</li>
|
||||
</ul>
|
||||
<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">></span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
|
||||
assert (time > 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>
|
||||
<span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||||
in {
|
||||
n > 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">-></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->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">></span><span class="w"> </span><span class="n">c</span><span class="o">-></span><span class="n">time</span><span class="p">;</span>
|
||||
result > c->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>
|
||||
<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>Inoltre il sito della community offre due intro per chi proviene da <a href="https://dlang.org/ctod.html">C</a> e <a href="https://dlang.org/cpptod.html">C++</a>, oltre al classi <a href="https://tour.dlang.org/">tour</a>.</p>
|
||||
<p>Inoltre la libreria standard, <a href="https://github.com/dlang/phobos">Phobos</a>, è talmente chiara che solitamente mi trovo a mio agio a consultare direttamente il codice piuttosto che la documentazione online.</p>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
|
|
|
@ -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="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>
|
||||
<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">
|
||||
|
||||
<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">
|
||||
<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>
|
||||
<h2>In the beginning there was the LMS</h2>
|
||||
<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>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
<ul itemprop="keywords" class="tags">
|
||||
|
|
|
@ -42,7 +42,7 @@ Tempo fa rimasi colpi">
|
|||
<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>
|
||||
<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">
|
||||
|
||||
<header><h1 class="post-title">
|
||||
|
@ -56,7 +56,8 @@ Tempo fa rimasi colpi">
|
|||
|
||||
|
||||
<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>
|
||||
</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>
|
||||
|
@ -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>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>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
|
|
|
@ -13,7 +13,6 @@
|
|||
<link rel="canonical" href="francescomecca.eu/blog/2019/03/06/Dconf-2019/">
|
||||
<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="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:title" content="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="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>
|
||||
<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">
|
||||
|
||||
<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">
|
||||
<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>
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
|
|
|
@ -12,15 +12,15 @@
|
|||
<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/">
|
||||
<meta name="author" content="Francesco Mecca">
|
||||
<link rel="prev" href="../../../03/06/Dconf-2019/" title="Dconf 2019" type="text/html">
|
||||
<link rel="next" href="../../../../2023/08/12/three-years-later/" title="Three years later" type="text/html">
|
||||
<meta name="robots" content="noindex">
|
||||
<meta property="og:site_name" content="Caught in the Net">
|
||||
<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: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.
|
||||
Quest'anno, data la situazione con il">
|
||||
<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.
|
||||
Scopo della lezione
|
||||
Capire la cultura hacker significa entrare in">
|
||||
<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="PesceWanda">
|
||||
<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="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>
|
||||
<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">
|
||||
|
||||
<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>
|
||||
</header><p class="dateline post-date">06 April 2020</p>
|
||||
</header><p class="dateline post-date">18 May 2019</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<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>.
|
||||
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>
|
||||
<div>
|
||||
<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>
|
||||
<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>
|
||||
<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>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>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 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>
|
||||
<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>
|
||||
|
@ -102,12 +102,15 @@ Quest'anno, data la situazione con il corona virus e dato che non voglio essere
|
|||
<p>C# -> C Flat</p>
|
||||
</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>
|
||||
</ul>
|
||||
<h3>Definizione della parola hacker</h3>
|
||||
<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>
|
||||
<li>
|
||||
<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>
|
||||
</li>
|
||||
</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>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>
|
||||
<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>
|
||||
<h2>Chiave di lettura</h2>
|
||||
<p>Nella storia della cultura hacker si possono distinguere tre tipi di persone:</p>
|
||||
<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>
|
||||
</li>
|
||||
<li>
|
||||
<p>i makers, coloro che costruiscono ciò 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>
|
||||
<p>i makers, coloro che costruiscono cio` che gli altri usano, come Bill Gates.
|
||||
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>
|
||||
</ul>
|
||||
<h2>Storia</h2>
|
||||
<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>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>Da qui parte il primo filone della storia della cultura hacker, quello universitario.</p>
|
||||
<h4>I primi hacker, la tribù 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>Le macchine preferite dagli hacker appartenevano alla linea dei PDP, prodotti dalla Digital Equipment Corporation (DEC).
|
||||
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><img alt="pdp-11" src="../../../../../wp-content/uploads/2019/pdp11.jpg"></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>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>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>
|
||||
<h4>I primi hacker, la tribu` connessa</h4>
|
||||
<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 era la linea dei PDP, prodotti dalla Digital Equipment Corporation (DEC).</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>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>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 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>Arpanet permise la propagazione di tantissimi artefatti, fra questi le prime versioni del Jargon File.</p>
|
||||
<h4>La nascita di Unix</h4>
|
||||
<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>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.
|
||||
Anche C ha lo stesso obbiettivo di Unix, la portabilità 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>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 invento` un nuovo linguaggio che potesse facilitare lo sviluppo per Thompson: C.
|
||||
Anche C ha lo stesso obbiettivo di Unix, la portabilita` fra macchine diverse.</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>
|
||||
<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>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><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.
|
||||
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>
|
||||
<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>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>
|
||||
<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>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>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>
|
||||
<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>
|
||||
|
@ -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>
|
||||
</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>
|
||||
</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>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&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>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.
|
||||
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.</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 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 qualita` delle sue implementazioni, ma AT&T vinse molte battaglie legali appropriandosi di vari standard.</p>
|
||||
<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>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>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 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>
|
||||
<ul>
|
||||
<li>
|
||||
|
@ -216,37 +211,32 @@ BSD Unix si diffuse in maniera capillare, in particolare nelle infrastrutture di
|
|||
</li>
|
||||
</ul>
|
||||
<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>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>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 più attuale è la rete BitTorrent.</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 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 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 piu` attuale e` la rete Bittorrent.</p>
|
||||
<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>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>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>
|
||||
<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>
|
||||
<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>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>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 rispetto della cultura hacker GNU conquistò subito l'interesse della comunità.</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 sarebbe dovuto essere completato da un kernel, HURD, che ad oggi è 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>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 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 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 conquisto` subito l'interesse della comunita`.</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 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 , 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>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><img alt="Linus Torvalds e Richard Stallman" src="../../../../../wp-content/uploads/2019/stl.jpg"></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>
|
||||
<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>È 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>Nonostante ciò ogni anno ho provato a trasmettere agli studenti delle mie considerazioni sulla situazione presente, da differenti punti di vista.</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>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 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>
|
||||
<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>
|
||||
<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 un’idea minima di verità sulla vita e le gesta dell’hacker 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 dall’inizio, 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>
|
||||
<ul>
|
||||
<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>
|
||||
<p>Sono ancora possibili atti come quelli degli attivisti del cypherpunk?</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>In che ottica possiamo inquadrare le azioni di Assange e Snowden?</p>
|
||||
</li>
|
||||
</ul>
|
||||
<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>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à.
|
||||
È 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>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`.
|
||||
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>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>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>Possiamo a questo punto provare ad affermare che il potere risieda nelle persone e non più 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>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>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 piu` nelle strutture fisiche.</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>
|
||||
<ul>
|
||||
<li>
|
||||
|
@ -286,7 +279,7 @@ Nel rispetto della cultura hacker GNU conquistò subito l'interesse della comuni
|
|||
<p>"What data is being sold?"</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>"Is Facebook censoring specific groups?"</p>
|
||||
<p>"Is facebook censoring specific groups?"</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>"What’s Facebook’s 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>
|
||||
</li>
|
||||
</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>
|
||||
<p>Whether you know it or not, if you are a hacker, you are a revolutionary</p>
|
||||
</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>Sempre Doctor Crash scrive:</p>
|
||||
<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>
|
||||
</blockquote>
|
||||
<p>Questo, complice la cultura hacker, oggi non è più 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>
|
||||
<p>Questo, complice la cultura hacker, oggi non e` piu` possibile.</p>
|
||||
<h3>Opensource e Free Software</h3>
|
||||
<p>Nell'ultima lezione, anno 2019, 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>Stallman nel 2007 già ci avvertiva che il software opensource manca l'obbiettivo:</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 e` stato corrotto mediaticamente andando a ricoprire il significato di cracker.</p>
|
||||
<p>Stallman nel 2007 gia` ci avvertiva che il software opensource manca l'obbiettivo:</p>
|
||||
<blockquote>
|
||||
<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>
|
||||
</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>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>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>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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
</li>
|
||||
<li>
|
||||
<p>La libertà è una buona cosa</p>
|
||||
<p>La liberta` e` una buona cosa</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Le maniere e la forma non mascherano le competenze</p>
|
||||
</li>
|
||||
</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>
|
||||
<aside class="postpromonav"><nav><h4>Categories</h4>
|
||||
|
||||
<ul itemprop="keywords" class="tags">
|
||||
|
|
|
@ -1,26 +1,26 @@
|
|||
<!--
|
||||
.. title: Breve storia della cultura hacker
|
||||
.. slug: cultura-hacker
|
||||
.. date: 2020-04-06
|
||||
.. tags: lezione,Rivoluzione Digitale,PesceWanda,polito,politecnico,Rivoluzione Digitale, lezione
|
||||
.. date: 2019-05-18
|
||||
.. tags: lezione,Rivoluzione Digitale,PesceWanda,polito,politecnico
|
||||
.. category: PesceWanda
|
||||
.. link:
|
||||
.. status: draft
|
||||
.. description:
|
||||
.. 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/).
|
||||
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.
|
||||
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/).
|
||||
|
||||
# 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
|
||||
|
||||
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:
|
||||
> 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
|
||||
|
||||
* 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
|
||||
|
||||
![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
|
||||
|
||||
|
@ -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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
* i makers, coloro che costruiscono ciò 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.
|
||||
* i makers, coloro che costruiscono cio\` che gli altri usano, come Bill Gates.
|
||||
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
|
||||
|
||||
|
@ -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.
|
||||
|
||||
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.
|
||||
|
||||
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).
|
||||
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.
|
||||
Le macchine preferite dagli hacker era la linea dei PDP, prodotti dalla Digital Equipment Corporation (DEC).
|
||||
|
||||
![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 più ampia di entusiasti.
|
||||
Questo permise a moltissimi hacker di superare le loro cerchie ristrette e condividere i propri lavori con una massa sempre piu\` ampia di entusiasti.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
Anche C ha lo stesso obbiettivo di Unix, la portabilità fra macchine diverse.
|
||||
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 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
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
![John Draper e il fischietto blue](/wp-content/uploads/2019/draper.jpg)
|
||||
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.
|
||||
|
||||
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
|
||||
|
||||
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.
|
||||
|
||||
|
@ -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.
|
||||
|
||||
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
|
||||
|
||||
|
@ -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
|
||||
|
||||
* 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.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
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.
|
||||
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 qualita\` delle sue implementazioni, ma AT&T vinse molte battaglie legali appropriandosi di vari standard.
|
||||
|
||||
|
||||
## 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:
|
||||
|
||||
|
@ -196,63 +189,56 @@ La soluzione proposta risiede nella congiunzione di tre idee:
|
|||
|
||||
### 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 più attuale è la rete BitTorrent.
|
||||
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 piu\` attuale e\` la rete Bittorrent.
|
||||
|
||||
### 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.
|
||||
|
||||
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.
|
||||
|
||||
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ù.
|
||||
Il gruppo ha portato alla creazione di software crittografico (fra cui TOR), protocolli per la comunicazione riservata e atti di disobbedienza civile.
|
||||
|
||||
### 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 rispetto della cultura hacker GNU conquistò subito l'interesse della comunità.
|
||||
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 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.
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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:
|
||||
> 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 un’idea minima di verità sulla vita e le gesta dell’hacker 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 dall’inizio, 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:
|
||||
|
||||
* 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?
|
||||
|
||||
* 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.
|
||||
|
||||
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.
|
||||
|
||||
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à.
|
||||
È il motivo per cui nella cultura pop V per Vendetta termina con l'esplosione del parlamento e Fight Club con il crollo delle banche.
|
||||
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\`.
|
||||
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.
|
||||
|
||||
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:
|
||||
|
||||
|
@ -293,39 +281,38 @@ Questo ce lo dimostra il fatto che a domande come:
|
|||
|
||||
- "What data is being sold?"
|
||||
|
||||
- "Is Facebook censoring specific groups?"
|
||||
- "Is facebook censoring specific groups?"
|
||||
|
||||
- "What’s Facebook’s reach beyond its website?"
|
||||
|
||||
- "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
|
||||
|
||||
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.
|
||||
|
||||
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."
|
||||
|
||||
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
|
||||
|
||||
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.
|
||||
> 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.
|
||||
|
||||
|
@ -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.
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
# 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 -->
|
||||
|
|
|
@ -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>
|
|
@ -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.
|
|
@ -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>
|
|
@ -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.
|
|
@ -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">~></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"><</span><span class="n">vendor</span><span class="w"> </span><span class="n">specific</span><span class="o">></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"><</span><span class="n">vendor</span><span class="w"> </span><span class="n">specific</span><span class="o">></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 ~> 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 ~> 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">~></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 ~> 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 ~> 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>
|
|
@ -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
|
|
@ -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">~></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"><</span><span class="n">vendor</span><span class="w"> </span><span class="n">specific</span><span class="o">></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"><</span><span class="n">vendor</span><span class="w"> </span><span class="n">specific</span><span class="o">></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 ~> 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 ~> 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">~></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>
|
|
@ -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
|
|
@ -1,5 +1,5 @@
|
|||
<?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 <a href="mailto:francescomecca.eu">Francesco Mecca</a> </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><h3>Riconoscimento delle immagini</h3>
|
||||
<?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 <a href="mailto:francescomecca.eu">Francesco Mecca</a> </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><div><h3>Riconoscimento delle immagini</h3>
|
||||
<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>
|
||||
<p>Innanzitutto consideriamo che ogni immagine può essere codificata come una matrice di valori</p>
|
||||
|
@ -21,7 +21,7 @@ Questi pattern corrispondono alle caratteristiche proprie di un oggetto (quali p
|
|||
<p>Alla fine dell'analisi tutte le caratteristiche estrapolate vengono considerate nell'insieme e in questo modo possiamo capire a quale categoria appartiene l'immagine.</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>
|
||||
<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></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><p>Nel precedente <a href="francescomecca.eu/pescewanda/2016/11/10/machine-learning-intro/">post</a> abbiamo preso in considerazione una rete neurale molto basica.
|
||||
<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></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><div><p>Nel precedente <a href="francescomecca.eu/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>
|
||||
<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.
|
||||
|
@ -37,34 +37,38 @@ Abbiamo in questo modo una <em>recurrent neural network</em> (RNN) d
|
|||
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:
|
||||
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>
|
||||
<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>
|
||||
</pre></div>
|
||||
<pre class="code literal-block"><span></span>tyntd-iafhatawiaoihrdemot lytdws e ,tfti, astai f ogoh eoase rrranbyne 'nhthnee e
|
||||
plia tklrgd t o idoe ns,smtt h ne etie h,hregtrs nigtike,aoaenns lngty
|
||||
</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.
|
||||
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>
|
||||
<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
|
||||
sheulke, anmerenith ol sivh I lalterthend Bleipile shuwy fil on aseterlome
|
||||
coaniogennc Phe lism thond hon at. MeiDimorotion in ther thize."
|
||||
</pre></div>
|
||||
</pre>
|
||||
|
||||
|
||||
<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>
|
||||
<span class="err">her hearly, and behs to so arwage fiving were to it beloge, pavu say falling misfort </span>
|
||||
<span class="err">how, and Gogition is so overelical and ofter.</span>
|
||||
</pre></div>
|
||||
<pre class="code literal-block"><span></span>Aftair fall unsuch that the hall for Prince Velzonski's that me of
|
||||
her hearly, and behs to so arwage fiving were to it beloge, pavu say falling misfort
|
||||
how, and Gogition is so overelical and ofter.
|
||||
</pre>
|
||||
|
||||
|
||||
<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>
|
||||
<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>.
|
||||
<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>.
|
||||
</pre></div>
|
||||
<pre class="code literal-block"><span></span>"Why do what that day," replied Natasha, and wishing to himself the fact the
|
||||
princess, Princess Mary was easier, fed in had oftened him.
|
||||
Pierre aking his soul came to the packs and drove up his father-in-law women.
|
||||
</pre>
|
||||
|
||||
|
||||
<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></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><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.
|
||||
<p>Nel prossimo post tratterò una variante di rete neurale utilizzata per classificare e riconoscere immagini.</p></div></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><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>
|
||||
<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.
|
||||
|
@ -81,35 +85,35 @@ Noi abbiamo questi dati:</p>
|
|||
<thead>
|
||||
<tr>
|
||||
<th>PREZZO ORIGINALE</th>
|
||||
<th style="text-align: center;">Km percorsi</th>
|
||||
<th style="text-align: center;">stato di usura</th>
|
||||
<th style="text-align: right;">PREZZO FINALE</th>
|
||||
<th align="center">Km percorsi</th>
|
||||
<th align="center">stato di usura</th>
|
||||
<th align="right">PREZZO FINALE</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>50 000</td>
|
||||
<td style="text-align: center;">120 000</td>
|
||||
<td style="text-align: center;">lieve</td>
|
||||
<td style="text-align: right;">40 000</td>
|
||||
<td align="center">120 000</td>
|
||||
<td align="center">lieve</td>
|
||||
<td align="right">40 000</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>30 000</td>
|
||||
<td style="text-align: center;">150 000</td>
|
||||
<td style="text-align: center;">notevole</td>
|
||||
<td style="text-align: right;">8 000</td>
|
||||
<td align="center">150 000</td>
|
||||
<td align="center">notevole</td>
|
||||
<td align="right">8 000</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>20 000</td>
|
||||
<td style="text-align: center;">80 000</td>
|
||||
<td style="text-align: center;">lieve</td>
|
||||
<td style="text-align: right;">15 000</td>
|
||||
<td align="center">80 000</td>
|
||||
<td align="center">lieve</td>
|
||||
<td align="right">15 000</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>20 000</td>
|
||||
<td style="text-align: center;">120 000</td>
|
||||
<td style="text-align: center;">notevole</td>
|
||||
<td style="text-align: right;">...</td>
|
||||
<td align="center">120 000</td>
|
||||
<td align="center">notevole</td>
|
||||
<td align="right">...</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -125,30 +129,30 @@ Possiamo capire già da ora che nel caso ci fossero dati che "inquinano" il nost
|
|||
<thead>
|
||||
<tr>
|
||||
<th>PREZZO ORIGINALE</th>
|
||||
<th style="text-align: center;">Km percorsi</th>
|
||||
<th style="text-align: right;">stato di usura</th>
|
||||
<th align="center">Km percorsi</th>
|
||||
<th align="right">stato di usura</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>50 000</td>
|
||||
<td style="text-align: center;">120 000</td>
|
||||
<td style="text-align: right;">lieve</td>
|
||||
<td align="center">120 000</td>
|
||||
<td align="right">lieve</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>30 000</td>
|
||||
<td style="text-align: center;">150 000</td>
|
||||
<td style="text-align: right;">notevole</td>
|
||||
<td align="center">150 000</td>
|
||||
<td align="right">notevole</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>20 000</td>
|
||||
<td style="text-align: center;">80 000</td>
|
||||
<td style="text-align: right;">lieve</td>
|
||||
<td align="center">80 000</td>
|
||||
<td align="right">lieve</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>20 000</td>
|
||||
<td style="text-align: center;">120 000</td>
|
||||
<td style="text-align: right;">notevole</td>
|
||||
<td align="center">120 000</td>
|
||||
<td align="right">notevole</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -161,14 +165,15 @@ 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:
|
||||
<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>
|
||||
<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>
|
||||
<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="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>
|
||||
<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="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="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.
|
||||
Una volta stabiliti i pesi, il nostro algoritmo di supervised learning applica questi pesi ai dati originali e ne valuta l'errore:</p>
|
||||
|
@ -176,40 +181,40 @@ Una volta stabiliti i pesi, il nostro algoritmo di supervised learning applica q
|
|||
<thead>
|
||||
<tr>
|
||||
<th>PREZZO ORIGINALE</th>
|
||||
<th style="text-align: center;">Km percorsi</th>
|
||||
<th style="text-align: center;">stato di usura</th>
|
||||
<th style="text-align: center;">PREZZO FINALE</th>
|
||||
<th style="text-align: right;">PREZZO STIMATO</th>
|
||||
<th align="center">Km percorsi</th>
|
||||
<th align="center">stato di usura</th>
|
||||
<th align="center">PREZZO FINALE</th>
|
||||
<th align="right">PREZZO STIMATO</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>50 000</td>
|
||||
<td style="text-align: center;">120 000</td>
|
||||
<td style="text-align: center;">lieve</td>
|
||||
<td style="text-align: center;">40 000</td>
|
||||
<td style="text-align: right;">374888</td>
|
||||
<td align="center">120 000</td>
|
||||
<td align="center">lieve</td>
|
||||
<td align="center">40 000</td>
|
||||
<td align="right">374888</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>30 000</td>
|
||||
<td style="text-align: center;">150 000</td>
|
||||
<td style="text-align: center;">notevole</td>
|
||||
<td style="text-align: center;">8 000</td>
|
||||
<td style="text-align: right;">16000</td>
|
||||
<td align="center">150 000</td>
|
||||
<td align="center">notevole</td>
|
||||
<td align="center">8 000</td>
|
||||
<td align="right">16000</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>20 000</td>
|
||||
<td style="text-align: center;">80 000</td>
|
||||
<td style="text-align: center;">lieve</td>
|
||||
<td style="text-align: center;">15 000</td>
|
||||
<td style="text-align: right;">13492</td>
|
||||
<td align="center">80 000</td>
|
||||
<td align="center">lieve</td>
|
||||
<td align="center">15 000</td>
|
||||
<td align="right">13492</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>20 000</td>
|
||||
<td style="text-align: center;">120 000</td>
|
||||
<td style="text-align: center;">notevole</td>
|
||||
<td style="text-align: center;">...</td>
|
||||
<td style="text-align: right;">10988</td>
|
||||
<td align="center">120 000</td>
|
||||
<td align="center">notevole</td>
|
||||
<td align="center">...</td>
|
||||
<td align="right">10988</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -220,36 +225,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.
|
||||
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>
|
||||
<div class="code"><pre class="code literal-block"><span class="c">|</span><span class="nb">---------------------------------------------------</span><span class="c">|</span>
|
||||
<span class="c">| PREZZO_ORIG * peso A1 </span><span class="nb">-----</span><span class="nv">&gt;</span><span class="c"> |</span>
|
||||
<span class="c">| KM_PERCORSI * peso B1 </span><span class="nb">-----</span><span class="nv">&gt;</span><span class="c"> |</span>
|
||||
<span class="c">| STATO_USURA * peso C1 </span><span class="nb">-----</span><span class="nv">&gt;</span><span class="c"> |</span>
|
||||
<span class="c">| PREZZO FINALE STIMATO 1|</span>
|
||||
<span class="c">|</span><span class="nb">---------------------------------------------------</span><span class="c">|</span>
|
||||
<pre class="code literal-block"><span></span>|---------------------------------------------------|
|
||||
| PREZZO_ORIG * peso A1 -----&gt; |
|
||||
| KM_PERCORSI * peso B1 -----&gt; |
|
||||
| STATO_USURA * peso C1 -----&gt; |
|
||||
| PREZZO FINALE STIMATO 1|
|
||||
|---------------------------------------------------|
|
||||
|
||||
<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>
|
||||
<span class="c">| KM_PERCORSI * peso B2 </span><span class="nb">-----</span><span class="nv">&gt;</span><span class="c"> |</span>
|
||||
<span class="c">| STATO_USURA * peso C2 </span><span class="nb">-----</span><span class="nv">&gt;</span><span class="c"> |</span>
|
||||
<span class="c">| PREZZO FINALE STIMATO 2|</span>
|
||||
<span class="c">|</span><span class="nb">---------------------------------------------------</span><span class="c">|</span>
|
||||
| --------------------------------------------------|
|
||||
| PREZZO_ORIG * peso A2 -----&gt; |
|
||||
| KM_PERCORSI * peso B2 -----&gt; |
|
||||
| STATO_USURA * peso C2 -----&gt; |
|
||||
| PREZZO FINALE STIMATO 2|
|
||||
|---------------------------------------------------|
|
||||
|
||||
| --------------------------------------------------|
|
||||
| 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>
|
||||
<div class="code"><pre class="code literal-block"><span class="c">| </span><span class="nb">--------------------------------------------------</span><span class="c">|</span>
|
||||
<span class="c">| PREZZO_1 * peso X </span><span class="nb">-----</span><span class="nv">&gt;</span><span class="c"> |</span>
|
||||
<span class="c">| PREZZO_2 * peso Y </span><span class="nb">-----</span><span class="nv">&gt;</span><span class="c"> |</span>
|
||||
<span class="c">| PREZZO_3 * peso Z </span><span class="nb">-----</span><span class="nv">&gt;</span><span class="c"> |</span>
|
||||
<span class="c">| PREZZO FINALE DEF |</span>
|
||||
<span class="c">|</span><span class="nb">---------------------------------------------------</span><span class="c">|</span>
|
||||
</pre></div>
|
||||
<pre class="code literal-block"><span></span>| --------------------------------------------------|
|
||||
| PREZZO_1 * peso X -----&gt; |
|
||||
| PREZZO_2 * peso Y -----&gt; |
|
||||
| PREZZO_3 * peso Z -----&gt; |
|
||||
| PREZZO FINALE DEF |
|
||||
|---------------------------------------------------|
|
||||
</pre>
|
||||
|
||||
|
||||
<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>
|
||||
|
@ -263,7 +270,7 @@ Proviamo a visualizzarla in un'immagine dove i box arancioni sono i nodi di inpu
|
|||
<p>le catene: i collegamenti fra neuroni che permettono di valutare il prezzo più volte.</p>
|
||||
</li>
|
||||
</ul>
|
||||
<p>Nel prossimo <a href="francescomecca.eu/pescewanda/2016/11/11/machine-learning-PARTE2">post</a> cercherò di approfondire il concetto di rete neurale con degli esempi di applicazioni concrete.</p></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><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.
|
||||
<p>Nel prossimo <a href="francescomecca.eu/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></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><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.
|
||||
In this post I want to explain some bits of our work.</p>
|
||||
<h3>A brief introduction to GA</h3>
|
||||
|
@ -290,38 +297,42 @@ 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>The fitness function is not as precise as it should be because this is only a proof of concept:</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>
|
||||
<span class="n">rangeLimit</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">5</span>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
</pre></div>
|
||||
<pre class="code literal-block"><span></span>mutationProbability = 0.1
|
||||
rangeLimit = 5
|
||||
def fitness(item, pointList, n):
|
||||
value = 0
|
||||
for p in pointList:
|
||||
y = 0
|
||||
for i in range(n):
|
||||
y += item.gene[i] * pow(p.x, i)
|
||||
result = 1 - (abs (p.y - y) / rangeLimit)
|
||||
if result &lt; 0:
|
||||
result = 0
|
||||
value += result
|
||||
return value / n
|
||||
</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>
|
||||
<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>
|
||||
<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>
|
||||
</pre></div>
|
||||
<pre class="code literal-block"><span></span>for i in range(n):
|
||||
y += item.gene[i] * pow(p.x, i)
|
||||
</pre>
|
||||
|
||||
|
||||
<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>
|
||||
<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>:
|
||||
<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>
|
||||
</pre></div>
|
||||
<pre class="code literal-block"><span></span>result = 1 - (abs (p.y - y) / rangeLimit)
|
||||
if result &lt; 0:
|
||||
result = 0
|
||||
</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.
|
||||
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.
|
||||
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></div>
|
||||
<pre class="code literal-block"><span></span>-0.0487839869993989 * x^0 + 4.600339125358671 * x^1 + -0.2780958075230644 * x^2
|
||||
</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>For a more precise computation a higher population size and a really high number of iterations should be used.</p></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>
|
||||
<p>For a more precise computation a higher population size and a really high number of iterations should be used.</p></div></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>
|
|
@ -27,7 +27,7 @@
|
|||
<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>
|
||||
<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>
|
||||
<div class="metadata">
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?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 <a href="mailto:francescomecca.eu">Francesco Mecca</a> </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><h3>Riconoscimento delle immagini</h3>
|
||||
<?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 <a href="mailto:francescomecca.eu">Francesco Mecca</a> </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><div><h3>Riconoscimento delle immagini</h3>
|
||||
<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>
|
||||
<p>Innanzitutto consideriamo che ogni immagine può essere codificata come una matrice di valori</p>
|
||||
|
@ -21,7 +21,7 @@ Questi pattern corrispondono alle caratteristiche proprie di un oggetto (quali p
|
|||
<p>Alla fine dell'analisi tutte le caratteristiche estrapolate vengono considerate nell'insieme e in questo modo possiamo capire a quale categoria appartiene l'immagine.</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>
|
||||
<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></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><p>Nel precedente <a href="francescomecca.eu/pescewanda/2016/11/10/machine-learning-intro/">post</a> abbiamo preso in considerazione una rete neurale molto basica.
|
||||
<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></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><div><p>Nel precedente <a href="francescomecca.eu/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>
|
||||
<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.
|
||||
|
@ -37,34 +37,38 @@ Abbiamo in questo modo una <em>recurrent neural network</em> (RNN) d
|
|||
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:
|
||||
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>
|
||||
<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>
|
||||
</pre></div>
|
||||
<pre class="code literal-block"><span></span>tyntd-iafhatawiaoihrdemot lytdws e ,tfti, astai f ogoh eoase rrranbyne 'nhthnee e
|
||||
plia tklrgd t o idoe ns,smtt h ne etie h,hregtrs nigtike,aoaenns lngty
|
||||
</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.
|
||||
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>
|
||||
<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
|
||||
sheulke, anmerenith ol sivh I lalterthend Bleipile shuwy fil on aseterlome
|
||||
coaniogennc Phe lism thond hon at. MeiDimorotion in ther thize."
|
||||
</pre></div>
|
||||
</pre>
|
||||
|
||||
|
||||
<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>
|
||||
<span class="err">her hearly, and behs to so arwage fiving were to it beloge, pavu say falling misfort </span>
|
||||
<span class="err">how, and Gogition is so overelical and ofter.</span>
|
||||
</pre></div>
|
||||
<pre class="code literal-block"><span></span>Aftair fall unsuch that the hall for Prince Velzonski's that me of
|
||||
her hearly, and behs to so arwage fiving were to it beloge, pavu say falling misfort
|
||||
how, and Gogition is so overelical and ofter.
|
||||
</pre>
|
||||
|
||||
|
||||
<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>
|
||||
<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>.
|
||||
<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>.
|
||||
</pre></div>
|
||||
<pre class="code literal-block"><span></span>"Why do what that day," replied Natasha, and wishing to himself the fact the
|
||||
princess, Princess Mary was easier, fed in had oftened him.
|
||||
Pierre aking his soul came to the packs and drove up his father-in-law women.
|
||||
</pre>
|
||||
|
||||
|
||||
<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></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><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.
|
||||
<p>Nel prossimo post tratterò una variante di rete neurale utilizzata per classificare e riconoscere immagini.</p></div></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><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>
|
||||
<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.
|
||||
|
@ -81,35 +85,35 @@ Noi abbiamo questi dati:</p>
|
|||
<thead>
|
||||
<tr>
|
||||
<th>PREZZO ORIGINALE</th>
|
||||
<th style="text-align: center;">Km percorsi</th>
|
||||
<th style="text-align: center;">stato di usura</th>
|
||||
<th style="text-align: right;">PREZZO FINALE</th>
|
||||
<th align="center">Km percorsi</th>
|
||||
<th align="center">stato di usura</th>
|
||||
<th align="right">PREZZO FINALE</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>50 000</td>
|
||||
<td style="text-align: center;">120 000</td>
|
||||
<td style="text-align: center;">lieve</td>
|
||||
<td style="text-align: right;">40 000</td>
|
||||
<td align="center">120 000</td>
|
||||
<td align="center">lieve</td>
|
||||
<td align="right">40 000</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>30 000</td>
|
||||
<td style="text-align: center;">150 000</td>
|
||||
<td style="text-align: center;">notevole</td>
|
||||
<td style="text-align: right;">8 000</td>
|
||||
<td align="center">150 000</td>
|
||||
<td align="center">notevole</td>
|
||||
<td align="right">8 000</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>20 000</td>
|
||||
<td style="text-align: center;">80 000</td>
|
||||
<td style="text-align: center;">lieve</td>
|
||||
<td style="text-align: right;">15 000</td>
|
||||
<td align="center">80 000</td>
|
||||
<td align="center">lieve</td>
|
||||
<td align="right">15 000</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>20 000</td>
|
||||
<td style="text-align: center;">120 000</td>
|
||||
<td style="text-align: center;">notevole</td>
|
||||
<td style="text-align: right;">...</td>
|
||||
<td align="center">120 000</td>
|
||||
<td align="center">notevole</td>
|
||||
<td align="right">...</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -125,30 +129,30 @@ Possiamo capire già da ora che nel caso ci fossero dati che "inquinano" il nost
|
|||
<thead>
|
||||
<tr>
|
||||
<th>PREZZO ORIGINALE</th>
|
||||
<th style="text-align: center;">Km percorsi</th>
|
||||
<th style="text-align: right;">stato di usura</th>
|
||||
<th align="center">Km percorsi</th>
|
||||
<th align="right">stato di usura</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>50 000</td>
|
||||
<td style="text-align: center;">120 000</td>
|
||||
<td style="text-align: right;">lieve</td>
|
||||
<td align="center">120 000</td>
|
||||
<td align="right">lieve</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>30 000</td>
|
||||
<td style="text-align: center;">150 000</td>
|
||||
<td style="text-align: right;">notevole</td>
|
||||
<td align="center">150 000</td>
|
||||
<td align="right">notevole</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>20 000</td>
|
||||
<td style="text-align: center;">80 000</td>
|
||||
<td style="text-align: right;">lieve</td>
|
||||
<td align="center">80 000</td>
|
||||
<td align="right">lieve</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>20 000</td>
|
||||
<td style="text-align: center;">120 000</td>
|
||||
<td style="text-align: right;">notevole</td>
|
||||
<td align="center">120 000</td>
|
||||
<td align="right">notevole</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -161,14 +165,15 @@ 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:
|
||||
<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>
|
||||
<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>
|
||||
<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="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>
|
||||
<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="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="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.
|
||||
Una volta stabiliti i pesi, il nostro algoritmo di supervised learning applica questi pesi ai dati originali e ne valuta l'errore:</p>
|
||||
|
@ -176,40 +181,40 @@ Una volta stabiliti i pesi, il nostro algoritmo di supervised learning applica q
|
|||
<thead>
|
||||
<tr>
|
||||
<th>PREZZO ORIGINALE</th>
|
||||
<th style="text-align: center;">Km percorsi</th>
|
||||
<th style="text-align: center;">stato di usura</th>
|
||||
<th style="text-align: center;">PREZZO FINALE</th>
|
||||
<th style="text-align: right;">PREZZO STIMATO</th>
|
||||
<th align="center">Km percorsi</th>
|
||||
<th align="center">stato di usura</th>
|
||||
<th align="center">PREZZO FINALE</th>
|
||||
<th align="right">PREZZO STIMATO</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>50 000</td>
|
||||
<td style="text-align: center;">120 000</td>
|
||||
<td style="text-align: center;">lieve</td>
|
||||
<td style="text-align: center;">40 000</td>
|
||||
<td style="text-align: right;">374888</td>
|
||||
<td align="center">120 000</td>
|
||||
<td align="center">lieve</td>
|
||||
<td align="center">40 000</td>
|
||||
<td align="right">374888</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>30 000</td>
|
||||
<td style="text-align: center;">150 000</td>
|
||||
<td style="text-align: center;">notevole</td>
|
||||
<td style="text-align: center;">8 000</td>
|
||||
<td style="text-align: right;">16000</td>
|
||||
<td align="center">150 000</td>
|
||||
<td align="center">notevole</td>
|
||||
<td align="center">8 000</td>
|
||||
<td align="right">16000</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>20 000</td>
|
||||
<td style="text-align: center;">80 000</td>
|
||||
<td style="text-align: center;">lieve</td>
|
||||
<td style="text-align: center;">15 000</td>
|
||||
<td style="text-align: right;">13492</td>
|
||||
<td align="center">80 000</td>
|
||||
<td align="center">lieve</td>
|
||||
<td align="center">15 000</td>
|
||||
<td align="right">13492</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>20 000</td>
|
||||
<td style="text-align: center;">120 000</td>
|
||||
<td style="text-align: center;">notevole</td>
|
||||
<td style="text-align: center;">...</td>
|
||||
<td style="text-align: right;">10988</td>
|
||||
<td align="center">120 000</td>
|
||||
<td align="center">notevole</td>
|
||||
<td align="center">...</td>
|
||||
<td align="right">10988</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -220,36 +225,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.
|
||||
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>
|
||||
<div class="code"><pre class="code literal-block"><span class="c">|</span><span class="nb">---------------------------------------------------</span><span class="c">|</span>
|
||||
<span class="c">| PREZZO_ORIG * peso A1 </span><span class="nb">-----</span><span class="nv">&gt;</span><span class="c"> |</span>
|
||||
<span class="c">| KM_PERCORSI * peso B1 </span><span class="nb">-----</span><span class="nv">&gt;</span><span class="c"> |</span>
|
||||
<span class="c">| STATO_USURA * peso C1 </span><span class="nb">-----</span><span class="nv">&gt;</span><span class="c"> |</span>
|
||||
<span class="c">| PREZZO FINALE STIMATO 1|</span>
|
||||
<span class="c">|</span><span class="nb">---------------------------------------------------</span><span class="c">|</span>
|
||||
<pre class="code literal-block"><span></span>|---------------------------------------------------|
|
||||
| PREZZO_ORIG * peso A1 -----&gt; |
|
||||
| KM_PERCORSI * peso B1 -----&gt; |
|
||||
| STATO_USURA * peso C1 -----&gt; |
|
||||
| PREZZO FINALE STIMATO 1|
|
||||
|---------------------------------------------------|
|
||||
|
||||
<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>
|
||||
<span class="c">| KM_PERCORSI * peso B2 </span><span class="nb">-----</span><span class="nv">&gt;</span><span class="c"> |</span>
|
||||
<span class="c">| STATO_USURA * peso C2 </span><span class="nb">-----</span><span class="nv">&gt;</span><span class="c"> |</span>
|
||||
<span class="c">| PREZZO FINALE STIMATO 2|</span>
|
||||
<span class="c">|</span><span class="nb">---------------------------------------------------</span><span class="c">|</span>
|
||||
| --------------------------------------------------|
|
||||
| PREZZO_ORIG * peso A2 -----&gt; |
|
||||
| KM_PERCORSI * peso B2 -----&gt; |
|
||||
| STATO_USURA * peso C2 -----&gt; |
|
||||
| PREZZO FINALE STIMATO 2|
|
||||
|---------------------------------------------------|
|
||||
|
||||
| --------------------------------------------------|
|
||||
| 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>
|
||||
<div class="code"><pre class="code literal-block"><span class="c">| </span><span class="nb">--------------------------------------------------</span><span class="c">|</span>
|
||||
<span class="c">| PREZZO_1 * peso X </span><span class="nb">-----</span><span class="nv">&gt;</span><span class="c"> |</span>
|
||||
<span class="c">| PREZZO_2 * peso Y </span><span class="nb">-----</span><span class="nv">&gt;</span><span class="c"> |</span>
|
||||
<span class="c">| PREZZO_3 * peso Z </span><span class="nb">-----</span><span class="nv">&gt;</span><span class="c"> |</span>
|
||||
<span class="c">| PREZZO FINALE DEF |</span>
|
||||
<span class="c">|</span><span class="nb">---------------------------------------------------</span><span class="c">|</span>
|
||||
</pre></div>
|
||||
<pre class="code literal-block"><span></span>| --------------------------------------------------|
|
||||
| PREZZO_1 * peso X -----&gt; |
|
||||
| PREZZO_2 * peso Y -----&gt; |
|
||||
| PREZZO_3 * peso Z -----&gt; |
|
||||
| PREZZO FINALE DEF |
|
||||
|---------------------------------------------------|
|
||||
</pre>
|
||||
|
||||
|
||||
<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>
|
||||
|
@ -263,4 +270,4 @@ Proviamo a visualizzarla in un'immagine dove i box arancioni sono i nodi di inpu
|
|||
<p>le catene: i collegamenti fra neuroni che permettono di valutare il prezzo più volte.</p>
|
||||
</li>
|
||||
</ul>
|
||||
<p>Nel prossimo <a href="francescomecca.eu/pescewanda/2016/11/11/machine-learning-PARTE2">post</a> cercherò di approfondire il concetto di rete neurale con degli esempi di applicazioni concrete.</p></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>
|
||||
<p>Nel prossimo <a href="francescomecca.eu/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></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>
|
|
@ -27,7 +27,7 @@
|
|||
<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>
|
||||
<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>
|
||||
<div class="metadata">
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?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 <a href="mailto:francescomecca.eu">Francesco Mecca</a> </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><div class="separator" style="clear: both; text-align: center;">
|
||||
<?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 <a href="mailto:francescomecca.eu">Francesco Mecca</a> </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><div><div class="separator" style="clear: both; text-align: center;">
|
||||
</div>
|
||||
|
||||
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
|
||||
|
@ -80,7 +80,7 @@ Estimates of the current size of the body of federal criminal law vary. It has b
|
|||
|
||||
<div style="text-align: right;">
|
||||
<span style="font-family: Arial, Helvetica, sans-serif;">Francesco Mecca </span>
|
||||
</div></div></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><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></div></div></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><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 l’opt 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 dell’utente in maniera indistinguibile.<br>
|
||||
Per quale motivo Facebook usa questo sistema di tracciamento?</p>
|
||||
<div class="separator" style="clear:both;text-align:center;">
|
||||
|
@ -120,7 +120,7 @@ In questo modo ed attraverso i cookie Facebook riesce a riunire la maggior parte
|
|||
|
||||
<div style="text-align:right;">
|
||||
Francesco Mecca
|
||||
</div></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><p>“Perche` sto puntando tutto sul deep learning? Perche’ sara` il nuovo Big Bang”</p>
|
||||
</div></div></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><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>
|
||||
L’attenzione 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 l’apprendimento progressivo dei livelli di rappresentazione.<br>
|
||||
|
@ -169,4 +169,4 @@ 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">l’opt out</a> ovvero la rinuncia consapevole da parte dell’utente al servizio.</p>
|
||||
<div style="text-align:right;">
|
||||
Francesco Mecca
|
||||
</div></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>
|
||||
</div></div></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>
|
|
@ -27,7 +27,7 @@
|
|||
<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>
|
||||
<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>
|
||||
<div class="metadata">
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
<?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 <a href="mailto:francescomecca.eu">Francesco Mecca</a> </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><p><img alt="brainwashing" src="francescomecca.eu/wp-content/uploads/2017/hn_handbrake_hack.jpg"></p>
|
||||
<p><a href="http://archive.is/XA3rj">source</a></p></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>
|
||||
<?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 <a href="mailto:francescomecca.eu">Francesco Mecca</a> </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><div><p><img alt="brainwashing" src="francescomecca.eu/wp-content/uploads/2017/hn_handbrake_hack.jpg"></p>
|
||||
<p><a href="http://archive.is/XA3rj">source</a></p></div></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>
|
|
@ -27,7 +27,7 @@
|
|||
<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>
|
||||
<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>
|
||||
<div class="metadata">
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?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 <a href="mailto:francescomecca.eu">Francesco Mecca</a> </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><p>In questi giorni mi e` capitato di dover scaricare varie collezioni da <a href="https://en.wikipedia.org/wiki/Internet_Archive">archive.org</a>, una libreria digitale multimediale la cui missione e` l’accesso universale a tutta la conoscenza.</p>
|
||||
<?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 <a href="mailto:francescomecca.eu">Francesco Mecca</a> </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><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` l’accesso universale a tutta la conoscenza.</p>
|
||||
<p>Principalmente lo uso per scaricare tantissime registrazioni live di vari concerti registrati a mio avviso in maniera impeccabile.</p>
|
||||
<p>Nel sito si trova una guida per scaricare in bulk usando wget e gli strumenti del sito, ma risulta piuttosto prolissa e complicata se si vuole fare un download al volo.</p>
|
||||
<p>Questo e` lo script che uso, modificato da <a href="https://github.com/ghalfacree/bash-scripts/blob/master/archivedownload.sh">questo</a> script: e` scritto in bash e funziona su tutte le distribuzioni sulle quali e` installato wget, tail e sed.</p>
|
||||
|
@ -33,4 +33,4 @@ rm identifiers.txt processedidentifiers.txt
|
|||
echo Complete.
|
||||
</pre>
|
||||
|
||||
<p>Francesco Mecca </p></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>
|
||||
<p>Francesco Mecca </p></div></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>
|
|
@ -27,7 +27,7 @@
|
|||
<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>
|
||||
<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>
|
||||
<div class="metadata">
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?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 <a href="mailto:francescomecca.eu">Francesco Mecca</a> </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><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>
|
||||
<?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 <a href="mailto:francescomecca.eu">Francesco Mecca</a> </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><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>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>
|
||||
|
@ -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.
|
||||
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>
|
||||
<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 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><img alt="Arduino and the shield" src="francescomecca.eu/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></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>
|
||||
<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></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>
|
|
@ -27,7 +27,7 @@
|
|||
<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>
|
||||
<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>
|
||||
<div class="metadata">
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?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 <a href="mailto:francescomecca.eu">Francesco Mecca</a> </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><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>
|
||||
<?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 <a href="mailto:francescomecca.eu">Francesco Mecca</a> </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><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>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>
|
||||
|
@ -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.
|
||||
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>
|
||||
<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 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><img alt="Arduino and the shield" src="francescomecca.eu/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></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>
|
||||
<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></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>
|
|
@ -27,7 +27,7 @@
|
|||
<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>
|
||||
<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>
|
||||
<div class="metadata">
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?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 <a href="mailto:francescomecca.eu">Francesco Mecca</a> </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&#8217;Avvocato</title><link>francescomecca.eu/blog/2015/7/7/la-rivoluzione-digitale-nella-professione-dellavvocato/</link><dc:creator>Francesco Mecca</dc:creator><description><h5><span style="font-size: large;">Premessa</span></h5>
|
||||
<?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 <a href="mailto:francescomecca.eu">Francesco Mecca</a> </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&#8217;Avvocato</title><link>francescomecca.eu/blog/2015/7/7/la-rivoluzione-digitale-nella-professione-dellavvocato/</link><dc:creator>Francesco Mecca</dc:creator><description><div><h5><span style="font-size: large;">Premessa</span></h5>
|
||||
<p>Con l’avvento dell’informatizzazione e` notevolmente mutata la modalita` con cui l’avvocato svolge la propria professione; sinteticamente si puo` arrivare ad affermare che al di la` della partecipazione alle udienze e il ricevimento dei clienti, tutta l’attivita` 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 (l’INAIL) e pertanto unico mio cliente e` l’Istituto che io difendo sia in ambito giudiziario (cause legali) che extragiudiziario (composizione bonaria delle liti).</p>
|
||||
<p>L’avvento dell’informatica ha modificato il modo di lavorare nella sua globalita`, vediamo pertanto le singole fasi dell’attivita`.</p>
|
||||
|
@ -55,4 +55,4 @@
|
|||
Avvocatura Regionale INAIL delle Marche
|
||||
</div>
|
||||
|
||||
<p> </p></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>
|
||||
<p> </p></div></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
Loading…
Reference in a new issue