Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
- Telegram Web
Telegram Web
🚀 Go — лучший старт для вашей карьеры в программировании.

🔎 Если вы хотите освоить один из самых востребованных языков разработки, не тратя времени на сложный синтаксис, Go — ваш идеальный выбор. Курс «Golang Developer. Basic» от OTUS — это возможность начать с нуля и научиться создавать эффективные приложения, веб-сервисы и системы.

Что вас ждёт:

— Легкость изучения и быстрая адаптация в Go.

— Применение best practices и реальных инструментов разработки.

— Основы разработки на Go и эффективное использование встроенных инструментов.

📖 Программа обновляется в соответствии с требованиями рынка. Диплом OTUS ценят ведущие IT-компании. Обучение ведут опытные преподаватели, работающие в реальных проектах.

😎 Старт курса — 29 мая.

🔴 Набор почти закрыт! Оставьте заявку и получите скидку на обучение: https://vk.cc/cMcnTS

Скидка 5% по промокоду: Go_05

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
🤡4👍1
🚀 Go-профилирование как у профи!

🔍 Слишком медленно или жрёт кучу памяти? Эта статья расскажет, как:

1️⃣ Включить CPU- и heap-профилирование через runwww.tgoop.com/pprof
2️⃣ Анализировать .prof`-файлы командой `go tool pprof (topN, граф, list)
3️⃣ Оптимизировать парсинг и работу с данными: стриминг вместо загрузки всего в память, замена дорогих функций, упрощение структур
4️⃣ Профилировать живой сервер через net/http/pprof и ловить hot-spots «на ходу»

Результат: время работы сократилось с ~14 до ~7 секунд, память — с 1.7 ГБ до 57 МБ!

👉 Читай подробное пошаговое руководство

👉 @golang_lib
👍4
🚀 Открой для себя идеальный путь к лидерству с карьерным тестом от ОЭЗ «Алабуга»! 🌟

Мечтаете о карьере в крупной компании, где ваш потенциал раскроется на полную? Наш тест поможет вам определить вашу уникальную лидерскую роль. Может быть, именно вы станете тем лидером, который выведет команду на новый уровень?

После прохождения теста вы можете заполнить заявку и получить приглашение на эксклюзивную лидерскую программу. Участие в программе открывает реальные перспективы трудоустройства в ОЭЗ «Алабуга», предоставляя шанс начать путь к профессиональному признанию.

Сделайте первый шаг к своему будущему сегодня! Пройдите тест, подайте заявку и начните строить свою карьеру вместе с нами. 🎯
🤮31🔥1🍾1
Golang: context изнутри

Ни для кого не секрет, что стандартный пакет context широко используется для создания ваших сервисов. В данный момент, не побоюсь этого слова, любой сервис написанный на Go использует контексты повсеместно. Мое мнение таково - если ты хочешь прогрессировать как специалист, ты должен копать все глубже и глубже. Предлагаю рассмотреть context с призмы его работы внутри.

https://habr.com/ru/articles/827544/


Golang: bytes.Buffer изнутри

Работая с кодом на Go, любому специалисту приходилось сталкиваться со стандартным пакетом bytes . Внутри него лежит определение Buffer . Что же это такое?

https://habr.com/ru/articles/827550/


Golang: пакет bytes изнутри

Приветствую, в прошлой статье мы разбирали определение bytes.Buffer изнутри. Теперь хочется обратить внимание на сам пакет bytes. Что за ним скрывается? Каждому разработчику приходилось использовать его будь то в production или локальной разработке. Это достаточно мощный по своим меркам пакет, который предоставляет нам функции для работы с байтами.

https://habr.com/ru/articles/828044/

👉 @golang_lib
👍3🐳1
Вы уверены, что defer всегда безопасен?

В этой статье хочу рассмотреть поведение defer более детально. Данную статья пишется в целях "попробовать себя", а так же, надеюсь, помочь кому-то разобраться с defer.

https://habr.com/ru/articles/914642/

👉 @golang_lib
🤔2👍1
Анти-функциональные опции в Go

Часто в Go можно встретить такую конструкцию:


type Options struct {
Timeout time.Duration
Retries int
Logger *log.Logger
}

func DoSomething(ctx context.Context, opts Options) error {
if opts.Timeout == 0 {
opts.Timeout = 5 * time.Second
}
if opts.Retries == 0 {
opts.Retries = 3
}
if opts.Logger == nil {
opts.Logger = log.Default()
}

// дальше используем opts
}


На первый взгляд — удобно. Но на практике это ведёт к скрытым багам и неочевидному поведению. Почему?

🔸 Проблема 1: нулевое значение может быть валидным

Допустим, я хочу отключить ретраи и передаю Retries: 0. Но функция решает, что "ноль — это дефолт", и перезаписывает его на 3. В итоге получается поведение, которого явно не хотел.

🔸 Проблема 2: смешение ответственности

Функция DoSomething теперь делает больше, чем нужно: она и бизнес-логику выполняет, и значения инициализирует. Это противоречит принципу единственной ответственности и усложняет тестирование.

🔸 Проблема 3: дублирование

Если в коде много таких функций, каждая будет по-своему инициализировать Options. Это ведёт к дублированию и рассыпанной логике дефолтов.


💡 Что делать?

Вынеси дефолтные значения в отдельную функцию:


func DefaultOptions() Options {
return Options{
Timeout: 5 * time.Second,
Retries: 3,
Logger: log.Default(),
}
}


Теперь клиентский код выглядит явно:


opts := DefaultOptions()
opts.Retries = 0 // без ретраев

DoSomething(ctx, opts)


https://rednafi.com/go/dysfunctional_options_pattern/

👉 @golang_lib
👍3🤷‍♂2
🚀 LinDB — это распределённая time-series база данных, написанная на Go, с акцентом на высокую доступность, горизонтальное масштабирование и простую эксплуатацию.

Её архитектура построена по принципу separation of concerns:

Broker — принимает запросы, маршрутизирует их, управляет метаданными.
Storage — хранит и обрабатывает реальные данные, распределённые по шардам.

🔧 Ключевые фичи:

- Полноценный SQL-подобный язык запросов для анализа временных рядов.
- Высокая производительность благодаря column-based storage и адаптивной компрессии.
- Поддержка мониторинга систем с миллионами метрик и лейблов.
- Интеграция с Prometheus через remote write.

LinDB подойдёт, если тебе нужно собирать и анализировать метрики в масштабе целого датацентра или кластера Kubernetes — при этом с минимальными накладными расходами.

https://github.com/lindb/lindb

👉 @golang_lib
👍1
Тестируемый код в Golang

Когда я вижу очередную статью или видеоурок про тестирование кода, я почти уверен, что мне опять расскажут про моки.

Создаётся впечатление, что это самый лучший и правильный способ писать тесты, и вообще, невозможно обойтись без моков. Это не так! Можно писать тестируемый код без моков. Более того, использование моков следует избегать и использовать их только в специфичных случаях.

https://habr.com/ru/companies/skbkontur/articles/917280/

👉 @golang_lib
👍1
🏎 Вы уже сталкивались с «глухими» зависаниями и гонками данных в Go? Настало время взять каналы под контроль!

💻 На открытом уроке «Подводные камни каналов в Go — и как их обходить» 1 июля в 20:00 МСК мы не просто обсудим, что такое каналы:

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

🚀 Представьте: ваш сервис обрабатывает запросы параллельно, без блокировок и утечек. Вы глубоко понимаете, как каналы помогают строить конкурентный код и уверенно внедряете это на любом проекте.

👉 Регистрируйтесь сейчас и получите персональную скидку на курс «Golang Developer. Professional»: https://vk.cc/cNbzNf

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Пишем рантайм Golang на чистом C

Часть №1 | Планировщик Go
Часть №2 | Масштабирование планировщика

источник

👉 @golang_lib
👍4🤔1
🛠 gRPC через HTTP/3

На момент написания статьи HTTP/3 поддерживается 30,4% из топ-10 миллионов сайтов. Такое проникновение на рынок впечатляет, однако, похоже, что весь этот прогресс достигнут почти исключительно благодаря усилиям со стороны браузеров, балансировщиков нагрузки и CDN-провайдеров. А как обстоят дела с бэкендом? Как HTTP/3 чувствует себя там? Увы, ответ не столь воодушевляющий.

Именно поэтому мне стало особенно интересно рассмотреть HTTP/3 в контексте gRPC. Хотя gRPC сыграл ключевую роль в популяризации HTTP/2, то же самое пока нельзя сказать про HTTP/3 — несмотря на то, что он обещает ряд преимуществ, которые, на первый взгляд, идеально подходят для gRPC-сервисов.

В этом посте мы разберёмся, что такое HTTP/3, и исследуем убедительные причины, по которым он отлично вписывается в архитектуру gRPC-приложений. Мы рассмотрим технические улучшения, которые делают HTTP/3 более быстрым, надёжным и безопасным. Но не ограничимся теорией — мы перейдём к практике: на примерах на Go покажем, как настроить и протестировать gRPC-серверы и клиенты, работающие по HTTP/3.

К концу этого пути у вас будет чёткое понимание преимуществ HTTP/3 для gRPC, знаний о доступных инструментах для его использования уже сегодня и представление о том, какое будущее он может принести в разработку API. Пристегните ремни — впереди вас ждёт знакомство с новым поколением сетевых протоколов!

https://kmcd.dev/posts/grpc-over-http3/

👉 @golang_lib
🚀 Микросервисы — это не тренд, а стандарт. А Go — язык, который выбрали для этого стандарта в крупнейших корпорациях. Если вы уже пишете на Go, следующий шаг очевиден.

На курсе от OTUS вы освоите:

🔹 Проектирование микросервисной архитектуры на Go
🔹 Чистая архитектура, CI/CD, gRPC, REST
🔹 Логирование, Kafka, PostgreSQL, мониторинг
🔹 И многое другое!

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

Оставьте заявку прямо сейчас: https://vk.cc/cNjx7m

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
🤮1
2025/07/10 12:59:01
Back to Top
HTML Embed Code: