Перевели практичную статью Алекса Эдвардса о том, можно ли жить без CSRF-токенов. Спойлер: да, но только если вы готовы соблюдать набор довольно жёстких условий. Зато результат — чистый код, меньше зависимостей и защита, встроенная в сам браузер + Go 1.25.
Главная звезда статьи — новый middleware
http.CrossOriginProtection. Он использует современные браузерные заголовки (Sec-Fetch-Site и Origin) и просто отсекает все «подозрительные» небезопасные запросы, которые не пришли с того же origin. Без танцев с токенами, без внешних библиотек — прямо в стандартной библиотеке Go.Автор подробно разбирает, как это работает под капотом: браузеры автоматически добавляют
Sec-Fetch-Site, Go сравнивает origin-ы, а если заголовков нет — предполагает, что запрос пришёл не из браузера. Плюс — пропускаются только безопасные методы.Но, как всегда, есть нюансы. Защита работает только с современными браузерами. Если юзер сидит на чём-то старше 2020 года — токены могут понадобиться. И тут появляется главный лайфхак статьи: если вы требуете TLS 1.3, то все браузеры, которые вообще смогут подключиться, уже гарантированно поддерживают нужные заголовки. Исключение — старые Firefox 60–69, но их доля настолько мала, что это скорее исторический артефакт.
Отдельная часть статьи — аккуратное объяснение разницы между
cross-origin и cross-site. Это важно, потому что Go блокирует именно cross-origin, и это круто: атаки с ваших соседних поддоменов тоже не пройдут. Плюс — небольшой разбор SameSite-cookie: в сочетании с TLS 1.3 они закрывают последние дыры, которые могут остаться после Firefox-исключения.📚 Полный разбор: https://habr.com/ru/articles/968132/
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Современный подход к предотвращению CSRF/CORF-атак в Go
Команда Go for Devs подготовила перевод статьи о новом подходе к защите Go-приложений от CSRF/CORF-атак. Автор разбирает, как связка TLS 1.3, SameSite cookies и http.CrossOriginProtection из...
1🔥7👍5❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Подготовили для вас перевод статьи Тима Литтла, где он на чистом Go и raylib-go собирает лёгкую симуляцию воды для 2D-игр. Без сложной физики и уравнений Навье—Стокса.
Под капотом — сетка из `Droplet`-ячееек, у каждой свой объём воды.
Дальше автор по шагам накручивает поведение:
В итоге, правда, получилась не реалистичная вода, а скорее классная симуляция песка) Отлично подходит для эффектов песка, лавы, воды из трубы или сыплющегося мусора в пиксельной игре.
Конечно, вряд ли пригодится завтра на работе, но выглядит прикольно)
@go_for_devs
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍7❤3😁2🤩2
Мы недавно разбирали в отдельной статье, какие апдейты ждут сборщик мусора в Go 1.26 — и почему это одно из самых заметных улучшений последних релизов. Если вдруг ещё не читали, самое время наверстать.
А теперь к этому добавился и свежий доклад c GopherCon 2025: "Advancing Go Garbage Collection with Green Tea".
Теперь можно не только прочитать, но и посмотреть!
@go_for_devs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥3❤2
Опубликовали отличный разбор того, с чего реально начинается компиляция Go — со сканера (или лексера). Того самого компонента, который посимвольно читает ваш код и превращает его в поток токенов.
Сканер в Go работает удивительно прямолинейно: видит букву — пытается идентификатор, сверяет с таблицей ключевых слов; видит
+ — решает, это +, ++ или +=; встречает перевод строки — вставояет точку с запятой.Что занятно — у Go два сканера. Один из стандартной библиотеки (
go/scanner), другой — тот, что реально кормит компилятор (src/cmd/compile/internal/syntax/scanner.go). И именно второй делает всю тяжёлую работу: буферизует вход, трекает позиции, прокручивает Unicode, следит за состоянием вставки ; и т.д.В статье пошаговый разбор классического hello world. Хорошее чтиво.
@go_for_devs
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Как устроен компилятор Go: сканер (лексер)
Команда Go for Devs подготовила перевод статьи о том, как работает первый этап компиляции Go — сканер. Автор подробно показывает, как исходный код превращается в поток токенов, что происходит с каждым...
👍9❤3🔥3
😱 MinIO: развитие остановлено
Команда MinIO объявила, что проект уходит в чистый maintenance-mode. Никаких новых фичи, PR’ов и даже review существующих изменений.
Останутся только точечные фиксы критических уязвимостей (и то по ситуации).
Активное развитие теперь живёт в их enterprise-решении MinIO AIStor.
Такой вот Open Source :)
@go_for_devs
Команда MinIO объявила, что проект уходит в чистый maintenance-mode. Никаких новых фичи, PR’ов и даже review существующих изменений.
Останутся только точечные фиксы критических уязвимостей (и то по ситуации).
Активное развитие теперь живёт в их enterprise-решении MinIO AIStor.
Такой вот Open Source :)
@go_for_devs
😱11🤬5😢5😁2
Forwarded from AI for Devs
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ JetBrains представила Air: новую агентную IDE
Компания выпустила Air — ADE (Agentic Development Environment), ориентированную на гибридную работу «разработчик + ИИ-агенты».
Это не просто чат с моделью внутри IDE, а отдельная среда разработки, где можно ставить задачи агентам, запускать их параллельно, контролировать изменения и коммитить результаты.
Air пока доступен в превью и работает только с одним агентом — Claude Agent, причём для использования требуется активная подписка Anthropic.
Версии для Windows и Linux обещают в 2026 году — сейчас приложение доступно только на macOS.
Сайт | Документация | Анонс в X | Анонс на Habr
@ai_for_devs
Компания выпустила Air — ADE (Agentic Development Environment), ориентированную на гибридную работу «разработчик + ИИ-агенты».
Это не просто чат с моделью внутри IDE, а отдельная среда разработки, где можно ставить задачи агентам, запускать их параллельно, контролировать изменения и коммитить результаты.
Air пока доступен в превью и работает только с одним агентом — Claude Agent, причём для использования требуется активная подписка Anthropic.
Версии для Windows и Linux обещают в 2026 году — сейчас приложение доступно только на macOS.
Сайт | Документация | Анонс в X | Анонс на Habr
@ai_for_devs
🔥8👍3⚡2🤯2😁1🤬1
🚀 Лучше, чем JSON: почему я перешёл на Protobuf
Опубликовали перевод статьи автора, который уже почти десятилетие не использует JSON в своих API и сознательно выбирает Protobuf.
JSON стал стандартом веба во многом случайно: человекочитаем, встроен в JavaScript, тривиален в инструментах и позволял «просто работать». Но при активной разработке он же создаёт хаос: отсутствующие поля, неверные типы, нет гарантий структуры, валидация вручную.
Protobuf же работает совсем иначе:
• контракт описывается в .proto — чёткие типы, стабильные теги
• сгенерированный код избавляет от ручного парсинга и ошибок
• бинарный формат получается в разы компактнее JSON
• экономия на сети, CPU и мобильном трафике чувствуется сразу
Автор честно отмечает слабое место Protobuf — бинарность усложняет отладку и требует инструментов. Но это та цена, которую легко принять, если вам важны скорость, предсказуемость и типобезопасность всей системы.
📚 Читайте и комментируйте на Хабр.
@go_for_devs
Опубликовали перевод статьи автора, который уже почти десятилетие не использует JSON в своих API и сознательно выбирает Protobuf.
JSON стал стандартом веба во многом случайно: человекочитаем, встроен в JavaScript, тривиален в инструментах и позволял «просто работать». Но при активной разработке он же создаёт хаос: отсутствующие поля, неверные типы, нет гарантий структуры, валидация вручную.
Protobuf же работает совсем иначе:
• контракт описывается в .proto — чёткие типы, стабильные теги
• сгенерированный код избавляет от ручного парсинга и ошибок
• бинарный формат получается в разы компактнее JSON
• экономия на сети, CPU и мобильном трафике чувствуется сразу
Автор честно отмечает слабое место Protobuf — бинарность усложняет отладку и требует инструментов. Но это та цена, которую легко принять, если вам важны скорость, предсказуемость и типобезопасность всей системы.
📚 Читайте и комментируйте на Хабр.
@go_for_devs
👍6🔥6❤3😁2
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ Вышел GoLand 2025.3
В новом релизе JetBrains сделали упор на раннее выявление ошибок, работу с облачной инфраструктурой и ускорение повседневных операций.
Коротко — самое важное:
— Новый анализатор утечек ресурсов (файлы, коннекты, дескрипторы).
— Поддержка нескольких ИИ-агентов: теперь Junie + встроенный Claude Agent.
— Terraform встроен по умолчанию, работает прямо из коробки.
— Крупные улучшения Kubernetes-инструментов: CI/CD-флоу прямо в редакторе.
— Новая тема интерфейса Islands по умолчанию.
— Возможность открывать отдельные файлы без проекта.
— Полная поддержка
— Существенный прирост производительности: меньше OOM-предупреждений, умнее индексирование, отзывчивее UI.
📚 Читайте и комментируйте на Хабр.
@go_for_devs
В новом релизе JetBrains сделали упор на раннее выявление ошибок, работу с облачной инфраструктурой и ускорение повседневных операций.
Коротко — самое важное:
— Новый анализатор утечек ресурсов (файлы, коннекты, дескрипторы).
— Поддержка нескольких ИИ-агентов: теперь Junie + встроенный Claude Agent.
— Terraform встроен по умолчанию, работает прямо из коробки.
— Крупные улучшения Kubernetes-инструментов: CI/CD-флоу прямо в редакторе.
— Новая тема интерфейса Islands по умолчанию.
— Возможность открывать отдельные файлы без проекта.
— Полная поддержка
golangci-lint fmt из версии 2.— Существенный прирост производительности: меньше OOM-предупреждений, умнее индексирование, отзывчивее UI.
📚 Читайте и комментируйте на Хабр.
@go_for_devs
👍10❤4🔥2🥰1🤔1🤯1
В Go утечки ресурсов часто выглядят как мелочь: не закрыли тело HTTP-ответа, забыли
GoLand 2025.3 получил анализ утечек, который ловит такие проблемы прямо во время написания кода.
В новой статье разбираются реальные кейсы, где один пропущенный
Инструмент отслеживает все пути выполнения, включая пользовательские типы с
📚 Читайте и комментируйте на Хабр.
@go_for_devs
defer rows.Close(), оставили открытый файл. Но под нагрузкой это может привести к падению сервиса. GC тут не спасает: он чистит память, а не системные дескрипторы.GoLand 2025.3 получил анализ утечек, который ловит такие проблемы прямо во время написания кода.
В новой статье разбираются реальные кейсы, где один пропущенный
Close() приводил к росту памяти, ошибкам can’t assign requested address и полному исчерпанию SQL-коннекшенов из-за единственного NULL в таблице.Инструмент отслеживает все пути выполнения, включая пользовательские типы с
io.Closer, и подсвечивает, где ресурс может остаться открытым.📚 Читайте и комментируйте на Хабр.
@go_for_devs
Хабр
Анализ утечек ресурсов в Go: реальные кейсы и их решение
Команда Go for Devs подготовила перевод статьи о том, как GoLand помогает разработчикам вовремя находить и устранять утечки ресурсов. Файлы, соединения, HTTP-ответы, SQL-строки — всё это может...
👍11🔥4❤2🤔1🤯1
3 языка будучи «похожими» на самом деле выражают три совершенно разные философии. Их можно сравнить не по фичам, а по ценностям и компромиссам, заложенным в дизайн.
Go: минимализм и корпоративная предсказуемость
• Язык намеренно маленький, «умещается в голове», жертвует выразительностью ради стабильности
• Новые фичи проходят через очень высокий порог: отсюда долгие 12 лет без дженериков
• Простой slice, скрытый рантайм и GC избавляют от размышлений о памяти
• Заточен под командную разработку, читаемость и предсказуемую конкурентность
Rust: максимализм и гарантия безопасности
• Огромное число концепций, трейт-систем, слоёв абстракций; высокая когнитивная плотность
• Идея «абстракции без накладных расходов» реализована буквально: безопасность без рантайма, через статические гарантии
• Сложен в обучении, но даёт сильнейшие гарантии и библиотечную экосистему без «страха чужого кода»
Zig: свобода, ручной контроль и анти-OOP
• Самый молодой из тройки, ещё сырой, но философски наиболее радикальный
• Полностью ручное управление памятью, выбор аллокатора как часть архитектуры
• Нет скрытой магии: ни неявных выделений, ни рантайма, ни динамического полиморфизма
• Стимулирует data-oriented дизайн и большие предсказуемые аллокации вместо «графа объектов»
• Ощущается дерзким «анархистским» языком для тех, кому хочется полного контроля и минимум абстракций
📚 Читайте и комментируйте на Хабр.
@go_for_devs
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡6🔥5❤3👍1🤔1
Наткнулись и перевели большую и очень интересную статью про гонки данных в Go от человека, который годами находит и чинит их в реальных системах.
Автор показывает не учебные примеры, а живые кейсы из продакшена:
• Неявный захват внешних переменных в замыканиях, где один пропущенный
: превращает локальную переменную в общую•
http.Client, который в документации объявлен потокобезопасным, но внезапно ломается, если конкурентно менять его поля• Мьютексы, которые формально используются корректно, но живут меньше, чем данные, которые должны защищать
• И стандартная библиотека, где
map, bytes.Buffer и другие типы вовсе не рассчитаны на конкурентный доступ, хотя это не всегда очевидно из APIRace detector сильно помогает, но он не всесилен: часть гонок проходит мимо, а симптомы могут проявляться только под нагрузкой или в CI.
Интересна и более общая мысль статьи: если такие ошибки регулярно допускают опытные инженеры, значит проблема не только в внимательности. Неявные замыкания, мелкое копирование структур с ссылочными полями, отсутствие встроенного
Clone(), слабая документация по потокобезопасности — всё это увеличивает вероятность гонок, даже в аккуратно написанном коде.Если язык и экосистема делают гонки данных слишком лёгкими, рано или поздно за это заплатит продакшн.
@go_for_devs
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
1000 и один способ угробить программу из-за гонки данных в Go
Команда Go for Devs подготовила перевод статьи о самых коварных и трудноуловимых гонках данных в Go. Автор показывает на реальных примерах, как даже опытные разработчики легко попадают в ловушки...
👍7❤3🔥3🤔1🤬1😢1