🤔 Корутины для Go
Рассуждения Расса Кокса о том, зачем нам нужен пакет корутин для Go и как он будет выглядеть. Но сначала разберемся, что вообще такое корутины на практике👇
Читать
Рассуждения Расса Кокса о том, зачем нам нужен пакет корутин для Go и как он будет выглядеть. Но сначала разберемся, что вообще такое корутины на практике
Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔19👍4❤1
В отличие от большинства языков, в Go нет синтаксиса для обработки ошибок try/catch/finally. А как тогда обрабатывать ошибки?
В Go реализован минималистичный подход, подразумевающий проверку ошибок в местах их появления и исключающий их возникновение в других функциях на протяжении цепочки вызовов.
Для этого в Go используется встроенный тип ошибок, который определяется через объявление interface 🔽
type error interface {
Error() string
}
📌 Это означает, что вы можете использовать в качестве error любой тип данных, который реализует метод Error(), возвращающий значение string.
#вопросы_для_самопроверки
Для этого в Go используется встроенный тип ошибок, который определяется через объявление interface 🔽
type error interface {
Error() string
}
📌
#вопросы_для_самопроверки
🥱25👍7❤4🥰1
Анализ времени сборки Go
Компилятор Go довольно быстр, но автору статьи было любопытно, какие факторы влияют на время компиляции.
В статье он использовал 350 000 строк проекта Istio, чтобы протестировать Go, опробовать некоторые идеи и, в конце концов, дал несколько советов.
Читать
Компилятор Go довольно быстр, но автору статьи было любопытно, какие факторы влияют на время компиляции.
В статье он использовал 350 000 строк проекта Istio, чтобы протестировать Go, опробовать некоторые идеи и, в конце концов, дал несколько советов.
Читать
blog.howardjohn.info
Analyzing Go Build Times
Go is often praised for its fast build times.
While they are pretty quick, they are slow enough that I spend a lot of time waiting for them, enough that it prompted me to go down the rabbit hole of thoroughly analyzing them.
This post covers all aspects of…
While they are pretty quick, they are slow enough that I spend a lot of time waiting for them, enough that it prompted me to go down the rabbit hole of thoroughly analyzing them.
This post covers all aspects of…
🔥7❤6👍1
💭 Как в вашей компании/команде организовано тестирование проектов? Есть ли отдельная команда QA, или все ложится на плечи разрабов? Применяете ли вы подход «Разработка через тестирование» (test-driven development, TDD)?
#холивар
#холивар
❤6
⚡Проект Gorilla официально выведен из статуса «в архиве» и будет поддерживаться разработчиками из Red Hat. Естественно, основные мейнтейнеры ждут участия других разработчиков.
Подробнее
Подробнее
gorilla.github.io
Gorilla, the golang web toolkit
Gorilla is a web toolkit for the Go programming language
🔥75👍15❤5🤔4🎉4
Как построить систему, способную выдерживать нагрузку в 5 млн rps
Владимир Олохтонов, руководитель команды разработки в отделе Message Bus (часть платформы Ozon), делится опытом построения линейно масштабируемой gRPC-прокси перед Kafka. Она способна обслуживать миллионы запросов в секунду и написана на Go.
Читать
Владимир Олохтонов, руководитель команды разработки в отделе Message Bus (часть платформы Ozon), делится опытом построения линейно масштабируемой gRPC-прокси перед Kafka. Она способна обслуживать миллионы запросов в секунду и написана на Go.
Читать
Хабр
Как построить систему, способную выдерживать нагрузку в 5 млн rps
Всем привет! Меня зовут Владимир Олохтонов, я руковожу командой разработки в отделе Message Bus, который является частью платформы Ozon. Мы занимаемся разработкой самых разных систем вокруг...
👍12❤5🤔1
📌 Подборка для Go-разработчика:
🤔 proposal: spec: add untyped builtin zero
🤔 Обоснование использования корутин в Go
⚡ Go 1.21 Release Candidate 3
⚡ Пробуждение проекта Gorilla
🔸 Релиз Govulncheck 1.0.0
🔸 Релиз ntp 1.2 — простой клиентский ntp-пакет для Go
🔸 Релиз Sarama 1.40 — библиотека Go для Apache Kafka, которая переходит в бразды правления IBM
🔸 Релиз Go Rate Limiter 0.3 — возвращение в разработку после паузы в пару лет с более эффективной внутренней реализацией и без каких-либо внешних изменений
#news
🤔 proposal: spec: add untyped builtin zero
🤔 Обоснование использования корутин в Go
⚡ Go 1.21 Release Candidate 3
⚡ Пробуждение проекта Gorilla
🔸 Релиз Govulncheck 1.0.0
🔸 Релиз ntp 1.2 — простой клиентский ntp-пакет для Go
🔸 Релиз Sarama 1.40 — библиотека Go для Apache Kafka, которая переходит в бразды правления IBM
🔸 Релиз Go Rate Limiter 0.3 — возвращение в разработку после паузы в пару лет с более эффективной внутренней реализацией и без каких-либо внешних изменений
#news
❤10👍10
Как написать модель базы данных: разбор пяти различных подходов для Go-разработчика
✔️Стандартную библиотеку
✔️Struct mapper
✔️SQL builder на примере squirrel
✔️sqlc
✔️ORM
Читать
✔️Стандартную библиотеку
✔️Struct mapper
✔️SQL builder на примере squirrel
✔️sqlc
✔️ORM
Читать
👍18❤5
🔧 📩 pop — CLI-инструмент для отправки электронных писем из вашего терминала. Команда Charm имеют заслуженную репутацию разработчиков полезных инструментов и библиотек на базе Go, и pop, похоже, не является исключением.
Репозиторий
Репозиторий
GitHub
GitHub - charmbracelet/pop: Send emails from your terminal 📬
Send emails from your terminal 📬. Contribute to charmbracelet/pop development by creating an account on GitHub.
👍6❤5🔥1
⚡Десять лет назад Carl M. Johnson написал статью под названием “Go: The Good, the Bad, and the Meh”. Пришло время пересмотреть эту статью и разобраться, что по-прежнему остается верным, что изменилось, чего не хватало и что было (или превратилось в ошибку) неправильным.
Читать
Читать
blog.carlana.net
Ten Years of “Go: The Good, the Bad, and the Meh”
I wrote a blog post ten years ago. How do I feel about it now?
❤5👏2
Серия практических статей о том, как слайс работает под капотом, — что-то вроде материала Роба Пайка о слайсах в блоге Go.
1️⃣ Build your own slice: Arrays and slices
2️⃣ Build your own slice: Append and Copy
1️⃣ Build your own slice: Arrays and slices
2️⃣ Build your own slice: Append and Copy
❤6👍2
Вышла третья часть в серии статей «Безопасность цепочки поставок» о конкретных методах, с помощью которых Go помогает вам доверять целостности используемых пакетов.
Вы узнаете о двух функциях, представляющих особый интерес для безопасности цепочки поставок: расширение Go для Visual Studio Code и встроенное фаззинг-тестирование.
#security
Вы узнаете о двух функциях, представляющих особый интерес для безопасности цепочки поставок: расширение Go для Visual Studio Code и встроенное фаззинг-тестирование.
#security
Telegram
Библиотека Go разработчика | Golang
Безопасность цепочки поставок: серия статей Go-разработчика
Go меняет ландшафт безопасности цепочки поставок, исправляя основу — сам язык. От раннего внедрения OSV до обширной информации о пакетах, курируемой информации об уязвимостях. Одним словом, Go подает…
Go меняет ландшафт безопасности цепочки поставок, исправляя основу — сам язык. От раннего внедрения OSV до обширной информации о пакетах, курируемой информации об уязвимостях. Одним словом, Go подает…
❤7👏2
Эксперимент ccgo/v4: пробуем runtime.Pinner
В Go 1.21 пакет runtime включает новый тип Pinner, который можно использовать для освобождения объектов Go сборщиком мусора. Автор ccgo уже интегрировал Pinner в инструмент, а в статье он оценивает возможное влияние новой фичи на производительность👇
Читать
В Go 1.21 пакет runtime включает новый тип Pinner, который можно использовать для освобождения объектов Go сборщиком мусора. Автор ccgo уже интегрировал Pinner в инструмент, а в статье он оценивает возможное влияние новой фичи на производительность👇
Читать
Blogspot
ccgo/v4 experiment: Trying the new runtime.Pinner
tl;dr: Looking forward future Pinner.Pin performance improvements. The upcoming Go version 1.21, scheduled for release next month, is curre...
❤8🤔3👍1
Тип приложения, который вы/ваша команда сейчас пишете? Можно выбрать несколько вариантов👇
Anonymous Poll
12%
Системные инструменты и утилиты
57%
Бэкенд веб-разработка
44%
Распределенные системы и микросервисы
12%
DevOps, сетевые инструменты и облачные сервисы
1%
Напишу свой вариант
16%
Посмотреть результаты
📌 Подборка для Go-разработчика:
🤔 Proposal: Let's Make Go's HTTP Request Multiplexer Better.
🔸 Релиз ff 3.4: пакет «flags-first» для конфигурации.
🔸 Релиз go-sse 0.6: облегченная, полностью соответствующая спецификациям HTML5 библиотека server-sent events.
🔸 Релиз pdfcpu 0.4.2: библиотека для обработки PDF, написанная на Go и поддерживающая шифрование.
🔸 Релиз go-git 5.8: расширяемая реализация Git на чистом Go.
🔸 Релиз GoToSocial 0.10.0: сервер социальной сети ActivityPub, написанный на Go.
🔸 Релиз Fiber 2.48.0: веб-фреймворк, вдохновленный Express и построенный на основе Fasthttp.
🔸 Релиз Micro 4.3.0: платформа для облачной разработки.
🔸 Релиз Dive 0.11: инструмент для изучения Docker-образа, содержимого слоев и поиска способов уменьшения размер образа Docker/OCI.
#news
🤔 Proposal: Let's Make Go's HTTP Request Multiplexer Better.
🔸 Релиз ff 3.4: пакет «flags-first» для конфигурации.
🔸 Релиз go-sse 0.6: облегченная, полностью соответствующая спецификациям HTML5 библиотека server-sent events.
🔸 Релиз pdfcpu 0.4.2: библиотека для обработки PDF, написанная на Go и поддерживающая шифрование.
🔸 Релиз go-git 5.8: расширяемая реализация Git на чистом Go.
🔸 Релиз GoToSocial 0.10.0: сервер социальной сети ActivityPub, написанный на Go.
🔸 Релиз Fiber 2.48.0: веб-фреймворк, вдохновленный Express и построенный на основе Fasthttp.
🔸 Релиз Micro 4.3.0: платформа для облачной разработки.
🔸 Релиз Dive 0.11: инструмент для изучения Docker-образа, содержимого слоев и поиска способов уменьшения размер образа Docker/OCI.
#news
👍10
Размер типа структуры без полей ненулевого размера равен нулю. Размер типа массива, длина которого равна нулю или размер элемента которого равен нулю, также равен нулю. Это можно доказать с помощью примера выше.
В Go размеры часто обозначаются как значения int. Это означает, что максимально возможная длина массива равна MaxInt, значение которой равно 2^63-1 в 64-битных ОС. Однако длина массивов с ненулевыми размерами элементов жестко ограничена стандартным компилятором Go и рантаймом.
📌 Например👇
#tip #go #beginner
В Go размеры часто обозначаются как значения int. Это означает, что максимально возможная длина массива равна MaxInt, значение которой равно 2^63-1 в 64-битных ОС. Однако длина массивов с ненулевыми размерами элементов жестко ограничена стандартным компилятором Go и рантаймом.
📌 Например👇
var x [1<<63-1]struct{} // okay
var y [2000000000+1]byte // compilation error
var z = make([]byte, 1<<49) // panic: runtime error: makeslice: len out of range
#tip #go #beginner
👍13
Пересмотр встраивания для Go 1.22
Встраивание (inlining) — концепция замены вызова функции в программе содержимым самой функции, что позволяет устранить дополнительные накладные расходы. Встраивание в Go улучшилось с годами, но политика в отношении того, когда и что встраивать, немного устарела.
💡Идея представленного документа состоит в том, чтобы реализовать различные настройки, которые, по словам автора, могут привести к «значительному повышению производительности приложений Go».
Встраивание (inlining) — концепция замены вызова функции в программе содержимым самой функции, что позволяет устранить дополнительные накладные расходы. Встраивание в Go улучшилось с годами, но политика в отношении того, когда и что встраивать, немного устарела.
💡Идея представленного документа состоит в том, чтобы реализовать различные настройки, которые, по словам автора, могут привести к «значительному повышению производительности приложений Go».
Google Docs
Go 1.22 inlining overhaul
Go 1.22 inlining overhaul , with contributions from , , , and Last update: The Go compiler’s inliner has never been particularly good. It wasn’t until Go 1.12, released in 2019, that the Go compiler supported inlining more than leaf functions, and we’ve…
👍7🔥2❤1
Пошаговый гайд по созданию CLI-инструмента на Go с использованием Cobra
Вы напишете простой CLI-инструмент, который шифрует/дешифрует сообщения с использованием шифров Цезаря и Бэкона. Не обошлось и без мини-рекламы: для отправки SMS в CLI-инструменте используется Twilio SMS API.
Читать
Вы напишете простой CLI-инструмент, который шифрует/дешифрует сообщения с использованием шифров Цезаря и Бэкона. Не обошлось и без мини-рекламы: для отправки SMS в CLI-инструменте используется Twilio SMS API.
Читать
Twilio
Use Cobra to Build Go-Powered CLIs
In this tutorial, you will learn how to use Cobra to build a CLI application in Go that encrypts and decrypts text based on a specified cipher.
👍14
⚡ Proposal: spec: add range over int, range over func
На прошлой неделе было опубликовано крупное предложение по изменению языка Go и есть большая вероятность, что это изменение войдет в будущий выпуск Go. Eli Bendersky рассказывает о мотивах предложения, о том, как оно будет работать, и приводит несколько примеров того, как будет выглядеть код Go, использующий его👇
Читать
#news
На прошлой неделе было опубликовано крупное предложение по изменению языка Go и есть большая вероятность, что это изменение войдет в будущий выпуск Go. Eli Bendersky рассказывает о мотивах предложения, о том, как оно будет работать, и приводит несколько примеров того, как будет выглядеть код Go, использующий его👇
Читать
#news
GitHub
spec: add range over int, range over func · Issue #61405 · golang/go
Following discussion on #56413, I propose to add two new types that a for-range statement can range over: integers and functions. In the spec, the table that begins the section would have a few mor...
🔥7👍4🌚3❤1🤔1