ToDo:
とりあえず動いた。便利な気がする。
TODO:
C って RAII 無いのがつらい気がする。 C++ の感覚で書くと
bool checkX(const char* filename) { X* x = openX(filename); if (!x) return false; if (!x->isValid) { closeX(x); return false; } if (!x->isNantoka) { closeX(x); return false; } closeX(x); return true; }
int main() { checkX("hoge"); }
とかすると closeX 多すぎてイヤになって、
bool checkX(X* x) { if (!x->isValid) { return false; } if (!x->isNantoka) { return false; } return true; } int main() { X* x = openX(filename); if (x) { checkX(x); closeX(x); } }
みたいにしたりする。 まぁこれも悪くはないんだけど、 でも malloc とかするたびに関数増えてくとか微妙だよなぁという。
せめて関数内関数あると良いねと思うな。
(16:51)
http://shinh.skr.jp/m/?date=20111203#c01
goto もいいんですけど、解放するものが複数あると、
X* x; char* filename = (char*)malloc(100); if (!filename) goto err; sprintf(filename, "%s/%s.txt", hoge, fuga); x = openX(filename); if (!x) goto err; return 0; err: if (x) closeX(x); free(filename);
みたいに if が増えてくのがちょっとイヤですね… C の方が C++ より遅いみたいなことに。
http://homepage1.nifty.com/herumi/diary/1112.html#3
個人的な感覚では、ある程度のサイズのもので semantics が変わる拡張使うのは許せないかな (unused とかは OK)… と思ってたのですが、僕の個人的な感覚に頼るまでもなく、 コンパイラにかかわるものではダメとのこと。
http://www.gnu.org/prep/standards/standards.html#Using-Extensions
(03:56)
DSi ware で出たってことなので買ってやっている。 DS でやると PC よりやりやすい…
一度適当にマシンガンでクリアして、 聖域タイムアタックってマジメにやってないなぁということで、 マシンガンは無いなってことでスネークかつバブリン取らないで 聖域まで行ったデータを作ったものの、 あれーラスボス相手にミサイル使っちゃったな… と思い3度目をやることに。
普通に三度目やるのはバカらしいので、 むずかしいモードと同時に進めていって、 難しい部分は、ふつうの方で練習したり攻略考えてからむずかしいでやる、 みたいな感じで進めることにした。
さっきモンスターXを倒した。 まぁやはり予想通りずいぶんと苦労した。 他に苦労したとこはその直前のお化けかな…
今後きつそうなのは、
あたり?
むずかしいで聖域クリアできる気がさっぱりしないから、 シュプールで行こうかと思っている。 シュプールどんなものだったかよく覚えてないけど、 たぶんスネークより聖域以外はちょっとラクだよねたぶん…
(04:05)
http://www.news-postseven.com/archives/20111210_74215.html
紙を重ねて切っても1枚しか切れないカッターらしい。
http://www.olfa.co.jp/ja/body/detail/168.html
説明読んでも本当にそんなことできるかって感じだなぁ。
(23:44)
_ shinh [testなんです]
http://akira108.com/blog/?p=56
を見てマジメに NULL の仕様を見てみた。
http://xyzzy.bravehost.com/NULL.html
どうもこれ Turing 完全じゃない気がするんだけどな… 一応 if があって全体がループになってて、自己書き換えできるけど、 うーん。
あと Quine も書ける気がしないけど書けるもんなんだろうか。
(06:36)
なんかスライドとかビデオとかが出たそうな。 そういえばスライドはじめて見たけど思ったより詳しくて良いな
http://googledevjp.blogspot.com/2011/12/google-developer-day-2011-japan_14.html
(22:19)
http://d.hatena.ne.jp/Irori/20111210
かっこいい…
ほげ言語の中では世界一デカいプログラムとかは、 esolang だと割と結構書けるので楽しいかもしれない。 Befunge の 80x25 の空間だとどのくらいのプログラム書けるとインパクトあるかな。 C コンパイラとか書けるとかっこいいが。
(02:18)
それなりにまじめにやることにしたので道具を買ったりした。 だいたいずっと 10a が登れてる気がする…って感じなので、 あんまうまくなってるかどうかはわからない。 今日は 10a/b が僕基準 (多少のリトライはいいじゃないか!) では登れた気がしたのでまぁうまくなってるのかもしれない。
でシューティングが似てるという話。 短いボルダリングの方じゃなくてロープ使って 10m くらい登る方。
ええと…まずボム。 うっかり想定してたパターンから外れたりとか、 どうも自分の実力では安全に突破できなさそうなところでは、 シューティングだとボムを使うわけだけど、 クライミングで腕力使うのが感覚として似てる気がする。 難しいところが後半にある時は、道中の簡単なところでうっかり腕力を使いすぎると、 肝心のボスで腕が完全に疲れてて死ぬ、みたいな。
ステージ構成。 コースによるけど、どうもたいていのコースは7割くらい行ったところに 山場がある感じに設計されてるのが多い気がする。ボスである。 ボスのことばっか考えてたら、序盤の簡単なところのパターンを うっかり忘れて、ボム/腕力使わされた、なんてことが起きる雰囲気もなんか似てる。
パターン。 あまり実力的にうまくなってなくても、同じとこを何度もやって パターンをしっかり構築してれば、 ボム/腕力を使わないでそれなりに進めたりする。 あと、 「画面下にはりついてずっとうろちょろするより、 余裕あるうちにちょっと画面上行った方が切り返ししやすいよー」 みたいなアドバイスが、 「いきなり右手のばすんじゃなくて右足安定させて左足左にふっとくといいよ」 的なアドバイスが僕の中では雰囲気が似てる…
コンティニュー。 一回落ちるとその後がんばってもクリアしたと評価はされなくなるけど、 まぁ先がどんな感じかな…と見てみる感じがコンティニューしてる感覚。
あとはやってる目的がどうも俺スゲーだってあたりもそうか。
となるとクライミングもテンションの上がる音楽が必要だということになる
(03:51)
そういえば
http://www.tsuque.jp/note/omoshiro_papers_2011
で紹介されてる dthread の話は本人から聞いたのだけど、 面白いなあというかそうかそれでいいのか…本当か!? 的な感じで良かった。
スクリプト言語の thread とかこういう感じやれば VM lock とかつぶせたりしないかな… とか妄想した。妄想しただけで深くは考えてないです
(23:32)
bss を munmap ってしていいんだなあと知った。
といいますのは。
GCC のプリコンパイルドヘッダというのは、 どうも割と正気の沙汰じゃない実装がなされていて、 たぶん内部状態をそのままダンプしたようなものになってるんだと思う。
そのままってのはたぶん割とガチにそのままで、 ポインタのアドレスとかがたぶんそれなりに入ってる。 少なくとも前チラ見した時に gcc バイナリ内の関数へのポインタとかが そのまま入ってはいたという記憶がある。
そんなわけだから、 cc1 は自分自身の checksum を知っていて、
% gcc -xc -v /dev/null 2>&1 | grep checksum Compiler executable checksum: d0509cacf8e2dc8d8d001fecf2ae324f
などとすると出てきたりする。 この checksum は cc1 自身っていうか cc1 の材料全部の checksum 、 って感じぽいが。
で gcc のプリコンパイルドヘッダはこの checksum を 先頭の方に入れておいて、 コンパイラが違う場合は絶対にプリコンパイルドヘッダが使われないように気をつかっている。
で、そいうことするとたぶん色々とアドレスの固定なんざをしなければならないようで、 実際それを頑張ってるのを見つけたのが最初に書いたコレ。
http://opensource.apple.com/source/gcc/gcc-5666.3/gcc/config/host-darwin.c
char pch_address_space[1GB] とかいう巨大な配列を作っておいて、 いらない部分は munmap 、って方法で固定の空間を作ってるみたい。 すごい話だなぁ。
linux の方は、 address randomization あっても 16MB 以上はズレないから、 32MB mmap してからその次で mmap して手に入れたアドレスは、 アドレス指定 mmap でゲットしやすいんじゃね? とかいう実装。
http://opensource.apple.com/source/gcc/gcc-5666.3/gcc/config/host-linux.c
パフォーマンスのためなんだろうけど、 GCC のプリコンパイルドヘッダはいつチラ見してもすごい…
(22:55)
というジャンルがあるらしい。
今日で仕事おさめだと聞いたので (つっても今日やった仕事はメシ喰ってマンガ読んでマウスクリックしてthanks!って書いてマウスクリックしただけな気がするが) ちょっと高いビールを買ってみた。
味はよくわからんけどちょっとおいしい普通のエールじゃないかな… 瓶内発酵してるらしい。 バーレーワインみたいな感じがちょっとあるかもしれんがわからん…
(16:25)
http://wiki.livedoor.jp/zinnia1975/d/%a4%aa%ca%d9%b6%af%b2%f1-%b5%ad%cf%bf16
ちょっと前に行った。 なんかおひさしぶりな感じだった。 一年なにしてたんだろうな…という
やったことはぼんやりと binutils いじりだった。 dSYM 追うのができたから、ちょっといじってパッチほった。 入れてくれるといいね…
メモ: atos の mmap のエラーは xcode 4 から。 __RESTRICT って何。
(18:05)
http://www.mail-archive.com/python-dev@python.org/msg62979.html
via https://twitter.com/#!/tanaka_akr/status/152228187865231360
そうかこういうのがあるのか…
(14:47)
CIA を復活させるか。
shinh.skr.jp => shinh.org もやっちゃうと良さげ。 あとゴルフ場の言語追加リクエストを適当に処理とか。
他に shinh.org って何してたかな…
(16:28)
指定席取れなくて、自由席もかなり待たないと座れなさげだったのであきらめた。
途中今どこかな…と GPS で調べると常に浜松になるっていう現象が起きていた。 僕のカンでは wifi の情報を使っていて、 新幹線の中の wifi つかまえちゃってるせいでおかしなことに… みたいな感じかな…とか思っていたがどうなんだろう。
wifi 切ったらちゃんとしたとこが出るようになった。
(01:23)
前 | 2011年 12月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
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 | 31 |
全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。
_ Rui [closeXをまとめるのにgotoは使わないんですか?]