Category : golang

golang
Разгоняем Go TLS до 100 Gbps с сервера: опыт Kinescope

Современные пользователи ожидают, что видео загрузится мгновенно, не зависнет на 47-й секунде и будет защищено от посторонних глаз. При этом большинство из них не догадывается, кто именно доставляет этот контент, и где начинается «магия» — а где инженерия.Мы в Kinescope — те, кто эту магию делает. Видео, которое вы смотрите в интернете, вполне может идти через нашу инфраструктуру — пусть даже вы об этом не знаете. Под капотом у нас: высоконагруженные сервисы, сотни тысяч RPS, терабиты трафика и…

  • среда, 18 июня 2025 г. в 00:00:10
golang
Ваш девопс не виноват, а база данных — тем более. Ищем кто жрет память с pprof на Go

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

  • вторник, 17 июня 2025 г. в 00:00:06
golang
RoadMap по Go: с нуля до middle

RoadMapВсем привет! В последнее время мои знакомые стали меня часто спрашивать, как вкатиться в разработку на Go, и каждому я отвечал +- одно и то же, скидывал +- одни и те же материалы, которыми пользовался когда-то сам. И чтобы постоянно не повторяться, я решил составить простой и понятный алгоритм действий: «Учишь это шаг за шагом и становишься Go-разработчиком».По мере накидывания шагов я начал прикреплять материалы по теме, которые смотрел сам или советовал другим. В итоге получился полноц…

  • воскресенье, 15 июня 2025 г. в 00:00:02
golang
Автоматизация контента: как я сделал умного Tg-бота для публикации видео из VK (очередь, дедупликац…

Маскот проекта, стала уже традициейЗдравствуйте, коллеги!Хочу поделиться опытом проектирования и реализации production-ready Telegram-бота, который автоматически собирает и публикует свежий видеоконтент из паблика ВКонтакте — и делает это без дублей, с гарантией доставки и мемными подписями на базе OpenAI. В статье я покажу архитектуру, приведу примеры кода и расскажу о фишках, таких как очередь ссылок на видео (NutsDB), проверка на уникальность (deduplication), скачивание через yt-dlp и интегр…

  • суббота, 14 июня 2025 г. в 00:00:03
golang
Обработка ошибок в Go

Обработка ошибок — это один из самых важных аспектов написания надёжного кода. В Go к этому вопросу подошли нестандартно: вместо традиционного механизма try/catch, как в Java или Python, ошибки просто возвращаются как значения. Изначально это может показаться странным, но на практике этот подход делает обработку ошибок более явной и честной.В этой главе мы разберёмся с тем, когда стоит использовать panic , какие есть распространённые ошибки при его использовании и как правильно обрабатывать иск…

  • пятница, 13 июня 2025 г. в 00:00:10
golang
TUI-интерфейсы не обязаны быть болью. Я написал свой с мышкой

Я давно пишу на Go, но раньше у меня был довольно плотный опыт во фронтенде. Поэтому, когда я захожу в терминальные интерфейсы, я всё ещё ожидаю какого-то базового UX — чтобы было понятно, что происходит, что можно нажимать, и что именно ты сейчас делаешь.Но каждый раз, когда мне нужно было поработать с TUI — особенно в задачах, вроде удаления файлов по фильтру, — я чувствовал, как мой мозг вытекает через уши.Мои страданияНедавно мне просто нужно было удалить старые тяжелые и всякий мусор из, …

  • четверг, 12 июня 2025 г. в 00:00:05
golang
OCP из SOLID

Знаю, что тема уже изъезжана вдоль и поперек, но я хотел бы поделиться своим видением Open/Close Principle из всеми любимым SOLID подходу к построении архитектуры софта. Ведь дядюшка Боб херни не посоветует, все таки опыта ему не занимать, поскольку он с 70х годов в разработке и знает базу, что нам и нужно. Да, современный софт ушел далеко от того какой он был в 70-х, когда писали логические цепочек на перфокартах, делая дырки в картоне и компиляция занимала прямо пропорционально количеству эти…

  • среда, 11 июня 2025 г. в 00:00:06
golang
Вероятно, вам не нужен DI-фреймворк

Я считаю, что при работе с Go в контексте нашей отрасли внедрение зависимостей (dependency injection, DI) часто имеет плохую репутацию из-за DI-фреймворков. Но сама по себе DI как техника довольно полезна. Просто её объясняют слишком большим количеством ОО-жаргона, что приводит к ПТСР у тех, кто перешёл на Go, чтобы сбежать из культа банды четырёх.Внедрение зависимостей — это 25-долларовый термин для 5-центовой концепции.— Джеймс ШорПо сути, DI означает передачу значений в конструктор вместо то…

  • среда, 11 июня 2025 г. в 00:00:05
golang
RAG-сервис на Go с Ламой

Привет, Хабр! Меня зовут Александр Белышев. Хочу поделиться своим недавним опытом работы над RAG‑сервисом и думаю, что эта тема может быть интересна другим коллегам.У меня на работе возникла задача по реализации RAG (Retrieval‑Augmented Generation) сервиса. Хотя без моего участия эту задачу успешно решили на Python, изучая их код я задумался: а как можно сделать что‑то подобное на Go?Результатом этого исследования и моей работы стало следующее решение... Ссылочку на репозиторий оставлю тут для…

  • вторник, 10 июня 2025 г. в 00:00:08