Войти
ФлеймФорумПрограммирование

XML - язык, невероятно богатый возможностями. Чтоб его. (5 стр)

Страницы: 1 2 3 4 5 6 Следующая »
#60
8:56, 6 авг. 2019

skalogryz
> Рецепт семейного счастья прост - не думайте что XML это человекориентированный
> формат. И всё!
> Он машиннооринетированный, и жить сразу станет легче.

Ну, тот же гугл побаловался, да  начал изобретать Protocol Buffers, Flatbuffers... бо, вся эта мешанина из тегов с атрибутами не нужна машине, а полезную емкость каналов/хранилищь отъедает только в путь. 


#61
(Правка: 10:21) 10:20, 6 авг. 2019

=A=L=X=
> Вы прям серьёзно на полном серьёзе при смене формата базы данных
> НЕ ПЕРЕПИСЫВАЕТЕ КОД КОТОРЫЙ С ЭТИМ РАБОТАЕТ????
  Ты в каком веке живёшь? ORM давно всё это сами делают.

Sbtrn. Devil
> Формат же выполняет сугубо промежуточные функции - на хрена к нему ещё и какой-то язык запросов?
  Когда такого языка нет, то формат либо подыхает (как вариант приживается только в одном месте как JSON, который годен только для однострочечной сериализации объектов), либо под него появляются 14 независимых и несовместимых языка запросов, что тоже никому радости не добавляет.

#62
11:27, 6 авг. 2019

Мизраэль
Вот это точно пустые слова. То "задача классическая", то "ее нужно решать"...

Мизраэль
> напиши в каком формате ты будешь хранить эти настройки
Зависит от кода!

Если с точки зрения "космической лабуды о всеобщей неотвратимости"...

+ Показать
#63
(Правка: 12:33) 12:32, 6 авг. 2019

gudleifr
> Вот это точно пустые слова. То "задача классическая", то "ее нужно решать"...
Что тебя смущает?

gudleifr
> Зависит от кода!
Каким образом? Вообще побоку на каком там языке у тебя написано. Не, ну понятно, если там убогий JS, то выбора кроме как JSON и нет считай. Ты как-то странно от ответа уходишь, задачка же совсем не абстрактная. Есть класс, есть конфиг в текстовом (обязательно виде), в конфиге помимо данных твоего класса ещё куча данных. Твоя задача сделать инициализацию полей класса данными из конфига. Язык, платформа, день недели побоку. Какие инструменты и какой формат конфига будешь использовать?

gudleifr
> До начала нулевых любил хранить данные в БД (или БД-подобном виде). В начале
> нулевых почти полностью перешел с реляционных таблиц на списковые, и придумал
> свой формат (приведен для примера в  первой главе второго тома "Заметок"). С
> тех пор пользуюсь им в общих случаях.
Я своих форматов за пару десятков лет уже сотни придумал. Знаешь сколько из них использую по сей день? 0!

#64
12:49, 6 авг. 2019

Мизраэль
> Что тебя смущает?
Что классические задачи уже обычно имеют классические решения. Их не надо решать.

Мизраэль
> Какие инструменты и какой формат конфига будешь использовать?
Подходящие! (Нет, конечно,  сначала я выкину класс, т.к. ООП оставил в далеком детстве). Вы хотите получить что-то из большого текстового файла? Пишете тупой конечный автомат, который пропускает все до нужного места (в большинстве форматов и языков он тривиален). Пишите второй конечный автомат - для чтения нужного (он еще тривиальнее). Читаете.

Мизраэль
> Я своих форматов за пару десятков лет уже сотни придумал. Знаешь сколько из них использую по сей день? 0!
Это хорошо и правильно. Формат придуманный для одного проекта и не должен его пережить. Тем более, формат, придуманный впрок (этот вообще не имеет права на жизнь).

#65
13:46, 6 авг. 2019

gudleifr
> Что классические задачи уже обычно имеют классические решения. Их не надо
> решать.
Ага, и классическое решение тут XML :)

gudleifr
> Подходящие! (Нет, конечно,  сначала я выкину класс, т.к. ООП оставил в далеком
> детстве). Вы хотите получить что-то из большого текстового файла? Пишете тупой
> конечный автомат, который пропускает все до нужного места (в большинстве
> форматов и языков он тривиален). Пишите второй конечный автомат - для чтения
> нужного (он еще тривиальнее). Читаете.
Тут ещё одно маленькое дополнение, трудоёмкость у задачи 2ч. Можно конечно сходу сочинить свой формат (8ч техпроект + 4ч согласования), написать свой парсер (8ч разработка + 10ч отладка + 30ч тестирование), потом сделать для всего этого документацию (10ч т.к. документацию программисты пишут оооочень медленно). Но твой напарник сделал эту задачу за 2ч использовав классические идеально подходящее под требования задачи решение на XML. И то написал он его за 15 минут, остальное время читал хабру. Я бы не взял вас к себе работать, честно.

#66
13:47, 6 авг. 2019

gudleifr
> Это хорошо и правильно. Формат придуманный для одного проекта и не должен его
> пережить. Тем более, формат, придуманный впрок (этот вообще не имеет права на
> жизнь).
Поинт в том, что не надо придумывать свои форматы, если по другому вообще никак.

#67
13:53, 6 авг. 2019

Мизраэль
> Я бы не взял вас к себе работать, честно.
Тут, скорее обратная проблема.
И проблема даже не в том, что "парсер" - это две строчки кода. А в том, что в Вашей постановке задачи, при которой эти "2 часа" через полгода обойдутся месяцем на переписывание.

Мизраэль
> не надо придумывать свои форматы
Это точно. Там нечего придумывать. Что коду надо, то он и берет. 

#68
14:16, 6 авг. 2019

gudleifr
> классические задачи уже обычно имеют классические решения. Их не надо решать.
  Если бы это было так, то до сих пор бы все использовали сортировку пузырьком и не пытались изобрести что-то лучше.

> сначала я выкину класс, т.к. ООП оставил в далеком детстве
  Вместе с последними мозгами? :)

> Пишете тупой конечный автомат, который пропускает все до нужного места (в
> большинстве форматов и языков он тривиален). Пишите второй конечный автомат -
> для чтения нужного (он еще тривиальнее). Читаете.
  Ты уж определись давай либо классическое решение задачи, либо велосипед каждый раз. А то что-то переобуваешься на ходу.

#69
16:06, 6 авг. 2019

Zefick
> либо классическое решение задачи, либо велосипед каждый раз.
Делать велосипед каждый раз это как раз классика. Всё остальное модерн.

#70
(Правка: 22:19) 16:15, 6 авг. 2019

Мизраэль
> Твоя задача сделать инициализацию полей класса
> данными из конфига.
А позиция в контексте разрешает уволить всю фирму или хотя бы подать на развод с task`ой из-за загона в "пространство_решений\лабиринт" слишком свободный от "толковых\обобщенных" путей наружу? Просто есть ли смысл решать один указаный начальством экземпляр шаблонной задачи, когда в нормальных конторах просто стоит один автоматический агрегат с рундуком и одной кнопкой для таких сложных и достойных инженерных задачь? Если да, то там наверно должны хорошо платить начальству, т.к задачи-то для кого-то  поставлены фудаментальные в далёкой перспективе и создают высоколиквидный со временем опыт :)

#71
(Правка: 17:59) 17:55, 6 авг. 2019

Мизраэль
> Это ты сам придумал. Шаблоны например без запросов же не будут работать. Или
> шаблоны тоже не нужны?
Какие шаблоны? Гуйно-DOM-ные? За гуйно-домные шаблоны, связанную с ними модель и запросы отвечает гуйно-домная библиотека. Шаблоны данных, которые нужно откуда-то там достать, отфильтровать и как-то представить? Так это не самостоятельная задача - за неё отвечает или БД, или какая-то узкоспециализированная модель, и это опять-таки сфера ответственности БД или модели, а не формата.

> Ну например конфиги, логи, данные с метаданными
Вот уж где хмл нужен меньше всего, так это для конфигов и логов. А метаданные почти всегда проще велосипедить по ситуации - тем более что специфика задачи, для которой нужны какие-то метаданные, часто не укладывается в некие сферические рамки.

> Как по простому мне сделать конфиг на JSON? Если изначально я не могу его
> целиком десерилизовать в какой-то объект.
Если конфиг не поддаётся тривиальной десериализации, тот тут уже попахивает не конфигом, а полноценной БД, со всеми вытекающими.

> У тебя на доске висит таска - сделать конфиг, и есть к таске требования: он
> должен быть человекочитаем и допускать возможность правки, в модулях есть
> классы настроек, которые заполдняются данными из конфига. В конфиге могут быть
> любые настройки, в том числе бинарные данные. Ни один модуль очевидно не знаком
> со всей структурой конфига.
В таких случаях пилится специальный модуль, отвечающий строго за работу с конфигом, и все модули-юзеры, заинтересованные чего-нибудь конфигурировать, общаются с конфигурацией строго через его интерфейс. Реализация всех поисков-запросов, представления конфига и проч. - на нём. Какой формат будет подпирать с человекочитаемой стороны - дело уже глубоко десятое, т. к. модули-юзеры читать из него сами ничего не будут, это не их собачье дело.
А с человекочитаемой стороны чаще всего оказывается удобнее подпереть жсоном или чем попроще - потому что, как только начинаешь думать в терминах нужд юзеров, а не возможностей формата, оказывается, что много-то не нужно.

> Но твой напарник сделал эту задачу за 2ч использовав классические идеально подходящее под требования задачи решение на XML.
В таких случаях к задаче бывает полезно уточнять один момент: "...и заполнять этот конфиг будешь ТЫ!" Этого уточнения обычно хватает, чтобы 2ч магическим образом превратились и в 8ч на постановку задачи, и прочие "такие вещи с кондачка не решаются, надо сначала подумать как следует".

#72
20:59, 6 авг. 2019

Sbtrn. Devil
> В таких случаях к задаче бывает полезно уточнять один момент: "...и заполнять этот конфиг будешь ТЫ!"
Вот, кстати, да, все эти доморощенные "текстовые форматы просто парсить!" и "я просто возьму библиотеку X!" плохо понимают, что такое человеко-читаемый формат. На практике это означает, что если человек где-то допустил ошибку, то он ожидает, что парсер выдаст ему человеко-читаемое сообщение (причем специализированное под решаемую задачу) с конкретным указанием места ошибки. И сразу самописная процедура парсинга распухает в несколько раз, а библиотеки оказываются неспособными выдать координаты конкретного атрибута в файле.

#73
21:04, 6 авг. 2019

}:+()___ [Smile]
> И сразу самописная процедура парсинга распухает в несколько раз, а библиотеки
> оказываются неспособными выдать координаты конкретного атрибута в файле.
А несамописные, разумеется, сами "специализируются под задачу"...

#74
21:16, 6 авг. 2019

}:+()___ [Smile]
> На практике это означает, что если человек где-то допустил ошибку, то он
> ожидает, что парсер выдаст ему человеко-читаемое сообщение
  Не делай ошибок и не нужны будут сообщения. Чё неужели так сложно?

Страницы: 1 2 3 4 5 6 Следующая »
ФлеймФорумПрограммирование