Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.
Внимание! Некоторое время письма не доходят до аккаунтов MAIL RU GROUP, не доходят на все почтовые ящики mail.ru, inbox.ru, bk.ru. Пишите им жалобы, чтобы быстрее восстановили получение писем, регистрируйтесь через яндекс почту и gmail, туда письма с активизацией доходят.

Вернуться   Форум программистов > Web > Общие вопросы Web
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 30.10.2015, 16:38   #1
Foxeestyle
 
Регистрация: 10.02.2013
Адрес: Санкт-Петербург
Сообщений: 8
Репутация: 10
Сообщение Спецификация Flash AMF3 и разбор полётов

Вопрос к добрым молодцам, которые сталкивались со спецификацией формата AMF от Adobe, ну или к тем, кто щёлкает спецификации как орешки "на раз-два" :D Целью является накодить удобоваримый парсер для Delphi, но я плаваю в спецификации, в частности, в комплексных байтах, в "traits" и "reference tables".

Первый вопрос. Что такое "traits" мне не ясно вовсе, суть ссылочных таблиц я, в принципе, понимаю, но не понимаю где эти ссылочные таблицы хранятся, как в них записывается значение и тем более как потом по какому-то индексу на это значение ссылается AMF3.

Нагуглено много запросов на эту тему, и вот я нашёл, казалось бы, доступное объяснение структуры формата AMF3 (с AMF0 всё проще). На одном из ресурсов приводится пример кодирования объекта AS3:

this.ui = "button_press";
this.param = 5;

Цитата:
0A - the object tag
Тут всё ясно
Цитата:
2B - u29o-val: 2 sealed members, object with traits and data, possibly dynamic members
И тут напрашивается второй вопрос. 2B это 00101011. Где в этих восьми битах можно лицезреть, что в объекте два элемента и прочие прелести?
Цитата:
01 - empty string -- anonymous object
Тут тоже ясно, вместо типа объекта передаётся пустая строка, следовательно, объект анонимный
Цитата:
05 - string-by-value, string length: 2
00000101. Тут много информации. Должно быть понятно, что передаётся строка, по значению, и ещё и длина тут закодирована. Я не вижу где :/
Цитата:
75 69 - 'ui'
0B - string-by-value, string length: 5
70 61 72 61 6D - 'param'
19 - string-by-value, string length: 12
...
Тут со строками те же вопросы.

Буду благодарен за любую информацию
Foxeestyle вне форума   Ответить с цитированием
Старый 30.10.2015, 19:27   #2
Vapaamies
Ваш К. О.
Профессионал
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Адрес: Санкт-Петербург
Сообщений: 1,679
Репутация: 973
По умолчанию

Я в оригинальной доке по-быстрому прочел этот кусок, всё понятно. Вечером попробую расписать из дома.
__________________
Разработчик языка программирования Кантор
Vapaamies вне форума   Ответить с цитированием
Старый 31.10.2015, 05:46   #3
Freakytools
Новичок
 
Аватар для Freakytools
 
Регистрация: 31.10.2015
Адрес: Санкт-Петербург
Сообщений: 2
Репутация: 10
По умолчанию

Vapaamies, спасибо за ответы, уже во второй теме Вы единственный, кто указывает путь наружу из сложившейся ситуации Весы жмакнул.
P.S.: Это топикстартер Foxeestyle. С тем аккаунтом у меня возникли проблемы.
__________________
Keep calm and love coding
Freakytools вне форума   Ответить с цитированием
Старый 31.10.2015, 15:39   #4
Vapaamies
Ваш К. О.
Профессионал
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Адрес: Санкт-Петербург
Сообщений: 1,679
Репутация: 973
По умолчанию

Цитата:
Сообщение от Freakytools Посмотреть сообщение
уже во второй теме Вы единственный, кто указывает путь наружу из сложившейся ситуации
Меня не покидает ощущение, что на этом форуме я один из немногих, кто пытается вытащить темы на конструктив, а не заполнять однотипными ответами, особенно адекватные темы.

Цитата:
Сообщение от Freakytools Посмотреть сообщение
С тем аккаунтом у меня возникли проблемы.
В таком случае прогноз на самостоятельное освоение неблагоприятный. Либо это будет как посвящение в рыцари.

Моя помощь как, еще нужна? Вчера ночью я, как и обещал, открыл доку Adobe по AMF3, даже скопировал оттуда цитату, но написать ответ уже не было сил.

С точки зрения теории двоичные форматы проигрывают текстовым при хранении чисел: без дополнительных ухищрений для 32-байтного числа всегда расходуется 4 байта, тогда как в текстовом формате однозначные числа занимают один байт. Чтобы не хранить кучу нулей, разработчики двоичных форматов придумывают способы кодирования чисел переменным числом байт. Так сделано в Google Protocol Buffers, так сделано и у Adobe.

У Adobe формат называется U29 и по способу кодирования похож на UTF-8. В доке всё описано. Кодирование UTF-8 расписано в Википедии. Функции UTF8Encode и UTF8Decode есть в модуле System -- можно посмотреть реализацию, как идет работа с битами. Для U29 придется писать что-то похожее.

В разделе "3.12 Object type" описывается хранение флагов, длин, индексов и ссылок в значащей части U29. Вначале идет теория, а потом фактическое описание формата. Записи вида "U29O-traits-ref" -- это БНФ формата, как понял. Ранее в тексте встречается аббревиатура ABNF (Adobe BNF?). Короче, нужно читать, выделять биты и экспериментировать.

Вчера еще Google предлагал мне реализацию AMF3 на PHP. Можно ее скачать и подсматривать. Сам не смотрел. Оставляю в качестве домашнего задания.
__________________
Разработчик языка программирования Кантор
Vapaamies вне форума   Ответить с цитированием
Старый 01.11.2015, 01:56   #5
Freakytools
Новичок
 
Аватар для Freakytools
 
Регистрация: 31.10.2015
Адрес: Санкт-Петербург
Сообщений: 2
Репутация: 10
По умолчанию

В очередной раз спасибо огромное, пищи для ума предостаточно, и ясно, в какую сторону смотреть :D
__________________
Keep calm and love coding
Freakytools вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос значений таблицы из MS Excel в MS Word. Delphi. Шпаргалка и "разбор полётов". Ship_1 Помощь студентам 8 04.04.2016 14:42
Delphi и AMF0/AMF3 Foxeestyle Работа с сетью в Delphi 3 27.10.2015 15:11
Спецификация стали stas_org Microsoft Office Access 0 09.10.2011 17:59
Спецификация исключений Kn793 Общие вопросы C/C++ 3 28.06.2010 21:26


20:42.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru