Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Advanced {product_name} configuring

Advanced {product_name} configuring

Об организации конфигурирования программного продукта с помощью конфигурационных файлов и приведет примеры из практики. О том, как сделать код работы с конфигурацией вашим верным помощником.

Moscow Python Meetup

March 23, 2016
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. Intro Провайдер Пользователь Разработчик библиотеки API Разработчик Разработчик .conf Служба

    эксплуатации Служба эксплуатации GUI Конечный пользователь • Важно удобство взаимодействия сторон • И исключение ошибок
  2. • Суть проблемы • Общая схема решения • Ядро конфига

    — базовый класс • Применение базового класса — схема конфигурирования О чем доклад:
  3.  Конфигурация – интерфейс к ПО, должна обеспечивать удобство работы.

    Кроме того: • Чем больше программа, тем больше параметров. • Важна их проверка • Важна согласованность частей системы Суть проблемы
  4. * не обязательно классы в терминах ООП – важно разделение

    задач Общая схема решения Схема конфигурирования Базовый класс* Формат
  5. Носитель (формат) конфига: Поддерживает достаточно гибкие структуры (в том числе

    произвольную вложенность) Базовый класс. Полезные свойства
  6. Носитель (формат) конфига:  Нет самопалам – нужно что-то распространенное.

    • yaml? • json? • xml? Базовый класс. Полезные свойства
  7. Умеет валидировать. • Частично, что валидировать, а что нет —

    в руках разработчика. • Обязательные настройки • Типы данных * Как вариант — валидация по схеме * Опционально — запрет неизвестных параметров Базовый класс. Полезные свойства
  8. Опционально умеет: включения  разные варианты ссылок на включения •

    абсолютный путь • относительный путь, относительно текущего файла • относительный путь, относительно cwd  разные варианты слияния Базовый класс. Полезные свойства
  9. Опционально умеет прочие полезные вещи: • интерполяция • синтаксический сахар

    доступа к значениям: в виде атрибутов, в виде строки с разделителями • модификация и запись в файл Базовый класс. Полезные свойства
  10. Стандартный ConfigParser * в python 3: configparser • плюсы: есть

    интерполяция, значения по умолчанию и запись • минусы: носитель — ini-файл, без валидации Базовый класс. Другие пакеты
  11. Вслед за ConfigParser • ввиду его недостатков последовал ср^W дебаты

    • https://wiki.python.org/moin/ConfigParserShootout Базовый класс. Другие пакеты
  12. Configobj • плюсы: мощный, много фич • минусы: формат —

    синтаксически прокачанный ini Базовый класс. Другие пакеты