zHz00 Untitled

пятница, 11 января 2013
23:48 Сериализация
Если у вас есть "мёртвая" структура, в которой только одни данные, её лучше всё равно не записывать на диск как побайтовую копию структуры в памяти (а потом так же считывать её обратно), по крайней мере по двум причинам.
1. Если вы случайно (случайно?!) перекомпилируете с другим выравниванием по границам байт, слов, двойных слов (#pragma pack(n)), вы из сохранённого файла нифига не прочтёте.
2. Если вам придётся изменить структуру (а её придётся изменить, даже если вы 100% уверены, что она никогда меняться не будет), файл опять-таки станет непригодным для чтения.

Ну а если структура не мёртвая, а в ней есть другие об'екты-классы с системой выделения памяти, то это вообще атас и вы дерьма не оберётесь (сам проверял) пытаясь сначала считать с диска об'ект как есть, а потом чинить указатели и прочее.

Если об'ект нужно сохранять на диск, очень лучше сделать отдельные функции по сохранению его на диск (или хотя бы в массив байтов) и по чтению с диска (это и называется сериализацией). Лучше всего делать их как методы класса (структуры). Они должны по одному читать (писать) поля об'екта (это может показаться очень муторным, тогда в можете воспользоваться одним трюком). При этом следует уделить особое внимание версии об'екта и записывать её тоже, чтобы при изменении формата об'екта (т.е. создании новой версии его) можно было продолжать считывать в него старые данные.

Благодарность за вразумление: himself'у.

@темы: Программирование, Очевидное-невероятное

URL
Кстати! Там, куда меня занесла нелегкая, будет проходить ...
Корейские чаты - загадочное и непонятное место, лишний ра...
ужас, в пятницу жутко нос чесался, но болела голова. Выпи...
http://outline.ru/sorokin/ Классная вещь! Теперь, на...
Слушал брачные песни росомах. Положил на ноты. Получилось...
Hашел красивый красный гриб. Съел. Hевкусно. Весь день сл...

12.01.2013 в 09:34

12.01.2013 в 09:34
а еще лучше не писать свои костыли и взять brotobuf или json или xml библиотеки в зависимости от.
URL

12.01.2013 в 19:21

12.01.2013 в 19:21

URL

12.01.2013 в 20:04

12.01.2013 в 20:04
Гость, ?
korrshun, то, что вы пишете, мне неведомо. Буду искать это, спасибо. Но хмл мне не подходит, потому что та хрень, которую мне надо сохранять внедрена в другую хрень, у которой заведомо двоичный формат. И вообще хмл вызывает у меня какое-то ощущение одновременно паттерна и анти-паттерна. Что, надо что-то сохранить? Лепим хмл не думая!
URL

12.01.2013 в 20:21

12.01.2013 в 20:21
demotivators.to/media/preview/63956_nelzya-pros... - очень трогательная ссылка.
по-моему мнению xml это тоже кроваво, с точки зрения времени обработки и того сколько оно жрет памяти,
но хорошо тем, что написана уже гора библиотек для него, есть условно полезные, пускай и монструозные стандарты (xsd, xml-rpc) и можно с такой-то матерью распарсить содержимое, даже если сам xml кривой по самое немогу - весь современный веб это доказывает.
URL

12.01.2013 в 21:40

12.01.2013 в 21:40
korrshun,
403 Forbidden
nginx

это ваша трогательная ссылка. И я кажется понял, почему пост гостя пустой.
URL

13.01.2013 в 08:28

13.01.2013 в 08:28
название картинки все объясняет
URL
Добавить комментарий

Расширенная форма

Подписаться на новые комментарии
Получать уведомления о новых комментариях на E-mail