eao197 on the Web Сайт Евгения Охотникова |
[ Главная | Проекты | Описания | Об авторе ] |
Curl Like Syntax
CLS (Curl Like Syntax) - это попытка использования синтаксиса языка программирования Curl в качестве формата для конфигурационных файлов, логов и протокольных файлов.
Кроме синтаксиса, CLS предоставляет программисту определенный подход к разбору и формированию CLS-файлов. Парсинг CLS-файлов с помощью библиотек CLS чем-то напоминает SAX-парсеры XML (базируется на событийно-ориентированной модели), но в то же время существуют серьезные отличия в CLS-подходе по сравнению со средствами разбора XML, YAML или JSON форматов.
Первая реализация CLS была сделана для языка C++. На данный момент последней актуальной версией CLS для C++ является проект cls_2.
Реализация CLS для языка Ruby выполнена в рамках проекта ClsRuby.
С языком Curl я познакомился в 2001-м году, когда мне приходилось заниматься Web-разработкой с использованием JSP. Язык Curl поразил меня тем, насколько удобно его использовать не только для описания разметки Web-форм и реализации логики приложения, но и для описания конфигурации приложения. Фактически, вся разработка могла вестись только на языке Curl, без применения конфигурационных файлов в XML формате.
В том же 2001-м после смены места работы мне потребовалось работать с конфигурационным файлами в C++. Поскольку я никогда не был любителем XML, то решил вместо XML применить синтаксис Curl. Так появилась первая реализация CLS для C++: cls_1. Поскольку основной задачей CLS являлся разбор конфигурационных файлов, то CLS занимается не только проверкой синтаксиса CLS-файлов, но и предоставляет пользователю достаточно удобные средства проверки семантики конфигурационной информации. В частности, поддержку нескольких форматов записи чисел (десятичный, двоичный, восьмеричный, шестнадцатиричный), проверку допустимости числовых значений (попадание в указанный диапазон) и т.д.
С тех пор CLS является базовым средством для работы с конфигурационными файлами практически во всех моих проектах. Кроме конфигурационных файлов CLS использовался и используется для логов (журнальных файлов) и файлов протоколов.
Со временем, по мере перехода на язык Ruby возникла необходимость обработки конфигурационных файлов, логов и протоколов, созданных с помощью cls_2, в Ruby-программах. Для этого было выполнено портирование CLS на Ruby. Вполне возможно, что со временем такое же портирование будет выполнено и на некоторые другие языки.
Вот пример конфигурационного файла средней сложности для одного из реальных проектов:
{aag_3.workaround.send.bufferizator {listening_mbox "aag_3::smpp_smsc::bserver.trx" } {interception_priority 2 } {low_watermark 100 } {high_watermark 500 } {cprov_high_watermark 200 } {send_result_timeout 5 } {max_life_time 100 } {check_life_time_period 120 } {throttling_error_codes 0x58 0x45 } {throttling_error_timeout 30 } {msg_queue_full_error_codes 0x14 0x15 } {msg_queue_full_error_timeout 5 } {throughput {sms_count 50} } {queue_full_custom_error_code {common 0x1014} {for {cprov "aag_3::testing"} {code 0x2014}} {for {cprov "aag_3::testing-2"} {code 0x3014}} } {life_time_elapsed_custom_error_code {common 0x1045} {for {cprov "aag_3::testing"} {code 0x2045}} } }
© 2003-2007 Е.А. Охотников
LastChangedDate: 2007-03-13 11:29:56