Re[20]: Хранение настроек приложения
От: raskin Россия  
Дата: 09.09.05 19:17
Оценка: +1
Дарней wrote:
> Здравствуйте, eao197, Вы писали:
>
> E>Сразу история вспоминается, с которой мне довелось столкнуться. Мои
>[quote skipped]
> оказывается. А текстовый редактор -- он практически везде есть.
>
> Ну это опять же вопрос доступности инструментов. А если стандартизовать
> единый формат для бинарных конфигов и в каждом дистрибутиве будет
> удобный редактор/навигатор по нему?

Текстовых форматов от и до, но для любого можно за малое время
подстроить ViM. Единый бинарный формат — хоть один пример формата (не
обязательно бинарного), который не распался, не разросся в два-десять
раз и не сильно менялся, можно? Shell script — не уверен..

> E>Но вот как быть с поиском по реестру, например?

>
> Не совсем понял, что ты имеешь в виду.
Сохранить egrep "<awful expression>" < "<file name>" в скрипте не
вопрос. А вот сохранить выражение для поиска по реестру — нужны утилиты
(хорошие, нестандартные) для работы с реестром.
Posted via RSDN NNTP Server 2.0 beta
Re[25]: Хранение настроек приложения
От: raskin Россия  
Дата: 09.09.05 19:19
Оценка:
eao197 wrote:
> Д>Только не говори, что регулярные выражения проще, чем SQL.
>
> Не проще, однозначно. Хотя и SQL с его join-ами подводные камни имеет.
> Ну и кроме того, regex мощнее, чем LIKE в SQL.
> Но grep уж точно на таком огромном количестве платформ есть, что и не
> сосчитаешь с ходу.

В MySQL я лично писал 'a REGEX "<horror>"' .
Posted via RSDN NNTP Server 2.0 beta
Re[21]: Хранение настроек приложения
От: Дарней Россия  
Дата: 12.09.05 03:52
Оценка:
Здравствуйте, raskin, Вы писали:

R>Текстовых форматов от и до, но для любого можно за малое время

R>подстроить ViM. Единый бинарный формат — хоть один пример формата (не
R>обязательно бинарного), который не распался, не разросся в два-десять
R>раз и не сильно менялся, можно? Shell script — не уверен..

R>Сохранить egrep "<awful expression>" < "<file name>" в скрипте не

R>вопрос. А вот сохранить выражение для поиска по реестру — нужны утилиты
R>(хорошие, нестандартные) для работы с реестром.

Я тебе про Фому, а ты мне про Ерему.
Если сейчас нет подходящих инструментов — это не значит, что их вообще не может быть.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[31]: Хранение настроек приложения
От: Дарней Россия  
Дата: 12.09.05 03:52
Оценка:
Здравствуйте, eao197, Вы писали:

E>
E>grep -r -E "((([[[:digit:]]{1,3}\.){3}[[[:digit:]]{1,3}|[[[:xdigit:]]{8})){0,1}:[[[:digit:]]+" .
E>


А с чего ты взял, что цифр должно быть ровно 8?
И еще остается вариант ping 2130706433
И кто вообще сказал, что в конфиге хранятся только айпишники, но не DNS имена?

E>А я так и не понял, как аналогичный поиск сделать в SQL БД. Чтобы сразу по всем таблицам с конфигурациями.


Указать селект по множеству таблиц в SQL нельзя, насколько мне известно
Чтобы таких проблем не было, можно например установить соглашение, что адреса хостов хранятся всегда в таблице с определенным именем.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[32]: Хранение настроек приложения
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 12.09.05 04:43
Оценка:
Здравствуйте, Дарней, Вы писали:

E>>
E>>grep -r -E "((([[[:digit:]]{1,3}\.){3}[[[:digit:]]{1,3}|[[[:xdigit:]]{8})){0,1}:[[[:digit:]]+" .
E>>


Д>А с чего ты взял, что цифр должно быть ровно 8?

Д>И еще остается вариант ping 2130706433
Д>И кто вообще сказал, что в конфиге хранятся только айпишники, но не DNS имена?

Я сказал.

E>>А я так и не понял, как аналогичный поиск сделать в SQL БД. Чтобы сразу по всем таблицам с конфигурациями.


Д>Указать селект по множеству таблиц в SQL нельзя, насколько мне известно

Д>Чтобы таких проблем не было, можно например установить соглашение, что адреса хостов хранятся всегда в таблице с определенным именем.

Точно также можно договорится, что IP сохраняются в виде ddd.ddd.ddd.ddd:pppp. Имхо, это гораздо проще.
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[33]: Хранение настроек приложения
От: Дарней Россия  
Дата: 12.09.05 05:14
Оценка:
Здравствуйте, eao197, Вы писали:

E>Я сказал.


А программисты всех прог, по конфигам которых ты делаешь поиск, тоже так сказали?

E>Точно также можно договорится, что IP сохраняются в виде ddd.ddd.ddd.ddd:pppp. Имхо, это гораздо проще.


И никаких символических имен?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[34]: Хранение настроек приложения
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 12.09.05 10:17
Оценка:
Здравствуйте, Дарней, Вы писали:

E>>Я сказал.


Д>А программисты всех прог, по конфигам которых ты делаешь поиск, тоже так сказали?


Имхо, здесь правила должны диктовать не программисты, а пользователи этих прог. В моем случае это администраторы разрабатываемых мной систем. И я не думаю, что для них будет удобно хранить IP даже в шестнадцатиричном виде, не говоря уже о десятичном. Запись вида ddd.ddd.ddd.ddd:pppp для IP адресов у нас, можно сказать, требование спецификации. Здравый смысл-то, имхо, терять не следует.

E>>Точно также можно договорится, что IP сохраняются в виде ddd.ddd.ddd.ddd:pppp. Имхо, это гораздо проще.


Д>И никаких символических имен?


Опять таки особенность предметной области. Как правило, приходится работать с IP адресами, для которых нет символьных имен.

Ну и я так и не понял, конфиги мы начинаем напрягать по поводу того, что если IP в виде hex, а что если в виде dec, а что если в виде символического имени. Дарней, ты серьезно думаешь, что сложно написать regex, который будет обрабатывать эти ситуации?
А вот что, если все эти вопросы переадресовать к хранению конфигурации в SQL БД?
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[35]: Хранение настроек приложения
От: Дарней Россия  
Дата: 12.09.05 11:01
Оценка:
Здравствуйте, eao197, Вы писали:

E>Запись вида ddd.ddd.ddd.ddd:pppp для IP адресов у нас, можно сказать, требование спецификации.


Я просто говорил о том, что спецификации у разных людей могут различаться. Мы ведь говорили не о поиске в одном конкретном конфиге для одной конкретной программы, не так ли?

E>Ну и я так и не понял, конфиги мы начинаем напрягать по поводу того, что если IP в виде hex, а что если в виде dec, а что если в виде символического имени. Дарней, ты серьезно думаешь, что сложно написать regex, который будет обрабатывать эти ситуации?


Написать — не проблема. А проблема в том, что такой универсальный regex выдаст тебе кучу левой информации в довесок к той, которая тебя интересует. Мне таки крайне интересно посмотреть на regex, который из всех символических имен выделит только те, которые являются именами хостов. Или ты снова вспомнишь про поиск по имени переменной? Ну так здесь тоже куча своих заморочек — имена могут быть не в виде пар имя=значение, а в виде набора элементов XML. Или одного элемента, но со списком значений, разделенных запятыми — список вариантов можно продолжить. Нет даже гарантии, что весь нужный список находится на одной строке.

E>А вот что, если все эти вопросы переадресовать к хранению конфигурации в SQL БД?


Какие вопросы? Сделать выборку по имени поля? Не вижу здесь проблем. Единственная потенциальная проблема — это разные имена в разных конфигах, но ее можно решить с помощью соглашений. Для текстовых конфигов соглашений нужно намного больше.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[36]: Хранение настроек приложения
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 12.09.05 11:23
Оценка:
Здравствуйте, Дарней, Вы писали:

E>>Запись вида ddd.ddd.ddd.ddd:pppp для IP адресов у нас, можно сказать, требование спецификации.


Д>Я просто говорил о том, что спецификации у разных людей могут различаться. Мы ведь говорили не о поиске в одном конкретном конфиге для одной конкретной программы, не так ли?


Не совсем так. В отличии от тебя я не верю в единый удобный для всех и существующий на всех платформах формат конфигов. Поэтому я говорю только о конфигах, с которыми сам работаю. И вот в этом случае grep очень удобный для меня инструмент. Как и для многих других админов/программистов.

Вот что мне кажется необходимым, так это то, чтобы все компоненты одного приложения хранили свои конфиги в одном и том же формате. Вот здесь зоопарка не хочется. И если это текстовый формат, то вопрос о том, XML ли это, ini или lisp-подобный формат -- это уже второй вопрос.

E>>Ну и я так и не понял, конфиги мы начинаем напрягать по поводу того, что если IP в виде hex, а что если в виде dec, а что если в виде символического имени. Дарней, ты серьезно думаешь, что сложно написать regex, который будет обрабатывать эти ситуации?


Д>Написать — не проблема. А проблема в том, что такой универсальный regex выдаст тебе кучу левой информации в довесок к той, которая тебя интересует. Мне таки крайне интересно посмотреть на regex, который из всех символических имен выделит только те, которые являются именами хостов. Или ты снова вспомнишь про поиск по имени переменной? Ну так здесь тоже куча своих заморочек — имена могут быть не в виде пар имя=значение, а в виде набора элементов XML. Или одного элемента, но со списком значений, разделенных запятыми — список вариантов можно продолжить. Нет даже гарантии, что весь нужный список находится на одной строке.


Дело в том, что я знаю с чем работаю. Если я знаю, что у меня в конфигах IP хранятся только в тегах {ip}, то я и пишу regex которому достаточно найти только {ip}. Если имя тега не уникально, но IP хранятся только в ddd.ddd.ddd.ddd:pppp, то я напишу regex для этой маски. Если же могут хранится символьные имена, то и их можно спокойно завернуть в regex.

Главный посыл в том, что я знаю, что я ищу, и я знаю, где я это ищу. Имхо, либой администратор/программист как раз в таких условиях и находится.

E>>А вот что, если все эти вопросы переадресовать к хранению конфигурации в SQL БД?


Д>Какие вопросы?


Хотя бы как хранить IP адреса в таблице БД? В каком именно формате? Если можно хранить и как ddd.ddd.ddd.ddd:pppp и some.host.name:pppp, то как делать поиск по ним?

Д>Сделать выборку по имени поля? Не вижу здесь проблем. Единственная потенциальная проблема — это разные имена в разных конфигах, но ее можно решить с помощью соглашений. Для текстовых конфигов соглашений нужно намного больше.


Ага, соглашения в БД выглядят нормально, а теже самые соглашения в текстовых конфигах -- уже must die!
И как делать поиск, если разные конфиги -- это разные таблицы в БД?
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[37]: Хранение настроек приложения
От: Дарней Россия  
Дата: 12.09.05 11:53
Оценка:
Здравствуйте, eao197, Вы писали:

E>Не совсем так. В отличии от тебя я не верю в единый удобный для всех и существующий на всех платформах формат конфигов.


Вопросы веры — это не по адресу

E>Главный посыл в том, что я знаю, что я ищу, и я знаю, где я это ищу.


И знаешь, как это надо искать.

E>Имхо, либой администратор/программист как раз в таких условиях и находится.


Не любой. Меня например уже достало, что при использовании каждой новой проги надо разбираться, как именно надо крутить педали у данной модели велосипеда.

E>Хотя бы как хранить IP адреса в таблице БД? В каком именно формате? Если можно хранить и как ddd.ddd.ddd.ddd:pppp и some.host.name:pppp, то как делать поиск по ним?


Для селекта абсолютно монопенисуально, какого типа поле, по которому ты делаешь выборку.

E>Ага, соглашения в БД выглядят нормально, а теже самые соглашения в текстовых конфигах -- уже must die!


Одно дело, когда соглашений одно или два. Другое — когда десять или двадцать.

E>И как делать поиск, если разные конфиги -- это разные таблицы в БД?


Зачем — разные таблицы? Отдельные файлы для каждого конфига.
grep же ищет данные в разных файлах, хотя сами регулярные выражения о файлах ничего не знают? Ну, аналогия понятна.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[32]: Хранение настроек приложения
От: GlebZ Россия  
Дата: 12.09.05 15:04
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>Указать селект по множеству таблиц в SQL нельзя, насколько мне известно

Д>Чтобы таких проблем не было, можно например установить соглашение, что адреса хостов хранятся всегда в таблице с определенным именем.
Можно. UNION никто не отменял. Но все равно правила нормализации вынуждают хранить такие настройки в одной таблице. Если, конечно, каждый сервер не использует свои БД.
А соглашение подобное сделать легко, просто указать что имя параметра оканчивается на _IP
что-то типа:

select value from parameter where key like '%_IP'



С уважением, Gleb.
Re[4]: Хранение настроек приложения
От: Cyberax Марс  
Дата: 13.09.05 11:14
Оценка: 9 (1) :))
eao197 wrote:

> C>d) Можно устраивать конкурсы obfuscated конфигов.

> C>e) Синтаксис, не поддающийся никакому автоматическому разбору.
> Вот ты прикалываешься, а если разработка идет на скриптовых языках, то
> конфигурирование приложения на самом скриптовом языке может быть
> вполне нормальным явлением.

Убью, уроды, руки поотрываю! Уфф... Выговорился.

Сегодня подкинули задачку — написать GUIевый конфигуратор (точнее
web-овский) для крутейшего приложения, в котором конфиги как раз
задаются скриптами (на Python'е). Я уже прикидываю сколько
десятков часов потребуется для написания нормального
манипулятора, сохраняющего комментарии и отступы.

Не говоря уж о том, что если кто-то в своей бесконечной мудрости
попробует вставить в конфиг какие-нибудь сторонние команды, то все нафиг
работать перестанет.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 2.0 beta
Sapienti sat!
Re[5]: Хранение настроек приложения
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 13.09.05 11:17
Оценка:
Здравствуйте, Cyberax, Вы писали:

>> C>d) Можно устраивать конкурсы obfuscated конфигов.

>> C>e) Синтаксис, не поддающийся никакому автоматическому разбору.
>> Вот ты прикалываешься, а если разработка идет на скриптовых языках, то
>> конфигурирование приложения на самом скриптовом языке может быть
>> вполне нормальным явлением.

C>Убью, уроды, руки поотрываю! Уфф... Выговорился.


C>Сегодня подкинули задачку — написать GUIевый конфигуратор (точнее

C>web-овский) для крутейшего приложения, в котором конфиги как раз
C>задаются скриптами (на Python'е). Я уже прикидываю сколько
C>десятков часов потребуется для написания нормального
C>манипулятора, сохраняющего комментарии и отступы.

А что, просто высветить multiline-edit-box с текстом конфига нельзя?

C>Не говоря уж о том, что если кто-то в своей бесконечной мудрости

C>попробует вставить в конфиг какие-нибудь сторонние команды, то все нафиг
C>работать перестанет.

А вот под этим что понимается (под сторонними командами)?
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[36]: Хранение настроек приложения
От: Cyberax Марс  
Дата: 13.09.05 11:17
Оценка:
Дарней wrote:

> Написать — не проблема. А проблема в том, что такой универсальный

> regex выдаст тебе кучу левой информации в довесок к той, которая тебя
> интересует. Мне таки крайне интересно посмотреть на regex, который из
> всех символических имен выделит только те, которые являются именами
> хостов.

Все еще усложнится, если в конфигах будут ip-адреса в комментариях.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 2.0 beta
Sapienti sat!
Re[13]: Хранение настроек приложения
От: Cyberax Марс  
Дата: 13.09.05 11:20
Оценка:
punk4 wrote:

> C>Так именно текстовые конфиги и мешают развитию нормальных средств.

> C>Например, webmin у меня несколько раз портил конфиги (путал
> комментарии,
> C>неправильно форматировал) — с реестром таких проблем бы не было.
> Ну вот и подошли, раз писать так писать! Напишите что-то что будет лучше
> WEBMIN`а а потом и говорите что он плох.

Computer Management в Винде. Можно менеджерить удаленные компы. Где-то
есть и веб-менеджер.

Ну и в конце-концов можно удаленно подцепиться по WMI к целевому компу
через FAR

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 2.0 beta
Sapienti sat!
Re[6]: Хранение настроек приложения
От: Cyberax Марс  
Дата: 13.09.05 12:24
Оценка:
eao197 wrote:

> C>Сегодня подкинули задачку — написать GUIевый конфигуратор (точнее

> C>web-овский) для крутейшего приложения, в котором конфиги как раз
> C>задаются скриптами (на Python'е). Я уже прикидываю сколько
> C>*десятков* часов потребуется для написания нормального
> C>манипулятора, сохраняющего комментарии и отступы.
> А что, просто высветить multiline-edit-box с текстом конфига нельзя?

Нет, так как это должен редактировать достаточно тупой пользователь.

> C>Не говоря уж о том, что если кто-то в своей бесконечной мудрости

> C>попробует вставить в конфиг какие-нибудь сторонние команды, то все
> нафиг
> C>работать перестанет.
> А вот под этим что понимается (под сторонними командами)?

А кто-нибудь придумает что-нибудь примерно такое:
for f in ['a','b','c']:
    someprop[f]=f;

Вместо:
someprop['a']='a';
someprop['b']='b';
someprop['c']='c';


--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 2.0 beta
Sapienti sat!
Re[19]: Хранение настроек приложения
От: Cyberax Марс  
Дата: 13.09.05 12:39
Оценка:
punk4 wrote:

>>> C>А если из-за аппаратных проблем упадет сложная файловая система типа

>>> C>Reiser4?
>>> Если она как-то починится, можно руками поправить файлы.
> C>А если не починится?
> А если руги и голова ростут от туда от куда надо тогда у тебя как у
> нормального
> админа ( согласись реанимировать оси дело не програмера а именно
> админа) будет
> стоять РАИД, будут бэкапы, и много чего еще интересного.

Ну так и реестр прекрасно ложится на заRAIDеный винт.

>>> У меня такое было — упала ext2 (маленький был, глупый). После ремонта

>>> больше всего почему-то пострадал конфиг XFree86. Ничего, починил.
> C>Ну так с реестром так же.
> А на сколько мне извество излюбленный способ починить Вынь —
> переустановить её

Насколько мне известно, лучший способ починить Линукс — восстановить его
из бэкапа.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 2.0 beta
Sapienti sat!
Re[7]: Хранение настроек приложения
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 13.09.05 12:41
Оценка:
Здравствуйте, Cyberax, Вы писали:

>> C>Сегодня подкинули задачку — написать GUIевый конфигуратор (точнее

>> C>web-овский) для крутейшего приложения, в котором конфиги как раз
>> C>задаются скриптами (на Python'е). Я уже прикидываю сколько
>> C>*десятков* часов потребуется для написания нормального
>> C>манипулятора, сохраняющего комментарии и отступы.
>> А что, просто высветить multiline-edit-box с текстом конфига нельзя?

C>Нет, так как это должен редактировать достаточно тупой пользователь.


Ну тогда вешалка.

Ты привел хороший аргумент в пользу чисто декларативных конфигов -- для скриптовых конфигов такой визуальный редактор написать... Это чуть ли не IDE делать нужно.

Все же скриптовые конфиги требуют гораздо более высокого уровня знаний у администратора.
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[7]: Хранение настроек приложения
От: А почему вы спрашиваете Беларусь  
Дата: 13.09.05 13:16
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>А кто-нибудь придумает что-нибудь примерно такое:

C>
C>for f in ['a','b','c']:
C>    someprop[f]=f;
C>

C>Вместо:
C>
C>someprop['a']='a';
C>someprop['b']='b';
C>someprop['c']='c';
C>


Логично редактировать конфигурялкой только те куски конфига, которые этой конфигурялкой и были созданы.

Например выделить секцию конфига, куда записывать строчки в удобном для конфигурялки синтаксисе, отбить эту секцию предупреждениями, что, мол "don't modify, а если руки чешутся, пиши рядом".

Можно сделать не секцию, а генерить отдельный модуль, который основной конфиг будет import'ить. В общем, главное — это разделить куски модифицируемые человеком и куски модифицируемые конфигурялкой.
Re[28]: Хранение настроек приложения
От: punk4  
Дата: 13.09.05 14:17
Оценка: -1
Здравствуйте, Дарней, Вы писали:

Д>А вот если бы в одном конфиге тэг назывался host_address, а не ip? А сам адрес записывался бы в шестнадцатеричной форме? Как бы тебе тогда пришлось его получать?


А если бы вчера к вам приходил добрый сисадмин и имена ваших табличе переставил с ног на голову, как бы вы селекты делали??
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.