Как стать автором
Обновить
56.78
Рейтинг

Go *

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

Сначала показывать
  • Новые
  • Лучшие
Порог рейтинга
  • Все
  • ≥0
  • ≥10
  • ≥25
  • ≥50
  • ≥100

Golang-дайджест № 12 (1 – 31 декабря  2021)

Go *

Свежая подборка новостей и материалов

Интересное в этом выпуске

Выпущены Go 1.17.5 и Go 1.16.12, GoLand 2021.3, доступна первая бета-версия Go 1.18 (с дженериками), monovania 2D платформер-головоломка, созданный с помощью Ebiten, zinc альтернатива Elasticsearch, Map-Reduce в Go

Приятного чтения!

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Просмотры 1.1K
Комментарии 4

Новости

Простейший сервер на Gorilla WebSocket

Go *
Из песочницы
Tutorial

В этом небольшом тутуриале, мы чуть подробнее разберем использование Gorilla WebSocket для написания своего websocket сервера, на примере чуть более функциональном чем базовый пример и более легком для понимания чем пример чата.

Читать далее
Всего голосов 5: ↑4 и ↓1 +3
Просмотры 2.2K
Комментарии 7

Что плохого в пакете логирования на Go?

Go *
Из песочницы
Перевод

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

Читать далее
Всего голосов 17: ↑9 и ↓8 +1
Просмотры 3.2K
Комментарии 45

Автореконнекты к RabbitMQ в Go

Go *

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

Практически нет языка, под который не была бы сделана соответствующая клиентская библиотека. Для Go такой библиотекой является github.com/streadway/amqp (далее по тексту библиотека amqp). Она имеет широкий функционал, можно подключаться к RabbitMQ, создавать каналы, настраивать очереди и exchange. Не хватает только самой малости – реконектов. А именно автоматических реконнектов при потери связи.

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

Читать далее
Всего голосов 17: ↑14 и ↓3 +11
Просмотры 3.6K
Комментарии 6

IO_URING. Часть 2. Let's GO

Блог компании ITSOFT Высокая производительность *Go *Разработка под Linux *

Всем привет! Продолжаем разбираться с io_uring. Сегодня попробуем использовать io_uring для решения прикладных задач. А именно напишем полноценный TCP сервер. Для этого мигрируем наши приложения с C на GO. Не буду писать длинные вступления, вперед экспериментировать!

Читать далее
Всего голосов 15: ↑13 и ↓2 +11
Просмотры 2K
Комментарии 1

Почему я перешёл с Python на Go: choose your fighter

Блог компании Ozon Tech Python *Go *Карьера в IT-индустрии
Привет, Хабр! Меня зовут Саша, я бэкенд-разработчик в Ozon. Пишу платформу для контента, который генерят пользователи: отзывов, комментов, вопросов, ответов. Раньше я писал на Python. Выбрал его изначально из-за лёгкого синтаксиса и большого количества вакансий для Python-разработчиков — изи катка для входа в профессию. 

В один момент мне написали из Ozon: «П̶с̶с̶,̶ ̶п̶а̶р̶е̶н̶ь̶,̶ ̶п̶о̶к̶о̶д̶и̶т̶ь̶ ̶н̶а̶ ̶G̶o̶ ̶н̶е̶ ̶х̶о̶ч̶е̶ш̶ь̶?̶ Предлагаем переход на Golang с текущего стека, обучение за счёт компании».

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


Среди разработчиков бытует мнение, что язык вторичен. Мол, главное — уметь в computer science, а на чём писать — не так уж важно. Но так считают хардкорные разработчики, они вертят деревья, смотрят на всех свысока и зарабатывают 300кк в наносекунду. Я же программист-полукровка (без высшего технического образования, а ещё мои родители — маглы) и считаю, что смена языка — важный шаг и нужно хорошенько прикинуть, прежде чем в это вписываться. Будем откровенны, если у вас за плечами десять лет на плюсах, вряд ли вам предложат должность senior iOS-разработчика на Swift. Проблема в том, что каждый язык имеет свои особенности и на их изучение требуется время.
Читать дальше →
Всего голосов 53: ↑45 и ↓8 +37
Просмотры 23K
Комментарии 116

Нарезаем массивы правильно в Go

Программирование *Go *

В этой статья я расскажу об одной из базовых структур языка, некоторые особенности которой при первом знакомстве вгоняют в ступор. Речь пойдёт о срезах и о том, какие интересные “фичи” нам приносит их внутреннее устройство в языке. Но начнем мы издалека - с массивов.

Go →
Всего голосов 17: ↑13 и ↓4 +9
Просмотры 6.1K
Комментарии 12

Интерфейсы в Go — как красиво выстрелить себе в ногу

Программирование *Go *

Вы когда-нибудь задумывались, что такое interface? Ну, то есть, не ключевое слово синтаксиса, а что это такое в рантайме? Как выглядит его проинстанцированный объект? А, главное, каким свойством обладает при сравнении с nil? Нет? Тогда устраивайтесь поудобнее, я сейчас вам всё расскажу.

Go →
Всего голосов 18: ↑17 и ↓1 +16
Просмотры 14K
Комментарии 5

profile-guided поиск по коду

Высокая производительность *Open source *Программирование *Go *Управление разработкой *

Если объединить структурный поиск по коду через gogrep и фильтрацию результатов через perf-heatmap, то мы получим profile-guided поиск по коду.


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


Через perf-heatmap также можно аннотировать файл с учётом того, насколько строка исходного кода "горячая".


Читать дальше →
Всего голосов 20: ↑18 и ↓2 +16
Просмотры 1.4K
Комментарии 0

Вышла Beta Go 1.18 с дженериками. Подробности из блога Go под катом

Блог компании SkillFactory Open source *Программирование *Go *
Перевод

Официальный релиз Go 1.18 состоится только через пару месяцев. Это первый предварительный выпуск Go 1.18, чтобы вы могли попробовать его и сообщить о проблемах. Go 1.18 Beta 1 — это огромный объём работы всей команды разработчиков Go в Google и участников проекта Go по всему миру. Нам очень хочется узнать ваше мнение.

Читать далее
Всего голосов 31: ↑19 и ↓12 +7
Просмотры 6K
Комментарии 28

GoLand 2021.3: полная поддержка WSL, запуск gofmt при сохранении файла, Inline Function, удаленная разработка

Блог компании JetBrains Программирование *Go *

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

Сегодня расскажем о свежем релизе GoLand.

Что нового: полная поддержка WSL, запуск gofmt при сохранении по умолчанию, рефакторинг Inline Function, удаленная разработка (Beta), поддержка gRPC в HTTP-клиенте, улучшения отладчика и многое другое!

Под катом подробный разбор новых возможностей с гифками. 

Скачать GoLand 2021.3 можно на сайте JetBrains или через приложение Toolbox App.

Читать далее
Всего голосов 15: ↑13 и ↓2 +11
Просмотры 2.5K
Комментарии 12

Пошаговая инструкция как создать NFT коллекцию на Golang + Ethereum (часть 2)

Go *Распределённые системы *Криптовалюты
Tutorial

Привет Хабр.

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

Потратив достаточно много времени на изучение существующих NFT проектов, я был свидетелем, как разработчики публикуют свои изображения для NFT коллекций в централизованные файловые системы, такие как AWS s3, что вызывало у меня некоторое недоумение. 

На мой субъективный взгляд, главный посыл NFT токенов, именно в том, что токен и его содержимое - никто и никогда не сможет изменить, и соответственно при разработке мы должны быть максимально абстрагирован от централизованных систем. Именно поэтому, публиковать все наши файлы, мы будем в децентрализованное хранилище - IPFS.

Читать далее
Всего голосов 11: ↑5 и ↓6 -1
Просмотры 5.2K
Комментарии 3

Пошаговая инструкция как создать NFT коллекцию на Golang + Ethereum (часть 1)

Go *Распределённые системы *Криптовалюты
Из песочницы

Привет Хабр.

История началась пол года назад, когда ко мне пришел мой старый знакомый художник и предложил создать NFT коллекцию на блокчейне Ethereum. Скажу сразу, я никогда не интересовался криптой и на тот момент понятие не имел, что такое NFT и как они устроены. 

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

Читать далее
Всего голосов 11: ↑6 и ↓5 +1
Просмотры 22K
Комментарии 6

Go после Python: как я учу новый язык

Блог компании Авито Go *Учебный процесс в IT

Привет, Хабр! Меня зовут Максим Чижов, я бэкенд-инженер. Несколько месяцев назад мне понадобилось в довесок к основному языку Python выучить также Go. Расскажу, с какими проблемами я столкнулся в процессе и как их решал, а также где я сейчас.

Читать далее
Всего голосов 27: ↑23 и ↓4 +19
Просмотры 18K
Комментарии 27

Использование Golang для разработки Node.js приложений (Node.js: In Go We Trust)

Высокая производительность *JavaScript *Node.JS *Go *WebAssembly *

Меня зовут Алексей Новохацкий, я – Software Engineer. Сейчас работаю над архитектурой высоконагруженных систем, провожу технические собеседования, воплощаю в жизнь собственные проекты.

Как известно, Node.js хорошо справляется с I/O intensive задачами. А вот для решения CPU bound мы имеем несколько вариантов – child processes/cluster, worker threads. Также есть возможность использовать другой язык программирования (C, C++, Rust, Golang) в качестве отдельного сервиса/микросервиса или через WebAssembly скрипты.

В данной обзорной статье будут описаны подходы к использованию Golang в разработке Node.js приложений для запуска некоторых CPU intensive задач (простой суммы чисел, последовательности Фибоначчи, а также для таких хеш-функций как md5 и sha256).

Какие у нас есть варианты?

1. Попытаться решить CPU bound задачи только с помощью Node.js

2. Создать отдельный сервис, написанный на Golang и "общаться" с нашим приложением с помощью запросов/брокера сообщений и т.д. (в данной статье будут использованы обычные http запросы)

3. Использовать Golang для создания wasm файла, что позволит использовать дополнительные методы в Node.js

Читать далее
Всего голосов 5: ↑2 и ↓3 -1
Просмотры 3.4K
Комментарии 16

RPC — концепция

PHP *API *Go *

Свою первую апишку я написал лет 7-8 назад и это был первый блин. В целом этот блин прошел кучу испытаний и модернизаций и получилось, что то вполне вменяемое. Даже сейчас я понимаю, что это ядро актуально и его можно развивать дальше и оптимизировать к текущим реалиям (пока нет подходящего проекта).

Как можно догадаться это было Rpc. Наверно стоит начать с того, что я выделил ряд слоев (какие то можно опустить, какие то добавить).

Читать далее
Всего голосов 19: ↑8 и ↓11 -3
Просмотры 3.8K
Комментарии 15

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

Работа

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