Библиотека 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

Проблема: вреальных системах необходимо эффективно управлять событиями, такими как сигналы операционной системы, для корректного завершения процессов или обработки ошибок. В языке Go для этого используется пакет os/signal, который позволяет перехватывать и обрабатывать системные сигналы, такие как SIGINT или SIGTERM.

Решение: в книге «System Programming Essentials with Go» автор объясняет, как с помощью Go можно управлять системными событиями, используя каналы и горутины для асинхронной обработки сигналов.

Пример кода:
package main

import (
"os"
"os/signal"
"syscall"
"fmt"
"time"
)

func main() {
// Создание канала для получения сигналов
sigChan := make(chan os.Signal, 1)
// Уведомление о получении SIGINT и SIGTERM
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)

// Запуск горутины для обработки сигнала
go func() {
sig := <-sigChan
fmt.Printf("Получен сигнал: %s. Завершаем программу...\n", sig)
// Здесь можно добавить код для корректного завершения работы
time.Sleep(2 * time.Second) // Имитируем время на завершение
os.Exit(0)
}()

fmt.Println("Программа работает. Нажмите Ctrl+C для завершения.")
select {} // Блокировка основного потока
}


Преимущества:

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

➡️ Лучшее из мира IT-книг — у нас в @progbook
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🤩73🥱2
💔AI vs Developer: who wins?

Бигтех уже режет найм разработчиков. Вайб-кодинг повсюду. Джуны не нужны. Но так ли это на самом деле?

Мы хотим разобраться, как ИИ влияет на рынок труда в IT. В реальности, а не в головах CEO или HR. Поэтому приглашаем пройти опрос.

Результаты нашего исследования позволят выяснить, сколько разработчиков потеряли работу из-за ИИ? Какие навыки сейчас ценятся больше всего? Кто зарабатывает больше — те, кто использует ИИ или игнорирует?

👾 Расскажите свою историю, чтобы помочь комьюнити: https://clc.to/aFntFw
😁11👾4👍1🥱1
🧑‍💻 Ключевые шаги для уверенного старта

Изучение нового языка программирования требует чёткого плана и структурированного подхода.

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

➡️ Продолжить изучение самоучителя по Go

🐸Библиотека Go-разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥21👾1
🔒 Лёгкая аутентификация для Go

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

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

Решение – Authboss. Модульная библиотека для Go, которая берёт на себя все «страдания» аутентификации и даёт готовый набор функций «из коробки».

Как это работает

1. Конфигурируете через простую структуру конфига.

2. Подключаете только нужные модули — всё через импорт пакетов.

3. Встраиваете middleware, чтобы автоматически обрабатывать сессии и токены.

Пример как попросить пользователя настроить 2FA:
package main

import (
"net/http"

"github.com/volatiletech/authboss"
"github.com/volatiletech/authboss/otp/twofactor/totp"
)

func setup2FA(w http.ResponseWriter, r *http.Request) {
// Генерируем секрет и QR-код
qr, err := totp.GenerateQRCode(r.Context(), r)
if err != nil {
http.Error(w, "Ошибка 2FA", http.StatusInternalServerError)
return
}
// Отправляем QR-картинку в шаблон
w.Header().Set("Content-Type", "image/png")
w.Write(qr)
}


Библиотека упрощает управление сессиями и токенами, предлагая проверенные методы безопасности без лишнего кода.

➡️ Глянуть на проект

🐸Библиотека Go-разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥12🔥8🙏422
🎧 Свежий выпуск Cup o' Go

В новом эпизоде Cup o' Go обсуждают, как внедрение автономных AI-агентов влияет на рабочие процессы.

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

➡️ Слушать подкаст

🐸Библиотека Go-разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🌚3👍2
🧑‍💻 Когда применяют iota

В Go есть несколько интересных фичей, которые иногда кажутся сложными на первый взгляд, но на практике оказываются весьма полезными. Один из таких — это iota

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


iota — это особенность языка Go, которая используется для создания последовательных значений, таких как индексы или флаги, без явного указания каждого следующего значения.

Применение iota позволяет избежать жестко заданных значений, что удобно при создании различных типов индексов или уникальных идентификаторов для элементов.

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

Или когда необходимо работать с битовыми флагами, iota помогает легко создавать уникальные флаги, которые могут быть использованы в битовых операциях.

Пример:
const (
Read = 1 << iota // 1
Write // 2
Execute // 4
)


💬 Как вы используете iota в своих проектах? Делитесь в комментариях 👇

🐸Библиотека Go-разработчика #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🥱31
🚨 ИИ уже съел ваше место?

Стоп. Давайте без паники и хайпа.

Пока одни кричат «ИИ всех заменит!», другие спокойно получают оффер за оффером. Пока CEO сокращают команды «из-за ИИ», разработчики с нужными скиллами поднимают зарплаты.

Мы копаем глубже твиттеров «экспертов» и собираем данные от тех, кто каждый день коммитит, деплоит, фиксит баги — но в этом нам нужна ваша помощь.

Хотим понять:
— Кого действительно уволили и почему
— Как изменились задачи разработчиков
— Где ИИ помогает, а где только мешает
— Какие роли появились, какие исчезли
— Сколько платят тем, кто «дружит» с ИИ

Без буллшита — только цифры и факты. Результаты будут открыты для всех.

📊 Чем больше участников — тем точнее картина. Поделитесь опытом: https://clc.to/aFntFw
2👾1
🧑‍💻 AI-инструменты, которые я использую каждый день

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

Расспросили рядового разработчика — как именно он использует нейросети. Смотрите интервью в карточках.

➡️ Интересный формат? Задавайте вопросы в комментариях, а мы найдём экспертов 👇

🐸Библиотека Go-разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱123👍3🔥1😢1
🛠 Команда дня: профилирование Go-приложения

С помощью встроенного pprof можно быстро собирать и визуализировать данные о производительности Go-кода.

Команда, чтобы запустить все бенчмарки с CPU-профилированием и открыть интерактивный отчёт в браузере:
go test -bench=. -cpuprofile cpu.prof \
&& go tool pprof -http=:8080 cpu.prof


Помимо CPU-профиля можно использовать:

-memprofile mem.prof — профиль использования памяти.
-blockprofile block.prof — профиль блокировок.

🐸Библиотека Go-разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥2😢1
📣 Сторонние библиотеки или чистый Go

В мире Go-разработки всегда возникает жаркий спор, стоит ли использовать сторонние библиотеки или придерживаться только стандартной библиотеки Go.

• Сторонние библиотеки — ускорение разработки

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

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

• Чистый Go — просто и понятно

С другой стороны, сторонники "чистого Go" утверждают, что стандартная библиотека Go вполне способна покрыть большинство потребностей.

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

💬 Какой подход предпочитаете вы? Когда стоит прибегать к сторонним библиотекам, а когда лучше использовать чистый Go? Поделитесь своим мнением в комментариях 👇

🐸Библиотека Go-разработчика #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
5🤔3👍2