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

Go *

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

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

Стеклянная луковица dns внутри k8s

Сложный Сложный
Время прочтения 8 мин
Просмотры 1K
Системное администрирование *Go *DevOps *Kubernetes *

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

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

Новости

За что мы любим Go, Ruby, React Native, ReactJS и Redux

Время прочтения 5 мин
Просмотры 942
Блог компании СберМаркет Ruby on Rails *Go *ReactJS *
Мнение

Привет! Это tech-команда СберМаркет. Сегодня кто-то празднует день влюбленных, а для нас с вами это ещё и профессиональный праздник — день компьютерщика. Если совместить два повода, получим день влюблённых в компьютеры. Кто-то любит копаться в железе, кто-то в программах. Кто-то пишет библиотеки, а кто-то их использует. Но все мы не равнодушны, иначе нас бы здесь не было. Эта статья — любовное письмо языкам, фреймворкам и библиотекам, которые крутятся у нас под капотом — Go, Ruby, React, React Native, Redux.

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

История победы в VK Cup'22/23:Go

Средний Средний
Время прочтения 21 мин
Просмотры 713
Высокая производительность *Ненормальное программирование *Go *

Всем привет! 5 февраля завершился очередной VK Cup, в котором в этот раз впервые была секция посвящённая Go. О конкурсе я узнал случайно в одном из Телеграм каналов и решил посмотреть, что же там за задачи. Соревнование состояло из из 3 этапов:

Квалификация: нужно было реализовать несколько функций, чтобы прошли тесты. Дальше проходило 256 человек.

Отбор: задача про внешнюю сортировку и построение кучи, которая не вмещается в RAM. Дальше проходило 16 человек.

Финал: построение коллажа из 1000+ картинок размером 512×512 px.

Про первые 2 раунда я рассказывать в этой статье не буду, возможно сделаю отдельную статью, а расскажу про финал и решение, которое принесло победу. Код решений всех раундов можно посмотреть на GitHub'е.

В финале были чёткий критерий оценки: кто быстрее построит коллаж, тот и победил. Решение «в лоб» решает эту задачу за ~16 секунд на моём AMD Ryzen 7 5800H (16 HT cores). Если интересно как его ускорить до 0.23 секунды, прошу под кат, там много текста, кода, картинок и даже немного ассемблера.

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

Разбираемся с рекурсией на примере связных списков

Время прочтения 10 мин
Просмотры 2K
Блог компании Издательский дом «Питер» Занимательные задачки Программирование *Алгоритмы *Go *
Перевод
Разбираемся с рекурсией на примере связных списков.
Разбираемся с рекурсией на примере связных списков.
Разбираемся с рекурсией на примере связных списков.
Разбираемся с рек-ОШИБКА: ПЕРЕПОЛНЕНИЕ БУФЕРА

image
Матрёшка в разобранном виде
Читать дальше →
Всего голосов 6: ↑5 и ↓1 +4
Комментарии 1

Выпускайте Кракена: опыт использования KrakenD

Время прочтения 12 мин
Просмотры 1.9K
Блог компании МТС Разработка мобильных приложений *API *Go *Микросервисы *
Кейс

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

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

Golang-дайджест № 25 (1 – 31 января  2023)

Средний Средний
Время прочтения 4 мин
Просмотры 1.6K
Программирование *Go *
Дайджест

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

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

Выпущен Go 1.20, консольный клиент chatGPT, система управления пользователями (zitadel), Платформа сбора информации для телефонных номеров (phoneinfoga), Как развиваться GoLang разработчику? (подкаст)

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

Генератор случайных чисел на базе неопределённого поведения состояния гонки

Средний Средний
Время прочтения 15 мин
Просмотры 2.4K
Криптография *Программирование *C *Go *Параллельное программирование *

Генерация случайных чисел окружает нас везде. Любой шаг, дыхание, дуновение ветра, шум кулера, частота мяуканья кошки и т.п. уже может рассматриваться как некая генерация случайности. Так например, насколько вы контролируете вашу ходьбу? Можете ли вы с точностью до нанометра определить точку опоры? Если не можете, то сама погрешность в неопределённости расстояния начинает становиться для вас генератором случайности.

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

Генерация Swagger для сервера Echo

Время прочтения 12 мин
Просмотры 1.5K
Go *
Кейс

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

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

Выявляем волков в овечьей шкуре среди пользователей сайта

Средний Средний
Время прочтения 12 мин
Просмотры 9.1K
Разработка веб-сайтов *Go *
Из песочницы

Привет, Хабр. Я в свободное время развиваю свой небольшой сайт — платформу для ведения личных дневников. Похож на ЖЖ или Дайри, но более современный и молодежный, полузакрытый, уютный. И у нас есть необходимость отслеживать, когда пользователи создают себе дополнительные аккаунты. В этом посте хочу поделиться своими идеями и опытом, как это у нас реализовано.

Читать далее
Всего голосов 26: ↑25 и ↓1 +24
Комментарии 47

«Извините, но вам придется закодировать Щелкунчика»

Время прочтения 4 мин
Просмотры 2.8K
Блог компании МТС Python *Java *C# *Go *
Ретроспектива

Так и не попав на всем известный балет в декабре, мы решили организовать своего Щелкунчика. Речь не о балете, а о первом в мире IT‑контесте по переводу сказки на Python, Go, C#, JavaScript и Java, задача которого звучала так: «Извините, но вам придется закодировать Щелкунчика».

Меня зовут Вадим Рощин, я деврел МТС Digital, и сейчас я расскажу о том, как это было.

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

Bittorrent с нуля на Go

Время прочтения 15 мин
Просмотры 12K
Блог компании SkillFactory Программирование *Сетевые технологии *Go *
Туториал
Перевод


BitTorrent — протокол загрузки и распространения файлов через Интернет. В отличие от традиционных отношений клиент/сервер, когда загрузчики подключаются к центральному серверу (например, для просмотра фильма на Netflix или загрузки веб-страницы), участники сети BitTorrent, называемые одноранговыми узлами, загружают фрагменты файлов друг с друга. Это то, что делает BitTorrent одноранговым протоколом. Исследуем, как он работает, и создадим собственный клиент, который сможет находить одноранговые узлы и обмениваться с ними данными.

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

Kotlin/Golang работа в двух языках

Время прочтения 17 мин
Просмотры 5.4K
Go *Kotlin *
Recovery mode
Из песочницы

Так уж получилось, что у нас в компании используются разные стеки и языки. И в частности у нас есть большое подразделение, основным стеком которого является JVM с Kotlin в качестве языка разработки (вместо ванильной Java, на бэкенде). Но при этом этому же отделу регулярно приходится использовать в работе GoLang.

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

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

Бесит, что err != nil: главные инсайты из опроса Go-разработчиков

Время прочтения 9 мин
Просмотры 19K
Блог компании СберМаркет Go *Исследования и прогнозы в IT *
Аналитика
Мегапроект

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

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

Автоматизация go get — больше не нужно запоминать названия библиотек

Время прочтения 3 мин
Просмотры 2.5K
Go *
Из песочницы

Каждый раз, когда вы начинаете новый репозиторий программы на Go, первое, что необходимо сделать - добавить библиотеки, которые вы будете использовать. Для этого используется go get. Обычно нужные библиотеки копируются из go.mod соседнего проекта. Но копипаст - не наш метод! Под катом - небольшая утилита от автора, позволяющая назначать библиотекам и даже наборам библиотек псевдонимы.

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

Истории

TLS 1.3, только игрушечный

Время прочтения 11 мин
Просмотры 6.4K
Блог компании SkillFactory Информационная безопасность *Криптография *Программирование *Go *
Перевод

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


Мне пришло в голову, почему бы после создания своей версии протоколов traceroute, TCP и DNS не воплотить в жизнь TLS? Могу ли я сделать вариант TLS и больше узнать о его работе?


Я спросила в Twitter, сложно ли это, мне [помогли] и посоветовали, с чего начать, и я решила попробовать.

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

Бардак в main, стандартизация и uber.fx. Как сделать структуру кода понятнее для всех

Время прочтения 20 мин
Просмотры 4.9K
Блог компании «Лаборатория Касперского» Тестирование IT-систем *Программирование *Совершенный код *Go *
Привет, Хабр! Меня зовут Данила Проценко. Я — Lead Software Architect в «Лаборатории Касперского», занимаюсь архитектурой микросервисов и монолитов на Go.

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

image
Читать дальше →
Всего голосов 23: ↑22 и ↓1 +21
Комментарии 18

Как построить WaitGroup на основе 32-разрядного целого числа

Время прочтения 7 мин
Просмотры 1.8K
Блог компании Timeweb Cloud Программирование *Go *Разработка под Linux *Разработка под Windows *
Туториал
Перевод
image

В Go есть приятная утилита для синхронизации, именуемая WaitGroup, которую могут ожидать одна или несколько горутин. Это требуется для конкурентного завершения задач. В других языках обычно действует следующее соглашение по завершению задач: нужно объединять потоки, выполняющие работу. В Go горутины не имеют ни значений, ни дескрипторов, поэтому WaitGroup применяется вместо объединений. Собирание WaitGroup на основе типичных портируемых примитивов – путаное дело, в которое вовлечены конструкторы и деструкторы; также в процессе этой работы приходится управлять временами жизни. Однако, как минимум, под Linux и под Windows, можно построить WaitGroup из целого числа (инициализируемого в значении), во многом как при создании 32-разрядной очереди и 32-разрядного барьера.
Читать дальше →
Всего голосов 13: ↑12 и ↓1 +11
Комментарии 0

Умный дом на минималках

Время прочтения 10 мин
Просмотры 14K
Мессенджеры *Go *Гаджеты Умный дом Интернет вещей
Из песочницы

В последнее время я всё чаще задумывался на тему реализации простых сценариев умного дома. Хотелось сделать просто, без голосового управления, минимальными вложениями для начала. Мои мечты почти разбились о суровую реальность протоколов взаимодействия умных устройств. И, о чудо, я сумел сформулировать запрос для себя правильно, Google помог мне найти «умную розетку с открытым HTTP API».

Что получилось из связки: умная розетка, китайский планшет на Android 11, роутер - можно прочитать под катом.

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

Generico! Дженерики в go или стоит ли оно того

Время прочтения 9 мин
Просмотры 4.9K
Go *
Из песочницы

15 марта 2022 года. Был морозный весенний день. Ветер старался доказать, что он не промах и залезть под куртки, кофты и прочие принадлежности гардероба, чтобы из первых рук, куда уж придётся, принести весеннее настроение через свежесть. Не очень-то у него это получалось. Причем при любом раскладе. Если попадалась хорошая куртка и не пускала незваного гостя - ветру рассказать о весне не получалось. Если же удавалось забраться за шиворот или пройтись ледяным дыханием свежести по пузу - этого уже не понимал прохожий. Кутался еще сильнее и поскорее старался уйти от этого весеннего настроения. Но это была не единственная неоднозначность. Именно 15-го марта в мир была превнесена еще одна неоднозначность, спровоцировавшая жаркие споры - релиз golang 1.18 вместе с системой generic-ов.

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

Amazon IVS: как быстро добавить видеотрансляции в приложение или на сайт

Время прочтения 12 мин
Просмотры 1.4K
JavaScript *Программирование *Amazon Web Services *Go *Облачные сервисы *
Туториал

Video live streaming - это технология потоковой трансляции видео тысячам и миллионам зрителей в режиме близком к реальному времени. Видеостриминг находит своё применение в разных областях: образование, фитнес, онлайн события, электронная коммерция, игры и киберспорт.

В этой статье мы рассмотрим как можно легко интегрировать видеотрансляции в приложение или на сайт, используя AWS interactive video service.

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

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

Работа

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