トップ 最新 追記
RSS feed

ただのにっき


2009-01-08(木) [長年日記]

看板広告減ってない?

いつも東神奈川駅で上りの京浜東北線を待っていると、目の前にかなーり不愉快なサウナの看板広告が見えていて、まぁ誰をターゲットにしてるのか丸わかりという点では優れた広告なんだけど(どんな看板か見たい人はGSVで。たまには役に立つな、GSV)、昨日みたら真っ白になっていた。これって、広告出せなくなったってこと? 世界不況恐ろしす。なんか、自社の受注が減ってることより、街中の看板広告が減ってることの方が不況を実感しちゃう。

ファーストキッチンが入ってるビル で、新横浜でふと見上げたビルの看板も空っぽだったので「うわ、ここもか!」と驚いたのだが、GSVで見たら夏の時点で空っぽだったようだ。不況関係なしか?


2009-01-07(水) [長年日記]

tDiary: ruby 1.9.1対応でdefault_externalを使うのは適切か?

tDiaryのtrunkで、ruby 1.9.1対応のためにdefault_externalを設定している件に関して、ZnZさんからツッコミがあった:

default_externalの影響範囲がよくわからないけど、tdiaryのここで使うのは適切なのだろうか?

ツッコミ欄に書くには長くなるので、こっちで書いてみる。ホントは書きたくなかったんだけど、なぜかというとるびまに書くネタがなくなっちゃうから!(ぉ もっとも、ruby 1.9のエンコードに関してちゃんと理解しているとは言いがたいし、ここでツッコミ受けたほうがいいでしょう。

実行中のruby 1.9全域に影響するエンコーディングには3種類ある(たぶん):

  • scriptエンコーディング
  • default_internal
  • default_external

scriptエンコーディングは、*.rbファイルそのもののエンコーディングで、これはマジックコメントを入れれば対応できる。もしくはevalなどする場合には、その文字列のエンコーディングを適切に設定してやれば良い。これはOK。tDiary trunkの*.rbにはすべて以下の1行が挿入済みだ:

# -*- coding: utf-8; -*-

default_internalはrubyの内部処理(?)におけるデフォルトで、あんまり考える必要はないと思ってる。だから今のところスルー。

default_externalは、プログラムの「外界」でどんなエンコーディングが使われているかの標準値で、基本的にはインタープリターがlocaleなどを参考に起動時に決定するし、-Kなどのパラメタでも制御できる。tDiaryで問題になるのはコレ。

tDiaryが使われる状況は「ふつーのレンタルサーバ」を想定している。「外界」の環境設定はレンサバ屋さんが自分たちの都合で設定していて、ユーザには変更できないことが多い。また、tDiary設置者のリテラシを考慮すると、shebangに適切なオプションが指定されることも期待できない(そういう縛りを増やすとサポートの手間が増えて開発が滞るのである)。

また「とりあえずrubyだけ入っていれば動く」というのを最低限の環境として想定していて、それもできる限り古いrubyもサポートしたい。実際、1.8.7が入っているサーバはまだまだ少なくて、(セキュリティ的に好ましくないとはいえ)1.8.2~1.8.6がゴロゴロしているのが実態だ。この上にruby 1.9対応を付け加えるのがtDiary 2.3系開発のミッション。

default_externalに依存せずに「外界」のエンコーディングを制御する方法としては、例えばファイル等の読み出し時に下記のようにに指定する方法があるわけだが:

open( 'hoge', 'r:utf-8' )

ちょっと古いruby 1.8系だとこんなオプションは受け入れられない。そもそも、tDiaryはしばらく(EUC-JPな)2.2系と(UTF-8な)2.3系が並存するし、rubyも1.8系と1.9系が長く並存するだろう。tDiary用のプラグインを書く人には、これらの組み合わせにできるだけ対応して欲しいし(tDiary 2.2とruby 1.9の組み合わせはないけど)、そのためのハードルは低く保ちたい。

となると、以下のように書くだけで、読み込んだファイルは(ruby 1.9では)UTF-8だと認識して欲しいわけだ:

open( 'hoge' )

現在のtrunkのコードには(試行錯誤の結果として)「'r:utf-8'」が入っているが、default_externalが期待通りのデフォルト値を設定してくれることがわかれば、これは元に戻してしまいたい。

逆に言えば、利用者やプラグイン開発者の負担になることなく外界のエンコーディングをUTF-8に設定できるなら、default_externalなど使わずに済ませたい。

というのも、CGI以外のプラットフォームで他のアプリケーションと同じインタープリタ上でtDiaryを動かすような場合、default_externalを勝手に変更するのはまずいからだ。もっとも、default_externalの値に何かを期待するアプリを同じインタープリタ上で動作させるのはそもそも無茶だとは思うけど。

というわけで、利用者やプラグイン開発者に「外界」のことを意識させずにUTF-8で統一されたエンコーディングを使わせたいので、external_encodingを設定している、というのが現在の状況。

Tags: tDiary ruby
本日のツッコミ(全4件) [ツッコミを入れる]

なかだ [せめてRUBY_VERSIONで分岐はやめてください。 evalはBinding渡しても無理ですか?]

ただただし [RUBY_VERSION分岐は暫定措置なので、たぶんなんとかします(^^; 後半の意味がよくわかりません。evalの..]

なかだ [http://sho.tdiary.net/20090104.html#p01 > eval内でローカル変数が定義で..]

ただただし [ぬおぉ、できました! >binding そうか、こんなテクがあったのか……。]


2009-01-06(火) [長年日記]

プロバビリティ・サン (ハヤカワ文庫SF)(ナンシー・クレス)

プロバビリティ・ムーンの続編。じわじわ面白くなってきた。特に終盤、初心者置いてけぼりのSF大暴走は痛快。こんなに話を大きくしちゃって、最終巻は大丈夫かよ、と心配になるくらい。

「天才物理学者」トムの描写がいいね。小説に登場する「天才」は始終奇矯な言動を取ることが多いけど、本当の天才って違うと思うんだよな。トムのように、普段は普通でいいパパだったりするけど(とは言ってもガチガチのモヒカンなんだけど)、いったん天才モードに入るとすごい集中力を発揮する、スイッチの切り替わり方が激しい人が、いかにも天才っぽい感じがする。

そんなトムをはじめとする、目的のために手段を選ばないタイプの人間が複数、それぞれの思惑を抱えて行動するという、小説としてもなかなか優れた作品だと思った。まぁ、ストーリーは相変わらずあんまり進んでないんだけどね。そういうスピード感に期待する作家じゃないんだろう。とりあえず次が楽しみ。

プロバビリティ・ムーン (ハヤカワ文庫 SF ク 13-1)
ナンシー・クレス
早川書房
¥2

プロバビリティ・サン (ハヤカワ文庫SF)
ナンシー・クレス
早川書房
¥50

プロバビリティ・スペース (ハヤカワ文庫SF)
ナンシー・クレス
早川書房
¥73

Tags: book

トップ 最新 追記
RSS feed