使用 Google 翻译 API,将输入 英文 (Markdown)文档按段落生成 中英 对照翻译文档。
阅读英文文档,有时理解不准确;中英文对照阅读便于理解;边学技术边学英语。
./translate_darwin_amd64 -f example-input.md
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -ldflags "-s -w" -o bin/translate_darwin_amd64 translate.go
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" -o bin/translate_linux_amd64 translate.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags "-s -w" -o bin/translate_windows_amd64.exe translate.go
# generate markdown file from blog URLs
cd docs
pbpaste | sed 's#/$##g' | grep http | while read line; do html2md -i ${line} --opt-code-block-style fenced > ${line##*/}.md; echo "\n\n$line" >> ${line##*/}.md ;done
# translate
git status | grep ".md" | grep -v README.md | grep -v "tr-" | while read line; do go run ../translate.go -f $line; done
# update README.md
git status | grep "tr-" | while read line; do echo "1. [$(head -n 1 $line|sed 's/# //g')](docs/$line)";done | pbcopy;pbpaste >> ../README.md
- Handling Client Requests Properly with Kubernetes
- Zero Downtime Server Updates For Your Kubernetes Cluster Kubernetes
- Gracefully Shutting Down Pods in a Kubernetes Cluster
- Graceful shutdown and zero downtime deployments in Kubernetes
- Delaying Shutdown to Wait for Pod Deletion Propagation
- Avoiding Outages in your Kubernetes Cluster using PodDisruptionBudgets
- How does 'kubectl exec' work?
- What is an Operator
- Introducing Operators: Putting Operational Knowledge into Software
- Go Operator Tutorial
- Ready-to-use commands and tips for kubectl
- How we enjoyed upgrading a bunch of Kubernetes clusters from v1.16 to v1.19
- Using Telepresence 2 for Kubernetes debugging and local development
- Everything you Need to Know about Kubernetes Quality of Service (QoS) Classes
- Kubernetes Autoscaling in Production: Best Practices for Cluster Autoscaler, HPA and VP
- A CIOs Guide to Kubernetes Best Practices in Production
- 10 Kubernetes Operators Every DevOps needs to know about
- Bad Pods: Kubernetes Pod Privilege Escalation
- Architecting Kubernetes clusters — choosing the best autoscaling strategy
- Load balancing and scaling long-lived connections in Kubernetes
- Kubernetes Operators Best Practices
- 7 Principles of DevSecOps With Kubernetes
- Kubernetes Is Not Your Platform, It's Just the Foundation
- Moving k8s communication to gRPC
- Why you need a platform team for Kubernetes
- A brief overview of the Container Network Interface (CNI) in Kubernetes
- Six Strategies for Application Deployment
- Annotating Kubernetes Services for Humans
- Kubernetes vs Docker: Understanding Containers in 2021
- Learning Path: Basics of Container Runtimes
- Container Runtimes Part 1: An Introduction to Container Runtimes
- Container Runtimes Part 2: Anatomy of a Low-Level Container Runtime
- Container Runtimes Part 3: High-Level Runtimes
- Container Runtimes Part 4: Kubernetes Container Runtimes & CRI
- Docker components explained
- Docker vs CRI-O vs Containerd
- Introducing Container Runtime Interface (CRI) in Kubernetes
- Understanding Docker Container Exit Codes
- How to use CoreDNS Effectively with Kubernetes
- What’s new in Kubernetes 1.20?
- Migrating from Docker to Podman
- What Configuration Management is and Why You Should Implement it in Your infrastructure
- Kubernetes production best practices
- Liveness Probes are Dangerous
- Debugging network stalls on Kubernetes
- Why Continuous Infrastructure Automation is no longer optional
- Why you don't have to be afraid of Kubernetes
- Introduction to open source observability on Kubernetes
- Using Kubernetes to rethink your system architecture and ease technical debt
- Everyone might be a cluster-admin in your Kubernetes cluster
- Kubernetes Performance Trouble Spots: Airbnb’sTake
- Rolling Updates and Blue-Green Deployments with Kubernetes and HAProxy
- Scaling to 100k Users
- How I prepared & passed the Certified Kubernetes Administrator (CKA) Exam
- NTP in a Kubernetes cluster
- Understanding Kubernetes: Part 1-Pods
- What is Kubernetes?
- How to Build Production-Ready Kubernetes Clusters and Containers
- Introducing istiod: simplifying the control plane
- 7 best practices: Building applications for containers and Kubernetes
- Kubernetes operators: Embedding operational expertise side by side with containerized applications
- Cloud Native Backups, Disaster Recovery and Migrations on Kubernetes
- Core Kubernetes: Jazz Improv over Orchestration
- Kubernetes Finalizers
- Using Finalizers to Control Deletion
- Why Kubernetes Operators Will Unleash Your Developers by Reducing Complexity
- Controlling outbound traffic from Kubernetes
- Who Needs a Dashboard? Why the Kubernetes Command Line Is Not Enough
- How a Kubernetes Pod Gets an IP Address
- How to Champion GitOps in Your Organization
- Improvements to the Ingress API in Kubernetes 1.18
- Migrating to Kubernetes
- 10 Best Practices Worth Implementing to Adopt Kubernetes
- Contributing to the Development Guide
- Sidecar Proxy Pattern - The Basis Of Service Mesh
- Open-sourcing gVisor, a sandboxed container runtime
- 10 Anti-Patterns for Kubernetes Deployments
- Container Networking Is Simple!
- Why and How to Use containerd from the Command Line
- Implementing Container Runtime Shim: runc
- Does Container Image Have an OS Inside
- What Is a Standard Container (2021 edition)
- How to Run a Container Without an Image
- How Docker Build Works Internally
- Service Discovery in Kubernetes - Combining the Best of Two Worlds
- How to Expose Multiple Containers On the Same Port
- A Deep Dive into Kubernetes Scheduling
- Horizontal Pod Autoscaler
- Kubernetes Autoscaling – The HPA
- Kubernetes configuration patterns, Part 2: Patterns for Kubernetes controllers
- How we use Kubernetes at Asana
- Why and How of Kubernetes Ingress (and Networking)
- Kubernetes cron jobs: a hands-on guide to optimally configured crons
- Getting up and running with multi-arch Kubernetes clusters
- The Next Generation of Kubernetes Native Postgres
- Is Kubernetes for Postgres? An expert explains
- How to Prepare for CKAD and CKA Certification?
- Introduction to GitOps on Kubernetes with Flux v2
- Writing a Controller for Pod Labels
- DevOps and Kubernetes: A Perfect Match?
- Choosing a Local Dev Cluster
- Minikube vs. kind vs. k3s - What should I use?
- How to Create a Kubernetes Cluster Locally - Simple Tutorial
- Protecting Kubernetes Secrets: A Practical Guide
- Writing your first kubectl plugin with Go
- Lessons Learned From Two Years Of Kubernetes
- One year using Kubernetes in production: Lessons learned
- 3 Years of Kubernetes in Production–Here’s What We Learned
- Introduction to k3d: Run K3s in Docker
- Kubernetes and container management on the desktop
- What we learned after a year of GitLab.com on Kubernetes
- Continuous Blue-Green Deployments With Kubernetes
- Writing a Kubernetes Operator: From Zero to He
- Kubernetes jobs market (Q1 2021)
- Kubernetes jobs market (Q2 2021)
- Kubernetes jobs in Remote
- Best practices for deploying highly available apps in Kubernetes. Part 1
- Best practices for deploying highly available apps in Kubernetes. Part 2
- Dive Deep Into Resource Requests and Limits in Kubernetes
- Kubernetes best practices: Resource requests and limits
- A Practical Guide to Setting Kubernetes Requests and Limits
- Setting and Rightsizing Kubernetes Resource Limits | Best Practices
- How a simple admission webhook lead to a cluster outage
- Keep-Alive in http requests in golang
- Don’t use Go’s default HTTP client (in production)
- Using Context in Golang - Cancellation, Timeouts and Values (With Examples)
- map[string]interface{} in Go
- Graceful Shutdowns in Golang with signal.NotifyContext
- Graceful shutdown with Go http servers and Kubernetes rolling updates
- The awesomeness of the httptest package in Go
- Concurrency Patterns in Go: sync.WaitGroup
- Faking stdin and stdout in Go
- How I Structure Web Servers in Go
- Logging without losing money or context
- An intro to Go for non-Go developers
- Writing Go CLIs With Just Enough Architecture
- How to handle errors in Go?
- An Introduction to Producing and Consuming Kafka Messages in Go
- Handling multidomain HTTP requests with simple host switch
- How to handle signals with Go to graceful shutdown HTTP server
- Implementing traceroute in Go
- Tests Make Your Code Inherently Better
- Let's build a Full-Text Search engine
- Different approaches to HTTP routing in Go
- A Gentle Introduction to Web Services With Go
- Logging in Go: Choosing a System and Using it
- How to customize Go's HTTP client
- Structuring and testing HTTP handlers in Go
- Correlating Logs
- Environment variables in Golang
- Automating Go Integration Tests With Docker
- Increasing http.Server boilerplate
- Developing price and currency handling for Go
- Rust vs. Go: Why They’re Better Together
- The underutilized usefulness of sync.Once
- How I organize packages in Go
- Writing TCP scanner in Go
- Wrapping commands in Go
- Writing a reverse proxy in Go
- Let's Create a Simple Load Balancer With Go
- Courier: Dropbox migration to gRPC
- Go string handling overview [cheat sheet]
- Get year, month, day from time
- Regexp tutorial and cheat sheet
- Write log to file (or /dev/null)
- Efficient string concatenation [full guide]
- Format a time or date [complete guide]
- Type, value and equality of interfaces
- Panics, stack traces and how to recover [best practice]
- Why Go? – Key advantages you may have overlooked
- fmt.Printf formatting tutorial and cheat sheet
- Automate Chrome with Golang and ChromeDP
- Exploring Prometheus Go client metrics - Povilas Versockas
- How A Tiny Go Microservice Coded In Hackathon Is Saving Us Thousands
- Synchronization queues in Golang
- Scraping the Web in Golang with Colly and Goquery
- Writing a Web Crawler with Golang and Colly
- Developing A RESTful API With Golang And A MongoDB NoSQL Database
- Common Concurrent Programming Mistakes
- Writing Advanced Web Applications with Go
- Learn Go with Tests: Hello, World
- Learn Go with Tests: TDD Anti-patterns
- Learn Go with Tests: Iteration
- Learn Go with Tests: Arrays and slices
- Learn Go with Tests: Maps
- Learn Go with Tests: Structs, methods & interfaces
- Learn Go with Tests: Pointers & errors
- Learn Go with Tests: Dependency Injection
- Learn Go with Tests: Mocking
- Learn Go with Tests: Concurrency
- Learn Go with Tests: Synchronising asynchronous processes
- Learn Go with Tests: Reflection
- Learn Go with Tests: Sync
- Learn Go with Tests: Context
- Learn Go with Tests: Roman Numerals
- Learn Go with Tests: Mathematics
- Learn Go with Tests: Reading files
- Learn Go with Tests: Command line and project structure
- Learn Go with Tests: Context-aware readers
- Learn Go with Tests: Error types
- Learn Go with Tests: HTTP Handlers Revisited
- Learn Go with Tests: HTTP Server
- Learn Go with Tests: Intro to generics
- Learn Go with Tests: IO and sorting
- Learn Go with Tests: JSON, routing & embedding
- Learn Go with Tests: OS Exec
- Learn Go with Tests: Time
- Learn Go with Tests: WebSockets
- Learn Go with Tests: Why unit tests and how to make them work for you
- Go, HTTP handlers, panic, and deadlocks
- How to Set Go net/http Socket Options - setsockopt() example
- Using Go instead of bash for scripts
- Why Go and not Rust?
- Programming with errors
- Error Handling in Go
- Handling Panics in Go
- Simple techniques to optimise Go programs
- 12 factor configuration with Go's flag package
- Using SO_PEERCRED in Go
- Web API Integration Testing with Go
- ORMs and Query Building in Go
- Mocking gRPC in Go
- Bad Go: Adventures with JSON marshalling
- How to Write Go Code
- Simple Go project layout with modules
- Package management in Go
- Understanding Package Visibility in Go
- Why we’re writing machine learning infrastructure in Go, not Python
- Running Go CLI programs in the browser
- Top 6 security best practices for Go
- Exposing interfaces in Go
- Using Go as the Infrastructure Language at NodeSource
- Better Error Handling, in Go
- Graceful shutdown of a TCP server in Go
- How to collect, standardize, and centralize Golang logs
- How to Parse a JSON Request Body in Go
- The Zen of Go
- Go Things I Love: Channels and Goroutines
- Go - graceful shutdown of worker goroutines
- Fun with Concurrency in Golang
- How to Build a Custom Kubernetes Ingress Controller in Go
- Batching operations in Go
- Building containers without Docker
- Make resilient Go net/http servers using timeouts, deadlines and context cancellation
- Come Go With Me
- Go Concurrency Patterns: Context
- Implementing Graceful Shutdown in Go
- Go 1.18 and Google Cloud: Go now with Google Cloud
- A Comprehensive Guide to Cloud Native: Tools, Practices and Culture
- An Introduction to the Cloud Native Landscape
- The Cloud Native Landscape: The Provisioning Layer Explained
- The Cloud Native Landscape: The Runtime Layer Explained
- The Cloud Native Landscape: The Orchestration and Management Layer
- The Cloud Native Landscape: The Application Definition and Development Layer
- The Cloud Native Landscape: Platforms Explained
- The Cloud Native Landscape: Observability and Analysis
- The State of Cloud Native: Challenges, Culture and Technology
- How was the world's largest cloud vendor, AWS, born?
- Engineering dependability and fault tolerance in a distributed system
- Introduction to eBPF
- What Is Argo CD?
- The Istio service mesh
- A Developer’s Guide to GitOps
- Maximizing Developer Effectiveness
- DevOps engineer job interview questions
- Podman and Buildah for Docker users
- How to learn and stay up to date with DevOps and Cloud Native technologies
- The Next Step after DevOps and GitOps Is Cloud Engineering, Pulumi Says
- ArgoCD: Okta integration, and user groups
- Argo CD RBAC Configuration
- DevOps, SRE, and Platform Engineering
- How to Keep Your Cloud-Native Apps Secure
- 10 best practices for DevOps
- DevOps: A cheat sheet
- Six steps to DevOps success, analyzed
- 3 lessons for IT leaders from “The Unicorn Project”
- 5 GitOps Best Practices
- Extending cloud native principles to chaos engineering
- Debugging Software Deployments with strace
- Gracefully shutting down a Nodejs HTTP server
- You can't buy DevOps
- How to be a DevOps maestro: containers orchestration guide
- 5 Best Practices for Nailing Incident Retrospectives
- DevOps: 5 tips on how to manage stronger remote teams
- 7 top DevOps engineer interview questions for 2020
- DevOps culture: 5 questions to ask about yours
- 3 problems DevOps won't fix
- (A few) Ops Lessons We All Learn The Hard Way
- How we migrated Dropbox from Nginx to Envoy
- The Future of Ops Jobs
- The Future of Cloud Native Security Is Self-Healing
- OpenTelemetry Steps up to Manage the Mayhem of Microservices
- Ops by pull request: an Ansible GitOps story
- How GitOps Improves the Security of Your Development Pipelines
- How eBPF Turns Linux into a Programmable Kernel
- Backup and DR in the Age of GitOps
- Why I've Been Merging Microservices Back Into The Monolith At InVision
- Help the World by Healing Your NGINX Configuration
- Patterns of Distributed Systems
- Making sense out of cloud-native buzz
- Service Ownership: What It Really Means and How to Achieve It
- Accelerate Developer Teams with Platform Engineering
- Monitoring and Observability With USE and RED
- Making the USE method of monitoring useful
- The RED method: A new strategy for monitoring microservices
- Cluster multi-tenancy
- There and Back Again — Scaling Multi-Tenant Kubernetes Cluster(s)
- Best practices for enterprise multi-tenancy
- SaaS: Single Tenant vs Multi-Tenant - What's the Difference?
- Single-Tenant Vs. Multi-Tenant Cloud: Which Should You Use?
- How to setup a multi-tenant cluster with GKE
- Choosing Single-Tenancy or Multi-Tenancy Kubernetes Clusters
- Approaches to implementing multi-tenancy in SaaS applications
- Kubernetes Multi-Tenancy – A Best Practices Guide
- Making Kubernetes Multi-tenant
- Three Tenancy Models For Kubernetes
- Difference Between multi-cluster, multi-master, multi-tenant & federated Kubernetes
- Individual Kubernetes Clusters vs. Shared Kubernetes Clusters for Development
- How to Save More Than 2/3 of Engineers’ Kubernetes Cost
- Kubernetes Cost Savings By Reducing The Number Of Clusters
- The Journey of Adopting Cloud-Native Development
- Understanding Multi-Tenancy in Kubernetes
- Best practices for cluster isolation in Azure Kubernetes Service (AKS)
- What are DORA (DevOps Research and Assessments) Metrics?
- DevOps capabilities
- DevOps culture: How to transform
- DevOps culture: Transformational leadership
- DevOps process: Streamlining change approval
- DevOps measurement: Work in process limits
- DevOps measurement: Visual management capabilities
- DevOps culture: Job satisfaction
- DevOps culture: Learning culture
- DevOps culture: Westrum organizational culture
- DevOps measurement: Monitoring systems to inform business decisions
- DevOps process: Working in small batches
- How to Ask for Help on Slack
- Professional Cloud Architect
- Professional Cloud Architect Certification exam guide
- Case Study Review: EHR Healthcare
- Case Study Review: Helicopter Racing League
- Case Study Review: Mountkirk Games
- Case Study Review: TerramEarth
- How to pass the Google Cloud Professional Cloud Architect exam in 30 days or less!
-
The Problem With Agile Scrum (And Why We Use Kanban Instead)
-
Enforcing Policy as Code using OPA and Gatekeeper in Kubernetes
-
How an SRE became an Application Security Engineer (and you can too)
-
Advice for customers dealing with Docker Hub rate limits, and a Coming Soon announcement
-
Computer Networking Introduction - Ethernet and IP (Heavily Illustrated)
-
Practical Go: Real world advice for writing maintainable Go programs
-
Prometheus Cheat Sheet - Basics (Metrics, Labels, Time Series, Scraping)
-
Prometheus Cheat Sheet - How to Join Multiple Metrics (Vector Matching)
-
Prometheus Cheat Sheet - Moving Average, Max, Min, etc (Aggregation Over Time)
-
Integration Testing in Go: Part I - Executing Tests with Docker
-
8 Use Cases for Kubernetes over VPN: Unlocking Multicloud Flexibility
-
How to improve your Docker containers security [cheat sheet included]
-
Tiny Container Challenge: Building a 6kB Containerized HTTP Server!
-
GitOps-based Policy Management: How to Scale in a Multi-Node, Multicloud World
-
HR is not your friend, and other things I think you should know
-
How CI/CD is Sidetracking Optimization, and What You Can Do About It
-
Implementing SLI/SLO based Continuous Delivery Quality Gates using Prometheus
-
To run or not to run a database on Kubernetes: What to consider
-
Introducing Tobs: Deploy a full observability suite for Kubernetes in two minutes
-
Helm Charts Tutorial: The Kubernetes Package Manager Explained
-
The USA TODAY NETWORK’s SRE team’s journey into Docker and Kubernetes. Was it worth it?