On 10.04.2009 13:03, Pavel Wolneykien wrote:
> Stanislav Ievlev <stanislav.iev...@gmail.com> wrote:
>
>   
>> А что такое caterva?
>>     
>   Всё вместе переводится как "Словоизвержение". :)
>
>   Мне надо генерировать конфигурационный файл для Squid на основе
> значений, которые пользователь ввёл через модуль Альтератора. Причём
> сам модуль никак не сохраняет эти значения, а передаёт их метабакенду,
> который складывает их в сторонке. Такая система возникла в виду
> сложности корректного обновления конфигурационного файла: его проще
> перезаписать целиком, а значит нужно где-то хранить исходные данные.
>
>   Исходных данных было немного, а конфигурационный файл по умолчанию из
> пакета Squid довольно длинный: он содержит много полезных комментариев,
> которые хочется сохранить на случай, если администратор решит поправить
> что-то в ручную (ну не отсылать же его в этом случае к документации по
> Squid, в самом деле?). Самый простой способ решения этой задачи
> заключается в помещении статической части конфигурационного файла
> непосредственно в генерирующий код. А по умолчанию у нас генератором
> является сам бакенд. Идея раздуть бакенд на добрых 4500 строк меня,
> честно скажу, не обрадовала (хотя вначале повеселила немного).
>
>   Мысль вынести генератор в отдельную программу постепенно привела к
> мысли о создании шаблона: известно, что в тех случаях, когда статическая
> часть существенно превышает вычислимую, пишут "программу наоборот" --
> шаблон файла с "вкраплениями" вычислительного кода. Тут, естественно,
> возникает проблема с выбором escape-символов, которые будут отделять код
> от статической части. Но с ними никогда не угадаешь: какой символ лучше?
> К тому же придётся выбирать один язык программирования. Для подстановки
> значений в шаблон хорошо подходит Shell-scripting, но только до тех пор
> пока не нужно что-то _действительно вычислить_. Конструкции получаются
> _громоздкие_.
>
>   Размышляя обо всём этом я пришёл к выводу, что задача генерации файлов
> может быть решена проще и элегантнее, если использовать несколько языков
> программирования: одну часть файла генерировать на одном языке, а другую
> часть -- на другом. Но при смешении языков проблема выбора
> escape-символов становится практически неразрешимой. То, что для одного
> языка служит признаком комментария, для другого может быть ключевым
> словом! Поэтому разные фрагменты генератора следовало изолировать друг
> от друга более надёжным способом.
>
>   Более радикальным уровнем разделения данных, после синтаксиса языка,
> является разделение их на отдельные файлы: тут уж ничего так просто не
> перепутается! К тому же очень просто становится отделить статическую
> часть от динамической: для этого ведь существует признак исполняемого
> файла! И поддержка меток языка интерпретатора тоже уже встроена. В общем
> красота. Осталось только написать утилиту под управлением которой
> кусочки файлов объединялись бы в один, и всё. Программа verborum-caterva
> как раз и является такой утилитой.
>   
Мне кажется это аналог xml только в виде файловой системы.

А еще не понятно, что произойдет если я на прямую изменю значение в
конфиге сквида?
Я так понимаю что оно затрется на то что указано в этой базе?

-- 
WBR,
Dubrovskiy Vyacheslav

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

_______________________________________________
devel-conf mailing list
devel-conf@lists.altlinux.org
https://lists.altlinux.org/mailman/listinfo/devel-conf

Ответить