Все потоки
Поиск
Написать публикацию
Обновить
90.61

Go *

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

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

Как управлять сборками в Go с помощью build tags

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

Привет, Хабр!

Вы когда-нибудь сталкивались с ситуацией, когда нужно собрать Go-приложение под несколько платформ? Или выключить часть кода в проде, оставив её активной в дев-среде? Возможно, вы просто хотите поддерживать разные версии сборки с кастомными фичами без тонны if runtime.GOOS == "windows" {}?

В этом вам помогут build tags.

Читать далее

Обсуждаем изменения в Go 1.24, мьютексы и пакет unsafe — открытие сезона митапов для гоферов в Москве

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

С приходом весны из-под сугробов снова начинают прорастать полезные митапы. На первой в сезоне Go-сходке от YADRO предлагаем присоединиться к обсуждению изменений Go 1.24. Эксперты из AvitoTech, Yandex и YADRO подискутируют, как обновления повлияют на код разработчиков. Также вы узнаете, как обеспечить высокопроизводительную конкурентность в Go и с умом применять пакет unsafe. 

Офлайн-участников ждет демозона с оборудованием для ЦОД и телеком-операторов, технические интерактивы и подарки. Регистрация открыта!

Читать далее

Как создать свой алгоритм шифрования: от идеи до готового CLI-приложения

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

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

Читать далее

Выходим за рамки: создание оператора для наблюдения за внешними ресурсами в Kubernetes

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

В этой статье мы рассмотрим, как создать оператор, который выходит за рамки кластера и взаимодействует с внешним миром. На примере мониторинга HTTP-серверов вы узнаете, как использовать kubebuilder для разработки custom-операторов и как организовать работу с внешними ресурсами. Статья будет полезна разработчикам, желающим расширить возможности своих Kubernetes-кластеров.

Читать далее

Страх и Ненависть в Ви.Tech: от монолита к не микросервисам

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

Представьте: у вас есть монолит на PHP. Большой, сложный, местами запутанный – но такой родной. Он верой и правдой служит бизнесу много лет. А потом случается неизбежное – компания растет, нагрузки увеличиваются, и ваш надежный монолит начинает... задыхаться.

Я – Кирилл Кузин, go-разработчик платформенной команды Ви.Tech (IT-дочка ВсеИнструменты.ру). Последние три года мы переводим высоконагруженные части нашего кода с монолита на Go-сервисы. За это время успели перенести критически важные компоненты, увеличить производительность в десятки раз и найти свой путь между монолитом и микросервисами. О нем я сегодня и расскажу.

Сесть в машину без верха

BadgerDB как бэкенд для LDAP-каталога

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

Расскажем о том, как мы используем BadgerDB в качестве базы данных для LDAP-каталога, также вспомним технические основы LDAP и обсудим критерии выбра BadgerDB для наших целей.

Читать далее

Базовая архитектура сервиса на GO

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

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

Читать далее

Как работать с cookie в Go: безопасное хранение и управление сессиями

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

Автор статьи: Якушков Федор

Куки (HTTP Cookies) используются для хранения данных на стороне клиента, например, для аутентификации, управления сессиями или персонализации контента. В языке Go работа с куками реализована через стандартную библиотеку net/http, что делает их использование простым и удобным. В этой статье мы разберем основные операции с куками в Go, а также рассмотрим аспекты их безопасности.

Читать далее

HTTP-сервер на Go

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

HTTP-сервер на языке программирования Go. Начнём с HTTP-протокола, рассмотрим основные концепции создания сервера, далее напишем практический пример.

Читать далее

GO: Как и почему мы отказались от Nest.JS

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

В мире разработки всегда наступает момент, когда необходимо переосмыслить используемые технологии. В Hikasami, наблюдая за ростом используемых ресурсов и усложнением бизнес-задач, мы столкнулись с выбором: продолжать использовать привычный NestJS или искать новое решение, способное обеспечить высокую производительность и масштабируемость. Ответ оказался очевиден - нужно перейти на Go.

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

Почему Go?

Читать далее

Фишки Rust, связанные не только с производительностью

Время на прочтение6 мин
Количество просмотров5.4K
Почти весь код, который я пишу из интереса, написан на Rust. Это не потому, что мне нужна высокая производительность, хотя, это безусловный плюс. Я пишу много на Rust, потому что на нем приятно писать. В Rust есть много всего, что может понравиться, помимо быстрой работы без ошибок сегментирования.

Вот несколько моих любимых особенностей. Обратите внимание, что они ни в коем случае не являются уникальными для Rust! В других языках есть похожие комбинации возможностей.
Читать дальше →

Приложение на Go шаг за шагом. Часть 2: отправка ответов в формате JSON

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

Привет! Я Владислав Попов, автор курса «Go-разработчик с нуля» в Яндекс Практикуме. В серии статей я хочу помочь начинающим разработчикам упорядочить знания и написать приложение на Go с нуля: мы вместе пройдём каждый шаг и создадим API для получения информации о книгах и управления ими.

В прошлой статье мы уже создали сервер и добавили обработчики для трёх эндпоинтов. Также добавили простенькую конфигурацию и логгер, которые впоследствии будем развивать. В этой части статьи обновим наши обработчики, чтобы они возвращали ответы в формате JSON вместо обычного текста.

Читать далее

DeepSeek на железе за 45к

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

Джарвис — мечта многих гиков. Однако будем объективны: мы реально все ближе к его появлению. Я бы не очень хотел, чтобы все мои запросы передавались на серверы OpenAI, DeepSeek, Anthropic и других компаний. Ну и ещё с лета начал свою домашнюю рубрику — ЭЭЭЭКСПЕРИМЕНТЫ на домашнем сервере.

Я хотел собрать домашнюю станцию с полностью самостоятельной, self-hosted LLM моделью и настроить всё под себя. Однако я не знал, какой мощности сервер нужен, чтобы получить адекватную работоспособность. Практически не найти в сети нужные тесты, бенчмарки и эксперименты, так что, немного погрустив, нашел в шкафу свой старый добрый Intel NUC и понял — он и будет моим тестовым стендом!

Читать далее

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

PostgreSQL Connection Pooling: Наш опыт и с чем его едят

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

Как обеспечить высокую производительность PostgreSQL и эффективно управлять соединениями? В этой статье мы разберёмся, как правильно настроить пул соединений, какие преимущества он даёт и как избежать распространённых ошибок. Делимся нашим опытом перехода с MongoDB на PostgreSQL и работы с пулом в Go с использованием pgx.

Читать далее

Ограничение доступа к метрикам Node Exporter по IP-адресам

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

В современных инфраструктурах информационной безопасности одной из ключевых задач является ограничение доступа к системным метрикам. По умолчанию Prometheus Node Exporter предоставляет метрики в открытом доступе, что может привести к утечке информации о состоянии системы или атаке на сервис мониторинга.

Для повышения безопасности необходимо реализовать возможность ограничения доступа к метрикам только для определённых IP-адресов, что позволит контролировать, какие клиенты могут запрашивать метрики.

В данной статье рассмотрим, как внести соответствующие изменения в код Node Exporter, а также процесс сборки обновленного пакета.

Изменение кода

Добавление нового флага командной строки

Для управления доступом по IP-адресам добавим новый аргумент --web.client-ip-only, который будет содержать список разрешённых IP-адресов, разделённых запятыми. Если параметр не указан, метрики будут доступны для всех.

В файле main.go регистрируем новый флаг:

поехали...

Перехват данных из libpam (аутентификация в OpenSSH, passwd) с помощью Golang и eBPF

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

В этой статье я расскажу о том, как использовать технологии eBPF и uprobes для мониторинга процессов аутентификации в Linux-системах. На примере библиотеки libpam, которая используется в таких инструментах, как OpenSSH и команда passwd, я покажу, как с помощью Golang и динамического трассирования можно перехватывать учётные данные в реальном времени. Подробно опишу создание среды для экспериментов, настройку программ на eBPF и организацию мониторинга без изменения исходного кода приложений.

Читать далее

Экспорт ключей TLS: зачем, почему и как реализовать с Go

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

Недостаточно просто записать дамп TLS-трафика: чтобы влезть внутрь анализатором - нужны секретные ключи. Если предусмотреть экспорт ключей при разработке сервиса, то это поможет при отладке. А инженеры DevOps, которые сервис сопровождают, будут рады. В crypto/tls из типовых библиотек Go интерфейс для экспорта сессионных ключей встроен в базовый "конфигуратор". Кроме простого примера кода в статье рассказано, почему экспорт ключей работает, что именно выводится в экспортные файлы и как использовать результат в tshark/Wireshark.

Читать далее

Как мы обрабатываем аналитические данные с помощью Redpanda Connect

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

Привет, Хабр! Я Артём Чаадаев, бэкенд-разработчик в Туту. Я занимаюсь разработкой на языке Go в команде ассортимента размещения. Мы отвечаем за работу с контентом отелей и интеграции с поставщиками.

Периодически мы собираем данные для аналитики, и в таких задачах нужно реализовывать схему отправки данных в ClickHouse. В этой схеме мы преобразовываем данные с помощью Redpanda Connect. В статье покажу простой практический пример работы с этим инструментом, который должен помочь тем, кто только начинает его использовать. А еще расскажу про преимущества и проблемы, с которыми мы столкнулись при работе с Redpanda Connect.

Читать далее

Книга: «Go: идиомы и паттерны проектирования, 2-е изд.»

Время на прочтение4 мин
Количество просмотров6.7K
imageПривет, Хаброжители!

К выходу перевода книги «Go: идиомы и паттерны проектирования, 2-е изд.» мы долго думали, чем же удивить читателя Хабра. Так мы возьмём рецензию Томаса Свояновского — full-stack разработчика с восьмилетним опытом. Он в рецензии постарался учесть отличия второго издания книги от первого, подробно объяснил, о чём Джон Боднер писал и какие знания вкладывал на страницы.

Приятного чтения!
Читать дальше →

Ordered map на Go

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

Omap — это пакет Golang для работы с потокобезопасными упорядоченными map. Упорядоченная map содержит map golang, list и mutex для выполнения функций упорядоченной map.

Упорядоченная map— это map, которая запоминает порядок элементов. Map можно итерировать для извлечения элементов в том порядке, в котором они были добавлены.

Читать далее

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