2011-10-04(火) [長年日記]
■
プランク・ダイヴ (ハヤカワ文庫SF)(グレッグ・イーガン)
「もう電子書籍でなきゃ新刊なんて買わねーよ!」といきがってみたところで、イーガンの新刊には勝てないのがSF者の性であろうか。いやいいんですけどね、大満足ですし……。
日本オリジナル短編集ということで、イーガンの日本での人気はよっぽど高いのだろうとは思うが、一方で「マニア向けで手強いのばっかりじゃないの?」と警戒する気持ちもあった。が、冒頭の2作はむしろ平易で、SF初心者にもオススメしたいところ。特に「クリスタルの夜」は「いかにして〈シンギュラリティ〉の成果を人類だけのものとするか」というセコいアイデアを実行に移す話で、くすくす笑いが止まらなかった。これは〈シンギュラリティ〉モノのいい変奏曲。
と、油断してると3本目から一気にハードになってくるわけだが。「暗黒整数」は『ひとりっ子』収録の画期的数学SF「ルミナス」の続編で、ハード数学SF+パニック小説であいかわらず楽しいシリーズ。それからおなじみ「ワンの絨毯」は「あれ? 『ディアスポラ』に入ってたじゃん」と思いきやオリジナルの中編バージョン。お得意の「人間のアイデンティティ」テーマにとどまらず「人類のアイデンティティ」にまで踏み込む傑作。
表題作はブラックホールに飛び込んでいくプロジェクトの話で、70%くらいは意味不明の科学用語で埋め尽くされている難敵。いや、理解するのはあきらめたけど、結果を持ち帰れない実験に意味があるのかというけっこう科学的に深い話だね、これは。
このまま「ド」がつくほどのハードSFで爆走して終わりかと思いきや、最後の「伝播」は、難しいところがいっさいなし、それでいてもっともSFマインドにズドンと来る傑作だった。この構成はずるい。いや上手い。
9784150115319
9784150115944
2011-10-01(土) [長年日記]
■ 富士山できのこ狩りをしてきた2011
昨年に引き続き、今年もうどん会の方々に誘っていただいて、富士山できのこ狩りをしてきた。昨年はずっと雨でなかなかひどい目にあったのだけど、今年も9月の予定が雨天で延期になり、リベンジとなった今日も雨の予報だったので半ばあきらめていたのだが。蓋を開けてみれば(雲の上ということもあり)ずっと好天で、すがすがしい秋の富士山をたっぷり満喫することができたのだった。
初参加の昨年は、どれが食べられるきのこなのかもわからず、手当たり次第に摘んでみては打率五割というところだったのだが、今年は時期が少しずれたこともあって生えているきのこのバリエーションも少なめで、あまり迷うことなく食べられるものばかりを摘むことができた。打率にすると九割くらい。それでも5、6種類くらいのきのこをたっぷり持ち帰ることができた。
昨年は雨で中止したのだが、今年は(例年どおり)途中できのこ汁を作って食べるというイベントも催された。みんなで採ったきのこの一部で作るのだが、数種類のきのこを刻んで煮て、味噌を加えただけの椀が、もう、なんじゃこりゃというくらいにウマイ! 鮮度の高いきのこって、すげぇ旨いんだなぁ! というわけで我が家は夕飯もきのこ汁である。
そうそう、きのこは放射性物質が心配という話もあって空間線量計も持ち込まれたのだけど、五合目あたりで0.03μSvくらい。地上よりむしろ少ないのだった。飛散している放射性物質は重めなので、高山には届かないのかも知れないね。
その他、美麗きのこ写真はこちら。
2011-09-30(金) [長年日記]
■ Amazon-Auth-ProxyをSinatraに移植してHerokuで動かす
先日発表になったGoogle App Engineの値上げはGAE上で無償サービスを運用していた人たちをパニックに陥れたが、tDiaryとて無関係ではない。amazon.rbが使っているProduct Advertising API用リバースプロキシがGAE上で稼動しているからだ。
GAEの値上げ自体は11月まで猶予されたが、それでもやはり、ああいうロックインされやすい環境に依存するのは危険だ。で、同じサービスをまちゅさんがheroku + Sinatraに移植してくれたので、そちらに引っ越すことに。たぶん10月末に予定されているtDiaryの次のリリースからはこちらを使うことになると思う。
さて、リバースプロキシだけでなく、認証プロキシの方もいつまでもCGIじゃねーだろというかもっと移植性の高い環境で動かさないとね、ということで。Sinatra移植に挑戦してみた。仕事でRuby使ってるつっても主にデータ処理なのでWebアプリの新作はもう何年も作ってないわけで、新しい技術のキャッチアップはぜんぜんしていないのだ。もちろんRailsでもいいわけだけど、そんなデカいものを作る予定もないのでまずはSinatraから。
というわけでGithubの方にいろいろ追加→amazon-auth-proxy。元のCGIをそのままライブラリとして使っているのでかなりひどいアーキテクチャだが、RSpecで不完全ながらテストも書いたし、Rack上で動くようにしたし、Bundler対応もした(というか対応しないとHerokuで動かせないみたい……なのかな?)。なんかモダンじゃーん。
で、これをHerokuで動かす。この手順を簡潔にしておけば、誰もがプロキシを運用できるはず。まずはgemでherokuをインストールし、「heroku create」でアプリケーションを作成する:
% gem install heroku ... % heroku create amazon-auth-proxy-tdtds Enter your Heroku credentials. Email: t@tdtds.jp Password: Found the following SSH public keys: 1) id_dsa.pub 2) tdtds.pub Which would you like to use with your Heroku account? 1 Uploading ssh public key /home/sho/.ssh/id_dsa.pub Creating amazon-auth-proxy-tdtds... done, stack is bamboo-mri-1.9.2 http://amazon-auth-proxy-tdtds.heroku.com/ | git@heroku.com:amazon-auth-proxy-tdtds.git Git remote heroku added %
これでamazon-auth-proxy-tdtds.heroku.comというサイトができた。ここにプログラムをgit pushすればデプロイできるのだけど、さて、ここで問題が。設定ファイルには秘密にしておかなければならないAmazonのキーが含まれるので、これをGitHub上に公開するわけにはいかない。たぶん良いプラクティスがあるのだと思うが、とりあえずローカルにreleaseというブランチを切って、そこに設定ファイルを含めてHerokuにpushすることにした。
% git checkout -b release
% cp amazon-auth-proxy.sinatra.yaml amazon-auth-proxy.yaml
% vi amazon-auth-proxy.yaml
...KEYなどを書き換え...
% git add amazon-auth-proxy.yaml
% git commit -m 'added yaml file for release.'
...
% git push heroku release:master
Counting objects: 90, done.
Compressing objects: 100% (86/86), done.
Writing objects: 100% (90/90), 12.94 KiB, done.
Total 90 (delta 44), reused 3 (delta 0)
-----> Heroku receiving push
-----> Ruby/Sinatra app detected
-----> Gemfile detected, running Bundler version 1.0.7
Unresolved dependencies detected; Installing...
Using --without development:test
Fetching source index for http://rubygems.org/
Installing diff-lcs (1.1.3)
Installing rack (1.3.2)
Installing rspec-core (2.6.4)
Installing rspec-expectations (2.6.0)
Installing rspec-mocks (2.6.0)
Installing rspec (2.6.0)
Installing tilt (1.3.3)
Installing sinatra (1.2.6)
Using bundler (1.0.7)
Your bundle is complete! It was installed into ./.bundle/gems/
-----> Compiled slug size is 680K
-----> Launching... done, v4
http://amazon-auth-proxy-tdtds.heroku.com deployed to Heroku
To git@heroku.com:amazon-auth-proxy-tdtds.git
* [new branch] release -> master
ありゃー、いりもしないRSpecまでインストールされちゃってるな。これはGemfileで開発用のgemだけ分離するような書き方があるのだろう(と、tDiaryのGemfileを見ながら学習)。まぁいいや。なんにせよ、本当に簡単で拍子抜けするくらいだなぁ。これが現代のPaaSか!(今ごろなに言ってんだ)
というわけでいちおう動くようになったけど(プロクシなのでブラウザからアクセスしてもなにもないよ)、まだ異常系もロクにできていないのでもうちょっといじってから本番投入するとしよう。
Before...
◆ まちゅ [dotCloundの場合は、設定ファイル(dotcloud.yml)に環境変数を書くやり方みたいですね。 http:..]
◆ ただただし [まぁたしかに、ソースツリーに設定ファイル含めちゃったら、サーバ増やせないもんなぁ。しかし環境変数を使うとサーバはスケ..]
◆ hsbt [group :test を除外するには BUNDLE_WITHOUT を使います(これはHeroku特有の設定) h..]
◆ ただただし [あー、次善の策として環境変数を使うというのはいいね。そうしよう。 :testの除外については、ログに「Using -..]
◆ hsbt [Gemfile に group :test do ... end を作らないとダメです!]
◆ ただただし [ああ、それはもちろん。]