Как написать модель базы данных: разбор пяти различных подходов для Go-разработчика
✔️Стандартную библиотеку
✔️Struct mapper
✔️SQL builder на примере squirrel
✔️sqlc
✔️ORM
Читать
✔️Стандартную библиотеку
✔️Struct mapper
✔️SQL builder на примере squirrel
✔️sqlc
✔️ORM
Читать
🔧 📩 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.
⚡Десять лет назад 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?
Серия практических статей о том, как слайс работает под капотом, — что-то вроде материала Роба Пайка о слайсах в блоге 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
Вышла третья часть в серии статей «Безопасность цепочки поставок» о конкретных методах, с помощью которых Go помогает вам доверять целостности используемых пакетов.
Вы узнаете о двух функциях, представляющих особый интерес для безопасности цепочки поставок: расширение Go для Visual Studio Code и встроенное фаззинг-тестирование.
#security
Вы узнаете о двух функциях, представляющих особый интерес для безопасности цепочки поставок: расширение Go для Visual Studio Code и встроенное фаззинг-тестирование.
#security
Telegram
Библиотека Go разработчика | Golang
Безопасность цепочки поставок: серия статей Go-разработчика
Go меняет ландшафт безопасности цепочки поставок, исправляя основу — сам язык. От раннего внедрения OSV до обширной информации о пакетах, курируемой информации об уязвимостях. Одним словом, Go подает…
Go меняет ландшафт безопасности цепочки поставок, исправляя основу — сам язык. От раннего внедрения OSV до обширной информации о пакетах, курируемой информации об уязвимостях. Одним словом, Go подает…
Эксперимент 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...
Тип приложения, который вы/ваша команда сейчас пишете? Можно выбрать несколько вариантов👇
Anonymous Poll
12%
Системные инструменты и утилиты
58%
Бэкенд веб-разработка
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
Размер типа структуры без полей ненулевого размера равен нулю. Размер типа массива, длина которого равна нулю или размер элемента которого равен нулю, также равен нулю. Это можно доказать с помощью примера выше.
В 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
Пересмотр встраивания для 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…
Пошаговый гайд по созданию 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.
⚡ 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...
💭 В комментариях новички часто спрашивают про ресурсы/книги для начинающего Go-разработчика. Давайте саккумулируем в комментариях свой опыт и поделимся источниками, с которых эффективнее всего начать изучение👇
Или нет ничего лучше go.dev и Go tour?
#холивар
Или нет ничего лучше go.dev и Go tour?
#холивар
go.dev
Documentation - The Go Programming Language
🚀 Знакомство с кэшем ЦП: свежий гайд по Go от команды Ardan Labs
Понимание того, как сделать ваш код дружественным к кэшу, может привести к значительному повышению производительности, но убедитесь, что вы понимаете связанные с этим риски и компромиссы.
Читать
Понимание того, как сделать ваш код дружественным к кэшу, может привести к значительному повышению производительности, но убедитесь, что вы понимаете связанные с этим риски и компромиссы.
Читать
Есть что добавить? Ждем в комментариях
🎙 Радио-Т: разговоры на темы хайтек, высоких компьютерных технологий, гаджетов, облаков, программирования и прочего интересного из мира ИТ. Часто обсуждают и Go и его инструменты.
🎙 Go Get Podcast от Николая Тузова и интересных гостей: про Go и всё, что с ним связано.
🎙 Подлодка: аудио-шоу про IT и всё, что с ним связано. Выпуск про Go.
🎙 Go`ne Gamedev: подкаст о разработке игр на Go. Пока все остановилось на одном выпуске.
🎙 Go Time: ваш источник разнообразных дискуссий в сообществе Go. Один из лучших подкастов по Go.
🎙 go podcast(): 15-минутные выпуски новостей, советов и рекомендаций по Go.
🎙 Backend Banter: интервью с инженерами, в которых делается упор на Go, Python и SQL
🎙 Cup o' Go: будьте в курсе событий сообщества Go всего за 15 минут в неделю.
🎙 Ardan Labs Podcast: увлекательные интервью с топовыми инженерами.
🎙 Friday Afternoon Deploy: A Developer Podcast: бескомпромиссное шоу о культуре и хаосе разработки программного обеспечения от создателей и разработчиков цифровых продуктов в Lofty Labs.
#podcast
Please open Telegram to view this post
VIEW IN TELEGRAM
Егор Гартман, бэкенд-инженер в Авито, тестирует несколько библиотек Deep Copy, а потом делает свою, более быструю и эффективную.
🔹 github.com/mohae/deepcopy,
🔹 github.com/barkimedes/go-deepcopy,
🔹 github.com/jinzhu/copier,
🔹 json marshal > unmarshal,
🔹 msgpack marshal -> unmarshal.
Читать
🔹 github.com/mohae/deepcopy,
🔹 github.com/barkimedes/go-deepcopy,
🔹 github.com/jinzhu/copier,
🔹 json marshal > unmarshal,
🔹 msgpack marshal -> unmarshal.
Читать
Кто еще не подписан на наш главный канал — очень рекомендуем!
В «Библиотеке программиста» вас ждут фундаментальные IT-темы, Git, рынок труда, главные новости и, конечно же, мемы😎
Вот вам топ недавних постов:
🔍про коммиты в ветках Git
🔍новость о создании сверхразумного ИИ
🔍подборка инфографик на фундаментальные темы
🔍дайджест нейросетей для разработки
👉Подписаться👈
В «Библиотеке программиста» вас ждут фундаментальные IT-темы, Git, рынок труда, главные новости и, конечно же, мемы😎
Вот вам топ недавних постов:
🔍про коммиты в ветках Git
🔍новость о создании сверхразумного ИИ
🔍подборка инфографик на фундаментальные темы
🔍дайджест нейросетей для разработки
👉Подписаться👈
Обзор архитектурного линтера go-arch-lint для Go-разработчика
📌 Go-arch-lint состоит из 3 частей:
1️⃣ Component — абстракция над package (пакетом). Один компонент включает в себя один или более пакетов.
2️⃣ Dependency — зависимость. Они бывают двух видов: явные и неявные.
Явные зависимости — это import в файле с описанием конкретной зависимости от другого пакета.
Неявные — это передача методов или структур с методами через интерфейсы, каналы и прочие способы
3️⃣ Dependency tree — граф отношений между компонентами (кому и от кого можно зависеть).
📌 Принцип работы линтера:
🔸размечает весь код на компоненты;
🔸находит все зависимости между компонентами;
🔸строит граф зависимостей;
🔸сравнивает актуальный и желаемый граф зависимостей;
🔸если мы получили непустой DIFF — значит, есть проблемы.
📌 Go-arch-lint состоит из 3 частей:
1️⃣ Component — абстракция над package (пакетом). Один компонент включает в себя один или более пакетов.
2️⃣ Dependency — зависимость. Они бывают двух видов: явные и неявные.
Явные зависимости — это import в файле с описанием конкретной зависимости от другого пакета.
Неявные — это передача методов или структур с методами через интерфейсы, каналы и прочие способы
3️⃣ Dependency tree — граф отношений между компонентами (кому и от кого можно зависеть).
📌 Принцип работы линтера:
🔸размечает весь код на компоненты;
🔸находит все зависимости между компонентами;
🔸строит граф зависимостей;
🔸сравнивает актуальный и желаемый граф зависимостей;
🔸если мы получили непустой DIFF — значит, есть проблемы.