C++11以降で #define private public を弾く

どちらもコード中の//#define private publicのコメントを外すとコンパイルが失敗する

マイナンバーを全パターン出力するワンライナーを書きました

seq -w 0 99999999999 | awk '{l=split($0,ns,"");s=0;for(i=1;i<=l;++i){s+=ns[l-i+1]*((i<=6)?i+1:i-5);}d=s%11;print $0 (d<=1?0:11-d);}'

awkフル活用なので面白みに欠ける。

マイナンバーのチェックディジットの計算式は 総務省令第八十五号の第5条より。

GUIアプリを端末から切り離して実行する

普通に端末からwiresharkとか叩くと、端末を閉じるとwiresharkも終了するので鬱陶しい。&付けて起動しても、なんか色々出力出るし。

wireshark < /dev/null >/dev/null 2>/dev/null &

このように起動すれば端末から完全に切り離されて起動するので、端末閉じても平気だし当然ながら出力も出ない。

いちいち書くのが面倒なのでシェルスクリプトにした。

$ cat `which rg`
#!/bin/sh
$@ < /dev/null >/dev/null 2>/dev/null &

$ rg wireshark

svnレポジトリ以下のファイルを全検索してエディタで開くワンライナー(要 percol )

 vim `svn ls -R | xargs grep -n $@ | percol | sed 's/:[^:]*$//' | sed 's/:/ +/'`

これを適当な名前で PATH の通ったディレクトリに名前つけて保存するだけ。

percol は他の類似品でも多分大丈夫。

bashrcの変更を全bashプロセスに反映させる

.bashrc の先頭に

trap 'source ~/.bashrc' USR1

と記述しておく。 .bashrc を編集したら、

pkill -USR1 bash

とすると全てのbashプロセスで.bashrcが読み込み直される。

他にも inotifywait で .bashrc の変更を監視するとか考えたけど、それだとちょっと間違った変更を保存した瞬間即全bash終了になりかねないのでやめておこう。

man を vim で綺麗に見る

環境変数を以下のように設定しておくだけ。

MANPAGER="col -b -x | vim -R -c 'set ft=man' - "

これでman memcpyとか叩くと

f:id:nyaocat:20150814110114p:plain

こんな表示になる。もちろん環境やvimの設定によって違うが。

環境変数に設定したcolvimのそれぞれオプションの意味は、この記事の通りに設定した見やすいmanman colとかman vimとかして自分で調べてみよう!