Category : golang

golang
SQLSet — отделяем GO код от SQL-запросов

ПредисловиеОднажды мне пришлось участвовать в переводе большого старого проекта на новую СУБД. Это заняло несколько месяцев тогда. И этот урок я запомнил на всю жизнь. В проекте повсеместно код приложения был перемешан с кодом SQL-запросов. При этом они во многих местах еще �� генерировались динамически из фрагментов текста. С тех пор я являюсь ярым сторонником отделения SQL-кода от непосредственно кода программы и патологически не перевариваю динамическую генерацию запросов.Мухи - отдельно, ко…

  • среда, 17 декабря 2025 г. в 00:00:11
golang
Найм в России, эйджизм, кадровички, интересная работа. Простые истины про бигтех в России

В России в принципе меньше интересного IT, который разрабатывает что-то новое и перспективное, чем "в мире". Оно есть, но на всех не хватит. Многие хотят пилить ядро, применять алгоритмы, исследовать компиляторы, но таких мест единицы и все давно заняты, уходить из них ради вас никто не собирается. Подавляющая часть, особенно в бигтехе - чисто поддержка, латать дыры в чужом говнокоде: разрабы в 2022 поубегали, а бизнес прекращать получать прибыль из этого кода пока не планировал - подде…

  • среда, 17 декабря 2025 г. в 00:00:10
golang
Разработчики всё ещё путают JWT, JWKS, OAuth2 и OpenID Connect — разбираем на примерах. Часть 1

JWT, SSO, OAuth, OpenID Connect — названия, знакомые каждому разработчику. В коде токены встречаются повсюду. Кажется, что всё понятно.Но стоит спросить: «Зачем в продакшене нужен JWKS?» или «Чем отличается OAuth2 от OpenID Connect?» — уверенность сразу исчезает. Большинство работает с аутентификацией поверхностно: по шаблону или туториалам, не понимая, что лежит в основе. В этой статье мы разберём, как устроен JWT и его подпись, зачем нужны access и refresh-токены, что такое JWKS и в чём отлич…

  • среда, 17 декабря 2025 г. в 00:00:09
golang
Чистим main.go: предсказуемый старт и надежный Graceful Shutdown

Сталкивались ли вы с болью при управлении порядком запуска и остановки зависимостей в вашем Go-сервисе?Разработка больших сервисов неизбежно приводит к необходимости управлять множеством зависимостей. В этом контексте мы говорим о долгоживущих компонентах, чья работа обеспечивается отдельными горутинами: как правило, это блокирующий метод (например, Start), внутри которого крутится цикл обработки.Примерный сценарий жизненного цикла сервиса выглядит так:При запуске критически важно, чтобы пул со…

  • вторник, 16 декабря 2025 г. в 00:00:09
golang
Почему Go, Rust и Zig такие разные: ценности, компромиссы и назначение языков

Команда Go for Devs подготовила перевод статьи о трёх языках, которые всё чаще оказываются в одном ряду, но на самом деле решают принципиально разные задачи: Go, Rust и Zig. Автор несколько месяцев изучал каждый из них и попытался понять, какие ценности стоят за их устройством. Go выбирает минимализм и корпоративную предсказуемость, Rust — безопасность и максимальную выразительность, Zig — радикальный контроль и отказ от ООП-мышления. Получился честный и местами провокационный разбор того, заче…

  • вторник, 16 декабря 2025 г. в 00:00:08
golang
Скажи yay -S say

Сейчас, когда утилита say понравилась многим, а я получил массу вопросов и предложений пришло время придать этой массе некоторое ускорение, сформировав сильные вопросы в детальное теническое описание проекта. На днях утилита была добавлена в AUR, что и подколкнуло меня всё же расписать как всё устроено под капотом.Для начала уточню: say, это инструмент для видеозвонков, работающий напрямую в окне терминала. Отдельный GUI не требуется: видеопоток рендерится прямо в терминале в текстовом виде (см…

  • понедельник, 15 декабря 2025 г. в 00:00:07
golang
Минимальный набор практик для микросервиса

Эту статью я написал по следам работы над шаблоном микросервиса на Go — для коллег, которые переходят на Go после Ruby.Такие проекты для меня - это способ немного выдохнуть и спокойно порефлексировать: чего именно не хватало в реальной работе, какие инструменты хотелось иметь под рукой, какие решения приходилось принимать в последний момент. Заодно появляется шанс изучить новые подходы и переосмыслить старые.Цель этого шаблона была простой: дать человеку возможность сразу писать бизнес-логику, …

  • понедельник, 15 декабря 2025 г. в 00:00:06
golang
Golang: Пакет для мульти-логирования на основе log/Slog

«Жизнь требует движения» (Аристотель) Привет Хабр! Это моя первая статья тут, я надеюсь пол��чилось читабельно и интересно :-) Как и следует из названия, в этой статье мы рассмотрим небольшой проект логера, написанный мною на языке golang. За основу взят встроенный и знакомый многим пакет log/slog.Почему Мульти-логер? Все просто, как и следует из названия, пакет содержит функционал записи логов в несколько хранилищ одновременно. Что нужно для подключения нового хранилища? Для подключения снача…

  • понедельник, 15 декабря 2025 г. в 00:00:05
golang
Ассемблер для гоферов. Структура и макросы. Часть 2

Нет кода быстрее, чем код написанный на ассемблереВ этой части (первая тут) мы поговорим о структуре Go-программы с использованием ассемблера, о хитростях макросов. Будем писать дальше нашу ассемблерную функцию.Структура Go-программы с поддержкой ассемблераВсегда пишем ускоряемую функцию на чистом GoЯ понимаю ваше желание написать сразу сверхбыструю функцию на ассемблере. Но...Правилом хорошего тона будет всегда иметь версию нужной нам функции на чистом Go. Это позволит нашей программе быть ско…

  • воскресенье, 14 декабря 2025 г. в 00:00:11