Ophis - golang утилита, которая автоматически превращает ваши Cobra-команды в MCP-инструменты.

🔥 Плюсы:
- Мгновенная конверсия Cobra → MCP
- CLI-команды для интеграции с Claude и VSCode
- Упрощает подключение к MCP без лишних движений

🔗 Репозиторий: https://github.com/njayp/ophis

#golang #cli #MCP
👍124🔥3
Graceful Shutdowns в Go HTTP-серверах: как обеспечить 0 простоев при живом трафике

Graceful shutdown - это “прощание с клиентами”, когда сервер:
- перестаёт принимать новые запросы
- даёт завершиться текущим запросам
- чистит ресурсы (базы, файлы и т.д.)
- и только потом закрывается

Зачем это нужно:
Если просто “убить” сервер:
- запросы могут оборваться на полпути (например, оплата)
- пользователи получат ошибки или потеряют данные
- могут остаться “висячие” соединения и утечки ресурсов

Graceful shutdown решает это, особенно важно при деплое, перезагрузках, работе в Kubernetes/Docker.

# Как это сделать в Go
1. Использовать http.Server.Shutdown(ctx) - сервер перестаёт принимать новые запросы, но завершает текущие в рамках таймаута.
2. Перехватывать сигналы ОС (`SIGINT`, SIGTERM`) через `os/signal, чтобы начать shutdown.
3. Использовать context.WithTimeout, чтобы ограничить время завершения.
4. Корректно закрывать ресурсы: БД, логи, файлы и т.д.

# Пример кода

package main

import (
"context"
"log"
"net/http"
"os"
"os/signal"
"time"
)

func main() {
mux := http.NewServeMux()
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
time.Sleep(3 * time.Second)
w.Write([]byte("Request done"))
})

server := &http.Server{
Addr: ":8080",
Handler: mux,
}

go func() {
log.Println("Server starting on :8080")
if err := server.ListenAndServe(); err != nil && err != http.ErrServerClosed {
log.Fatalf("ListenAndServe error: %v", err)
}
}()

stop := make(chan os.Signal, 1)
signal.Notify(stop, os.Interrupt, os.Kill)

<-stop
log.Println("Shutting down server...")

ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()

if err := server.Shutdown(ctx); err != nil {
log.Fatalf("Forced shutdown: %v", err)
}

log.Println("Server exited gracefully")
}


Вывод

- Graceful shutdown — не просто “красивость”, а необходимая практика для надёжных Go-сервисов:
- минимизирует потери данных и ошибок для пользователей
- обеспечивает корректное завершение внутренних операций
- делает деплой и перезапуск безопасными и незаметными

https://blog.stackademic.com/graceful-shutdowns-in-go-http-servers-ensuring-zero-downtime-for-live-traffic-b8224b28ab4a
124👍13🔥13
👣 Gojekyll: Быстрый генератор статических сайтов на Go

Gojekyll — это клон Jekyll, написанный на Go, предлагающий команды для сборки и сервировки сайтов с поддержкой живой перезагрузки. Он обеспечивает высокую скорость и частичную совместимость с Jekyll, позволяя использовать Liquid для шаблонов и SASS для стилей.


go install github.com/osteele/gojekyll@latest


🚀 Основные моменты:
- Быстрее Jekyll в 20 раз
- Поддержка SASS и Liquid
- Частичная совместимость с Jekyll
- Поддержка Windows
- Эмуляция некоторых плагинов

📌 GitHub: https://github.com/osteele/gojekyll

#go
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍16🔥65
🖥 pg_flo — библиотека для работы с PostgreSQL, которая упрощает создание и выполнение потоковых операций в базе данных! Она также предоставляет удобный интерфейс для выполнения операций с данными, что может быть полезно для задач, требующих последовательной обработки данных.

🔐 Лицензия: Apache-2.0

🖥 Github
Please open Telegram to view this post
VIEW IN TELEGRAM
9🔥6👍4
👣 Вышли новые версии Go 1.25.2 и Go 1.24.8 с 10 важными исправления в безопасности.

Исправлены уязвимости в:
- net/mail - чрезмерное потребление CPU при разборе адресов
- crypto/x509 - квадратичная сложность при проверке ограничений имён
- crypto/tls - утечка неэкранированных данных в логах при ошибках ALPN
- encoding/pem и asn1 - возможное истощение памяти при разборе некорректных данных
- net/url - неправильная проверка IPv6 в квадратных скобках
- net/http - отсутствие лимита на количество cookies
- archive/tar - неограниченное чтение sparse map
- net/textproto - чрезмерное потребление CPU при чтении ответов

📢 Официальное объявление:
groups.google.com/g/golang-announce/c/4Emdl2iQ_bI/m/qZN5nc-mBgAJ

👉 Скачать обновления: go.dev/dl/#go1.25.2

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4415🔥10
🛠️ Cloudflare нашла редкий баг в компиляторе Go для ARM64 — ошибка повреждала стек и вызывала краши

Инженеры Cloudflare заметили странные fatal panics на ARM64-серверах, сопровождающиеся сообщениями вроде *“traceback did not unwind completely”*.
Ошибки указывали на то, что Go runtime не может корректно «размотать» стек после паники, а значит — стек повреждён.

После длительного расследования выяснилось: проблема была в самом компиляторе Go для ARM64.
Он иногда разбивал инструкцию на две отдельные операции:

ADD $framesize, RSP, RSP

Если между ними происходило асинхронное прерывание (async preemption), например, от планировщика или сборщика мусора, указатель стека (RSP) переходил в некорректное состояние.

В результате, когда Go runtime пытался «размотать» стек для трассировки ошибки, он сталкивался с повреждёнными адресами и завершался крашем.

Cloudflare смогла воспроизвести баг на минимальном примере: функция с большим стеком вызывала panic, и если прерывание происходило ровно между двумя частями инструкции, процесс завершался segmentation fault.

Исправление уже включено в версии Go 1.23.12, 1.24.6 и 1.25.0.

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

Cloudflare подчёркивает: подобные ошибки встречаются крайне редко и проявляются только под высокой нагрузкой на ARM-серверах.
Но этот случай показывает, насколько сложно отлавливать низкоуровневые race condition-баги, которые могут оставаться незаметными годами, пока не сойдутся «идеальные» условия.

📌Подробнее: https://blog.cloudflare.com/how-we-found-a-bug-in-gos-arm64-compiler/

@Golang_google
1👍49🔥2410🥰2
Рынку нужны айтишники. Но, давайте честно, не все.

Самое грустное — смотреть, как резюме реально стоящих кандидатов отправляются в корзину под столом HR и грустно гниют в анналах hh, потому что их резюме выглядит как «Делал LLM, делал пайплайны, вывел в прод сайт про рост моркови». Как это помогло бизнесу, непонятно.

Что обычно не так с этими резюме:
— Проекты выглядят как описание обязанностей типа «работал работу, пил латте из кофемашины»
— Результаты отсутствуют или звучат так, как будто вы разрабатывали весь Яндекс с нуля
— Непонятно, в чём вы реально хороши, кроме как в стрессоустойчивости и коммуникабельности на основе собственных ощущений
— Оно не продает вас. Какой смысл в том, что вы тащили в прод сумасшедшие продукты и инженерили на уровне боженьки, если вы не можете ответить бизнесу четко на вопрос, зачем вы нужны.

Отдельная проблема — защита этого резюме на собесе. За классных спецов компании готовы драться, но никто не будет угадывать, какой вы классный, если вы не научитесь себя продавать.

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

В программе карьерной поддержки Цеха:

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

Если вы давно хотели навести порядок в профессиональной самооценке — сходите на бесплатную консультацию.
Ребята уже там дадут первые конкретные рекомендации.
😁27🤬7🔥5🤯3👍2🥰2😱2🤔1
👣 GoCraft - Генератор бэкенда на Go

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

⚡️Основные моменты:
- Быстрое создание готовых к производству бэкендов
- Модульная архитектура с возможностью выбора функций
- Встроенные механизмы безопасности и валидации
- Полная документация и примеры использования
- Поддержка множества технологий и интеграций

📌 GitHub: https://github.com/telman03/gocraft-backend

#go
Please open Telegram to view this post
VIEW IN TELEGRAM
22🔥10🤔8👍6😁5