Как стать автором
Обновить
88.54

Go *

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

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

Простой CRUD на chi. Часть 1

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

Согласно официальному сайту, chi — это легковесный, идиоматический и композируемый маршрутизатор для создания HTTP-сервисов на Go. Он на 100% совместим с net/http и довольно легок в обращении, однако его документация предназначена скорее для опытных разработчиков, чем для новичков, поэтому я решил написать серию статей, в ходе которых мы будем постепенно развивать и перерабатывать простейший CRUD, написанный на chi.

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

Читать далее
Всего голосов 6: ↑4 и ↓2 +2
Комментарии 6

Новости

Работа с Kubernetes: поднимаем локальный кластер и деплоим в него приложения

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

Павел Агалецкий, ведущий разработчик юнита Platform as a Service Авито, написал, как поднять кластер Kubernetes на локальном компьютере Mac с помощью подручных инструментов, а потом задеплоить в него простейшие приложения.

Читать далее
Всего голосов 10: ↑8 и ↓2 +6
Комментарии 4

Укрощение примитивов синхронизации: сравниваем решения задачи с построением пула потоков на С и Go

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

Эта статья основана на истории об одном личном челлендже. Задача звучала так: помочь с реализацией взаимодействия компонентов в программном комплексе заказчика. Иными словами, понадобилось IPC для дальнейшего развития продукта. Вызов заключался в том, что в обязательных требованиях стояло использование чистого С. Другие языки, включая С++ и Go, не рассматривались. 

В итоге я получил интересный опыт в рамках системного и параллельного программирования. Меня зовут Алексей Буреев, я работаю старшим инженером по разработке ПО в YADRO, сейчас мой основной рабочий язык программирования — Golang. В этой статье я проведу небольшой эксперимент: покажу, как можно решить одну задачу с помощью разных языков программирования. Языку С я противопоставлю Go, в основе которого есть исторические наработки проектирования языка С. Для этого немного заглянем «под капот» стандартных типов данных, которые уже были заботливо созданы для нас разработчиками языка.

Всех заинтересованных прошу под кат.

Читать далее
Всего голосов 19: ↑18 и ↓1 +17
Комментарии 16

Go на митап: обсудим sync.Pool, свой mini-k8s, паттерны и сообщения об ошибках

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

28 марта встречаемся на митапе по Go-разработке с инженерами из команд систем хранения данных и телекома YADRO, а также разработчиками из VK и AvitoTech. Эксперты расскажут, как: 

снизить нагрузку на сборщик мусора,

сделать свой mini‑k8s,

написать библиотеку для обработки ошибок,

использовать горутины грамотно и безопасно.

Митап пройдет в Нижнем Новгороде и онлайн. Регистрируйтесь на встречу и выбирайте удобный формат участия. А под катом читайте программу и знакомьтесь со спикерами.

Читать далее
Всего голосов 16: ↑15 и ↓1 +14
Комментарии 0

Истории

Делаем RPG на Go: часть 0.5

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

В предыдущей статье мы начали знакомство с Ebitengine.


В этой части структура игры будет доработана и переведена на сцены.


Читать дальше →
Всего голосов 13: ↑13 и ↓0 +13
Комментарии 3

А ты хорошо знаешь Go? Держи пару полезностей по оптимизации кода

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

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

Эта статья — моя подборка приёмов и техник, которые помогут писать лаконичный и производительный код на Go без лишних костылей и велосипедов.

Речь пойдёт о:

полезностях для конкурентного программирования

приёмах в Go в целом, таких как использование iota, работа с ошибками, вывод интерфейса и т.д.

методах оптимизации работы со слайсами

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

Читать далее
Всего голосов 19: ↑17 и ↓2 +15
Комментарии 11

Как я выживаю с диабетом при помощи Golang

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

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

Британцы любят выпить. Вы когда-нибудь задумывались, сколько граммов углеводов в пинте пива? А как насчёт бургера с картошкой? Или салата, который в меню обычно указан как блюдо с низким содержанием углеводов?

Вы можете ответить: да кого это вообще волнует?

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

Оказывается, в мире есть не менее 8 миллионов людей, которых волнуют ответы на эти вопросы, и я один из них. В 2020 году у меня диагностировали сахарный диабет первого типа. Вероятно, вы слышали о диабете, но, возможно, не очень знакомы с первым типом, который встречается реже. До постановки диагноза я тоже не был с ним знаком, так что вот краткое объяснение.
Читать дальше →
Всего голосов 63: ↑59 и ↓4 +55
Комментарии 61

Bazel, stamping, remote cache (часть 2)

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

В Bazel есть две крайне полезные фичи: stamping — позволяет встроить в артефакт данные о том, от какого коммита можно собрать аналогичный артефакт и remote cache и remote build — позволяет иметь общий кэш между сборщиками или даже собрать артефакты на ферме.

Ранее, к сожалению, эти фичи были взаимоисключающими, но с версии Bazel 7.0 можно использовать stamping с remote cache при помощи scrubbing-а. А сегодня вышла версия Bazel 7.1, в которой появилась возможность использовать stamping с remote build.

Читать дальше →
Всего голосов 4: ↑4 и ↓0 +4
Комментарии 0

Разработка игр с использованием Go и библиотеки Ebiten

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

Go является мощным и эффективным языком программирования, который можно использовать для создания игр. В этой статье мы рассмотрим разработку простой игры с использованием языка Go и библиотеки Ebiten, предназначенной для создания 2D игр.

Читать далее
Всего голосов 12: ↑11 и ↓1 +10
Комментарии 9

Челлендж по обработке миллиарда строк на Go: от 1 минуты 45 секунд до 4 секунд

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

Пару недель назад я прочитал о запавшем мне в душу челлендже по обработке миллиарда строк, поэтому захотел решить его на Go.

Я немного опоздал, соревнования проводились в январе. И на Java. Меня не особо интересует Java, зато давно интересует оптимизация кода на Go.

Этот челлендж был очень прост: обработать текстовый файл названий метеорологических станций и температур, и для каждой станции вывести минимальное, среднее и максимальное значение. Чтобы упростить задачу, было ещё несколько ограничений, однако я проигнорировал те, что относятся только к Java.

Читать далее
Всего голосов 65: ↑63 и ↓2 +61
Комментарии 20

Структурированное логирование в Go с помощью Slog

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

Более 10 лет разработчики на Go жаловались на отсутствие структурированного логирования в ядре Golang. Участники сообщества Golang даже создали несколько собственных пакетов, таких как Logrus, Zap и Zerolog. В 2023 году, команда разработчиков Google Go наконец-то представила Slog — высокопроизводительный пакет для структурированного ведения логов в стандартной библиотеке Go. Мы перевели гайд о возможностях slog.

Читать далее
Всего голосов 15: ↑14 и ↓1 +13
Комментарии 4

Где искать работу Go разработчику в 2024 году

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


В поисках работы и фриланс-проектов для разработчиков Golang в 2024 году могут возникнуть некоторые сложности, особенно для новичков. 

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

Давайте рассмотрим список ресурсов, где регулярно публикуются вакансии и фриланс проекты для Go разработчиков, о которых вы могли не знать.Надеюсь, они помогут вам найти свое место в мире разработки на Golang и начать карьеру успешно.

Читать дальше
Всего голосов 23: ↑14 и ↓9 +5
Комментарии 2

Что расскажут на GoFunc: язык, инструменты, архитектура и патологоанатомы

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

Чем обычно заняты патологоанатомы, и при чём тут Go?

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

А теперь, когда GoFunc уже на носу, представляем Хабру полную программу с описаниями всех докладов. Там про самое разное — и инструменты, и архитектуру, и сам язык. Ну и о том, чем заняты патологоанатомы и при чём тут Go, тоже сказано.

Программа GoFunc 2024
Всего голосов 13: ↑11 и ↓2 +9
Комментарии 0

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

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн

JSON in GO

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

Это перевод одноименной статьи.

Базовое использование

Сериализации JSON в Go

В стандартном пакете encoding/json присутствуют механизмы сериализации marshaling и десериализации unmarshaling JSON.

Пример:

Читать далее
Всего голосов 10: ↑6 и ↓4 +2
Комментарии 19

Уведомления через Telegram-бота при помощи почтового триггера Yandex Cloud Functions

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

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

Возможно, многие сталкивались с задачей: есть сервер с некими cronjob-ами, результат выполнения которых хотелось бы мониторить определенному числу лиц, но при этом сервер находится в каком-нибудь intranet и не имеет доступа к сети интернет. Вот и у нас однажды возникла подобная проблема. Единственным доступным средством коммуникации с внешним миром у сервера был почтовый шлюз, через который можно было отправить электронную почту. До некоторого времени задача решалась отправкой нескольких копий письма, но со временем стало понятно, что гораздо  удобнее читать уведомления в Telegram. Такую настройку мы произвели с помощью Yandex Cloud Functions.

Читать далее
Всего голосов 6: ↑5 и ↓1 +4
Комментарии 2

Прокси-сервер для Android на Go

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

Реализация простого HTTP CONNECT прокси-сервера на Go, квест с маркировкой сетевых пакетов и запуск программы в Android.

Читать далее
Всего голосов 35: ↑35 и ↓0 +35
Комментарии 16

Электронные подписи. Но что мы знаем о мультиподписях?

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

Небольшое введение в технологии MPC и мультиподписей.

Краткое описание набора протоколов и используемой реализации мультиподписи.

Читать далее
Всего голосов 2: ↑2 и ↓0 +2
Комментарии 0

Как я пишу HTTP-сервисы спустя 13 лет работы с Go

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

Примерно шесть лет назад я написал пост о том, как пишу HTTP-сервисы на Go, и сегодня я снова хочу рассказать, как пишу HTTP-сервисы.

Тот пост оказался довольно популярным и вызвал обсуждения, повлиявшие на то, как я делаю это сегодня. И спустя годы ведения подкаста Go Time, обсуждения Go в X/Twitter и поддержки подобного кода я решил, что настало время обновить информацию.

(Если вы педант и скажете, что Go не совсем 13 лет, то я отвечу, что начал писать HTTP-сервисы на Go версии .r59.)

В этом посте рассматривается широкий спектр тем, связанных с созданием сервисов на Go

Читать далее
Всего голосов 38: ↑38 и ↓0 +38
Комментарии 20

Обзор библиотеки Go Kit

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

Салют, Хабр!

Go Kit предоставляет стандартизированный способ создания сервисов, с ее помощью можно легко реализовать совместимость сервисов. С его помощью можно легко интегрировать различные транспортные протоколы, такие как HTTP, RPC, gRPC, и многое другое, а также реализовывать общие паттерны: логирование, метрики, трассировка. В общем, Go Kit хорошо подходит для разработки микросервисов на go.

Мотивацию создания этой либы разработчики описали так:

Go стал языком сервера, но он по-прежнему недостаточно представлен в так называемых «современных корпоративных» компаниях, таких как Facebook, Twitter, Netflix и SoundCloud. Многие из этих организаций обратились к стекам на основе JVM для создания своей бизнес-логики, во многом благодаря библиотекам и экосистемам, которые напрямую поддерживают их микросервисные архитектуры.

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

Читать далее
Всего голосов 12: ↑8 и ↓4 +4
Комментарии 2

Go 1.22: Rangefunc Experiment

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

Разработчики Go в версии 1.22 добавили предварительную экспериментальную реализацию итераторов на уровне языка.

Читать далее
Всего голосов 13: ↑12 и ↓1 +11
Комментарии 18

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

Работа

Go разработчик
120 вакансий