Skip to content

Instantly share code, notes, and snippets.

View udhos's full-sized avatar
👾
Wondering

udhos

👾
Wondering
  • São Paulo, Brazil
View GitHub Profile
@udhos
udhos / main.go
Created January 13, 2024 02:35 — forked from fl64/main.go
golang prometheus exporter example
package main
import (
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promhttp"
"log"
"math/rand"
"net/http"
"time"
@udhos
udhos / Go, Containers, and the Linux Scheduler.md
Last active November 10, 2023 06:17
Go, Containers, and the Linux Scheduler

Go, Containers, and the Linux Scheduler

https://www.riverphillips.dev/blog/go-cfs/

GOMAXPROCS should be set to the number of CPU cores that the container is allowed to use, if you’re allocating fractional CPU round down, unless you’re allocating less than 1 CPU core in which case round up. GOMAXPROCS=max(1, floor(CPUs)) can be used to calculate the value. If you find it easier Uber has open sourced a library automaxprocs to calculate this value for you from your container’s cgroups automatically.

golang/go#33803

https://github.com/uber-go/automaxprocs

@udhos
udhos / grace.go
Created October 28, 2023 21:22 — forked from silkeh/grace.go
Golang graceful restart with TCP connections
package main
import (
"encoding/json"
"flag"
"io/ioutil"
"log"
"net"
"os"
"os/signal"
@udhos
udhos / nginx resolver in stream.md
Created June 28, 2023 13:31
nginx resolver in stream
@udhos
udhos / golang internal package.md
Created May 31, 2023 03:42
golang internal package
@udhos
udhos / golang_string_to_bytes_and_back_again.md
Created May 25, 2023 06:14
golang_string_to_bytes_and_back_again

bytes<->string without allocation. However, bytes can't be changed.

// StringToBytes converts string to byte slice without a memory allocation.
// The bytes must not be modified; doing so can cause
// the program to crash or behave unpredictably.
func StringToBytes(s string) []byte {
    return unsafe.Slice(unsafe.StringData(s), len(s))
}
@udhos
udhos / kubernetes operator.md
Last active November 1, 2023 07:10
kubernetes operator

Kubebuilder does not exist as an example to copy-paste, but instead provides powerful libraries and tools to simplify building and publishing Kubernetes APIs from scratch. It provides a plugin architecture allowing users to take advantage of optional helpers and features.

Kubebuilder is developed on top of the controller-runtime and controller-tools libraries.

Kubebuilder is extensible and can be used as a library in other projects. Operator-SDK is a good example of a project that uses Kubebuilder as a library.

Sample controller: https://github.com/kubernetes/sample-controller

Book: https://book.kubebuilder.io/