天泣記

2003/08/01

#1

ふと、プロジェクトの名前を占うツールとして、 project-name というものを作ってみた。

% project-name template    
template:
google hit          : 8300000
sourceforge.net     : already registered
sourceforge.jp      : not registered
savannah.gnu.org    : not registered

というように、google でのヒット数と、 いくつかのサイトで登録されているかどうかを調べるもの。

2003/08/02

#1

ついでに、google だけ調べるのも作る。

% google-hit {a-z}template
atemplate 4570
btemplate 1390
ctemplate 481
dtemplate 3410
etemplate 1110
ftemplate 4530
gtemplate 85
htemplate 2480
itemplate 978
jtemplate 375
ktemplate 709
ltemplate 248
mtemplate 484
ntemplate 166
otemplate 280
ptemplate 816
qtemplate 209
rtemplate 84
stemplate 940
ttemplate 980
utemplate 28
vtemplate 858
wtemplate 789
xtemplate 2590
ytemplate 11
ztemplate 185
#2

アンテナの HTML を適当に使って更新を検査する部分も HTree に移行する。 これで Tidy と REXML は不要になった。

#3

これで samidare の非標準なものに対する依存は xtemplate だけになったのだが、 これはどうするか。

新しく作りたいところだが、うまい名前が思いつかない。 htree と対になる htemplate を考えていたのだが、 google で 2480 も hit するのが気にいらない。

2003/08/03

#1

LINKS ARoMATIZED

2003/08/04

#1

Presentation Technologies

#2

TwistedWoven って Amrita に似てるなぁ。

#3

結果論ではあるが、 ChangeLog の移動をリリース後にすべき理由として、 リリース前はたてこんでいるからというのをあげておくべきであった。

2003/08/06

#1

The Web Framework Shootout

2003/08/08

#1

LIRS の時差を使っているところが実際にあるのかどうかを調べてみる。

とりあえず手元に集まっているので grep -v ,32400, *.lirs としてみる。 ふむ。はなから指定する気がなさそうなの(0)もあれば、 それっぽい値を指定してあるのもあるな。

#2

東京

#3

2003/08/09

#1

東京

#2

2003/08/11

#1

LIRS を生成してみる。

2003/08/12

#1

samidare は後からどこが変化したか調べるために最新の内容とひとつ前の内容の 2つをファイルとして手元に残しておくのだが、 この数を設定可能にしてみる。

とりあえずこれでバ... もとい、tenki.jp のレーダーの日本全図を しばらく貯め、animate で眺めてみる。

雨が動いていくのがなかなか楽しい。 しかし、10分間隔で更新されないことのほうが多いな。

2003/08/13

#1

samidare の利点

うぅむ。レーダーにはぜんぜん役にたってないな。

#2
% ruby -e '
h = {}
h[0.0/0.0] = 1
h[0.0/0.0] = 2
h[0.0/0.0] = 3
p h'
{NaN=>3, NaN=>2, NaN=>1}

% ruby -e '
h = {}
nan = 0.0/0.0
h[nan] = 1
h[nan] = 2
h[nan] = 3
p h'
{NaN=>3}

% ruby -e '
nan = 0.0/0.0
p nan.eql?(nan)'
false
#3

google

なん 2940000
ナン 507000
NaN 1550000

2003/08/14

#1

雨である。

まぁ、レーダー画像のアニメーションが変化に富んでいるのは面白い。

... 台風来ないかな。

#2

気象レーダーリンク集

うぅむ。

2003/08/17

#1

昨日から頭痛気味なので、十分に眠ってみる。

なんとなく直ったかんじ。

#2

しかし、トラブルがあったらとりあえずいつもの対処を適用し、 症状が消えたっぽくてもちゃんと治ったかどうか今ひとつ判然としないというのは、 なんというか Windows を連想させるものがある。

2003/08/18

#1

Software Design 2003年9月号 に「zsh を使ってみよう」という記事を書いたのだが、 中身は Ruby のインストールというかなんというか、 どのくらい受けるのだろうか。

#2

文庫本 4

#3

文庫本 +1

#4

熱海

#5

発表

2003/08/19

#1

熱海

#2

文庫本 +7

2003/08/20

#1

西早稲田

2003/08/21

#1

西早稲田

#2

さくら

2003/08/22

#1

西早稲田

2003/08/23

#1

aosd-jp: アスペクト指向言語、アスペクト指向ソフトウエア開発など、アスペクト指向に関連した情報交換を行うためのML

#2

データマイニングの宝箱

2003/08/24

#1

HTML で、head 要素の profile 属性に相対 URI を記述した場合、 base 要素は効くのだろうか?

2003/08/26

#1

ローカルの HTML ファイル中に form 要素を書き、 action 属性に他のローカルな HTML ファイルを指定してみた。

w3m でも mozilla でも submit すると単に action に指定した HTML ファイルが表示される。

#2
% google-hit {さ,サ,査}{{ど,ド}{く,ク},読}
さどく 79
さどク 1
さドく 1
さドク 21
さ読 224
サどく 1
サどク not-found
サドく 10
サドク 119
サ読 48
査どく not-found
査どク not-found
査ドく not-found
査ドク not-found
査読 13100

2003/08/27

#1

オブジェクトを破壊的に変えるには、 その影響範囲を把握している必要がある。 つまり、破壊的に変更しようとするオブジェクトを参照しているところが どのへんにあるのか把握する必要がある。

しかし、とくに文字列など小さなオブジェクトについて適当に引数に渡していると影響範囲を把握していない状況になることがあり、 その場合は破壊的変更はできない。 (複製して変更するというのは、 影響範囲が把握できるオブジェクトを作って変更するということである)

ここで、 影響範囲を把握している状態から、 把握していない状態に遷移することは可能であるが、 逆方向の遷移には無理がある。

ということは、オブジェクトの生成から回収に至る一生において、 破壊的変更は前半に偏るという可能性があるのではないか。

#2
% google-hit もったいないおばけ
もったいないおばけ 848
#3

rna - RSSベースのアンテナ「RNA」

#4

himi さんと、XML って羹に懲りて膾を吹いてる感じ、などという話をする。 (属性の中に < を直接書けないところとか)

2003/08/28

#1

うぅむ。Qt は C++ を拡張して使ってんのか。

#2
% google-hit 再帰ん
再帰ん 8

とゆーか、この言い回しを使ってるのは一人の模様。

2003/08/29

#1

The RWiki - たむら::日本語文字コードの自動判定

追試してみる。

IPADIC を取ってきて *.dic から見出し語を取り出して... おや、数が合わないな。217338 も出てきた。 まぁいいや、気にしないことにしよう。

元が EUC-JP なので iconv で他のコードに変換して... おや、変換不能な文字が入ってるな。 まぁいいや、そういうのは消してしまおう。

Shift_JIS, UTF-8, ISO-2022-JP のデータをつくって集計してみる。

% ruby -rmconv -e 'ARGF.each {|line| p line.guess_charset }' d.euc|sort|uniq -c
 217309 "euc-jp"
% ruby -rmconv -e 'ARGF.each {|line| p line.guess_charset }' d.sjis|sort|uniq -c 
    430 "euc-jp"
 216879 "shift_jis"
% ruby -rmconv -e 'ARGF.each {|line| p line.guess_charset }' d.utf8|sort|uniq -c 
   5113 "euc-jp"
 117967 "shift_jis"
  94229 "utf-8"
% ruby -rmconv -e 'ARGF.each {|line| p line.guess_charset }' d.jis|sort|uniq -c 
 217309 "iso-2022-jp"

ふむ、たしかに UTF-8 の認識率が低い。

判断できなかったときは名前の辞書順で選んでるから、 そこを全部返すようにして、どういう内訳になってるか調べてみる。

% ruby -rmconv -e 'ARGF.each {|line| p line.guess_charset_list }' d.euc|sort|uniq -c
   2850 ["euc-jp", "shift_jis", "utf-8"]
 133539 ["euc-jp", "shift_jis"]
  80920 ["euc-jp"]
% ruby -rmconv -e 'ARGF.each {|line| p line.guess_charset_list }' d.sjis|sort|uniq -c 
    430 ["euc-jp", "shift_jis"]
    147 ["shift_jis", "utf-8"]
 216732 ["shift_jis"]
% ruby -rmconv -e 'ARGF.each {|line| p line.guess_charset_list }' d.utf8|sort|uniq -c 
   5113 ["euc-jp", "shift_jis", "utf-8"]
 117967 ["shift_jis", "utf-8"]
  94229 ["utf-8"]
% ruby -rmconv -e 'ARGF.each {|line| p line.guess_charset_list }' d.jis|sort|uniq -c 
 217309 ["iso-2022-jp"]

なかなか面白い。いろんなことがわかる。

ここで興味深いのは、 Shift_JIS を UTF-8 かもしれないと判断することは少いけれど、 UTF-8 を Shift_JIS かもしれないと判断することはかなり多いというところである。 ということは、Shift_JIS と UTF-8 の優先順位をひっくり返せば、 Shift_JIS の認識率をあまり落さずに UTF-8 の認識率を上げられるはず、というわけでひっくり返した。

% ruby -rmconv -e 'ARGF.each {|line| p line.guess_charset }' d.euc|sort|uniq -c 
 217309 "euc-jp"
% ruby -rmconv -e 'ARGF.each {|line| p line.guess_charset }' d.sjis|sort|uniq -c 
    430 "euc-jp"
 216732 "shift_jis"
    147 "utf-8"
% ruby -rmconv -e 'ARGF.each {|line| p line.guess_charset }' d.utf8|sort|uniq -c 
   5113 "euc-jp"
 212196 "utf-8"
% ruby -rmconv -e 'ARGF.each {|line| p line.guess_charset }' d.jis|sort|uniq -c 
 217309 "iso-2022-jp"

つまり、 Shift_JIS の認識率が 99.8% から 99.7% に落ちるのと引き替えに、 UTF-8 の認識率を 43.4% から 97.6% に上げられたことになる。

#2

ちょっと並べ直してみる。

["euc-jp", "shift_jis", "utf-8"]   utf-8:5113
["euc-jp", "shift_jis", "utf-8"]   euc-jp:2850 

["shift_jis", "utf-8"]             utf-8:117967
["shift_jis", "utf-8"]             shift_jis:147

["euc-jp", "shift_jis"]            euc-jp:133539 
["euc-jp", "shift_jis"]            shift_jis:430

["iso-2022-jp"]                    iso-2022-jp:217309
["shift_jis"]                      shift_jis:216732
["utf-8"]                          utf-8:94229
["euc-jp"]                         euc-jp:80920 

一般にこういうので全てのデータと矛盾しない優先順位が存在するとはかぎらないわけだが、 この場合には存在するようだ。

そういう優先順位にするためには、 EUC-JP よりも UTF-8 を優先することになるようで、 そうすればこのデータに関しては結果が少し良くなるのだろう。

しかし、最終的な認識率は、 実世界で扱うデータの中での EUC-JP と UTF-8 の量に依存するわけで、 UTF-8 のデータよりも EUC-JP のデータが 5113/2850 倍よりも多ければ、 EUC-JP を優先したほうが多くの場合で正しく認識することになるわけである。

まぁ、なんとなくそんな気がするので現時点では EUC-JP 優先にしておくことにする。

#3

いや、「実世界で扱うデータの中での EUC-JP と UTF-8 の量」ではなく、 「実世界で扱うデータの中での EUC-JP と UTF-8 のうち、EUC-JP としても UTF-8 としても正しいものの量」か。

2003/08/31

#1

TextCat Language Guesser

TextCat is an implementation of the text categorization algorithm presented in Cavnar, W. B. and J. M. Trenkle, ``N-Gram-Based Text Categorization''

#2

Language identification

#3

Language Identification

#4

A composite approach to language/encoding detection


[latest]


田中哲