Web の QMK Configurator でキーマップを作成してからローカルの QMK Firmware でビルド/書き込みを行う

Corne Cherry で自分専用のキーマップを作成してファームウェアをビルド、書き込みする手順です。ビルドガイドの補足情報としてお役に立てば幸いです。 Corne Cherry のファームウェア書き込みについて ビルドガイドにもある通り、QMK Firmware を使用してフ…

HAProxy 2.0.1 の Docker イメージは prometheus 機能がデフォルトでビルドされる

Dockerhub の haproxy:2.0.1 では prometheus へ統計情報を export する機能がデフォルトで組み込まれる HAProxy 2.0.1 の Docker イメージから拡張機能である prometheus.o がデフォルトのビルドオプションに含まれるようになった。これで前回の記事で紹介…

HAProxy 2.0 (-dev7) の prometheus サポート拡張機能を利用してマルチスレッドの統計情報を exporter なしで正しく取得する

HAProxy 1.7 から 2.0 へ移行 前回 試した通り、HAProxy 1.7 + haproxy-exporter の組み合わせではマルチプロセス時に統計情報が正しく取得できない。代替案として prometheus サポートが提供される HAProxy 2.0 (dev7) を試してみた結果、こちらでうまくい…

HAProxy 1.7 ではマルチプロセス時の統計情報が正しく取得できない

HAProxy 1.7 をマルチプロセスで動かした場合、統計情報がおかしくなる Kubernetes 上で haproxy を HTTP/HTTPS のロードバランサとして使用したところ、動作的には問題ないが prometheus/grafana で出力する統計情報(stats)が正しくないことに気がついた。…

meishi キットからはじめる自作キーボード入門

meishi キットとは 遊舎工房さんで販売している自作キーボードの入門セットです。「名刺」サイズの基盤に4つのキーを載せたミニキーボードの組み立てを通して、自作キーボードの作業の概要を把握できるようになっています。費用は meishi キット(1,000 円ほ…

Kubernetes The Hard Way を AWS で実施する

Kubernetes The Hard Way とは Kubernetes の公式ドキュメントで Setup の項目をたどると kubeadm を使う例が記載されている。いくつかの機能はまだ alpha/beta であるものの公式でも kubeadm をクラスタ構築に使う流れを後押ししたいように見える。確かに k…

世界各都市の現地時刻を表示するコマンドを作った

仕事上、東京とロサンゼルスの時間を気にする必要があるので、時差を知りたい時は環境変数 TZ にそれぞれの都市を入れて date していたのを peco を使って拡張してみた。timedatectl list-timezones で抜き出したタイムゾーンのリストを peco でフィルタして…

IntelliJ から Docker イメージの開発作業を行う

IntelliJ の Docker Integration プラグインを使う Dockerfile の修正、ビルド、イメージの動作確認を行うのに、今まではターミナルから docker build -> run -> attach をしていたけれど、全て IntelliJ のインターフェイスでサイクルを回した効率がよかっ…

mac mini 2018 向けのディスプレイケーブルとマイク

mac

年末に mac mini 2018 を購入した際に発生した問題がふたつ。 それまでのディスプレイケーブルが使えない。USB Type C to HDMI のものを書い直さないといけない。 マイクがない(マイクがないと日課のオンライン英会話が mac mini できない)。 しょうがないの…

Docker Desktop for Mac の Kubernetes 機能を使用して Mac 上に Kubernetes クラスタを構築する

Mac でお手軽 Kubernetes クラスタ構築 難しい、となかなか敷居が高くなりがちな Kubernetes だが Docker Desktop for Mac の Kubernetes 機能を利用すると、お手軽に Mac に Kubernetes クラスタを構築することができる。 Docker Desktop for Mac とは? Mac…

Go 1.11 からはじめるプロジェクトでは、パッケージマネージャは dep ではなく go mod(Go Modules) を使おう

go

go mod(Go Modules) がこれからのスタンダード Go を使いはじめるにあたってパッケージマネージャを探した時の話。ghq や glide といった過去の遺産に加えて godep, dep (ややこしい) と百花繚乱な様子が窺え、初見では、将来的に何が天下統一してくれるのか…

parallel で k8s の複数 pod にコマンドを「並列」で流して結果を保存する

k8s の複数 pod を横断してかつ「並列」でコマンドを実行する必要がある場合、どのような手段があるだろうか。例えばパフォーマンス測定のために jstat を複数 pod で実行したい場合、以下のように kubectl に pod を次々と「直列」で渡していっては、各 pod…

tail -f /dev/null で調査用コンテナを起動してそのままずっと保持しておく

Docker コンテナを ENTRYPOINT や CMD の指定なしにちょっとだけ立ち上げたいことがある。例えば Docker イメージで提供されている OS の環境で少しだけ作業をしたい場合など。そんな時は大抵 -d でバックグラウンド指定して sleep コマンドで適当に長い秒数…

fluentd プラグイン sampling-filter と numeric-monitor を組み合わせて nginx のアクセスログから標本を抽出してパフォーマンス測定を実施する

ログの一部を抽出して計算するには sampling-filter + numeric-monitor の組み合わせがぴったり! 大規模データ収集のログコレクタとして fluentd を使用している場合、全部のログの中から一部を抽出してデータ分析を行いたい場合がないだろうか。例えば、サ…

新世代 grep の使い方 ripgrep(rg) と silver-searcher(ag)

はやいは正義 ripgrep が現在進行形で大正義らしい。名前からなんとなく「闇を切り裂く grep」みたいなイメージが浮かぶ。こう、アスファルトタイヤを切り裂きながら暗闇走り抜ける素敵なサムシング、を感じる... のはおぢさんだけ、か。 github.com なぜ、r…

Docker, Kubernetes 学習とツールとコンピュータサイエンス

Docker, Kubernetes 学習の進めかた Udemy の Learning Docker and Kubernetes by Lab を完了した。実際に手を動かしながらだったので 1 週間ほどかかってしまった。内容はかなりよかった。Docker の基礎から Linux カーネルとの関連(Network Namespaces, cg…

xargs が Linux と Mac 両方できちんと動くためには -i ではなく -I オプションを使う

Linux と Mac で xargs の挙動が違うのは以前から認識していたが、詳細までは調べていなかった。今回、プライベートの git レポジトリをコミットして Mac で xargs を実行した際に illegail option -- i と怒られてしまったので、これを機会に xargs が Linu…

Docker イメージの LABEL 情報は Label-Schema が標準になる

Docker イメージのメタ情報(メンテナ、ライセンス種別、ビルド日時、Github の URL など) は LABEL に集約しようという動きが広まってきている。そのために「どういった情報を載せるべきか」という議論がコミュニティベースで展開された結果、標準として Lab…

Tectonic CoreOS を使って AWS 上に Kubernetes クラスタを構築する

CoreOS 社が提供している Kubernetes にセキュリティ、監視、マルチクラウド統合、そしてカッコイイ管理インターフェイスを備えた統合環境 Tectonic を使用してみた。 同社の推しは「Kubernetes の管理コストをさげる」「クラウドベンダーにロックインされな…

Scala, Ruby, Go の REPL 環境を Docker コンテナですぐに試せる Rod (REPLs on Docker) を作った

Scala の学習用に Ammonite 環境 を AWS EC2 上に構築していて、Scala Exercises の例を試せるように紹介されている cats や shapeless のライブラリを追加していた。ただ、個人的に Ruby を使う機会が圧倒的に多いので pry は必須だし、Go もやってみたいと…

プロンプト新世代を agnoster-bash と docker-prompt に感じた

agnoster-bash 会社の同僚に教えていただいて Mac のプロンプトを変えてみた。今までも環境ごとにプロンプトは変えていたけれど、vt100 で xterm な枠の中でせいぜい背景色と文字書を変更するぐらいだった。大げさかかもしれないけど、ブランチの記号がフォ…

bash: /dev/tty: No such device or address を script コマンドで解決する

GitHub - kyagi/rod: REPLs On Docker を作っている中で Ammonite の起動が早くなるようにあらかじめライブラリをキャッシュさせておくため .ammonite/predef.sc にライブラリを追加したあとに echo exit | amm -s を実行するようにしたところ、docker build…

Docker を支える Linux カーネル機能 Network Namespace から docker exec の実装が ip netns exec である雰囲気をつかむ

Linux の Network Namespace を ip netns exec で操作しているうちに「docker exec の正体」がなんとなく見えてきた。 Bridge Networking Deep Dive — Docker Kubernetes Lab 0.1 documentation デフォルトでは docker はコンテナの Network Namespace を見…

Disjunction と Either の違い

Safari Books Online で検索したところ、以下の記述が見つかった。 Disjunction is conceptually similar to Either, which can be used to represent one of two possible types. Disjunction is different from Either because its operations are right-b…

docker-machine で aws に docker 環境(docker host) を構築する

いままでメインの docker 環境は AWS EC2 上で curl -fsSL get.docker.com -o get-docker.sh && sudo sh get-docker.sh のように構築していたけれど、 docker-machine for AWS を使ったほうがいろいろ便利だった。 Amazon Web Services (AWS) EC2 example | …

Udemy の Learning Docker and Kubernetes by Lab がとてもよい

Docker 再入門として Learning Docker and Kubernetes by Lab | Udemy のコースを受講しているのだが、とてもよい。コンテナを支える Linux カーネルの機能として cgroups, Network Namespaces (Strorage(aufs), Security, Process Namespaces) の概要から、…

better-files を使用して複数ファイルの一括処理を書き直す

会社の Scala エキスパートから、better-fs, fs2 というライブラリを教えていただいたので書き直してみる。とても短くなりました。(^q^)。 GitHub - pathikrit/better-files: Simple, safe and intuitive Scala I/O ayakumo.hatenablog.com @ import better.…

読み解き PiS3: Higher Order Functions を使って複数ファイルの一括処理を行う

9.4 WRITING NEW CONTROL STRUCTURES を読んでいて、複数ファイルに対して「ファイルを開いて特定の処理を行う」ことができるはずと思って実装した。Scala でメソッドをメソッドの引数に取るのは HOF(Higher Order Functions) というらしい。 C でいう関数ポ…

Ammonite ではじめるすくすく Scala 生活

だいたい Ammonite に書いてある。Magic Imports はとてもありがたい。 インストール $ sudo curl -L -o /usr/local/bin/amm https://git.io/vdNv2 && sudo chmod +x /usr/local/bin/amm && amm REPL として使う $ amm (... snip the greeting message ...) …

Ammonite を使用してお手軽に Scala のスクリプトを書く

sbt は優秀なツールだけれども、さくっと Scala のスクリプトを書くには Ammonite のほうがお気に入り。シェルからは -c オプションで気軽に Scala をスクリプトとして実行可能。 $ amm -c 'import scala.io.Source; val file = Source.fromFile("/home/kyag…