Category : golang

golang
SOLID в Go и щепотка паттернов

Как сказал бы волк из небезызвестного мультика: «SOLID? Шо, опять?»Но наша сфера пополняется новыми кадрами, и для них это всё действительно впервые. Именно для них я и написал эту статью. Недавно мне пришлось объяснять принципы SOLID начинающему разработчику на примере Go, и я понял, что нет хорошего материала, который я мог бы ему рекомендовать. Точнее, нет материала, который объяснял бы эти принципы так, как я это себе представляю, максимально понятно. Часто объяснения SOLID сводятся к разбо…

  • среда, 3 июля 2024 г. в 00:00:04
golang
Как мы создавали PaaS-платформу App.Farm — цифровое сердце РСХБ

Привет, Хабр! Меня зовут Константин Белкин, я Teamlead SRE в РСХБ‑Интех. Сегодня я расскажу вам про App.Farm — PaaS‑платформу, которую мы самостоятельно разрабатываем и поддерживаем с сентября 2020 года.Основная цель внедрения данного продукта — формирование условий для импортозамещения высококритичных информационных систем РСХБ, стимулирование развития собственной разработки в РСХБ. Мы стремимся к: минимизации зависимости банка от вендорных решений и аутсорсинговой поддержки этих решений, разв…

  • вторник, 2 июля 2024 г. в 00:00:12
golang
Группировка ExCobalt снова в обойме и обзавелась новым бэкдором на Go

Спустя месяц в копилку расследований экспертного центра безопасности Positive Technologies (PT Expert Security Center) добавилось еще одно, причем о группировке ExCobalt, за которой мы следим с ноября прошлого года. Напомним: тогда наша команда выяснила, что в составе ExCobalt есть участники небезызвестной APT-группы Cobalt (ее профайл можно посмотреть здесь), которые активны как минимум с 2016 года. ExCobalt поменяла сферу интересов и, в отличие от предшественника, специализируется на кибершпи…

  • понедельник, 1 июля 2024 г. в 00:00:10
golang
Go gamedev: низкоуровневое API рисования в Ebitengine

Я уже несколько лет использую игровой движок Ebitengine, но ранее у меня получалось обходиться лишь высокоуровневым способом отрисовки объектов — DrawImage. Функция DrawTriangles казалась не очень понятной человеку, который привык к концепции "есть спрайт — можно рисовать". Сейчас у меня стали появляться задачи, под которые отлично подходит DrawTriangles. Сегодня я расскажу, когда и как стоит использовать эту функцию. Давайте разбираться, что это за треугольники и с чем их едят. Предис…

  • воскресенье, 30 июня 2024 г. в 00:00:07
golang
Как упаковать бэкенд-код на Go для аналитики на базе Spark

Всем привет! Меня зовут Ваня Ахлестин, я занимаюсь поддержкой и развитием аналитической платформы кластера Search&Recommendations на базе Spark и Hadoop. Большинство сервисов в хайлоаде, работу которых мы логируем и исследуем, давно переписаны на Go. Из-за этого часто необходимо переиспользовать логику сервиса внутри аналитического или ML-приложения на Spark. Как примеры такого кода можно взять расчёт скоров по сложному запросу или ранжирование айтемов для выдачи. Реимплементировать и подде…

  • суббота, 29 июня 2024 г. в 00:00:06
golang
Выжимаем из Go максимум производительности

Разработчики, которые используют Go, сталкиваются с задачей выжать максимальную производительность из каждой строки кода. Но что делать, если оптимизировать уже нечего, а увеличивать скорость всё равно надо?Меня зовут Никита Галушко. Я старший программист-разработчик в отделе высоконагруженных систем и оптимизации ВКонтакте. В статье поделюсь, какие хитрости помогут использовать Go на полную мощность.О чём будет речь в статьеРасскажу про память, а именно про small-size объекты и интерфейс, пока…

  • четверг, 27 июня 2024 г. в 00:00:11
golang
Почему итераторы в Go 1.23 многим так не нравятся

ПРИМЕЧАНИЕ: данный пост является адаптацией следующего твита (однако абсолютно самодостаточен): https://x.com/TheGingerBill/status/1802645945642799423TL;DR язык Go сейчас воспринимается как слишком “функциональный”, а не столь беззастенчиво  императивный язык.Недавно мне попался в твиттере пост, демонстрирующий, как будут устроены итераторы в Go 1.23 (эта версия выйдет в августе 2024 года). У меня складывается впечатление, будто многим в сообществе это нововведение не нравится. Я решил высказат…

  • вторник, 25 июня 2024 г. в 00:00:06
golang
Микросервисы с Go-Micro на примере

Привет, Хабр!Микросервисная архитектура представляет из себя подход, в котором каждый сервис отвечает за конкретную функциональность и может быть развернут, обновлен и масштабирован независимо от других. Go-Micro — это фреймворк, который упрощает создание таких микросервисов на Golang.Основные фичи Go-Micro:Автоматическое обнаружение сервисов: сервисы автоматом регистрируются и обнаруживаются.Встроенная балансировка нагрузки: запросы равномерно распределяются между экземплярами сервисов.Поддерж…

  • вторник, 25 июня 2024 г. в 00:00:05
golang
История переформатирования 100 000+ файлов Google в 2012 году

В сентябре далёкого 2012 года я трудился начинающим инженером в Google, занимаясь разработкой Bazel (инструмент сборки, внутри компании также известный под именем Blaze). Однажды мне на почту пришло загадочное приглашение из Google Календаря. Его прислали два инженера из США, пригласив на встречу меня и моего тимлида. Я сразу узнал имена отправителей — это были Роб Пайк и Расс Кокс. И хотя работать мне с ними не доводилось, я был о них наслышан. Расса Кокса я знал по его блогу, который любил…

  • понедельник, 24 июня 2024 г. в 00:00:06