Category : golang

golang
Долой оверхед: как мы избавились от зависимостей в интеграционном тестировании микросервисов

В микросервисной архитектуре есть множество зависимостей от других сервисов и инфраструктуры. В результате чего возникают проблемы, которые съедают большое количество сил и времени. Приходит, например, тестировщик с описанием воспроизведения бага — а чтобы его воспроизвести, надо долго готовить данные, а потом еще дольше поднимать фронт… После N-й итерации повторять такое вы, конечно, не будете это, мягко говоря, утомляет. Так интеграционные тесты становятся определенным оверхедом вместо того, …

  • суббота, 8 февраля 2025 г. в 00:00:08
golang
FissionGo: как запускать Go-функции в Kubernetes

Привет, Хабр!Сегодня будем разбираться с FissionGo — фреймворком, который обещает избавить нас от работы с деплоями, контейнерами и YAML‑манифестами.Допустим, нам нужно запустить функцию — небольшой кусок кода, который что‑то делает (парсит JSON, отвечает на запрос, обрабатывает webhook). План работы был бы примерно таким:Написать кодЗапихнуть его в контейнерНаписать манифестыНастроить сервисыОбъяснить Kubernetes, как всем этим управлятьНадеяться, что всё не упадёт в продеА Fission убирает пунк…

  • суббота, 8 февраля 2025 г. в 00:00:07
golang
Алгоритм Кнута-Морриса-Пратта для поиска подстрок на Go

Поиск подстроки в строке — важная задачка в текстовой обработке. В Go стандартная библиотека имеет strings.Index, но он использует простой перебор символов, который работает с O(n × m) в худшем случае, где n — длина текста, m — длина подстроки.Алгоритм Кнута-Морриса-Пратта решает эту проблему, используя префикс-функцию, которая позволяет пропускать заведомо ненужные сравнения. В результате его сложность O(n + m), что делает его подходящим для больших текстов и множественных поисковых запросов.К…

  • пятница, 7 февраля 2025 г. в 00:00:17
golang
Как запустить публичный сайт на телефоне или экономим на спичках

Сейчас вас научу "плохому" — будем поднимать наше веб-приложение на телефоне и прикрутим к нему публичный домен, что бы все могли пользоваться нашим классным сервисом. Для этой цели я накидал приложение на go, которое определяет IP адрес, вычисляет город, отправляет запрос во внешний сервис и отдает страницу с данными о погоде в вашей локации. Я не стал упарываться - он просто нужен для демонстрации. https://github.com/itcaat/what-is-the-weather-now. Также там есть кеширование погоды и…

  • пятница, 7 февраля 2025 г. в 00:00:15
golang
Гармония железа и кода: ускоряем Go, проектируя приложение с учетом архитектуры процессора

Представьте, что ваш код работает на 30% быстрее, при этом вы почти его не меняли. Звучит как магия — на самом деле нет, если учитывать архитектуру процессора при проектировании приложения и структур данных. Привет! Я Александр Шакмаев — технический лидер в Cloud.ru. В статье предлагаю разобраться, как небольшие изменения, основанные на знании архитектуры процессора, могут привести к значительному ускорению Go. Готовы раскрыть потенциал вашего кода? Тогда переходите под кат.Сразу начну с пример…

  • пятница, 7 февраля 2025 г. в 00:00:13
golang
Суть Go: Time

Статья о параллелизме 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…

  • четверг, 6 февраля 2025 г. в 00:00:08
golang
Сравнение кода от DeepSeek и ChatGPT по-гоферски

В поисках утреннего чтива на Хабре наткнулся на статью про сравнение кода на Swift, сгенерированного двумя действующими лицами - ChatGPT от OpenAI и его нашумевший "убийца" - DeepSeek, основателем которого выступает Лян Вэньфэн, про которого можно узнать в статье на VC. После прочтения статьи в голову вполне ожидаемо пришла идея сравнения сгенерированного кода на Go. Правила те же самые - использование одинаковых промптов для каждой модели. Если модель выдает неработоспособный результат…

  • понедельник, 3 февраля 2025 г. в 00:00:14
golang
Сравнение кода DeepSeek и ChatGPT(Golang)

Весь этот шум заставил меня заинтресоваться DeepSeek. Самое банальное сравнить с ChatGPT. Ну и плюсом, у меня сегодня выходной, можно и поиграть немного. Код пусть будет на Go. Модели GPT-o1 и Deepseek-R1. Заданием для нейронок будет написать две игры. Эти две игры это вообще первое что я когда либо написал в своей жизни, правда, это было не на Go. Задание 1: Игра "Пинг-Понг" на GoПромт:Напиши с нуля консольное приложение на Go. В приложении должна быть реализована игра "Пинг-Понг&…

  • понедельник, 3 февраля 2025 г. в 00:00:13
golang
Заговор разработчиков против корпораций: архитектура и принципы

С момента написания предыдущей статьи я находился под пристальным вниманием. Попытка опубликовать материалы на англоязычных платформах обернулась фиаско — в первые же минуты легионы последователей тайного братства обрушились с критикой:— Нет никакой организации! — вопили они.Подозреваю, что слежка велась через мой телеграм-канал.Тем не менее я жив, а значит, пора поведать об архитектурной подлости неимоверных масштабов. Вы узнаете, как ведется борьба с крупными корпорациями изнутри и снаружи, к…

  • воскресенье, 2 февраля 2025 г. в 00:00:15