[О блоге] [наверх] [пред] [2022-08-22 17:21:56+03:00] [d4eadab571bf5e8ea00d19598f129a708a322d15]
Темы: [tcl]

Переписал zdns на Tcl

http://www.git.stargrave.org/?p=zdns.git;a=commitdiff;h=bb68fcc5ab280623651b31953e149d364d3f7bf9
Не преследуя никакой практической цели, кроме как потрогать Tcl вновь,
чтобы развеяться. Этот язык я в руки не брал с момента написания
tofuproxy (который тоже почти не трогается, ибо just works -- почти все
HTTP запросы на моём компьютере проходят через него, даже WARC временами
использую).

И вот почти ничего не помня про Tcl, я почти без единого спотыкания и
почти без единой ошибки во время выполнения всё переписал. Только одна
ошибка запомнилась: если закрыть канал, являющийся stdout-ом от другой
команды, не дочитав всё до конца (я читаю OpenPGP ключ и выхожу когда
нужный UID был прочитан), то программа выходит с ошибкой (что ожидаемо)
и Tcl ловит эту ошибку падая. Ну и забыл что глобальные переменные по
умолчанию не видны в процедурах.

Всю документацию, кроме одной базовой книжки в PDF по Tcl, я брал из
man-ов, благо до которых у меня прекрасно работает мой клёвый
настроенный completion в zsh:

    % man index<TAB>
    [...]
    ... manual page, section 5 (file formats and conventions)
    INDEX                                       portindex
    ... manual page, section 9 (kernel features)
    bhnd_get_core_index                         ifaddr_byindex
    ... manual page, section n (new documentation)
    auto_mkindex.tcl86           lindex.tcl86                 pkg_mkIndex.tcl86
    ... parameter
    ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX

И эти man-ы очень понравились, наличием ценнейших простых примеров, где
тот же намёк на использование while {getc} и catch{close} имеется.

Непередаваемое чувство, когда ты пишешь всякий код, много или не очень,
а он просто берёт и выполняется без проблем. Такое у меня только с Go
было. Tcl очень приятен!

    [оставить комментарий]