天泣記

2003/09/01

#1

なにかをラップするラッパーがあるとして、 そのラッパーを経由して全ての機能を使用可能であることを機械的に確認するためには、 ラッパーの記述能力をどのくらい落せばいいか。

#2

ラップされるものに対する入力を定義し、 それがラッパー経由の入力で全部表現できることを示せば良い?

出力に関しては、 ラップされるものからの出力をラッパー経由の出力から再現できることを示す?

分割したり場合わけしたものを組み合わせて全部表現できることを確認できるような形式... 正規表現?

2003/09/02

#1

khtml のコード推定は jvim のをベースとしている模様。

2003/09/03

#1

"\244\263\244\363\244\313\244\301\244\317" というバイト列の エンコーディングを推定して以下から選び、理由を述べよ。

  1. Shift_JIS
  2. EUC-JP
  3. GB2312
  4. ISO-8859-1
#2

参照しているアンテナ(など)のリストを出力してみる。

ふむ。LIRS はそれを生成したアンテナ自身の情報を含んでないのがちとなんだな。

2003/09/04

#1

RSS の link 要素から URI を取り出してリンクするようにしてみる。 これで、RSS を監視対象にした場合にいちいちリンク先を書かなくても済む。

しかし、RDF な RSS が RSS であることはどうやって判断するのが正しいのであろうか。 media type はまだ登録されてないみたいだし、 root 要素は RDF であって RSS 以外にも使われるし、 拡張子も rdf なことが多いし。

root 要素に RSS の名前空間が宣言されているかどうかってのも変だよなぁ。

ふむ。RSS であることを意識する必要が無いもしくは意識すべきでない、という見方はあるかも知れない。

2003/09/05

#1

MailMan-to-RSS: MailMan RSS feeds

#2

nntp//rss is a Java-based bridge between RSS feeds and NNTP clients, enabling you to read your favorite RSS syndicated content within your existing NNTP newsreader.

#3

nntp2rss - access usenet newsgroups via RSS

2003/09/06

#1

ポプラパレスを1話から4話まで全部読む。

これでこの作者のは全部読んだ、かな。

2003/09/07

#1
% google-hit 大吉 中吉 小吉 吉 末吉 凶 大凶
大吉 180000
中吉 18100
小吉 22500
吉 3390000
末吉 66800
凶 901000
大凶 32400

実際の割合との相関は?

並べ直してみる。

吉   3390000
凶   901000
大吉 180000
末吉 66800
大凶 32400
小吉 22500
中吉 18100

おみくじと統計学

うぅむ。割合はともかくとして順番はあっているような。

#2
% google-hit 東 西 南 北
東 9020000
西 12200000
南 11400000
北 13100000

世の中には東が少いらしい。

つまり...

/GothicBBB-Medium-EUC-H 20 selectfont
300 300 moveto 300 300 80 45.0 148.149606299213 arc stroke
286.259965699454 419.210785826702 moveto (北) show
300 300 moveto 300 300 80 148.149606299213 244.212598425197 arc stroke
184.753721764433 266.559076674673 moveto (西) show
300 300 moveto 300 300 80 244.212598425197 333.976377952756 arc stroke
339.25523929061 186.602353691812 moveto (南) show
300 300 moveto 300 300 80 333.976377952756 405.0 arc stroke
418.358352444131 319.781314585001 moveto (東) show
showpage

こんなかんじ。

2003/09/08

#1

XML の namespace について調べ直す。 つまり、仕様といくつかの XML ライブラリの API を調べる。

namespace は親から継承されるので、 ある要素においてある名前の意味(名前空間)は祖先の要素の名前空間宣言に影響される。

API はこのへんをどうやってサポートしているか? とくに関数型言語で。

#2

論文の査読のしかた

2003/09/09

#1

要素から名前空間を得るためには祖先を調べないとけないので、 その要素から親への参照が必要である。

が、関数型言語では親への参照を嫌うため、 それなりにいろいろな工夫が行われているようである。

ここで疑問が湧く: 論理型言語ではどうなのか?

2003/09/10

#1

さて、湧いた疑問は気にしないことにして、関数型について考える。

... そういういろいろな工夫をしなかったらどうなるだろう?

まぁ、Scheme や ML で破壊的変更を使って親への参照を実現するのは面白くも何ともないので、Haskell でやってみよう。

というわけで、(いきなり木を扱うのも何なので) 双方向リストを書いてみる。

data DoublyLinkedList = Elt Integer (Maybe DoublyLinkedList) (Maybe DoublyLinkedList)

value :: DoublyLinkedList -> Integer
value (Elt v _ _) = v

next (Elt _ _ Nothing) = error "no next element"
next (Elt _ _ (Just e)) = e

prev (Elt _ Nothing _) = error "no previous element"
prev (Elt _ (Just e) _) = e

d1 = Elt 1 Nothing (Just d2)
d2 = Elt 2 (Just d1) (Just d3)
d3 = Elt 3 (Just d2) (Just d4)
d4 = Elt 4 (Just d3) Nothing

makelist_r n next =
  if n == 1 then Elt 1 Nothing next
            else let r = Elt n (Just (makelist_r (n-1) (Just r))) next in r
            
makelist n = makelist_r n Nothing

l10 = makelist 10

うぅむ。書けるか。

#2

Psychology of Programming Interest Group (PPIG)

#3

なんとなく、webrick を使って、 ブラウザからオブジェクトを眺めてみる。

#!/usr/local/bin/ruby

require 'pp'
require 'webrick'
include WEBrick

s = HTTPServer.new( :Port => 2000 )

class ObjectServlet < HTTPServlet::AbstractServlet
  def do_GET(req, res)
    res['Content-Type'] = "text/html"
    case q = req.query_string
    when /\A\d+\z/
      id = q.to_i
      begin
        obj = ObjectSpace._id2ref(id)
        res.body = page_object(obj)
      rescue RangeError
        res.body = page_no_object
      end
    when nil
      res.body = page_modules
    else
      res.body = "<html>unrecognized query: #{HTMLUtils.escape q}</html>"
    end
  end

  def page_modules
    mods = []
    ObjectSpace.each_object(Module) {|mod| mods << mod }
    mods = mods.sort_by {|mod| mod.name }
    classes, modules = mods.partition {|m| Class === m }

    str = ""
    str << '<html>'
    str << "<h1>class list</h1>"
    str << "<ul>\n"
    classes.each {|c| str << "<li>#{object_link c}\n" }
    str << "</ul>\n"
    str << "<h1>module list</h1>"
    str << "<ul>\n"
    modules.each {|m| str << "<li>#{object_link m}\n" }
    str << "</ul>\n"
    str << '</html>'
    str
  end

  def self.object_link(obj)
    str = "<a href='.?#{obj.object_id}'>"
    if block_given?
      str << yield
    else
      str << HTMLUtils.escape(obj.inspect)
    end
    str << "</a>"
  end
  def object_link(obj) self.class.object_link(obj) end

  def page_object(obj)
    if obj.respond_to? :html_page
      obj.html_page
    else
      str = ""
      str << '<html>'
      str << object_link(obj.class)
      str << ":" << obj.object_id.to_s
      str << "<table border>"
      obj.instance_variables.sort.each {|iv|
        str << "<tr>"
        str << "<td>" << iv
        str << "<td>" << object_link(obj.instance_variable_get iv)
      }
      str << "</table>"
      str << '</html>'
      str
    end
  end

  def page_no_object
    "<html>no object id=#{id}</html>"
  end
end

class Hash
  def html_page
    str = ''
    PP.pp(self, str)
<<"End"
<html>
<pre>
#{HTMLUtils.escape(str)}
</pre>
End
  end
end

class Module
  def html_page
    objs = []
    ObjectSpace.each_object(self) {|o| objs << o }
    str = '<html>'
    str << '<ul>'
    objs.each {|o|
      str << '<li>'
      str << ObjectServlet.object_link(o)
    }
    str << '</ul>'
    str << '</html>'
    str
  end
end

# mount a servlet
s.mount("/", ObjectServlet)

# Hit Ctrl-C to shutdown
trap("INT"){ s.shutdown }

s.start

2003/09/11

#1

さて、台風である。

レーダー画像をアニメーションさせて眺めていると、 台風の中心で雨が降っていないのは目なのでいいとして、 その外側に降っていない輪のような領域があることに気がつく。

#2
% google-hit 台風の{目,眼,芽,女}
台風の目 27700
台風の眼 676
台風の芽 95
台風の女 1
#3
% google-hit ブラウザ{で,な,の,が}ブラウザ
ブラウザでブラウザ 52
ブラウザなブラウザ 1
ブラウザのブラウザ 151
ブラウザがブラウザ 29

2003/09/14

#1

Preston Wiki - 翻訳ツール

#2

xmlns は let に似ている。 名前に意味を与え、その名前は内部でのみ有効になる。

だが、抽象構文木の ADT を作るときに let の扱いを特別に支援しようと思ったことは無い。 なぜ、xmlns では支援したくなるのか?

2003/09/15

#1

ふと思ったのだが、unit test の setup/teardown というのは、 高階関数を扱えるならひとつで済ますことが可能なのではないだろうか。

2003/09/17

#1

FREQT: An implementation of FREQT (C++)

Frequent Tree Miner (tmine) は頻出する木構造パターンを効率良く抽出するためのプログラムです。(Ruby)

#2
% google-hit {{横,縦}{形,型},{幅,深さ}優先}探索 'breadth first search' 'depth first search'
横形探索 48600
横型探索 52400
縦形探索 8160
縦型探索 9020
幅優先探索 864
深さ優先探索 950
"breadth first search" 31500
"depth first search" 56200

横形探索 + 横型探索 + 幅優先探索   = 92536
縦形探索 + 縦型探索 + 深さ優先探索 = 16953

結論: 日本語では横型探索が多く使われ、 英語では depth first search が多く使われる。

2003/09/18

#1
% google-hit 時間計算量 空間計算量
時間計算量 13200
空間計算量 5620
#2

時間計算量が空間計算量よりも良くなることはあるか?

あるわけないか...

2003/09/19

#1
% google-hit {一,二,三,四,五,六,七,八,九}足歩行
一足歩行 3110
二足歩行 29800
三足歩行 170
四足歩行 4260
五足歩行 21
六足歩行 251
七足歩行 6
八足歩行 37
九足歩行 2

ふむ。件数を logscale にしてプロットすると、 鋸みたいな形になる。

これからみると、奇数歩行よりも偶数歩行のほうが多い。

#2
% google-hit 奇数歩行 偶数歩行
奇数歩行 1460
偶数歩行 1310

これからみると、奇数歩行よりも偶数歩行のほうが少ない。

#3

あ、忘れていた。一から九まででは奇数のほうが多くて不公平ではないか。

% google-hit 零足歩行 
零足歩行 not-found

まぁ、影響なかったか。

#4

ふと、AOP と comefrom の類似性について考える。

まぁ類似といっても、制御の流れの指示を書く場所と、流れの変化が起きる場所が違うというだけなのだが。

2003/09/20

#1

WebL

2003/09/22

#1
% google-hit だむだむ ぢむぢむ づむづむ でむでむ どむどむ
だむだむ 820
ぢむぢむ 1
づむづむ 3
でむでむ 78
どむどむ 525

ふむ、こういうのはコマンドラインではうまくまとめられないか。

2003/09/23

#1
% google-hit たい焼き{,たい{,焼き}} 焼きたい{,焼き{,たい}}
たい焼き 15300
たい焼きたい 13
たい焼きたい焼き 12
焼きたい 9250
焼きたい焼き 23
焼きたい焼きたい 27

2003/09/24

#1

The Telnet Song というのがあることを知る。

ふむ。他にあるのだろうか。

% f=(/bin/*(:t)) 
% google-hit 'The '${^f}' Song' |sort -n +3|tail -30
"The login Song" 1
"The ping Song" 1
"The pwd Song" 1
"The arch Song" 2
"The sync Song" 2
"The cp Song" 4
"The sed Song" 4
"The df Song" 5
"The tar Song" 5
"The dash Song" 8
"The rm Song" 8
"The mount Song" 10
"The ps Song" 11
"The sh Song" 11
"The su Song" 12
"The ls Song" 13
"The date Song" 17
"The false Song" 17
"The mt Song" 19
"The mv Song" 23
"The kill Song" 26
"The touch Song" 57
"The ash Song" 77
"The sleep Song" 105
"The echo Song" 135
"The dd Song" 296
"The more Song" 355
"The ed Song" 473
"The true Song" 546
"The cat Song" 569
#2

Computer songs and poems

#3
% google-hit ばちばち びちびち ぶちぶち べちべち ぼちぼち
ばちばち 2050
びちびち 1010
ぶちぶち 4460
べちべち 109
ぼちぼち 301000

2003/09/27

#1

ふと、xbomb をやってみる。 よーするにマインスイーパなのだが、 四角形だけじゃなくて三角形と六角形をサポートしているものである。

疑問:

#2

ふと、cxhextris をやってみる。 よーするにテトリスなのだが、 四角形じゃなくて六角形なものである。

疑問:


[latest]


田中哲