Библиотека Go-разработчика | Golang
23.3K subscribers
2.08K photos
42 videos
87 files
4.45K links
Все самое полезное для Go-разработчика в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/32d20779

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a4a8c2468
Download Telegram
Повышение производительности: подробное руководство по кэшированию в Go с Redis

В предыдущем материале рассматривались самые базовые аспекты работы с Redis в Go. В этой статье речь идет о кэшировании в контексте Go и Redis👇

🔗 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
golang.pdf
80.9 KB
#холивар

Вы посоветовали бы данную дорожную карту для начинающих разработчиков или тех, кто переходит с другого языка на Go? Если да, есть ли какие-то важные аспекты, которых в ней не хватает? Может быть в ней есть то, что вообще неуместно?
🥱5👍2🤩1
Артём Чаадаев, Go-разработчик из команды ассортимента размещения в Туту, погружается в различные аспекты конкурентной разработки:

🔸Как деактивировать большое количество пользователей в стороннем API (обычно это бывает после применения бизнес-логики) 🔸Как использовать два паттерна конкурентной разработки на Go: семафор (Semaphore) и пул обработчиков (Worker pool)
🔸Какие плюсы/минусы обоих подходов
👍11🔥51
GoLab — первая итальянская международная конференция по языку программирования Go, организованная компанией Develer.

📌Ловите подборку докладов:

🌐 Uncover Unknown Bugs With Fuzzing in Go | Sagar Sonwane
🌐 Modernizing Falco with Go: a Story of Love and Betrayal | Jason Dellaluce & Leonardo Grasso
🌐 Built-In Testing in Go is More Than Just Passable | Scott McAllister
🌐 Defensive programming techniques in Go | Daniel Martí
🌐 Recipes for reducing cognitive load – yet another idiomatic Go talk | Federico Paolinelli
🌐 High-assurance Go cryptography | Filippo Valsorda
🌐 The Go WebAssembly ABI at a Low Level | Xe Iaso
🌐 Generating Generators | Tamir Bahar
🌐 Call me maybe – communication between microservices | Adelina Simion & Artur Kondas
🌐 Beyond database/sql: The Driver Pattern | Boston Cartwright
🌐 Zig Makes CGo Cross-compilation Just Work | Loris Cro
🌐 Keynote | Things you didn’t know about Go and how to become an expert | Roberto Clapis
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🤔4
📝Глубокое техническое погружение во все аспекты Redis: от различных топологий Redis до data persistence и разветвления процессов.

🤩Если любите подобные визуальные руководства, обратите внимание на другие разделы architecture notes.
🔥153
Forwarded from Библиотека программиста | программирование, кодинг, разработка
😁69🤔2👍1🌚1
В Go 1.21 пакет slog был добавлен в стандартную библиотеку. Он выводит логирование на новый уровень, включая такие функции, как структурированное логирование, кастомизация вывода и многое другое! Самое время разобраться подробнее👇

🔗 Читать
👍23🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
Как реализовать автозаполнение аргументов в CLI-проекте на Go с использованием Cobra: пошаговый гайд на примере простого проекта.

🔗 Читать
👍14
#tip #go #beginner

Использование ссылки на переменную итератора цикла

В Go переменная итератора цикла — это единственная переменная, которая принимает разные значения на каждой итерации цикла. Это очень эффективно, но может привести к непреднамеренному поведению при неправильном использовании. Смотрите пример слева, который выдаст неожиданные результаты:

Values: 3 3 3
Addresses: 0x40e020 0x40e020 0x40e020


На каждой итерации мы добавляем адрес i к срезу out, но поскольку это одна и та же переменная, мы добавляем тот же адрес, который в итоге содержит последнее значение, присвоенное i. Одно из решений — скопировать переменную цикла в новую переменную:

for i := 0; i < 3; i++ {
i := i
out = append(out, &i)
}


Новый вывод программы — это то, что ожидалось:

Values: 0 1 2
Addresses: 0x40e024 0x40e028 0x40e032


Строка i := i копирует переменную цикла i в новую переменную, ограниченную блоком тела цикла for, также называемым i. Адрес новой переменной — это тот, который добавляется к массиву. В каждой итерации цикла создается новая переменная.

Хотя этот пример может показаться несколько очевидным, такое же неожиданное поведение может быть более скрытым в некоторых других случаях. Например, переменная цикла может быть массивом, а ссылка может быть срезом (пример справа). В результате получаем:

Values: [[3] [3] [3]]
👍22
Новые каналы по Go🎉

Готовимся к собеседованиям по Go и проверяем себя на практических задачках: «Библиотека программиста» запустила два канала специально для Go-разработчиков и тех, кто хочет ими стать👨‍🏫

Подписывайтесь:
👉Библиотека собеса по Go — тут мы готовимся к интервью
👉Библиотека задач по Go — тут решаем задачи, проходим тесты и изучаем код
👍12😁2
Обзор изменений и нововведений в Go 1.21: взгляд команды МТС

«Зачем читать подобные обзоры» — спросите вы. В первую очередь за тем, что каждый разработчик видит ту или иную фичу языка по-своему, под своим углом. Кто знает, может именно этот обзор покажется вам наиболее интересным. Поэтому читаем и закрепляем знания о новой версии языка.
🔥92👍2🥱1
Несколько недель назад команда Dolt объявила о первой реализации полнотекстовых индексов. Dolt использует специальный SQL-движок, который позволяет управлять версиями базы данных и при этом должен быть высокопроизводительным.

Это также означает, что для полной замены MySQL 8.0 команда Dolt должна реализовать все функции MySQL в движке Dolt. Ну что ж, глобальная цель поставлена, перейдем к реализации полнотекстовых индексов в SQL-движке👇

🔗 Читать
👍63🔥3
#linux #tips

Вместо того, чтобы использовать команду cat для просмотра файлов с исходным кодом, просто используйте Vim команду batcat (bat). Это современная версия cat, которая включает в себя подсветку синтаксиса для многих языков программирования и поддержку Git из коробки.

> alias cat='batcat --style plain'
> alias less='batcat --paging=always --style plain'
21👍16🔥1
Подробный гайд по разработке масштабируемых микросервисов с использованием Go и RabbitMQ

Автор начинает с фундаментльных основ, затем углубляется в особенности использования Go в сочетании с RabbitMQ.

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

🔗 Читать
👍216
🔍Насколько легко «войти в айти»?

IT — перспективная отрасль с высокими зарплатами и огромной конкуренцией. Собираем ваши истории: расскажите, как вам удалось сменить профессию (или сразу найти себя), какие шаги вы для этого предприняли и с какими сложностями пришлось столкнуться.

👉Пройдите наш 10-минутный опрос по ссылке.
5🥱2👍1
☝️📺 Какой сетап у вас дома/на работе (можно выбрать два варианта)?
Anonymous Poll
39%
1
14%
2
43%
3
7%
4
6%
5
2%
6
5%
Другой (напишу в комментарии)
7👍7🥱3
Проектирование отказоустойчивых микросервисов в Go

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

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

«Всегда проектируйте вещи, рассматривая их в следующем более широком контексте: стул в комнате, комната в доме, дом в окружении, среда в плане города» (Элиэль Сааринен)
6👍6