This algorithm returns the points that form an orthogonal path between two rectangles.
// Define shapes
const shapeA = {left: 50, top: 50, width: 100, height: 100};
const shapeB = {left: 200, top: 200, width: 50, height: 100};
This algorithm returns the points that form an orthogonal path between two rectangles.
// Define shapes
const shapeA = {left: 50, top: 50, width: 100, height: 100};
const shapeB = {left: 200, top: 200, width: 50, height: 100};
Parse the kubernetes manifest in yaml or json, don't care a manifest type.
Examples:
package main
import (
"bytes"
"context"
Tools
Presentations
wget -O /tmp/YaHei.Consolas.1.12.zip https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/uigroupcode/YaHei.Consolas.1.12.zip | |
unzip /tmp/YaHei.Consolas.1.12.zip | |
sudo mkdir -p /usr/share/fonts/consolas | |
sudo mv YaHei.Consolas.1.12.ttf /usr/share/fonts/consolas/ | |
sudo chmod 644 /usr/share/fonts/consolas/YaHei.Consolas.1.12.ttf | |
cd /usr/share/fonts/consolas | |
sudo mkfontscale && sudo mkfontdir && sudo fc-cache -fv |
knowledge dump on container runtimes | |
KataContainers | |
- image coupled with kernel | |
- light vm layer | |
- can run in nested virturalization environments if hardware supports and you can enable it in bios (ex. only bare metal EC2 instances, limits many cloud providers) | |
- slower startup time | |
- OCI compliant | |
- previously known as ClearContainers by Intel |
Nodes are not assigned public IP. If you have accessible VM in the same VNET as worker nodes, then you can use that VM as jump host and connect the worker via private IP.
Alternatively public IP can be assigned to a worker node. This readme shows how to do that.
find out the resource group that AKS created for the node VMs
apiVersion: v1 | |
kind: ReplicationController | |
metadata: | |
name: kube-registry-v0 | |
namespace: kube-system | |
labels: | |
k8s-app: kube-registry | |
version: v0 | |
spec: | |
replicas: 1 |
// For all the confusing Prometheus configuration and | |
// regular expressions, | |
// explained in examples. | |
// Remember, there are default values for each item if it's missing. | |
// regex is (.*), | |
// replacement is $1, | |
// separator is ; | |
// ,and action is replace |
# win32com multithreading example | |
import sys | |
import time | |
from threading import Thread | |
sys.coinit_flags = 0 # pythoncom.COINIT_MULTITHREADED == 0 | |
from pythoncom import (CoInitializeEx, CoUninitialize, | |
COINIT_MULTITHREADED, PumpWaitingMessages) | |
from win32com.client import Dispatch, WithEvents | |