Lazy Diary @ Hatena Blog

PowerShell / Java / miscellaneous things about software development, Tips & Gochas. CC BY-SA 4.0/Apache License 2.0

「大規模システム」の指す範囲

「100万行オーバーのモノリシックRailsアプリをマイクロサービス化したクックパッドの手順」*1では、100万行弱のコード(うちテストコードが約51万行、実行環境で動作していたのは約41万行)をもって「世界一のモノリシック」「巨大すぎる」と形容している。

また、GoogleBigtableの開発には「7人年(=84人月)の工数がかけられた」*2ということをもって、大きな工数がかかっていることが形容されている。

一方で、「みずほ35万人月」*3とか「郵政民営化1億ステップ」*4のように、SIの世界では文字通り桁の違う数字が「大規模プロジェクト」の例として挙げられる。

この感覚の差はどこから来るのだろう? ドメインモデルスタイルで設計してるシステムと、トランザクションスクリプトスタイルで設計してるシステムとの違いなのかな?

Difference of Invoke-Expression and '&' in PowerShell

# Command Result
1 Invoke-Expression 'Get-Process' OK
2 & 'Get-Process' OK
3 Invoke-Expression 'Get-Process explorer' OK
4 & 'Get-Process explorer' NG

#4 causes the following error:

& : 用語 'Get-Process explorer' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認
識されません。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試
行してください。
発生場所 行:1 文字:3
+ & 'Get-Process explorer'
+   ~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Get-Process explorer:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

新幹線の「〇〇新聞ニュース」

新幹線のドアの下に流れてる「〇〇新聞ニュース」が、同じ内容を2度流すのは、

  • (A) 一度目に流れていた内容を途中から読んだ人でも、そのまま見続けていれば読めなかった内容が読めるから。
  • (B) 文字の流れが速すぎて、一度では読めないから。

(A)とばかり思ってたんだけど、(B)と感じる人は思ってるより多いのかも。だったら単純に文字が流れる速度を変えるよねぇ、と思うんだけど、実は二度流すことで(A)と(B)の両方を解決してる可能性もあるな。

普段着と寝間着の出番

- (A) (B) (C)
かしこまった席で着る服 よそいき よそいき よそいき
学校などの日常的な場で着る服 普段着 普段着 普段着
外出しない日中に着る服 普段着 寝間着 部屋着
寝るときに着る服 寝間着 寝間着 寝間着

この「部屋着」という文化がいつ、どこから来たのか謎なんだよなぁ。

あと「よそいき」も謎。学校行事で「子供は汚れてもいい服装で来てください」と言われても、それは「動きやすい服装で来てください」と同じ意味で、汚れちゃいけない服を子供に着せるというのは意味不明だった。それに、私の小学校の卒業式(1994年)では、いわゆる「よそいき」を着ている人は少数派だった。現在の卒業式の風景は、やはりスタジオアリスの作り上げた文化なのか?

rsyncでページキャッシュを汚さない方法

rsyncは大量のファイルを走査するため、普通に実行するとページキャッシュに乗ったファイルが追い出されてしまう。 Linuxの場合、nocacheコマンド*1を利用することでページキャッシュを汚さずにrsyncを実行できる。リモートでもrsyncが実行されるので、以下のように実行する必要がある。

nocache rsync -aiv --rsync-patch='nocache rsync' some-host:/src/ /dest/

参考: https://stackoverflow.com/questions/10105203/how-can-i-limit-the-cache-used-by-copying-so-there-is-still-memory-available-for

ただし、nocacheコマンドはDebianUbuntuであればaptで取ってこれるが、CentOSRHELリポジトリにはないみたい*2。 そのため、RHELrsyncでページキャッシュを汚さないためには、nocacheをソースで取ってきてmake installするしかない模様。

なお、rsync本体に対してページキャッシュを汚さないためのオプション --drop-cache が提案されたことがあるが、Linux-specificすぎるとのことでWONTFIXになっている*3。それに伴い、RHELリポジトリでもWONTFIXになっている(RHELrsyncのみパッチが当たっているとかいうことはない)*4