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

Go *

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

Сначала показывать
  • Новые
  • Лучшие
Порог рейтинга
  • Все
  • ≥0
  • ≥10
  • ≥25
  • ≥50
  • ≥100

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

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

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


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

Читать дальше →
Всего голосов 8: ↑4 и ↓4 0
Просмотры 1.8K
Комментарии 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();
  }
}
Читать дальше →
Всего голосов 45: ↑43 и ↓2 +41
Просмотры 5.9K
Комментарии 15

Go и плагины

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

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

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

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

Как мы писали свой курс по Go и почему в итоге их получилось три

Блог компании Яндекс.Практикум Программирование *Go *Учебный процесс в IT Карьера в IT-индустрии


В ноябре 2021 года Яндекс.Практикум запустил курс «Go-разработчик» для программистов, которые хотят добавить Go в свой стек. На курсе не рассказывают о базовых вещах, а сразу объясняют студенту, как переложить его знания в парадигмы Go.

Меня зовут Алексей Полевой, я продакт-менеджер курса. В этом посте мы с командой расскажем, почему не обучаем программированию на Go с нуля, зачем даём два учебных проекта на выбор и насколько важен обмен опытом с ментором — действующим сеньор-разработчиком.
Читать дальше →
Всего голосов 16: ↑14 и ↓2 +12
Просмотры 6.4K
Комментарии 4

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

Рекомендации по работе с Docker для Golang-разработчиков (Multistage Building)

Go *

Рекомендации для Golang разработчиков, как использовать многоэтапную сборку, для создания более компактных Docker образов. Давайте, рассмотрим на примере, как многоэтапная сборка позволяет значительно уменьшить размер Docker образа.

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

SSH Picker в ежедневной работе сетевого инженера

Системное администрирование *Сетевые технологии *Go *
Из песочницы

В статье рассмотрим полезный инструмент облегчающий сбор данных с сетевых устройств. Для работы скриптов с командной строкой по SSH на языке Python нужно использовать множество сторонних модулей, а вернее множество зависимостей одного модуля (привет paramiko), а если на машине где будет работать скрипт нет интернета или нет возможности установить Python последних версий, то задача запуска скрипта становится практически невозможной. Для решения подобной проблемы был разработан SSH Picker с возможностью подключения дополнительных модулей через AMQP протокол.

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

Автоматизация оптимизаций в Go

Блог компании Delivery Club Tech Open source *Программирование *Go *Управление разработкой *
image

Привет, Хабр! Меня зовут Денис Лимарев, я разработчик платежной системы в Delivery Club.
Недавно мы провели два митапа: по оптимизациям и по нашему новому линтеру. На первом митапе разобрали оптимизации кода на Go, а в рамках второго поговорили про создание и возможности нашего нового линтера, который может искать и самостоятельно применять эти оптимизации, и не только. Как делался линтер и поиск каких оптимизаций смогли автоматизировать — читайте под катом.
Читать дальше →
Всего голосов 22: ↑21 и ↓1 +20
Просмотры 4K
Комментарии 1

Создание своего серверного ядра на Go для Minecraft Java. Часть #1 — Основное о идее и малое начало

Go *Игры и игровые консоли
Из песочницы

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

Конкретно в этой части статьи будет рассматриваться основные понятия об Minecraft, мультиплеере и почему решил сделать такое. Так же сделаем основу сервера, который пока будет поддерживать Ping-Pong List

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

Делаем асинхронность асинхронной, разбираемся в планировщике Go, ругаем Linux

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

В айтишном мире есть две весьма обсуждаемые темы:

1. Что является главным недостатком в Go;

2. Linux vs <что угодно>;

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

Читать далее
Всего голосов 64: ↑60 и ↓4 +56
Просмотры 13K
Комментарии 50

Ускоряем hugo на 20% простым изменением в пакете reflect

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

Найти значительное узкое место в производительности стандартной библиотеки или зрелого приложения — это редкость.


Я был удивлён, когда в top10 списке CPU-профиля hugo при сборке digitalgov.gov на первой позиции находился метод reflect.Type.MethodByName().


      flat  flat%   sum%        cum   cum%
     8.84s  6.28%  6.28%     57.85s 41.10%  reflect.(*rtype).MethodByName
     7.93s  5.63% 11.92%      8.50s  6.04%  reflect.name.readVarint
     7.56s  5.37% 17.29%    111.79s 79.43%  reflect.Value.call
     7.53s  5.35% 22.64%     23.33s 16.58%  runtime.mallocgc
     7.29s  5.18% 27.82%     16.10s 11.44%  reflect.name.name

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

Читать дальше →
Всего голосов 28: ↑27 и ↓1 +26
Просмотры 4.1K
Комментарии 11

В поисках gRPC-шлюза

Go *

Дано:

несколько gRPC-сервисов, каждый слушает свой порт.

сервисы могут доверенно подключаться друг к другу, для аутентификации используется Mutual TLS.

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

Найти:

единую точку входа для API (API Gateway) для gRPC, HTTP/2.

Дисклеймер: решение так и не найдено, зато проведено исследование gRPC-отражения (reflection). Много ссылок.

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

Открытый микрофон «Спроси меня про Go»: 21 января в 19.00

Блог компании Яндекс.Практикум Программирование *Go *Учебный процесс в IT Карьера в IT-индустрии
21 января Яндекс.Практикум проведёт вебинар в формате открытого микрофона «Спроси меня про Go». На вебинаре ответим на любой вопрос, связанный с Go: про язык и его возможности, про карьеру Go-разработчика, а главное, попробуем ответить на вопрос — стоит ли изучать Go сейчас и зачем он нужен именно вам.



Мероприятие будет полезно тем, кто что-то слышал про Go и хочет узнать больше, тем, кто хочет понять, применим ли Go для конкретных задач, а также тем, кто уже писал на Go и хочет обменяться идеями или опытом с другими гоферами.
Читать дальше →
Всего голосов 14: ↑9 и ↓5 +4
Просмотры 1K
Комментарии 0

Golang-дайджест № 12 (1 – 31 декабря  2021)

Go *

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

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

Выпущены Go 1.17.5 и Go 1.16.12, GoLand 2021.3, доступна первая бета-версия Go 1.18 (с дженериками), monovania 2D платформер-головоломка, созданный с помощью Ebiten, zinc альтернатива Elasticsearch, Map-Reduce в Go

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

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

Простейший сервер на Gorilla WebSocket

Go *
Из песочницы
Tutorial

В этом небольшом туториале, мы чуть подробнее разберем использование Gorilla WebSocket для написания своего websocket сервера, на примере чуть более функциональном, чем базовый пример и более легком для понимания, чем пример чата.

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

Что плохого в пакете логирования на Go?

Go *
Из песочницы
Перевод

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

Читать далее
Всего голосов 20: ↑10 и ↓10 0
Просмотры 3.8K
Комментарии 45

Автореконнекты к RabbitMQ в Go

Go *

Брокер сообщений RabbitMQ уже давно активно используется в микросервисах. Он используется, когда требуется асинхронная обработка сообщений от клиентов или при аналогичном межсервисном взаимодействии.

Практически нет языка, под который не была бы сделана соответствующая клиентская библиотека. Для Go такой библиотекой является github.com/streadway/amqp (далее по тексту библиотека amqp). Она имеет широкий функционал, можно подключаться к RabbitMQ, создавать каналы, настраивать очереди и exchange. Не хватает только самой малости – реконектов. А именно автоматических реконнектов при потери связи.

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

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

IO_URING. Часть 2. Let's GO

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

Всем привет! Продолжаем разбираться с io_uring. Сегодня попробуем использовать io_uring для решения прикладных задач. А именно напишем полноценный TCP сервер. Для этого мигрируем наши приложения с C на GO. Не буду писать длинные вступления, вперед экспериментировать!

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

Почему я перешёл с Python на Go: choose your fighter

Блог компании Ozon Tech Python *Go *Карьера в IT-индустрии
Привет, Хабр! Меня зовут Саша, я бэкенд-разработчик в Ozon. Пишу платформу для контента, который генерят пользователи: отзывов, комментов, вопросов, ответов. Раньше я писал на Python. Выбрал его изначально из-за лёгкого синтаксиса и большого количества вакансий для Python-разработчиков — изи катка для входа в профессию. 

В один момент мне написали из Ozon: «П̶с̶с̶,̶ ̶п̶а̶р̶е̶н̶ь̶,̶ ̶п̶о̶к̶о̶д̶и̶т̶ь̶ ̶н̶а̶ ̶G̶o̶ ̶н̶е̶ ̶х̶о̶ч̶е̶ш̶ь̶?̶ Предлагаем переход на Golang с текущего стека, обучение за счёт компании».

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


Среди разработчиков бытует мнение, что язык вторичен. Мол, главное — уметь в computer science, а на чём писать — не так уж важно. Но так считают хардкорные разработчики, они вертят деревья, смотрят на всех свысока и зарабатывают 300кк в наносекунду. Я же программист-полукровка (без высшего технического образования, а ещё мои родители — маглы) и считаю, что смена языка — важный шаг и нужно хорошенько прикинуть, прежде чем в это вписываться. Будем откровенны, если у вас за плечами десять лет на плюсах, вряд ли вам предложат должность senior iOS-разработчика на Swift. Проблема в том, что каждый язык имеет свои особенности и на их изучение требуется время.
Читать дальше →
Всего голосов 61: ↑53 и ↓8 +45
Просмотры 27K
Комментарии 127

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

Работа

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