Обновить
94.58

Go *

Компилируемый, многопоточный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Erlang-совместимые битовые строки в Go: создаём funbit

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров904

Erlang-совместимые битовые строки в Go: создаём funbit

TL;DR: Мы перенесли битовый синтаксис Erlang в Go, чтобы парсить бинарные протоколы без боли. Получилась библиотека funbit — декларативный парсер с поддержкой не выровненных по байтам данных.

Предыстория

В процессе разработки funterm — мультиязыкового REPL, объединяющего Python, Lua, JavaScript и Go — мы столкнулись с необходимостью эффективной работы с бинарными данными. Нужно было парсить сетевые протоколы, обрабатывать структурированные данные и работать с битовыми полями на уровне отдельных битов.

Читать далее

Насколько быстр Go? Симуляция миллионов частиц на смарт-ТВ

Уровень сложностиПростой
Время на прочтение17 мин
Количество просмотров4.8K

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

Читать далее

Как создать TUI утилиту на GO

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров5.6K

Расскажу в данной статье об создании TUI консольного приложения на Go, настроим Goreleaser, посмотрим на архитектуру консольных приложений

Читать далее

Go, Rust или всё же C++? Куда мы переписываем наш высоконагруженный бэкенд в 2025

Уровень сложностиСредний
Время на прочтение2 мин
Количество просмотров24K

Всем привет! Сегодня хочу зажечь настоящий холивар — но с практическим уклоном. Речь пойдет о нашем большом рефакторинге, вернее, о почти полном переписывании ядра нашего API-гейтвея.

Немного контекста: У нас классический монолит на Java (Spring Boot), который неплохо служил нам лет 5. Но с ростом нагрузки до 100k+ RPS мы уперлись в лимиты:

Читать далее

Как я писал свою звонилку для видеозвонков

Время на прочтение4 мин
Количество просмотров11K

Я написал свою альтернативу звонкам в WhatsApp и Telegram — полноценный Android-клиент на WebRTC с поддержкой P2P-аудио и видео, STUN/TURN, сигналингом и собственным UI.

Забудьте про «корпоративные мессенджеры»: проект JOPA Call (👉 «Just One Peer App») работает напрямую, без лишних посредников.

Реализовано: peer-to-peer соединения, fallback через TURN, мини-preview окна камеры, управление потоками и адаптивное видео.

Макс и его «супераппы» могут курить в сторонке — теперь у меня есть свой звонок-клиент, который не зависит от гигантов.

Читать далее

Обедающие философы на Go: как не умереть от взаимной блокировки и голодания

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров2.4K

Команда Go for Devs подготовила перевод статьи, в которой автор шаг за шагом решает классическую задачу об обедающих философах на Go. Вы узнаете, почему наивный подход ведёт к взаимной блокировке, как нарушить симметрию, чтобы избежать deadlock’а, и почему даже «рабочее» решение может оставить одного философа голодать вечно.

Читать далее

Как мы создали ИИ-бота для генерации презентаций, когда клиенты поставили в тупик

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров1.1K

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

Так родилась идея нашего ИИ-чат-бота, который теперь берёт на себя всю рутину и создаёт презентации, от которых клиенты в восторге. Расскажу, как мы к этому пришли и что из этого получилось.

Читать далее

Python и Go — идеальный набор (высокоуровневых языков)

Время на прочтение5 мин
Количество просмотров14K

Перед вами - известное письмо Линуса Торвальдса, где он написал, что если бы единственная причина использовать С, а не С++, была в том, чтобы отпугивать программистов на С++ - это уже была бы весомая причина.

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

Читать далее

Почему Go до сих пор меня раздражает?

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров12K

Команда Go for Devs подготовила перевод статьи о том, почему спустя десять лет автор по-прежнему критикует Go. Ошибки на миллиард долларов, загадочный nil, проблемы с памятью и «магия» defer — по мнению автора, всё это делает язык излишне сложным и болезненным. А стоит ли оно того?

Читать далее

Как я строил API для выгрузки и обработки FHIR-данных на Go

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров894

FHIR (Fast Healthcare Interoperability Resources) - это стандарт обмена медицинскими данными, разработанный HL7. Сегодня он является основой для взаимодействия между EHR-системами, мобильными приложениями и медицинскими сервисами. Последние актуальные версии стандарта - R4 (2019) и R5 (2023).

Если очень коротко: FHIR описывает ресурсы (Patient, Observation, Encounter, MedicationRequest и т. д.), которые доступны через REST API в JSON или XML. Поверх этого можно строить и пациентские приложения, и интеграции между медицинскими организациями.

На этой базе появились так называемые patient-facing API - интерфейсы, через которые сам пациент или доверенные приложения могут получить доступ к медицинским данным: диагнозам, назначениям, результатам лабораторных анализов, изображениям, выпискам. Для США эту модель дополнительно закрепили регуляторы (ONC Cures Act), а для разработчиков удобные инструменты предлагает инициатива SMART on FHIR (OAuth2, scopes вида patient/*.read, PKCE и рефреш-токены).

Однако реальность заметно сложнее, чем стандарты на бумаге. Даже если два провайдера «поддерживают FHIR R4», API у них могут радикально отличаться:

Читать далее

Flight Recorder в Go 1.25 – точечная диагностика без лишних трассировок

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров2.5K

Команда Go for Devs подготовила перевод статьи о новом инструменте диагностики в Go 1.25 — flight recorder. Он позволяет заглянуть в последние секунды работы приложения уже после того, как произошла проблема, и точно понять, что случилось «под капотом». Отличный способ находить тонкие баги и задержки в долгоживущих сервисах без гигабайтов бесполезных трассировок.

Читать далее

Чистовики патриарха. О трёх последних книгах Олега Цилюрика

Время на прочтение6 мин
Количество просмотров4.5K

Привет, Хабр! На связи Олег Сивченко @OlegSivchenko редактор направления «Компьютерная литература».

Наша первая статья в корпоративном блоге вызвала ваш огромный интерес (+122) и оживлённое обсуждение с участием 30 пользователей (считая нас). На наш взгляд, вас заинтересовал вопрос авторских черновиков и доработки их до полноценных рукописей. Развивая тему, связанную со свободным ПО, хочу рассказать вам сразу о трёх наших знаковых книгах, посвящённых операционной системе Linux. Эти книги написал легендарный харьковский программист Олег Иванович Цилюрик (1951 — 2024), к сожалению, не дождавшийся выхода в свет 2-го издания своей книги «Linux и Go. Эффективное низкоуровневое программирование» (оглавление).  Opus Magnum, принадлежащий его перу и вышедший у нас в марте 2023 года, называется «Расширения ядра Linux. Драйверы и модули» (оглавление). Кроме того, мы выпустили экзотический и по-своему незаменимый труд Олега Ивановича, который называется «Сети Linux. Модели и приложения» (оглавление), посвящённый настройке, эксплуатации и внутренней организации оверлейной сети Yggdrasil (октябрь 2023).  Эта книга очень хорошо вписалась по духу и уровню в разрабатываемую нами нишу кибербезопасности, и, судя по отзывам на маркетплейсах, незаменима в нашу эпоху не столь свободного Интернета. Наконец, Олег Иванович самоотверженно справился с переводом одной книги O’Reilly —«Изучаем eBPF: программирование ядра Linux для улучшения безопасности, сетевых функций и наблюдаемости», вышедшей у нас в июле 2024 года. Давайте расскажу о двух из этих книг немного подробнее.

Читать далее

Кэширование в Go: ускоряем API без Redis

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров6.5K

Команда Go for Devs подготовила перевод статьи о том, как кэширование помогает ускорить API на Go и снизить нагрузку на базу данных. В статье разбираются основные стратегии кэширования — от Write-Through до Write-Back — и показан пример реализации кэша с TTL на чистом Go. Отличный материал, если хотите ускорить свой сервис без перехода на Redis.

Читать далее

Ближайшие события

Сборщик мусора в Go. Часть 2: GC Traces

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров2K

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

Читать далее

SteosMorphy: опенсорс замена давно умершему PyMorphy2

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров1.5K

PyMorphy2 — самая популярная библиотека для обработки слов в русском языке. Однако последний коммит в репозиторий этой библиотеки был сделан более 5 лет назад, а её установка на Python версии 3.11+ вызывает трудности, что делает использование данной библиотеки в нынешнее время максимально затруднительным.

Предлагаю рассмотреть новую Open Source библиотеку SteosMorphy, которая является аналогом PyMorphy, но делает всё быстрее и круче!

Ознакомиться

OpenCode: Революция в мире AI-инструментов для разработки

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров14K

Привет, коллеги! Сегодня хочу поделиться с вами своими размышлениями о терминальном AI-агенте OpenCode и его сравнении с другими популярными решениями на рынке. После нескольких месяцев активного использования различных AI-инструментов для кодирования, могу с уверенностью сказать: OpenCode — это действительно что-то особенное.

Читать далее

Как Go 1.24 и Swiss Tables вернули нам 200 гигабайт памяти

Уровень сложностиПростой
Время на прочтение14 мин
Количество просмотров6.6K

Команда Go for Devs подготовила перевод статьи о том, как Go 1.24 с новой реализацией Swiss Tables помог снизить использование памяти в продакшне на сотни гигабайт. В статье разбирают, что изменилось в реализации map, как это отразилось на профилях памяти, и какие оптимизации в коде дали дополнительный эффект.

Читать далее

Distroless приложения (VM/bare-metal)

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров3.9K

Некоторые языки программирования (например, Go и Zig) позволяют собрать приложение без каких-либо зависимостей, в том числе отвязаться от libc, тем самым создание distroless-контейнера на Go становится тривиальной задачей. Но эта же особенность может быть применена не только для создания контейнера, но и для запуска такого приложения в VM или на реальном хосте не используя какой-либо дистрибутив Linux, а используя только ядро Linux и само приложение, построенное с помощью Go (или, например, Zig). Такая возможность позволяет избавиться от дополнительных зависимостей, которые добавляют потенциальные риски с точки зрения атаки на цепочку поставок (supply chain attack).

Читать далее

Go, Telegram, AI: Создаем систему ранжирования трейдинг-каналов по точности прогнозов

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров1K

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

Среди этих способов выделяются два основных: Bot API и MTProto API. Оба предоставляют различные возможности, но имеют и свои ограничения. Автоматизированный сбор данных для машинного обучения или глубокого анализа может быть непростой задачей из-за этих особенностей.

Читать далее

Devsyringe: Хватит копипастить динамические значения

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров2.2K

Сегодня расскажу о Devsyringe — инструменте для автоматизации работы с динамическими значениями в статических файлах.

Мы, разработчики, постоянно сталкиваемся с API-токенами, временными URL, строками подключения и флагами функций. В Node.js и других средах есть dotenv и менеджеры конфигураций, которые подставляют значения во время выполнения.

Но что делать со статическими файлами — HTML, JS-конфигурациями или старыми конфигами? Обычно приходится вручную копировать значения, открывать файлы, вставлять, сохранять — скучно, долго и легко ошибиться. Devsyringe решает эту проблему, автоматизируя процесс.

Читать далее

Вклад авторов