Ruby

no configuration is good configuration

RubyKaigiでの田中さんのセッションの「Matzを説得する方法」の中で出てきた言葉。可能な限りシステムで自動調整させてユーザーの負担を減らすべし!ということだろう。

また名前にはものすごいこだわりがあって、機能ははっきりしていても名前が決まらないと実装されないらしい。

Ruby, 日記

RubyKaigi2008@つくば

週末はRubyのカンファレンスRubyKaigi2008に参加するために「つくば」まで来てる。つくばエクスプレスって早いですなー。朝は少し寝坊したものの、1日目はほぼすべてのセッションを聞いて懇親会まで参加。そして家に帰るのが面倒なのでビジネスホテルに宿泊。←今ここ

当日の詳しい様子は次をどうぞ。

RubyKaigi2008 スペシャル★レポート:RubyKaigi2008 1day Photoレポート[随時更新]|gihyo.jp … 技術評論社

松本さんの基調講演の質問タイムでささださんの「Matzにっきはどうしたのか?」の質問に会場から拍手。Rubykaigiのエントリーから再開するとかしないとか。

面白いという意味ではライトニングトークスが一番面白かったし感動したし共感した。他にはMacを使ってのデモをまじえてのプレゼンが異常にスムーズな人が何人かいてとても感動。

またメインセッションの会場で参加者(会場では無線LANが提供)によるまるでニコニコ動画のようなつっこみチャット(IRC)がメインのスクリーンの横の小さなスクリーンでリアルタイムで表示されていたのがかなり良かった。

懇親会では、いろいろな人に「仕事でRuby使ってますか?」と聞いてみたところ、「まずは社内システムから」とかやはりパフォーマンスで手こずるとかいろいろ。

というわけで今から朝ご飯食べて2日目に参加。

PC, 日記

そういえばATOK 2008 for WIndows買いました

以前、あおるだけあおっておいて買ってなかったATOK 2008買いましたよ。もう2週間くらい使っているのだが、インストールしてシステムと相性が悪くて不整合なんてことはまったく無く安定して使えている。

で、変換効率はどうなったかというと長年の文節単位で変換する癖がまだ直っていないので何とも評価しにくい。というわけで今このブログのエントリーを文単位で変換するようにしている。文単位でもほとんど誤変換無く変換してくれるのだが、文単位だと一度書いた文をまた先頭から見直す必要があるので、どうしても混乱してしまう。

ATOK的には長い文を一気に変換した方が変換効率が上がるのだろうが、やはり貧乏くさく文節単位での変換がいいのでは?と思ってしまう。

などと思っていたら上のセンテンスはノーミスで変換してくれた。すごいです!ATOK。これなら文単位での変換でもいいかも知らないと思い始めました。

ほかにも便利な機能としては、入力中に過去の履歴から予測候補を表示してくれてタブキーを押すとそれが入力できるのは、便利。たとえば「よろしく」まで入力すると「よろしくお願いします。」と表示されるとか。

またネット上のストレージに自分の変換記録を保存できる機能もあるのだが、これはストレージサービスが必要で315円/月が必要になるのでまだ躊躇している。

ATOK.com:どこでも同じ入力環境を実現するATOK Sync

これからは文節変換の癖をやめて文単位の変換に変えていこう!と思いました。

PC

Firefox3

インストールしてみました。描画はやっと思ったが、残念なことにブラウザー間でブックマークを同期してくれる愛用アドオンのGoogle Browser Syncが対応していない。しかもサポートも年内で切れるとのこと。

Google Browser Syncは2008年で終了、後継はMozilla Weaveが有力 | エンタープライズ | マイコミジャーナル

Firefox2を別のディレクトリにインストールして使っているが、はてどうしたものやら。ちなみにFirefox3が入っているところにFirefox2を上書きインストールするとまずいらしいので、別のディレクトリに入れるといいとのこと。

Firefox3 – Firefox更新情報 Wiki*

ゲーム

メタルギアソリッド4 1周目コンプリート!

1周目完了。難易度はNAKED NORMALでプレイ時間は28:46:10。ちなみにNAKED NORMALは欧米版のEASYらしい。今までのシリーズをやった人は一つ上のSOLID NORMALぐらいがちょうどいいのでは?というのをネットで見かけた。

感想としてはやっぱりメタルギアソリッドはすばらしいの一言に尽きる。シナリオ、システム、キャラの動き、音楽、ゲームバランスのどれをとっても情熱と手間暇かけて作ったということがビシバシと伝わってくる。

例によってムービーが長いが高解像度で見ても十分耐える高品質さで人間の動きもかなりリアル。ストーリー重視の人はかなり楽しめるかと。ただ、前作のメタルギアソリッド1~3の謎をすべて解明!ということで、「ほう!」と思う反面、ちょっと説明が長すぎる気がした。

私は今までシリーズの2,3はやったのだがPS1のシリーズ1はやっていない。が、それでもシリーズの2,3で出てきたキャラが次々と出てくるのはとても嬉しかった。もちろん今回の4からという人にもちゃんと楽しめるようになっている。また今回のMGS4をきっかけにもう一度2,3をリプレイしてみたくなった。

メタルギアソリッド3のときにも書いたが、メタルギアソリッド4も日本が世界に堂々と誇れるエンターテイメント・コンテンツだと思う。PS3を持っている人はおすすめの一品ですよ。

ゲーム

メタルギアソリッド4

前に書いたようにXbox360版のMGS4が出るという噂を根気よく待っていたのだが、6/12(木)の発売日になってみてもいっこうにそんな噂は流れてこない。

大徳日記 » MGS4とXbox360とPS3と私

それでも、なんとか我慢していたのだがTwitterでのさいとさんの「MGS4が発送された」というつぶやきを見て、とうとう我慢できなくなりAmazonでプチッとクリックしてしまった。本当はクリアーブラックが欲しかったのだが無くなっていたのでサテンシルバー。

ワクワクしながら開始する。まだ少ししか進んでいないが画像もリアルでとても出来だ。ただMGS3と比べて圧倒的にいいかと言われると20%とか30%増しぐらいなのでは?という感じ。私の好みが画質よりもゲームとしてのクオリティ、特にストーリー性重視というのもあるのかも知れない。PS2のACE COMBAT 5が、数段画質が向上したXbox360のACE COMBAT 6より面白かったのが思い出される。

それにしてもACE COMBAT 6がXbox360限定供給だからとXbox360を買い、MGS4がPS3限定供給だからとPS3を買っている私は完全にメーカーの策略通りだ。

さて、Xbox360とPS3はほぼ同じタイトルが出る(特に私が好きなFPSの類は)のでどちらかで十分な気がする。というわけでXbox360はヤフオクで売ろうと計画中な今日この頃である。

日記

手作り餃子も作ってみました!

前のホームベーカリーの日記へのコメントで「餃子の皮は作れるのか?」と聞かれたのでやってみました。参考にしたのは次のサイト。

手作り餃子★ホームベーカリーで皮作り~★ – きままなレシピ日記~趣味のお料理研究所~ – 楽天ブログ(Blog)

これによると皮の材料は40個分で、

強力粉    200g
薄力粉    100g
塩    小さじ1/2
熱湯     180cc

なのでそれぞれ半分で作成(20個分)。材料をホームベーカリーに入れてパン生地のコースを選んで開始し、最初の「ねり」が終わったところで停止するとそれらしきものが出来た。

で、次のレシピを参考にして具を作り皮に包んで焼くと

キャベツで焼き餃子 – 料理レシピ | E・レシピ

なんだか餃子らしきものが完成。写真の盛りつけはやる気0ですが…。今回の一番の失敗は皮だけどんどん作って皿に積んだこと。あとで具を包もうとしたらがっちりくっついていて結局またくっつけて皮を伸ばす羽目になった。市販の皮を使って餃子を作ったこともない割にはそれなりにちゃんと出来たのには感動。銀河高原ビールと一緒においしくいただきました。

皮の包み方は、次を参考にしたがちょっと難しい。今度は市販の皮でやってみようかね。

日記

最近のホームベーカリーいけてます!

インプレスの渋いニュースサイト「家電Watch」で次の記事を見つけて欲しくなったのがナショナルのホームベーカリーSD-BH101だ。

コラム: 【新生活特集】結婚しても使える“最高ランク”の調理器具3点セット

この記事には次のようにある。ここまで書かれるといつか欲しくなるというものである。

1つ目の製品の「ランク」の話に関連するが、2つ目の理由は、ホームベーカリーは1万円代で民生用のパン焼き機としてトップクラスの製品が購入できるということだ。これは食べられずにはいられない。

あくまでも私の実感に基づく表現だが、ホームベーカリーで作った、正真正銘、今まさに焼き上がった、というパンの味は、「焼きたてです」の札がついた、パン屋のパンを遥かに超える。私など、この味にひとしきり慣れるまでは、バターもジャムも付けずにひたすらむさぼり食っていたくらい、「今まさに焼き上がった」パンの味は、買ってきたそれとは違う。

早速、通販でポチッとこのホームベーカリーを買って作ってみた。焼きたてだとたしかにバターなどをつけなくてもおいしい。あまりにおいしいので朝から切って食べてを繰り返しているとすぐに半分ぐらい無くなってしまう。もちろんトーストにしてもおいしい。

作り方も簡単で小麦粉(強力粉)、砂糖、塩、バター、牛乳を計って入れてセットすると勝手に作ってくれる。イースト菌は乾燥した粉のドライイーストだがこれも専用のポケットに入れておくと勝手に投入してくれる。また計るのも面倒という人には必要な材料が全部あらかじめパッキングしてあるパンミックスなるものもある。

またドライイーストではなく、天然酵母からパンを作ることも出来る。欠点としては1週間しかもたないパン種を作るのに24時間かかるわけだがこれも放っておくと出来るのでたいした手間ではない。天然酵母パンは、ドライイーストと違ってバターと牛乳が不要になるのでカロリーも少ないはずだ。それに天然酵母パンの方がもっちりとしておいしい。

さらにステキなのはパン生地やピザ生地を作れることだ。さっそく薄焼きピザを作ってみたがかなりおいしく出来た。具材を自分で選べるのもいい。前に一緒に仕事をした人が「ピザほど家で作るとレストランに比べて安くできるものはない!」と言っていたが確かにその通りだと思う。

さてこのホームベーカリーの注意点としては、始めるときはかならずかき混ぜる「パン羽根」を装着することだ。これを忘れるとおいしい焼きたてのパンの代わりに奇妙な物体とご対面する羽目になる。

これだけ楽しめて2万円しないというのはかなりお得なアイテムだと思う。でもまあこれだけ書いといてアレだがやっぱり朝はご飯と味噌汁と納豆が一番というのは変わらないです、はい。

自宅サーバー

My OS is still alive!!

前のエントリーで間違ってイメージを消してしまった私のXenのサーバーイメージだが、なんとまだ動いている。腑に落ちないのでちょっと調べてみたところUNIXでは誰かがオープンしているファイルを削除した場合、削除のシステムコールは成功するものの実際にファイルシステム上で削除されるのはオープンしているすべてのファイルがクローズしたときとのこと。これに対してWindowsではオープンしたプロセスがロックをとるので、オープン中のファイルを削除しようとすると「削除できません」というメッセージが表示される。

で、下のリンクのようにクローズする前ならサルベージする方法もあるのだが、loopbackデバイスのためかオープンしているプロセスを見つけることができない。

Open Tech Press | 削除したファイルをlsofで復元する

losetupコマンドでループバックデバイスにひも付いているイメージファイルのi-node番号も分かっているんだけど、復活させる方法はありそうでなかなかありそうでない。i-node番号をもとにハードリンクを作るとうまくいきそうなのだがlinkシステムコールの引数はファイルのパスのみだし…。

すでにバックアップからのイメージで動いているのでサルベージする必要もないわけだが、なんか気になる今日この頃です。

自宅サーバー

Dead OS Running

あり得ないミスなのだがこのサーバーをホスティングしているXenのディスクイメージ(Domain-0上のフラットファイル)をうっかり削除してしまった。ちなみにこういう人為的なミスに対してはRAIDは何の役にもたたない。こんな致命的なミスは学生時代に自分のホームディレクトリーを”rm -rf”で消した時以来である。その時は、管理者に泣きついてテープの日次バックアップから戻してもらったが、今回はサーバーのイメージはVMwareから移行した際の昨年末のイメージしかない。

ブログのエントリーなど半年分全部ロストか?と思いながら、死んだはずのVMにアクセスしてみたらディスクイメージを消されたにもかかわらずいまだに動き続きている。「しめた!」と思い、まずはそのディスクイメージが入っていたファイルシステムにこれ以上書き込みが起こらないように、Sambaサーバーなどを停止。そして半年前のイメージの別のDomain-UのVMを作り起動し、aptitudeでソフトを自動更新したあと、rsyncでなぜか動いているサーバーとWebのコンテンツや設定ファイルなどを同期させた。で、動いているのを確認してルーターの設定を新しいVMに振り替えた。←いまここ

不思議なことに一晩たったあとも、死んだはずのVMはまだ普通に動いている。Domain-0のカーネルからのloopbackデバイス経由のアクセスはファイルが消えても検知されない仕組みになっているのだろうか?

もちろんシャットダウンしたら二度と起動しないことは確実である。まさにDead Man WalkingならぬDead OS Runningである。このOS動かせ続けてもいいのだが、ファイルシステム的には解放されている領域を読み書きしてるからなるべく早くとめたほうがいい。なので、しばらくして新VMへの同期を確認したらシャットダウンする予定である。これはOSの安楽死なのだろうか?

iPhone, 日記

キタ━━━━━━(゚∀゚)━━━━━━ !!!!!

ええ、買いますよ。買いますとも!!

3G対応iPhoneは6月発表でソフトバンクモバイルから発売か – GIGAZINE

仮想化, 自宅サーバー

DebianのXenカーネルのアップデート

以前書いたように、DebianのXen環境でこのサーバーを運用しているわけだが、aptitude dist-upgradeでは更新されないようなので、カーネルのアップデートは手動で行う必要があるようだ。

大徳日記 » Xenに移行しました。

方法は簡単でまずはXenのカーネルを探してみると

$ apt-cache search xen-linux-system
xen-linux-system-2.6.18-4-xen-686 – XEN system with Linux 2.6.18 image on i686
xen-linux-system-2.6.18-4-xen-vserver-686 – XEN system with Linux 2.6.18 image on i686
xen-linux-system-2.6.18-5-xen-686 – XEN system with Linux 2.6.18 image on i686
xen-linux-system-2.6.18-5-xen-vserver-686 – XEN system with Linux 2.6.18 image on i686
xen-linux-system-2.6.18-6-xen-686 – XEN system with Linux 2.6.18 image on i686
xen-linux-system-2.6.18-6-xen-vserver-686 – XEN system with Linux 2.6.18 image on i686

とリストされるので最新版のxen-linux-system-2.6.18-5-xen-686をDomain-0とすべてのDomain-Uインストール。
(追記)下のコマンド間違っていたので修正しました。

$ sudo aptitude install xen-linux-system-2.6.18-6-xen-686

そして/etc/xen/サーバー名.cfgを編集して新しいカーネルに変更

kernel = ‘/boot/vmlinuz-2.6.18-6-xen-686′
ramdisk = ‘/boot/initrd.img-2.6.18-6-xen-686′

これでDomain-0を再起動(当然Domain-Uも再起動)すると、まったく問題なくバージョンアップしていた。

日記

Facebook始めました

もう先週になるのだが、大学時代にお世話になった先輩とmixiを通じて10年ぶりに連絡をとりあって飲み、10年という時間を忘れて楽しく飲んだ。その節はどうもです。いやはやインターネットで世間は狭くなったもんだとしみじみと感じました。mixiの日記やブログなどは、年に一度「お元気ですか?また飲みましょう」と一行だけ書いた年賀状などよりよっぽど近況報告になるかと思います。

さてFacebookが日本語でもサービスを始めたのでさっそく始めてみたら、予想通りのEarly Adapterな知り合いを発見。友達登録をしてもらいつつTwitterでそのことをつぶやいたら、「日本語でサービス始まったらやはりみんなやってきたな」とのこと。

まだ少ししか使っていないのだが、出身大学や登録した友人などの情報から「この人もあなたは知り合いではないのですか?」などとリコメンドしてくる。A,B,Cの3人がいて、AとB、BとCが知り合いだったらそりゃAとCも知り合いだろうというロジックだろう。Amazonのリコメンドに似ている。

Facebookが日本でどこまでmixiに迫れるのかはちょっと見ものです。

Rails

mod_rails試してみました。

以前、書いたようにRailsアプリの実行環境を作るのはいささか面倒だ。PHPアプリのようにサーバーにアップするだけでは動かず、ちょっと面倒である。

大徳日記 » Railsのアプリの実行環境について調べてみました

が、最近Passenger(mod_rails)なるものが出てきて話題になっているので試してみた。インストールに参考にしたのは次のページ。

Rails 2.0 » ホスティングサービスでもRailsが利用できるようになるかも、な「Passenger」

LoadModuleの設定などを書いておけばあとは簡単だ。仮想ホストのドキュメント・ルートがrailsアプリのpublicディレクトリーになっていればそれでOK。またサブディレクトリの場合も、

<virtualhost *:80>
ServerName www.phusion.nl
DocumentRoot /websites/phusion
RailsBaseURI /rails # This line has been added.
</virtualhost>

としておけばOKである。上の例では/railsがrailsアプリのpublicディレクトリーへのシンボリックリンクになっている。詳しくはマニュアルにある。

Passenger users guide

さてここで疑問に思ったのが、「じゃあ、仮想ホスト毎に1つのRailsアプリしかホスティングできないのか?」ということ。RailsBaseURIを2つ以上指定してもちゃんと動くのか実験してみた。hogeとpiyoという2つのRailsアプリを2つ作ってそれぞれx,yのサブディレクトリにリンク。apacheの設定は次の通り

RailsBaseURI /x/rails
RailsBaseURI /y/rails

さっそくブラウザーでアクセスしてみるとちゃんとどちらも動いていた。すかさず直前のエントリーのコメントでさいとさんに教えてもらった方法でruby1.8のプロセスを見てみる。

UID PID PPID C STIME TTY TIME CMD
root 11021 11020 0 16:51 ? 00:00:00 Passenger spawn server
root 20271 11021 3 22:23 ? 00:00:00 Passenger FrameworkSpawner: 2.0.2
daitoku 20272 20271 0 22:23 ? 00:00:00 Passenger ApplicationSpawner: /home/daitoku/work/hoge
daitoku 20274 1 0 22:23 ? 00:00:00 Rails: /home/daitoku/work/hoge
daitoku 20281 20271 0 22:23 ? 00:00:00 Passenger ApplicationSpawner: /home/daitoku/work/piyo
daitoku 20283 1 0 22:23 ? 00:00:00 Rails: /home/daitoku/work/piyo

rootで動いている上の2つのプロセス(11021と20271)はトップレベルで各アプリ毎に振り分けるためのサーバーなのだろう。で、1レイヤー下に各アプリ毎に振り分けるサーバーがいてそれぞれhogeアプリが20272、piyoアプリが20281ぽい。で、実際にリクエストを処理するのが20274と20283なのではないだろうか?

ためしにabでhogeに対して5並列の負荷をかけてみると、案の定Rails:で始まるプロセスが増えている。1つ多く6プロセスなのは余分に1つ立ち上げているのだろう。

UID PID PPID C STIME TTY TIME CMD
root 11021 11020 0 16:51 ? 00:00:00 Passenger spawn server
root 20271 11021 0 22:23 ? 00:00:00 Passenger FrameworkSpawner: 2.0.2
daitoku 20412 20271 1 22:29 ? 00:00:00 Passenger ApplicationSpawner: /home/daitoku/work/hoge
daitoku 20414 1 12 22:29 ? 00:00:00 Rails: /home/daitoku/work/hoge
daitoku 20418 1 5 22:29 ? 00:00:00 Rails: /home/daitoku/work/hoge
daitoku 20421 1 7 22:29 ? 00:00:00 Rails: /home/daitoku/work/hoge
daitoku 20423 1 1 22:29 ? 00:00:00 Rails: /home/daitoku/work/hoge
daitoku 20425 1 3 22:29 ? 00:00:00 Rails: /home/daitoku/work/hoge
daitoku 20434 1 21 22:29 ? 00:00:00 Rails: /home/daitoku/work/hoge

さらにこの状態で5並列でpiyoにも負荷をかけてみたら、別途piyoも6プロセス起動した。長くなるのでプロセス一覧は割愛するが、hogeのrubyプロセスはhogeの処理だけ、piyoのrubyプロセスはpiyoの処理だけ行うということが判明。うまくして1つのRailsプロセスがhogeもpiyoも処理できるようにするとすごいかも。

いやいやmod_rails便利です。

日記

ps+grepのTipsに感動した

ひさびさに目から鱗(うろこ)が落ちました。たまたま見つけた次のサイト。

clmemo@aka: ps + grep の Tips

よくサーバーが起動しているかどうか確認するときにpsコマンドで見るじゃないですか。たとえばapacheのプロセスが起動しているかを見るときは

$ ps alx | grep apache
5 33 11347 11020 15 0 158848 2056 341702 S ? 0:00 /usr/sbin/apache2 -k start
5 33 11352 11020 16 0 183436 2132 341162 S ? 0:00 /usr/sbin/apache2 -k start
0 1000 12296 17847 18 0 4956 792 – R+ pts/4 0:00 grep apache

などとするのですが、こうすると運が悪いとgrepのプロセスもリストに入ってきます。で、上記のサイトで知ったTipsは”grep apache”ではなく”grep [a]pache”とすること。実際にはシェルが展開するのを防ぐため「”」でクォートする必要があります。

一瞬、「そんなことしてもapacheも[a]pacheも正規表現的には同じなのでどっちみちgrepプロセスは引っかかってくるよ。」と思いましたが、やってみると確かにgrepプロセスが引っ掛からなくなっている。で、しばらくして「あっ」と気付きました。

そうです。”grep [a]pache”とやるとpsコマンドの結果にも”grep [a]pache”と表示されるので”grep apache”にも”grep [a]pache”にもマッチしません。

ちなみにいつもは”ps alx | grep apache | grep -v grep”などとやってましたがタイプが面倒なので脳内で消していました。横着者の私としてはこれで「”」がなければ完璧なTIPSなのですが…。

ブログ

WordPress ME 2.2.3からWordPress 2.5 日本語版に移行

WordPress MEが開発を中止したので、本家のWordPress 2.5日本語版に移行しました。参考にしたのは次のサイトです。アップグレードは特に難しいことはなかったのですが、プラグインが使えないものがあるそうでこれらはまたひとつづつ検証していく必要があります。

» WordPress ME 2.2.3からWordPress 日本語版 2.5に移行: たにもりのもり

管理画面はかなり変わりました。見た目はクールです。使い勝手はこれからおいおいですな。

(追記)今まで使用していたプラグインは最新版を落としてきたらすべてちゃんと動きました。

  • WP-Syntax: ソースコードの表示のハイライト。rubyも対応してるよ。
  • WP-SpamFree: スパムコメントやスパムトラバをシャットアウト。
  • WP-Amazon: アマゾンのアソシエイトプログラムのリンクをお手軽に作成してくれる。

マネー, 書評

賢者の海外投資術

お金入門の本などを読むと大体、ほとんどの投資信託は猿にダーツを投げさせて選んだポートフォリオ(ランダムに選んだポートフォリオ)の運用成績を上回ることは出来ない、だから素人はTOPIXやダウ平均株価に連動する投資信託(インデックスファンド)を買うべし!などとある。では、どの国のどの投資信託を買えばいいのか?という素朴な疑問にこの本はおよそ60ページの第1章で答えてくれる。

少額の資金しかない個人投資家でも、IWRD(SPY+EFA)80%+EEM20%、もしくはTOK75%+EEM25%で世界の株式市場をほぼカバーできる。このポートフォリオはプライベートバンクの一任勘定とほぼ同じで、運用報酬ははるかに安い。長期的にはそのコスト差によって、「富裕層だけが投資出来る特別なファンド」のパフォーマンスを上回るだろう。

ここで出てくるSPYやEFAやEEMは、ETF(上場投資信託)と呼ばれる物でその名の通り実際にアメリカの証券市場に上場されており、まるで株のようにいつでも売り買い出来る上、普通の投資信託に比べて信託報酬も安くこの本でも庶民の味方としている。

というわけで、まずは親や親戚から頂いた娘の出産祝いを銀行の定期預金にするかわりにetradeに娘名義で口座を開いてみた。まだまだ金額としては全然少ないが目指しているのは、よくドラマなどで主人公がどうしてもお金が必要なときにお母さんが「本当は結婚するときに使うつもりだった」などといいながらタンスの奥からとりだしてくるアレである。イー・トレードでは親も口座を開くことを条件に未成年でも口座は開けるのでさっそく開いてみた。

後は入金して、そのお金でドルを買って、そのドルでTOK75%+EEM25%を全額買うだけだ。イー・トレードはTOKもEEMも取り扱っている。ちなみに費用はドルを買うときの為替手数料が1ドルあたり25銭でETFを買うのがそれぞれ25ドルの計50ドルである。どうせ50ドルかかるのなら少し足してもいいかも知れない。

これでいくらか儲かるなら1章の内容だけでも安い本だが、2章以降もエマージングへの投資、FXのしくみ、ヘッジファンド、タックスヘイブンなど分かりやすく解説しており、私もいくつか目から鱗がおちた。株はやっているけど国内ばかりでそろそろ海外投資という人におすすめの一冊です。

仮想化, 自宅サーバー

Amazon EC2試してみました

Amazonがやっている仮想レンタルサーバーEC2(Amazon Elastic Compute Cloud)を試してみた。普通のレンタルサーバーが月いくらの課金なのに対して、EC2は1時間あたり10セントの時間課金だ。サーバーで動かすOSはFedoraなど出来合いのものもあるが、信用ならんという人は自分のイメージを送ることもできる。私はDebianを動かしたいのでこのページを参考にしてDebianのミニマム・インストールイメージを転送して動かしてみた。マイ・イメージを動かすまでの手順は認証の鍵などの使用がやや煩雑だが大したトラブルもなく稼働に成功。ちなみにEC2についてはWEB+DB Vol43が詳しい。

さっそくsshでリモートログインしてみたがやはり海外にあるサーバーということでコマンドラインからの操作もちょっと遅延がある。が、通常の管理作業をするぐらいならまあ問題ないレベル。Webのホスティングなどでも許容範囲内かと思う。

さて、この実験でこのブログをホスティングしているwww.saitoudaitoku.comのXenイメージを自宅サーバーからEC2に移動させても動かせることが確認できた。また以前は、IPアドレスが動的という問題があったが、その問題も最近固定アドレスも使えるようになった。

問題は、0.1 x 24 x 30 = 72ドル/月という値段だ。常時動かすサーバーを無くせるのは魅力だが、それでもやっぱりローカルのファイルサーバーは欲しいし、自宅のブロードバンドを解約するわけにもいかないし、考えてみるとあまりお金は浮かない。趣味でやっている自宅サーバーを完全に移行する金銭的にはあまりメリットはないように思う。

ただOSのイメージを送るといつでも時間課金でホスティングしてくれる環境があるのは非常にうれしい。たとえば引越しのときなど必ずダウンタイムが生じていたが、これからはEC2を使って引っ越し時やプロバイダーの切り替え時のバックアップとして使えば、ダウンタイムを無くす事ができる。

ただこの私のサーバー、ダウンタイムがあってもあまり問題にはならないのが問題ではある…。

Rails, REST

第1回RESTful本読書会

RESTful本でプレゼントが当たったからというわけではないが、RESTful読書会に参加してきました。本当はプレゼントのTシャツを着て行きたかったのだが風邪ぎみなので断念。が、私の他にもプレゼントをもらったt-wadaさんはばっちり着てきてました。さすがです。

今回の範囲は、1章、2章、3章だったがみんないろいろ熱い議論をしたくて集まっているだけあって1章からスパークしていました。以下、今回の収穫と感想。

  • 監訳者の山本さんのRESTful本へのサイン
  • RESTful本を読んだら、次はWEB+DB Vol42の鼎談(ていだん)を読むべし。動画もあるよ。
  • 2章のサンプルは横着せずちゃんと写経して自分で動かしてみると理解が進む
  • PHPの人が多かった

また会場にはもちろんRESTに肯定的な人が多い中、その中でも客観的な分析をしていたkdmsnrさんの意見が興味深かったです。

残念ながら次回は仕事で参加できない予定。RESTは最近なにかと話題になっているもののまだまだで、これらどのように発展していくのかが楽しみです。

Ruby

久しぶりのPerl

仕事で久しぶりにPerlのスクリプトを書きました。最近は仕事でも自分しか使わないスクリプトは全部Rubyで書いているのでちょっとリハビリが必要。以下、当たり前ですが、

  • ステートメントの最後にセミコロンが必要
  • 変数、配列、ハッシュには$, @, %が必要
  • 空の配列作成は()は、無名配列は[]
  • オブジェクト指向でないので join(“,”, @array)なのかjoin(@array, “,”)なのか悩む

ここを参考にしました。

TeriyakiWiki – 言語文法比較

まったく容赦なくセミコロンが抜けまくりです。が、すぐに勘が戻ってきました。ふー。