home.social

#сериализация — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #сериализация, aggregated by home.social.

  1. Plain text serialization

    Я люблю простые костыли. Когда требуется сериализовать некоторые поля в какой-то текстовый формат, бывает удобно использовать промежуточное представление данных вида: // Name/Value item public class NVItem { public string? Name; public object? Value; public IEnumerable? SubItems; public NVItem(string? name, object? value) { Name = name; if (value==null) return; SubItems = value as IEnumerable; if (SubItems != null) return; // Упс! Value = value as string; if (Value != null) return; var num = value as IEnumerable; if (num==null) { Value = value; } else { SubItems = num.Cast<object>().Select(t => new NVItem(null, t)); } } }

    habr.com/ru/articles/986834/

    #сериализация #злые_гении

  2. Самоописывающая сериализация графов объектов в C++

    Более 10 лет назад я создал систему сериализации для решения задачи, с которой плохо справляются JSON, protobuf и другие форматы — сохранение runtime-графов объектов с циклами, полиморфизмом и ссылками. Большинство сериализаторов работают с деревьями, но ломаются на: Циклических зависимостях Указателях между объектами Наследовании и полиморфизме Ссылках на поля других объектов Моя система умеет всё это — и даже слишком. Она полностью самоописывающаяся, сохраняет полную информацию о типах и связях, имеет бинарный формат и изоморфный ему текстовый дамп для отладки. В статье покажу: Как сериализовать графы с циклами без ручного кода Работу с полиморфизмом через TAutoPtr<BaseClass> Почему TFieldPtr (ссылки на поля объектов) оказался тупиковой идеей Что сработало, а что пришлось выбросить спустя годы Это не готовая библиотека — проект заморожен из-за проблем со временем компиляции. Но архитектурные решения и полученный опыт до сих пор актуальны для разработчиков сложных систем. Статья для тех, кто устал бороться с ограничениями стандартных сериализаторов при работе с объектными графами.

    habr.com/ru/articles/976426/

    #сериализация #разработка_игр #рефлексия #опыт #препроцессор #с++ #с++17 #cad

  3. Оптимизация обработки больших отчетов в .NET Core: от памяти к потокам

    Оптимизация обработки больших отчетов в .NET Core: от памяти к потокам Отчёты росли, память заканчивалась. Пришлось отказаться от словарей в пользу потоковой сериализации JSON. Делюсь, как реализовал запись отчёта «на лету» и заставил.NET работать с гигабайтами данных без OutOfMemory.

    habr.com/ru/articles/967432/

    #NET #c# #сериализация #streaming #оптимизация #производительность #архитектура #xbrl #работа_с_памятью #json

  4. Оптимизация обработки больших отчетов в .NET Core: от памяти к потокам

    Оптимизация обработки больших отчетов в .NET Core: от памяти к потокам Отчёты росли, память заканчивалась. Пришлось отказаться от словарей в пользу потоковой сериализации JSON. Делюсь, как реализовал запись отчёта «на лету» и заставил.NET работать с гигабайтами данных без OutOfMemory.

    habr.com/ru/articles/967432/

    #NET #c# #сериализация #streaming #оптимизация #производительность #архитектура #xbrl #работа_с_памятью #json

  5. Оптимизация обработки больших отчетов в .NET Core: от памяти к потокам

    Оптимизация обработки больших отчетов в .NET Core: от памяти к потокам Отчёты росли, память заканчивалась. Пришлось отказаться от словарей в пользу потоковой сериализации JSON. Делюсь, как реализовал запись отчёта «на лету» и заставил.NET работать с гигабайтами данных без OutOfMemory.

    habr.com/ru/articles/967432/

    #NET #c# #сериализация #streaming #оптимизация #производительность #архитектура #xbrl #работа_с_памятью #json

  6. Оптимизация обработки больших отчетов в .NET Core: от памяти к потокам

    Оптимизация обработки больших отчетов в .NET Core: от памяти к потокам Отчёты росли, память заканчивалась. Пришлось отказаться от словарей в пользу потоковой сериализации JSON. Делюсь, как реализовал запись отчёта «на лету» и заставил.NET работать с гигабайтами данных без OutOfMemory.

    habr.com/ru/articles/967432/

    #NET #c# #сериализация #streaming #оптимизация #производительность #архитектура #xbrl #работа_с_памятью #json

  7. [Перевод] Новый экспериментальный API для JSON в Go

    Команда Go for Devs подготовила перевод статьи о новом экспериментальном API для работы с JSON в Go. Спустя почти 15 лет после появления encoding/json в стандартной библиотеке разработчики столкнулись с его ограничениями. В версии Go 1.25 появился экспериментальный encoding/json/v2 — он решает старые проблемы, добавляет потоковую обработку и повышает производительность.

    habr.com/ru/articles/945434/

    #go #json #encoding #сериализация #производительность #потоковая_обработка #совместимость #api

  8. [Перевод] Новый экспериментальный API для JSON в Go

    Команда Go for Devs подготовила перевод статьи о новом экспериментальном API для работы с JSON в Go. Спустя почти 15 лет после появления encoding/json в стандартной библиотеке разработчики столкнулись с его ограничениями. В версии Go 1.25 появился экспериментальный encoding/json/v2 — он решает старые проблемы, добавляет потоковую обработку и повышает производительность.

    habr.com/ru/articles/945434/

    #go #json #encoding #сериализация #производительность #потоковая_обработка #совместимость #api

  9. [Перевод] Новый экспериментальный API для JSON в Go

    Команда Go for Devs подготовила перевод статьи о новом экспериментальном API для работы с JSON в Go. Спустя почти 15 лет после появления encoding/json в стандартной библиотеке разработчики столкнулись с его ограничениями. В версии Go 1.25 появился экспериментальный encoding/json/v2 — он решает старые проблемы, добавляет потоковую обработку и повышает производительность.

    habr.com/ru/articles/945434/

    #go #json #encoding #сериализация #производительность #потоковая_обработка #совместимость #api

  10. [Перевод] Новый экспериментальный API для JSON в Go

    Команда Go for Devs подготовила перевод статьи о новом экспериментальном API для работы с JSON в Go. Спустя почти 15 лет после появления encoding/json в стандартной библиотеке разработчики столкнулись с его ограничениями. В версии Go 1.25 появился экспериментальный encoding/json/v2 — он решает старые проблемы, добавляет потоковую обработку и повышает производительность.

    habr.com/ru/articles/945434/

    #go #json #encoding #сериализация #производительность #потоковая_обработка #совместимость #api

  11. [Перевод] От минут к секундам: как в Sealos сократили время активации для 20К+ доменов

    Sealos удалось сократить время активации доменов на Kubernetes с 10 минут до всего 5 секунд. В статье раскрыты технические детали оптимизации Ingress с помощью Higress, Istio и Envoy, а также оригинальные алгоритмы и подходы, которые помогли преодолеть узкие места и улучшить масштабируемость кластера. Читайте, как повысить производительность и надёжность своей инфраструктуры.

    habr.com/ru/companies/flant/ar

    #kubernetes #ingress #higress #envoy #protobuf #filterchains #xxhash #рекурсивное_хеширование #сериализация #активация_доменов

  12. [Перевод] От минут к секундам: как в Sealos сократили время активации для 20К+ доменов

    Sealos удалось сократить время активации доменов на Kubernetes с 10 минут до всего 5 секунд. В статье раскрыты технические детали оптимизации Ingress с помощью Higress, Istio и Envoy, а также оригинальные алгоритмы и подходы, которые помогли преодолеть узкие места и улучшить масштабируемость кластера. Читайте, как повысить производительность и надёжность своей инфраструктуры.

    habr.com/ru/companies/flant/ar

    #kubernetes #ingress #higress #envoy #protobuf #filterchains #xxhash #рекурсивное_хеширование #сериализация #активация_доменов

  13. [Перевод] От минут к секундам: как в Sealos сократили время активации для 20К+ доменов

    Sealos удалось сократить время активации доменов на Kubernetes с 10 минут до всего 5 секунд. В статье раскрыты технические детали оптимизации Ingress с помощью Higress, Istio и Envoy, а также оригинальные алгоритмы и подходы, которые помогли преодолеть узкие места и улучшить масштабируемость кластера. Читайте, как повысить производительность и надёжность своей инфраструктуры.

    habr.com/ru/companies/flant/ar

    #kubernetes #ingress #higress #envoy #protobuf #filterchains #xxhash #рекурсивное_хеширование #сериализация #активация_доменов

  14. [Перевод] От минут к секундам: как в Sealos сократили время активации для 20К+ доменов

    Sealos удалось сократить время активации доменов на Kubernetes с 10 минут до всего 5 секунд. В статье раскрыты технические детали оптимизации Ingress с помощью Higress, Istio и Envoy, а также оригинальные алгоритмы и подходы, которые помогли преодолеть узкие места и улучшить масштабируемость кластера. Читайте, как повысить производительность и надёжность своей инфраструктуры.

    habr.com/ru/companies/flant/ar

    #kubernetes #ingress #higress #envoy #protobuf #filterchains #xxhash #рекурсивное_хеширование #сериализация #активация_доменов

  15. Простая минификация Json тел запросов / ответов с Kotlin Serialization

    Привет! Недавно в рамках одного из проектов на стеке KMP, Ktor и Kotlin Serialization мы с командой решили провести эксперимент и определить возможность и целесобразность минификации тел запросов / ответов на Json. Да, мы знаем про GraphQL, Protobuf и др., но в нашем случае имел место необузданный интерес наколхозить такое решение. И при всей его наивности удалось сократить средний размер итоговых джсонов (после всех внутренних оптимизаций) на 15-20%.

    habr.com/ru/articles/933474/

    #kotlin #kmp #kotlin_multiplatform #ktor #json #kotlin_serialization #оптимизация_запросов #http #архитектура #сериализация

  16. Простая минификация Json тел запросов / ответов с Kotlin Serialization

    Привет! Недавно в рамках одного из проектов на стеке KMP, Ktor и Kotlin Serialization мы с командой решили провести эксперимент и определить возможность и целесобразность минификации тел запросов / ответов на Json. Да, мы знаем про GraphQL, Protobuf и др., но в нашем случае имел место необузданный интерес наколхозить такое решение. И при всей его наивности удалось сократить средний размер итоговых джсонов (после всех внутренних оптимизаций) на 15-20%.

    habr.com/ru/articles/933474/

    #kotlin #kmp #kotlin_multiplatform #ktor #json #kotlin_serialization #оптимизация_запросов #http #архитектура #сериализация

  17. Простая минификация Json тел запросов / ответов с Kotlin Serialization

    Привет! Недавно в рамках одного из проектов на стеке KMP, Ktor и Kotlin Serialization мы с командой решили провести эксперимент и определить возможность и целесобразность минификации тел запросов / ответов на Json. Да, мы знаем про GraphQL, Protobuf и др., но в нашем случае имел место необузданный интерес наколхозить такое решение. И при всей его наивности удалось сократить средний размер итоговых джсонов (после всех внутренних оптимизаций) на 15-20%.

    habr.com/ru/articles/933474/

    #kotlin #kmp #kotlin_multiplatform #ktor #json #kotlin_serialization #оптимизация_запросов #http #архитектура #сериализация

  18. Простая минификация Json тел запросов / ответов с Kotlin Serialization

    Привет! Недавно в рамках одного из проектов на стеке KMP, Ktor и Kotlin Serialization мы с командой решили провести эксперимент и определить возможность и целесобразность минификации тел запросов / ответов на Json. Да, мы знаем про GraphQL, Protobuf и др., но в нашем случае имел место необузданный интерес наколхозить такое решение. И при всей его наивности удалось сократить средний размер итоговых джсонов (после всех внутренних оптимизаций) на 15-20%.

    habr.com/ru/articles/933474/

    #kotlin #kmp #kotlin_multiplatform #ktor #json #kotlin_serialization #оптимизация_запросов #http #архитектура #сериализация

  19. Сериализация в Unity: известные атрибуты и их проблемы

    Любой Unity-разработчик знаком с атрибутом [SerializeField] , который позволяет сериализовывать непубличные члены класса и, соответственно, отображать их в инспекторе. Но, в силу его ограниченности, позже начали появляться и другие способы сериализации. Попробую кратко рассказать, какие альтернативы используются, зачем все они нужны, как работают и, о чём не любят писать в кликбейтных постах, какие подводные камни могут скрывать.

    habr.com/ru/articles/920398/

    #unity #gamedev #геймдев #игровая_разработка #сериализация #данные #ассеты #serialization #SerializeField #serializereference

  20. Сериализация в Unity: известные атрибуты и их проблемы

    Любой Unity-разработчик знаком с атрибутом [SerializeField] , который позволяет сериализовывать непубличные члены класса и, соответственно, отображать их в инспекторе. Но, в силу его ограниченности, позже начали появляться и другие способы сериализации. Попробую кратко рассказать, какие альтернативы используются, зачем все они нужны, как работают и, о чём не любят писать в кликбейтных постах, какие подводные камни могут скрывать.

    habr.com/ru/articles/920398/

    #unity #gamedev #геймдев #игровая_разработка #сериализация #данные #ассеты #serialization #SerializeField #serializereference

  21. Сериализация в Unity: известные атрибуты и их проблемы

    Любой Unity-разработчик знаком с атрибутом [SerializeField] , который позволяет сериализовывать непубличные члены класса и, соответственно, отображать их в инспекторе. Но, в силу его ограниченности, позже начали появляться и другие способы сериализации. Попробую кратко рассказать, какие альтернативы используются, зачем все они нужны, как работают и, о чём не любят писать в кликбейтных постах, какие подводные камни могут скрывать.

    habr.com/ru/articles/920398/

    #unity #gamedev #геймдев #игровая_разработка #сериализация #данные #ассеты #serialization #SerializeField #serializereference

  22. Сериализация в Unity: известные атрибуты и их проблемы

    Любой Unity-разработчик знаком с атрибутом [SerializeField] , который позволяет сериализовывать непубличные члены класса и, соответственно, отображать их в инспекторе. Но, в силу его ограниченности, позже начали появляться и другие способы сериализации. Попробую кратко рассказать, какие альтернативы используются, зачем все они нужны, как работают и, о чём не любят писать в кликбейтных постах, какие подводные камни могут скрывать.

    habr.com/ru/articles/920398/

    #unity #gamedev #геймдев #игровая_разработка #сериализация #данные #ассеты #serialization #SerializeField #serializereference

  23. Очередной сериализатор для JavaScript, но есть нюанс…

    Пару лет назад начал разрабатывать редактор текстовых квестов на JavaScript и обратил внимание на то, что неплохо было бы добавить в JSON-сериализатор поддержку ссылок на объекты. Чтобы можно было одним методом сохранить и загрузить состояние объекта, не нарушая его целостность и связь с внешним миром. Что-то подобное есть в PHP при работе метода serialize. Спустя год начал разрабатывать пошаговую стратегию, в которой такой метод был бы идеальным для реализации сохранений и сетевого режима (пересылка сохранений от игрока к игроку, как это реализовано в Heroes of Might&Magic 3). Имея такой метод, можно было бы не заботиться о сохранении/загрузке объектов игрового мира при их изменениях. Например, добавим лучнику привязку его стрел к конкретному типу дерева. Или в морском пароме создадим массив перевозимых юнитов. При обычной тактике обработки данных это создало бы немало проблем для организации сохранения ссылок. В итоге, кроме банальной организации внутренних ссылок, идея разрослась амбициозными планами, а именно:

    habr.com/ru/articles/896606/

    #сериализация #JSON #JavaScript

  24. CRaC в Java

    Привет, Хабр! Сегодня рассмотрим CRaC — это технология, позволяющая создать контрольную точку работающего Java-приложения, сохранив его полное состояние: память, потоки, системные ресурсы и прочее. Иными словами, вы проводите полную инициализацию приложения один раз, делаете «снимок», а затем при повторном запуске восстанавливаете это состояние, обходя долгую процедуру холодного старта.

    habr.com/ru/companies/otus/art

    #java #CRaC #сериализация

  25. CRaC в Java

    Привет, Хабр! Сегодня рассмотрим CRaC — это технология, позволяющая создать контрольную точку работающего Java-приложения, сохранив его полное состояние: память, потоки, системные ресурсы и прочее. Иными словами, вы проводите полную инициализацию приложения один раз, делаете «снимок», а затем при повторном запуске восстанавливаете это состояние, обходя долгую процедуру холодного старта.

    habr.com/ru/companies/otus/art

    #java #CRaC #сериализация

  26. [Перевод] Уменьшаем базу данных в 2000 раз при помощи Rust (завершение)

    Сериализация По сути, мы получили косвенную базу данных в памяти. Далее нам нужно сериализовать её, чтобы проверить, как interning влияет на её постоянное хранение. Кроме того, сериализация — это важный шаг для проверки реальности заявленной экономии места. И, наконец, это ещё одна возможность для дальнейшего сжатия данных. В Rust для сериализации стандартно используется крейт serde , который мы уже использовали для импортирования входных данных в JSON. Serde изначально имеет поддержку множества форматов благодаря крейтам расширений, поэтому я решил попробовать несколько из них.

    habr.com/ru/articles/890250/

    #gzip #сериализация #десериализация #json #сжатие_данных

  27. [Перевод] Уменьшаем базу данных в 2000 раз при помощи Rust

    Этот проект на выходные начался с изучения репозитория открытых данных сети общественного транспорта Парижа, содержащего различные API для выполнения в реальном времени запросов отправления транспорта , изменений в графике движения и так далее. Моё внимание привлёк раздел о многократном использовании данных , потому что в нём были приведены внешние проекты, использующие эти открытые данные. В частности веб-сайт статуса сети RATP предоставляет удобный интерфейс для визуализации истории нарушений на линиях движения метро, сети экспрессов/поездов и трамваев. Обычный день нарушений на ratpstatus.fr . В репозитории GitHub сайта ratpstatus.fr содержатся все файлы JSON , запрашиваемые из open-data API каждые две минуты. Данные сохраняются там уже почти год. Репозиторий с 188 тысячами коммитов и более чем 10 ГБ собранных данных всего лишь в одном последнем коммите (измерено при помощи git clone --depth=1) — это определённо интересный выбор для реализации базы данных! Уточню, что в этом посте я не собираюсь критиковать эту систему. Веб-сайт статуса сети RATP — превосходный веб-сайт, мгновенно и стабильно предоставляющий полезную информацию без обычного сегодня раздувания веб-сайтов. [И нет, сайт не написан на Rust. Веб-сайт на PHP тоже может быть невероятно быстрым!] Тем не менее, размер базы данных (10 ГБ) заставил меня призадуматься: а можно ли сжать её лучше, потратив на это приемлемое количество времени (скажем выходные)? В этом подробном посте я расскажу, как использовал шаблон проектирования interning в Rust, чтобы сжать этот датасет в две тысячи раз! Мы посмотрим, как лучше структурировать сам интернер, как настроить схему данных для оптимальной работы с ним и как сделать так, чтобы сериализация использовала interning наилучшим образом. Если у вас в хранилище накопилось множество файлов JSON, то вам стоит прочитать эту статью!

    habr.com/ru/articles/889874/

    #json #десериализация #сериализация #парсинг #схема_данных

  28. Msgspec vs DataClasses: битва инструментов в мире Python-сериализации

    Хабрчане, привет! Это Леша Жиряков из МТС Диджитал. Недавно я писал про FastAPI vs Litestar и Polars vs Pandas , а сегодня разберем два популярных инструмента — Msgspec и DataClasses. Оба помогают структурировать данные, добавить энтерпрайзности в проект, но подходы у них разные. Какой из них быстрее и удобнее, где их лучше применять? Давайте разбираться.

    habr.com/ru/companies/ru_mts/a

    #программирование #python #Msgspec #dataclasses #работа_с_данными #сериализация

  29. modern-cpp-kafka для C++. Решаем проблемы владения и сериализации

    Идея написания этого небольшого руководства появилась у меня, когда я начал изучать одну из самых популярных библиотек для работы с Apache Kafka - modern-cpp-kafka . Однако, как водится, ничто не идеально, и порой приходиться делать самые простые вещи за библиотеку.

    habr.com/ru/articles/880094/

    #c++ #kafka #сериализация #десериализация

  30. Как JSON может вас подвести

    JSON - наш повседневный помощник, но его коварные стороны могут обернуться неприятностями: потеря точности чисел, гигантские файлы, путаница с датами. Рассказываю, как избежать проблем и повысить эффективность с помощью стриминга в Node.js, MessagePack и Protobuf. Узнайте, где подводные камни и как их обойти на практике!

    habr.com/ru/articles/871616/

    #json #nodejs #javascript #messagepack #protocol_buffers #api #сериализация #стриминг #большие_данные #производительность

  31. Как JSON может вас подвести

    JSON - наш повседневный помощник, но его коварные стороны могут обернуться неприятностями: потеря точности чисел, гигантские файлы, путаница с датами. Рассказываю, как избежать проблем и повысить эффективность с помощью стриминга в Node.js, MessagePack и Protobuf. Узнайте, где подводные камни и как их обойти на практике!

    habr.com/ru/articles/871616/

    #json #nodejs #javascript #messagepack #protocol_buffers #api #сериализация #стриминг #большие_данные #производительность

  32. Как JSON может вас подвести

    JSON - наш повседневный помощник, но его коварные стороны могут обернуться неприятностями: потеря точности чисел, гигантские файлы, путаница с датами. Рассказываю, как избежать проблем и повысить эффективность с помощью стриминга в Node.js, MessagePack и Protobuf. Узнайте, где подводные камни и как их обойти на практике!

    habr.com/ru/articles/871616/

    #json #nodejs #javascript #messagepack #protocol_buffers #api #сериализация #стриминг #большие_данные #производительность

  33. Как JSON может вас подвести

    JSON - наш повседневный помощник, но его коварные стороны могут обернуться неприятностями: потеря точности чисел, гигантские файлы, путаница с датами. Рассказываю, как избежать проблем и повысить эффективность с помощью стриминга в Node.js, MessagePack и Protobuf. Узнайте, где подводные камни и как их обойти на практике!

    habr.com/ru/articles/871616/

    #json #nodejs #javascript #messagepack #protocol_buffers #api #сериализация #стриминг #большие_данные #производительность

  34. Оптимизация: типичные ошибки программистов и как их можно исправить

    Привет, Хабр. Меня зовут Павел Преблагин, я работаю в команде инжиниринга производительности Positive Technologies. Мы анализируем разные продукты компании и пытаемся так или иначе оптимизировать их изнутри. Как уже можно понять, команда наша мультипроектная: у нас нет постоянной кодовой базы, кроме некоторых инструментов анализа и тестирования. Обычно коллеги из других отделов приносят нам для изучения свою, написанную преимущественно на C++, если у них есть подозрения, что что-то работает не так быстро, как должно было бы. Мы в ответ приносим им результаты замеров, патчи и рекомендации. Хотя наша команда относительно молодая, мы уже успели пройтись по нескольким таким продуктам и нанести непоправимую пользу. Все эти проекты разные и принадлежат разным командам, но мы заметили, что некоторые проблемы встречались в той или иной комбинации везде, носили общий характер, а решались примерно одинаково и порой без серьезных усилий. Цель этой статьи — показать подборку из таких, часто встречаемых, ситуаций вместе с возможными вариантами их решения. Кейсы могут показаться тривиальными или даже глупыми, но факт остается фактом: подобное мы наблюдаем с определенным постоянством и видели в других компаниях, еще до прихода в Позитив. Разобраться

    habr.com/ru/companies/pt/artic

    #производительность #performance #оптимизация_кода #optimization #ошибки_программистов #аллокация #логирование #шардирование #бенчмарки #сериализация

  35. Кастомная сериализация структур в UE

    Допустим, вы создали свою USTRUCT в C++ и хотите её сериализовать. Обычно, достаточно просто пометить нужные поля как SaveGame . Но вот проблема, для этого эти поля сами должны поддерживать сериализацию. К сожалению одна из наших переменных не поддерживает сериализацию. В моем случае, это структура FNonSerializableStruct . Из-за этого сериализуется только вторая структура, хоть мы и пометили SaveGame обе.

    habr.com/ru/articles/865170/

    #usrtuct #struct #serialize #serializable #структура #сериализация #unreal_engine #ue #структуры #анрил

  36. Кастомная сериализация структур в UE

    Допустим, вы создали свою USTRUCT в C++ и хотите её сериализовать. Обычно, достаточно просто пометить нужные поля как SaveGame . Но вот проблема, для этого эти поля сами должны поддерживать сериализацию. К сожалению одна из наших переменных не поддерживает сериализацию. В моем случае, это структура FNonSerializableStruct . Из-за этого сериализуется только вторая структура, хоть мы и пометили SaveGame обе.

    habr.com/ru/articles/865170/

    #usrtuct #struct #serialize #serializable #структура #сериализация #unreal_engine #ue #структуры #анрил

  37. Кастомная сериализация структур в UE

    Допустим, вы создали свою USTRUCT в C++ и хотите её сериализовать. Обычно, достаточно просто пометить нужные поля как SaveGame . Но вот проблема, для этого эти поля сами должны поддерживать сериализацию. К сожалению одна из наших переменных не поддерживает сериализацию. В моем случае, это структура FNonSerializableStruct . Из-за этого сериализуется только вторая структура, хоть мы и пометили SaveGame обе.

    habr.com/ru/articles/865170/

    #usrtuct #struct #serialize #serializable #структура #сериализация #unreal_engine #ue #структуры #анрил

  38. Кастомная сериализация структур в UE

    Допустим, вы создали свою USTRUCT в C++ и хотите её сериализовать. Обычно, достаточно просто пометить нужные поля как SaveGame . Но вот проблема, для этого эти поля сами должны поддерживать сериализацию. К сожалению одна из наших переменных не поддерживает сериализацию. В моем случае, это структура FNonSerializableStruct . Из-за этого сериализуется только вторая структура, хоть мы и пометили SaveGame обе.

    habr.com/ru/articles/865170/

    #usrtuct #struct #serialize #serializable #структура #сериализация #unreal_engine #ue #структуры #анрил

  39. Сериализация в Java. Давайте разбираться

    Java предоставляет разработчикам удобные инструменты для сериализации объектов. Несмотря на то, что они кажутся донельзя примитивными, их внутренняя реализация содержит много интересных моментов. В этой статье мы рассмотрим основы сериализации и некоторые нюансы, связанные с ней. И, конечно, посмотрим, как она работает изнутри.

    habr.com/ru/companies/pvs-stud

    #сериализация #java #теория #jvm #десериализация #программирование

  40. Apache Flink: Сериализация и JacksonStateSerializer

    Привет, Хабр! На связи Александр Бобряков, техлид в команде МТС Аналитики. Это мой десятый материал про Apache Flink. В предыдущей части мы закончили разбирать оператор с Flink-таймерами, использующими внутреннее состояние. Также я показал, как их можно тестировать с помощью классов TestHarness или Flink MiniCluster. В дополнение тестами была покрыта вся Flink-джоба, включая E2E-тесты. В этой части мы посмотрим сериализацию данных и состояний в операторах. Также напишем свой сериализатор, поддерживающий эволюцию схемы. В следующих частях протестируем его и внедрим в наше приложение. Весь разбираемый исходный код можно найти в репозитории AlexanderBobryakov/flink-spring . В master-ветке представлен итоговый проект по всей серии статей. Эта часть соответствует релизной ветке с названием release/9_JacksonStateSerializer . По мере выхода новых материалов на Хабре ссылки на них будут появляться ниже.

    habr.com/ru/companies/ru_mts/a

    #java #big_data #data_engineering #распределенные_системы #apache_flink #сериализация #JacksonStateSerializer #TypeSerializerSnapshot #TypeSerializer #эволюция_схемы

  41. Apache Flink: Сериализация и JacksonStateSerializer

    Привет, Хабр! На связи Александр Бобряков, техлид в команде МТС Аналитики. Это мой десятый материал про Apache Flink. В предыдущей части мы закончили разбирать оператор с Flink-таймерами, использующими внутреннее состояние. Также я показал, как их можно тестировать с помощью классов TestHarness или Flink MiniCluster. В дополнение тестами была покрыта вся Flink-джоба, включая E2E-тесты. В этой части мы посмотрим сериализацию данных и состояний в операторах. Также напишем свой сериализатор, поддерживающий эволюцию схемы. В следующих частях протестируем его и внедрим в наше приложение. Весь разбираемый исходный код можно найти в репозитории AlexanderBobryakov/flink-spring . В master-ветке представлен итоговый проект по всей серии статей. Эта часть соответствует релизной ветке с названием release/9_JacksonStateSerializer . По мере выхода новых материалов на Хабре ссылки на них будут появляться ниже.

    habr.com/ru/companies/ru_mts/a

    #java #big_data #data_engineering #распределенные_системы #apache_flink #сериализация #JacksonStateSerializer #TypeSerializerSnapshot #TypeSerializer #эволюция_схемы

  42. Apache Flink: Сериализация и JacksonStateSerializer

    Привет, Хабр! На связи Александр Бобряков, техлид в команде МТС Аналитики. Это мой десятый материал про Apache Flink. В предыдущей части мы закончили разбирать оператор с Flink-таймерами, использующими внутреннее состояние. Также я показал, как их можно тестировать с помощью классов TestHarness или Flink MiniCluster. В дополнение тестами была покрыта вся Flink-джоба, включая E2E-тесты. В этой части мы посмотрим сериализацию данных и состояний в операторах. Также напишем свой сериализатор, поддерживающий эволюцию схемы. В следующих частях протестируем его и внедрим в наше приложение. Весь разбираемый исходный код можно найти в репозитории AlexanderBobryakov/flink-spring . В master-ветке представлен итоговый проект по всей серии статей. Эта часть соответствует релизной ветке с названием release/9_JacksonStateSerializer . По мере выхода новых материалов на Хабре ссылки на них будут появляться ниже.

    habr.com/ru/companies/ru_mts/a

    #java #big_data #data_engineering #распределенные_системы #apache_flink #сериализация #JacksonStateSerializer #TypeSerializerSnapshot #TypeSerializer #эволюция_схемы

  43. Apache Flink: Сериализация и JacksonStateSerializer

    Привет, Хабр! На связи Александр Бобряков, техлид в команде МТС Аналитики. Это мой десятый материал про Apache Flink. В предыдущей части мы закончили разбирать оператор с Flink-таймерами, использующими внутреннее состояние. Также я показал, как их можно тестировать с помощью классов TestHarness или Flink MiniCluster. В дополнение тестами была покрыта вся Flink-джоба, включая E2E-тесты. В этой части мы посмотрим сериализацию данных и состояний в операторах. Также напишем свой сериализатор, поддерживающий эволюцию схемы. В следующих частях протестируем его и внедрим в наше приложение. Весь разбираемый исходный код можно найти в репозитории AlexanderBobryakov/flink-spring . В master-ветке представлен итоговый проект по всей серии статей. Эта часть соответствует релизной ветке с названием release/9_JacksonStateSerializer . По мере выхода новых материалов на Хабре ссылки на них будут появляться ниже.

    habr.com/ru/companies/ru_mts/a

    #java #big_data #data_engineering #распределенные_системы #apache_flink #сериализация #JacksonStateSerializer #TypeSerializerSnapshot #TypeSerializer #эволюция_схемы

  44. Способ сохранения и загрузки настроек .NET приложения

    Наверняка многие разработчики сталкивались с необходимостью сохранения настроек своих приложений в файл и использовали для достижения этой цели различные сериализаторы типа XMLSerializer, JsonSerializer или BinaryFormatter. Однако, готовые решения не всегда так хороши, как это поначалу кажется. Сам я начинал с бинарных способов, но прочувствовав их неудобство перешёл на XML. Наигравшись с тормозами и проблемами XMLSerializer, заодно разочаровался и в самом XML. Наверняка многие замечали, что ручная правка XML файла с настройками не очень удобна, особенно если ваше приложение будете использовать не только вы, но и другие пользователи. Пробовал и другие способы, но в итоге - глюки и проблемы, которые нет возможности устранить в этих внешних зависимостях, привели к решению сделать уже удобный для себя велосипед. Хотелось простого и незамысловатого решения с минимальной длиной кода, в котором были бы методы у объекта, которые могли бы перебрать свойства самого этого объекта и сохранить или загрузить их. Требования: - Сохранение данных в текстовый формат, который удобно редактировать в любом блокноте - Максимально простой код, размещённый в самом классе с настройками - Высокая скорость работы - Без зависимости от внешних компонентов В итоге, после ряда итераций, пришёл к сериализации в плоский одноуровневый формат, похожий на INI файл, но без его ограничений, и в кодировке UTF-8.

    habr.com/ru/articles/855350/

    #сериализация #настройки_приложения

  45. Заметки по сериализации + System.Text.Json

    Сериализация - важнейший механизм любого приложения, от поиска по фильтрам в онлайн магазинах, до сохранения прогресса в играх. Давайте коротко пройдемся по основным форматам сериализации и рассмотрим использование System.Text.Json .

    habr.com/ru/articles/840024/

    #net #c# #сериализация #json #xml #yaml

  46. Сериализация сущностей с помощью декораторов на TypeScript

    В процессе написания приложения с более-менее сложной бизнес-логикой на фронтенде возникает необходимость держать всю эту логику на слое предметной области в "толстых" моделях. Например, для работы с формой, которая отображает на пользовательский интерфейс создание или редактирование сущности с большим количеством взаимозависимых свойств. Если "размазать" обработчики изменения состояния этой сущности и входящих в неё подсущностей по слою Application, легко можно потерять целостность модели в разных actions, reducers, валидаторах. Такой код будет трудно читать, отлаживать и поддерживать. Можно использовать паттерн Aggregate Root для единой точки входа управления моделью, тогда упростится поддержка инварианта такой сущности. Методы доступа к свойствам и методы, меняющие состояние сущности, можно вызывать из одного объекта, а сам объект будет обеспечивать целостность и валидность своих данных. Но здесь появляется ещё одна проблема: сериализация. К примеру, бывает нужно сохранить всю сущность в каком-нибудь хранилище -- localStorage, redux store. Или отправить на бэкэнд для сохранения. Или событием обновить пользовательский интерфейс, а в payload события при этом надо передать часть сущности в виде простого плоского объекта. В этих случаях нам нужна выжимка данных из сущности, которую можно будет восстановить потом при запросе из хранилища для дальнейшей работы. Это особенно актуально, если на проекте используется SSR, там данные, которые собираются для страницы на серверной стороне, должны быть сериализуемыми.

    habr.com/ru/articles/836746/

    #декораторы #typescript #javascript #фронтенд #фронтендразработка #фронтэнд #сериализация

  47. Сериализация сущностей с помощью декораторов на TypeScript

    В процессе написания приложения с более-менее сложной бизнес-логикой на фронтенде возникает необходимость держать всю эту логику на слое предметной области в "толстых" моделях. Например, для работы с формой, которая отображает на пользовательский интерфейс создание или редактирование сущности с большим количеством взаимозависимых свойств. Если "размазать" обработчики изменения состояния этой сущности и входящих в неё подсущностей по слою Application, легко можно потерять целостность модели в разных actions, reducers, валидаторах. Такой код будет трудно читать, отлаживать и поддерживать. Можно использовать паттерн Aggregate Root для единой точки входа управления моделью, тогда упростится поддержка инварианта такой сущности. Методы доступа к свойствам и методы, меняющие состояние сущности, можно вызывать из одного объекта, а сам объект будет обеспечивать целостность и валидность своих данных. Но здесь появляется ещё одна проблема: сериализация. К примеру, бывает нужно сохранить всю сущность в каком-нибудь хранилище -- localStorage, redux store. Или отправить на бэкэнд для сохранения. Или событием обновить пользовательский интерфейс, а в payload события при этом надо передать часть сущности в виде простого плоского объекта. В этих случаях нам нужна выжимка данных из сущности, которую можно будет восстановить потом при запросе из хранилища для дальнейшей работы. Это особенно актуально, если на проекте используется SSR, там данные, которые собираются для страницы на серверной стороне, должны быть сериализуемыми.

    habr.com/ru/articles/836746/

    #декораторы #typescript #javascript #фронтенд #фронтендразработка #фронтэнд #сериализация

  48. Сериализация сущностей с помощью декораторов на TypeScript

    В процессе написания приложения с более-менее сложной бизнес-логикой на фронтенде возникает необходимость держать всю эту логику на слое предметной области в "толстых" моделях. Например, для работы с формой, которая отображает на пользовательский интерфейс создание или редактирование сущности с большим количеством взаимозависимых свойств. Если "размазать" обработчики изменения состояния этой сущности и входящих в неё подсущностей по слою Application, легко можно потерять целостность модели в разных actions, reducers, валидаторах. Такой код будет трудно читать, отлаживать и поддерживать. Можно использовать паттерн Aggregate Root для единой точки входа управления моделью, тогда упростится поддержка инварианта такой сущности. Методы доступа к свойствам и методы, меняющие состояние сущности, можно вызывать из одного объекта, а сам объект будет обеспечивать целостность и валидность своих данных. Но здесь появляется ещё одна проблема: сериализация. К примеру, бывает нужно сохранить всю сущность в каком-нибудь хранилище -- localStorage, redux store. Или отправить на бэкэнд для сохранения. Или событием обновить пользовательский интерфейс, а в payload события при этом надо передать часть сущности в виде простого плоского объекта. В этих случаях нам нужна выжимка данных из сущности, которую можно будет восстановить потом при запросе из хранилища для дальнейшей работы. Это особенно актуально, если на проекте используется SSR, там данные, которые собираются для страницы на серверной стороне, должны быть сериализуемыми.

    habr.com/ru/articles/836746/

    #декораторы #typescript #javascript #фронтенд #фронтендразработка #фронтэнд #сериализация

  49. msgspec. Библиотека для сериализации и десериализации чего угодно

    В повседневных задачах есть множество инструментов для работы с различными форматами данных, такими как JSON, TOML, YAML и другими. msgspec — это инструмент, который может работать со всеми этими форматами и при этом быть быстрым и простым в использовании. Для всех форматов один импорт, что в рамках работы с данной библиотекой является преимуществом. Если вам необходимо парсить много разных форматов данных, то эта библиотека точно подойдет вам.

    habr.com/ru/articles/830098/

    #json #yaml #toml #сериализация #парсинг #бенчмарк

  50. Нюансы копирования объектов в JavaScript

    Привет, Хабр! Меня зовут Александр Григоренко, я фронтенд-разработчик. В языке JavaScript ключевой сущностью является объект — структура данных, в которой хранятся значения, каждое из которых ассоциировано с уникальным ключом — строкой или значением типа Symbol . Кроме основы для работы самого языка, объекты в JavaScript — это удобный способ хранить различные данные, относящиеся к одной предметной области и структурировать эти данные через связи ключ-значение. В работе с этими структурами данных есть множество нюансов, и сегодня я хотел бы обсудить нюансы такой часто встречающейся задачи, как создание копий объектов в JavaScript.

    habr.com/ru/articles/811173/

    #объекты #javascript #копирование_объектов #клонирование_объектов #сериализация #десериализация