<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Python on Marcello Barnaba</title>
    <link>https://sindro.me/it/tags/python/</link>
    <description>Recent content in Python on Marcello Barnaba</description>
    <generator>Hugo</generator>
    <language>it</language>
    <lastBuildDate>Sat, 04 Apr 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://sindro.me/it/tags/python/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Come ho rimpiazzato l&#39;app Verisure con Home Assistant</title>
      <link>https://sindro.me/it/posts/2026-04-04-verisure-italy-home-assistant/</link>
      <pubDate>Sat, 04 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://sindro.me/it/posts/2026-04-04-verisure-italy-home-assistant/</guid>
      <description>&lt;p&gt;L&amp;rsquo;app Verisure fa schifo. Lì, l&amp;rsquo;ho detto.&lt;/p&gt;&#xA;&lt;p&gt;Non che l&amp;rsquo;allarme funzioni male — il pannello SDVECU è solido, i sensori&#xA;sono affidabili, l&amp;rsquo;installazione è professionale. Ma l&amp;rsquo;app. Dio santo,&#xA;l&amp;rsquo;app.&lt;/p&gt;&#xA;&lt;h2 id=&#34;il-problema&#34;&gt;Il problema&lt;/h2&gt;&#xA;&lt;p&gt;Apri l&amp;rsquo;app per controllare lo stato dell&amp;rsquo;allarme e ti accoglie una &lt;strong&gt;pubblicità&#xA;di Verisure stessa&lt;/strong&gt;. Io pago fior di quattrini per il servizio e loro mi&#xA;piazzano le ads &lt;em&gt;dentro&lt;/em&gt; l&amp;rsquo;app. È il 2026 e un&amp;rsquo;azienda di sicurezza mi fa&#xA;vedere banner pubblicitari quando provo a verificare se casa mia è protetta.&lt;/p&gt;&#xA;&lt;p&gt;Ma le ads sono il meno. I veri problemi sono:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Routine cieche.&lt;/strong&gt; Sì, l&amp;rsquo;app ha le &amp;ldquo;routine&amp;rdquo; — attiva a&#xA;mezzanotte, disattiva alle 7. Ma non sanno dove sei. Mezzanotte&#xA;e sei ancora in giardino? L&amp;rsquo;allarme si attiva e i sensori scattano.&#xA;Finestra aperta? Il pannello annuncia che non riesce ad attivare,&#xA;ma se non lo senti l&amp;rsquo;allarme resta spento. Vai in vacanza e&#xA;dimentichi di disabilitare la routine di disattivazione mattutina?&#xA;Allarme spento con la casa vuota. E le modifiche alle routine&#xA;impiegano &lt;em&gt;20 minuti a propagarsi&lt;/em&gt; — &amp;ldquo;o il giorno dopo&amp;rdquo;. Nel 2026.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Zero presenza.&lt;/strong&gt; L&amp;rsquo;app non sa dove sei. Non sa chi è in casa.&#xA;Non sa se la donna delle pulizie è andata via. Nessuna automazione&#xA;basata sulla posizione.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Una telecamera alla volta.&lt;/strong&gt; Vuoi vedere tutte le camere? Tocca,&#xA;aspetta, torna indietro, tocca la prossima, aspetta. Nessuna vista&#xA;d&amp;rsquo;insieme. Nessun &amp;ldquo;cattura tutto&amp;rdquo;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Lentezza biblica.&lt;/strong&gt; Richiedi un&amp;rsquo;immagine, aspetti, aspetti, forse&#xA;arriva. A volte ricarichi l&amp;rsquo;app e riprovi. Nel 2026.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Nessuno storage permanente.&lt;/strong&gt; Le immagini catturate spariscono. Non&#xA;c&amp;rsquo;è uno storico consultabile.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Nessun timestamp sulle immagini.&lt;/strong&gt; Catturi una foto e non sai&#xA;&lt;em&gt;quando&lt;/em&gt; è stata scattata né &lt;em&gt;da quale camera&lt;/em&gt;. Devi ricordartelo tu.&#xA;Per un sistema di sicurezza è imbarazzante.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Notifiche generiche.&lt;/strong&gt; Una notifica uguale per tutti. Niente&#xA;notifiche actionable, niente notifiche critiche che bypassano il&#xA;&amp;ldquo;Non Disturbare&amp;rdquo;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Quello che volevo: il mio allarme, integrato nella mia domotica, con&#xA;automazioni intelligenti, notifiche per tutti i residenti, e una&#xA;dashboard che mostra &lt;em&gt;tutto&lt;/em&gt; in un colpo d&amp;rsquo;occhio. Senza pubblicità.&lt;/p&gt;</description>
    </item>
    <item>
      <title>wifi-dethrash: trovare e risolvere il thrashing WiFi mesh su OpenWrt</title>
      <link>https://sindro.me/it/posts/2026-04-03-wifi-dethrash-openwrt-mesh-analyzer/</link>
      <pubDate>Fri, 03 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://sindro.me/it/posts/2026-04-03-wifi-dethrash-openwrt-mesh-analyzer/</guid>
      <description>&lt;p&gt;Tutto è cominciato con il &lt;a href=&#34;https://sindro.me/posts/2026-02-15-wifi-presence-detection-home-assistant/&#34;&gt;rilevamento presenza WiFi&lt;/a&gt;. Avevo costruito un sistema che traccia in quale stanza si trova ognuno scrapando l&amp;rsquo;RSSI dai miei AP OpenWrt. Funzionava &amp;ndash; ma le assegnazioni delle stanze continuavano a sfarfallare. Cucina. Ufficio. Cucina. Ufficio. Tre volte in dieci secondi. La macchina a stati era a posto. Il WiFi no.&lt;/p&gt;&#xA;&lt;p&gt;La mia rete domestica ha sei AP OpenWrt su tre piani, due SSID &amp;ndash; Mercury su 5 GHz, Saturn su 2,4 GHz &amp;ndash; tutti con 802.11r per il roaming veloce. Vista da fuori, sembra una mesh fatta bene. Vista da dentro, un telefono rimbalzava tra access point &lt;strong&gt;129 volte in 24 ore&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Non lo sapevo finché non ho costruito lo strumento per vederlo.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://sindro.me/posts/2026-04-03-wifi-dethrash-openwrt-mesh-analyzer/roaming-timeline-24h.png&#34; alt=&#34;Timeline di roaming — 24 ore&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Ogni riga è un client WiFi, il colore mostra a quale AP è connesso. I client sani mostrano barre lunghe e piene. Quelli malati sembrano pali da barbiere. Vedi &lt;code&gt;sara-iphone&lt;/code&gt;? Quella striscia arcobaleno sono 129 connessioni in 24 ore &amp;ndash; il telefono cammina in una zona di overlap tra due AP dove entrambi hanno un segnale circa uguale (e orrendo).&lt;/p&gt;&#xA;&lt;h2 id=&#34;il-problema-che-non-puoi-vedere&#34;&gt;Il problema che non puoi vedere&lt;/h2&gt;&#xA;&lt;p&gt;Il roaming WiFi è invisibile. Il tuo telefono mostra tutte le tacche, Netflix bufferizza un attimo, e tu dai la colpa alla connessione internet. Ma quello che è successo davvero è che il tuo telefono si è disconnesso da un AP, ha scansionato le alternative, ne ha scelto un altro con un segnale marginalmente diverso, si è associato, autenticato, e ha ricominciato lo streaming &amp;ndash; tutto in meno di un secondo se 802.11r funziona, diversi secondi se non funziona.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rilevamento presenza WiFi per Home Assistant con OpenWrt</title>
      <link>https://sindro.me/it/posts/2026-02-15-wifi-presence-detection-home-assistant/</link>
      <pubDate>Sun, 15 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://sindro.me/it/posts/2026-02-15-wifi-presence-detection-home-assistant/</guid>
      <description>&lt;p&gt;Avevo due problemi con il rilevamento presenza di Home Assistant.&lt;/p&gt;&#xA;&lt;p&gt;Il primo: il GPS ti dice &lt;em&gt;se&lt;/em&gt; qualcuno è a casa, ma non &lt;em&gt;dove&lt;/em&gt; in casa si trova. La mia casa ha sei access point OpenWrt distribuiti su tre piani. Sanno già esattamente quale telefono è connesso a quale AP in ogni momento &amp;ndash; sono dati di presenza a livello di stanza, lì nello stack WiFi, che urlano per essere usati. Sapere chi è in quale stanza apre un&amp;rsquo;intera classe di automazioni che il GPS non può toccare: luci che ti seguono, climatizzazione per stanza occupata, una dashboard che mostra la situazione della casa a colpo d&amp;rsquo;occhio.&lt;/p&gt;&#xA;&lt;p&gt;Il secondo: la nostra donna delle pulizie sta a casa nostra un paio di giorni a settimana. Non voglio configurarle un account HA completo, installarle l&amp;rsquo;app companion sul telefono, o avere a che fare con i permessi GPS. Ma &lt;em&gt;devo&lt;/em&gt; sapere se è a casa &amp;ndash; perché la mia automazione dell&amp;rsquo;allarme ha bisogno di sapere se la casa è davvero vuota prima di attivarsi. Il suo telefono si connette al WiFi. Mi basta questo.&lt;/p&gt;&#xA;&lt;p&gt;Così ho scritto &lt;a href=&#34;https://github.com/vjt/openwrt-ha-presence&#34; target=&#34;_blank&#34;&gt;openwrt-ha-presence&lt;/a&gt;: una macchina a stati che scrapa le metriche RSSI direttamente dai tuoi AP OpenWrt, capisce in quale stanza si trova ogni persona in base alla potenza del segnale, e pubblica lo stato casa/fuori per ogni persona su Home Assistant via MQTT Discovery. Niente cloud, niente beacon, niente parsing di log, niente database time-series. Python, async, ~600 righe di logica effettiva.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://sindro.me/posts/2026-02-15-wifi-presence-detection-home-assistant/home-assistant.png&#34; alt=&#34;Storico tracking stanze di Home Assistant&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>5G come backup della fibra: non perdere mai più una riunione</title>
      <link>https://sindro.me/it/posts/2026-01-31-quectel-5g-modem-tools-for-openwrt/</link>
      <pubDate>Sat, 31 Jan 2026 00:00:00 +0000</pubDate>
      <guid>https://sindro.me/it/posts/2026-01-31-quectel-5g-modem-tools-for-openwrt/</guid>
      <description>&lt;p&gt;Un paio di mesi fa, la fibra è andata giù. Come da primo corollario di Murphy, è successo nel momento peggiore in assoluto: subito prima di una riunione cruciale con un&amp;rsquo;azienda partner. Mi sono ritrovato a saltare freneticamente tra l&amp;rsquo;AP di un vicino lontano e l&amp;rsquo;hotspot del telefono, ma entrambi facevano schifo. Parliamo di 200ms di RTT e 15% di packet loss. Mi stavo scusando a profusione mentre il mio feed video si trasformava in uno slideshow del 1998; nessuno capiva una parola di quello che dicevo. Ho finito per spegnere il video e stare zitto. Opportunità persa. &lt;strong&gt;Mai. Più.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Così sono andato in modalità paranoica totale e ho costruito un setup di backup 5G serio.&lt;/p&gt;&#xA;&lt;h2 id=&#34;lhardware&#34;&gt;L&amp;rsquo;hardware&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.gl-inet.com/products/gl-x3000/&#34; target=&#34;_blank&#34;&gt;GL.iNet X-3000&lt;/a&gt; con modem Quectel RM520N-GL&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://poynting.tech/antennas/xpol-24/&#34; target=&#34;_blank&#34;&gt;Poynting XPOL-24&lt;/a&gt; antenna direzionale montata sul muro fuori dal mio ufficio&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Il segnale 5G qui è inesistente, quindi ho dovuto usare l&amp;rsquo;artiglieria pesante. La Poynting è una bestia. 11 dBi di guadagno, vero MIMO 4x4, cross-polarizzata, stagna. Puntala verso la torre più vicina e all&amp;rsquo;improvviso il SINR salta da &amp;ldquo;meh&amp;rdquo; a &amp;ldquo;porco dio!&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;Ma puntare un&amp;rsquo;antenna direzionale senza feedback visivo è doloroso. In pratica giri in tondo, aggiorni una web UI, bestemmi guardando il cielo.&lt;/p&gt;&#xA;&lt;h2 id=&#34;il-software&#34;&gt;Il software&lt;/h2&gt;&#xA;&lt;p&gt;Ho scritto un set di strumenti per risolvere il problema: &lt;a href=&#34;https://github.com/vjt/quectel-5g-tools&#34; target=&#34;_blank&#34;&gt;quectel-5g-tools&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;5g-info&lt;/code&gt; scarica tutto quello che il tuo modem sa in un formato leggibile:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://sindro.me/posts/2026-01-31-quectel-5g-modem-tools-for-openwrt/5g-info.png&#34; alt=&#34;output di 5g-info&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;5g-monitor&lt;/code&gt; è una TUI ncurses che si aggiorna in tempo reale e &amp;ndash; qui viene il bello &amp;ndash; &lt;strong&gt;emette beep in base al SINR&lt;/strong&gt;. Qualità del segnale più alta = più beep. Punta l&amp;rsquo;antenna, ascolta i beep, stringi i bulloni. Fatto.&lt;/p&gt;</description>
    </item>
    <item>
      <title>urllib2 di Python2.4 rotto di default su Solaris Express 5.11</title>
      <link>https://sindro.me/it/posts/2008-01-25-python2-4-s-urllib2-broken-by-default-on-solaris-express-5-11/</link>
      <pubDate>Fri, 25 Jan 2008 00:00:00 +0000</pubDate>
      <guid>https://sindro.me/it/posts/2008-01-25-python2-4-s-urllib2-broken-by-default-on-solaris-express-5-11/</guid>
      <description>&lt;p&gt;Mentre installavo allegramente i prerequisiti per compilare un&amp;rsquo;applicazione su&#xA;&lt;a href=&#34;http://sun.com/software/solaris&#34; target=&#34;_blank&#34;&gt;Solaris 11&lt;/a&gt;, ho apprezzato il fatto di&#xA;trovare &lt;a href=&#34;http://selenic.com/mercurial&#34; target=&#34;_blank&#34;&gt;Mercurial&lt;/a&gt; già installato nel sistema&#xA;base&amp;hellip; tranne per un GROSSO problema: la digest authentication era rotta. Ho&#xA;fatto un &lt;code&gt;tcpdump&lt;/code&gt; del traffico scambiato tra il client Mercurial e il server&#xA;CGI e ho visto che non veniva inviato nessun header Authorization, e&#xA;ovviamente il server si rifiutava di servire il repository hg.&lt;/p&gt;&#xA;&lt;p&gt;Prima di reinstallare Python, magari da sorgente e sostituendo l&amp;rsquo;installazione&#xA;di default oppure tenendo affiancate due versioni diverse, con le conseguenti&#xA;seccature e sporcizia nel sistema, ho provato un patch davvero minuscolo a&#xA;urllib2.py che&amp;hellip; con mio divertimento, ha risolto il problema:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;--- urllib2.py~ Fri Jan 25 02:35:59 2008&#xA;+++ urllib2.py  Fri Jan 25 03:27:52 2008&#xA;@@ -815,7 +815,7 @@&#xA;             auth_val = &amp;#39;Digest %s&amp;#39; % auth&#xA;             if req.headers.get(self.auth_header, None) == auth_val:&#xA;                 return None&#xA;-            req.add_unredirected_header(self.auth_header, auth_val)&#xA;+            req.add_header(self.auth_header, auth_val)&#xA;             resp = self.parent.open(req)&#xA;             return resp&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Non sono un ca**o di esperto Python (ma il linguaggio è interessante), quindi&#xA;non chiedetemi PERCHÉ funziona: ho semplicemente seguito il commento di&#xA;&lt;code&gt;add_header&lt;/code&gt; che diceva &amp;ldquo;questo metodo è utile per aggiungere header di&#xA;autenticazione&amp;rdquo; e ho sostituito il metodo &lt;code&gt;unredirected_header&lt;/code&gt; con il primo.&#xA;Non ho proprio idea del perché con urllib2 di Python2.5 &amp;ldquo;tutto funziona&amp;rdquo; anche&#xA;con quel metodo; qualcosa deve essere rotto da qualche altra parte. Un diff&#xA;tra le due urllib non mi ha dato niente, dovrei davvero imparare Python prima&#xA;o poi.&lt;/p&gt;&#xA;&lt;p&gt;Non ho trovato nessuna informazione googlando parole chiave come &amp;laquo;solaris&#xA;&amp;ldquo;http {authorization,authentication}&amp;rdquo; {urllib2,python} {broken,not working}&#xA;mercurial&amp;raquo; (shell interpolation intesa), quindi spero che questo post sia&#xA;utile a qualcuno ;).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Come compilare python2.5 su SCO_SV</title>
      <link>https://sindro.me/it/posts/2008-01-16-how-to-compile-python2-5-on-sco_sv/</link>
      <pubDate>Wed, 16 Jan 2008 00:00:00 +0000</pubDate>
      <guid>https://sindro.me/it/posts/2008-01-16-how-to-compile-python2-5-on-sco_sv/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;Devi avere PTH installato, e forse altre librerie.&lt;/li&gt;&#xA;&lt;li&gt;Testato su &lt;code&gt;SCO_SV os507 3.2 5.0.7 i386&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Se hai UDK, lancia:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ CFLAGS&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;-I/usr/local/include -belf&amp;#39;&lt;/span&gt; LDFLAGS&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;-L/usr/local/lib&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ./configure --with-threads --with-pth --disable-shared --disable-ipv6&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;Aggiungi &lt;code&gt;/usr/local/include&lt;/code&gt; a &lt;code&gt;BASECFLAGS&lt;/code&gt; nel &lt;code&gt;Makefile&lt;/code&gt; (autocrap fa schifo).&lt;/li&gt;&#xA;&lt;li&gt;Patcha &lt;code&gt;Modules/ctypes/_ctypes_test.c&lt;/code&gt; mettendo un &lt;code&gt;#ifdef HAVE_LONG_LONG&lt;/code&gt; attorno alle funzioni che usano &lt;code&gt;PY_LONG_LONG&lt;/code&gt; (suggerimenti: righe &lt;code&gt;384&lt;/code&gt; e &lt;code&gt;318&lt;/code&gt;).&lt;/li&gt;&#xA;&lt;li&gt;Patcha &lt;code&gt;Objects/longobject.c&lt;/code&gt; e alla riga &lt;code&gt;817&lt;/code&gt; metti la macro &lt;code&gt;IS_LITTLE_ENDIAN&lt;/code&gt; prima del blocco &lt;code&gt;#ifdef HAVE_LONG_LONG&lt;/code&gt;, e metti &lt;code&gt;_PyLong_FromSsize_t&lt;/code&gt; e &lt;code&gt;_PyLong_FromSize_t&lt;/code&gt; dopo il blocco &lt;code&gt;HAVE_LONG_LONG&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Se hai GCC, lancia:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ CFLAGS&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;-I/usr/local/include&amp;#39;&lt;/span&gt; LDFLAGS&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;-L/usr/local/lib&amp;#39;&lt;/span&gt;            &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ./configure --with-threads --with-pth --disable-shared --disable-ipv6&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Sia con UDK che con GCC:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Modifica &lt;code&gt;pyconfig.h&lt;/code&gt; e commenta il define di &lt;code&gt;socklen_t&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Modifica &lt;code&gt;Modules/socketmodule.c&lt;/code&gt; e alla riga 226 aggiungi &lt;code&gt;|| defined(SCO5)&lt;/code&gt; per definire &lt;code&gt;INET_ADDRSTRLEN&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Lancia &lt;code&gt;make&lt;/code&gt; (o &lt;code&gt;gmake&lt;/code&gt; se preferisci)&lt;/li&gt;&#xA;&lt;li&gt;Rimarrai senza &lt;code&gt;_curses.so&lt;/code&gt;, &lt;code&gt;_curses_panel.so&lt;/code&gt;, &lt;code&gt;_locale.so&lt;/code&gt; e &lt;code&gt;readline.so&lt;/code&gt; se usi GCC, e anche senza &lt;code&gt;pyexpat&lt;/code&gt;, &lt;code&gt;elementtree&lt;/code&gt; e &lt;code&gt;sha512&lt;/code&gt; se usi UDK.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;      __   ____  __ __  ____     __&#xA;      \ \ / /  \/  |  \/  \ \   / /&#xA;       \ V /| |\/| | |\/| |\ \ / / &#xA;        | | | |  | | |  | | \ V /_ &#xA;        |_| |_|  |_|_|  |_|  \_/(_)&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;vjt@os507 ~/Python-2.5.1-vjt&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; $ python&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Python 2.5.1 &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;r251:31337, Sep &lt;span style=&#34;color:#ae81ff&#34;&gt;13&lt;/span&gt; 2007, 22:40:33&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;GCC 4.2.1&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; on sco_sv3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Type &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;help&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;copyright&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;credits&amp;#34;&lt;/span&gt; or &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;license&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; more information.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt;&amp;gt;&amp;gt; import socket&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt;&amp;gt;&amp;gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;vjt@os507 ~&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; $ hg clone http://code.wuhrer.thc/hg/Antani&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;destination directory: Antani&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;http authorization required&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;!! YAY! :D&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
