Browse Source

Add post about hugo

Elia Argentieri 1 year ago
parent
commit
35ad661bc2
1 changed files with 90 additions and 0 deletions
  1. 90
    0
      content/blog/hugo.md

+ 90
- 0
content/blog/hugo.md View File

@@ -0,0 +1,90 @@
1
++++
2
+date = "2017-03-12T01:47:14+01:00"
3
+title = "Hugo, generatore di siti statici scritto in Go"
4
+categorie = ["ElinvenSito"]
5
+image = "https://gohugo.io/img/hugo.png"
6
++++
7
+
8
+Nel corso degli anni ho usato vari generatori di siti statici. Uno dei primi che
9
+ho provato fu il mitico [Hakyll][], visto che aveva una buona reputazione, purtroppo
10
+però al quei tempi non conoscevo il paradigma funzionale e Hakyll andava
11
+programmato in Haskell! Oltre al fatto che non ci capivo una mazza, una soluzione
12
+del genere è troppo complicata: usare Haskell per programmare il template del
13
+sito è quasi come sparare a una mosca con un cannone.
14
+
15
+Dopodiché ho provato varie alternative, ognuna con i suoi difetti e nessuna che
16
+mi colpisse per funzionalità e semplicità, finché non capitai su [Jekyll][].
17
+Jekyll, scritto in Ruby (altro linguaggio sconosciuto...), sembrava quel che
18
+faceva al caso mio: semplice, ben documentato, estensibile (lo usa GitHub).
19
+
20
+Dopo un po' di tempo però, non ero più soddisfatto, così quando capitai sulla
21
+homepage di [Nikola][], [mi misi subito all'opera][passaggio]. Nikola è un
22
+generatore scritto in Python, che supporta i template Jinja2 e Mako.
23
+Nikola è molto più organizzato di Jekyll, in generale lo reputo
24
+superiore e in questi 2 anni mi ha servito egregiamente.
25
+
26
+Dopo circa un anno, rieccomi qua a cercare un altro generatore di siti statici.
27
+Stavolta i motivi che mi hanno portato a questa conclusione sono molteplici:
28
+
29
+- il pacchetto Debian di Nikola è abbandonato dal 2015
30
+- fare una virtualenv per poi installare l'ultima versione di Nikola con pip è
31
+noioso e sub-ottimale perché io con le virtualenv finisco sempre male e ogni
32
+volta vanno attivate e perché pip fa un po' schifo
33
+- la velocità di Nikola è... maledettamente lento! Solo per mostrare l'aiuto ci
34
+vogliono circa 2 secondi sul mio pc e più di 5 secondi su OLinuXino! All'inizio
35
+questo non era un problema, ma lo è diventato man mano che il sito è cresciuto.
36
+
37
+Quindi stavolta è il turno di [Hugo][], scritto in Go, supporta i template HTML
38
+Go, che sono simili a quelli jinja2.
39
+
40
+Innanzitutto il gestore di pacchetti di Go è infinitamente migliore di pip e non
41
+rompe le scatole con le virtualenv. Dopo averlo installato, il primo test che ho
42
+fatto è stato questo:
43
+
44
+```
45
+$ time hugo version
46
+Hugo Static Site Generator v0.20-DEV linux/amd64 BuildDate: 2017-03-10T19:15:18+01:00
47
+hugo version  0,02s user 0,00s system 98% cpu 0,020 total
48
+```
49
+
50
+*Direi che sembra SANO*. Dopodiché ho messo insieme uno script python per
51
+convertire gli articoli del sito nel formato accettato da Hugo e ho generato il
52
+sito in circa 200 millisecondi!!! Approvato. Subito a smanettare con i template
53
+e sono riuscito a replicare il tema del vecchio sito molto facilmente e visto
54
+che c'ero ho fatto qualche aggiunta qua e l'ha. Il risultato non è male, credo
55
+che Hugo sia ancora più semplice di Nikola e che riesca a non farsi mancare niente.
56
+
57
+Viste le prestazioni ho messo il repository git su OLinuXino e ci ho installato
58
+un hook di post-receive, che, dopo un push, genera il sito e lo rende subito
59
+disponibile. Questo è ciò che ho tirato fuori scopiazzando qua e la dalla rete:
60
+
61
+```
62
+#!/bin/sh
63
+
64
+BARE=$HOME/elinvensito.git
65
+WORK=$HOME/elinvensito
66
+
67
+test -d $WORK || mkdir $WORK
68
+git --git-dir=$BARE --work-tree=$WORK checkout -f
69
+
70
+cd $WORK
71
+git --git-dir=$BARE --work-tree=$WORK submodule update --init
72
+
73
+rm public -rf
74
+hugo
75
+
76
+echo "Done!"
77
+exit 0
78
+```
79
+
80
+La cartella di output `public`, è symlinkata su `/srv/www`, così molto
81
+comodamente, appena arriva un nuovo commit, la versione aggiornata è subito online.
82
+
83
+Hugo è bello perché lo dico io. Toh. ;-)
84
+
85
+
86
+[Hakyll]: https://jaspervdj.be/hakyll/
87
+[Jekyll]: https://jekyllrb.com/
88
+[Nikola]: https://getnikola.com/
89
+[passaggio]: /blog/passaggio-a-nikola/
90
+[Hugo]: https://gohugo.io/