🥳 Выпущены версии Go 1.21.4 и 1.20.11!
🔐 Безопасность: Включены исправления безопасности для path/filepath (CVE-2023-45283, CVE-2023-45284).
🗣 Анонс: https://groups.google.com/g/golang-announce/c/4tU8LZfBFkY
🗃 Скачать: https://go.dev/dl/#go1.21.4
@Golang_google
🔐 Безопасность: Включены исправления безопасности для path/filepath (CVE-2023-45283, CVE-2023-45284).
🗣 Анонс: https://groups.google.com/g/golang-announce/c/4tU8LZfBFkY
🗃 Скачать: https://go.dev/dl/#go1.21.4
@Golang_google
Маршрутизации на основе правил: динамические скрипты, домены, IP-адреса, имя процесса и многое другое
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Создать RTS, которая бы хорошо работала в браузере с помощью #golang, сложная задача, но возможная.
Игра написана с использованием движка Ebitengine и даже доступна в Steam.
•Github
•Проект
#ebitengine #gamedev #golang
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
F-jgIg5asAAxB0Q.jpeg
965.2 KB
Шаблон-шпаргалка для решения различных проблем системного дизайна на собеседованиях.
В нем кратко затронуты следующие вопросы:
- Балансировка нагрузки
- API
- Коммуникационные протоколы
- CDN
- База данных
- Кэш
- Очередь сообщений
- Генерация уникальных идентификаторов
- Масштабируемость
- Доступность
- Производительность
- Безопасность
- Отказоустойчивость
- И многое другое
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
go.dev
Fourteen Years of Go - The Go Programming Language
Happy Birthday, Go!
🔥 Дайджест полезных материалов из мира Golang за неделю
Почитать:
— Multipath TCP в Go
— Проблемы функции Golang init
— Мультиплатформенные образы: что это такое и зачем они нужны
— Организация стенда локальной разработки для самых маленьких с автоматической пересборкой приложения (фронтенд + бэкенд)
— 14years Go
— GopherConAU
— Git и GitHub для начинающих
— Реализация Graceful Shutdown в Go
— Использование табличных тестов в go для тестирования запросов к БД + testify
— PKI на ENS. Часть 2. Proof-of-Concept
— Building a fully Type-Safe Event-Driven Backend in Go
— Fundamentals of Go - FARMISS
— Golang or Rust: Which one to choose?
— Building LangChain applications with Amazon Bedrock and Go - An introduction
— Creating Real-Time WebSockets with Go and WebAssembly
— Config-file-validator v1.5.0 Released!
— Considered Harmful - Accept Interfaces, Return Structs
— Example 5, Automatically generate grpc gateway service project code, easy to achieve cross-service grpc calls
— Example 6, Build a simple golang e-commerce microservices framework step by step using tool
— Example 3, Automatically generate generic web service (gin) project code, increasing development efficiency by at least 1x
Посмотреть:
🌐 Automated Weather Polling System in Golang
🌐 Совет Python разработчикам - реши задачу Chain sum с реального собеседования. (⏱ 14:23)
🌐 Automated Weather Polling System in Golang (⏱ 01:40:23)
🌐 Let's Build A Distributed CAS Storage In Golang (⏱ 46:14)
🌐 P2P Protocol In Golang For My Distributed CAS (⏱ 36:09)
🌐 День из жизни программиста в Анталии (⏱ 07:14)
🌐 Самый простой язык программирования #айти #программирование #программист (⏱ 00:42)
🌐 Как писать код без ошибок? #айти #программирование #программист (⏱ 00:49)
🌐 Нужна ли математика программисту? #айти #программирование #программист #математике (⏱ 00:35)
🌐 GoLang Project: Password Generator (⏱ 12:12)
🌐 Object Value Types in Go!? ~ Domain Driven Design (⏱ 05:50)
🌐 Implementing IP Address Rate Limiting in Go!? (⏱ 05:35)
🌐 GoLang Project: Password Generator
Хорошего дня!
@Golang_google
Почитать:
— Multipath TCP в Go
— Проблемы функции Golang init
— Мультиплатформенные образы: что это такое и зачем они нужны
— Организация стенда локальной разработки для самых маленьких с автоматической пересборкой приложения (фронтенд + бэкенд)
— 14years Go
— GopherConAU
— Git и GitHub для начинающих
— Реализация Graceful Shutdown в Go
— Использование табличных тестов в go для тестирования запросов к БД + testify
— PKI на ENS. Часть 2. Proof-of-Concept
— Building a fully Type-Safe Event-Driven Backend in Go
— Fundamentals of Go - FARMISS
— Golang or Rust: Which one to choose?
— Building LangChain applications with Amazon Bedrock and Go - An introduction
— Creating Real-Time WebSockets with Go and WebAssembly
— Config-file-validator v1.5.0 Released!
— Considered Harmful - Accept Interfaces, Return Structs
— Example 5, Automatically generate grpc gateway service project code, easy to achieve cross-service grpc calls
— Example 6, Build a simple golang e-commerce microservices framework step by step using tool
— Example 3, Automatically generate generic web service (gin) project code, increasing development efficiency by at least 1x
Посмотреть:
🌐 Automated Weather Polling System in Golang
🌐 Совет Python разработчикам - реши задачу Chain sum с реального собеседования. (⏱ 14:23)
🌐 Automated Weather Polling System in Golang (⏱ 01:40:23)
🌐 Let's Build A Distributed CAS Storage In Golang (⏱ 46:14)
🌐 P2P Protocol In Golang For My Distributed CAS (⏱ 36:09)
🌐 День из жизни программиста в Анталии (⏱ 07:14)
🌐 Самый простой язык программирования #айти #программирование #программист (⏱ 00:42)
🌐 Как писать код без ошибок? #айти #программирование #программист (⏱ 00:49)
🌐 Нужна ли математика программисту? #айти #программирование #программист #математике (⏱ 00:35)
🌐 GoLang Project: Password Generator (⏱ 12:12)
🌐 Object Value Types in Go!? ~ Domain Driven Design (⏱ 05:50)
🌐 Implementing IP Address Rate Limiting in Go!? (⏱ 05:35)
🌐 GoLang Project: Password Generator
Хорошего дня!
@Golang_google
Go
.go install github.com/kisielk/errcheck@latest
▪ Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
⭐️ Две структуры с одинаковыми полями могут иметь разный размер.
Это явление известно как "padding", понятие, заимствованное из языка C++, но применимое и в Go.
Рассмотрим приведенный выше пример.
Структуры
Она увеличивается до
Это явление известно как "padding", понятие, заимствованное из языка C++, но применимое и в Go.
Рассмотрим приведенный выше пример.
Структуры
A
и B
имеют совершенно одинаковые поля, но если просто переставить порядок полей, то структура A станет в два раза больше. Она увеличивается до
32 байт
, в то время как структура B остается меньше - 16 байт.
@Golang_googleВышла новая версия официального драйвера #Redis для Go с поддержкой типа данных JSON
https://github.com/redis/go-redis/releases/tag/v9.3.0
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
1) Список часто используемых команд Git
https://github.com/joshnh/Git-Commands
2) Книга по Git
https://git-scm.com/book/en/v2
3) Git simple guide no deep shit!
https://rogerdudler.github.io/git-guide/
4) Intro to Git and GitHub for Beginners
https://product.hubspot.com/blog/git-and-github-tutorial-for-beginners
5) Понимание потока GitHub
https://docs.github.com/en/get-started/quickstart/github-flow
6) Руководство для начинающих по внесению вклада в проект GitHub
https://akrabat.com/the-beginners-guide-to-contributing-to-a-github-project/
7) Ё**** Git!!!
https://ohshitgit.com/ru
8)LearnGitBranching
https://learngitbranching.js.org/
Делитесь в комментариях свои полезные ресурсы по работе с Git и GitHub
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Это репо содержит примеры переписанных на Golang инструментов и утилит кибербезопасности, которые могут быть использованы в работе "
Red Team
".Главная задача
Red Team
– оценить скорость реагирования, а также эффективность процедур, систем и средств защитRed Teaming — это имитация реальных кибератак с целью тренировки и оценки эффективности людей, процессов и технологий, используемых для защиты информационной инфраструктуры заказчика.
▪ Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Реализация приоритетной очереди, основанная на container/heap.
Этот пакет построен поверх стандартной функциональности, уже предоставляемой container/heap и добавляет различные удобные методы для создания новых приоритетных очередей, предикаты для проверки того, пуста ли очередь, синхронизацию для безопасного использования несколькими горутинами и другое.
go get -v gopkg.in/dnaeon/go-priorityqueue.v1
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Дайджест полезных материалов из мира Golang за неделю
Почитать:
— Как я реверс-инженерил китайский блютуз контроллер
— Лучшие практики Golang (20 лучших)
— Собираем статистику по телеграм-каналу и строим кастомные графики
— Здоровая конкуренция в GO. Главное не перехитрить самого себя
— Как использовать ресурсы Kubernetes по максимуму для работы с Go-приложениями
— Pushing SQLite to its limits with Go while having fun
— Partitioned S3 Bucket from DynamoDB
— Build a Cybersecurity Link-Analyzer with Go
— How to setup ZeptoMail in Golang
— Your Microservices are probably not Type-Safe 🐘
— Building a TypeScript Simple Channel (Like Golang)
— Setting Up the Go Programming Environment on Windows 11
— O poder do CLI com Golang e Cobra CLI
— Goroutines por baixo dos panos
— How to build a desktop markdown editor
— Add context to errors
Посмотреть:
🌐 Попробуем сделать vpn на websocket. заодно tcp/ip подучим. (golang)
🌐 Пишем генератор Shorts видео на Python для заработка на YouTube. (⏱ 11:50)
🌐 Distributed CAS Storage In Golang - RPC Networking (⏱ 26:01)
🌐 This Is Why You Are Stuck In Tutorial Hell (⏱ 04:30)
🌐 Streaming Large Files In Golang But Distributed (⏱ 33:48)
🌐 Coding TCP Transport For My P2P Distributed Storage In GO (⏱ 26:01)
🌐 Message Queue From Scratch In Golang With Only STD LIB (⏱ 01:55:49)
Хорошего дня!
#digest #golang
@Golang_google
Почитать:
— Как я реверс-инженерил китайский блютуз контроллер
— Лучшие практики Golang (20 лучших)
— Собираем статистику по телеграм-каналу и строим кастомные графики
— Здоровая конкуренция в GO. Главное не перехитрить самого себя
— Как использовать ресурсы Kubernetes по максимуму для работы с Go-приложениями
— Pushing SQLite to its limits with Go while having fun
— Partitioned S3 Bucket from DynamoDB
— Build a Cybersecurity Link-Analyzer with Go
— How to setup ZeptoMail in Golang
— Your Microservices are probably not Type-Safe 🐘
— Building a TypeScript Simple Channel (Like Golang)
— Setting Up the Go Programming Environment on Windows 11
— O poder do CLI com Golang e Cobra CLI
— Goroutines por baixo dos panos
— How to build a desktop markdown editor
— Add context to errors
Посмотреть:
🌐 Попробуем сделать vpn на websocket. заодно tcp/ip подучим. (golang)
🌐 Пишем генератор Shorts видео на Python для заработка на YouTube. (⏱ 11:50)
🌐 Distributed CAS Storage In Golang - RPC Networking (⏱ 26:01)
🌐 This Is Why You Are Stuck In Tutorial Hell (⏱ 04:30)
🌐 Streaming Large Files In Golang But Distributed (⏱ 33:48)
🌐 Coding TCP Transport For My P2P Distributed Storage In GO (⏱ 26:01)
🌐 Message Queue From Scratch In Golang With Only STD LIB (⏱ 01:55:49)
Хорошего дня!
#digest #golang
@Golang_google
Uber широко использует Go в качестве основного языка программирования для реализации внутренних сервисов и библиотек благодаря его высокой производительности.
Моно репо Go является самой большой кодовой базой в Uber, насчитывающей
90 млн. строк кода
(и продолжает расти). Это делает инструментарий для написания надежного кода на Go критически важной частью нашей инфраструктуры разработки.Указатели (переменные, хранящие в памяти адреса других переменных, а не их реальные значения) являются неотъемлемой частью языка программирования Go и способствуют эффективному управлению памятью и эффективному манипулированию данными.
Поэтому программисты широко используют указатели при написании программ на языке Go для различных целей, таких как модификация данных, параллельное программирование, обмен данными, оптимизация использования памяти, облегчение работы с интерфейсами и полиморфизм.
Несмотря на то, что указатели являются мощным и широко используемым инструментом, необходимо использовать их аккуратно и разумно, чтобы избежать распространенных ошибок, связанных с nil-паниками в коде.
В этой статье описаны практики решения, а так же о интсрменте от команды Uber NilAway — библиотеке статического анализа для обнаружения возможных nil-паник в коде на Go, который позволяет ловить их во время компиляции, а не во время выполнения.
NilAway похож на nilness, но является гораздо более продвинутым инструментом и содержит мощные методы статического анализа для отслеживания потоков nil как внутри пакета, так и между пакетами.
📌 Читать статью
📌 Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
scdb - это легкий и быстрый механизм хранения данных типа "ключ-значение", отличающийся простотой и скоростью работы, написанная на Go.
Инструмент создан по образцу архитектуры хранения Bitcask, известной своей эффективностью при операциях записи.
▪Основной принцип построения scdb (и Bitcask) основан на файловых системах с лог-структурой. При таком подходе все изменения добавляются в конец журнала, что делает запись исключительно быстрой, поскольку она осуществляется последовательно. Такая конструкция не только обеспечивает быстродействие, но и гарантирует целостность данных: даже в случае сбоя системы можно легко восстановить данные благодаря этому методу, основанному только на приложении.
▪Кроме того, в scdb реализован процесс, известный как объединение файлов журнала. Со временем, когда ваше приложение записывает все больше данных, количество файлов журнала естественным образом увеличивается. Объединение лог-файлов - это техника, которая объединяет файлы для предотвращения фрагментации и поддержания производительности. Это похоже на домашнюю уборку, обеспечивающую организованность и эффективность хранения данных.
▪Таким образом, если вы разрабатываете приложение, требующее быстрой записи данных и простого, но надежного решения для хранения данных, scdb может оказаться именно тем механизмом, который вы ищете. Он создан для того, чтобы обеспечить разработчикам, подобным вам, удобство хранения и извлечения пар ключ-значение.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
💡 Балансировщики нагрузки буквально в 100 раз лучше, чем старый добрый светофор.
Они могут обрабатывать миллионы входящих запросов, распределять трафик между серверами и вообще поддерживать бесперебойную работу при минимальной настройке.
Почему?
Потому что балансировщики нагрузки могут использовать некоторые действительно мощные алгоритмы на лету.
В общем случае существует две категории таких алгоритмов:
✅ Статические
✅ Динамический
- Наименьшее количество соединений
- Наименьшее время отклика
Рассмотрим каждый алгоритм чуть более подробно
👉 Round Robin
- Запросы последовательно распределяются между группой серверов.
- Нет гарантии, что несколько запросов от пользователя попадут к одному и тому же экземпляру.
👉Sticky Round Robin
- Лучшая альтернатива round-robin
- Различные запросы от одного и того же пользователя поступают на один и тот же эндпоинт.
👉 Hash-Based
- Алгоритм распределяет запросы на основе хэша значения ключа.
- В качестве ключа может выступать IP-адрес или URL-адрес запроса
👉 Weighted Round Robin
- Каждый сервер получает значение веса.
- Это значение определяет долю трафика.
- Серверы с большим весом получают больше трафика. Хорошо подходит для систем с серверами разной мощности
👉 Наименьшее количество соединений
- Новый запрос отправляется на тот экземпляр сервера, который имеет наименьшее количество соединений.
- Количество подключений определяется исходя из относительной вычислительной мощности сервера
👉 Наименьшее время отклика
- Новый запрос отправляется на сервер с наименьшим временем отклика, чтобы минимизировать общее время отклика.
- Хорошо подходит для случаев, когда время отклика критично.
Протестируйте балансировку нагрузки телеграм с помощью кнопки LIKE👍.
@Golang_google
Они могут обрабатывать миллионы входящих запросов, распределять трафик между серверами и вообще поддерживать бесперебойную работу при минимальной настройке.
Почему?
Потому что балансировщики нагрузки могут использовать некоторые действительно мощные алгоритмы на лету.
В общем случае существует две категории таких алгоритмов:
✅ Статические
- Round Robin
- Sticky Round Robin
- Хэш
- Weighted Round Robin
✅ Динамический
- Наименьшее количество соединений
- Наименьшее время отклика
Рассмотрим каждый алгоритм чуть более подробно
👉 Round Robin
- Запросы последовательно распределяются между группой серверов.
- Нет гарантии, что несколько запросов от пользователя попадут к одному и тому же экземпляру.
👉Sticky Round Robin
- Лучшая альтернатива round-robin
- Различные запросы от одного и того же пользователя поступают на один и тот же эндпоинт.
👉 Hash-Based
- Алгоритм распределяет запросы на основе хэша значения ключа.
- В качестве ключа может выступать IP-адрес или URL-адрес запроса
👉 Weighted Round Robin
- Каждый сервер получает значение веса.
- Это значение определяет долю трафика.
- Серверы с большим весом получают больше трафика. Хорошо подходит для систем с серверами разной мощности
👉 Наименьшее количество соединений
- Новый запрос отправляется на тот экземпляр сервера, который имеет наименьшее количество соединений.
- Количество подключений определяется исходя из относительной вычислительной мощности сервера
👉 Наименьшее время отклика
- Новый запрос отправляется на сервер с наименьшим временем отклика, чтобы минимизировать общее время отклика.
- Хорошо подходит для случаев, когда время отклика критично.
Протестируйте балансировку нагрузки телеграм с помощью кнопки LIKE👍.
@Golang_google
This media is not supported in your browser
VIEW IN TELEGRAM
An interactive study of common retry methods
Для написания надежного программного обеспечения необходимо обрабатывать сетевые сбои, иначе приложение не будет эффективно работать. Одним из наиболее распространенных методов обработки неудачного запроса является повтор запросов.
В этом интерактивном гайде наглядно показаын различные методы повторных попыток запросов, показано, почему некоторые распространенные подходы опасны, и, объянено, что является наилучшей практикой.
После прочтения этой статьи вы будете иметь четкое представление о том, что хорошей практикой для использования повторных запросов.
Советы, приведенные в этой статье, в равной степени относятся как к запросам к собственным внутренним сервисам, так и к сторонним.
https://encore.dev/blog/retries
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM