Telegram Web Link
🚀 Управление историей коммитов

Основные приёмы и команды для эффективного применения 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 


💬 Как у вас с ребейзом? На «ты» или гит жонглирует вашими нервами?

🐸Библиотека Go-разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
6
🔝 Как вывести резюме в топ

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

Ваше резюме — это не просто список навыков, а настоящий маркетинговый инструмент.

➡️ Детали в статье

🐸Библиотека Go-разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍1
🛠 Как упасть без шума

Без мягкой остановки есть риски некорректно закрыть соединения или оставить горутины «висеть», что приведёт к утечке памяти.

Пример обработки сигналов для мягкого падения:

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-функциях.

🐸Библиотека Go-разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍155🔥2
⭐️ Минорные обновления Go

Недавно команда Go представила новые фиксы для нашего любимого языка. Ниже о том, что поправили.

Фиксы в Go 1.24.5

• Исправлена ошибка, позволяющая злоумышленникам обходить механизмы защиты от атак типа «request smuggling».

• Снижено потребление памяти при длительных сессиях работы приложения.

• Исправлены проблемы с файловой системой, возникавшие при работе с длинными путями.

Что там в
Go 1.23.11:

• Устранена редкая гонка данных при использовании буферизованных каналов.

• Внесены правки в пакеты net и crypto для устранения потенциальных уязвимостей.

• Исправлены проблемы с производительностью при работе с файловой системой HFS+.

🖇 Подробнее об обновлениях: 1.23.11 и 1.24.5

🐸Библиотека Go-разработчика #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍43
Первый вебинар нашего курса по AI-агентам уже прошёл!

Запись уже выложили на обучающей платформе — можно влетать и догонять с комфортом.

Первые слушатели уже оставили фидбэки — и, кажется, мы попали в точку:
— «теперь наконец понял, как выбирать модели под задачу — раньше брал первую попавшуюся»
— «без лишнего, по делу, в лайве — кайф»
— «огонь, ожидания 100% оправданы лично у меня»

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

Ещё можно догнать и пройти всё вместе с потоком.

👉 Залетай на курс
👍3
💡 Оптимизация приложений с ИИ

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

Промпт:
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: [ВАШ КОД]


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

🐸Библиотека Go-разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱6👍43👾2🤔1
👨‍💻 Как я не знал этого раньше

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

Вот что недавно обнаружил один из наших подписчиков:
Я долго работал с Go и привык, что всё решается через стандартные библиотеки и горутины, но как-то наткнулся на возможность запускать C-код прямо из Go через cgo. Сначала не мог поверить, что это реально работает! Не знал, что Go так легко может взаимодействовать с C, чтобы использовать готовые библиотеки и функции. Это даже оказалось полезным в одном из проектов!


💬 Какие фичи в Go вас удивляют? Делитесь в комментариях, вдруг кто-то об этом не знает 👇

P.S. Если хотите задать вопрос сообществу или поделиться историей, заполните нашу гугл-форму.

🐸Библиотека Go-разработчика #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍112🤔1😢1
Media is too big
VIEW IN TELEGRAM
Как относитесь к созданию своего жпт не через конструктор, а хардкорно через код?

🔥 — я своего завайбкодил

🏃‍♀️ Ссылка на курс
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱4👍3🔥3🤔21
👨‍💻 Маст-хев в GoLand

Ускорьте свою работу в IDE — используйте проверенные комбинации, позволяющие быстро находить команды, генерировать код и редактировать фрагменты без отрыва от клавиатуры:

• Найти действиеCtrl + Shift + A
Быстрый поиск любой команды или настройки IDE по её названию.

Базовое автодополнениеCtrl + Space
Подстановка переменных, методов и названий классов на основе текущего контекста.

Умное автодополнение Ctrl + Shift + Space
Предложения на основе типов данных и сигнатур функций.

Интенции и быстрые исправления Alt + Enter
Подсказки по автоматическим рефакторингам, импортам и исправлению ошибок.

Генерация кодаAlt + Insert
Автоматическое создание конструкций: конструкторов, геттеров/сеттеров, методов equals/hashCode и пр.

Параметры метода Ctrl + P
Отображение списка параметров функции или метода и подсветка текущего аргумента.

Сгруппировать выбор Ctrl + Shift + W
Поэтапное сужение выделения — от выражения к отдельному слову.

Расширить выбор Ctrl + W
Поэтапное расширение выделения — от слова к целому выражению, блоку, методу.

Недавние файлы Ctrl + E
Быстрый переход к последним открытым файлам и вкладкам.

ПереименоватьShift + F6
Интеллектуальное переименование переменных, методов и классов с учётом ссылок.

Поиск везде — Двойной Shift
Универсальный поиск по файлам, классам, символам и действиям IDE.

🐸Библиотека Go-разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍5🔥1🥱1
🛠 Интерфейсы с дженериками

Представьте, что ваш код — это парк, а интерфейсы — дорожки между объектами. Что если дорожки могли бы меняться по размеру и форме под любой тип посетителя?

В блоге Go пояснили как это сделать и поделились своими рассуждениями о дженериках.

➡️ Читать статью

🐸Библиотека Go-разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
2025/07/11 18:21:16
Back to Top
HTML Embed Code: