Вот основные обновления:
1. Новый уровень работы с cruft packs
- Git хранит неиспользуемые (невидимые) объекты в специальных “cruft packs”.
- Раньше управлять ими было сложно: чтобы добавить или объединить объекты, нужно было всё перепаковывать, что занимало много времени и места.
- Теперь появился флаг
--combine-cruft-below-size
: можно легко объединять мелкие cruft packs в один, постепенно “чистить” репозиторий. - Исправлена важная ошибка: раньше такие объекты могли случайно удаляться раньше времени — теперь это под контролем.
2. Быстрее для больших репозиториев — многослойные битмапы
- В больших проектах Git создаёт специальные “карты” (bitmaps), чтобы быстро понимать, какие объекты нужны для определённых коммитов.
- Новая версия поддерживает “инкрементальные” битмапы для multi-pack index — можно добавлять новые данные быстро, не пересоздавая всю структуру.
3. Новый движок слияния ORT
- Старый движок
recursive
полностью удалён: теперь слияния (`merge`) обрабатывает только быстрый и надёжный ORT.- Это упростит разработку, повысит скорость merge и уменьшит количество ошибок.
4. Улучшения в утилитах и команде cat-file
- Теперь можно фильтровать объекты по типу, например, быстро получить только “деревья” (tree) с помощью
--filter='object:type=tree'
. - Команда для удаления reflog стала интуитивной: вместо сложных параметров просто пишем
git reflog delete <branch>
.5. Больше контроля над сетевыми соединениями
- Добавлены настройки для TCP Keepalive, теперь можно гибко управлять поведением Git в нестабильных сетях.
6. Меньше Perl — проще тестировать и собирать
- Git ещё больше избавился от зависимостей на Perl: тесты и документация теперь проще и стабильнее, особенно на системах без Perl.
7. Работа с разреженными (sparse) репозиториями стала удобнее
- Команды вроде
git add -p
теперь не требуют полной загрузки содержимого — удобно при работе с огромными проектами.8. Косметические улучшения
- При ребейзе (rebase -i) названия коммитов теперь оформляются как комментарии — так ясно, что это просто для ориентира.
9. Быстрее клонируем через bundle-uri
- Git стал лучше справляться с ускоренным клонированием через *.bundle: теперь клиент правильно учитывает все ссылки, ускоряя загрузку репозитория.
Git 2.50 — это не просто исправление багов, а реальное ускорение и упрощение работы для всех, кто ведёт большие проекты, часто сливает ветки и заботится о “чистоте” репозитория. Новые команды делают жизнь проще, а старые баги — ушли в прошлое.
@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Outrig — это open-source инструмент для разработчиков на Go, позволяющий:
• 🔍 В реальном времени искать по логам
• 🧵 Отслеживать goroutines
• 📊 Следить за переменными и метриками рантайма
💡 Всё работает локально — никакие данные не покидают вашу машину.
🖥 Поддержка: macOS и Linux (Windows — скоро)
➡️ Идеален для дебага, мониторинга и глубокого понимания поведения Go-приложений.
Github
@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
📬 BillionMail — автономная платформа для email-маркетинга и почтовых серверов
🧩 Что это такое
BillionMail — это self-hosted open-source платформа, которая позволяет:
• Настроить полноценный почтовый сервер
• Управлять рассылками email
• Отслеживать открытие писем и клики
• Контролировать доставляемость и отклонения
• Работать через браузерный интерфейс без зависимости от облака
🚀 Ключевые возможности
• Управление почтовыми ящиками и доменами
• Email-маркетинг с шаблонами, сегментами и аналитикой
• Встроенный SMTP-сервер и логика ретраев
• Поддержка DKIM, SPF, DMARC
• Мониторинг отправок, спама, bounce-статистики
• API и интеграции с внешними системами
⚙️ Технологии
• Backend: Python
• Web-интерфейс: Vue.js
• СУБД: MySQL
• Mail engine: Postfix + Dovecot
• OS: Linux-серверы (Ubuntu/Debian)
🛠 Установка
Запустите:
🔗 Репозиторий
@golang_google
🧩 Что это такое
BillionMail — это self-hosted open-source платформа, которая позволяет:
• Настроить полноценный почтовый сервер
• Управлять рассылками email
• Отслеживать открытие писем и клики
• Контролировать доставляемость и отклонения
• Работать через браузерный интерфейс без зависимости от облака
🚀 Ключевые возможности
• Управление почтовыми ящиками и доменами
• Email-маркетинг с шаблонами, сегментами и аналитикой
• Встроенный SMTP-сервер и логика ретраев
• Поддержка DKIM, SPF, DMARC
• Мониторинг отправок, спама, bounce-статистики
• API и интеграции с внешними системами
⚙️ Технологии
• Backend: Python
• Web-интерфейс: Vue.js
• СУБД: MySQL
• Mail engine: Postfix + Dovecot
• OS: Linux-серверы (Ubuntu/Debian)
🛠 Установка
1. Установите `Docker` и `docker-compose`
2. Клонируйте репозиторий:
```bash
git clone https://github.com/aaPanel/BillionMail.git
cd BillionMail
Запустите:
docker-compose up -d
🔗 Репозиторий
@golang_google
🦙 Gollama — терминальный менеджер для Ollama-моделей. Этот инструмент с TUI-интерфейсом упрощает работу с локальными LLM: от сортировки по размеру и квантованию до редактирования Modelfile прямо в терминале. Горячие клавиши позволяют быстро запускать модели, выгружать их из памяти или копировать на удалённые серверы через функцию "spit".
Инструмент имеет интеграцию с LM Studio для автоматического создания симлинков и расчёт потребления vRAM под разные контексты. Проект активно развивается: недавно добавили поддержку Hugging Face-моделей в калькуляторе памяти.
🤖 GitHub
@golang_google
Инструмент имеет интеграцию с LM Studio для автоматического создания симлинков и расчёт потребления vRAM под разные контексты. Проект активно развивается: недавно добавили поддержку Hugging Face-моделей в калькуляторе памяти.
🤖 GitHub
@golang_google
Боишься провалить System Design на собеседовании в BigTech? Или что твоя система рухнет в продакшене?
Ты не один! По статистике, 90% кандидатов совершают одни и те же фатальные ошибки, которые стоят им оффера и сотен тысяч рублей!
На Открытом Уроке я – Даниил TeamLead из Яндекса🔍 , раскрою:
🔴 ТОП-3 критических ошибок, из-за которых кандидаты проваливают секцию System Design (и как их избежать)
👨💻 Практические принципы проектирования, которые защитят твою систему от падения в продакшене
⚡ В каких еще секциях навык проектирования решает
Почему стоит прийти:
✅ Преодолеешь страх перед собеседованиями в BigTech
✅ Научишься проектировать надежные системы, которые не падают под нагрузкой
✅ Получишь пошаговый алгоритм подготовки к System Design интервью
✅ Узнаешь, как избежать типичных ловушек интервьюеров
За 1 час ты получишь знания, которые сэкономят тебе месяцы самостоятельной подготовки и тысячи рублей на курсах!
Когда: 22.06.2025 12:00 Мск
Формат: Онлайн-урок с практическими заданиями
Бонус: Чек-лист по прохождению system design секции
👉 ЗАПИСАТЬСЯ НА ОТКРЫТЫЙ УРОК
Количество мест ограничено! Успей забронировать свое. Для тех кто зарегистируется первыми есть возможность задать вопросы, которые я разберу в конце уроке.
Реклама. ИП Фатин Максим Романович, ИНН: 525406426719, erid: 2VtzqwcQ2hL
Ты не один! По статистике, 90% кандидатов совершают одни и те же фатальные ошибки, которые стоят им оффера и сотен тысяч рублей!
На Открытом Уроке я – Даниил TeamLead из Яндекса
⚡ В каких еще секциях навык проектирования решает
Почему стоит прийти:
✅ Преодолеешь страх перед собеседованиями в BigTech
✅ Научишься проектировать надежные системы, которые не падают под нагрузкой
✅ Получишь пошаговый алгоритм подготовки к System Design интервью
✅ Узнаешь, как избежать типичных ловушек интервьюеров
За 1 час ты получишь знания, которые сэкономят тебе месяцы самостоятельной подготовки и тысячи рублей на курсах!
Когда: 22.06.2025 12:00 Мск
Формат: Онлайн-урок с практическими заданиями
Бонус: Чек-лист по прохождению system design секции
👉 ЗАПИСАТЬСЯ НА ОТКРЫТЫЙ УРОК
Количество мест ограничено! Успей забронировать свое. Для тех кто зарегистируется первыми есть возможность задать вопросы, которые я разберу в конце уроке.
Реклама. ИП Фатин Максим Романович, ИНН: 525406426719, erid: 2VtzqwcQ2hL
Please open Telegram to view this post
VIEW IN TELEGRAM
🎯 Email Linter — антифишинговый анализатор для почты
Email Linter — это CLI-инструмент на Go, который помогает выявлять спам и фишинг во входящих письмах, отправленных на одноразовые e-mail адреса (Fastmail, Topicbox и другие, через JMAP).
🔍 Что делает:
• Подключается к вашей почте через JMAP API
• Ищет все одноразовые адреса (Fastmail Masked Email, DuckDuckGo, iCloud и др.)
• Для каждого адреса показывает всех отправителей
• Помогает мгновенно определить фейковый или нежелательный трафик
🛡️ Зачем нужен:
Один из создателей проекта получил фишинг на “маску” — Email Linter помог быстро отследить странный «From» и отключить маску.
⚙️ Установка:
🔐 Безопасность и приватность
• Email Linter не передаёт письма никуда
• Использует локальный keyring для хранения JMAP-токена
• Все данные обрабатываются локально
• В будущем может появиться кэширование, но оно тоже будет локальным
🛠 Технологии
• Язык: Go
• CLI: Cobra
• Сборка: GoReleaser
• Поддержка JMAP (более гибкий аналог IMAP)
• Протестировано с Fastmail и Topicbox
📄 Лицензия
Apache 2.0 — можно использовать в любых проектах, в том числе коммерческих.
🔗 GitHub: github.com/wheelercj/email-linter
Email Linter — это CLI-инструмент на Go, который помогает выявлять спам и фишинг во входящих письмах, отправленных на одноразовые e-mail адреса (Fastmail, Topicbox и другие, через JMAP).
🔍 Что делает:
• Подключается к вашей почте через JMAP API
• Ищет все одноразовые адреса (Fastmail Masked Email, DuckDuckGo, iCloud и др.)
• Для каждого адреса показывает всех отправителей
• Помогает мгновенно определить фейковый или нежелательный трафик
🛡️ Зачем нужен:
Один из создателей проекта получил фишинг на “маску” — Email Linter помог быстро отследить странный «From» и отключить маску.
⚙️ Установка:
go install github.com/wheelercj/email-linter@latest
email-linter --help
🔐 Безопасность и приватность
• Email Linter не передаёт письма никуда
• Использует локальный keyring для хранения JMAP-токена
• Все данные обрабатываются локально
• В будущем может появиться кэширование, но оно тоже будет локальным
🛠 Технологии
• Язык: Go
• CLI: Cobra
• Сборка: GoReleaser
• Поддержка JMAP (более гибкий аналог IMAP)
• Протестировано с Fastmail и Topicbox
📄 Лицензия
Apache 2.0 — можно использовать в любых проектах, в том числе коммерческих.
🔗 GitHub: github.com/wheelercj/email-linter
Gokapi — это минималистичный, self-hosted сервис для временного обмена файлами, написанный на Go. Его цель — быть лёгкой и приватной заменой таким сервисам, как WeTransfer.
⚙️ Возможности:
• Загрузка и скачивание файлов через веб-интерфейс
• Временное хранение (срок жизни настраивается)
• Одноразовые или многоразовые ссылки
• Поддержка паролей
• Простота установки — бинарник и всё
📦 Без лишнего функционала, без регистрации, без отслеживания — только удобный и быстрый обмен файлами.
🔗 GitHub: https://github.com/Forceu/Gokapi
Please open Telegram to view this post
VIEW IN TELEGRAM
🌀 Go 1.25 приносит мощный апгрейд JSON-библиотеки:
Что изменилось:
● Прямая работа с
Новые функции
● Потоковая обработка JSON
Появился модуль
● Гибкая настройка
Теперь функции
-
-
-
-
-
Пример:
● Новое поведение по умолчанию
Теперь:
JSON-парсинг чувствителен к регистру
Дублирующиеся ключи запрещены
Неизвестные поля игнорируются, если не указано иное
Можно включить прежнее поведение опциями (например, MatchCaseInsensitiveNames)
● Ускорение десериализации
Внутренний движок полностью переписан — ускорение десериализации в 2.7–10.2 раз. При использовании потоковых API (UnmarshalJSONFrom) — прирост до 40×.
● Экспериментальный статус
API ещё может меняться. По умолчанию encoding/json использует новый движок, но json/v2 доступен отдельно и требует флага:
Это — один из самых масштабных апдейтов стандартной библиотеки Go за последние годы. Подходит для тех, кто работает с тяжёлыми JSON-структурами, большими потоками или требует строгого контроля сериализации.
📌 Полный разбор и примеры
@golang_google
#golang #go #JSON
encoding/json/v2
— переработанная с нуля система сериализации с гибкой настройкой, высокой скоростью и новым APIЧто изменилось:
● Прямая работа с
io.Writer
и io.Reader
Новые функции
MarshalWrite
и UnmarshalRead
позволяют писать и читать JSON напрямую, без создания Encoder/Decoder. Это упрощает потоковую работу и уменьшает аллокации.● Потоковая обработка JSON
Появился модуль
jsontext
с функциями MarshalEncode
и UnmarshalDecode
, которые читают и пишут JSON по одному объекту за раз. Это критично для систем, обрабатывающих большие JSON-потоки, например, в Kubernetes.● Гибкая настройка
Теперь функции
Marshal
и Unmarshal
принимают опции, напрямую влияющие на формат вывода и поведение парсера:-
OmitZeroStructFields(true)
— пропускать нулевые поля -
StringifyNumbers(true)
— числа как строки -
MatchCaseInsensitiveNames(true)
— имена полей без учёта регистра -
FormatNilMapAsNull(true)
— nil`-карты как `null
-
WithIndent(" ")
— отступы в JSONПример:
json.Marshal(
user,
json.OmitZeroStructFields(true),
json.StringifyNumbers(true),
jsontext.WithIndent(" "),
)
● Новое поведение по умолчанию
Теперь:
JSON-парсинг чувствителен к регистру
Дублирующиеся ключи запрещены
Неизвестные поля игнорируются, если не указано иное
Можно включить прежнее поведение опциями (например, MatchCaseInsensitiveNames)
● Ускорение десериализации
Внутренний движок полностью переписан — ускорение десериализации в 2.7–10.2 раз. При использовании потоковых API (UnmarshalJSONFrom) — прирост до 40×.
● Экспериментальный статус
API ещё может меняться. По умолчанию encoding/json использует новый движок, но json/v2 доступен отдельно и требует флага:
GOEXPERIMENT=jsonv2
Это — один из самых масштабных апдейтов стандартной библиотеки Go за последние годы. Подходит для тех, кто работает с тяжёлыми JSON-структурами, большими потоками или требует строгого контроля сериализации.
📌 Полный разбор и примеры
@golang_google
#golang #go #JSON
Интенсив по очередям: Kafka & NATS
Асинхронное взаимодействие и очереди — невероятно широкая тема, и абсолютно обязательная к изучению всем, кто интересуется архитектурой. Разработчику важно понимать архитектурные особенности, сильные и слабые стороны компонент, на базе которых строится архитектура.
🌐 В программе курса:
▪️Асинхронное взаимодействие с помощью очередей: подходы, свойства, гарантии
▪️Какие бывают очереди, основные системы очередей, на какие свойства и требования смотреть при выборе
▪️Как конфигурировать и управлять системами очередей
▪️Архитектура Apache Kafka, streams, topics, конфигурации от минимального single instance до production grade кластера с отказоустойчивостью
▪️Архитектуры NATS, pub/sub, req/res, streaming, кластер, суперкластер, федерация, edge.
Всё в формате «живых» онлайн-сессий (лекции, брейнштормы, демо).
🥸 Кто мы: R&D-центр Devhands.io, наш канал (https://yangx.top/rybakalexey). Автор курса — Владимир Перепелица, эксперт по большим проектам, очередям и Tarantool, Solution Architect в Exness, создатель S3 в VK Cloud, регулярный спикер и член ПК конференций Highload.
🗓 Старт курса 3 июля. Изучить программу и записаться можно здесь.
Ждём вас!
Реклама. ИП Рыбак А.А. ИНН 771407709607 Erid: 2VtzquyZtac
Асинхронное взаимодействие и очереди — невероятно широкая тема, и абсолютно обязательная к изучению всем, кто интересуется архитектурой. Разработчику важно понимать архитектурные особенности, сильные и слабые стороны компонент, на базе которых строится архитектура.
▪️Асинхронное взаимодействие с помощью очередей: подходы, свойства, гарантии
▪️Какие бывают очереди, основные системы очередей, на какие свойства и требования смотреть при выборе
▪️Как конфигурировать и управлять системами очередей
▪️Архитектура Apache Kafka, streams, topics, конфигурации от минимального single instance до production grade кластера с отказоустойчивостью
▪️Архитектуры NATS, pub/sub, req/res, streaming, кластер, суперкластер, федерация, edge.
Всё в формате «живых» онлайн-сессий (лекции, брейнштормы, демо).
Ждём вас!
Реклама. ИП Рыбак А.А. ИНН 771407709607 Erid: 2VtzquyZtac
Please open Telegram to view this post
VIEW IN TELEGRAM
🔏 RuleGo — легковесный rule-движок на Go для гибких систем. Когда бизнес-логика становится слишком сложной для хардкода, а традиционные workflow-движки кажутся громоздкими, этот проект предлагает элегантное решение. Инструмент позволяет описывать правила обработки данных в виде JSON-цепочки с компонентами, которые можно пересобирать на лету без перезапуска приложения.
Проект имеет поддержку edge-вычислений — движок стабильно работает даже на Raspberry Pi с потреблением памяти около 19MB. Встроенные компоненты для HTTP, MQTT и JavaScript-трансформаций делают его идеальным для IoT-сценариев, а визуальный редактор RuleGo-Editor упрощает конфигурирование.
🤖 GitHub
@golang_google
Проект имеет поддержку edge-вычислений — движок стабильно работает даже на Raspberry Pi с потреблением памяти около 19MB. Встроенные компоненты для HTTP, MQTT и JavaScript-трансформаций делают его идеальным для IoT-сценариев, а визуальный редактор RuleGo-Editor упрощает конфигурирование.
🤖 GitHub
@golang_google
@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
«Go 1.25 interactive tour» — отличный обзор ключевых новинок, запланированных для Go 1.25 (релиз — август 2025)
Основные моменты:
1. Синтетическое время для тестов (synctest)
Новая библиотека testing/synctest позволяет использовать «фейковый» таймер для тестов, без реального ожидания:
🧪 Использование synctest.Test для "синтетического времени"
- synctest.Test(t, func(t *testing.T) {...}) запускает функцию в изолированном "пузыре", где:
- функции пакета time используют фиктивные часы;
- если все горутины заблокированы (например, time.Sleep, select без case), время продвигается вперед автоматически, чтобы "разблокировать" эти операции.
✅ Пример теста:
Здесь мы проверяем, что Read действительно отдает ошибку "timeout", без реального ожидания 60 секунд — synctest просто симулирует, что они прошли.
🕰 Как это работает?
Внутри synctest.Test:
- Время начинается с 2000-01-01T00:00:00Z;
- Когда все горутины заблокированы, время продвигается до следующего события (time.After, time.Sleep и т.д.);
- Это позволяет сразу активировать нужные ветки кода, которые зависят от времени, без настоящих задержек.
⚠️ Ограничения
Внутри synctest.Test нельзя использовать:
Пример неверного использования:
testing/synctest — это инструмент для тестирования кода, зависящего от времени, без реального ожидания, что делает тесты мгновенными и стабильными. Идеально подходит для timeout, retry, delays, ticker, и других случаев, когда вы хотите протестировать "прошло ли время", но не хотите реально ждать.
2. JSON v2 — серьезный апдейт
json/v2 вводит новые функции, включая MarshalToFunc, UnmarshalFromFunc и более гибкую систему маршаллинга с пользовательскими функциями.
Пример:
👉 Подробно можно почитать здесь
3. Container-aware GOMAXPROCS
Теперь Go учитывает ограничения CPU из cgroups – на Docker/Kubernetes GOMAXPROCS автоматически подстраивается под лимит, а не просто равен NumCPU
4. Новый сборщик мусора — Green Tea
Экспериментальный сборщик мусора оптимизирован для больших объёмов мелких объектов, обещают на 10–40 % снижение оверхеда. Включается через GOEXPERIMENT=greenteagc
5. Защита от CSRF (http.CrossOriginProtection)
Добавлен новый тип для отсечения запросов из кросс-доменных источников, анализируя заголовки Sec-Fetch-Site и Origin
6. sync.WaitGroup.Go
Упрощение работы c WaitGroup — теперь можно писать:
Вместо Add + Done
7. Flight Recorder (trace.FlightRecorder)
Flight recording — это способ отслеживать, что происходит в программе: какие функции вызываются, сколько памяти используется и другие важные события.
Но главное — эта запись ведётся не всё время, а только в «скользящем окне»: сохраняются только последние N секунд или последние N мегабайт данных.
👉 Это полезно, когда вы не знаете заранее, когда случится ошибка — flight recorder позволит «поймать» последние события перед сбоем.
8. Расширенные методы os.Root
Добавлены методы Chmod, Chown, Chtimes, Link, MkdirAll, RemoveAll, Rename, Symlink, ReadFile, WriteFile
9. reflect.TypeAssert
Упрощает преобразование reflect.Value в конкретный тип без промежуточного интерфейса.
10. hash.Cloner
Интерфейс клонирования состояния hash-функций (Clone()), поддерживается всеми реализациями STD (SHA-1, MD5 и др.)
📌 Полный обзор обновлений
@golang_google
Основные моменты:
1. Синтетическое время для тестов (synctest)
Новая библиотека testing/synctest позволяет использовать «фейковый» таймер для тестов, без реального ожидания:
🧪 Использование synctest.Test для "синтетического времени"
- synctest.Test(t, func(t *testing.T) {...}) запускает функцию в изолированном "пузыре", где:
- функции пакета time используют фиктивные часы;
- если все горутины заблокированы (например, time.Sleep, select без case), время продвигается вперед автоматически, чтобы "разблокировать" эти операции.
✅ Пример теста:
func TestReadTimeout(t *testing.T) {
synctest.Test(t, func(t *testing.T) {
ch := make(chan int)
_, err := Read(ch)
if err == nil {
t.Fatal("expected timeout error, got nil")
}
})
}
Здесь мы проверяем, что Read действительно отдает ошибку "timeout", без реального ожидания 60 секунд — synctest просто симулирует, что они прошли.
🕰 Как это работает?
Внутри synctest.Test:
- Время начинается с 2000-01-01T00:00:00Z;
- Когда все горутины заблокированы, время продвигается до следующего события (time.After, time.Sleep и т.д.);
- Это позволяет сразу активировать нужные ветки кода, которые зависят от времени, без настоящих задержек.
⚠️ Ограничения
Внутри synctest.Test нельзя использовать:
t.Run(...)
t.Parallel()
t.Deadline()
Пример неверного использования:
synctest.Test(t, func(t *testing.T) {
t.Run("subtest", func(t *testing.T) {
t.Log("fail!") // это работать не будет
})
})
testing/synctest — это инструмент для тестирования кода, зависящего от времени, без реального ожидания, что делает тесты мгновенными и стабильными. Идеально подходит для timeout, retry, delays, ticker, и других случаев, когда вы хотите протестировать "прошло ли время", но не хотите реально ждать.
2. JSON v2 — серьезный апдейт
json/v2 вводит новые функции, включая MarshalToFunc, UnmarshalFromFunc и более гибкую систему маршаллинга с пользовательскими функциями.
Пример:
json.Marshal(vals, json.WithMarshalers(marshalers))
👉 Подробно можно почитать здесь
3. Container-aware GOMAXPROCS
Теперь Go учитывает ограничения CPU из cgroups – на Docker/Kubernetes GOMAXPROCS автоматически подстраивается под лимит, а не просто равен NumCPU
4. Новый сборщик мусора — Green Tea
Экспериментальный сборщик мусора оптимизирован для больших объёмов мелких объектов, обещают на 10–40 % снижение оверхеда. Включается через GOEXPERIMENT=greenteagc
5. Защита от CSRF (http.CrossOriginProtection)
Добавлен новый тип для отсечения запросов из кросс-доменных источников, анализируя заголовки Sec-Fetch-Site и Origin
6. sync.WaitGroup.Go
Упрощение работы c WaitGroup — теперь можно писать:
wg.Go(func() { /* … */ })
wg.Wait()
Вместо Add + Done
7. Flight Recorder (trace.FlightRecorder)
Flight recording — это способ отслеживать, что происходит в программе: какие функции вызываются, сколько памяти используется и другие важные события.
Но главное — эта запись ведётся не всё время, а только в «скользящем окне»: сохраняются только последние N секунд или последние N мегабайт данных.
👉 Это полезно, когда вы не знаете заранее, когда случится ошибка — flight recorder позволит «поймать» последние события перед сбоем.
8. Расширенные методы os.Root
Добавлены методы Chmod, Chown, Chtimes, Link, MkdirAll, RemoveAll, Rename, Symlink, ReadFile, WriteFile
9. reflect.TypeAssert
Упрощает преобразование reflect.Value в конкретный тип без промежуточного интерфейса.
10. hash.Cloner
Интерфейс клонирования состояния hash-функций (Clone()), поддерживается всеми реализациями STD (SHA-1, MD5 и др.)
📌 Полный обзор обновлений
@golang_google
Записывайте рецепт успешного тимлида:
В качестве основы берём страсть к разработке. Добавляем щепотку управления, пару ложек стратегического видения, посыпаем творческим подходом к задачам со звездочкой. 🥖 Выпекаем в команде Lamoda Tech! Получается лидер, за которым хочется идти.
🤝Ребята сейчас расширяют команды и ищут тех, кто готов ими управлять. Предстоит развивать архитектуру, оптимизировать процессы, разрабатывать и влиять на стратегию направлений и продукта Lamoda.
Открыты вакансии:
✅ Тимлид группы разработки
✅ Тимлид маркетинговой аналитики
#реклама
О рекламодателе
В качестве основы берём страсть к разработке. Добавляем щепотку управления, пару ложек стратегического видения, посыпаем творческим подходом к задачам со звездочкой. 🥖 Выпекаем в команде Lamoda Tech! Получается лидер, за которым хочется идти.
🤝Ребята сейчас расширяют команды и ищут тех, кто готов ими управлять. Предстоит развивать архитектуру, оптимизировать процессы, разрабатывать и влиять на стратегию направлений и продукта Lamoda.
Открыты вакансии:
✅ Тимлид группы разработки
✅ Тимлид маркетинговой аналитики
#реклама
О рекламодателе
🔗 Schema — удобный инструмент для преобразования данных между HTML-формами и Go-структурами. Этот пакет из экосистемы Gorilla упрощает работу с веб-формами, автоматически связывая поля структуры с данными POST-запросов и наоборот.
Библиотека поддерживает базовые типы данных, позволяет задавать кастомные имена полей через тег
🤖 GitHub
@golang_google
Библиотека поддерживает базовые типы данных, позволяет задавать кастомные имена полей через тег
schema
и обрабатывать значения по умолчанию. Например, можно декодировать форму в структуру Person
с полями Name
и Phone
всего парой строк кода. 🤖 GitHub
@golang_google