И снова Штирлиц заметил...
У меня есть инстанс 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. Вот так можно заменить первое слово в нескольких строках с минимальными усилиями.
AR.js
AR.js - это JavaScript библиотека которая позволяет создавать дополненную реальность прямо в браузере мобильного телефона.
На выходных я немного с ней поигрался и сделал маленькую демку. Отсканируйте QR код, откройте страничку в браузере и наведите телефон на изображение еще раз. Если ваше устройсто совместимо с библиотекой, то поверх изображения вы сможете увидеть текст.