TGViewer
Григорий Дядиченко Григорий Дядиченко @dev_game · 2.66K subscribers
Post #1468 1.41K
Миграция json файлов
https://habr.com/ru/articles/808515/

Миграция пользователей — самое вкусное. Примерно наравне с совместимостью версий схем апи. Разработчиком во многом быть просто на самом деле, но есть задачи от которых хочется рвать волосы на голове. Это миграции, совместимости и развозить зависимости. Я больше всего люблю последнее правда. Особенно во времена с деревянными игрушками, когда Gradle был попроще и техник было поменьше. Решили вы добавить в проект фаербейс и эластик сёрч. И две недели вы не разрабатываете игру, а пытаетесь понять, как так разнести зависимости, чтобы всё обратно заработало. Ладно. Это лирика.

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

Сейчас действительно есть протобафы и прочие решения "проще". Но вообще говоря о миграциях стоит сразу вспоминать о шаблонах. Классы и рефлексия — это конечно замечательно. Но вообще любая схема, любой конфиг, любая конфигурация — это прежде всего то, что можно представить в виде текста. С Json и xml эта оговорка (про представить) даже не нужна, так как это прямо-таки текстовые форматы. Но вообще шаблонизировать можно и бинарники.

В древние времена XML, когда JSON ещё не стал популярен, проблема решалась штукой, если не изменяет память, под названием xstl шаблоны. То есть мы вообще не касаемся понятия классов и типов, не плодим сущности с точки зрения кода и обозначенные автором проблемы. У нас это некая структура (графовая), которая собирает данные и по шаблону их переносит. То есть по сути у системы есть три составляющих. Версия, схема данных этой версии, схема миграции к следующей версии. Если такую систему развивать и поддерживать, то можно мигрировать пользователей, которые не входили в игру годами. Думать оно будет долго, пока через все шаблоны прогонит, но справится.

А на одной работе, во времена деревянных игрушек и не знания многих модных штук, мы сделали аналогичное. Только вместо шаблонов, да простят нас боги C#, у нас для миграции юзверя использовались регулярки. Точно такая же система как описана мной выше с шаблонами. Только вместо шаблонов миграции новый файл конфигурации пользователя формируется регулярными выражениями. Забавное было время.

P.S. Ну и да. Проблему стоит одну обозначить. Я тут подумал чуть больше. У решения автора есть одна ключевая проблема. Это code-first решение. И как только версий станет 100, там такое количество кода странного для обратной совместимости будет. Что шаблонные форматы миграции кажутся всё-таки лучше. Но для чего-то простого, со сроком жизни в год-полгода почему бы и нет.

#новости
Хабр Миграция json файлов Для любого приложения у которого есть реальные пользователи и больше чем одна версия, рано или поздно встает вопрос версионирования данных и их миграции. В данной статье мы разберем проблему и ее...
  • 🔥 4
More from @dev_game
  1. Oct 4, 2026💡 Вредные советы: Идея С тех пор как я открыл для себя чудесный мир элевенлабса (и это ка…
  2. Oct 4, 2026ТСПУ и телега Короче говоря как раз немного кул стори по следам теста. Спасибо кто там как…
  3. Oct 3, 2026Мой новый проект https://t.me/Mespoker_bot Поймал меня значит как-то Паша за покером и ска…
  4. Oct 1, 2026🤔 Как продвинуть игру? Я обещал. Я сделал. Получился большой документ с шагами и действия…
  5. Sep 29, 2026И тут продублирую раз прилетело несколько вопросов. Доступ к дневнику можно будет получить…
  6. Sep 29, 2026Да, чет не анонсировал. Остановил сбор. Ну в целом донаты показывают классические для меня…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →