🔧 📩 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
💭 В комментариях новички часто спрашивают про ресурсы/книги для начинающего Go-разработчика. Давайте саккумулируем в комментариях свой опыт и поделимся источниками, с которых эффективнее всего начать изучение👇
Или нет ничего лучше go.dev и Go tour?
#холивар
Или нет ничего лучше go.dev и Go tour?
#холивар
go.dev
Documentation - The Go Programming Language
🔥6👍2
🚀 Знакомство с кэшем ЦП: свежий гайд по Go от команды Ardan Labs
Понимание того, как сделать ваш код дружественным к кэшу, может привести к значительному повышению производительности, но убедитесь, что вы понимаете связанные с этим риски и компромиссы.
Читать
Понимание того, как сделать ваш код дружественным к кэшу, может привести к значительному повышению производительности, но убедитесь, что вы понимаете связанные с этим риски и компромиссы.
Читать
👍16🔥4🤔1
Есть что добавить? Ждем в комментариях
🎙 Радио-Т: разговоры на темы хайтек, высоких компьютерных технологий, гаджетов, облаков, программирования и прочего интересного из мира ИТ. Часто обсуждают и 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
🔥14👍5
Егор Гартман, бэкенд-инженер в Авито, тестирует несколько библиотек 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.
Читать
🔥11💯3❤2
Кто еще не подписан на наш главный канал — очень рекомендуем!
В «Библиотеке программиста» вас ждут фундаментальные IT-темы, Git, рынок труда, главные новости и, конечно же, мемы😎
Вот вам топ недавних постов:
🔍про коммиты в ветках Git
🔍новость о создании сверхразумного ИИ
🔍подборка инфографик на фундаментальные темы
🔍дайджест нейросетей для разработки
👉Подписаться👈
В «Библиотеке программиста» вас ждут фундаментальные IT-темы, Git, рынок труда, главные новости и, конечно же, мемы😎
Вот вам топ недавних постов:
🔍про коммиты в ветках Git
🔍новость о создании сверхразумного ИИ
🔍подборка инфографик на фундаментальные темы
🔍дайджест нейросетей для разработки
👉Подписаться👈
❤3👍1
Обзор архитектурного линтера 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 — значит, есть проблемы.
👍18🤔3❤1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
📖 ТОП-10 книг, без которых не обойтись ни одному программисту
Мы подготовили для вас подборку из 10 книг, без которых не обойтись ни одному профессионалу в IT. Эти книги станут для вас настольными на долгие годы.
🔗 Основной сайт
🔗 Зеркало
Мы подготовили для вас подборку из 10 книг, без которых не обойтись ни одному профессионалу в IT. Эти книги станут для вас настольными на долгие годы.
🔗 Основной сайт
🔗 Зеркало
👍17❤6🥱6🔥3