Az oldallal elég keveset foglalkoztam, az is elég hektikusan. Ennek sok oka volt, de az is szerepet játszott ebben, hogy a Pretzel (és amúgy a Jekyll is) meglehetősen lassan renderelte az oldalt le. Ezzel annyira megtörte a publikálás *flow*ját, hogy egyszerűen leszoktam a bloggolásról.
Korábban már hallottam a Hugo nevű Go nyelven íródott, állítólag veszettül gyors statikus oldal generátorról. Sajnos ez sem fedi pontosan az igényeimet, ahogy a piacon egyetlen termék sem, viszont sajátot írni nem igazán fűlött a fogam, úgyhogy úgy döntöttem, hogyha már kompromisszumot kötök, akkor azt ne a sebességben tegyem.
Oldal portolás tapasztalatai
A tartalom migrálása viszonylag fájdalommentes volt, néhány dologtól eltekintve:
- A post path generálásnál ha nem bírálom felül a
slug
-ot, akkor elég rosszul választ néha a cím alapján, pl..
-ra, vagy akár...
végződő könyvtárneveket is készít valahogy, ami azért gond, mert winapi-n keresztül nem lehet könnyen törölni (persze létrehozni sem szabadna, hogy könnyen menjen).
Azrmdir /q/s \\?\C:\blog\fura...\index.html
módon törölhető azonban, és a front matterben aslug
felülbírálásával oldható meg ez a gond. Úgy általában ott fáj a legjobban a Hugo, ahol a Go kilátszik a felszín alól. Ez azért sok helyen előfordul a portolás során.
Például a dátumkezelés a Go-ban elég gyenge, így a Hugo-ban is tragikus. A Go nem kezeli a lokalizált dátum stringeket. A dátum mezők megadása elve teljesen autisztikus. Érthető a dolog, de mégis brainfuck, a C/Java/C#%Y
kicsit jobb konstans az év mezőre, mint a2006
. Ízlelgessük ezt a dokumentációból:“Mon Jan 2 2006”
Returns: Fri Mar 3 2017Nincs semmilyen content pipeline, sem build hook annak integrálására. LESS alapú stíluslapom kézzel kell fordítani a módosítások után.
Néhány dologról alig van dokumentáció. Példa: RSS file nevének testreszabása.
Template nyelvben a logikát fájdalmasan autisztikus RPN módon kell írni.
Nem tudtam case sensitive kimenő path gyártásra rávenni, amiatt törnek egyes korábbi permalinkjeim. A permalink gyártás elég rugalmatlan és korlátozott képességű
Nem lehet a markdown parser AST-ből kimenetet gyártó visitort hookolni. Például képekhez css class hozzáadására. A Go nyelv sajátosságai miatt meg sem próbálták a Hugot pluginezhetővé tenni.
Vannak azonban nagyon jó dolgok is benne:
- a Go nyelv sajátosságai miatt egy darab bináris az egész!
- Az oldalak deklaratívan bejegyezhetik maguk menübe.
- Jövőben láthatóvá váló, idővel lejáró oldalak.
- Statikus metaadat tárolása.
- Rugalmas menürendszer
- Többnyelvű oldalak támogatása
- Iszonyat gyors!
Ezekkel a funkciókkal az én blogomnál sokkal összetetteb igényeket is ki tud elégíteni. Akár céges arculati oldal, konferencia, vagy egyéb komolyabb felhasználási esetekkel rendelkező szervezetet is hasznát veheti.
Sebesség
Ki is próbáltam a generátort, és valóban veszett gyorsak bizonyult. Miután a tartalmat és a formát egyaránt portoltam a Hugo árnyalatnyit különböző oldalszerkezetébe végeztem egy rögtönzött mérést. Mérésem szerint a Pretzel alapú oldal 64 másodperc alatt renderelődött le nulláról, hugo segítségével 1,2 másodperc. Ebben a mérésben azonban egyéb toolok is be voltak kapcsolva, melyek a publikálás részét képezik. Azok nélkül a hugo 300ms alatt rendereli a blogot mai formájában, a Pretzel szintúgy egy perc felett. Ez két nagyságrendbéli gyorsulás, úgyhogy megtartom.
Konklúzió
A permalink kezelés eltérései miatt néhány írás permalinkje megváltozott. 😎
Meg kellett tanulnom együtt élni a rigolyáival, de úgy döntöttem,hogy megtartom. Így lett tehát ez az oldal az én Hugom.