Go дайджест #5: Go 1.11 c поддержкой модулей и WebAssembly, отказоустойчивость в микросервисной архитектуре
В выпуске: Robustness of Go, Clean code using decorators, Go modules простыми словами, методы обработки ошибок, которые облегчают отладку.
Новости
Go 1.11 Released — последний мажорный релиз с поддержкой модулей и эксперементальной поддержкой WebAssembly. Release notes.
A Gentle Introduction to Go Modules — Go modules простыми словами.
Go 1.11’s Versioned Modules Documentation
HTTP/2 Adventure in the Go World — net/http теперь поддерживает http/2, ну почти.
Go Was The Fastest Growing Language Used in GitHub Pull Requests in Q2 2018.
Tutorials & Articles
Getting Started with Go Development on the Pixelbook
A Good Makefile for Go — пример Makefile, который включает „hot reloading”.
Deploy a Buffalo App to DigitalOcean with Docker
Clean Code using Decorators — как сделать код чище используя декораторы.
Refactoring Go Switch Statements
Goodbye Python, Hello Go — история одного разработчика о том, как он начал использовать Gо вместо Python.
Build a Multiplayer Game in Go with PubNub
Write Go, Run WASM — очень короткий туториал по WebAssembly.
Building a Serverless Function using the Serverless Framework and Go
Interacting with Ethereum Smart Contract Events in Go
Some Go Error Handling Practices — несколько методов обработки ошибок, которые облегчают отладку.
Using Go Modules with Vendor Support on Travis CI
Circuit Breaker and Retry — отказоустойчивость в микросервисной архитектуре.
How to Use the Official MongoDB Go Driver — включая использование модулей Go 1.11.
Cloudflare’s Journey Porting Its Software to ARM64 — интересный опыт от Сloudflare о том, как они портировали свой код на ARM64.
Accessing Data in Go — демонстрация подхода для доступа к данным при написании веб-приложений.
Building a Calculator with Go WebAssemply.
’How We Massively Reduced Our AWS Lambda Bill With Go’
Посмотреть
Brian Kernighan on Go, Programming Languages, and Computer Science
Linear Regression with Gradient Descent
Go: Building on the Shoulders of Giants and Stepping on a Few Toes — история Go и почему создатели языка приняли определенные дизайнерские решения.
Building a Network Command Line Interface Tool in Go
Building Go Applications for the Open Cloud
The Robustness of Go — доклад охватывает проектные решения Go, которые помогают в создании надежных программ, но также и недостатки Go в этой области, особенно в сравнении с Erlang.
Building a Resilient Stream Processor in Go
Dave Cheney — Don’t Just Check Errors, Handle Them Gracefully
Building a Production-Ready Go Service in 30 Minutes — live coding сессия из GopherCon UK, на которой разрабатывается production-ready сервис и деплоится при помощи Docker.
Инструменты и библиотеки
go-sqlite-lite — SQLite драйвер. Поддерживает SQLite’s online backup API и BLOB incremental IO.
gosec — проверка безопасности кода. Выполняет ряд правил над абстрактным синтаксическим деревом Go кода, чтобы выявить потенциальные проблемы.
Beego — Framework для быстрой разработки RESTful APIs.
Heighliner — Continuous Delivery из GitHub в Kubernetes Cluster.
repo-security-scanner — CLI инструмент для поиска приватных ключей, паролей и т. д., которые были закомичены в Git.
Chart — генерация графиков на основе данных из STDIN. Умеет генерировать „pie charts”, „bar charts” и т. д. во временную HTML-страницу.
embiggen-disk — рекурсивный Live-Resize файловой системы в Linux от Google.
ZikiChombo — библиотека для обработки звука.
Bild — коллекция алгоритмов параллельной обработки изображений. Ресайзинг, повороты, изменение цвета и т. д.
Rclone — ’Rsync for Cloud Storage’ поддерживает ~20 платформ.
gomarkov — библиотека имплементирующая цепи Макова.
Goofys — POSIX-ish Amazon S3 File System. Позволяет примаунтить S3 бакет в виде файловой системы.
morse — библиотека кодов Морзе. Мало ли что может произойти...)
SSO Authentication Proxy от BuzzFeed — ребята из BuzzFeed выложили в open source свою реализацию SSO Authentication Proxy и описали, как она работает.
Vegeta — библиотека для тестирования HTTP-нагрузки с поддержкой HTTP/2.
GopherCon 2018 Performance Tuning Workshop — код, упражнения и расписание GopherCon Performance Tuning Workshop от Dave Cheney.
Fleep — библиотека для определения формата файла. Распознает около 100 форматов.
lazygit — консольный UI для Git-команд.
Zap — библиотека для логирования от Uber.
go-health — „Health Checking” библиотека для Go-Powered сервисов.
Noti — мониторит процесс и тригерит уведомление по завершению.
← Предыдущий выпуск: Go дайджест #4.