ToDo:
http://jarp.does.notwork.org/diary/200702c.html#200702241
最初は 1\n2\n... をループで作っておいて s/(hoge\n{2})hoge\n/\1Fizz/ みたいな感じでしたが、 そんな感じの方針の方が縮みそうだなぁと変更して 今に至ります。
文字数から数値に変換するロジックは書いてないので ちょっと違いますがまぁ似たような方法で。
http://jarp.does.notwork.org/diary/200702c.html#200702232
あとこの感覚はみんな共通なんだなーと思いました。 一通り終わったなぁってタイミングで もう無理だと昔思ったヤツを見直すと あれ、あれれと。そしてずるずるとハマって エンドレススリープレス。
(06:22)
http://jijixi.azito.com/cgi-bin/diary/index.rb?date=20070223#p01
ありがとうございます。やてみます。 ブラウザなんかはアンチェリいいなと思うのですが、 端末とエディタは不慣れだからかもしれませんが やはり厳しい気がします。 エディタはいいかもしれませんが。 あと黒背景ってのも関係あるのかしらと思うこのごろ。
正直 OSX は現状のキチンと手の入ってない現状では 気に喰わんところだらけなんですが、 環境いじりより環境ソフト作る方が楽しいので そっちに時間使いすぎで細かい設定全然してないとかいう。
まぁ一覧を書こう…
正直隣に Linux があるからなんとか使えてる感じだよなーという感が強い。
終わったこと。
(06:47)
画像ビューア必要だな。 無けりゃ作ろう。 プレビューなんて派手なのいらんくて、 ただ単に画像出して最大化とかくらいはできて、 q 押したら終了する、ってくらいのものを。
まぁ目下のところ open でも十分ではある。
あと頓着しない子としては既に Emacs のフォントには慣れた気がする。 端末はなんとかしないとな
(11:58)
http://www.garbagecollect.jp/~usa/d/200702c.html#id20070225_P1_2
Ruby のゴルフサポートが強化されるのかっ
とりあえず s/// が欲しいとか
(14:55)
VirtueDesktop がこの上なくキチンと作ってくれている。 DEC がどうとかいう部分ひっこぬいたら Window の上下のテストが動いた。
あとはキー入力を受けられたらいいわけだけど、 それはランチャソフトとかでいいかな。 → QuickSilver で良さげ。こんさんには感謝であることよ
一刻も早く欲しいのは SWITCH_(LEFT|RIGHT|DOWN|UP|...) として、 あとはWindowを端にふっとばすのとチョイ移動。 画面最大化は Witch にあるしいいか
(16:31)
CGSSet* をそのまま使うには Dock と同じ立場であるところの Universal なんとかにならないといけないらしい。 それになるには Dock を殺す必要がある。 師を殺さなければ免許皆伝とは言えぬー。 それはよくわからんがちょっとありえない気がする。
んで Dock と通信する方法がこうあるみたい。
ってか Window を上に出すのもプロセスに フォーカス当てるのもできてるのに、 同一プロセス内でスイッチした時に Window が上に出るだけでフォーカス当たらんというのがなんとも。
あ、なんか一旦フオーカス捨てればいいのかも
(18:54)
なんかちゃんと動くのは感激ですな。
http://jijixi.azito.com/cgi-bin/diary/index.rb?date=20070225#p02
あと僕も必要な時だけ画像表示なのですが、 最近はどうも「必要な時」が増えているような気がします。 プログラム関係の調べ物でも 図とか画像で入れてるところが結構あったりと。
あとズレる方向はうちだとむしろ下… と思ったら screen の有無で結構変わるみたいでした。 screen 無いと上の方に。 正直 screen あるか無いかとか調べよう無い気がするんだけど どうなのかなー。 でも X のヤツはどうしようもなくキチンと位置あってるなー。
まぁ色々知識不足なので動けばいい主義のいいかげん物体です。 あとあまりささっとでもないというか どろっとアチコチ寄り道しながら色々調べて…という。 まぁ新しい環境調べるのは楽しいもんですなぁという。
(20:46)
だいたいわかった、と思う。
Accessibility API とか NSAccessibility つーのは プロトコルであって、このへんのキーワードで探すと Cocoa アプリを作る側はこいう規約にそってぷろぐらむすると ユーザにやさしいでちゅよーとかそいう感じ。
んでそれを使う側になるのはたぶん主に Apple Script で、これは内部的には Apple Event とかいうのになって飛んでいく、とそんな感じ。 なんかしらんけど Apple Script は Window ID とか使ってるし、 AXFocused とかいうのをセットゲット…と思ったらダメじゃん Carbon Emacs この属性サポートしてないよ!
なるほど規約に沿ってくれとおねがいする気持ちもわかるというか
(21:23)
もう世界はジョブズのものになるんだと思った。 っていうかジョブスかジョブズかもわからない。 あと端末は打てるようになったけど 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)
http://shinh.skr.jp/m/?date=20070213#c09
誰もマジメに解いてなければかなしい。 あーでも LCS モジュールとかで解いてなかったっけ。 Scheme で。 あーいや Scheme の LCS モジュールは test#3 にパスしないとか書いてありましたねそういえば…
TODO: 親不孝痛くない時にリンクを探す
(02:35)
http://jijixi.azito.com/cgi-bin/diary/index.rb?date=20070221#p02
ハフマンはこれです
http://cvs.m17n.org/~akr/pub/rubykaigi2006-06-10.pdf
で、 OCaml はもうどうしようもなく失格だと思います。
ハフマンの話それ自体は書く側読む側共通で正義かなぁと思います。
ただまぁ Ruby や Haskell なんかは、 別によく使わないのになぜか短く書けるような機能が結構あって、 そういうところをガンガン使ってゴルフしてるのかなぁと。 あとそういう部分がとても多いのが Perl 。
うむまとまらない
(02:43)
http://jbbs.livedoor.jp/game/7135/storage/1086876397.html#14
ネトゲはよくわからないが割と衝撃的なセリフであった
「うだうだAでほざくよりBでケリつけようぜ」 のAとBを、A<Bと定義するとそれは 全順序とかになってるだろうか。
2ch<GAME GAME<リアル こんな所<出るとこ出て みくし<はてな はてな<ブログ 掲示板<オフ 匿名<実名
よくわからんな。 2ch より下はあるのだろうか。
うだうだAでほざくより2chでケリつけようぜ
うーむ。 ありそうなもんだが
(03:00)
いつもながらめんどいが、 migemo関係のソフトを全部入れた、 つまり、 w3m に cmigemo に cmigemo-server/client とかその依存物とか
(07:58)
ふーむ。
まぁあとで調べる。
にしても w3m-img 欲しいねぇ。
あと痛い T-T
(08:16)
AquaSKKは便利だと思うが、 Emacs は別のモードを持ってるべきです。 woさんもそういっていた。
あとタイトルバーのファイル名の部分から端末にドラドロで 端末にそのフルパスが出るという機能は実にどうでもいい
(02:30)
色々大変だったみたいだ。
まず全部 Universal Binary をそろえないといけない。 SDL とかはある。 libbulletml はまぁ -arch とかつけてコンパイルしなおす。 さて… main の入ってない phobos が必要です。
ar -x とか libgphobos.a にしてもダメ。 Universal Binary に ar は通用しないぜ! んで lipo と libtool で中身を取り出して、 ar -x で展開…すると、同名のファイルを上書きされてダメじゃーん。 しゃーないので ar を展開するツールを作ってドビャーと展開、 んで cmain.o を削除してもう一度固める。
あとはまぁ…コンパイルはまぁ普通に通る。 .ptr とかあちこちにつけて回ることにはなるけど。
リンクで Universal Binary を作りたい場合、 普通なら gcc -arch i386 -arch ppc で終わりだけど、 libgphobos.a をリンクしたくない関係で collect2 のオプションをいじらなければいけないのだけど、 このオプションが i386 と ppc で違ったりしてまた微妙にめんどい。
そんなこんなで isshiki さんのはビルドできた気がする。
ABA さんのはとりあえず最近のは template の循環参照がありましてね… ということで、ソースを全部結合するというソリューションを思いついたので、 ttn 以下と util 以下を別々に結合してコンパイル・リンクすれば動いた。 別々にやる理由は Frame : abagames.util.Frame とか そういう継承のしかたしてるからモジュールをわけないといけないからであったー。
(06:38)
強行突破してクリアした。 そこらの雑魚一匹の一回の攻撃でこっちの パーティが全滅しうる。
FOEよりはるかに雑魚が怖いので FOEを泳がせて赤くなったらFOEと戦闘するとかそんな。
Lv50,50,50,50,39 の ダレメバカ。 レンジャー以外ダメージ与えてないみたいな。
あとストーリーは全く無い方がいいね。
(15:21)
http://jijixi.azito.com/cgi-bin/diary/index.rb?date=20070222#p03
すいませんです。 しかしなんでだろーと原因調査しているうちに通るようになった。 なんでやねん…スワップとかそのへんかなぁ…
(16:14)
submitサバが死ぬのは僕的には面白い (なぜなら僕も PKU とか CodeGolf とかにヒドいコード投下しまくりで、 オマエラよくやるなニヤニヤと笑えるから) のだけど、出かけてる時に長期間止まるとちょっと申し訳ないなぁ。
すまんこってす。
なんかそろそろマジメに対策考えようじゃないか。 ちなみに止めた実績のある言語として C++, JS, Erlang, Ruby, Io なんかがあったような。 CLISP とかもあったかな。 ていうか止まった時にちゃんと調べようよ…!
ていうか core 吐くようにしよう
(01:44)
http://www.geekpage.jp/blog/?id=2007/2/16
via http://jijixi.azito.com/cgi-bin/diary/index.rb?date=20070220#p02
プログラミングはセックスと似ている。一つの間違いに対するサポート を一生続けなければならない。
ファインマンは「物理はセックスと似ている。過程が目的なのであって、結果生成物に興味はない」とかそんな感じのこと言ってたよな。
たいていのことにこの手のジョークは作れるのかも
(01:56)
とにかくだるい。
lipo -extract ppc libgphobos.a -output hoge.a libtool -static hoge.a -o hage.a ar -x hage.a
とかそんな感じで。
(23:31)
は、してなかった。
http://blog-search.yahoo.co.jp/search?p=%A5%B4%A5%EB%A5%D5&cop=
http://sf.livedoor.com/search?q=%A5%B4%A5%EB%A5%D5&sf=update_date
(04:44)
http://golf.shinh.org/p.rb?e#Befunge
下の Minus のエントリと比較するに、 同じ方法で圧縮してるんかな。
Minus ってマイナスしか無いわけだが。
(05:04)
--- js.c- 2007-02-20 06:10:02.000000000 +0900 +++ js.c 2007-02-20 06:11:21.000000000 +0900 @@ -653,9 +653,10 @@ /* * Turn buf into a JSString. Note that buflength includes the trailing null - * character. + * character when readline ends with newline. */ - str = JS_NewString(cx, buf, buflength - 1); + if (gotlength > 0) buflength--; + str = JS_NewString(cx, buf, buflength); if (!str) { JS_free(cx, buf); return JS_FALSE;
(06:11)
https://bugzilla.mozilla.org/show_bug.cgi?id=355827
そうでもないみたいだ。 ってかこれは別にバグじゃないんじゃないのか。
ああ、と思ったけどこれはひどい。 ていうか delete blank line とかどう解くの。
しかも UNCONFIRMED の略が UNCO って! 確認してやれよ! どう見てもこれじゃ困るじゃん! UNCO-! SM! UNCO-!
こんなもんマトモなプログラム言語じゃないなぁ…
(06:28)
は readline 持ってないみたいだな。
まぁこれ当てるだけじゃんねぇ。
https://bugzilla.mozilla.org/attachment.cgi?id=241533
しかし全然 specially に扱ってねえしな。 UNCO!
(06:45)
普通に考えると動的リンクだろうと思ったけど、 もしライセンス内できちんと書いてないのであれば、 たしかになんか微妙なかんじだなぁ。
http://d.hatena.ne.jp/KouMikage/20070214#p1
(07:31)
+ ++ +++ ++++ +++++ ++++++ +++++++ ++++++++ +++++++++ ++++++++++ +++++++++++ ++++++++++++ +++++++++++++ ++++++++++++++ +++[->+++++<]>
27とかくらいだと、
+++[->+++++++++<]> ++++[->+++++++<]>- +++++[->+++++<]>++
の方が
+++[->+++<]>[-<+++>]<
よりいいわけだ。興味深いな。
64でもまだ。
++++++++[->++++++++<]> ++++[->++++<]>[-<++++>]<
125だと…
+++++++++++[->+++++++++++<]>++++ +++++[->+++++<]>[-<+++++>]<
121作る時点で既に負けている。
(08:48)
きた。
タッチパッドは手がつるな。
とりあえず Xcode 入れればいいのかのう。
にしても最初から 17GB とか消費してあるんだなぁ。
Ubuntu つっこんで /home 30GB / 20GB とすると OSX になんぼも HDD のこらん。
ってか /home とか共有できた方が もちろんいいんだろうけどどうするのがベターなのかな。
まぁしばらく OSX で遊びつつ考えよう。
(10:42)
Ruby/SDL を見てみる。 今のところ ctor => main のてっぺん書き換え、っていう libGPL 殺法が一番良さげに思えるという。 あるいは ptrace かね。 mprotect はあるみたい。 ptrace もなんか man が出る。
あとは D の方。 とりあえず片っ端からゆにばーさるばいなり作るのを目標で。 なるべく downloadable なものを利用して作れると良い。
あと tekezo さん works で遊ぶ。
このくらいで飽きるだろう。
(11:52)
http://d.hatena.ne.jp/ytqwerty/20070218#p1
を見てゴルフ場無制限使用会員権をお祝いに! とか書こうと思って忘れてたんだけど、 既に来ておられた。さすがに Ada でかいなー。
(12:15)
def finishLaunchNantoka puts '> finishLaunchNantoka' callcc {|$c2| $c.call } $c3 = true puts '< finishLaunchNantoka' end def _SDLMain_main puts '> SDLMain_main' finishLaunchNantoka puts '< SDLMain_main' end def _Init_sdl puts '> Init_sdl' callcc {|$c| _SDLMain_main } if $c3 exit end puts '< Init_sdl' end _Init_sdl puts 'hutsu-ni SDL' $c2.call
要はこんな感じのを libruby で書けばいいのかな
(13:56)
extern(C)int gets();void main(){for(;gets;)printf("%s ",gets);}
一個目のテストケースは通るのだが。 ところで gets の戻り値を long にするとサバが停止する。 帰ったら考える。
(14:41)
普段から憎いような。
http://jijixi.azito.com/cgi-bin/diary/index.rb?date=20070220#p01
久々に使うと必ず rec 忘れるんですよね。 しかし間違い発見しやすくなるのかぁ。
普段から憎い部分ほどゴルフ的にも嫌いというのはつまりそれは ゴルフ的にアレなところが僕の嫌いな部分ということですね はいそれはなかなか。
とりあえず OCaml は akr さんのハフマン符号がどうこうの精神を 読むべきだと思うんだよな。あと D もそんな感じ。 Haskell はわかってる。 Ruby はもっとわかってる。 Perl はたまに異様にわかっててツンデレ。
(18:24)
_ ySas [BefungeとMinusのeですが、発想は同じかもしれません。たぶん、実際の値は違うと思いますが。あと、私のeは実..]
_ YT [会員権ありがとうございます〜。入会記念に好き勝手言い残しておきます。 まずそのAdaですが、コンパイルオプションに-..]
_ shinh [ご意見ありがとうございますです。-gnat05は加えてみたつもりです(未確認)。そのあたりは追加言語候補としてまた今..]
_ YT [-gnat05確認しました。ありがとうございますー。(ゴルフはしてたくせに)レスが遅くなってすみません。 歓迎会とい..]
_ shinh [レスなどいつでも良いですはい遅延評価とかそのへんで。上でも答えましたがおいわいはぜひ参加させてくださいませませ。]
js.c 。
/* * Turn buf into a JSString. Note that buflength includes the trailing null * character. */ str = JS_NewString(cx, buf, buflength - 1); if (!str) { JS_free(cx, buf); return JS_FALSE; }
で、 jsscan.c では、
buf[i] = '\0'; return i;
とかやってる。 つまり js.c はコメントからして間違っている。
パッチは瞬時に書けるけど検証とか色々考えるとめんどいか。 最新版でもなおってみたいなので 暇な時にでも Nightly とか見てからパッチ投げるかぁ。
(00:09)
http://d.hatena.ne.jp/w_o/20070218#p3
忍耐力は、他同様、人それぞれだと思う… さっぱりついていない典型例がここに。 あと今に至るまで勉強は単なる趣味なので 受験とかあんまり我慢でも無かったんだよなーという。 英語つまらんから気張らしに物理やるとかそういう。
正確な文書はまさにそうで、 例えばレキシカルスコープという単語を見るとびくっとする。 未だに意味がよくわからない。 {} のことかな。
ということで斜め読み。
http://www.geocities.jp/m_hiroi/func/smlnj04.html
なんとなくわかったような。 Ruby の最近の議論はダイナミックにしようとしてるのかな。
一方一応専門としている物理の方は、 と、言えると良いのだけど、 むしろこっちの方がヤバいって勢いで専門用語が使えない。 「ユニタリ変換のエクスポネントって何ですか ハミルトニアンのことですか? そうならそう書けドアホ」 とか言われていじめられたり、 「それただ○○ってだけだよね」 とか言われて、○○の意味がサパーリわからなくて 「あー、それ」とか適当にゴマかす人生なわけだ。
というわけで
くらいじゃないかとか思うのでした。
あと難しい問題も色々あやしいと思うけど、 出会ってる人もたくさんいるのでまぁそうかもなーという。
(02:36)
Haskell の表現力の強さは本物だなぁと思う。 正直 OCaml はダメだコレという感の記述力の無さだ。 OCaml の大嫌いな部分である string_of_int だとか print_int だとか *. だとか そのへんがモロに影響する。 強い型付けのために…という言い訳は、 Haskell やら GCaml なんか考えると言い訳になってないかなぁ。
でも OCaml は久々に触っても割と書けるのは良いなぁ。
うーむ Haskell 強い。なんか見直すものがあるな。 ハスなんとかとか言ってごめんよ。
http://www.tom.sfc.keio.ac.jp/~sakai/d/?date=20070217#c01
ふとお前の言語選ぶ基準はゴルフかと自問する。
ちなみに僕の e.rb はこんな。あと 8B は実に遠い
a=2*v=10**?d a+=v/=$.+=1while 0<v p a+36
(03:11)
最近こう書けると知った。
nil+1rescue p$! raise'str'rescue puts$!
これ結構短いんだよなぁ。 今までの問題で適用できたのもあったのかもしれない… が、今さら見返すとかはなんていうか無理だ。
(03:47)
理由として、結構頑張って書いてもクソみたいな クオリティだったりすることがある。 それで楽しさが減らされちゃってるてのを考えると、 慣れるとこれも楽しいものなのかもしれない、とか思うんだけど。
もうちょい文章書くの慣れたらもう一度考えてみると良い。
(04:11)
http://park7.wakwak.com/~blackbox/#dd2007-02-18_01-50-17
そもそもテストサバは ネットワークから断絶されてる(はず)なので、 example.com は誰かアクセスできるバグ見っけたら 記録出してみて下さい、っていう趣旨のものです。 というかアクセスできたら Ruby は
open'open-uri' $><<open('http://example.com/').read
とかで終わりなので。
(05:22)
http://golf.shinh.org/p.rb?All+Expressions#Ruby
最適化しまくったところ通った。 元のコードは何Bくらいだったっけという感じだ。
(08:31)
せっせと考えたけど1文字読み取って 1文字吐くくらいのプログラムしかできないのであった。
動きみないと死ねるので、 インタプリタ書いておられたなーと思って 眺めてみるもなかなか大変そうで死ねる。 たぶん d の実装が大変なんだよね。
http://d.hatena.ne.jp/oto-oto-oto/20061226/1167145829
(14:43)
http://muffin.cias.osakafu-u.ac.jp/~matumoto/cgi-bin/xt.cgi?prog/lua
via http://d.hatena.ne.jp/epics/20070201/p1
(22:39)
ていうテクニクがたくさんあるな。 全然 Perl 脳になってないなぁ。
http://www.nmt.ne.jp/~ysas/diary/?200702b&to=200702191#200702191
とりあえず -lp 使ってないのはひどい。 寝てるとしか言えない。
(23:08)
http://d.hatena.ne.jp/Ozy/20070217#p1
僕はこの手のコード見てうひひと思うのは好きなのだけど、 にはさんがインチキするかしないかで四苦八苦とか してるのを考えると、 確率的な方法は潰せるなら潰した方がいいのかもなぁという。
うん。というわけで、ですね。 getpid のカウントを取るとか、 まぁそいうのはアリっちゃアリなんだが、 まぁめどい。
でもとりあえず
echo 0 > /proc/sys/kernel/randomize_va_space
しといた。
うーんめんどいから各自適当に shinh(cheat) とかで 対応していただければ。
あーでもシステムコールのフックはちゃんとやりたいなぁ。
(07:09)
http://golf.shinh.org/p.rb?show+the+way#Ruby
これしか無いよなーというチートをしてたら 当然のようにフラたんとバイナリサイズが同じで面白い。 でも 7B も負けてるなぁ
差が2Bになった
まぁマジメにも解こうよという
(07:23)
プロセス落ちてたのは、 大量の出力があるスクリプトが submit されたからっぽい。 プロセス自体がメモリバカ喰いするとかは すぐ殺されるので問題無いのだけど、 親に大量の出力が来て親が死ぬと終わる、という。 まぁプロセス起動する部分の回りを for i in `seq 1 1000` とかでかこっておいた。
で、この場合、
o = stdout.read
とかでメモリがものすごいことになって死ぬわけだ。 そらそうだ。
んで、
o = stdout.read(10000) e = stderr.read(10000)
とかでいいだろーと思ったんだけど、 なぜか stderr.read(10000) の方が帰ってこなくなった。 stderr に内容がある場合は大丈夫。 あとタイムアウトじゃない場合も大丈夫。 ふーむ IO まわりはわけがわからない。
まぁプロセス死んだ場合は自動再起動するようにしたので、 帰って来ない場合はメモリオーバーで死んでくれた方が ありがたい。よって o = stdout.read で放置しよう。
あ、正解です! むしろバグ発見ありがとうございますというか、 全体的にいいかげんなシステムですいませんという。 ちなみに Ruby だと少々頑張っても プロセス止めるくらいの stdout を送るのは できないみたいだったので、 Erlang の方が速いのではないかという謎の予測が。
http://jijixi.azito.com/cgi-bin/diary/index.rb?date=20070218#p03
(21:58)
いい問題次々考えるなぁ。
http://golf.shinh.org/p.rb?Booklet+Printing
こういうのは Ozy さんが鬼のように 得意という気がするがどうだろう。
俺が出したのって hello とチート伝説 echo と、 冗談でしかない example_com と 42 だけ。 42 は SF ジョーク言えるなんて 俺もハカーの仲間入りじゃね? とか調子乗ってたけど eban さんに自分の甘さを認識させられた。
(22:26)
_ niha [帰ったらまあまともに縮めます。まだ縮むし。帰るの遅いけど。]
_ kosaki [ゴルフ場に限って言えばシステムコールのフックをまじめにやる必要は全然ないんじゃない? 単純にmmapとかgetpid..]
_ shinh [ええ、 LD_PRELOAD でいいというのは、ほとんどの場合正解だと思うのですが、 C や GAS なんかでは、イ..]
_ jijixi [こちらこそ、楽しい遊び場を提供していただいて、ありがとうございます :-) ところで、その後ちょっと調べてみたところ..]
_ Injovjhq [この間も俊太郎の詩をお http://www.stlouisbusinesslist.com/business/5..]
http://www.atmarkit.co.jp/fsecurity/rensai/rootkit03/rootkit02.html
を見てたんだけど、 これのまんまパクリなんじゃないかとか思った。
http://www.csg.is.titech.ac.jp/~kourai/memo/linux_kernel.html
(04:41)
syscall_table.S ってのがあるみたいだというあたりで…
http://kerneltrap.org/node/5802
要するにオマエはバカだと言われているようだ
つまりなんつーかですね。 システムコールなんか Ruby で呼んでもたぶんデカいわけで、 GCC 一派だけ strace でしばりかけて、 他は .so でしばってもいいんじゃね、という
(05:45)
体だりーので予定していたアップデートの類いはちっともしてない!
だりーだりー!
とりあえず Minus はあのフラたんが esoterisのこと50% ゴルフのこと50%とか 考えて作ったに違いない -= しか演算が無い ヘンな言語なので試すといいよ!
特徴はループがむっちゃ書きにくいこと!
aaaioac4 とかで無限ループ echo だ!
a-=a; // a を 0 に a-=i; // a に入力(i) o-=a; // a を出力(o) c-=4; // 4個戻る(cはプログラムカウンタ)
あとは止める方法考えるんだお! ちなみに o-=i だと負数吐きやがる!
(06:32)
ねぼけて目覚ましが鳴ってるのを PCが鳴ってるんだと思って なぜか Ctrl+Alt+Del った。 結果再起動してくれた。 んで xen 上げなおすのとかねぼけててこずった。
アホというかなんというか
(15:33)
こんな綺麗なコードが最短なわけないね。
これはたぶん面白い問題な気がするなぁ。
http://golf.shinh.org/p.rb?multi_key+sort#Ruby
(18:15)
http://gusmachine.blog49.fc2.com/blog-category-2.html
D は、
class C { int i; this() { int i; // 合法 { int i; // 非合法 } } }
のはず。
1. コンストラクタとsetterでは、セットする変数と同じ型の引数を受 け取り、引数の名前はフィールドの名前と同じになることがある。 同じであってもよい。
どの言語の話なんだろう。
#include <stdio.h> struct C { int i; C(int i) { i=i; } void print() { printf("%d\n", i); } }; int main() { C c(1); c.print(); }
こんなのは当然 C++ だとダメなので、 this->i = i; とかするんだろうか。 いや C++ なら C(int i) : i(i) {} でいいんだけど。 パイソン子なのかな。 まぁ僕はメンバが i_ になってるか、 引数が i0 になってるか、が慣用化されてるなぁ。
まぁ
2. フィールドを参照する際にいちいち読みにいってほしくないとき、 ローカルにキャッシュとしてフィールドの値をおいておくことがあ る。この名前は同じになる。
これがあるので、 D が一つ目が合法なのは 全然正しく感じる。
んで関数内のブロック内の隠蔽はなー。 あ、ちなみに
class C { int i; this() { int i; void delegate() d = delegate void() { int i; }; } }
は合法みたいだ。
んで関数内のブロック内の隠蔽は 禁止しておいた方が妥当な気がするけど、 俺は結構やりたいなーとかいう。
int main() { SDL_Surface* s = SDL_SetVideoMode(640, 480, 32, SDL_SWSURFACE); // 長い時をへて if (hoge) { int s = 1; }
とかをしばられるのがなー。 いや行儀悪いんだけど書き散らかしコードだから許してよーという。
(15:52)
http://www.digitalmars.com/d/function.html#interpretation
思ったより適用範囲が広い。 これ入力固定の BF インタプリタくらいなら動く?
(16:02)
http://alohakun.blog7.fc2.com/blog-category-5.html
よく使う機械語命令長くらいなら最近は覚えた…と思いつつ、
i;a[] = {4, 9, 2, 3, 8, 6, 3, 2, 1, 3, 5, 7, -0x80000000, 0x7FFFFFFF}; main(){ qsort(a,sizeof(a)/4,4,"YXZ\x83\xec\f\213\0+\x2\303"); for(;i<sizeof(a)/4;i++) printf("%d ", a[i]); puts(""); }
もろに sub じゃダメってケースだった…
% ./a.out 1 2 2 3 3 3 4 5 6 7 8 9 2147483647 -2147483648
まぁ
irb(main):001:0> disasm("\x55\xb9\x01\x00\x00\x00\x89\xe5\x8b\x45\x0c\x8b\x10\xb\x45\x08\x39\x10\x7f\x07\x0f\x9d\xc0\x0f\xb6\xc8\x49\x5d\x89\xc8\xc3") /tmp/irb_disasm1672.0: ファイル形式 binary セクション .data の逆アセンブル: 0000000000000000 <.data>: 0: 55 push %ebp 1: b9 01 00 00 00 mov $0x1,%ecx 6: 89 e5 mov %esp,%ebp 8: 8b 45 0c mov 0xc(%ebp),%eax b: 8b 10 mov (%eax),%edx d: 8b 45 08 mov 0x8(%ebp),%eax 10: 39 10 cmp %edx,(%eax) 12: 7f 07 jg 0x1b 14: 0f 9d c0 setge %al 17: 0f b6 c8 movzbl %al,%ecx 1a: 49 dec %ecx 1b: 5d pop %ebp 1c: 89 c8 mov %ecx,%eax 1e: c3 ret => nil
これはちょっと見ただけで ECX のクリアは xor %ecx, %ecx; inc %ecx; に決まってるでしょ! このオバカ GCC ! とかいう感じなのでまぁいいか。 そもそもスタックフレーム作るなとか。 omit-framepointer つけといたらバイナリ長減ったりするのかな。
あと前から気になってたのですが第四引数でわ。
(16:28)
http://jijixi.azito.com/cgi-bin/diary/index.rb?date=20070216#p02
ls /bin /usr/bin などを送り込んで 確認していただくと良いかもです。
あと「読みやすく」は私の場合 「読みやすく書かなければならない」という 束縛から解放される喜びが大きいなぁ。
あと経由して思い出したように Smalltalk メモ
http://www.gnu.org/software/smalltalk/gst-manual/gst_42.html#SEC102
(17:50)
終わりそうもない。
s='!\"\#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~' s.scan(/./) do |a| s.scan(/./) do |b| s.scan(/./) do |c| s.scan(/./) do |d| s.scan(/./) do |e| begin p = a+b+c+d+e puts p fork do eval(p) end rescue end end end end end end
Ruby segv を探そうかと思ったのであった
(20:45)
どれも難しいなぁ。まぁ Minus は入れると決まればカンタンだ。 2DとBALANCEはどう考えても無理だ。
あと純然たるマシンコードサイズを競う場として、 スタックとレジスタが全部クリアされた状態で始まる ヤツもあってもいいかもしれないな。
(20:59)
前 | 2024年 11月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
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 | 29 | 30 |
全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。
Before...
_ kosaki [人間がhttp://swtch.com/~rsc/regexp/regexp1.htmlにのってるような状態遷移図を..]
_ k.inaba [>どれがオートマトンで表現できて その正規表現と同じ判定をする関数 bool hoge(char* p) { ....]
_ konn [NSViewとかNSImageとかだったら、isFlippedメソッドを上書きしてYESを返すようにさせると、ふつう..]
_ k.inaba [あうー自己つっこみ。↑↑だと"aとbの個数が同じ"とかがRegularでないのに事実上書けてしまうので微妙でした。一..]
_ wo [>shinhさん 17日はわかりました。また近くなったらメールします。 > k.inabaさん 「メモリサイズ固定=..]