Программа для синхронизации заметок на телефоне
Долгое время использую для синхронизации связку Termux + git и доволен как слон. Однако настройка всего этого занимает массу времени и подходит только для технических задротов вроде меня. Подумал, существует ли что-то проще? Поиски в сети не дали каких-либо работающих решений, поэтому мне стало интересно, а можно ли запрограммировать что-то с нуля. Оказалось, что вполне реально. Существует реализация JGit под Java, которая вполне работает, если ее встроить в Android-приложение. Единственную проблему, которую я сейчас пытаюсь решить, это то, что файлы должны быть доступны в общем хранилище андроид-устройства, а напрямую доступа в это хранилище у Android-приложения нет, поэтому приходится дополнительно к операциям с git реализовать операции копирования из внутреннего хранилища устройства во внешнее и наоборот. Как сделать проще, я пока не придумал. Из-за этого мое решение работает значительно медленнее, чем решение на базе Termux. В принципе, не сильно критично, но неприятно - у меня в заметках несколько тысяч файлов, и ждать полторы минуты вместо сорока секунд, когда они синхронизируются, мне не хочется...
Если получится ускорить решение опубликую на Play Market вдруг такая программа не только мне окажется полезной?
Upd: Проблему со скоростью решил, теперь работает даже быстрее чем Termux, потестирую еще некорое время на предмет багов, но кажется получилось что-то полезное...
И снова Штирлиц заметил...
У меня есть инстанс GitLab, на котором я хостю свои проекты. Сначала кто-то начал рассылать спам с помощью GitLab Runner, который также хостится там. "Поломали", подумал я. Пришлось сменить пароли и отключить GitLab Runner.
В какой-то момент я заметил, что на инстансе стали появляться новые пользователи, которых я не создавал. "Опять поломали", подумал я! Пришлось удалить всех чужих пользователей, обновить GitLab и проверить логи. Уязвимостей не нашел. Однако пользователи продолжали появляться, а я продолжал их удалять. Использование своего инстанса уже не приносило радости.
И вот, когда мне это надоело, и я решил убрать публичную ссылку под VPN, чтобы извне никто не мог достучаться до инстанса, я обратил внимание, что на главной странице моего GitLab есть ссылка "Зарегистрироваться". То есть, всё это время любой, у кого была ссылка на мой GitLab, мог создавать там пользователей. Я сам не закрыл эту возможность, когда настраивал сервис — балда! Странно, что за всё это время никто не начал майнить биткойны.
NoCode Программирование
В романе Сергея Лукьяненко «Рыцари сорока островов» героям запрещалось смотреть на небо на закате и на восходе, чтобы дети не увидели, как имитация неба на космической станции переключается с ночного режима на дневной и обратно.
У меня в ванной комнате свет тоже имеет два режима работы - ночной и дневной. Мне хочется, чтобы ночью свет в ванной был приглушённым, а не слепил, как днём. Для этого там стоят умные лампочки из ИКЕА, которые имеют управляемые яркость и цветовую температуру. Управляются они при помощи самодельного Zigbee-хаба на базе Zigbee2MQTT. Zigbee2MQTT легко интегрируется с любыми системами умного дома, у меня сейчас ничего умного не стоит, зато есть NodeRed который умеет автоматизировать простые сценарии, а также в нем есть расширение для работы с Zigbee2MQTT, что очень кстати. Всего ламп в ванной четыре: две над зеркалом и две на потолке. Ночью две лампочки над зеркалом выключаются, а лампы на потолке горят с половинной яркостью. Поскольку схема проводки под такую конфигурацию стандартная, включение и выключение света происходит обычным выключателем, к которому дополнительно подключён Zigbee-выключатель без нейтрали. Это маленькое устройство установлено за выключателем в подрозетнике и на использовании выключателя никак не сказывается. Зато оно позволяет включать свет на 30 секунд, чтобы перепрограммировать лампочки на ночной или дневной режим.
Вчера я немного улучшил логику переключения света. Первая реализация алгоритма иногда не срабатывала, так как после подачи напряжения на лампы Zigbee-сети требовалось больше времени для обновления конфигурации. В результате могла возникнуть ситуация, при которой одна из ламп либо не включалась, либо не выключалась, либо переключение вообще не срабатывало. Если переключение не сработало ночью, то худшее, что может случиться, — это то, что вы окончательно проснетесь от яркого света, когда пойдете ночью в туалет. Но если переключение не сработает утром, то чистить зубы придется перед полутемным зеркалом. Чтобы это исправить, я сохранил нужные параметры яркости в глобальных переменных, и если лампе не хватило времени, она скорректирует свою яркость при следующем включении. Вот так выглядит моя текущая конфигурация. Дополнительно потолком можно управлять через панель управления NodeRed и через Telegram-бота.
Что тут скажешь, во-первых, это красиво...
Красиво, да и только... На JavaScript этот алгоритм занял бы полстраницы. Классическое программирование вряд ли когда-либо будет вытеснено no-code решениями. Однако визуальные программы, безусловно, выглядят привлекательно по своей природе.
Редактирование нескольких строк в Vim
Поскольку гитом я привык пользоваться из командной строки, мне часто приходится делать сквош нескольких коммитов. Vim у меня стоит редактором по умолчанию, и хочется использовать его более эффективно, чем при использовании nano. Вот так можно заменить первое слово в нескольких строках с минимальными усилиями.