トップ 最新 追記

uDiary

海野秀之(うんのひでゆき)の外部記憶

Twitter (twilog) / RSS / アンテナ / ぶくま

2006|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|08|
2010|01|02|03|05|06|07|10|11|
2011|03|08|
2012|02|04|07|08|10|
2013|01|02|03|05|06|08|11|12|
2014|01|02|05|06|07|08|09|12|
2015|01|02|03|04|

2006-11-02 (Thu)

[Web] おまえが言うなはアリか?

http://www.nurs.or.jp/~lionfan/mainichi_2003_307.html

すぐに、 最近の山形浩生さんのところに出ていたあれ を思い出した。

なんで、突然そんな関係ないところに話を飛ばすの?という感想を抱いていたのだが、 そういうのが普通であるような文化圏もあるのかもしれない。

いや、アリだとは思わないが、人間の認識能力にとっては、むしろ自然なのかも。

科学的手法というのは、だまされよう、だまされようとする人間の認識能力に逆らう、 不自然で負荷の高い作業なのだという趣旨のことを、だれかが(たぶん天羽優子さん) どこかで書いていたように思う。


2006-11-06 (Mon)

芸力がリニューアル

元同僚(っていうのかな?新人教育をいっしょに受けた)の竹本さんが 運営されている芸力サイトが 新しくなった

で、僕が最初に確認したのは、

  • 「展力」(展覧会データベース)の各エントリに固定リンクがあるか。
  • htmlソースは結構きれいだ。(table レイアウトではない)

の二点だったり。

まあまあ、"<meta name="robots" content="noindex,nofollow">" なのには 何も言うまい。(というか、ちょっと奇妙に思った以外には何も思わなかったし。) *1

「展力」(展覧会データベース)の各エントリに固定リンクができたのはうれしいのだけど、 固定リンクがどれなのかはわかりにくい。html title が「展力_詳細」だとちょっと不安になるよね。

あと、今後コメントをどうするつもりなのかは知らないけど、トラックバック・センターに しちゃえばいいのではないかと思った。

字が細かいのは……仕方がないのかなぁ。アート系だし。

テキスト・ブラウザであるところの w3m で見てみたけど、 html ソースがすっきり書かれているせいか、そんなに不快な表示にはならない。

ただ、例えば、展力ページで、 検索フォーム (div.spaceleft5 tennavi のとこ)は html ソース上で最後の方に書かれているのだけど、 これが最初の方にあるほうが、テキストブラウザで見る場合には便利。

フル GUI ブラウザで閲覧する場合には、html ソース上の記述順序なんて関係ないのだけど (css による表示位置指定が有効なので)。

ちなみに、tDiary はこの辺もよく考えられていて(たださん自身が w3m ユーザらしい)、 w3m で tDiary とその他のブログサイトを見比べると違いは歴然。

これは、まあ、テキスト・ブラウザなんかで見るなということなのかもしれない。

携帯電話でみた場合はどうなんだろう?(携帯電話を持っていない(!!)ので確認できず)

*1 あれ?再度確認したら、この meta タグはなくなっているような。一時的なものだったのかな。

[Web] Subversion で管理せよ

http://ukai.jp/Articles/2003/uu-svn/index.html

Subversion を使っているときに $Id$ を置換する方法については、以前いちどググってわからなかったので 諦めたままになってました。ほーほー、なるほど。

でも、いま改めて 検索しなおしてみると、 いっぱい出てくるな。なにを調べてたんだか。>過去のおれ

一回やってみてダメだったから、そこで「出来ない」と決めつけてしまったのかも。


2006-11-07 (Tue)

ついに LISP の重力井戸に?

唐突に、 SICP を読む!買う!という衝動に駆られ、会社の近くの本屋に走るも、 置いてなくて未遂におわる。

ううむ、これは、 英語でよめ という啓示か、はたまた、Binary Hacks を買うお金をとっておきなさいということか。

あやうく、「ハッカーと画家」 (表題となったエッセー を含め、おおくのものが ここから読めます。) なんてのを手に取りそうになるが、 踏み止まった。

ともかく、 Gauche をインストールし、.emacs に

 (setq scheme-program-name "gosh -i")

と書いたら、M-x run-scheme ですぞ。

gosh> (+ 1 1)
2

(笑) せっかくだから、SICP にある例にしとこ:

gosh> (+ 137 349)
486
gosh> (- 1000 334)
666
gosh> (* 5 99)
495
gosh> (/ 10 5)
2
gosh> (+ 2.7 10)
12.7

実用的には、emacs lisp を覚えた方が役に立つのだが、 実用的かどうかを判断基準にするのはこの際大変に的外れなような気も。

追記

結局 amazon で注文してしまった。 Web で読んでみて別に苦痛じゃなかったので原著(英語)を買ってもいいかなぁとか思ったのだけど、 ペーパーバック版でも訳書より高い!じゃ、訳書。

本日のツッコミ(全6件) [ツッコミを入れる]

Before...

# うんの [うーん。とりあえずは SICP を読むのが目的みたいな感じでして。 んで、Scheme で何かするというより、Sc..]

# うんの [手元には、いつか読もうとおもって、田浦さんという方による「コンパイラ作成実験資料」(how_to_mk_compil..]

# うんの [how_to_mk_compiler.pdf という名前は、僕が下の all.ps を pdf 化したときに勝手に付..]


2006-11-08 (Wed)

[Scheme] Scheme で 99 bottles (笑)

さて、昨日唐突にはじまった scheme ライフですが、 SICP はぼちぼち読むとして、なんか書いてみましょう。 というわけで 99 bottles (なんでやねん)。

(define (bottle n)
  (string-append (number->string n) " bottle" (if (> n 1) "s" "")))

(define (print-loop i)
  (display (string-join (list
			 (bottle i) "of beer on the wall,"
			 (bottle i) "of beer.\n")))
  (if (> i 1) (begin
		(display (string-join (list
				       "Take one down and pass it around,"
				       (bottle (- i 1)) "of beer on the wall.\n\n")))
		(print-loop (- i 1)))
      (display (string-join (list
			     "Go to the store and buy some more,"
			     (bottle 99) "of beer on the wall.\n")))))

(print-loop 99)

ぜんぜんゴルフしてません。でも、けっこう楽しい。 あ、強調しておこう。scheme けっこう楽しいぞ!

いちおう なんでも再帰しようとしてます。

書いていて思ったこと:

  • string-join に渡すのはリストじゃないといけないのだが、'((bottle i) "of beer on the wall") だと (bottle i) まで未評価のまま渡されてしまう。ので、なんとなく (list ... )にしてみた。動いた。
  • (begin ... ) で囲まなければならない場合と、そうでない場合の違いをいまいちわかっていない。

いまいちわかっていないことリストになっちゃいました。

同一人物だと思ったらしい。

僕の脳内では、比較対象ですらなかった(スコープが違うらしい)ので、 綾瀬はるかとやっくんが似ているなどとは、いわれるまで思いませんでしたが。

わたしの妻は、初めてやっくんを CM でみたときに、 ポカリスウェットの CM の子がこんな格好までさせられて、職業とはいえ大変だなぁと思ったらしい。

本当に同一人物だったら、素敵だったのですが。


2006-11-09 (Thu)

Emacs show-paren-mode と C-M-p / C-M-n

http://www.bookshelf.jp/soft/meadow_42.html#SEC630

Emacs では、閉じ括弧を書いたときに対応を教えてくれるし、 括弧の対応があっていないと次に tab を叩いたときのインデントがおかしくなって異常を教えてくれる。 だから、書く際にはあんまり困っていないのだが、すでに書いてある括弧の対応を知りたいときにちょっと不便だった。

まさに、ここ に書いてあるように、

全部消してガンガン))))書きながらハイライトみて確認したり。(二度手間ダヨ〜)

ってな具合になってた。

いままで、別にこれでいいやと思っていたのですが、いやしかし、 Emacs World がこんなに不便なわけがないぞ。

とりあえず、.emacs に

(show-paren-mode t)

と書いておくことにしよう。

なお、(setq show-paren-style 'mixed) にはしないことにする。 その代わりといってはなんだが、C-M-p (backward-list), C-M-n (forward-list) を覚えよう。 (左手で CTRL+ALT 押して、右手で p or n だよね。 C-M-b, C-M-f 系は僕には使えそうにもないし、そもそも押せない。)

ちなみに、これらのキーは、ruby-mode では再定義されていて、 括弧以外 (end とか) で囲まれたブロックの移動もできる。

[Web] 「水からの伝言」を…

「水からの伝言」を信じないでください (田崎晴明さん)

最初、わたしのところからリンクしたところで、 ページランクの向上に寄与しないだろうなぁとは思ったのですが、 やっぱり紹介。 一人でも多くの人々の目にふれるべきだと思ったので。

すごく丁寧に書かれた文章だと思います。

[Scheme] Write in Scheme as Schemers do は0件

いえね、Scheme で書くなら Schemer がそうするように書きなさいと。

R5RSを読んでいます。

「第一級の (first-class)」という言葉の意味がわからないことから目を背けていたのですが、 そろそろ限界。見かけた説明は以下のようなもの。

  1. あるオブジェクトが計算対象であるとき、そのオブジェクトは第一級のオブジェクトであるという。
  2. 変数の束縛対象になれるオブジェクトを、第一級のオブジェクトという。

ようするに、変数に代入できればいいわけね。

高階関数(関数を引数にとったり、関数を返したりする関数のこと)を扱うには、 関数が第一級のオブジェクトでなければならない、と。

本日のツッコミ(全3件) [ツッコミを入れる]

# うかい [First-class Object http://sky.zero.ad.jp/~zaa54437/program..]

# うんの [ひいぃ宿題だされたぁ。]

# うんの [C 言語では、関数へのポインタを用いて、関数をオブジェクトのようにハンドリングすることがある程度可能です。 ですが、..]


2006-11-10 (Fri)

[Web] 片手に愛を

大西科学における、研究成果 #716

いえね、それ(どれ?)が書きたかっただけなんじゃないのか?(笑) という感想いだきつつ、なんだかくやしかったり。

でも、それ(どれ?)がない場合、「なにそれ?単なる良い話やん」といって 責められなければならないわけです。 なんで責められなければならないのか、思えば理不尽な話ですが、 たしかにそうでした。


2006-11-13 (Mon)

Google 八分?:「『水からの伝言』を信じないでください」

http://njb.virtualave.net/nmain0219.html#nmain20061113072225

ほんとだ。 「水からの伝言」を信じないでくださいでググって も、 それに言及しているものばかりで、 そのもの がでない。

サイト指定した結果がこう なので、見落としではない。

(2006/Nov/13 10:20頃時点)

なぜだ?

追記

技術的トラブルであるらしい

日々技術を更新しようとするのが、Google の基本スタンスなのかも。 (と、急にほめる)

Haskell Curry

あんまりアホなことばっかり書いていると、あほかと思われてしまって (しかも、それは正しい)あれなんですけど、Haskell さんは Haskell Curry さんだったのですね。 SICP の第一版への序文をよんでてプチびっくり。

いや、Haskell という名の関数型言語があることもしっていたし(=存在するらしいということくらいしか知らない)、 カリー化 という言葉も聞いたことくらいはあったのですが、同一人物の姓と名だったとは。

ほほー、除算を逆数の積に変換する ( IPF だとこれが強いられるらしい ) のもカリー化なのね(←ほんとか?)。

[Web] GM 陰謀説 (の否定)

クルマ社会の都市と交通 (おれカネゴンさんところ(のコメント)経由)

GM陰謀説は今でも時折見受けられます。 日本でもかつてNHKが取り上げましたし、 アニメと実写の合成で話題になった映画『ロジャー・ラビット』 (R.ゼメキス監督、1988年)、さらに、「ゴルゴ13」のような劇画 (『ビッグ・コミック』1997年9月)にも登場しました。 では、この説が一般に受け入れられやすいのはなぜでしょうか。 また、この説の致命的弱点は何でしょうか。

陰謀説って甘美よね。


2006-11-15 (Wed)

[Web] Google の SEO 対策(?)と不安定

このところ Google の検索結果にでなくなってしまっている 「水からの伝言」を信じないでください の冒頭に、以下のような文が追加されていた。

11 月 11 日前後から、このページが Google の検索にかからなくなっています。 これは、最近頻出している Google の技術的トラブルの可能性が高いとの ご指摘をご専門の方からいただきました。 要は、Google に頼りすぎてはいけないということでしょうね (11月14日)。

そういえば、最上嗣生さんがGoogle に ad-hoc なアルゴリズムを導入することで不安定になると言っていた のを思いだした。

(蛇足) 私は google の試行錯誤的なシステムが改変がいけないことだとは思っていません。 さっきの局所最適解と次の局所最適解の間は不安定でしょうから。 (←しまった、最上さんの主張をまったく理解していないように見えるなぁ。)

[Ruby] 切符問題そるば

似たような出題を二回目撃してしまったため、 スルー力(するー・りょく)及ばず、変なフラグが立ってしまった。

いずれも 24 をターゲットにしているのは、切符問題にはなにか僕の知らない流儀でも?? さらに、解いてみると(と書くとさくっと解いたように聞こえるかも知れませんが、恥ずかしながら、 そんなことはありません *1) 、いずれの答えも同じ形の構文木になります。

むむー、この形が人間にとっては思いつきにくいということかな。

まだお二人のコードをきちんと読んでいませんが、 おそらく、それらとくらべて断然素人臭いと思われますが、拙作を以下に (ticket.rb)。

いやね、There is more than one way to do it が言い訳モットーでして。

次は scheme で書いてみよう。Shiro Kawai さんのコードを詳しくしらべるのはそれから。 (ざっと見た感じ、あんなコードは僕からは出てきそうにもない。非決定性なんちゃらって何だ? *2

#!/usr/local/bin/ruby
=begin
ticket.rb
  いわゆる切符問題をときます。
  「1, 3, 4, 6 の 4 つの数字(順序は入れ替えてよい)と四則演算をもちいて
    24 をつくれ」
  だったら、
  ./ticket.rb 24 1 3 4 6
  になります。
=end

require 'rational'

=begin
== each_tree_permutaion(array) {|a| ... }
  配列をうけとって、構文木の候補を生成します。
  たとえば、[a, b, c] からは
     [[a, b], c], [[b, a], c], [c, [a, b]], ...
  が次々に生成されブロックに渡されます。
=end
def each_tree_permutation(ary)
  pr = Proc.new

  if ary.size > 2
    0.upto(ary.size - 1) do |i0|
      a = ary.dup
      x = a.delete_at(i0)

      0.upto(a.size - 1) do |i1|
        b = a.dup
        y = b.delete_at(i1)

        0.upto(b.size) do |j|
          each_tree_permutation(b.dup.insert(j, [x, y]), &pr)
        end
      end
    end
  else
    pr.call(ary)
  end
end

=begin
== each_operations(ary){|a| ... }
  each_tree_permutation で生成された木の各ノード [x, y] に
  可能な四則演算をはめこんでブロックに渡します。
  [x, y] は、['+', x, y], ['-', x, y], ['*', x, y], ['/', x, y]
  になります。y が 0 でないか等の検査はしない。
  (eval まかせ)
=end
OPS=['+', '-', '*', '/']

def each_operations(ary)
  x,y, = ary

  def unexpanded?(a)
    a.class == Array and a.size != 3
  end

  if unexpanded? x
    each_operations(x) do |a|
      if unexpanded? y
        each_operations(y) do |b|
          OPS.each do |op|
            yield([op, a, b])
          end
        end
      else
          OPS.each do |op|
            yield([op, a, y])
          end
      end
    end
  else
      if unexpanded? y
        each_operations(y) do |b|
          OPS.each do |op|
            yield([op, x, b])
          end
        end
      else
          OPS.each do |op|
            yield([op, x, y])
          end
      end
  end
end

=begin
== eval(expr) => [value, string]
  each_operation が返す形式を受け取って、
  値を評価します。
  評価値と式の表現(文字列)の組を返します。
=end
def eval(expr)
  op, x, y, = expr

  def v_and_s(a)
    if a.class == Array
      eval(a)
    else
      [a, a.to_s]
    end
  end

  x_val, x_str = v_and_s(x)
  y_val, y_str = v_and_s(y)

  ret_val = nil
  if x_val and y_val
    case(op)
    when '+'
      ret_val = x_val + y_val
    when '-'
      ret_val = x_val - y_val
    when '*'
      ret_val = x_val * y_val
    when '/'
      if y_val != 0
        ret_val = x_val / y_val
      else
        ret_val = nil
      end
    end
  end

  ret_str = "(#{x_str} #{op} #{y_str})"

  [ret_val, ret_str]
end

# ======== main ========

target = ARGV.shift.to_i

n = []
ARGV.each do |a|
  n << Rational(a.to_i, 1)
end

hash = {}

each_tree_permutation(n) do |tree|
  each_operations(tree) do |expr|
    v,s = eval(expr)
    if v == target
      puts s unless hash[s]
      hash[s] = true
    end
  end
end

書いてみて:

  • 関数内ローカル関数をはじめて書いてみた。
  • ['+', a, b] とか schemer っぽい?
  • 自分にわたされたブロックをうけとる方法が Proc.new とは意外でした。
  • っていうか、いくらなんでも eval をあっさり隠す度胸ってどうなの?>自分

どれも、今回の問題とはあんまり関係ないうえに、「だから何?」的な。

しまったぁ、 Enumerable::each_with_index (昨日 tdiary のソースをみてて知った) 使えばよかった。(自分で書きながらも、0.upto(a.size - 1) はないだろうと)

追記

案の定、あとから見ると恥ずかしいところがぞろぞろですね。

とりあえず、each operations なんで複数なのか、とか。コメントが……とか。 でも、書き直すんだったら一年後(←なぜ?

*1 ついでに白状しとくと、ここに載せたコードの前に、ちゃんと答えを見つけられない失敗作がいっこありました。えへ。

*2 や、非決定性オートマトンなら学校でならったかな。決定性に書き直せとかいわれたりして。

Schemer っぽい?

PostScript の言語仕様を読んでいて。 オペレータが後置なのと、括弧がないのが気持ち悪くて仕方がない。

これって、ちょっと Schemer っぽい?(うれしい)


2006-11-16 (Thu)

[Web] well defined (モノクロ珈琲)

なぜなら数学以外の学生が"well defined"をきちんと分かっている可能性はほぼゼロなので。

まずは、同値類を割ってなにかしてみたいと思います。

っていうか、コーヒー(←と表記してる時点でダメ?)ってそんっっっっっっ なに奥が深いのですか?


2006-11-17 (Fri)

[Web] CSRF の話

高木浩光さんの「自宅の日記」 に、 tDiary と CSRF に関する話があったなぁと思って訪れると、 ちょうど最新のエントリが関連する話題だった。


2006-11-20 (Mon)

セミコロンが打てない。

ひっさびさに、極めて小さい(たった 17 行)プログラムを C 言語で書いたが、 いっぱいコンパイルエラー。

  • 気をつけていたつもりでも、やっぱりセミコロンを忘れる。
  • バックスラッシュ記法を使わないからと、文字列をシングルクオートして怒られる。
  • gets と書こうとして、読まれたデータはどこに格納されるのか、数秒間悩む。
  • fgets にあたえる引数の順序なんて、覚えているわけがない。

popen で外部プログラムの標準出力をとりこむ ("r" モード) だけのコードなんだが、 C++ の stream で同等のことやる方法が良くわからないので、stdio でいくことにした。


2006-11-21 (Tue)

HTTP ヘッダなどに表示する charset

最近、ちょっとした CGI を書く機会があって、

 Content-Type: text/html; charset=EUC-JP

とか出力させつつ、ふと、"EUC-JP" ってのは正式な名称なのか、許容されてはいるけど、 本当はあかん書き方だったりするのか、どうなんだろうと思ったり。 (関係ないけど、 「text/html じゃなくて Text/Html と書け」と叱られた遠い昔の記憶もあるのだが……)

Setting the HTTP charset parameter (W3C) によれば、

In theory, any character encoding that has been registered with IANA can be used, but there is no browser that understands all of them.

なんだそうな。 EUC-JP がそこいらのブラウザに受け入れられているらしいのは経験上わかっているのだが、 はて、正式名称はなんだ?

http://www.iana.org/assignments/character-sets をみて、ひっくりかえるはめに。

Name: Extended_UNIX_Code_Packed_Format_for_Japanese
MIBenum: 18
Source: Standardized by OSF, UNIX International, and UNIX Systems
        Laboratories Pacific.  Uses ISO 2022 rules to select
               code set 0: US-ASCII (a single 7-bit byte set)
               code set 1: JIS X0208-1990 (a double 8-bit byte set)
                           restricted to A0-FF in both bytes
               code set 2: Half Width Katakana (a single 7-bit byte set)
                           requiring SS2 as the character prefix
               code set 3: JIS X0212-1990 (a double 7-bit byte set)
                           restricted to A0-FF in both bytes
                           requiring SS3 as the character prefix
Alias: csEUCPkdFmtJapanese
Alias: EUC-JP  (preferred MIME name)

ひでぇ! 'Extended_UNIX_Code_Packed_Format_for_Japanese' なんて、 かえってブラウザに理解してもらえなさそうだ。Shift_JIS が正式名称として登録されて いるのとくらべると、えらい違いですなぁ。

個人的には、まあ、"EUC-JP" でいいだろという結論にいたりました。 日本語の CGI 作ってて使いそうなのは以下のものでしょうか。

  • いわゆる JIS コード: ISO-2022-JP
  • シフト JIS: Shift_JIS
  • EUC-JP: EUC-JP (これだけは、Extended_UNIX_Code_Packed_Format_for_Japanese の別名)
  • UTF-8: UTF-8

Shift_JIS がアンダー・スコア区切りで、 EUC-JP が '-' 区切りなところが妙な味なのは周知の通り。


2006-11-22 (Wed)

[Scheme][Ruby] SICP おもしろすぎ、ケイゾク、Ruby の文法?

練習問題含めてみっちり精読するスレッドと、どんどん読み進めるスレッドを並列させているんだけど、 もっか読み進めるのが面白くて止まらない。4章なんて、冒頭読むだけでわくわくする。 なんだ!おれはこんなに面白い本をいままで知らずに生きてきたのかぁ!!

ふと、Ruby で amb 実装している人いるかなぁと思ってググってみたら、 やっぱりいた

そういえば、Ruby における継続については matz さんが気になることを書いていたなぁ と思って検索したが、みつからない。嗚呼、ケイゾクでしたか。

忘れてしまわないうちに、もういっこクリップ: [Ruby] Visualization of Ruby's Grammar (Matz にっき)

私は、Ruby 文法の主張がけっこう好きです。 「おれは人間だ!yacc なんぞに思考を規定されたくないんだよ!」 という声が聞こえてきそうなところが。

parse.y が ugly なのは、むりやり yacc で記述したからというのはその通りだと思う のですが、では、Ruby の文法はどういう言語クラスに属しているのか、 そういう言語を記述するのにふさわしいメタ言語はどんなの?とか。

あんまり関係ないけど、call/cc を初めてみたら cc => condition code と連想しません? subcc みたいな。

[設定など] tDiary LinkcheckFilter 導入

散発ながら、トラックバックスパムが鬱陶しくなってきたので、 LinkcheckFilter をいれてみた。

てすと

イントラ内の環境からトラックバックを打ってみる。 LinkcheckFilter で open_uri に失敗してはじかれるのを期待。 無視されるんだけど <error>0</error> が返るのを期待していたら、

<?xml version="1.0" encoding="iso-8859-1"?>
<response>
<error>1</error>
<message>getaddrinfo: No address associated with hostname</message>
</response>

が返ってきたのでちょっと意外(←未熟者!

そっか、コンストラクタ内で open の例外がキャッチされ、@error に設定→ eval_rhtml の冒頭で @error が検査されて raise TDiaryTrackBackError ですね。なるほど。

あ、いやぁ、ちがうかな。LinkcheckFilter 内の open での例外だったら、すぐにキャッチされて return false か。しまった。 ←タイムアウト例外しかキャッチしていない。


2006-11-27 (Mon)

[Web] のだめカンタービレ クラシック作品辞典

ああっ、今日も月9見るために早く帰らなくちゃ。

こんなセリフ吐いてていいのか全く不明ですが、 あのドラマをみていると、聞いたことあるけど曲名がわからない曲がいっぱいでてきます。

探してみたら、やっぱりありました。

ちょっとずつ CD 買っていきたい。

追加

某所経由。さすが 2ch。バザール式ですな(←意味不明。

フジテレビの公式リストなんてのもあったんですね。

本日のツッコミ(全1件) [ツッコミを入れる]

# うんの [おお、ブラームスだったら高校生のころに試しに買ったやつがあるぜ。 http://www.amazon.co.jp/g..]


2006-11-28 (Tue)

[Ruby] ruby-list 購読しようかなぁ

なんとなく、 [ruby-list:43003] Q:SQLite使用時に例外が<del>補足</del>捕捉できない? というスレッドを眺めていたら、

> # この仕様から考えて、例外クラスは通常 StandardError を継承するのが良いと思いますが…

そうなんですが、他の言語の経験に引っ張られてExceptionを直接使っちゃう人も時々いるんですよねぇ。

なんて話にでくわして、 得した気分。

何も指定しなかった場合の rescue 節がつかまえるのが StandardError だというのは、 Ruby らしい、面白い仕様ですね。 (「言語仕様とライブラリ仕様が密接であってはいけないという法はないんですよ > C++ 使い諸君」 って感じ。 *1

これ読んでなかったら、なんにも考えずに Exception を継承していた可能性大。

しかし、自分がつくった例外クラスに StandardError を継承させるのは、 ある種の勇気がいるな。(ライブラリ作成者は StandardError を継承させるべき、かな。)

*1 Ruby に出会って最初にこれと同じような面白さを感じたのが、変数名を大文字で始めると定数ってやつ。すごく意外だったけど、「ああ、なるほど」と嬉しかった。

人格のコピー問題(スタートレックにおける)

あそこに出ていく勇気はないので、遠巻きに。 (明日までまって同様のタレコミがなかったら考えよう。 ただ、それは余計な心配だな(きっとだれかが同じ情報を出す))

http://njb.virtualave.net/nmain0221.html#nmain20061128174602

ライカー副長がポチョムキン時代にコピーが作成されてしまう憂き目にあってますね。↓

http://homepage2.nifty.com/starbase_kobe/tngeps/6thseason/tngeps150.html

ドラマは単なるラブコメになってしまっていて、不満でしたが。

追記

うーんと、考えてみたら、「取り残され問題」と ライカーコピー事件はあんまり関係ないような気が。


2006-11-29 (Wed)

tDiary: 最新、月別表示を noindex にするってのは?

tDiary で作成されたページが Google 検索でヒットする場合、 同じ記事が「最新」、「月別」およびその日付の3つの URL で インデックスされることになりますが、Google は「最新」を優先して、 それ以外のものは「最も的確な結果を表示するために、」 除かれてしまいます。

たとえば、ここを「高階」でググってみた結果は、 こんな感じ

検索した人にとっては、その日のエントリにいけた方が幸せなんですけど、「ここから再検索」しないとたどりつけません。

これって、最新とか月別表示のときには <META NAME=robots CONTENT="noindex,follow"> にしておくことで改善できそうな気が。

しばらく試してみようかな。

・・・とおもって、「ただのにっき」のソースをみてみたら、まさに

<meta name="robots" content="noindex,follow">

と書いてあった(「最新」表示のとき。日毎のエントリにいくと index,follow になる)。 がーん。そりゃそうか。誰でも思いつきますね。

なんだろ。プラグインかな。バージョン依存かな。

→ search_control プラグインですね。

バージョン依存といえば、2.0.3 にあげなくちゃ。 (XSS対策とソフトバンク対策だけ手パッチあてようかなという出来心も少し)


2006-11-30 (Thu)

[Web] 苔 MAP

苔 MAP、すげー、ちょー格好いい。 (Taro's Page (2006/Nov/29) 経由)

一瞬「のり(海苔)マップ」と読んでしまった自分が恥ずかしい。

[Web] ドメイン特化言語 (Martin Fowler's Bliki 邦訳)

Rubyist Hotlinks 【第 17 回】 青木峰郎さん を読んで「えと、Domain Specefic Language ってなんだっけ」と思い、 そう思ったってことを既に忘れかけていることに気づいたので、 本当に忘れてしまわないうちにググっといた。

Domain ってのは、解こうとしている問題領域ってことですね。 DSL に化けさせるのに Ruby だってかなり良い言語だよなぁと思いつつ読んでいたら、

Rubyはこの2つの言語よりも決まりごとが多く、より大きな言語でありますが、 言語内DSLにも向いている(素晴らしい)言語です。

おお。

こないだ僕が 無闇に感動した SICP 4 章の冒頭というのは、「大きなプログラムを作ることと、 Domain Specific Language を作ることは似ている。 (だから、自由に作れるようになっとけ)」と言っているんですね。


2006|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|08|
2010|01|02|03|05|06|07|10|11|
2011|03|08|
2012|02|04|07|08|10|
2013|01|02|03|05|06|08|11|12|
2014|01|02|05|06|07|08|09|12|
2015|01|02|03|04|
Categories 3imp | Card | Cutter | Dalvik | Euler | Football | GAE/J | Hand | Haskell | Re:View | Ruby | Scheme | TQD | Tiger | TigerBook読 | UikiTeXi | Verilog | Violin | Web | parconc | tDiary | お勉強 | エントロピー | ツン読 | | 将棋 | 政治について | | 模写してみよう | 確率論 | 設定など | 雑文 | 音声