- 100%の時間 利用可能なサービスはない
- 配慮のないクライアント
- 50倍の要求
- (訳注: 上記2つはPokemon Goのことでもある)
- スラフィックのスパイク
- 海底ケーブルの切断
- 私達のサービスに依存するユーザーがいる
package main | |
import ( | |
"go/ast" | |
"go/parser" | |
"go/token" | |
"strconv" | |
) | |
// 实现一个只支持int,只支持加法,函数只有println,只支持一个参数的Go语言子集.... |
<?xml version="1.0" encoding="UTF-8"?> | |
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
<plist version="1.0"> | |
<!-- iOS 10, macOS Sierra, and friends bring a new logging subsystem that's | |
supposed to scale from the kernel, up to frameworks, and up to apps. It defaults | |
to a more regimented, privacy-focused approach that large apps and complex | |
systems need. | |
It, along with Activity Tracing introduced in iOS 8 and macOS Yosemite and the | |
Console app in macOS Sierra, hope to help you graduate from caveman debugging to |
package cgroup | |
import "os" | |
import "syscall" | |
import "io/ioutil" | |
import "strconv" | |
import "os/exec" | |
import "strings" | |
import "errors" |
codecov: | |
token: uuid # Your private repository token | |
url: "http" # for Codecov Enterprise customers | |
slug: "owner/repo" # for Codecov Enterprise customers | |
branch: master # override the default branch | |
bot: username # set user whom will be the consumer of oauth requests | |
ci: # Custom CI domains if Codecov does not identify them automatically | |
- ci.domain.com | |
- !provider # ignore these providers when checking if CI passed | |
# ex. You may test on Travis, Circle, and AppVeyor, but only need |
# This hosts file is brought to you by Dan Pollock and can be found at | |
# http://someonewhocares.org/hosts/ | |
# You are free to copy and distribute this file for non-commercial uses, | |
# as long the original URL and attribution is included. | |
#<localhost> | |
127.0.0.1 localhost | |
127.0.0.1 localhost.localdomain | |
255.255.255.255 broadcasthost | |
::1 localhost |
Source: https://web.archive.org/web/20141216073338/https://gkbrk.com/blog/read?name=reverse_engineering_the_speedtest_net_protocol Author: Gökberk Yaltıraklı
After finishing my command line speed tester written in Rust, I didn't have a proper blog to document this process. A few days ago I wrapped up a simple blogging script in Python so hopefully it works good enough to explain how everything works.
By now I have already figured out the whole protocol for performing a speed test but I will write all the steps that I took so you can learn how to reverse engineer a simple protocol.
The code that I wrote can be found at https://github.com/gkbrk/speedtest-rust.
#!/bin/sh | |
# Launch a Pod ab-using a hostPath mount to land on a Kubernetes node cluster as root | |
# without requiring `privileged: true`, in particular can abuse `DenyExecOnPrivileged` | |
# admission controller. | |
# Pod command in turn runs a privileged container using node's /var/run/docker.sock. | |
# | |
# Tweaked for PKS nodes, which run their docker stuff from different | |
# /var/vcap/... paths | |
node=${1} | |
case "${node}" in |
For those who have been using kops for a while should know the upgrade from 1.11 to 1.12 poses a greater risk, as it will upgrade etcd2 to etcd3.
Since this upgrade is disruptive to the control plane (master nodes), although brief, it's still something we take very seriously because nearly all the Buffer production services are running on this single cluster. We felt a more thorough backup process than the currently implemented Heptio Velero was needed.
To my surprises, my Google searches didn't yield any useful result on how to carry out the backup steps. To be fair, there are a few articles that are specifically for backing up master nodes created by kubeedm but nothing too concrete for `kop
#!/bin/bash | |
FILES=$@ | |
echo "Migrate: $FILES" | |
sed -i "s/errors.Wrapf(\(.*\), \"\(.*\)\", \(.*\))/fmt.Errorf(\"\2: %w\", \3, \1)/g" $FILES | |
sed -i "s/errors.Wrap(\(.*\), \"\(.*\)\")/fmt.Errorf(\"\2: %w\", \1)/g" $FILES | |
sed -i "s/errors.Errorf/fmt.Errorf/g" $FILES | |
goimports -w . |