Skip to content

Instantly share code, notes, and snippets.

Avatar

Taiki Sugawara buzztaiki

View GitHub Profile
@buzztaiki
buzztaiki / spdx-license-identifier.md
Created Jul 24, 2022
SPDX-License-Identifierの使い方
View spdx-license-identifier.md

SPDX-License-Identifierの使い方

ファイルに一行書くだけでライセンスの宣言ができるやつ。SPDX は Software Package Data Exchange の略で、Linux Fundation が定めてるメタデータの規格らしい。

こんな感じで使えばよい:

# SPDX-License-Identifier: MIT
@buzztaiki
buzztaiki / variable_key_json.go
Last active Jul 14, 2022
キーの名前にルールはあるけど一定じゃないキーがあるJSONをデコードするやつ
View variable_key_json.go
package main
import (
"encoding/json"
"fmt"
"log"
"strings"
)
type Payload struct {
@buzztaiki
buzztaiki / vertico_prefer_prefix.md
Last active Jun 26, 2022
vertico の候補一覧でプレフィクスを優先させる
View vertico_prefer_prefix.md

vertico の候補一覧でプレフィクスを優先させる

emacs-jp に書いたやつ。

(defun vertico--compare-prefer-prefix (x y)
  (let ((content (or (car-safe vertico--input) (minibuffer-contents))))
    (pcase (cons (string-prefix-p content x) (string-prefix-p content y))
      ((or '(t . t) '(nil . nil)) (vertico--length-string< x y))
      (`(,match . ,_) match))))
@buzztaiki
buzztaiki / emacs_completion_system_memo.md
Last active Jun 27, 2022
Emacs の補完の仕組みメモ
View emacs_completion_system_memo.md

Emacs の補完の仕組みメモ

大昔の事しか知らなかったから、最近の仕組みまわりをなんとなく調べてみたメモ。Emacs 28.1。

基本

補完を支える基本は昔と変わってなくて all-completionstry-completion。引数も Emacs 20 の昔と変わってない模様。

ミニバッファの補完

@buzztaiki
buzztaiki / list_pods_of_deployment.md
Last active Jun 23, 2022
Deployment の Pod を一覧する
View list_pods_of_deployment.md

Deployment の Pod を一覧する

たとえば以下の状態のときに、app の pod だけ取ってくる。

% kubectl get deploy
NAME   READY   UP-TO-DATE   AVAILABLE   AGE
app    2/2     2            2           74s
ppa    2/2     2            2           74s
@buzztaiki
buzztaiki / screen_sharing_with_electron_app_on_wayland.md
Last active Jun 22, 2022
Wayland の Electron アプリで画面共有する
View screen_sharing_with_electron_app_on_wayland.md

Wayland の Electron アプリで画面共有する

Electron アプリなら大体 WebRTC で画面共有してるはずなので、

  • PipeWire#WebRTC 画面共有 - ArchWiki (英語版) に従って、PipeWire と xdg-desktop-portal [^3]、及びそのバックエンドをインストールしておいて、
  • --enable-features=WebRTCPipeWireCapturer を付けて起動する

とすれば多分使える。少なくとも Slack なら使える。

WebRTC が xdg-desktop-portal を経由して PipeWire を使えばいいので XWayland でよい (Chromium の Native Wayland は日本語入力まわりに問題がある [^1][^2])。

@buzztaiki
buzztaiki / deployment_port_with_gron.md
Last active Jun 14, 2022
gron で deployment の port をぱっと出す
View deployment_port_with_gron.md

gron で deployment の port をぱっと出す

gron は json を行指向 にしてくれるやつ。 https://github.com/tomnomnom/gron

https://chalow.net/2022-06-13-1.html でに噂になってて知った。たしかに便利。

例えば kuberetes の deploymnet から使ってる port を出すのに jq の式書いたりするのが面倒だったりするとき、以下みたいにしてぱっと出せる:

@buzztaiki
buzztaiki / rust_source_based_coverage.md
Last active Jun 6, 2022
Rust の Source-based code coverage をお手軽に使う
View rust_source_based_coverage.md

Rust の Source-based code coverage をお手軽に使う

1.60 で Source-based code coverage が安定化した (stable で使えるようになった)。

どうやって使うのかといった話は リリースノート に書いてある通り。なんだけど、ちょっと面倒くさい。

簡単に使うには https://github.com/taiki-e/cargo-llvm-cov の力を借りる。

まずは、llvm-tools-previewcargo-llvm-cov を入れておく:

@buzztaiki
buzztaiki / dont_put_backup_file_into_k8s_staticPodPath.md
Created May 24, 2022
Kubernetes の /etc/kubernetes/manifests にバックアップファイルを置いてはいけない
View dont_put_backup_file_into_k8s_staticPodPath.md

Kubernetes の /etc/kubernetes/manifests にバックアップファイルを置いてはいけない

近くに取るなら /etc/kubernetes/minifests.bak とか /etc/kubernetes.bak みたいに取りましょう。

kubeadm で作った control plane では、/etc/kubernetes/manifests に kube-apiserver 等のマニフェストが置かれていて、kubelet 起動時にそれを読むようになってる (static Pod)。

このファイル何らかの理由で編集する事になったとき (kubeadm の再設定 とか)に、同じディレクトリにバックアップファイルを置くとそのバックアップファイルまで kubelet が読んでしまう。

その結果新しい変更が何故か反映されない。死。となる。

@buzztaiki
buzztaiki / build_emacs_with_native_full_aot.md
Last active Apr 14, 2022
EmacsをNATIVE_FULL_AOT=1でビルドする
View build_emacs_with_native_full_aot.md

EmacsをNATIVE_FULL_AOT=1でビルドする

NATIVE_FULL_AOT=1 を付けると lisp 以下の全部のファイルがネイティブコンパイルされる。

$ ./configure --with-native-compilation
$ make bootstrap NATIVE_FULL_AOT=1
$ sudo make install