Linux

flock(LOCK_EX) で EBADF

ちょっとハマったのでメモ。 ファイルを flock() で排他的にロックするために次のようにすると成功します。 % ruby -e 'File.open("hoge").flock(File::LOCK_EX); puts "OK"' OK が、NFS 上で同じことをやると失敗します。 % ruby -e 'File.open("hoge").flo…

誰も掴んでない TCP ポートを使うことができない

たとえば、次の例では 12345 ポートは netstat や lsof でも出てこないし、クライアントから接続することもできません。 # netstat -a | grep 12345 # lsof -i :12345 # telnet localhost 12345 Trying 127.0.0.1... telnet: Unable to connect to remote ho…

Ruby, MySQL のうるう秒の扱い

2015/7/1 にうるう秒が挿入されるということで、うるう秒の話題が盛り上がってるようなので自分も書いてみます。 Linux 上のプログラムが時刻で60秒を刻むには、うるう秒対応のタイムゾーンを使う必要があります。 通常はうるう秒を考慮していないタイムゾー…

相手がいないのに ESTABLISHED になってる TCP ポート

最近 ParallelServer というライブラリを作ったのですが、その最中に奇妙な状態になってる TCP ポートを見つけたので、メモっておきます。 Ruby では TCP サーバーは次のような感じで作ることができます。お手軽ですね。 require 'socket' Socket.tcp_server…

スクロールバーの矢印を表示する

最近は Xubuntu を使ってますが、テーマによるのかもしれませんが、スクロールバーの端の矢印が表示されなくなってて不便なので表示する方法を調べました。 Gtk3 $HOME/.config/gtk-3.0/gtk.css を次の内容で作成 .scrollbar { -GtkScrollbar-has-backward-s…

Xubuntu 14.04

Ubuntu が Unity になって以来、デスクトップ環境を転々としている自分ですが、最近は Xubuntu を使っています。 しばらく前までは Linux Mint を使ってたのですが、会社の PC の OS が Windows 必須になってしまって、しかも PC のスペックがかなりヘボい(C…

VM 上の Linux で ThinkPad USB トラックポイントキーボードを使う

この前半額キャンペーンがあったので ThinkPad USB トラックポイントキーボード(日本語配列)を買いました。 レノボ・ジャパン ThinkPad トラックポイント・キーボード - 日本語 0B47208出版社/メーカー: Lenovo発売日: 2013/06/25メディア: Personal Compu…

日本語キーボードを英語配列風にする

自分は日本語配列キーボードの ThinkPad を使用しているのですが、英語配列風にして使ってます。 昔は Sun の Type3 や Type4 キーボードを使っていて、最近は英語配列の HHK キーボードを使ってるので、英語配列の方が使いやすいのです。 英語配列キーボー…

Linux Mint 15 Cinnamon Edition

今まで Compiz のバイナリは https://launchpad.net/~guido-iodice にある PPA を使っていたんですが、それがなくなってしまいました。 どうも Compiz は終了みたいなので、5年ほど愛用していた Compiz から離れることにしました。 ということで Linux Mint …

Linux Mint 15

Linux Mint を 14 から 15 にアップグレードしました。 アップグレード手順は http://blog.lindwurm.biz/2013/05/how-to-upgrade-mint.html を参考にしました。 Ubuntu と異なり、GUI でアップグレードする方法はないようで、公式の推奨方法は新規インストー…

rsync で大量ファイルを消すと遅い

なんかいちいさん(id:ichii386)が面白そうなこと(「rsync で削除すると速い (?) 件」)をやってたので、手元の PC でも試してみました。 ThinkPad X220 Linux Mint 14 Linux 3.5.0-28 ext4 % mkdir /tmp/a % cd /tmp/a % seq 1000000 | time xargs -n100 touc…

NFS で排他制御

NFS 上のファイルに対する flock() は働かない。man 2 flock にも次のように書かれている。 flock() does not lock files over NFS. Use fcntl(2) instead: that does work over NFS, given a sufficiently recent version of Linux and a server which supp…