Aa | Aa |
Коллекции загружаются
#жизнь
Было 9 вечера, мы обсуждали формат представления пакета в бинарном виде, хотя рабочий день кончился два часа назад. Это всё что я хочу сказать о этом понедельнике. 5 февраля 2018
1 |
Эмм, а чего в этом такого? В любой системе у тебя пакет бинарем и строго структурирован.
|
Ластро
|
|
Да ничего особого, рабочая текучка. Согласовывали какие байты нужно где писать (у нас последовательность байт переменной длины, хранящих вложенные записи переменной длины, хранящих данные переменной длины (и всё это с минимумом сопроводительных меток)), чтобы оно распарсилось быстро и без напрягов.
|
Ластро
|
|
И эта штука путешествует между программами написанными на разных языках.
|
Ал Ластор
Я немного не в теме, посоны, но что такое пакет в данном случае? |
Ластро
|
|
В данном случае пакет это последовательность записей. Причём у записей есть паршивое свойство, размер у них плавает. Причём запись кодируется так (сюрпрайз!), что не распарсив её целиком, понять где начинается следующая невозможно. И всё это путешествует между программами написанными на разных языках.
P.S. Что в записях я умолчу. |
Ал Ластор
Я кстати не понимаю на кой хрен вы их делаете переменными по длине? Если открыть любой стандарт, то длина пакета, как и внутренняя структура обычно либо ГОСТируются для гос. стандартов связи, либо остаются неизменными при построении системы, чтоб не было геморроя потом мудрить с их согласованием. |
Романтик
Нет, это общеупотребительное название строго определенной последовательности байт, которой обмениваются устройства при связи друг с другом. Ну в случае Алластора замени устройства на программы, но суть не поменяется. |
EnGhost
Вот оно чё. Спасибо за разъяснение, мужик) Сам я с межпрограммным взаимодействием ещё, увы, не работал :( |
Ластро
|
|
Романтик, в оригинале очередь.
EnGhost, я очень хочу посмотреть в глаза человеку, который сделал это так, что нормальную сериализацию без геморроя сделать стало невозможно. А та которая есть хороша (реально хороша! Быстрая, элегантная, красивая, кратко записанная, с применением апликативных функторов и шаблонов обобощеного программирования) ровно до тех пор, пока у нас используется Хаскель, а как нужно встретиться с СИ++ начинаются обсуждения как именно оно представляется в бинарных данных. Ну хорошо, что не мне это разбирать руками. |
> ровно до тех пор, пока у нас используется Хаскель
и вот так всегда с экзотикой! 1 |
Ластро
|
|
EnGhost, и да, у нас всё это рождается по ходу дела, а потом... имеем то что имеем.
|
Facensearo
Так всегда, пока народ не научится сначала согласовывать протоколы взаимодействия, а потом уже творить. Блин, Госты же не для дураков написаны, а там есть прекрасный пункт о обязательном написании протокола взаимодействия, где и указывается, что как и в каком виде передается в пакете, и какие команды вообще учавствуют в сетевых взаимодействиях. 2 |
Какое извращение. А использовать стандартный xml, засунув его в gzip, условия задачи не позволяют?
|
Ластро
|
|
Elijah Craig, менее компактно получается.
|
Ал Ластор
В 2018 году вы экономите килобайты траффика? ... Спутниковый канал и маломощные процы? |
Ластро
|
|
Без комментариев, всё может измениться. За сериализацию отвечаю не я :))
|
Просто если жестокий лимит по железу, я не вижу причин использовать хаскел.
|
Ластро
|
|
Есть узкие места, конкретно здесь упаковать нужно как можно компактнее, а где-то вообще чхать на расходы и шлём банальным джейсоном, причём как бы не с пробелами "повышающими читаемость" (но не уверен, нужно смотреть в код) , как-то так. Почему так, без комментариев.
|