Обновить
100.39

Go *

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

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

Как мы выследили регрессию использования памяти в продакшен-сервисах на Go 1.24

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

Команда Go for Devs подготовила перевод статьи о том, как команда инженеров выявила регрессию использования памяти в Go 1.24. Оказалось, что всего одна оптимизация в аллокаторе памяти, случайно потерянная при рефакторинге, заставляла Go «съедать» сотни мегабайт RAM. Но сообщество Go-разработчиков быстро нашло и устранило проблему.

Читать далее

Миша — консольный SSH клиент

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

Миша - консольный SSH клиент, который в будущем перерастет в полноценную утилиту для удобно взаимодействия с удаленным компьютером по SSH

Читать далее

Как превратить SQL в API на Go?

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

Команда Go for Devs подготовила перевод статьи о том, как превратить SQL в полноценный API прямо в Go. Автор показывает, как можно безопасно принимать WHERE-условия в виде SQL-подзапросов, валидировать их и использовать для запросов к базе. Просто, элегантно и почти без лишнего кода.

Читать далее

Как спроектировать кэш-библиотеку нового поколения и не умереть?

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

Всем привет! Меня зовут Алексей Майшев, я работаю Go-инженером в Авито. В этой статье рассказываю, как мы проектировали и разрабатывали кэш-библиотеку следующего поколения для Go — otter

Вы узнаете, чем нас не устроили текущие кэш-библиотеки в Go, какие подходы и оптимизации мы рассматривали и на каких остановились, как замеряли производительность и потребление памяти и в чём otter превосходит конкурентов. А ещё тут будет много теории — в процессе работы над библиотекой нам приходилось читать много страшных научных статей на тему кэшей.

Читать далее

Оптимизация памяти в Go: 20 приёмов для эффективных приложений

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

Команда Go for Devs подготовила перевод статьи о том, как оптимизировать использование памяти в Go-приложениях. Автор делится двадцатью приёмами — от выбора ресивера метода и правильной инициализации slice до кастомного управления памятью и профилирования с pprof. TL;DR: мелкие улучшения складываются в заметный прирост производительности и стабильности.

Читать далее

Как проверить время и асинхронный код в Go

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

Команда Go for Devs подготовила перевод статьи о пакете synctest, который с Go 1.25 стал частью стандартной библиотеки. Он позволяет писать быстрые и надёжные тесты для конкурентного кода, не усложняя сам код. Теперь асинхронные операции можно проверять без долгих ожиданий и флаки-тестов.

Читать далее

Как мне надоело создавать файлы и папки

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

Рассуждаю о проблеме регулярного создания файлов и о том, как поддержать архитектуру и автоматизировать рутину.

Написал утилиту на Go для генерации структур файлов по шаблонам, которая, думаю, будет полезна многим.

Читать далее

Что нового в GoLand 2025.2?

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

Команда Go for Devs подготовила перевод статьи о новых возможностях GoLand 2025.2. В этом релизе — умное выявление ошибок с помощью анализа потоков данных, неблокирующий экран приветствия, улучшенный поиск HTTP-эндпоинтов и ускоренный AI-агент Junie. А ещё — апгрейд JetBrains AI Assistant и свежие функции, унаследованные от IntelliJ IDEA, WebStorm и DataGrip.

Читать далее

Generic интерфейсы в Go: просто, но сложно

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

Команда Go for Devs подготовила перевод статьи Акселя Вагнера о том, как generic интерфейсы в Go открывают новые возможности и новые сложности. В статье разбираются паттерны, ограничения и компромиссы: от self reference интерфейсов до дилеммы с ресивер-указателями.

Читать далее

Как мы обслуживаем 5 млрд карточек в сутки с задержкой меньше 1 мс

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

Меня зовут Ескендиров Мурат, я — архитектор сайта в Ви.Tech, IT-дочке ВсеИнструменты.ру. В этой статье расскажу, как мы строили сервис для выдачи карточек товаров, обрабатывающий до 5 миллиардов запросов в сутки, какие архитектурные решения приняли и с какими проблемами столкнулись в процессе. Расскажу, какие решения сработали, а какие до сих пор остаются нашей головной болью.

Сайт «ВсеИнструменты» имеет почти 20-летнюю историю, и, как это часто бывает, за это время он превратился из маленького сайта с парой сотен товаров на PHP, созданного «на коленке», в гигантский монолит с несколькими миллионами уникальных номенклатур.

Несколько лет назад перед сайтом встали в полный рост проблемы, характерные для многих компаний, выросших из «подпартного» стартапа (первый свой заказ компания «ВсеИнструменты.ру» получила во время лекции в МФТИ, тогда один из основателей для его оформления залез под парту) в многомиллиардную корпорацию:

Читать далее

Как я пытался засунуть gRPC в браузер — часть первая

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

Одна из самых основных проблем в работе с gRPC - необходимость наружу вытаскивать отдельно REST API для web клиента, но, надо ли отдельно его писать, или можно как-то унифицировать и эту историю?

И вот начал я копать эту тему, и чем глубже копал, тем больше удивлялся. Оказывается, за последние почти 10 лет было целых ТРИ ЧЕТЫРЕ серьезных попытки затащить gRPC в веб. И знаете что самое смешное? Самая первая попытка, сделанная в 2015 году японкой-одиночкой (в команде с коллегами), до сих пор остается самым адекватным решением. А Google со всеми своими миллиардами и армией разработчиков так и не смог ничего нормального придумать. Но обо всем по порядку.

Ах, да, меня зовут Эдгар Сипки, я все также евангелист gRPC && OpenSource :) Кстати, мой канал, там я гораздо чаще пишу (а скоро еще и начну снимать очень много крутого контента про gRPC и Go), ну и конечно один из основателей инструмента EasyP

Ссылка на полный доклад, если хочется посмотреть - YouTube

Читать далее

Go по-прежнему полон проблем

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

Я уже больше десяти лет критикую Go, о чём высказывался в своих предыдущих статьях «Why Go is not my favourite language» и «Go programs are not portable».

Описанные в них проблемы языка бесят меня всё больше, и в основном потому, что их явно можно было избежать. Мир знавал решения и получше, но Go почему-то состряпали именно таким.

Те, кто читал мои прежние статьи, встретят здесь частичные повторы, так что заранее прошу меня за них простить.

Читать далее

Оптимизация БД начинается в пятницу

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

Всем привет, меня зовут Денис Лимарев, я руковожу разработкой в одной из продуктовых команд Uzum Tezkor. В этой статье разберу несколько оптимизаций запросов к БД, которыми наша команда пользуется при разработке своих сервисов, и опишу подход к оптимизациям запросов в целом. В своих проектах мы используем PostgreSQL версии 14.15, поэтому все запросы я проанализировал на ней, и ваши результаты могут отличаться в зависимости от вашей версии.

Читать далее

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

Увеличиваем дисковое пространство физического сервера за одну минуту

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

Можно ли подключить сетевой диск к железному серверу за минуту, при этом не выключая его, сохраняя отказоустойчивость и не привлекая инженеров?

Я Беляков Алексей — Go-разработчик в Cloud.ru, в статье расскажу, как нам удалось это сделать. Сначала поделюсь кейсами, которые натолкнули на создание такой фичи, затем расскажу, как мы реализовали ее интеграцию со стороны сервиса Bare Metal, а в конце покажу, как всего за минуту можно расширить дисковое пространство физического сервера.

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

Единый код валидаторов на фронте и бэке (PHP + FFI + Go + JS)

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

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

Если фронт и бэк написан на одном языке (привет js+node), то мы можем напрямую использовать один код валидатора и там и там.

В остальных случаях (js+php, java, python, go, dotnet) есть проблема. Во-первых, придётся два раза писать примерно одно и то же на двух языках, во-вторых, нужно убедиться, что написанное работает одинаково. Особенно печальны случаи, когда фронт ошибочно зарезает данные, валидные с точки зрения бэка и логики приложения.

Читать далее

CRUD generator для golang + PostgreSQL

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

Для работы любого сервиса обычно нужна база данных. Чаще всего PostgreSQL.
Также требуются общие функции по работе с БД, так называемые CRUD операции,
операции CREATE + READ + UPDATE + DELETE, а также другие функции по работе с БД.
...
Получится готовый микросервис, который можно сразу запустить, или можно использовать как библиотеку через import.

Читать далее

Самый лучший мок на свете: разбираемся с инструментами для генерации моков в Go

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

Всем привет! Меня зовут Семён Эйгин, я бэкендер в Авито, люблю опенсорс и периодически что-то туда контрибьючу. В этой статье разбираемся с моками и выбираем самый удобный инструмент (не обязательно лучший!). Это достаточно холиварная тема, хотя при подготовки статьи я не ожидал, что она окажется настолько спорной — у каждого разработчика своё мнение на этот счёт. Чтобы узнать моё и высказать своё — переходите под кат!

Читать далее

Goffeeйнная гуща: актуальные инструменты и особенности группировки GOFFEE в атаках на Россию

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

В течение 2024 года несколько российских организаций обращались к команде по реагированию на киберинциденты экспертного центра Positive Technologies (PT ESC IR) для расследования инцидентов, между которыми удалось обнаружить сходство. В рамках анализа вредоносная активность инцидентов была объединена в один кластер и связана с группой Goffee, атакующей российские организации с помощью фишинга с 2022 года.

В этой статье мы расскажем про вредоносное ПО, которое используют злоумышленники в атаках, в том числе речь пойдет о ранее неизвестном рутките под Linux, который был замечен в одном из инцидентов.

Читать далее

Bubble Tea — TUI-фреймворк для Go. Мои открытия и ошибки

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

Недавно я попробовал Bubble Tea — мощный TUI-фреймворк на Go для создания красивых интерфейсов прямо в терминале. Я делюсь опытом, архитектурными находками, болями и полезными советами. Если вы любите Go и интересуетесь CLI-интерфейсами — статья для вас.

Читать далее

Youtube TG бот на GO cо всеми «прелестями»

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

Привет, Хабр! Сегодня хочу поделиться с сообществом TG ботом, которого написал пару лет назад и который до сих пор актуален и работает.

Читать далее

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