Обновить
225.23

Go *

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

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

Self-hosted связь со своей семьей

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

Я сделал видеосвязь для семьи: один бинарник, домен, 200 рублей в месяц — и всё работает

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

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

Читать далее

Новости

Ассемблер для гоферов. Часть 1

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели12K

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

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

Читать далее

Funxy — гибридный язык программирования со статической типизацией

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

Funxy — гибридный язык программирования со статической типизацией, pattern matching и удобной работой с бинарными данными.

Для чего подходит

Скрипты и автоматизация. Один бинарник без зависимостей — скачал и работает. Встроенная работа с файлами, JSON, HTTP, SQL.

Небольшие приложения. CLI-утилиты, API-сервисы, обработка данных.

Работа с бинарными данными. Парсинг на уровне отдельных битов. Сетевые протоколы, форматы файлов, нестандартные структуры.

Обучение программированию. Простой синтаксис, но с важными концепциями: типы, pattern matching, иммутабельные структуры данных, рекурсия с TCO (можно писать рекурсивный код без страха переполнения стека).

Читать далее

Что нового в GoLand 2025.3

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели7.7K

Команда Go for Devs подготовила краткий разбор новинок GoLand 2025.3. В этот раз IDE получила анализатор утечек ресурсов, встроенный Terraform, улучшенную работу с Kubernetes, поддержку нескольких ИИ-агентов и заметный прирост производительности.

Читать далее

Как куётся опенсорс (часть 1)

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

Я уже около года занимаюсь выведением в опенсорс общего кода, который используется у нас, в Gaijin Entertainment — порой, это бывает непросто. Как с точки зрения выбора — у нас около двухсот пакетов которые считаются обобщенными, так и со стороны облагораживания кода до состояния "и людям не стыдно показать". Но, Я сюда не жаловаться пришел, а делиться опытом😉

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

И какие же?

Protobuf как контракт: spec‑first валидация с protoc‑gen‑validate

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели6.7K

Protobuf как контракт: spec‑first валидация с protoc‑gen‑validate

Первая статья из мини‑серии про валидацию на базе Protobuf. В этой части — концепция spec‑first и protoc‑gen‑validate. В следующей поговорим про protovalidate и то, почему его вообще имеет смысл рассматривать как «следующее поколение» (или же как очередная эволюция в обратную сторону?)

Также, чтобы не пропустить следующую часть, очень рекомендую подписаться на мой телеграмм канал :-)

Читать далее

Функциональное IT искусство

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

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

И если всё это звучит как безумная смесь олдскула, низкоуровневой магии и настоящего инженерного кайфа? Вы правы! В статье я подробно рассказываю, как от студенческого мини приложения дошёл до своего кодека и p2p-звонилки, почему отказался от готовых решений, что пришлось invent-ить с нуля и какие открытия ждали на каждом шаге. Если хочется увидеть, как «а вдруг?» превращается в работающий проект, милости прошу внутрь.

Читать далее

glinq: LINQ для Go с ленивыми вычислениями

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

Привет, Хабр! Я бэкенд-разработчик в спортивном медиа Спортс”. В этой статье расскажу о glinq – LINQ-подобном API для работы с коллекциями в Go. После появления дженериков в Go 1.18 стало возможным реализовать type-safe функциональные операции без рефлексии и дорогостоящих приведений типов.

Читать далее

(VLESS) VPN-клиент под Windows

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

Недавно мне нужно было запустить VLESS-подписку под Windows, подружить её с рабочим VPN и всеми сопутствующими «прелестями». Попробовал v2rayN, Nekoray, Hiddify — и довольно быстро понял, что хочу написать собственный клиент.
Так появился singbox-launcher:
👉 https://github.com/Leadaxe/singbox-launcher

Ниже — немного подробностей, почему так и что получилось.

Читать далее

Лучше, чем JSON: почему я перешёл на Protobuf

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели8.7K

Команда Go for Devs подготовила перевод статьи о том, почему автор почти десять лет не использует JSON в своих API и предпочитает Protobuf. Он объясняет, как строгая типизация, компактная бинарная сериализация и генерация кода дают разработчикам больше надёжности и скорости.

Читать далее

Rust vs Go: управление памятью

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели7.5K

Давайте рассмотрим как управляют памятью два популярных языка программирования — Rust и Go.

Когда запускается программа, создается процесс с собственным адресным пространством и потоками, выполняющимися на ядрах. Процессор работает с виртуальной памятью — абстракцией, которой управляет операционная система.
Например в Go, когда мы создаем массив

Читать далее

Как я создал аналог западной обучающей платформы — Quaize

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели7.8K

Меня зовут Артём. Я — fullstack-разработчик уровня Middle, работаю с проектами на Python, JavaScript, Golang, Rust. В этой статье хочу рассказать о том, как я, подсмотрев западное приложение Kahoot, решил с нуля разработать собственную платформу для интерактивного обучения с огромным количеством ИИ-функций.

Читать далее

Так у вас статика вольюмами маунтится! И другие весёлые приключения в поисках нового Gateway на Go

Время на прочтение14 мин
Охват и читатели11K

Всем привет! Меня зовут Герман Кравец, я больше десяти лет в IT. В МойОфис работаю руководителем группы Календаря в отделе разработки Mailion — это наша отказоустойчивая корпоративная почта для крупного бизнеса.

В этой статье расскажу, как мы с командой искали новое решение для нашего API Gateway: зачем вообще понадобилось его менять, с какими проблемами столкнулись и как проходили все этапы — от первых «что-то идёт не так» до финального рефакторинга и запуска нового Gateway в прод.

Будет немного боли, немного архитектуры и чуть-чуть магии. Если вам интересно, как решать нетривиальные задачи в продуктовой разработке, где стоит использовать готовые решения, а где всё писать вручную, или просто хочется узнать, как мы сократили простои на регрессе с 4–6 часов до пары минут, — добро пожаловать под кат!

Читать далее

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

Как Temporal без боли решает привычную проблему распределённой бизнес-логики

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели15K

Меня зовут Миша, я бэкенд‑разработчик в платформе Яндекс Еды, и в этой статье я расскажу о принципах работы Temporal: почему мы его выбрали как основу нового процессинга, в чём его сильные стороны и как изменилась наша жизнь после перехода. 

Раньше для такого требовались: стейт‑машина с полудюжиной состояний, очереди и воркеры, обработчики на каждое событие и блокировки от race conditions. Теперь всё это описано в одной функции, которая вообще выглядит как псевдокод. 

Магия? Нет, Temporal. 

С тех пор как мы перенесли процессинг на Temporal, разработка существенно упростилась. Пользователь оплачивает заказ, ресторан его подтверждает и готовит, курьер забирает и привозит — ровно это и отражено в коде. Ну разве не прелесть?

Читать далее

Мониторинг в Linux на уровне ядра. Краткое практическое введение в eBPF+Cilium

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

Добрый день, всем читающим данную статью. Недавно эксперементируя с eBPF для разработки нового функционала своей EDR для linux-серверов, я столкнулся с огромной проблемой: на просторах интернета есть огромный пласт статей по теории работы с eBPF, однако кратких практических статей как работать с BPF мной найдено не было.

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

Читать далее

Эволюция Гофера: как нелепый грызун стал иконой Go

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели7.8K

Каждый язык программирования мечтает о своём символе. Кто-то рисует змей, слонов, кто-то выбирает чашки кофе… Но Go пошёл по другому пути и сделал своим лицом существо, которое выглядит так, будто родилось после скрещивания морской свинки, бобра и кролика. 😅

Я Дмитрий Буров – Golang-разработчик, автор Telegram-канала Go Advocate и лидер внутреннего Go-сообщества в Lamoda Tech.  Я хотел бы изложить историю создания Гофера (Gopher'a) – от идеи до финального образа который вы сейчас привыкли видеть.

Читать далее

Как прошёл Golang Meetup Wildberries & Russ

Уровень сложностиПростой
Время на прочтение1 мин
Охват и читатели4.5K

Привет, Хабр! 27 ноября обсудили на Golang Meetup Wildberries & Russ, как строить надёжную бизнес-логику, оптимизировать работу с памятью и проектировать масштабируемую событийную архитектуру. В статье делимся записями докладов.

Читать далее

Как устроен компилятор Go: сканер (лексер)

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели6K

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

Читать далее

Анализ проекта VictoriaMetrics

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели6.4K

Всем привет! Мы давно и усердно работаем по направлению наблюдаемости и регулярно находим интересные статьи. Например, в этой вы узнаете подробности об устройства популярной системы хранения временных рядов — VictoriaMetrics. Перевод мы сделали специально для телеграм-канала Мониторим ИТ. Подписывайтесь! Там еще больше полезных постов о мониторинге.

VictoriaMetrics — это высокопроизводительная и масштабируемая база данных временных рядов и решение для мониторинга. VictoriaMetrics разработана для сбора, хранения и запроса больших объёмов данных временных рядов, что делает её идеальной для мониторинга инфраструктуры, приложений и IoT-устройств. Она поддерживает модели приёма данных как pull (сбор данных в стиле Prometheus), так и push (различные протоколы). Подробности под катом.

Читать далее

Симуляция воды для игр на Go: простая физика частиц

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

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

Читать далее
1
23 ...

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