Очень интересная разработка. А что такое caterva?
9 апреля 2009 г. 16:07 пользователь Pavel Wolneykien <mano...@altlinux.org>написал: > > Mykola S. Grechukh <nick.grech...@gmail.com> wrote: > > > 2009/4/9 Michael Shigorin <>: > > > On Wed, Apr 08, 2009 at 11:58:42PM +0400, QA Team Robot wrote: > > >> metalterator - Alterator meta-backend with additional Guile modules > > >> * Wed Apr 08 2009 Paul Wolneykien <mano...@altlinux> 1.0-alt1 > > >> - Initial release. > > > > > > Расскажете подробнее? На http://www.altlinux.org/Alterator > > > и в окрестностях ничего не нашёл, а интересно. > > Это радует, что интересно. ;) > > > > > description at http://tinyurl.com/d3x4ar ? > > Да, окромя аннотации к пакету ничего пока нету. :) > Но если дело пойдёт, то и документация обязательно появится. > > Значит дело было так. Собрался я писать модуль для Squid (во второй > раз, но это отдельная история). После разговора с wart@ и ldv@ мне стало > совершенно понятно, что для работы с относительно сложным > конфигурационным файлом нужна БД: ни читать, ни писать отдельные > значения в файл нельзя -- всё перепутается. Зато сгенерировать такой > файл целиком задача на порядок проще. > > Тогда я стал думать: какую БД мне выбрать? Ясно что самую простую, > поскольку данных, которыми может управлять пользователь в пределах > одного модуля, скорее всего, немного. Поэтому критерием поиска БД стало > удобство отображения в неё объектов Альтератора. И вот тут я понял, что > неплохим хранилищем для этих объектов будет обычная файловая система! На > что inger@ сказал: "ФС -- это одна из самых клёвых встроенных БД!". > > Ясно, что для отображения объектов в ФС нужен был отдельный набор > функций. Начав выдумывать сигнатуры функций я заметил, что базовый набор > повторяет woo-команды woo-read, woo-write, woo-new и woo-delete. Тогда я > решил, что было бы интересно напрямую подключить БД к шине > Woo-bus. Таким образом, вместо библиотеки я решил написать отдельный > бакенд, который бы отображал woo-команды на файловую систему. > > Конечно же работа модуля конфигуратора зачастую не исчерпывается > чтением и записью состояний объектов, но кто сказал, что бакенды не > могут выстраиваться в цепочки? Внутри Альтератора есть прямой доступ к > шине, а внешние бакенды могут использовать команду alterator-cmdline. > Так что идея мне показалась не такой уж плохой и я взялся за её > реализацию. Образ бакенда, использующего другой бакенд для > операций более низкого уровня, дал термин "метабакенд" или > "бакенд-для-бакенда". Название пакета "metalterator" было выбрано вместо > alterator-meta как обладающее более интересным, неоднозначным прочтением. > > На сегодняшний день (ему уже 2 дня) metalterator умеет отображать на > ФС как стандартные woo-команды "read", "write", "list", "new" и > "delete", так и парочку специальных: "link" и "read-next". Первая > создаёт ссылку на объект, путь до которого указано в параметре > "name". Ссылки на несуществующие объекты удаляются при попытке их > прочитать, поэтому есть кое-какая ссылочная целостность. Вторая команда > позволяет прочесть указанные атрибуты объекта с одновременным их > увеличением на 1, что удобно для генерации идентификаторов. > > Из интересных свойств можно отметить отображение имён параметров при > чтении, и режим отладки. > > Отображение имён включается если в команде на чтение данных ("read" > или "list") был указан один или несколько параметров. Сначала я думал > использовать их только для выбора атрибутов объекта, сообщаемых в > ответе. Но, поскольку в woo-команде нельзя перечислить имена параметров > не сообщив их значений, то я решил что незачем этим значениям зря > пропадать: теперь значения параметров запроса на чтение являются именами > параметров ответа. Если была дана команда прочесть атрибут, который не > задан в объекте, то будет явно возвращено значение #f. Для чтения всех > атрибутов достаточно опустить список параметров в запросе "read". Запрос > "list", наоборот, по умолчанию вернёт только имена объектов, а для > выполнения дополнительных операций по чтению атрибутов об этом нужно > явно сообщить, перечислив интересующие имена. Отображение имён, в этом > случае, позволяет сразу же адаптировать ответы метабакенда для их > передачи во фронтенд: например, "list" 'comment "label" позволит сразу > же получить набор объектов (("obj1" label "val1") ("obj2" label > "val2")...) из набора объектов (("obj1" comment "val1") ("obj2" comment > "val2")...). > > Режим отладки включается записью положительного значения в атрибут > корневого объекта метабакенда: > > alterator-cmdline /meta "write" debug-level 5 > > установит максимальный уровень детализации отладочных сообщений. > > Да, совсем забыл: полное имя объекта, т.е. всё, что идёт после /meta > интерпретируется как путь месту в ФС! К примеру, > > alterator-cmdline /meta/etc/metalterator/squid/squid "write" http_port > "3128" > > обновит значение http_port в файле /etc/metalterator/squid/squid.scm. > > В настоящее время единственным пользователем метабакенда является > бакенд squid из пакета alterator-squid-1.0-alt1. Кстати сказать: > конфигурацию по умолчанию этот пакет несёт с собой в виде набора файлов, > которые он кладёт как есть прямо в /etc/metalterator/squid. По моему это > тоже очень удобно! > > Для адаптации ответов метабакенда (отрезания имени пославшего ответ > объекта) существует макрос meta, определённый в модуле (alterator > metalterator). > > Павел. > _______________________________________________ > devel-conf mailing list > devel-conf@lists.altlinux.org > https://lists.altlinux.org/mailman/listinfo/devel-conf
_______________________________________________ devel-conf mailing list devel-conf@lists.altlinux.org https://lists.altlinux.org/mailman/listinfo/devel-conf