Как информация терминала (например, размер окна) отправляется в программу Linux?

На самом деле не существует «стандартной» библиотеки синтаксического анализатора конфигурации. Если вы просмотрите /etc, вы найдете некоторую комбинацию:

  • XML-конфигурация
  • Конфигурация стиля Windows INI
  • Базовая конфигурация KEY=VALUE
  • JSON (чаще всего используется в веб-приложениях ).
  • YAML (в основном встречается с более новыми вещами, особенно если они написаны на Python ).
  • Вещи, которые выглядят как JSON, YAML или XML, но не являются (см. пример конфигурации для Nginx (выглядят как JSON, но не являются ), Apache (выглядят как XML, но не является ), а Unbound (выглядит как YAML, но не является ).
  • Различные языки оболочки.
  • Различные вещи, которые выглядят как языки оболочки, но технически ими не являются.
  • Исходные фрагменты на различных языках сценариев.
  • Возможно, что-то еще, о чем я не подумал.

Что использовать с вашим приложением:

  • Пожалуйста, ради всего святого, избегайте XML. Это излишне многословно, очень сложно анализировать (и, следовательно, занимает много времени и много памяти )и вызывает ряд проблем с безопасностью. Кроме того, непросто -добиться надлежащего баланса между элементами и атрибутами, и в какой-то момент позже вы, как правило, будете сожалеть о сделанном выборе. Единственным реальным преимуществом здесь является то, что вы практически гарантированно будете иметь работающий анализатор XML в любой системе, с которой вы столкнетесь.
  • Файлы INI в стиле Windows, как правило, безопасны, хотя они ограничивают сложность структур конфигурации. Для этого существует множество библиотек, и в вашей системе, вероятно, уже есть хотя бы одна. Они не так распространены в Linux (, классические файлы конфигурации традиционно представляют собой пары KEY=VALUE без заголовков разделов ), но они по-прежнему широко используются и их легко понять.
  • Базовые пары KEY=VALUE (по одной на строку в идеале )настолько просты для синтаксического анализа, что вам даже не нужна для этого библиотека, но они очень ограничены в своих возможностях.
  • JSON безопасен и прост в анализе, широко поддерживается (почти каждый основной язык в наши дни имеет по крайней мере один парсер )и поддерживает произвольное вложение структур конфигурации. Однако он не поддерживает комментарии (, которые могут быть реализованы некоторыми анализаторами, но результаты не будут интероперабельны ), что не очень хорошо для файлов, предназначенных для редактирования в текстовом редакторе.
  • YAML — мой личный фаворит, он достаточно безопасен и прост в анализе, выглядит очень естественно для большинства людей, поддерживает комментарии и имеет очень минимальные накладные расходы. Единственная важная вещь здесь заключается в том, что отступ действительно имеет значение, так как он составляет около 80% синтаксиса, что в сочетании с тем фактом, что YAML требует пробелов для отступа (отсутствие табуляции ), может сделать с ним немного хлопотно работать, если у вас нет хорошего редактора.
  • Если вы используете язык сценариев, вы можете рассмотреть возможность использования фрагментов исходного кода для конфигурации, но будьте очень осторожны при этом. Если вы не очень внимательны к тому, как вы их анализируете, вы в значительной степени позволяете пользователям делать произвольные вещи с вашей внутренней логикой, если они этого хотят, что является кошмаром для службы поддержки (вы в конечном итоге получите люди жалуются, что вы нарушили их конфигурацию, в которой оказались вещи, затрагивающие внутренние компоненты основной программы, которые вы изменили ).
1
16.04.2020, 04:39
0 ответов

Теги

Похожие вопросы