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
smime.p7s
Description: S/MIME Cryptographic Signature
_______________________________________________ devel-conf mailing list devel-conf@lists.altlinux.org https://lists.altlinux.org/mailman/listinfo/devel-conf