Б
Библиотека Go-разработчика | Golang
07.10.2026 10:38 · 👁 1.6K
Перенос MiniJinja с Rust на Go силами Opus и Codex
Около десяти часов работы агента и примерно 45 минут активного участия автора. Так Армин Ронахер оценивает основной перенос MiniJinja с Rust на Go. MiniJinja собирает текст по шаблонам.
Он начал с Opus 4.5 внутри Pi, а оставшиеся исправления тестов передал GPT-5.2 Codex. Рабочая среда оставалась той же; Go-реализацию сверяли с сохранёнными результатами тестов Rust-версии.
По ходу работы агент отказался от проверок, в которых программа должна завершаться ошибкой: текст сообщений не совпадал дословно. Ронахер вмешался и сохранил эти тесты, изменив способ сравнения сообщений.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика
Б
Библиотека Go-разработчика | Golang
06.10.2026 09:57 · 👁 2.2K
🎓 Тестовый собес с Go Senior из Гамбурга, с опытом работы в Yandex и Uzum
[ + эталонные ответы на 50 сложных вопросов в подарок ]
В четверг, 8 октября, в 19:00 МСК приходи онлайн на тестовое собеседование. Можно посмотреть, как всё устроено изнутри, и понять, насколько ты готов к такому интервью.
Интервьюер: Маруф Караев — Senior Software Engineer из Гамбурга, ex-Yandex, ex-Uzum.
Как это будет:
📂 Маруф задаст разработчику-добровольцу те вопросы и задачи, которые даёт кандидатам на своих интервью. Заранее их никто не знает;
📂 После каждого ответа Маруф даст обратную связь: что прозвучало сильно, а что стоило раскрыть иначе. Так станет понятнее, на что обращают внимание на собесе;
📂 В конце сможешь задать Маруфу любой вопрос и получить развёрнутый ответ;
Эфир проходит в рамках менторской программы ШОРТКАТ для Go-разработчиков, которые хотят сменить работу и вырасти в грейде и зарплате.
🎁 Подарок для всех, кто зарегается на веб:
файл с эталонными ответами на 50 сложных вопросов с Go-интервью 🔥
Жми на кнопку, чтобы попасть на эфир и забрать подарок ↓
@shortcut_go_bot
Реклама.
О рекламодателе.
Б
Библиотека Go-разработчика | Golang
30.09.2026 14:14 · 👁 3.8K
🧑💻 Эмулятор AWS-сервисов
Kumo — это небольшой инструмент на Go для локальной имитации AWS-сервисов. Он помогает разработчикам тестировать приложения без облака.
Проект подходит для unit-тестов, где нужен мок для облачных вызовов. Устанавливается через
go install github.com/sivchari/kumo@latest
🟡 Запускается как прокси, а SDK настраивается на локальный эндпоинт.
Поддерживает базовые операции над S3: создание бакетов, загрузку объектов, список файлов. Для DynamoDB эмулирует таблицы, put/get item. Конфиг через флаги или env.
➡️ Репозиторий
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика
#GoLive
Б
Библиотека Go-разработчика | Golang
29.09.2026 11:04 · 👁 3.4K
👨💻 Библиотека для написания LSP-серверов
Написать свой Language Server с нуля на Go сложно. Нужно разобраться с JSON-RPC фреймингом, маршрутизацией сообщений, типами LSP, управлением жизненным циклом соединения. И всё это до того, как начнёшь писать саму языковую логику.
go-lsp берёт всё это на себя. Библиотека реализует LSP 3.17 и даёт чистый интерфейс, где вы просто описываете, что ваш сервер умеет делать.
go-lsp состоит из трёх пакетов. jsonrpc отвечает за JSON-RPC 2.0 поверх io.ReadWriteCloser. lsp содержит Go-типы для всех структур протокола, без логики. server связывает всё вместе: принимает хендлер, смотрит какие интерфейсы он реализует и автоматически регистрирует соответствующие LSP-методы.
Устанавливаем:
go get github.com/owenrumney/go-lsp
Минимальный сервер с поддержкой hover:
package main
import (
"context"
"os"
"github.com/owenrumney/go-lsp/lsp"
"github.com/owenrumney/go-lsp/server"
)
type Handler struct{}
func (h *Handler) Initialize(ctx context.Context, params *lsp.InitializeParams) (*lsp.InitializeResult, error) {
return &lsp.InitializeResult{
Capabilities: lsp.ServerCapabilities{
HoverProvider: &lsp.HoverOptions{},
},
}, nil
}
func (h *Handler) Shutdown(ctx context.Context) error {
return nil
}
func (h *Handler) Hover(ctx context.Context, params *lsp.HoverParams) (*lsp.Hover, error) {
return &lsp.Hover{
Contents: lsp.MarkupContent{
Kind: lsp.MarkupKindMarkdown,
Value: "Hello from the server",
},
}, nil
}
func main() {
srv := server.NewServer(&Handler{})
if err := srv.Run(context.Background(), server.RunStdio()); err != nil {
os.Exit(1)
}
}
Сервер сам понимает, что хендлер поддерживает hover, потому что он реализует интерфейс HoverHandler. Вручную регистрировать методы не нужно. Хотите добавить completion — реализуйте CompletionHandler.
Обязательный интерфейс только один — LifecycleHandler с методами Initialize и Shutdown. Всё остальное реализуете по мере необходимости.
➡️ Репозиторий
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика
Б
Библиотека Go-разработчика | Golang
28.09.2026 17:32 · 👁 3.2K
🤔 Вопрос с собеседования по Go
Что выведет программа?
❤️ — 1 true / 0 false
🔥 — 1 true / 1 false
👍 — 1 false / 0 true
👾 — panic при втором чтении
👇 Правильный ответ (нажми, чтобы прочитать):
❤️ — 1 true / 0 false
После close(ch) уже записанное значение можно получить обычным чтением. Когда канал пуст и закрыт, чтение возвращает нулевое значение типа и ok == false.
⚠️ Закрытый канал не становится сразу «пустым» — его буфер всё ещё можно прочитать.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика
Б
Библиотека Go-разработчика | Golang
28.09.2026 13:13 · 👁 3.1K
👩💻 Что на самом деле происходит внутри Go map?
После Go 1.24 обычный map внутри работает уже не так, как раньше: вместо старой схемы с overflow buckets используется Swiss Tables.
И там довольно много интересного: хеш делится на части, поиск идёт группами по 8 слотов, SIMD сразу сравнивает несколько значений, а при росте таблица может дробиться.
📍 В статье всё это разбирают буквально по шагам — от m["cow"] = 4 до устройства directory и таблиц.
Если хочется понять, почему Go map работает быстро, а не просто знать, что он O(1) — почитать стоит.
🐸 Библиотека программиста
Б
Библиотека Go-разработчика | Golang
26.09.2026 09:04 · 👁 4K
🔥 В Go 1.27 появился portable SIMD
До этого SIMD-оптимизации в Go требовали архитектурного кода — например, отдельно для amd64 и arm64.
➡️ Теперь экспериментальный пакет simd предлагает единый интерфейс для разных CPU: AVX/AVX2/AVX512, NEON и Wasm SIMD. Размер вектора при этом не зашит в типы, а при отсутствии аппаратной поддержки операции могут выполняться через эмуляцию.
Пока API экспериментальный, но идея простая: один векторизованный код вместо отдельных реализаций под каждую архитектуру.
🔗 Подробнее о том, как это реализовано внутри Go
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика
#GoLive
Б
Библиотека Go-разработчика | Golang
25.09.2026 18:05 · 👁 4.2K
🤡🤡
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика
#GoGiggle
Б
Библиотека Go-разработчика | Golang
25.09.2026 14:10 · 👁 3.9K
💡 Код работает. А data race уже есть
В Go можно записать значение в одной горутине, прочитать в другой — и получить именно тот результат, который ожидал.
Проблема в том, что Go этого не гарантирует без синхронизации.
Например, даже такой паттерн:
msg = "hello"
done = true
for !done {}
fmt.Println(msg)
может выглядеть абсолютно логично, но содержит две data race.
🔜 В разборе наглядно показывают, почему так происходит: от работы компилятора и CPU до memory model Go. А затем — чем правильно заменить самодельный флаг:
atomic → Mutex → WaitGroup → channels → sync.Once
Отдельно разбирается интересный эксперимент, где две горутины иногда обе читают 0, хотя на первый взгляд это кажется невозможным.
Если с конкурентностью в Go приходится работать не только на уровне «поставь mutex», этот разбор стоит посмотреть.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика
Б
Библиотека Go-разработчика | Golang
23.09.2026 10:03 · 👁 3.9K
💥 TCP/IP: что происходит с данными в сети
Когда Go-приложение отправляет данные по сети, они проходят несколько уровней TCP/IP. Каждый отвечает за свою часть доставки.
1️⃣ Канальный
Отвечает за передачу данных внутри конкретной сети: Ethernet, Wi-Fi и т. д. Здесь работают MAC-адреса и механизмы доступа к среде.
2️⃣ Межсетевой
Здесь появляется IP — адресация и маршрутизация пакетов между сетями. Маршрутизаторы определяют, куда отправить пакет дальше.
3️⃣ Транспортный
Определяет, как данные доставляются между хостами. Основные протоколы:
TCP — соединение, порядок данных, подтверждения и повторная передача;
UDP — минимальные накладные расходы, без гарантии доставки и порядка.
4️⃣ Прикладной
Протоколы, с которыми непосредственно работают приложения: HTTP, DNS, SMTP, SSH и другие.
TCP vs UDP
У TCP заголовок сложнее: в нём есть sequence number, acknowledgement, window и другие поля, необходимые для управления передачей.
У UDP всё проще: порты, длина, checksum и данные.
В Go разницу особенно хорошо видно при работе с net.TCPConn и net.UDPConn.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика