TGViewer
Channel Public Channel
Go in Action

Go in Action

@go_in_action

Всё про язык программирования Go на русском и английском языке

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels
Subscribers
4.11K
Photos
2.4K
Videos
3
Links
4K

Showing posts older than #4688 · Back to latest

Older Posts 20 shown
Post #4687 1.29K
Компонентная модель WebAssembly: от Go 1.24 к 1.25 для интеграции с Rust

Новая эра межъязыкового взаимодействия

До 2024 года интеграция Go и Rust была либо через хрупкий CGO, либо через сетевые вызовы с накладными расходами. Выход Go 1.24 с директивой //go:wasmexport и дальнейшие оптимизации в Go 1.25 изменили правила игры благодаря WebAssembly Component Model (WCM).

Компонентная модель - это стандартизированная система типов (WIT) и ABI, позволяющая компонентам на разных языках взаимодействовать напрямую, без сериализации. Сегодня мы создадим Go-компонент и запустим его из Rust.


Читать: https://habr.com/ru/articles/982180/

#ru

@go_in_action | Другие наши каналы
  • ❤ 1
Post #4686 1.02K
ChatGPT Atlas не нужен: Пишем свой AI-«браузер» который не стыдно запустить

Почти каждый день в ленте я вижу новости про очередного "революционного" AI-агента. AutoGPT, BabyAGI, Devin, Cursor, Perplexity, Atlas.... мол они заменят программистов, копирайтеров а в итоге....

Я, как хотел бы инструмент, который просто работает, мол "Зайди в гугл, найди доку, скажи мне ответ" ради интереса - я решил написать свой AI-тул....


Читать: https://habr.com/ru/articles/982058/

#ru

@go_in_action | Другие наши каналы
Post #4685 944
Плагины с человеческим лицом: истории комьюнити OpenIDE

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

IDE - это не только кодовый редактор, вспомогательные инструменты и графические интерфейсы. IDE - это комьюнити. Люди, которые расширяют возможности платформы, находят нестандартные решения, закрывают реальные боли и делятся своим опытом с другими. Именно они превращают среду разработки из продукта в экосистему — живую и дышащую.

И когда до Нового года остаётся совсем немного времени, а сил на сложные технические материалы почти не остаётся, мы решили немного сменить ритм. Вместо глубоких разборов — лёгкое, тёплое и предпраздничное чтение. Так появилась идея серии интервью с участниками нашего комьюнити — людьми, которые создают плагины для OpenIDE.

Мы поговорили с разработчиками, которые вкладывают своё время, знания и идеи в то, чтобы OpenIDE становилась лучше, удобнее и сильнее. У каждого из них — своя история, мотивация и собственный взгляд на то, каким должен быть современный инструмент для разработки.

Это истории не столько про технологии, сколько про идеи, мотивацию и путь от «а что если» до готового инструмента, которым пользуются другие. Формат, который позволяет выдохнуть, вдохновиться и спокойно войти в новый год.

Мы хотим сделать этих людей видимыми. Показать, что за каждым плагином стоит не абстрактная функция, а конкретный человек или команда, которым действительно не всё равно. И, возможно, вдохновить других стать частью этого сообщества - потому что OpenIDE развивается именно так: вместе с людьми и благодаря людям.


Читать: https://habr.com/ru/companies/haulmont/articles/981830/

#ru

@go_in_action | Другие наши каналы
Post #4684 825
Основы виртуальной памяти

Задумывались ли вы о том, зачем компьютерам нужна оперативная память (ОП, RAM), когда у них уже есть дисковое хранилище (диск)? Ответ кроется в скорости доступа. Хотя диск является постоянным, он намного медленнее, чем ОП. ОП жертвует изменчивостью ради скорости - данные исчезают при выключении питания, но время доступа гораздо меньше. Как следствие, центральный процессор (ЦП, CPU) имеет доступ только к ОП, а не к диску.

ЦП имеют встроенные регистры, которые еще быстрее, чем ОП. Тогда зачем нам вообще ОП? Затем, что количество и размер регистров ограничены. Представьте функцию, которой нужно работать с тысячью переменных - все они не поместятся в регистры. Что если нам нужно хранить большие структуры данных, такие как массивы или объекты? У регистров нет емкости (capacity). Вот где в игру вступает ОП - она предоставляет пространство, необходимое для обработки больших и сложных данных.


Читать: https://habr.com/ru/articles/981844/

#ru

@go_in_action | Другие наши каналы
Post #4683 855
Как устроено фаззинг-тестирование на Go, которое знает о ваших багах больше, чем вы сами

Привет, Хабр! Меня зовут Иван, я инженер по информационной безопасности в департаменте разработки общей платформы компании YADRO. Я занимаюсь фаззинг-тестированием уже два года, через мой фаззинг прошло много кода на языках C и Go.

В этой статье будет и теория, и практика. Сначала разберемся, как устроен фаззинг, его алгоритмы и при чем тут ГОСТ. Затем я расскажу, как написать тулу для фаззинг-тестирования проектов на Go. В практической части я подробно опишу процесс разработки и покажу примеры кода, так что используйте статью как инструкцию.


Читать: https://habr.com/ru/companies/yadro/articles/981544/

#ru

@go_in_action | Другие наши каналы
  • ❤ 1
Post #4681 922
Не знаете, в чём встречать Новый год? Не беда

Мы как раз собрали стек новогодних нарядов, чтобы вы могли сиять ярче, чем любая гирлянда. Скорее заходите в нашу примерочную и выбирайте скин!

Реклама
Post #4680 987
Разбираем net/http на практике: пишем веб-сервис DeadDrop для безопасного обмена сообщениями

Первая часть цикла «Разбираем net/http на практике»: создаём с нуля сервис DeadDrop — аналог Privnote для безопасной передачи самоуничтожающихся сообщений и файлов.

На чистой стандартной библиотеке net/http разбираем основы:

• запуск HTTP-сервера

• маршрутизация в ServeMux

• написание middleware (логирование и recovery от panic)

• работа с HTML-шаблонами и layout’ами

• подключение статики через http.FileServer и embed.FS

В итоге получаем работающий сервер с красивой главной страницей, формой создания «ячейки» и базовой архитектурой проекта — всё без внешних зависимостей.

Идеально для начинающих и тех, кто хочет глубоко понять внутренности популярных фреймворков вроде Gin и Echo. Пишем код вместе!


Читать: https://habr.com/ru/articles/981356/

#ru

@go_in_action | Другие наши каналы
Post #4679 835
Как создать документацию к коду, а потом ее обновить с помощью нейросети

В этой статье мы рассмотрим, как использовать нейросети для описания кода через VS Code и как вносить изменения в описание в репозитории с помощью MCP-сервера GitHub.


Читать: https://habr.com/ru/articles/981282/

#ru

@go_in_action | Другие наши каналы
Post #4678 934
Python (FastAPI) vs Go: нагрузочный тест и анализ производительности

Выбор backend-языка часто сводится к компромиссу между скоростью разработки и производительностью. Python с FastAPI ценят за простоту и быстрый старт, а Go — за высокую производительность и предсказуемость работы под нагрузкой. Но что если взглянуть на реальные цифры, а не на общие тезисы?

В этой статье я провёл нагрузочный тест двух минимальных серверов: Go (net/http) и Python (FastAPI + Uvicorn) с использованием Locust. Мы тестировали один endpoint под 1000 одновременных пользователей, с высокой скоростью добавления новых, чтобы увидеть пределы производительности и стабильности откликов.

Статья полезна всем, кто разрабатывает API, оптимизирует серверы и хочет принимать решения на основе фактических данных, а не слухов. Результаты эксперимента наглядно показывают, где Python подходит для быстрого старта, а где Go выигрывает в производительности и стабильности.


Читать: https://habr.com/ru/articles/981176/

#ru

@go_in_action | Другие наши каналы
  • 👍 1
  • 🔥 1
Post #4677 1.02K
Написал свой ngrok за 10 часов (Antigravity + Claude Code)

Привет, Хабр. Расскажу, как за 10 часов написал self-hosted аналог ngrok на Go.

Проблема

Нужно протестировать вебхук от Т-Банк/Telegram/любого внешнего сервиса. Запускаешь ngrok — не работает. Россия заблокирована. Каждый раз VPN, а с ним становится недоступна часть внутренних ресурсов. В какой-то момент решил написать своё.


Читать: https://habr.com/ru/articles/980896/

#ru

@go_in_action | Другие наши каналы
  • ❤‍🔥 4
  • ✍ 1
  • 👏 1
  • 🆒 1
Post #4676 955
Go после Rust: краб и суслик

Случилось так, что мне пришлось участвовать в разработке на Go. До этого с Go я был знаком шапочно, большую часть времени работая с Rust. Изучить Go оказалось не сложно, но после того, как мы приступили к разработке, обнаружились неприятные моменты. Выяснилось, что по сравнению с Rust, в Go местами не хватает гибкости языка, местами есть способы выстрелить себе в ногу.
Так что спустя почти полтора года промышленной разработки на Go, я решил написать эту статью, где (без какого-то строгого порядка) перечислю моменты Go, которые вызывают боль у человека, пришедшего из другого языка (сравнивать я буду с Rust, так как это мой основной язык).


Читать: https://habr.com/ru/articles/980752/

#ru

@go_in_action | Другие наши каналы
  • ❤ 1
Post #4675 924
Генерация кроссвордов: «достаточно хорошее» решение NP-полной задачи

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

В конце 2021 года, уже сильно после начала локдауна, моя одержимость кроссвордом газеты The New York Times превратилась в хобби-проект. Я хотел написать приложение с кроссвордами, понял, что мне нужны сами кроссворды, попробовал сочинять их вручную, осознал унылость этого процесса и задался вопросом: можно ли генерировать их алгоритмически? В этом году я наконец-то выпустил Crosswarped для iOS и Android — игру в кроссворды, созданную на основе генератора, описываемого в этой статье.


Читать: https://habr.com/ru/articles/980182/

#ru

@go_in_action | Другие наши каналы
Post #4674 778
Нейроучитель — NeuroTeacher

Всем привет!

Хочу рассказать об очередном своем пет-проекте, который может быть кому-то тоже полезен. А еще поделиться хорошим предновогодним настроением. Поэтому рассказывать буду в слегка позитивном и шуточном стиле :-)

Итак, перед вами — нейроучитель! Хех... Сразу говорю — к нейросетям он не имеет отношения (или опосредованное). Да и не учитель, собственно. Это моя собственная методика интервальных повторений, то есть зубрежки, увеличения словарного состава... Но обо всем по порядку - в статье я расскажу, почему это все же "нейро", зачем и каким образом.


Читать: https://habr.com/ru/articles/980108/

#ru

@go_in_action | Другие наши каналы
  • ❤ 1
Post #4673 747
Как мы в объектном хранилище отказы реплик обрабатываем

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

Я Владислав Доронин — Go-разработчик в команде S3 облачной платформы Cloud.ru Evolition. Хочу рассказать про подход к управлению отказами реплик, который мы кристаллизовали опытом выхода из строя разных частей системы. Практика показала, что массовые и не очень отказы приводят к взлету задержки ответов и увеличению количества client-side повторов, которые тоже висят. Пускай на уровне записи из-за требований репликации и гарантии мы много поделать с ситуацией не можем (хотя и там не все безнадежно), то вот чтение гораздо более гибкое. У нас получилось сделать retry на чтении красивыми, об этом сегодня и поговорим.


Читать: https://habr.com/ru/companies/cloud_ru/articles/979412/

#ru

@go_in_action | Другие наши каналы
Post #4672 704
Go, cgo и Docker: практичная кросс-платформенная сборка

Команда Go for Devs подготовила перевод статьи о том, как упростить сборку Go-проектов с cgo, используя Docker. Авторы на реальном примере показывают, как избавиться от платформенной боли, сложных зависимостей и ручной настройки окружения, при этом сохранив воспроизводимость продакшен-сборок. Практичный разбор для тех, кто сталкивался с cgo и кроссплатформенной сборкой.


Читать: https://habr.com/ru/articles/978754/

#ru

@go_in_action | Другие наши каналы
Post #4671 685
Ассемблер для гоферов. Стек. Особенности amd64, arm64 и arm. Часть 3

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


Читать: https://habr.com/ru/companies/ruvds/articles/979326/

#ru

@go_in_action | Другие наши каналы
  • ❤ 1
Post #4670 776
Теги структур — худшее что есть в go

Всем доброе время суток. Я пишу всякое на Go в Ви.Tech (IT-дочка ВсеИнструменты.ру) и, честно говоря, обожаю этот язык. Когда говорят о проблемах Go, обычно вспоминают отсутствие наследования или своеобразную обработку ошибок. Гораздо реже речь заходит о том, что, на мой взгляд, действительно можно отнести к проблемам.


Читать: https://habr.com/ru/articles/979878/

#ru

@go_in_action | Другие наши каналы
  • 🤣 2
  • 🆒 2
  • ❤ 1
  • 👌 1
Post #4669 762
1000 и один способ угробить программу из-за гонки данных в Go

Команда Go for Devs подготовила перевод статьи о самых коварных и трудноуловимых гонках данных в Go. Автор показывает на реальных примерах, как даже опытные разработчики легко попадают в ловушки конкурентности: от случайных захватов переменных в замыканиях до неправильного срока жизни мьютексов и скрытых гонок в стандартной библиотеке.


Читать: https://habr.com/ru/articles/975844/

#ru

@go_in_action | Другие наши каналы
Post #4668 694
Go: 15 самых популярных докладов 2025 года на YouTube

Go 1.25, кодовые агенты, тулчейн, наблюдаемость, безопасность, тестирование, производительность и работа высокодоступных систем.

Читать: «Go: 15 самых популярных докладов 2025 года на YouTube»

#ru

@go_in_action | Другие наши каналы
Post #4667 819
Масштабирование LLM с помощью Golang: как мы обслуживаем миллионы запросов LLM

Хотя экосистема LLM в основном ориентирована на Python, мы нашли Go исключительно подходящим для производственных развертываний. Наша инфраструктура на базе Go обрабатывает миллионы ежемесячных запросов LLM с минимальной настройкой производительности. Помимо хорошо документированных преимуществ Go (см. отличное изложение Роба Пайка о преимуществах Go), три возможности оказались особенно ценными для нагрузок LLM: статическая проверка типов для обработки выходных данных модели, горутины для управления параллельными вызовами API и интерфейсы для построения составных конвейеров ответов. Вот как мы реализовали каждую из них в нашем производственном стеке.


Читать: https://habr.com/ru/articles/979544/

#ru

@go_in_action | Другие наши каналы
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →