📌 Полноценный цикл видео о том, как создать PaaS:
🔸 Библиотеки и инструменты для создания сервиса | История создания шаблона проекта и библиотек для разработчика микросервиса на Go | Александр Ермолаев, руководитель группы стандартизации шаблонов, инструментов и мониторинга в СберМаркете.
➕ Инструменты для observability в PaaS | Про дашборды, каким образом обеспечивается добавление новых компонентов в библиотеку go-libs и многое другое.
🔸 Как запустить сервис локально одной командой | Как делали выбор между minikube и docker compose, как настраивали роутинг внутри и снаружи, и многое другое | Дмитрий Лукиянчук, руководитель отдела разработки платформенных решений в СберМаркете.
🔸 Канареечный деплой | Что нужно, чтобы задеплоить сервис в PaaS и как это устроено | Антон Малафеев, руководитель группы инженеров ИТ-инфраструктуры в СберМаркете.
🔸 Трудности перевода: взаимодействие сервисов | Как организовать общение между сервисами и устроить эволюцию, а не революцию.
| Александр Сусиков, руководитель отдела разработки Ruby-платформы в СберМаркете.
🔸 Как тестировать группу сервисов и экономить время | Про проблемы тестирования, какие есть подходы к тестированию в СберМаркете, как развернуть связку сервисов для системного тестирования и как этим управлять | Роман Шпак, руководитель группы повышения производительности в СберМаркете.
🔸 Библиотеки и инструменты для создания сервиса | История создания шаблона проекта и библиотек для разработчика микросервиса на Go | Александр Ермолаев, руководитель группы стандартизации шаблонов, инструментов и мониторинга в СберМаркете.
➕ Инструменты для observability в PaaS | Про дашборды, каким образом обеспечивается добавление новых компонентов в библиотеку go-libs и многое другое.
🔸 Как запустить сервис локально одной командой | Как делали выбор между minikube и docker compose, как настраивали роутинг внутри и снаружи, и многое другое | Дмитрий Лукиянчук, руководитель отдела разработки платформенных решений в СберМаркете.
🔸 Канареечный деплой | Что нужно, чтобы задеплоить сервис в PaaS и как это устроено | Антон Малафеев, руководитель группы инженеров ИТ-инфраструктуры в СберМаркете.
🔸 Трудности перевода: взаимодействие сервисов | Как организовать общение между сервисами и устроить эволюцию, а не революцию.
| Александр Сусиков, руководитель отдела разработки Ruby-платформы в СберМаркете.
🔸 Как тестировать группу сервисов и экономить время | Про проблемы тестирования, какие есть подходы к тестированию в СберМаркете, как развернуть связку сервисов для системного тестирования и как этим управлять | Роман Шпак, руководитель группы повышения производительности в СберМаркете.
🔥16❤3⚡3🥱3
Нас уже больше 13 000 🥳 🎊 🎂 ! Спасибо за интерес к «Библиотеке Go-разработчика».
Please open Telegram to view this post
VIEW IN TELEGRAM
❤24🔥13👍5🤔1
📌 Вот как выглядит список активных предложений и дискуссий команды Go, актуальный на момент второго августа
🤔 Обсуждения (еще не предложения)
◾gonew: templates for new modules #61669
◾metrics for the standard library #61638
◾codereview: should the Go project stop importing GitHub PRs? #61182
◾net/http: move HTTP/2 into the standard library #60746
☑️ Принятые
◾crypto/tls: QUIC 0-RTT APIs #60107
◾sync/atomic: add OR/AND operators for unsigned types #61395
◾text/template, html/template: add ExecuteFuncs #54450
◾x/crypto/cryptobyte: expose uint48 methods #61275
➖ Отклоненные
◾`go test ./.../...` for submodule/multimodule projects #59480
◾add package 'operators' #58559
◾all: port to linux/mips_siflower #61254
◾maps: remove package for Go 1.21 #61613
➕ ➖ Вероятнее всего будут приняты
◾go/types, types2: fix SizesFor("gc", ...) to match actual gc behavior #61035
◾internal/cpu: detect OS support for AVX-512 and CPU support for VAES and VPCLMULQDQ instructions for performance optimization of crypto ciphers #43925
◾spec: add untyped builtin zero #61372
◾x/crypto: add AES-GCM-SIV #54364
⌛️ Активные
◾cmd/compile: add new range behind GOEXPERIMENT=range #61717
◾cmd/go: track tool dependencies in go.mod #48429
◾cmd/test2json: Allow Go Tests to Pass Metadata #43936
◾cmp: add CompareBool #61643
◾crypto/x509: introduce new robust OID type & use it for certificate policies #60665
◾fmt: don't recover panics except for dereferencing nil fmt.Stringer receivers #28150
◾go/doc: reconsider comment rewrites of
◾io/fs, net/http: define interface for automatic ETag serving #60940
◾io/fs: add writable interfaces #45757
◾math/rand/v2: revised API for math/rand #61716
◾net/http: enhanced ServeMux routing #61410
◾net/netip: add Prefix.Less and Prefix.Compare #61642
◾spec: add range over int, range over func #61405
◾syscall: undeprecate #60797
◾testing: Add T.Output() etc #59928
◾testing: add identity function that forces evaluation for benchmarks #61179
◾testing: add testing.B.Loop for iteration #61515
◾testing: shuffle seed should be different when -shuffle=on and -count flag is set #61256
◾time: stop requiring Timer/Ticker.Stop for prompt GC #61542
◾x/crypto/ssh: add a specific error for algorithm negotiation issues/errors #61536
◾x/crypto/ssh: export supported algorithms #61537
◾x/crypto/ssh: expose negotiated algorithms #58523
◾x/crypto/ssh: server side multi-step authentication #61447
◾x/oauth2: Unmarshal expires_in outside of oauth2/internal #61417
◾x/oauth2: support PKCE #59835
◾gonew: templates for new modules #61669
◾metrics for the standard library #61638
◾codereview: should the Go project stop importing GitHub PRs? #61182
◾net/http: move HTTP/2 into the standard library #60746
◾crypto/tls: QUIC 0-RTT APIs #60107
◾sync/atomic: add OR/AND operators for unsigned types #61395
◾text/template, html/template: add ExecuteFuncs #54450
◾x/crypto/cryptobyte: expose uint48 methods #61275
◾`go test ./.../...` for submodule/multimodule projects #59480
◾add package 'operators' #58559
◾all: port to linux/mips_siflower #61254
◾maps: remove package for Go 1.21 #61613
◾go/types, types2: fix SizesFor("gc", ...) to match actual gc behavior #61035
◾internal/cpu: detect OS support for AVX-512 and CPU support for VAES and VPCLMULQDQ instructions for performance optimization of crypto ciphers #43925
◾spec: add untyped builtin zero #61372
◾x/crypto: add AES-GCM-SIV #54364
◾cmd/compile: add new range behind GOEXPERIMENT=range #61717
◾cmd/go: track tool dependencies in go.mod #48429
◾cmd/test2json: Allow Go Tests to Pass Metadata #43936
◾cmp: add CompareBool #61643
◾crypto/x509: introduce new robust OID type & use it for certificate policies #60665
◾fmt: don't recover panics except for dereferencing nil fmt.Stringer receivers #28150
◾go/doc: reconsider comment rewrites of
''
to ”
#54312◾io/fs, net/http: define interface for automatic ETag serving #60940
◾io/fs: add writable interfaces #45757
◾math/rand/v2: revised API for math/rand #61716
◾net/http: enhanced ServeMux routing #61410
◾net/netip: add Prefix.Less and Prefix.Compare #61642
◾spec: add range over int, range over func #61405
◾syscall: undeprecate #60797
◾testing: Add T.Output() etc #59928
◾testing: add identity function that forces evaluation for benchmarks #61179
◾testing: add testing.B.Loop for iteration #61515
◾testing: shuffle seed should be different when -shuffle=on and -count flag is set #61256
◾time: stop requiring Timer/Ticker.Stop for prompt GC #61542
◾x/crypto/ssh: add a specific error for algorithm negotiation issues/errors #61536
◾x/crypto/ssh: export supported algorithms #61537
◾x/crypto/ssh: expose negotiated algorithms #58523
◾x/crypto/ssh: server side multi-step authentication #61447
◾x/oauth2: Unmarshal expires_in outside of oauth2/internal #61417
◾x/oauth2: support PKCE #59835
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
gonew: templates for new modules · golang go · Discussion #61669
A common request we hear from users is some kind of 'go new' functionality to start a new module with some kind of basic template. It seems like a tool along these lines should not be limit...
👍11❤5🤔2
Эксперименты с шаблонами проектов с помощью gonew
Команда Go представила новый экспериментальный инструмент для создания новых проектов Go из предопределенных шаблонов. Любой может написать эти шаблоны, которые затем упаковываются и распространяются в виде модулей, используя Go module proxy и checksum database для повышения безопасности и доступности.
📌 Устанавливаем:
>
📌 Используем:
>
>
Команда Go представила новый экспериментальный инструмент для создания новых проектов Go из предопределенных шаблонов. Любой может написать эти шаблоны, которые затем упаковываются и распространяются в виде модулей, используя Go module proxy и checksum database для повышения безопасности и доступности.
📌 Устанавливаем:
>
go install golang.org/x/tools/cmd/gonew@latest
📌 Используем:
>
gonew golang.org/x/example/helloserver example.com/myserver
>
cd ./myserver
go.dev
Experimenting with project templates - The Go Programming Language
Announcing golang.org/x/tools/cmd/gonew, an experimental tool for starting new Go projects from predefined templates
🔥23👍1🙏1
Встраиваем Hello World на Go в ядро Linux
Автор материала представил малоизвестную функцию ядра Linux. Вместо запуска программы из файловой системы, независимо от того, виртуальная она или нет, также можно встроить программу user-space непосредственно в сам образ ядра и запускать оттуда👇
Читать
Автор материала представил малоизвестную функцию ядра Linux. Вместо запуска программы из файловой системы, независимо от того, виртуальная она или нет, также можно встроить программу user-space непосредственно в сам образ ядра и запускать оттуда👇
Читать
🔥21
#tip #go #beginner
О случайном порядке итерации типа map
Встроенные мапы Go не поддерживают порядок входных значений. Поэтому при использовании цикла for-range для итерации записей мапы порядок записей рандомизируется. Запустив код из примера, вы увидите, что результаты могут отличаться.
Но обратите внимание, что функции вывода на экран в стандартном пакете fmt сортируют записи (по ключам) мапы. То же самое происходит с выводами вызовов функции json.Marshal.
О случайном порядке итерации типа map
Встроенные мапы Go не поддерживают порядок входных значений. Поэтому при использовании цикла for-range для итерации записей мапы порядок записей рандомизируется. Запустив код из примера, вы увидите, что результаты могут отличаться.
Но обратите внимание, что функции вывода на экран в стандартном пакете fmt сортируют записи (по ключам) мапы. То же самое происходит с выводами вызовов функции json.Marshal.
👍25
Разработка базовой поисковой системы на Go: пошаговое руководство
🔸Настройка необходимых инструментов/библиотек и создание структуры проекта с модулями Go
🔸Создание поискового робота и индексатора
🔸Реализация перечисленных компонентов и алгоритма поиска с подробным объяснением основных концепций: настройки HTTP-клиента, сканирования и индексирования веб-страницы, обработки URL-адреса и извлечения данных
🔸Модульное и сквозное тестирование проекта + базовые вопросы теплая
🔸Настройка необходимых инструментов/библиотек и создание структуры проекта с модулями Go
🔸Создание поискового робота и индексатора
🔸Реализация перечисленных компонентов и алгоритма поиска с подробным объяснением основных концепций: настройки HTTP-клиента, сканирования и индексирования веб-страницы, обработки URL-адреса и извлечения данных
🔸Модульное и сквозное тестирование проекта + базовые вопросы теплая
👍15
profile-guided-optimization-pgo-in-go.pdf
5.4 MB
С Go 1.20 компилятор Go начал поддерживать механизм Profile Guided Optimization (PGO) для оптимизации сборок.
О том, что из себя представляет PGO и как его использовать в своих проектах, читайте в статье👇
Читать (pdf-файл для тех, у кого не открывается Medium)
О том, что из себя представляет PGO и как его использовать в своих проектах, читайте в статье👇
Читать (pdf-файл для тех, у кого не открывается Medium)
❤10⚡2
🗒️ Примечания к выпуску
⬇️ Скачать
💯 — конечно
🥱 — нет, уже сбился со счета
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥54🥱37💯21👍4🌚3
📌 Подборка всех частей бесплатного мини-курса от Ardan Labs:
🌐 How to Install a Package Locally
🌐 What is a Module Mirror?
🌐 The Deploy First Mentality
🌐 Package Anti-Patterns
🌐 How Does a Cluster Work?
🌐 A Mental Model For Configuration
🌐 Concurrent Logging
🌐 Deploy A pprof Debug Service
🌐 Defining the Function Signature of a Web Handler
🌐 A Prelude to Middleware
🌐 How Middleware Works
🌐 Ephemeral Request Storage API
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤2
❤5👍5🌚5
⚡️Команда werf выпустила бесплатный самоучитель по CI/CD и Kubernetes для Go-разработчиков
Что внутри:
🔸Подготовка окружения и сборка образа
🔸Основы Kubernetes
🔸Создание приложения на Go, работа с файлами и БД
🔸Лучшие практики деплоя
🔸Построение CI/CD-пайплайна
GitLab CI/CD, GitHub Actions, ArgoCD
👉 Читать гайд
Что внутри:
🔸Подготовка окружения и сборка образа
🔸Основы Kubernetes
🔸Создание приложения на Go, работа с файлами и БД
🔸Лучшие практики деплоя
🔸Построение CI/CD-пайплайна
GitLab CI/CD, GitHub Actions, ArgoCD
👉 Читать гайд
ru.werf.io
Первые шаги | Go | werf
Инструмент консистентной доставки. Используем Git как единый источник истины. Собираем, деплоим в Kubernetes, синхронизируем изменения.
🔥31❤6👍2
🚀 Глубокое погружение в интеграцию Go с Kafka: подробный гайд по использование Go для обмена сообщениями в реальном времени.
Читать
Читать
❤25👍6
#холивар
К сертификации в айти-сфере работодатели относятся по-разному. Кто-то уверен, что это лучший способ доказать свою профпригодность, а другие не видят в них никакой практической ценности.
🤷♂️ Некоторые работодатели приветствуют желание разработчиков развиваться и оплачивают сертификаты.
💬 А у вас такое практикуется? Если бы у вас была возможность получить любой сертификат, какой выберете?
К сертификации в айти-сфере работодатели относятся по-разному. Кто-то уверен, что это лучший способ доказать свою профпригодность, а другие не видят в них никакой практической ценности.
🤷♂️ Некоторые работодатели приветствуют желание разработчиков развиваться и оплачивают сертификаты.
💬 А у вас такое практикуется? Если бы у вас была возможность получить любой сертификат, какой выберете?
❤5
🔓Socket представляет поддержку Go
Проект Socket, основанный известным JavaScript-разработчиком Feross Aboukhadijeh, был запущен в 2022 году с акцентом на предоставление инструментов для улучшения ситуации с цепочкой поставок npm. Теперь разработчики проекта делают шаги в сторону анализа безопасности зависимостей Go.
Подробнее
Проект Socket, основанный известным JavaScript-разработчиком Feross Aboukhadijeh, был запущен в 2022 году с акцентом на предоставление инструментов для улучшения ситуации с цепочкой поставок npm. Теперь разработчики проекта делают шаги в сторону анализа безопасности зависимостей Go.
Подробнее
Socket
Introducing Go Support - Socket
We're excited to announce that Socket now supports the Go programming language.
👍9❤6🤔2🌚1
#чтопроисходит
📌 Подборка для Go-разработчика:
⚡️ Через шесть месяцев после выпуска версии Go 1.20 выходит версия 1.21.
🤔 proposal: spec: allow append(nil, arg).
🤔 proposal: x/sync: add multimap.
🤔 proposal: log/slog: add iterator form of Record.Attrs.
🤔 proposal: Go 2: left side syntax for new variable.
🔸 Oto 3 — низкоуровневая кроссплатформенная библиотека, используемая игровым движком Ebitengine 2D для воспроизведения звука на значительном количестве платформ: от Windows, macOS и Linux до более интригующих вариантов, таких как Nintendo Switch и iOS.
🔸 BadgerDB 4.2 — встраиваемая и быстрая база данных key-value, написанная на чистом Go.
🔸 Validator 10.15.0 — проверка значений для структур и полей.
🔸 Pop 0.2 — CLI-инструмент для отправки электронных писем из вашего терминала. Новая версия добавляет поддержку SMTP.
🔸 OpenFGA 1.3 — механизм авторизации/разрешения, вдохновленный Google Zanzibar.
🔸 retry-go 4.5 — простая библиотека для реализации механизма повторных попыток.
🔸 Kratos 2.7 — фреймворк для разработки cloud-native микросервисов.
📌 Подборка для Go-разработчика:
⚡️ Через шесть месяцев после выпуска версии Go 1.20 выходит версия 1.21.
🔸 Oto 3 — низкоуровневая кроссплатформенная библиотека, используемая игровым движком Ebitengine 2D для воспроизведения звука на значительном количестве платформ: от Windows, macOS и Linux до более интригующих вариантов, таких как Nintendo Switch и iOS.
🔸 BadgerDB 4.2 — встраиваемая и быстрая база данных key-value, написанная на чистом Go.
🔸 Validator 10.15.0 — проверка значений для структур и полей.
🔸 Pop 0.2 — CLI-инструмент для отправки электронных писем из вашего терминала. Новая версия добавляет поддержку SMTP.
🔸 OpenFGA 1.3 — механизм авторизации/разрешения, вдохновленный Google Zanzibar.
🔸 retry-go 4.5 — простая библиотека для реализации механизма повторных попыток.
🔸 Kratos 2.7 — фреймворк для разработки cloud-native микросервисов.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍3🎉2🤔1
⚒️ Ensure — фреймворк для тестирования Go-проектов на основе сценариев. Это новый проект, предоставляющий еще один способ структурирования тестов.
Как говорит автор: «Мне нравятся текстовые описания моего теста, поэтому я написал ensure, немного основываясь на своем опыте работы с XBehave в .NET».
🔗 GitHub
Как говорит автор: «Мне нравятся текстовые описания моего теста, поэтому я написал ensure, немного основываясь на своем опыте работы с XBehave в .NET».
🔗 GitHub
GitHub
GitHub - iamkoch/ensure: A scenario-based testing framework for Go
A scenario-based testing framework for Go. Contribute to iamkoch/ensure development by creating an account on GitHub.
❤11👍3🥱2