<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Muut on Melabit</title>
    <link>https://static.233.196.69.159.clients.your-server.de/it/tags/muut/</link>
    <description>Recent content in Muut on Melabit</description>
    <generator>Hugo</generator>
    <language>it</language>
    <lastBuildDate>Wed, 05 Mar 2025 06:00:00 +0000</lastBuildDate>
    <atom:link href="https://static.233.196.69.159.clients.your-server.de/it/tags/muut/index.xml" rel="self" type="application/rss+xml" />
    <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>
  </channel>
</rss>
