14942
@notxxx1 - админ @Golang_google - Golang для разработчиков @itchannels_telegram - 🔥лучшие из ит @golangl - chat @golangtests - golang tests @golang_jobsgo - go chat jobs @ai_machinelearning_big_data - AI @data_analysis_ml РКН: clck.ru/3FmtKd
👣 Go Мстители: Битва за Цифровую Вселенную
🔥Баги захватывают мир и только ты можешь их остановить 🔥
Прокачай суперсилу Go-кодинга, сразись с вирусами, дедлоками и гонками данных -
и стань Стражем Цифровой Вселенной.
⚡ В это текстовой игре-кветсе реальные задачи, эпичные битвы и путь от нуля до профи.
Готов спасти код или он уничтожит всё?
⚡️ Начать игру: https://uproger.com/golang-avengers-bitva-za-czifrovuyu-vselennuyu-kvest-igra-dlya-izucheniya-go/
🛠️ Упрощение ошибок STL для C++stlfilt-go — это инструмент командной строки на Go, который фильтрует и упрощает сообщения об ошибках STL из GCC/Clang, делая их более читаемыми. Он поддерживает современный C++ и предлагает подсветку синтаксиса для улучшения восприятия.
🚀Основные моменты:
- Упрощает сложные имена типов и убирает лишние детали.
- Поддерживает C++11/14/17/20.
- Интеграция с CMake и ccache.
- Настраиваемые параметры для вывода ошибок.
📌 GitHub: https://github.com/ozacod/stlfilt-go
#go
Полезная шпаргалка по консольным командам Git 👍
В Git полно команд, и если ты часто их забываешь, эта шпаргалка специально для тебя. В репозитории можно быстро почитать об основных командах и концепциях, а затем одним вальяжным нажатием на Ctrl+C скопировать их.
Приятный бонус — всё написано на русском. Так что сохраняем!
#git #шпаргалка
👣 Connective от x-sushant-x
Это инструмент для построения сервисов и взаимодействия между ними - что-то вроде Lego для распределённых приложений: подключай блоки, соединяй компоненты и получай рабочую систему.
Подходит для экспериментов с архитектурой, интеграции сервисов и быстрых прототипов. Лаконичный код, понятная структура — можно изучать как пример реализации собственной связующей шины.
Стоит посмотреть, если интересуешься микросервисами, event-driven системами или любишь копнуть архитектурные идеи руками.
github.com/x-sushant-x/Connective
🔥 Новый курс на Stepik: Linux - апгрейд твоих скиллов до уровня инженера
Хватит быть “кликавшим по GUI”. Пора понимать систему изнутри.
Что освоишь:
• Bash, grep, sed, awk - инструменты взрослых админов
• Процессы, сеть, права, логирование и починка поломок
• SSH, firewall, systemd, cron, автозапуск сервисов
После курса: Linux перестаёт быть загадкой - ты будешь работать с ним уверенно.
40% скидка на 48 часов
👉 Начни учиться на Stepik.
👣 GoLand 2025.3 вышел - и это обновление реально ускоряет жизнь Go-разработчиков.
Что добавили:
🔹 Анализ утечек ресурсов прямо в IDE - ошибки правятся на лету
🔹 ИИ-помощники: Junie и Claude Agent помогают писать и править код
🔹 Встроенная поддержка Terraform без плагинов
🔹 Удобный мониторинг Kubernetes-процессов
Подробности — jetbrains.com/go/whatsnew/
Docker Volumes & Data Persistence
→ Контейнеры по умолчанию временные, их данные исчезают после остановки или удаления.
→ Docker даёт механизмы для постоянного хранения, чтобы данные переживали перезапуски.
→ Самый надёжный способ - использовать Docker volumes.
1. Почему важна устойчивость данных
→ Контейнеры часто пересоздаются при обновлениях и масштабировании.
→ Без персистентности пропадут логи, базы данных, загрузки пользователей, конфиги.
→ Docker volumes решают это, вынося данные за пределы файловой системы контейнера.
2. Варианты хранилищ в Docker
a) Volumes
→ Управляются Docker.
→ Хранятся в /var/lib/docker/volumes/.
→ Не зависят от контейнеров.
→ Лучший выбор для БД и долгоживущих данных.
b) Bind Mounts
→ Привязывают локальную директорию хоста к контейнеру.
→ Удобно в разработке.
→ Менее переносимые.
c) tmpfs Mounts
→ Данные только в памяти.
→ Очень быстрые, но непостоянные.
→ Для временных и чувствительных данных.
3. Что такое Docker Volume
→ Это область постоянного хранения, управляемая Docker.
→ Не удаляется при удалении контейнера.
→ Можно безопасно шарить между контейнерами.
Создать volume:
docker volume create mydata
Использовать:docker run -v mydata:/app/data nginx
Посмотреть:docker volume inspect mydata
4. Типы Volumes
a) Named Volumes
→ Создаются вручную.
→ Чистая изоляция от файлов системы хоста.
→ Лучший вариант для продакшена.
b) Anonymous Volumes
→ Без имени.
→ Могут удаляться вместе с контейнером.
→ Для временных задач.
5. Преимущества Docker Volumes
→ Данные переживают рестарты.
→ Легко бэкапить и переносить.
→ Работают при обновлении контейнеров.
→ Можно шарить между контейнерами.
→ Docker оптимизирует хранение под производительность.
6. Bind Mounts
→ Позволяют смонтировать директорию хоста:
docker run -v /host/path:/container/path myapp
→ Удобно в разработке (горячая перезагрузка кода).
→ В продакшене использовать аккуратно.
7. Persistency в Docker Compose
Compose автоматически управляет volumes.
Пример:
services:
db:
image: postgres
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
👣 Golang: задача про слайсы и append: угадай вывод программы
Вот хитрая задача по Go - идеально, чтобы проверить, насколько хорошо ты понимаешь устройство слайсов, capacity и поведение append.
Подумай, что именно выведет программа и почему.
Читать полностью…
package main
import "fmt"
func main() {
a := []int{10, 20, 30, 40}
b := a[:2] // [10 20]
c := append(b, 99) // что происходит с a?
a[1] = 777 // влияет ли это на b и c?
c = append(c, 555) // а теперь?
fmt.Println("a:", a)
fmt.Println("b:", b)
fmt.Println("c:", c)
Как создать эффективное REST API или оптимизировать его? Что сделать для ускорения Redis? Какие секреты скрываются под капотом Android? Что делать при конфликте стилей в микрофронтендах? Что поможет провести продуктивное кросс-ревью в команде?
Своим опытом в самых разных сферах делятся frontend-разработчики, системные аналитики, разработчики под Android и iOS из команды ПСБ.
Читайте в блоге ПСБ на Хабре, делитесь в комментариях своим мнением и опытом!
⚡ Git Cheatsheet - коротко и по делу
Настройкаgit config --global user.name "Name" — задать имя git config --global user.email "email" — задать почту git config --list — показать настройки
Стартgit init — создать репозиторий git clone url — клонировать репо
Стейджинг и коммитыgit status — статус git add . — добавить все изменения git reset file — убрать из стейджа git commit -m "msg" — коммит git commit --amend — исправить последний коммит
Веткиgit branch — список git branch name — создать git checkout -b name — создать и перейти git branch -d name — удалить
Merge и Rebasegit merge branch — слить ветку git merge --abort — отменить git rebase branch — перебазирование
Историяgit log --oneline — компактная история git log --graph --all — граф git diff — показать изменения
Откатgit restore file — вернуть файл git reset --soft HEAD~1 — откатить коммит, сохранить изменения git reset --hard HEAD~1 — откатить и удалить изменения git clean -f — удалить лишние файлы
Удалённые репозиторииgit remote -v — список git push origin branch — запушить git pull — получить изменения git fetch — только забрать
Тегиgit tag — список git tag name — создать git push origin --tags — отправить теги
Stashgit stash — сохранить изменения git stash list — список git stash apply — применить
Поиск и анализgit blame file — кто менял строки git grep "text" — поиск git bisect — бинарный поиск бага
Продвинутоеgit cherry-pick commit — взять коммит git revert commit — отменить коммит через новый git submodule add url — добавить сабмодуль
Полезно сохранить под рукой.
👣 Go-tool для оптимизации структур по памяти
Инструмент betteralign анализирует ваш Go-код и автоматически определяет структуры, которые занимают больше памяти из-за неэффективного порядка полей. Он показывает, сколько памяти можно сэкономить, и может сам отсортировать поля в оптимальном порядке.
Что умеет betteralign
- Находит структуры, где изменение порядка полей уменьшит память и уберёт паддинги
- Показывает размер структуры и количество pointer bytes (важно для работы GC)
- Может автоматически отсортировать поля (`-apply`), сохраняя комментарии
- Пропускает автогенерируемые файлы, тесты и структуры с пометкой betteralign:ignore
Почему это полезно
- Экономит память при работе с большим количеством структур
- Улучшает эффективность кода без ручного анализа
- Подходит для высоконагруженных и производительных Go-приложений
Как использовать
go install github.com/dkorunic/betteralign/cmd/betteralign@latest
betteralign ./...
# автоматическое исправление:
betteralign -apply ./...
👣 Циклы в Go через for и range
В Go все циклы строятся через одно ключевое слово - for.
Чтобы пройтись по слайсу, используй конструкцию for range, она сразу даёт доступ к элементам без лишнего шума.
Просто, читаемо и удобно для повседневных задач.
В Go все циклы строятся через одно ключевое слово - for:
Читать полностью…
Циклы в Go через for и range
names := []string{"Alice", "Bob"}
for _, name := range names {
fmt.Println(name)
}
👣 Как разработчик прошёл своё первое собеседование на 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 — его опыт показывает, что выбраться можно. Точно так же.
Читать
🔍Тестовое собеседование с Go TeamLead из американского FinTech в этот четверг
20 ноября(в четверг!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Go-разработчика.
Как это будет:
📂 Дмитрий Дорофеев, Go TeamLead в американском FitTech Truv Inc, ex-VK, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Дмитрий будет комментировать каждый ответ респондента, чтобы дать понять, чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Дмитрию
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Go-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир →@shortcut_go_bot
Реклама.
О рекламодателе.
🔥 Подборка полезных ресурсов для программистов.
Здесь ты найдёшь всё это - коротко, по делу и без воды.
Пока другие ищут, где “подглядеть решение”, ты уже используешь самые свежие инструменты!
AI: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Devops: t.me/DevOPSitsec
Собеседования DS: t.me/machinelearning_interview
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_1001_notes
Java: t.me/java_library
Базы данных: t.me/sqlhub
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: /channel/gamedev
Haskell: t.me/haskell_tg
Физика: t.me/fizmat
💼 Папка с вакансиями: 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
Папка Linux:/channel/addlist/w4Doot-XBG4xNzYy
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: /channel/addlist/BkskQciUW_FhNjEy
Сохрани себе, чтобы не потерять!
🚀 Go 1.26 ускоряет работу с памятью
В новом релизе Go команда сильно оптимизировала выделение памяти для малых объектов (1–512 байт).
Теперь рантайм использует специализированные версии allocator’а и таблицы переходов — чтобы быстрее подбирать нужную функцию под размер объекта, а не полагаться на одну универсальную реализацию.
📈 Что это даёт
- до 30% экономии на выделении маленьких объектов;
- примерно ~1% ускорения в реальных программах, где много аллокаций (что на масштабе — очень ощутимо).
Техническая деталь: компилятор всё ещё вызывает общий mallocgc, но на этапе выполнения он перенаправляется к новым специализированным функциям.
При необходимости поведение можно отключить флагом сборки:
GOEXPERIMENT=nosizespecializedmalloc.
Go продолжает аккуратно выжимать производительность не ломая экосистему - маленькие изменения, большой эффект.
@golang_interview
❓ Что выведет программа?
И объясни, почему вывод - НЕ тот, который ожидает большинство 🙂
package main
import "fmt"
func main() {
s := []int{1, 2, 3, 4}
t := s[:2] // [1 2]
u := s[2:] // [3 4]
// Изменяем через t
t = append(t, 9)
// Изменяем через u
u[0] = 99
fmt.Println("s:", s)
fmt.Println("t:", t)
fmt.Println("u:", u)
}
Лёгкие и составные примитивы для надёжных синхронных и конкурентных конвейеров в Go
rop3 - это набор простых, но мощных строительных блоков для создания устойчивых конвейеров обработки данных в Go. Библиотека основана на паттерне Railway Oriented Programming, который помогает чётко моделировать последовательные и параллельные этапы обработки с удобной обработкой ошибок.
Вместо того чтобы плести сложные цепочки if err != nil, rop3 предлагает выразительные примитивы, которые легко комбинируются. Благодаря этому код становится чище и понятнее, а обработка ошибок и логика переходов перестаёт быть источником багов.
При этом поддерживается как синхронная, так и конкурентная обработка данных — всё это без тяжеловесных фреймворков и скрытой магии.
github.com/ib-77/rop3
🚀 Spreak - мощный и удобный инструмент для перевода в Go
Если вы пишете приложения на Go и хотите добавить поддержку нескольких языков - библиотека Spreak упрощает эту задачу.
🔹 Поддерживает gettext-совместимые каталоги
🔹 Работает с plural-формами и контекстом
🔹 Позволяет хранить переводы в файлах или embed'ить их в бинарь
🔹 Имеет удобный API для извлечения сообщений и форматирования
Spreak помогает избежать ручного хардкода строк, оставаясь совместимым с существующими инструментами локализации.
🔗 GitHub: https://github.com/vorlif/spreak
👣 gdu - быстрый консольный анализатор диска, написанный на Go.
Он сканирует директории и показывает, что именно съедает место, работая особенно шустро на SSD за счёт параллельной обработки. Есть TUI-интерфейс: можно стрелками ходить по каталогам, сортировать по размеру и удалять лишнее прямо из программы.
Установка максимально простая - есть готовые бинарники на GitHub, пакеты в репозиториях (AUR, Homebrew, Snap и др.), так что поставить и проверить свои диски можно за пару минут.
https://github.com/dundee/gdu
🔍Тестовое собеседование с Go-разработчиком из Яндекса
11 декабря(уже в четверг!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Go-разработчика.
Как это будет:
📂 Владислав Кирпичов, Go-разработчик в Яндексе, ex-VK, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Влад будет комментировать каждый ответ респондента, чтобы дать понять, чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Владу
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Go-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_go_bot
Реклама.
О рекламодателе.
⚡️ CACHING STRATEGIES В СИСТЕМНОМ ДИЗАЙНЕ
Кэширование хранит часто используемые данные в быстром слое, обычно в памяти.
Это снижает нагрузку на базу данных и ускоряет ответы системы.
Один из самых эффективных способов улучшить производительность, масштабируемость и сократить расходы.
ПОЧЕМУ КЭШИРОВАНИЕ ВАЖНО
Экономит запросы к базе
Уменьшает задержку
Справляется с высоким количеством чтений
Укрепляет стабильность при нагрузках
Снижает стоимость инфраструктуры
1) CLIENT-SIDE CACHING
Хранение данных в браузере пользователя.
Используются cookies, localStorage, service workers.
Меньше повторных загрузок статических ресурсов.
2) CDN CACHING
Статические файлы лежат на глобальных edge-серверах.
CSS, JS, изображения, видео, шрифты.
Меньше задержка у глобальных пользователей и разгрузка основного сервера.
3) APPLICATION-LEVEL CACHING
Кэш внутри приложения.
Например, структуры в памяти вроде LRU cache.
Очень быстро, но работает в рамках одного сервера.
4) DISTRIBUTED CACHING
Общий кэш для множества серверов.
Инструменты: Redis, Memcached.
Подходит для горизонтального масштабирования и устраняет дублирование кэша.
5) DATABASE QUERY CACHING
Базы хранят результаты частых запросов.
MySQL Query Cache, Postgres внутренний кэш, MongoDB WiredTiger.
Ускоряет повторные чтения.
6) WRITE-BEHIND
Запись идет в кэш, а в базу — асинхронно.
Снижает задержку записи.
Подходит для систем с высокой нагрузкой на запись.
7) WRITE-THROUGH
Записи попадают в кэш и базу одновременно.
Гарантирует консистентность.
Немного медленнее из-за двойной записи.
8) CACHE-ASIDE
Приложение сначала проверяет кэш.
Если промах — идет в базу, затем помещает результат в кэш.
Гибкий и самый популярный вариант.
9) READ-THROUGH
Приложение всегда читает из кэша.
При промахе сам кэш получает данные из базы.
Кэш всегда остается обновленным.
10) TTL И ПОЛИТИКИ ИСТЕЧЕНИЯ
Каждая запись имеет срок жизни.
TTL, LRU, LFU, FIFO — разные режимы очистки данных.
11) INVALDATION
Ручное удаление ключей, удаление по шаблону, автоматическое истечение по TTL или лимиту памяти.
12) MULTI-LAYERED CACHING
Несколько уровней сразу: браузер, CDN, распределенный кэш, кэш приложения.
Полезно для глобальных систем с большим трафиком.
Совет
Кэширование помогает добиться высокой скорости, низкой нагрузки на базу и хорошей масштабируемости.
Стратегию нужно подбирать исходя из размеров системы, интенсивности запросов и требований к консистентности.
👣 errors-AsType: идея, которая делает работу с ошибками в Go проще
В Go, чтобы проверить тип ошибки, обычно используют errors.As, но это требует заводить временные переменные и делает код громоздким. В статье предлагается более удобный подход - обёртка AsType, которая сразу возвращает ошибку нужного типа.
Зачем это нужно:
• Код становится короче: никаких var e *MyError заранее.
• Проверка выглядит чище:
if e := errors.AsType[*MyError](err); e != nil { … }
• Удобно, когда нужно последовательно обработать несколько типов ошибок.
Идея не ломает существующий подход, а делает его проще и безопаснее - меньше шаблонного кода, больше читаемости.
Кому полезно: всем, кто пишет стабильный продакшн-код на Go и работает с elaborate-ошибками.
https://antonz.org/accepted/errors-astype/
🖥 Понятное объяснение Docker Networking Models
Docker поддерживает несколько сетевых моделей - от полной изоляции до работы напрямую с сетью хоста. Выбор нужного варианта влияет на безопасность, производительность и масштабируемость приложения.
1) Bridge (по умолчанию)
→ Docker создаёт виртуальный мост docker0.
→ Контейнеры общаются друг с другом по внутренним IP.
→ Чтобы получить доступ извне, нужно пробрасывать порты (-p 8080:80).
→ Идеально для локальной разработки и одиночных хостов.
2) Host
→ Контейнер использует сетевой стек хоста напрямую.
→ Нет виртуальной сети и NAT - максимум производительности.
→ Минимальная изоляция.
→ Применяется для мониторинга, логгинга, высокоскоростных сервисов.
3) None
→ У контейнера вообще нет сети.
→ Нет доступа ни к интернету, ни к другим контейнерам.
→ Используется для задач, где требуется полная изоляция.
4) Overlay
→ Сеть, работающая поверх нескольких хостов или в Docker Swarm.
→ Контейнеры на разных серверах могут общаться как будто они в одной сети.
→ Основа для распределённых микросервисных систем.
5) Macvlan
→ Каждый контейнер получает свой MAC-адрес и «видится» как отдельная машина.
→ Контейнеры становятся полноценными участниками вашей физической сети.
→ Полезно, когда контейнеры должны быть напрямую доступны по LAN.
6) IPvlan
→ Похоже на Macvlan, но проще управляет IP-адресами на уровне L3.
→ Хорошо подходит для масштабных систем с жёсткими требованиями к маршрутизации.
Дополнительно:
Сервис-дискавери
→ Внутри Docker работает собственный DNS - контейнеры могут общаться по имени сервиса, а не по IP.
Проброс портов
→ Стандартный вариант доступа извне:
-p 8080:80
Драйверы сетей
→ bridge
→ host
→ overlay
→ macvlan
→ ipvlan
Как выбрать модель?
→ Bridge — одиночный хост, локалка.
→ Host — максимум скорости, минимум изоляции.
→ Overlay — распределённые микросервисы.
→ Macvlan — нужны «настоящие» сетевые адреса.
→ None — полная изоляция без сети.
Правильный выбор сетевой модели Docker напрямую влияет на безопасность, структуру архитектуры и производительность. Чтобы уверенно работать с контейнерами и микросервисами - эти модели нужно знать.
🌀 Vuego - шаблонизатор для Go, основанный на модели документа (DOM).
Вдохновлён синтаксисом и поддерживает подмножество его возможностей.
👉 GitHub-репозиторий: https://github.com/titpetric/vuego
#golang
⏬ Привет, это Yandex for Analytics
Предлагаем размяться и проверить свои навыки. Ответы есть, но подглядывать во время решения — неспортивно ⬇️
🔵 Задача 1. Вспоминаем теорию вероятностей
🔵 Задача 2. Теорема Байеса
🔵 Задача 3. Базовая база теории игр
🔵 Задача 4. Тренируем SQL
🔵 Задача 5. Честная математическая статистика
🔵 Задача 6. Что-то на бизнесовом
💠 Скоро вернёмся с новыми задачами. А пока делитесь своими решениями в комментариях!
Подписывайтесь:
💬 @Yandex4Analytics
🚀 Portal - open-source хостинговая сеть без разрешений, которая превращает локальный проект в публичный веб-эндпоинт
Portal - это интересный инструментарий на Go, который позволяет развернуть ваш локальный сервис в интернет без сложных настроек.
По сути, это сеть открытого хостинга, где вы можете:
- поднять любой локальный проект и сразу получить публичный URL
- делиться API, микросервисами или демо без деплоя
- проксировать запросы с минимальной задержкой
- использовать современный p2p-подход без централизованного контроля
Идеально для быстрого прототипирования, демонстраций, внутренних сервисов, интеграций и тестирования.
Открыть локалхост в интернет стало ещё проще.
Если вы работаете с Go или часто делаете демо — попробуйте Portal.
https://github.com/gosuda/portal
#golang
Безопасные часовые пояса в Go благодаря типам
Matthew Halpern показал интересный подход к работе со временем в Go: библиотека Meridian делает часовой пояс частью *типа*. Это решает давнюю боль - потерю таймзоны при передаче time.Time между функциями, БД и сервисами.
Зачем это нужно: стандартный time.Time не хранит исходный часовой пояс. Из-за этого легко получить баги: некорректные дедлайны, неверные расчёты, ошибки в биллинге. Meridian решает проблему через generics:
Time[TZ] — это время, привязанное к конкретной зоне.
Например: et.Time (America/New_York), pt.Time (America/Los_Angeles), utc.Time и т.д.
Что это даёт:
- компилятор не позволит смешать ET и PT случайно
- подпись функции сама объясняет, в каком поясе она работает
- преобразования зон делаются явно: pt.FromMoment(etTime)
- внутреннее хранение остаётся в UTC, но тип всегда «знает», какая зона ему принадлежит
Операции между разными зонами запрещены — если нужно сравнение, используется общий интерфейс Moment с получением UTC().
Итог: Meridian превращает таймзоны из хаоса в строгую систему типов. Ошибки ловятся на этапе компиляции, а код становится самодокументируемым.
Источник: matthewhalpern.com/posts/golang-type-safe-timezones
🚀 Нужен готовый набор утилит для облачных Go-сервисов?
Обрати внимание на репозиторий cloud-native-utils от Andy Geiss — это коллекция высокопроизводительных модульных инструментов для тестирования, обеспечения транзакционной консистенции, повышения эффективности, безопасности и стабильности облачных приложений на Go.
1
💡 Рекомендовано тем, кто строит облачные системы на Go и хочет быстрее запустить надёжную инфраструктуру.
https://github.com/andygeiss/cloud-native-utils
🖥 Работа со строками и рунами в Go — откройте внутреннюю механику языка
Как Go хранит текст? Почему одна буква может занимать четыре байта, а строки иногда «ломаются» при итерации? Эти мелочи отличают новичка от разработчика, который действительно понимает язык.
📆17 ноября в 20:00 МСК на открытом уроке разберём, как устроены строки и руны в Go, что происходит «под капотом» при работе с кодировками и как писать корректный, быстрый код для обработки текста. Вместе с преподавателем напишем живые примеры, разберём частые ошибки и объясним, как их избежать.
➡️ Урок проходит в преддверие старта курса «Golang Developer. Basic». Все участники вебинара получат скидку на обучение: https://otus.pw/3U9s/?erid=2W5zFHbtZQt
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.