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

Go *

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

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

ChatOps на практике: создание бота для мониторинга логов

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

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

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

Новости

Как создать генератор кодов верификации на Go с помощью SMS API

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

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

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

Как защитить свое Go-приложение

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

Очень важно думать о том, чтобы приложения были надежными и защищёнными. Go — язык, который известен своей простотой и производительностью. Но ни один язык не безопасен сам по себе и об этом нужно заботится самостоятельно.

В этой статье мы поделимся с вами методами, которые помогут сделать ваши Go-приложения неприступными крепостями.

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

Собиратель конфигураций на Go

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

Начну с того, что я C#-разработчик, но Go мне очень нравится и один из проектов я решил для разнообразия и расширения знаний написать в связке Go + React.js + MongoDB. И тут я понял, что не могу найти библиотеку пакет для чтения единых настроек конфигурации из разных источников. Часть настроек была в .env, часть - в переменных окружения. Хотелось получить экземпляр одной структуры со всеми значениями, выполнив какую-то одну функцию. Возможно, плохо искал. Но, не найдя, решил написать своё. Тем более у меня уже был опыт работы над подобным open-source проектом, но для C#.

Я никогда ранее не писал пакетов для Go, поэтому просто начал писать код как для программы, чтобы просто смотреть, запускать, тестировать. Понять, насколько это реализуемо. А потом уже оформил в пакет.

Посмотреть, чего он там нагородил
Всего голосов 4: ↑3 и ↓1+3
Комментарии9

Истории

Как использовать defer в Go

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

Привет, Хабр!

Defer — это ключевое слово в Go, которое позволяет отложить выполнение функции до момента завершения выполнения текущей функции. Это относительно простой способ управлять ресурсами.

В этой статье мы и рассмотрим как использовать defer в Golang.

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

Микросервисы на Go: Как заставить систему работать на тебя

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

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

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

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

Внутреннее устройство sync.Map, сравнение производительности с map + RWMutex

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

Привет, Хабр! Эта статья для тех, кто хочет понять, когда стоит использовать sync.Map, а когда достаточно обычной map с мьютексом.


В Каруне этот вопрос иногда возникал на код ревью, поэтому такая статья мне показалась полезной. TLDR: sync.Map лучше работает на задачах, где много операций чтения, и ключи достаточно стабильны.


Внутреннее устройство sync.Map


sync.Map — это потокобезопасная реализация мапы в Go, оптимизированная для определенных сценариев использования.


Основная структура sync.Map выглядит примерно так:


type Map struct {
    mu Mutex
    read atomic.Value // readOnly
    dirty map[interface{}]*entry
    misses int
}

type readOnly struct {
    m       map[interface{}]*entry
    amended bool
}

type entry struct {
    p unsafe.Pointer // *interface{}
}

Здесь мы видим несколько ключевых полей:

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

Используем gocv, чтобы определить возраст, эмоции и пол человека по фото

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

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

Для демонстрации будем использовать модели caffe и onnx. Сервис напишем с использованием golang. Ниже приведен пример изображения, на котором распознан пол и примерный возраст человека. В нашем сервисе мы будем возвращать JSON, в котором будут указаны возраст, эмоции, пол и местоположение лиц на фотографии.

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

Как мы выбираем задания на отбор Route 256: подход и разбор задач

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

Однажды мы решили, что грамотных инженеров эффективнее всего растить самим. Так 3 года назад родился Route 256 — курсы Ozon для разработчиков и тестировщиков уровней junior и middle.

Во время курса ведущие специалисты Ozon погружают в индустрию e-com, знакомят с актуальным стеком и бизнес-задачами. Самые успешные выпускники получают оффер в команду Ozon.

В статье рассказали, почему для отбора мы используем алгоритмы, и показали разбор задач с контеста.  

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

Go: жарим общие данные. Атомно, быстро и без мьютексов

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


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

Но в этой статье мы поговорим о другом. Современные процессоры имеют поддержку атомарных операций, что позволяет на основе них организовывать работу с общими данными до нескольких раз быстрее, чем с помощью общепринятых вариантов. Так как мьютексы реализованы на основе ОС, каналы сделаны на основе внутреннего кода Go с использованием тех же мьютексов из ОС под капотом, а атомарные операции делает сам процессор аппаратно за существенно меньшее количество тактов.
Пожарим омлет по атомному?
Всего голосов 38: ↑37 и ↓1+47
Комментарии29

Подбираем нужные автозапчасти: миллиарды комбинаций за 12 минут

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

Привет! Меня зовут Кирилл Егоров, я технический лидер двух юнитов Авито: «Запчасти» и «Строительство и ремонт». В этой статье рассказываю о том, как мы определяем, к каким автомобилям подходят запчасти из объявлений, как нам с помощью Golang удается перебрать миллиарды вариантов и какие трудности пришлось решить при реализации этого решения.

Читать далее
Всего голосов 23: ↑22 и ↓1+24
Комментарии7

Шаблон unit-тестов на Go

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

В этой статье я хотел бы показать паттерн для тестов, которым я пользуюсь в своей повседневной жизни.

В ходе статьи мы на примере шаблона разберем написание юнит-тестов и бенчмарков, а потом объединим их в одну универсальную функцию.

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

Создание CLI утилит на Go с библиотекой Cobra

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

Сегодня мы рассмотрим, как с помощью замечательной библиотеки Cobra превратить обычный Go-код в инструмент CLI. Cobra позволяет создавать интерфейсы командной строки.

Начнем с самого начала — установки и настройки проекта.

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

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

19 сентября
CDI Conf 2024
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн

Не только VPN. Как это было и куда идет

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

Немного истории, реализация php, perl и банальная реализация на Golang.
Интересно? Добро пожаловать в подкат...

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

Шаблон Go-микросервиса для начинающих от .NET разработчика. Часть 2

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

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

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

Кратко про сетевые протоколы в Golang: TCP, QUIC и UDP

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

Сегодня мы кратко рассмотрим то, как реализовать такие протколы, как TCP, UDP и QUIC в Golang.

Начнем с TCP.

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

Зачем нужен код-ревью?

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

Привет, Хабрюзеры.

Недавно я устроился на вакансию Golang junior разработчика в новую компанию. Ранее я несколько лет программировал на PHP, пока не познакомился с Go. Думал, что моя мечта сбылась: я набрался опыта, стал более опытным специалистом и теперь могу продолжать развиваться. Однако, после выполнения задачи код, написанный мной, нужно было отправить на код-ревью. После этого мне приходили правки, которые я должен был исправить и снова отправить на ревью. Раньше я не понимал, зачем нужен этот процесс. На форумах и в сообществах многие писали, что код работает — и слава Богу, так зачем нужны эти ревью?

Теперь, после некоторого времени работы, я хотел бы поделиться своим мнением о код-ревью и объяснить, почему этот процесс важен.

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

Создание Framework для Go: Вдохновение от Laravel

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

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

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

Как наш ученик попал на стажировку в VK. История Артёма Мазура

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

Мы следим за жизнью всех ребят, которые приходят в ЦПМ и участвуют в наших проектах. Каждый раз, когда мы узнаем об их достижениях, нам очень трепетно и радостно! Сегодня мы хотим поделиться историей Артёма Мазура, который прошел на стажировку, внимание, в VK!

Читать далее
Всего голосов 25: ↑2 и ↓23-21
Комментарии7

Быстрый старт: Docker + SMTP + Java/Go

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

Не так давно у меня появилась необходимость на нескольких проектах сделать регистрацию с подтверждением email, так же хотелось минимизировать затраты и исключить лишние телодвижения, так сказать методом ctrl+c ctrl+v, без танцев с бубном. Так же нам не нужно принимать почту и прочее, просто отправка, не более

P.s. Для прожженных отцов разработки ничего нового тут не будет

Итак, поехали ;-)

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

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

Работа

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