Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Где вы храните большие списки свойств и настроек? (http://www.flasher.ru/forum/showthread.php?t=200074)

HorusWM 29.05.2013 19:42

Где вы храните большие списки свойств и настроек?
 
Всем привет, не нашел, поднималась ли уже данная тема, но вот я призадумался и стало интересно, кто как хранит множества разных параметров. Я сначала записывал настройки и свойства в хмл, откуда потом считывал, что мне нужно. Но хмл подводит, когда становится очень большой, некоторые свойства флеш просто не видит, словно бы их там и нет. Не знаю, может это особенность флеша такая, потому что при получении данных от сервера схожая фигня - когда данных много и поступают одни за другими сразу, строки ломаются или пропадают. Файлы .тхт вообще не рассматриваю - неудобно, имхо. Сейчас храню все большие списки свойств в виде статиков в классах - один хрен, да и обращаться просто.
А как делаете вы? Повторюсь. если эта тема уже поднималась, то дайте просто ссылочку.

MikroAcse 29.05.2013 20:01

Используй другой формат. Почему именно хмл? Самоубийца?

Rzer 29.05.2013 20:06

Никогда ничего из XML не пропадало...

caseyryan 29.05.2013 21:29

Всегда в xml храню. Первый раз слышу, чтобы какие-то свойства были не видны.
Можно пример файла, в котором что-то не читается флешем?

GBee 29.05.2013 21:32

ХМЛ конечно, но в последнее время json меня больше радует.

caseyryan 29.05.2013 21:43

Ты даже настройки в json хранишь?
Я обычно его для обмена данными использую, но настройки в xml храню, ибо человекочитаемее )

GBee 29.05.2013 22:32

Пока нет, но под джсон можно быстренько накалякать редактор. Просто я все больше пересаживаюсь на него. И если вдруг настройки должны будут приходить для юзера с сервера, то и переписывать немного. А хмл меня очень смущает своим нахождением в памяти. Иногда ощущение, что на каждый чих он создает кучу клонов ветвей и связок.

Babylon 30.05.2013 00:11

Какая то у вас XML фобия :)

expl 30.05.2013 00:42

Цитата:

Какая то у вас XML фобия
У авторов редактора sublime тоже. Конфиги его, конечно меньше символов занимают, но строчек дофига :)

Да, XML - это крутой, мощный формат.
Удобен для текстовых данных (в CDATA завернул и не надо escape-последовательностей).
Поддерживающий xslt(которым можно проверить корректность данных, преобразовать XML в другой вид и т.д.)
Только Вы когда-нибудь пользовались xslt?
Нужно ли вам несколько вариантов трактовки набора узлов?

Если в JSON всё отлично ложится, человеку удобнее работать с JSON, то зачем использовать XML? Затем что он "более стандартный"?
Отрадно что Вы осознали всю мощь XML, но зачем она здесь нужна?
Сам использовал XML и для конфига и для справочных данных, но будь оно на JSON - нисколько бы не обломался (Тупо серверисту было удобнее на XML, а клиентщикам было всё равно)

Есть ещё YAML, но там отпугивют значащие пробелы в начале строки. И 2 способа записи одного и того же несколько сбивают кураж.
Хотя разработчиков Unity3d это не испугало - всё что можно при использовании текстового режима там хранится именно в YAML.

Да, если структура в редакторе создаётся - то можно вообще в amf3 загонять - оно и флешплееру полегче будет парсить (люди локализацию в amf3 делали, мы как-то стеснялись)
Но! Я бы не хранил в бинарнике справочные данные - тяжело мержить, если их только один человек правит - тогда можно.

Передача запросов серверу делалась в amf3 всегда - компактно, руками их всё равно никто не пишет, бонус то что лишний раз хакеронубы не пытаются на лету поправить запрос(не нубам то это не преграда).

Цитата:

Сейчас храню все большие списки свойств в виде статиков в классах - один хрен, да и обращаться просто.
Возможно, в Вашей ситуации так и надо.
Но зачем же тогда делают внешние конфиги?

- чтобы поправить настройки при переносе флешки с сервера на сервер(чтобы не искать клиентщика с исходниками и не ждать пока он там всё настроит и перекомпилирует проект)

- чтобы компилировать одну и ту же флешку и на тестовый сервер и на боевой (а на этих серверах лежат разные конфиги)
Это реально старовится проблемой при частых обновлениях и большом количестве целей - можно ошибиться не ту версию скомпилировать/залить, не те параметры поставить - работать перестанет, а так - везде заливаешь одно и то же и голову себе не забиваешь.
(можно даже при достаточном уровне настраиваемости заливать одну и ту же флешку и на мой мир и на одноклассники и на вконтакт, к примеру)

Цитата:

Не знаю, может это особенность флеша такая, потому что при получении данных от сервера схожая фигня - когда данных много и поступают одни за другими сразу, строки ломаются или пропадают
Скорее это особенность рук разработчика :) Тут либо что-то с сетью у Вас, либо чего-то не так в документации поняли.

СлаваRa 30.05.2013 00:47

у нас JSON, советую глянуть еще vanilla

HorusWM 30.05.2013 15:51

Цитата:

Сообщение от expl (Сообщение 1135507)
Возможно, в Вашей ситуации так и надо.
Но зачем же тогда делают внешние конфиги?

- чтобы поправить настройки при переносе флешки с сервера на сервер(чтобы не искать клиентщика с исходниками и не ждать пока он там всё настроит и перекомпилирует проект)

- чтобы компилировать одну и ту же флешку и на тестовый сервер и на боевой (а на этих серверах лежат разные конфиги)
Это реально старовится проблемой при частых обновлениях и большом количестве целей - можно ошибиться не ту версию скомпилировать/залить, не те параметры поставить - работать перестанет, а так - везде заливаешь одно и то же и голову себе не забиваешь.
(можно даже при достаточном уровне настраиваемости заливать одну и ту же флешку и на мой мир и на одноклассники и на вконтакт, к примеру)

Да, при переносе появляются некоторые заморочки с изменениями путей и перекомпиляцией, но это не проблема, по большому счету.
Цитата:

Сообщение от expl (Сообщение 1135507)
Скорее это особенность рук разработчика :) Тут либо что-то с сетью у Вас, либо чего-то не так в документации поняли.

Возможно и так, мы с серверным программистом не нашли причину, почему так происходит( Пришлось ставить задержку при передаче в 0.3-0.4 сек чтобы не было разрывов строк.
Цитата:

Используй другой формат.
Какой другой? Бинарный формат, вроде бы, один. Только в одном случае используется возврат каретки, а в другом нет.

СлаваRa 30.05.2013 16:00

Форматов много XML, JSON, AMF, ProtoBuf, ________(дописать свое)

HorusWM 30.05.2013 16:23

Цитата:

Сообщение от СлаваRa (Сообщение 1135624)
Форматов много XML, JSON, AMF, ProtoBuf, ________(дописать свое)

По-факту, это все те же бинарники, часть данных из которых куда-то отваливается. Вот AMF мне интересен, есть где-то пример работы с ним?

caseyryan, пример файла не скину, его уже давно нет. Но там все стандартно: обращаюсь к хмл, все ветки читаю, но парочка-тройка просто не видны. Я создавал тут уже тему с этим вопросом и перепроверял все десятки раз, копипастами все имена забивал, чтоб точно без ошибок - один фик. Причем в 2х подряд проектах это наблюдал, пока не отказался от хмл.
С сервером схожая проблема: на сокет пришла строка, я распарсил и использую. Факт в том, что строка сразу уже может прийти оборванной, хотя в консоли сервера выводится нормально заканчивающаяся на EOF строка, которая отправлена во флеш. Такая фигня.

Babylon 30.05.2013 17:25

Фигня, в том что нечего обсуждать :)

expl 30.05.2013 22:01

Цитата:

По-факту, это все те же бинарники, часть данных из которых куда-то отваливается. Вот AMF мне интересен, есть где-то пример работы с ним?
Вообще XML и JSON считались всегда текстовыми форматами O_o
...если проблема в бинарных данных, то почему нельзя посмотреть что там за особые символы в текст попадают? Что с кодировкой?

AMF-3 - это стандартный формат сериализации flashplayer, бинарный. Может хранить массивы байт, текст, числа (кодируются негуманоиднее других типов), поддерживает циклические ссылки между сериализуемыми объектами и т.п.

Флешплеером читается/пишется нативно (Банальные методы ByteArray::writeObject и ByteArray::readObject используют AMF-3)
Для PHP есть библиотеки
новая спецификация - читать если решитесь править баги в PHP-либе, а так - не надо.

С AMF-3 можно сериализовывать/дисереализовывать _типизированные_ объекты при помощи registerClassAlias(), а можно не заморачиваться и использовать динамику (особенно если есть взаимодействие с PHP)

Т.е. если хотите попробовать AMF для конфига:
  • Пишете редактор на AIR, который создаёт оъект динамический с нужными параметрами.
    Редактор сохраняет этот оббъект в ByteArray, сохраняет ByteArray в файл.
  • Флешкой грузите этот файл как бинарный и читаете Object из ByteArray.

Для набора простых параметров делать редактор - дико, но можете попробовать.
Для начала не стоит делать функции редактирования - просто кодом создайте объект - посмотрите, его то хоть удастся загрузить.


Часовой пояс GMT +4, время: 13:24.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.