Please open Telegram to view this post
VIEW IN TELEGRAM
😁26👍8❤1
Составили для вас мини-гайд из 10 ключевых пунктов по обеспечению безопасности Go-приложений.
• Регулярно обновляйте модули через
go get -u
и проверяйте go.mod на устаревшие версии.• Используйте
go mod tidy
для удаления ненужных пакетов.• Интегрируйте govulncheck для поиска известных уязвимостей в зависимостях.
• Настройте регулярный SAST/DAST-сканинг (например, GitHub Advanced Security).
• Минимизируйте права сервисных аккаунтов и контейнеров.
• Отдельные роли для чтения и записи данных в хранилище.
• Проверяйте и экранируйте все внешние данные (формы, JSON, URL-параметры).
• Используйте подготовленные выражения (prepared statements) для запросов к БД.
• Всегда передавайте context.Context в сетевых и длительных операциях.
• Задавайте адекватные дедлайны и таймауты (context.WithTimeout).
• Не храните ключи и пароли в коде или репозитории: используйте Vault, AWS Secrets Manager или переменные окружения.
• Применяйте современные алгоритмы из пакета crypto (AES-GCM, SHA-256, ECDSA).
• Используйте последние версии TLS (1.2+) и строгие cipher suites.
• Проверяйте сертификаты и избегайте
InsecureSkipVerify=true.
• Запускайте приложение с флагом -race в процессе тестирования.
• Избегайте гонок при доступе к разделяемым переменным: применяйте
sync.Mutex
или каналы.• Интегрируйте
go test --fuzz
для автоматической генерации некорректных входных данных.• Проводите стресс-тесты сетевых и критичных компонентов.
• Логируйте события безопасности (неудачные аутентификации, ошибки валидации) с уровнем Warn/Error.
• Настройте алерты по подозрительным паттернам и аномалиям (Prometheus Alertmanager, Grafana).
Насколько безопасны ваши приложения? Проверьте по списку
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤5
🧑💻 Что за ужас тут творится
Когда вы приходите в новый коллектив, легко заподозрить, что всё вокруг катится кувырком. Но возможно, вы ещё не разобрались во внутренних механизмах.
К нам пришёл подписчик с вопросом
На практике важно учитывать сразу несколько аспектов, чтобы не спешить с выводами:
— Обратите внимание на то, как принимаются решения: формально через руководителей или неформально «по знакомству».
— Оцените, насколько корректно используется трекинг задач и документация — это показатель зрелости команды.
— Внимательно слушайте, какие вопросы задают другие: открыты ли коллеги к диалогу или предпочитают «молча работать».
— Спросите про KPI и цели: ясны ли вам критерии успеха и пути их достижения?
Помните, никто не идеален: везде есть проблемы, просто о них не все говорят.
💬 С какими «тревожными звоночками» вы сталкивались в новых командах? Поделитесь в комментариях 👇
P.S. Если хотите задать вопрос сообществу или поделиться историей, заполните нашу гугл-форму.
🐸 Библиотека Go-разработчика #междусобойчик
Когда вы приходите в новый коллектив, легко заподозрить, что всё вокруг катится кувырком. Но возможно, вы ещё не разобрались во внутренних механизмах.
К нам пришёл подписчик с вопросом
Как отличить реальные проблемы в компании от простого непонимания процессов и культуры?
На практике важно учитывать сразу несколько аспектов, чтобы не спешить с выводами:
— Обратите внимание на то, как принимаются решения: формально через руководителей или неформально «по знакомству».
— Оцените, насколько корректно используется трекинг задач и документация — это показатель зрелости команды.
— Внимательно слушайте, какие вопросы задают другие: открыты ли коллеги к диалогу или предпочитают «молча работать».
— Спросите про KPI и цели: ясны ли вам критерии успеха и пути их достижения?
Помните, никто не идеален: везде есть проблемы, просто о них не все говорят.
💬 С какими «тревожными звоночками» вы сталкивались в новых командах? Поделитесь в комментариях 👇
P.S. Если хотите задать вопрос сообществу или поделиться историей, заполните нашу гугл-форму.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2
👀 Что там в новом Go
Обновления это всегда хорошо, а обновления любимого языка — ещё лучше!
Все ключевые фичи и экспериментальные флаги обновления уже ждут.
➡️ Смотреть видео
🐸 Библиотека Go-разработчика #буст
Обновления это всегда хорошо, а обновления любимого языка — ещё лучше!
Все ключевые фичи и экспериментальные флаги обновления уже ждут.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥4❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁18❤1
Безопасность приложения не должна делаться в последнюю очередь. Интеграция Google SSO с Keycloak — это решение, которое стоит изучить для защиты вашего проекта.
Интересно, что при правильной настройке можно значительно упростить процессы управления пользователями и маппинга их атрибутов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🤔1🌚1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17😁14💯1
📣
В мире Go-разработки постоянно идут споры: нужно ли всегда явно вызывать
Явный
• Освобождает внутренний таймер сразу после выхода из функции, а не дожидается таймаута или сборки мусора.
• Немедленно отменяет все дочерние операции и горутины, слушающие этот контекст.
• Делает код предсказуемым и единообразным в масштабных сервисах с долгим временем работы.
Пропуск
• Таймер автоматически сбросится при наступлении таймаута, так что в «одноразовых» сценариях утечек практически не будет.
• В простых CLI-утилитах или скриптах с коротким жизненным циклом явный cancel может быть избыточным.
• Минимизирует «шум» в коде, когда контекст не передаётся дальше и не порождает дополнительных горутин.
💬 Какой подход предпочитаете вы? Делитесь в комментариях 👇
🐸 Библиотека Go-разработчика #междусобойчик
cancel
для context.WithTimeout()
обязательно или избыточноВ мире Go-разработки постоянно идут споры: нужно ли всегда явно вызывать
cancel
после создания контекста с таймаутом.Явный
cancel
— гарантия чистоты ресурсов• Освобождает внутренний таймер сразу после выхода из функции, а не дожидается таймаута или сборки мусора.
• Немедленно отменяет все дочерние операции и горутины, слушающие этот контекст.
• Делает код предсказуемым и единообразным в масштабных сервисах с долгим временем работы.
Пропуск
cancel
— упрощение там, где это не важно• Таймер автоматически сбросится при наступлении таймаута, так что в «одноразовых» сценариях утечек практически не будет.
• В простых CLI-утилитах или скриптах с коротким жизненным циклом явный cancel может быть избыточным.
• Минимизирует «шум» в коде, когда контекст не передаётся дальше и не порождает дополнительных горутин.
💬 Какой подход предпочитаете вы? Делитесь в комментариях 👇
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1🔥1
Представляем подборку материалов и новостей недели.
— Продвинутый gRPC в микросервисах
В обзоре на уровне архитекторов рассматриваются реальные кейсы от Dropbox и Netflix.
Как введение явных таймаутов устранило каскадные задержки, как gRPC-перехватчики помогают унифицировать мониторинг и аутентификацию, и какие стратегии балансировки нагрузки подходят для высоконагруженных кластеров.
— Обзор линковки Go-бинарников и приёмов кросс-компиляции
В ролике рассказывают, как собрать полностью статический Go-бинарник с помощью
CGO_ENABLED=0
или тега netgo
, а затем уменьшить его размер, убрав отладочные символы флагами -s -w
.— Новый эпизод Cup o’ Go
Ведущие обсуждают новости и проводят интервью о подготовке Go West Conf и работы Forge Utah Foundation.
— Расширенный выбор окружений Go и поддержка golangci-lint v2
Стало доступно расширение vscode-go для VS Code с улучшенным UI выбора SDK — теперь разделитель помогает быстро увидеть, какие версии уже установлены, и какие можно загрузить.
Расширение официально поддерживает golangci-lint v2: его можно установить через «Go: Install/Update Tools», переключать по рабочим областям и перенастраивать с помощью
go.lintFlags
— Еженедельный буст канала
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1🔥1
Forwarded from Библиотека задач по Go | тесты, код, задания
Anonymous Quiz
4%
Все каналы выполняются одновременно
26%
select выбирает первый канал по порядку в коде
4%
Выбирается канал с минимальной длиной очереди
65%
Выбирается случайный канал, если несколько готовы
2❤1
Golang middle+ developer — гибрид в Санкт-Петербурге.
Go Разработчик — удаленно в Москве.
Senior Golang Developer — удаленно.
Golang разработчик Senior — гибрид в Москве.
Golang developer — гибрид/Офис в Санкт-Петербурге.
Бустер — удалённо (не только Москва).
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🚀 Управление историей коммитов
Основные приёмы и команды для эффективного применения
• Перенос коммитов на вершину другой ветки:
• Изменение, объединение и переупорядочение коммитов:
• При возникновении конфликтов:
1. Исправить файлы вручную
2.
3.
• Пропуск и отмена:
• Перенести коммиты из ветки feature, основываясь на ветке dev:
💬 Как у вас с ребейзом? На «ты» или гит жонглирует вашими нервами?
🐸 Библиотека Go-разработчика #буст
Основные приёмы и команды для эффективного применения
git rebase
: от простого переноса коммитов до интерактивной правки и безопасного пуша.• Перенос коммитов на вершину другой ветки:
git checkout feature
git rebase main
• Изменение, объединение и переупорядочение коммитов:
git rebase -i HEAD~5
• При возникновении конфликтов:
1. Исправить файлы вручную
2.
git add <файл>
3.
git rebase --continue
• Пропуск и отмена:
git rebase --skip # пропустить проблемный коммит
git rebase --abort # отменить весь процесс rebase
• Перенести коммиты из ветки feature, основываясь на ветке dev:
git rebase --onto dev base feature
💬 Как у вас с ребейзом? На «ты» или гит жонглирует вашими нервами?
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8🔥1
🔝 Как вывести резюме в топ
Не секрет, что конкуренция за место под солнцем огромна. В статье 9 действенных способов, как грамотно оформить резюме, выделить свои сильные стороны и привлечь внимание работодателей.
Ваше резюме — это не просто список навыков, а настоящий маркетинговый инструмент.
➡️ Детали в статье
🐸 Библиотека Go-разработчика
Не секрет, что конкуренция за место под солнцем огромна. В статье 9 действенных способов, как грамотно оформить резюме, выделить свои сильные стороны и привлечь внимание работодателей.
Ваше резюме — это не просто список навыков, а настоящий маркетинговый инструмент.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍1
🛠 Как упасть без шума
Без мягкой остановки есть риски некорректно закрыть соединения или оставить горутины «висеть», что приведёт к утечке памяти.
Пример обработки сигналов для мягкого падения:
1. Для начала будем ловить сигналы остановки:
2. Затем используем контекст для отмены действий:
При получении сигнала вы «пробрасываете» отмену всем дочерним операциям, которые используют этот контекст.
3. Мягкое падение сервера:
4. Корректное завершение фоновых задач.
Если у вас есть фоновые горутины, используйте
Все горутины должны следить за
Механика Graceful Shutdown легко расширяется и может быть повторно использована в микросервисах, batch-джобах и serverless-функциях.
🐸 Библиотека Go-разработчика #буст
Без мягкой остановки есть риски некорректно закрыть соединения или оставить горутины «висеть», что приведёт к утечке памяти.
Пример обработки сигналов для мягкого падения:
1. Для начала будем ловить сигналы остановки:
import (
"os"
"os/signal"
"syscall"
)
// Создаём канал для входящих сигналов
sigCh := make(chan os.Signal, 1)
// Оповещаем канал о SIGINT и SIGTERM
signal.Notify(sigCh, syscall.SIGINT, syscall.SIGTERM)
2. Затем используем контекст для отмены действий:
import "context"
// Создаём корневой контекст с cancel-функцией
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
// В горутине ждем сигнала и вызываем cancel
go func() {
<-sigCh
cancel()
}()
При получении сигнала вы «пробрасываете» отмену всем дочерним операциям, которые используют этот контекст.
3. Мягкое падение сервера:
import (
"net/http"
"time"
"log"
)
// Предполагаем, что srv := &http.Server{Addr: ":8080", Handler: mux}
go func() {
log.Printf("Starting server on %s", srv.Addr)
if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
log.Fatalf("ListenAndServe(): %v", err)
}
}()
// Блокируемся до cancel (сигнал получен)
<-ctx.Done()
// Даём серверу до 10 секунд на завершение текущих запросов
shutdownCtx, shutdownCancel := context.WithTimeout(context.Background(), 10*time.Second)
defer shutdownCancel()
if err := srv.Shutdown(shutdownCtx); err != nil {
log.Printf("Server Shutdown: %v", err)
} else {
log.Println("Server gracefully stopped")
}
srv.Shutdown
корректно завершит входящие соединения и дождётся завершения хендлеров. При превышении таймаута происходит жёсткое закрытие.4. Корректное завершение фоновых задач.
Если у вас есть фоновые горутины, используйте
sync.WaitGroup
:import "sync"
var wg sync.WaitGroup
// Запуск фоновой задачи
wg.Add(1)
go func() {
defer wg.Done()
for {
select {
case <-ctx.Done():
// получен сигнал отмены — выходим
return
default:
// ваша работа
}
}
}()
// После Shutdown HTTP-ждём фоновиков
wg.Wait()
Все горутины должны следить за
ctx.Done()
. После srv.Shutdown
ожидайте завершения wg.Wait()
перед окончательным выходом.Механика Graceful Shutdown легко расширяется и может быть повторно использована в микросервисах, batch-джобах и serverless-функциях.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤6🔥2
Недавно команда Go представила новые фиксы для нашего любимого языка. Ниже о том, что поправили.
Фиксы в Go 1.24.5
• Исправлена ошибка, позволяющая злоумышленникам обходить механизмы защиты от атак типа «request smuggling».
• Снижено потребление памяти при длительных сессиях работы приложения.
• Исправлены проблемы с файловой системой, возникавшие при работе с длинными путями.
Что там в Go 1.23.11:
• Устранена редкая гонка данных при использовании буферизованных каналов.
• Внесены правки в пакеты net и crypto для устранения потенциальных уязвимостей.
• Исправлены проблемы с производительностью при работе с файловой системой HFS+.
🖇 Подробнее об обновлениях: 1.23.11 и 1.24.5
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3
❗ Первый вебинар нашего курса по AI-агентам уже прошёл!
Запись уже выложили на обучающей платформе — можно влетать и догонять с комфортом.
Первые слушатели уже оставили фидбэки — и, кажется, мы попали в точку:
— «теперь наконец понял, как выбирать модели под задачу — раньше брал первую попавшуюся»
— «без лишнего, по делу, в лайве — кайф»
— «огонь, ожидания 100% оправданы лично у меня»
Если хотели вписаться, но сомневались — ещё не поздно. Вебинары идут вживую, записи сохраняются, чат работает, материалы открыты.
⏳ Ещё можно догнать и пройти всё вместе с потоком.
👉 Залетай на курс
Запись уже выложили на обучающей платформе — можно влетать и догонять с комфортом.
Первые слушатели уже оставили фидбэки — и, кажется, мы попали в точку:
— «теперь наконец понял, как выбирать модели под задачу — раньше брал первую попавшуюся»
— «без лишнего, по делу, в лайве — кайф»
— «огонь, ожидания 100% оправданы лично у меня»
Если хотели вписаться, но сомневались — ещё не поздно. Вебинары идут вживую, записи сохраняются, чат работает, материалы открыты.
⏳ Ещё можно догнать и пройти всё вместе с потоком.
👉 Залетай на курс
👍3
Please open Telegram to view this post
VIEW IN TELEGRAM
😁35💯3👏2
Подготовили для вас промпт, который поможет найти боттлнеки в проекте и оптимизировать работу ваших приложений.
Промпт:
You are an expert Golang developer, renowned for your ability to optimize code for maximum performance. Your task is to analyze a given Golang code snippet and identify potential performance bottlenecks using profiling techniques. You will then propose specific code optimizations to address these bottlenecks, explaining the reasoning behind each optimization and estimating the expected performance improvement. Finally, you will outline the steps required to verify the effectiveness of your optimizations through profiling.
Here is the format you will use to analyze the code, identify bottlenecks, propose optimizations, and outline verification steps:
---
## Code Snippet
$code_snippet
## Performance Bottlenecks Identified Through Profiling
$bottleneck_1: [Description of the bottleneck and how it was identified using profiling tools (e.g., pprof)]
$bottleneck_2: [Description of the bottleneck and how it was identified using profiling tools (e.g., pprof)]
...
## Proposed Optimizations
### Optimization for $bottleneck_1
$optimization_1: [Detailed explanation of the proposed code change to address the bottleneck. Include the modified code snippet.]
**Reasoning:** [Explain why this optimization is expected to improve performance.]
**Estimated Performance Improvement:** [Provide an estimate of the expected performance improvement (e.g., percentage reduction in execution time, memory usage).]
### Optimization for $bottleneck_2
$optimization_2: [Detailed explanation of the proposed code change to address the bottleneck. Include the modified code snippet.]
**Reasoning:** [Explain why this optimization is expected to improve performance.]
**Estimated Performance Improvement:** [Provide an estimate of the expected performance improvement (e.g., percentage reduction in execution time, memory usage).]
...
## Verification Steps
1. **Re-profile the code:** [Explain how to re-profile the code after applying the optimizations using the same profiling tools used initially (e.g., pprof).]
2. **Compare profiling results:** [Explain how to compare the profiling results before and after the optimizations to quantify the performance improvement.]
3. **Benchmark the code:** [Explain how to benchmark the code before and after the optimizations to measure the actual performance improvement in a real-world scenario.]
4. **Analyze resource usage:** [Explain how to monitor resource usage (CPU, memory) before and after the optimizations to ensure that the optimizations are not introducing new bottlenecks.]
---
Here is the Golang code snippet you are tasked with optimizing: [ВАШ КОД]
Вы получите пошаговое руководство по анализу кода, выявлению проблемных мест, предложению конкретных решений и проверке их эффективности.
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱7👍4❤3👾2🤔1
👨💻 Как я не знал этого раньше
В Go есть куча интересных возможностей, о которых многие новички и даже опытные разработчики могут не догадываться.
Вот что недавно обнаружил один из наших подписчиков:
💬 Какие фичи в Go вас удивляют? Делитесь в комментариях, вдруг кто-то об этом не знает 👇
P.S. Если хотите задать вопрос сообществу или поделиться историей, заполните нашу гугл-форму.
🐸 Библиотека Go-разработчика #междусобойчик
В Go есть куча интересных возможностей, о которых многие новички и даже опытные разработчики могут не догадываться.
Вот что недавно обнаружил один из наших подписчиков:
Я долго работал с Go и привык, что всё решается через стандартные библиотеки и горутины, но как-то наткнулся на возможность запускать C-код прямо из Go через cgo. Сначала не мог поверить, что это реально работает! Не знал, что Go так легко может взаимодействовать с C, чтобы использовать готовые библиотеки и функции. Это даже оказалось полезным в одном из проектов!
💬 Какие фичи в Go вас удивляют? Делитесь в комментариях, вдруг кто-то об этом не знает 👇
P.S. Если хотите задать вопрос сообществу или поделиться историей, заполните нашу гугл-форму.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13😁3❤2🤔1😢1
Media is too big
VIEW IN TELEGRAM
Как относитесь к созданию своего жпт не через конструктор, а хардкорно через код?
🔥 — я своего завайбкодил
🏃♀️ Ссылка на курс
🔥 — я своего завайбкодил
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱6👍3🔥3🤔2❤1