Обновить
105.17

Go *

Компилируемый, многопоточный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Как Go 1.24 и Swiss Tables вернули нам 200 гигабайт памяти

Уровень сложностиПростой
Время на прочтение14 мин
Количество просмотров6.6K

Команда Go for Devs подготовила перевод статьи о том, как Go 1.24 с новой реализацией Swiss Tables помог снизить использование памяти в продакшне на сотни гигабайт. В статье разбирают, что изменилось в реализации map, как это отразилось на профилях памяти, и какие оптимизации в коде дали дополнительный эффект.

Читать далее

Distroless приложения (VM/bare-metal)

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров4K

Некоторые языки программирования (например, Go и Zig) позволяют собрать приложение без каких-либо зависимостей, в том числе отвязаться от libc, тем самым создание distroless-контейнера на Go становится тривиальной задачей. Но эта же особенность может быть применена не только для создания контейнера, но и для запуска такого приложения в VM или на реальном хосте не используя какой-либо дистрибутив Linux, а используя только ядро Linux и само приложение, построенное с помощью Go (или, например, Zig). Такая возможность позволяет избавиться от дополнительных зависимостей, которые добавляют потенциальные риски с точки зрения атаки на цепочку поставок (supply chain attack).

Читать далее

Go, Telegram, AI: Создаем систему ранжирования трейдинг-каналов по точности прогнозов

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров1K

Telegram стал одной из главных площадок для обмена информацией. Здесь можно найти специализированные каналы с ценным контентом, начиная от актуальных новостей и заканчивая торговыми сигналами. Для разработчиков существует несколько способов программного взаимодействия с Telegram, что позволяет автоматизировать задачи и собирать данные.

Среди этих способов выделяются два основных: Bot API и MTProto API. Оба предоставляют различные возможности, но имеют и свои ограничения. Автоматизированный сбор данных для машинного обучения или глубокого анализа может быть непростой задачей из-за этих особенностей.

Читать далее

Devsyringe: Хватит копипастить динамические значения

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров2.2K

Сегодня расскажу о Devsyringe — инструменте для автоматизации работы с динамическими значениями в статических файлах.

Мы, разработчики, постоянно сталкиваемся с API-токенами, временными URL, строками подключения и флагами функций. В Node.js и других средах есть dotenv и менеджеры конфигураций, которые подставляют значения во время выполнения.

Но что делать со статическими файлами — HTML, JS-конфигурациями или старыми конфигами? Обычно приходится вручную копировать значения, открывать файлы, вставлять, сохранять — скучно, долго и легко ошибиться. Devsyringe решает эту проблему, автоматизируя процесс.

Читать далее

Сборщик мусора в Go. Часть 1: Stop The World, пейсинг и оптимизация

Уровень сложностиПростой
Время на прочтение15 мин
Количество просмотров3.2K

Команда Go for Devs подготовила перевод статьи о том, как работает сборщик мусора в Go. Автор подробно объясняет семантику алгоритма триколорной маркировки и очистки, механизмы Stop The World, пейсинг и источники задержек. Главное — не бороться со сборщиком, а работать с ним в унисон: устранять лишние выделения и снижать нагрузку на кучу.

Читать далее

Интеграционные тесты в Go: как избавиться от флаков и боли

Время на прочтение10 мин
Количество просмотров3.6K

Всем привет! Меня зовут Александр Голубь, и я пишу на Go уже 7 лет. Когда я только начинал, казалось, что юнит-тестов достаточно. Функции проверены, сборка зелёная — можно релизить. Но первый же боевой проект показал, что это иллюзия. В продакшене всё падает, хотя юниты сияют зелёным. Почему? Потому что реальный сервис — это не только код, но и PostgreSQL, Redis, Kafka, внешние API. Данные проходят через цепочку зависимостей, и любая несовместимость ломает систему. Юнит-тесты этого не ловят. Тут нужны интеграционные.

Читать дальше →

Кастомный процессор для OpenTelemetry Collector. А почему бы и нет?

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров1.6K

Всем привет! Меня зовут Артем, я платформенный инженер и в работе часто приходится сталкиваться с Observability‑инструментами. Одним из таких инструментов, о котором я хотел бы рассказать является OpenTelemetry Collector. Это мощный инструмент, который позволяет работать с различной телеметрией и строить гибкие пайплайны для метрик, логов и трейсов.

Но иногда возможностей стандартного набора компонентов не хватает, чтобы справиться с поставленными задачами без использования костылей и изоленты. Тогда на сцену выходят кастомные компоненты для Otel-Collector.

В этой статье я расскажу про свой опыт написания кастомного процессора для otel-collector. Он обогащает спаны данными из CSV‑файла: находит совпадение по атрибуту и добавляет дополнительные поля прямо внутрь трейсов. Мы разберём архитектуру процессора, посмотрим код и конфигурацию, а в конце покажу, как собрать и запустить Collector с этим расширением.

Читать далее

Разработка RESTful API на Go и Gin

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров4.1K

Команда Go for Devs подготовила перевод статьи по созданию RESTful API на Go с использованием фреймворка Gin. Всего за несколько шагов вы напишете простой веб-сервис, который умеет возвращать список джазовых альбомов, добавлять новые и находить альбом по ID. Отличный старт для знакомства с Gin.

Читать далее

pgdbtemplate — моментальное создание тестовых баз PostgreSQL в Go через шаблоны. Ускоряем тесты в 1.5 раза

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров2.1K

Знакомо чувство, когда интеграционные тесты с PostgreSQL в Go работают дольше, чем хотелось бы? Каждый тест создает базу заново, применяет миграции, и большая часть времени уходит не на проверку логики, а на подготовку окружения. В этой статье я расскажу о своем open-source решении на Go, которое использует встроенные механизмы шаблонов PostgreSQL, чтобы ускорить этот процесс в полтора раза, уменьшить потребление памяти и сделать ваши тесты по-настоящему параллельными.

Читать далее

Event Driven Design и ksqlDB

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров2.1K

На конференции Web 2.0 в 2006 году Marissa Mayer из Google указала на проблему, что дополнительные полсекунды задержки приводили к снижению поискового трафика примерно на 20%. Amazon сообщал о похожем эффекте: каждые дополнительные 100 мс уменьшали продажи примерно на 1%. 

Большие задержки времени отклика чаще можно встретить в аналитических SQL-запросах, так как запрос требует обработки больших блоков данных. Особенно сильно задержки влияют на клиентов с длительной историей покупок. Именно они чаще всего оказываются в верхних перцентилях времени отклика — а это те самые пользователи, которых компании меньше всего хотят терять. 

Конференция была проведена почти 20 лет назад, компьютерные технологии за это время стали демократичнее, что привело к увеличению количества пользователей и продуктов. Проблема задержек не исчезла — наоборот, она стала острее: чем больше информации накапливают сервисы, тем тяжелее становится её обработка. Чтобы справиться с нагрузкой, приходилось менять архитектурные подходы к хранению и обработке данных. В статье мы разберем один из них – event-driven design.

Читать далее

Создаём CLI-приложение прогноза погоды на Go: пошаговое руководство для новичков

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров2.5K

Команда Go for Devs подготовила перевод пошагового руководства: как написать собственное CLI-приложение прогноза погоды на Go. Проект охватывает всё — от HTTP-запросов и парсинга JSON до удобного интерфейса командной строки. Отличная практика для новичков и хороший повод освежить базовые навыки тем, кто уже работает с Go.

Читать далее

Не одним CRDT едины или P2P vs Authoritative в local-first приложениях

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров819

Сегодня поговорим про реализации решения конфликтов подходов local / offline-first – это когда ваше приложение позволяет пользователям работать полностью или частично оффлайн, а когда они выходят в сеть, синхронизировать все их изменения.

Примеры таких приложений: Notion-like редакторы, Figma-like вайтборды или Linear-like таск менеджеры.

Основная идея – коллаборация, а коллаборация несет за собой конфликты, разберем очень наглядный пример:

Читать далее

Реальный проект и сертификат для портфолио — что, помимо знаний, дадут курсы по ручному тестированию и разработке на Go

Время на прочтение4 мин
Количество просмотров1.9K

Курсами по тестированию или разработке на Go сейчас мало кого удивишь. Но что если это обучение от вендора IT-инфраструктуры, где преподаватели — реальные инженеры с многолетним опытом, а программа позволяет выполнить реальный проект для портфолио и погрузиться в тонкости тестирования специфического оборудования и ПО — СХД, базовых станций, операционной системы?

Если вы студент — второкурсник и старше — или выпускник 2025 года, не упустите возможность пройти бесплатные курсы от YADRO. Для начала достаточно оставить заявку до 28 сентября. А что ждет дальше — читайте под катом.

Читать далее

Ближайшие события

Genkit Go 1.0: AI-фреймворк для продакшена

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров4.4K

Команда Go for Devs подготовила перевод статьи о релизе Genkit Go 1.0 — open source AI-фреймворка от Google для экосистемы Go. Теперь можно быстро и безопасно создавать продакшен-ready AI-приложения с типобезопасными флоу, поддержкой RAG, вызова инструментов и богатым локальным тулчейном.

Читать далее

За пределами отладчика: полное руководство по отладке Go-приложений

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров1.7K

Команда Go for Devs подготовила перевод статьи о том, как отлаживать приложения на Go. Автор показывает, что баги бывают разными: воспроизводимые, случайные, гейзенбаги и конкурентные. А в арсенале Go-разработчика должны быть — TDD, стратегическое логирование, Delve, git bisect и даже онлайн-отладчик GoTutor.

Читать далее

Мониторинг SSL-сертификатов в oVirt Engine: как мы научились спать спокойно благодаря Go и Prometheus

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров2.2K

Как избежать простоев и сбоев из-за просроченных SSL-сертификатов? Мы в HOSTKEY разработали простой, но надёжный инструмент на Go для oVirt Engine, интегрированный с Prometheus и Grafana. Теперь система сама предупреждает о проблемах — задолго до их возникновения.

Читать далее

Новый экспериментальный API для JSON в Go

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров5.9K

Команда Go for Devs подготовила перевод статьи о новом экспериментальном API для работы с JSON в Go. Спустя почти 15 лет после появления encoding/json в стандартной библиотеке разработчики столкнулись с его ограничениями. В версии Go 1.25 появился экспериментальный encoding/json/v2 — он решает старые проблемы, добавляет потоковую обработку и повышает производительность.

Читать далее

Несколько занятных вопросов собеседований по Go

Время на прочтение3 мин
Количество просмотров9.1K

Наверное, многим знакомо - пишешь ты на языке (вот скажем, Go) уже не первый год - а на собеседовании всё равно найдут чем удивить :-) Вот поделюсь уловом последних дней - не смейтесь над моей наивностью - вдруг кому пригодится!

Читать далее

Топ 5 возможностей Gin, которые должен знать каждый Go-разработчик

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров3K

Команда Go for Devs подготовила перевод статьи о скрытых возможностях Gin-фреймворка. Даже если вы давно пишете API на Go, в арсенале Gin есть несколько приёмов, которые сделают ваш код быстрее, надёжнее и проще в сопровождении. От кастомных валидаторов до graceful shutdown — фишки, о которых знают не все.

Читать далее

if err != nil: почему мы (не) любим обработку ошибок в Go? Обзор предложений по её улучшению

Уровень сложностиПростой
Время на прочтение27 мин
Количество просмотров27K

Привет, Хабр! Меня зовут Павел Агалецкий, я ведущий инженер в платформе Авито. Эта статья на одну из самых холиварных тем, о которой вы могли слышать или читать множество раз. При обсуждении Go, особенно новичками или представителями других языков программирования, камнем преткновения обычно становится проверка ошибок — if err != nil.

Рассказываю, какие есть особенности и нюансы, сравниваю обработку ошибок в Go и других языках. Говорим о подходах к изменению обработки ошибок и обсуждаем последний proposal от Яна Тейлора. А еще разбираемся, почему все предложения отклонялись.

Читать далее

Вклад авторов