Golang Books
17K subscribers
334 photos
6 videos
335 files
308 links
Библиотека Golang разработчика

По всем вопросам- @haarrp

@Golang_google - Golang

@golangl - golang chat

@GolangJobsit - golang channel jobs

@golangtests golang tests

@itchannels_telegram - 🔥лучшие ит-каналы

№ 5032829002
Download Telegram
Forwarded from Golang
👣 В Go 1.26 добавят в net.Dialer новые сетевые методы с поддержкой контекста.

Они объединяют эффективность существующих высокоуровневых функций набора соединений с возможностью отмены через Dialer.DialContext — то есть будут быстрее и надёжнее при работе с сетевыми вызовами.

Для тех случаев, когда вы точно знаете сеть (TCP, UDP, IP или Unix-сокет) и хотите:

- минимальные расходы (без лишнего разрешения адресов)
- контроль таймаута/отмены через context
- современный тип адресов из netip


В целом это шаг к более гибкому, эффективному и контролируемому сетевому подключению в Go.

Пример использования:

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

raddr := netip.MustParseAddrPort("127.0.0.1:12345")
conn, err := d.DialTCP(ctx, "tcp", netip.AddrPort{}, raddr)
if err != nil { log.Fatalf("Failed to dial: %v", err) }
defer conn.Close()


https://antonz.org/accepted/net-dialer-context/

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81🔥1
🔥 Подборка полезных ресурсов для программистов.

Здесь ты найдёшь всё это - коротко, по делу и без воды.
Пока другие ищут, где “подглядеть решение”, ты уже используешь самые свежие инструменты!

AI: t.iss.one/ai_machinelearning_big_data
Python: t.iss.one/pythonl
Linux: t.iss.one/linuxacademiya
Devops: t.iss.one/DevOPSitsec
Собеседования DS: t.iss.one/machinelearning_interview
C++ t.iss.one/cpluspluc
Docker: t.iss.one/DevopsDocker
Хакинг: t.iss.one/linuxkalii
Data Science: t.iss.one/data_analysis_ml
Javascript: t.iss.one/javascriptv
C#: t.iss.one/csharp_1001_notes
Java: t.iss.one/java_library
Базы данных: t.iss.one/sqlhub
Python собеседования: t.iss.one/python_job_interview
Мобильная разработка: t.iss.one/mobdevelop
Golang: t.iss.one/Golang_google
React: t.iss.one/react_tg
Rust: t.iss.one/rust_code
ИИ: t.iss.one/vistehno
PHP: t.iss.one/phpshka
Android: t.iss.one/android_its
Frontend: t.iss.one/front
Big Data: t.iss.one/bigdatai
МАТЕМАТИКА: t.iss.one/data_math
Kubernets: t.iss.one/kubernetc
Разработка игр: https://t.iss.one/gamedev
Haskell: t.iss.one/haskell_tg
Физика: t.iss.one/fizmat

💼 Папка с вакансиями: t.iss.one/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.iss.one/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.iss.one/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.iss.one/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://t.iss.one/addlist/mzMMG3RPZhY2M2Iy
Папка Linux:https://t.iss.one/addlist/w4Doot-XBG4xNzYy

😆ИТ-Мемы: t.iss.one/memes_prog
🇬🇧Английский: t.iss.one/english_forprogrammers
🧠ИИ: t.iss.one/vistehno

🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://t.iss.one/addlist/BkskQciUW_FhNjEy

Сохрани себе, чтобы не потерять!
1
Sloggo - лёгкий и быстрый сборщик логов на Go по стандарту RFC 5424

Если вам нужен простой, минималистичный и быстрый инструмент для централизованного сбора логов — без тяжёлых ELK, Loki или огромных кластеров — Sloggo выглядит очень достойным вариантом.

Что делает Sloggo:

- принимает логи по TCP и UDP в формате RFC 5424
- хранит их в DuckDB — быстрой встроенной базе данных без лишней настройки
- даёт чистый и удобный веб-интерфейс для поиска и фильтрации
- весит всего ~10 МБ и работает как один процесс
- запускается за секунды, подходит для малых и средних систем

Где полезно:

- домашние серверы и дев-окружения
- небольшие продовые сервисы, которым не нужна тяжёлая лог-инфраструктура
- быстрый сбор логов во время отладки
- системы с минимумом ресурсов (VPS, контейнеры)

https://github.com/phare/sloggo/
👍114😁4🔥3
👣 Как разработчик прошёл своё первое собеседование на Senior Backend (Go) благодаря Educative - история от третьего лица

Долгое время он был «уверенным мидлом».
Умел писать фичи, работал с Go, microservices, немного разбирался в распределённых системах.
Но каждый раз, когда он пытался выйти на senior-позицию, всё заканчивалось одинаково:

Он умел делать, но не умел объяснять.

- System design?
- Trade-off'ы?
- Архитектура распределённых систем?
- Конкурентность?
- Сетевые протоколы?

На собеседованиях он будто терял почву под ногами.
Знания были, но целостной картины - нет.

В какой-то момент он решил изменить ситуацию.
И вот путь, который реально сработал — и привёл его к первому офферу Senior Backend Engineer (Go).

Что стало переломным моментом

Он не хотел буткемпов, марафонов и длинных лекций.
Ему нужны были:
- чёткие, короткие объяснения
- визуализации
- практика
- реальные архитектурные примеры


И именно там у него впервые сложилась цельная картина системной архитектуры.

Ниже - точная последовательность курсов, которые он прошёл.

1. Grokking the System Design Interview
Этот курс дал ему главное — структуру мыслей.

До: он уходил в детали и путался.
После: действовал по чёткому фреймворку:
1. Уточнение требований
2. Компоненты
3. Масштабирование
4. Trade-off’ы

В интервью ему особенно помогли примеры из курса:
- rate limiting
- sharding
- caching
- consistent hashing
- message queues
- fan-out patterns

Это был фундамент, который дал более половины успеха.

2. Grokking Modern System Design
Этот курс научил его думать как инженер распределённых систем.

Он разобрал:
- push vs pull модели
- когда выбирать gRPC или REST
- backpressure
- идемпотентные консьюмеры
- стратегии retry и DLQ
- eventual vs strong consistency

Для Go-разработчика это оказалось очень ценным.

3. System Design: Scalability & Distributed Systems Guide
Курс поднял его "архитектурный словарь" на новый уровень.

Он научился говорить как сеньор:
Не только *что* сделать, но *почему*.

Интервьюеры особенно впечатлялись фразами вроде:

> «Здесь нужен write-ahead log для гарантий durability.»
> «Это thundering herd, понадобится request coalescing.»

Именно такие ответы добавляют вес.

4. Concurrency in Go
Поскольку позиция была Go-ориентированной, ему нужно было подтянуть конкурентность.

Курс дал ему:
- worker pools
- пайплайны
- управление context
- каналы vs мьютексы
- deadlocks, races
- архитектуру rate limiters

На интервью ему встретился вопрос:
> «Спроектируй rate limiter в Go.»
Он ответил спокойно — потому что уже делал это в курсе.

5. Grokking the Behavioral Interview
Он думал, что поведенческие вопросы — вторичны.
Оказалось — нет.

Этот курс помог ему собрать истории про:
- конфликты
- провалы
- лидерство
- сложные решения
- ответственность
- коммуникацию

Он подготовил несколько универсальных историй и использовал их в разных компаниях.

Его стратегия подготовки

1) Один system design в день
Тренировал структуру, а не заучивал решения.

2) Один backend-топик в день
Например:
- circuit breaker
- sharding
- replication
- load balancing
- consensus

3) Go: конкуренция, профилирование, память
Углубление того, что отличает senior Go engineer.

4) Поведенческие ответы
Отточенные истории.

5) Мок-интервью
Чтобы снять стресс и уверенно излагать мысли.

На финальном интервью его попросили:
> «Спроектируй систему реальной-временной доставки событий (похожа на pub/sub).
> Нужны масштабируемость и надёжность.»

Несколько месяцев назад он бы провалился.
А теперь спокойно разобрал:
- partitions
- consumer groups
- горизонтальное масштабирование
- backpressure
- retry logic
- идемпотентность
- мониторинг

Итог

Он наконец выучил то, что обычно знают senior-инженеры:

- системное мышление
- понимание распределённых систем
- объяснение архитектурных решений
- trade-off’ы
- чёткая коммуникация

Если кто-то застрял между middle и senior — его опыт показывает, что выбраться можно. Точно так же.

Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
9🤯3👍2🔥2
👣 Учебник Go (Golang) для начинающих

Главная идея Go минимализм: меньше «магии», больше понятного и предсказуемого кода. Поэтому он быстро осваивается, даже если вы только начинаете путь в программировании.

В этом учебнике мы шаг за шагом разберём основные конструкции Go, научимся писать программы, работать с пакетами и запускать простые сервисы. Всё - практично, лаконично и без лишней сложности.

https://uproger.com/uchebnik-go-golang-dlya-nachinayushhih/

Видео: https://www.youtube.com/playlist?list=PLysMDSbb9HcxpAb8lhnMaRpX890wSLz66
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍6😁3🥰2😢1
Media is too big
VIEW IN TELEGRAM
⚡️ Внутренняя Механика Планировщика Go - как реально работает G-P-M под капотом

Go стал популярным благодаря горутинам - быстрым и лёгким. Но настоящая сила в планировщике, который умеет выполнять миллионы задач на ограниченном количестве потоков ОС.

Разбираем устройство модели G-P-M 👇

1. Три основных сущности: G, P, M
- G — горутина: стек, состояние, контекст.
- P — логический процессор, который содержит очередь готовых горутин.
- M — поток ОС, который выполняет горутины из очереди P.

P распределяет работу.
M выполняет её.
G — сама работа.

2. Очереди и балансировка
У каждого P своя локальная очередь.
Если P простаивает, он забирает задачи у других (work stealing).
Это стабилизирует нагрузку и снижает задержки.

3. Блокировки и парковка
Когда горутина блокируется:
- её паркуют
- поток освобождают
- P поднимает другую готовую горутину
- когда syscall завершён, горутину возвращают в очередь

Так минимизируются блокировки потоков ОС.

4. Горутины уступают время сами

Создание новой G, операции с каналами или вызов runtime.Gosched() позволяют планировщику переключить выполнение.

5. Роль GOMAXPROCS
GOMAXPROCS определяет количество P.
Обычно равно числу CPU.
Увеличение сверх количества ядер не ускоряет работу.

6. Почему горутины такие дешёвые?
- стартовый стек около 2 КБ
- автоматическое расширение и сжатие
- быстрые переключения
- минимальная зависимость от ОС

Поэтому легко запускать сотни тысяч и даже миллионы горутин.

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

Эта архитектура - одна из главных причин успеха Go в высоконагруженных системах.
👍17🔥76🤔1
😎 Найм в компанию, а не в команду: как это работает

Устроиться на работу в компанию, попробовать поработать в разных командах внутри, чтобы выбрать ту самую — звучит как отличный план. В Яндекс Еде это стандартная практика: через буткемп разработчики пробуют разные проекты на практике, чтобы найти тот, где им действительно интересно.

Олег Табота, руководитель команды общих компонентов в Яндекс Еде, написал подробную статью о том, как это работает на практике.

Что внутри:
💠 Как сайдкары избавляют от рутины в поддержке 400+ микросервисов.
💠 Хронология инцидента: что происходит, когда новичок роняет прод.
💠 Как устроены технические процессы, RFC и выбор задач.

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

🔗 Читать статью
👍43😁2
✔️ Как Go-компилятор устроен изнутри: Unified IR простыми словами**

Go перешёл на единую внутреннюю форму представления кода - Unified IR. Это тихое, но очень важное изменение, которое делает компилятор проще, чище и мощнее.

🔜 В чём суть Unified IR

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

🔜 Зачем так делать

- чтобы избавиться от дублирования логики в разных частях компилятора
- чтобы упрощать такие сложные вещи как generics, инлайнинг и импорт пакетов
- чтобы компилятор стабильно обрабатывал огромные проекты и зависимости

🔜**Как это работает**

1. При компиляции пакета
Go берёт AST → сериализует его → восстанавливает уже как Unified IR → оптимизирует и генерирует код.

2. При импорте зависимостей
Компилятор читает `.pkg`-файлы:
- типы
- функции
- константы
- тела функций, доступные для инлайнинга

И всё это в едином бинарном формате.

🔜 Что хранится внутри Unified IR

Формат разбит на логические секции:
- строки (имена, пути)
- типы
- объекты (функции, переменные)
- тела функций
- метаданные, позиции, generics

Это компактно, быстро и даёт компилятору полную картину.

🔜 Почему это важно

Unified IR стал фундаментом под generics, кросс-пакетный инлайнинг и дальнейшие оптимизации.
Go-компилятор теперь проще развивать, а экосистема — быстрее и производительнее.

https://internals-for-interns.com/posts/go-compiler-unified-ir/
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍4
👣 The Secret Life of Go Structs: как устроены структуры в Go и почему они важны

В статье объясняется, что такое struct в Go и почему этот простой механизм лежит в основе большинства пользовательских типов.

Главное:

- struct позволяет объединять связанные данные в один объект.
Пример:
type Person struct { Name string; Age int }
- Если создать структуру без инициализации, её поля получают нулевые значения: пустые строки, 0, false и т.п.
- Можно сразу задать значения:

p := Person{Name: "Alice", Age: 30}

Структуры — удобный способ описывать сущности: книги, пользователей, заказы, конфиги и любые другие объекты.

struct + методы в Go - аналог классов, но проще и без наследования. Логика добавляется через методы внешне.

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

https://dev.to/aaron_rose_0787cc8b4775a0/the-secret-life-of-go-structs-3aj9
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍2🥰2🤯2🔥1