Последние посты

Go in Action
31 мар., 13:20
переслано из @devo_pes
Улучшаем Dockerfile: от примитивной базы к multi-stage-решениюDockerfile можно составить по-разному, и даже самые примитивные его варианты могут работать, но это не значит, что их стоит использовать. Поэтому давайте разбираться, как сделать из Dockerfile конфетку. Для этого читайте статью. Там с каждым шагом Dockerfile становится всё круче с каждым шагом:🔘 Начинается с наивного подхода — всё работает, но образ тяжеленный, сборка занимает 10 минут, а результат непредсказуем. 🔘 Multi-stage — разделяем сборка и рантайм, финальный образ содержит только бинарник и необходимые runtime-зависимости.Другие два шага, а также отдельный блок о том, почему не все лучшие практики стоит бездумно выполнять — по ссылке.


Go in Action
30 мар., 16:12
Полнотекстовый поиск на Go без Elasticsearch: Bleve как альтернативаКогда в проекте возникает задача поиска, первая мысль — поднимать Elasticsearch. Но что, если не хочется тащить внешний сервис, возиться с кластеризацией и поддерживать ещё одну точку отказа? Для Go есть Bleve — встраиваемая библиотека, которая работает внутри вашего приложения, индексирует любые структуры и не требует отдельного сервера.В гайде разбирают всё по делу: — создание индекса и простой поиск с ранжированием по BM25; — кастомные маппинги полей: стемминг, стоп-слова, исключение полей из индекса; — мультиязычный поиск через IndexAlias — один виртуальный индекс поверх нескольких; — курсорная пагинация с SearchAfter (чтобы не было дублей и пропусков при обновлении данных); — настройки производительности Scorch: воркеры, размер сегментов, пороги мёржа.Bleve — это не замена Elasticsearch для больших
Go in Action
5 мар., 11:16
Победителями премии Тпрогер 🐀становятся...Здесь играет барабанная дробь и интригующая музыка... Вам нужно только выждать драматическую паузу перед объявлением победителей — в каждой номинации он один, и определяется большинством голосов. Готовы?В номинации «Продукт года» золотая мышь достается компании: 🐀NetVision за платформу интеллектуального мониторинга СИМ.В номинации «Облачный продукт года» побеждает компания: 🐀Гравитон с паком виртуализации «Гелиус»Звание «IT-ивент года» вручается компании: 🐀Островок! за О!ХакатонИ в категории «Дизайн года» первое место занимает компания: 🐀AcademiaDev за интерактивную инсталляцию.Каждый ваш лайк, голос влияли на исход премии. Давайте поддержим всех — ставьте




Go in Action
27 янв., 13:25
Я решил написать ухудшенный UUID по ничтожнейшим из причинВчера я баловался с проектом API, которым занимаюсь уже долгое время. Подобные проекты мы обычно переписываем снова и снова на протяжении многих лет, чтобы поддерживать высокий уровень дофамина от рефакторинга. Вы понимаете, о чём я. На этот раз совершенно внезапно я кое-что осознал. Мне нужно отрефакторить одну вещь. Я достаточно активно пользуюсь UUID, поэтому URL моих ресурсов очень длинные и некрасивые.В зависимости от версии и варианта в UUID есть множество разной информации, но по большей мере это куча случайных битов, которые и обеспечивают свойство «универсальной уникальности», которое нам так нравится. Но если по какой-то причине вам не нравится проверенный временем стандарт с огромной экосистемой нативной поддержки... то эта статья для вас!Читать: https://habr.com/ru/articles/987352/#ru@go_in_action | Другие
Go in Action
27 янв., 13:25
Go рухнул с 7 на 16 место в TIOBE: пора ли российским компаниям пересмотреть технологический стек?В ноябре 2024 года язык программирования Go достиг своего исторического максимума — седьмого места в престижном индексе TIOBE, укрепив позиции в топ-10. Однако всего через 14 месяцев, в январе 2026 года, картина кардинально изменилась: Go обвалился на 16-е место, потеряв сразу 9 позиций. Это один из самых драматичных спадов года среди топовых языков. Парадокс в том, что в России Go переживает противоположную тенденцию — язык активно набирает популярность, его используют крупнейшие технологические компании и количество Go-разработчиков превысило 40 тысяч. Возникает критический вопрос для отечественной индустрии: не движемся ли мы против глобального технологического тренда, делая ставку на язык, который теряет позиции на мировой арене?Читать: https://habr.com/ru/articles/989014/#ru@go_
Go in Action
27 янв., 13:25
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://
Go in Action
27 янв., 13:25
Go: 15 самых популярных докладов 2025 года на YouTubeGo 1.25, кодовые агенты, тулчейн, наблюдаемость, безопасность, тестирование, производительность и работа высокодоступных систем.Читать: «Go: 15 самых популярных докладов 2025 года на YouTube»#ru@go_in_action | Другие наши каналы
1,120Открыть в Telegram
Go in Action
27 янв., 13:25
Go против Rust против Zig: какой язык для чего нуженЭто попытка понять философию языков и определить, какой язык ближе лично вам.Читать: «Go против Rust против Zig: какой язык для чего нужен»#ru@go_in_action | Другие наши каналы


Go in Action
27 янв., 13:25
Экспорт приватных типов в Go: почему это антипаттерназбираем антипаттерн, его последствия для инкапсуляции и архитектуры, а также показываем идиоматичные способы инициализации структур и сервисов в Go.Читать: «Экспорт приватных типов в Go: почему это антипаттерн»#ru@go_in_action | Другие наши каналы


Go in Action
14 янв., 06:38
Black-White Array: новая структура данных с O(log N) аллокацийBlack-White Array (BWA) — это упорядоченная структура данных с амортизированным временем операций вставки/поиска/удаления и используемых участков памяти. Преимущества:• Амортизированное время вставки/удаления/поиска сравнимое с реализацией BTree от Google; • Низкое количество аллокаций памяти при операциях вставки - меньше давления на сборщик мусора, ниже фрагментация памяти; • Массивы под капотом: данные лежат рядом, что улучшает кэшируемость процессором и скорость обхода/доступа к данным; • Позволяет хранить элементы с одинаковыми ключами - не нужно использовать дополнительные структуры для группировки таких элементов; • Низкий оверхед на хранение служебной информации - экономия памяти по сравнению с другими структурами данных; • Удобен для вставки батчами; • Простая сериализация и десериализация; ПодробностиЧитать:
Go in Action
12 янв., 14:44
Как сделать свой статический анализатор для Go?Go разработчики постоянно сталкиваются с предупреждениями встроенного статического анализатора. А что делать, если его возможностей не хватает или нужно искать что-то специфичное для вашего проекта? Go предоставляет мощные инструменты для разбора и анализа кода. В этой статье мы поговорим о них и даже сделаем своё первое диагностическое правило.Читать: https://habr.com/ru/companies/pvs-studio/articles/984526/#ru@go_in_action | Другие наши каналы
Go in Action
12 янв., 10:17
Go: сборщик мусора там, где его не ждутКогда мы говорим о сборщике мусора, то сразу думаем о куче. Зачем он нужен в стеке? Переменная попала на стек, функция завершила исполнение — стек вжух! — и очистился.А что, если я вам скажу, что на стеке Go тоже свой сборщик мусора? Звучит неожиданно? Давайте разберемся по порядку.Читать: https://habr.com/ru/articles/983622/#ru@go_in_action | Другие наши каналы
Go in Action
11 янв., 10:25
Честный взгляд на Go: сильные стороны и болезненные ограниченияКоманда Go for Devs подготовила перевод обзора языка Go от практикующего разработчика. Автор без прикрас разбирает сильные стороны Go — конкурентность, простоту и эргономику, — а затем подробно объясняет, почему его разочаровывают enum’ы, неизменяемость и модель ошибок.Читать: https://habr.com/ru/articles/984048/#ru@go_in_action | Другие наши каналы
Go in Action
3 янв., 20:00
gRPC против JSON — что выбрать и как сломать себе мозг правильноCлушай, если ты до сих пор шлёшь JSON туда-сюда и мучаешься с валидацией — пора смотреть в сторону gRPC. Но сперва давай без пафоса разберём, что это вообще такое.Читать: https://habr.com/ru/articles/982652/#ru@go_in_action | Другие наши каналы
Go in Action
2 янв., 20:48
А может чайкуВсе уже слышали, что в 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 | Другие наши каналы
Go in Action
31 дек. 2025 г., 13:08
Компонентная модель 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 | Другие наши каналы
Go in Action
31 дек. 2025 г., 02:05
ChatGPT Atlas не нужен: Пишем свой AI-«браузер» который не стыдно запуститьПочти каждый день в ленте я вижу новости про очередного "революционного" AI-агента. AutoGPT, BabyAGI, Devin, Cursor, Perplexity, Atlas.... мол они заменят программистов, копирайтеров а в итоге....Я, как хотел бы инструмент, который просто работает, мол "Зайди в гугл, найди доку, скажи мне ответ" ради интереса - я решил написать свой AI-тул....Читать: https://habr.com/ru/articles/982058/#ru@go_in_action | Другие наши каналы1,020Открыть в Telegram
Go in Action
30 дек. 2025 г., 10:51
Плагины с человеческим лицом: истории комьюнити OpenIDEМы в OpenIDE хорошо понимаем, что среда разработки — это не просто набор инструментов и функций. Это пространство, в котором разработчик проводит значительную часть своего времени: думает, экспериментирует, ошибается и создаёт новое. Именно поэтому для нас особенно важны открытость, доступность и ощущение живого диалога внутри экосистемы.IDE - это не только кодовый редактор, вспомогательные инструменты и графические интерфейсы. IDE - это комьюнити. Люди, которые расширяют возможности платформы, находят нестандартные решения, закрывают реальные боли и делятся своим опытом с другими. Именно они превращают среду разработки из продукта в экосистему — живую и дышащую.И когда до Нового года остаётся совсем немного времени, а сил на сложные технические материалы почти не остаётся, мы решили немного сменить ритм. Вместо глубоких
Go in Action
30 дек. 2025 г., 09:22
Основы виртуальной памятиЗадумывались ли вы о том, зачем компьютерам нужна оперативная память (ОП, RAM), когда у них уже есть дисковое хранилище (диск)? Ответ кроется в скорости доступа. Хотя диск является постоянным, он намного медленнее, чем ОП. ОП жертвует изменчивостью ради скорости - данные исчезают при выключении питания, но время доступа гораздо меньше. Как следствие, центральный процессор (ЦП, CPU) имеет доступ только к ОП, а не к диску.ЦП имеют встроенные регистры, которые еще быстрее, чем ОП. Тогда зачем нам вообще ОП? Затем, что количество и размер регистров ограничены. Представьте функцию, которой нужно работать с тысячью переменных - все они не поместятся в регистры. Что если нам нужно хранить большие структуры данных, такие как массивы или объекты? У регистров нет емкости (capacity). Вот где в игру вступает ОП - она предоставляет пространство, необходимое для обработки
Go in Action
30 дек. 2025 г., 09:14
Как устроено фаззинг-тестирование на Go, которое знает о ваших багах больше, чем вы самиПривет, Хабр! Меня зовут Иван, я инженер по информационной безопасности в департаменте разработки общей платформы компании YADRO. Я занимаюсь фаззинг-тестированием уже два года, через мой фаззинг прошло много кода на языках C и Go.В этой статье будет и теория, и практика. Сначала разберемся, как устроен фаззинг, его алгоритмы и при чем тут ГОСТ. Затем я расскажу, как написать тулу для фаззинг-тестирования проектов на Go. В практической части я подробно опишу процесс разработки и покажу примеры кода, так что используйте статью как инструкцию.Читать: https://habr.com/ru/companies/yadro/articles/981544/#ru@go_in_action | Другие наши каналы
