2013年8月29日木曜日

34歳( ゚д゚ )

去る8月24日に34歳になった。
34...
34...
来年は四捨五入したら40....( ゚д゚)
愕然とする。よくある人生のイベントをこなしていないから、余計に。

それはさておき、誕生日の前日は最終出社日でもあったので、例年は特になんもしないのだけど今回は祝ってもらうなど。(お疲れ様でした兼誕生日祝い)

24日当日はランニング後フーターズ。誕生日なひとにはケーキ1コ無料!ということでアメリカンチェリーパイを選択。デコレートされた皿にケーキがキャンドルたてられて登場。
その後、記念撮影で一緒に行った5人とフーターズのお姉さん3人とでパシャリ。
祝われ慣れてないのでやや気恥ずかしいものの、なにか人にしてもらうってのもいいものだ・・・。



昨日は別枠で飲み。魚がうまい店。素晴らしい。
帰る前に思いがけずプレゼントを貰った。普段キーボードをしばいてるから手をいたわってね、という。チューブ裏側に書かれている説明をみると、help condition cuticles and nails とあるので爪にも良いみたい。突如爪が割れることがまれにあるのでこれは嬉しい。


さて、もうちょっと人生のイベントをこなさないとな・・・と思った。

初 Android & 初タブレット端末 - Nexus 7 (2013)

nexus 7

ここ一年くらい iPad か Android なタブレットかと決めあぐねていて、2012年年末には iPad mini がでてぐらっときたもののまだ時期ではないかなぁと思いとどまったりしていた。
2012年モデルの Nexus 7 はちょっと触ってみたことあったのだけど、思ったよりごつい感じ、価格は魅力的なのだが・・・と思いこれも見送っていた。

去年買った Kindle Paperwhite は小説など、いわゆる「読み物」以外はなかなか読みにくいと感じたので電子書籍用端末としての役目をどれに負わせるかなぁと思いながら、ホイホイとあれこれ買って試せる富豪ではないので、よさそうなのがでるまで待っていた。

そんな中で、2013年モデルがでるという情報がでてきた。軽くなり、サイズは小さくなり、順当に(?)解像度他スペックがアップ。これに決定!し、日本での発売を待っていた。
Amazon で 8/27 に注文して 8/29 に到着。日本円での価格設定はちょっと高めな気がするな。。

初 Android なので勝手がよくわからん・・・。もそもそいじっていたらシステムアップデートがあったのでとりあえず実行。
ビルド番号をトントンしてたら開発者向けオプションが使えるようになったけど使う機会あるかは疑問。

ひとまず Kindle, Dropbox, Evernote, Twitter, Hulu などてきとうにインストール。
Android の場合はなにかしらアンチウィルスなアプリでも入れとかないとなのかな。

2013年8月19日月曜日

leaving a social gaming company

8月の或る日が最終出社(まだ迎えてない)、で9月の中頃で会社を辞め、同じく9月の中頃から新職場。
当初9月頭からのつもりだったけど、有給消化含んだ退職日の調整が難航してこのように。

退職の理由はいろいろな思いの結果ではあり一言では言えないのだけど、そのうちのひとつとしては松信さんのこのエントリもきっかけかな。

Open database life: インフラエンジニアのキャリアとクラウドについて

4月の時点で丸三年がたっていたので、このエントリ以前にも同じようなことをボンヤリと考えてはいて、今後どうしようかなと思っていたところだった。結構時間が経ってしまったが・・・。
正直な所、ここには書くのを憚られる瑣末な理由もあったりはするけども。

次行くところを親しい同僚に伝えた反応としては、「以外」だったり、ここのところの業績やひとときの勢いは失っていることから、反応に困っていたりも。はは。

何名かからは「某社行かないの?」とも言われたけど、その発想は全くなかったので現時点では縁が無かったということ。機会あってタイミングあえば、ね。

さて、しばし休んで新天地へ臨みたい。

2013年8月14日水曜日

GRUB2 と戯れる

結果から:
(Ubuntu で)
・/etc/default/grub の GRUB_HIDDEN_TIMEOUT 行と GRUB_HIDDEN_TIMEOUT_QUIET 行をコメントアウトする
・/etc/grub.d/00_header の make_timeout 関数内の set timeout= を 0 にしないこと
・・・以上をしておいた上で  update-grub2 実行 => GRUB のメニューを常に拝める。

ある仮想アプライアンス(中身は Ubuntu 11.10+いろいろカスタマイズ)をなんとかしてよ、と、最後のタスクとして「ちゃんとバックアップをとっていない」状態を解消することに。
利用者は多いんだけども、一度稼働しはじめたあとはあんまり手を加えられてない状態。(アプライアンスだから手を加える余地はあまりないというのはある)


元の状態としては

active 機 - バックアップ

の2台。active は仮想アプライアンス、バックアップはバックアップ取得目的のみ、で仮想アプライアンスではない別のふつうの(?)EC2 上の Linux サーバ。

で、バックアップをするものとしては
・MySQL
・Redis
・Git リポジトリ

の 3つだけで、MySQL はいまのところ mysqldump & gzip するのが 200MB にも満たない、Redis の dump.rdb はほんの数MB。
しかし、Git リポジトリは100GBある。

仮想アプライアンスに用意されている専用のコマンドでは Git リポジトリのバックアップは tar でディレクトリをまるごと固めるようになっているので、あまり気楽にバックアップができない。(標準では root を利用できないため、この専用のコマンドを使う必要があるのだ)
MySQL の場合は --single-transaction がついていないので怒りの unicorn がでたりもする(らしい)

というわけで、Git リポジトリのバックアップは rsync でしよう、ということになり

active 機 - バックアップ - standby 機

の 3台、active 機から standby 機への直接のバックアップではなく、間にバックアップをかませる形にした。active 機と standby 機が仮想アプライアンス。
間になんで EC2 つかうねん、と思うけどこれまでの諸事情によりこのような構成となった。

また、前述のとおり root を利用できないため、 standby 機では root を利用できるように事前にごそごそ。。

と、ここでようやく GRUB2 の話になる。

仮想アプライアンスでは Ubuntu 11.10 が使われており、本来なら起動時に shift を押すことで GRUB メニューが出、recovery mode を選択できるはずだった。(かなりまえ、サポートに問い合わせしてもらったときも recovery mode はいれるよん!と回答がきていた覚えが・・)

でも、でない。どうしてもでない。

・素の Ubuntu 11.10 だとどうなるのか
・セットアップしていない状態の仮想アプライアンスだとどうなるのか
・セットアップ後の仮想アプライアンスはどうか

をくまなく調べた。
すると、どうもセットアップ後にはでてくれなくなる模様。

Google を頼りにしてみると、ふつうは
・GRUB_HIDDEN_TIMEOUT 行と GRUB_HIDDEN_TIMEOUT_QUIET 行をコメントアウトする
これで update-grub2 しておけば GRUBメニューがでるよ、とあちこちでみつかる。

その通りにしてみると、未セットアップ時には期待通りの動作、セットアップ後はメニューがでてこない。

他 GRUB 周りのファイルをセットアップ時に変更かけてるんだろな〜と思い、/boot/grub/grub.cfg, /etc/grub.d を別名で保存しておいてセットアップ後に diff。

すると、/etc/grub.d/00_header が書き換えられてることがわかった。

この仮想アプライアンスは設定を保存するたびに chef-solo が走るため、 /etc/grub.d/00_header を書き換えてる cookbook を発見後修正し、make_timeout 関数内の set timeout=0 が set timeout=5 になるようにした。

これで無事、起動時に GRUB メニューをタイムアウト5秒で拝めるようになり、必要な際は recovery mode に入ることもでき、root アカウントでごにょごにょ。。することができるようになり、rsync でバックアップ機にもってきた Git リポジトリも standby 機に展開できるようになった。

あれこれ調べてて思ったのが、この仮想アプライアンスはよくできてる。うん。ちょっとした問題がおきてるので、まだ枯れてない感じはするけども。

起動時に TUX を見なくなったのはいつからだったんだろう・・・。

この仮想アプライアンスをおさわりするにあたり参考にしたサイト(GRUB2 まわりではない):
DeNA https://speakerdeck.com/ta999ma/gree-techtalk-0123-takumayoshida/
ドリコム http://www.slideshare.net/takafumionaka/is-there-anynecessityofusinggithubenterprise
GREE https://speakerdeck.com/koichiro/github-enterprise-troubleshooting
ふっふはっほ https://speakerdeck.com/takai/github-enterprise-integration-with-aws
はてな https://speakerdeck.com/hakobe/namerakanigheniyi-xing-surufang-fa
上記一覧可能 https://event.atmarkit.co.jp/events/847c33a804682aea8b4596e790802343/materials

2013年8月10日土曜日

ピアソンの件

原書をほいほい読めるようになっておくといいんだろうなと思った。
読んでおきたかったやつ2冊あったので買っておいた。Amazon だと品切れだったので honto で。
YAGNI 原則には反するけど気にしない。

しれっと「実は取り扱いが継続されるんですよねー」となるといいんだけどもね。

達人プログラマーは Kindle版の原書を Amazon 0円祭りで買ってたのでこれを気合でよむんだ。たぶん。

2013年8月4日日曜日

Advanced Programming in the UNIX Environment, 3rd Edition

がでていたのがやや話題に。http://www.apuebook.com/


・・・実は、6月に何かでセールを知り、informit のサイトで ebook 版を $ 29.99 で買っていた。

以前、2nd Edition を社内の自グループで輪講するかー、と始めてみたものの頓挫してしまった。知らないから日常の業務に支障があるものではないし、C だし、やる気も出ないかな・・。知っておいて損はないはずなんだけども。
本書よりかなり易しいと思う Working With Unix Processes でもそんな感じだったし。。(´ヘ`;)ウーム…
というわけでひとりでちょいちょい読み直す方向。

2版同様、日本語版はでないんじゃないかなと思う。
ページ数多い、下手な訳でマサカリとんできて「原著を読め」となる、なら日本語版欲しいひとあんまいなくなるよねと。

Preface に書いてある following platforms は以下のとおり。
・FreeBSD 8.0
・Linux 3.2.0 (the Ubuntu 12.04 distribution)
・Mac OS X 10.6.8
・Solaris 10

2nd Edition の時から変わった点
STREAM というのがふんふん、、と書いてあって
・Linux は STREAMS をベースに含まなくなった
・Solaris 10 は STREAMS あるけど Solaris 11 は別の実装
・Mac OS X は STREAMS をサポートしない
・FreeBSD も

2nd Edition だと Linux 2.4 をカバーしてて、3.2 にアップデートしたのだけど、この2つで大きな違いは threads subsystem だよと。 (2.4 => 2.6 で NPTL になったので)

3rd Edition だと70以上の新しいインタフェース、 asyncronous I/O 、spin locks、barriers、POSIX semaphore などなどを含んでるよ、と


2nd Edition (2005年出版)の Preface も書かれているので、それと合わせてみてみると、カバーしている OS は
・FreeBSD: 5.2.1 => 8.0
・Linux: 2.4.22 (the Mandrake 9.2 distribution) => 3.2.0 (the Ubuntu 12.04 distribution)
・Solaris: 9 => 10
・Darwin: 7.4.0 (Mac OS X 10.3) => 10.8.0 (Mac OS X 10.6.8)
という変わりっぷり。