en
Feedback
Golang Дайджест

Golang Дайджест

Open in Telegram

Самое интересное из мира Go: новости, статьи, проекты, сервисы, изменения в языке и др. Посты публикуются не часто - только самое важное, с чем я лично ознакомился. Поэтому можно не мьютить канал =) Обратная связь: @justskiv

Show more
5 678
Subscribers
No data24 hours
No data7 days
No data30 days
Posts Archive
Красивое решение для борьбы с ботами на серверах Ещё один интересный пост от Daily Geek News: https://t.me/daily_geek_news/230 Речь про endlessh-go - решение для защиты серверов, работающих с SSH. На самом деле, это просто реализация Endlessh на Go с добавлением метрик и дашборда в Графане. Для тех, кто не очень понимает автора оригинально поста, давайте разберемся о чем речь: - Тарпит (Tar pit) - технология безопасности, предназначенная для замедления атакующего, путем увеличения времени ответа сервера. Это заставляет сканирующие боты или атакующие инструменты тратить гораздо больше времени на попытку подключения к серверу, что затрудняет атаку. Вот более подробная статья на эту тему. - Ханипот (Honeypot) - система безопасности, представляющая собой ложную цель для атакующих. Она преднамеренно содержит уязвимости для привлечения хакеров, позволяя администраторам отслеживать попытки несанкционированного доступа и анализировать методы атаки. Хорошую статью на эту тему на нашел. Если знаете, делитесь в комментариях, а пока вот такая (не читал, не ручаюсь что хорошая) - Экспортирование данных в Графану позволяет наглядно отслеживать активность вокруг сервера SSH, строить на этом какую-то аналитку #project #cybersecurity

Как начать разрабатывать игры на Go https://www.quasilyte.dev/ebiten/ru/ Искандер написал подробный гайд для людей, которые делают свои первые шаги в геймдеве на Go: - Развенчание популярных мифов - Про Ebitengine - Ресурсы для обучения - Важные библиотеки и др. От автора:
Тебе хочется создавать игры на Go? Ebitengine - отличный вариант. Этот документ был создан чтобы упростить твоё путешествие. ... tl;dr: Go - подходящий язык, Ebitengine - неплохой игровой движок, сообщество - живое и расширяется
#guide #gamedev #quasilyte

Сторисы выкладывать тут не буду, но если хотите гоферов в реакты под постами, вы знаете за кого голосовать 💻 https://t.me/bo
Сторисы выкладывать тут не буду, но если хотите гоферов в реакты под постами, вы знаете за кого голосовать 💻 https://t.me/boost/golang_digest Можно в полдень 😉

Пишем RPG на Go - серия статей 0) https://habr.com/ru/articles/791192/ 0.5) https://habr.com/ru/articles/799497/ Искандер активно продвигает GameDev в Go, и вот его очередной проект - обучающая серия статей по написанию RPG на Ebitengine. Пока написаны только две вступительные статьи, остальное в процессе. ———— Напомню, что у Искандера уже есть готовая игра - Roboden, написанная на Go, которая уже добралась до Steam и даже до Steamdeck. Если вам интересен подобный формат, предлагаю поддержать автора, чтобы у него точно была мотивация довести проект до конца 👾 #guide #gamedev #quasilyte

routegroup - легковесная обёртка для группировки и интеграции middleware в http.ServeMux https://github.com/go-pkgz/routegroup Автор библиотеки: Umputun, один из ведущих подкаста "Радио-Т" Описание его словами:
Смысл этой микро-библиотеки лично для меня в том, чтоб убрать ненужную теперь зависимость на Chi в моих проектах, но не пострадать при этом. Chi мне служил верой и правдой много лет, хотя наши с ним (а точнее с его автором) отношения не всегда были ровными. Однако, после того как в 1.22 завезли улучшения раутинга, почти все, чего мне не хватало в стандартном муксе там появилось. Единственно то, чего не хватило это библиотека добавила, а именно группы раутов с ассоциированными мидлеваре. Я ее писал с двумя целями в голове - добавить только это и ничего более, и быть полностью совместимым со стандартной библиотекой.
Оригинальный пост: https://t.me/daily_geek_news/218 #library #http #mux

Repost from Go Update
🎉 Состоялся релиз Go 1.22 Как-то буднично и без предварительных фанфар состоялся релиз новой версии языка. Изменений много, постараюсь остановится лишь на самых значимых: — Расширение синтаксиса циклов for. Теперь можно писать

for i := range 10 {
 println(i)
}
Вместо

for i := 0; i < 10; i++ {
 println(i)
}
Изменение приятное, уменьшающее число когнитивной нагрузки. Само изменение шло в довесок к итераторам, которые отложили до Go 1.23 (но которые можно попробовать уже сейчас). — Изменение принципов создания переменных внутри объявления циклов. Об этом я писал вот тут, но если в кратце больше не нужна конструкция вида tt := tt внутри циклов. — Итераторы доступны в экспериментальном режиме. Включить и поиграться можно через переменную окружения GOEXPERIMENT=rangefunc. Можно установить через go env -w GOEXPERIMENT=rangefunc если не хочется каждый раз возится. В комплекте так-же идет пакет iter который позволяет создавать pull итераторы из push. Почитать про все это от разработчиков языка можно тут. — go test -cover теперь корректно выводит 0% покрытия для пакетов где нет тестов, но есть исполняемый код. Для пакетов где нет go файлов или они содержат только структуры выводит старое [no test files]. — Переделали trace – и пакет и UI. — net/http роутер теперь поддерживает указание метода и паттерны. Про это расширение роутера было много статей и блогов, поэтому тут будет просто упоминание. — Первый v2 пакет math/rand/v2. Заменили Mitchell & Reeds LFSR генератор rand.Source случайных чисел на более современный и криптографически стойкий ChaCha8. А сие значит, что его можно использовать для криптографических операций. Плюс он быстрее и жрет меньше памяти. Так-же есть PCG генератор, который не криптографически стойкий, но еще быстрее. Кроме этого пакет получил дополнительные методы (в том числе дженерик функция rand.N для работы с семейством int типов, например time.Duration). — PGO (оптимизация использующая данные профилировщика) теперь генерирует еще более быстрый код. Обещают от 2% др 14% прироста производительности при использовании PGO. — Оптимизации "встраивание функций" и "девиртуализатор" теперь работают совместно, что позволяет выполнять один после другого и обратно. Этого очень просили пользователи функций криптографических пакетов которые возвращают интерфейсы. — Оптимизацию "встраивание функций" сделали еще более умной - теперь она пытается отработать внутри циклов и других горячих местах, и наоборот пытается не инлайнить в коде обработки паник. Но пока все это тоже в экспериментальном режиме. Попробовать можно через GOEXPERIMENT=newinliner. Почитать тут. — Из лично приятного: в пакет slices добралась функция Concat для соединения произвольного числа слайсов. Больше не нужно городить цепочку append. На мой взгляд релиз в целом приятный, но половинчатый: многое из действительно интересных вещей скрыты за флагом GOEXPERIMENT, а часть вообще осталась ждать Go 1.23. Тем не менее обновится стоит, хотя-бы ради нового синтаксиса циклов for. Полный список изменений как всегда тут.

Go Tour на стероидах от ArdanLabs https://www.ardanlabs.com/blog/2024/01/ultimate-go-tour.html William Kennedy, известный нам по крутым гайдам по внутренностям Go, решил, что официальный Go Tour недостаточно хорош, и предлагает нам свою версию. Что не нравилось: - Официальный Тур не является всеобъемлющим как по количеству примеров, так и по содержанию, объясняющему эти примеры - Содержание практически мгновенно переходит от новичка к эксперту Вильям поколдовал и получилось это: tour.ardanlans.com Лучше оно или хуже - решать вам. Но оно точно стоит внимания. Возможно, один из самых крутых аспектов этого нового тура заключается в том, что он не контролируется Google. Это дает проекту гибкость, позволяющую вовлечь в него сообщество. #ardanlabs #go_tour

Как устроена память в Go https://habr.com/ru/companies/vk/articles/776766/ На мой взгляд, устройство памяти - это очень важная тема для тех, кто хочет лучше разбираться, как Go устроен под капотом. Сама статья читается легко и интересно, мне понравилось. #article #memory

Открытое собеседование Senior Go разработчика https://youtu.be/GD0iHLucYdU Самые популярные интервьюеры русскоязычного Go сообщества - Даниил Подольский (Yadro) и Владимир Балун (Yandex) провели собеседование сеньора на канале Николая Тузова. Собеседование состоит из двух частей - общие вопросы по знаменитому опроснику Даниила и лайв-кодинг с Владимиром. В роли кандидата выступил Антон Зиновьев - разработчик и техлид из компании Gaijin. #собеседование

Пять новых вакансий в Авито: - Бэкенд-инженер в команду (Маркетплейс) - Тимлид разработки в команду электроники - Бэкенд-разр
Пять новых вакансий в Авито: - Бэкенд-инженер в команду (Маркетплейс) - Тимлид разработки в команду электроники - Бэкенд-разработчик в команду инфраструктуры - Бэкенд-разработчик в команду Cloud - С++-разработчик в команду инфраструктуры поиска Вилка для разработчиков: 300-500к Для тимлида: от 500к В описании каждой вакансии рассказано про вашу будущую команду, и чем вы будете заниматься. Бенефиты: – Прозрачная система премий; – Удалённая работа, но есть и классный офис в Москве, в 2-х минутах от метро «Белорусская»; – ДМС со стоматологией с первого дня; – Любая необходимая техника, вплоть до мониторов; – Обучение за счёт компании. #вакансии

Исследование Go-разработчиков от авторов языка https://go.dev/blog/survey2023-h2-results Основные результаты: - Разработчики Go заявили, что они больше заинтересованы в инструментах AI/ML, которые улучшают качество кода, который они пишут, а не пишут код для них. Круглосуточно доступный "ревьюер" может стать одной из наиболее полезных фич ИИ. - Эксперимент с шаблонами проектов (gonew), похоже, решает критические проблемы Go-разработчиков (особенно новичков в Go). Основываясь на этих результатах, можно сказать что gonew может существенно снизить порог входа в Go для новичков. - 3/4 респондентов работают над программным обеспечением на Go, которое также использует облачные сервисы; это свидетельствует о том, что разработчики рассматривают Go как язык для современной облачной разработки. - Настроение разработчиков по отношению к Go остается крайне позитивным: 90% респондентов опроса заявили, что удовлетворены работой с Go в течение предыдущего года. #survey #go_official

gRPC сервис авторизации: огромный гайд Гайд доступен в двух вариантах: - Видео на YuuTube - Статья на Хабре Сервис пишется с нуля, попутно затрагивается множество аспектов: - Правильная архитектура проекта - Как писать ProtoBuf контракты, генерировать по ним код - Как полноценно тестировать свой сервис, написание функциональных тестов - Как правильно работать с паролями и токенами авторизации - Взаимодействие между сервисами - Работа с миграциями

Подводные камни Go Расскажите, какие наиболее значимые и популярные подводные камни и грабли Go вы знаете? Если есть истории реальных фэйлов, связанных с этим, будет ещё лучше. "nil error value", передача слайса по значению и т.п. Пусть даже самые банальные и общеизвестные. Если соберём хорошую подборку, я готов сделать полноценный ролик на эту тему на своём канале.

Почему `nil error value` не равно nil? Судя по результатам опроса выше, не все понимают эту механику. Вот официальный ответ разработчиков на этот вопрос. Также хорошее объяснение с более сложным примером вы найдёте в книге "Язык программирования Go" Донован А. Керниган Б. (стр. 224 - глава 7, Интерфейсы)

Какое значение выведет программа? (см. пост выше)
Anonymous voting

Какое значение выведет программа?
Какое значение выведет программа?

В Авито появились 5 вакансий: - Go-разработчик в команду внутренних проектов (Legal Tech) - Бэкенд-разработчик в команду инфр
В Авито появились 5 вакансий: - Go-разработчик в команду внутренних проектов (Legal Tech) - Бэкенд-разработчик в команду инфраструктуры - Бэкенд-разработчик в команду Core Services (Bricks) - Бэкенд-разработчик в команду услуг продвижения и CPA - Бэкенд-разработчик в команду монетизации сделок В описании каждой из них рассказано про вашу будущуу команду и чем вы будете заниматься. Зарплатная вилка: 204-484к Бенефиты: – Прозрачная система премий; – Удалённая работа, но есть и классный офис в Москве, в 2-х минутах от метро «Белорусская»; – ДМС со стоматологией с первого дня; – Любая необходимая техника, вплоть до мониторов; – Обучение за счёт компании. #вакансии

Здоровая конкуренция в GO https://habr.com/ru/companies/timeweb/articles/770912/ Очень хорошая статья, в которой простым языком на простеньких примерах рассказываются основы работы с параллельным кодом: - Зачем это нужно - Какие издержки распараллеливания мы имеет (спойлер - код становится намного сложнее и опасней) - Как и почему нельзя писать параллельный код и др. Если вы не ещё сталкивались с подобными задачами, рекомендую ознакомиться. #article #concurrency

GPT бот для работы с документацией Go https://eli.thegreenplace.net/2023/retrieval-augmented-generation-in-go/ Как быть, если вы хотите спросить у GPT бота что-то по свежей документации Go, но его базы сильно устарели?
- You: what is the latest released version of the Go programming language? - ChatGPT: As of my last update in April 2023, the latest stable version of Go was 1.20. - You: ...👌
Проблему можно решить с помощью Retrieval Augmented Generation (RAG), и Eli Bendersky в этой статье рассказывает как это делается. Ну и вкратце рассказывает, что такое RAG. Если интересен только код, вот репозиторий этого проекта. Пример ответа бота про вопрос о GOTOOLCHAIN (переменная окружения, которая появилась в Go 1.21):
In Go, `GOTOOLCHAIN` is an environment variable that determines which Go toolchain version should be used. The value of `GOTOOLCHAIN` can be set to various options: 1. `local`: This indicates that the bundled Go toolchain should be used. 2. `<name>`: This specifies a specific Go toolchain version that should be used. If a binary with that name is found in the system PATH, it will be used; otherwise, the `go` command will download and use the specified Go toolchain. 3. `<name>+auto` or `<name>+path`: This tells the `go` command to select and run a newer Go version as needed. It will consult the `toolchain` and `go` lines in the current workspace's `go.work` file (or the main module's `go.mod` file if there is no workspace) to determine which toolchain version to use. If a newer version is specified in those files, it will be used; otherwise, it will fallback to the default Go toolchain. Overall, `GOTOOLCHAIN` is used to specify the specific Go toolchain version or the selection process of a newer Go version that should be used by the `go` command.
#GPT #article #english

Разбор вопросов с Go собеседований В канале вы найдете : 📃 Разбор кода 📚 Алгоритмы 👨‍💻 Архитектуру 🛠 Реальные кейсы А ещ
Разбор вопросов с Go собеседований В канале вы найдете : 📃 Разбор кода 📚 Алгоритмы 👨‍💻 Архитектуру 🛠 Реальные кейсы А еще мы собрали папку ресурсов э Go разработчика: https://t.me/addlist/dv7Aubz9_jRjMTky Подписывайтесь, здесь кладезь полезной информаци: @golang_interview #партнерский_пост