Хабр, привет!Меня зовут Артём. Я — fullstack-разработчик уровня Middle, работаю с проектами на Python, JavaScript, Golang, Rust. В этой статье хочу рассказать о том, как я, подсмотрев западное приложение Kahoot, решил с нуля разработать собственную платформу для интерактивного обучения с огромным количеством ИИ-функций.ВведениеВ этом году я работаю над проектом Quaize — веб-платформой, позволяющей создавать учителям и проходить ученикам интерактивные викторины.Была поставлена цель: сделать быст…
Давайте рассмотрим как управляют памятью два популярных языка программирования - Rust и Go.Когда запускается программа, создается процесс с собственным адресным пространством и потоками, выполняющимися на ядрах. Процессор работает с виртуальной памятью - абстракцией, которой управляет операционная система.Например в Go, когда мы создаем массив:arr := make([]byte, 100)Рантайм запрашивает диапазон виртуальных адресов, но физическая память выделяется не сразу, а при первом обращении к данным:first…
Команда Go for Devs подготовила перевод статьи о том, почему автор почти десять лет не использует JSON в своих API и предпочитает Protobuf. Он объясняет, как строгая типизация, компактная бинарная сериализация и генерация кода дают разработчикам больше надёжности и скорости.Если вы разрабатываете или используете API, с вероятностью 99% оно обменивается данными в формате JSON. Он стал фактическим стандартом современного веба. И всё же вот уже почти десять лет, создавая серверы — будь то для личн…
Недавно мне нужно было запустить VLESS-подписку под Windows, подружить её с рабочим VPN и всеми сопутствующими «прелестями». Попробовал v2rayN, Nekoray, Hiddify — и довольно быстро понял, что хочу написать собственный клиент. Так появился singbox-launcher: 👉 https://github.com/Leadaxe/singbox-launcherНиже — немного подробностей, почему так и что получилось.Что пошло не так с существующими клиентамиПервое, что выбивает из колеи — конфиги.Они либо спрятаны глубоко под GUI, либо оформлены так, что…
Меня зовут Миша, я бэкенд‑разработчик в платформе Яндекс Еды, и сейчас я покажу немного настоящего кода процессинга заказа.e, err := w.prepareExecutor(ctx, req) if err != nil { return nil, err } if err := e.CreateAndPay(); err != nil { return e.HandleResult(err) } if err := e.InitializeNativeDelivery(); err != nil { return e.HandleResult(err) } if err := e.WaitForOrderConfirmation(); err != nil { return e.HandleResult(err) } if err := e.WaitDelivery(); err != nil { retur…
Всем привет! Меня зовут Герман Кравец, я больше десяти лет в IT. В МойОфис работаю руководителем группы Календаря в отделе разработки Mailion — это наша отказоустойчивая корпоративная почта для крупного бизнеса.В этой статье расскажу, как мы с командой искали новое решение для нашего API Gateway: зачем вообще понадобилось его менять, с какими проблемами столкнулись и как проходили все этапы — от первых «что-то идёт не так» до финального рефакторинга и запуска нового Gateway в прод.Будет немного…
Добрый день, всем читающим данную статью. Недавно эксперементируя с eBPF для разработки нового функционала своей EDR для linux-серверов, я столкнулся с огромной проблемой: на просторах интернета есть огромный пласт статей по теории работы с eBPF, однако кратких практических статей как работать с BPF мной найдено не было. Если быть более точным, то такие статьи есть, однако, они не дают понимания функционала. В общем, в данной статье хотелось бы написать краткий гайд по работе с eBPF с уклоном …
Команда Go for Devs подготовила перевод статьи о том, как работает первый этап компиляции Go — сканер. Автор подробно показывает, как исходный код превращается в поток токенов, что происходит с каждым символом и откуда берётся автоматическая вставка точек с запятой. Если вы хотите понять Go «изнутри» — начинайте именно отсюда. Это первая статья в серии, где я шаг за шагом проведу вас по всему компилятору Go — от исходного кода до исполняемого файла. Если вам когда-то было интересно, что происх…
27 ноября мы встретились на Golang Meetup и обсудили, как строить надёжную бизнес-логику, оптимизировать работу с памятью и проектировать масштабируемую событийную архитектуру.Делимся записями докладов:Иерархические стейт-машины: инструмент для организации бизнес-логики | Сергей Шлянин, Go-разработчик в WB BankHSM помогает командам декомпозировать сложные процессы и не смешивать контексты. Сергей рассказал, как строгая архитектура упрощает тестирование, делает код прозрачнее и позволяет системн…