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:

  1. 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).
    Az rmdir /q/s \\?\C:\blog\fura...\index.html módon törölhető azonban, és a front matterben a slug felülbírálásával oldható meg ez a gond.
  2. Ú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 a 2006. Ízlelgessük ezt a dokumentációból:

    “Mon Jan 2 2006”
    Returns: Fri Mar 3 2017

  3. Nincs 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.

  4. Néhány dologról alig van dokumentáció. Példa: RSS file nevének testreszabása.

  5. Template nyelvben a logikát fájdalmasan autisztikus RPN módon kell írni.

  6. 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ű

  7. 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:

  1. a Go nyelv sajátosságai miatt egy darab bináris az egész!
  2. Az oldalak deklaratívan bejegyezhetik maguk menübe.
  3. Jövőben láthatóvá váló, idővel lejáró oldalak.
  4. Statikus metaadat tárolása.
  5. Rugalmas menürendszer
  6. Többnyelvű oldalak támogatása
  7. 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.