日中ダラダラと過ごし、15:00近くになって夕飯の買い物に行こうという話に。ところが、僕だけ自転車がない。で、「買っちゃえば?」と背中を押されたのと、かねてから買うつもりではあったので、中目黒の「糠屋」に物色をしに。モノさえあれば、その場で買って乗っていこうという勢いではあったのだけれど、気に入ったものは残念ながら在庫なし。で、注文。
結局、自転車組には置いていかれたので、中目黒ブックセンターで物色。「MOONLIGHT MILE」の4巻が出ているのを発見し捕獲。この作品は「プラテネス」と共に、宇宙好きなら必読だと思う。そこの君、黙って読んどけ!(笑)
夕飯は手巻き寿司。TVを付けるとサザエさん。「サザエさんを見ながら手巻き寿司食べるなんてフツーの家族みたいだね」と。確かに違和感は感じてないな。
以前「Subject: *** 阪神優勝 ***」という spam が来たんだが、今日は「*** 巨人優勝 ***」というヤツが来た。中身は「阪神」と一緒で、コピー品(と思われる)ソフトの販売など。よく見たら、本文は「巨人優勝」じゃなくて「阪神優勝」のままだよ。手抜きだなぁ(笑)
もう iPod の新型かよっ!?と一瞬焦ったけど、どうやら容量の違いだけらしい。iMac の方は正当な進化って感じか。
それにしても、出る出ると言われている PowerBook の新型が全然出ないなぁ。やっぱり、Apple Expo Paris で、か?
「サーバのバージョン隠し以前にやるべき事はいくらでもある」を読んで、yoosee の言っていることには納得している。バージョンを隠そうが隠すまいが、攻撃者は攻撃してくる。嘘のバージョンを書こうが何しようが、総当たりをかけてくるヤツは来る。そういうもんだ。その上で、ちょっと言いたい事が出てきたので書いてみる。
まず、オレの立ち位置は、サービス提供者としてサーバ管理していて、パッチ当てやアクセス制限などは適切に実施している(つもり)という状況。自前でもセキュリティスキャナを使ってチェックを実施したりなど、普段から特に誰から言われんでもセキュリティには気を使っている。
そういった人間が管理しているサービス提供サーバに対しても、クライアントは「安全性確認のために脆弱性診断をさせろ」と要求してくる。クライアント自身がチェック能力を持っている事はあまりないので、セキュリティ診断業者が代わりに診断する事がほとんどである。
また、ISMS やらの第三者認証を持っていたりすると、サービス提供会社内で自己チェックのための脆弱性診断を実施する場合がある。この場合、自社内に診断できる技術者がいても、「オレオレ診断」ではお気に召さない経営者などが、外部のセキュリティ診断業者に診断を頼んだりすることがある。
そして、セキュリティ診断業者の世界では「サーババージョンを隠していないのは脆弱点」というのが常識のようなのだ。これまで複数の業者の診断内容を見た事があるのだが、チェック項目として大抵は入っていた。
サービス提供サーバでバージョン隠しをしていなかった場合には、クライアントまたは経営者に「このサーバには脆弱点があります」という報告が上がることになる。報告が上がると、最終的にはサーバ管理者であるオレに「脆弱点があるぞ、なんとかしろ」という指示が来る。
この場合、「いや、バージョン番号は古くても、ちゃんとパッチ当ててます」という説明をすることになるのだが、そもそも技術についての知識がない相手にその説明をするのには非常に時間を要する。時間を使って納得してもらえれば良いのだが、「難しいことは分からない。専門家(の業者)がそう言っているのだから、とにかく直せ」という結果になることもある。
適切に脆弱点の管理をしている場合、この説明に必要なパワーは全くの無駄だ。
「効率良く仕事をこなし、高い生産性を上げ、人生のクオリティを高めるための工夫」というのが LifeHack の定義(はてなダイアリーキーワードより)ならば、サーバのバージョン隠しはオレにとっての LifeHack に他ならない。
「The Emacs Lisp Style Guide」というものがあるのを知って、ちょっと読んでみた。
インデントは Emacs が良きに計らってくれるので気にしないで良いのだけど、if
よりも when
使えとかってのは、あー、なるほどね、と思ったりも。
;; good
(when pred
(foo)
(bar))
;; bad
(if pred
(progn
(foo)
(bar)))
他の例では、数値比較でこんな書き方ができたんだ!ってものがあった。
;; good
(< 5 x 10)
;; bad
(and (> x 5) (< x 10))
(< n1 n2)
で、他のプログラミング言語での n1 < n2
という比較になるんだけど、ここに3つ以上の数値を入れることができるとか知らなかったよ。
上の例では、変数 x
の値が 6 〜 9 であれば真( t
)となり、それ以外であれば偽( nil
)となった。
他のプログラミング言語経験者だったら「bad」と言われる例で書いちゃうよなぁ、普通は。
「Be Professional Day」がどういうものかは、このはてブコメントに詳しい。
ということで、今日は、PHPUnit のテスト環境周りで気になってた部分を直していた。今日の修正だけだと、プロダクト的な進展は特に何もない。でも、次に進むためには、ここを直しておいたほうが良さそうだなーという地味な部分で、その修正にほぼ1日使えるのはありがたい。
でも、結果だけみると「えっ、これだけ」的なものだったりする。
ウチの PHPUnit テストケースは、そこそこの数があって、単純に実行すると遅い。それを克服するために CI サーバでは色々な工夫がされているのだけど、その工夫はオレの入社以前に行われてきたもので、その経緯を知らないオレにとっては、ちょっとブラックボックスになっていた。
最近、その辺の環境をレクチャーして貰ったり、自分で掘り進んでいったりして、ようやく現状を理解し始めたところ。そういう掘り進みも今日の BPD で時間を使っていたので、結局アウトプットは少なめになってしまった。あまりスピード感は出せていないけど、いろいろな情報を蓄積していって、この先の仕事で還元していきたい。
▽ おしたつ [きやのんでいるF300にしたのね。僕の赤自転車のロゴをよくごらんいただくと、親戚自転車であることがわかるですよ!]
▽ すずき [「注文します」と言った直後に ohsamu からツッコミ入ったよ>親戚 しまった!カブった!と思ったけど、ま、いっか..]