@peccul is peccu

(love peccu '(emacs lisp cat outdoor bicycle mac linux coffee))

ripgrepの結果をファイル名のパスでソートしたい

-j1 オプションをつければよい。 github.com これが dir1/file1.rs:blah dir2/file4.rs:blah dir1/file2.rs:blah こうなる dir1/file1.rs:blah dir1/file2.rs:blah dir2/file4.rs:blah 地味に気になってたのをようやく調べた。

20230602 today i see

PayPalの分散型キーバリューストアをOSSにしたらしい

20230601 today i see

続くか分からないが、見たもの読んだものを記録してみる。 こういうのを LogSeqとかに残したらええんか。どっちがええやろか。 itnext.io Angularのコマンド nx でリポジトリをセットアップする記事かな。髭のおじさんが懐かしい。 モノレポとポリレポのどっ…

vimdiffの代わりにemacs-vdiffを使う

tl;dr 以下のシェルスクリプトをvdiffみたいな名前でパスの通ったところにおいて実行権限をつければ使える。 #!/bin/bash # -*- shell-script -*- tmpdir=$(mktemp -d /tmp/emacs-vdiff.XXXXX) emacs -Q --eval "(progn (setq user-emacs-directory \"${tmpd…

docker build中にaptがこける

tl;dr ホストマシンのdockerを更新すれば良かった。 まさかホスト側がここに影響するとは、と言う気づき

WSLの占めるディスク容量を減らす

tl;dr WSLの使うvhdxファイルをdiskpartコマンドで圧縮すればよい。 以下の2つのファイルを同じフォルダに置いて、PowerShellで実行する。WSL環境をシャットダウンするので何か実行中は避ける。

minikubeでローカルのdocker imageやDockerfileを利用する

tl;dr $ env $(minikube docker-env) $ cd path/to/build $ docker build -t local/myapp:1.0.0 $ minikube kubectl -- create deployment test-app --image=local/myapp:1.0.0 ドキュメントを一通り読めばよかった minikube.sigs.k8s.io

Windowsで同じアプリケーションのすべてのウィンドウを手前に表示する

tl;dr AutoHotKeyで解決する例を見つけたのでそれを導入。 Alt+PrintScrernを押すと今開いているウィンドウと同じアプリケーションのウィンドウが順にパカパカ切り替わって全部手前に表示される。 !PrintScreen:: WinGetClass, class, A WinGet, currentWind…

WSLgでEmacsを使う

tl;dr # install packages for build sudo apt install -y build-essential libgtk-3-dev libgnutls28-dev libtiff5-dev libgif-dev libjpeg-dev libpng-dev libxpm-dev libncurses-dev texinfo autoconf adwaita-icon-theme-full cd /tmp # clone source on…

Dockerfileでbashの新しいものを用意する

tl;dr FROM amazon/aws-cli:latest as build RUN yum update -y \ && yum install -y make gcc tar gzip # bash 5.2 for zoxide <Space>+<Tab> ENV VER_bash=5.2 RUN yum install -y ncurses-devel RUN curl -O http://ftp.gnu.org/gnu/bash/bash-${VER_bash}.tar.gz \ &</tab></space>…

docker-composeとhaproxyでアプリケーションを冗長化する

tl;dr アプリケーション側のdeploy設定でレプリカ数を指定して、LBとしてhaproxyを置くことで実現した。冗長というよりも負荷分散かもしれない。 docker-compose.yml version: '3.7' services: app: ... deploy: mode: replicated replicas: 4 expose: - "80…

WSL内のdockerコンテナからWindowsのクリップボードにコピーする

tl;dr WSL上で clip.exe を使うとWindows上のクリップボードにコピーできる WSL上でパイプを作って、そこにコンテナから書き込むことでパイプ内のテキストを読み取れる この2つを組み合わせてパイプに書き込まれたらクリップボードにコピーする流れを無限ル…

jqで配列の個数に応じてフィルタする

tl;dr cat some.json | jq '. | select( (.arraykey | length) > 0 )'

新しいプロセスでExcelを起動する

tl;dr PowerShellで以下を実行すればよい (New-Object -ComObject Excel.Application).Visible = $true 続きではショートカットを作ってスタートメニューやPower ToysのPower Runから呼び出せるようにしている。

複数のdocker compose間で通信する

tl;dr 通信元のdocker-compose.ymlに通信先ネットワークの情報を書けばよい 通信元 version: '3' services: src_app: # ... networks: - target_network networks: target_network: external: name: actual_network_name 通信先 version: '3' services: dst_…

EC2上のWindowsでUserDataを手動で直接たたくPowerShellワンライナー

tl;dr Invoke-Expression -Command (Invoke-RestMethod 'http://169.254.169.254/latest/user-data').powershell.ToString() 想定するUserDataの中身 <powershell> ...ここにPowerShellのコードを書く </powershell> 背景など

IAMポリシーをいじってて出くわすEncoded authorization failure messageをデコードして整形する関数

tl;dr いちいち調べてデコードするの面倒なので関数にした。きっと関数名を忘れてググる。 .bashrcなどに以下のように書いておく function decode-aws-authorization-message(){ aws sts decode-authorization-message \ --encoded-message $1 \ | jq -r '.D…

joinコマンドでSQLのLEFT OUTER JOINのようなことをする

tl;dr join -a 1 -e NULL -o auto file1 file2 -e で穴埋めする内容を指定し、-a で優先する(SQLでいうLEFTに当たる)ファイルを指定する。

teeで標準エラー出力もファイルに書き出す

TL;DR command > >(tee -a stdout.log) 2> >(tee -a stderr.log >&2) 背景など

ディレクトリ内の最新のファイルをfindコマンドで探す

tl;dr find -printf '%Ts %TF %TT %p\n' | sort カレントディレクトリ以下のファイル一覧が以下のようなフォーマットで並ぶ 1618914659 2021-04-20 10:30:59.9416574000 ./path/to/file 1618995234 2021-04-21 08:53:54.0000000000 ./path/to/file2 ちょっと…

helmでwindows.elのウィンドウを切り替える

k8sではなくEmacsの話。 anythingからhelmに切り替えてからもウィンドウ切り替えだけ anything-c-source-windowsを使っていたが helm一本にするために重い腰を上げてhelmのsourceを書いてみた。windowsが古すぎるというかマイナーすぎるのか情報が少ない気が…

EC2で動くLinuxインスタンスにrootでSSH接続する

tl;dr /etc/ssh/sshd_configでPermitRootLoginをyesにしてsshdを再起動する ~root/.ssh/authorized_keysに記載されている,command="echo 'Please login as the user \"ec2-user\" rather than the user \"root\".';echo;sleep 10"を消す

macでビルド後にSafariのタブをリロードする

yarn buildやnpm run buildの後にブラウザをリロードしたかったので、AppleScriptで解決した yarn build && osascript -e 'tell application "Safari"' -e 'set docUrl to URL of document 1' -e 'set URL of document 1 to docUrl' -e 'end tell' 参考 stac…

Dockerコンテナ(Let's Encryptのcertbot)を定期的に再起動する

tl;dr entrypointにwhile sleepを仕込めばよかった entrypoint: /bin/sh -c "trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;"

Vue 2から3になって気づいたこと

ちょっと書き始めて気づいた変更点を少しまとめる。

Vue 3で再帰的にコンポーネントを利用するメモ

tl;dr defineAsyncComponentで遅延させるといいみたい import { defineAsyncComponent } from 'vue' import Foo from './path/to/Foo.vue' export default { components: { Foo: defineAsyncComponent(() => Promise.resolve(Foo)) } }

AmazonLinux2にnkfを入れる

tl;dr amazon-linux-extrasでepelを有効にしてepel-releaseを入れたらyumで入れられた。

フラットなJSONオブジェクトをjqコマンドでヘッダ行付きのCSVにする

aws cliでフィルタした配列をいい感じにCSVにして、エクセルに貼り付けたかった。 キーがたくさんあるし、値があったりなかったりするので、いちいち配列の形でキーを列挙したくなかった。

AWS CLIの出力でタグの中からNameタグだけを残す

AWS CLIの出力をjqコマンドで整形したり、必要な部分だけ抜き出すときにタグ情報が厄介。 ちょっと調べて、いい感じにNameタグだけを抜き出す記述を見つけたのでメモ。 .Tags[]? | select( .Key=="Name") | .Value

AWSのSAMでテンプレートを落とす時に失敗したのでgitで証明書のエラーを無視したら成功した

tl;dr; $ git config --global http.sslVerify false 正しいCACertsがあるならこちら(未確認) $ git config --system http.sslCAPath /path/to/cacerts