2019-01-01から1年間の記事一覧

Emacsのimenuで選択される関数名の横幅をもっと広くする

Emacsでプログラミングするときにhelm-imenuでよく関数定義へジャンプするのだが、デフォルトだとimenuの候補に出てくる関数名が60文字でぶった切られて、長い関数名が隠れてしまう。名前空間がネストしたり分かりやすいクラス名やメソッド名をつけると60文…

rubyにおけるソケットのaccept_nonblockの競合

Rubyで1つのサーバーソケットを2つのプロセスから同時にaccept_nonblockするとどうなるか。サーバーのgraceful restartでよくありそうなシチュエーションを試してみる。 実験コード: require 'io/wait' require 'socket' s = TCPServer.new(0) p [ :listen, …

LinuxとWSLの差異: UNIX Domain Socket

LinuxはUNIX Domain Socketを何度もlisten(2)できるが、WSL (Windows Subsystem for Linux)は2回目のlisten(2)がエラーになる。backlogを変更しようとしてはまった。Rubyで検証した結果は次のとおり。 Linux: $ uname -a Linux gut 4.14.74-v7+ #1149 SMP Mo…

1月に読んだ本やマンガ

1月の自分的トピック。 正月に修羅の門を読み返し。 ブラックホールの直接観測成功にワクワクし、重力波関連の本をいくつか探して読み漁る。自分が生きてるうちに一般相対論や宇宙論で進展があるかもと思わせてくれた。 津本 陽の剣術物がKindle化されてたの…

GNU screenからssh-agentを使う

GNU screenからssh-agentを使う場合、エージェントソケットのシンボリックリンクを張るのが常道のようなのだが、WSL環境でホームディレクトリをdrvfsにしているとunix domain socketとシンボリックリンクの相性が悪いようでどうにもうまく動かなかった。 そ…

bashでスクリプトからログインシェルを判定する方法

shoptを使う。名前がshとなっているがbash固有の組み込みコマンドのようだ。 $ shopt login_shell login_shell on スクリプトで条件分岐するときは-qオプションを使うとよい。 $ shopt -q login_shell; echo $? 0

TLSのローカル動作確認用のオレオレ証明書作成

方針 設定ファイルやツールを使うとなにがどうなっているか分からなくなるのでOpenSSLの素のコマンドを使って作る。 OpenSSLには様々なコマンドやオプションがあるが必要最低限のものだけを使う。 作った証明書を実際に使ってTLSで接続できることを確認する…

近況

最寄り駅近くのジョナサンが閉店してた。よく使ってたので悲しい。 帰省時に輪行したロードバイクのトップ側のギアが入らなくなった。 いろいろ調べてみたらどうやらSTIの不具合らしい。直さなきゃならんのだがSTIは高いんだよなあ。

RubyのThread::SizedQueueのチューニング

前提 Thread::Queueは際限なくサイズが伸びるので使わない。Thread::SizedQueueを使う。 生産者(Thread::SizedQueue#pushする)側は1スレッドとする。 消費者(Thread::SizedQueue#popする)側は複数スレッドとする。 結論 いろいろい試してみたが、次のように…

EmacsからRubyのTest::Unitのテストを実行する

経緯 rubyunitからの流れでRubyのテストフレームワークはずっとTest::Unitおよびその互換I/Fを使っている。実は流行りのRspecは使い方を知らなかったりする。 探し方がよくないのかEmacsとTest::Unitを連携させる既存のパッケージが見つからなかったので、Em…

12月に読んだ本やマンガ

12月の自分的トピック。 イダ タツヒコの昔の既刊がKindle化 『キン肉マン』ジャンプ 運命の五王子最強ストーリー列伝!!、最新連載のオメガ・ケンタウリ六槍客編にむけてよいおさらいになった 裏世界ピクニックのコミカライズが面白かったので原作小説を購入…