ToDo:
Mac は不思議がいっぱいだ!
まず ld が表題のエラーを出す件は、 これはまぁ普通に仮想メモリ空間が足りない。
http://www.opensource.apple.com/source/ld64/ld64-97.2/src/ld/ld.cpp
uint8_t* p = (uint8_t*)::mmap(NULL, info.fileLen, PROT_READ, MAP_FILE | MAP_PRIVATE, fd, 0); if ( p == (uint8_t*)(-1) ) throwf("can't map file, errno=%d", errno);
どうしたもんかなーというと、 正直 release build するくらいしか短期的な方法は思いつかん。
さて中期的な方法を考える。 どうせ mmap できないファイルなんて archive に決まってる、 そして archive を全部一気に mmap する理由とかどこにもない。
OK だいたいわかった。
Mach-O の .a はたぶん最初のエントリとしてなんかテーブルが入ってる。 これはたぶん ranlib が作るエントリだ。 名前が __.SYMDEF ならこのエントリになるっぽい。たぶん。 このファイル名のファイル作って突っ込んだらどうなるだろうね。
でまぁ Reader::getAtoms やら Reader::validFile やらは、 このエントリの列を iterate してるわけだなー。 iterate してる最中は、
template <typename A> const class Reader<A>::Entry* Reader<A>::Entry::getNext() const { const uint8_t* p = this->getContent() + getContentSize(); p = (const uint8_t*)(((uintptr_t)p+3) & (-4)); // 4-byte align return (class Reader<A>::Entry*)p; }
てな感じなので、 ちょぼちょぼ munmap mmap がはさまるような構造にしてやればいいんじゃないかねー。 やってられるかー
(00:40)
すげえ雑な方法で自分のところではリンクは通るようになった。
diff -ur ld64-85.2.1.orig/src/ld.cpp ld64-85.2.1/src/ld.cpp --- ld64-85.2.1.orig/src/ld.cpp 2010-06-29 07:54:08.000000000 -0700 +++ ld64-85.2.1/src/ld.cpp 2010-06-29 09:15:37.000000000 -0700 @@ -3088,12 +3088,19 @@ } + +struct GreaterFileSize { + bool operator()(const Options::FileInfo& l, const Options::FileInfo& r) { + return l.fileLen > r.fileLen; + } +}; void Linker::createReaders() { fStartCreateReadersTime = mach_absolute_time(); std::vector<Options::FileInfo>& files = fOptions.getInputFiles(); + sort(files.begin(), files.end(), GreaterFileSize()); const int count = files.size(); if ( count == 0 ) throw "no object files specified";
つまり全ファイルをデカい順に sort 。 ただこれでは chromium の bot はなおらんだろうね。 なんか build log 見ると謎の hack がボットには入ってるっぽい。
3時間ほどあれば根治もできると思うがー
(01:31)
適当に家賃を自動引き落しにしたいなぁというのと、 そういえば敷金はかえってきたんだろうか… というのを調べようと、銀行へ行った。
したらなんか色々やった
で、三井住友に振り込むから手数料高いっぽいので、 三井住友に聞きに行く。
結局毎回 400 円とかするとなんかちょっとバカらしいよねえ。 大屋と同じ支店で口座開くとかいう荒技もあるが。
どうも定期的な振込が安くでできる銀行口座開けってのが よくあるアドバイスっぽい。 めどいぞ。
(22:57)
cronlog を使わせてもらおうと思った。
http://github.com/kazuho/kaztools/blob/master/cronlog
僕は自分は C++ と Ruby を使って書くことが多いけど、 人が書いたものとしては C や Perl じゃないと許せないという 考えを持っているので Perl なのは良い。
どうでもいいけどこの guncat というのは zcat とは違うんかな。
さて health check は ruby の test/unit でいいのかなーと思ったが、 色々不満がありそうだ。
まずどうせ自動再起動も入れたいので、 失敗時にはなんかフック入れたいんだけど、 assert 一個につき test_ 一個書く感じにしたいので、 全部の test_ に rescue とか書かにゃならん。 一つの class の中の test が一個コケてたら 自動再起動スクリプトが走る…とかにしたいんだけどな。
こんなんでいいか
(01:25)
いくつか強そうなチーム
http://wiki.freaks-unidos.net/weblogs/azul/icfp-2010
http://gwillen.livejournal.com/65537.html
http://hoenicke.ath.cx/icfp10/
(17:58)
_ kazuho [うほ。お手柔らかに m(__)m > guncat というのは zcat とは違うんかな zcat だと全部のフ..]
http://twitter.com/kinaba/status/17019694551
これは
http://www.kmonos.net/pub/Presen/fltv/FLTV.pdf
の
.maxPrio = .max{|a,b| a.priority <=> b.priority} even = evens.maxPrio odd = odds.maxPrio
ができるって話よりもう一歩いい感じな感じだなぁ。
ミスって引数足りない時はどうなるのかな。 エラってくれないと静かに全然期待と違う動きすることがあってうざいと思うんだけど、 まぁいかにもこの部分適用だけされた関数使ってませんよーとか スコープ出る時に言ってくれたりしそうだけど。
(00:27)
こういう形式のゴルフコンペはどうかな。
つまりこうみんなで競争しながら頭ひねって答えを考えると。
とかいうルールを加えてもいいのかなぁと思う。 明らかに自明な最短解がある問題が出題されるとつらいので、 出題者は開始1時間解答できないとかそんな。
得点計算式に問題があるな… A さんが 10B 出して B さんが 8B 発見した時に、 9B => 8B と投稿した方が点数が多くなる式はダメだ。 むしろ分割するともらえる得点が減るといい気がする。
(01:34)
http://ja.wikipedia.org/wiki/MD5
MD5 はあっさり衝突するらしい。ダメぽ。
http://ja.wikipedia.org/wiki/SHA
SHA1 もうどうも衝突してるらしいじゃんダメぽ。
何かっていうと自分で書いたハッシュ関数とか 欲しいなぁというのがあったのだけど。
ていうか codegolf.com で sha256 書きましたっけ… すっかり忘れていた。
(01:59)
ニコニコの latency ひどいよなーと思って、 inspector で見てみると、 どうも prototype.js とかの 静的なコンテンツのダウンロードというか 304 Not Modified がかえってくるまでが遅い。
アホかーと思ったので、 とりあえずローカルの apache に mod_disk_cache を仕込んだ。 だいぶはやくなった。
(18:43)
powertop すると Ruby が上位に来ることが多い。
たぶん timer thread でもりもり起きてるのが問題かなーと思ってたんだけど、 よく考えると ruby 1.8 でも上位に来てる。 ruby-1.8.7 でも timer とかあるっぽいし 1.9 だけってのが記憶違いかな。
地球に優しくするにはどうすればいいんだろう。
http://redmine.ruby-lang.org/issues/show/270
に書いてあるみたいに最初に Thread.new するまでは 少なくとも必要ないのかなぁ。
ていうか thread の切り替えを促すってのは 各 thread が自発的にあー 10ms 過ぎたなーとか言って 他にゆずるとかできんのかな。
signal の集約の方は別にタイマとしての機能は必要じゃない気がするけど、 ええとどうなんかな。
(22:08)
u4 で適当に動かしていたサーバ群を適当に daemontools 管理下に置く。 具体的には
があったようだ。
あとは…
あたりが勝手に動くとなお良い。
それと health check 的なのを統合的にやりたいなぁ。 チェックすべきは
あたりか。
(23:23)
twitter のリソースの読まれっぷりを見てると、 spinner.gif とか loader.gif とか外部リソースなんだなぁ。 こいうのは data: にするもんなんかなぁと思ってた。
あとこれを最初に読む必要は無いよね…とか
(23:42)
寝る前に電気を消すためにスイッチに近付くのがめんどい。 どうにかして遠くからオンオフできるようにしたい。
どうやらこういうものがあるようだ。
http://www.nissinweb.co.jp/life01.html
うーんこれは何がどうなってるんだろう。 既存のスイッチの上につけられるのかな。 だとすると物理的に動くんかいや
(01:39)
なんか焦るとよくないなぁと思う。
気が急いて眠れないし、 しかし寝ないと集中力低下して勘違いを放置するし。
しかしまぁそろそろマシな勝負ができるといいなぁと思いますよ… と思ったらサバさんが
(05:31)
うーんくやしいなぁ。 最終的にはマラソン的な問題で、 いつものマラソン的な感じのダメさだった。 もうちょっと頭良くない感じの アルゴリズムとかはともかく 実装ゴリゴーリな問題の方が得意なんだろうな。
とはいえ問題はとても良かったし、 運営も良かったと思う。 今回程度のダウンタイムってのは 神とまでは言えないけどとても良かったと思うんです。
だからこそくやしいわけなんだが
でなんかまとまった文章書こうと思ったが、 そもそも key prefix をどうやって作ったか、 という手順からして思い出せない。
どういう問題だっけ…
回路は
http://twitter.com/kikx/status/16688748696
を見るに kik さんと同じだろうと思う。
工夫した点は左右ひっくり返せる部分があるので、 そこを乱数でひっくり返して何度かやって いいのを取るとかいう。
(22:52)
30分くらいで45台くらい新規給油したりして良かった。
問題をまだ理解してないのは困ったもの。
あと40時間?結構時間ある感じだな。 寝るかなーと思うけど今寝て起きてそのままってのはちょっと長いね…
(05:00)
いい問題だなーと思う
スタートへの敷居高すぎなのだけがアレ
とりあえず適当に稼げそうなところは稼いでおいた
明日へのメモ
プライオリティとしてはどこからかなぁ。 工場は後々効くだろうけど時間の無駄に終わる可能性もあり。
しかしこういうのは kikx さんとか得意そうである
二人いるのはこういう事情なので気にしないで
21:46 >shinh< register したらしいのにパスワードこないな 21:47 >shinh< あれ来てるんですか 21:47 >shinh< メアド入れまちがったとかかな 21:47 >shinh< shinh さん詰みそう 21:48 >shinh< 残念だなあ 21:50 >shinh< お team 名変えたら email address is already in use 21:50 >shinh< メアド入れ間違ってないじゃないですか 21:53 *** Change: shinh -> shinh2 21:53 >shinh2< しょうがないから今日から shinh2 に改名
(13:59)
via http://twitter.com/kinaba/status/16310294032
これいいなー。こっちが流行ってればいいのに。
どうでもいいけど忙しい気がする。 別にたいして忙しくはないんだろうけどなあ。
マラソン結局不戦敗。 かなしい…
(03:08)
http://slashdot.jp/~taro-nishino/journal/509450
かなり説得力あるなぁと思う。
前に git の ML で読んだ時とは大違いな印象だけど、 まぁ当時は全部あんま読んでなかったのかな。
今度ゆっくり一つ一つの機能を考えてみたい気がする。 とりあえず多態と STL は 欲しいかなぁと思うけどどっちも kernel に とって重要じゃないってのはそうなんだろうと思う。
あとはこう単純に関数とメンバを同じところに書く習慣を強制されるのは、 自分が悪いコードを書く率を減らしてくれるって意味でありがたいんだけど、 そういうのはダメかなぁ。 C++ の方が C よりバカに優しいと思うんだけど。
ていうかそう、激しく同意するのはその、 僕は自分では C++ 書きたいけど、しかし 人の書いた C++ コードはあんま読みたくない ケースがすごく多いって話なんだよな。 C にしてくれという。
あーなんでか忘れてた。 RAII は欲しいだろさすがに。 さすがに kernel でも役に立つんじゃないか。
(03:41)
1位は略
2位の RAII は RAII というかスコープ出た時になんかできるってやつで、 Mutex の auto unlock みたいなのは嬉しいんじゃないかなぁ
3位のクラスってのは単にメンバ関数のことを指してるんだと思う。 やっぱ頭整理しやすいと思うんだよね。 もちろん C でもちゃんと一定のルールに従って書いてくれりゃいいんだけど、 自分で新しくコード書く時にルールを考えたりするのがやはりめどい。
4位の STL はまぁ大規模なプロジェクトなら自分で書いたらいいんだろうけど、 スクラッチからなんか書く時の速度が相当早くなるんですよという。
5位の多態はこう、結構欲しい時は本質的に欲しいんだよなぁ。 関数ポインタ3つ以上とか持ってる構造体とかは、 ちょっと厳しいもんがあるんじゃないかなぁ。 そうなっちゃうと過剰に自由度が高い状態になってしまって、 見通しが悪くなるというかなんというか。
6位のアクセス制御はまぁやはりドキュメントとして。 ただ private non-virtual 関数は cpp の方にだけ 書けばいいことにできんもんかと思う。
7位。オーバーロード…はいるんだろうか。 operator<< とか、何かしら出力系では欲しいんだよなぁ。
8位 template 。 低い位置だなぁというかまぁ STL は上の方にいるのだから 不自然な話である。 まぁマクロあれば自分で書く範囲なら それなりになんとかなるんだよな… でもそいうケースの場合は普通に template の方がいいけど。 まぁとにかく必要な頻度が低い。
9位継承。これも多態を上に置いておいてヘンな話だけど、 要は実装継承的なものを指していて、 多態は interface 的なものを指してることにしよう。 まぁ手間ははぶけること多いから継承好きなんだけどね。
10位は例外はなんかたいてい 超大域脱出(つまりどうしようもないことが起きてエラーメッセージだけ吐きたい時) にしか使わないからなぁ。そしてデバッガのこと考えると 超大域脱出とかしてるより SEGV の方が良かったりする。
(04:05)
前 | 2024年 10月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
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扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。
_ a watcher [こういうのは昔は新生銀行が人気だったんだけど、最近は条件が厳しくなってきているんで、今はSBIネット銀行が人気なんで..]
_ a watcher [SBIは自動振込機能もあるんですね。 http://www.internetbank-hikaku.info/col..]
_ shinh [SBI の口座申し込みました! ありがとうございます。]