<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Stefano Marinelli's Blog (Articoli su pelican)</title><link>https://www.dragas.net/</link><description></description><atom:link href="https://www.dragas.net/categories/pelican.xml" rel="self" type="application/rss+xml"></atom:link><language>it</language><lastBuildDate>Wed, 11 Jan 2023 13:48:52 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Da Pelican a Nikola</title><link>https://www.dragas.net/posts/da-pelican-a-nikola/</link><dc:creator>Stefano Marinelli</dc:creator><description>&lt;p&gt;&lt;img src="https://getnikola.com/assets/img/logo.svg" alt="Nikola"&gt;&lt;/p&gt;
&lt;p&gt;Dopo tutto &lt;a href="https://www.dragas.net/posts/da-wordpress-a-pelican/"&gt;il bene che ho detto di Pelican&lt;/a&gt;, credo che qualcuno rimarrà sorpreso nel leggere un articolo del genere, così come sarà rimasto sorpreso chi ha visto cambiare motore del Blog, di nuovo e dopo pochi giorni. La domanda che potrebbe sorgere spontanea è: &lt;em&gt;perché?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;La mia risposta: &lt;em&gt;perché si può, perché si vuole, perché si deve provare tutto&lt;/em&gt;. E, visti i risultati, ho deciso di tenere &lt;a href="https://getnikola.com/"&gt;Nikola&lt;/a&gt; come motore di generazione del blog. &lt;/p&gt;
&lt;p&gt;La scelta di Nikola come &lt;em&gt;compilatore&lt;/em&gt; (mi piace pensarlo così) è dettata non da problemi con &lt;a href="http://www.getpelican.org/"&gt;Pelican&lt;/a&gt;, ma da alcuni vantaggi che Nikola stesso mi ha mostrato.&lt;/p&gt;
&lt;p&gt;Farò dunque un rapido e non esaustivo elenco delle ragioni che mi hanno spinto a usare Nikola:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Entrambi sono in &lt;a href="https://www.python.org/"&gt;Python&lt;/a&gt; - &lt;em&gt;pari&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Entrambi installabili via &lt;a href="https://pypi.python.org/pypi/pip"&gt;pip&lt;/a&gt; in un &lt;em&gt;virtualenv&lt;/em&gt; - &lt;em&gt;pari&lt;/em&gt;, anche se Pelican ha molte meno dipendenze&lt;/li&gt;
&lt;li&gt;Pelican ricalcola ogni volta tutto, ricreando tutti i file. Ci sono delle opzioni di caching, ma non mi hanno dato risultati entusiasmanti. Nikola, al contrario, ricostruisce solo ciò che è stato modificato e le relative dipendenze, in maniera molto rapida. Essendo un generatore statico, anche se c'è da aspettare un minuto in più quella volta che viene fatta una modifica non è che sia la fine del mondo, ma le ottimizzazioni ci stanno sempre bene - &lt;em&gt;Nikola&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Pelican genera solo i file .html. Per sitemap e le versioni in gzip degli articoli (utile per minimizzare i tempi di trasferimento), c'è da installare qualche plugin. Non che sia un problema, ma è bello trovare tutto pronto e coerente. Inoltre è potenzialmente meno pericoloso in fase di aggiornamento. - &lt;em&gt;Nikola&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Nikola supporta &lt;a href="http://pandoc.org/"&gt;Pandoc&lt;/a&gt; e moltissimi formati di input. Io utilizzo, al momento, il &lt;a href="http://daringfireball.net/projects/markdown/"&gt;Markdown&lt;/a&gt;, ma non escludo di imparare altro. - &lt;em&gt;Nikola&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;L'importazione da WordPress è più completa. Per importare da Pelican, infatti, ho utilizzato il dump che avevo effettuato e reinserito i nuovi articoli. Pur interpretando entrambi il Markdown, hanno un formato leggermente diverso. Mi è piaciuto il fatto che è andato a pescarsi le immagini dal sito originale e se le è copiate internamente. Ho dovuto comunque provvedere a fare alcune modifiche. - &lt;em&gt;Nikola&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Nikola supporta internamente le redirezioni, per cui mi ha creato autonomamente una mappa dal vecchio formato WordPress al nuovo. Gli articoli sono dunque automaticamente ancora raggiungibili senza fare alcuna modifica nel file .htaccess - &lt;em&gt;Nikola&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Supporta nativamente i &lt;em&gt;pretty urls&lt;/em&gt;, ovvero la rimozione del .html dall'URL stesso. In teoria, a livello SEO, non dovrebbe fare alcuna differenza, e su Pelican è fattibile tramite .htaccess, ma è bello trovare tutto fatto in automatismo. In pratica, Nikola crea delle directory col nome (&lt;em&gt;slug&lt;/em&gt;) dell'articolo e ci infila dentro un &lt;em&gt;index.html&lt;/em&gt;. I browser, quindi, caricheranno automaticamente l'index quando verrà richiesta la directory. - &lt;em&gt;Nikola&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Sembra produrre, di base, un sito più &lt;em&gt;SEO-friendly&lt;/em&gt;. - &lt;em&gt;Nikola&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;La simpatia dello sviluppatore. Sarà per la sua radice latina, si ha sempre la percezione di leggere qualcosa scritta da una persona solare e simpatica.  - &lt;em&gt;Nikola&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ho dunque deciso di mettere online il sito prodotto da Nikola, addirittura col tema grafico di base (non mi dispiace).&lt;/p&gt;
&lt;p&gt;Se continuerei a consigliare Pelican? &lt;strong&gt;Decisamente sì&lt;/strong&gt;, non vedo ragioni per cui non debba essere utilizzato. Suggerisco quindi di provarli entrambi.&lt;/p&gt;</description><category>cms</category><category>cms statici</category><category>nikola</category><category>pelican</category><category>recensioni</category><category>server</category><category>wordpress</category><guid>https://www.dragas.net/posts/da-pelican-a-nikola/</guid><pubDate>Wed, 09 Sep 2015 09:18:41 GMT</pubDate></item><item><title>Da WordPress a Pelican</title><link>https://www.dragas.net/posts/da-wordpress-a-pelican/</link><dc:creator>Stefano Marinelli</dc:creator><description>&lt;p&gt;&lt;img alt="Pellicano" src="https://www.dragas.net/images/Pellicano.jpg"&gt;&lt;/p&gt;
&lt;h2&gt;Premessa&lt;/h2&gt;
&lt;p&gt;Ebbene sì, torno a scrivere sul blog dopo molto tempo. Ci sono vari articoli iniziati e mai terminati, non ho più il tempo che avevo una volta di aggiornare molto spesso. Cercherò di rimediare. Non sono mai stato esageratamente costante nel seguire i siti, per cui chi mi conosce non resterà certamente meravigliato.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.dragas.net/posts/wordpress/"&gt;Sin dal lontano 2006&lt;/a&gt; (più di nove anni fa...), ho iniziato ad usare Wordpress per il mio blog e, di conseguenza, per altri siti. &lt;a href="https://www.dragas.net/posts/cms-da-wordpress-joomla-e-ritorno/"&gt;Dopo una breve parentesi di Joomla&lt;/a&gt;, prevalentemente utilizzato per alcuni siti realizzati per dei clienti (non questo blog), sono tornato a Wordpress proprio perché la sua aggiornabilità e la sua espandibilità mi avevano sempre soddisfatto. Il &lt;a href="http://www.dragas.net"&gt;blog&lt;/a&gt; è rimasto su Wordpress, appunto, per più di nove anni.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fino a quando...&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;non è arrivata la &lt;em&gt;Cookie Law&lt;/em&gt; (ne parlerò in uno dei prossimi articoli). Ho dovuto, rapidamente, fare una scansione di tutti i miei CMS per capire cosa andava disattivato e cosa sarebbe potuto restare. Ho scoperto - si fa per dire - che buona parte dei miei amati plugin di Wordpress avrebbero avuto bisogno di una bella informativa. Non ne ho mai installati troppi, ma quei pochi erano già sufficienti a causare potenziali problemi.&lt;/p&gt;
&lt;p&gt;Ho disattivato ciò che ho potuto, mantenendo tutti i contenuti, le cache, ecc. mentre ho disattivato tutti i vari pulsanti sociali (davano dei numeri, quindi contattavano i social network in oggetto per avere le informazioni), il Jetpack con relative statistiche, e altre piccole cose meno importanti. &lt;/p&gt;
&lt;p&gt;A quel punto mi sono posto una domanda: &lt;strong&gt;ma ho davvero bisogno di un CMS completo, mastodontico, con tanto di database MySQL, per gestire un blog e qualche commento?&lt;/strong&gt;. Premesso che non ho interesse a mandare pubblicità, tantomeno a tracciare i visitatori, che alcuni dei miei plugin preferiti sono stati resi (quasi) inutilizzabili dalla legge di cui sopra, perché devo far eseguire un plugin che faccia cache html degli elaborati PHP quando basterebbero, effettivamente, dei buoni HTML? Non da trascurare, inoltre, che quasi ogni giorno escono patch di sicurezza di WordPress (o di suoi plugin), spesso vengono fuori &lt;a href="http://www.cvedetails.com/vendor/74/PHP.html"&gt;vulnerabilità di PHP&lt;/a&gt; (che non ho mai amato, per me è la maggior fortuna e allo stesso tempo rovina del Web), e che MySQL è comunque "sprecato" per contenere qualche centinaio di articoli testuali.&lt;/p&gt;
&lt;p&gt;La risposta che mi sono dato è stata: &lt;strong&gt;e poi, come li gestisci tutti quegli HTML statici?&lt;/strong&gt;. Ho fatto una &lt;a href="https://www.google.it/?q=static%20blog%20generator"&gt;rapida ricerca&lt;/a&gt; e ho scoperto un mondo a me allora ignoto: quello dei &lt;em&gt;generatori di siti statici&lt;/em&gt;.&lt;/p&gt;
&lt;h2&gt;Generatori di siti statici&lt;/h2&gt;
&lt;p&gt;I generatori di siti statici...generano siti statici! :-)&lt;/p&gt;
&lt;p&gt;Scherzi a parte, sono degli strumenti che si occupano di prendere dei file di testo (o anche in &lt;a href="https://it.wikipedia.org/wiki/Markdown"&gt;Markdown&lt;/a&gt;, html puro, ecc.), elaborarli, inserire il tema, creare gli indici, ecc. Insomma, fanno tutto ciò che farebbe un CMS, ma lo fanno una volta e generano dei normalissimi HTML statici. Leggeri, pratici, portabili. Nessuna necessità di database, nessun bisogno di alcuno strumento sul server in cui il sito verrà pubblicato, il risultato dell'elaborazione di questi generatori sarà una directory popolata di file html, pronta per essere caricata in qualunque server, anche embedded (i primi test li ho fatti su &lt;a href="http://www.raspberrypi.org/"&gt;Raspberry PI&lt;/a&gt;. Si possono generare i file sul proprio computer e caricare la directory contenente i file html, onde non dover tenere nulla sul server. I siti così generati possono essere messi in hosting praticamente ovunque, compresi &lt;a href="https://github.com/"&gt;github&lt;/a&gt;, &lt;a href="http://tech.marksblogg.com/website-cdn-with-pelican-and-s3cmd.html"&gt;Amazon S3&lt;/a&gt;, ecc. &lt;/p&gt;
&lt;p&gt;Ho iniziato a guardarmi intorno. Ce ne sono moltissimi, molti sono dei fork del "capostipite" &lt;a href="http://jekyllrb.com/"&gt;Jekyll&lt;/a&gt;, che ho provato e ritenuto ottimo. Ho però, già da qualche anno, un interesse verso il &lt;a href="https://www.python.org/"&gt;Python&lt;/a&gt;, di conseguenza mi sono orientato verso una risorsa scritta in questo linguaggio. &lt;a href="http://docs.getpelican.com/"&gt;Pelican&lt;/a&gt; è stata la mia scelta, e dopo qualche giorno di studio, sono riuscito ad iniziare a creare qualcosa di decente. Veloce, pulito, semplice. Non avrei potuto chiedere di meglio.
L'alternativa, meno versatile e decisamente più limitata, sarebbe stata &lt;a href="https://github.com/cfenollosa/bashblog"&gt;BashBlog&lt;/a&gt;, che non ha dipendenze a parte bash, appunto.&lt;/p&gt;
&lt;h3&gt;Importazione di un sito WordPress su Pelican&lt;/h3&gt;
&lt;p&gt;Fortunatamente, Pelican comprende anche un programma che si occupa di importare (quasi) del tutto autonomamente i precedenti contenuti di WordPress. Ho effettuato una esportazione e una importazione, con il risultato che buona parte degli articoli sono andati correttamente al loro posto e ben collegati. Categorie e tag compresi.&lt;/p&gt;
&lt;p&gt;Ho però avuto due problemi, non banali:&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;* L'importazione dei commenti
* La conversione di due generazioni di URL verso una terza, nuova generazione
&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;L'importazione dei comenti&lt;/h4&gt;
&lt;p&gt;Per quanto concerne il primo punto, avevo tre scelte. Buttare via i vecchi commenti, importarli in &lt;a href="https://disqus.com"&gt;Disqus&lt;/a&gt; oppure provare ad importare e implementare in &lt;a href="http://posativ.org/isso/"&gt;ISSO&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;Le prime due opzioni avrebbero permesso l'approccio senza alcun componente dinamico, mantenendo l'idea di avere un server completamente statico. Però mi sarebbe dispiaciuto perdere i vecchi commenti, c'è della roba carina e ormai &lt;em&gt;storicamente interessante&lt;/em&gt;, vista l'epoca in cui sono stati scritti. L'approccio esterno non mi entusiasmava. Non mi piace dipendere da aziende che potrebbero cessare il servizio, renderli a pagamento, cambiare le condizioni. Ho dunque deciso di gestire la cosa con ISSO, anche se ho dovuto fare qualche manovra per far riconoscere i vecchi commenti con i nuovi URL. Nessun problema, il database interno è Sqlite3, &lt;a href="http://sqlitestudio.pl/"&gt;per cui è stato un gioco da ragazzi&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;La conversione degli URL&lt;/h4&gt;
&lt;p&gt;Più complessa e meno banale è stata l'operazione di conversione degli URL. Il blog è spesso finito su siti di informazione generalista, su link di altri blog, su forum, tanto che vedo ancor oggi arrivare collegamenti da risorse che non sapevo neanche che ci fossero, considerata anche l'età media di molti di questi articoli.&lt;/p&gt;
&lt;p&gt;I generatori statici creano file .html, quindi l'url sarà:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;http://www.dragas.net/articolo.html&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I miei articoli precedenti, invece, avevano una struttura di questo tipo, tra l'altro indicizzata da Google:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;http://www.dragas.net/articolo/&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I problema, appunto, è che i vecchi link arrivavano con i vecchissimi URL:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;http://www.dragas.net/?p=11&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;e il caro WordPress, tramite un plugin, era in grado di redirezionare verso i &lt;em&gt;permalink&lt;/em&gt; corretti. Ho dovuto quindi lavorare di .htaccess (il server su cui è al momento ospitato il Blog gira su Apache) e creare una serie di redirezioni manuali, sia per togliere lo slash finale e aggiungere .html, sia per fare un reindirizzamento corretto con i "?p=".&lt;/p&gt;
&lt;p&gt;Il risultato finale sembra essere, almeno al momento, positivo. Il Blog è quasi completamente raggiungibile coi vecchi URL, i commenti sono al loro posto e correttamente legati ai singoli articoli, probabilmente è cosmeticamente meno affascinante (pur non avendo mai stupito con effetti speciali), ma decisamente più prestante e non devo più preoccuparmi degli aggiornamenti di sicurezza di Wordpress (che comunque avvenivano automaticamente) o di plugin non mantenuti o mal programmati che potrebbero diventare dei punti d'accesso discretamente pericolosi.&lt;/p&gt;
&lt;h2&gt;Considerazioni Finali&lt;/h2&gt;
&lt;p&gt;Dopo 9 anni di WordPress, posso ritenermi decisamente soddisfatto: personalmente non ho mai avuto un problema, mai un server bucato per colpa di WordPress (a differenza di Joomla, Magento, ecc.), ma non mi dispiace l'idea di avere un sito statico. Mi piace scrivere in Markdown, il fatto di non aver necessità di un Database, facilità di backup anche dei commenti, leggerezza generale dell'infrastruttura. Continuerò a suggerire WordPress a chi non è in grado di gestire una infrastruttura come quella di Pelican (semplicissima, ma di certo un attimo più complessa del classico editor WYSIWYG stile &lt;a href="http://www.tinymce.com/"&gt;TinyMCE&lt;/a&gt;) o a chi ha esigenze particolari, diverse dalla semplice scrittura di un normale blog (es: autori multipli, ecc).&lt;/p&gt;
&lt;p&gt;Finalmente posso tornare a concentrarmi sul testo e non sulla piattaforma. Tra ricerca di plugin, aggiornamenti, migrazioni, predisposizione di backup del database, cambiamento di temi, ecc, probabilmente ho speso molto più tempo sulla piattaforma che sulla scrittura di articoli. Ora, invece, posso usare il mio adorato &lt;a href="http://www.vim.org/"&gt;vim&lt;/a&gt;, ovunque io sia, senza particolari problemi. La mia filosofia Informatica è sempre stata fedele alla teoria del &lt;a href="https://it.wikipedia.org/wiki/Rasoio_di_Occam"&gt;rasoio di Occam&lt;/a&gt;: &lt;em&gt;la soluzione più semplice, se sufficiente, è sempre la migliore&lt;/em&gt;.&lt;/p&gt;</description><category>cms</category><category>cms dinamici</category><category>cms statici</category><category>pelican</category><category>recensioni</category><category>server</category><category>wordpress</category><guid>https://www.dragas.net/posts/da-wordpress-a-pelican/</guid><pubDate>Tue, 01 Sep 2015 20:45:00 GMT</pubDate></item></channel></rss>