Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > 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,677
Репутация: 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,677
Репутация: 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


07:39.


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

RusProfile.ru


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