Andrey Stolyarov

Андрей Викторович Столяров: сайт автора

UPD (Jun 17, 2026): есть Thalassa 0.3.75, отдельную новость здесь мне делать лень :-)

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


From posyx profile Thu Jun 11 10:05:29 2026 UTC pencil

Я вас заебал.

Андрей Викторович, добрый день! Ну вот прям реально не работает %[li:hf:] в шаблонах (в желаемом месте).

В шаблонах pageset оно работает, а именно в параметрах "page_template" и "page_tail_template". Макросы доступа к полям в этих параметрах прекрасно работают, в том числе к пользовательским, через команду hf. Как положено.

В шаблонах list странность. "list_header", "list_item_template", "list_footer"

Макрос проверялся во всех трех параметрах. И логично, что в header и footer он не работает, а в list_item_template работает исправно. Это хорошо.

Что касаемо отдельных страниц списка, то тут конкретная странность. "itempage_template" и "itempage_tail_template". Тут по идее (наверное) должно работать все так же, как в [pageset]/page_template и /page_tail_template. Но оно работает как-то наполовину. Т.е %[li:id] разворачивается, т.е доступ к полю есть. А %[li:hf:some_field] нет. Почему?

Чтобы вы увидели, я создал минимальную тестовую конфигурацию, которую разместил в виде .tar, который можно вытянуть со страницы по адресу: http://posyx.online/main/message_for_avst

Внутри тестовый каталог protist. Внутри thalassa.ini, protist.ini В protist.ini описано собственно pageset, list разделы. Каталог с текстовым файлом с заголовком. Короче
$ thalassa gen -r
Создает в этом же каталоге, где эти файлы, каталог result. В нём три страницы, от pageset, от listpage и от itempage. И видно, как ведет себя макрос.

Если что, жду ответ на почту:

parent From Andrey V. Stolyarov profile Thu Jun 11 18:03:40 2026 UTC pencil

userpic

Re: Я вас заебал.

- Скажи мне, Балу, вот ты, такой сильный, ловкий и опытный, сможешь достать вон тот банан?
- Нет, Маугли, я не смогу его достать, я уже старый и толстый.
- Ну а Акелла, наш вождь, достанет этот банан?
- Волки не лазают по деревьям, Маугли, а Акелла — волк. Он не сможет достать этот банан.
- А Багира сможет?
- Нет, Маугли, и Багира тоже не сможет.
- А Шер-Хан?
- Да где уж ему
- Ну хорошо, а я, Маугли, сын человеческий, вот я достану этот банан?
- Да ты, Маугли, кого угодно достанешь!

Крч, а так?

parent From posyx profile Fri Jun 12 04:49:14 2026 UTC pencil

Re: Re: Не сработало.

Изменения не затронули странность.

Ладно, бог с этим. Я вижу, что вы Андрей Викторович не трогали тот .tar, сами не тестировали. Как я говорил, лично я эту странность (для своей задачи) обхожу другими путями. Когда появится возможность у меня сделать пожертвование, может появится больше ресурсов решить её.

Всего доброго!

parent From Andrey V. Stolyarov profile Fri Jun 12 16:14:13 2026 UTC pencil

userpic

Re: Re: Re: Не сработало.

> Я вижу, что вы Андрей Викторович не трогали тот .tar, сами не тестировали

Заблуждаетесь, я, разумеется, тестировал и всё работает. Скажем так, всё, что должно работать. Я только потому и полез в это дело, что вы таки сподобились сделать минимальный (ну, похожий на минимальный) тест.

В общем li:hf:как-там-у-вас-descr_short или что там было, уже не помню, вот оно благополучно подставляется.

parent From posyx profile Sat Jun 13 07:23:04 2026 UTC pencil

Re: Re: Re: Re: Доказательства.

Добрый день! Все выходит так, что я будто идиот, тролль что-ли, который решил чесать вам якобы об ошибке, которой нет (что я решил врать, типа у меня что-то не работает). Или что я жду, что макрос будет работать там, где не должен. Но я четко вижу, что я точно не ошибаюсь (или я так думаю).

На той же странице (http://posyx.online/main/message_for_avst).
Я изменил содержание. Обновил .tar и добавил в него копию определения списка, но только на основе .ini Т.е выплевывается на 2 файла больше с тем же шаблоном. И выплевываются они именно такими, какими и должны. Но почему-то [list N]/source = set не хочет выплевывать itempage таким же.

На той же странице я добавил скриншоты того, какими генерируются страницы. Картинки кликабельные. Посмотрите, всё ли должно быть так, как на этих скриншотах? Если что, это не браузер барахлит. Я проверял в текстовом редакторе, там не видно, чтобы макрос развернулся.

Если у вас действительно все в порядке, то в чем же тогда может быть дело конкретно у меня? Может быть кто-нибудь тоже протестирует? Сейчас у меня ощущение такое, что просто мой компьютер проклят сатаной, и всё.

parent From Andrey V. Stolyarov profile Sat Jun 13 09:08:11 2026 UTC pencil

userpic

Re: Re: Re: Re: Re: Доказательства.

> добавил в него копию определения списка

Т.е. вместо того, чтобы сделать тест МЕНЬШЕ, как это требуется (ибо в вашем тесте хренова прорва всего лишнего), вы зачем-то сделали его БОЛЬШЕ? Извините, ковыряться в таком у меня времени точно нет.

Я бы, конечно, привёл тут тупо содержание файлов, сгенерённых из вашего примера, с этим вашим сакраментальным shit! ровно там, где оно должно быть, да только там толпа html-тэгов, т.е. это всё ещё обрабатывать надо. Некогда.

Такие штуки обычно творятся, когда бинарник по ошибке запускается не из того архива или не из того места. Рекомендую thalassa show version, очень способствует.

parent From posyx profile Sat Jun 13 13:03:58 2026 UTC pencil

Re: Re: Re: Re: Re: Re: Доказательства.

Андрей Викторович. Я еще раз изменил tar. Убрал теги, стремные закорючки, снизил количество параметров. Генерируются просто текстовые файлы, содержимое которых проверяется в текстовом редакторе. Раздел [pageset], два раздела [list] я увы не уберу. И параметры-шаблоны тоже не убрать. В параметры-шаблоны я преднамеренно загнал собственно имена-шаблоны открывающие и закрывающие, чтобы было видно, что тот или иной кусок является полностью частью параметра, чтобы было видно, где разворачивается макрос, а где нет. Надеюсь стало лучше.

Содержимое страницы message_for_avst снова изменено. Тоже в лучшую сторону. Туда я загнал протокол командной строки. Так видно, где там раскрывается макрос, а где нет.

thalassa show version 0.3.71, запускаю правильно. Сам бинарник отыскивается в path и запихал я его туда, куда предлагала документация (/usr/local/bin/).

parent From Andrey V. Stolyarov profile Sun Jun 14 08:33:54 2026 UTC pencil

userpic

Re: Доказательства.

Так-с.

Вот самый последний вывод самого последнего файла. Макрос li:hf не хочет разворачиваться в itempage шаблонах для которых source = set.

Я правильно понял, что всё нормально подставляется во всех случаях, кроме ровно одного: а именно, когда из списка, который построен на базе pageset'а, генерятся ещё и itempage?

В принципе глюки в таком режиме вполне ожидаемы, я никогда не предполагал генерации таких itempage'ей, ведь для set'а _уже_ для каждого его элемента сгенерена страница, на то он и pageset. А вы потом по факту тот же самый контент включаете в список (что нормально) и для него же самого пытаетесь генерить ещё одну страницу на каждый элемент списка (что странно, ведь страницы для этих элементов уже есть).

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

UPD: Бугага, посмотрел. Реально там вообще не должно было работать ничего от слова совсем, из всех %[li:*], если только я ничего не напутал, должен был работать один только %li:id%. Там ни телу было неоткуда взяться, ни всему остальному. Процедуры, отвечающие за генерацию list item page, вообще в принципе не предполагали, что информацию этого самого item'а можно брать откуда-то ещё, кроме как из ini-файлов. Это, кстати, прямо-таки офигенный пример того, насколько мнение автора программы о том, чтО она должна и чего не должна, может отличаться от мнения юзеров и вообще всех, кроме собственно автора: я, когда этот код писал, предполагал, что конечно же уж если дело дошло до генерации list item page, то разумеется это ini-based list, потому что ну как же может быть иначе. Ни в документации про это ни слова не написал, ни проверок никаких не поставл, просто исходил из "очевидного" предположения, причём даже сам этого не осознавал. Вот из таких приколов как раз эксплойтабельные дыры и появляются, между прочим. И я это прекрасно знаю. И тогда знал. И тем не менее вот так вот написал. Видимо, вот эта вот подспудная убеждённость автора кода, что по-другому же не бывает, есть вообще одно из тех зол, которые полностью не вытравить никакими усилиями.

Я эту ситуацию вроде бы поправил, но сейчас нет сил ни на тестирование, ни на релиз. В общем давайте так, возьмите вот этот вот вариант generate.cpp, подложите в $thalassa/cms/ вместо того, который там сейчас лежит, пересоберитесь, попробуйте и расскажите о результатах.

parent From posyx profile Sun Jun 14 15:35:11 2026 UTC pencil

Re: Re: f* up.

Оh my f god, мне так стыдно.

Андрей Викторович, оно заработало. Но это наоборот плохо. Макрос правильно делал, что не разворачивался там. Судя по тому, что до меня только что наконец дошло, там не то что макрос не должен разворачиваться, оно вообще должно было падать с ярчайшими спецэффектами при попытке делать ТАК.

>Я правильно понял, что всё нормально подставляется во всех случаях, кроме ровно одного: а именно, когда из списка, который построен на базе pageset'а, генерятся ещё и itempage?

Да. Однако дело в том, что нет никакого "...на базе pageset, генерятся еще и itempage". itempage, когда source = pageset, ВСЕГДА генерятся. И параметр pages = no (который отключает генерацию самостоятельных страниц) никак не способен на это влиять, когда список set based.

Я в упор не мог увидеть того факта, что когда список генерируется на основе pageset, что эти вот страницы, от этого вот pageset, которые указаны в служебном файле списка, что они в таком случае сами собой и являются самостоятельными элементами списка.

Т.е параметры pages, itempage_template, itempage_tail_template, itempage_name, и может быть что-то еще вообще не должны работать, когда source = set. Когда source = set, шаблон для самостоятельного элемента определяется параметрами page_[tail_]template именно [pageset] раздела. Между этими элементами даже навигация работает, именно поэтому условный %[li:next:some_list] введен. А если для списка нужен отличительный стиль, то есть специальный способ заводить альтернативные шаблоны, путем указания спецификатора/селектора (page_template:some_other_style) и поля type в текстовом файле.

Для меня это было совершенно неочевидно. Я думал, что страницы pageset это одно, а страницы list - это другое. Теперь понимаю, что list является полностью самостоятельным, когда он .ini based. Когда он set based, он является скорее некоторым расширением для страниц pageset, которые обретают свойство упорядоченности, могут иметь свой отличительный шаблон, но который все еще видно, что не более, чем расширение pageset, т.е к примеру настройки комментариев для самостоятельных страниц, когда source = set, определяются в [pageset]/comments, а не в [list]/comments, похоже. Также если source = set, то шаблон именования ходит из [pageset] раздела, а не из [list]/itempage_name раздела.

Я точно не помню, но такие детали в явном виде я не припоминаю в документации. Я припоминаю сейчас только то, что по этой теме там написано что-то вроде "ну, можно .ini использовать, а можно pageset, в общем-то нет разницы". А она есть. Для меня было странным, когда я сделал list на основе pageset и ждал, что условные 3 файла сгенерируют 3 страницы, а они генерировали 6 страниц (3 самостоятельные страницы списка и 3 страницы от pageset). Нет, 3 страницы от pageset и есть эти самостоятельные страницы, а 3 другие страницы вообще не должны были быть сгенерированны, вот и всё.

parent From Andrey V. Stolyarov profile Sun Jun 14 17:58:21 2026 UTC pencil

userpic

Re: Re: Re: f* up.

Мне сложно комментировать весь этот поток сознания, но вот это вот ваше

> itempage, когда source = pageset, ВСЕГДА генерятся.

— ну, это, я бы сказал, вопиюще неверно. "Всегда" генерятся страницы pageset'а. Они генерятся не как list item pages, а как set pages. Ну, pageset — он же всё-таки "множество страниц", вот эти страницы, составляющие множество, как раз и генерятся. И да, они генерятся "всегда" совершенно безотносительно list'ов, состряпанных на основе этого конкретного pageset'а. Даже если там вообще ни одного list'а не сделать, ЭТИ страницы сгенерятся, потому что есть page set и есть его элементы.

А вот про список вы тут совершенно правы:

> Когда он set based, он является скорее некоторым расширением для страниц pageset, которые обретают свойство упорядоченности

(и должен сказать, что цитирование я оборвал именно на этом месте отнюдь не случайно, дальше там опять непонятно что говорится, и я не уверен, что это правильно)

Но на самом деле основное назначение таких list'ов — это не их упорядоченность, а генерация списков из айтемов. Ну, типа, вот есть страницы pageset'а, а нам нужен список их всех (ну, типа, html'ный OL или UL) или какой-то их части. Ну, там, не знаю, оглавление, дайджест, каталог, лента новостей, список анонсов, что там ещё бывает. Вот pageset based lists — они для этого. Упорядоченность — просто следствие.

Так или иначе, документация прямо не запрещает генерить по такому списку ещё и list item pages. Можно было бы либо такой запрет ввести (и в программе сделать проверку, и работать отказываться, если такого хотят), либо пофиксить, как это сделал я. Второй вариант мне показался проще, и в принципе я даже могу, наверное, себе представить особо патологические ситуации, когда такое может оказаться играбельно.

UPD: Извините, но с вашей новой простынёй всё совсем плохо: мне просто чтобы понять, чего вы хотите, пришлось бы, наверное, полдня потратить. Так, знаете ли, просто нельзя.

parent From posyx profile Thu Jun 25 23:20:55 2026 UTC pencil

Short speak. fedanet android.

Андрей Викторович, добрый день.

Давно я закончил тужиться над тем, чтобы заставить работать fedanet на android смартфоне, думал подождать удобный момент, но что-то не скоро он наверное. Поэтому я недавно решил оформить то, что сделано.

На той же странице http://posyx.online/main/message_for_avst изменено содержание. Там .tbz2 с android программой.

Всё работает, но это скорее странно, что работает. Там ужасно страшная вуду-магия происходит между fedaserv смартфонным и fedaserv компьютерным. Я прикрепил на той же странице логи их взаимодействия. Я не понимаю, что происходит, и боюсь не в силах понять.

Также я давно получил целую кучу достойных ключей, но недавно таки решил поднять узел, поэтому страница также доступна по http://[feda:a080:3ead:dcb7:75:5890:fefe:dafe]/main/message_for_avst

Только вот почему-то я не могу спиринговаться с вашим c508 на ip 45.13.38.102 5080. Он оффлайн что-ли. Мой узел если что 103.80.86.209 65242, может кто присоединится.

Что касаемо thalassa.

Я попытался укоротить, что хочу, но один хрен получается очень длинно. То, что я там предлагал, это просто одно из решений, которые сейчас не поддерживаются, но есть другие и они работают, не нужно менять программу для задачи, которую она и так умеет решать.

Однако решение, которое она умеет, вот чуть-чуть бы добавить кое-чего, и тогда она идеально будет уметь это решать.

Нужно, чтобы параметр sourcedir в pageset поддерживал список каталогов, а не только один каталог. Чтобы можно было множество исходных файлов разделить по разным каталогам. Т.е брать из нескольких каталогов. Логически разделены, фактически это source files одного pageset.

Параметр setdirname позволяет делить выходящие .html в разные каталоги, т.к макросы доступа к полям тут работают. А вот исходные не может оно брать из нескольких каталогов. Приходится пользоваться одним каталогом, а для смыслового разделения использовать префиксы в именах, чтобы было понятно, к чему относится страница.

Причем я говорю именно о setdirname, не о шаблоне имени для отдельного элемента. Сейчас оно умеет выплевывать одно pageset по разным каталогам, в рамках каждого из которых применяются уже шаблон имени отдельного элемента.

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

parent From Andrey V. Stolyarov profile Fri Jun 26 17:23:52 2026 UTC pencil

userpic

Re: Short speak. fedanet android.

> Там .tbz2 с android программой.

Я на это даже смотреть не стану, не надейтесь. Со всеми вопросами, связанными с "разработкой" под смартфоны, совершенно точно не ко мне.

> Он оффлайн что-ли.

Да, упал (вроде недавно, в пределах последних суток), я его с час назад обратно поднял.

> Мой узел если что

Для таких вещей существует сайт FEDAnet. Как, кстати, и для всего, что касается FEDAnet, в том числе отчётов про андроид и прочих обсуждений. В следующий раз здесь подобное не раскрою принципиально.

> Нужно, чтобы параметр sourcedir в pageset поддерживал список каталогов

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


pencil

пояснение


Вы находитесь на официальном сайте Андрея Викторовича Столярова, автора учебных пособий по программированию и информационным технологиям.

Если вы искали сайт замечательного писателя-фантаста Андрея Михайловича Столярова, то вам, к сожалению, не сюда.

Андрей Михайлович Столяров в библиотеке Мошкова

Авторские права © Андрей Викт. Столяров, 2009 — 2026