Go in Action
СтатистикаВсё про язык программирования Go на русском и английском языке Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels
- Последний пост
- 31 мар.
- Последнее чтение
- 12:31
- Постов за неделю
- 0
- Всего постов
- 20
- Тип
- открытый
- Язык
- русский
- Категория
- Языки
- В каталоге с
- 12 авг.
- 1/24сутки в ленте
- —
- 1/48двое суток
- —
- 1/72трое суток
- —
Оценка по просмотрам недавних постов: пост набирает почти всё за первые сутки.
Посты
Улучшаем Dockerfile: от примитивной базы к multi-stage-решению Dockerfile можно составить по-разному, и даже самые примитивные его варианты могут работать, но это не значит, что их стоит использовать. Поэтому давайте разбираться, как сделать из Dockerfile конфетку. Для этого читайте статью. Там с каждым шагом Dockerfile становится всё круче с каждым шагом: 🔘 Начинается с наивного подхода — всё работает, но образ тяжеленный, сборка занимает 10 минут, а результат непредсказуем. 🔘 Multi-stage — разделяем сборка и рантайм, финальный образ содержит только бинарник и необходимые runtime-зависимости. Другие два шага, а также отдельный блок о том, почему не все лучшие практики стоит бездумно выполнять — по ссылке.
Полнотекстовый поиск на Go без Elasticsearch: Bleve как альтернатива Когда в проекте возникает задача поиска, первая мысль — поднимать Elasticsearch. Но что, если не хочется тащить внешний сервис, возиться с кластеризацией и поддерживать ещё одну точку отказа? Для Go есть Bleve — встраиваемая библиотека, которая работает внутри вашего приложения, индексирует любые структуры и не требует отдельного сервера. В гайде разбирают всё по делу: — создание индекса и простой поиск с ранжированием по BM25; — кастомные маппинги полей: стемминг, стоп-слова, исключение полей из индекса; — мультиязычный поиск через IndexAlias — один виртуальный индекс поверх нескольких; — курсорная пагинация с SearchAfter (чтобы не было дублей и пропусков при обновлении данных); — настройки производительности Scorch: воркеры, размер сегментов, пороги мёржа. Bleve — это не замена Elasticsearch для больших распределённых систем, но идеальный вариант, когда нужен полнотекстовый поиск без лишней инфраструктуры и с полным контролем. Код, примеры и нюансы конфигурации — в материале: https://tproger.ru/translations/polnotekstovyj-poisk-na-go-bez-elasticsearch---gajd-po-bleve
видео или голосовое, без подписи
видео или голосовое, без подписи
видео или голосовое, без подписи
видео или голосовое, без подписи
Победителями премии Тпрогер 🐀становятся... Здесь играет барабанная дробь и интригующая музыка... Вам нужно только выждать драматическую паузу перед объявлением победителей — в каждой номинации он один, и определяется большинством голосов. Готовы? В номинации «Продукт года» золотая мышь достается компании: 🐀NetVision за платформу интеллектуального мониторинга СИМ. В номинации «Облачный продукт года» побеждает компания: 🐀Гравитон с паком виртуализации «Гелиус» Звание «IT-ивент года» вручается компании: 🐀Островок! за О!Хакатон И в категории «Дизайн года» первое место занимает компания: 🐀AcademiaDev за интерактивную инсталляцию. Каждый ваш лайк, голос влияли на исход премии. Давайте поддержим всех — ставьте 🏆участникам, которые хоть и не заняли призового места, но точно остались в сердечке. И 🔥, если хотите аналогичных активностей и готовы выбирать еще!
Я решил написать ухудшенный UUID по ничтожнейшим из причин Вчера я баловался с проектом API, которым занимаюсь уже долгое время. Подобные проекты мы обычно переписываем снова и снова на протяжении многих лет, чтобы поддерживать высокий уровень дофамина от рефакторинга. Вы понимаете, о чём я. На этот раз совершенно внезапно я кое-что осознал. Мне нужно отрефакторить одну вещь. Я достаточно активно пользуюсь UUID, поэтому URL моих ресурсов очень длинные и некрасивые. В зависимости от версии и варианта в UUID есть множество разной информации, но по большей мере это куча случайных битов, которые и обеспечивают свойство «универсальной уникальности», которое нам так нравится. Но если по какой-то причине вам не нравится проверенный временем стандарт с огромной экосистемой нативной поддержки... то эта статья для вас! Читать: https://habr.com/ru/articles/987352/ #ru @go_in_action | Другие наши каналы
Go рухнул с 7 на 16 место в TIOBE: пора ли российским компаниям пересмотреть технологический стек? В ноябре 2024 года язык программирования Go достиг своего исторического максимума — седьмого места в престижном индексе TIOBE, укрепив позиции в топ-10. Однако всего через 14 месяцев, в январе 2026 года, картина кардинально изменилась: Go обвалился на 16-е место, потеряв сразу 9 позиций. Это один из самых драматичных спадов года среди топовых языков. Парадокс в том, что в России Go переживает противоположную тенденцию — язык активно набирает популярность, его используют крупнейшие технологические компании и количество Go-разработчиков превысило 40 тысяч. Возникает критический вопрос для отечественной индустрии: не движемся ли мы против глобального технологического тренда, делая ставку на язык, который теряет позиции на мировой арене? Читать: https://habr.com/ru/articles/989014/ #ru @go_in_action | Другие наши каналы
PostgreSQL RLS в Go, Часть 2: Архитектура Highload. Паника, гонки и 10 000 партиций В первой части было разобрано, как настроить RLS в Go, почему is_local=true спасает от утечек в PgBouncer, и как покрыть это интеграционными тестами. Если вы еще не настроили базовую изоляцию, начните оттуда. Сегодня мы пойдем глубже. Мы не будем говорить о синтаксисе. Мы поговорим об архитектуре. О том, почему RLS - это не просто "удобный фильтр", а нативный механизм инкапсуляции, который решает проблемы распределенных систем и рисков безопасности прямо в слое данных, не раздувая Ops-сложность до сотен схем и баз. Кому и зачем читать? Junior/Middle: Поймете, почему RLS - это архитектурный выбор, а не просто WHERE tenant_id = ?. Узнаете про TOCTOU и как его избежать. Senior/Architect: Увидите паттерны для highload (партиционирование + RLS) и production-грабли (матвьюхи, репликация). Читать: https://habr.com/ru/articles/988744/ #ru @go_in_action | Другие наши каналы
Go: 15 самых популярных докладов 2025 года на YouTube Go 1.25, кодовые агенты, тулчейн, наблюдаемость, безопасность, тестирование, производительность и работа высокодоступных систем. Читать: «Go: 15 самых популярных докладов 2025 года на YouTube» #ru @go_in_action | Другие наши каналы
Go против Rust против Zig: какой язык для чего нужен Это попытка понять философию языков и определить, какой язык ближе лично вам. Читать: «Go против Rust против Zig: какой язык для чего нужен» #ru @go_in_action | Другие наши каналы
Экспорт приватных типов в Go: почему это антипаттерн азбираем антипаттерн, его последствия для инкапсуляции и архитектуры, а также показываем идиоматичные способы инициализации структур и сервисов в Go. Читать: «Экспорт приватных типов в Go: почему это антипаттерн» #ru @go_in_action | Другие наши каналы
Black-White Array: новая структура данных с O(log N) аллокаций Black-White Array (BWA) — это упорядоченная структура данных с амортизированным временем операций вставки/поиска/удаления и используемых участков памяти. Преимущества: • Амортизированное время вставки/удаления/поиска сравнимое с реализацией BTree от Google; • Низкое количество аллокаций памяти при операциях вставки - меньше давления на сборщик мусора, ниже фрагментация памяти; • Массивы под капотом: данные лежат рядом, что улучшает кэшируемость процессором и скорость обхода/доступа к данным; • Позволяет хранить элементы с одинаковыми ключами - не нужно использовать дополнительные структуры для группировки таких элементов; • Низкий оверхед на хранение служебной информации - экономия памяти по сравнению с другими структурами данных; • Удобен для вставки батчами; • Простая сериализация и десериализация; Подробности Читать: https://habr.com/ru/articles/984184/ #ru @go_in_action | Другие наши каналы
Как сделать свой статический анализатор для Go? Go разработчики постоянно сталкиваются с предупреждениями встроенного статического анализатора. А что делать, если его возможностей не хватает или нужно искать что-то специфичное для вашего проекта? Go предоставляет мощные инструменты для разбора и анализа кода. В этой статье мы поговорим о них и даже сделаем своё первое диагностическое правило. Читать: https://habr.com/ru/companies/pvs-studio/articles/984526/ #ru @go_in_action | Другие наши каналы
Go: сборщик мусора там, где его не ждут Когда мы говорим о сборщике мусора, то сразу думаем о куче. Зачем он нужен в стеке? Переменная попала на стек, функция завершила исполнение — стек вжух! — и очистился. А что, если я вам скажу, что на стеке Go тоже свой сборщик мусора? Звучит неожиданно? Давайте разберемся по порядку. Читать: https://habr.com/ru/articles/983622/ #ru @go_in_action | Другие наши каналы
Честный взгляд на Go: сильные стороны и болезненные ограничения Команда Go for Devs подготовила перевод обзора языка Go от практикующего разработчика. Автор без прикрас разбирает сильные стороны Go — конкурентность, простоту и эргономику, — а затем подробно объясняет, почему его разочаровывают enum’ы, неизменяемость и модель ошибок. Читать: https://habr.com/ru/articles/984048/ #ru @go_in_action | Другие наши каналы
gRPC против JSON — что выбрать и как сломать себе мозг правильно Cлушай, если ты до сих пор шлёшь JSON туда-сюда и мучаешься с валидацией — пора смотреть в сторону gRPC. Но сперва давай без пафоса разберём, что это вообще такое. Читать: https://habr.com/ru/articles/982652/ #ru @go_in_action | Другие наши каналы
А может чайку Все уже слышали, что в Go 1.25 завезли новый экспериментальный сборщик мусора - Green Tea GC. Теории о том, как он работает, много (и в том числе на Хабре). Но когда мы с коллегой попытались просто включить GOEXPERIMENT=greenteagc на наших обычных бенчмарках, нас ждало разочарование: результаты были то чуть лучше, то чуть хуже, то вообще одинаковые. Сплошная лотерея. Мы задались целью: найти условия, в которых Green Tea GC побеждает безоговорочно. Не на 1-2% в пределах погрешности, а так, чтобы график "пробил потолок". И у нас получилось добиться стабильного ускорения пауз GC на 40-50%. Вот рецепт нашего успеха Читать: https://habr.com/ru/articles/982480/ #ru @go_in_action | Другие наши каналы
Компонентная модель WebAssembly: от Go 1.24 к 1.25 для интеграции с Rust Новая эра межъязыкового взаимодействия До 2024 года интеграция Go и Rust была либо через хрупкий CGO, либо через сетевые вызовы с накладными расходами. Выход Go 1.24 с директивой //go:wasmexport и дальнейшие оптимизации в Go 1.25 изменили правила игры благодаря WebAssembly Component Model (WCM). Компонентная модель - это стандартизированная система типов (WIT) и ABI, позволяющая компонентам на разных языках взаимодействовать напрямую, без сериализации. Сегодня мы создадим Go-компонент и запустим его из Rust. Читать: https://habr.com/ru/articles/982180/ #ru @go_in_action | Другие наши каналы