Как стать автором
Обновить
50.92
Рейтинг

Go *

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

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

Go: стоит ли использовать указатели вместо копий структуры?

Блог компании OTUSПрограммирование*Go*
Перевод

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

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

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

Новости

Показать еще

Эволюция Docker. Часть 2.1

Программирование*Виртуализация*Go*DevOps*История IT

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

Изначально я планировал уложить весь материал, посвященный этой версии, в одной статье, но в процессе стало ясно, что она получается слишком большой, поэтому я решил разделить ее на две. В текущей части (2.1) будет рассмотрена лишь общая структура и начальный код, а последующая часть (2.2) будет посвящена принципу работы и коду конкретных команд.

Некоторые части кода уже были разобраны в первой статье, так что для полноты восприятия, рекомендую начать с нее, а также пятиминутной презентации The Future of Linux Containers, на которой и была представлена первая версия Docker.

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

Я сделал StackOverflow из IT-чатов Telegram

Мессенджеры*Go*
Из песочницы

Всем привет. Я бэкенд разработчик, и по роду деятельности активно использую разные чаты в Телеге – по Go, Кубернетес, базам данных. Задаю свои вопросы, иногда отвечаю на чужие.

Идея Q&A из Телеги показалась очень интересной, и социально полезной. Обидно что такая кладезь знаний пропадает в недрах неиндексируемых телеграм-чатов. Ведь когда я был начинающим разрабом, общение с коммьюнити позволило мне быстро бустануть скиллы. Пришло время отдавать должок.

Читать далее
Всего голосов 42: ↑39 и ↓3+36
Просмотры12K
Комментарии 27

Как в восемь раз уменьшить количество DNS-запросов в Go

Блог компании Ozon TechВысокая производительность*DNS*Go*Микросервисы*

Привет, Хабр. Меня зовут Рустам. Я работаю в Ozon: админю Kubernetes и пишу на Go.

У нас очень много сервисов на Go — их количество исчисляется тысячами. Запускаются они внутри кластеров Kubernetes. А я плотно работаю с Kubernetes и заметил, что при запуске кода внутри Kubernetes для резолва одного адреса делается до десяти DNS-запросов. Это, конечно, влияет на производительность.

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

Узнать больше про Go+DNS
Всего голосов 44: ↑43 и ↓1+42
Просмотры6.1K
Комментарии 6

Go: объектный файл и релокация

Блог компании OTUSПрограммирование*Go*
Перевод

Эта статья оперирует версией Go 1.14.

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

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

Как сделать alter table в высоконагруженной таблице

Блог компании KarunaPostgreSQL*Программирование*Go*Микросервисы*

Ещё лет 5 назад на собеседованиях с backend-разработчиками был популярен вопрос: как переименовать колонку в высоконагруженной таблице (возможны вариации: как сделать любой другой alter table)?

Вопрос всё ещё часто звучит на собесах. И актуальность его выросла, так как за последние 5 лет стало намного больше масштабных проектов с высокой нагрузкой.

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

Register-based calling convention, GO?

Программирование*Go*

Пока GO-сообщество томится в ожидании версии 1.18 и обещанных в ней дженериков язык продолжает развиваться и в других направлениях. В вышедшей недавно версии 1.17 хватает интересных нововведений. Среди них есть одно, давно ожидаемое, изменение — новый calling convention. Что же это такое, в чем отличие от старого соглашения о вызовах, какое влияние будет оказано на прикладную GO разработку? Постараемся разобраться в этой статье.
image

Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Просмотры3.8K
Комментарии 3

Установка Golang в WSL (WSL 2) с помощью Visual Studio Code

Go*Разработка под Linux*Разработка под Windows*
Tutorial

Здравствуйте! В статье представленна инструкция по установке языка программирования Golang в подсистему Linux на Windows 10 (11). Если у вас уже установлен WSL2 и Visual Studio Code, то смело переходи на 3 часть этой статьи, для всех других же...

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

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

Блог компании OTUSПрограммирование*Go*
Перевод

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

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

Real-time мониторинг тормозящих запросов PostgreSQL своими руками за полчаса

Блог компании KarunaРазработка веб-сайтов*PostgreSQL*Программирование*Go*

В моей практике не раз были ситуации, когда хотелось посмотреть, какие именно запросы долго тупили в базе в определённый (конкретный) момент времени. А может, запросы не тупили, но каких-то запросов было слишком много.


Ключевое слово — в конкретный момент времени. Например, база непонятно от чего напряглась на 5 минут, потом всё само рассосалось, и очень хочется знать, почему. Отчёты за сутки, присылаемые dba на основе pg_stats_statements, не всегда проясняют ситуацию. Другие графики и логи могут помочь. Но всё же хочется не гадать на кофейной гуще, а конкретно посмотреть, что такому-то запросу в такое-то время было плохо, или его было много.


Можно, конечно, подключить системы а ля okmeter, но okmeter стоит денег. Да ещё и отсылает запросы в чужое облако — что, понятно, не в каждой организации можно считать безопасным.


На удивление, сделать такой мониторинг самому занимает всего полчаса времени, буквально с помощью нескольких строк Go-кода и палок.

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

Как сделать конфигурационные файлы версионируемыми с инструментами Kubernetes

Блог компании NetcrackerПрограммирование*Go*DevOps*Kubernetes*

Если у ваших приложений есть конфигурационные файлы, то вам должна быть знакома такая ситуация: создаете приложение, создаете конфигурационный файл, документируете его и через какое-то время понимаете, что нужно добавить еще настроек. Старые настройки теперь уже не отвечают всем требованиям, да и в целом структуру лучше поменять. Что делать? Если формат конфигурации никогда не менять, то с годами конфиг-файл превратится в горы “исторически сложилось”. А если его менять... В таком случае вам всегда придется следить за тем, что конфиги подходят версии продукта, которую вы устанавливаете заказчику. Парни из эксплуатации, клиенты и много кто еще вас за это особо любить не будут.

Решение всех этих проблем — мульти-версионные конфигурации, которые мы подсмотрели у Kubernetes, развили и применили. А теперь мы готовы рассказать и вам, как это работает.

Давайте поговорим про конфиги!
Всего голосов 9: ↑8 и ↓1+7
Просмотры2.9K
Комментарии 0

GoLand 2021.2: Улучшенная поддержка Go-модулей, новые возможности запуска gofmt, поддержка Go 1.17

Блог компании JetBrainsПрограммирование*Go*

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

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

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

Опыт применения GitHub Actions для создания CI/CD с бесплатным хостингом на Heroku

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

В рамках изучения ЯП Golang я решил сделать учебный проект на примере telegram-бота. Для этой цели я взял популярный для создания ботов API

Написав реализацию нужной мне бизнес-логики, у меня возник вопрос: А как же мне его по-быстром собрать и бесплатно развернуть?

Несколько лет назад у меня был опыт создания утилиты на Go, предназначенной для работы в качестве вспомогательного docker контейнера в AWS ECS. И тогда мне понравилась идея, собрать докер из scratch образа без каких-либо базовых образов. Но использовать сервисы AWS для своего pet-проекта я не стал из-за дополнительных хлопот с настройками доступа и ключами безопасности. Я решил попробовать появившуюся не так давно CI/CD автоматизацию github.com/actions

Немного изучив предоставляемые CD автоматизации с хостингом, наиболее немногословным мне показалась автоматизация развертывания на heroku. И хотя опыта с ним я раньше не имел, мне хватило пары минут, чтобы зарегистрировать аккаунт на HEROKU и найти нужный для экшена heroku_api_key

Получился достаточно немногословный конфигурационный файл, бОльшая часть которого была автоматически сгенерирована GitHub Actions

Читать далее
Всего голосов 1: ↑0 и ↓1-1
Просмотры1.6K
Комментарии 0

Анализ теста по Go с PHDays

Программирование*Go*

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

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

Итак, 5 картинок с кодом, к каждому дается 4 варианта ответа.

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

Golang-дайджест № 7 (1 – 31 июля  2021)

Go*

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

Выпущены версии Go 1.17rc1, 1.16.6 и 1.15.14, GitHub представил инструмент проверки безопасности GO, Перехватываем и изменяем сетевые пакеты на примере игры, Рекомендательная система

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

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

Telegram-клиент на Golang

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

Работая разработчиком в одной веб-студии, пришел клиент с довольно интересной работкой, ему нужен был агрегатор постов из чужих телеграм каналов, так как стек в компании был PHP то решили писать на нем, а конкретно на библиотеке MadelineProto о которой уже есть статья от крутого парня (более подробно об этой либе можете почитать в его статье), вот и началось мучительно создание этого сервиса...

Madeline в общей массе свой очень хорошо, полностью асинхронный и имет под капотом кучу методов для работы как с ботами так и с клиентом, но есть у него одна маленькая проблема (а может и не одна ¯\_(ツ)_/¯) , встроенный EventHandler получает не все новые сообщения из постов (и да я понимаю что есть getHistory, но если бы мы брали сообщения через этот метод, все вышло бы очень медленно работающим и высоконагруженным) Долгие часы и даже дни поиска решения этой проблемы не привели к желаемому результату, все так же процент постов которые пропускались именно Madeline был слишком большим.

Ок, было принято волевое решение забить на данную библиотеку и попробовать найти что-то другое на известном нам стеке, взгляд упал на go-tdlib. Развернули либу и поехали пыхтеть в разработку, и о чудо все посты собираются и все стало чудесно, за исключением одного но... Данная библиотека от пользователя Arman92 сильно отстает от офф методов tdlib и имеет внутри несколько логических ошибок, в общем начали у нас сыпаться паники и другие неприятные вещи. Так как пути назад уже не было, перебрали мы всю либу и обновили методы а так же исправили ошибки и теперь все просто чудесно.

Читать далее
Всего голосов 5: ↑0 и ↓5-5
Просмотры3.3K
Комментарии 3

Навык Алисы на serverless в Yandex.Cloud

Программирование*Go*Serverless*
Tutorial

Сложно в одном тексте описать всё необходимое для разработки даже самого простого навыка для Алисы с одной стороны. А с другой стороны, показать разработку на serverless-стеке так, чтобы и новичку было не так сложно и заядлому девелоперу было не скучно. Но попробую осилить эту задачу, написав навык на Go. и будет у меня семейный список дел.  

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

5 самых известных проектов, написанных на Golang

Блог компании SkillboxПрограммирование*Go*IT-компании
image

О языке программирования Golang, созданном корпорацией Google, на Хабре рассказывали много и подробно, так что мы не будем в очередной раз обсуждать достоинства этого инструмента. Лучше поговорим об известных проектах, которые написаны на Go — они являются доказательством если не универсальности, то разносторонности языка и его возможностей.

Кроме того, упомянем и самые известные компании, которые работают с Go. Кто знает, возможно, кто-то из читателей Хабра там уже работает, и сможет рассказать подробности. Как всегда, все самое интересное — под катом. Статья написана совместно с Никитой Кузнецовым, старшим разработчиком в компании Мегафон и преподавателем курса “Go-разработчик PRO” в Skillbox.
Читать дальше →
Всего голосов 27: ↑20 и ↓7+13
Просмотры14K
Комментарии 15

Подсчёт ссылок не так прост, как кажется: опыт языка Umka

Программирование*Разработка игр*Компиляторы*Lua*Go*

Подсчёт ссылок обычно предлагается как самый простой способ автоматического управления памятью в языках программирования. Он избавляет программиста от необходимости вставлять в свой код free(), delete и тому подобное, следить за висячими указателями и утечками памяти. Принцип действительно звучит очень просто: каждый выделенный в куче блок памяти наделяется счётчиком ссылок на него. Каждая переменная, через которую можно добраться до этого блока, олицетворяет одну ссылку. Блок освобождается тогда, когда счётчик ссылок доходит до нуля.

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

Итак, обсудим четыре ключевых практических проблемы, с которыми пришлось столкнуться при реализации подсчёта ссылок в языке Umka.

Читать далее
Всего голосов 18: ↑16 и ↓2+14
Просмотры2.8K
Комментарии 48

Golang+FFmpeg

Работа с видео*Обработка изображений*Go*

Долго искал более-менее живую Golang-библиотеку для работы с rtsp.

Изначально наткнулся на github.com/nareix/joy4, но там оказался устаревший C-код и rtp был на Golang, а декодинг на FFmpeg. (немало deprecated варнингов).

Изначально форкнул ее, что-то поправил, но с китайскими камерами (о чем, много уже, написано на хабре), часто были битые кадры, отвалы коннекта и т.д.

Поискал по Go-go! telegram-чату - понял, что нет хороших решений.

Ну и как любят делать на JS - нужно написать свой фреймворк.

Читать далее
Всего голосов 4: ↑2 и ↓20
Просмотры2.7K
Комментарии 7

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