Обновить
175.9

Go *

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

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

Go-митап для тех, кто переходит или недавно перешел на Go

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

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

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

Читать далее

Облегчаем жизнь разработчиков на Go: полезные советы и лайфхаки для начинающих

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели6.9K
image

В #CloudMTS мы активно используем Go. Например, Go основной язык в балансировщике нагрузки (GSLB), в сервисах создания и управления кластерами PostgreSQL и Redis.

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

Сегодня поговорим об инструментарии и подходах, которые помогают получить читаемый и поддерживаемый код, а вместо с ним — производительные и надежные сервисы. Backend-разработчик в подразделении DBaaS Герман Лепин (german_lepin) выступил экспертом для нашей статьи.

Читать дальше →

Документирование API сервисов с помощью Swagger на примере фреймворков Express.js и Gin

Уровень сложностиСредний
Время на прочтение41 мин
Охват и читатели120K

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

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

Основное внимание в статье будет уделено автоматизации процесса создания документации API сервисов, которые разрабатываются с помощью фреймворков Express.js и Gin, используя подходящий для этой задачи инструмент - Swagger.

Читать далее

Jaeger для трассировки в микросервисной архитектуре

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели41K

 Меня зовут Алексей Мясников, я тимлид на проекте YDB в Яндекс Облаке. А ещё — старший ментор на курсе «Go-разработчик» в Яндекс Практикуме и кандидат технических наук. В коммерческой разработке более 15 лет, стек — C++, Java, Go, TypeScript, а пробовал около 20 языков программирования, в том числе в продакшн. 

Эта статья про Go и микросервисную архитектуру написана на основе вебинара для Практикума.

Рассмотрим, как работает Jaeger, один из популярных инструментов, который помогает расследовать инциденты и находить узкие места в производительности в микросервисной архитектуре. Разберём, как правильно настроить трассировку и с какими проблемами можно столкнуться в процессе.

Читать далее

Лучшие Golang-фреймворки в 2023 году

Время на прочтение3 мин
Охват и читатели46K

Revel: для быстрой разработки и масштабируемости

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

Читать далее

create-react-app, но для Go?

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

Спустя какое-то время работы с front-end'ом я решил перейти в страшный лес, каким его всегда представляли всякие мемы - back-end. Конечно же я выбрал node.js и начал с express.js. Для меня было необычно, что не было инструмента (или же я плохо искал) для того, чтобы создавать корневую систему директорий самому. Я начал класть все в корень проекта и в этом и не было проблемы до момента, когда надо было расширять проект и начиналась путаница где лежит сервер, а где конфигурации для сервера, БД и т.д.

В силу новизны своих знаний я думал, что вся эта штука с src, config и public нужна конкретно для экосистемы отдельных технологий. В силу новизны своих знаний я думал. Я начал сам создавать директории, потом перешел на Nest.js и забыл про это. И вот я начал учить Golang, а там к тому же еще другая модель структуры проекта.

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

Читать далее

Нахождение минимальных путей в разреженных графах, используя матрицу 5xN

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

Введение

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

Описание алгоритма

Алгоритм использует матрицу размером 5xN для хранения информации о графе и вычисления кратчайших путей. Каждая строка матрицы содержит следующую информацию:

Читать далее

Русские шашки: эффективная генерация ходов в Golang

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

Я рад представить вам свою реализацию ИИ для русских шашек под названием "damka" (https://github.com/antonmedv/damka). Проект, размещенный на GitHub и доступен для игры по адресу https://medv.io/шашки/, включает в себя ИИ, который следует правилам игры в русские шашки

Читать далее

Создаем скелеты микросервисов быстро и без боли

Время на прочтение4 мин
Охват и читатели10K

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

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

Читать далее

С чего начать изучение Go

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

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

Читать далее

Разработка игр на Go: шейдеры

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

Давненько я не писал никаких статей на Хабре.


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


Сегодня я расскажу вам о шейдерах в Ebitengine. Большая часть примеров будет взята из Roboden и Decipherism (обе игры имеют открытые исходные коды и вы можете найти их на гитхабе).


Читать дальше →

Трудности перевода. Как научить микросервисы общаться и не ссориться

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели7.3K

Привет! Меня зовут Саша Сусиков. Я проверяю клавиатуры на прочность около 10 лет из  них последние 2 года с помощью Go. Сейчас я участвую в разработке платформы СберМаркета, где создаю инструменты, которые упрощают жизнь разработчикам. Эта статья для тех, кому предстоит настроить процесс взаимодействия сервисов в компании и вы ищете, как не наломать дров.

Читать далее

Пишем на Go как в Google. Лучшие практики — часть первая

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели29K

Рекомендации по стилю для проектов Google с открытым исходным кодом


Лучшие практики Go


Этот документ — часть документации по стилю Go в Google. Он не является ни нормативным, ни каноничным, это дополнение к «Руководству по стилю». Подробности смотрите в Обзоре.


О документе


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


Полная документация руководства по стилю описывается в обзоре.

Читать дальше →

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

Как работает PGO-оптимизация в Go «на пальцах»

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

В феврале появилась новая версия Golang — 1.20. Разработчики представили в предварительной версии инструмент оптимизации — profile-guided optimization, или коротко PGO. Этот подход позволяет оптимизировать процесс компиляции приложения за счет использования информации, собранной при профилировании сборки в момент выполнения программы в рабочем окружении.

В итоге, опираясь на собранные данные, компилятор в состоянии принимать более качественные решения оптимизации при очередном запуске программы на основании частоты использования блоков кода. По заверениям разработчиков использование PGO позволяет увеличить производительность приложения на 2-4%. Так ли это на самом деле? Разберёмся в статье.

Читать далее

Страшно ли делать плохо? Прожарка твоего кода онлайн, без купюр

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

Именно так я решил назвать эту статью, чтобы описать свои эмоции на прожаривании кода спонтанном публичном код-ревью моего open-source Portal от участников Go-чата, в котором я активно участвую. Главным ревьюером был Глеб Яльчик, что делало ситуацию ещё более волнительной для меня. Расскажу, как я на это решился, что мы обсудили, к чему пришли и какой эффект это дало. А внедрять Portal мы будем на примере мини-приложения по мотивам (всеми любимой) мобы Dota.

Примечание: это приложение будет что-то делать только в учебных целях, чтобы понять, как Portal сможет нам помочь передавать данные. Логика в нём будет достаточно простой, без ряда проверок и, возможно, с багами. Если станет достаточно интересно, то можем обсудить и его в комментариях!

Читать далее

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

Время на прочтение3 мин
Охват и читатели7K

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

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

Давайте посмотрим, на что она способна.

Читать далее

Куда сходить: главные ИТ-события второй половины апреля

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

Гид по конференциям и митапам, которые пройдут с 15 по 30 апреля в Москве, Ереване, Екатеринбурге, Алматы и других городах.

Читать далее

Приглашаем на Ozon Tech Community Go Meetup (Екатеринбург)

Время на прочтение2 мин
Охват и читатели1.3K

UPD: Добавили записи докладов и слайды

Здесь мог быть каламбур про Go в Екат. Эх, всё-таки просочился. 

Привет, меня зовут Ильяс, и я – старший разработчик в Ozon.

Мы постоянно говорим, что Go – один из наших самых любимых языков. А почему? А потому что эффективен. Мы можем просто и быстро писать высокопроизводительные решения, а потом без труда их поддерживать и масштабировать. На Go написано более 1000 микросервисов, обеспечивающих работу сайта, склада, систем логистики. 

Ждём всех в гости на открытый Ozon Tech Community Go Meetup 20 апреля в 18:00 в Екатеринбурге (16:00 по Москве). И, конечно, будет онлайн.

Подробности

Как построить надёжную шину данных на Apache Kafka

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели25K

С помощью Apache Kafka мы в Авито гарантируем соблюдение контрактов публикуемых событий. Рассказываем, как мы переработали архитектуру и сделали работу с Kafka удобнее и надёжнее.

Мы можем пережить даже полный отказ дата-центра. Почему — тоже расскажем в этой статье.

Читать далее

Тестирование исполняемого кода Go

Уровень сложностиСложный
Время на прочтение9 мин
Охват и читатели5.9K

«Каждый, уважающий себя программист, осваивая новый язык пишет свой логгер» (с) давно было, источник цитаты канул в Лету, в общем — забылся.

Собственно вся история вопроса началась тут. Когда-то, около 3 лет назад, осваивая новый для себя язык, тоже написал свой логгер. ... Подчистки и улучшения конечно же сопровождались покрытием тестами и бенчмарками. И вот тут, для себя, сделал «открытие», что в Golang всё не совсем так, ... И так.

Для статьи был взят стандартный, библиотечный логгер из пакета log...

Примечание: поставил уровень "сложный", т.к. моя первая статья и писать "просто" для меня очень сложно. Статья для всех, кому интересно что творится под капотом Go.

Читать всё целиком

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