37.1K subscribers
1.46K photos
33 videos
5 files
1.62K links
加入频道
Статья посвящена недавнему объявлению Microsoft о миграции компилятора TypeScript с JavaScript на Go с целью повышения скорости компиляции в 10 раз.

Основные моменты:

Фокус на компиляторе, а не на языке: Улучшение касается именно скорости работы компилятора, а не быстродействия самого TypeScript-кода в браузере или Node.js.

Архитектурные различия: Объясняется, что однопоточная модель Node.js с event loop не оптимальна для CPU-интенсивных задач, таких как компиляция, в отличие от Go с его легковесными горутинами и нативной поддержкой параллелизма.

Причины повышения производительности: Скорее всего, 10-кратное улучшение связано с тем, что оригинальная реализация на JavaScript не была достаточно оптимизирована для вычислительно сложных задач, а переход на Go позволяет обойти ограничения event loop.

Альтернативы и их сложности: Рассматриваются и недостатки использования worker threads в Node.js, где проблемы с обменом данными и накладными расходами остаются актуальными.

Вопросы поддержки браузеров
: Поднимается вопрос, как будет обеспечена работа TypeScript в браузерах, ведь Go не работает нативно в них – возможные решения включают WebAssembly или поддержание параллельной реализации на JavaScript.

Статья анализирует не только заявленный прирост производительности, но и более глубокие архитектурные аспекты, демонстрируя, почему выбор Go может быть оправдан для сложных, CPU-интенсивных задач, таких как компиляция TypeScript.

📌 Читать полностью

@golang_google
👣 Connect-four – это реализация классической игры «Четыре в ряд» для командной строки, написанная на Go.

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

Главная фишка проектаAI противник, который оказывается неожиданно умным и сложным, заставляя вас применять стратегическое мышление и тактику.
ного интеллекта в играх.

📌 Github

@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
👣 GGH — это инструмент для управления SSH-сессиями, который позволяет быстро повторно подключаться к серверам и искать записи в конфигурационном файле ~/.ssh/config!

🌟 Он действует как оболочка поверх SSH, улучшая удобство работы без замены стандартного клиента.

🔐 Лицензия: Apache-2.0

🖥 Github

@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 «DNS Explained: From Basics to Building My Own DNS Server» - подробное руководство по пониманию системы доменных имен (DNS) и созданию собственного DNS-сервера с использованием языка программирования Go.​

Основные темы, рассмотренные в статье:
Что такое DNS и его значение:​

DNS (Domain Name System) действует как телефонная книга интернета, преобразуя удобочитаемые доменные имена (например, google.com) в машинно-читаемые IP-адреса (например, 142.250.182.206), облегчая навигацию в сети.​

Пошаговый процесс разрешения DNS:​

1️⃣ Инициирование запроса: Локальный резолвер в операционной системе проверяет кэш на наличие IP-адреса запрашиваемого домена. Если адрес отсутствует, запрос направляется к рекурсивному DNS-резолверу.​

2️⃣ Обращение к рекурсивному резолверу: Рекурсивный резолвер, такой как Google Public DNS (8.8.8.8) или Cloudflare DNS (1.1.1.1), принимает запрос и начинает процесс поиска.​

3️⃣ Запрос к корневому DNS-серверу:
Рекурсивный резолвер обращается к корневому серверу, который направляет его к соответствующему серверу верхнего уровня (TLD) для запрашиваемого домена.​

4️⃣ Запрос к TLD-серверу: Сервер верхнего уровня (например, для доменов .com или .tech) указывает на авторитетный сервер конкретного домена.​

5️⃣ Запрос к авторитетному серверу: Авторитетный сервер предоставляет окончательный IP-адрес запрашиваемого домена.​

Создание собственного DNS-сервера на Go:​

В статье вы найдите гайд по разработке простого DNS-сервера на Go, и предоставляет исходный код проекта для самостоятельного изучения.​

Годное чтиво на выходные )

📌Читать

#junior #golang #go #dns

@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Получите оффер в Авито за одни выходные на Weekend Offer для опытных Go-разработчиков!

Что предлагают?
— работу над уникальными фичами и функционалом крупнейшего сервиса объявлений, включая разработку ML-моделей, VPN-решений и системы DDoS-защиты;
— конкурентную зарплату, ДМС и дополнительные дни отпуска;
— формат работы на выбор: офис или удаленка;
— мощное железо, опенсорс, ежегодный бюджет на обучение, а еще массажиста в офисе и премии.

Ждут в том числе бэкендеров с другим стеком, готовых переучиться на Go. Присоединяйтесь к масштабным проектам — регистрируйтесь до 23 апреля: https://u.to/6Is1Ig
✔️ Подготовка к собеседованию на DevOps: сборник популярных вопросов с ответами и кодом.

Разделы: HR-этап, техническое интервью, полезные ресурсы и топ вопросов по частоте.

Весь материал на русском, на основе опыта российских компаний. Бери и готовься!

🔗 Github

@golang_google

#devops #девопс
Please open Telegram to view this post
VIEW IN TELEGRAM
Готов к масштабному IT-событию?
GoCloud — конференция для разработчиков, инженеров, IT-руководителей и всех, кому интересны облака и AI.

На GoCloud тебя ждут три трека:

💻 Инфраструктура и сервисы
Доклады о K8s, Bare Metal, платформе данных и других облачных сервисах для ваших задач.

🧠 AI&ML
Погружение в будущее AI: инструменты, обмен опытом и анонсы продуктов, меняющих индустрию.

👨‍💻 Сценарии работы в облаке
Дискуссии и доклады о гибридных решениях, GenAI, безопасности и реальных кейсах клиентов.

30+ докладов, нетворкинг с экспертами и live-демо сервисов ждут тебя 10 апреля.
Регистрация по ссылке 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
✍️ gosecэто инструмент статического анализа кода для Go, который выявляет уязвимости, сканируя AST и SSA-представление программы.

Вместо поверхностного поиска шаблонов он анализирует структуру кода, что позволяет находить сложные уязвимости, такие как SQL-инъекции, проблемы с криптографией или неправильные настройки TLS.
Инструмент можно легко настраивать: включать только нужные проверки, исключать определенные файлы и выводить отчеты в разных форматах.

🔐 Лицензия: Apache 2.0.

🤖 GitHub

@golang_google
🆘 Notify — интрумент, представляющий способ получать мгновенные оповещения о критических событиях прямо в любимые мессенджеры и почту.

Проект подходит для любых сценариев уведомлений: от оповещений о завершении CI/CD-сборок до сигналов от домашних скриптов.

С недавних пор добавили поддержку Telegram, Slack, Discord и других платформ через единый интерфейс.

🤖 GitHub

@golang_google
💡В мире технологий важно не просто следить за трендами, но и понимать, как они воплощаются в реальных проектах. Data Fusion 2025 — это конференция, где обсуждают практическое применение передовых ИТ-решений, от нейросетей до больших данных.

🚀 Что вас ожидает:

14 тематических треков — от искусственного интеллекта до кибербезопасности
250+ спикеров — эксперты индустрии, науки и бизнеса, готовые поделиться опытом и инсайтами
70+ сессий — глубокий анализ кейсов, обсуждение трендов и практических решений

💡 Почему это стоит посетить:

🔍 Поймёте, как выстраиваются передовые DS- и ML-системы — от пайплайнов до инфраструктуры
💬 Сможете задать вопрос тем, кто уже решает задачи на боевых данных, а не только пишет про них
🧩 Разберетесь в архитектурах, которые позволяют внедрять ИИ не “для отчёта”, а в реальные процессы
⚙️ Погрузитесь в лучшие практики DataOps, governance и synthetic data — с цифрами, метриками и кейсами

📅 Детали мероприятия:
🗓 16–17 апреля 2025 года
📍 Москва, технологический кластер «Ломоносов»
🎟 Участие бесплатно после прохождения онлайн-регистрации на официальном сайте в расширенной форме.

🔗 Подробнее о конференции и регистрация: data-fusion.ru

___
*DS — анализ данных (Data Science)
*ML — машинное обучение (Machine Learning)
*DataOps — операционное управление данными
*Governance — управление политиками и процессами работы с данными
*Synthetic data — синтетические данные
dbc4go

Это AI-генератор кода, который берет Go-код с контрактами (правилами), написанными прямо в комментариях, и создает новую версию кода.

▪️ Как работает?
Он "инструментирует" ваш код, добавляя в начало функций/методов блоки проверки, которые следят за выполнением контрактов во время работы программы.

▪️ Зачем нужно?
Чтобы автоматически проверять соблюдение условий (например, что функция получает правильные входные данные или возвращает ожидаемый результат) во время выполнения. Если контракт нарушен — программа упадет (panic), явно указывая на проблему.

▪️ Преимущество:
Контракты находятся в комментариях, поэтому исходный код остается валидным Go-кодом. Инструментированную версию можно использовать для тестирования (например, запустить go generate, а потом go test), чтобы повысить шансы на обнаружение багов, комбинируя тесты и контракты.

По сути, dbc4go помогает писать более надежный код на Go, внедряя проверки контрактов непосредственно во время выполнения.

📌 Github

@golang_google
🎊 Выпущены версии Go 1.24.2 и 1.23.8!

Эти релизы являются минорными и в основном направлены на исправление проблем безопасности.

🔐 Безопасность: Содержит исправление безопасности для net/http (CVE-2025-22871).

📣 Анонс: https://groups.google.com/g/golang-announce/c/Y2uBTVKjBQk/m/cs_6qIK5BAAJ

📦 Скачать https://go.dev/dl/#go1.24.2

#golang #go #release

@golang_google
🌐 GoDoxy — лёгкий и быстрый reverse proxy с Web UI.

Особенности:
— простая настройка;
— многоузловая конфигурация с агентами;
— понятные сообщения об ошибках;
— авто SSL через Let's Encrypt (DNS-01);
— горячая перезагрузка при изменениях;
— маршруты из Docker-контейнеров;
— idlesleeper: спящий режим при простое;
— резервный HTTP-прокси и перенаправление TCP/UDP;
— поддержка OpenID Connect;
— middleware и кастомные страницы ошибок;
— Web UI: управление, редактор, мониторинг, логи;
— работает на Linux/AMD64, Linux/ARM64.

🔗 Github

@golang_google
Forwarded from Golang Books
👣 “Common Go Performance Patterns” — распространённые паттерны производительности в Go.

В ней рассматриваются ключевые техники, сгруппированные в четыре основные категории:​


1. Управление памятью и эффективность:

- Pooling объектов: Повторное использование объектов для снижения нагрузки на сборщик мусора и уменьшения накладных расходов на выделение памяти.​

- Предварительное выделение памяти: Заранее задавать емкость срезов и карт для предотвращения дорогостоящих операций изменения размера.​

- Выравнивание полей структур: Оптимизация расположения полей в структурах для минимизации заполнения и улучшения локальности данных.​

- Избегание упаковки интерфейсов: Предотвращение скрытых выделений памяти путем отказа от ненужных преобразований типов к интерфейсам.​


- Техники нулевого копирования: Минимизация копирования данных с использованием срезов и буферов.​

- Эффективность памяти и сборщик мусора Go: Снижение нагрузки на сборщик мусора путем минимизации использования кучи и повторного использования памяти.​

- Стековые выделения и анализ ускользания: Использование анализа ускользания для размещения значений в стеке, когда это возможно.​

2. Конкурентность и синхронизация:

Пулы рабочих горутин: Контроль уровня конкурентности с помощью пулов фиксированного размера для ограничения использования ресурсов.​

Атомарные операции и примитивы синхронизации: Использование атомарных операций или легковесных блокировок для управления общим состоянием.​

Ленивая инициализация: Отсрочка выполнения затратных операций до момента, когда они действительно необходимы.​

Совместное использование неизменяемых данных: Безопасное совместное использование данных между горутинами без блокировок путем обеспечения их неизменяемости.​
goperf.dev

Эффективное управление контекстом: Использование пакета context для передачи тайм-аутов и сигналов отмены между горутинами.​


3. Оптимизация ввода/вывода и пропускная способность:


Эффективное буферизирование: Использование буферизованных читателей/писателей для минимизации вызовов ввода/вывода.​

Группировка операций: Объединение нескольких мелких операций для уменьшения количества раунд-трипов и повышения пропускной способности.​

4. Оптимизация на уровне компилятора и настройка:

Использование флагов оптимизации компилятора: Применение флагов сборки, таких как -gcflags и -ldflags, для настройки производительности.​

Стековые выделения и анализ ускользания: Анализ того, какие значения переходят в кучу, чтобы помочь компилятору оптимизировать размещение памяти.​
goperf.dev

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

🔗 Читать

@golang_books
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
👣 Goshs — это удобная и функциональная система передачи файлов на Go, альтернатива Python библиотеки SimpleHTTPServer.

Позволяет загружать и скачивать файлы через HTTP/S с поддержкой самоподписанных или пользовательских сертификатов и базовой аутентификацией.

Ключевые возможности: загрузка/скачивание в .zip, поддержка POST/PUT-запросов, доступ через Drag & Drop, удаление файлов (по одному или массово).

Дополнительно: аутентификация, работа с буфером обмена, WebDAV (чтение), настройка тем и выполнение команд на хосте.

📌 Github

@golang_books
Please open Telegram to view this post
VIEW IN TELEGRAM
Highload буткемп: Системный дизайн, Производительность и Масштабирование

Приглашаем на курсы для прокачки навыков архитектора и проектировщика на весеннем highload-потоке от DevHands.

🌐 Приходите на уникальный образовательный трек без отрыва от работы (занятия вечером), в рамках которого вы:

🤩 изучите ключевые хайлоад-паттерны и получите навыки проектирования систем с миллионной аудиторией (балансировка, масштабирование, высокая доступность, шардинг, CAP/PACELS, транзакционные очереди и многое другое)
🤩 поупражняетесь в системном дизайне и проектировании, и получите живую обратную связь на реальных задачах: магазин/маркетплейс, объявления, соцсети, такси/доставка и тд.
🤩 погрузитесь в highload максимально, при желании в первый же день получите в управление свою инфраструктуру, попробуете “выжать” 100K RPS из своих сервисов, получите уникальный опыт работы с кластерными решениями - Redis, SPQR, CockroachDB
🤩 научитесь планировать нагрузку и связывать бизнес-показатели с нефункциональными требованиями к системе
🤩 попрактикуетесь в проведении и прохождения секций системного дизайна на интервью

Только «живые» онлайн-сессии: лекции, брейнштормы, презентации домашних проектов.

🗓 Старт потока 22 апреля, изучайте программу и записывайтесь:

🤩 Буткэмп “Производительность и масштабируемость” для тех, кто хочет поработать с собственной инфрой

🤩 Курс “Системный дизайн высоконагруженных проектов” для тех, кто хочет только практику проектирования “у доски”

🥸 Кто мы: R&D-центр Devhands, основатель школы и автор курса Алексей Рыбак, ex-СТО Badoo и Yum! Brands, с многолетним опытом высоконагруженных проектов и управления глобальными технологическими организациями, член программного комитета Highload.

Реклама. ИП Рыбак А.А. ИНН 771407709607 Erid: 2Vtzqv8dwE1
Please open Telegram to view this post
VIEW IN TELEGRAM
🗂️ Dbmate — инструмент для миграций БД без привязки к языку.

Это самодостаточный бинарник, который не требует интеграции с конкретным фреймворком и одинаково хорошо работает с Go.

Главная фишка Dbmate — простота. Вместо сложных DSL миграции пишутся на чистом SQL, а для подключения к БД используется привычное DATABASE_URL. При этом инструмент не забывает о важных деталях: атомарности выполнения, версионировании по времени и возможности быстрого создания/удаления тестовых БД.

🤖 GitHub

@golang_google
👣Mox — это современный, полнофункциональный и защищенный почтовый сервер с открытым исходным кодом, предназначенный для самостоятельного обслуживания электронной почты без необходимости сложного администрирования. ​
Mox

- Основные возможности Mox:
Быстрый и простой запуск: Позволяет легко развернуть и поддерживать почтовый сервер для одного или нескольких доменов. ​

-Поддержка протоколов:
SMTP с расширениями: Для приема и отправки электронной почты.​

- IMAP4 с расширениями: Обеспечивает доступ почтовых клиентов к электронной почте. ​

- Автоматический TLS с ACME: Интеграция с Let's Encrypt и другими центрами сертификации для обеспечения безопасного соединения. ​

📌 Механизмы аутентификации и защиты:
SPF: Проверяет, разрешено ли удаленному узлу отправлять электронную почту от имени домена.​

DKIM: Подтверждает, что сообщение подписано заявленным доменом отправителя, а также подписывает исходящие письма для проверки другими серверами.​

DMARC: Применяет политики SPF/DKIM, установленные доменами, и анализирует входящие сводные отчеты DMARC. ​

Фильтрация спама и отслеживание репутации: Обучается на основе предпочтений пользователя, анализируя нежелательную и желаемую почту, для повышения эффективности фильтрации. ​
Mox

Mox предоставляет все необходимые инструменты для создания надежного и безопасного почтового сервера, объединяя современные технологии в едином, легко управляемом решении.

Github

@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Deep vs Shallow Go interfaces

В этой статье рассматривается концепциюя «глубоких» и «поверхностных» интерфейсов в Go, основываясь на идеях из книги Джона Оустерхута «A Philosophy of Software Design».

Автор утверждает, что
"правильные" модули предоставляют мощную функциональность через простые интерфейсы, подчеркивая важность соотношения между полезностью абстракции и сложностью её интерфейса.


Пример глубокого интерфейса:
В качестве примера глубокого интерфейса рассматривается io.Reader из стандартной библиотеки Go:​


type Reader interface {
Read(p []byte) (n int, err error)
}


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

Пример поверхностного интерфейса:

В противоположность, рассматривается интерфейс Cmdable из клиента go-redis, который включает около 200 методов:​


type Cmdable interface {
Pipeline() Pipeliner
Pipelined(ctx context.Context, fn func(Pipeliner) error) ([]Cmder, error)
// ... множество других методов ...
}


Каждый метод выполняет одну конкретную задачу с простой реализацией, но большое количество методов усложняет понимание и использование интерфейса, перекладывая ответственность за правильное использование на разработчика.

Автор подчеркивает, что глубокие интерфейсы с простыми и лаконичными методами, скрывающими сложную реализацию, способствуют созданию более понятного и поддерживаемого кода. В то время как поверхностные интерфейсы с обширным набором методов могут усложнять понимание и использование, увеличивая когнитивную нагрузку на разработчика.

🔗 Подробнее

@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM