17178
Библиотека Golang разработчика По всем вопросам- @haarrp @Golang_google - Golang @golangl - golang chat @GolangJobsit - golang channel jobs @golangtests golang tests @itchannels_telegram - 🔥лучшие ит-каналы № 5032829002
Apache Kafka 4.x - продвинутый бесплатный практический курс 2026 года
https://github.com/justxor/KAFKAFREECOURSR/tree/main
🔥 Один из лучших обучающих курсов на StepiK по SQL
SQL можно знать годами и всё равно теряться, когда запрос внезапно начинает тормозить в проде.
Этот курс про уровень, где ты не просто пишешь SELECT, а понимаешь, что происходит внутри MySQL, почему запрос работает медленно и как ускорить его без новых проблем. Здесь разбираются EXPLAIN, индексы, CTE, оконные функции, транзакции, аналитические паттерны, legacy SQL и работа с AI-ассистентами.
Каждый урок - с практикой и реальными SQL-задачами на MySQL 8 с автопроверкой.
После курса ты сможешь увереннее разбирать чужой код, находить узкие места и предлагать решения, которые действительно работают.
Для подписчиков скидка - 49% в течение 2 суток: https://stepik.org/a/298827/
Участвуй во всероссийском ИТ-чемпионате МТС True Tech Champ 2026 c призовой фондом 10 250 000 рублей.
Если тебе нравятся алгоритмы, структуры данных и задачи на чистую логику — участвуй в алгоритмическом треке с индивидуальным зачетом.
Решай задачи разного уровня сложности: от базовых до тех, что проверяют скорость мышления и умение оптимизировать решения за ограниченное время.
В финале лучшие 120 участников алгоритмического трека сразятся в лайв-кодинге за шесть призовых мест и 2 750 000 рублей. Всех финалистов ждут:
— Лимитированный мерч;
— Сертификаты об участии;
— Масштабное мероприятие с выступлениями хэдлайнеров и фестивальными активностями.
Успей зарегистрироваться и пройти отборочный этап до 27 сентября.
Erid: 2VSb5xcjq1c
🔥 Хочешь расти в IT быстрее остальных? Перестань учиться в одиночку
Можно годами смотреть курсы, читать документацию и всё равно топтаться на месте.
А можно попасть в правильное окружение, где каждый день обсуждают новые инструменты, вакансии, реальные кейсы, ошибки и то, что уже завтра станет стандартом.
Здесь собраны папки и каналы по разным направлениям IT, чтобы ты быстрее находил нужных людей, идеи и полезный контент - без бесконечного поиска.
AI: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Хакинг: t.me/linuxkalii
DevOps: t.me/DevOPSitsec
Docker: /channel/+90Z5TAyfuNU5YmRi
Golang: t.me/Golang_google
Rust: t.me/rust_code
C++: t.me/cpluspluc
C#: t.me/csharp_ci
Java: t.me/javatg
JavaScript: t.me/javascriptv
React: t.me/react_tg
Frontend: t.me/front
PHP: t.me/phpshka
Android: t.me/android_its
Мобильная разработка: t.me/mobdevelop
Базы данных: t.me/sqlhub
Data Science: t.me/data_analysis_ml
Big Data: t.me/bigdatai
Математика: t.me/data_math
Физика: t.me/fizmat
Kubernetes: t.me/kubernetc
GameDev: /channel/gamedev
Haskell: t.me/haskell_tg
Собеседования и карьера:
DS собеседования: t.me/machinelearning_interview
Python собеседования: t.me/python_job_interview
Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: /channel/addlist/2Ls-snqEeytkMDgy
Папка Frontend: /channel/addlist/mzMMG3RPZhY2M2Iy
Полезное сверху:
ИТ-мемы: t.me/memes_prog
Английский для программистов: t.me/english_forprogrammers
ИИ и технологии: t.me/vistehno
954 ГБ open-source курсов: /channel/+rKBQEMccAA01MTcy
ИТ-книги бесплатно: /channel/addlist/BkskQciUW_FhNjEy
Max Ai: https://max.ru/ai_machinelearning_big_data
Max python: https://max.ru/pythonl
ТЕХНО: https://max.ru/vistehno
Max Go: https://max.ru/Golang_google
Max Linux: https://max.ru/linuxkalii
Devops: https://max.ru/DevOPSitsec
C#: https://max.ru/csharp_ci
C++: https://max.ru/cpluspluc
SQL: https://max.ru/sqlhub
Java: https://max.ru/javatg
Подпишись и сохрани, здесь регулярно появляются новые подборки, инструменты и материалы, которые реально помогают расти быстрее.
А что, если посмотреть на AI-агентов не как на отдельные приложения, а как на полноценную инфраструктуру?
Именно такую платформу сейчас строят в Ozon Tech. Базовая платформа и LLM-шлюз уже есть, а дальше — SDK, Tool Hub, оркестрация, инструменты observability и evaluation для AI-агентов.
Под задачу собирают новую команду и ищут Senior-разработчиков. Стек не принципиален — важнее сильный инженерный опыт и интерес к AI.
→ подробнее о вакансии
Spinifex - open-source платформа с AWS-совместимым API для запуска инфраструктуры на собственном железе.
Проект позволяет поднимать сервисы, похожие на:
- EC2
- VPC
- S3
- EBS
Всё работает на bare metal и остаётся под полным контролем владельца инфраструктуры.
Spinifex рассчитан на сценарии, где обычное облако использовать нельзя или нежелательно:
- edge-площадки
- частные дата-центры
- среды с плохой связью
- изолированные и высокорисковые инфраструктуры
Идея простая: получить привычную облачную модель AWS, но без зависимости от публичного облака.
Проект написан на Go и открыт на GitHub:
https://github.com/mulgadc/spinifex
Go: горутина - это не поток ОС.
В хорошем разборе func25 показано, что go doSomething() не вызывает функцию напрямую. Go создаёт новую goroutine, помещает её в очередь планировщика и сразу продолжает выполнение текущего кода. Поэтому main может завершиться раньше, чем новая goroutine вообще получит CPU.
Из-за этого time.Sleep() - плохой способ ждать завершения работы. Для синхронизации нужен, например, sync.WaitGroup.
Почему goroutine дешевле системного потока:
- стартует с маленьким стеком, минимум около 2 КБ
- стек растёт по мере необходимости
- создание не требует отдельного системного потока
- Go runtime сам распределяет множество goroutine по меньшему числу OS threads
- переключение между goroutine часто обходится дешевле переключения потоков через ядро ОС
-
Отдельно важно понимать GOMAXPROCS: он ограничивает число потоков, которые могут одновременно выполнять Go-код.
С Go 1.25 runtime также учитывает CPU-лимиты контейнера. Например, на хосте может быть 64 CPU, но при лимите контейнера в 2 CPU GOMAXPROCS будет около 2.
И ещё одна важная деталь:GOMAXPROCS(1) убирает параллельность, но не конкурентность.
Несколько goroutine всё равно существуют одновременно и могут чередоваться, просто в конкретный момент Go-код выполняет только одна из них.
https://func25.dev/posts/go-goroutines-basics/
Go: почему код может «работать», но всё равно быть неправильным
Хороший разбор Go memory model и data races без академической перегрузки.
Внутри:
— почему одна goroutine не обязана сразу видеть изменения другой
— как компилятор и CPU могут переупорядочивать операции
— что на самом деле гарантирует happens-before
— когда нужны atomic, mutex и channels
— почему «у меня всё работает» ещё не означает, что код корректен
Особенно полезно тем, кто пишет конкурентный Go-код и хочет понимать не только API синхронизации, но и то, что реально происходит с памятью.
https://func25.dev/posts/go-memory-visibility/
#golang #go
👣 Alibaba выкатила skill-up - инструмент на Go для тестирования и прокачки skills у AI-агентов.
Вместо папок с разрозненными промптами, скриптами и eval-файлами здесь используется декларативный YAML-формат. Skill можно описать как конфиг и гонять одинаково локально или в CI.
Поддерживаются три стратегии оценки: обычные правила, скрипты и judge на базе другого агента. Есть совместимость с форматом Anthropic и импорт evals.json.
Здесь есть интересный цикл улучшения: skill-up может находить провальные кейсы, помогать расширять eval-набор и итеративно чинить сам skill.
То есть идея примерно такая: написал skill → прогнал eval → увидел, где агент ломается → обновил → снова прогнал.
https://github.com/alibaba/skill-up
#AI #Golang #AgenticAI #DevOps
🔥 Нашёл отличный бесплатный ресурс по Harness Engineering - тому, что делает coding agents реально надёжными
Курс посвящён не очередному «как написать хороший промпт», а инженерии окружения вокруг Codex, Claude Code и других AI-агентов.
Разбирают:
* почему сильные агенты всё равно проваливают задачи;
* как сохранять контекст между длинными сессиями;
* зачем нужны AGENTS.md, feature_list.json и progress-файлы;
* как не дать агенту объявить задачу завершённой слишком рано;
* как встроить тестирование, observability и контроль в сам harness.
Есть теория, практические проекты и готовые шаблоны для репозиториев. Причём среди базовых материалов авторы прямо ссылаются на подходы OpenAI и Anthropic.
Главная идея очень правильная:
не пытаться бесконечно делать модель умнее промптами, а построить вокруг неё систему, в которой ошибаться сложнее.
И да - есть русская версия.
https://walkinglabs.github.io/learn-harness-engineering/ru/
🚀 Go 1.27: что нового в следующем большом обновлении Go
Go продолжает развивать не синтаксис ради синтаксиса, а то, что реально влияет на production-сервисы.
Главные изменения:
🧬 Generic methods
Методы смогут иметь собственные type parameters:
type Box[T any] struct {
Value T
}
func (b Box[T]) Map[R any](fn func(T) R) Box[R] {
return Box[R]{fn(b.Value)}
}
encoding/json/v2
import "encoding/json/v2"
encoding/json и сделать работу с JSON более современной.
📚 Бесплатный учебник по математике для Computer Science и Machine Learning обновили — теперь это более 2200 страниц.
Algebra, Topology, Differential Calculus, and Optimization Theory for Computer Science and Machine Learning — фундаментальный разбор математики, которая стоит за современными алгоритмами:
— линейная и абстрактная алгебра;
— топология и геометрия;
— дифференциальное исчисление;
— теория оптимизации;
— математическая база ML.
Полезный справочник для разработчиков, ML-инженеров и исследователей, которым нужно понимать методы глубже уровня готовых библиотек.
Скачать PDF:
https://cis.upenn.edu/~jean/gbooks/geomath.html
Rust, который наконец становится понятным 🦀
Давно хочешь выучить Rust, но ownership, borrowing и lifetimes выглядят как отдельный вид боли?
Этот курс проведёт тебя с самого начала до уровня, где ты уже пишешь реальные системные и сетевые программы.
Ты разберёшь:
Ownership → Borrowing → ошибки → коллекции → Generics → Traits → модули → тесты → сетевой код
Никакого бесконечного чтения документации. После каждого урока ты сразу пишешь код, проходишь тесты и решаешь задачу с автопроверкой.
🔥 Rust с нуля
🔥 5–6 часов в неделю
🔥 Практика после каждого урока
🔥 Подойдёт после Python, JavaScript, Java и других языков
🔥 Можно начать сразу
В конце у тебя будет понимание Rust, с которым уже можно писать быстрые backend-сервисы, сетевые приложения и системные утилиты, а не смотреть на borrow checker как на врага.
Пора добавить Rust в свой стек. Начинай курс и пиши первый код уже сегодня: https://stepik.org/a/294885/
Каждый год в середине лета мы с друзьями собираемся на E-CODE. Ещё относительно молодая конфа Ozon Tech стала уже своего рода легендой. Не удивительно: хардовость официальной части здесь не уступает громкости афтерпати.
На E-CODE 2026 нас по части бэкэнда ждут:
• Runtime Async с его + и –
• трассировка с eBPF
• ускорение на SIMD
• построение кастомной real-time системы видеоаналитики
• сравнительный анализ алгоритмов сборки мусора
Фишка этого года — брейнринг разработчиков и ИИ. Эксперты разберут сложные кейсы и сравнят свои подходы с тем, что предложит машина. Победителя выберет зал.
Регистрируйтесь сейчас, чтобы услышать это всё вживую: https://ecode.ozon.tech/
12 и 13 сентября, Москва. До встречи на E-CODE!
Как LLM генерирует ответ: вся магия - в одном цикле
Вышло понятное введение в инференс - процесс, который происходит, когда уже обученная модель отвечает на запрос.
Упрощённо работу LLM можно представить так:
nextToken(input, frozenWeights) → token
prompt → token → token → token → ...
llama.cpp и показывает фундамент для локального запуска моделей из Go через Yzma и Kronk.
🔥 Большой гайд по миграции с Go на Rust - без банального «Rust просто быстрее»
Главная мысль: для backend-команд переход обычно упирается не в скорость, а в гарантии корректности, runtime trade-offs и ergonomics.
Внутри подробно сравниваются:go build → cargo build go test → cargo test go vet → cargo clippy nil → Option<T> error → Result<T, E>
interfaces → traits
goroutines → async/await -race → compile-time ограничения через Send / Sync
Отдельно хорошо показано, где Rust действительно выигрывает: data races, lifetime ресурсов, typed errors, отсутствие GC-пауз и более жёсткие гарантии компилятора.
Но автор не агитирует переписывать всё подряд: для большинства backend-сервисов Go остаётся достаточно быстрым и очень удобным. Rust имеет смысл там, где цена runtime-багов уже выше, чем цена более сложной разработки.
Есть и практический раздел про постепенную миграцию сервисов, а не «rewrite from scratch».
https://corrode.dev/learn/migration-guides/go-to-rust/
🔥 Как Kronk управляет локальными LLM и не убивает VRAM
Kronk — Go SDK и model server поверх llama.cpp, который позволяет запускать модели локально прямо внутри Go-приложения без Python-стека и отдельного inference-сервера. :contentReference[oaicite:0]{index=0}
Самое интересное — model management.
Когда вы загружаете модель, системе мало просто открыть GGUF. Нужно понять:модель → файлы → параметры железа → доступная RAM/VRAM → context size → конфигурация запуска
Kronk автоматически подбирает настройки под конкретное железо и учитывает память не только под веса модели, но и под KV cache, compute buffers и параллельные запросы. :contentReference[oaicite:1]{index=1}
Внутри также есть:
- continuous batching
- общий экземпляр весов для нескольких запросов
- отдельный KV cache для каждой активной сессии
- кеширование уже обработанного контекста
- автоматическая загрузка совместимых llama.cpp библиотек и моделей
В итоге приложение работает с локальной LLM почти как с обычным API, а большая часть низкоуровневой возни с памятью, загрузкой и inference остаётся внутри Kronk.
https://internals-for-interns.com/posts/kronk-model-management/
🔥 Самые мерзкие вопросы по Go, которые легко завалят даже сильного разработчика
Не про slice и goroutine, а про реально подкапотные вещи.
Например:
- как вызвать приватную функцию из другого пакета через //go:linkname
- почему два new(struct{}) могут иметь одинаковый адрес
- как получить ID текущей goroutine, хотя нормального API для этого нет
- чем на самом деле отличаются panic, fatal и throw
- почему concurrent read/write в map может завершить процесс через fatal
- почему recover() в родительской goroutine не поймает panic из дочерней
- почему map после delete не обязательно отдаёт память обратно
- как defer может изменить именованное возвращаемое значение
- почему len(slice) возвращает int, а не uint
- почему Go plugins настолько неудобны, что Terraform предпочёл gRPC
- как заставить generic-функцию работать с методами на pointer receiver, сохранив []T
- почему перестановка полей структуры может уменьшить её размер с 24 до 16 байт
- когда Go может девиртуализировать вызов интерфейса
- что обычно быстрее: atomics, mutex или channels
Хороший пример с layout:
type X struct {
a bool
b bool
c int32
d int64
e bool
}
type Y struct {
d int64
c int32
a bool
b bool
e bool
}
✔️ Госсектор США переходит на коммерческие тарифы OpenAI
OpenAI закрывает пилотную программу для федеральных ведомств, по которой доступ к её технологиям стоил 1 доллар в год. С 1 октября вступит в силу двухлетний контракт - чиновники перейдут на оплату по факту потребления со скидкой 50% от стандартного прайса.
По данным Управления общих служб правительства США, за год пилота доступ к ChatGPT получили 3,5 млн госслужащих, а заявленная экономия бюджета за это время составила 1,4 млрд долларов.
Ожидается, что переход на новые тарифы упростит ведомствам внедрение и использование будущих моделей OpenAI.
bloomberglaw.com
✔️ Palantir и Nebius объединят инфраструктуру
Компании договорились развернуть платформу Palantir AIP на мощностях Nebius AI Cloud. Расчёт на госсектор и корпоративных клиентов с жёсткими требованиями к локализации данных.
Клиенты Palantir получат доступ к европейским GPU-кластерам Nebius для распределённого обучения и инференса, с возможностью разворачивать изолированные ИИ-контуры по стандартам GDPR.
Аналитические и агентные инструменты Palantir теперь работают на дата-центрах Nebius. Основные заказчики - оборонные, финансовые и промышленные предприятия.
nebius.com
✔️ Экс-глава Sora и сооснователь DreamWorks запускают стартап по генерации видео
Билл Пиблз, бывший руководитель проекта Sora в OpenAI, сооснователь DreamWorks Джеффри Катценберг и экс-финансовый директор Dropbox Суджай Джасва запускают компанию для обучения собственных моделей видеогенерации под профессиональную киноиндустрию.
Проект пока привлекает финансирование, идут переговоры с венчурными фондами. Название и целевая оценка не раскрываются.
Техническое направление возглавил Пиблз - один из авторов Diffusion Transformer, архитектуры, лежащей в основе Sora и большинства современных видеогенераторов.
Из OpenAI он ушёл в апреле этого года, чтобы заниматься исследованиями в видеосинтезе вне жёстких продуктовых графиков корпорации.
theinformation.com
✔️ Anthropic следит за анти-ИИ активистами
По данным The American Prospect, служба безопасности Anthropic отслеживает протестные движения и анти-ИИ активистов с помощью инструментов сбора сведений из открытых источников и коммерческой платформы анализа рисков Samdesk.
Согласно расследованию издания, аналитики компании следят за перемещениями участников акций в реальном времени, ведут списки лиц, представляющих интерес, и прогнозируют инциденты рядом с офисами или топ-менеджерами. Собранные сведения передаются в полицию США.
Отдельно The American Prospect указывает на случаи, когда Anthropic сообщала правоохранителям об угрозах от пользователей в переписке с Claude, но отказывалась выдавать логи чатов, ссылаясь на политику приватности.
prospect.org
✔️ Вышло приложение Gemini для Windows
Google выпустила десктопный клиент Gemini для Windows 10 и 11. Интерфейс работает компактным оверлеем поверх активных окон, вызывается сочетанием Alt + Space.
В полноэкранном режиме приложение интегрируется с Gmail и Google Drive, а многоэтапные задачи можно делегировать агенту Gemini Spark.
Кроме работы с текстом, клиент генерирует изображения через Nano Banana и видео через Gemini Omni. Работает в фоне и уже доступно для скачивания.
blog.google
@ai_machinelearning_big_data
#news #ai #ml
Go 1.27: 20 готовых примеров с кодом для продвинутого разработчика
В статье – примеры для разработчика, который уже пишет сервисы на Go: ограничение конкурентности, владение памятью, отмена операций, строгий разбор входных данных и диагностика. Некоторые API появились раньше, но остаются актуальными. Отдельно отмечены возможности Go 1.27.
Каждый блок Go – самостоятельный файл отдельного пакета. Примеры 17–19 нужно сохранить с суффиксом _test.go; остальные – с .go. Для запуска используйте модуль с go 1.27.0 и toolchain Go 1.27.1. Внешние зависимости для компиляции не нужны; пример транзакции предполагает, что приложение передаёт уже настроенный *sql.DB.
https://uproger.com/go-1-27-20-gotovyh-primerov-s-kodom-dlya-prodvinutogo-razrabotchika/
ХОЧЕШЬ ПОВЫСИТЬ ГРЕЙД В 2026 ГОДУ? 🚀
Чтобы стать Senior Golang разработчиком сегодня, нужно не только знать язык программирования и фреймворки. Нужно уметь строить гибкую архитектуру приложения, которую легко тестировать и менять под задачи бизнеса. Стань экспертом в построении гибкой архитектуры приложения!
👉 Стартуем 9 сентября.
Курс ведет действующий архитектор и Principal Engineer Кирилл Ветчинкин.
Ты научишься:
✅ Разбивать приложение на слои в соответствии с Clean Architecture
✅ Формировать Domain Model и применять тактические паттерны DDD
✅ Реализовывать Use Case как Command/Query
✅ Делать синхронные и асинхронные интеграции, не загрязняя ядро приложения
✅ Писать 3 вида тестов для разных слоев приложения
Полная программа ТУТ 👉 https://microarch.ru/courses/ddd/languages/go?utm_source=posev&utm_medium=erid:2Vtzqxks7KR&utm_campaign=1
А главное — ты с нуля разработаешь и запустишь микросервис, который максимально приближен к реальности "Диспетчеризация заказов на курьеров". Это будет крутым проектом в портфолио или основой для рабочих задач.
А еще:
✅ Проверим все домашки
✅ Поддержим в чате
✅ Проведем живые разборы
✅ Ответим на все вопросы
📕 Сертификат об участии по итогам прохождения курса.
🔥 Не откладывай свой рост на потом: https://microarch.ru/courses/ddd/languages/go?utm_source=posev&utm_medium=erid:2Vtzqxks7KR&utm_campaign=1
Реклама. ИП Ветчинкин К.Е. ИНН: 773376451099 Erid: 2Vtzqxks7KR
Утёкшие горутины теперь ищет сборщик мусора. Проверил, где он молчит
Пятьдесят из шестидесяти трёх горутин в моём тестовом сервисе не проснутся никогда. Я узнал это одной командой, без чтения дампов и без гадания по стекам.
19 августа вышел Go 1.27, и в нём из эксперимента вышел профиль goroutineleak. В релиз-ноутах ему отведено полтора абзаца, что для такой штуки маловато. Я собрал тулчейн, написал под него десяток мелких программ и полез в runtime смотреть, как это устроено внутри. Ниже то, что получилось.
https://habr.com/ru/articles/1076654/
🔥 Хочешь быстрее расти в IT? Хватит учиться в одиночку
Окружение решает больше, чем кажется.
Собрал папки и каналы, где можно быстрее влиться в нужное направление, следить за трендами и не вариться в своём пузыре.
AI: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Хакинг: t.me/linuxkalii
DevOps: t.me/DevOPSitsec
Docker: /channel/+90Z5TAyfuNU5YmRi
Golang: t.me/Golang_google
Rust: t.me/rust_code
C++: t.me/cpluspluc
C#: t.me/csharp_1001_notes
Java: t.me/javatg
JavaScript: t.me/javascriptv
React: t.me/react_tg
Frontend: t.me/front
PHP: t.me/phpshka
Android: t.me/android_its
Мобильная разработка: t.me/mobdevelop
Базы данных: t.me/sqlhub
Data Science: t.me/data_analysis_ml
Big Data: t.me/bigdatai
Математика: t.me/data_math
Физика: /channel/+S4hinvO3QI43ZjNi
Kubernetes: t.me/kubernetc
GameDev: /channel/gamedev
Haskell: t.me/haskell_tg
Собеседования и карьера:
DS собеседования: t.me/machinelearning_interview
Python собеседования: t.me/python_job_interview
Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: /channel/addlist/2Ls-snqEeytkMDgy
Папка Frontend: /channel/addlist/mzMMG3RPZhY2M2Iy
Полезное сверху:
ИТ-мемы: t.me/memes_prog
Английский для программистов: t.me/english_forprogrammers
ИИ и технологии: t.me/vistehno
954 ГБ open-source курсов: /channel/+rKBQEMccAA01MTcy
ИТ-книги бесплатно: /channel/addlist/BkskQciUW_FhNjEy
Max Ai: https://max.ru/ai_machinelearning_big_data
Max python: https://max.ru/pythonl
ТЕХНО: https://max.ru/vistehno
Max Go: https://max.ru/Golang_google
Max Linux: https://max.ru/linuxkalii
Devops: https://max.ru/DevOPSitsec
C#: https://max.ru/csharp_ci
C++: https://max.ru/cpluspluc
SQL: https://max.ru/sqlhub
Java: https://max.ru/javatg
Подписывайся на нужные направления и собирай себе ленту, которая реально двигает вперёд.
🐹 В Kubernetes Go-сервис может иметь лимит `2 CPU` и при этом вести себя так, будто у него 64 ядра.
До Go 1.25 GOMAXPROCS по умолчанию ориентировался на CPU хоста, а не на cgroup-лимит контейнера. На ноде с 64 ядрами pod с limits.cpu: "2" мог получить GOMAXPROCS=64.
И вот тут начинается неприятное: Go scheduler создаёт слишком много P, быстро выжигает CPU-квоту контейнера, после чего Linux начинает throttling до следующего CFS-периода. Средняя загрузка CPU при этом может выглядеть нормально, а p99 latency улетает вверх.
До Go 1.25 проблему обычно решали через uber-go/automaxprocs, который считывал cgroup quota и выставлял корректный GOMAXPROCS.
Начиная с Go 1.25 runtime умеет делать это сам: читает CPU limit контейнера и автоматически подстраивает GOMAXPROCS. Причём значение может обновляться, если лимит контейнера изменился.
Но есть ловушка: если в Deployment остался старый GOMAXPROCS=8 или код вручную вызывает runtime.GOMAXPROCS(), новый container-aware механизм уже не сработает.
После миграции стоит проверить:
grep -r "GOMAXPROCS" deploy/ k8s/ helm/
grep -rn "runtime.GOMAXPROCS" .
grep -rn "automaxprocs" .
log.Printf("NumCPU=%d GOMAXPROCS=%d",
runtime.NumCPU(),
runtime.GOMAXPROCS(0),
)
2 CPU на 64-ядерной ноде нормальная картина в Go 1.25+:NumCPU=64 GOMAXPROCS=2
Вам доклады по Go или Java? VK приглашает на митап с двойной начинкой
26 августа VK собирает Go- и Java-инженеров, чтобы прокачать знания.
В программе два трека — Go и Java, по три доклада в каждом.
Трек Go:
• «Компиляция Go в динамическую либу, или как мы ускорили выкатку фичи в два раза, но нам не понравилось», Михаил Кичигин, бэкенд-разработчик, Avito Tech
• «Go-платформа VK: как мы построили единую основу для создания Go-сервисов», Александр Апанасенко, руководитель команды SDK Backend, VK
• «Почтальон от Kubernetes до Palo Alto. Как осуществляется доставка информации об адресах», Дарья Кулькина, бэкенд-разработчик, Точка Банк
Трек Java:
• «Перформанс-трюки в поисковой платформе Ozon», Пётр Портнов, ведущий разработчик среднего поиска, Ozon
• «Архитектура современного движка платёжной системы и переход к новой архитектуре», Игорь Крикунов, технический лидер разработки DBC, Альфа-Банк
• «Переход от федерации S3-кластеров в пользу коммунального и мультитенантного кластера», Кирилл Боблак, ведущий разработчик One-cloud, VK
А ещё будет мастер-класс по прокачке навыка, который сделает вас звездой любого вечера, и афтепати, чтобы обсудить доклады в неформальной обстановке.
Встречаемся в 17:00, начало в 18:00. Участие бесплатное, регистрация обязательна.
🐹 `go func()` без контроля - тихая мина в продакшене
Fire-and-forget выглядит удобно: запустили горутину и сразу вернули ответ. Но под нагрузкой такие задачи начинают бесконтрольно множиться, наследуют уже отменённый request.Context(), теряются при остановке сервера, а одна паника может уронить весь процесс.
Практичный вариант - отправлять фоновые задачи в небольшой worker pool:
- фиксированное число воркеров ограничивает параллелизм;
- буфер создаёт backpressure вместо бесконечного роста горутин;
- recover изолирует панику отдельной задачи;
- каждая задача получает собственный timeout;
- graceful shutdown завершает уже принятые задачи перед выходом.
Важная деталь: сервер нужно остановить раньше пула. Тогда новые запросы больше не создают задачи, а очередь спокойно опустошается.
Но это всё ещё in-memory решение. При падении процесса очередь пропадёт. Для критичных задач, повторных попыток и гарантированной доставки нужен полноценный durable queue.
Главное правило Go остаётся прежним:
не запускайте горутину, пока не понимаете, кто и как её остановит.
https://rednafi.com/go/supervised-fire-and-forget/
#Go #Golang #Concurrency #Backend #Programming
IRIS - open-source автодополнение на Go, которое рисует меню подсказок прямо внутри TTY.
Инструмент индексирует историю команд и aliases, после чего предлагает подходящие команды в реальном времени. Работает на Linux и macOS, включая SSH, Tmux и обычные виртуальные терминалы.
Внутри - один нативный Go-бинарник:
https://github.com/versenilvis/iris
🐧 Нашёл легендарную книгу по внутренностям Linux в открытом PDF
Understanding the Linux Kernel, Third Edition Даниэля Бове и Марко Чезати - почти 950 страниц про то, как Linux устроен под капотом.
Внутри:
• процессы и планировщик
• управление памятью
• системные вызовы
• прерывания и синхронизация
• VFS и файловые системы
• драйверы и I/O
• page cache и IPC
Книга старая и разбирает ядро эпохи Linux 2.6, поэтому для современных деталей одной её недостаточно. Но фундаментальные механизмы ядра объяснены очень глубоко.
И тот самый момент, когда радуешься, что учил английский: такую книгу хочется читать медленно, параллельно открывая исходники и проверяя всё руками.
📖 PDF: https://cs.utexas.edu/~rossbach/cs380p/papers/ulk3.pdf
✔️ Kubernetes - публичная версия идей, на которых Google построила свою инфраструктуру
Google открыла Kubernetes, но код своей внутренней системы управления дата-центрами так и не показала.
Эта система называется Borg. Её начали разрабатывать ещё в начале 2000-х для запуска Search, Gmail, YouTube и других сервисов Google. Borg распределяет задачи по серверам и управляет дата-центрами как единым пулом ресурсов.
Kubernetes появился в 2014 году и унаследовал многие идеи Borg: декларативное управление, планирование контейнеров, автоматическое восстановление и масштабирование.
В 2015 году Google опубликовала научную статью с описанием архитектуры Borg. Схемы и принципы стали публичными, исходный код остался внутри компании.
В итоге весь рынок строит инфраструктуру на Kubernetes, пока Google продолжает использовать собственную закрытую систему.
Лучшие внутренние инструменты редко покидают компании, которые их создали.
Fyne 2.8: Go-интерфейсы получили GPU-шейдеры, нормальный Markdown и новые оконные API
Вышел Fyne 2.8, один из крупнейших релизов кроссплатформенного GUI-фреймворка за последнее время: более 1000 коммитов от 39 разработчиков и изменения в 800+ файлах.
Что добавили:
- GPU-ускоренные Ellipse, BezierCurve, ArbitraryPolygon, Blur, тени и собственные GLSL-шейдеры
- анимацию шейдеров через canvas.NewShaderAnimation
- таблицы, чек-листы, зачёркивание, вложенные списки и цитаты в RichText
- более быструю прокрутку длинных Markdown-документов
- управление позицией окна, режимом Always on Top и полноэкранным выводом на второй монитор
- запланированные уведомления, cache API, multi-touch drag и базовую поддержку accessibility
Минимальная версия теперь Go 1.22. Windows 7/8 и macOS 10.14 больше не поддерживаются.
Обновление:
go get fyne.io/fyne/v2@v2.8.0
go mod tidy