package main | |
import ( | |
"fmt" | |
"reflect" | |
) | |
// Name of the struct tag used in examples | |
const tagName = "validate" |
Latency Comparison Numbers (~2012) | |
---------------------------------- | |
L1 cache reference 0.5 ns | |
Branch mispredict 5 ns | |
L2 cache reference 7 ns 14x L1 cache | |
Mutex lock/unlock 25 ns | |
Main memory reference 100 ns 20x L2 cache, 200x L1 cache | |
Compress 1K bytes with Zippy 3,000 ns 3 us | |
Send 1K bytes over 1 Gbps network 10,000 ns 10 us | |
Read 4K randomly from SSD* 150,000 ns 150 us ~1GB/sec SSD |
The Linux kernel is written in C, so you should have at least a basic understanding of C before diving into kernel work. You don't need expert level C knowledge, since you can always pick some things up underway, but it certainly helps to know the language and to have written some userspace C programs already.
It will also help to be a Linux user. If you have never used Linux before, it's probably a good idea to download a distro and get comfortable with it before you start doing kernel work.
Lastly, knowing git is not actually required, but can really help you (since you can dig through changelogs and search for information you'll need). At a minimum you should probably be able to clone the git repository to a local directory.
Folks, Leave me a comment / URL if something you like is missing!
Resource | Description |
---|---|
Kube Academy | https://kube.academy/ |
kuernetes-101 | https://kube.academy/courses/kubernetes-101/ |
Docs Home | https://kubernetes.io/docs/home/ |
CKS CKA CKAD Simulator | https://killer.sh/ |
A complete list of RxJS 5 operators with easy to understand explanations and runnable examples.
#!/bin/bash | |
sudo add-apt-repository -y ppa:git-core/ppa | |
sudo apt-get update | |
sudo apt-get install git -y |
ARG atlantis_version=v0.15.0 | |
FROM runatlantis/atlantis:${atlantis_version} | |
LABEL maintainer="Beat DevOps Team" | |
LABEL description="thebeat.co atlantis image used in IaC CI/CD!" | |
LABEL version="0.2" | |
# https://github.com/gruntwork-io/terragrunt/releases | |
ARG terragrunt_version=v0.25.1 |
function sequentialCallback (...fns) { | |
return (...args) => { | |
const done = args.pop() | |
const next = (error, ...args) => { | |
if (error) return done(error) | |
if (fns.length) { | |
const fn = fns.shift() | |
return fn(...args, next) | |
} | |
return done(null, ...args) |