На самом деле, я человек, который предпочитает писать всю документацию самостоятельно. Меня не страшит код, я довольно хорошо работаю с регулярными выражениями, поэтому преобразование файлов из кода в Markdown не занимает у меня много времени. Но даже мне пришлось согласиться, что в некоторых случаях использовать нейросеть гораздо быстрее и удобнее. И я разберу эти два случая в этой статье.Какие случаи мы рассмотримВ этой статье я покажу:Кейс 1: как сгенерировать документацию к коду с помощью р…
ДисклеймерВАЖНО: Это учебная статья для начинающихДанный материал — первая часть цикла, где мы поэтапно изучаем net/http.Код в этой статье сознательно упрощён для ясности изложения и НЕ является production-ready.Что опущено в этой части (будет в следующих):Меры безопасности (CSRF, security headers, валидация)Graceful shutdown и таймаутыStructured logging (slog)Полноценная архитектураЦель данной статьи: показать базовые механизмы net/http на практическом примере.Не используйте этот код в product…
СодержаниеВведениеУсловия экспериментаАрхитектура тестируемых серверовНастройки нагрузочного тестаРезультаты тестированияПрактические выводыОтветы на вопросыЗаключениеВведениеВыбор backend-языка почти всегда упирается в компромисс между скоростью разработки и производительностью. Python с FastAPI ценят за простоту, читаемость и быстрый старт. Go - за предсказуемость, высокую производительность и эффективную работу под нагрузкой.В обсуждениях часто звучат общие тезисы: «Go быстрее», «FastAPI дос…
На самом деле, я человек, который предпочитает писать всю документацию самостоятельно. Меня не страшит код, я довольно хорошо работаю с регулярными выражениями, поэтому преобразование файлов из кода в Markdown не занимает у меня много времени. Но даже мне пришлось согласиться, что в некоторых случаях использовать нейросеть гораздо быстрее и удобнее. И я разберу эти два случая в этой статье.Какие случаи мы рассмотримВ этой статье я покажу:Кейс 1: как сгенерировать документацию к коду с помощью р…
Как это началосьСлучилось так, что мне пришлось участвовать в разработке на Go. До этого с Go я был знаком шапочно, большую часть времени работая с Rust. Изучить Go оказалось не сложно, но после того, как мы приступили к разработке, обнаружились неприятные моменты. Выяснилось, что по сравнению с Rust, в Go местами не хватает гибкости языка, местами есть способы выстрелить себе в ногу.Так что спустя почти полтора года промышленной разработки на Go, я решил написать эту статью, где (без какого-то…
Генерация кроссвордов — NP-полная задача. Каждая ячейка, в которой пересекаются два слова, создаёт ограничение, которому должны удовлетворять оба слова, и эти ограничения перемножаются в сетке, приводя к комбинаторному взрыву. Эффективного алгоритма, гарантирующего решение, не существует, но вооружившись подходящими эвристиками, можно создать нечто, работающее на удивление хорошо.В конце 2021 года, уже сильно после начала локдауна, моя одержимость кроссвордом газеты The New York Times превратил…
Всем доброе время суток. Я пишу всякое на Go в Ви.Tech (IT-дочка ВсеИнструменты.ру) и, честно говоря, обожаю этот язык. Когда говорят о проблемах Go, обычно вспоминают отсутствие наследования или своеобразную обработку ошибок. Гораздо реже речь заходит о том, что, на мой взгляд, действительно можно отнести к проблемам.ПроблемаGo предоставляет теги структур, которые можно обнаруживать с помощью рефлексии. Они широко используются в пакетах кодирования JSON/XML, парсерах флагов, ORM и других библи…
Go-ассемблер поддерживает разные платформыРанее в сериале:Ассемблер для гоферов. Часть 1Ассемблер для гоферов. Структура и макросы. Часть 2СтекКак я уже говорил, стек — это небольшая предвыделенная область памяти, которую программа получает при запуске. Поскольку, если мы размещаем переменную в стеке, нам не нужно обращаться к операционной системе для получения блока памяти, то это очень быстрая операция.В классическом ассемблере для того, чтобы сохранить и извлечь регистры из стека, используют…
Команда Go for Devs подготовила перевод статьи о том, как упростить сборку Go-проектов с cgo, используя Docker. Авторы на реальном примере показывают, как избавиться от платформенной боли, сложных зависимостей и ручной настройки окружения, при этом сохранив воспроизводимость продакшен-сборок. Практичный разбор для тех, кто сталкивался с cgo и кроссплатформенной сборкой.Одна из причин, по которым нам нравится Go, — это возможность собирать бинарники под разные операционные системы и архитектуры …