2009/4/10 Slava Dubrovskiy <>: > On 10.04.2009 13:03, Pavel Wolneykien wrote: >> Stanislav Ievlev <[email protected]> wrote: >> >> >>> А что такое caterva? >>> >> Всё вместе переводится как "Словоизвержение". :) >> >> Мне надо генерировать конфигурационный файл для Squid на основе >> значений, которые пользователь ввёл через модуль Альтератора. Причём >> сам модуль никак не сохраняет эти значения, а передаёт их метабакенду, >> который складывает их в сторонке. Такая система возникла в виду >> сложности корректного обновления конфигурационного файла: его проще >> перезаписать целиком, а значит нужно где-то хранить исходные данные. >> >> Исходных данных было немного, а конфигурационный файл по умолчанию из >> пакета Squid довольно длинный: он содержит много полезных комментариев, >> которые хочется сохранить на случай, если администратор решит поправить >> что-то в ручную (ну не отсылать же его в этом случае к документации по >> Squid, в самом деле?). Самый простой способ решения этой задачи >> заключается в помещении статической части конфигурационного файла >> непосредственно в генерирующий код. А по умолчанию у нас генератором >> является сам бакенд. Идея раздуть бакенд на добрых 4500 строк меня, >> честно скажу, не обрадовала (хотя вначале повеселила немного). >> >> Мысль вынести генератор в отдельную программу постепенно привела к >> мысли о создании шаблона: известно, что в тех случаях, когда статическая >> часть существенно превышает вычислимую, пишут "программу наоборот" -- >> шаблон файла с "вкраплениями" вычислительного кода. Тут, естественно, >> возникает проблема с выбором escape-символов, которые будут отделять код >> от статической части. Но с ними никогда не угадаешь: какой символ лучше? >> К тому же придётся выбирать один язык программирования. Для подстановки >> значений в шаблон хорошо подходит Shell-scripting, но только до тех пор >> пока не нужно что-то _действительно вычислить_. Конструкции получаются >> _громоздкие_. >> >> Размышляя обо всём этом я пришёл к выводу, что задача генерации файлов >> может быть решена проще и элегантнее, если использовать несколько языков >> программирования: одну часть файла генерировать на одном языке, а другую >> часть -- на другом. Но при смешении языков проблема выбора >> escape-символов становится практически неразрешимой. То, что для одного >> языка служит признаком комментария, для другого может быть ключевым >> словом! Поэтому разные фрагменты генератора следовало изолировать друг >> от друга более надёжным способом. >> >> Более радикальным уровнем разделения данных, после синтаксиса языка, >> является разделение их на отдельные файлы: тут уж ничего так просто не >> перепутается! К тому же очень просто становится отделить статическую >> часть от динамической: для этого ведь существует признак исполняемого >> файла! И поддержка меток языка интерпретатора тоже уже встроена. В общем >> красота. Осталось только написать утилиту под управлением которой >> кусочки файлов объединялись бы в один, и всё. Программа verborum-caterva >> как раз и является такой утилитой. >> > Мне кажется это аналог xml только в виде файловой системы. > > А еще не понятно, что произойдет если я на прямую изменю значение в > конфиге сквида? > Я так понимаю что оно затрется на то что указано в этой базе?
это получился YaST? ;) _______________________________________________ devel-conf mailing list [email protected] https://lists.altlinux.org/mailman/listinfo/devel-conf
