Category : golang

golang
Генерация кроссвордов: «достаточно хорошее» решение NP-полной задачи

Генерация кроссвордов — NP-полная задача. Каждая ячейка, в которой пересекаются два слова, создаёт ограничение, которому должны удовлетворять оба слова, и эти ограничения перемножаются в сетке, приводя к комбинаторному взрыву. Эффективного алгоритма, гарантирующего решение, не существует, но вооружившись подходящими эвристиками, можно создать нечто, работающее на удивление хорошо.В конце 2021 года, уже сильно после начала локдауна, моя одержимость кроссвордом газеты The New York Times превратил…

  • пятница, 26 декабря 2025 г. в 00:00:07
golang
Теги структур — худшее что есть в go

Всем доброе время суток. Я пишу всякое на Go в Ви.Tech (IT-дочка ВсеИнструменты.ру) и, честно говоря, обожаю этот язык. Когда говорят о проблемах Go, обычно вспоминают отсутствие наследования или своеобразную обработку ошибок. Гораздо реже речь заходит о том, что, на мой взгляд, действительно можно отнести к проблемам.ПроблемаGo предоставляет теги структур, которые можно обнаруживать с помощью рефлексии. Они широко используются в пакетах кодирования JSON/XML, парсерах флагов, ORM и других библи…

  • четверг, 25 декабря 2025 г. в 00:00:12
golang
Ассемблер для гоферов. Стек. Особенности amd64, arm64 и arm. Часть 3

Go-ассемблер поддерживает разные платформыРанее в сериале:Ассемблер для гоферов. Часть 1Ассемблер для гоферов. Структура и макросы. Часть 2СтекКак я уже говорил, стек — это небольшая предвыделенная область памяти, которую программа получает при запуске. Поскольку, если мы размещаем переменную в стеке, нам не нужно обращаться к операционной системе для получения блока памяти, то это очень быстрая операция.В классическом ассемблере для того, чтобы сохранить и извлечь регистры из стека, используют…

  • четверг, 25 декабря 2025 г. в 00:00:10
golang
Go, cgo и Docker: практичная кросс-платформенная сборка

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

  • четверг, 25 декабря 2025 г. в 00:00:09
golang
Как мы в объектном хранилище отказы реплик обрабатываем

Когда мы работаем с реплицированными системами, вопрос стратегии переключения между репликами, а тем более ее реализация — это довольно значительная головная боль. Если вашей системе необходимо работать с отказами штатно, то наш опыт может подсказать пару новых идей, как можно сделать отказы контролируемыми. Я Владислав Доронин — Go-разработчик в команде S3 облачной платформы Cloud.ru Evolution. Хочу рассказать про подход к управлению отказами реплик, который мы кристаллизовали опытом выхода из…

  • четверг, 25 декабря 2025 г. в 00:00:08
golang
Нейроучитель — NeuroTeacher

Всем привет!Хочу рассказать об очередном своем пет-проекте, который может быть кому-то тоже полезен. А еще поделиться хорошим предновогодним настроением. Поэтому рассказывать буду в слегка позитивном и шуточном стиле :-)Итак, перед вами — нейроучитель! Хех... Сразу говорю — к нейросетям он не имеет отношения (или опосредованное). Да и не учитель, собственно. Но обо всем по порядку.Я — запойный читатель. Особенно фантастики. А еще я лентяй и всегда мечтал загружать знания в голову, прикладывая …

  • четверг, 25 декабря 2025 г. в 00:00:08
golang
Масштабирование LLM с помощью Golang: как мы обслуживаем миллионы запросов LLM

Хотя экосистема LLM в основном ориентирована на Python, мы нашли Go исключительно подходящим для производственных развертываний. Наша инфраструктура на базе Go обрабатывает миллионы ежемесячных запросов LLM с минимальной настройкой производительности. Помимо хорошо документированных преимуществ Go (см. отличное изложение Роба Пайка о преимуществах Go), три возможности оказались особенно ценными для нагрузок LLM: статическая проверка типов для обработки выходных данных модели, горутины для управ…

  • среда, 24 декабря 2025 г. в 00:00:15
golang
Проблемы с которыми я столкнулся при написании рекурсивного парсера journal в Linux

ВведениеДобрый день, всем читающим данную статью. При анализе артефактов с Linux систем journal являются источником огромного количества полезной информации. Из журналов можно достать:название машины;идентификатор события;тип события;критичность события;сообщение;объект породивший событие;и многое другое.Существует множество утилит которые позволяют парсить журналы:встроенный во многие дистрибутивы linux journalctl;кроссплатформенный go-journalctl от Velocidex;библиотека go-systemd;и т.д.Однако…

  • вторник, 23 декабря 2025 г. в 00:00:17
golang
Как я ускорил установку PHP-зависимостей в 5 раз с помощью Go

TL;DRПереписал Composer на Go, получил 3-5x ускорение благодаря параллельной загрузке пакетов и отсутствию PHP runtime overhead. Проект полностью совместим с экосистемой Composer/Packagist (почти, об этом будет подробнее внизу). Почему Composer медленный?Каждый PHP‑разработчик знаком с этим чувством: запускаешь composer install и идёшь заваривать чай. Для небольшого проекта — минута, для Symfony/Laravel — несколько минут. В CI/CD пайплайне это превращается в существенные затраты времени.Основны…

  • вторник, 23 декабря 2025 г. в 00:00:16