47 подписчиков
Миграция json файлов
Миграция пользователей — самое вкусное. Примерно наравне с совместимостью версий схем апи. Разработчиком во многом быть просто на самом деле, но есть задачи от которых хочется рвать волосы на голове. Это миграции, совместимости и развозить зависимости. Я больше всего люблю последнее правда. Особенно во времена с деревянными игрушками, когда Gradle был попроще и техник было поменьше. Решили вы добавить в проект фаербейс и эластик сёрч. И две недели вы не разрабатываете игру, а пытаетесь понять, как так разнести зависимости, чтобы всё обратно заработало. Ладно. Это лирика.
Статья мне понравилась. Не совсем понял чего её так заминусовали. Ну свой метод, ну есть решения другие. И проблемы подсвечены. И плагин любопытный. Плохого я в ней ничего не увидел, хотя может читал как обычно по диагонали. Но сразу навевает воспоминания о том, как мы это решали на одной из моих работ по найму.
Сейчас действительно есть протобафы и прочие решения "проще". Но вообще говоря о миграциях стоит сразу вспоминать о шаблонах. Классы и рефлексия — это конечно замечательно. Но вообще любая схема, любой конфиг, любая конфигурация — это прежде всего то, что можно представить в виде текста. С Json и xml эта оговорка (про представить) даже не нужна, так как это прямо-таки текстовые форматы. Но вообще шаблонизировать можно и бинарники.
В древние времена XML, когда JSON ещё не стал популярен, проблема решалась штукой, если не изменяет память, под названием xstl шаблоны. То есть мы вообще не касаемся понятия классов и типов, не плодим сущности с точки зрения кода и обозначенные автором проблемы. У нас это некая структура (графовая), которая собирает данные и по шаблону их переносит. То есть по сути у системы есть три составляющих. Версия, схема данных этой версии, схема миграции к следующей версии. Если такую систему развивать и поддерживать, то можно мигрировать пользователей, которые не входили в игру годами. Думать оно будет долго, пока через все шаблоны прогонит, но справится.
А на одной работе, во времена деревянных игрушек и не знания многих модных штук, мы сделали аналогичное. Только вместо шаблонов, да простят нас боги C#, у нас для миграции юзверя использовались регулярки. Точно такая же система как описана мной выше с шаблонами. Только вместо шаблонов миграции новый файл конфигурации пользователя формируется регулярными выражениями. Забавное было время.
P.S. Ну и да. Проблему стоит одну обозначить. Я тут подумал чуть больше. У решения автора есть одна ключевая проблема. Это code-first решение. И как только версий станет 100, там такое количество кода странного для обратной совместимости будет. Что шаблонные форматы миграции кажутся всё-таки лучше. Но для чего-то простого, со сроком жизни в год-полгода почему бы и нет.
#новости
2 минуты
28 апреля 2024