6 мая скончался Kentaro Miura — автор манги Berserk — одного из наиболее влиятельных (1, 2) произведений жанра. И одного из немногих произведений, которые на меня повлияли.
Недавно смотрел чего за последние годы сделано в области решений для миграций схем и данных в базах данных и как-то мне все решения не понравились. По крайней мере из open source ни одного проекта без косяков нюансов не нашёл.
Поэтому я решил порефлексировать и копнуть глубже — миграции баз данных всегда казались мне частным случаем общей проблемы обновления версий проекта.
Я предполагаю, что вы более-менее понимаете суть миграций в БД и сможете ориентироваться в моих допущениях: явных и неявных.
Первая часть эссе описывает миграции, пользу и проблемы от них. Вторая часть — мои пожелания к идеальной системе миграций.
Я давно испытываю когнитивный диссонанс по-поводу подачи прогресса в играх. Началось это с расцветом free-to-play и мобилок, в дальнейшем диссонанс всё нарастал и нарастал.
Поэтому я решил разобраться чего у меня так зудит и пришёл к некоторым общим выводам о природе и эволюции массовых продуктов.
Наверняка схожие идеи уже озвучены философами и экономистами лет 30-50 назад. А может и раньше, потому что чётко виден вечный спор о форме и содержании. К сожалению, с подобными работами я не знаком, поэтому буду натягивать сову на глобус как умею. Если вы знакомы с темой — поделитесь ссылками в комментариях.
Начну с игр, как знакомого мне предмета и яркой демонстрации явления. После чего распространю соображения на все медиа-продукты.
По аналогии можно было бы двинуться и дальше, но я постараюсь ограничиться именно медиа частью рынка и концепцией прогресса в использовании его продуктов — это мне сейчас интереснее всего.
В конце эссе будет глава с оговорками и примечаниями. Без них текст получился бы значительно больше и запутаннее.
Буду говорить в контексте программирования, но соображения можно распространить шире.
Когда мы описываем алгоритм: программу, доказательство теоремы или решение математической задачи — мы строим его описание в рамках некоторой формальной модели. В рамках соглашений и ограничений, которые мы явно или неявно принимаем.
Описать алгоритм вне формальной модели невозможно. Хотя бы потому, что любой язык — уже формализация.
Отсюда вытекает интересная проблема.
Расскажу об одной боли при разработке и проектировании ПО — преобразованиях данных между их схемами. Буду говорить о серверах, как наиболее наглядном и знакомом мне примере, но соображения можно распространить на весь софт.
Для демонстрационных целей местами может случиться некоторое преувеличение.
Рассмотрим простейший проект, этакий минимальный набор:
Данные, соответственно, ходят в обе стороны:
Сколько схем данных вы тут видите?