ToDo:
もう世界はジョブズのものになるんだと思った。 っていうかジョブスかジョブズかもわからない。 あと端末は打てるようになったけど w3m には日本語通らないからぐぐれない。 あと HHK Pro を MacBook に刺しちゃったので Thinkpad さわらなくなった。
http://d.hatena.ne.jp/atty/20070223/p1
そういえば Firefox 入れてないからえらい不便だったんですね!! Safari ってなんだこれわ!
まぁ僕はいくらなんでも日常使いマシンがゴルフサバになってるのは おたがい不幸だよねーというタイミングで おやねんがんのおかねが手に入ったぞーということで、 Mac はどうせ僕には使えないだろうから Linux マシンとして欲しいもの…ということで探すとどうにも MacBook しか無いという有様で (次点は HP のノートだった理由はかっこいいからとかそんな) まぁスペックとか色々不満はあるけど (もっと重くていいからシルバー層向けに液晶デカくしろとか) なんていうかクロスプラットが服着て歩いてるを 目指しつつ全然目指してない我が家としては、 ウチにも OSX 欲しいよなーというのはごく自然の流れでほげほげ。
案外 OSX のままでも使いものになりそうなんだよなー。 ニッチで誰もやってない w3mimgdisplay と sevilwm の 目処が同時に立ったのはでかい。
ところでホッピーとかいかがですかという。
http://zinnia.dyndns.org/~hiki/SandBox/?%C2%E8%B0%EC%B2%F3%A5%DB%A5%C3%A5%D4%A1%BCOFF
(01:57)
http://d.hatena.ne.jp/w_o/20070223#p1
正規表現ネタキタ。
最近正規表現のことばかり考えてるのですよ 主にゴルフのせいで。
正規表現は可読性最悪なのですが、 短いバイト数に豊富命令を押し込むって能力はズバ抜けてる。 明らかに成功した DSL のトップ1なのは間違いない。
んでそいうこと考えるとこれはどう見ても言語環境つか VM ですっていうノリでね。 入力文字列をスタックと見たスタックマシンとして考えると、 スタックプッシュする関数とか、動的に正規表現をスタックから生成する 機能があればこれっていわゆる Turing Complete !?!? (よくわかってない) なんじゃないかとかそんなことを思ってたのがうんいくらか前の話。
あとたぶん正規表現が正格表現とかも呼ばれるアレじゃないのは あの \1 とかいう 後方参照とかがおーとまとんで書けない例だと理解してたんだけど、 まぁよくわからない。
形式言語理論っていうオートマトンがどうのとか正規表現がどーのとかいう 授業を 5 回も受けた (なんとこれはあの k.inaba さんの推定5倍の数字なのである!!!!) 私が言うのだからまかせてくれといったところです。
ところでホッピーとかどうですか
(02:12)
これも DFA とか NFA とか同様、よくわかってない単語だった。 ただ DFA と NFA はもうわかってるよ前の shiro さんの pdf 見たりしたときにわかった!
んで Turing Complete は なんとかセミナーの時に情報理工のやんごとなき人々が 2D は Turing Complete だけど BALANCE は違うとか言ってて、 まぁそんなもんかなーと思いつつも なんでそんなにすぐわかるんだろーっていうか 何言ってんだコイツみたいなことを思ってたのは 今解きあかされる真実とかはどうでも良くて。
最近フラたんのおかげで Turing Complete について非常にわかりやすい定義を ゲットしまして、 Brainfuck を実装できれば Turing Complete という 非常にすばらしい定義です。 しかしまぁこれだと実装者の腕前によってしまうのだけど、 まぁ実装ができてしまえば論より証拠チックに Turing Complete であることは証明されてしまうのだなぁと。
問題は「うーんコレ Brainfuck 作れるんかよー」とか 思った時なわけだけど、 まぁそれは「俺チューリング不完全」とか呼んでおけばいいと思う。
(09:12)
表示ができるのはとっくにできていて、 あとその位置だけあわせりゃ終わりってとこで苦労してたんだけど、 どっちにせよ位置取得に C 使うんなら最後は Ruby から ObjC にするんだし今のうち移行しておいた方がいいかなーとか でもプロトタイピングは慣れない ObjC より Ruby の方がマシだよなーとか。
ってか作りかけゲームで1500行くらいは書いたみたいなので ObjC でも問題無さそうなのだが。
つまりスクリプト言語でプロトタイピングとかの問題は こういうどうでもいい政治判断をたくさんしなければならないことである。
その点 C はスバラ C !!!!!!!!!!! 迷い、ナシ! C で書くと決めたら後は一心不乱に書くべし書くべし。
(09:20)
Window list から、 w3m が走ってる Window がわからない。 Terminal.app が一つのプロセスで二つ 同じタイトルの Terminal を起動してたりするのがつらいようだ。
PID 渡せばーとか思ったが Terminal.app は同じ pid 。 tty のデバイス名から…ってのもあるんだけどキツい?
フォーカスがあってるかーって情報を取るのが一番普通だと思う。
ただそいう API が拾ったヘッダにない。 てか Carbon を nm で見てるとヘッダに無い API なんてざっくざっくと出てくるのがなんとか。
例:
http://www.google.co.jp/search?hl=ja&safe=off&q=cgscyclewindows&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=
で、とりあえずの課題は API 一覧を得ることだったのだけど、 なんか Carbon.framework の下を nm してまわっても 全然定義されてないなーと思ってたんだけど、 ld を ktrace したらわかった。 ApplicationServices の下の CoreGraphics.framework にあるのね。 なんかなんでもないこと調べるのに苦労しててダメだ。
ってかそろそろ書いてかんと調べたこと片っ端から忘れていくなぁ
例えば Workspace って概念は OSX には最初からあるわけで、 X の WindowManager みたく Window を消したり出したりして 作ってるわけじゃないんだよなーとか。 そもそも VirtueDesktop のやってる エフェクトつき切り替えも CoreGraphics の機能ぽいし。
む kCGSActiveWindowLevel 。このあたりかな。 kWindowTitle 以外の使い方が全く不明な CGSGetWindowProperty に渡せばいいんだと思うけど、 うーんしかし誰かがとっくに調べてそうなこと調べてるなぁ。
あと otool -tv がイマイチなので逆アセで調べにくいのも困る。 このへんなんとかしないとな。
(11:26)
Window 一覧が取れたら、最初に出てきた 名前が非ヌルの Window がフォーカスあたってるんだよ!!!!!!!!!!! っていうかフォーカス順にソートしてくれてたよこれ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(11:40)
i@um ~/wrk/cocoa> cat testfocusedwindow.rb require 'focusedwindow' p focused_window i@um ~/wrk/cocoa> ruby testfocusedwindow.rb [9, 400, 583, 388]
わいわい。
(12:30)
前 | 2007年 2月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 |
全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。
日本語が通らないというのが Terminal.app での話であれば、たぶん Command+I で出るターミナルインスペクタのエミュレーションタブにある『非 ASCII 文字をエスケープする』のチェックを外せば解決という予感がします。
入力文字列をスタックに積むのは、プッシュダウンオートマトンとかでしょうか?Turing Completeじゃない気がしますが。
BNFとか圧縮率低いので、正規表現ぐらいの圧縮率で書けるLR文法とかあれば、確かに便利かもしれないです。ゴルフ以外にも。
で、後方参照はおーとまとんで書けない例なんですが、それ以外が思いつかなくて、悲しかったのでした。というか、Perlの正規表現のうちどれがオートマトンで表現できて、どれが表現できないか、とか、言えるようになれたら立派だなーとか。
ホピーなんですが、すいません。3/3も3/11も厳しいです。
17日あたりはどうでしょう?下のほうでYTさんも書いておられますが、YTさんの歓迎会をそのあたりにやる予定です。
プッシュダウンオートマトンってなんですか!という。えーと Wikipedia によると、
有限オートマトンにふたつのスタックを接続することもでき、これは事実上チューリングマシンと等価な非常に強力なデバイスとなる。線形拘束オートマトンはプッシュダウン・オートマトンよりも強力だが、チューリングマシンよりは非力である。
ああええ二つ必要だなーとは思ってました。えーとたぶん、正規表現の空間と、入力の空間の二箇所保存領域で情報をやりとりできれば二つになるかなぁと。
あとホピーは残念ですが17あたりはぜひお願いします。僕の誕生日も近いのでついでになんか自作自演とか
そしてjijixiさんは神!!!!!!!!
ええとなんかアチコチ見ながら設定してる時に目に入った記憶は微妙にあったのですが、なぜか設定してませんでした。それでうまいこと行きました。 Cmd+SPC についてもありがとうございました。
人間がhttp://swtch.com/~rsc/regexp/regexp1.htmlにのってるような状態遷移図を書き起こして途中で挫折しなかったらDFAじゃね?(´・ω・`)
なんと、JITコンパイルですよ。
しかも、時と場合によって結果が変わりますよ。もしかしたら遺伝アルゴリズムとかAIの世界に人類は足を踏み入れてしまったのかもしれない。。。。
>どれがオートマトンで表現できて
その正規表現と同じ判定をする関数
bool hoge(char* p) { ... }
を、再帰とmallocは禁止、あと入力に対する操作は*pとp++のみ許可、で書けるときに限りオートマトンで表現できます。書けそうにないやつは俺非正規表現とかで。
NSViewとかNSImageとかだったら、isFlippedメソッドを上書きしてYESを返すようにさせると、ふつうのパソコンの座標系と同じになりますよ。
あうー自己つっこみ。↑↑だと"aとbの個数が同じ"とかがRegularでないのに事実上書けてしまうので微妙でした。一応理論的には使用メモリサイズ固定==オートマトンでふ。
>shinhさん
17日はわかりました。また近くなったらメールします。
> k.inabaさん
「メモリサイズ固定==オートマトン」なるほど。わかりやすいです。
「〜で書けたら〜」や、brainfuckが書けたらTuring Completeみたいに、「〜が書ければ〜」というような分類って他に無いですかね?