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

Go *

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

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

Очень странные дела на GitHub

Информационная безопасность *Go *GitHub *
image

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

3 августа Stephen Lacy написал в твиттере, что «обнаружил широкомасштабную атаку на 35 000 репозиториев GitHub», на проекты crypto, golang, python, js, bash, docker, k8s, а так же скрипты npm, образы докеров и установочные документы. (Позже он уточнил, что не «35 000 репозиториев», а 35 000 «code hits»)

Вскоре после его твита либо GitHub, либо злоумышленник удалил большинство общедоступных форков, а еще пару часов спустя появляется твит от только что созданной учетной записи пользователя @Pl0xP, где он утверждает, что он стоит за атакой, и это часть аудита за вознаграждение — bug bounty.
Читать дальше →
Всего голосов 35: ↑18 и ↓17 +1
Просмотры 12K
Комментарии 10

Новости

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

Go *

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

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

Выпущены версии 1.18.4 и 1.17.12, выпущен GoLand 2022.2, Go To Memory, что нового в Go 1.19? 

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

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

Конкурентность в Go: пять примеров

Блог компании МТС Программирование *Go *Параллельное программирование *

Привет, Хабр! Я Артем Чаадаев, Golang-разработчик в МТС Digital. В этой статье я собрал примеры использования конкурентного кода в Go. Хотите узнать, как писать конкурентный код? Значит, вам сюда.

Добро пожаловать под кат!

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

Go, я создал: пишем тесты на Allure-Go

Блог компании Ozon Tech Тестирование IT-систем *Программирование *Go *Тестирование веб-сервисов *

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

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

Много коммитов утекло с того момента, когда мы с вами общались в прошлый раз. Вышло обновление 0.5, которое привнесло множество изменений, в том числе и в интерфейсах, а также обновление 0.6, которое добавило поддержку test plan из TestOps. Более подробно об обновлениях написано в Release Notes.

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

Релиз Centrifugo v4 – маленькая революция

Разработка веб-сайтов *Open source *JavaScript *Разработка мобильных приложений *Go *
Перевод

Сегодня мы рады представить новую версию сервера Centrifugo — Centrifugo v4. Релиз выводит Centrifugo на новый уровень с точки зрения эффективности клиентского протокола, простоты фоллбеков для WebSocket, экосистемы клиентских SDK и модели безопасности каналов. Также релиз включает в себя экспериментальную поддержку HTTP/3 и WebTransport.

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

Lua конфигурация Neovim для разработки на Go

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

В процессе знакомства с Neovim было прочитано много статей, конфигураций на Github, было просмотрено огромное количество роликов на Youtube на тему настройки, но в большинстве случаев приходилось донастраивать все под себя. В этой статье я расскажу как я настроил Neovim для разработки на Go, используя только Lua плагины и init.lua.

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

Как Go-разработчику сэкономить несколько недель жизни

Блог компании СберМаркет Программирование *Go *


Привет! Меня зовут Александр Сусиков, я тимлид команды, которая занимается платформой PaaS для СберМаркета. В этой статье я расскажу, как повысить скорость разработки с помощью кодогенерации.

Читать дальше →
Всего голосов 7: ↑3 и ↓4 -1
Просмотры 7.4K
Комментарии 15

Minecraft protocol VarInt и VarLong. Как из единиц и нулей сделать число на примере Go?

Разработка игр *Go *

В этой статье я хочу детально разобрать, как из байтов преобразуются числа в нужные типы данных (VarInt, VarLong). Детально рассмотрим реализацию, примеры и напишем unit-тесты. Вспомним бинарные операции, двоичную и шеснадцатиричную систему счисления.

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

Go vs Rust. Что же лучше в конкурентности?

Go *Rust *

Стало мне как-то интересно, кто из языков Go или Rust лучше работает с конкурентными задачами. С одной стороны, особый механизм конкурентности в Go является чуть ли основополагающей фичей. С другой стороны сам по себе Rust является более производительным языком, и в глазах некоторых программистов даже является "убийцей" C и C++. Поэтому я решил провести небольшое тестирование и написать собственный бенчмарк для этого.

Для упрощения я буду горутины в Go и асинхронные задачи в Rust называть корутинами. Для проверки различные тесты запускались на количестве корутин 101, 102, ..., 106. Смысл тестирования заключается в том, чтобы определить, какой из языков решит задачу наиболее быстро. По затраченному времени на выполнение задачи можно судить не только о скорости работы языка, но и том, насколько он страдает от большого количества конкуретных задач. Также в каждом тесте записывалась потребляемая память.

Читать далее
Всего голосов 25: ↑22 и ↓3 +19
Просмотры 9.8K
Комментарии 18

Пишем тесты на Go — выкладываем запись QA Meetup

Блог компании Ozon Tech Тестирование IT-систем *Go *Тестирование веб-сервисов *Конференции

Делимся видео и слайдами с прошедшего митапа, посвящённого автотестированию на Go. Под катом найдёте запись докладов:

— Go, Allure и HTTP, или Как мило тестировать HTTP-сервисы на Go.

— Как подружить QA и разработку через применение практики хранения тестов в коде.

Также обсудили с коллегами из Ozon, Авито, Skyeng и Mirantis тему «Как войти в профессию автотестирования и построить карьерный путь» в формате круглого стола.

Велкам
Всего голосов 14: ↑13 и ↓1 +12
Просмотры 2.6K
Комментарии 2

Предотвращаем утечки памяти в Go, ч. 2. Особенности рантайма

Блог компании МойОфис Совершенный код *Go *Разработка под Linux *

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

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

Go sync/singleflight: устранение дублирования идентичных запросов

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

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

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

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

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

Использование sync/atomic в golang для float64

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

Привет всем гоферам! В данной статье я хочу разобрать как можно воспользоваться модулем sync/atomic для типа float64.

У нас есть канал из которого мы можем читать результаты выполнения задач. Результат задачи содержит флаг показывающий была ли ошибка при выполнении задачи и результат выполнения этой задачи (тип float64). Нужно найти сумму всех результатов и количество ошибок.

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

Как мы себя обманываем, только бы продолжать пользоваться Golang

Программирование *Go *Rust *Разработка под Linux *Исследования и прогнозы в IT *
Перевод

За два года с тех пор, как я опубликовал статью I want off Mr Golang's Wild Ride, она вновь и вновь всплывала на Reddit, Lobste.rs, на HackerNews и в других местах.

Всякий раз дискуссия выходит к одним и тем же ответам:

Go!
Всего голосов 152: ↑146 и ↓6 +140
Просмотры 50K
Комментарии 362

Пишем онлайн-тренажёр для Python, C++ и Go: опыт Практикума

Блог компании Яндекс Блог компании Яндекс Практикум Python *C++ *Go *

Один из вариантов мини-IDE в интерфейсе урока

Привет! Меня зовут Павел Свиридов, я руководитель группы разработки в Яндекс Практикуме. Сегодня я вместе со своим коллегой, разработчиком Владимиром Лукьяновым, хочу рассказать о том, как наша команда развивала онлайн-тренажёры в вебе — это такие маленькие среды разработки, встроенные в курсы Практикума. Основное внимание уделю тренажёрам Python и С++, а о других языках скажу пару слов в самом конце и покажу на примере, как создать тренажёр для языка Go.
Читать дальше →
Всего голосов 29: ↑27 и ↓2 +25
Просмотры 8.7K
Комментарии 4

Go To Memory

Блог компании Конференции Олега Бунина (Онтико) Блог компании Авито Программирование *Go *

Как и многие языки, Go часто использует магию под названием хип (heap). Обычно, когда мы пишем наши джейсоно-гонятели, мы просто не задумываемся об этом, хоть и знаем, что это «где-то есть». Давайте попробуем заглянуть в кроличью нору поглубже и увидеть не только то, какими методами аллокатор Go старается облегчить программисту жизнь, но и то, из чего он состоит в целом.

Меня зовут Антон Киреев, я бэкенд-разработчик с опытом работы больше 11 лет. В настоящее время работаю техлидом в Авито. В жизни мне нравятся две вещи: приносить пользу своей работой и проводить свободное время с семьёй. Именно поэтому я люблю делать что-то быстро, но качественно, а потом отдыхать. Для этого я постоянно учусь и пытаюсь докапываться до сути вещей. Сегодня поговорим, как наша любимая Гошечка работает с памятью.

Читать далее
Всего голосов 51: ↑38 и ↓13 +25
Просмотры 8.5K
Комментарии 13

Предотвращаем утечки памяти в Go, ч. 1. Ошибки бизнес-логики

Блог компании МойОфис Совершенный код *Go *Разработка под Linux *

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

Но, по сообщениям некоторых пользователей, у программ, написанных на Go, течёт память. Issue-трекер языка Go на github по запросам «high memory usage», «memory leak», «out of memory» выдаёт сотни и тысячи тикетов. А в самом популярном вопросе на stackoverflow по словосочетанию «golang memory» автор пытается разобраться, почему потребление оперативной памяти в рантайме в 4 раза превышает количество реально сделанных аллокаций. Обращения, в которых люди рапортуют о перерасходе оперативной памяти в Go, стали массовым явлением.

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

Читать далее
Всего голосов 42: ↑40 и ↓2 +38
Просмотры 6.9K
Комментарии 9

DDD в Go: натягивание совы на глобус?

Блог компании Constanta Программирование *Анализ и проектирование систем *Проектирование и рефакторинг *Go *

Как-то раз я сидел в баре с давним приятелем, с которым раньше мне довелось поработать на поза-поза-позапрошлой работе. Он из сомневающихся по поводу перехода на Go, ярый приверженец своего нынешнего языка. Хочу сказать, что он делает действительно классные вещи, пишет безупречный код, у него есть, чему поучиться. Но к Go у него отношение не слишком позитивное. Как он сказал: “Go — это *****код (плохой код)”. И в качестве одного из аргументов привел то, насколько, по его мнению, криво в Go реализована обработка ошибок. В чем-то он прав — в моем текущем не самом большом проекте на Go конструкция “if err != nil” встречается 1132 раза.


Этот мой приятель, не побоюсь этого слова — адепт DDD (domain driven design). Все, что не относится к DDD, — это, по его мнению, антипаттерн, ад и хаос. Когда я ему рассказал, что у меня есть довольно успешный опыт проектирования по DDD в Go-проектах, он округлил глаза. Да, ответил я, с определенной серией оговорок и компромиссов это работает, и неплохо.


Читать дальше →
Всего голосов 16: ↑14 и ↓2 +12
Просмотры 8.6K
Комментарии 41

Веб-фреймворки для Golang в 2022 году: оптимальные варианты для разработчика

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

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

Читать далее
Всего голосов 14: ↑10 и ↓4 +6
Просмотры 7.2K
Комментарии 13

Golang-дайджест № 18 (1 – 30 июня  2022)

Go *

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

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

Выпущены версии 1.18.3 и 1.17.11, go 1.19 Beta 1 Released, обнаружен еще один ботнет на GO, собеседование Часть II что там с конкурентностью?

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

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

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

Работа

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