Обновить
111.26
Рейтинг

Go *

Компилируемый, многопоточный язык программирования

Сначала показывать
Порог рейтинга

Как выбрать подходящий Go-роутер? (с блок-схемой)

Блог компании OTUS Программирование *Go *
Перевод

Когда вы начинаете разрабатывать веб-приложение с применением Go, один из первых вопросов, которым вы, вероятно, зададитесь, — “Какой роутер мне следует использовать?”.

И это не такой простой вопрос, как может показаться сначала. Доступно более 100 различных роутеров с разными API, функциями и поведением. Для этой статьи я оценил 30 самых популярных из них и создал краткий список лучших вариантов вместе с блок-схемой, которую вы можете использовать, чтобы сделать свой выбор.

Читать далее
Всего голосов 9: ↑8 и ↓1 +7
Просмотры 2.1K
Комментарии 2

Новости

Go, я создал: интегрируем Allure в Go красиво

Блог компании Ozon Tech Open source *Программирование *Go *Тестирование веб-сервисов *

Привет! Меня зовут Антон, я ведущий инженер по тестированию в Ozon: занимаюсь созданием и поддержкой end-to-end Go-тестов бэкенда для QA.

Мы довольно долго писали тесты в основном на Python. Go – молодой язык, и популярных устоявшихся инструментов у него пока немного. В Python есть pytest, в Java – JUnit и TestNG, в Go – пока что весьма свободно. 

Однажды, в очередной раз переписав группу старых Python-тестов, я решил, что надо что-то менять. Эта мысль в итоге привела меня к созданию нашей собственной опенсорс-библиотеки – с поддержкой Allure без перегрузки интерфейса, инфраструктурой для хранения тестов как в одних репозиториях с сервисами, так и в отдельных, репортами в Slack и разными другими штуками.

Почему мы всё-таки решили создать своё решение, с какими сложностями пришлось разбираться в процессе и как это может пригодиться вам для тестов на Go, я расскажу в этой и следующих статьях. Сегодня – об интеграции с Allure. 

Читать далее
Всего голосов 21: ↑19 и ↓2 +17
Просмотры 1.9K
Комментарии 2

Как мы TLS Fingerprint обходили…

Информационная безопасность *Open source *.NET *C# *Go *

В один день одна из крупных досок объявлений начала возвращать фейковые характеристики объявлений, когда понимала, что мы - бот.

Видимо сайт добавил наш прокси в blacklist, но в нашем пуле около 100к проксей, все прокси попали в blacklist?

Попробовав запустить парсер на другом сервере, HTTP запросы возвращали корректные данные. Спустя неделю, ситуация повторилась.

Мы также попробовали отправить запрос на локальной машине с "забанненым" прокси, на удивление, данные пришли корректные, но отправив запрос с этим же прокси на сервере, получили фейковые. Отсюда вытекает вопрос: как сайт определяет, что запросы посылаются с одной машины, если используются прокси?

Прошарив весь гугл, мы узнали об интересной технологии под названием TLS Fingerprint и теперь хотим поделиться что это такое и как обойти.

Читать далее
Всего голосов 38: ↑34 и ↓4 +30
Просмотры 6.8K
Комментарии 32

Беглый взгляд на Go Workspaces в Go 1.18

Блог компании Joom Go *

Скоро выходит версия Go 1.18, и в массовом сознании она, скорее всего, будет ассоциироваться с Generic-ами. Но помимо них туда попадает еще несколько вкусных фичей. Например, Go Workspaces.

Читать далее
Всего голосов 29: ↑28 и ↓1 +27
Просмотры 6.3K
Комментарии 10

Минуточку внимания

Чистые транзакции в гексагональном Go

PostgreSQL *Go *

В современной микросервисной разработке очень популярна чистая архитектура (она же луковая). Этот подход ясно отвечает на много архитектурных вопросов, а также хорошо подходит для сервисов с небольшой кодовой базой. Другая приятная особенность чистой архитектуры состоит в том, что она отлично сочетается с Domain Driven Development — они отлично дополняют друг друга.


Одной из прикладных реализаций чистой архитектуры является гексагональная архитектура — подход, явно выделяющей слои, адаптеры и прочее. Данный подход заслуженно сыскал любовь среди разработчиков на Go — он не требует сложных абстракций или зубодробительных паттернов, а также почти ни в чем не противоречит сложной идиоматике языка — так называемому Go way.


Но есть проблема, которую я часто вижу во многих командах, адаптирующих гексагоны, и с которой я сам столкнулся и успешно решил — реализация транзакций базы данных в рамках DDD и пресловутого гексагона. Что у меня вышло я и расскажу в этой заметке.


Читать дальше →
Всего голосов 18: ↑17 и ↓1 +16
Просмотры 3.5K
Комментарии 33

Как не выстрелить себе в ногу, обрабатывая ошибки в голанге

Блог компании FirstVDS Программирование *Системное программирование *Компиляторы *Go *


А пока мы все сидим и ждём выхода Go 2 с его новой схемой обработки ошибок, программы писать надо прямо сейчас. Так что от обработки ошибок никуда не деться.

У меня в руках реальный проприетарный проект, который работает на одной из моих серверных ферм. Всё запущено и крутится на golang от начала и до конца. В этой статье я собрал и описал большое количество вариантов обработки ошибок, с которыми столкнулся в проде.

Итак, поехали.
Читать дальше →
Всего голосов 23: ↑19 и ↓4 +15
Просмотры 3.7K
Комментарии 18

Какие тесты выбрать для облака? Сравниваем варианты

Блог компании МТС Тестирование IT-систем *TDD *Go *Облачные сервисы
Привет, Хабр! Меня зовут Илья Казначеев, я техлид в MTS Cloud, это облачный провайдер МТС. Моя команда занимается сервисом Kubernetes Managed, а еще мы проводим тесты облачных платформ. В этой статье я расскажу о нашем опыте: какие виды тестов мы пробовали, как боролись с проблемами и к чему в итоге пришли.

Читать дальше →
Всего голосов 20: ↑19 и ↓1 +18
Просмотры 3.5K
Комментарии 0

Go-контексты и микросервисы. Как решить проблему с соединениями к базе при помощи контекстов

Блог компании iSpring Программирование *Go *Микросервисы *

Всем привет! В статье расскажу:

— Как и почему у нас возникла необычная проблема, вызвавшая поток 400-ых ошибок. 

— Как реализовали полноценную поддержку отмены операций в микросервисе.

— Как реализовали свой пул подключений к базе для переиспользования подключений к базе в рамках запроса к сервису.

— Как применили контексты в микросервисе и что от этого получили.

Читать далее про контексты и микросервисы
Всего голосов 14: ↑10 и ↓4 +6
Просмотры 4.5K
Комментарии 18

Колокол — система событий в Go или очередная event-system библиотека

Программирование *Go *

В работе над одним проектом нам в компании NUT.Tech понадобилась система событий, работа которой не влияла бы на основной поток выполнения программы. Как ни странно, но мы не смогли найти полностью отвечающую нашим требованиям готовую библиотеку. И тогда, конечно же, мы решили написать ее сами.

Читать далее
Всего голосов 9: ↑6 и ↓3 +3
Просмотры 1.4K
Комментарии 9

Golang пощупаем дженерики

Go *

Скоро выйдет релиз 1.18 в котором появятся долгожданные дженерики. Они позволят сделать универсальные методы. Я написал пару примеров для себя. Может быть они будут интересны кому-нибудь ещё.

Давайте разберём что появилось.
Всего голосов 26: ↑21 и ↓5 +16
Просмотры 6.7K
Комментарии 45

Анализируем bound checks в Go по CPU профилю

Высокая производительность *Assembler *Системное программирование *Компиляторы *Go *

Сегодня мы будем анализировать бинарники на пару с CPU профилями, чтобы создать на их основе расширенные профили исполнения. Эти дополненные профили мы сможем использовать для оценки времени, которое программа тратит на проверки выхода за границу массивов и слайсов.


Читать дальше →
Всего голосов 26: ↑23 и ↓3 +20
Просмотры 2.9K
Комментарии 0

Proof-of-Union — алгоритм консенсуса в блокчейн системах базируемый на сотрудничестве узлов

Децентрализованные сети Информационная безопасность *Анализ и проектирование систем *Алгоритмы *Go *

В настоящее время существует огромное количество консенсус алгоритмов для блокчейн систем, каждый из которых имеет свои преимущества и недостатки присущие только ему, либо целому классу сходных алгоритмов. Так или иначе, в данное время лидирует две концепции консенсуса - основанные на майнинге (PoW) [1] и форжинге (PoS) [2], которые в свою очередь представляют конкурентную и последовательную модели генерации блоков непосредственно. Такое разделение либо предполагает крайне большое расходование материальных ресурсов, либо представляет собой необходимость комбинации с другими методами консенсуса [3], что приводит к сложности реализации, а следовательно и к проблеме доказуемой безопасности конечного решения [4, с.319]. Альтернативной моделью конкуренции и последовательности может являться алгоритм объединения узлов (PoU), решающий общую задачу сообща и главным преимуществом которого является простота реализации, сродни PoW и быстрота генерации блоков, эквивалентная PoS.

Читать далее
Всего голосов 11: ↑7 и ↓4 +3
Просмотры 2.4K
Комментарии 9

Continuous integration в Go с GitHub Actions

Блог компании OTUS Программирование *Go *
Перевод

В этой статье мы рассмотрим, каким образом можно использовать GitHub Actions для создания конвейера непрерывной интеграции, который автоматически тестирует, проверяет и анализирует ваш код Go.

Читать далее
Всего голосов 18: ↑11 и ↓7 +4
Просмотры 1.6K
Комментарии 2

Как можно тестировать платформенные сервисы

Блог компании Конференции Олега Бунина (Онтико) Блог компании Авито Тестирование IT-систем *Go *Тестирование веб-сервисов *

PaaS (Platform as a Service) — внутренняя платформа для запуска и разработки приложений. Если коротко, то наш PaaS позволяет легко и, можно сказать, при нулевом знании внутренней кухни создать свой сервис и начать пилить продуктовые компоненты. Более длинное объяснение — в этом видео. Под катом небольшой рассказ о том, с какими проблемами пришлось столкнуться при первом приближении к тестированию продукта, как происходил сам процесс тестирования платформенных решений на примерах и какую пользу это принесло.

Меня зовут Лариса Седнина, я работаю QA-инженером в Авито в юните QA Center of Excellence. Наш юнит — это центр экспертизы по обеспечению качества, основная задача которого в распространении лучших практик тестирования, помощи в настройке процесса тестирования и разработке инструментов для тестирования.

Читать далее
Всего голосов 13: ↑11 и ↓2 +9
Просмотры 1.4K
Комментарии 1

IO_URING. Часть 3

Блог компании ITSOFT Высокая производительность *Go *Разработка под Linux *

Всем привет! Симулятор написания echo-server'ов на связи. Сегодня завершающая часть из цикла посвященного io_uring. В этом материале мы поговорим о настройке io_uring, режимах работы и перформансе. Полученные знания используем чтобы улучшить конкурента netpoller'у из предыдущей статьи. 

Читать далее
Всего голосов 15: ↑13 и ↓2 +11
Просмотры 1.7K
Комментарии 2

Чат-бот под несколько месенджеров

Мессенджеры *Go *
Из песочницы

Привет, я Паша, руковожу эксплуатацией инфраструктуры крупного хайлоад-проекта. Хочу поделиться опытом разработки бота на Golang для различных мессенджеров.

Всё началось с того, что у нас был бот на python-telegram-bot, делал он простые вещи, умел послать случайную весёлую гифку из Интернета, кошечку, собачку, затем мы крикрутили к нему наш таск-трекер и бот стал создавать тикеты прямо из чата.

Спустя время, руководство приняло решение о разработке собственного мессенджера для общения сотрудников компании и встал вопрос о поддержке нашего бота в новом мессенджере. У нас уже была разработана отдельная модельная часть, которую оставалось лишь прикрутить к новому источнику сообщений, но в этот момент мы уже одной ногой торчали в Golang и мы решили, что у нас есть отличный шанс максимально развить свои навыки разработки, мы видели в Golang большие перспективы для развития нашей инфраструктуры.

Итак, поехали
Всего голосов 8: ↑6 и ↓2 +4
Просмотры 3.9K
Комментарии 2

Golang-дайджест № 13 (1 – 31 января  2022)

Go *

Свежая подборка новостей и материалов

Интересное в этом выпуске

Выпущены Go 1.17.6 и 1.16.13, Go 1.18 beta2, GoLand 2022.1, tinyGo 0.22 с поддержкой M1/​​macOS ARM, мобильная игра на Golang

Приятного чтения!

Читать далее
Всего голосов 19: ↑18 и ↓1 +17
Просмотры 3K
Комментарии 0

GO приложение в кластере k8s

Блог компании Karuna Go *Kubernetes *

Golang приложение в кластере kubernetes


Привет! Я — golang разработчик в Каруне. Kubernetes сегодня — звезда среди систем оркестровки и контейнеризации приложений. Важно понимать, как с ним работать. Поделюсь примером демонстрационного api приложения, которое написано на golang, и покажу способы взаимодействия с ним.

Читать дальше →
Всего голосов 15: ↑9 и ↓6 +3
Просмотры 4.2K
Комментарии 4

Анатомия асинхронных фреймворков в С++ и других языках

Блог компании Яндекс Python *C++ *C# *Go *
Привет! В этой статье я расскажу об устройстве асинхронных движков с корутинами и без них. Для начала сосредоточимся не на конкретном движке, а на том, почему во всех популярных языках программирования появились корутины и чем они так хороши. Это может быть интересно не только C++-разработчикам, но и всем, кто занимается разработкой сетевых приложений или интересуется архитектурой современных фреймворков.

Пройдёмся по разным архитектурам построения серверов — от самой простой синхронной к более интересным, посмотрим на типичную архитектуру корутинового движка, а после окунёмся в дебри C++ и взглянем на самое страшное на примере нашего фреймворка userver.

Пишем синхронный сервер


Представьте, что у вашего сервиса очень маленькая нагрузка — 100 rps, и вам дали задачу написать простой сервер, понятный каждому второму школьнику. У вас получится что-то наподобие следующего:

void naive_accept() {
  for (;;) {
    auto new_socket = accept(listener);

    std::thread thrd([socket = std::move(new_socket)] {
      auto data = socket.receive();
      process(data);
      socket.send(data);
    });

    thrd.detach();
  }
}
Читать дальше →
Всего голосов 69: ↑66 и ↓3 +63
Просмотры 20K
Комментарии 32

Go и плагины

Программирование *C *Go *Разработка под Linux *

Go многими воспринимается как средство для написания микросервисов, тем не менее, сам он является языком общего назначения и позволяет писать приложения любого рода, в том числе, поддерживающие модули расширения.

Примерно год назад передо мной встала задача добавить поддержку плагинов в приложение на Go. Задача стояла не особо остро, и руки до решения дошли только сейчас. Ответ, однако, оказался не столь очевидным, сколь хотелось бы. Идеального решения, как по мне, нет, поэтому попытаюсь максимально объективно рассмотреть все три имеющихся.

Читать далее
Всего голосов 17: ↑16 и ↓1 +15
Просмотры 4.4K
Комментарии 10

Вклад авторов

Работа

Go разработчик
144 вакансии