ぷーになったお祝いが振り込まれているかどうか確認しなければ...
スクリプトというのは台本なわけであるが、 これは最初から最後まで時系列順に並んでいるわけである。
台本みたいなプログラムのための言語が スクリプト言語である、というむりやりな定義は... まぁ、制御構造を使った時点で破綻するわけであるが、 プログラムの開始地点に関しては それなりな近似になっているような気もする。
(大雑把にいって)実行がファイルの頭から始まる言語は sh, Perl, Python, Ruby, Lisp, ML, PostScript, ...
(あからさまに)そうではない言語は awk, C, Java, Pascal, ...
(Prolog と Haskell は実行順序の概念があまりに異なるので除外。)
スクリプト言語と呼ばれるにもかかわらず実行がファイルの頭から 始まらない言語にはどのようなものがあるか?
そんなにすぐには振り込まれないか。
udpShell is a remote shell that uses UPD instead of TCP.
DFA から変換した正規表現がどの程度の大きさになるか概算する。
... 状態数を n とすると、4^n か?
こういうのは Unicode の Code Charts で調べられる。
風邪か?
いや、疑問符を付けるまでもなく風邪だな。
尻尾が二本。
txt2tags is a generic text converter that generates HTML, sgml, Magic Point (mgp), MoinMoin, and Adobe PageMaker documents from simple text files.
最近、簡単な markup に興味を持っているわけであるが、 そういうのをまとめたページってないんかね。
日本科学未来館
初めて肉眼でマイスナー効果(とピン止め効果)を見た。
インターネットのモデルなるものも試した。
端的にいえば、手元で 16bit のパケット(アドレス 8bit + データ 8bit)を 黒玉と白玉で構成して送り出すと宛先に届く、というものなわけである。 説明を聞いていると、「宛先が 8つあるからアドレスが 8bit」と ふざけたことをいうので 8bit なら 256種類表現できるだろうと指摘する。 なおも説明を聞いていると、 「データの方は(アドレスと違って)まともで ASCII に対応している」というのだが、 表現できる文字に片仮名があり、これは JIS ではないかと指摘しておく。 さらにハートマークもあり、どうも機種依存文字らしい。
そういう些細な点はおいておくとして、 とりあえずハートマークを送ってみようとするが、 ルーター(という用語は使っていなかったが)の調子が悪いらしく ループバックインターフェース(という用語も使っていなかったが)にしか送れないと いわれる。
送ってみたが、送れた。(手元に帰ってきた。)
もう一回探したら見つかった。
現時点で フラグメント化された IPv4 パケット、 ハンドシェーク無しの bind されていない TCP、 bind されていない UDP、 ICMP echo-reply/request、 生 IPv4 が使えるらしい。
DFA を正規表現に変換するものを書いてみる。
とりあえず例によって例のごとく 3の倍数を試す。
(((0*)+((((0*)1)((0+((2(0*))1))*))(2(0*))))+(((((0*)2)+((((0*)1)((0+((2(0*))1))*))(1+((2(0*))2))))(((0+((1(0*))2))+(((2+((1(0*))1))((0+((2(0*))1))*))(1+((2(0*))2))))*))((1(0*))+(((2+((1(0*))1))((0+((2(0*))1))*))(2(0*))))))
Grail で最小 DFA に変換してみると想定した DFA と isomorphic になっているのでちゃんと変換できている模様。
それはそれとして括弧を減らせないものかな。
減らしてみる。
0*+0*1(0+20*1)*20*+(0*2+0*1(0+20*1)*(1+20*2))(0+10*2+(2+10*1)(0+20*1)*(1+20*2))*(10*+(2+10*1)(0+20*1)*20*)
ふと、「蘊蓄」を(goo の)大辞林でひいてみる。
うぅむ。なんとなくニュアンスが違うな。 もうすこし滑稽な感じをもっているのだが。
共有してみる。
(?<:a>0*)+(?<:b>(?*a)2)(?<:c>(?<:d>(0+(?<:e>1)(?*b))*)(?*e)(?*a))+((?<:f>(?*a)1)+(?*b)(?<:g>(?*d)(2+(?*e)(?*f))))(0+(?<:h>2)(?*f)+(?<:i>1+(?*h)(?*b))(?*g))*((?*h)(?*a)+(?*i)(?*c))
うぅむ。文字列としてみると長くなってるな。 もっとでかくないと意味がないか。
7の倍数だと小さくなる。
共有しないと 34KB 以上必要なのに、共有すると 2KB 弱で済む。
(?<:a>0*)+(?<:b>(?*a)6)(?<:c>(?<:d>(0+(?<:e>1)(?*b))*)(?*e)(?*a))+(?<:f>(?<:g>(?*a)5)+(?*b)(?<:h>(?*d)(6+(?*e)(?*g))))(?<:i>(?<:j>(0+(?<:k>2)(?*g)+(?<:l>1+(?*k)(?*b))(?*h))*)((?*k)(?*a)+(?*l)(?*c)))+(?<:m>(?<:n>(?*a)4)+(?*b)(?<:o>(?*d)(5+(?*e)(?*n)))+(?*f)(?<:p>(?*j)(6+(?*k)(?*n)+(?*l)(?*o))))(?<:q>(?<:r>(0+(?<:s>3)(?*n)+(?<:t>2+(?*s)(?*b))(?*o)+(?<:u>1+(?*s)(?*g)+(?*t)(?*h))(?*p))*)((?*s)(?*a)+(?*t)(?*c)+(?*u)(?*i)))+(?<:v>(?<:w>(?*a)3)+(?*b)(?<:x>(?*d)(4+(?*e)(?*w)))+(?*f)(?<:y>(?*j)(5+(?*k)(?*w)+(?*l)(?*x)))+(?*m)(?<:z>(?*r)(6+(?*s)(?*w)+(?*t)(?*x)+(?*u)(?*y))))(?<:aa>(?<:ab>(0+(?<:ac>4)(?*w)+(?<:ad>3+(?*ac)(?*b))(?*x)+(?<:ae>2+(?*ac)(?*g)+(?*ad)(?*h))(?*y)+(?<:af>2+(?*ac)(?*n)+(?*ad)(?*o)+(?*ae)(?*p))(?*z))*)((?*ac)(?*a)+(?*ad)(?*c)+(?*ae)(?*i)+(?*af)(?*q)))+(?<:ag>(?<:ah>(?*a)2)+(?*b)(?<:ai>(?*d)(3+(?*e)(?*ah)))+(?*f)(?<:aj>(?*j)(4+(?*k)(?*ah)+(?*l)(?*ai)))+(?*m)(?<:ak>(?*r)(5+(?*s)(?*ah)+(?*t)(?*ai)+(?*u)(?*aj)))+(?*v)(?<:al>(?*ab)(6+(?*ac)(?*ah)+(?*ad)(?*ai)+(?*ae)(?*aj)+(?*af)(?*ak))))(?<:am>(?<:an>(0+(?<:ao>5)(?*ah)+(?<:ap>4+(?*ao)(?*b))(?*ai)+(?<:aq>3+(?*ao)(?*g)+(?*ap)(?*h))(?*aj)+(?<:ar>2+(?*ao)(?*n)+(?*ap)(?*o)+(?*aq)(?*p))(?*ak)+(?<:as>1+(?*ao)(?*w)+(?*ap)(?*x)+(?*aq)(?*y)+(?*ar)(?*z))(?*al))*)((?*ao)(?*a)+(?*ap)(?*c)+(?*aq)(?*i)+(?*ar)(?*q)+(?*as)(?*aa)))+((?<:at>(?*a)1)+(?*b)(?<:au>(?*d)(2+(?*e)(?*at)))+(?*f)(?<:av>(?*j)(3+(?*k)(?*at)+(?*l)(?*au)))+(?*m)(?<:aw>(?*r)(4+(?*s)(?*at)+(?*t)(?*au)+(?*u)(?*av)))+(?*v)(?<:ax>(?*ab)(5+(?*ac)(?*at)+(?*ad)(?*au)+(?*ae)(?*av)+(?*af)(?*aw)))+(?*ag)(?<:ay>(?*an)(6+(?*ao)(?*at)+(?*ap)(?*au)+(?*aq)(?*av)+(?*ar)(?*aw)+(?*as)(?*ax))))(0+(?<:az>6)(?*at)+(?<:ba>5+(?*az)(?*b))(?*au)+(?<:bb>4+(?*az)(?*g)+(?*ba)(?*h))(?*av)+(?<:bc>3+(?*az)(?*n)+(?*ba)(?*o)+(?*bb)(?*p))(?*aw)+(?<:bd>2+(?*az)(?*w)+(?*ba)(?*x)+(?*bb)(?*y)+(?*bc)(?*z))(?*ax)+(?<:be>1+(?*az)(?*ah)+(?*ba)(?*ai)+(?*bb)(?*aj)+(?*bc)(?*ak)+(?*bd)(?*al))(?*ay))*((?*az)(?*a)+(?*ba)(?*c)+(?*bb)(?*i)+(?*bc)(?*q)+(?*bd)(?*aa)+(?*be)(?*am))
ま、実際のところメモリ消費がどうなるかは今のところ不明であるが、 かなり小さくなるのは間違いあるまい。
あずまんが大王を見る。
ふと思い出したのでよみのめがね回りを観察してみる。 ふむ、度による輪郭のずれがないな。
小さいのは展開してみる。
0*+0*2(?<:a>(0+10*2)*10*)+(0*1+0*2(?<:b>(0+10*2)*(2+10*1)))(0+20*1+(1+20*2)(?*b))*(20*+(1+20*2)(?*a))
文字列としてみてもちょっと短くなった。
正規表現は DFA から連立方程式をたてて消去法で求めているわけであるが、 消去の順番を生成される正規表現のサイズについて最適化するにはどうしたらいいか?
dynamic programming? そう単純にはいかない?
あっちでは 7の倍数は 481,878,604bytes らしい。
こっちのは(あっちにあわせて 0 を [07] にしたりして、もちろん共有は行なわない場合に) 64326bytes である。
こっちに比べ、あっちは約7491倍ほど大きい。
給与のシステムに軽微な問題を見つける。
境界条件は重要である。
用事があって TACC に行く。
受付の前に(稼働していない) CRAY があって、ソファとして再利用されていた。
ソファ部分は 180度の扇形で、 体を伸ばして寝るには不適切な形状だと思った。
Regular Expressions into Finite Automata をすこし眺める。
正規表現の最適化として、ここでいう star normal form は興味深い。
* の内部の最後で、もう一回繰り返すかあるいは続きに行くかが 先読み一つで決定するというシロモノであり、 しかも簡単に一般の正規表現を star normal form に変換できる。
camlp4 は 3.04 で標準添付になったような。
ふと、自分がどの時間帯にメールを書いているか調べてみる。
% ruby -rtime -rmailread -e ' h = {} h.default = 0 until (m = Mail.new(STDIN)).header.empty? next unless /akr@m17n.org/ =~ m["from"] h[Time.rfc822(m["date"]).localtime.hour] += 1 end (0..23).each {|k| p [k, h[k]]} ' < 2002-* [0, 6] [1, 6] [2, 4] [3, 8] [4, 7] [5, 6] [6, 4] [7, 5] [8, 4] [9, 2] [10, 1] [11, 5] [12, 8] [13, 14] [14, 17] [15, 14] [16, 22] [17, 24] [18, 21] [19, 9] [20, 5] [21, 5] [22, 12] [23, 7]
ふむ。10時台を重点的に強化すべきか?
個人用の BTS ってないだろうか。
自分がいろんなプロジェクトに報告したバグの状態(直ったとか、誤解だったとか) を管理してくれるような。
チキチキ
CVSLines helps when committing changes on several branches in CVS.
--num で終わるブランチタグをちょっと特殊扱いするように cvs-1.11.2 をいじくってみる。
CVSTrac implements a low-ceremony Web-based bug tracking system for a CVS repository.
ふと思ったのだが、なぜ†は注とかに使われるのだろう?
短剣と注になんの関係が?
うぅむ。cvs-1.11.2 なサーバに古い cvs client で繋げて -z で圧縮をかけると、hang up する?
client も 1.11.2 なら大丈夫なのだが。
xemacs の cvs を(差分的に)吸い出すのに 27時間もかかりやがった。
量は最低限に抑えないとならんか。
どこかの本から HTML で記述されたページに引用するにはどのようにするのが適切だろうか?
とりあえず、blockquote 要素で cite 属性に ISBN URN を書くのはいいとして、 著作者名をどう記述するのが適切か?
そっか。cite 要素があるか。
title 属性も使えるか。
いつのまにか info-cvs は members-only になっていたか。
フジテレビの番組表を w3m/0.3+cvs-1.353-m17n-20020316 で見て、「藍より青し」が見えないことに気がつく。
報告する前に入力を最小化しなければならないわけだが... 面倒過ぎ。 HTML ファイルを削っていくのに適した WYSIWYG な HTML エディタってないものかな。
... すでに直っている模様。
info-cvs は non-member な post に関しては moderated なわけだ。
GNU ghostscript 7.05 を試す。
ついに日本語フォントも含めてきれいな PDF を生成できた(と思う)。
うぅむ。bug-cvs は依然として SPAM まみれなわけか。 いっしょに変えなかったのはなぜだろう?
cvsbug の宛先だから? 物好きしか購読しないはずだから?
gnu.ghostscript.bug に From: akr@jaist.ac.jp な記事を見つける。 しばらく前に出した覚えのないメールに関してどうこういう auto reply が来ていたのはそういうわけか。
HTML の表を読み直す。
ふと思ったのだが、HTML 出力で 行グループ、列グループ、headers, axis といった指定を 生成するようなスプレッドシートはあるのだろうか?
計算式とかから変換できるような気がする。
未読の本が溜っている場合、 FIFO で処理すべきか? それとも LIFO が適切か?
xml2 convert XML and HTML to and from a line-oriented format more amenable to processing by classic Unix pipeline processing tools, like grep, sed, awk, cut, shell scripts, and so forth.
RFC2397 には著者の顔(だと思う)が埋め込まれていることに気がつく。
chapter と section はどう違う?
ふむ。HTML4.01 の heading は section の見出しなのだな。
『追伸。スペーシングということ。』のところが面白い。 「関係の深いものを近づけ、関係の薄いものを遠ざけよ」という原理に納得する。
w3m で、リスト中に複数のパラグラフがあり </p> を省略した時に、 最後のパラグラフと次の項目が空行無しでくっつくのが気に入らなかったのだが、 これはその原理に従っていないからなのだな。
kterm や emacs の行間を広くしたがる人もこの原理に従っていないところが 気になっているのかも知れない。
周囲を見回すと組版の本が二冊あったので、ちょっと眺めてみる。
プレインテキストに対して普通の組版(らしきこと)を行なうものはあるだろうか?
開き鍵括弧で行が始まる時にはインデントを半角ひとつ減らして 天つきにするとか。 句読点をぶら下げにするとか。
句読点や丸括弧は半角を使うと、 (つめることが可能になって) 組版の自由度が上がるのかも知れない。
メール・ニュースにおいて改段落を(空行ではなく)字下げによって表現する流儀をとっている人はいるだろうか?
疑問符や感嘆符の後には(文が続く場合に)空白を入れるのか...
とすると、行を連結するときに日本語だからといって常に空白無しとはいかないわけだ。
[latest]