Category : golang

golang
Стеганографические эксперименты с видеофайлами и Youtube. Продолжение

С момента публикации первой части статьи появились интересные инструменты, демонстрирующие побочные возможности Youtube для хранения цифровой информации. Например, утилита Infinite-Storage-Glitch. Автор утилиты DvorakDwarf, пользуясь рациональным размещением цифровой информации в черно-белом формате CV_8UC3, успешно использовал Youtube если не в качестве полноценного дропбокса, то в качестве прототипа альтернативного файлового хранилища, что вызвало массу различных инспираций и породило бурну…

  • понедельник, 19 июня 2023 г. в 00:00:10
golang
table-driven testing в Go

Автор статьи: Рустем ГалиевIBM Senior DevOps Engineer & Integration Architect. Официальный DevOps ментор и коуч в IBM Привет Хабр! Продолжая тему тестирования на Go, сегодня поговорим про table-driven тестирование.У нас есть основная проблема: дублированный тестовый код.Иногда вы будете писать тесты, использующие ту же логику тестирования, но с другим набором тестовых данных. Давайте посмотрим на пример. Допустим, вы хотите протестировать дополнительную функциональность калькулятора с раз…

  • пятница, 16 июня 2023 г. в 00:00:20
golang
Bot-Games.Fun — игровая платформа для AI

Почти год назад я рассказывал о платформе HighLoad.Fun, где можно посоревноваться в оптимизации кода, но не упомянул Bot-Games.Fun - платформу, где нужно написать своего AI бота для участия в играх. Основное отличие от других аналогичных платформ - код бота не надо загружать на сервер, его нужно запускать на своём железе, что открывает широчайшие возможности по используемым технологиям и затраченным ресурсам на просчёт следующего хода. А ещё все игры с открытым кодом, можно влиять на правила, …

  • вторник, 13 июня 2023 г. в 00:00:18
golang
Пишем gRPC автотесты на Go с Allure отчетом

ВступлениеВ данной статье разберем, как писать gRPC автотесты с использованием языка Go, также сделаем Allure отчет Перед тем как читать статью, нужно базово понимать некоторые термины:Что такое RPC? Что такое gRPC?Что такое protobuf? Сюда же можно отнести знакомство с синтаксисом *.proto файлов;Неплохо было бы знать/понимать синтаксис языка Go, хотя бы на базовом уровне;Для запуска сервера через docker понадобятся базовые знания docker.Без понимания выше описанного будет сложно разобраться о…

  • воскресенье, 11 июня 2023 г. в 00:00:13
golang
Как мы сделали grpc-wiremock: сервис, создающий мок-сервер для ваших контрактов в одну команду

Всем привет, меня зовут Никита, уже пару лет я зарабатываю на жизнь развитием платформы-как-сервис в СберМаркет. В основном я отвечаю за инструменты локальной разработки и являюсь одним из создателей cli, которая позволяет развернуть сервис со всеми его зависимостями в одну команду sbm-cli service up.Если взглянуть на топ-50 вакансии backend-разработчиков, станет очевидно, что в большинстве из них требуется знание микросервисной архитектуры. Это же касается и QA. Не переходя к привычному обсуж…

  • четверг, 8 июня 2023 г. в 00:00:25
golang
Сколько памяти нужно для запуска 1 миллиона конкурирующих задач?

В этой статье я углублённо сравню потребление памяти между асинхронными и многопоточными программами популярных языков вроде Rust, Go, Java, C#, Python, Node.js и Elixir. Недавно я проводил сравнение производительности нескольких программ, предназначенных для обработки большого количества сетевых подключений. В итоге я увидел огромную разницу в потреблении этими программами памяти, порой в 20 раз и больше. Некоторые потребляли при 10К подключений чуть более 100 МБ в то время, как другие зани…

  • вторник, 6 июня 2023 г. в 00:00:17
golang
О массивах и слайсах в Go

Массивы в Go являлись для меня одной из сложных тем, так как я не понимал как они работают. В данной статье рассмотрим как же именно работают слайсы и массивы в Go, а также как именно работает append и copy.МассивыМассивы - коллекция элементов одного типа. Длина массива не может изменяться. Вот как мы можем создать массив в Go:arr := [4]int{3,2,5,4} Если мы создадим два массива в Go с разными длинами, то два массива будут иметь разные типы, так как длина массива в Go, входит в его тип:a := [3]…

  • вторник, 6 июня 2023 г. в 00:00:17
golang
Погружение в мокирование gRPC сервисов в Go: Тестирование без выполнения RPC вызовов

Для чего я это написалВстала задача покрыть тестами обработчики http запросов для моего учебного проекта, и я захотел лучше понять данную тему.НачнёмПроект, к которому необходимо было написать тесты, использовал gRPC в качестве протокола для вызова методов сервисов. То есть тестировал я api-gateway - все запросы приходили в него.Так как с тестированием я знаком не был от слова совсем, то и не понимал, каким же образом тестировать обработчик, который вызывает метод микросервиса. Ведь там под ка…

  • вторник, 6 июня 2023 г. в 00:00:16
golang
Сколько памяти нужно для запуска 1 миллиона параллельных задач?

В этой статье я углублённо сравню потребление памяти между асинхронными и многопоточными программами популярных языков вроде Rust, Go, Java, C#, Python, Node.js и Elixir. Недавно я проводил сравнение производительности нескольких программ, предназначенных для обработки большого количества сетевых подключений. В итоге я увидел огромную разницу в потреблении этими программами памяти, порой в 20 раз и больше. Некоторые потребляли при 10К подключений чуть более 100 МБ в то время, как другие зани…

  • понедельник, 5 июня 2023 г. в 00:00:19