トップ «前月 最新 翌月» 追記

はじめてのにき

ここの位置付け

2004|11|
2005|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|

ToDo:


2008-09-02

_ したら負け

http://d.hatena.ne.jp/ku-ma-me/20080901/p2

  • Perl: use strict したら負け
  • OCaml: for や while を使ったら負け
  • C++: friend は負けっぽい(使うけど)
  • XXX: 使ったら負け(お好きな言語をどうぞ)

あとは C を吐くコンパイラは負けた気分とか、 色々あるなぁ

(01:11)

_ make

http://twitter.com/emasaka/statuses/906494269

すばらしい指摘だとおもった。

ああそうそう kati はとうぜんそいう意味

http://shinh.skr.jp/koneta/#kati

(18:55)

本日のツッコミ(全3件) [ツッコミを入れる]

_ ku-ma-me [Haskell: 無名関数書いたら負け]

_ hi_saito [awk でアクション使ったら負け。]

_ niha [goruby: brute force したら負け]


2008-09-03

_ そいや

mircbot っていうアカウント取ろうとしたら、 既にいて驚いたんだけど、 どんなヤツかと見てみたら 取ったのは俺で、まぁおどろいた

http://twitter.com/mircbot

(11:18)


2008-09-06

_ Perlの功績

http://www.kt.rim.or.jp/~kbk/zakkicho/08/zakkicho0809a.html#D20080903-4

正規表現まわりだと =~ とかはちゃうのかな。 自信まったくなし。

あと s///ge はゴルフ的な観点から神

あれ、あと $` $' $& $+ $1 $2 ... も Perl 出身とか? これもまったく自信なし

(05:22)

_ hello.grass 493B

http://golf.shinh.org/p.rb?hello+world#Grass

うし。 ちなみにまめさんのは見ないで頑張った

(14:39)


2008-09-08

_ そいや

http://idm.s9.xrea.com/ratio/2008/09/03/000797.html

での yugui さんのゴルフについての記述は良いなぁ。 探索空間がムダに広いからパズルや リファレンスをひくきっかけとしてうんぬんというような。

あとなんか最近主張してるゴルフというか キモいコード家で書く利点として、 キモいコードというか ちょっとかっこつけたような表現を ちょっと使ってみたくなるような 気持ちが発散されて、 会社では普通のコードを生産できるというような。

GoF 読んだばかりの人がやたらデザパタとか使ってみたくなるとかいうような話。

条件演算子とかも仕事では使いたくないんだよな。

int* p;
p ? *p : 0

とかならいいけど、

char* p;
p && *p ? p : ""

あたりからあやしくなってきて、 どのあたりが読み手がいらつき始める境界かよくわからんので、 最初っから全く使わんでもいいんじゃねとか思っちゃうんだよな。

そいやあとは || も微妙な時があって、

assert(!strict_check_mode || ptr != NULL);

みたいなヤツ。

if (strict_check_mode) {
  assert(ptr != NULL);
}

の方がわかりやすい、と主観的には感じる。 カバレージ測定しやすいという副次効果もあるかも。

まぁそのへんが主観でしかないってのはそうなんだけど、 ただまぁ後者を積極的に読みにくい、 って感じる人はそんなに多くないだろうなぁとか思うと、 読みにくいと感じる人がそれなりにいるであろう前者は 避けたくなるよなぁとか。

一方、家で書いてるコードは普通のコードでも

while (*rp) --**rp++;

とか平然とあって、まぁ発散できてるなー的な

(00:35)

_ BAMBOO麻雀

http://risky-safety.org/~zinnia/d/2008/09/#20080906-t0-h1-p0

を見てやってみた。 面白いなぁ。

こんなルールでも九連ってなかなか出ないんだなぁ… とだらだらやってたら出た。うれしい

(01:40)


2008-09-09

_ RealLib

http://d.hatena.ne.jp/hzkr/20080909#p1

ふえー。 数式の形で覚えとくとかなのかなぁ。 ある程度の normalize みたいなのは途中でやるのかな

(09:03)


2008-09-10

_ ゴルフ場カルトクイズ

ゴルフ場に投稿され、溜まっているコードの量はどのくらいでしょうか

1. 70kB 2. 700kB 3. 7MB 4. 70MB

(22:25)

_ そいや

http://blog.tarotaro.org/archives/216

発表者は寝巻きにサンダルで来ていた(ように見えたが違うらしい)。

にわらった。 確かに寝てる時も着てるので間違ってはいないし。

(22:29)


2008-09-15

_ 答え

そういえば書いてなかった。

du でやると 70MB もあるんだよな。

単順にファイルサイズ足してくと 3.4MB だそうで。 Text Compression 引くと 2.26MB 。 総投稿数は 17384

(02:30)

_ アトランチス

http://jp.youtube.com/watch?v=IjYZ7E7f5CM

via http://twitter.com/alohakun/statuses/920239733

これ星取るルートとしては最短なのかな。 もちょい短かった気もするんだけど。

(02:37)

_ 吉野家

http://mb101bold.cocolog-nifty.com/blog/2008/08/post_0539.html

via http://risky-safety.org/~zinnia/d/2008/08/#20080826-t0-h3-p0

そいやこれは店に入ってから飯にありつけるまでの最速を目指してるとか かと思ってた。

(02:40)

_ 数日

木曜早起きしたので chrome で弾幕はってみる。 結構動いたのでこれはこれはと思った。

で木曜から土曜まで会社の hackathon 的なものに。 だいぶ前から触ってみたかった部分に 触るいい機会になって非常によかった。

帰ってから土曜は寝てた。 夜中にちょっとだけシューティングの基本部分を。

日曜は libBulletML を JS で実装してた。 accel や horizontal を完成させる 根性が湧いてこないあたり、 当時には勝てないもんだなぁと思う。 ただ単順な単位時間あたりにコード書ける量みたいなのは 増えてる気がしてそれは少し嬉しかった。 ただ集中が続かないのでトータルとしては遅い。

本当は bulletSurf なり abagames.util.bulletml なりを 使うべきだったんだろうけど、 前者はソースコードが見当たらんくて、 後者は AS よりは C++ の方が似てるんじゃねえかコレとか思って挫折した。

あとまぁ BulletML => JS のコンバータを JS で書いて libBulletML for JS にしたいかなぁとか思ったのもあって自分でやった。

あとは Lua をなんとかして JS で動かすべきだよね。

(03:04)

_ ちょうほしい

http://twitter.com/hajimehoshi/statuses/921820648

というかよみたい

(16:53)

_ マルチスレッドわかりにくい

ってホントかな的なことをよく思うのだけど。

http://morihyphen.hp.infoseek.co.jp/log2/200809.html#2008-09-14

イベントの検証漏れってのがえーと何指してるのかよくわからなかった。

(20:52)

_ おこられた

ttp://shinh.skr.jp/t/gugurenai.gif

(21:50)

本日のツッコミ(全2件) [ツッコミを入れる]

_ 星一 [今度勉強会かなにかのときに持って参りましょう。]

_ wo [> マルチスレッドわかりにくい プログラミング自体はそんな難しくないですが、再現性の低いバグが発生する、というのは、..]


2008-09-16

_ イベントvsスレッド

http://morihyphen.hp.infoseek.co.jp/log2/200809.html#091530

あー説得されるなぁ。 このへんは考えるたびに違う結論になる気がするんだよな。 今はスレッド派。 woさんと想定してる例が全然違う感じがして、 結局適材適所的なんじゃないかと思ったりとか。 一度イベント派vsスレッド派の宗教闘争とかするべきだな。

とりあえず前教えてもらった正反対の主張をはっておく。

http://www.spa.is.uec.ac.jp/~kinuko/survey/body/events-are-bad.html

で、この話で僕がとりあえず最初に想定するのは webサーバ的なサーバで、 サーバの main thread が accept した fd を 別スレッド以下 slave とでも呼ぶに渡すとかそういう。 で、そいうモデルだと slave から main の方に 送るデータってほとんど無いあたりで、 違いが出てくるのかなぁ。 データが密接に絡めが絡むほど スレッドの方が不利になってくるのは真だと思うし。

で少なくともこいうモデル考えてる時は、 状態遷移表とかきちんとやらんでも うやむやにしきれちゃうケースが多いんじゃないかなぁ…と思う。

とりあえずこっち系モデルで ぱっと思いつくイベントうざい例として、

void handleRequestSimple(int fd) {
  read(fd);
  // hogehoge
  write(fd);
}

とかいう関数をリクエストが来るたびに呼ぶとする。 スレッドの方は

threadLibrary.create(&handleRequest);

とかしてて(もちろん現実的には thread pool なんだろうけど)、イベントの方は

eventLibrary.register(&handleRequest);

とかしてる感じだとする。

hogehoge が簡単な処理なら良いんだけど、 例えば proxy みたいに他のサーバからデータ 取ってくるようなケースだとすると、 スレッドなら

void handleRequest(int fd) {
  read(fd);
  foo();
  requestAnotherServer();
  bar();
  write(fd);
}

とかそのまま書きゃいいわけだけど、 イベントの方だと、

void handleRequestDone(int fd) {
  bar();
  write(fd);
}
void handleRequest(int fd) {
  read(fd);
  foo();
  requestAnotherServerAsync(bind(handleRequestDone, fd));
}

とかになるのかな。 まずこの関数増やすとかうざいんだけど、 それはまぁ問題ないとして、 例えば bar がバグってた時に本当にうざいんだよな。 スタックトレースとか見ると、 スレッドの方は、

bar
handleRequest
thread_main

とかになるのかな。 で、イベントの方は、

bar
handleRequestDone
EventLibrary::loop
...
main

とかになって、これだと何がイヤだって言うと 誰が handleRequestDone を呼んだのかわかんなくなってるっていう点。 手続き的な思考に慣れてる身としては、 気持ち的には handleRequestDone は handleRequest が 呼んでるつもりだったんだけど、 それがスタックトレースに無くて、 バグを追跡しにくい、っていうような。

何かしら callback というのは書く方もイマイチだと思うけど、 少なくとも第三者によるコードの可読性を損ねるというのは ほぼ間違いないんじゃないかと思う。

まぁでもこのへんは僕のわかる範囲でも偏った議論で、 デバッガがイベントモデルサポートみたいなのを入れてくれればいいんじゃね、 スレッドはほどほどのサポートあるんだから不公平な比較だ、 みたいな話と、 スレッドは無限に作るわけにはいかない、っていう話がある。

後者の方はつまり、 thread pool に thread が えーとさっきの論文紹介によると10万スレッドあるとして、 いやそんだけあったら大丈夫だろ…って感じがするけど、 その10万全てがその全てが requestAnotherServer に使われてしまうと、 requestAnotherServer を伴わないような、 簡単な処理 handleRequestSimple とかをする余裕が あるのにできなくなってしまって、 結局イベントモデル的なものを併用しなくちゃいけなくなる、 っていう話。 いやまぁ10万スレッドあるなら大丈夫な気もするが…

あとまぁどうでもいいけど重要な話として、 10万スレッドもあるとデバッグが別の意味でムズいという話が。 つまりどれが重要なスレッドなのかさっぱりわからなくて、 デバッガなどでスタックトレース見る時にどのスレッド見ればいいのー的な。 まぁこれもデバッガおよびランタイムが賢くなればなんとかなるか。

あとまぁレースコンディションとかあると 再現しにくいバグが出うるっていう wo さんの指摘は その通りだと思うし、

あーうーんやっぱ適材適所的な感じなのかなぁ。 スレッドベースの GUI ライブラリとかあるのかな。 キーボードを待つスレッドとマウスを待つスレッドと… みたいなの。

ふーむ

(09:51)

_ イテレータとスレッド論争

http://twitter.com/kinaba/statuses/922906127

これ微妙に面白いなぁ本質的ではなさそうだけど 例えとしてはなんかよくわかる。

しかし考えるとすぐによくわからんくなるので、 一度俺はスレッドの明日を守る守護神であるという設定で wo さんととっくみあいが起きる程度の論争とかすべきなんだと思う。

まーでも適材適所くさい気がするなぁ。 僕がよく見るような、 単一の機能を提供してるようなサーバとか、 裏でなんかしつつユーザになんか見せる、とか その程度の単順なサーバだと たいていスレッドの方が良さげに思う。

あと上に書いたような、ユーザのリクエスト処理してる間に 時間かかる処理しなきゃなんないような、 つまるところプロキシサーバみたいな物体も 割とスレッドな物体じゃないかなぁと思う。 あとユーザが長時間セッションをはって コマンドを順々に叩いてくるような物体も、 手続き的に書けるって意味でまぁ嬉しいかな。

で、複雑に内部状態を変更しつつも 長時間かかる IO があるようなものはどうすればいいのだろうね…

あとそうだ。小さいものは貧乏症的な意味で thread 使いたくない。 sevilwm の ipc 部分は thread で書いた方がラクだったと思うけど、 そういう理由で select でやってる。

(23:56)

_ ここらで

  • scheme の人が言及
  • shiro さん降臨

というような流れがあると考えなくてすんで大変嬉しい。

(23:57)

本日のツッコミ(全2件) [ツッコミを入れる]

_ wo [可読性については、↓継続があれば綺麗に書けるという話があるので、イベントでもスレッドでもあまり差は無いと思います。 ..]

_ shinh [あーなるほど calback が継続になっちゃうのですね…要は thread みたいな書き方でイベント的に書けちゃう..]


2008-09-17

_ 僕の考えたあーきてくちゃ

そいや前ふと考えたのを スレッドうんぬんで思い出したんだけど、 jmp と call の直後だけコンテキストスイッチする可能性がある アーキテクチャとかどうなのかな。 あとコンテキストスイッチしないバージョンの jmp とかあると 色々ラクで良い。 あと jmp とか call 無しで10万命令とか走らせると SIGILL 。

(00:12)

_ これ

ホントにすばらしいのかな

http://www.kt.rim.or.jp/%7ekbk/zakkicho/08/zakkicho0809b.html#D20080915-2

call $

じゃいかんのか。

(01:28)

本日のツッコミ(全3件) [ツッコミを入れる]

_ きむら(K) [リンク元をみると分かりますが、 call $ の場合16bitモードなら3バイトですが32bitモードだと5バイトに..]

_ shinh [あ、コンパイルした後ですねそりゃそうですね… リンク先見てみると言語関係なくやってるんですね。 Ruby 6B 出..]

_ きむら(K) [それは是非! >投稿]


2008-09-19

_ 矛盾したライセンス

http://d.hatena.ne.jp/nazodane/20080918/1221748642

ふと矛盾したライセンスをかかげると全く使えなくなるのかな… とか思ったけど、別にそんなことない気がした。 要は全部守ればたぶんいいんだよな単に。 ライセンス変更可能で特許取得禁止だと、 えーと特許取得禁止なライセンスに変更するなら別にOKみたいなそういう。 ホントかな。

で、

  • 男性のみ使用可能です。
  • 男性は使用してはいけません。

とかだと完璧な矛盾ライセンス。

まぁそういう問題からフリーな GBL で 10 おくえんください

http://shinh.skr.jp/m/?date=20060817#p06

(00:08)


2008-09-20

_ 英語

http://d.hatena.ne.jp/Ozy/20080917#p1

なんちゃら翻訳はさておき、 俺これさっぱり訳せないのがアレですね…

(00:41)

_ イベント待ち

http://twitter.com/hogelog/statuses/928187549

SDL_WaitEvent で待ったら大丈夫そうな

(16:17)

本日のツッコミ(全1件) [ツッコミを入れる]

_ hogelog [御察しの通りpollで取ってまして、waitで取るようにしたら静かになってくれました。ありがとうございます。]


2008-09-21

_ 万能トラブルシューティング

http://secretgeek.net/checklist.html

via http://d.hatena.ne.jp/KZR/20080920

これはべんりだ。 なんせ w3m で見たら

A simple checklist for fixing regular problems

1. Enable javascript
[Refresh List]
:: built with wscg :: submit items:: home (secretGeek)

って教えてくれた!

(21:32)


2008-09-22

_ びょー

体調悪い上にやるべきことがあって 二日間何も無かった気がする…

やるべきことの方は、 なんかこいうのこんなにできない子だっけ、 って感じで時間がかかった。 なんか丸一日溶けたんじゃないか。 うぐぐ。

(02:16)

_ バファリン

きくなぁ。頭いたくなくなった

(21:17)


2008-09-23

_ まだ

37度普通にあるなぁ。

なんもやる気が起きなくてかなしい

(17:24)

_ わーど

http://twitter.com/alohakun/statuses/931308570

むしろ中二病的には Word だなんて!絶望した!!みたいな

(17:54)

_ flash

備忘録

apt -d libflash0c2
apt -d gnash
apt -d libflash-mozplugin

こやつらを消さないと Adobe のが動かない。

(22:53)

_ 弾幕風 + オーエン

http://www.nicovideo.jp/watch/sm4572867

すごいなーと思いつつも、 手動でもこの程度なんだな…っていう残念さも。

結局高速弾じゃないとなかなかシンクロを感じられないんだよなぁ。 あと光らせるのはずるいけどいいな

(23:12)


2008-09-24


2008-09-25

_ てか

http://d.hatena.ne.jp/sumii/20080924/p1#c

自分でメール投げればいいと気付いた。

(01:05)

_ 微熱

依然37度かー。微妙に長いなぁ

なんかアリが大量発生したりしてるのは 死臭が出てるとかそんな感じなんだろうか。

(01:17)

_ vimperator

gi 使えなくなってる、かな

(23:29)

_ 微熱日記

36.9 。実はこのへんが平熱説。 でも頭痛いからなぁ。

そんなことよりずっと寝てたから やりたかったこと忘れまくった。

  • BulletML => JS compiler
  • Yajit2.0 (もう 1.0 は忘れる)
  • sevilwm
  • ゴルフ場系
  • SDL なんか
  • Canvas でなんか

まぁそんなことより久々に俺言語作りたい欲が。

(23:39)

本日のツッコミ(全2件) [ツッコミを入れる]

_ nanasi [おだいじに]

_ shinh [ありがとうございますー]


2008-09-26

_ 最近のマラソン

書こうと思いつつ書いてなかった。遠い記憶である…

  • 36 XORPlusEnc

えらい弱い共通鍵暗号を解くというもの。 鍵は単語データベース+ちょっとした操作みたいな簡単な方法で作られ、 さらにどんな鍵だと推測しても文章の後半部分は ほとんど解読されてしまう、という情けない暗号。 だから前半部分の精度が重要。

序盤頑張って n-gram とか単語一覧とか圧縮して埋めてたんだけど、 終わりの方にリロードしてみたらだいぶ前に errata 入ってて 単語一覧取得する関数提供されてるでやんのバーカ、 みたいな感じだった。

まぁでもそれなりに頑張って、18位程度のものができたっぽい。 アルゴリズムは忘れた。

01:48 >i< 僕は色々迷走しましたが
01:50 >i< 文字ごとの2gram&3gramと、確定個所と一致した単語があるとボーナスとかと
、TWLに入ってる単語プラスWikiNameから引っこ抜いてきた単語辞書にある単語が出てき
たらボーナス、とかだったと思います
01:50 >i< 何が良かったのかとかよくわからん
01:53 >i< 確かに 3gram デカい割にイマイチ効果なかった気がしてました
01:54 >i< なんかたしか金曜くらいまで
01:54 >i< getWord とかいう関数が与えられてるのに気付かなくて
01:55 >i< 単語リスト埋めるのは無理かなー → 確定した個所の回りから greedy に確定
させてくか → となると 2gram だけじゃ心細いな という感じで 3gram 作った覚えが
01:55 >i< そしてその後 TWL06.txt 圧縮すれば埋め込めることに気付いて
01:55 >i< 埋め込んで満足した後に getWord の存在に気付きました
01:57 >i< あでも単語リスト埋めるのにその圧縮使えたので
01:57 >i< まぁ良かったといえば良かったです
01:59 >i< もっとひどかった
01:59 >i< 06.28.2008 12:23:36 の段階でまだ埋め込んでるから
01:59 >i< 時差考えると土曜の晩すか
02:04 >i< 探索はなんか僕は TWL のリストだけ適用したものに対して 2gram&3gra
02:05 >i< mでチェックしといて、その中で成績良かった100個の後ろに数値くっつけて総
探索とかだった気がします

何言ってるかよくわからん。 たぶん Wikipedia のページの先頭部分を保存しておくみたいなのを やろうとしてイマイチだったんだけど、 うまいことやればそれが結構効くはずだった、 ってあたりがもっと上位との差だったんじゃなかったけか…

まぁそれはともかくコードサイズがなんか事故で大きすぎて、 0点だったのでガツンと rate 落ちてわらった。

  • 37 Textures

面白そうだなーと思ったけど確か忙しすぎて参加できず。

ttp://www.topcoder.com/contest/problem/Textures/1.png

こいう絵の分割をするのね。

  • 38 PieceMover

これも忙しかった。あとそもそもどうやって解いたもんかぱっと案がなかった。 16パズルみたいな物体だっけ。

  • 39 OneTimePad

暗号アゲイン。今度こそ圧縮ガツンとやろうと思ったんだけど、 まぁなんか忙しかったんじゃなかったっけ。

  • 40 Klondike

いわゆるソリティア。 課題が面白そうだったので、忙しかったけど 適当にやってみたらそれなりのができたので、 そのそれなりのを投稿して終了。

http://www.topcoder.com/longcontest/?module=ViewSubmissionHistory&rd=13565&pm=10014&cr=8400878

いつも再提出しまくるのにあまりしてないあたり 気合いが足りてない。 やったこと:

22:51 >i< 超普通で単に先読みするだけですね
23:02 >i< 僕は見えてる範囲でたくさん裏返ってるカードを表にできるのが良い手である
、という感じでやりましたが
23:02 >i< 探索が超適当なので、遅くてすごい浅い読みしかしてません
23:03 >i< 上の方の人は深い読み + その基準で同じスコアの場合でも deck の状態とか
でスコアリング、って感じですかね
23:03 >i< 僕もその手のスコアリングみたいなのはほどほどにやったんですが
23:04 >i< 適当なヒューリスティックだとかえって悪くなるばかりで
23:04 >i< よくわからんのでめどくなりました

そうそう考えたアイデアがことごとくローカルテストケースに対して 悪く働いたのでやる気が尽きた。

  • Threadfest

レイトレーサだったらしい。2週間もムリ。やってない。

  • 41 Steganography

面白そうだったのでちょっとコード書いてみる。 画像中の下位ビットに埋められた画像を起こす。 Sample 1 は復元できてるようなノイズあるような… っていうかサイズ全然あってないから、きちんとやらないとなぁ、 と思って、色々アイデアは考えたけど実装せずに風邪その他で終了。

(00:01)

_ まさか C のことじゃないすよね

http://q.hatena.ne.jp/1221708568

重箱の隅だけど、えーとなんでダメなんだ…とか考えて ああ for 文とかかとかわかった。 K&R 適当に見るに、式文と do while 文と jump 文は セミコロンで終わるって感じみたいだ。

にしてもこの議論面白いなぁ… 誰か shiro さんの琴線に触れる煽り方をマスターすると良いね。

やっぱ SICP とか読んでみた方がいいのかなぁとか 思った俺は完全に踊らされている。

そこで反抗期としては無理に反論して SICP を読まない必要があるのである。 いや別に反論せずに読まなくてもいいんだけど。

まぁアレかなぁ。 やっぱプログラミング言語が非常にプログラミングに とって重要な要素であるのは当然だけど、 でもやっぱそこどうでもいい、 ってやっちゃうのはちょっと無理があるかな。

縄文人であることは賛成であって、 火の使い方も石器の作り方も improve していこーって フェーズなんだとは思う (どうでもいいけど improve という単語の便利さは異常)。 でまぁ石器の研究に必要な程度の火の扱い方をマスターした子に対して、 文明の本質を教えるために火の起こし方はどの流儀が… とか言われちゃうと、石器こそが文明の本質であると思ってる子としては ふがほげ。

全然よくわからん。

要は OS こそがプログラミングの本質である!!!と 思いつつ言語もほどほどにたしなんでる子が、 プログラミング言語について自分に学ぶべき点があることは自覚しつつ OS の勉強を先行させる、ってのはまぁいいだろみたいな。

でまぁ僕の言いたいこととしては 勉強のネタが時間に対して自乗くらいのオーダーで増えてるから 本当に困るというような。 しかも年々加速してるだろコレ。 となると SICP とかは老後でいいんだよ!! みたいなそういう。

にしても Python とか教え始めてる系の話だけど、 JavaScript は結構いい候補な気がすごいするよなぁ。 俺 JS interpreter (ECMA の仕様のキモい部分は無視して) とか作ったら色々勉強できそう。

まず JavaScript for education という言語を定義してだね…

(22:08)

_ ↑への正しい反論

機械語を直接吐かない言語に本質などない!

ていうか機械語を書け!

機械語を理解して始めて

まず CPU for education とかそういう命令セットを定義してだね…

てかMMIX ってそいう目的か。な? 知らん

(22:13)

_ 37.1

非常にいけてない

(22:14)

_ emacs

(require 'uniquify)
(setq uniquify-buffer-name-style 'post-forward-angle-brackets)

が便利だと教えてもらう。わいわい

(23:45)

本日のツッコミ(全1件) [ツッコミを入れる]

_ きむら(K) [>てかMMIX ってそいう目的か そういう面もあると思いますが、 ・高水準言語は流行すたりがあり、また言語ごとに記..]


2008-09-27

_ 短い答えはいまいち書けなかった

http://www.atdot.net/~ko1/diary/200809.html#d27

o = [1, 3, 4, 5, 6, 12, 13, 15]

$_=o*','
o.map{|v|sub(/#{v-1}(.)?,(#{v})|.*\d$/){$1?$2+$1:"[#$&]"}}
p eval$_

要はこの問題、何がイヤって 長くなるとかうんぬんより条件式が多くなりまくるのが ウザいということであり、ささださんのは2つしか無いので優秀。

で、その意味で僕のコードは 一つしか無いので素晴らしいと主張したいのである。

(05:53)

_

o.map{|v|sub(/.*\d$|#{v-1}(.)?,(#{v})\b/){$1?$2+$1:"[#$&]"}}

とかじゃないとだめか。左っかはの \b は無くていい気が するが自信なす

(05:58)


2008-09-29

_ だるい

今日も無為な一日だった…

有意義なことと言えば hogelog さんの tumblr とそこからのリンクをだらだら読みあさってたというような。

少女ギターを弾くが出てきた。 あれはすばらしい。 つゆダクとか早く終われと思ってたけど今どうなったんだろう。 なんか違うのをまたスピリッツでやってるらしい…

(00:29)

_ DOS

ゴルフ場に入れた。

http://golf.shinh.org/p.rb?FizzBuzz#DOS

適当だけど終了処理入れても 79B だから勝ってるとは思う…

http://labs.cybozu.co.jp/blog/takesako/2007/05/fizzbuzz_x86.html

まぁ DOS っていうか COM って Windows でも Linux でも手軽に書けすし手軽に走るし、 アセンブリ入門には良い気がするなぁ。

(02:04)

_ 最適化オプション

で -Wall の挙動が変わるとかは知っといて損はない気がする。

i@u4 ~/test
> cat unused.c
int main() {
    int a;
    return a;
}
i@u4 ~/test
> gcc unused.c -Wall
i@u4 ~/test
> gcc unused.c -Wall -O2
unused.c: In function 'main':
unused.c:3: warning: 'a' is used uninitialized in this function

http://d.hatena.ne.jp/hyoshiok/20080927#p2

via http://homepage1.nifty.com/herumi/diary/latest.html#28

本題については2種類うんぬんについては

管理すべき実体が増えることは管理のコストが増加して、よろしくない。最適化オプシ
ョンなしのバイナリで延々デバッグしていたのだが、実は最適化オプションありのバイ
ナリでは当該バグに遭遇しないとか

のあたりはギャグで言ってるのかなぁ的なレベルだなぁ… 話が逆でターゲットが組み込みとかならコンパイラのバグ回避とか あると思うけど…

(02:40)

_ 全然適切な例が思いつかんけど

static inline void f(int i) {
    int* p = 0;
    int j ;
    for (j = 0; j < i; j++) {
        p += j;
    }
    for (j = 0; j < i; j++) {
        *p += j;
    }
    for (j = 0; j < i; j++) {
        p += j;
    }
}

int main() {
    f(10);
}

この程度の関数が inline 展開で消え失せたりして、

(gdb) run
Starting program: /home/i/test/a.out

Program received signal SIGSEGV, Segmentation fault.
main () at hard_to_debug.c:15
15      int main() {
(gdb) bt
#0  main () at hard_to_debug.c:15

とか言われたら結構キツいというか 場合によってはデバッグビルドしなおして gdb で追う方が速いとか言いたいんだけど、 例があんまり適切じゃないからイマイチ。

まぁ僕も gdb 使うとしても たいていは最適化ついたままでやってるし、 たいていのケースで慣れりゃデバッグできるよ〜的な 主張はわかるんだけども。

それはそうと、最近よく妄想するのは、 最適化とか strip かかったバイナリの行を推測するようなツール。 strip されててもその関数のダンプと関数内の落ちた位置を 人間が見たらだいたいどこで死んだかわかるよね。 そういうカンをある程度自動化できないかなぁ的な。

あとスタックトレースって その関数の何分の何まで進んだかとか表示してくれると 上記のような推測がしやすくなるんだけどなぁとかいう。 まぁ分岐あると推測外したりしまくりそうだけど。

(03:00)

_ T9

http://ja.wikipedia.org/wiki/T9

おおー。子音入力をだれか

(04:17)


2008-09-30

_ binspect

当然あるべき機能が無いと気付いた。 C のパーサコード生成するべきだろう常識的に考えて。

(00:48)

_

ちょっと考えるに 普通のパーサジェネレータも スクリプト言語の DSL として書いておけば、 スクリプト言語で軽いチェックをして うまくいきそうだったらコンパイル言語用の パーサ生成して…みたいな感じでできるかな。

パーサジェネレータをスクリプト言語の DSL として書くのは結構大変かもしれないけど…

まぁ普通にスクリプト言語用のパーサも吐けるように すれば似たようなことにはなるけど

(12:33)


2008年
9月
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
1.niha(2014-05-24 05:24) 2.hi_saito(2014-05-24 05:24) 3.ku-ma-me(2014-05-24 05:24)
search / home / index

全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。

shinichiro.hamaji _at_ gmail.com / shinichiro.h