<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Jekyll on Melabit</title>
    <link>https://static.233.196.69.159.clients.your-server.de/it/tags/jekyll/</link>
    <description>Recent content in Jekyll on Melabit</description>
    <generator>Hugo</generator>
    <language>it</language>
    <lastBuildDate>Wed, 31 Dec 2025 06:00:00 +0000</lastBuildDate>
    <atom:link href="https://static.233.196.69.159.clients.your-server.de/it/tags/jekyll/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Un anno di melabit.com</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2025/12/31/un-anno-di-melabit-com/</link>
      <pubDate>Wed, 31 Dec 2025 06:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2025/12/31/un-anno-di-melabit-com/</guid>
      <description>&lt;p&gt;Il 2025 è stato un anno di svolta per questo piccolo blog. Abbandonare la &lt;em&gt;comfort zone&lt;/em&gt; di Wordpress.com non è stato facile né tanto meno indolore, soprattutto quando ho scoperto che &lt;a href=&#34;https://melabit.com/it/2025/01/02/2025-01-02-da-melabit-a-melabit-addio-wordpress-ciao-jekyll/&#34;&gt;una volta messo online&lt;/a&gt; il sito in Jekyll era lento, troppo lento per essere usabile.&lt;/p&gt;&#xA;&lt;p&gt;Per fortuna &lt;a href=&#34;https://melabit.com/it/2025/05/24/jeeeeeekyll-no-hugo/&#34;&gt;Hugo ha salvato la situazione&lt;/a&gt;, anche se ci sono ancora tanti dettagli da sistemare, primo fra tutti l&amp;rsquo;aspetto grafico del sito.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2025-12-31-un-anno-di-melabit-com/Gemini_Generated_Image_r0phqqr0phqqr0ph.jpeg&#34; alt=&#34;&#34;&gt;&#xA;&amp;ndash; &lt;em&gt;Immagine generata da &lt;a href=&#34;https://gemini.google.com&#34;&gt;Google Gemini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;Anche gestire i post in due lingue diverse non è facile, ma ne vale la pena visto che i post in inglese permettono di raggiungere un bacino di utenti inimmaginabile scrivendo solo nella nostra lingua.&lt;/p&gt;&#xA;&lt;p&gt;Il cruccio principale del nuovo sito e l&amp;rsquo;assenza o quasi di commenti ai post. Non so se è perché sono troppo complicati, troppo lunghi o entrambe le cose. Fatto sta che la scarsezza di commenti è davvero preoccupante. E questo nonostante ci sia un buon numero di visitatori e che in media il 5% passa 15 minuti o più sul sito. Magari alla fine sono troppo esausti per riuscire a commentare, chissà!&lt;/p&gt;&#xA;&lt;hr style=&#34;border: none; border-top: 3px double #333; color: #333; overflow: visible; height: 5px; width: 50%; margin-left: auto; margin-right: auto;&#34;&gt;&#xA;&lt;p&gt;Inutile dire che l&amp;rsquo;IA sta ben lontana dalla scrittura dei testi, al massimo la uso per rivedere qualche termine tecnico di cui non mi ricordo l&amp;rsquo;equivalente in italiano (&lt;code&gt;Tab&lt;/code&gt; è la mia bestia nera, ogni volta mi dimentiche che in italiano si dice &lt;code&gt;Scheda&lt;/code&gt; e non &lt;code&gt;Linguetta&lt;/code&gt;). A volte provo ad usarla per rendere qualche frase più scorrevole, ma quasi sempre è tempo perso, alla fine diventano così piatte che tanto vale non scriverle.&lt;/p&gt;&#xA;&lt;p&gt;Ammetto, invece, che la base delle traduzioni la faccio fare all&amp;rsquo;IA. Mi serve più che altro per risparmiare tempo di battitura, anche se poi ci vuole un bel po&amp;rsquo; per sistemare il risultato e rendere il testo tradotto più fluido e vivace.&lt;/p&gt;&#xA;&lt;p&gt;Uso anche spesso l&amp;rsquo;IA per generare le immagini in testa ai post. In questo caso non ho scelta, se con la scrittura bene o male me la cavo, in disegno e grafica sono sempre stato il penultimo della classe, e solo perché l&amp;rsquo;ultimo era davvero terribile. Quindi vi faccio un favore. Ma, anche con il tanto celebrato &lt;a href=&#34;https://gemini.google/overview/image-generation/&#34;&gt;Nano Banana&lt;/a&gt; di Google, c&amp;rsquo;è voluto del bello e del buono per convincerlo a generare l&amp;rsquo;immagine di questo post, con le scritte giuste, l&amp;rsquo;homepage vera e così via. Chi dice che Nano Banana è tanto intelligente da capire al volo quello che volete racconta balle.&lt;/p&gt;&#xA;&lt;hr style=&#34;border: none; border-top: 3px double #333; color: #333; overflow: visible; height: 5px; width: 50%; margin-left: auto; margin-right: auto;&#34;&gt;&#xA;&lt;p&gt;Se tutto va bene il 2026 porterà qualche novità, non so bene in che ordine ma la revisione del tema grafico è di sicuro ai primi posti della lista.&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;Stay tuned&lt;/em&gt;! Nel frattempo, tanti auguri per il 2026, che sia un anno pieno di cose buone e di felicità per tutti!&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Jeeeeeekyll? No, Hugo!</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2025/05/24/jeeeeeekyll-no-hugo/</link>
      <pubDate>Sat, 24 May 2025 00:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2025/05/24/jeeeeeekyll-no-hugo/</guid>
      <description>&lt;p&gt;Mentre &lt;a href=&#34;https://melabit.com/it/2025/01/21/da-melabit-a-melabit-perche-jekyll/&#34;&gt;descrivevo come ero passato da Wordpress a Jekyll&lt;/a&gt;, sapevo già che avrei dovuto cambiare di nuovo.&lt;/p&gt;&#xA;&lt;p&gt;Da un punto di vista tecnico, &lt;a href=&#34;https://jekyllrb.com/&#34;&gt;Jekyll&lt;/a&gt; è una piattaforma fantastica: è facile da programmare, ha una documentazione ineccepibile e funziona perfettamente durante la fase di sviluppo, quando il numero di pagine e di post di test è limitato. Ma, come ho sperimentato in prima persona, una volta che Jekyll si trova a dover gestire un sito vero con centinaia di post, le prestazioni calano drasticamente e i tempi di risposta aumentano in modo intollerabile (e piuttosto imbarazzante).&lt;/p&gt;&#xA;&lt;p&gt;A fine anni &amp;lsquo;90 era normale aspettare diversi secondi prima di visualizzare una pagina web.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; Ma oggi siamo abituati a pagine che si caricano immediatamente, e una attesa di tre, quattro secondi è inaccettabile.&lt;/p&gt;&#xA;&lt;h4 id=&#34;un-prezzo-troppo-alto-da-pagare&#34;&gt;Un prezzo troppo alto da pagare&lt;/h4&gt;&#xA;&lt;p&gt;Prima di iniziare a lavorare sul nuovo sito sapevo bene che Jekyll era lento, ma questa lentezza si riferiva sempre alla &lt;strong&gt;fase di generazione del sito&lt;/strong&gt;, una operazione che si esegue di rado e può essere facilmente automatizzata. E in effetti è proprio così: durante lo sviluppo, con poche decine di post, rigeneravo il sito in 10-20 secondi, una cosa seccante ma non drammatica; ora ci vogliono 15 minuti per rigenerare l&amp;rsquo;intero &lt;a href=&#34;https://melabit.com/&#34;&gt;melabit.com&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Quello che non sapevo era che anche il &lt;strong&gt;sito generato&lt;/strong&gt; avrebbe sofferto dello stessa problema, come è diventato evidente non appena ho terminato la fase di sviluppo e ho iniziato a lavorare con tutti i post.&lt;/p&gt;&#xA;&lt;p&gt;In quel momento ero ancora convinto che l&amp;rsquo;ottimizzazione del codice e delle immagini e un &lt;em&gt;caching&lt;/em&gt; aggressivo avrebbe potuto attenuare il problema. E comunque ero andato troppo avanti per fermarmi. Ma dopo poco mi sono accorto che questa strategia non era sufficiente, e che ci voleva un ripensamento radicale. E ho cominciato a guardarmi attorno.&lt;/p&gt;&#xA;&lt;h4 id=&#34;alternative&#34;&gt;Alternative&lt;/h4&gt;&#xA;&lt;p&gt;I generatori di siti statici sono come le distribuzioni di Linux: abbondano e quasi sempre non si capisce il senso della loro esistenza. In questo momento, &lt;a href=&#34;https://jamstack.org/generators/&#34;&gt;Jamstack ne elenca&lt;/a&gt; 366, mentre &lt;a href=&#34;https://staticsitegenerators.net/&#34;&gt;Static Site Generators&lt;/a&gt; arriva a quasi 500. La maggior parte è stata abbandonata, magari perché nessuno le utilizzava o perché lo sviluppatore non era interessato a continuarne lo sviluppo. Diciamo che quelle interessanti sono una decina o poco più.&lt;/p&gt;&#xA;&lt;p&gt;Fra queste ho considerato (brevemente, lo ammetto) &lt;a href=&#34;https://www.bridgetownrb.com/&#34;&gt;Bridgetown&lt;/a&gt;, che &lt;a href=&#34;https://www.bridgetownrb.com/news/time-to-visit-bridgetown/&#34;&gt;deriva da Jekyll&lt;/a&gt; e quindi, a prima vista, sembrava una evoluzione naturale. Ma poi mi sono accorto che lo usano in pochi, che i plugin sono scarsi e i temi ancora meno. E poi, se Bridgetown discende da Jekyll, non è che soffre dello stesso problema di lentezza? Meglio stare alla larga e tenersi l&amp;rsquo;originale.&lt;/p&gt;&#xA;&lt;p&gt;Altro candidato era &lt;a href=&#34;https://middlemanapp.com/&#34;&gt;Middleman&lt;/a&gt;, sviluppato in Ruby come Jekyll, Ma Middleman è destinato a generare il classico sito web, e ci vuole una estensione specifica per fargli supportare le funzioni tipiche di un blog (liste di articoli, tassonomie, feed, commenti). E poi il linguaggio di &lt;em&gt;templating&lt;/em&gt; è &lt;a href=&#34;https://github.com/ruby/erb&#34;&gt;ERB&lt;/a&gt; (Embedded Ruby), che in sé è una scelta sensata dato che è integrato nello stesso Ruby, ma che per me significava dover reimparare tutto da zero.&lt;/p&gt;&#xA;&lt;p&gt;Ve la faccio breve: alla fine dei conti l&amp;rsquo;unico candidato serio era&amp;hellip; il solito &lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h4 id=&#34;alla-ricerca-della-velocità&#34;&gt;Alla ricerca della velocità&lt;/h4&gt;&#xA;&lt;p&gt;Di Hugo &lt;a href=&#34;https://melabit.com/it/2014/12/28/hugo-la-prova/&#34;&gt;avevo già scritto molti anni fa&lt;/a&gt;, trovandolo interessante, ma azzoppato da una documentazione che definire &lt;em&gt;scarsa&lt;/em&gt; era un complimento.&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;p&gt;Però la qualità non è in discussione, non a caso Hugo, proprio come Jekyll, finisce sistematicamente in cima a tutte le classifiche che si prefiggono di valutare la qualità dei vari generatori di siti statici.&lt;/p&gt;&#xA;&lt;p&gt;E poi Hugo ha un vero asso nella manica: è veloce, anzi è velocissimo.&lt;/p&gt;&#xA;&lt;p&gt;Non so dire se Hugo sia davvero &lt;em&gt;il più veloce framework al mondo per la costruzione di siti web&lt;/em&gt;, come sostiene lo &lt;a href=&#34;https://gohugo.io/&#34;&gt;slogan in cima alla sua home page&lt;/a&gt;. Ma ho verificato in prima persona che Hugo è in grado di generare questo sito in meno di un minuto, cioè 15 volte più rapidamente di Jekyll. E, quello che più conta, anche il sito generato risulta essere veloce e reattivo, proprio come ci si aspetta da un sito web moderno. Questo fa passare tutto il resto in secondo piano.&lt;/p&gt;&#xA;&lt;h4 id=&#34;hugo&#34;&gt;Hugo&lt;/h4&gt;&#xA;&lt;p&gt;E allora da oggi &lt;a href=&#34;https://melabit.com/&#34;&gt;melabit.com&lt;/a&gt; passa ad Hugo, con una nuova grafica&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt; e cercando di mantenere tutte le funzioni della versione basata su Jekyll. Prima fra tutte il &lt;a href=&#34;https://melabit.com/it/2025/03/05/da-melabit-a-melabit-gestire-i-commenti-con-jekyll/&#34;&gt;sistema di commenti basato su Comma&lt;/a&gt;, che dopo il trapianto ha funzionato praticamente al primo colpo.&lt;/p&gt;&#xA;&lt;p&gt;I &lt;a href=&#34;https://it.wikipedia.org/wiki/Permalink&#34;&gt;permalink&lt;/a&gt; sono cambiati e ora distinguono esplicitamente la lingua del post, che è una cosa più razionale. Anche il feed è cambiato, per ora è il vecchio RSS, prima o poi verificherò se è possibile aggiungere ATOM.&lt;/p&gt;&#xA;&lt;p&gt;La funzione di ricerca per ora è basata su Google, e non funzionerà finché il sito non sarà indicizzato di nuovo. La paginazione va rivista, così come la logica che mostra il post in evidenza anche nella lista di tutti i post. Ma ci sarà tempo per sistemare questi dettagli.&lt;/p&gt;&#xA;&lt;p&gt;Per formazione mentale mi piacerebbe entrare nei dettagli di come ho modificato Hugo e il tema grafico prescelto, ma temo di risultare noioso, soprattutto dopo tutti gli articoli, dettagliatissimi ma ormai praticamente inutili, scritti su Jekyll. Ci penserò un po&amp;rsquo; su, nel frattempo se qualcuno è interessato a saperne di più può scriverlo nei commenti.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2025-05-24-jeeeeeekyll-no-hugo/jekyll-vs-hugo.jpg&#34; alt=&#34;&#34;&gt;&#xA;&amp;ndash; &lt;em&gt;Immagine generata da &lt;a href=&#34;https://gemini.google.com&#34;&gt;Google Gemini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;Però ci si poteva distrarre guardando le immagini comparire una riga alla volta sullo schermo&amp;hellip; 😂&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:2&#34;&gt;&#xA;&lt;p&gt;Rispetto ad allora non è cambiato molto. Uno dei pochi articoli che posso consigliare senza riserve è questo sulla gestione del &lt;a href=&#34;https://www.smashingmagazine.com/2021/02/context-variables-hugo-static-site-generator/&#34;&gt;contesto e delle variabili in Hugo&lt;/a&gt;. Una lettura molto tecnica, ma indispensabile per imparare le basi necessarie a modificare ed estendere Hugo.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:3&#34;&gt;&#xA;&lt;p&gt;Che non mi fa impazzire, ma che per ora è il meglio che sono riuscito a fare.&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;</description>
    </item>
    <item>
      <title>Da melabit a melabit: Jekyll e l&#39;hosting</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2025/03/18/da-melabit-a-melabit-jekyll-e-l-hosting/</link>
      <pubDate>Tue, 18 Mar 2025 06:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2025/03/18/da-melabit-a-melabit-jekyll-e-l-hosting/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2025-03-18-da-melabit-a-melabit-jekyll-e-l-hosting/scott-rodgerson-PSpf_XgOM5w-unsplash.jpg&#34; alt=&#34;&#34;&gt;&#xA;&amp;ndash; &lt;em&gt;Fonte: &lt;a href=&#34;https://unsplash.com/@scottrodgerson&#34;&gt;Scott Rodgerson&lt;/a&gt; su &lt;a href=&#34;https://unsplash.com&#34;&gt;Unsplash&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Come promesso (o minacciato?) nell&amp;rsquo;&lt;a href=&#34;https://melabit.com/it/2025/03/05/da-melabit-a-melabit-gestire-i-commenti-con-jekyll/&#34;&gt;ultimo articolo&lt;/a&gt;, quest&amp;rsquo;ultimo post è dedicato ad esplorare le opzioni disponibili per l&amp;rsquo;&lt;em&gt;hosting&lt;/em&gt; di un sito web basato su Jekyll (o su qualsiasi altro generatore di siti statici) destinato ad ospitare il nostro blog personale (come quello che state leggendo), oppure il sito web di uno studio professionale o di una piccola azienda.&lt;/p&gt;&#xA;&lt;p&gt;Tutto sommato potrei cavarmela in due righe, invitandovi a rileggere quello che avevo scritto 6-7 anni fa (&lt;a href=&#34;https://melabit.wordpress.com/2019/06/18/da-melabit-a-melabit-fare-da-se/&#34;&gt;qui&lt;/a&gt; e &lt;a href=&#34;https://melabit.wordpress.com/2018/05/21/da-melabit-a-melabit-la-scelta-dell-hosting/&#34;&gt;qui&lt;/a&gt;) ma sono passati tanti anni e una bella rinfrescata è d&amp;rsquo;obbligo.&lt;/p&gt;&#xA;&lt;hr style = &#34;border: none; &#xA;            border-top: 3px double #333; &#xA;            color: #333; &#xA;            overflow: visible; &#xA;            height: 5px; &#xA;            width: 50%; &#xA;            margin-left: auto; &#xA;            margin-right: auto;&#34;&#xA;&gt;&#xA;&#xA;&lt;p&gt;Per chi volesse leggere le altre puntate dedicate alla mia transizione da Wordpress a Jekyll, ecco la lista completa degli articoli pubblicati:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://melabit.com/it/2025/01/02/da-melabit-a-melabit-addio-wordpress-ciao-jekyll/&#34;&gt;Da melabit a melabit: addio WordPress, ciao Jekyll&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://melabit.com/it/2025/01/21/da-melabit-a-melabit-perche-jekyll/&#34;&gt;Da melabit a melabit: perché Jekyll?&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://melabit.com/it/2025/02/11/da-melabit-a-melabit-jekyll-installazione-e-configurazione-di-base/&#34;&gt;Da melabit a melabit: Jekyll, installazione e configurazione di base&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://melabit.com/it/2025/03/01/da-melabit-a-melabit-sviluppare-un-sito-in-Jekyll/&#34;&gt;Da melabit a melabit: sviluppare un sito in Jekyll&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://melabit.com/it/2025/03/05/da-melabit-a-melabit-gestire-i-commenti-con-jekyll/&#34;&gt;Da melabit a melabit: gestire i commenti con Jekyll&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://melabit.com/it/2025/03/18/da-melabit-a-melabit-jekyll-e-l-hosting/&#34;&gt;Da melabit a melabit: Jekyll e l&amp;rsquo;hosting&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr style = &#34;border: none; &#xA;            border-top: 3px double #333; &#xA;            color: #333; &#xA;            overflow: visible; &#xA;            height: 5px; &#xA;            width: 50%; &#xA;            margin-left: auto; &#xA;            margin-right: auto;&#34;&#xA;&gt;&#xA;&#xA;&lt;h4 id=&#34;premessa&#34;&gt;Premessa&lt;/h4&gt;&#xA;&lt;p&gt;Non sono uno sviluppatore professionista, non so molto di sviluppo web e mi considero solo un dilettante per quanto riguarda la gestione di server e di reti.&lt;/p&gt;&#xA;&lt;p&gt;Le considerazioni riportate qui sotto, quindi, sono solo delle riflessioni personali frutto di anni di esperienza e di sperimentazione nella gestione di sistemi di calcolo più o meno complessi e di servizi web &lt;a href=&#34;https://melabit.wordpress.com&#34;&gt;ancora attivi&lt;/a&gt; o ormai defunti (più di uno, purtroppo). Mi auguro che le righe che seguono possano essere utili a chi sta valutando delle soluzioni simili, ma chi cerca delle soluzioni professionali deve rivolgersi a chi ne sa di più.&lt;/p&gt;&#xA;&lt;h4 id=&#34;perché-non-conviene-usare-un-mac&#34;&gt;Perché non conviene usare un Mac&lt;/h4&gt;&#xA;&lt;p&gt;Come accennavo la &lt;a href=&#34;https://melabit.com/it/2025/03/05/da-melabit-a-melabit-gestire-i-commenti-con-jekyll/&#34;&gt;volta scorsa&lt;/a&gt;, trovo poco sensato usare un Mac per ospitare un server web destinato a un sito basato su Jekyll (o, più in generale, per &lt;em&gt;qualsiasi&lt;/em&gt; sito web, sia esso statico o dinamico).&lt;/p&gt;&#xA;&lt;p&gt;La ragione è semplice: per gestire un sito con traffico moderato, un Mac è una soluzione eccessiva, un vero spreco di risorse (gli anglosassoni direbbero che è  &lt;em&gt;overkill&lt;/em&gt;, un termine che trovo particolarmente azzeccato).&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;p&gt;Discorso diverso per la fase di sviluppo (io stesso ho usato un Mac per quella): avere a disposizione un sistema UNIX con una interfaccia grafica ben curata, degli editor potenti ma facili da usare, degli strumenti che semplificano la scrittura del codice e la ricerca degli errori sono vantaggi che non hanno prezzo.&lt;/p&gt;&#xA;&lt;p&gt;E se ho un vecchio Mac che non uso più? Perché non destinarlo a gestire il mio sito?&lt;/p&gt;&#xA;&lt;p&gt;Un vecchio Mac è ancora perfetto per scrivere, gestire la posta elettronica, navigare sul web, fare videoconferenze, comporre musica, imparare a programmare e molto altro. Ancora meglio se gli installiamo una versione recente di macOS con &lt;a href=&#34;https://melabit.com/it/2023/12/22/ridare-una-nuova-vita-al-vecchio-mac-con-opencore-legacy-patcher-prima-parte/&#34;&gt;Open Core Legacy Patcher&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Ma usare un vecchio computer come server, da tenere acceso tutto il giorno, tutti i giorni? Non so, io non lo farei, non mi sembra una scelta affidabile. E comunque, anche volendo provarci, si ricadrebbe nel discorso più generale della prossima sezione.&lt;/p&gt;&#xA;&lt;h4 id=&#34;perché-non-conviene-fare-da-sé&#34;&gt;Perché non conviene fare da sé&lt;/h4&gt;&#xA;&lt;p&gt;Al posto del Mac potremmo voler usare un PC, magari uno di quei gioiellini un po&amp;rsquo; datati simili al Mac Mini che si trovano a poco più di 100 euro e che possono ancora dire la loro, come il &lt;a href=&#34;https://www.ebay.it/sch/i.html?_nkw=lenovo&amp;#43;m95q&#34;&gt;Lenovo M95q&lt;/a&gt; o l&amp;rsquo;&lt;a href=&#34;https://www.ebay.it/sch/i.html?_nkw=HP&amp;#43;800&amp;#43;g3&#34;&gt;HP 800 G3&lt;/a&gt;. Oppure un &lt;a href=&#34;https://www.amazon.it/Raspberry-Pi-Quad-Core-ARMA76-Bits/dp/B0CK2FCG1K&#34;&gt;Raspberry Pi 5&lt;/a&gt; che, purtroppo, non è più conveniente come una volta, almeno se vogliamo usarlo come un semplice computer.&lt;/p&gt;&#xA;&lt;p&gt;Come &lt;a href=&#34;https://melabit.com/it/2019/06/18/da-melabit-a-melabit-fare-da-se/&#34;&gt;dicevo anni fa&lt;/a&gt;, una volta installatoci su Linux, questi minicomputer diventano perfetti &amp;ldquo;&lt;em&gt;per imparare a gestire un server web e il sistema Linux associato oppure per fare delle prove con diversi CMS o generatori di siti statici prima di scegliere quello che vogliamo usare per il nostro sito&lt;/em&gt;&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;Non c&amp;rsquo;è nemmeno bisogno di collegarli ad una tastiera e ad un monitor, perché si può fare davvero tutto dal Terminale tramite collegamento &lt;code&gt;ssh&lt;/code&gt; o, per chi preferisce la classica interfaccia grafica, accedendo al sistema con &lt;a href=&#34;https://remotedesktop.google.com&#34;&gt;Chrome Remote Desktop&lt;/a&gt; o con uno dei tanti servizi di accesso remoto che ormai conosciamo tutti molto bene.&lt;/p&gt;&#xA;&lt;p&gt;Ma possiamo usare questi minicomputer per gestire un sito &amp;ldquo;vero&amp;rdquo;, che deve essere attivo 24 ore su 24 e 7 giorni su 7?&lt;/p&gt;&#xA;&lt;p&gt;Secondo me no.&lt;/p&gt;&#xA;&lt;p&gt;Un sito web richiede la disponibilità di un indirizzo IP fisso pubblico e solo Fastweb lo offre gratuitamente, ma a certe condizioni. Gli altri provider non sanno nemmeno cosa sia, oppure bisogna sottoscrivere dei contratti specifici, che naturalmente sono più costosi dei normali contratti &amp;ldquo;home&amp;rdquo; e &amp;ldquo;business&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;Lo so, ci sono i servizi di &lt;a href=&#34;https://dyndns.it/&#34;&gt;DNS dinamico&lt;/a&gt;. Ma gli anni &amp;lsquo;90 sono passati da un pezzo, e oggi non affiderei mai i miei servizi web ad un servizio &lt;em&gt;ballerino&lt;/em&gt;, con tempi imprevedibili di aggiornamento dell’IP. Tanto più che, se si vuole un minimo di affidabilità, si deve scucire qualcosa. E a quel punto, ne vale la pena?&lt;/p&gt;&#xA;&lt;p&gt;Un altro problema sono le interruzioni improvvise di connessione a internet o di elettricità, magari a causa di lavori per strada, oppure perché il collega di studio o il partner ha deciso di accendere contemporaneamente tutti i condizionatori, o di usare lavatrice, forno e phon insieme.&lt;/p&gt;&#xA;&lt;p&gt;Certo, esistono gli UPS, ma se siamo fuori ufficio o casa, dopo un po&amp;rsquo; anche l&amp;rsquo;UPS si scarica e il nostro server si spegne.&lt;/p&gt;&#xA;&lt;p&gt;E infine, non dimentichiamolo mai, c&amp;rsquo;è la questione della sicurezza, gli attacchi inevitabili e continui dei tanti sfaccendati che non hanno di meglio da fare nella vita. A meno di non essere già degli esperti in tema di sicurezza, siamo davvero disposti ad impelagarci in prima persona in cose che vanno ben al di là delle nostre competenze?&lt;/p&gt;&#xA;&lt;h4 id=&#34;cosa-conviene-fare-da-sé&#34;&gt;Cosa conviene fare da sé&lt;/h4&gt;&#xA;&lt;p&gt;Volendo fare da sé, l&amp;rsquo;opzione migliore è senza dubbio usare una macchina virtuale su uno degli innumerevoli servizi cloud, da &lt;a href=&#34;https://upcloud.com/&#34;&gt;UpCloud&lt;/a&gt; a &lt;a href=&#34;https://www.digitalocean.com/&#34;&gt;Digital Ocean&lt;/a&gt;, oppure &lt;a href=&#34;https://www.heroku.com/&#34;&gt;Heroku&lt;/a&gt; o &lt;a href=&#34;https://www.linode.com/&#34;&gt;Linode&lt;/a&gt; (ora Akamai Cloud), senza dimenticare naturalmente i grossi player come &lt;a href=&#34;https://aws.amazon.com/it/what-is-aws/&#34;&gt;Amazon AWS&lt;/a&gt; e &lt;a href=&#34;https://cloud.google.com&#34;&gt;Google Cloud&lt;/a&gt; (ok, fra questi ci sarebbe anche &lt;a href=&#34;https://azure.microsoft.com&#34;&gt;Microsoft Azure&lt;/a&gt;). Se in questo momento non vi fidate a &lt;em&gt;comprare americano&lt;/em&gt;, qui c&amp;rsquo;è una lista di &lt;a href=&#34;https://european-alternatives.eu/category/cloud-computing-platforms&#34;&gt;provider cloud europei&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Una macchina virtuale sul cloud costa poco e non ha nessuno dei difetti elencati finora, a parte la questione della sicurezza, che però è gestita almeno in parte dallo stesso fornitore del servizio.&lt;/p&gt;&#xA;&lt;p&gt;Ancora più sicuro, e pure a costo zero, è usare servizi come &lt;a href=&#34;https://jekyllrb.com/docs/github-pages/&#34;&gt;GitHub Pages&lt;/a&gt; che, ogni volta che si aggiorna un &lt;em&gt;repository&lt;/em&gt; collegato basato su Jekyll, rigenera il sito e lo e pubblica automaticamente su &lt;code&gt;github.io&lt;/code&gt;. La &lt;a href=&#34;https://docs.github.com/en/pages/setting-up-a-github-pages-site-with-jekyll/creating-a-github-pages-site-with-jekyll&#34;&gt;documentazione relativa&lt;/a&gt; è molto dettagliata, per cui è inutile che io aggiunga altro.&lt;/p&gt;&#xA;&lt;h4 id=&#34;cosa-ho-fatto-io&#34;&gt;Cosa ho fatto io&lt;/h4&gt;&#xA;&lt;p&gt;Io sono un utente come tanti, e la soluzione che ho adottato può essere un buon esempio di come gestire in modo efficiente e relativamente economico (cosa che non guasta mai) l’hosting di un sito web, senza compromessi sulla qualità del servizio.&lt;/p&gt;&#xA;&lt;p&gt;Questo sito è ospitato su &lt;a href=&#34;https://shockhosting.com/&#34;&gt;Shock Hosting&lt;/a&gt;, un servizio di &lt;em&gt;hosting&lt;/em&gt; che uso da anni e con un servizio di supporto eccezionale. In realtà in tanti anni ho avuto pochissimi problemi e sempre banali, ad esempio per una fattura pagata per sbaglio due volte, ma ogni volta la risposta del supporto non poteva essere più veloce.&lt;/p&gt;&#xA;&lt;p&gt;Il piano base &amp;ldquo;Low Shock&amp;rdquo; da 2.99 dollari al mese offre spazio su disco e trasferimento di dati illimitati, e non impone limitazioni artificiose di velocità (tutte cosa che pochi concorrenti offrono). Questo piano è più che sufficiente per un sito statico, ma anche per un sito basato su Wordpress o altri CMS (o dico per esperienza diretta). I piani superiori sono identici a quello base, ma permettono di ospitare più domini, e passare da un piano all&amp;rsquo;altro richiede solo l&amp;rsquo;apertura di un ticket e una breve attesa.&lt;/p&gt;&#xA;&lt;p&gt;Anche il nome del dominio è gestito da Shock Hosting e costa 12 dollari all&amp;rsquo;anno (un dollaro al mese), che è il costo normale di un dominio &lt;code&gt;.com&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Naturalmente, Shock Hosting è solo uno degli infiniti servizi di hosting disponibili, anche se, per quanto riguarda il rapporto qualità/prezzo, mi sembra difficile trovare di meglio. In ogni caso, prima di scegliere vi consiglio di stare molto attenti alle condizioni di uso, perché la maggior parte dei provider pone dei limiti più o meno stringenti allo spazio su disco o alla quantità di dati trasferiti. Oppure alcuni offrono prezzi molto convenienti per il &lt;a href=&#34;https://www.hostgator.com/web-hosting&#34;&gt;primo anno&lt;/a&gt; o i &lt;a href=&#34;https://www.dreamhost.com/hosting/shared/#shared-plans&#34;&gt;primi mesi&lt;/a&gt;, ma poi li aumentano in modo consistente. Se, prima di impegnarvi, riuscite anche a verificare come funziona il supporto è un bel vantaggio.&lt;/p&gt;&#xA;&lt;p&gt;Altrimenti preferite un servizio che vi permette di pagare ogni mese o ogni trimestre, in modo da avere la possibilità di testare con calma il servizio e di verificare se risponde alle vostre esigenze. In seguito, potrete sempre decidere di pagare ad intervalli più lunghi.&lt;/p&gt;&#xA;&lt;p&gt;Evitate invece come la peste i servizi che offrono sconti enormi se vi impegnate per due, tre o più anni, o per&amp;hellip; l&amp;rsquo;eternità. Su internet non c&amp;rsquo;è niente di eterno, anzi sono proprio i servizi &lt;em&gt;eterni&lt;/em&gt; quelli che muoiono più rapidamente. E se dovesse sucecdere avrete perso tutto quello che avete anticipato, altro che risparmio!&lt;/p&gt;&#xA;&lt;p&gt;Il solo servizio di hosting non è sufficiente per &lt;a href=&#34;https://melabit.com/posts/it&#34;&gt;melabit.com/posts/it&lt;/a&gt;, perché non permette di eseguire &lt;code&gt;comma&lt;/code&gt; per gestire i commenti. La cosa più semplice da fare sarebbe stata passare ad usare un server virtuale, sempre su &lt;a href=&#34;https://shockhosting.com/vps&#34;&gt;Shock Hosting&lt;/a&gt;, ma non mi piacciono le cose semplici. E poi il servizio di hosting offre dei vantaggi che non volevo perdere: si occupa della gestione del server web e della sicurezza del sito, esegue i backup, rinnova il certificato SSL, fornisce statistiche e molto altro. Tutte cose che valgono molto di più dei pochi euro al mese richiesti.&lt;/p&gt;&#xA;&lt;p&gt;Proprio mentre pensavo a cosa fare, mi è capitato sotto gli occhi &lt;a href=&#34;https://talkpython.fm/blog/posts/we-have-moved-to-hetzner/&#34;&gt;questo post&lt;/a&gt;, e ho deciso di assaggiare la &lt;em&gt;cucina&lt;/em&gt; tedesca, acquistando un server virtuale da &lt;a href=&#34;https://www.hetzner.com/&#34;&gt;Hetzner&lt;/a&gt;. Per far girare &lt;code&gt;comma&lt;/code&gt; è più che sufficiente l&amp;rsquo;offerta base CX22, che con meno di 5 euro al mese mi offre una macchina equivalente a quella base di &lt;a href=&#34;https://shockhosting.com/vps&#34;&gt;Shock Hosting&lt;/a&gt;, che però costa il doppio. E la potenza della macchina virtuale è tale che posso tranquillamente generare il sito su questa macchina virtuale, trasferendo poi il risultato su Shock Hosting con &lt;code&gt;rsync&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Quando ho scelto Hetzner, la guerra commerciale in atto fra USA ed Europa era solo nelle menti degli dei, ma con il senno di poi è stata una decisione azzeccata. Se un giorno perdessi l&amp;rsquo;accesso al mio servizio di hosting statunitense, oppure se il costo diventasse proibitivo per un europeo, ci metterei molto poco a trasferire tutto in lidi più sicuri. E ciao ciao USA.&lt;/p&gt;&#xA;&lt;h4 id=&#34;facciamo-due-conti&#34;&gt;Facciamo due conti&lt;/h4&gt;&#xA;&lt;p&gt;Ho scritto che secondo me non vale la pena fare da sé, usando un Mac o un PC per gestire il proprio sito. Ma dal punto di vista economico, potrebbe valerne la pena?&lt;/p&gt;&#xA;&lt;p&gt;Cominciamo calcolando quanto spendo al mese per &lt;a href=&#34;https://melabit.com/posts/it&#34;&gt;melabit.com/posts/it&lt;/a&gt;. Per l&amp;rsquo;hosting se ne vanno 3 euro, per il server virtuale 5 euro. Totale 8 euro al mese, che in un anno fanno 96 euro. A questo andrebbe aggiunto il costo del dominio, ma quello va pagato in ogni caso, quindi lo lascio fuori.&lt;/p&gt;&#xA;&lt;p&gt;Mettiamo ora che io sia testardo e voglia usare a tutti i costi un mini PC o un Raspberry Pi per gestire il mio sito. Diciamo che per il computer nudo e crudo se ne vanno 100-120 euro, a cui va aggiunto un disco SSD decente e una quantità di RAM adeguata, che fanno almeno altri 60-100 euro (per il Raspberry Pi la RAM è quella è non può essere cambiata, ma al suo posto dobbiamo prevedere di acquistare case, alimentatore, dissipatore praticamente obbligatorio e scheda per disco SSD NVMe, che fanno almeno 100 euro in tutto).&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; Poi ci vuole un UPS, e sono altri 100 euro.&lt;/p&gt;&#xA;&lt;p&gt;Il totale fa circa 300 euro (più o meno 30-40 euro), praticamente lo stesso di quello che spendo io in tre anni. Ma non è affatto detto che il mini PC o, peggio, il Raspberry Pi riesca a reggere tre anni di uso ininterrotto, per cui magari oggi si rompe la ventola, domani l&amp;rsquo;alimentatore, il disco comincia a fare le bizze, le batterie dell&amp;rsquo;UPS si esauriscono. Insomma, anche economicamente non è che convenga più di tanto.&lt;/p&gt;&#xA;&lt;p&gt;Meglio, molto meglio il cloud.&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;In teoria, si potrebbe dedicare un intero Mac ad un sito che riceve un numero molto elevato di visite. Ma in questo caso servono soluzioni professionali, non è possibile fare da sé.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:2&#34;&gt;&#xA;&lt;p&gt;Ma riuscire a rimanere vicino al limite inferiore di 160 euro mi pare davvero difficile.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;</description>
    </item>
    <item>
      <title>Da melabit a melabit: gestire i commenti con Jekyll</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2025/03/05/da-melabit-a-melabit-gestire-i-commenti-con-jekyll/</link>
      <pubDate>Wed, 05 Mar 2025 06:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2025/03/05/da-melabit-a-melabit-gestire-i-commenti-con-jekyll/</guid>
      <description>&lt;p&gt;Come dicevo la &lt;a href=&#34;https://melabit.com/it/2025/03/01/da-melabit-a-melabit-sviluppare-un-sito-in-Jekyll/&#34;&gt;volta scorsa&lt;/a&gt;, Jekyll non ha un sistema di commenti integrato, ma i suoi temi permettono spesso di gestire i commenti collegandosi a servizi di terze parti, come &lt;a href=&#34;https://disqus.com/&#34;&gt;Disqus&lt;/a&gt; e simili.&lt;/p&gt;&#xA;&lt;p&gt;Il problema di questi servizi è che possono smettere di funzionare da un giorno all&amp;rsquo;altro (vedi il caso di &lt;a href=&#34;https://web.archive.org/web/20240331055510/https://muut.com/&#34;&gt;Muut&lt;/a&gt;, che non ha più nemmeno un sito web), oppure hanno regole opache di utilizzo e di raccolta dei dati dell&amp;rsquo;utente.&lt;/p&gt;&#xA;&lt;p&gt;Un altro problema niente affatto trascurabile è che la maggior parte di questi servizi richiedono all&amp;rsquo;utente di registrarsi prima di commentare. La registrazione è utile per filtrare i commenti inopportuni o lo spam, ma è anche una barriera per il lettore casuale del post che voglia dire la sua.&lt;/p&gt;&#xA;&lt;p&gt;C&amp;rsquo;è poi la questione del costo. Alcuni servizi di gestione di commenti sono a pagamento e non sono nemmeno economici, vedi il caso di &lt;a href=&#34;https://talk.hyvor.com/&#34;&gt;Hyvor Talk&lt;/a&gt; che costa 12 euro al mese. Prezzo più che accettabile per un sito professionale o per una piccola azienda che voglia interagire con i suoi utenti &amp;ndash; tanto più che spesso questi servizi gestiscono anche l&amp;rsquo;invio di newsletter e materiale pubblicitario vario &amp;ndash; ma decisamente fuori scala per un blog fatto in casa come questo.&lt;/p&gt;&#xA;&lt;h4 id=&#34;alla-ricerca-del-sistema-ideale&#34;&gt;Alla ricerca del sistema ideale&lt;/h4&gt;&#xA;&lt;p&gt;Il mio interesse verso le questioni relative ai commenti è nato un anno fa quando, dopo la chiusura improvvisa di Muut, ho osservato l&amp;rsquo;enorme lavoro svolto dietro le quinte da &lt;a href=&#34;https://muloblog.netlify.app/&#34;&gt;Mimmo&lt;/a&gt;, MacMomo e Paoloo, per recuperare da Muut tutti i commenti di &lt;a href=&#34;https://macintelligence.org/post/2024-04-01-tra-nuova-vita-e-pesce-d-aprile/&#34;&gt;Quickloox&lt;/a&gt; &amp;ndash; uno dei blog imprescindibili per chi si interessa di Apple, Mac e dintorni &amp;ndash; per poi convertirli nel formato del nuovo motore dei commenti e &lt;a href=&#34;https://macintelligence.org/post/2024-04-06-caratteri-difficili/&#34;&gt;reinserirli in bell&amp;rsquo;ordine nel blog&lt;/a&gt;.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;p&gt;Pochi mesi dopo ho messo in cantiere il &lt;a href=&#34;https://melabit.com/it/2025/01/02/da-melabit-a-melabit-addio-wordpress-ciao-jekyll/&#34;&gt;passaggio da Wordpress Jekyll&lt;/a&gt;, e quello dei commenti era uno dei problemi principali da risolvere. Su Wordpress il problema non si pone, i commenti sono integrati e vengono salvati nel database del sito insieme al testo dei post. Ma quando si usa un sito statico, come quello generato da Jekyll, bisogna implementare qualche meccanismo per innestarvi sopra i commenti, che per la loro stessa natura sono degli oggetti dinamici.&lt;/p&gt;&#xA;&lt;p&gt;Con il senno di poi, avrei potuto seguire i &lt;a href=&#34;https://muloblog.netlify.app/post/2024-03-09-comma-commentare/&#34;&gt;consigli di Mimmo&lt;/a&gt; e scegliere &lt;a href=&#34;https://github.com/Dieterbe/comma&#34;&gt;Comma&lt;/a&gt; fin dal primo momento. Ma arrivavo da Wordpress e l&amp;rsquo;idea di usare un database mi sembrava la più naturale.&lt;/p&gt;&#xA;&lt;p&gt;E allora ho provato &lt;a href=&#34;https://cusdis.com/&#34;&gt;Cusdis&lt;/a&gt;, &lt;a href=&#34;https://commento.io/&#34;&gt;Commento&lt;/a&gt;, &lt;a href=&#34;https://github.com/souramoo/commentoplusplus&#34;&gt;Commento++&lt;/a&gt;, &lt;a href=&#34;https://remark42.com/&#34;&gt;Remark42&lt;/a&gt;, &lt;a href=&#34;https://github.com/zoomment&#34;&gt;Zooment&lt;/a&gt;, tutti sistemi di commenti basati su un database.&lt;sup id=&#34;fnref1:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; Ho seguito passo passo le istruzioni, ho usato Docker, ho usato una macchina virtuale sul cloud con Linux, ho provato servizi che dovrebbero fare tutto da soli come &lt;a href=&#34;https://railway.app/&#34;&gt;Railway&lt;/a&gt; o &lt;a href=&#34;https://vercel.com/&#34;&gt;Vercel&lt;/a&gt;. Niente da fare, ci fosse stato un sistema di commenti che funzionava come si deve!&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;p&gt;Esclusi a priori tutti i sistemi che si appoggiano a GitHub, come &lt;a href=&#34;https://github.com/giscus/giscus&#34;&gt;Giscus&lt;/a&gt;, &lt;a href=&#34;https://staticman.net/&#34;&gt;Staticman&lt;/a&gt; o &lt;a href=&#34;https://github.com/utterance/utterances&#34;&gt;utterances&lt;/a&gt;, perfetti per gli sviluppatori che hanno già di sicuro un account, ma poco pratici per il lettore occasionale costretto a crearne un altro inutile, ne restava solo uno. Ovviamente &lt;a href=&#34;https://github.com/Dieterbe/comma&#34;&gt;Comma&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h4 id=&#34;al-lavoro-su-comma&#34;&gt;Al lavoro su Comma&lt;/h4&gt;&#xA;&lt;p&gt;E Comma è stato. Comma è scritto in Go e viene distribuito solo in formato sorgente. Per compilarlo serve quindi un compilatore per il &lt;a href=&#34;https://go.dev/&#34;&gt;linguaggio Go&lt;/a&gt;. Sul Mac il compilatore si installa scaricando il &lt;a href=&#34;https://go.dev/doc/install&#34;&gt;&lt;em&gt;package&lt;/em&gt; preconfezionato&lt;/a&gt; e seguendo le istruzioni, oppure tramite il solito &lt;a href=&#34;https://brew.sh/&#34;&gt;Homebrew&lt;/a&gt;,&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ brew install golang&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Analogamente, su Linux Go si installa scaricando un &lt;a href=&#34;https://go.dev/doc/install&#34;&gt;file compresso&lt;/a&gt; ed estraendolo nella directory &lt;code&gt;usr/local&lt;/code&gt;, oppure tramite i comandi del &lt;em&gt;package manager&lt;/em&gt; della propria distribuzione,&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ sudo apt install golang&#xA;$ sudo dnf install golang&#xA;$ sudo pacman -S go&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;a seconda che usiamo Debian/Ubuntu, Fedora/CentOS, Arch, o uno degli infiniti derivati.&lt;/p&gt;&#xA;&lt;p&gt;Una volta installato Go, compilare Comma è questione di un attimo,&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ git clone https://github.com/Dieterbe/comma.git&#xA;$ cd comma/src&#xA;$ go build&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;dove l&amp;rsquo;ultimo comando serve per controllare che il programma venga compilato correttamente. Se è tutto a posto, si può eseguire&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ go install .&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;che in un solo colpo compila il sorgente ed installa l&amp;rsquo;eseguibile &lt;code&gt;comma&lt;/code&gt; in &lt;code&gt;~/go/bin/&lt;/code&gt; (come al solito la &lt;code&gt;~&lt;/code&gt; rappresenta la &lt;code&gt;Home&lt;/code&gt; dell&amp;rsquo;account che stiamo usando).&lt;/p&gt;&#xA;&lt;p&gt;Io prima di clonare il &lt;em&gt;repository&lt;/em&gt; di Comma ho fatto un &lt;a href=&#34;https://github.com/sabinomaggi/comma&#34;&gt;&lt;em&gt;fork&lt;/em&gt; nel mio account personale&lt;/a&gt;, ma solo perché volevo cambiare qualcosetta nel codice.&lt;/p&gt;&#xA;&lt;p&gt;La prima cosa che ho fatto è stata quella di cambiare l&amp;rsquo;estensione dei file dei commenti, da &lt;code&gt;.cmt&lt;/code&gt; a &lt;code&gt;.xml&lt;/code&gt; (linee 67 e 105 del mio file &lt;code&gt;comment.go&lt;/code&gt;). I commenti sono infatti dei &lt;a href=&#34;https://en.wikipedia.org/wiki/XML&#34;&gt;file XML&lt;/a&gt;, e non c&amp;rsquo;era ragione di usare una estensione non standard. In più, questa modifica permette di aprirli più facilmente con un editor di testo, che li formatta automaticamente in modo leggibile. Una piccola comodità, molto utile durante la fase di sviluppo. Sempre per aumentare la leggibilità, ho anche aggiunto 4 spazi prima di ogni tag XML (linea 71-73 di &lt;code&gt;comment.go&lt;/code&gt;).&lt;/p&gt;&#xA;&lt;p&gt;Infine, ho rimosso l&amp;rsquo;obbligo di inserire l&amp;rsquo;indirizzo email di chi scrive il commento (linee 94-96 di &lt;code&gt;main.go&lt;/code&gt;). Volevo infatti un sito privo di qualunque forma di tracciamento degli utenti, evitando tanti &lt;a href=&#34;https://school-of-scrap.com/2018/come-sistemare-il-blog-per-gdpr-se-sei-solo-una-blogger-bloggerperlavoroconpassione/&#34;&gt;grattacapi con la GPDR&lt;/a&gt;.&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt; In teoria, ciò può presentare qualche rischio a livello di sicurezza, ma davvero pensiamo che chi vuole fare dei danni inserisca la sua vera email?&lt;/p&gt;&#xA;&lt;p&gt;Per quanto riguarda il &lt;em&gt;frontend&lt;/em&gt;, cioè come l&amp;rsquo;utente vede il suo nuovo commento e la lista dei commenti precedenti, qui ho trasportato su Jekyll la gran parte del &lt;a href=&#34;https://github.com/Dieterbe/dieterblog/blob/master/layouts/partials/comments.html&#34;&gt;codice originale&lt;/a&gt; dell&amp;rsquo;autore di Comma, aggiungendo il supporto a Markdown e ripulendo il commento dal codice potenzialmente malevolo inserito nel testo. Per queste due ultime funzionalità ho &lt;a href=&#34;https://gitlab.com/emeralit/quickloox-contest/-/blob/main/blog-v4/layouts/partials/comments.html&#34;&gt;tratto molta ispirazione&lt;/a&gt; dal codice scritto da Mimmo, MacMomo e Paoloo per Quickloox.&lt;/p&gt;&#xA;&lt;p&gt;In quanto alle icone associate a ciascun commentatore, ho preferito farle generare da &lt;a href=&#34;https://jdenticon.com/&#34;&gt;Jdenticon&lt;/a&gt;, forse perché le sue strutture geometriche simmetriche si adattano meglio alla mia personalità.&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;aspetto finale dei commenti mi pare piuttosto gradevole e ben integrato con il resto del sito, e anche la localizzazione funziona bene, anche in dettagli minimi come la riga sottile più in evidenza sotto &amp;ldquo;Aggiungi un commento&amp;rdquo;, che cambia a seconda che la scritta sia in italiano o in inglese.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2025-03-05-da-melabit-a-melabit-gestire-i-commenti-con-jekyll/form-di-commento.png&#34; alt=&#34;&#34;&gt;&lt;br&gt;&#xA;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2025-03-05-da-melabit-a-melabit-gestire-i-commenti-con-jekyll/comment-form.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Tutto il codice del frontend è in &lt;code&gt;_includes/custom/comma-comments.html&lt;/code&gt;. Già che c&amp;rsquo;ero, ho aggiunto alla pagina dei post (&lt;code&gt;_layouts/post.html&lt;/code&gt;), una piccola funzione in JavaScript che permette di tornare con un click in testa al post. A me serviva in fase di sviluppo, ma credo che possa essere utile anche a chi legge l&amp;rsquo;articolo, per cui l&amp;rsquo;ho lasciata nel codice finale.&lt;/p&gt;&#xA;&lt;h4 id=&#34;mettere-tutto-insieme&#34;&gt;Mettere tutto insieme&lt;/h4&gt;&#xA;&lt;p&gt;Una volta pronto sia il sistema di commenti che il codice per visualizzarli sul sito, bisogna far funzionare tutto assieme. Per prima cosa dobbiamo creare una cartella dove salvare tutti i commenti,&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ cd&#xA;$ mkdir ~/comments&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;poi attivare Comma a mano,&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ ~/go/bin/comma ~/comments localhost:5888&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;istruendolo a mettersi in attesa dei nuovi commenti sulla porta &lt;code&gt;5888&lt;/code&gt; del computer locale &lt;code&gt;localhost&lt;/code&gt;, salvandoli nella cartella &lt;code&gt;~/comments&lt;/code&gt;. Infine, dobbiamo aggiungere in &lt;code&gt;_config.yml&lt;/code&gt; una riga che connetta Jekyll al server dei commenti,&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#--- Comma comments ---&#xA;commentserver: http://localhost:5888&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;e tutto dovrebbe funzionare al primo colpo. Se invece di un computer fisico stiamo usando una macchina virtuale sul cloud, al posto di &lt;code&gt;localhost&lt;/code&gt; dovremo usare il &lt;code&gt;reverse DNS name&lt;/code&gt; della macchina (si veda l&amp;rsquo;&lt;a href=&#34;https://melabit.com/it/2025/03/01/da-melabit-a-melabit-sviluppare-un-sito-in-Jekyll/&#34;&gt;articolo precedente&lt;/a&gt;), ma i dettagli di come si fa dipendono dal servizio usato, per cui non posso essere più preciso.&lt;/p&gt;&#xA;&lt;p&gt;In un sito reale le cose diventano un po&amp;rsquo; più complesse, ad esempio perché bisogna utilizzare il protocollo sicuro &lt;code&gt;https:&lt;/code&gt; al posto del semplice &lt;code&gt;http:&lt;/code&gt;, e questo richiede di configurare per bene il server web. Ma anche in questo caso i dettagli dipendono dal server web utilizzato, dalla configurazione dei servizi installati e così via, per cui è impossibile dire di più senza scrivere un intero manuale d&amp;rsquo;uso.&lt;/p&gt;&#xA;&lt;p&gt;Quello che posso dire, invece, è che un sito vero richiede che Comma parta automaticamente, esattamente come succede al server web che gestisce il sito.&lt;/p&gt;&#xA;&lt;p&gt;Assumendo che il sito giri su un server Linux (nel prossimo articolo spiegherò perché non ha molto senso usare un Mac come server web) e che Comma sia stato installato dall&amp;rsquo;utente &lt;code&gt;webuser&lt;/code&gt;, per far partire Comma automaticamente ad ogni riavvio del sistema operativo (ma anche quando per qualche motivo il programma viene interrotto), dobbiamo eseguire&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ cd /etc/systemd/system&#xA;$ sudo touch comma.service&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;creando il file di configurazione &lt;code&gt;comma.service&lt;/code&gt; vuoto, per poi inserire in questo file le righe seguenti,&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[Unit]&#xA;Description=comma backend server&#xA;After=network-online.target&#xA;Wants=network-online.target&#xA;&#xA;[Service]&#xA;ExecStart=/home/webuser/go/bin/comma /home/webuser/comments :5888&#xA;Restart=always&#xA;RestartSec=1&#xA;User=webuser&#xA;Group=webuser&#xA;&#xA;[Install]&#xA;WantedBy=graphical.target&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ricordandosi di sostituire a &lt;code&gt;webuser&lt;/code&gt; il nome dell&amp;rsquo;utente che ha installato Comma. A questo punto,&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ sudo systemctl enable comma&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;attiva il meccanismo di avvio automatico che ci permetterà, da ora in poi, di dimenticarci (o quasi) dell&amp;rsquo;esistenza di Comma. Per interagire manualmente con il servizio si usano i comandi,&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ sudo systemctl status comma&#xA;$ sudo systemctl stop comma&#xA;$ sudo systemctl start comma&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;che servono rispettivamente ad interrogare lo stato del servizio, oppure a fermare e a riavviare a mano Comma. Sono comandi molto utili in fase di &lt;em&gt;debugging&lt;/em&gt;, ma possono servire a volte anche in produzione, per cui è bene sapere che esistono.&lt;/p&gt;&#xA;&lt;h4 id=&#34;conclusioni&#34;&gt;Conclusioni&lt;/h4&gt;&#xA;&lt;p&gt;Avevo pensato di concludere qui questo viaggio nella descrizione tecnica del nuovo sito, ma mentre scrivevo questo articolo mi sono accorto che qualche parola sull&amp;rsquo;hosting potrebbe essere utile. E proprio questo sarà l&amp;rsquo;argomento della &lt;a href=&#34;https://melabit.com/it/2025/03/18/da-melabit-a-melabit-jekyll-e-l-hosting/&#34;&gt;prossima puntata&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;E nemmeno un database &lt;em&gt;piccolo&lt;/em&gt; come &lt;a href=&#34;https://www.sqlite.org/&#34;&gt;SQLite&lt;/a&gt;! Tutti questi sistemi di commenti usano pesi massimi come &lt;a href=&#34;https://mariadb.org/&#34;&gt;MariaDB&lt;/a&gt; o &lt;a href=&#34;https://www.postgresql.org/&#34;&gt;PosgreSQL&lt;/a&gt;.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref1:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:2&#34;&gt;&#xA;&lt;p&gt;Se fossi cattivo potrei pensare che le istruzioni fossero sbagliate apposta per spingermi ad usare le loro soluzioni cloud a pagamento. Ma io sono buono.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:3&#34;&gt;&#xA;&lt;p&gt;Non ho niente contro la GPDR, anzi la trovo una normativa utilissima, almeno in teoria. Nella pratica, però, fa poco per &lt;a href=&#34;https://www.laleggepertutti.it/207857_gdpr-il-paradosso-della-nuova-legge-sulla-privacy&#34;&gt;tutelare davvero la privacy degli utenti&lt;/a&gt;, riducendosi nei fatti in un poco utile appesantimento burocratico.&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;</description>
    </item>
    <item>
      <title>Da melabit a melabit: sviluppare un sito in Jekyll</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2025/03/01/da-melabit-a-melabit-sviluppare-un-sito-in-jekyll/</link>
      <pubDate>Sat, 01 Mar 2025 06:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2025/03/01/da-melabit-a-melabit-sviluppare-un-sito-in-jekyll/</guid>
      <description>&lt;p&gt;Dopo la&lt;a href=&#34;https://melabit.com/it/2025/02/11/da-melabit-a-melabit-jekyll-installazione-e-configurazione-di-base/&#34;&gt; prima parte&lt;/a&gt; dedicata all&amp;rsquo;installazione e alla configurazione iniziale di Jekyll, con questa seconda parte di note commentate si entra nel vivo dello sviluppo di un sito in Jekyll a partire da un tema già pronto. Sviluppare da zero un tema per Jekyll, invece, va molto oltre le mie competenze, ma del resto chi è in grado di farlo non ha bisogno di leggere queste notarelle.&lt;/p&gt;&#xA;&lt;h4 id=&#34;cosa-vogliamo&#34;&gt;Cosa vogliamo?&lt;/h4&gt;&#xA;&lt;p&gt;Per prima cosa dobbiamo avere una idea chiara di come dovrebbe essere il sito dal punto di vista grafico e quali funzioni deve supportare. Vogliamo un blog personale con un semplice elenco di post? Vogliamo un sito più elaborato stile rivista? Vogliamo un sito vetrina per presentare la nostra attività o un progetto specifico? Vogliamo un sito fotografico o di documentazione?&lt;/p&gt;&#xA;&lt;p&gt;Una volta chiarite le &amp;ldquo;specifiche&amp;rdquo; del sito, facciamo un giro su &lt;a href=&#34;http://jekyllthemes.org/&#34;&gt;questo sito&lt;/a&gt; di temi per Jekyll, oppure su &lt;a href=&#34;https://jekyll-themes.com/&#34;&gt;questo&lt;/a&gt;, o su &lt;a href=&#34;https://jekyllthemes.io/&#34;&gt;questo&lt;/a&gt;, o infine su &lt;a href=&#34;https://jamstackthemes.dev/ssg/jekyll&#34;&gt;questo&lt;/a&gt; (non posso distinguerli per nome, perché si chiamano tutti Jekyll Themes). I più pazienti potranno scorrerli uno ad uno, gli altri preferiranno selezionate la tipologia di sito che gli interessa e guardare solo quei temi. In ogni caso, è bene prendere nota di quelli che ci piacciono di più e provate i siti demo, quando ci sono. È bene essere aperti, magari troviamo un tema interessante che esce fuori dalle specifiche, meglio segnarsi anche quello.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;come-è-fatto-un-tema&#34;&gt;Come è fatto un tema&lt;/h4&gt;&#xA;&lt;p&gt;A questo punto non resta che provare. Per evitare di essere generico, descriverò l&amp;rsquo;installazione del tema &lt;a href=&#34;https://github.com/wowthemesnet/mundana-theme-jekyll&#34;&gt;Mundana&lt;/a&gt; che, guarda caso, è quello che ho usato per &lt;a href=&#34;https://melabit.com/posts/it&#34;&gt;melabit.com/posts/it&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Ma, proprio come Mundana, la maggior parte dei temi non &lt;em&gt;gem-based&lt;/em&gt; di Jekyll si installa clonando il suo &lt;em&gt;repository&lt;/em&gt; su GitHub oppure scaricando un file compresso (nel qual caso, tutto la parte qui sotto relativa a &lt;code&gt;git&lt;/code&gt; può essere saltata a piè pari). In entrambi i casi, ciò che installiamo è sia il tema che il sito vero e proprio, perché in Jekyll non c&amp;rsquo;è una separazione netta fra grafica e contenuti.&lt;/p&gt;&#xA;&lt;p&gt;La prima cosa da fare è installare &lt;code&gt;git&lt;/code&gt; sul computer. Su macOS è installato di default, ma è sempre una versione un po&amp;rsquo; datata, e comunque come &lt;a href=&#34;https://melabit.com/it/2025/02/11/da-melabit-a-melabit-jekyll-installazione-e-configurazione-di-base/&#34;&gt;dicevo la volta scorsa&lt;/a&gt;, è sempre meglio separare i &lt;em&gt;tool&lt;/em&gt; di sistema da quelli che usate per lo sviluppo. Del resto, con &lt;a href=&#34;https://melabit.com/it/2014/04/29/homebrew-software-per-il-mac-fatto-in-casa/&#34;&gt;Homebrew&lt;/a&gt; ci vogliono pochi secondi, basta eseguire&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ brew install git&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;e avremo l&amp;rsquo;ultima (o quasi) versione di &lt;code&gt;git&lt;/code&gt; installata sul Mac.&lt;/p&gt;&#xA;&lt;p&gt;Con Linux non è molto diverso, ma questa volta dovremo usare l&amp;rsquo;installatore dei pacchetti per la distribuzione in uso, per cui eseguiamo uno dei comandi qui sotto&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ sudo apt install git&#xA;$ sudo dnf install git&#xA;$ sudo pacman -S git&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;a seconda che usiamo Debian/Ubuntu, Fedora/CentOS, Arch, o uno degli infiniti derivati.&lt;/p&gt;&#xA;&lt;p&gt;Come dicevo, l&amp;rsquo;installazione di Mundana avviene clonando il suo repository,&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ git clone https://github.com/wowthemesnet/mundana-theme-jekyll.git&#xA;Cloning into &amp;#39;mundana-theme-jekyll&amp;#39;...&#xA;remote: Enumerating objects: 324, done.&#xA;remote: Total 324 (delta 0), reused 0 (delta 0), pack-reused 324 (from 1)&#xA;Receiving objects: 100% (324/324), 4.12 MiB | 24.52 MiB/s, done.&#xA;Resolving deltas: 100% (116/116), done.&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;oppure scaricando ed espandendo il file &lt;code&gt;zip&lt;/code&gt; del progetto.&lt;/p&gt;&#xA;&lt;p&gt;Gli sviluppatori suggeriscono di fare il prima un &lt;em&gt;fork&lt;/em&gt; sul nostro account GitHub e poi di clonare da lì. Secondo me ha senso se vogliamo contribuire al codice, altrimenti mi sembra un passaggio inutile. E comunque, chi sa cos&amp;rsquo;è un &lt;em&gt;fork&lt;/em&gt; non ha bisogno di altre istruzioni.&lt;/p&gt;&#xA;&lt;p&gt;Una volta finita l&amp;rsquo;installazione, possiamo spostarci nella directory di Mundana e curiosare un po&amp;rsquo; in giro (per maggior chiarezza, tutti i nomi delle directory finiscono con uno &lt;code&gt;/&lt;/code&gt;).&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ cd  mundana-theme-jekyll&#xA;% ls -nhp&#xA;total 72&#xA;-rw-r--r--   1 501  20   398B Feb 12T19:58:00 404.html&#xA;-rw-r--r--   1 501  20   510B Feb 12T19:58:00 Gemfile&#xA;-rw-r--r--   1 501  20   1.7K Feb 12T19:58:00 Gemfile.lock&#xA;-rw-r--r--   1 501  20   2.0K Feb 12T19:58:00 README.md&#xA;-rw-r--r--   1 501  20   1.7K Feb 12T19:58:00 _config.yml&#xA;drwxr-xr-x  11 501  20   352B Feb 12T19:58:00 _includes/&#xA;drwxr-xr-x   6 501  20   192B Feb 12T19:58:00 _layouts/&#xA;drwxr-xr-x  11 501  20   352B Feb 12T19:58:00 _pages/&#xA;drwxr-xr-x  20 501  20   640B Feb 12T19:58:00 _posts/&#xA;drwxr-xr-x   5 501  20   160B Feb 12T19:58:00 assets/&#xA;-rw-r--r--   1 501  20   149B Feb 12T19:58:00 docker-compose.yml&#xA;-rw-r--r--   1 501  20   9.2K Feb 12T19:58:00 index.html&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;La directory di Mundana contiene due file di &lt;em&gt;servizio&lt;/em&gt; di &lt;code&gt;RubyGems&lt;/code&gt;, &lt;code&gt;Gemfile&lt;/code&gt; e &lt;code&gt;Gemfile.lock&lt;/code&gt;, oltre al file &lt;code&gt;docker-compose.yml&lt;/code&gt; che serve solo se usiamo Jekyll all&amp;rsquo;interno di un container Docker (cosa che qui non interessa). Tutto il resto fa capo a Jekyll.&lt;/p&gt;&#xA;&lt;p&gt;Le pagine statiche del sito vanno messe nella cartella &lt;code&gt;_pages&lt;/code&gt;, mentre tutti i contenuti dinamici, cioè quelli che vengono modificati di frequente come i post di un blog, vanno in &lt;code&gt;_posts&lt;/code&gt;. Il contenuto delle pagine statiche e dei post può essere scritto indifferentemente sia in &lt;code&gt;html&lt;/code&gt; che in &lt;code&gt;Markdown&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;La cartella &lt;code&gt;_layouts&lt;/code&gt; contiene i file che generano le parti principali del sito, come le pagine statiche e quelle dei post o la barra laterale, mentre la cartella &lt;code&gt;_includes&lt;/code&gt; contiene delle porzioni di codice che possono essere incluse nelle diverse pagine, più o meno come se fossero delle funzioni di libreria.&lt;/p&gt;&#xA;&lt;p&gt;Queste quattro cartelle, che iniziano tutte con un &lt;em&gt;underscore&lt;/em&gt; &lt;code&gt;_&lt;/code&gt;, vengono elaborate dal motore di Jekyll, che le usa per costruire le pagine html vere e proprie del sito statico.&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;ultima cartella &lt;code&gt;assets&lt;/code&gt;, invece, è dedicata ai contenuti del sito che non vengono elaborati dal motore di Jekyll, come i file &lt;code&gt;css&lt;/code&gt; che specificano tutti i dettagli dell&amp;rsquo;aspetto grafico del sito, i file &lt;code&gt;JavaScript&lt;/code&gt; necessari per svolgere certe funzioni che richiedono interattività,&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; e tutte le immagini del sito. Quando Jekyll genera un sito questa cartella viene copiata così com&amp;rsquo;è e il sistema crea automaticamente i link ai vari file.&lt;/p&gt;&#xA;&lt;p&gt;Infine, il file &lt;code&gt;_config.yml&lt;/code&gt; contiene tutti i parametri di configurazione del sito, fra cui il nome e la descrizione del sito, il link al logo o alla favicon, i plugin necessari per generare il sito, i parametri di paginazione, o l&amp;rsquo;elenco dei file e delle cartelle di servizio che non devono essere elaborati da Jekyll. Il file  &lt;code&gt;_config.yml&lt;/code&gt; può diventare piuttosto lungo e complesso, qui sotto per semplicità faccio vedere solo una piccola parte del file &lt;code&gt;_config.yml&lt;/code&gt; di default di Mundana.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# Site&#xA;name: &amp;#39;Mundana&amp;#39;&#xA;description: &amp;#39;Mundana is a free Jekyll theme for awesome people like you, Medium like.&amp;#39;&#xA;logo: &amp;#39;assets/images/logo.png&amp;#39;&#xA;favicon: &amp;#39;assets/images/favicon.ico&amp;#39;&#xA;baseurl: &amp;#39;/mundana-theme-jekyll&amp;#39;&#xA;&#xA;[...]&#xA;&#xA;# Plugins&#xA;plugins: &#xA;  - jekyll-feed&#xA;  - jekyll-sitemap&#xA;  - jekyll-paginate&#xA;  - jekyll-seo-tag&#xA;  &#xA;[...]&#xA;&#xA;# Paginate&#xA;paginate: 10&#xA;&#xA;# Exclude metadata and development time dependencies (like Grunt plugins)&#xA;exclude: [README.markdown, package.json, grunt.js, Gruntfile.js, Gruntfile.coffee, node_modules]&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Già che ci siamo, semplifichiamoci il lavoro futuro con una piccola modifica al file &lt;code&gt;_config.yml&lt;/code&gt;, sostituendo la riga &lt;code&gt;baseurl: &#39;/mundana-theme-jekyll&#39;&lt;/code&gt; con &lt;code&gt;baseurl: &#39;&#39;&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Dimenticavo, anche i plugin (e le relative dipendenze) sono anch&amp;rsquo;essi delle &lt;a href=&#34;https://melabit.com/it/2025/02/11/da-melabit-a-melabit-jekyll-installazione-e-configurazione-di-base/&#34;&gt;&lt;em&gt;gemme&lt;/em&gt; di Ruby&lt;/a&gt; e non sono installati di default, per cui ci tocca farlo con&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ rm Gemfile.lock&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;che serve per evitare di avere conflitti quando Ruby ci propone di installare plugin più recenti di quelli riportati nel file &lt;code&gt;Gemfile.lock&lt;/code&gt;. Subito dopo,&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ bundle install&#xA;[...]&#xA;Fetching gem metadata from https://rubygems.org/............&#xA;Resolving dependencies...&#xA;Fetching jekyll-paginate 1.1.0&#xA;Installing jekyll-paginate 1.1.0&#xA;Fetching jekyll-sitemap 1.4.0&#xA;Installing jekyll-sitemap 1.4.0&#xA;Bundle complete! 4 Gemfile dependencies, 39 gems now installed.&#xA;Bundled gems are installed into `[...]/.gems`&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;che installa i plugin veri e propri (e rigenera automaticamente il file &lt;code&gt;Gemfile.lock&lt;/code&gt; con le versioni appena installate dei vari plugin).&lt;/p&gt;&#xA;&lt;h4 id=&#34;mettiamo-di-nuovo-jekyll-alla-prova&#34;&gt;Mettiamo di nuovo Jekyll alla prova&lt;/h4&gt;&#xA;&lt;p&gt;A questo punto non ci rimane che mettere di nuovo Jekyll alla prova, ma questa volta con il tema che abbiamo installato.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ bundle exec jekyll serve --host=0.0.0.0&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Il sito verrà rigenerato rapidamente e potrà essere visto all&amp;rsquo;URL &lt;code&gt;http://localhost:4000&lt;/code&gt; della nostra macchina reale, oppure all&amp;rsquo;URL della macchina virtuale o del server cloud che stiamo usando, sempre utilizzando la porta &lt;code&gt;4000&lt;/code&gt; (per i server cloud l&amp;rsquo;URL ha una etichetta del tipo &lt;code&gt;reverse DNS name&lt;/code&gt; o simili).&lt;/p&gt;&#xA;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2025-03-01-da-melabit-a-melabit-sviluppare-un-sito-in-Jekyll/jekyll-mundana-default.png&#34; alt=&#34;&#34;&gt;&lt;p&gt;Rispetto ai semplici temi &lt;em&gt;gem-based&lt;/em&gt; &lt;a href=&#34;https://melabit.com/it/2025/02/11/da-melabit-a-melabit-jekyll-installazione-e-configurazione-di-base/&#34;&gt;visti nell&amp;rsquo;articolo precedente&lt;/a&gt; Mundana è chiaramente un&amp;rsquo;altra cosa.&lt;/p&gt;&#xA;&lt;p&gt;Qui la struttura del sito è molto più efficace: in cima vengono mostrati gli ultimi quattro post con le relative immagini, al centro spicca in grande evidenza un post con uno sfondo contrastante (ad esempio l&amp;rsquo;ultimo pubblicato) e, più in basso, tutti gli altri post sono disposti in ordine cronologico inverso. A fianco, una barra laterale ospita i post che desideriamo mettere in risalto.&lt;/p&gt;&#xA;&lt;p&gt;Ora basterebbe sostituire i post preconfezionati di Mundana con i propri, aggiungere le immagini, fare due o tre modifiche al file &lt;code&gt;_config.yml&lt;/code&gt; e in pochi minuti si avrebbe il sito pronto da mettere online, con tutti i post già organizzati in tante pagine belle ordinate (&lt;a href=&#34;https://static.233.196.69.159.clients.your-server.de/img/2025-03-01-da-melabit-a-melabit-sviluppare-un-sito-in-Jekyll/jekyll-mundana-with-my-posts.png&#34;&gt;come si può vedere qui&lt;/a&gt;).&lt;/p&gt;&#xA;&lt;h4 id=&#34;il-tema-di-default-non-basta&#34;&gt;Il tema di default non basta&lt;/h4&gt;&#xA;&lt;p&gt;Un tema ben fatto è molto comodo e, come abbiamo appena visto, permette di andare online rapidamente e con pochissimo sforzo. Ma non è detto che così com&amp;rsquo;è riesca a soddisfare le esigenze di tutti.&lt;/p&gt;&#xA;&lt;p&gt;Io ad esempio volevo realizzare un sito multilingua in italiano e in inglese, una funzionalità che Mundana non supporta di default.&lt;/p&gt;&#xA;&lt;p&gt;Inoltre volevo che la &lt;code&gt;Home&lt;/code&gt; del sito mostrasse un riassunto degli ultimi post con le miniature delle immagini di testa, ma senza che queste apparissero nelle &lt;a href=&#34;https://static.233.196.69.159.clients.your-server.de/img/2025-03-01-da-melabit-a-melabit-sviluppare-un-sito-in-Jekyll/jekyll-mundana-single-post.png&#34;&gt;pagine dei singoli post&lt;/a&gt;. Mundana gestisce correttamente la prima richiesta, ma non la seconda.&lt;/p&gt;&#xA;&lt;p&gt;Un altro problema riguarda la &lt;a href=&#34;https://www.seozoom.it/paginazione-siti-web-ottimizzazione-tecniche-seo/&#34;&gt;paginazione&lt;/a&gt;: quella di default è bella, ma mostra un&amp;rsquo;unica striscia orizzontale di link a tutte le pagine generate. Quando queste sono troppe, la striscia si allarga a dismisura, finendo per sovrapporsi ad altri elementi grafici della pagina o per uscire dai margini del browser.&lt;/p&gt;&#xA;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2025-03-01-da-melabit-a-melabit-sviluppare-un-sito-in-Jekyll/jekyll-mundana-pagination.png&#34; alt=&#34;&#34;&gt;&lt;p&gt;Infine, Mundana supporta di default il sistema di commenti &lt;a href=&#34;https://disqus.com/&#34;&gt;Disqus&lt;/a&gt;, ma io preferivo una soluzione gestita &lt;em&gt;in casa&lt;/em&gt;, evitando di appoggiarmi a servizi di terze parti che possono cambiare le regole di utilizzo o, peggio, cessare di esistere da un giorno all&amp;rsquo;altro.&lt;/p&gt;&#xA;&lt;h4 id=&#34;al-lavoro&#34;&gt;Al lavoro!&lt;/h4&gt;&#xA;&lt;p&gt;Premetto che tutto il codice del tema modificato è disponibile su GitHub, all&amp;rsquo;URL &lt;a href=&#34;https://github.com/sabinomaggi/mundana-theme-jekyll-multilang&#34;&gt;https://github.com/sabinomaggi/mundana-theme-jekyll-multilang&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h5 id=&#34;paginazione&#34;&gt;Paginazione&lt;/h5&gt;&#xA;&lt;p&gt;Cominciamo dalla paginazione. A partire dalla versione 3 di Jekyll (ora siamo alla 4.4.1), la paginazione è gestita dal &lt;a href=&#34;https://jekyllrb.com/docs/pagination/&#34;&gt;plugin &lt;code&gt;jekyll-paginate-v2&lt;/code&gt;&lt;/a&gt;. In Mundana, il codice di paginazione è integrato nel file &lt;code&gt;index.html&lt;/code&gt; ed è molto semplice, tanto da dare problemi quando il numero di pagine del sito cresce.&lt;/p&gt;&#xA;&lt;p&gt;Io ho spostato la paginazione in &lt;code&gt;_includes/custom/paginator.html&lt;/code&gt;,&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt; facendo in modo che i link puntassero solo ad una parte delle pagine disponibili: quelle immediatamente intorno alla pagina corrente, la prima e l&amp;rsquo;ultima pagine e una pagina intermedia calcolata in base alla distanza della pagina corrente dalla prima (o dall&amp;rsquo;ultima). In questo modo la paginazione funziona correttamente anche in finestre molto strette o sui dispositivi mobili.&lt;/p&gt;&#xA;&lt;p&gt;Sul codice c’è poco da dire: partendo dalla pagina corrente vengono determinati tutti gli altri elementi della paginazione, generando dinamicamente il codice HTML di ciascun link. Tutta la logica del codice è in &lt;a href=&#34;https://shopify.github.io/liquid/&#34;&gt;&lt;code&gt;Liquid&lt;/code&gt;&lt;/a&gt;, che è il linguaggio di &lt;em&gt;templating&lt;/em&gt; usato da Jekyll. La sintassi di Liquid è un po’ astrusa e obbliga a fare qualche giochetto con le variabili, ma l’importante è che alla fine tutto funzioni.&lt;/p&gt;&#xA;&lt;p&gt;Secondo me, la parte più interessante del codice è la prima riga, che serve per cambiare dinamicamente le stringhe di testo in base alla lingua in uso. Ma questo ci porta alla prossima sezione.&lt;/p&gt;&#xA;&lt;h5 id=&#34;supporto-multilingue&#34;&gt;Supporto multilingue&lt;/h5&gt;&#xA;&lt;p&gt;Jekyll può gestire i siti multilingua tramite il &lt;a href=&#34;https://github.com/untra/polyglot&#34;&gt;plugin &lt;code&gt;jekyll-polyglot&lt;/code&gt;&lt;/a&gt;, che però non &lt;em&gt;comunica&lt;/em&gt; bene con il plugin di paginazione &lt;code&gt;jekyll-paginate-v2&lt;/code&gt;,&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt; per cui mi serviva un&amp;rsquo;altra soluzione.&lt;/p&gt;&#xA;&lt;p&gt;Polyglot è facilissimo da usare, basta aggiungere il plugin sotto la voce relativa nel file di configurazione &lt;code&gt;_config.yml&lt;/code&gt; e definire due nuove variabili con tutte le lingue che ci interessano.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[...]&#xA;&#xA;# Plugins&#xA;plugins: &#xA;  [...]&#xA;  - jekyll-polyglot&#xA;&#xA;[...]&#xA;&#xA;# Polyglot&#xA;languages: [en, it, de, fr]&#xA;default_lang: en&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;A questo punto basta definire la lingua di ciascun post, aggiungendo nel suo &lt;a href=&#34;https://jekyllrb.com/docs/front-matter/&#34;&gt;&lt;em&gt;front matter&lt;/em&gt;&lt;/a&gt; la variabile &lt;code&gt;lang:&lt;/code&gt; (ad esempio, &lt;code&gt;lang: en&lt;/code&gt; o &lt;code&gt;lang: it&lt;/code&gt;) e il gioco è fatto.&lt;/p&gt;&#xA;&lt;div style = &#34;border-style: solid; border-width: 0px 0px 0px 12px; border-color: #03a87c; background-color: #defef6; padding: 1em; color:black; font-size:100%;&#34;&gt;&#xA;Il &lt;code&gt;front matter&lt;/code&gt; di Jekyll è un blocco di metadati in formato &lt;code&gt;YAML&lt;/code&gt; inserito all&#39;inizio di un file Markdown (&lt;code&gt;.md&lt;/code&gt;) o HTML (&lt;code&gt;.html&lt;/code&gt;). &#xA;&lt;p&gt;Il front matter è racchiuso tra tre trattini (&lt;code&gt;---&lt;/code&gt;) e serve a fornire informazioni su quella pagina o post, come il titolo, la lingua, il layout, e per personalizzare il comportamento delle pagine. Ad esempio:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;---&#xA;title: &amp;#34;Benvenuto&amp;#34;&#xA;layout: default&#xA;permalink: /it/&#xA;lang: it&#xA;---&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Quando Jekyll elabora il sito, utilizza il front matter per:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;definire il template utilizzare per la visualizzazione del sito (&lt;code&gt;layout: default&lt;/code&gt;).&lt;/li&gt;&#xA;&lt;li&gt;personalizzare l&amp;rsquo;URL associato alla pagina (&lt;code&gt;permalink: /it/&lt;/code&gt;).&lt;/li&gt;&#xA;&lt;li&gt;impostare delle variabili specifiche per quel file, da usare nei layout e nei temi (&lt;code&gt;lang: it&lt;/code&gt;).&#xA;Se una data pagina o post contiene nel front matter la variabile &lt;code&gt;lang:it&lt;/code&gt;, Polyglot potrà utilizzare questa variabile per applicare contenuti o stili specifici per la versione italiana del sito.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;L&amp;rsquo;idea quindi era quella di emulare a mano il comportamento di &lt;code&gt;polyglot&lt;/code&gt;. La prima cosa che ho fatto è stata definire nel file &lt;code&gt;_config.yml&lt;/code&gt; due variabili analoghe a quelle usate da Polyglot,&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#--- Custom localization variables ---&#xA;# Polyglot does not work well with Paginate-v2&#xA;# define these two variables instead&#xA;locales: [en, it]&#xA;default_locale: en&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;e aggiungere nel &lt;em&gt;front matter&lt;/em&gt; di ciascuna pagina o post una variabile che in analogia con le variabili definite in &lt;code&gt;_config.yml&lt;/code&gt;_ può essere &lt;code&gt;locale: en&lt;/code&gt; oppure &lt;code&gt;locale: it&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Per semplificare la gestione delle due lingue ho creato, all&amp;rsquo;interno della cartella principale &lt;code&gt;_posts&lt;/code&gt;, due sottocartelle &lt;code&gt;en&lt;/code&gt; e &lt;code&gt;it&lt;/code&gt; dove inserire i post nelle rispettive lingue (in questo modo, aggiungere con &lt;code&gt;sed&lt;/code&gt; la variabile &lt;code&gt;locale&lt;/code&gt; giusta è una questione di pochi secondi).&lt;/p&gt;&#xA;&lt;p&gt;Fatto questo, ho sfruttato una caratteristica specifica di Jekyll che, quando trova un file che nel nome contiene un indicatore di lingua, lo considera un&amp;rsquo;altra versione del file originale (senza indicatore), con sue variabili specifiche definite nel front matter.&lt;/p&gt;&#xA;&lt;p&gt;In altri termini, se ho un file &lt;code&gt;index.html&lt;/code&gt; che contiene tutto il codice necessario per costruire la pagina &lt;code&gt;Home&lt;/code&gt; del sito e poi creo un secondo file &lt;code&gt;index_it.html&lt;/code&gt; vuoto, ad eccezione del front matter in cui è definita la variabile &lt;code&gt;locale: it&lt;/code&gt;, questo file &lt;code&gt;index_it.html&lt;/code&gt; erediterà tutto il contenuto di &lt;code&gt;index.html&lt;/code&gt; ma utilizzerà il valore della variabile &lt;code&gt;locale&lt;/code&gt; per adattare la pagina alla lingua italiana. Questo meccanismo è spiegato molto bene in qualche pagina che ho consultato, ma purtroppo non trovo più i link relativi.&lt;/p&gt;&#xA;&lt;p&gt;Ultimo mattoncino: quando si usa la paginazione, la variabile &lt;code&gt;locale: it&lt;/code&gt; deve essere definita all&amp;rsquo;interno della variabile &lt;code&gt;pagination:&lt;/code&gt; del front matter,&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;pagination:&#xA;    enabled: true&#xA;    locale: it&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;per cui tutto il codice usato per determinare in modo dinamico la lingua in cui è scritta una data pagina deve controllare sempre sia il contenuto della variabile &lt;code&gt;page.locale&lt;/code&gt; che di &lt;code&gt;page.pagination.locale&lt;/code&gt;,&lt;/p&gt;&#xA;&lt;p&gt;Ovviamente bisogna adattare alla lingua anche tutte le stringhe di testo presenti nel sito. Per questo, c&amp;rsquo;è il file &lt;code&gt;_data/translations.yml&lt;/code&gt; che contiene le traduzioni in inglese e in italiano di tutte le stringhe utilizzate.&lt;/p&gt;&#xA;&lt;p&gt;Inutile dire che mettere a punto correttamente il meccanismo di localizzazione è stata la cosa che ha richiesto più tempo nel corso dello sviluppo di &lt;code&gt;melabit.com/posts/it&lt;/code&gt;. Il modo in cui è stato fatto, però, consente di aggiungere una nuova lingua in pochi minuti: basta modificare la variabile &lt;code&gt;locales&lt;/code&gt; in &lt;code&gt;_config.yml&lt;/code&gt;, aggiungere un&amp;rsquo;altra cartella in &lt;code&gt;_posts&lt;/code&gt; e un&amp;rsquo;altra bandierina in &lt;code&gt;assets/images&lt;/code&gt;. Quasi quasi viene voglia di provare&amp;hellip; 😂&lt;/p&gt;&#xA;&lt;h5 id=&#34;miniature-e-commenti&#34;&gt;Miniature e commenti&lt;/h5&gt;&#xA;&lt;p&gt;Superato lo scoglio della localizzazione, togliere la miniatura dell&amp;rsquo;immagine di testa dalla pagina dei post è stato uno scherzo. È bastato trovare le righe di codice coinvolte e commentarle e il gioco è fatto.&lt;/p&gt;&#xA;&lt;p&gt;I commenti invece sono stati tutta un&amp;rsquo;altra storia, perfino più complicata di quella della localizzazione. E proprio ai commenti sarà destinato il &lt;a href=&#34;https://melabit.com/it/2025/03/05/da-melabit-a-melabit-gestire-i-commenti-con-jekyll/&#34;&gt;prossimo articolo&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;Ad esempio, proprio mentre scrivevo questo articolo, ho messo gli occhi  su &lt;a href=&#34;https://jekyll-themes.com/kitian616/jekyll-TeXt-theme&#34;&gt;questo tema&lt;/a&gt; che non si adatta alla mia idea originale di sito, ma che forse avrebbe potuto fare lo stesso al caso mio (ma ormai non cambio).&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:2&#34;&gt;&#xA;&lt;p&gt;Jekyll è un generatore di siti &lt;em&gt;statico&lt;/em&gt;, ma ormai anche un sito statico richiede un certo livello di &lt;em&gt;dinamicità&lt;/em&gt; per gestire al meglio cose come le ricerche, come i commenti, e così via.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:3&#34;&gt;&#xA;&lt;p&gt;Tutto il nuovo codice da includere l&amp;rsquo;ho messo nella cartella &lt;code&gt;custom&lt;/code&gt; per distinguerlo, anche fisicamente, da quello originale del tema.&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:4&#34;&gt;&#xA;&lt;p&gt;Dato che diversi post di 4-5 anni fa riportano di aver usato senza problemi sia &lt;code&gt;jekyll-polyglot&lt;/code&gt; che &lt;code&gt;jekyll-paginate-v2&lt;/code&gt;, questo potrebbe essere un problema specifico di Mundana. Oppure è una incompatibilità venuta fuori nelle ultime versioni di Jekyll o dei due plugin.&amp;#160;&lt;a href=&#34;#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;</description>
    </item>
    <item>
      <title>Da melabit a melabit: Jekyll, installazione e configurazione di base</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2025/02/11/da-melabit-a-melabit-jekyll-installazione-e-configurazione-di-base/</link>
      <pubDate>Tue, 11 Feb 2025 06:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2025/02/11/da-melabit-a-melabit-jekyll-installazione-e-configurazione-di-base/</guid>
      <description>&lt;p&gt;Questo articolo non vuole essere una guida dettagliata alla installazione e configurazione di &lt;a href=&#34;https://jekyllrb.com/&#34;&gt;Jekyll&lt;/a&gt;; per quello ci sono le ottime guide riportate più sotto.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;articolo è invece una raccolta commentata delle note che ho preso mentre sviluppavo &lt;a href=&#34;https://melabit.com/it/&#34;&gt;melabit.com/posts/it&lt;/a&gt;, e sono il risultato di giorni e giorni di prove ed errori, di cambi di direzione, di letture alla ricerca del comando &lt;em&gt;giusto&lt;/em&gt;. A me le note servivano per ricordare quello che avevo fatto e come avevo risolto i problemi che si presentavano di volta in volta. A voi potrebbero essere utili per fare tutto più in fretta e senza intoppi.&lt;/p&gt;&#xA;&lt;h4 id=&#34;installazione-di-jekyll&#34;&gt;Installazione di Jekyll&lt;/h4&gt;&#xA;&lt;p&gt;Per fare delle prove con Jekyll non c&amp;rsquo;è niente di meglio che usare una macchina virtuale, magari con una versione server di Linux che carica poco il sistema principale. Una buona alternativa è un server cloud virtuale, anche economico, come &lt;a href=&#34;https://upcloud.com/products/cloud-servers&#34;&gt;UpCloud&lt;/a&gt;, &lt;a href=&#34;https://cloud.google.com/products/compute&#34;&gt;Google Compute Engine&lt;/a&gt;, &lt;a href=&#34;https://aws.amazon.com/ec2/?nc2=h_ql_prod_fs_ec2&#34;&gt;Amazon EC2&lt;/a&gt; o similari. Per lavorare sul serio, invece, è molto più comodo e veloce usare una macchina &lt;em&gt;reale&lt;/em&gt;, tanto più che seguendo queste istruzioni il rischio di fare danni è nullo o quasi. Io per fortuna avevo a disposizione un vecchio Mac, che mi ha permesso di provare e riprovare sapendo che, in caso di problemi, avrei potuto resettarlo facilmente.&lt;/p&gt;&#xA;&lt;p&gt;La guida migliore per l&amp;rsquo;installazione di Jekyll è senza dubbio &lt;a href=&#34;https://jekyllrb.com/docs/installation/&#34;&gt;quella ufficiale&lt;/a&gt;, con istruzioni specifiche per i sistemi operativi più diffusi.&lt;/p&gt;&#xA;&lt;p&gt;La &lt;a href=&#34;https://jekyllrb.com/docs/installation/macos/&#34;&gt;guida per macOS&lt;/a&gt; è fatta bene, ma l&amp;rsquo;installazione richiede &lt;a href=&#34;https://brew.sh/&#34;&gt;Homebrew&lt;/a&gt; e un buon numero di passaggi da eseguire con attenzione. Su Linux l&amp;rsquo;installazione è molto più facile, mentre su Windows la cosa migliora da fare è installare il &lt;a href=&#34;https://learn.microsoft.com/en-us/windows/wsl/about&#34;&gt;Windows Subsystem for Linux (WSL)&lt;/a&gt; e poi lavorare &lt;a href=&#34;https://jekyllrb.com/docs/installation/windows/&#34;&gt;di fatto in un ambiente Linux&lt;/a&gt;.&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;p&gt;Un dettaglio importante che manca nelle istruzioni per macOS &amp;ndash; ma che invece è presente in quelle per &lt;a href=&#34;https://jekyllrb.com/docs/installation/freebsd/&#34;&gt;Ubuntu&lt;/a&gt;, &lt;a href=&#34;https://jekyllrb.com/docs/installation/freebsd/&#34;&gt;FreeBSD&lt;/a&gt; e gli &lt;a href=&#34;https://jekyllrb.com/docs/installation/other-linux/&#34;&gt;altri Linux&lt;/a&gt; &amp;ndash; è che, prima di eseguire il comando finale &lt;code&gt;gem install jekyll&lt;/code&gt; (ma volendo anche prima di iniziare ad installare Jekyll), è bene aggiungere queste righe al file &lt;code&gt;~/.bashrc&lt;/code&gt; o &lt;code&gt;~/.zshrc&lt;/code&gt; (a seconda della &lt;em&gt;shell&lt;/em&gt; usata),&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#--- Install Ruby gems in the user account, e.g. in ~/.gems ---&#xA;export GEM_HOME=&amp;#34;$HOME/.gems&amp;#34;&#xA;export PATH=&amp;#34;$HOME/.gems/bin:$PATH&amp;#34;&#xA;#--- end ---&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ed eseguire &lt;code&gt;source ~/.bashrc&lt;/code&gt; o &lt;code&gt;source ~/.zshrc&lt;/code&gt; per attivare le nuove variabili di ambiente (io sono rozzo e mi limito a chiudere il Terminale e a riaprirlo subito dopo).&lt;/p&gt;&#xA;&lt;p&gt;A cosa servono quelle righe? Ad istruire il gestore dei pacchetti di &lt;a href=&#34;https://www.ruby-lang.org/en/&#34;&gt;Ruby&lt;/a&gt;, &lt;code&gt;RubyGems&lt;/code&gt;, ad installare tutte le sue &lt;code&gt;gemme&lt;/code&gt;,&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt; fra cui c&amp;rsquo;è anche Jekyll, nell&amp;rsquo;account dell&amp;rsquo;utente invece che a livello di sistema. Una cosa buona e giusta per separare l&amp;rsquo;installazione nativa di &lt;code&gt;Ruby&lt;/code&gt; all&amp;rsquo;interno del sistema operativo da tutto ciò che installiamo noi, permettendoci di correggere gli (inevitabili) errori senza correre il rischio di intaccare le funzioni di base del sistema operativo.&lt;/p&gt;&#xA;&lt;p&gt;A questo punto, è possibile eseguire l&amp;rsquo;installazione vera e propria di Jekyll,&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ gem install jekyll&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;seguita subito dopo da un&amp;rsquo;altra gemma molto utile, &lt;a href=&#34;https://rubygems.org/gems/bundler&#34;&gt;Bundler&lt;/a&gt;,&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ gem install bundler&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;che inspiegabilmente è stata completamente dimenticata nelle istruzioni per macOS .&lt;/p&gt;&#xA;&lt;p&gt;Per istruire anche &lt;code&gt;bundler&lt;/code&gt; ad installare tutto nell&amp;rsquo;account dell&amp;rsquo;utente, bisogna eseguire&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ bundle config set --local path $GEM_HOME&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Infine, se stiamo usando una macchina virtuale o un server cloud e il nostro sistema operativo principale è macOS, possiamo installare anche questa gemma,&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ gem install rmate&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;che ci permetterà di usare &lt;a href=&#34;https://macromates.com/&#34;&gt;TextMate&lt;/a&gt;, che secondo me è nel complesso il miglior editor per macOS che ci sia in circolazione, per editare i file su cui si deve mettere le mani, invece di dover usare &lt;code&gt;nano&lt;/code&gt;, &lt;code&gt;vim&lt;/code&gt; o &lt;code&gt;emacs&lt;/code&gt; direttamente sulla macchina virtuale/cloud (che, avendo installata una versione server di Linux, non ha una interfaccia grafica).&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;il-primo-sito-in-jekyll&#34;&gt;Il primo sito in Jekyll&lt;/h4&gt;&#xA;&lt;p&gt;Alla fine del processo di installazione di Jekyll, tutte le guide suggeriscono di creare un nuovo sito con&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ jekyll new my-new-blog&#xA;Running bundle install in [...]/my-new-blog... &#xA;  Bundler: Resolving dependencies...&#xA;  Bundler: Bundle complete! 7 Gemfile dependencies, 30 gems now installed.&#xA;  Bundler: Use `bundle info [gemname]` to see where a bundled gem is installed.&#xA;New jekyll site installed in [...]/my-new-blog. &#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;che crea una nuova cartella &lt;code&gt;my-new-blog&lt;/code&gt; nella cartella corrente (i puntini fra parentesi quadre indicano la parte di percorso che dipende dal sistema operativo). Spostandosi nella nuova cartella e attivando il web server integrato in Jekyll,&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ cd  my-new-blog&#xA;$ bundle exec jekyll serve --host=0.0.0.0&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;potremo vedere il nostro nuovo sito all&amp;rsquo;URL &lt;code&gt;http://localhost:4000&lt;/code&gt; se stiamo usando una macchina reale. Se invece stiamo usando una macchina virtuale o un server cloud, dovremo puntare il browser all&amp;rsquo;URL pubblico fornitoci dalla macchina virtuale (o server cloud), utilizzando sempre la porta 4000.&lt;/p&gt;&#xA;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2025-02-11-da-melabit-a-melabit-jekyll-installazione-e-configurazione-di-base/jekyll-new-site.png&#34; alt=&#34;&#34;&gt;&lt;p&gt;Niente da dire, questa procedura è utile per verificare che tutto funzioni, e poi &lt;a href=&#34;https://github.com/jekyll/minima&#34;&gt;Minima&lt;/a&gt;, il tema di default, è davvero molto pulito ed elegante. Se Minima vi basta, potete chiuderla qui, sarà sufficiente dare un titolo al sito e aggiungere i contenuti e potrete partire immediatamente con il vostro nuovo blog in Jekyll.&lt;/p&gt;&#xA;&lt;p&gt;Ma questa procedura ci dà anche una idea molto pallida di cosa si possa fare  &lt;em&gt;davvero&lt;/em&gt; con Jekyll. Perché, e questo è un limite non da poco, le funzioni di Jekyll sono  strettamente integrate con i suoi temi grafici.&lt;/p&gt;&#xA;&lt;h4 id=&#34;jekyll-e-i-temi-grafici&#34;&gt;Jekyll e i temi grafici&lt;/h4&gt;&#xA;&lt;p&gt;Minima è un esempio di tema &lt;em&gt;gem-based&lt;/em&gt;, installato al di fuori della cartella del sito e che, proprio per il fatto di separare nettamente i contenuti del sito dal suo aspetto grafico, può essere in teoria facilmente sostituito con un altro tema a &lt;em&gt;gemma&lt;/em&gt;, come quello mostrato qui sotto.&lt;/p&gt;&#xA;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2025-02-11-da-melabit-a-melabit-jekyll-installazione-e-configurazione-di-base/jekyll-new-site-gem.png&#34; alt=&#34;&#34;&gt;&lt;p&gt;Ma i temi di questo tipo sono pochi, in genere sono piuttosto minimali e, per la loro stessa natura, è più laborioso modificarli o aggiungere nuove funzioni. E quel che è peggio, spesso sono fatti per versioni ormai obsolete di Jekyll e non funzionano nelle ultime versioni.&lt;sup id=&#34;fnref:5&#34;&gt;&lt;a href=&#34;#fn:5&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;p&gt;La stragrande maggioranza dei &lt;a href=&#34;http://jekyllthemes.org/&#34;&gt;temi per Jekyll&lt;/a&gt; arriva invece in un formato che integra in un&amp;rsquo;unica cartella sia i contenuti che la grafica. Una cosa molto comoda quando si trova il tema &lt;em&gt;giusto&lt;/em&gt;, ma che rende molto più complicato cambiare tema a posteriori.&lt;/p&gt;&#xA;&lt;p&gt;Installare la maggioranza dei temi per Jekyll significa di fatto installare tutto il sito che lo contiene, dandosi poi da fare per sostituire i post e le immagini preconfezionate con i nostri post e con le nostre immagini. Di conseguenza, è preferibile &lt;em&gt;prima&lt;/em&gt; scegliere un tema che ci piaccia e che supporti almeno una parte di quello che ci aspettiamo dal sito, e solo &lt;em&gt;dopo&lt;/em&gt; iniziare ad estenderne le funzioni nel modo desiderato.&lt;/p&gt;&#xA;&lt;p&gt;Ma questo sarà l&amp;rsquo;argomento della prossima puntata.&lt;/p&gt;&#xA;&lt;h4 id=&#34;e-se-jekyll-non-ci-piace-più&#34;&gt;E se Jekyll non ci piace più?&lt;/h4&gt;&#xA;&lt;p&gt;Allora dobbiamo disinstallare tutto. Il &lt;a href=&#34;https://emaxime.com/2018/how-to-uninstall-all-ruby-gems&#34;&gt;modo moderno per farlo&lt;/a&gt; è usare questo comando,&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ gem uninstall --all --ignore-dependencies --executables --verbose&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;oppure, per chi ama la compattezza,&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ gem uninstall -aIxV&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;dove lo switch &lt;code&gt;--all&lt;/code&gt; segnala di disinstallare tutte le gemme, mentre &lt;code&gt;--ignore-dependencies&lt;/code&gt; permette di evitare di bloccare il processo di disinstallazione quando si disinstalla una &lt;em&gt;gemma&lt;/em&gt; richiesta da un&amp;rsquo;altra &lt;em&gt;gemma&lt;/em&gt;. Il terzo switch &lt;code&gt;--executable&lt;/code&gt; serve per disinstallare gli eseguibili senza richiedere ogni volta una conferma. Infine &lt;code&gt;--verbose&lt;/code&gt; è utile per farci spiegare per filo e per segno quello che sta succedendo.&lt;/p&gt;&#xA;&lt;p&gt;Se avete seguito il consiglio iniziale di installare tutto nell&amp;rsquo;account utente non vi serviranno i privilegi di amministratore. Altrimenti avrete fatto male e per punizione dovrete anteporre &lt;code&gt;sudo&lt;/code&gt; al comando di installazione.&lt;/p&gt;&#xA;&lt;p&gt;Una volta disinstallate tutte le gemme, si potrebbe anche disinstallare &lt;code&gt;ruby&lt;/code&gt; e i pacchetti accessori, usando Homebrew per macOS oppure il gestore dei specifico per la distribuzione Linux usata. Ma con i grandi dischi attuali, vale la pena darsi tanto da fare solo per risparmiare qualche decina di MB?&lt;/p&gt;&#xA;&lt;h4 id=&#34;alla-prossima&#34;&gt;Alla prossima&lt;/h4&gt;&#xA;&lt;p&gt;L&amp;rsquo;articolo è già troppo lungo ed è meglio chiuderlo qui. Il &lt;a href=&#34;https://melabit.com/it/2025/03/01/da-melabit-a-melabit-sviluppare-un-sito-in-Jekyll/&#34;&gt;prossimo articolo&lt;/a&gt; servirà per entrare nel vivo dello sviluppo di un sito con Jekyll. A presto!&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;A causa dell&amp;rsquo;abbondanza di documentazione, con Jekyll il vero problema è riuscire a distinguere le guide davvero utili da quelle che fanno solo perdere tempo.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:2&#34;&gt;&#xA;&lt;p&gt;Da ora in poi non menzionerò più Windows, perché tutte le istruzioni necessarie a chi usa quel sistema operativo saranno identiche a quelle per Linux.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:3&#34;&gt;&#xA;&lt;p&gt;Una &lt;em&gt;gemma&lt;/em&gt; è un programma o una libreria scritta in &lt;code&gt;Ruby&lt;/code&gt; che contiene al suo interno tutto ciò che serve per eseguirla, o per sviluppare nuovi programmi che ne sfruttano le funzioni. Le gemme vengono installate tramite il gestore dei pacchetti standard, RubyGems, il cui comando &lt;code&gt;gem&lt;/code&gt; permette di eseguire tutti i processi di installazione, aggiornamento e disinstallazione delle varie gemme.&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:4&#34;&gt;&#xA;&lt;p&gt;Naturalmente il problema non si pone per chi è già un maestro di &lt;code&gt;vim&lt;/code&gt; o &lt;code&gt;emacs&lt;/code&gt;.&amp;#160;&lt;a href=&#34;#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:5&#34;&gt;&#xA;&lt;p&gt;E quando dico &amp;ldquo;spesso&amp;rdquo; non esagero.&amp;#160;&lt;a href=&#34;#fnref:5&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;</description>
    </item>
    <item>
      <title>Da melabit a melabit: perché Jekyll?</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2025/01/21/da-melabit-a-melabit-perche-jekyll/</link>
      <pubDate>Tue, 21 Jan 2025 18:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2025/01/21/da-melabit-a-melabit-perche-jekyll/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2025-01-21-da-melabit-a-melabit-perche-jekyll/jametlene-reskp-fmyZcoCaSac-unsplash.jpg&#34; alt=&#34;&#34;&gt;&#xA;&amp;ndash; &lt;em&gt;Fonte: &lt;a href=&#34;https://unsplash.com/@reskp&#34;&gt;Jametlene Reskp&lt;/a&gt; su &lt;a href=&#34;https://unsplash.com&#34;&gt;Unsplash&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Come dicevo nell&amp;rsquo;&lt;a href=&#34;https://melabit.com/it/2025/01/02/da-melabit-a-melabit-addio-wordpress-ciao-jekyll/&#34;&gt;ultimo post&lt;/a&gt;, lasciare la &lt;em&gt;comfort zone&lt;/em&gt; di Wordpress non è stato per niente facile.&lt;/p&gt;&#xA;&lt;p&gt;Fra doversi preoccupare solo di scrivere qualcosa di interessante, con tutto il resto gestito da una squadra di amministratori di sistema ed esperti di programmazione web, a dover fare tutto da solo c&amp;rsquo;è un abisso.&lt;/p&gt;&#xA;&lt;p&gt;C&amp;rsquo;è voluto un bel po&amp;rsquo; di tempo per configurare il nuovo sistema, aggiungere le funzionalità mancanti e risolvere i (tanti) problemi tecnici imprevisti. Tanto più che in parallelo continuavo a svolgere la mia normale attività lavorativa e, non dimentichiamo, dovevo pure scrivere un post ogni tanto.&lt;/p&gt;&#xA;&lt;hr style = &#34;border: none; &#xA;            border-top: 3px double #333; &#xA;            color: #333; &#xA;            overflow: visible; &#xA;            height: 5px; &#xA;            width: 50%; &#xA;            margin-left: auto; &#xA;            margin-right: auto;&#34;&#xA;&gt;&#xA;&#xA;&lt;p&gt;Di conseguenza, la prima necessità era basare questo nuovo blog su una piattaforma stabile e affidabile, che non cambiasse pelle ogni settimana o, peggio, che scomparisse improvvisamente dalla circolazione perché lo sviluppatore si era stufato di giocare con il suo progetto.&lt;/p&gt;&#xA;&lt;p&gt;Anche la disponibilità di una documentazione abbondante e ben fatta era fondamentale: avere guide chiare per configurare il sistema e trovare risposte rapide ai problemi (che sono inevitabili) è un aiuto enorme per non perdere giorni interi a impazzire dietro al codice.&lt;/p&gt;&#xA;&lt;p&gt;Su queste basi la scelta era inevitabile, ed era identica a quella di &lt;a href=&#34;https://melabit.wordpress.com/2014/12/31/and-the-winner-is/&#34;&gt;tanti anni fa&lt;/a&gt;: Jekyll.&lt;/p&gt;&#xA;&lt;p&gt;Perché &lt;a href=&#34;http://jekyllrb.com/&#34;&gt;Jekyll&lt;/a&gt; avrà pure tanti difetti, fra tutti la lentezza nella generazione del sito e la pesantezza del codice generato, ma esiste da ben 16 anni, viene ancora sviluppato con regolarità ma senza stravolgimenti (l&amp;rsquo;&lt;a href=&#34;https://github.com/jekyll/jekyll&#34;&gt;ultima release&lt;/a&gt; è di settembre 2024), e sul web si trovano guide su tutto ciò che può venire in mente quando si sviluppa un sito con questa piattaforma.&lt;/p&gt;&#xA;&lt;p&gt;Del resto, non sarà certo un caso se &lt;a href=&#34;https://docs.github.com/en/pages/setting-up-a-github-pages-site-with-jekyll/about-github-pages-and-jekyll&#34;&gt;GitHub ha scelto proprio Jekyll&lt;/a&gt; come piattaforma per generare un sito direttamente da un suo &lt;em&gt;repository&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;hr style = &#34;border: none; &#xA;            border-top: 3px double #333; &#xA;            color: #333; &#xA;            overflow: visible; &#xA;            height: 5px; &#xA;            width: 50%; &#xA;            margin-left: auto; &#xA;            margin-right: auto;&#34;&#xA;&gt;&#xA;&#xA;&lt;p&gt;A suo tempo, Jekyll mi aveva tanto convinto da spingermi a scrivere tutti i 482 post del blog su &lt;a href=&#34;https://melabit.wordpress.com/&#34;&gt;wordpress.com&lt;/a&gt; in Markdown, con una &lt;a href=&#34;https://jekyllrb.com/docs/front-matter/&#34;&gt;intestazione in YAML&lt;/a&gt; come quella usata di Jekyll e con le immagini salvate in cartelle con lo stesso nome del post.&lt;/p&gt;&#xA;&lt;p&gt;Su WordPress non serviva, perché tutto quello che dovevo (e potevo) fare era copiare il testo in un nuovo post, aggiungere le immagini e premere in bottone di pubblicazione (beh, in realtà è un po&amp;rsquo; più complicato, ma ci siamo capiti).&lt;/p&gt;&#xA;&lt;p&gt;Ma avere tutto bello e pronto nel formato &lt;em&gt;giusto&lt;/em&gt; ha semplificato parecchio la transizione da WordPress a sito statico basato su Jekyll. Mi è bastato preparare la struttura di base, aggiungere i post e le immagini, e generare il sito per avere tutto bello e pronto (anche qui le cose sono &lt;em&gt;leggermente&lt;/em&gt; più complicate, ma l&amp;rsquo;idea di base è quella).&lt;/p&gt;&#xA;&lt;p&gt;Se non avessi conservato i testi originali, avrei potuto usare un &lt;a href=&#34;https://github.com/benbalter/wordpress-to-jekyll-exporter&#34;&gt;plugin WordPress&lt;/a&gt; per &lt;a href=&#34;https://heidloff.net/article/migrating-from-wordpress-to-jekyll/&#34;&gt;esportare i post da WordPress in Jekyll&lt;/a&gt; (è proprio vero che esiste un plugin WordPress per qualunque cosa!). Ma il plugin non supporta i commenti, le immagini finiscono in una directory non standard e vanno spostate in quella corretta, bisogna correggere tutti i link&amp;hellip; Alla fine, nel mio caso ci sarebbe voluto più tempo a sistemare tutto che a ripartire da zero.&lt;/p&gt;&#xA;&lt;hr style = &#34;border: none; &#xA;            border-top: 3px double #333; &#xA;            color: #333; &#xA;            overflow: visible; &#xA;            height: 5px; &#xA;            width: 50%; &#xA;            margin-left: auto; &#xA;            margin-right: auto;&#34;&#xA;&gt;&#xA;&#xA;&lt;p&gt;Ora il lavoro di base è finito e tutte le funzioni principali del nuovo sito bene o male funzionano. A questo punto diventa più facile esplorare delle soluzioni alternative e, si spera, più performanti di Jekyll. In cima alla mia lista ci sono Bridgetown, che è un &lt;em&gt;fork&lt;/em&gt; di Jekyll che vale la pena approfondire, e Middleman, che mi incuriosisce parecchio anche se non so bene il perché!&lt;/p&gt;&#xA;&lt;p&gt;Ci sarà da divertirsi.&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Da melabit a melabit: addio WordPress, ciao Jekyll</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2025/01/02/2025-01-02-da-melabit-a-melabit-addio-wordpress-ciao-jekyll/</link>
      <pubDate>Thu, 02 Jan 2025 06:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2025/01/02/2025-01-02-da-melabit-a-melabit-addio-wordpress-ciao-jekyll/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2025-01-02-da-melabit-a-melabit-addio-wordpress-ciao-jekyll/phoenix.jpeg&#34; alt=&#34;&#34;&gt;&#xA;&amp;ndash; &lt;em&gt;Immagine generata dall&amp;rsquo;IA di &lt;a href=&#34;https://designer.microsoft.com/image-creator&#34;&gt;Microsoft Designer&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;Undici anni fa, quando ho iniziato a scrivere in questo spazio personale, non avrei mai pensato di rimanere per tutto questo tempo su &lt;a href=&#34;https://wordpress.com/&#34;&gt;WordPress.com&lt;/a&gt;, una piattaforma di blogging comoda ed affidabile, che però è sempre stata &lt;a href=&#34;https://melabit.com/it/2014/08/01/i-limiti-di-wordpress-com/&#34;&gt;poco adatta al mio modo di lavorare&lt;/a&gt;. Con il tempo ho imparato a convivere con questi limiti, ma l&amp;rsquo;idea di cambiare non mi ha mai abbandonato.&lt;/p&gt;&#xA;&lt;p&gt;Sin dall&amp;rsquo;inizio avevo ben chiaro &lt;a href=&#34;https://melabit.com/it/2014/12/31/and-the-winner-is/&#34;&gt;quale piattaforma alternativa&lt;/a&gt; avrei voluto utilizzare. Qualche anno dopo ho riesaminato le alternative disponibili e i passi da fare in una &lt;a href=&#34;https://melabit.wordpress.com/2018/04/16/da-melabit-a-melabit-introduzione/&#34;&gt;lunga serie di articoli&lt;/a&gt; che alla fine si è conclusa con&amp;hellip; un nulla di fatto, forse perché non ero convinto al 100% della decisione presa.&lt;/p&gt;&#xA;&lt;p&gt;Del resto, non è facile abbandonare la &lt;em&gt;comfort zone&lt;/em&gt; di una piattaforma con la quale hai avuto per tanti anni esattamente zero problemi, per imbarcarsi in una nuova avventura in cui bisogna gestire tutto in prima persona.&lt;/p&gt;&#xA;&lt;hr style = &#34;border: none; &#xA;            border-top: 3px double #333; &#xA;            color: #333; &#xA;            overflow: visible; &#xA;            height: 5px; &#xA;            width: 50%; &#xA;            margin-left: auto; &#xA;            margin-right: auto;&#34;&#xA;&gt;&#xA;&#xA;&lt;p&gt;Qualche mese fa, però, è arrivata la decisione di &lt;a href=&#34;https://automattic.com/&#34;&gt;Automattic&lt;/a&gt;, l&amp;rsquo;azienda che gestisce il software open source &lt;a href=&#34;https://wordpress.org/&#34;&gt;WordPress&lt;/a&gt; e tutti i prodotti derivati, di &lt;a href=&#34;https://www.engadget.com/tumblr-and-wordpress-posts-will-reportedly-be-used-for-openai-and-midjourney-training-204425798.html&#34;&gt;condividere di default&lt;/a&gt; tutti i contenuti presenti su WordPress.com con &amp;ldquo;terze parti&amp;rdquo;, cioè di fatto con i generatori di testi basati sull&amp;rsquo;Intelligenza Artificiale (ChatGPT e compagnia bella, per capirci), sempre affamati di nuovi testi con cui affinare il loro addestramento.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; A quel punto non ci potevano più essere tentenamenti.&lt;/p&gt;&#xA;&lt;p&gt;Come se non bastasse, poco dopo Matt Mullenweg, il fondatore di WordPress, ha &lt;a href=&#34;https://joshcollinsworth.com/blog/fire-matt&#34;&gt;dato di matto&lt;/a&gt; (&lt;em&gt;nomen omen&lt;/em&gt;), evidenziando come, nonostante WordPress sia il il sistema di gestione dei contenuti (CMS) open-source più diffuso al mondo, il controllo esercitato in maniera centralizzata e sempre più dittatoriale rischia di mettere in dubbio il futuro aperto e trasparente della piattaforma.&lt;/p&gt;&#xA;&lt;hr style = &#34;border: none; &#xA;            border-top: 3px double #333; &#xA;            color: #333; &#xA;            overflow: visible; &#xA;            height: 5px; &#xA;            width: 50%; &#xA;            margin-left: auto; &#xA;            margin-right: auto;&#34;&#xA;&gt;&#xA;&#xA;&lt;p&gt;E allora il dado è tratto! C&amp;rsquo;è voluto tanto tempo e anche tanto lavoro, ma da oggi questo piccolo blog ha una casa tutta sua, &lt;a href=&#34;https://melabit.com/it/it&#34;&gt;melabit.com/posts/it&lt;/a&gt;, dove poter sperimentare con una libertà molto maggiore di quella concessa finora. Vediamo come va.&lt;/p&gt;&#xA;&lt;p&gt;Il &lt;a href=&#34;https://melabit.com/it/it&#34;&gt;nuovo sito&lt;/a&gt; è ancora un oggetto in divenire, la struttura di base è quella ma nei prossimi mesi ci saranno di sicuro modifiche e aggiustamenti. La prima cosa da fare è espandere la sezione in inglese, che al momento contiene solo una manciata di post, con link mancanti o ancora riferiti agli articoli originali in italiano. Vorrei anche aggiungere un sistema di notifica dei nuovi post.&lt;/p&gt;&#xA;&lt;p&gt;Nel frattempo segnalatemi senza scrupoli nei commenti tutto ciò che non funziona o che funziona male.&lt;/p&gt;&#xA;&lt;p&gt;Per i dettagli e gli aspetti tecnici della transizione vi rimando invece ai prossimi post.&lt;/p&gt;&#xA;&lt;p&gt;Resta inteso che tutti i vecchi contenuti e i commenti rimarrano disponibili su &lt;a href=&#34;https://melabit.wordpress.com/&#34;&gt;melabit.wordpress.com&lt;/a&gt;. Almeno finché Mullenweg non mi caccia&amp;hellip; 🤣🤣🤣🤣🤣&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;Perché è vero che è possibile rifiutare la condivisione dei propri contenuti, e l&amp;rsquo;ho fatto anch&amp;rsquo;io ma, è altrettanto vero che bisogna scegliere esplicitamente di &lt;strong&gt;non condividere&lt;/strong&gt; i propri dati e non il contrario, come sarebbe più normale. E comunque non è affatto detto che questi contenuti non vengano razzolati lo stesso.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;</description>
    </item>
    <item>
      <title>Da melabit a melabit: conclusioni</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2019/07/03/da-melabit-a-melabit-conclusioni/</link>
      <pubDate>Wed, 03 Jul 2019 06:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2019/07/03/da-melabit-a-melabit-conclusioni/</guid>
      <description>&lt;p&gt;&lt;em&gt;&amp;ldquo;Dopo tutto questo parlare di hosting, domini, provider e cloud, si può sapere &lt;a href=&#34;https://melabit.wordpress.com/2018/04/16/da-melabit-a-melabit-introduzione/&#34;&gt;cosa hai deciso&lt;/a&gt; alla fine di fare per questo blog?&amp;rdquo;&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;Sono consapevole di &lt;a href=&#34;https://melabit.wordpress.com/2014/12/31/and-the-winner-is/&#34;&gt;contraddire&lt;/a&gt; quello che avevo scritto alcuni anni fa ma, dopo aver soppesato tutte le alternative, mi sono reso conto che la cosa migliore da fare in questo momento era cambiare il meno possibile, per cui ho deciso di  continuare ad usare WordPress, ospitato questa volta su una piattaforma di hosting tradizionale.&lt;/p&gt;&#xA;&lt;p&gt;Per ora niente generatori di siti statici come &lt;a href=&#34;https://jekyllrb.com&#34;&gt;Jekyll&lt;/a&gt; (che nonostante tutto continua a piacermi tantissimo), &lt;a href=&#34;https://getgrav.org&#34;&gt;Grav&lt;/a&gt; o &lt;a href=&#34;https://gohugo.io&#34;&gt;Hugo&lt;/a&gt;, niente CMS alternativi, magari più veloci ed efficienti di WordPress. Passare dalla &amp;ldquo;gabbia&amp;rdquo; dorata di &lt;a href=&#34;https://wordpress.com/&#34;&gt;Wordpress.com&lt;/a&gt; &amp;ndash; nella quale devo solo occuparmi di scrivere e a tutto il resto ci pensa &lt;a href=&#34;https://automattic.com/&#34;&gt;Automattic&lt;/a&gt; &amp;ndash; ad una piattaforma autogestita è già abbastanza complicato per volersi imbarcare in una transizione ancora più radicale. Qualche anno fa sarebbe stato più facile, ma in questo momento è un rischio che non voglio (e che non ho nemmeno il tempo di) correre.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://melabit.files.wordpress.com/2019/07/amador-loureiro-unsplash.jpg&#34; alt=&#34;&#34;&gt;&#xA;&amp;ndash; &lt;em&gt;Fonte: &lt;a href=&#34;https://unsplash.com/@amadorloureiroblanco&#34;&gt;Amador Loureiro&lt;/a&gt; su &lt;a href=&#34;https://unsplash.com&#34;&gt;Unsplash&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;Senza dimenticare che negli ultimi tre anni ho avuto modo di sperimentare a fondo la stabilità e l&amp;rsquo;affidabilità di WordPress gestendo un sito (semi)professionale con un carico di lavoro nettamente superiore a quello prodotto da questo blog e con &lt;em&gt;editor&lt;/em&gt; multipli, interventi sul forum, un gran numero di utenti registrati, infinite richieste di supporto tecnico nonché (potevano mancare?) innumerevoli attacchi al sito. WordPress si è comportato benissimo, perché buttare via questa esperienza sul campo?&lt;/p&gt;&#xA;&lt;p&gt;Non nascondo di essere stato attratto a lungo dall&amp;rsquo;ipotesi &amp;ldquo;WordPress + Raspberry Pi&amp;rdquo;, mi intrigava moltissimo l&amp;rsquo;idea di gestire tutto autonomamente, ma poi ho deciso che &lt;a href=&#34;https://melabit.wordpress.com/2019/06/18/da-melabit-a-melabit-fare-da-se/&#34;&gt;il gioco non valeva la candela&lt;/a&gt; e ho lasciato perdere.&lt;/p&gt;&#xA;&lt;p&gt;Ormai è tutto pronto o quasi. Il nome c&amp;rsquo;è, l&amp;rsquo;hosting pure, ho anche scelto un tema nuovo e più adatto (spero!) a mostrare i contenuti disponibili, manca solo il tocco finale, la pressione del classico bottone di avvio. Se non ci sono imprevisti &lt;del&gt;luglio&lt;/del&gt; settembre dovrebbe essere il momento buono.&lt;/p&gt;&#xA;&lt;p&gt;Ma niente è per sempre e non è detto che, dopo aver completato questa prima transizione, non decida di farne un&amp;rsquo;altra più radicale adottando Jekyll, la piattaforma che considero ancora la più vicina al mio spirito di programmatore, seppur solo &lt;em&gt;part-time&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;h4 id=&#34;da-melabit-a-melabit-la-serie-completa-degli-articoli&#34;&gt;Da melabit a melabit, la serie completa degli articoli&lt;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://melabit.wordpress.com/2018/04/16/da-melabit-a-melabit-introduzione/&#34;&gt;Da melabit a melabit: introduzione&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://melabit.wordpress.com/2018/05/21/da-melabit-a-melabit-la-scelta-dell-hosting/&#34;&gt;Da melabit a melabit: la scelta dell’hosting&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://melabit.wordpress.com/2018/06/19/da-melabit-a-melabit-la-scelta-del-dominio/&#34;&gt;Da melabit a melabit: la scelta del dominio&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://melabit.wordpress.com/2019/06/18/da-melabit-a-melabit-fare-da-se/&#34;&gt;Da melabit a melabit: fare da sé?&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://melabit.wordpress.com/2019/06/24/da-melabit-a-melabit-andare-sul-cloud/&#34;&gt;Da melabit a melabit: andare sul cloud&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://melabit.wordpress.com/2019/07/03/da-melabit-a-melabit-conclusioni/&#34;&gt;Da melabit a melabit: conclusioni&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
    <item>
      <title>Da melabit a melabit: andare sul cloud</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2019/06/24/da-melabit-a-melabit-andare-sul-cloud/</link>
      <pubDate>Mon, 24 Jun 2019 06:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2019/06/24/da-melabit-a-melabit-andare-sul-cloud/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://melabit.files.wordpress.com/2019/06/daniel-falcao-418402-unsplash.jpg&#34; alt=&#34;&#34;&gt;&#xA;&amp;ndash; &lt;em&gt;Fonte: &lt;a href=&#34;https://unsplash.com/@danielsfalcao&#34;&gt;Daniel Falcão&lt;/a&gt; su &lt;a href=&#34;https://unsplash.com&#34;&gt;Unsplash&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il &lt;em&gt;cloud computing&lt;/em&gt; è ovunque e ci sono decine di servizi diversi che ci permettono di usare un computer &lt;em&gt;virtuale&lt;/em&gt; situato da qualche parte nel mondo come se fosse il computer fisico che abbiamo sulla scrivania. In questo campo i grossi calibri sono &lt;a href=&#34;https://aws.amazon.com&#34;&gt;Amazon AWS&lt;/a&gt;, &lt;a href=&#34;https://cloud.google.com&#34;&gt;Google Cloud&lt;/a&gt;, &lt;a href=&#34;https://azure.microsoft.com&#34;&gt;Microsoft Azure&lt;/a&gt;, &lt;a href=&#34;https://www.openshift.com/&#34;&gt;Red Hat OpenShift&lt;/a&gt; (in rigoroso ordine alfabetico), ma ci sono anche i servizi offerti da fornitori di servizi di hosting come &lt;a href=&#34;https://it.siteground.com/cloud-hosting&#34;&gt;SiteGround&lt;/a&gt;, &lt;a href=&#34;https://www.dreamhost.com/cloud/&#34;&gt;DreamHost&lt;/a&gt; o &lt;a href=&#34;https://www.netsons.com&#34;&gt;Netsons&lt;/a&gt; oppure da &lt;em&gt;provider&lt;/em&gt; più orientati al mondo degli sviluppatori come &lt;a href=&#34;https://www.digitalocean.com/products/droplets&#34;&gt;Digital Ocean&lt;/a&gt;, &lt;a href=&#34;https://codenvy.com&#34;&gt;Codenvy&lt;/a&gt;, &lt;a href=&#34;https://www.heroku.com&#34;&gt;Heroku&lt;/a&gt;, &lt;a href=&#34;https://upcloud.com/&#34;&gt;UpCloud&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Descrivere tutto quello che fanno questi servizi è impossibile, le opzioni e le configurazioni sono tante e tanto diverse che cercare di orientarsi fra le varie possibilità fa letteralmente girare la testa (provate a districarvi nel sito di Amazon AWS e poi ditemi). Ma rimanendo a quello che ci interessa qui, tutti questi servizi mettono a disposizione un computer &lt;em&gt;virtuale&lt;/em&gt; ospitato sull&amp;rsquo;onnipresente cloud dove possiamo installare un sistema operativo (generalmente Linux) e tutte le applicazioni necessarie per realizzare il nostro sito web.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://melabit.files.wordpress.com/2019/06/debian-on-cloud1.png&#34; alt=&#34;&#34;&gt;&#xA;&lt;img src=&#34;https://melabit.files.wordpress.com/2019/06/debian-on-cloud2.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Anche in questo caso valgono &lt;a href=&#34;https://melabit.wordpress.com/2019/06/18/da-melabit-a-melabit-fare-da-se/&#34;&gt;considerazioni analoghe a quelle fatte una settimana fa per il Raspberry Pi&lt;/a&gt;, con l&amp;rsquo;ovvia differenza che ora non dobbiamo preoccuparci degli aspetti legati all&amp;rsquo;hardware, visto che la &lt;em&gt;macchina&lt;/em&gt; fisica e l&amp;rsquo;indirizzo IP sono forniti dal fornitore di servizi di cloud computing (in realtà la nostra macchina fisica non esiste nemmeno, il nostro computer virtuale sul cloud è solo un &lt;a href=&#34;https://www.html.it/pag/62783/docker-e-i-container/&#34;&gt;contenitore Docker&lt;/a&gt; ospitato insieme a mille altri su un server di un qualche datacenter).&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; A noi rimarranno comunque alcuni oneri importanti, come ad esempio quello di aggiornare e mantenere in sicurezza il sistema operativo e i pacchetti software che utilizziamo per realizzare il sito web.&lt;/p&gt;&#xA;&lt;p&gt;Ma oltre a non doverci preoccupare di gestire l&amp;rsquo;hardware, il vero vantaggio di ospitare il sito su un servizio di cloud computing è quello di essere liberi di utilizzare per il sito il software che preferiamo, senza i vincoli stabiliti dai normali fornitori di servizio di hosting che normalmente danno la possibilità di scegliere solo fra un certo numero di applicazioni predefinite, selezionate fra quelle più popolari.&lt;/p&gt;&#xA;&lt;p&gt;Se per il nostro sito vogliamo usare un CMS come Wordpress, Drupal, CMS Made Simple o Kirby non fa nessuna differenza, anzi un servizio di hosting tradizionale può essere preferibile perché ci permette di concentrarci sui contenuti, lasciando tutta la gestione del sito al fornitore del servizio di hosting. Ma se vogliamo utilizzare dei CMS meno diffusi come &lt;a href=&#34;https://ghost.org&#34;&gt;Ghost&lt;/a&gt; o &lt;a href=&#34;https://www.postleaf.org&#34;&gt;Postleaf&lt;/a&gt; oppure dei generatori di siti statici come &lt;a href=&#34;https://jekyllrb.com/&#34;&gt;Jekyll&lt;/a&gt;, &lt;a href=&#34;https://gohugo.io&#34;&gt;Hugo&lt;/a&gt;, &lt;a href=&#34;https://getgrav.org&#34;&gt;Grav&lt;/a&gt; o &lt;a href=&#34;https://hexo.io&#34;&gt;Hexo&lt;/a&gt;,&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; la soluzione &lt;em&gt;cloud&lt;/em&gt; ci offre una flessibilità impareggiabile, nettamente maggiore di quella offerta da un normale servizio di hosting.&lt;/p&gt;&#xA;&lt;p&gt;Tutto questo però ha un prezzo da pagare. Un servizio di hosting decente può costare anche solo qualche decina di euro all&amp;rsquo;anno, per usufruire di un computer (anche se solo virtuale) nel cloud la cifra da sborsare è nettamente maggiore, dell&amp;rsquo;ordine di almeno 20-30 euro al mese (con variazioni enormi fra le offerte dei diversi provider).&lt;/p&gt;&#xA;&lt;p&gt;Prima di scegliere fra hosting e cloud bisognerà quindi valutare realisticamente quello che vogliamo fare con il sito web (un blog personale è ben diverso da un sito di commercio elettronico), tenendo bene in conto dell&amp;rsquo;impegno richiesto per mantenerlo in &lt;em&gt;forma&lt;/em&gt; e delle competenze tecniche necessarie per gestire un servizio mediamente complesso come questo. Trascurare quest&amp;rsquo;ultimo punto in particolare potrebbe significare dover spendere cifre nettamente maggiori per rimediare ai problemi di configurazione, o peggio di sicurezza, che potrebbero danneggiare gravemente non solo il sito ma anche la nostra immagine. In questo campo i costi non sono solo quelli che si vedono sul cartellino del prezzo.&lt;/p&gt;&#xA;&lt;h4 id=&#34;da-melabit-a-melabit-la-serie-completa-degli-articoli&#34;&gt;Da melabit a melabit, la serie completa degli articoli&lt;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://melabit.wordpress.com/2018/04/16/da-melabit-a-melabit-introduzione/&#34;&gt;Da melabit a melabit: introduzione&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://melabit.wordpress.com/2018/05/21/da-melabit-a-melabit-la-scelta-dell-hosting/&#34;&gt;Da melabit a melabit: la scelta dell’hosting&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://melabit.wordpress.com/2018/06/19/da-melabit-a-melabit-la-scelta-del-dominio/&#34;&gt;Da melabit a melabit: la scelta del dominio&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://melabit.wordpress.com/2019/06/18/da-melabit-a-melabit-fare-da-se/&#34;&gt;Da melabit a melabit: fare da sé?&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://melabit.wordpress.com/2019/06/24/da-melabit-a-melabit-andare-sul-cloud/&#34;&gt;Da melabit a melabit: andare sul cloud&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://melabit.wordpress.com/2019/07/03/da-melabit-a-melabit-conclusioni/&#34;&gt;Da melabit a melabit: conclusioni&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;Il nostro unico problema sarà quello di associare l&amp;rsquo;indirizzo IP al nome di dominio (ma in genere lo stesso fornitore del nome di dominio ci mette a disposizione gli strumenti per farlo da soli).&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:2&#34;&gt;&#xA;&lt;p&gt;Dei primi tre ne ho scritto parecchio anche qui, chi vuole può leggere i vecchi articoli su &lt;a href=&#34;https://melabit.wordpress.com/2015/05/28/grav-bello-ma-impossibile/&#34;&gt;Grav&lt;/a&gt;, &lt;a href=&#34;https://melabit.wordpress.com/2014/12/28/hugo-la-prova/&#34;&gt;Hugo&lt;/a&gt; e &lt;a href=&#34;https://melabit.wordpress.com/2014/12/31/and-the-winner-is/&#34;&gt;Jekyll&lt;/a&gt;.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;</description>
    </item>
    <item>
      <title>Script per tutti i giorni: semplici modifiche alle stringhe di testo</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2018/11/23/script-per-tutti-i-giorni-semplici-modifiche-alle-stringhe-di-testo/</link>
      <pubDate>Fri, 23 Nov 2018 18:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2018/11/23/script-per-tutti-i-giorni-semplici-modifiche-alle-stringhe-di-testo/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://farm3.staticflickr.com/2472/3797070188_ece79b25b3_b.jpg&#34; alt=&#34;&#34;&gt;&#xA;&amp;ndash; Foto: &lt;a href=&#34;https://www.flickr.com/photos/telwink/&#34;&gt;telwink&lt;/a&gt; su Flickr.&lt;/p&gt;&#xA;&lt;p&gt;Succede più spesso di quanto mi renda conto. Devo rinominare dei file, modificare un testo o fare altri pasticci con i miei documenti. Potrei usare una delle tante applicazioni &lt;em&gt;ad hoc&lt;/em&gt; fatte per fare &lt;em&gt;proprio quello&lt;/em&gt;. Ma perché perdere tempo ad installare ed imparare ad usare l&amp;rsquo;ennesima applicazione se con il Terminale posso fare prima (e meglio)?&lt;/p&gt;&#xA;&lt;p&gt;Basta qualche comando ben piazzato nel Terminale, a volte qualche piccolo script in &lt;code&gt;bash&lt;/code&gt; o in &lt;code&gt;python&lt;/code&gt;, e si possono fare cose bellissime con poco sforzo.&lt;/p&gt;&#xA;&lt;p&gt;E una volta fatte, perché tenerli per se e non condividerli, magari proprio qui? L&amp;rsquo;impulso iniziale me l&amp;rsquo;ha dato Federico &amp;ldquo;frix&amp;rdquo; Morchio durante una discussione sul canale &lt;a href=&#34;https://goedel.slack.com&#34;&gt;Goedel&lt;/a&gt; di &lt;a href=&#34;https://slack.com/&#34;&gt;Slack&lt;/a&gt; gestito dal sempre ottimo &lt;a href=&#34;http://macintelligence.org/&#34;&gt;Lucio Bragagnolo&lt;/a&gt; (aka&amp;hellip; oops, &lt;a href=&#34;http://blog.terminologiaetc.it/2017/12/18/significato-abbreviazione-inglese-aka/&#34;&gt;noto anche come&lt;/a&gt; Lux, Loox e tanti altri alias).&lt;/p&gt;&#xA;&lt;p&gt;Attenzione! Questo e i futuri post sull&amp;rsquo;argomento &lt;strong&gt;non saranno&lt;/strong&gt; delle introduzioni a &lt;code&gt;bash&lt;/code&gt;, a &lt;code&gt;python&lt;/code&gt;, al Terminale di macOS (tendo sempre a dimenticare che non si chiama più OS X!), per quelle ci sono un sacco di ottime guide in rete. Chi vuole fare in fretta può iniziare leggendo la mia piccola guida a &lt;code&gt;bash&lt;/code&gt; di qualche anno fa, &lt;a href=&#34;https://melabit.wordpress.com/2014/11/06/script-di-shell-in-os-x/&#34;&gt;Script di shell in OS X&lt;/a&gt; e magari anche &lt;a href=&#34;https://melabit.wordpress.com/2016/12/18/compleanno-con-permessi/&#34;&gt;Compleanno con permessi&lt;/a&gt;, la ripresa di un vecchio post sull&amp;rsquo;ormai defunto &lt;a href=&#34;https://web.archive.org/web/20120102191652/http://www.macworld.it/ping&#34;&gt;Ping&lt;/a&gt; che di fatto mi ha fatto iniziare l&amp;rsquo;esperienza di blogger.&lt;/p&gt;&#xA;&lt;p&gt;Cominciamo con un antipasto veloce, una cosa apparentemente inutile (o quasi), ma che serve a dare una idea delle potenzialità di &lt;code&gt;bash&lt;/code&gt; e di come, partendo da un&amp;rsquo;idea semplice, si possa trasformarla a poco a poco in qualcosa di più pratico e adatto ad un uso quotidiano.&lt;/p&gt;&#xA;&lt;h4 id=&#34;manipolare-i-nomi-dei-file&#34;&gt;Manipolare i nomi dei file&lt;/h4&gt;&#xA;&lt;p&gt;La prima cosa che faccio quando inizio a scrivere un nuovo post è creare un file Markdown con i &lt;em&gt;metadati&lt;/em&gt; (titolo, data di pubblicazione, categoria e tag, chi usa Jekyll o Octopress sa di cosa parlo), a cui assegno un nome temporaneo. Una volta deciso il titolo definitivo, rinomino il file in un modo più razionale, in modo che possa ritrovarlo facilmente.&lt;/p&gt;&#xA;&lt;p&gt;Per farlo seguo la &lt;a href=&#34;https://jekyllrb.com/docs/posts/&#34;&gt;convenzione sui nomi dei file&lt;/a&gt; di Jekyll,&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; secondo la quale il nome del file deve essere scritto come &lt;code&gt;YYYY-MM-DD-titolo-del-post.md&lt;/code&gt;, dove &lt;code&gt;YYYY&lt;/code&gt; indica l&amp;rsquo;anno, &lt;code&gt;MM&lt;/code&gt; il mese e &lt;code&gt;DD&lt;/code&gt; il giorno di pubblicazione (espressi rispettivamente con quattro e due cifre) e parole e numeri vanno separati con un trattino invece che con uno spazio. Sembra una cosa inutilmente complicata, ma permette di tenere ordinati i file in base alla data anche quando se ne modifica il contenuto in un secondo tempo. E comunque, evitare di utilizzare gli spazi nei nomi dei file è ancora oggi la cosa più razionale da fare nei sistemi basati su Unix come macOS.&lt;/p&gt;&#xA;&lt;p&gt;Per la data non ci sono problemi, nei metadati è già scritta nel formato &lt;em&gt;giusto&lt;/em&gt;, per cui è sufficiente copiarla ed incollarla direttamente nel nome del file tramite il Finder. Ma il titolo? Potrei usare il Finder anche per il titolo, inserendolo dopo la data nel nome del file e sostituendo a mano gli spazi con i trattini. Però è facile sbagliare, soprattutto quando il titolo è lungo. Ancora più facile è non essere consistenti, usando ogni volta una forma leggermente diversa e mandando a pallino i vantaggi dati dall&amp;rsquo;utilizzare nomi di file ben definiti.&lt;/p&gt;&#xA;&lt;p&gt;E poi, vuoi mettere il divertimento di farlo fare a &lt;code&gt;bash&lt;/code&gt;?&lt;/p&gt;&#xA;&lt;h4 id=&#34;un-pezzo-alla-volta&#34;&gt;Un pezzo alla volta&lt;/h4&gt;&#xA;&lt;p&gt;Prendiamo come esempio il titolo di un &lt;a href=&#34;https://melabit.wordpress.com/2018/01/20/la-privacy-al-tempo-dell-internet-of-things-gran-finale/&#34;&gt;post&lt;/a&gt; di qualche mese fa, &amp;ldquo;La privacy al tempo dell&amp;rsquo;Internet of Things: gran finale&amp;rdquo;. Per trasformare il titolo originale in una sequenza di parole separate da trattini è sufficiente lanciare il Terminale ed eseguire il comando&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;$ echo &amp;quot;La privacy al tempo dell&#39;Internet of Things: gran finale&amp;quot; | sed &amp;quot;s/ /-/g&amp;quot;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;dove &lt;code&gt;echo&lt;/code&gt; scrive la stringa nel Terminale e la invia tramite il &lt;code&gt;|&lt;/code&gt; (&lt;em&gt;pipe&lt;/em&gt;) a &lt;code&gt;sed&lt;/code&gt;, che si occupa di cercare tutti gli spazi e di sostituirli con un trattino, ottenendo&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;La-privacy-al-tempo-dell&#39;Internet-of-Things:-gran-finale&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Non male, ma ci sono due o tre cosette da sistemare.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Problema numero 1 (banale)&lt;/strong&gt;. Il formato di Jekyll prevede implicitamente che il nome del file sia scritto tutto in minuscolo. Personalmente trovo che questa forma sia più gradevole, ma è anche utile a semplificare e a rendere univoco l&amp;rsquo;ordinamento dei file (una fissazione, lo so, ma quando si maneggiano tantissimi file ogni giorno diventa una cosa fondamentale per lavorare meglio). Si può fare così&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;$ echo &amp;quot;La privacy al tempo dell&#39;Internet of Things: gran finale&amp;quot; | tr &amp;quot;[:upper:]&amp;quot; &amp;quot;[:lower:]&amp;quot;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;dove &lt;code&gt;tr&lt;/code&gt; trasforma i caratteri maiuscoli (&lt;code&gt;[:upper:]&lt;/code&gt;) in minuscoli (&lt;code&gt;[:lower:]&lt;/code&gt;), ottenendo&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;la privacy al tempo dell&#39;internet of things: gran finale&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;em&gt;Domanda #1: cosa succede se nel comando precedente si usa &lt;code&gt;tr &amp;quot;[:lower:]&amp;quot; &amp;quot;[:upper:]&amp;quot;&lt;/code&gt;?&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Problema numero 2 (importante)&lt;/strong&gt;. Nei nomi dei file è preferibile usare solo lettere non accentate, numeri e alcuni caratteri di separazione: trattino, underscore e (se proprio dobbiamo) spazio. Se possibile è meglio evitare di usare il punto, che normalmente serve per separare il nome del file vero e proprio dall&amp;rsquo;estensione (caratteristica che è stata usata parecchio per distribuire file contenti virus ma che apparivano legittimi). Tutto gli altri caratteri devono essere rigorosamente evitati, perché spesso hanno significati speciali per il sistema operativo e creano solo guai.&lt;/p&gt;&#xA;&lt;p&gt;Per togliere la punteggiatura possiamo usare la stessa tecnica di sopra,&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;$ echo &amp;quot;La privacy al tempo dell&#39;Internet of Things: gran finale&amp;quot; | sed &amp;quot;s/[[:punct:]]//g&amp;quot;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;dove in questo caso &lt;code&gt;sed&lt;/code&gt; cerca tutti i caratteri di punteggiatura (&lt;code&gt;[[:punct:]]&lt;/code&gt;) e li sostituisce con&amp;hellip; niente (cioè li toglie), ottenendo in uscita&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;La privacy al tempo dellInternet of Things gran finale&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;strong&gt;Problema numero 3 (specifico)&lt;/strong&gt;. Il comando di prima rimuove anche gli apostrofi (che è sempre bene evitare di mettere nei nomi dei file, perché potrebbero dare problemi su sistemi operativi meno &lt;em&gt;liberali&lt;/em&gt; di macOS).&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; Piuttosto che buttarli via, è preferibile però sostituirli con un trattino, usando ancora una volta &lt;code&gt;sed&lt;/code&gt;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;$ echo &amp;quot;La privacy al tempo dell&#39;Internet of Things: gran finale&amp;quot; | sed &amp;quot;s/&#39;/-/g&amp;quot;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;che da in uscita&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;La privacy al tempo dell-Internet of Things: gran finale&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h4 id=&#34;mettiamo-tutto-insieme&#34;&gt;Mettiamo tutto insieme&lt;/h4&gt;&#xA;&lt;p&gt;Usare &lt;code&gt;bash&lt;/code&gt; (o qualunque altra shell di Unix) è un po&amp;rsquo; come usare il Lego dove, mettendo insieme dei piccoli mattoncini di forme e colori diversi, si può costruire una portaerei (o quasi). Con &lt;code&gt;bash&lt;/code&gt; si prendono dei semplici comandi come quelli visti prima, si mettono nell&amp;rsquo;ordine giusto, si collega l&amp;rsquo;output di un comando con l&amp;rsquo;input di quello successivo tramite il &lt;code&gt;|&lt;/code&gt; (&lt;em&gt;pipe&lt;/em&gt;), e alla fine si riescono a fare delle cose anche piuttosto sofisticate.&lt;/p&gt;&#xA;&lt;p&gt;In questo caso, il comando&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;$ echo &amp;quot;La privacy al tempo dell&#39;Internet of Things: gran finale&amp;quot; | tr &amp;quot;[:upper:]&amp;quot; &amp;quot;[:lower:]&amp;quot; | sed &amp;quot;s/&#39;/ /g&amp;quot; | sed &amp;quot;s/[[:punct:]]//g&amp;quot; | sed &amp;quot;s/ /-/g&amp;quot;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;genera la stringa&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;la-privacy-al-tempo-dell-internet-of-things-gran-finale&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;pronta per essere utilizzata come nome del file.&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;Domanda #2: Cosa succede se cambio l&amp;rsquo;ordine dei comandi? Perché questo è l&amp;rsquo;ordine migliore per convertire un titolo nel formato desiderato?&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;Domanda #3: Perché nel primo &lt;code&gt;sed&lt;/code&gt; questa volta ho sostituito l&amp;rsquo;apostrofo &lt;code&gt;&#39;&lt;/code&gt; con uno spazio (mentre nella descrizione del problema numero 3 avevo usato un trattino)?&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;Chi ha avuto la pazienza di leggere fin qui, si starà chiedendo che senso abbia complicarsi la vita con il Terminale e con &lt;code&gt;bash&lt;/code&gt;, quando è molto più veloce modificare il titolo a mano nel Finder.&lt;/p&gt;&#xA;&lt;p&gt;Tutto vero, ma è altrettanto vero che il post è stato più che altro una scusa per introdurre due comandi come &lt;code&gt;sed&lt;/code&gt; e &lt;code&gt;tr&lt;/code&gt;, molto utili ma anche molto poco conosciuti. E poi, partendo da questa base si possono costruire delle cose molto più utili, ma questo lo vedremo la prossima volta.&lt;/p&gt;&#xA;&lt;h5 id=&#34;revisioni&#34;&gt;Revisioni&lt;/h5&gt;&#xA;&lt;p&gt;&lt;strong&gt;3-12-2018&lt;/strong&gt;: Corretta una incongruenza nel testo originale, nel quale veniva usato una volta &lt;code&gt;sed&lt;/code&gt; e un&amp;rsquo;altra &lt;code&gt;tr&lt;/code&gt; per rimuovere i caratteri di punteggiatura.&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;Che poi è praticamente la stessa convenzione che usa Wordpress per generare i nomi dei post.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:2&#34;&gt;&#xA;&lt;p&gt;La gestione generale dei caratteri accentati nei nomi dei file è un problema molto più complesso, che è meglio rimandare ad un post specifico sull&amp;rsquo;argomento, ammesso che ci sia interesse per l&amp;rsquo;argomento.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;</description>
    </item>
    <item>
      <title>Primo WordPress Meetup a Bari</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2016/05/14/primo-wordpress-meetup-a-bari/</link>
      <pubDate>Sat, 14 May 2016 06:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2016/05/14/primo-wordpress-meetup-a-bari/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://photos3.meetupstatic.com/photos/event/9/e/d/3/highres_449920659.jpeg&#34;&gt;&lt;img src=&#34;http://photos3.meetupstatic.com/photos/event/9/e/d/3/highres_449920659.jpeg&#34; width=&#34;640&#34; class /&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Ieri ho partecipato al &lt;a href=&#34;http://www.meetup.com/it-IT/WordPress-Meetup-Bari/events/230340023/&#34;&gt;1° WordPress Meetup&lt;/a&gt;, organizzato a Bari presso &lt;a href=&#34;http://photos1.meetupstatic.com/photos/event/9/e/d/2/highres_449920658.jpeg&#34;&gt;l&amp;rsquo;area di Ricerca del CNR&lt;/a&gt;. Il racconto dettagliato della manifestazione lo lascio agli organizzatori, &lt;a href=&#34;http://koolinus.net/blog/&#34;&gt;Nicola &amp;lsquo;Koolinus&amp;rsquo; Losito&lt;/a&gt; e &lt;a href=&#34;http://www.meetup.com/WordPress-Meetup-Bari/members/187470319/?_locale=it-IT&#34;&gt;Francesco Cozzi&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Da parte mia voglio solo dire di aver passato un pomeriggio molto piacevole, in una atmosfera amichevole e rilassata. Non mi sarei mai aspettato di trovare in una città come Bari così tanti sviluppatori professionisti, appassionati e competenti. Ho sentito parlare di strumenti, plugin ed applicazioni di cui non avevo la più pallida idea.&lt;/p&gt;&#xA;&lt;p&gt;Intanto devo studiare, per essere più pronto la prossima volta, fra un mese, quando si entrerà nel vivo delle applicazioni per (e con) &lt;a href=&#34;https://it.wordpress.org/&#34;&gt;WordPress&lt;/a&gt;. Forse però è meglio che non mi faccia sfuggire che mi piace &lt;a href=&#34;https://jekyllrb.com/&#34;&gt;Jekyll&lt;/a&gt;, altrimenti non mi invitano più. :D&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>And the winner is...</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2014/12/31/and-the-winner-is/</link>
      <pubDate>Wed, 31 Dec 2014 06:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2014/12/31/and-the-winner-is/</guid>
      <description>&lt;p&gt;Riassunto delle puntate precedenti. &lt;a href=&#34;http://wordpress.com/&#34;&gt;Wordpress.com&lt;/a&gt; è un&amp;rsquo;ottima piattaforma di blogging, ed ha il grosso vantaggio di liberare l&amp;rsquo;utente da tutte le preoccupazioni riguardanti la manutenzione del proprio blog.&#xA;Non è però una piattaforma che si adatta bene al mio modo di lavorare, e ne ho già &lt;a href=&#34;http://melabit.wordpress.com/2014/08/01/i-limiti-di-wordpress-com/&#34;&gt;scritto diffusamente&lt;/a&gt; alcuni mesi fa.&#xA;Però &lt;a href=&#34;http://melabit.wordpress.com/2014/08/06/i-limiti-di-wordpress-com-una-nuova-piattaforma-per-il-blog/&#34;&gt;cosa scegliere&lt;/a&gt; fra le varie tipologie disponibili: wiki o CMS o piattaforme di blog, siti statici o siti dinamici? Per vari motivi mi sono orientato verso un &lt;a href=&#34;http://luftmensch.net/blog/2013/12/22/building-a-static-website-the-website-generator/&#34;&gt;generatore di siti statici&lt;/a&gt;, un programma che prende una serie di file di testo, di immagini e di documenti e li converte in un sito web completo secondo un tema grafico predefinito.&#xA;In rete ci sono letteralmente &lt;a href=&#34;https://staticsitegenerators.net/&#34;&gt;decine e decine di generatori di siti statici&lt;/a&gt; ed il loro numero cresce molto rapidamente: erano 289 all&amp;rsquo;inizio di agosto, oggi sono ben &lt;a href=&#34;https://staticsitegenerators.net/&#34;&gt;388&lt;/a&gt;!&#xA;&lt;a href=&#34;http://melabit.wordpress.com/2014/08/09/i-limiti-di-wordpress-com-generatori-di-siti-web-statici/&#34;&gt;Come orientarsi&lt;/a&gt; in questo marasma? Basandomi su una lista di &lt;a href=&#34;http://melabit.wordpress.com/2014/08/06/i-limiti-di-wordpress-com-una-nuova-piattaforma-per-il-blog/&#34;&gt;caratteristiche irrinunciabili&lt;/a&gt; (almeno per me), ne ho &lt;a href=&#34;http://melabit.wordpress.com/2014/08/12/i-limiti-di-wordpress-com-cosa-ho-scartato-e-perche/&#34;&gt;provati e scartati&lt;/a&gt; parecchi, buon ultimo  &lt;a href=&#34;http://melabit.wordpress.com/2014/12/28/hugo-la-prova/&#34;&gt;Hugo&lt;/a&gt;, promettente ma rivelatosi alla fine piuttosto immaturo.&lt;/p&gt;&#xA;&lt;p&gt;In realtà avevo deciso subito. Tutte le prove che ho fatto mi sono servite solo ad esplorare il più possibile il &lt;em&gt;territorio&lt;/em&gt;, a provare le alternative e a verificarne i vantaggi e gli svantaggi.&lt;/p&gt;&#xA;&lt;p&gt;La scelta più ragionevole, date le premesse, era solo una: &lt;a href=&#34;http://jekyllrb.com/&#34;&gt;Jekyll&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Per due ragioni fondamentali: prospettive di sviluppo del codice a medio-lungo termine e disponibilità di documentazione abbondante e di buona qualità. Senza queste due caratteristiche non si va avanti. Tutti gli altri generatori di siti web statici possono anche apparire interessanti, ma impallidiscono se li si confronta a Jekyll su questi due aspetti.&lt;/p&gt;&#xA;&lt;p&gt;Tanto per fare un esempio: che senso avrebbe avuto scegliere uno dei tanti progetti &lt;em&gt;giocattolo&lt;/em&gt; di un singolo programmatore? Può anche essere eccellente, ma quante sono le probabilità che continui ad essere sviluppato fra uno, due, tre anni? Magari fra sei mesi il programmatore si stanca e passa ad altro, non rispondendo più alle richieste di supporto o di correzione degli inevitabili errori. Che si fa, allora?&#xA;Oppure: come si può cercare di configurare ed estendere il sistema prescelto se non esiste della buona documentazione, se magari l&amp;rsquo;unico modo per capire cosa fa il programma è analizzarne i sorgenti (auguri)?&lt;/p&gt;&#xA;&lt;p&gt;Infatti fra i 388 generatori di siti statici elencati oggi da &lt;a href=&#34;https://staticsitegenerators.net/&#34;&gt;Static Site Generators&lt;/a&gt;, ben 171 non sono aggiornati da almeno un anno e 225 da sei mesi. E solo una settantina ha ricevuto un aggiornamento nell&amp;rsquo;ultimo mese. Insomma, ci sono circa 320 progetti censiti che in realtà sono morti, inutili, da scartare a priori.&lt;/p&gt;&#xA;&lt;p&gt;I primi due generatori di siti web statici nella lista di &lt;a href=&#34;https://www.staticgen.com/&#34;&gt;StaticGen&lt;/a&gt;, Jekyll e il suo derivato &lt;a href=&#34;http://octopress.org/&#34;&gt;Octopress&lt;/a&gt;, hanno ricevuto insieme su GitHub più di un terzo delle &lt;a href=&#34;https://help.github.com/articles/about-stars/&#34;&gt;stelle&lt;/a&gt; &amp;ndash; cioè delle manifestazioni esplicite di interesse nel progetto &amp;ndash; guadagnate da tutti i 67 progetti elencati nel sito.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&#xA;Non sarà che sono ritenuti così interessanti perché sono fatti bene e sono (relativamente) facili da usare e da metterci le mani?&lt;/p&gt;&#xA;&lt;p&gt;Ora rimane solo da rimboccarsi le maniche, configurare Jekyll e trasportare il blog sulla nuova piattaforma.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Ma prima di allora, auguro a tutti coloro che pazientemente seguono questo blog un 2015 felice e, se possibile, migliore dell&amp;rsquo;anno che ci stiamo lasciando alle spalle!&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;Immagino che StaticGen censisca solo i progetti sviluppati attivamente. Probabilmente non è un caso che, se si considerano &lt;em&gt;attivi&lt;/em&gt; solo i progetti aggiornati nell&amp;rsquo;ultimo mese, i numeri di Static Site Generators e di StaticGen concidano. Sarebbe interessante verificare se i progetti sono veramente gli stessi.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;</description>
    </item>
  </channel>
</rss>
