Открыты исходные тексты игрового движка Storm, используемого в серии ролевых игр Корсары, нацеленных на любителей морских сражений. По согласованию с правообладателем код открыт под лицензией GPLv3. Разработчики надеются, что доступность кода откроет новые возможности для развития как движка, так и самой игры, благодаря внесению нововведений и исправлений сообществом...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=54889
"систему файлов конфигурации в формате ".ini" на JSON"Все, красный свет, закрывайте лавочку...
А если серъезно, то JSON и конфигурация это немного разные понятия)
Если у вас есть ".ini" то возьмите TOML чтоли....
не осилил? ini давно пора похоронить за плинтусом
> не осилил?«Корсары: Чёрная Метка» оказалась неподъёмным грузом и убила студию - https://kg-portal.ru/comments/88075-korsary-chernaja-metka-o.../
> «Корсары: Чёрная Метка» оказалась неподъёмным грузом и убила студиюКак вы яхту назовете...
Давай теперь в pdf конфиги держать. Только отбитые будут конфиги сохранять в лагучем json.
Так вот чего веб тормозит. Это JSON лагает.
Представь себе, куча зависимостей ради пары строчек кода - гениально, не правда ли?
Где же я это уже видел...
json тут при чем?
> json тут при чем?При том что без либы не парсится. А чтоб еще и более-менее полноценно его абстракции реконструировать... хм... нет, если у вас браузер с жыэс он это сделает конечно :)
Прекрасно там всё парсится. Простые варианты вообще регулярками обходятся на ура. А если вы не знаете каким боком json до js, то это значит что вы к программированию примерно никаким боком и просто ерунду несёте
> Прекрасно там всё парсится. Простые варианты вообще регулярками обходятся на ура.1) Регулярки гарантируют плохо предсказуемый перфоманс и странные факапы на краевых случаях, если вы не офигеть какой эксперт в этом.
2) "простые варианты" являются голимым субсетом а не JSON. Это не прожует arbitrary input и сломается.
3) Кстати в этом месте имею честь вернуть господам плюющимся на субдиалекты ini должок, чем это отличается? Утизмом?> А если вы не знаете каким боком json до js, то это значит что вы к программированию
> примерно никаким боком и просто ерунду несётеТам, как бы, в его названии все сказано. Во я Кэп.
Да. Вместо изобретения велосипеда для разбора конфигурации можно взять готовую библиотеку
Data mapping из json возможен даже в c++
Еще бы он не лагал. Число 123 в бинарном формате занимает 1 байт и парсится за 1 команду проца по сути, в JSON - минимум три, плюс еще обвес, а выколупывание этого барахла займет 100500 инструкций.Собссно по этой причине все кого интересовала эффективность и занялись бинарными протоколами, начиная с HTTP/2 и заканчивая телеговским мобильным протоколом. Да-да, даже смузижоры понимают в чем прикол, если встает вопрос об оплате этого нетормозит "из своих".
json имеет древовидную структуру, это полезно для хранения больших конфигов с множеством объектов. Да и парсится он не труднее ini
За "большие конфиги с множеством объектов" надо вообще кое-что отрывать, чтобы так делать было неповадно.
Ну зачем же. Сложный конфиг, в котором реализована логика работы программы, иногда даже на собственном языке, при том, что программа - это, фактически, интерпретатор этого конфига, достаточно простая сама по себе - такой подход тоже имеет право на существование и имеет свои преимущества.
> Ну зачем же. Сложный конфиг, в котором реализована логика работы программы, иногда
> даже на собственном языке, при том, что программа - это, фактически,
> интерпретатор этого конфига, достаточно простая сама по себе - такой подход
> тоже имеет право на существование и имеет свои преимущества.Довольно специфичный подход. Ну и в весноте по этому поводу сделали как раз ini-like конфиги на простой случай а потом луа на сложный. И таки отдельные сценарии вменяемого размера.
...но положа руку на сердце, даже со всеми костылинами типа кэша, перфоманс Loading вот этого всего вот, даже на *быстром* компе, с SSDшника - оставляет желать много лучшего, мягко говоря. Жестко говоря, ждать полторы минуты ребилда кэша после установки аддона на такой конфиге и вообше гребаный стыд. У профессиональных игроделов в принципе таких времянок подобных операций не быает.
При чем тут json к http протоколу?Вы там, в своей анонимэляндии, совсем дно необразованности пробили?
> При чем тут json к http протоколу?При том что сам по себе он - формат представления объектов JS. И не то чтобы сильно удачно маппится на другие языки и/или удобный в парсинге в произвольном виде.
> Вы там, в своей анонимэляндии, совсем дно необразованности пробили?
Это мощный аргумент вашей правоты.
Нормально он мапится.
Хватит чушь нести
> Нормально он мапится.Ниоткуда не сделует. Но вы можете показать это на примере, допустим, си.
> Хватит чушь нести
Так и не несите.
Ну храните в CBOR, спецально формат сделан с целью максимально плотной упаковки.
потому что в json кодировка как правила unicode, как и в js. Или юникод не нужен? Разве в XML не нужно примерно столько же инструкций?
> потому что в json кодировка как правила unicode, как и в js.Эксперты от яваскрипта пробили новое дно - вы вообще не понимаете как компьютеры реально хранят и обрабатывают информацию.
> Или юникод не нужен?
Для хранения и передачи integer'ов?! Примерно как для зайца стопсигнал.
> Разве в XML не нужно примерно столько же инструкций?
Да там даже и побольше бывает, а если еще всякие XSLT трансформации захотеть, там нехилая такая либа на несколько мегов образуется. Собственно по каким-то таким причинам на XML забили даже в XHR, больно уж полный вариант парсинга не прикольно жевать в arbitrary допущениях :D
json не умеет в комментарии
Json5 умеет
> ini давно пора похоронить за плинтусомгде же ты был когда потный Лёнька свою системдю начинал писать?
Чем toml принципиально отличается от json? Ну, кроме того что для него нету библиотек, а для json их тонны разной степени оптимизированности и удобства?
Жсон, кстати, на практике, очень прекрасен для сериализации, и сжимается замечательно тем же deflate (только вчера сравнивал, из файла в 500мб получается файл 5мб, у всех альтернатив было ближе к 15мб). По скорости, ну, msgpack чуть быстрее, но он куда хуже жмётся. Не пробовал simdjson, тот и быстрее наверно. Главное, не использовать его как рокстары в их гта5.
Текст он и есть текст, как текст так и жмется.
Имхо yaml приятнее - не надо в строках экранировать ("). Но зато дебильнее, ибо требует отступы, а джейсон - нет.Вот бы еще последнюю запятую в джейсоне не считали ошибкой, было бы совсем хорошо.
Аксиома эскобара или теорема обмена шила на мыло.
Жмется даже лучше protobuf?
Надо хранить конфигурацию в protobuf!
Если ее 500 мегов, об этом наверное стоит задуматься. OSM'щикам правда потребовалось сколько-то гигов чтобы осознать ошибки :)
Который ни прочитать, ни проверить, ни ошибку в случае чего найти.Нет, спасибо. Конфиги никогда не были узким местом софта и тратить на них львиную часть времени разработчика - спасибо, не надо.
Даже игрописатели уже лет 20 как перешли на текстовые форматы со своих хитровыдоюченых бинарников, хотя казалось-бы вот где оптимизация во главе угла.
> Который ни прочитать, ни проверить, ни ошибку в случае чего найти.Так в этом плане INI как раз проще всего. Полная и честная валидация JSON - довольно таки рокетсайнс.
> Нет, спасибо. Конфиги никогда не были узким местом софта и тратить на
> них львиную часть времени разработчика - спасибо, не надо.Именно протобуф, именно для конфигов - это все же как-то экзотика.
> Даже игрописатели уже лет 20 как перешли на текстовые форматы со своих
> хитровыдоюченых бинарников, хотя казалось-бы вот где оптимизация во главе угла.Только всякие ламеры и индюки, которые слаще морковки тупо не умеют. У про таки эффективные бинарные форматы, были, есть и будут есть. И всяческие чудные алгоритмы сжатия иной раз.
Ну вон SSDшник ps5 + хардварный анпакер одного из radgametools'овских проприентарных форматов может что-то типа 5 Гб/сек выжать. Как ты понимаешь, у про вообще совсем другие времена loading и парсинга их ассетов, даже в ультра-качестве, на котором твой крап подохнет жесточайшей смертью. Впрочем, конфигов это естественно не касается, их для начала не должно сотнями мегов быть.
> прекрасен для сериализации, и сжимается замечательно тем же deflate (только вчера
> сравнивал, из файла в 500мб получается файл 5мб,Это пока не попробуешь все это парсить и не очешуеешь от "эффективности" этого процесса.
А то что он текстовый, эм, лол, для начала сколько эдиторов на этой планете вообще 500 меговый JSON прожует?
Если кто не понял, OSM примерно на эти грабли и наступили. Только XML'ка и до 250 Гб разогналась. Ее конечно можно сжать, но декомпрессить 250 гигз одним чихом - еще интереснее чем 500 мегз.
В какой-то момент их терпение лопнуло и они сделали формат PBF. Который и весил при тех же условиях 20Гб и сжатие есть и процессить можно по кусочкам вменяемого размера, а не одним мега-шмотком 250Гб.
В общем вы привели отличный пример ЛАМЕРСКОГО подхода к работе с данными.
Так иногда большего и не нужно. Прекрасный формат для ипц, сохранения каких-то структур, передачи их по сети. Не для хранения сотен гигабайт понятно, но несколько гигабайт которые потом помещаются целиком в память - вполне. Хотя стримить жсон тоже можно, вполне вероятно, даже лучше xml будет. Так получается 50 гб надёжного жсон или 20гб костыльного бинаря, в котором могут быть ошибки.
> Так иногда большего и не нужно.Если _уже_ есть 500 мегов гамна - ну, э, вы таки пробовали хотя-бы открывать этот шит редактором? И как вам такой, кхе-кхе, экспериенс? :)
> Прекрасный формат для ипц,
Аргументы, кроме синдрома утенка, за это будут? С обратной стороны, как IPC он неэффективен по размеру и достаточно сложен в парсинге. По поводу чего есть over 9000 более эффективных форматов сериализации как раз.
> сохранения каких-то структур, передачи их по сети.
С распуханием разиков в пять? :) Конечно можно и хуже, XML какой взять, тот и в 10 может, но это такой монстр что на него даже в XMLHTTP :D :D забили давно, т.к. парсить его в arbitrary виде не готовы даже полные вебмакаки.
> Не для хранения сотен гигабайт понятно, но несколько гигабайт которые потом
> помещаются целиком в память - вполне.ЧСХ эти гигабайты...
1) Паринг сильно помножит на эн, особенно если это вебмакачьим кодом.
2) Декомпресс нескольких гигз (г)зипа за 1 присест сам по себе занимает заметное время.
3) Особенно прикольно если все это - для того чтобы понять что это не нужно/не валидно.
4) Прекрасно жмется? Про ZIP-бомбы слышали? Если это публично доступно, просто налить в ваш IPC сто мегов зипа - и посмотреть что с ним будет дальше. Скорее всего будет смешно.
5) При попытке с этим что-то сделать вы перестаните считать "хорошо жмется" за фичу.
6) Кстати очень круто, если смузихлеб на амазоне хостится, желательно с автомасштабированием инстансов и всем таким :)> Хотя стримить жсон тоже можно, вполне вероятно, даже лучше xml будет.
> Так получается 50 гб надёжного жсон50 гб надежного жсон звучит как пранк :). Попробуйте это вообще чем-нибудь открыть или распарсить, чтоли. Я хочу на это действо вообще посмотреть. И "стримить" это круто, а там точно есть средства _пакетизации_ с _заранее известным_ размером inbound куска, хотя-бы, чтобы оценить свои шансы в парсинге этого? А то с zip сжатием так-то я вам и кусок на терабайт налью, имхо... :)
> или 20гб костыльного бинаря, в котором могут быть ошибки.
Утятина такая утятина.
Прекрасно открывается и редактируется любым редактором бинарных файлов. Но вот только данные там не для того, чтобы их редактировали извне. Хэш не совпал и до-свидания. Что до сжатия, разжатие явно быстрее чем передача несжатых данных по сети или даже чтение с диска. При таком использовании записать блобом->передать->прочитать блоб, накладные расходы околонулевые. Ипц бывает разное, допустим между элексиром и нодой, и там ещё питон затесался. Вот да, только бинарного ипц там и не хватало, особенно с передачей между устройствами.
> Прекрасно открывается и редактируется любым редактором бинарных файлов.WTF LOL. Вообще-то не так уж и прекрасно - они, видите ли, только in-place патчинг могут. Это для редактирования именно JSON как-то несколько не то. Как впрочем и XML.
> Но вот только данные там не для того, чтобы их редактировали извне. Хэш не совпал и до-свидания.
Ну дык посчитать хэш для вдесятеро меньшего pbf вдесятеро быстрее. Но это наверное не про конфиги все же, если у кого конфиг 500 мегов ему бошку срочно лечить надо.
> Что до сжатия, разжатие явно быстрее чем передача несжатых
> данных по сети или даже чтение с диска.PBF видите ли несколько умнее сделан, особенно как у OSM. Так что не надо 500 мегов за присест распаковывать. Собссно именно поэтому он и эффективен в их применении - распаковывается чанками, жуется, опять распаковывается, жуется... по поводу чего софт и может это парсить без дикого жора ресурсов, кусочками. А кусочки отдельно таки жатые.
> При таком использовании записать блобом->передать->прочитать блоб,
> накладные расходы околонулевые.Дык JSON не блоб. И более того - если надо именно бинарные данные (e.g. картинку) передать - такое порево сразу начинается... ну, как в жабире, или data:image, который обладает всеми минусами блоба (отредактировать его вообще болт) - только еще жирнее на треть.
> Ипц бывает разное, допустим между элексиром и нодой, и там ещё питон затесался.
Это да, эффективные форматы - не про смузижоров.
> Вот да, только бинарного ипц там и не хватало, особенно с
> передачей между устройствами.Дык их таких немеряно. Загугли и подивись. А это, тебя не смущает что TCP/IP ни разу не текстовый?
Возможность посмотреть, что там и куда передаётся, всё таки дорогого стоит, и жсон хотя бы человекочитаемый и анализируется без проблем совершенно в любом редакторе. Редакторы бинарных файлов могут вполне редактировать как угодно. Да и у обычных текстовых редакторов проблема только с тем, что они читают файл целиком, особенно когда этот файл одна строка и в основном из-за подсветки синтаксиса. Что до остального, да, пихаю жсон в бд и не ведаю проблем, а данные при этом прекрасно жмутся. Не понимаю, что это за фиксация на 500 МБ конфигах, но если конфигами приходится обмениваться между разными стеками, то можно и так, обычно это всё же стейт какой-то и никаких проблем хранить такое в жсоне.
> Возможность посмотреть, что там и куда передаётся, всё таки дорогого стоит,Красивая теория, а на практике в результате зачастую минимизации-оптимизации и вот вам неведома гадюка, ни 2 ни 1.5. Или офигенные base64 вставки, читабельные такие. Или, вот, юзеры пытающиеся структуру этой простынки сорвать методом бобби тэйблса.
> и жсон хотя бы человекочитаемый и анализируется без проблем совершенно в любом редакторе.
Особенно на 500 мегов, в гзипе. А если попробовать подсветку синтаксиса... :)))
> Редакторы бинарных файлов могут вполне редактировать как угодно.
На уровне семантики ФС нет эффективной вставки сегмента данных в середину файла. Изменения можно либо дописать в хвост, либо поверх того что есть. Некоторые бинарные форматы по этому поводу нехило мухлюют, когда в начале - таблица смещений, и если новое не влезло in place поверх старого, ну, запишем в хвост, пропатчив in place только таблицу. Больше актуально конечно для архивов, но если на то пошло, архив и есть коллекция объектов как раз.
> Да и у обычных текстовых редакторов проблема только с тем, что они читают
> файл целиком, особенно когда этот файл одна строкаНу да, небольшая проблема - прожевать 500 мегов или там сколько 1 куском :). Чтобы вообще например узнать что это нам не надо. Ну, э, более эффективных вариантов там так изначально тупо нет. Лукапнуть наличие объекта по индексу? Так низя :)
> и в основном из-за подсветки синтаксиса.
А также анализа структуры, разбивки на строки/их переноса и проч, и проч. А также потому что по кусочкам это все - многократно сложнее. И там вот прогеры тоже не хотят напрягаться :P. Да и не особо понятно как полное понимание например структуры вложенности без полного чтения от и до отстроить.
> Что до остального, да, пихаю жсон в бд и не ведаю проблем,
А бд зачем?! Ее на глаз уже вообще неудобно. Бинарная хрень! Непорядок, надо было в текстовые файлы валить. Правда, ФС тоже та еще бинарная хрень...
> а данные при этом прекрасно жмутся.
Что намекает на "эффективность" оных - избыточность конская.
> Не понимаю, что это за фиксация на 500 МБ конфигах, но если
> конфигами приходится обмениваться между разными стеками, то можно и так, обычно
> это всё же стейт какой-то и никаких проблем хранить такое в жсоне.Да вон какой-то чудик с 500 мегами жысона вылез. Я на таких в OSM насмотрелся. И с неких пор качаю с них только PBF. Извините, 30 гигов которые можно довольно гранулярно процессить все же не то же самое что 250+ гигов XMLка в архиве, которую вообще крайне проблемно вменяемо обработать хоть там чем. Вплоть до того что даже если сделать блок архивера известного размера, мы понятия не имеем - закончится ли тэг этим блоком или надо еще хрен знает сколько читать, и поэтому мы даже структуру читаемого понять не можем пока все 250 гигз от корки до корки не сжуем. Эффективность такого подхода вызывает энные вопросы.
А заодно довольно позорно когда оригинал как в сабже работает в разы шустрее даже на ископаемом компе, в то время как опенсорц-блаблаба иллюстрирует только то что вебманки разучились програмить.
Xml можно стримить, к deflate стриму можно прикрутить индекс и по нему находить нужные данные. Какие-то фантазии, не буду комментировать.
> Xml можно стримить,Спасибо, имел (не)счастье оценить как это работает в жабире. Особенно клево там передача файлов и картинок. Мало того что через тормозной сервак, так еще на треть распухает base64 кодированием. Пример как делать не надо. Ну весь мир и юзает телеграм с компактным бинарным протоколом, а не жабирский п...ц в результате.
> к deflate стриму можно прикрутить индекс и по нему находить нужные данные.
Ага, круто, сделали бинарный протокол с пакетами. Осталось теперь еще XML выкинуть, чтобы не мешался, т.к. сам по себе он на это натягивается как сова на глобус и парсинг тормозит.
> Какие-то фантазии, не буду комментировать.
Имел неудовольствие попользоваться вон теми фантазиями и ощутить на своем заду как это работает.
Кто юзает фсбшный мессенджер? Впервые слышу. Ну, кроме разных террористов и сепаратистов вроде никому и не интересен он? Ещё разные филы вроде тусовались там. Да его и не было тогда, когда это актуально было. И до пиар компании о нём никто и не знал в принципе, не больше людей, чем о wire или signal (а скорее куда меньше). Вотсап изначально был тот же самый xmpp, что и жаббер, гтолк, по-моему, тоже. Да мало ли их? Вон, мой сервак не тормозит, stun-сервер тоже, кто заставлял использовать шляпные сервера? Уже 10+ лет как ушёл с аськи на жаббер, никаких проблем совершенно. И вообще, никакой разницы xml там или нет, главное, что он относительно лёгкий и достаточно быстро парсится. Это какое-то излишне предвзятое отношение. Т.е. xml вполне подходит на роль для передачи данных. Ещё лучше он подходит для передачи сообщений (сложная гибкая система тегов и категорий это удобно опять же). Не знаю, откуда тут взялись бинарные данные (да в значительных количествах), но у xml область применения куда более широкая чем у json. Просто, чаще всего и json достаточно, и больше нечего придумывать (кто-то конечно считает, что и csv ему хватит, но это НЕ ТАК ПРЕКРАТИТЕ ИСПОЛЬЗОВАТЬ CSV).
Пс ЛАМЕРСКИЙ подход это воротить свои форматы для хранения данных там, где в них нет совершенно никакой нужды. Разработка намного дольше, будут возникать проблемы с передачей и хранением, нет универсальности и возможности импортировать их куда-то ещё. Так что, /thread.
> Пс ЛАМЕРСКИЙ подход это воротить свои форматы для хранения данных там, где
> в них нет совершенно никакой нужды.Дык вы не ответили вопрос - вы вообще пробовали 500 меговый JSON чем-нибудь открыть? Очень интересен экспериенс этого действа в смузихлебском редакторе :)
500-метровый конфиг? Мне кажется, или кто-то пытается спорить доведением до абсурда?
> 500-метровый конфиг? Мне кажется, или кто-то пытается спорить доведением до абсурда?Я тоже удивился, но они там утверждают что это круто, особенно с объектами. Мне правда кажется что это сворее про выгрузку какую, и вот там OSMщики намекают что с подобными объемами это как раз уже не очень хорошо работает.
(а так поугарать, для JS :D :D есть парсер PBF - некоторые картежники vector maps так жуют, клиентсайд)
Да ладно конфиг, простой текстовый лог такого размера ( и меньшего, сотни мегабайт будет достаточно) большинство текстовых редакторов открыть не способны, просто зависнут и все.
> Да ладно конфиг, простой текстовый лог такого размера ( и меньшего, сотни
> мегабайт будет достаточно) большинство текстовых редакторов открыть не способны, просто
> зависнут и все.Ну, как, попытки парсинга синтаксиса и какого там еще раскраса дополнительно пригрузят проц и оперативы скушают, можно будет как раз посмотреть что раньше - юзер заколебется ждать загрузки, или таки оно умрет по OOM? Можно даже тотализатор устроить :)
>> Да ладно конфиг, простой текстовый лог такого размера ( и меньшего, сотни
>> мегабайт будет достаточно) большинство текстовых редакторов открыть не способны, просто
>> зависнут и все.
> Ну, как, попытки парсинга синтаксиса и какого там еще раскраса дополнительно пригрузят
> проц и оперативы скушают, можно будет как раз посмотреть что раньше
> - юзер заколебется ждать загрузки, или таки оно умрет по OOM?
> Можно даже тотализатор устроить :)Возможно ни то ни другое, пробовал грузить такие текстовые файлы в "простые редакторы", вроде mousepad, специально оставлял на долгое время - ничего не происходит, зависание насовсем.
Я не понял если они будут использовать Lua, то почему конфиги не хранить на Lua. В конце то концов он и создавался для того что бы хранить конфиги.
Потому что культурные люди разделяют код и конфигурацию/данные.
*angry .vimrc sounds*
JSON это хорошо, главное чтобы не YAML с отступами.
json это не хорошо и не плохо. Это формат. А вот там, где его использует разработчик уже или хорошо, или плохо.Если подразумевается, что конфиг будет правиться в консоли, то выбор json это просто дибилизм чистой воды.
Если же нет, то пофиг где хранить, хоть в sqlite
JSON - это подмножество YAML, а INI - подмножество TOML
Сказки это все про подмножество. yaml одной строкой не запишешь, а json - запишешь.
Запишешь
конфигурация микросервисов чаще всего в JSON. Коммерческих продуктов - YAML, реже TOML
Json всем лучше ini. Замечательный и легко читаемый формат социализации во многих языках поддерживается прямо в стандартной библиотеке.
> Json всем лучше ini. Замечательный и легко читаемый формат социализации во многих
> языках поддерживается прямо в стандартной библиотеке.А теперь его распарси в командной строке, без утилит обработки а-ля jq. С ini это достаточно просто.
Парсится он элементантарно регулярными выражениями, но зачем? У jsona своя специфика - он удобно хранит объекты, которые легко серелизовать в в объекты языка
> Парсится он элементантарно регулярными выражениями, но зачем?Удачи в создании регулярок которые никогда не лажают и не ставят все р@ком.
> У jsona своя специфика -
Пихаться куда надо и нет, с поводом и без.
> он удобно хранит объекты, которые легко серелизовать в в объекты языка
При том - единственного языка, жыэс. Остальные могут иметь свои взгляды на тему удобства всего этого. ЧСХ на JS нормальные игры не пишут...
Нет, иногда json имеет смысл, скажем если есть вебморда с js и с ней перекидываются вот этим, парсер json всяко есть, и странно его не реюзануть. Но это, наверное, не про гамезу? Зачем ей вебморда? :)
Распарси в командной строке древовидный ini. Удачи.
> Распарси в командной строке древовидный ini. Удачи.Ини не обязан быть древовидным. А JSON что, он слишком генерик и неумение жевать такое означает что вы не умеете на самом деле JSON, только частный субдиалект.
Костыляторство какое, регулярками парсить то для чего куча разных библиотек, которые распарсят В ТОЧНОСТИ то что нужно. А ещё у ini куча разных костыляторских багофич: кто-то семиколоны в конце каждой строки ставит, у кого-то знак равенства обязательно у кого-то нет. Идите со своими костылями к своему костыльному богу и там его регексами своими ублажайте, извращенцы.
а зачем его в командной строке парсить?программа вообще не должна сама парсить текстовый или бинарный конфиг. Это должна делать отлаженная бибилиотека.
> А теперь его распарси в командной строке, без утилит обработки а-ля jq.А теперь попробуй ездить на велосипеде без ног. Или "а попробуй распарсить ini без coreutils". Попробуй скомпилировать сорец без компилятора.
Зачем создавать себе искусственные сложности?
> А теперь попробуй ездить на велосипеде без ног. Или "а попробуй распарсить
> ini без coreutils". Попробуй скомпилировать сорец без компилятора.Как Вам без головы живется?
> Зачем создавать себе искусственные сложности?
Затем, что бывает нужно обработать текстовый файл в командной строке, в случае ini
мне хватит sed, awk, cut. JSON усложняет обработку в разы.
>> Зачем создавать себе искусственные сложности?
> Затем, что бывает нужно обработать текстовый файл в командной строке, в случае
> ini
> мне хватит sed, awk, cut. JSON усложняет обработку в разы.Не, json упрощает работу. Структурированность данных позволяет делать очень сложные выборки простым образом. Настолько сложные, что с не-json'ом ты переключишься из командной строки в текстовый редактор, чтобы написать скрипт. Все эти sed/awk/cut заточены работать только с последовательностью одинаковых записей-строк. Как только у тебя не строки, а что-то ещё, вот ты уже возишься с FS, как только там хотя бы двухуровневая древовидная структура, ты начинаешь городить такие костыли, что это начинает напоминать ту самую езду на велосипеде без ног. Да-да, даже парсинг ini при помощи coreutils -- это хрень, попробуй вынуть значение поля world из секции hello. С json'ом и jq это делается так: jq .hello.world и дальше не важно, сколько раз ключ world появляется в json'е, я выберу только те, которые в hello
Где ты тут увидел усложнение? Ну-ка покажи, как ты будешь то же самое делать с ini, и как это будет проще.
> мне хватит sed, awk, cut.
Вот я и говорю: искусственное усложнение. Поставим себе проблему "не пользоваться jq" и будем огребать последствия.
> Где ты тут увидел усложнение? Ну-ка покажи, как ты будешь то же
> самое делать с ini, и как это будет проще.А кто Вам сказал, что jq установлен в системе? Кто Вам сказал, что машине доступны репозитории из локальной или глобальной сети?
> Вот я и говорю: искусственное усложнение. Поставим себе проблему "не пользоваться jq"
> и будем огребать последствия.Это не искусственное усложение, coreutils идет во многих дистрибутивах даже в их минимальной инсталляции, или есть busybox, который поддерживает в виде функций sed, cut. Вы программы для пользователей пишете, не забыли еще?
>> Где ты тут увидел усложнение? Ну-ка покажи, как ты будешь то же
>> самое делать с ini, и как это будет проще.
> А кто Вам сказал, что jq установлен в системе? Кто Вам сказал,
> что машине доступны репозитории из локальной или глобальной сети?Угу. Storm на машине, где недоступны репозитории? Расскажи об этой машине больше.
>> Вот я и говорю: искусственное усложнение. Поставим себе проблему "не пользоваться jq"
>> и будем огребать последствия.
> Это не искусственное усложение, coreutils идет во многих дистрибутивах даже в их
> минимальной инсталляции, или есть busybox, который поддерживает в виде функций sed,
> cut. Вы программы для пользователей пишете, не забыли еще?Я не собираюсь ориентироваться на минимальную инсталляцию какого-то там дистра. Я не собираюсь ориентироваться на busybox -- вот ещё! Почему меня должна волновать минимальная инсталляция с бузибоксом? Даже если пользователь не может поставить на машину jq, он может примонтировать фс этой машины через sshfs из нормальной системы и работать с файлами из нормальной системы. Не хочет -- это не мои проблемы, я не заставляю.
> Угу. Storm на машине, где недоступны репозитории? Расскажи об этой машине больше.На момент установки были доступны, потом быть доступными перестали. Что не может быть?
> Я не собираюсь ориентироваться на минимальную инсталляцию какого-то там дистра. Я не
> собираюсь ориентироваться на busybox -- вот ещё! Почему меня должна волновать
> минимальная инсталляция с бузибоксом? Даже если пользователь не может поставить на
> машину jq, он может примонтировать фс этой машины через sshfs из
> нормальной системы и работать с файлами из нормальной системы.А может скомпилированный бинарь принести на флешке и записать в /usr/local/bin так?
> Не хочет -- это не мои проблемы, я не заставляю.
То есть Вам, как разработчику покласть на удобство пользователя, верно?
>> Я не собираюсь ориентироваться на минимальную инсталляцию какого-то там дистра. Я не
>> собираюсь ориентироваться на busybox -- вот ещё! Почему меня должна волновать
>> минимальная инсталляция с бузибоксом? Даже если пользователь не может поставить на
>> машину jq, он может примонтировать фс этой машины через sshfs из
>> нормальной системы и работать с файлами из нормальной системы.
> А может скомпилированный бинарь принести на флешке и записать в /usr/local/bin так?Не, зачем. Я пишу в ~/.local/bin
>> Не хочет -- это не мои проблемы, я не заставляю.
> То есть Вам, как разработчику покласть на удобство пользователя, верно?Да. Особенно если речь идёт о очень специальном пользователе, для которого установка jq рядом с моей программой является зашкваром. Такому пользователю я готов целенаправленно гадости делать, лишь бы он подальше от меня держался со своими тараканами: а вдруг они заразны? Не, я конечно мог бы включить jq в бандл с программой, но не, проще избавиться от такого отморозка.
> Не, зачем. Я пишу в ~/.local/binПросто прекрасно. На дворе 21 век, откройте для себя пакетные менеджеры и репозитории.
> Да. Особенно если речь идёт о очень специальном пользователе, для которого установка
> jq рядом с моей программой является зашкваром. Такому пользователю я готов
> целенаправленно гадости делать, лишь бы он подальше от меня держался со
> своими тараканами: а вдруг они заразны? Не, я конечно мог бы
> включить jq в бандл с программой, но не, проще избавиться от
> такого отморозка.А можете список разработанного софта кинуть, дабы я, не приведи Б-г не воспользовался
программами от такого горе разработчика.
>> Не, зачем. Я пишу в ~/.local/bin
> Просто прекрасно. На дворе 21 век, откройте для себя пакетные менеджеры и
> репозитории.Чудак, ты выше сам поставил условие, что программа недоступна через репы. Чем тебе в таком случае помогут пакетные манагеры и репы? А если не помогут, то зачем засирать /usr своим софтом установленным мимо пакетного манагера?
> А можете список разработанного софта кинуть, дабы я, не приведи Б-г не
> воспользовался
> программами от такого горе разработчика.Нет.
> Json всем лучше ini. Замечательный и легко читаемый формат социализацииЧ-чего?! Социализации?! :D :D :D
> во многих языках поддерживается прямо в стандартной библиотеке.
И как вам парсинг 500 мегов этого счастья то? :)
Социализации, социализации. Вон сколько дурачков выше набежало.
*сериализации
Мои любимые корсары. Если её запилят под линуксы и чтобы без вылетов, это будет лучшая игра про парусники!
Помоги коммьюнити, запили хотя бы часть.
Ооо, какая ностальгия, Пираты Карибского моря до сих пор на полке лежат.
Эх, помнится одна знакомая их у меня просила и я обещал занести, а оказалось. что я на тот многоразовый диск с копией пиратских корсаров уже Need for speed записал.(. Была бы лицуха было бы веселее.
> Эх, помнится одна знакомая их у меня просила и я обещал занести,
> а оказалось. что я на тот многоразовый диск с копией пиратских
> корсаров уже Need for speed записал.(. Была бы лицуха было бы
> веселее.Да, а так и остался с Need for Speed-ом и со знакомой поближе не познакомился ;) Действительно, какое тут веселье?
>Разработчики надеются, что доступность кода откроет новые возможности для развития как движка, так и самой игры, благодаря внесению нововведений и исправлений сообществом.пускай дальше наедятся. как там, исходники планетарок из космических рейнджеров уже помогли на халяву исправить косяки HD переиздания?
Целый движок подогнали сообществу и всё равно есть недовольные. Парадокс. Запилит сообщество ремастер и будет отличная гама по-новому. Некоторые даже реверс инжинерингом страдали за признание их нарушителями лицензии.
Недовольны люди тем что им совершенно беспалевно предлагают по доброй доброте исправить накопившиеся глюки старой игры, чтобы им же потом продать Enhanced Edition HD Remaster переиздание.
Ну а так будут довольные сидеть вообще ни с чем.
Да, и сразу же это Enhanced Edition HD Remaster переиздание открыть, ибо GPLv3, ага.
> Да, и сразу же это Enhanced Edition HD Remaster переиздание открыть, ибо
> GPLv3, ага.Что открыть-то? Код движка там будет тот самый что добровольцы и нафиксили. Ресурсные файлы же как были соственностью разработчика так ею и останутся.
v3, не v2. Тивоизацию там уже починили.
В том «целом движке» столько изменений предполагается, что от оригинала почти ничего не остаётся..
Risen мне больше по душе.
Аж посмотреть захотелось. Корсары 2, в свой время одна из любимых игр была.
Х.з мне че то игра не зашла в своё время
Это просто праздник какой-то!
Корсары в своё время были уникальной вещью. А битва в шторм на ускорении - вообще вещь в себе.
Как обычно игровые ресурсы никто отдавать не намерян.
Это называется "нам хотелось бы воскресить старую (но популярную у олдфагов) игру, может даже на Андроид портировать, но желания делать самим у нас нет, поэтому пусть сообщество нам сделает красиво забесплатно".
Ну так сообщество сделает, ресурсы скачает и бесплатно запустит.
О да. И для этого мы сменили лицензию на вирусную, чтобы было труднее ее продавать.
Они правообладатели вообще-то:)))
Захотели - на гпл перевели, захотели - передумали.В данном же случае подобная лицензия запрещает именно сторонним дельцам что-то делать на том движке без раскрытия исходников.
Они не смогут поменять лицензию гпл кода на другую. Это можно сделать только для кода, который написали они. Гпл продавать никто не запрещает -- в стиме есть куча успешных гпл игр.
> Они не смогут поменять лицензию гпл кода на другую. Это можно сделать
> только для кода, который написали они. Гпл продавать никто не запрещает
> -- в стиме есть куча успешных гпл игр.Это не могут сделать владельцы производных продуктов, поскольку их проект базируется на гпл-коде( иначе этот код придется выкидывать ).
Правообладатели исходного проекта могут делать со своим кодом все что хотят ( запрещение им менять установленную ими же лицензию на собственный код - это кнчн эпик )п.с:
>> лицензия запрещает именно сторонним дельцам что-то делать на том движке без раскрытия исходников
> Гпл продавать никто не запрещаетГде в комменте я утверждаю, что гпл прямо запрещает продажу ?
Рекомендую перечитать ещё раз. Там утверждается, что поменять лицензию могут только те, у кого авторские права на код. Т.е. для того, чтобы закрыть обратно, придётся либо добиться согласия каждого стороннего разработчика, либо сразу требовать передачи права на любые действия с кодом (письменной). Если это собственные разработчики, права на код принадлежат компании, но только на этот написанный и не на производный.
Да, но тогда наработки сообщества пройдут мимо них, ибо они тоже под GPLем, но их перелицендировать компания уже не может.
> Да, но тогда наработки сообщества пройдут мимо них, ибо они тоже под
> GPLем, но их перелицендировать компания уже не может.В программировании обычно нет одного-единственного правильного решения..
Или к слову о том, что действительно годные задумки можно перенести к себе, нЕсколько видоизменив реализацию.
Откуда у них время, люди и мозги на "видоизменение реализации", если их нет на то, чтобы просто поддерживать свой собственный код?
> О да. И для этого мы сменили лицензию на вирусную, чтобы было
> труднее ее продавать.Труднее продавать? С чего бы? Код Quake2 сколько лет сообщество перепиливает в самые немыслимые формы, но это не мешает его продавать на том же GOG.
Продают оригинал, а не доработаный коммьюнити вариант, не?
Не делайте бесплатно. Вообще не делайте
Я бы на месте разработчиков прочитав местные комментарии закрыла код обратно.
Только для тупых комментаторов. Нам, пожалуйста, оставьте - мы уже и в код смотрим, и даже идеи появляются (вот только бы время на это найти).
> Я бы на месте разработчиков прочитав местные комментарии закрыла код обратно.Лицензия обратного хода не имеет, поздняк метаться.
p.s. ольга бузова залогинься :P
Для инди Godot в тысячу раз лучше, а для больших студий ни один opensourse движок не годится
А чем Unreal Engine не годится?
UE не опенсорс, как и Unity, как и другие закрытые движки... я говорю только про opensourse и на этой поляне есть только Godot
>> UE не опенсорс
> The entire Unreal Engine source code is available on our GitHub page, ready for you to access!Уе вроде давно исходники открыл..
С юнити - сложнееГодот - то ещё барахло, не идущее ни в какое сравнение ни с уе ни с юнити ( все равно что сравнивать счёты и новейший комп )
UE закрытый софт, пусть и полу-бесплатный, но это же можно сказать про unity и cry engine...Какой бы не был Godot, ему просто нет альтернатив если компании нужен свой движок, а с нуля пилить очень долго и дорого, вот как раз для этого есть Godot тем более что лицензия MIT позволяет
> UE закрытый софт, пусть и полу-бесплатный, но это же можно сказать про
> unity и cry engine...Что значит "закрытый" ? Качаешь исходники двигла и радуешься жизни.
Ограничения по правам и лицензиям кнчн есть, но это не про "закрытость" а про "свободность"> Какой бы не был Godot, ему просто нет альтернатив если компании нужен
> свой движок, а с нуля пилить очень долго и дорого, вот
> как раз для этого есть Godot тем более что лицензия MIT
> позволяетДля таких случаев безальтернативный как раз юнити или уе. Огромные возможности и довольно просто сделать весьма годные игровые проекты.
Ну а чисто свой движок пилить, еще и на базе какого-то годота - это то ли "клиника", то ли целенаправленный распил под видом проекта
> А чем Unreal Engine не годится?Тем что проприетарщина. И unity тоже. То что там местами на сильно отдельных условиях сорцы дают - ну так вы и сорц винды в принципе так-то скачать можете. Но есть нюансы.
>> А чем Unreal Engine не годится?
> Тем что проприетарщина. И unity тоже. То что там местами на сильно
> отдельных условиях сорцы дают - ну так вы и сорц винды
> в принципе так-то скачать можете. Но есть нюансы.И тем не менее, исходники винды практически никто кроме микрософта так и не видел, тогда как в исходниках уе только так копошатся, а то и статейки пилят на хренабре.
У конторы, кстати, даже отдельная страница с целым пошаговым руководством со скринами имеется( целых СЕМЬ шагов ) - "How do I access Unreal Engine 4 C++ source code via GitHub":
https://www.unrealengine.com/en-US/ue4-on-github
> И тем не менее, исходники винды практически никто кроме микрософта так и не видел,Их видел я. Только это мне никак не помогло. Это нереально девелопать "с кандачка". На один только въезд в это и освоение такого стиля кодинга надо убить месяцы, а чтобы основы вдуплить и азы осознать - наверное больше года. И вся эта долботня даст ... что? Возможность встретиться с MS в суде? Вау, круто, вперед на мины, я пешком постою на безопасной дистанции :)
> тогда как в исходниках уе только так копошатся,
Да мало ли кто и где копошится, это не делает их автоматом опенсорсом под свободной лицензией.
> а то и статейки пилят на хренабре.
На швабре статейки пилят и про дриснятку, не аргумент. Про опенсорс там только некоторые хабы.
> У конторы, кстати, даже отдельная страница с целым пошаговым руководством со скринами
> имеется( целых СЕМЬ шагов )Мне до п... - с неких пор я в принципе не собираюсь заниматься откровенной проприетарщиной. На тех условиях пусть они как-нибудь там сами в своем проприетарном болоте варятся.
Акелла, вы тут? Тут у Седьмого гостя вышло продолжение... Сможете локализовать с актёрами из предыдущих частей?
А Steam против Столлмана не шла же? Если нет, то можно пользоваться!
Ольга Бузова тоже не против Столлмана, но это не значит, что ее надо слушать.
Откуда такая информация? Вы её спрашивали?
Не только Ольга Бузова против Столана.
И наоборот эта логика тоже работает, а не как тут " эти против Столлмана, эти плохие"
Valve всегда предусмотрителельно не участвует в сжв движухах, вон в прошлый раз издатели пачками шкварились, а эти на белом коне и в плаще. Умные люди руководят. Во всяком случае, я не видел ничего позорного.
Если нет весомых причин, а их скорее всего нет, то за это "систему файлов конфигурации в формате ".ini" на JSON" надо бить ногами, желательно в печень и до полного просветления памяти. Видимо пришли смузихлебы, которым дай только то, что можно испоганить..
Всё что угодно будет лучше ini, и жсон не самый плохой вариант, даже один из лучших.
Согласен, Ini достаточен. За программировании в конфигах надо наказывать.
Великая серия, великая... Корабли, романтика, торговля, пиратство, захваты портов... И ведь что интересно - аналогов до сих пор нет. Есть какие-то пиратские поделки, в т.ч. коопные, но даже и близко не то. По атмосфере ни одна игра даже не приблизилась.Начинал с "Пиратов Карибского моря" от Акеллы - это считается 2й частью в серии (Sea Dogs 2), но там немного мистики есть в сюжете, скелеты есть, Черная Жемчужина есть, хотя персонажи другие (не по фильму) и логотип Disney в начале игры, т.е. как я понимаю это Disney заказал у наших разрабов новую часть игры, включив туда некоторые элементы из фильма, чтобы пропиарить фильм. Игра вышла не без багов, но в свое время десятки часов на нее потратил - настолько душевное приключение, что запомнилось на всю жизнь... А графика такая сочная и красивая, что смотрится неплохо даже сегодня.
Потом пробовал 1ю часть, т.к. ее хвалили фанаты, а от 2й почему-то плевались, но графон и управление на фоне "Пиратов" показались такими примитивными, что так и не прошел до конца.
Помню релиз 3й части... Ох и многострадальный же он был. Лицензия на дисках вышла под версией что-то вроде 0.99, т.е. бета. Но даже для беты было так много багов, что даже после кучи патчей игралось все-равно больно.
В новые игры от фанатов уже не играл, как-то времени не было, а сейчас на современных системах с большим разрешением экрана это все вроде не поддерживается.
Хотелось бы полноценный ремастер трилогии, непонятно почему до сих пор ребята этого не сделали, ну реально ведь крутая серия, заодно и баги исправили бы, и вдохнули в серию новую жизнь. Удачи им в проектах конечно!
Еще помню 2-3 года назад скандал между Дмитрием Архиповым и еще какими-то чуваками, которые хотели сделать игру про Корсаров. В итоге годы прошли, а ни одной игры - ни от тех, ни от других, мы не получили. Хотя обе команды грозились выпустить супер-пупер мощный тайтл про Корсаров. Все как-то печально с российским игропромом. :(
Я тоже познакомился с серией по ПКМ. Отличная игра. Ещё вы пишите, что ни одной похожей не сделали — угу, есть такое в наше время. Про Тёмного Мессию Меча и Магии от авторов Arx Fatalis можно сказать так же. Игроиндустрия будто бы что-то потеряла (душу, хех), по сравнению с нулевыми. Или я вырос. Да, выходит иногда что-нибудь этакое, наподобие Ори, Столпов Вечности или даже Сайрекспунка, но такое чувство, что об одиночных, по-настоящему запоминающихся играх в угоду профита многие даже не помышляют.
Была такая уникальная игра Ghost Recon Phantoms (Onlain).
Уникальная своим геймплеем, заточенным на командное взаимодействие. Нет, не надо говорить, что таких море. ТАКОЙ - нет ни одной даже отдалённо похожей.
И не только отдалённо. Фишка в том была, что сочетание грамотного тактического взаимодействия игроков, использование абилок каждого класса в нужном месте в нужный момент (причём нужный команде в данном месте/направлении исходя из тактического момента, именно в данные доли секунды) - не гарантия победы - нужно ещё и переиграть команду противника, старающуюся действовать так же либо нивелировать ваши потуги, противодействуя теми же абилками, сменой позиций, грамотно поданной командой и своевременной информацией, например позволяющей поразить вслепую двигающегося в тыл в стелсе разведчика, или ещё куча ситуаций.
И да, она была онлайн. Тактический командный онлайн шутер...
И не надо говорить, что таких море. Повторюсь - такой больше нет ни одной. Она была уникальна и остаётся таковой. Аналогов, даже близко, не существует. Похожих - да, но жалкое подобие, тупо эксплуатация - причём отвратно реализованная - фишек той игры.
Спорить бессмысленно. Кто играл - тому не надо ничего объяснять. Кто не играл - не поймёт. (
> (Onlain)транслит вездесущий
Ага, сам заметил после Вашего коммента только )
>и пока поддерживает только платформу Windows и графический API DirectX 9.Не нужно.
Вот бы открыли исходники Supreme Commander...
Total Annihilation, вы хотели сказать?
Разработчики молодцы! Большое им спасибо.
Сразу надо было, а не через N-дцать лет... (
А почему Lua? Там был прекрасный C-подобный скриптовый язык, насколько помню. Помню, что после него пробовал писать на Lua и плевался от ограниченности последнего.
> А почему Lua? Там был прекрасный C-подобный скриптовый язык, насколько помню. Помню,
> что после него пробовал писать на Lua и плевался от ограниченности последнего.Ну дык форкни или issue слепи. А так видимо пытаются хайповать.
Шизики подняли визг про жсон да и фиг с ними.
Корсары была и остается лучшей игрой про ператов.
Блекфлег отсосина не в счет.Надеюсь осилять сделать хотя юы песочницу с редактором сценарием в карт.
Пока вы там жейсонов на мейсонов меняете, и кровати переставляете, на дворе 2021 год и 4K мониторы, на которых корсары смотрятся как лютое мыльцо. Кто графон переписывать будет? И за какие деньги?
Вот заменят что-то одно, потом что-то другое и так далее и так от оригинального движка ничего не останется. Это уже будет не Shtorm.
То же самое хотел написать
А че там Архипов? Так 4х корсаров и не сделал? 3 года назад на киви бабки собирали... Затухло?
В целом, заявленный план переделки нафиг не нужен, проще новый движок собрать:1. Собственный рендеринг -> bgfx - если делать кроссплатформенный вариант, то выбор может и нормальный. Но я бы переделал на вулкан, та же самая кроссплатформенность, зато в оптимизации больше простора.
2. Встроенную математическую библиотеку -> glm - очень странное решение, так как реализация может сильно отличаться, и надо будет переписать чуть менее, чем все.
3. Код для обработки ввода -> gainput - учитывая неизбежность, нормальное решение.
4. Встроенный язык для разработки сценариев -> Lua. Когда коту делать нечего он... смысл?
5. Формат ".ini" -> JSON. Нормальное решение.
6. Cпецифичные форматы бинарных ресурсов -> на стандартные форматы - и получить проблемы со скоростью загрузки, несовместимостью кода и пр. Достаточно конверторов: меньше времени, меньше багов, результат тот же.
Я даже не знаю, стоит ли переносить игру на другой движок ради кроссплатформенности? Это всё равно что переносить Сталкера с X-Ray на Unity.JSON. Что с него все так прутся? Оно же что-то XML-ное, а XML выглядит некрасиво. Вместо конфига наподобие:
[General]
client = standalone
policy = secutityКоторый можно править в простом nano, мы получаем:
<?xml version="1.0" encoding="UTF-8"?>
<client>standalone</client>
<policy>security</policy>Насчёт LUA ничего плохого сказать не могу - впечатляют игры mari0 и not tetris, написанные целиком на нём. Но опять же, разве нельзя портировать библиотеку "встроенного языке для разработки сценариев"? Там наверно чистый Си, без WinAPI и тем более без Direct3D.
Да и менять файлы данных тогда придётся.
newline в жсоне пишется как \n>lua
вроде та поделка из вов, ровно никаких преимуществ перед тем же angelscript
>/me посмотрел на никненейм
а, ладно
Справедливости ради. Можно таки писать:
<config>
<general
client = "standalone"
policy = "security" />
<server
type = "dedicated"
port = "9876" />
</config>и править +- также и парсить можно нормально:
❯ xq '.config.server."@port"' tmp/test.xml
"9876"и типы валидировать можно, если нужно. Но да, для простых кофигов что JSON что XML избыточны. Для сложных давно придумали https://dhall-lang.org/ , а все эти ваши Yaml/Toml/etc -- какие-то костыли разной степени кривости.:)
> Справедливости ради. Можно таки писать:
> <config>...
> </config>Однако если заявить что это XML, вон тот чудак имеет право вгрузить и нечто вообще совсем другое. И даже какой-нибудь XSLT завернуть, в котором потом никто кроме автора не разберется что оно там вообще пыталось делать на самом деле. Ини-конфигу такой брэйнфарт не грозит.
А если вот именно строго subset'ом ограничить - ну тогда это уже и не XML...
> и править +- также и парсить можно нормально:
> ❯ xq '.config.server."@port"' tmp/test.xml "9876"Но если назвать это XML а не субсетом - вон та рожа в своем праве выгрузить жуткую простынку, с XSLT и прочим - удачи в правке.
Ну и скорость парсинга XML известно какая. В смысле - хреновая уж очень. В жабире при флуде вообще боты и модеры повисают как тряпочки, озадачившись парсингом настолько что ничего другого делать вообще не успевают.
Справедливости ради json не имеет к xml никакого отношения
{
client: standalone,
policy: secutity
}
{
"client": "standalone",
"policy": "secutity"
}
> 2. Встроенную математическую библиотеку -> glm - очень странное решение,
> так как реализация может сильно отличаться, и надо будет переписать чуть менее, чем все.Это может прозвучать довольно странно, на библиотеки векторных/матричных операций обычно реализуют вычисления из математических книжек. Отличаются они обычно названиями методов, синтаксическим сахаром и некоторыми оптимизациями.
В теории математика одна единственная. А на практике есть код, у кода могут различные реализации.Например, порядок конвертации эйлеровых углов в кватернион может имеет разный порядок. Математика одна, а результат разный. Так же есть различные оптимизации, то есть математику надо положить на конкретную машину таким образом, чтобы получить максимальную производительность при наименьших затратах памяти. В таких случаях допускаются упрощения и неточности, так что по мат. части будет результат один, на практике другой. Такая математика называется прикладной.
как же хорошо ветку читать когда кто-то уже почистил от всяких фракталов
Игровой движок под жпл это сразу R.I.P.