Библиотека 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 лучшим выбором для Krater, кроссплатформенного приложения для локальной отладки приложений Laravel (да, тот самый PHP-фреймворк).

🤔Несколько месяцев назад разработчики Krater решили мигрировать на Wails (Go), хотя изначально он был написан на Tauri (Rust). Под катом — опыт команды и предпосылки такого решения👇

🔗 Читать
👍15🔥1
Обнаружение утечек памяти в Go-приложении: лучшие практики и инструменты

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

👉 Читать
👍15😁3🥱1
Результаты ежегодного опроса разработчиков StackOverflow: 20+ главных инсайтов 2023 года

В данной статье мы собрали 20+ главных инсайтов, которые помогут лучше понять, что происходит в ИТ-сфере в мире.

🔗 Читать статью
🔗 Зеркало
🥱3👍2🔥1
🤔Динамика закрытия пулл-реквестов, прирост кодовой базы, активность разработчиков по часам и по дням недели и многое другое... Что только не придумают для оценки производительности разработчика.

💬А в вашей команде есть метрики оценки личной производительности? Если да, то какие и как они измеряются?

#холивар
📌Go Time

🎤 Опыт, полученный на GopherCon 2023: как организатора, ведущего воркшопов и докладчика
🎤 Семь смертных грехов Gо: по мотивам доклада John Gregory на GopherCon "7 Deadly Gopher Sins"
🎤 Что нового в криптографических библиотеках Go: Filippo Valsorda и Roland Shoemaker из команды Go делятся новостями старой доброй криптографии

📌Cup o' Go
🎤 Gopls 0.14 с включенной телеметрией уже скоро и многое другое
🎤 range over int & range over func в деталях и многое другое
🎤 Интервью с мейнтейнером testcontainers и многое другое

#подкасты
👍5
How to Generate Unique IDs in Distributed Systems.pdf
9.1 MB
Как генерировать уникальные идентификаторы в распределенных системах: 6 ключевых стратегий

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

◆ UUID
◆ NanoID
◆ Sequence
◆ ObjectID
◆ Twitter Snowflake
◆ Sonyflake
👍16
🥳 Выпущены релизы Go 1.21.4 и 1.20.11

🔐 Новый выпуск включает исправления безопасности path/filepath (CVE-2023-45283, CVE-2023-45284)

🗣 Анонс
🗃 Скачать
👍162👏2
⚡️С выпуском версии 9.3.0 официальный клиент Redis делает большой шаг вперед благодаря прямой поддержке JSON

📌Простой пример того, как начать работу с JSON в Go-Redis:

var ctx = context.Background()
client := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
})

type Bicycle struct {
Brand string
Model string
Price int
}

bicycle := Bicycle{
Brand: "Velorim",
Model: "Jigger",
Price: 270,
}

_, err := client.JSONSet(ctx, "bicycle:1", "$", bicycle).Result()
if err != nil {
panic(err)
}

res, err := client.JSONGet(ctx, "bicycle:1", ".Model").Result()
if err != nil {
panic(err)
}
fmt.Println("bicycle:1 model is", res)

#новости #инструменты
👍50🔥8🎉53🥱1
Хотите готовиться к собеседованию по Go и не только на реальных примерах? Тогда пост ниже для вас👇
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🙇‍♂️Коллекция тестовых заданий для самостоятельного выполнения от разных ИТ-компаний, собранная сообществом вместе с командой Хекслет: маст-хэв при подготовке к собесу.

🔗 GitHub
👍15
🥳Сегодня четырнадцатый день рождения релиза Go с открытым исходным кодом: за плечами у команды Go и сообщества два полнофункциональных релиза и другие важные фичи

☑️Выпуски Go 1.20 в феврале и Go 1.21 в августе
☑️Завезли profile-guided optimization и встроенное управление тулчейном
☑️Добавлена поддержка сбора профилей покрытия в бинарных сборках, созданных go build
☑️Совместимость еще больше улучшена за счет расширения соглашений об использовании GODEBUG
☑️Новый пакет структурированного логирования и многие другие изменения стандартной библиотеки

👉 Подробнее в статье Расса Кокса
🎉29👍3
Гайд по разработке системы уведомлений в реальном времени с помощью Go + Kafka:

Что такое Kafka?
Как настроить рабочее пространство проекта?
Как создать модели пользователя и уведомлений?
Как настроить Kafka producer?
Как настроить Kafka consumer?
Тестирование проекта

👉 Читать
👍162😁1
🔍Статические SQL-запросы часто оказываются недостаточными при необходимости создания условных запросов, а разработка динамических запросов в Go требует глубоких знаний SQL и тонкостей работы с языком.

🤔Проблемы включают предотвращение SQL-инъекций, использование параметризованных запросов, управление сложностью запросов, оптимизацию производительности и поддержание читаемости кода.

📚В статье рассмотрены стратегии и библиотеки, предназначенные для решения этих проблем, и представлена новая библиотека под названием tqla, которая использует пакет text/template для безопасной генерации динамических условных SQL-запросов.

t, err := tqla.New(tqla.WithPlaceHolder(tqla.Dollar), tqla.WithFuncMap(exampleFuncs))
if err != nil {
return err
}

insertStmt, insertArgs, err:= t.Compile(`{{ $length := sub ( len . ) 1 }}
INSERT INTO 'todos' ('id', 'title', 'description', 'completed', 'created_at')
VALUES {{ range $i, $v := . }}
( {{$v.Id}}, {{$v.Title}}, {{$v.Description}}, {{ $v.Complete }}, {{ $v.CreatedAt }} ){{if lt $i $length}},{{else}};{{end -}}
{{end}}`, todos)

if err != nil {
return err
}

_, err := db.Exec(insertStmt, insertArgs...)


👉 GitHub
🔥6👍32🌚1
🔧NilAway — инструмент статического анализа для обнаружения потенциальных nil-паник в коде на Go, который позволяет ловить их во время компиляции, а не во время выполнения.

🤩Команда Uber постаралась, сделав похожий на nilness инструмент с гораздо более сложными и мощными методами статического анализа для отслеживания потоков nil как внутри пакета, так и между пакетами.

var p *P
if someCondition {
p = &P{}
}
print(p.f)


Результат👇

go.uber.org/example.go:12:9: error: Potential nil panic detected. Observed nil flow from source to dereference point:
-> go.uber.org/example.go:12:9: unassigned variable p accessed field f
👍45🔥2😁1
Разработка высокопроизводительного синтаксического анализатора JSON: от теории к практике

Создать синтаксический анализатор JSON непросто, а создать быстрый — еще сложнее. В выступлении на GopherCon Signapore 2023 Дэйв Чейни демонстрирует, как написать высокопроизводительный синтаксический анализатор JSON. Ниже — сценарий выступления, превращенный в статью в блоге.

👉 Читать
👍5