eao197 on the Web
Сайт Евгения Охотникова
[ Главная | Проекты | Описания | Об авторе ]

Curl Like Syntax

Новости

2007.03.14
Публикация CLS в виде отдельного раздела сайта

Что такое CLS

CLS (Curl Like Syntax) - это попытка использования синтаксиса языка программирования Curl в качестве формата для конфигурационных файлов, логов и протокольных файлов.

Кроме синтаксиса, CLS предоставляет программисту определенный подход к разбору и формированию CLS-файлов. Парсинг CLS-файлов с помощью библиотек CLS чем-то напоминает SAX-парсеры XML (базируется на событийно-ориентированной модели), но в то же время существуют серьезные отличия в CLS-подходе по сравнению со средствами разбора XML, YAML или JSON форматов.

Существующие реализации CLS

Для языка C++

Первая реализация CLS была сделана для языка C++. На данный момент последней актуальной версией CLS для C++ является проект cls_2.

Для языка Ruby

Реализация 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. Вполне возможно, что со временем такое же портирование будет выполнено и на некоторые другие языки.

Пример конфигурационного файла в формате CLS

Вот пример конфигурационного файла средней сложности для одного из реальных проектов:

{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
e-mail

Hosted by uCoz