トップ «前10日分 最新 次10日分» 追記

はじめてのにき

ここの位置付け

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|04|05|06|07|08|09|10|11|12|
2025|01|02|03|04|05|06|07|

ToDo:


2009-03-20

_ 健康診断

かように明らかに不健康であるものの、 健康診断では特に不健康だとは言われないのであった。 これほんとに役に立つんかなー。

前回は身長172.7体重52.9とかで判定 Cb とかで軽度異常とかだったらしいんだけど、 今回は身長172.6体重51.5とかで平均からの逸脱は激しくなってると思うのに 判定 B とかになっていた。 何が基準だかさっぱりわからんがまぁ 体重とかで異常とかわからんということじゃないかと思う。

まあそんなことよりヘモグロビンが足りないらしい。 件の前立腺には亜鉛が良いらしいんだけど、 要は何かしら鉄っぽいものが足りてないのかなぁ。 たしかになんか会社のメシで内蔵とか出ないしな。

(00:17)

_ zsh on sakura

なんか zsh が動かんくなっていた。 libncurses がどうこうらしい。 とりあえず .cshrc をどければ普通にログインできるようだった。 ちょっとほげった感じ bash があればとりあえず良さげなので exec /usr/local/bin/bash とかでお茶を濁すことに。

(00:28)

_ hack the cell

推定4位(99-100倍の範囲に人がいたら5位)かー。 120倍付近にはいたかった感じだなぁ。 未だによくわかってないけど lqr 多すぎとかが メインの死因だったのかなぁ。 今度調べよう。

110倍台のところにいる人はどなたなんだろうか どいう違いがあったんだろうと気になるな。

学生弱いのは cell challenge のおかげで oxy さんみたいな頭おかしいのがいなかったとかありそうだなぁ。

(06:03)

_ とりあえず

わかってる範囲では

  • 126: kik
  • 120: kodera
  • 11?: ???
  • 9?: nosuke
  • 99: shinh
  • 82: herumi
  • 82: taitai

あたりで、 bit いじった人で 現段階で post mortem にもいらっしゃらなさげな方は 110倍台の人だけかなぁという。

(06:18)

_ bitonic merge sort

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)

_ putchar

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

'\0' が出力されちゃうのはいかがなものかとおもう

(15:34)

_ rob's branch

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)

_ DSO

とりあえず rip 相対以外グッバイすればいいのかな。

(19:44)

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

_ niha [>'\0'が〜 ボクもそう思います…]


2009-03-18

_ なんか

型とかぶる感じで出張行くことになりそうな気配があるなあ。 キャンセルして YT さんに黄金なんとかの速さで入ってもらうか

(22:31)


2009-03-17

_ 医者

そういえば

「薬三つ出しとくよ、抗生物質と痛み止めと胃薬」 「胃薬ってなんすか」 「抗生物質飲むんだから胃薬必要なのは当たり前でしょ。胃荒れちゃうから」

とかそんなかんじの会話があって、 今にして思うとこれもひどい気がした。 当たり前じゃないよ

(00:07)

_ split/join

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)

_ あと

C はどっちかというと strtol とか使いつつポインタ進めるような ループを書くことを楽しむ言語ではないかという 妄想があるため、まあそのままでもいいんじゃないかとも

(00:25)

_ 沈黙の艦隊

最近コンビニで復刊してるので地道に買って読んでいる。 足りない分は中古で補完したり別に面白くない部分は飛ばしたりしつつ。 まあ昔読んだことはあるのだけど、地味に面白いなあと思う。 まず「ぼくの考えた理想の社会」ネタは個人的に好きなんだよなぁ。 自分でもよくぼんやり考えるし。

あれこれ考えると自分的には、 「暗黙のうちに個人同士で助けあう仕組みになっていて、戦争がない」 あたりがとりあえずぼくの考えた無敵の理想社会の要素なわけだけど、 後者は目的の同意は簡単に得られるのに方法論がサッパリ見当がつかないんだよね。 そいう意味で破天荒な 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回展開されちゃこまる。

さらに、マクロは外から展開していかなければならない。

これらを両立させるには、

  • 外から展開していって
  • 引数を代入する時にマクロ展開を行なう(つまりminの中のminはここで展開)
  • 引数代入の時に使ったマクロは覚えておいて
  • マクロの再帰的な発動と同様、引数代入の時に使ったマクロも発火させない

という感じでやればいいんだと思う。 TCC 的には nested_list をややこしいことにすればたぶん良い。

(22:17)

_ さて

まだややこしいな…

単に nested_list を pop しないだけだと、 第二引数以降に影響出ちゃうか。

(22:29)

_ TCC

C99 に載ってたマクロの例を喰わせてみたら 結果違ったり無限ループしたり色々ひどいなー。 これは大変めんどくさいな。

(22:43)

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

_  [assert の中に副作用のある式を入れたらまずいですよ #define NDEBUG すると消えてしまうので]

_ shinh [全くですね。社内ライブラリの CHECK のつもりでなんか assert にしてしまいました。ご指摘ありがとうござい..]


2009-03-16

_ bitfield

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)

_ とりあえず

なおったことにしよう。

次は transcode.c のマクロか。 なんか思う存分回り道してるな…

他の TODO 忘れすぎだし

(02:49)

_ jaiku

http://code.google.com/p/jaikuengine/

opensource すか。

177348  642108 6749045 total

web service の OSS 化って珍しい気もするな。 OpenPNE とかあるか。

一見だからどうした感は否めないけど、 OpenPNE とかみたいにプラグインとかつくれるんなら なんかコミュニティごとに立てるとかできたりするんかいな。 ちなみに OpenPNE に本当にプラグインがあるかは知りません

(03:04)

_ 24

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)

_ TCC のマクロ

#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)

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

_ Wcikoeqt [この間も俊太郎の詩をお http://www.stlouisbusinesslist.com/business/5..]


2009-03-15

_ 陵辱

なんか最近頻尿とか残尿感とかそんな感じだなあとか思ってたけど そろそろなんか明らかにおかしいだろと思ったので病院へ行ってきた。

で、なんかちんこもまれるわケツに指つっこまれるわで大変なのだった。いたかった。 ケツに指つっこむのは前立腺の触診プラス精液回収が目的らしいんだけど、 あんま精液出ないな若いのにとか罵倒されてついでに言葉責めもされた。

老人にケツに指つっこまれて精液出すのが正常だなんてひどい話です。

で、なんか出ないもんだから尿道になんか少し入れられて大変いたかった。 あと運動してるかと聞かれてノーと言うと 運動しないヤツは頭でっかちで中身が無いとか そのうち鬱になるとか言われた。

その時はおもろいオッサンだなーとか思ってたけど、 冷静に考えるとひどい話だった。

でまあ前立腺炎とのこと。 悪いことにはならんけどあんま簡単には治らんとのこと。 ひどい。 運動しろ酒飲むな香辛料喰うなと踏んだりけったりである。

そろそろ自分の体のパーツで健康的な部分が無い気がする。

(22:04)

_ んなことより

TCC の bitfield && long long はそんなに難しいのかなぁ。 どうせやるなら全アーキテクチャで動くやりかたでやった方がいい気がしてきた。

(22:11)


2009-03-14

_ 経緯

http://longlong.way-nifty.com/blog/2009/03/post-4cf4.html

ええまさに懇親会の存在を知ったタイミングでは ああなんか別にやるのは気まずいかと思ったのですが。

  • なんかやろうと思う
  • ふぃくすたーず使っていいよとのこと
  • なんかコンテストの参加人数調べてると懇親会やるとか出てきた
  • そのへんどうなんかね?と聞くにまあそんな気にせんでも良さげ
  • じゃあそれで

とかなんとかでタイミング的には すごい速度で会場提供を持ちかけてくださった woさんに感謝的な

先に懇親会に気付いてたり会場提供無かったらヤメてたと思うし

(14:03)

_ rhgsb

あ今日か… 最近色々見落とすなあ

(14:18)


2009-03-13

_ がろあ

http://shinh.skr.jp/h/?HackTheCellPostMortem

693 ってガロア組かっ!とか思ったけどスレの 693 さんのことだとわかった。

予想以上にあっさり人数が増えてびっくり嬉しいのですけど、 残念ながらそろそろ人数的に厳しいかもらしいのでした…

なんかなんかちゃんとやらんとかなあと思う一方、 こんだけ面白そうな人いたらほっといても面白いだろうという予想も。


2009-03-12

_ dmap

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)

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

_ ku-ma-me [それは [1].map(&method(:g)) を改善していくのがよさそうかなあ。 Python だと g だけで..]


2009-03-11

_ 同じじゃなかったと思うんだ

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)

_ IA-32 Intel Architecture Software Developer's Manual

紙媒体でゲットした。

反応が以上に悪かったけど、 インテルの英語サイトの方にある連絡先に 本全部の注文番号を送って後は 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)

_ new なくても

じゃなかったけと思ったけど これだとなんかな…

#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)

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

_ bear.mini [関数名および printf() 内のメッセージの with と without が逆じゃないですか? (with_p..]

_ shinh [うわあ逆ですね。ありがとうございます。 こういう話を嬉々としてするから C++ オタはキモいとさげすまれ、アンチ ..]

_ 団子厨 [セルゲーム反省会の一番最後のLarrabeeってなんすかwwww 参加できないと言いましたが内容次第では新幹線のチケ..]

_ shinh [や、なんか深く考えたわけではないのですけど、やはり Cell と言えば「結局今後あのへんの世界どーなんの?」って話は..]


2009-03-10

_ sumb

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)

_ vim.full

http://pc11.2ch.net/test/read.cgi/tech/1173057314/237

よくわからないけど eban さんのご協力のもと できるようになったみたい。

(10:38)


2025年
7月
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
1.shinh(2014-05-24 10:42) 2.団子厨(2014-05-24 10:42) 3.shinh(2014-05-24 10:42)
search / home / index

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

shinichiro.hamaji _at_ gmail.com / shinichiro.h