как работающий в команде программист, я неизбежно сталкиваюсь с необходимостью производить слияние разных изменений в одном файле: «мёржить код». К счастью, чаще всего автоматическое слияние справляется без моего участия, и разрешать конфликтующие изменения мне доводится редко. Да и это дело обычно сводится к перестановке строчек и нескольких знаков препинания. Однако статья «Cемантическое слияние JSON файлов в Git» меня сильно впечатлила: в ней было целых две новых идеи за раз. Одна, умеренно интересная — что процесс слияния в гите можно настраивать. А вот вторая была помасштабнее. Я ведь раньше не задумывался, что проводящий слияние процесс может быть умным и понимать структуру изменяемых файлов, вместо того, чтобы тупо смотреть на номера строчек. В статье, конечно, сказано только про JSON, но так ведь можно пойти дальше! Как насчёт умного мёржера для Javascript?
в общем, я направился на поиски готовых умных инструментов, которые можно подключить к моему гиту. И тут передо мной раскрылась зияющая пропасть. Если коротко, то эту задачу можно формализовать как поиск различий между двумя AST-деревьями, и математики показали, что её сложность O(n*n). Очень сложно. А сам процесс обычно называют семантическим или структурным слиянием. Некоторые инструменты пробуют это делать, но и стоят довольно прилично, чтобы компенсировать сложность реализации. Хотя вроде что-то такое есть и в Eclipse, но я это ещё не пробовал.
Посмотрел я на это, и понял, что моя проблема слишком редка и мала, чтобы отдавать за неё такие деньги, и слишком сложна, чтобы пытаться решить самостоятельно. Но вот вам ссылки на существующие решения:
меня рано зацепило ненадёжностью жёстких дисков: уже через пару лет винчестер моего первого компьютера (легендарный «дятел») дал дуба, сделав навеки недоступными бережно собранные данные. Технически их ещё можно было достать, но стоило бы это несколько сотен долларов, и на такое я не был готов пойти. Впрочем, окончательно выбросил я этот диск только после десяти лет хранения на полке.
вскоре после этого я принял решение не хранить все яйца в одной папке, чтобы не потерять их все вместе. Терять их по отдельности — ещё куда ни шло. Исходя из студенческого бюджета, я начал записывать добро на компакт-диски, а потом и DVD. За годы их накопилось порядочное количество, и я собрался провести инспекцию, выкинув нечитающиеся на нынешнем приводе. Заодно и собрал маленькую статистику по производителям:
philips: умерло 12, выжило 15
verbatim: умерло 28, выжило 64
digitex: умерло 48, выжило 10
TDK: умерло 3, выжил 1
mirex: умерло 2, выжило 2
traxdata: умерло 0, выжили 4
потом я задумал купить новую пачку болванок для следующих архивов. Первой мыслью было исходить из набранной статистики. Потом я понял, что лучше почитать умных людей на эту тему. Почитал. В том числе краткие рекомендации по хранению CD/DVD от NIST. Например, в горизонтальном положении их не рекомендуют хранить. Думал о жизни, данных и их важности. В итоге посчитал объём действительно уникальных данных, и решил просто дублировать их на свой сервер в интернете. Почти все остальные данные были фильмами, сохранением которых в интернете занимаются надёжные облачные хранилища.
а записывать диски я, видимо, больше не буду. Какие-то они слишком аналоговые.
я образно представляю себе два варианта того, как люди реагируют на агрессию/негатив/зло, поступающие к ним от других людей. Первый рефлекс — отразить его обратно. Причём есть даже научное исследование о том, что отражённое всегда будет больше пришедшего. Естественно, это ведёт только к росту напряжения. Мой образ этого — шарик в игрушке «пинбол», начинающий летать всё быстрее и быстрее.
а вот второй образ — это радиатор типа тех, что устанавливают на процессоры. Если его припечёт с одной стороны, он спокойно и без шума рассеет это тепло в окружающее пространство. То же самое можно делать и с психологическим стрессом от негатива других людей: не отражать его обратно, а спокойно рассеивать. В разумных рамках, конечно, но всё же снижать уровень напряжения, а не повышать его.
в одной из поездок, связанных с участием в олимпиадах по биологии, я попал на некий тренинг, который назывался «Творческая релаксация». Подробностей о нём я сейчас не помню, в целом это было что-то медитационно-гипнотическое. Ничего творческого, кстати, я в нём не заметил :) Полагаю, что на самом деле это была какая-то йогическая практика, потому что несколько лет спустя слышал нечто очень похожее в файле «Йога» у товарища.
однако кое-что полезное из этого тренинга я вынес. Всем участникам там установили «психологический якорь»: нужно нажать указательным пальцем на ноготь большого пальца, чтобы вернулось то самое состояние покоя и расслабленности. Несколько лет спустя я про этот якорь забыл, а вот недавно опять вспомнил и начал применять. Прошло больше 15 лет, а якорь всё ещё работает, особенно хорошо помогает засыпать. Причём даже на спине, хотя никогда раньше я в такой позе заснуть не мог.
когда-то это была крутая бесплатная программа для сохранения данных. С тех пор данных стало больше, объёмы дисков на виртуальных серверах выросли, связность компьютеров стала лучше. А вот версионирование файлов в Дропбоксе, наоборот, стало хуже. Да и Амазон, хранилищем которого пользуется Дропбокс, стал казаться как-то злее.
в общем, я осознал, что архивные копии данных у меня и так настроены, что синхронизация работает очевидно, и что Дропбокс вызывает у меня раздражение постоянным сканированием гораздо чаще, чем приносит пользу. Так что я его удалил. Запомню этот пост, и вернусь к нему, если вдруг потеряю данные.