1

Тема: Як оформити конфіг файл?

Добри вечі. От пишу зараз клас, що буде працювати з базою даних, і подумав, що було б не дуже добре, якби для зміни адреси підключення та логіну з паролем потрібно було б робити зміні в самому коді і перекомпільовувати все заново.
Я-то можу і в xml, і в json, і в якийсь свій кривий формат записати, але хотілося б, аби сам файл гарно виглядав, от як конфіг-файли усіляких Apach'ів і т.д.

То які є стандарти отих конфіг-файлів, з котрих можна було б читати всілякі такі налаштування?

Подякували: leofun011

2

Re: Як оформити конфіг файл?

INI? Як "усіляких Apache'ів" і т.д.?

Подякували: leofun011

3

Re: Як оформити конфіг файл?

cfg, bin, в тому числі і власний стандарт

Подякували: leofun011

4

Re: Як оформити конфіг файл?

ну шось таке, я прост не хочу велосипеда писати, може вже є готове рішення для цього

5

Re: Як оформити конфіг файл?

Присобачте Lua і казіться з конхвігами скільки хочте

Подякували: leofun011

6

Re: Як оформити конфіг файл?

0xDADA11C7 написав:

Присобачте Lua і казіться з конхвігами скільки хочте

поясніть

7 Востаннє редагувалося leofun01 (12.06.2016 01:50:05)

Re: Як оформити конфіг файл?

FakiNyan написав:

Я-то можу і в xml, і в json, і в якийсь свій кривий формат записати, але хотілося б, аби сам файл гарно виглядав, от як конфіг-файли усіляких Apach'ів і т.д.

То які є стандарти отих конфіг-файлів, з котрих можна було б читати всілякі такі налаштування?

1) Якщо редагування файлу конфігурації має бути тільки програмним і це має робити тільки ваша програма, то краще робити бінарний файл (*.bin) і зберігати налаштування в своєму строгому форматі.
Переваги:
Максимально швидке зчитування і запис файлу, особливо для примітивних типів, бо відпадає потреба парсити стрічкові представлення;
Мінімальний розмір файлу.
Недоліки:
Користувач, який не знає вашого стандарту, не зможе вдало редагувати файл;
Користувач не зможе нормально відкрити файл текстовим редактором, який не підтримує бінарне відображення вмісту;
Програми від інших розробників не зможуть розпізнати збережені налаштування.

2) Якщо редагування файлу конфігурації користувачем є не бажаним (але допустимим) і програми від інших розробників мають якось взаємодіяти з файлом, або якщо налаштування сильно структуровані (наприклад дерева, трапляється досить часто), тоді XML.
Переваги:
Максимально зручне зчитування і запис файлу, особливо при збереженні складних структур даних, бо відпадає потреба створення алгоритму розпізнавання вкладених структур (дерев);
Легка модифікація функціоналу програми;
Просунутий користувач може редагувати налаштування текстовим редактором;
Інші програми теж можуть розпізнавати налаштування.
Недоліки:
Парсинг XML файлу не такий легкий в плані швидкості, особливо якщо там багато стрічково-представлених чисел (та ще й в десятковій системі числення).
Користувач, який не знайомий з XML, може пошкодити файл (і тут програма має вміти відновити налаштування);
Програми від інших розробників теж можуть пошкодити збережені налаштування.

3) Якщо редагування файлу конфігурації користувачем є цілком нормальним і структура налаштувань досить проста, тоді ini file.
Переваги:
Максимально просте текстове зчитування і запис файлу, особливо при збереженні символів і стрічкових даних;
Легка модифікація функціоналу програми за умови, що складність структури налаштувань не збільшилась;
Будь-який користувач може редагувати налаштування текстовим редактором;
Інші програми теж можуть розпізнавати налаштування.
Недоліки:
Парсинг ini файлу теж не легкий в плані швидкості, коли там багато стрічково-представлених чисел в десятковій системі числення.
Програми від інших розробників і тупі користувачі можуть пошкодити збережені налаштування (і програма має вміти їх відновити).

І недолік, який відноситься до всіх типів:
Користувач може видалити файл налаштувань, тому якщо програма не знайде файлу, то вона повинна його створити.
Ну і бажано, щоб у випадку пошкодження даних програма відновлювала дані на основі тих, які залишилися, а не тільки з нуля.

Тут перелічені не всі переваги і недоліки описаних способів, тому думайте самі, рішайте самі.

Також можете переглянути, як інші люди мучаться з конфігами на різних мовах.
Про Lua знайшов щось таке, але я з таким не працював.

Подякували: FakiNyan, 0xDADA11C72

8

Re: Як оформити конфіг файл?

та я вирішив зберігати то в json, ну а чо?

Подякували: leofun011

9

Re: Як оформити конфіг файл?

Тоже нормально, його можна використовувати майже при тих самих умовах що і XML.

Подякували: FakiNyan1

10

Re: Як оформити конфіг файл?

Є готове, стандартне рішення у стандартній бібліотеці - java.util.Properties.
Для простих конфігів без спадкування і складних структур - ідеальний варіянт.

Тут з прикладом: http://crunchify.com/java-properties-fi … s-in-java/

Подякували: FakiNyan, leofun012