Writing and testing Kubernetes webhooks using Kubebuilder v2

Recently, I am leading a project to re-design our on-premise data centers using Kubernetes. Inevitably there are opportunities to develop Kubernetes native applications. The architecture of Kubernetes is like "hub-and-spoke"; the center of…

Making well-behaved programs in Go with cybozu-go/cmd

We at kintone.com are using Go for variety of tasks. In early days when we started using Go, there were only few in-house rules to create commands. As a result, we faced several difficulties: Some servers did not record access logs. Some p…

How to hack Go's http.Server correctly

Go

One of my recent work was a design and implementation of a framework for Go programs. It is open-sourced at GitHub https://github.com/cybozu-go/cmd . During the work, I have tackled how to enhance Go's http.Server by adding access logging …

Introducing go-apt-cacher and go-apt-mirror

go-apt-cacher is a caching reverse-proxy designed specially for Debian/Ubuntu repositories. As it is written in Go, go-apt-cacher tolerates thousands of concurrent client connections and is very fast. go-apt-mirror is a mirroring tool for …

Transparent SOCKS proxy in Go to replace NAT

I am working behind a cloud service kintone.com as an infrastructure engineer. My recent work was the replacement of NAT inside our data center with a transparent SOCKS proxy. In this post, I will describe our motivation for the replacemen…

Split a string in C++11

The example below works just like PHP's explode. std::vector<std::string> tokenize(const std::string& s, char c) { auto end = s.cend(); auto start = end; std::vector<std::string> v; for( auto it = s.cbegin(); it != end; ++it ) { if( *it != c ) { if( start == end ) </std::string></std::string>…