mumumu の日記

Development, Translation, daily life, thoughts, and so on.

2014-03-26 22:20:00 +0900

Yet Another PEP8 Japanese version

https://github.com/mumumu/pep8-ja

Python のコーディングスタイルのガイドとしてよく知られている PEP8 の日本語訳を公開した。

もともと、社内で PEP8 に従ってコードを書こう (もともと flake8 は採用しているのだけど、ローカルルールとかも含めて明示したいねという話) と言っているときに、日本語版があった方が話が早いと思ったのが翻訳を求めたきっかけである。既存の翻訳があればそれに越したことはなかったのだが、自分がお勧めできるクオリティの翻訳が存在しなかったので、あえて再発明に踏み切った次第だ。

とはいえ、@methane さんの翻訳 は一部参考にさせて頂いている。特に最後の関数のアノテーション に関する部分は Python 3.0 以降で有効な機能であり、自分も使ったことがないため正直曲者だった。ちゃんとPythonを書くようになっていろいろ学ぶことは多いが、広く使われているプラクティスの一覧という意味で、この翻訳からは得るものが大いにあった。社内でもこれを生かしていきたいし、他の方のお役に立つことがあれば嬉しい。

github にあがっているので、異論反論オブジェクションについては、github Issue か Pull Request をお願いします(*´~`)

2014-03-13 11:59:00 +0900

My DIY server spec

このクラウド全盛の時代に、自分は自作したサーバを自宅で運用し続けている。その理由は複数あるが、以下のような感じだろうか。

たとえコンシューマーレベルといえどハードウェアのトレンドは抑えておきたい
自分の手元に置くことによるハードレベルに至るまでの自由度は捨てがたい
自作サーバを未だに本番運用している変わった会社 に転職して、サーバの選定やコストに関する感覚にも生かせると思いはじめた

運用やハードのコストさえ厭わなければ、はいはい頑張ってねという話に見える。コスト以外の問題点としては「CPU のトレンドが変わるたびに目移りしてしまう」点が挙げられる。自作をする人はお金が出せる範囲で最高のスペックのマシンをその時々で組みたがるのはもう病気... いやもとい本能のようなものだ。

時は移り、コンシューマー向けの Intel CPU は 第4世代になった。現在運用しているマシンの CPU は 第3世代 Intel Core i7 2600S なので、目移りに悩まされている。目移りするのはよいが、一体自分はどんなマシンを組みたいのか。そのポリシーを明らかにしなければいつまでたっても何も変わらない。そこで、現時点で組みたいサーバマシンのポリシーをここで明らかにしたいと思う。

絶対に譲れないレベルのものを挙げていくと、以下のようなものだろう。
遊びレベルなので、たとえばお金になる商売に使いたいとかいう動機はない。基本実験用。ただし、自分や友人に必要な最低限なサーバは運用する。そんな程度だ。 予算はちなみに最大15万程度である。

必須

a) CPU の TDP は 65W 以下必須。
  - 電気代厳しい。。
b) メモリは自分の予算が許す限り最大のものを。現状(32GB) 以上であること。
  - 現在、Non-ECC な DDR3 1333 なメモリ (8GBx4) を生かせれば最高。
c) SSD もできる限り容量が大きいもの必須。

任意

d) 業務レベルの遊びが出来るマザーボードであればよりよい。
  IPMI とか bonding

このポリシーに基づいて、転職してから半年以上目移りを続けている。最大の問題は Atom C2000 シリーズが発表 になり、TDP20W でありながらメモリが最大64GB載るコンシューマー向けのマザーボード が出てきたことにある。ただし、基本 ECC なメモリが必須(Non-ECCでも動いたという報告はあるが) であり、現状のメモリを生かしたいという要求に合わないのが悩みの種であった。Supermicro の選択肢 も非常に魅力的ではあるものの、やはり ECC が求められる。

そもそも 「32GB 以上のメモリを ECCなしで本番運用するのとかないわー」という失笑気味の反応が 自作サーバ同窓会 でも見られたのは事実なんだけど、そこは個人なんで、、ね(´ー`; )

今年に入って、もう TDP は諦めてもよいという気になった。そうなると有力な選択肢としてあがってくるのが Xeon である。TDP 90W 以下の低電圧版の Xeon もコア数を諦めれば最近は魅力的なものが揃ってきている。E5 2600番台とかを見ると、4コアで TDP 80W でありながら、3万円程度で手に入る魅力的なもの も存在している。これであれば、メモリが 32GB 以上載るマザーボードの選択肢はかなり広がる。Supermicro など、IPMI などが付いたマザーボードも選択肢に入り放題である。

ということで、散々続いた目移りは以下の構成で終焉を迎えつつある。

Intel Xeon E5-2609 v2 (TDP 80W) 2.5GHz
Supermicro X9DRD-7LN4F
 - Support ECC and non-ECC UDIMMs ということで要求を満たす。
 - GbE が 4port とか誰得なんでしょうね。
 - IPMI はまぁ Supermicro ですしおすし。

誰得としか思えないマシンが出来上がりそうです。2014年の 2Q までには完成させたいところ(*´~`)

2014-01-20 12:03:00 +0900

seq -w and zero padding

http://linuxjm.sourceforge.jp/html/gnumaniak/man1/seq.1.html
http://at-aka.blogspot.jp/2006/11/seq-0-padding.html

seq(1) ってコマンドラインから連番を作るときにとても便利だ。ただ、この値を0埋めしたいときがある。
その場合は -w オプションを付けろといろんなブログに書いてある。以下のような具合だ。

1
2
3
4
5
6
7
8
9
10
11
$ seq -w 1 10
01
02
03
04
05
06
07
08
09
10

けど、これは指定する最大値が二桁以上の場合だ。上記の 10 を一桁の値、たとえば 5 に変えるとうまくいかなくなる。

1
2
3
4
5
6
$ seq -w 1 5
1
2
3
4
5

これは -w オプションが最大の桁数に合わせて0埋めするためだ。だから、以下のようにすると同じように通用する。

1
2
3
4
5
6
$ seq -w 01 5
01
02
03
04
05

最初 -f オプションでフォーマットしようかと思ったのだけど、printf の %d を指定すると以下のように怒られる。
これは、数値を内部的に浮動小数点で扱っているためだった。 マニュアル にもしっかり書いてある。

1
2
$ seq -f "%02d" 01 5
seq: FORMAT `%02d' に不明な %d 指定があります

なので、g を指定してあげるとちゃんとうまくいく。

1
2
3
4
5
6
$ seq -f "%02g" 1 5
01
02
03
04
05

まあ、以下が一番スマートかなー、と思う次第(*´〜`)

1
2
3
4
5
6
$ seq -w 01 5
01
02
03
04
05

2014-01-08 22:28:00 +0900

Ebook DIY Example



電子書籍の自炊について社内で LT をしたので記録しておく。

このスライドには、「自炊代行業者は自分的にグレーゾーン」などと書いているが、はじめに調べた BookScan を見る限り、理屈の通った商売はしていると思う。だが、ユーザーに対して スキャンを頼む全ての著作物の著作権者への許可を求め 、「何かトラブルがあったら許可を取らなかったあなたが悪い」的なやり方が (理屈が通っているとわかってはいても) どうにも気に入らなかったので、自分は自炊業者を使う気になれなかったというのが本当のところだ。

そんなこんなでやってはみたものの、まあ後にも使えるノウハウが残ったのだから、自分的には別にいいや、という感じである。ただ本をバラバラにするという行為が、スライドを作っていてちょっと心が痛んだのも否定しない。だから、本当に後から紙で読み返したいと思う技術書については、やめとこうという気持ちになっている。

GNU Development Tools」や、エキスパートCプログラミング などがそんな本だ。電子化して読んだ方が気持ちよいと思うのもあるが、やめとこうという気持ちになる本もあるという点は心に留めておきたい。

2014-01-01 00:06:00 +0900

2014 new year

始まりました。2014年。いやっほう!ヽ(´ー`。)ノ
旧年はお世話になりました。本年もどうぞ宜しくお願いします(*´〜`)