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

Go *

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

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

Skip List в Golang

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

Привет, Хабр! Сегодня я решил поделиться с вами одной из тех структур данных, которая, возможно, не так популярна, как хеш-таблицы или деревья, но обладает своими уникальными фичами. Знакомьтесь — Skip List!

Итак, Skip List — это структура данных, которая позволяет быстро искать, вставлять и удалять элементы. Можно сказать, что это своего рода гибрид между списком и деревом, только без всяких заморочек.

Рассмотрим реализацию этой структуры в Golang, и для этого есть пакет huandu/skiplist.

Читать далее

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

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

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

Читать далее

Lamoda Tech Golang Meetup: материалы встречи

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

Golang — это любовь, уверены мы в Lamoda Tech, и это подтверждают более 170 инженеров в нашем гошном комьюнити. Мы собрали три доклада, которые хотели бы послушать сами, и провели зимний митап по Go. Делимся записями видео и презентациями c него.

Читать далее

Жизненный цикл потоков ОС в Golang

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

Всем привет! Меня зовут Паша, я занимаюсь коммерческой разработкой уже 10 лет, 8 из них — на Go. Мне довелось разрабатывать приложение, активно использующее как сеть, так и диск. 

Регулярно приходилось решать вопросы производительности. В ходе исследований я использовал все, что было было под рукой: логи, метрики, трейсы, профилировщики и runtime-трейсы. А еще изучал, как по доступным данным расследовать причины проблем производительности постфактум. Тогда мне стало интересно, почему метрика количества потоков сильно отличается от значения GOMAXPROCS и можно ли по этой метрике диагностировать какие-то конкретные проблемы.

Читать далее

Паттерн Composite в Go на котиках

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

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

В этой статье поговорим о паттерне «Компоновщик» (он же Composite) — на примере котиков. Котики идеально иллюстрируют структуру паттерна: в каждом доме есть простые котики, сложные котики (например, те, кто лазает по шкафам и открывает холодильники), а иногда — целые прайды из котиков.

Читать далее

Разработка на Go, верификация, DevOps и программирование микроконтроллеров на RISC-V: выбирай бесплатный курс

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

Новость для тех, кто хочет сделать начало следующего года особенным для своего развития. Второй год мы запускаем бесплатные практические курсы по востребованным инженерным направлениям. К уже классическим трекам по верификации, DevOps и Go-разработке добавился новый: «Программирование микроконтроллеров RISC-V: от основ работы с открытой архитектурой до создания собственного устройства». Регистрируйтесь на курсы до 16 января 2025 года, чтобы изучить современные подходы к разработке, создать проекты для портфолио и поработать под руководством опытных инженеров.

Читать далее

Как построить оценку качества контакт-центра с помощью Speech Analytics API

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

Привет, Хабр! Контакт-центры — это важная линия взаимодействия бизнеса с клиентами. Клиенты могут быть разными: кто-то жалуется на задержки, кто-то хочет вернуть товар, а кто-то просто звонит выразить благодарность. Но для бизнеса важно понять одно: насколько хорошо оператор решил проблему клиента? И ушел ли клиент довольным?

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

Читать далее

Picostress — наш подход к нагрузочному тестированию

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

Привет, меня зовут Георгий Ломакин, и я инженер по нагрузочному тестированию в компании Picodata — разработчике одноимённой NewSQL СУБД. В этой статье я поделюсь своим опытом нагрузочного тестирования и расскажу, как мы строили эту практику с нуля.

Мы выбираем распределённые системы за производительность и надёжность. Однако без постоянного нагрузочного тестирования и анализа отчётов после него, и то и другое лишь обещания. Конечно же, нагрузочное тестирование обязательно и в нашей команде, разрабатывающей распределённую NewSQL — базу данных Picodata.

Читать далее

Go: фокусы трассировки

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

В Мире нет панацеи - лекарства от всех болезней. Так и в разработке нет идеальных решений. Многопоточность в некоторых случаях может значительно ускорить вычисления программы, но в то же время может превратиться в настоящий кошмар для разработчика. Не имеет смысла писать многопоточный код без умения пользоваться трассировкой. О способах её получения написано много материала. Более того, есть много статей, где анализ кода сопровождается с анализом трассировки. К сожалению, обычно этот инструмент используется под конкретную задачу, это приводит к тому, что обычно не подсвечиваются некоторые его особенности. В статье на простых очевидных примерах объясняются неочевидные результаты трассировки.

Читать далее

5 паттернов проектирования в Go на примере котиков

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

Привет, Хабр! Сегодня мы рассмотрим реализацию паттернов проектирования на Go, и, чтобы было не скучно, возьмем главными героями котиков. Будем разбирать 5 популярных паттернов: Singleton, Factory Method, Strategy, Observer, Decorator.

Читать далее

Клиентоцентричность с точки зрения Go-разработчика и причем тут рефлексия

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

Когда всё, что делает компания — от продуктов, услуг и до обслуживания — направлено на то, чтобы клиент был доволен и возвращался снова, все команды объединяются вокруг единой цели — смотреть на задачи и искать решения с точки зрения проблем и нужд конечного клиента.  

Я Александр Шакмаев — технический лидер в Cloud.ru. Поделюсь опытом нашей команды: расскажу, как с помощью gRPC-интерцепторов и рефлексии команда Go-разработчиков может изменить продукт и улучшить пользовательский опыт.

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

Решаем задачу моментальной навигации по коду для любого коммита

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

Привет, Хабр! Меня зовут Ольга Лукьянова, я работаю в Yandex Infrastructure, в команде, которая делает системы, сервисы и инструменты для разработчиков. Недавно Яндекс анонсировал новый продукт SourceCraft, который уже собирает вокруг себя сообщество. Последний год я руковожу группой навигации по коду этого проекта.

Мои коллеги на конференциях уже рассказывали про планы развития SourceCraft — платформы от Яндекса для создания исходного кода, управления версиями, тестирования, сборки, развёртывания и сопровождения программных продуктов. А также показывали первый доступный компонент — интеллектуальный помощник для работы с кодом Yandex Code Assistant.
Я открою чуть больше деталей про возможности навигации в нашей платформе, которые появятся в публичном доступе в следующем году и помогут разработчикам не переключаться в IDE, а решать наиболее типовые задачи в одном интерфейсе. В статье — рассказ о том, как мы искали способы добавить функциональность навигации по коду при ревью пул-реквестов и каких результатов уже достигли. 

Читать далее

Способ организации gRPC контрактов и их автоматизация для микросервисов

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

Привет! Меня зовут Данил, я бэкенд разработчик.

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

Читать далее

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

Сколько памяти нужно в 2024 году для выполнения миллиона конкурентных задач?

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

Помните сравнение потребления памяти для асинхронного программирования на популярных языках 2023 года?

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

Давайте снова проведём бенчмарки и изучим результаты!

Читать далее

Пишем сервис инференса ML-модели на go, на примере BERT-а

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

Привет, на связи команда аналитиков Х5 Tech. В статье пишем сервис инференс ML-NLP модели на go. Допустим, вам нужно внедрить ML-модель (разработанную/обученную на Рython-фреймворке) в сервис в вашей инфраструктуре. По какой-то причине (не важно какой) этот сервис должен быть на golang-е. Здесь покажем, как это можно сделать, используя ONNX.

Если вы это читаете, то, вероятно, или вы знакомы с обучением ML-моделей на Рython, библиотекой моделей huggingface, языковыми моделями BERT, или вы являетесь бэкенд разработчиком на golang.

В качестве примера будем использовать модель из библиотеки huggingface seara/rubert-tiny2-russian-sentiment, которая классифицирует сантимент текста.

Читать далее

Понимание контекста

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

В статье рассмотрены основные возможности пакета context, приведены примеры основных операций c контекстом, а также альтернативные примеры без использования контекста, что позволяет применять пакет более осознанно.

Читать далее

Обзор пакета unsafe: как обходить ограничения Go (но лучше этого не делать)

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

Когда вы впервые открываете Go, вас встречает строгая и безопасная среда: никаких сюрпризов, сегфолтов, фишек с указателями. Всё строго, как в хорошо организованной организации. Но есть в этом языке лазейка, которая ломает весь этот порядок и это — пакет unsafe.

Читать далее

Прощай, Индия: как мы создали свою систему отслеживания задач на замену Jira

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

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

Зовут меня Егор, и в этой статье я хочу рассказать, как мы с ребятами из компании АИСА запилили свой аналог Jira – с блэкджеком и быстрым API на Go.

Читать далее

Для Go-разработчиков, которые хорошо себя вели в этом году: генерируем стабы для тестирования и пилим монолит

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

Если бы мы организовывали предновогодний корпоратив «здорового» гофера, он выглядел бы так. 12 декабря, в четверг, собираем Go-разработчиков в Нижнем Новгороде и онлайн, чтобы обсудить практики тестирования микросервисов на Go, историю распила монолита, которая привела к… монолиту, и работу с монструозным Makefile (ждем откровений Даниила Подольского). В качестве нетайных Сант выступят эксперты из Wildberries, YADRO, Ви.Tech и Weborama — спикеры и участники GolangConf. 

Чтобы почувствовать приближение Нового Goда, регистрируйтесь на офлайн-участие — сможете поучаствовать в технических интерактивах и получить подарки. А если вы не в Нижнем, присоединяйтесь к последнему Go-митапу в 2024 году онлайн.

Читать далее

Строим систему управления заказами с помощью Temporal: c нуля до десятков тысяч заказов в день

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

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

Читать далее

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