↓
 ↑
Регистрация
Имя/email

Пароль

 
Войти при помощи
Ластро
5 февраля 2018
Aa Aa
#жизнь
Было 9 вечера, мы обсуждали формат представления пакета в бинарном виде, хотя рабочий день кончился два часа назад. Это всё что я хочу сказать о этом понедельнике.
5 февраля 2018
19 комментариев
Эмм, а чего в этом такого? В любой системе у тебя пакет бинарем и строго структурирован.
Ластро
Да ничего особого, рабочая текучка. Согласовывали какие байты нужно где писать (у нас последовательность байт переменной длины, хранящих вложенные записи переменной длины, хранящих данные переменной длины (и всё это с минимумом сопроводительных меток)), чтобы оно распарсилось быстро и без напрягов.
Ластро
И эта штука путешествует между программами написанными на разных языках.
Ал Ластор
Я немного не в теме, посоны, но что такое пакет в данном случае?
Ластро
В данном случае пакет это последовательность записей. Причём у записей есть паршивое свойство, размер у них плавает. Причём запись кодируется так (сюрпрайз!), что не распарсив её целиком, понять где начинается следующая невозможно. И всё это путешествует между программами написанными на разных языках.

P.S. Что в записях я умолчу.
Последовательность записей? Своего рода контейнер, коллекция? Такое понятие характерно только для твоего языка программирования? (Haskell кстати?)
Причём запись кодируется так (сюрпрайз!), что не распарсив её целиком, понять где начинается следующая невозможно.

А чё так сложно-то?
Ал Ластор
Я кстати не понимаю на кой хрен вы их делаете переменными по длине? Если открыть любой стандарт, то длина пакета, как и внутренняя структура обычно либо ГОСТируются для гос. стандартов связи, либо остаются неизменными при построении системы, чтоб не было геморроя потом мудрить с их согласованием.
Романтик
Нет, это общеупотребительное название строго определенной последовательности байт, которой обмениваются устройства при связи друг с другом. Ну в случае Алластора замени устройства на программы, но суть не поменяется.
EnGhost
Вот оно чё. Спасибо за разъяснение, мужик)
Сам я с межпрограммным взаимодействием ещё, увы, не работал :(
Ластро
Романтик, в оригинале очередь.
EnGhost, я очень хочу посмотреть в глаза человеку, который сделал это так, что нормальную сериализацию без геморроя сделать стало невозможно.
А та которая есть хороша (реально хороша! Быстрая, элегантная, красивая, кратко записанная, с применением апликативных функторов и шаблонов обобощеного программирования) ровно до тех пор, пока у нас используется Хаскель, а как нужно встретиться с СИ++ начинаются обсуждения как именно оно представляется в бинарных данных. Ну хорошо, что не мне это разбирать руками.
> ровно до тех пор, пока у нас используется Хаскель

и вот так всегда с экзотикой!
Ластро
EnGhost, и да, у нас всё это рождается по ходу дела, а потом... имеем то что имеем.
Facensearo

Так всегда, пока народ не научится сначала согласовывать протоколы взаимодействия, а потом уже творить. Блин, Госты же не для дураков написаны, а там есть прекрасный пункт о обязательном написании протокола взаимодействия, где и указывается, что как и в каком виде передается в пакете, и какие команды вообще учавствуют в сетевых взаимодействиях.
Какое извращение. А использовать стандартный xml, засунув его в gzip, условия задачи не позволяют?
Ластро
Elijah Craig, менее компактно получается.
Ал Ластор
В 2018 году вы экономите килобайты траффика? ... Спутниковый канал и маломощные процы?
Ластро
Без комментариев, всё может измениться. За сериализацию отвечаю не я :))
Просто если жестокий лимит по железу, я не вижу причин использовать хаскел.
Ластро
Есть узкие места, конкретно здесь упаковать нужно как можно компактнее, а где-то вообще чхать на расходы и шлём банальным джейсоном, причём как бы не с пробелами "повышающими читаемость" (но не уверен, нужно смотреть в код) , как-то так. Почему так, без комментариев.
ПОИСК
ФАНФИКОВ







Закрыть
Закрыть
Закрыть