Библиотека 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
🔐Sign in with Google

Краткий обзор реализации популярного метода аутентификации на Go от Eli Bendersky.

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍31
select * from cloud;

🧰steampipe — инструмент для выполнения запросов к облачным сервисам с помощью SQL.

Используйте SQL для запроса и даже объединения более чем 100 API от таких провайдеров, как Airtable, AWS, Heroku, Slack и Stripe, а также соцсетей вроде Reddit и Hacker News.

👉 GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
GoFunc — новая конференция по Go. Но сегодня не о ней, а о митапах для Go-разработчиков, которые уже можно посмотреть:

🌐gRPC-стримы на практике в Go / Сергей Антоничев
🌐Бардак в main, стандартизация и uber.fx. V2 / Данила Проценко
🌐Как мы разметку Goняли / Хамбар Дусалиев
🌐Как мы в СберМаркете стандартизируем разработку сервисов / Эмиль Шарифуллин
🌐Профилирование Go-приложений в 2023 / Алексей Акулович
🌐Что стоит за дженериками в Go / Илья Горкун
🌐Использование ресурсов Kubernetes Go-приложениями / Антон Жуков
🌐Быстрый поиск пути без аллокаций / Искандер Шарипов
🌐Воркшоп «Создание Terminal UI приложений» / Никита Русин
🌐Расширяем компилятор: кодогенерация на своем месте / Даниил Подольский

#чтопроисходит
Please open Telegram to view this post
VIEW IN TELEGRAM
👍30❤‍🔥42
💡Предварительная компиляция стандартной библиотеки

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

Исходя из исследования (на немецком языке), это может оказать огромное влияние на время компиляции.

Теперь представьте систему сборки, которая начинает с нуля для каждой сборки, — например, потому что инструментарий Go находится в контейнере, который удаляется после каждой сборки.

Зависимости проекта от стандартной библиотеки таким образом компилируются снова и снова для каждой сборки.

📌 Решение простое:

go install std

Эта команда компилирует стандартную библиотеку один раз. Зафиксируйте полученное состояние установки Go и наслаждайтесь более быстрым временем сборки.
👍901
🧰 avo — пакет для генерации x86 assembly с помощью Go. Основная цель — облегчить процесс написания и поддержки assembly кода, который часто используется для оптимизации производительности в критических участках программ.

//go:build ignore

package main

import . "github.com/mmcloughlin/avo/build"

func main() {
TEXT("Add", NOSPLIT, "func(x, y uint64) uint64")
Doc("Add adds x and y.")
x := Load(Param("x"), GP64())
y := Load(Param("y"), GP64())
ADDQ(x, y)
Store(y, ReturnIndex(0))
RET()
Generate()
}


//go:generate go run asm.go -out add.s -stubs stub.go


👉 GitHub с полным описанием и примерами
👍171
This media is not supported in your browser
VIEW IN TELEGRAM
🤔🚜 Когда тянешь в свой Go-проект кучу сторонних пакетов, хотя легко мог это реализовать с помощью стандартной библиотеки

#юмор
Please open Telegram to view this post
VIEW IN TELEGRAM
😁37👍4🥱4🌚1
Сравнение времени и дат разными способами: гайд для Go-разработчика

Во время разработки на Go вы можете сравнить два значения time.Time с помощью операторов сравнения, но компилятор не даст этого сделать.

Использование == и != в свою очередь допустимо в Go, но надо быть осторожным, потому что этот функционал может делать не совсем то, что вы намеревались. Разбираемся, что находится под капотом у типа time.Time ⬇️

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥2💯1
💰⬆️ 10 факторов, влияющих на зарплату программиста

Узнайте 10 факторов, как превратиться из рядового программиста в высокооплачиваемого специалиста и научиться аргументированно запрашивать зарплату выше рынка.

Читать статью

#новость
👍6🥱2🌚2
🤯 Rust vs. Go в 2024 году

🤔 Ну что, давненько не было холиваров. Прошлогодняя статья-сравнение актуализирована в соответствии с реалиями 2024 года (хотя плюсы и минусы остаются весьма схожими).

👉 Читайте подробнее, чтобы узнать о преимуществах/недостатках обоих языков и некоторых компромиссах.
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱37😁12👍9👾2
🫶 Представлен второй релиз-кандидат Go 1.22

Официальный релиз совсем близко, но вы уже сейчас можете протестировать новые фичи языка!

📣 Анонс
🗃 Скачать

#новости
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🥱3
👨‍💻🧩 Психология и ИТ: 17 личностных качеств, необходимых для успешной карьеры

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

Читать статью

#новость
👍8😁2🌚21
Представьте, что вы оказались в сложной ситуации, и вам нужно принять решение. Какого сотрудника вы возьмете в команду?
Anonymous Poll
18%
С достойным портфолио и хард-скиллами, но неприятного в общении
61%
Легкого в общении и целеустремленного, но проседающего в технических навыках
20%
Посмотреть результаты
🌚9😁1
🔥Оптимизация производительности в Go на практике

Команда Sourcegraph делится опытом оптимизации некоторых базовых математических операций в Code AI и описывает различные этапы оптимизации, начиная с простой реализации на Go и постепенно углубляясь в оптимизацию: от loop unrolling до bounds check elimination.

Но настоящий прорыв произошел при использовании SIMD (single instruction, multiple data) и quantization. Этот опыт показал, насколько мощным может быть низкоуровневое программирование даже в таком высокоуровневом языке, как Go👇

🔗 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24🌚2
⚡️Самые полезные каналы по Go в одной папке

В ней:
канал для подготовки к собеседованиям
интересные задачи
основной канал (этот)
книги по Go
лучшие вакансии из сферы
и наш чат, в котором можно общаться и задавать вопросы

Добавляйте 👉 тык сюда
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍5🥱3🌚2👏1
🧰 Goyek — библиотека для автоматизации задач, в которой последние определяются в стиле Cobra, а экшены напоминают юнит-тесты.

В версии 2.1 добавлена поддержка параллельного выполнения задач.

package main

import (
"flag"

"github.com/goyek/goyek/v2"
"github.com/goyek/x/cmd"
)

var msg = flag.String("msg", "greeting message", "Hello world!")

var hello = flow.Define(goyek.Task{
Name: "hello",
Usage: "demonstration",
Action: func(a *goyek.A) {
a.Log(*msg)
cmd.Exec(a, "go version")
},
})


👉 GitHub
👍10
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🌚2
💬 Как вам новый метод HTTP-роутинга[METHOD ][HOST]/[PATH], который ждет нас в Go 1.22?

mux := http.NewServeMux()

mux.HandleFunc("GET 127.0.0.1/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Hello")
})

mux.HandleFunc("GET localhost/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Bonjour")
})


👉 Подробнее
🤔25👍15🔥7🌚1
🚀 Colly: полное руководство по высокопроизводительному веб-скрейпингу на Go

Руководство основано на документации и дополнено наглядными примерами от автора.

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20
🔄 Использование RabbitMQ streams в Go

Ранее Percy Bolmér исследовал возможности использования RabbitMQ в Go для построения Event Driven Architecture.

В новом руководстве он затрагивает тему Streams, которые привнесли в RabbitMQ множество функций и ранее были преимуществом Kafka.

📌 Из руководства вы узнаете:

🔸Что такое streams и как они работают
🔸Как использовать streams в Go
🔸Stream Core/Plugin и основные различия
🔸Subentries и Compression
🔸Deduplication
🔥19👍2