metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2013-01-12 06:02 pm

Бездны бинарных форматов

https://github.com/metametaclass/gr-air-modes/blob/master/python/altitude.py
Формат сообщения о высоте самолета в сообщении ADS-B

Такие чудеса битовой кодировки даже в эмбеддед железе белорусских государственных НИИ нечасто бывают :)

[identity profile] falcrum.livejournal.com 2013-01-12 03:02 pm (UTC)(link)
Завидуешь? :)

[identity profile] enternet.livejournal.com 2013-01-12 03:30 pm (UTC)(link)
Навскидку - ничего необычного. Вполне прозрачно.

[identity profile] skif-by.livejournal.com 2013-01-12 03:59 pm (UTC)(link)
А ты вот парсер такого говна напиши.

[identity profile] oldmann.livejournal.com 2013-01-12 04:02 pm (UTC)(link)
еще когда многие из вас на свет не появились, прекрасно коболом обмолачивалось "такое говно". на тысячекратно менее производительных машинах, чем андроид у вас в кармане.

это вам не типизация какая-нибудь.

[identity profile] skif-by.livejournal.com 2013-01-12 04:21 pm (UTC)(link)
На фортране тоже, как практика показывает

[identity profile] dair-spb.livejournal.com 2013-01-12 04:24 pm (UTC)(link)
То, что это (и не только) можно обмолотить — бесспорно. Но ЗАЧЕМ вот такое?

[identity profile] enternet.livejournal.com 2013-01-12 05:05 pm (UTC)(link)
Да написал уже и не один. К примеру GRIB2-формат ничем не лучше. Тоже всё упаковано, каждый бит что-то значит, но между секциями может быть вагон мусора.

[identity profile] skif-by.livejournal.com 2013-01-12 05:12 pm (UTC)(link)
GRIB2 парсил, BUFR советских идиотов тоже.

[identity profile] lazy-flyer.livejournal.com 2013-01-12 04:22 pm (UTC)(link)
nobody uses metric altitude: AFAIK, it's an orphaned part of the spec. haven't seen it in three years.

C этого места можно уже забивать толстый болт на всё, что ниже написано.
GPS валит все данные в банальном ASCII формате, но автору очень нравится через жопу гланды удалять. На кол.

[identity profile] tzirechnoy.livejournal.com 2013-01-12 04:45 pm (UTC)(link)
Вот именно из-за таких как Вы у нас и требуется гигагерц проца и пол-гига рамы чтобы позвонить без тормозов. Поскольку люди сначала пишут, а потом думают.

[identity profile] metaclass.livejournal.com 2013-01-12 04:50 pm (UTC)(link)
Это, блин, официальный стандарт передачи информации с самолетов. Там 500 страниц вот такой битовой шизы.

(Anonymous) 2013-01-12 04:56 pm (UTC)(link)
А вы не в авторах?

[identity profile] metaclass.livejournal.com 2013-01-12 05:08 pm (UTC)(link)
Не, меня в такие места не пустят. Стандарты будут слишком простыми :)

[identity profile] lazy-flyer.livejournal.com 2013-01-12 05:20 pm (UTC)(link)
Аха, я в курсах за протокол. Только я видел реализацию на побитовом сдвиге.

[identity profile] metaclass.livejournal.com 2013-01-12 05:42 pm (UTC)(link)
Вот я бы на ассемблере с флагами переноса быстрее бы сделал это все. А так приходится мудрить :)

[identity profile] lazy-flyer.livejournal.com 2013-01-12 05:47 pm (UTC)(link)
На С - не? :) Тем более, что формат слов жёстко определён. Создать структуру и указателем ползать по битам. :)

[identity profile] avnik.livejournal.com 2013-01-12 05:44 pm (UTC)(link)
Ребе, почитайте спеки на ASN.1 encoding rules (unaligned per) и какой нибудь телефонный протокол из недавно и не до конца мертвых (ss7 или h323)

(Anonymous) 2013-01-12 05:53 pm (UTC)(link)
Ребе, вы зачем на пистоне байтоёбствуете? Неб-гоугодное это дело.

[identity profile] metaclass.livejournal.com 2013-01-12 06:09 pm (UTC)(link)
Так это не мой код, я его как референс использую и мелкие доработки вкручиваю.

(Anonymous) 2013-01-12 08:35 pm (UTC)(link)
Ах, вот как.
Но всё равно не по-б-жески как-то :)

[identity profile] denisioru.livejournal.com 2013-01-12 05:56 pm (UTC)(link)
Похоже на говнище от терминалов Skywave. Там >= 80 бит пакет (битовый поток, без разделения на байты или слова, деление сугубо по полям, многие вперемешку и разбросаны по разным местам пакета). Бинарный пакет превращается в base64, потом в укладывается как узел в XML. Цель такой манипуляции неясна.

[identity profile] levgem.livejournal.com 2013-01-12 06:13 pm (UTC)(link)
на эрланге такое только в путь парсить

[identity profile] peter lemenkov (from livejournal.com) 2013-01-12 07:45 pm (UTC)(link)
Мое любимое

* https://tools.ietf.org/rfcmarkup?doc=5389#page-11

Как декодировать на Erlang

* https://github.com/lemenkov/rtplib/blob/master/src/stun.erl#L41

[identity profile] antilamer.livejournal.com 2013-01-13 03:21 am (UTC)(link)
А какой смысл в этом изначально? Неужели такое странное представление, с перестановками бит например, проще генерировать?
Я про это:
    #okay, the order they come in is:
    #C1 A1 C2 A2 C4 A4 X B1 D1 B2 D2 B4 D4
    #the order we want them in is:
    #D2 D4 A1 A2 A4 B1 B2 B4

[identity profile] metaclass.livejournal.com 2013-01-13 07:47 am (UTC)(link)
Понятия не имею, это какая-то дичь с легаси, усугубленная разработкой государственными комитетами.

[identity profile] metaclass.livejournal.com 2013-01-13 10:27 am (UTC)(link)
Тут подали идею - это, возможно, заточено под некие существующие аппаратные декодеры времен царя гороха, которые никто менять не будет.

[identity profile] bambr77.livejournal.com 2013-01-13 10:23 am (UTC)(link)
Ну например в староглиняные времена это могло парсится вообще не процессором например. А жесткой логикой. Сдвиговые регистры, триггеры и прочее в том же духе. И авиация в этом смысле дичайше консервативна, что правильно. И скорости там могут быть вовсе не 100500Кбит/сек, а вообще какие 9600. Так что лишний мегабайт хмл-ного оверхеда никуда не пролезет.
Ребе, вас что, битовые операции смущают?

[identity profile] metaclass.livejournal.com 2013-01-13 10:25 am (UTC)(link)
Меня смущает отсутствие под руками ассемблера в питонах и C#.
На логике и низкоуровневых языках я бы это быстрее сделал :)

[identity profile] bambr77.livejournal.com 2013-01-13 10:29 am (UTC)(link)
Так это. Есть же там и & и | и прочие >> c ^ :) Только вот jmp не хватает :) Или скорее jnz и jc всяких, да?

[identity profile] metaclass.livejournal.com 2013-01-13 10:35 am (UTC)(link)
Флагов переноса и сдвигов с ними не хватает. Дичайше.
Зато есть отладочные логи. Вместо светодиодов :)

[identity profile] bambr77.livejournal.com 2013-01-13 10:36 am (UTC)(link)
Не может лог заменить светодиоды! Никак не может. Светодиоды интереснее :)

[identity profile] berezovsky.livejournal.com 2013-01-13 10:39 am (UTC)(link)
Можно кормить логи спецсервису, который управляет светодиодами. А светодиоды сверху на монитор приебенить.

Сергей Рыжков, директор Кроникс+, выдвигал отличную идею: во все сервера
(желательно и на колокейшне) ставится звуковуха, маленький динамик и
небольшая программа. Которая произносит случайное ругательство при
прохождении
каждого гигабайта через сетевуху. Представь - датацентр, темнота, и
только негромко матерятся сервера в стойках.

[identity profile] bambr77.livejournal.com 2013-01-13 10:42 am (UTC)(link)
Скармливать битовый поток плате на 155-й логике. А плата мигает светодиодами. Вот наш метод! :)

[identity profile] potan.livejournal.com 2013-01-13 11:14 am (UTC)(link)
С ерланговскими бинарисами получится значительно короче.

[identity profile] theiced.livejournal.com 2013-01-13 12:32 pm (UTC)(link)
на пейтоне там говно какое то написано (что впрочем неудивительно. я вот последние пару месяцев интегрирую нас с разными пейтонными поделиями - они все говно и писаны уёбками). надо жыж дсл свой сначала писать жыж.

[identity profile] metaclass.livejournal.com 2013-01-13 12:38 pm (UTC)(link)
Да, DSL тут надо. Но там в целом все херово, так что разницы особой нет.

[identity profile] theiced.livejournal.com 2013-01-13 12:48 pm (UTC)(link)
ну потому что пейтон. я вам кричу, я за 2 месяца насмотрелся на пару десятков пейтонных поделий - от мелочи разной до энтерпрайзного говнища (openstack например). там везде чуть более чем полное отсутсвие какого либо предварительного дизайна либ, отсутствие общего стиля кода, говнокод чуть более чем везде, то что ненужно - документированно, то что нужно - хуй. итд итд итд.

[identity profile] metaclass.livejournal.com 2013-01-13 01:07 pm (UTC)(link)
Там и без питона - сама спека на этот формат - ебаное говно и пиздец.

[identity profile] theiced.livejournal.com 2013-01-13 01:16 pm (UTC)(link)
логическая цепочка - пейтон - рукожопые уебланы - говнософт. независимо от спеки на формат.