Category : golang

golang
Безопасный file upload в Go: 7 атак на загрузку файлов и как мы их закрывали

«Сделай форму загрузки PDF» – звучит как задача на полчаса. Claude/GPT напишет handler, мы добавим accept=".pdf" на фронте, multer на бэке – и вот у нас работающий upload. Можно деплоить.Проблема в том, что работающий upload и безопасный upload – это разные вещи. Разница между ними – несколько уязвимостей, каждая из которых может превратить ваш сервер в точку входа для атакующего.С распространением LLM-инструментов порог входа в разработку снизился радикально. Это прекрасно – больше люд…

  • пятница, 27 марта 2026 г. в 00:00:09
golang
Go и искусство ставить подножку разработчику: разоблачение

Язык проектировался простым, лёгким в освоении, готовым для написания веб-сервисов с первого дня. Он мог бы таким и остаться, если бы не одна проблема. Проблема отбора.Инженеры Google понимали, что без подводных камней, необходимости знать детали реализации языка и неконсистентного синтаксиса не о чем будет спрашивать на собеседовании.Явно ставилась задача — сделать язык достаточно простым, но не настолько, чтобы собеседование мог пройти любой новичок.ПреамбулаЭто первая статья из серии «Альтер…

  • четверг, 26 марта 2026 г. в 00:00:10
golang
Разбираем net/http на практике. Часть 2.3: Динамические маршруты, cookie-аутентификация и управлени…

Предисловие: статья является продолжением цикла «Разбираем net/http на практике». Здесь мы учимся создавать веб-приложения на чистом Go без сторонних веб-фреймворков и библиотек, совместно реализуя сервис мёртвой почты DeadDrop. Для понимания материала предлагаю ознакомиться с предыдущими статьями:Первая статья циклаПредыдущая статья циклаВведениеМы проделали огромный путь. В «Разбираем net/http на практике. Часть 2.1» мы заложили твёрдый фундамент – научились принимать и обрабатывать POST-запр…

  • среда, 25 марта 2026 г. в 00:00:09
golang
Некоторые мысли о проектировании библиотек (с примерами на Go)

Программисты много пользуются библиотеками. Но спроектировать библиотеку сложно. В этой статье я изложу некоторые соображения по поводу того, как создавать библиотеки. Для начала разграничим, чем нам приходится заниматься при программировании. Попробуем представить акты программирования как беседы. Далее разберём, какие основные виды деятельности складываются в «программирование», как его принято понимать. Всё это послужит нам основой для разработки более качественных программных библиотек.Итак…

  • среда, 25 марта 2026 г. в 00:00:08
golang
Как перестать наступать на грабли в Go: набор рабочих рецептов

Пишете на Go или только начинаете изучать язык? Эта шпаргалка точно сэкономит вам кучу времени. Никакой воды, абстрактных рассуждений и скучных введений. Мы пройдёмся по тем самым ситуациям, с которыми бэкендеры сталкиваются на каждом проекте: конкурентность, сеть, работа с JSON, обработка ошибок, тесты и дебаг.Можете смело добавлять это в закладки. Забыли синтаксис или паттерн, открыли нужный раздел, скопировали, адаптировали и поехали дальше.Каждый блок кода ниже — это самостоятельный пример.…

  • среда, 25 марта 2026 г. в 00:00:07
golang
Тоталитарный Golang

Всем привет! Сегодня я попробую вас убедить, что уникальным торговым предложением языка Go являются не горутины, скорость, минималистичность или современность, а "тоталитарность". Что?Преимуществами Go называют скорость, производительность, многопоточность, современность и удобность в микросервисах (чтобы это ни значило), и часто эти свойства выделяются как что-то уникальное.Но разве в Java нет горутин? Разве Python какой-то старый? Разве Rust не быстрее? Мои коллеги не правы, потому чт…

  • вторник, 24 марта 2026 г. в 00:00:07
golang
Когда нейросети общаются сами: эксперимент с диалогом двух LLM и графическая утилита на Go

Всем привет! Что будет, если задать двум LLM моделям одну тему и позволить вести диалог без участия человека? Я написал небольшую программу на Go, которая делает это автоматически. Рассказываю как она устроена и почему она может пригодиться каждому, кто работает с Ollama. Один интерфейс для двух моделейПрограмма представляет собой графическое приложение на Fyne. В верхней левой части окна настройка диалога. Выбираем две модели из списка, который программа получает командой ollama list. Можно за…

  • понедельник, 23 марта 2026 г. в 00:00:36
golang
Как быстро встроить MAX в свои системы

MAX для бизнеса без лишней магии MAX в России постепенно превращается не просто в «ещё один мессенджер», а в канал, который всё чаще рассматривают как рабочую точку контакта с пользователем: для уведомлений, сервисных сообщений, внутренних ботов и групповых сценариев. И как только компания доходит до реальной интеграции, почти всегда начинается знакомая история: сначала один скрипт на отправку уведомлений, потом второй на обработку входящих сообщений, потом отдельная логика для групп, потом ещ…

  • понедельник, 23 марта 2026 г. в 00:00:25
golang
Я написал кэш для API на Go за 120 строк кода — и PostgreSQL перестал быть узким местом (ускорение …

Если API начинает тормозить, первое решение обычно очевидно — добавить Redis. Но иногда оказывается, что проблема гораздо проще. В одном из сервисов PostgreSQL начал упираться в повторяющиеся запросы. Одни и те же данные запрашивались тысячами клиентов. Практически каждый HTTP-запрос заканчивался одинаковым SQL-запросом. Любопытство победило — вместо готового решения был написан небольшой кэш прямо внутри сервиса. На это ушло примерно полчаса.Результат оказался неожиданным: некоторые эндпоинты …

  • воскресенье, 22 марта 2026 г. в 00:00:12