Как стать автором
Обновить
108.45

Go *

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

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

Докеризация сборки проекта на всех уровнях

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров1.8K

Всем привет, на связи Вадим Макеров, бэкенд‑разработчик iSpring. Успешная воспроизводимая сборка проекта является критическим фактором в поддержке и развитии проекта. При большом количестве проектов и технологических стеков гарантировать воспроизводимость сборки — «собралось однажды, соберется всегда» — сложнее.

О том, как реализовать идемпотентность сборки, я рассказывал в рамках митапа в офисе iSpring в 2023 году. Эта статья — текстовая версия моего доклада.

Читать про контейнеризацию сборки
Всего голосов 4: ↑4 и ↓0+6
Комментарии4

Новости

Горутины в Go: Базовые примеры

Уровень сложностиСредний
Время на прочтение2 мин
Количество просмотров783

Горутины — это функции или методы, выполняемые конкурентно с другими горутинами в одном и том же адресном пространстве. Они легковеснее традиционных потоков, занимают меньше памяти и позволяют эффективно использовать ядра процессора.

Читать далее
Всего голосов 3: ↑1 и ↓2+1
Комментарии0

Анонимный RAT при глобальном наблюдателе

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров1.9K

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

Читать далее
Всего голосов 6: ↑6 и ↓0+11
Комментарии1

MapReduce на Go: превратите ваши большие данные в понятную карту и удобный редьюс

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров1.7K

Часто задается вопрос: как эффективно и быстро обработать огромные объемы информации? Ответом на этот вызов стала концепция MapReduce, разработанная в недрах Google.

MapReduce — это парадигма программирования, созданная для обработки и генерации больших объемов данных с использованием параллельных распределенных алгоритмов. Основная фича проста: сначала данные разбиваются на небольшие части (фаза Map), а затем результаты этих частей агрегируются в финальный результат (фаза Reduce).

Читать далее
Всего голосов 11: ↑9 и ↓2+12
Комментарии2

Истории

Как и зачем создавать кастомные сборщики мусора в Go

Время на прочтение8 мин
Количество просмотров2.7K

В Golang (да в принципе во всех ЯП) управление памятью и эффективное использование ресурсов — основа создания высокопроизводительных приложений. Одним из важных инструментов, который помогает справляться с этой задачей, является сборщик мусора (на англ garbage collection). Встроенный сборщик мусора Go выполняет свою работу довольно хорошо, но иногда требуется более тонкая настройка, чтобы соответствовать специальным требованиям потребностям конкретного приложения.

Здесь нам и помогут кастомные сборщики мусора.

Читать далее
Всего голосов 8: ↑7 и ↓1+10
Комментарии6

Кластеризация множества объектов, алгоритм K-means++

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров1.6K

Поступила задача выполнения кластеризации множества товаров, по их размерам (двумерная плоскость). Значения распределения: ширина и высота.

После изучения вопроса, было найдено несколько подходящих алгоритмов, одним из самых распространенных оказался алгоритм под названием K-means, а так же его вариация K-means++. Плюсы, в отличии от классики, подошли более разумно к подбору начальных точек опоры, калибрующихся итерационно, до момента идентичности нескольких последовательных результатов.

Читать далее
Всего голосов 5: ↑5 и ↓0+8
Комментарии4

Работа с аренами: почти избавляемся от GC

Уровень сложностиСложный
Время на прочтение16 мин
Количество просмотров6.1K

Меня зовут Максим Горозий. Я тимлид в Т-Банке, работаю над нашей образовательной платформой, которая служит для разных направлений бизнеса. В ИТ больше 10 лет и успел поработать в двух GameDev-компаниях, где управление памятью занимало весомое время в оптимизации производительности кода. Люблю строить системы и взаимосвязи между ними, а также EdTech и преподавание, а еще больше — работать над инструментами обучения. Хотя начинал с C, я идеологический фанат Go, DDD и Agile.

«Оно тормозит» — классическая цитата разработчиков. Расскажу, как разобраться в причинах и научиться управлять памятью, медитируя над профайлингом, чтобы все работало быстро.

Читать далее
Всего голосов 26: ↑26 и ↓0+28
Комментарии15

Система Топологического Консенсуса (СТК)

Уровень сложностиСредний
Время на прочтение17 мин
Количество просмотров1.4K

Topological consensus system (TCS)

Автор: Александр Коробкин и его верная команда разработчиков

Сегодня мы рады представить вашему вниманию нашу новую инновационную технологию, основанную на протоколе Chord (https://en.wikipedia.org/wiki/Chord_(peer-to-peer)), но с рядом уникальных особенностей, которые увеличивают его функциональность и производительность. Мы назвали нашу технологию "СТК" (Система Топологического Консенсуса).

Предназначение СТК

СТК является распределенной хэш-таблицей (DHT), которая позволяет эффективно организовывать и управлять данными в распределенной системе. Она подходит для использования в различных приложениях, таких как:

Распределенные файловые системы: Обеспечение масштабируемого и надежного хранения данных.

Облачные решения: Организация данных и ресурсов в крупных облачных инфраструктурах.

Сетевые службы имен: Обеспечение эффективного и быстрого доступа к распределенным данным.

Интернет вещей (IoT): Управление огромными объемами данных от различных устройств в сети.

Системы контент-распределения (CDN): Оптимизация хранения и доступа к контенту для пользователей по всему миру.

Блокчейн приложения: Распределение и хранение транзакций и данных в сети блокчейн.

Читать далее
Всего голосов 4: ↑3 и ↓1+5
Комментарии1

Как отправлять SMS через МТС Exolve и Go

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров1.9K

В одной из московских компаний решили расширить функции системы на Golang, и заказчик попросил внедрить в неё SMS и прочие каналы для уведомлений клиентов. В этой статье пошагово разберём, как отправлять SMS с использованием сервиса МТС Exolve и популярного языка программирования Golang.

Читать далее
Всего голосов 5: ↑4 и ↓1+5
Комментарии2

Баги, которые мы пишем, ищем и исправляем #2

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров739

Привет! Меня зовут Денис, я — разработчик ПО SEDMAX. Это промышленное ПО для сбора и визуализации данных в энергетике. Как и у всех, у нас бывают баги. Мне бы хотелось поделиться опытом в поиске таких багов, а также порассуждать на тему того, что необходимо было сделать, чтобы баг не появился. У нас серверная часть написана на go в виде некоторого множества сервисов, поэтому специфика большинства багов будет асинхронное взаимодействие, а код примеров представлен на go.

В прошлой статье были сделаны следующие выводы:

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

Golang: пакет bytes изнутри

Уровень сложностиСредний
Время на прочтение26 мин
Количество просмотров3.4K

Приветствую, в прошлой статье мы разбирали определение bytes.Buffer изнутри. Теперь хочется обратить внимание на сам пакет bytes. Что за ним скрывается? Каждому разработчику приходилось использовать его будь то в production или локальной разработке. Это достаточно мощный по своим меркам пакет, который предоставляет нам функции для работы с байтами.

Читать далее
Всего голосов 10: ↑8 и ↓2+9
Комментарии8

Golang: bytes.Buffer изнутри

Уровень сложностиСредний
Время на прочтение16 мин
Количество просмотров3K

Работая с кодом на Go, любому специалисту приходилось сталкиваться со стандартным пакетом bytes . Внутри него лежит определение Buffer . Что же это такое?

Читать далее
Всего голосов 11: ↑8 и ↓3+10
Комментарии1

Golang: context изнутри

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров2.9K

Ни для кого не секрет, что стандартный пакет context широко используется для создания ваших сервисов. В данный момент, не побоюсь этого слова, любой сервис написанный на Go использует контексты повсеместно. Мое мнение таково - если ты хочешь прогрессировать как специалист, ты должен копать все глубже и глубже. Предлагаю рассмотреть context с призмы его работы внутри.

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

Ближайшие события

От Firebase к Self-Hosted

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров4.4K

Приложению cara.app пришёл счет от Vercel на 96280$. Многие стартапы начинают с Vercel и Firebase, затем из нежелания платить гуглу уходят на свои сервера

Поговорим с нюансами про стэк технологий и оценим усилия на миграцию на свои сервера. Разберём на примере Go с k8s и инфраструктурой мониторинга, но без Firebase (Github)

Читать далее
Всего голосов 8: ↑8 и ↓0+10
Комментарии4

Паттерны Go — Паттерн «Опции» — ключ к простому рефакторингу в будущем

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров1.8K

Привет Хабряне! Давно хотел написать статью о паттерне опций в функциях и почему его использование настолько шикарно. В статье будет упрощенный пример из жизни, так что не судите строго. Заранее благодарен за комментарии и указания на неточности.

Читать далее
Всего голосов 5: ↑3 и ↓2+1
Комментарии7

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

Уровень сложностиСредний
Время на прочтение23 мин
Количество просмотров6.8K

SOLID-ная статья о принципах SOLID, которую вы можете предложить тем, кто хочет понять эти принципы в контексте языка Go. Или прочитать самостоятельно, если это интересно и вам.

И да, как сказал бы волк из небезызвестного мультика: «SOLID? Шо, опять?»

Читать далее
Всего голосов 22: ↑19 и ↓3+16
Комментарии9

Как мы создавали PaaS-платформу App.Farm — цифровое сердце РСХБ

Уровень сложностиСредний
Время на прочтение17 мин
Количество просмотров2.2K

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

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

Группировка ExCobalt снова в обойме и обзавелась новым бэкдором на Go

Время на прочтение5 мин
Количество просмотров2.9K

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

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

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

Больше о бэкдоре
Всего голосов 5: ↑5 и ↓0+5
Комментарии0

Go gamedev: низкоуровневое API рисования в Ebitengine

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров2.3K

Я уже несколько лет использую игровой движок Ebitengine, но ранее у меня получалось обходиться лишь высокоуровневым способом отрисовки объектов — DrawImage.


Функция DrawTriangles казалась не очень понятной человеку, который привык к концепции "есть спрайт — можно рисовать".


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


Давайте разбираться, что это за треугольники и с чем их едят.


Читать дальше →
Всего голосов 10: ↑10 и ↓0+13
Комментарии4

Как упаковать бэкенд-код на Go для аналитики на базе Spark

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров1.8K

Всем привет! Я Ваня Ахлестин, занимаюсь поддержкой и развитием аналитической платформы кластера Search&Recommendations на базе Spark и Hadoop в Авито. Сегодня расскажу, как начать использовать ваш код из Python или PySpark и не тратить много времени дорогих разработчиков.

Читать далее
Всего голосов 4: ↑3 и ↓1+4
Комментарии1
1
23 ...

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

Работа

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