百日半狂乱

Shut the fuck up and write some code!!

Linux

読了、Goならわかるシステムプログラミング: Linuxシグナル再訪 in Go

Goならわかるシステムプログラミングを読んだ。 「第12章 シグナルによるプロセス間の通信」の冒頭で大昔に書いたブログ記事が引用されていてぶったまげる*1と同時に、ちょうど良い機会なのでGoの素振りも兼ねつつシグナルを再訪してみる。 SIGSTOPで停止し…

Linuxターミナル、コマンドtips その5: gnuplotの基本的な使い方と勉強会を開く時に期待してはいけないこと

(2019/06/29追記) 実践的、網羅的かつ簡潔にまとまったドキュメントを見つけたのでメモ(日本語訳)*1。 github.com このtipsはこれからLinuxを使っていく必要がある人、特に端末操作に苦戦している人、もしくは端末操作に対して嫌悪感すら抱いている人に向…

Linuxターミナル、コマンドtips その4: シェルスクリプトのハマリ所とデバッグ手法

(2019/06/29追記) 実践的、網羅的かつ簡潔にまとまったドキュメントを見つけたのでメモ(日本語訳もある)*1。 github.com このtipsはこれからLinuxを使っていく必要がある人、特に端末操作に苦戦している人、もしくは端末操作に対して嫌悪感すら抱いている…

Linuxターミナル、コマンドtips その3: stdin, stderr, stdout, リダイレクト, パイプ

(2019/06/29追記) 実践的、網羅的かつ簡潔にまとまったドキュメントを見つけたのでメモ(日本語訳もある)*1。 github.com このtipsはこれからLinuxを使っていく必要がある人、特に端末操作に苦戦している人、もしくは端末操作に対して嫌悪感すら抱いている…

Linuxターミナル、コマンドtips その2: ファイルを見つける(locate, find)、ファイルの中身を調べる(grep)

(2019/06/29追記) 実践的、網羅的かつ簡潔にまとまったドキュメントを見つけたのでメモ(日本語訳もある)*1。 github.com このtipsはこれからLinuxを使っていく必要がある人、特に端末操作に苦戦している人、もしくは端末操作に対して嫌悪感すら抱いている…

Linuxターミナル、コマンドtips その1: キーボードショートカットとディレクトリの移動

(2019/06/29追記) 実践的、網羅的かつ簡潔にまとまったドキュメントを見つけたのでメモ(日本語訳もある)*1。 github.com このtipsはこれからLinuxを使っていく必要がある人、特に端末操作に苦戦している人、もしくは端末操作に対して嫌悪感すら抱いている…

awkで0~1の乱数を生成する

シェルスクリプトを書いていて、ふと0~1の乱数をお手軽に生成したくなったので、実験結果をメモ. awkには組み込みでrand()という関数が用意されていて、例えば以下のような形で呼び出すたびに0~1の範囲の乱数を生成してくれる. awk 'BEGIN{ srand('"$RANDO…

世にも恐ろしいSIGPIPE、ソケットプログラミングの落とし穴

前回、「次回もシグナルのことを書く」と書いたのでシグナルのことを書く*1. ソケットプログラミングの落とし穴は色々あるけど、ここでは個人的に嵌ったシグナル関連の落とし穴に関して書き殴る. 結論から書くと、コネクションが切れたソケットに書き込み(s…

POSIX.1「signal(2)は古い、sigaction(2)を使え。」

過去に何回かシグナルに関する話をしたが、今回と次回もシグナルの話にしようと思う. シグナルそのものについてはsignal(7)のmanページを参照する. ここでは、シグナルを捕捉する側の話をする. 主に移植性の問題で、signal(2)ではなくsigaction(2)を使う…

非再帰的makeでgoogletestのテストコードを含むソースツリーを管理するMakefileを書いた

場当たり的なMakefileで管理しているC/C++のコードの規模(数千行程度)がそれなりに大きくなってきた. テストがないので大きな変更がしんどい. テストがないのでバグを踏んでも何が原因かは勘とprintfデバッグ、辛い. もういろんなところでテストがまったくな…

googletestを/usr/local/にインストールするシェルスクリプト

発声練習:Intel C/C++ を用いた Google Test環境を準備するを参考にしてgoogletestのセットアップを行うシェルスクリプトを書いた. ホームディレクトリにソースを落としてきて、コンパイルした後に/usr/local/に必要なヘッダとライブラリをcpしているだけ.…

gistコマンドでターミナルからGistにコードを投稿する

Gistにコードを投稿するのにいちいちブラウザを介するのは煩わしいので、ターミナルからコマンド一発で投稿したい. と思ったらあった. https://github.com/defunkt/gist インストール $ sudo apt-get install ruby $ sudo apt-get install gem $ sudo gem …

VirtualBoxのゲストOS(Linux)にホストOS(Windows)のDropboxをマウントする

方法 Virtualboxの[設定]→[共有フォルダー]でホストOSのDropboxを追加 設定したOSで以下を行う. $ mkdir /mnt/Dropbox $ ln -s /mnt/Dropbox ~/Dropbox $ sudo vi /etc/fstab dropbox /mnt/Dropbox vboxsf defaults,uid=1000,gid=1000,dmask=0077,fmask=007…

bashのタブ補完で余分なスペースが入るようになった場合の対処

ある時を境に、 cp /et [Tab] ↓ cp /etc/ となっていたはずのbashのタブ補完が、 cp /et [Tab] ↓ cp /etc<space> となるようになってしまった場合、 rm /etc/bash_completion.d/acroread.sh とすれば元に戻ったという話. 同様の症状を訴えている人:参考1,参考2</space>

Ubuntu12.04のフリーズバグとlinuxカーネルのバージョンアップ

Ubuntu13.04出たし、かなり古い話題だけど、コマンド一発でカーネルバージョンアップができたのでメモ. Ubuntu12.04でカーネルのバージョンが 3.2.0-40-generic-paeあたりだった場合、 特にブラウザ開いて動画視聴している最中に何の前触れもなくフリーズす…