ToDo:
かように明らかに不健康であるものの、 健康診断では特に不健康だとは言われないのであった。 これほんとに役に立つんかなー。
前回は身長172.7体重52.9とかで判定 Cb とかで軽度異常とかだったらしいんだけど、 今回は身長172.6体重51.5とかで平均からの逸脱は激しくなってると思うのに 判定 B とかになっていた。 何が基準だかさっぱりわからんがまぁ 体重とかで異常とかわからんということじゃないかと思う。
まあそんなことよりヘモグロビンが足りないらしい。 件の前立腺には亜鉛が良いらしいんだけど、 要は何かしら鉄っぽいものが足りてないのかなぁ。 たしかになんか会社のメシで内蔵とか出ないしな。
(00:17)
なんか zsh が動かんくなっていた。 libncurses がどうこうらしい。 とりあえず .cshrc をどければ普通にログインできるようだった。 ちょっとほげった感じ bash があればとりあえず良さげなので exec /usr/local/bin/bash とかでお茶を濁すことに。
(00:28)
推定4位(99-100倍の範囲に人がいたら5位)かー。 120倍付近にはいたかった感じだなぁ。 未だによくわかってないけど lqr 多すぎとかが メインの死因だったのかなぁ。 今度調べよう。
110倍台のところにいる人はどなたなんだろうか どいう違いがあったんだろうと気になるな。
学生弱いのは cell challenge のおかげで oxy さんみたいな頭おかしいのがいなかったとかありそうだなぁ。
(06:03)
わかってる範囲では
あたりで、 bit いじった人で 現段階で post mortem にもいらっしゃらなさげな方は 110倍台の人だけかなぁという。
(06:18)
def bitonic_sort(a, b, e, z)
s = (e-b)/2
return if s == 0
s.times{|i|
if a[b+i+s] && ((z != 0) ^ (a[b+i] > a[b+i+s]))
a[b+i], a[b+i+s] = a[b+i+s], a[b+i]
end
}
bitonic_sort(a, b, b + s, z)
bitonic_sort(a, b + s, e, z)
end
def bitonic_merge_sort(a)
s = 1
n = a.size
while n > 1
n /= 2
s *= 2
n.times{|i|
bitonic_sort(a, s*i, s*i+s, i%2)
}
end
end
a = [*0...32].sort_by{rand}
p a
bitonic_merge_sort(a)
p a
こんなかんじ? 2 の倍数じゃないと動かんが。
(08:20)
http://golf.shinh.org/reveal.rb?Quine/kurimura/1237450284&d
via http://niha.tumblr.com/post/87839196/mixin
なるほどなぁ。
(13:46)
http://www.mail-archive.com/tinycc-devel@nongnu.org/msg01798.html
http://landley.net/code/tinycc/
でこのバグの fix は rob's mail-list とやらにあるはずなんだけど、 その ML 自体見つからんしこまるね
まあ shared object とかの方が面白そうだしそっち見るか
(16:03)
そういえば
「薬三つ出しとくよ、抗生物質と痛み止めと胃薬」 「胃薬ってなんすか」 「抗生物質飲むんだから胃薬必要なのは当たり前でしょ。胃荒れちゃうから」
とかそんなかんじの会話があって、 今にして思うとこれもひどい気がした。 当たり前じゃないよ
(00:07)
http://b.hatena.ne.jp/entry/http://shinh.skr.jp/m/?date=20090316%23p06
個人的な感覚では、バッファ破壊してようが 一旦ポインタのリストを返しちゃうような実装だと strtol 連打より遅くなっちゃうし、 かといって callback 渡すような実装だとめんどくさいし、 それにたぶん今時のアーキテクチャじゃ分岐予測的な観点で最速じゃない。 まあ関数オブジェクトなり C++0x の lambda を渡す実装ならいいんだろうけど。
でまあというわけで split/join とかしたい時は 99% 速度なんて気にしてないという法則から、 普通に vector<string> かえす split がとりあえず あったりいいんじゃないかなぁとか思うわけです。 まあ insert_iterator を引数とする関数でも許せなくはない。 join は input iterator 二つに対して lexical_cast<string> かまして 合成していくようなのがあればいいんじゃないかな。
なんかしら、C++ の遅くなるようなものは加えれない原則は インターフェースを壊滅的に使いにくくしてると思うんだよなぁ。 他には assert(hogeMap.insert(make_pair("abc", 4)).second); とか書き飽きた。 second とか冗談じゃないというかんじ。
(00:24)
最近コンビニで復刊してるので地道に買って読んでいる。 足りない分は中古で補完したり別に面白くない部分は飛ばしたりしつつ。 まあ昔読んだことはあるのだけど、地味に面白いなあと思う。 まず「ぼくの考えた理想の社会」ネタは個人的に好きなんだよなぁ。 自分でもよくぼんやり考えるし。
あれこれ考えると自分的には、 「暗黙のうちに個人同士で助けあう仕組みになっていて、戦争がない」 あたりがとりあえずぼくの考えた無敵の理想社会の要素なわけだけど、 後者は目的の同意は簡単に得られるのに方法論がサッパリ見当がつかないんだよね。 そいう意味で破天荒な SF とは言えその方法論が語られるのは面白い。
あとたぶんかわぐちかいじが見開きのとこかなんかに書いていた、 「この本に出てくる人はどの立場の人もみんな自分の仕事に真摯です」 みたいなのがいいなと。 マンガって安易に悪役出しがちだけど、 実際んとこは自分が悪だとはとても思ってない者同士で あらそうケースの方が多いよねー的な
(00:37)
まとめると、
#define min(a, b) ((a) < (b) ? (a) : (b))
printf("min=%d\n", min(1, min(2, -1)));
は常識で考えて展開してくれないとこまる。
int A = 1;
#define A 1+A
#define B(x) x
printf("%d\n", B(A));
は常識で考えて2回展開されちゃこまる。
さらに、マクロは外から展開していかなければならない。
これらを両立させるには、
という感じでやればいいんだと思う。 TCC 的には nested_list をややこしいことにすればたぶん良い。
(22:17)
typedef struct {
unsigned long long a: 1;
unsigned long long ll: 50;
unsigned int r;
} S;
に対して
S s; s.ll = 0x123456789aULL;
がこうなる。 こう長くなっちゃうと 最適化しないコンパイラの方が読みにくいとおもう
8048459: 48 b8 9a 78 56 34 12 mov $0x123456789a,%rax 8048460: 00 00 00 8048463: 48 c7 c1 9a 78 56 34 mov $0x3456789a,%rcx 804846a: 48 89 ca mov %rcx,%rdx 804846d: 89 55 ec mov %edx,-0x14(%rbp) 8048470: 48 89 c2 mov %rax,%rdx 8048473: 89 4d e8 mov %ecx,-0x18(%rbp) 8048476: 8b 4d ec mov -0x14(%rbp),%ecx 8048479: 48 89 55 e0 mov %rdx,-0x20(%rbp) 804847d: 8b 55 e8 mov -0x18(%rbp),%edx 8048480: 48 8b 4d e0 mov -0x20(%rbp),%rcx 8048484: 48 89 45 d8 mov %rax,-0x28(%rbp) 8048488: 48 b8 ff ff 03 00 00 mov $0x3ffff,%rax 804848f: 00 00 00 8048492: 48 21 c1 and %rax,%rcx 8048495: 48 89 c8 mov %rcx,%rax 8048498: 48 c1 e0 01 shl $0x1,%rax 804849c: 48 8b 4d f0 mov -0x10(%rbp),%rcx 80484a0: 48 ba 01 00 f8 ff ff mov $0xfffffffffff80001,%rdx 80484a7: ff ff ff 80484aa: 48 21 d1 and %rdx,%rcx 80484ad: 48 89 c2 mov %rax,%rdx 80484b0: 48 89 c8 mov %rcx,%rax 80484b3: 48 09 c2 or %rax,%rdx 80484b6: 48 89 d0 mov %rdx,%rax 80484b9: 48 89 45 f0 mov %rax,-0x10(%rbp)
(00:20)
8048459: 48 b8 9a 78 56 34 12 mov $0x123456789a,%rax 8048460: 00 00 00 8048463: 48 c7 c1 9a 78 56 34 mov $0x3456789a,%rcx 804846a: 48 89 ca mov %rcx,%rdx 804846d: 89 55 ec mov %edx,-0x14(%rbp) // 32, 0x3456789a 8048470: 48 89 c2 mov %rax,%rdx 8048473: 89 4d e8 mov %ecx,-0x18(%rbp) // 32, 0x3456789a 8048476: 8b 4d ec mov -0x14(%rbp),%ecx 8048479: 48 89 55 e0 mov %rdx,-0x20(%rbp) // 64, 0x123456789a // uint32 edx = 0x3456789a; 804847d: 8b 55 e8 mov -0x18(%rbp),%edx // uint64 rcx = 0x123456789a; 8048480: 48 8b 4d e0 mov -0x20(%rbp),%rcx 8048484: 48 89 45 d8 mov %rax,-0x28(%rbp) // 64, 0x123456789a 8048488: 48 b8 ff ff 03 00 00 mov $0x3ffff,%rax 804848f: 00 00 00 // uint64 rcx = 0x3ffff & 0x123456789a; // 18bit from LSB 8048492: 48 21 c1 and %rax,%rcx 8048495: 48 89 c8 mov %rcx,%rax // uint64 rax = (0x3ffff & 0x123456789a) << 1; 8048498: 48 c1 e0 01 shl $0x1,%rax 804849c: 48 8b 4d f0 mov -0x10(%rbp),%rcx 80484a0: 48 ba 01 00 f8 ff ff mov $0xfffffffffff80001,%rdx 80484a7: ff ff ff 80484aa: 48 21 d1 and %rdx,%rcx 80484ad: 48 89 c2 mov %rax,%rdx 80484b0: 48 89 c8 mov %rcx,%rax 80484b3: 48 09 c2 or %rax,%rdx 80484b6: 48 89 d0 mov %rdx,%rax 80484b9: 48 89 45 f0 mov %rax,-0x10(%rbp)
なるほどね。 bitmask が根本的に間違ってるよ。 OK 一見 fix できてる。 つかたぶんこれ x86 でも動くな。
(01:13)
> cat bitfield_ll2.c
#include <stdio.h>
int main() {
struct sbf2 {
long long f1 : 3;
} st2;
st2.f1 = 3;
printf("%lld\n", st2.f1);
}
> gcc bitfield_ll2.c && ./a.out
3
> gcc -m32 bitfield_ll2.c && ./a.out
-18650500345888765
GCC ってこのへんどうなの…
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=7018
うーん int より小さいものに long long 使うなってか。
(02:28)
http://code.google.com/p/jaikuengine/
opensource すか。
177348 642108 6749045 total
web service の OSS 化って珍しい気もするな。 OpenPNE とかあるか。
一見だからどうした感は否めないけど、 OpenPNE とかみたいにプラグインとかつくれるんなら なんかコミュニティごとに立てるとかできたりするんかいな。 ちなみに OpenPNE に本当にプラグインがあるかは知りません
(03:04)
http://d.hatena.ne.jp/kazuhooku/20090216/1234771983
さすがに 24 はうざいかなあ… とループ書いてみたけど sscanf の方が良い気もした。
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int main() {
int i;
char* buf = "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24";
unsigned hits[24];
char* p;
for (p = buf, i = 0;; i++) {
hits[i] = strtol(p, &p, 10);
if (!*p) break;
assert(*p == ',');
p++;
}
assert(i == 23);
for (i = 0; i < 24; i++) {
assert(i+1 == hits[i]);
}
}
要は assert がうざいのだけど、 strtok は微妙だし strtok_r も標準じゃないしなぁとかいう。 やっぱ split/join は必要なんだよなぁ。
(10:30)
#include <stdio.h>
int A = 1;
#define A 1+A
#define B(x) x
int main() {
printf("%d\n", B(A));
}
で TCC が 3 とか出力しやがってこまる。 おそらく、 B(A) => B(1+A) => 1+A => 1+1+A の順番で展開されてそうに思える。
でも K&R にある
#define cat(x, y) x ## y cat(cat(1,2), 3)
とかいう例でちゃんとコンパイルコケるってことは 外からやってるのかなぁ。
(11:18)
なんか最近頻尿とか残尿感とかそんな感じだなあとか思ってたけど そろそろなんか明らかにおかしいだろと思ったので病院へ行ってきた。
で、なんかちんこもまれるわケツに指つっこまれるわで大変なのだった。いたかった。 ケツに指つっこむのは前立腺の触診プラス精液回収が目的らしいんだけど、 あんま精液出ないな若いのにとか罵倒されてついでに言葉責めもされた。
老人にケツに指つっこまれて精液出すのが正常だなんてひどい話です。
で、なんか出ないもんだから尿道になんか少し入れられて大変いたかった。 あと運動してるかと聞かれてノーと言うと 運動しないヤツは頭でっかちで中身が無いとか そのうち鬱になるとか言われた。
その時はおもろいオッサンだなーとか思ってたけど、 冷静に考えるとひどい話だった。
でまあ前立腺炎とのこと。 悪いことにはならんけどあんま簡単には治らんとのこと。 ひどい。 運動しろ酒飲むな香辛料喰うなと踏んだりけったりである。
そろそろ自分の体のパーツで健康的な部分が無い気がする。
(22:04)
http://longlong.way-nifty.com/blog/2009/03/post-4cf4.html
ええまさに懇親会の存在を知ったタイミングでは ああなんか別にやるのは気まずいかと思ったのですが。
とかなんとかでタイミング的には すごい速度で会場提供を持ちかけてくださった woさんに感謝的な
先に懇親会に気付いてたり会場提供無かったらヤメてたと思うし
(14:03)
http://shinh.skr.jp/h/?HackTheCellPostMortem
693 ってガロア組かっ!とか思ったけどスレの 693 さんのことだとわかった。
予想以上にあっさり人数が増えてびっくり嬉しいのですけど、 残念ながらそろそろ人数的に厳しいかもらしいのでした…
なんかなんかちゃんとやらんとかなあと思う一方、 こんだけ面白そうな人いたらほっといても面白いだろうという予想も。
http://d.hatena.ne.jp/ku-ma-me/20090312/p1
おもしろい。
def f(x) x+1 end def g(x) y=x+1 y+1 end p [1].dmap+1 p f([1].dmap) p g([1].dmap)
g が動くといいんだけどな
(10:07)
http://d.hatena.ne.jp/odz/20090310/1236698884
#include <stdio.h>
struct Foo {
int i;
};
void with_paren() {
Foo* foo = new Foo;
foo->i = 42;
delete foo;
foo = new Foo;
printf("with paren: %d\n", foo->i);
}
void without_paren() {
Foo* foo = new Foo;
foo->i = 42;
delete foo;
foo = new Foo();
printf("without paren: %d\n", foo->i);
}
int main() {
with_paren();
without_paren();
}
手元の GCC では同じ結果になりやがったけど、 cl.exe では、
with paren: 5374216 without paren: 0
とかになった。
↑コメントで指摘いただいたけど with と without が逆。ひどい
(00:43)
紙媒体でゲットした。
反応が以上に悪かったけど、 インテルの英語サイトの方にある連絡先に 本全部の注文番号を送って後は ping しまくれば良かった。 ちゃんと通れば1円も払わずにわざわざ海外から送ってくれる。
嬉しいと言わざるをえない。
(10:43)
http://hiraitamado.web.fc2.com/mindex.html
まなぶ以外はどんな感じなのかなあと適当に見てみたらいいの見つけた。 実は新都社すごいんじゃないかな
(22:12)
http://d.hatena.ne.jp/odz/20090311/1236775799
POD型は () をつけるとゼロ初期化だったと思うます。
ゼロじゃなくて各メンバに () つけるとかだったかも知れないけど PODなら実質同じだよね。
あと cl.exe もできたバイナリも wine で動かしてます
dmc.exe とか dmd.exe とか bcc32.exe とかも入ってて、 GCC でクロスコンパイルするとかよりこっちの方がラクなんだよな…
(22:16)
じゃなかったけと思ったけど これだとなんかな…
#include <stdio.h>
struct S {
int i;
};
void print_s_without_paren() {
void* i;
(&i)[-1] = (void*)42;
S s;
printf("%d\n", s.i);
}
void print_s_with_paren() {
void* i;
(&i)[-1] = (void*)42;
S s = S();
//const S& s = S();
printf("%d\n", s.i);
}
int main() {
print_s_without_paren();
print_s_with_paren();
}
まぁなんかしら GCC でもこっちなら movl $0, -0x10(%rbp) とかがあるかどうかが変わる
(22:28)
http://shinh.skr.jp/h/?HackTheCellPostMortem
懇親会は詳しい検討はむずかしいかも、 とのことなのでまぁやる方向でいいんじゃね、 ということに
勝手に書き換えていただけると幸いです。 あと kik さん kodera さん herumi さんは強制参加です。 ぜひ
(23:41)
http://homepage1.nifty.com/herumi/diary/0903.html#9
http://tripper.kousaku.in/20090307.html#p01
思いついてしかるべきだったなあ…と思います。 幸い計数の部分は工夫する余地はあるけどあまり速度に影響しないんですよね… lqr 減らすのがなんだかんだで一番効きそうな気がするけどどうなのかなー
(01:03)
http://d.hatena.ne.jp/youz/20090308/1236482522
ぱっとわからない。継続脳が全く育ってないなあ。 後で考える or kinaba 先生の何かをわくてかしてまつ
(02:18)
一回戦落ち…300位まで通るんだと思ってたんだけど、 250位まで通して後50人はシードってことだったみたいだ。 そうならそうとはっきり書いてよねえ。
http://www.topcoder.com/tc?module=Static&d1=tournaments&d2=tco09&d3=marathon&d4=schedule
こっちにはちゃんと書いてある
http://www.topcoder.com/tc?module=Static&d1=tournaments&d2=tco09&d3=overview&d4=rules&d5=marathon
(10:37)
http://pc11.2ch.net/test/read.cgi/tech/1173057314/237
よくわからないけど eban さんのご協力のもと できるようになったみたい。
(10:38)
| 前 | 2025年 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扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。
_ niha [>'\0'が〜 ボクもそう思います…]