Wpis z mikrobloga

TLDR: napisałem swój silnik blogowania (static site generator) w mniej niż 100 linii kodu

Ostatnio znudził mi się mój szablon na blogu a sam silnik, którego używałem, wydawał się dla mnie za duży. Potrzebowałem czegoś o wiele prostszego. Prostego szablonu, prostego silnika do renderowania. Niestety teraz mamy taką modę, że z małego landinga page developerzy potrafią zrobić 30 mb SPA, bo przecież wszędzie musi być react, trzysta bibliotek js i milion zdjęć. O ile react/vue/gatsby itd jest świetnym narzędziem i ma swoje zastosowania, to nie wszędzie powinno się go wciskać.

Cóż, zatem siadłem jednego wieczoru i parę godzin później powstał braindead - mój własny braindead simple static site generator. Początkowa działająca wersja, mająca wszystkie potrzebne mi featury, zmieściła mi się w 100 linijkach kodu. Teraz troszkę dobudowałem i dodałem nieco komentarzy więc jest ich około 150, ale wciąż uważam to za niezły wynik jak na silnik dla mojego bloga, który wspiera markdown, kolorowanie składni, htmla, tabelki w markdownie i kilka innych rzeczy.
Magia się tam nie dzieje żadna - Jinja, Markdown, Toml, Pygments i #python
Dependency management oczywiście poetry zamiast rakowe pipenva. Do tego type hinting, black, isort, bandit.

Szablon, którego używam waży jakieś 10KB, strona ładuje się jak pierun normalnie. Nie ma JSa. I to mi się podoba. W każdym razie - kod jest na repo, jakby się ktoś chciał pobawić, to zapraszam. Paczkę można ściągnąć z pypi pip install braindead. Jak używać jest w pliku readme na repo. Demo na blogu https://grski.pl/

Jak komuś mój szablon nie pasuje, to można swój własny napisać :D
Domyślny wygląda tak:
Default template of braindead
Ładowanie bez cache:
requests made if loading this template

W sumie chyba będę to trochę rozwijał po godzinach bo mam kilka pomysłów co tam jeszcze dobudować (todo.txt na repo)
Za niedługo pewnie skrobnę wpis o procesie tworzenia.
inb4 ktoś powie: kod słaby, gdzie są klasy, co to za same funkcje, płaska struktura? tak tak, nie lubie obiektówki.
#programowanie

Technologia użyta:

toml,
markdown
jinja2
pygments.

formatowanie:
black
isort.
flake8
autoflake
bandit

wersjonowanie:
bumpversion.

deps management & publishing: poetry
  • 18
  • Odpowiedz
UPDATE: zgodnie z zapowiedzią, napisałem artykuł jak blog powstawał: można przeczytać na medium jak i na moim blogu ps: jak na medium czytacie mając premke to mi szekle lecą.
  • Odpowiedz
@grskii nie ma co ukrywać - łysy z zakolami i coraz bardziej ślepy. Broda i wąs to by odwrócić uwagę od łysej głowy. I tak o - w sumie oddaje rzeczywistość. Btw. Nice job z tym blogiem :)
  • Odpowiedz
@grskii it’s more complicated xD it is in memory until it is cached on CF. Later basically requests do not reach the backend (I need to fix only the static files - no cache header there);
  • Odpowiedz
@9harkonnen6: sprawdziłem jeszcze dodatkowo - to raczej an pewno kwestia base_url w settingsach. Lokalnie ci pewnie nie zadziała o ile nie odpalasz z serwera http.
Wypuściłem wersje 0.2.6 - tam dodałem ostrzeżenie o takim zachowaniu + do backloga wpisałem live server automatyczny.
  • Odpowiedz