Много лет я пользовался Volume²: переключал колонки и наушники хоткеем, крутил громкость с оверлеем. На Windows 11 он у меня начал подлагивать — оверлей появляется с задержкой, — а в %APPDATA%\Volume2\Errors.log периодически появляются падения:ShowOSDWindow: Access violation at address 006E0F69 in module 'Volume2.exe'. Read of address 00000000 Я завёл issue, но ждать не стал и написал себе замену под свои сценарии. Получилась утилита volume_switch: один exe в трее, ~2000 строк на Go в о…
BвeдeниeНедавно вышел PVS-Studio 8.00, принёсший с собой много масштабных нововведений, среди которых и релиз анализатора для Go! Он же, в свою очередь, обзавёлся несколькими новыми интересными диагностиками.Среди них есть и та, что выявляет один из caмыx кoвapныx видoв copy-paste oшибoк, кoтopые нeoxoтнo пoпaдaютcя нa глaзa пpи oбычнoм peвью. Без лишних слов, приглашаю взглянуть на код:if process.ProcessName != nil && (len(*process.ProcessName) == 0 || len(*process.ProcessName) …
Всем привет!Меня зовут Тарас Малиновский, я бэкенд‑разработчик, работаю на Go. Последний год почти целиком ушёл на проекты в сфере искусственного интеллекта: делал ассистентов, агентов, разные инструменты и навыки.Недавно участвовал в хакатоне от Podlodka AI Club: мы собирали систему памяти для агентов. Саму память реализовали довольно быстро, а вот доказать, что она реально работает, оказалось куда сложнее. На это и ушло больше всего времени.Этот опыт будто щёлкнул выключателем: именно тогда д…
Несколько месяцев назад подобрал голубя.https://github.com/khomin/roostSelf-hosted сервер видеонаблюдения для RTSP/USB - камер.C web дашбордой для просмотра через WebRTC.C++ модуль читает из gstreamer пайплайн, перепаковывает и отправляет в IPC (/dev/shm/roost_<camera-id>)Go модуль читает из shm, пересылает в стримы WebRTCХотел наблюдать за птицей с лэптопа не покупая ничего.В итоге написал это.
В программировании на Go я пока новичок.Поэтому, как любой уважающий себя разработчик, я решил начать с самого безопасного занятия — переписать на Go то, что уже несколько лет нормально работает на Bash.Зачем?Потому что один сервер — это Bash‑скрипт.Два сервера — уже Bash‑скрипт плюс его копия с немного другими настройками. А когда появляются Linux, Windows, PostgreSQL, MS SQL Server, файловые базы, сетевые файловые базы и разные требования к срокам хранения резервных копий, начинается самое ин…
Когда пишешь обычный HTTP API на Go, использование context.Context быстро становится привычкой.Пришёл запрос, получили r.Context(), передали его в сервис, затем в репозиторий и во все внешние вызовы. Если клиент отключился или истёк таймаут, связанные операции отменяются.Для большинства backend-задач это именно то поведение, которого мы хотим.Зачем продолжать выполнять SQL-запрос, если результат уже некому возвращать? Зачем держать соединение с внешним API, если пользователь закрыл страницу?Но …
ПредисловиеДля начала стоит прояснить что я не просто так от нечего делать открыл leetcode и начал решать задачки. Такое решение пришло после не очень удачных собеседований, задачи на которых я хоть и решил, но со скрипом и потратив гораздо больше времени чем рассчитывал интервьювер. Конечно же это не удовлетворило его, особенно учитывая большую плотность кандидатов на должность.Сам же я давно в IT и в том числе проводил много собеседований, стараясь избегать leetcode задач, просто потому что с…
Репетитора не нанимают по резюме. Ему дают тетрадь реального ученика и смотрят не на то, знает ли он ответ, а на то, где он остановится. Подскажет, в какой строке ошибка, или перепишет задачу за ученика? Скажет «не знаю, давай проверим» или уверенно додумает?Месяц назад я встроил в свою учебную платформу AI-ментора: он видит уроки, прогресс студента и его последнюю попытку по заданию. Чтобы не выбирать модель и не править промпт по ощущениям, я собрал стенд из автоматических проверок и начал пр…
Привет, Хабр!С sync.Pool знакомство обычно начинается одинаково: начинаешь разбираться с профилированием и оптимизацией Go‑приложения, открываешь профиль — а там сервис четверть процессорного времени кормит сборщик мусора.Дальше — как по написанному:Нашли горячий объект.Завернули в пул.Накатали бенчмарк.Бенчмарк нарисовал двух‑трёхкратный выигрыш.Код уехал в продВ стандартной библиотеке пул торчит из каждого утюга — значит, приём одобрен сверху, значит, всё делаем правильно.А подвох сидит прямо…