Если вы пользовались моим LxBox или десктопным лаунчером, то могли натыкаться на оранжевый баннер: «с этим узлом, скорее всего, не соединится». Так клиент честно сознаётся, что наткнулся на узел с транспортом XHTTP, а ядро sing-box, на котором всё крутится, его не умеет. В этот момент лаунчер тихо даунгрейдит конфиг до HTTPUpgrade.А еще сразу как я выпустил приложение пришли запросы с AWG/AWG2 и такие: сделай! а я сюдаВ какой-то момент я устал ждать и собрал свой форк ядра — sing-box-lx. Сегод…
Июнь — месяц рецензий на книги по языку Go в нашем блоге SSP SOFT. Сегодня разбираем книгу Юлии Поповой «Go: разработка приложений в микросервисной архитектуре с нуля».При этом, в названии позиционирование указано не очень четко, речь именно про процесс разработки микорсервисов с нуля, а не про нулевые навыки в Go. Книга в основном ориентирована на уже уверенных в своих знаниях языка начинающих разработчиков (джунов) на Go. Книга небольшая, 320 страниц, пять глав. И самое ценное в ней — пример…
Путь от идеи до работающего мессенджера с открытым кодом — в последнем отчёте.Я начал рассказывать о проекте «Ласточка» на Хабре чуть больше двух месяцев назад. Тогда это были вопросы нужен ли еще один мессенджер, которые переросли в твёрдое намерение построить честный российский мессенджер для обычной жизни — семьи, друзей, работы. Регистрация в RustoreЧерез некоторое время после публикации предпоследней статьи я получил вот такое письмоСкрин из почтыИ после нескольких модераций приложение одо…
Наверное, через это уже прошёл каждый из нас :)Где-то после полугода очень достаточно работы с агентами я стал принимать диффы быстрее, чем успеваю реально в них вникнуть, в итоге в один из я оказался в ситуации, что словил баг, а на поиски проблемы потратил чуть больше часа, а найдя ее, я понял, на сколько она была тривиальнойКороче говоря, то что мы используем агентов - конечно суперсила, но в итоге, мы все начинаем идти по “Accepted driven development” , а это уже начинает сильно отупливать …
Изначально идея была грубее: взять логовую строку, посчитать энтропию у подозрительных кусков и скрывать всё, что похоже на случайный секрет.PII здесь — это personally identifiable information, то есть персонально идентифицируемая информация: email, телефон, адрес, паспортные данные, номера карт, токены доступа и другие значения, которые не должны свободно гулять по логам.На бумаге звучало неплохо. Многие токены, ключи и сессионные строки действительно выглядят как шум:x9VdQp2Mz_La77kPq0 sk_liv…
Когда говорят «генератор миграций», обычно в голове сразу появляется что-то вроде:CREATE TABLE users ( id BIGSERIAL PRIMARY KEY, email TEXT NOT NULL );Но настоящий генератор миграций начинается не с CREATE TABLE. Он начинается с менее эффектного, но гораздо более важного вопроса:Как вообще представить текущую схему базы в коде?Пока у нас нет ответа на этот вопрос, мы не можем нормально сделать почти ничего:сгенерировать начальную миграцию для уже существующей базы;сравнить ожидаемую схе…
Пример работы jumie Все мы часто используем терминал, но мало кто помнит наизусть все флаги команды find или как правильно распаковать хитрый архив без гугла. Обычно процесс выглядит так: идем в браузер, просим ИИ написать какую то нестандартную команду, копируем, вставляем, получаем ошибку. Почему? Потому что мы сидим на маке, а ИИ выдал команду с GNU флагами для линукса, или использовал утилиту, которой у нас вообще нет. Поэтому я написал jumie - умного локального демона, который понимает кон…
ВступлениеАвтотесты на Go обычно начинают с testing.T — и на этом, по сути, всё. Дальше каждый проект вынужден сам решать, как именно исполняются тесты: в каком порядке, с каким окружением, с какими зависимостями, ретраями и логированием.testing даёт нам минимальный набор примитивов — t.Run, t.Cleanup, TestMain. Этого достаточно для unit-тестов, но за пределами простых сценариев быстро становится ясно: в Go нет единого execution engine, который бы занимался оркестрацией тестов как системы.И это…
Готовиться к Go-собеседованию по списку с GitHub — значит знать ровно то же, что знают все остальные. Интервьюеры это чувствуют сразу. В этой статье — 10 вопросов, которые реально задают на Golang Junior собеседованиях, с разбором так, как это объяснили бы вам после интервью на обратной связи. Вопрос 1. Nil-ловушка интерфейсовСмотрим на код:type MyError struct{ msg string } func (e *MyError) Error() string { return e.msg } func getError() error { var myErr *MyError = nil return myErr …