Created on 29 Aug 2018 ;    Modified on 24 Jul 2020 ;    Translationenglish

Il progetto rstblog

rstblog è un semplice blog pilotato da articoli scritti utilizzando il linguaggio di markup reStructuredText.

L'ho sviluppato usando Django, basato sul linguaggio Python.

L'idea di fondo consiste nell'adozione di un modello di pubblicazione ibrido, a metà strada tra un sito statico (puro html) e uno dinamico (tutto dentro un DB, tipo Wordpress).

In pratica, l'autore scrive il proprio articolo localmente, sul proprio PC, in un file di testo, utilizzando un linguaggio di markup. Come linguaggio di markup si può utilizzare:

Dopo di che mette in testa all'articolo una serie di righe che servono a categorizzarlo, indicando il linguaggio utilizzato (quello di markup e quello della lingua umana usato per scrivere il suo contenuto :-) il titolo, e altri attributi ...

Aggiunge una riga di testo, di formato fisso, che separa gli attributi dal contenuto dell'articolo.

Infine chiama un indirizzo (URL) del sito che gli permette l'upload dell'articolo. Se l'utente non risulta loggato al sito, questo indirizzo chiede utenza e password.

Quando l'articolo viene caricato sul sito, rstblog usa i suoi attributi per classificarlo nella base dati. Il contenuto dell'articolo non viene caricato nel DB; quando necessario, viene ripreso dal file caricato sul sito.

Se l'autore vuole modificare il contenuto dell'articolo (o i suoi attributi), modifica il file nel proprio PC, e poi ne effettua nuovamente l'upload.

Quali sono i motivi che mi hanno spinto a questa scelta progettuale? I seguenti:

  • posso contare sempre su un backup locale di tutto il contenuto del sito;
  • posso lavorare senza collegamento ad Internet, e collegarmi solo quando desidero fare l'upload;
  • il programma è estremamente leggero, gira senza problemi in server di potenza elaborativa limitata e con poco spazio RAM e HDU (finchè gli accessi sono contenuti, e io non ho problemi a questo riguardo: i miei lettori sono una elite, quindi i miei accessi sono MOLTO contenuti :-);
  • non rinuncio alla flessibilità e rapidità di ricerca che un DB mi permette;
  • se ho pochi articoli [1] il DB può essere implementato con la libreria di supporto di Python (sqlite3), senza scomodare pezzi grossi (nel senso che impegnano non poche risorse) come MySQL, PostgreSQL, ...

Il progetto è formato da un sito dimostrativo [2] e dalla Django application rstblog.

Le funzionalità che il progetto attualmente implementa sono:

  • l'indice degli articoli, con l'indicazione del numero di consultazioni di ogni articolo e gli attributi principali;
  • visualizzazione di un articolo (o di una pagina del sito);
  • upload di un articolo (o di una pagina del sito);
  • ricostruzione completa del DB a partire dai file degli articoli uploadati nel sito;
  • amministrazione del contenuto del DB (chi conosce Django sa che sto barando: nell'ambiente di sviluppo di Django questa funzionalità è embedded);
  • generazione della sitemap.xml del sito;
  • gli articoli possono avere traduzioni, ovvero essere presenti in più di una lingua;
  • indicazione delle statistiche del sito; nel senso di quanti articoli caricati, quante lingue utilizzate, quanti articoli per ogni argomento di classificazione e per lingua.

Quali sono le controindicazioni cui si incorre nell'usare questo ambiente? Le seguenti:

  • l'installazione in produzione di un progetto Django non è banale, ma se ci si vuole cimentare, ho scritto un articolo a tal proposito: Installare una applicazione Django usando Nginx e Gunicorn; comunque questa attività richiede: il controllo completo del server (utenza di amministrazione), e le conoscenze sistemistiche necessarie a non combinare un disastro giocando con l'utenza predetta;
  • così come non è banale l'adattamento del sito; le vostre esigenze sono sicuramente diverse dalle mie, e per modificare il sito che utilizza l'app è necessaria un (bel) po' di pratica con Django.

Se tutto ciò non vi spaventa, e siete tipi orientati all'inseguimento dell'avventura:

Enjoy by ldfa.


[1]Non così pochi: con qualche centinaio di articoli, il tutto reagisce decisamente bene.
[2]Dimostrativo fino ad un certo punto: è quello che uso per il mio blog. Come sa che mi conosce, io sono un minimalista. Quel che non c'è non si può rompere e non distoglie l'attenzione. E quel che non serve, non c'è.