Zola SSG: история успеха

Много сгоревших свечей пришлось сжечь чтобы разобраться как работает генератор статических сайтов zola.

Оно использует .md файлы и это должен быть максимально безопасный вариант.

Оказалось, что оно не может рендерить ``` и зачем-то внутри всё оборачивает слоями <code> и <p> даже если выключена подсветка.

Это печально — упасть на тексте который не надо трогать (потрогайте картинки).

(иногда фантазирую как конвертирую вордпресс в золу и при этом меняю структуру урлов и мне очень тепло)

#zola #web #ssg #markdown #wtf

english version

2025.11.16 15:23

Шорткаты терминала

В терминале можно неплохо удалять. Например, если у вас есть строка и курсор в центре:

xxx xxx █ xxx xxx

То вы можете:
CTRL+W чтобы удалить слово слева
ALT+D чтобы удалить слово справа

Почему?

#linux #why #wtf

2025.11.10 23:17

cli params и Racket lang

Очень нужно сильно захотелось написать простой маленький консольный бинарничичек. Конечно же не на пхп ведь мы же не монстры, правда?

Немедленно открываем документацию к racket чтобы узнать как это делать:

(command-line optional-name-expr optional-argv-expr
              flag-clause ...
              finish-clause)

optional-name-expr =
                   | #:program name-expr

optional-argv-expr =
                   | #:argv argv-expr

       flag-clause = #:multi flag-spec ...
                   | #:once-each flag-spec ...
                   | #:once-any flag-spec ...
                   | #:final flag-spec ...
                   | #:usage-help string ...
                   | #:help-labels string ...
                   | #:ps string ...

         flag-spec = (flags id ... help-spec body ...+)
                   | (flags => handler-expr help-expr)

             flags = flag-string
                   | (flag-string ...+)

         help-spec = string
                   | (string-expr ...+)

     finish-clause =
                   | #:args arg-formals body ...+
                   | #:handlers handlers-exprs

       arg-formals = rest-id
                   | (arg ...)
                   | (arg ...+ . rest-id)

               arg = id
                   | [id default-expr]

    handlers-exprs = finish-expr arg-strings-expr
                   | finish-expr arg-strings-expr help-expr
                   | finish-expr arg-strings-expr help-expr
                     unknown-expr

Пожалукйста, потратьте минутку и насладитесь этим шедевром форматирования.

Спасибо, больше не надо этого делать. Если вы не поняли как это работает, то вот вам настоящий пример от человека который понял:

(define parser
  (command-line
   #:usage-help
   "Here you can write a general description of your program"
   "You can have multiple strings to make multiple lines"

   #:once-each
   [("-m" "--my-parameter") MY-PARAMETER-NAME
    "write a short description of what setting MY-PARAMETER-NAME does"
    (my-parameter (string->number MY-PARAMETER-NAME))]
   [("-a" "--another-parameter") ANOTHER-PARAM
    "a little description of ANOTHER-PARAM"
    (another-parameter (string=? "true" ANOTHER-PARAM))]
   [("-s" "--string") A-STRING
    "what is A-STRING?"
    (a-string A-STRING)]

   #:args () (void)))

Очень мне нравится как в они в этом racket’е любят использовать магические строки типа #:once-each которые непонятно что делают и никак не автодополняются официальной IDE.

Очень, очень захватывающе. Пожалуй, на этом с racket я закончу.

#racket #why #wtf #theway #deep

english version

2025.01.26 14:54

Помогите понять как это работает потому что оно не работает

Invalid formula - Operator "=" doesn't support TEXT = NUMBER. Operator "=" supports ANY = ANY.

А почему `TEXT = NUMBER` это не `ANY = ANY`??????77

#why #wtf

2024.06.28 10:22

Gentoo & binary packages

Разработчики проекта Gentoo объявили о введении в строй отдельного репозитория с бинарными пакетами, собранными с поддержкой третьей версии микроархитектуры x86-64 (x86-64-v3), применяемой в процессорах Intel примерно с 2015 года

Новый репозиторий позволяет добиться более высокой производительности на современных процессорах, благодаря задействованию в программах расширенных инструкций.

Приятно видеть что мейнтейнеры генты не предают идеи генты!

#gentoo #linux #why #wtf

2024.02.08 00:44

arch ▯ шрифты

Традиционно, шрифты это ад и ненависть. Как настраивать fontconfig понимают только те кто понимают, но я не из тех кто пониимает и поэтому не понимаю. При каждой попытке занырнуть в этот xml я понимаю что не стоило этого делать.

Каким-то образом понаставив каких-то пакетов наугад удалось найти какой-то моноширинный шрифт на который больно смотреть, но всё же можно смотреть. Это была победа.

Понаставив каких-то других шрифтов начали показываться эмодзи, даже цветные, но не все. Ну, это уже была победная победа.

Но после очередного обновления прекрасного прекрасного rolling release эмодзи стали показываться не все, но зато чёрно-белые. И всё, как это починить непонятно.

Доколе.

#arch #linux #fonts #emoji #hate #why #wtf

2024.02.08 00:43

Linux and named ports

А вы знаете что в линуксах есть файл /etc/services и в него можно добавить алиасы для портов? Напрмер:

# tail -n 1 /etc/services
docker-git-http 23456/tcp

Ну, знаете, удобно не хардкодить везде какие-то числа которые потом невозможно поменять, а просто пишешь алиас и везде используешь. Ну, прямо как с /etc/hosts и всякими локалхостами! Очень удобно!

Только именованные порты не работают ни в nginx, ни в docker.

Как? Почему? Кто виноват? Как жить с этой печалью?

#linux #wtf #sob

2024.01.03 14:35

arch pacman database lock

# pacman -Sy my-package
# pacman -Sy my-package
:: Synchronizing package databases...
error: failed to synchronize all databases (unable to lock database)

О нет о нет как же быть пользователь хочет ставить два пакета одновременно о нет как же быть паника паника ошибка

#linux #arch #wtf

2023.11.21 15:43

Arch for newbies!

После генты арч не вызывает паники, но всё же некоторое недоумление:

$ modprobe acpi_call
modprobe: FATAL: Module acpi_call not found in directory /lib/modules/6.5.7-arch1-1

$ uname -a
Linux computer 6.5.7-arch1-1 #1 SMP PREEMPT_DYNAMIC Tue, 10 Oct 2023 21:10:21 +0000 x86_64 GNU/Linux

$ pacman -Ql acpi_call | grep '/modules/'
acpi_call /usr/lib/modules/
acpi_call /usr/lib/modules/6.6.1-arch1-1/
acpi_call /usr/lib/modules/6.6.1-arch1-1/extramodules/
acpi_call /usr/lib/modules/6.6.1-arch1-1/extramodules/acpi_call.ko.xz

Это вообще как и почему произошло? Ну то есть я понимаю почему это произошло и что арч надо полностью обновлять каждые 4 минуты (и перезагружаться), но всё же у меня есть некоторые вопросы.

#linux #arch #wtf

2023.11.19 19:13

ARCH AUR

Захотелось поставить пакет из Arch AUR и это интересный опыт.

Сначала надо вручную склонировать репозиторий, потом собрать пакет, а потом установить пакет через пакман.

ERROR: Running makepkg as root is now allowed as it can cause permanent, catastrophic damage to your system

И вот мне теперь что, вместо того чтобы поставить пакет надо создавать /home, придумывать имя пользователю и ставить из под него?

Я вот ещё не готов к такому шагу, у меня /home ещё даже не монтирутеся, вот почему???77

В генте всё намного проще с левыми пакетами.

Можно, конечно, для Arch AUR поставить второй менеджер пакетов который будет всё это прятать в себя. Но те два на которые мне удалось проверить можно поставить только из Arch AUR.

Потрясающе!

Только для того чтобы разрешило собрать пакет из AUR надо настроить всю систему сначала.

# makepkg -scir
==> ERROR: Cannot find the fakeroot binary,
==> WARNING: Cannot find sudo binary. Will use su to acquire root privileges.

🤌

#linux #gentoo2arch #arch #wtf

2023.10.31 22:56