Обработка ошибок — это важная часть любого языка программирования. Она помогает предотвратить незаметные сбои в приложениях, перехватывать неожиданные поведения и предоставлять осмысленные ответы, когда что-то идет не так. Однако подход Go к обработке ошибок часто приводит к написанию многословного и повторяющегося кода, что вызывает недовольство среди разработчиков. Давайте разберем, почему это происходит, какие ограничения это накладывает и какие решения могут быть предложены.Проблема: Избыто…
В микросервисной архитектуре есть множество зависимостей от других сервисов и инфраструктуры. В результате чего возникают проблемы, которые съедают большое количество сил и времени. Приходит, например, тестировщик с описанием воспроизведения бага — а чтобы его воспроизвести, надо долго готовить данные, а потом еще дольше поднимать фронт… После N-й итерации повторять такое вы, конечно, не будете это, мягко говоря, утомляет. Так интеграционные тесты становятся определенным оверхедом вместо того, …
Привет, Хабр!Сегодня будем разбираться с FissionGo — фреймворком, который обещает избавить нас от работы с деплоями, контейнерами и YAML‑манифестами.Допустим, нам нужно запустить функцию — небольшой кусок кода, который что‑то делает (парсит JSON, отвечает на запрос, обрабатывает webhook). План работы был бы примерно таким:Написать кодЗапихнуть его в контейнерНаписать манифестыНастроить сервисыОбъяснить Kubernetes, как всем этим управлятьНадеяться, что всё не упадёт в продеА Fission убирает пунк…
Поиск подстроки в строке — важная задачка в текстовой обработке. В Go стандартная библиотека имеет strings.Index, но он использует простой перебор символов, который работает с O(n × m) в худшем случае, где n — длина текста, m — длина подстроки.Алгоритм Кнута-Морриса-Пратта решает эту проблему, используя префикс-функцию, которая позволяет пропускать заведомо ненужные сравнения. В результате его сложность O(n + m), что делает его подходящим для больших текстов и множественных поисковых запросов.К…
Сейчас вас научу "плохому" — будем поднимать наше веб-приложение на телефоне и прикрутим к нему публичный домен, что бы все могли пользоваться нашим классным сервисом. Для этой цели я накидал приложение на go, которое определяет IP адрес, вычисляет город, отправляет запрос во внешний сервис и отдает страницу с данными о погоде в вашей локации. Я не стал упарываться - он просто нужен для демонстрации. https://github.com/itcaat/what-is-the-weather-now. Также там есть кеширование погоды и…
Представьте, что ваш код работает на 30% быстрее, при этом вы почти его не меняли. Звучит как магия — на самом деле нет, если учитывать архитектуру процессора при проектировании приложения и структур данных. Привет! Я Александр Шакмаев — технический лидер в Cloud.ru. В статье предлагаю разобраться, как небольшие изменения, основанные на знании архитектуры процессора, могут привести к значительному ускорению Go. Готовы раскрыть потенциал вашего кода? Тогда переходите под кат.Сразу начну с пример…
Статья о параллелизме Go, где с помощью интерактивных примеров раскрываем тему с нуля.В этой главе мы рассмотрим методы управления временем в параллельных программах.УдушениеПредположим, у нас есть куча задач. func work() { // Something very important, but not very fast. time.Sleep(100 * time.Millisecond) }Самый простой способ — это обрабатывать последовательно:func main() { start := time.Now() work() work() work() work() fmt.Println("4 calls took", tim…
В поисках утреннего чтива на Хабре наткнулся на статью про сравнение кода на Swift, сгенерированного двумя действующими лицами - ChatGPT от OpenAI и его нашумевший "убийца" - DeepSeek, основателем которого выступает Лян Вэньфэн, про которого можно узнать в статье на VC. После прочтения статьи в голову вполне ожидаемо пришла идея сравнения сгенерированного кода на Go. Правила те же самые - использование одинаковых промптов для каждой модели. Если модель выдает неработоспособный результат…
Весь этот шум заставил меня заинтресоваться DeepSeek. Самое банальное сравнить с ChatGPT. Ну и плюсом, у меня сегодня выходной, можно и поиграть немного. Код пусть будет на Go. Модели GPT-o1 и Deepseek-R1. Заданием для нейронок будет написать две игры. Эти две игры это вообще первое что я когда либо написал в своей жизни, правда, это было не на Go. Задание 1: Игра "Пинг-Понг" на GoПромт:Напиши с нуля консольное приложение на Go. В приложении должна быть реализована игра "Пинг-Понг&…