トップ «前の日記(2006-06-30) 最新 次の日記(2006-07-02)» 編集

はじめてのにき

ここの位置付け

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|

ToDo:


2006-07-01

_ なるほど!

beginInvoke ってこれのことか!

http://d.hatena.ne.jp/shinichiro_h/20060421#p1

自分で覚えてないし。

(03:00)

_ 多相とか

specialization的なのはできるんだっけ

Printf.printf の実装

http://d.hatena.ne.jp/yoriyuki/ あとで

(10:11)

_ 関数型とか言ってる場合じゃありませんよ

というほどでもないけど。 coredump 面白いな。

(13:27)

_ type inference

これを inference って言うのかなぁ。

class C {}
class D : C {}
int main() {
   auto add = (int x, float y) { if (true) return new C(); else return new D(); };
   writefln(typeid(typeof(add(1,2))));

の返り値の部分を適当にかえてあそぶ。結局、 int & float, C & D, C & null あたり全滅。実に D らしい。 null は void* なんだね。

あー。

(13:47)

_ C++

今では速いの代名詞の座を手にしたらしい。

http://alohakun.blog7.fc2.com/blog-entry-353.html

(14:47)

_ 全体的に面白い

http://mixi.jp/view_bbs.pl?id=17497&comm_id=5707&page=all

心が汚なくなったら寝ると良い。

(15:09)

_ enumerable.d

http://d.hatena.ne.jp/kurimura/20060702/1151748114

これはよい

(19:33)

_ メモ

  • thread ごとにレジスタを ptrace で取得
  • prpsinfo を埋める。
    • 簡単な項目を埋める
    • /proc/self/exe からコマンド名を取得して prpsinfo に
    • /proc/self/cmdline からコマンドライン引数を取得、'\0' を ' ' に
  • prstatus を埋める
    • /proc/self/stat
  • Unix ドメインソケットを作って
  • シグナル止めて
  • fork する
    • シグナル復活
    • 親プロセスに ptrace でアタッチ
      • PTRACE_PEEKUSER でユーザ領域の情報ゲットらしい(なんのため?)
      • またしても ptrace でレジスタゲット
    • デタッチ
    • フレーム情報をいじる。たぶん関数から出てる
    • 親と会話するパイプを作る
    • ソケットで親にパイプを渡してる、かな(最初からソケットだけで会話したら良くねー?)
    • パイプと情報渡して次の関数へ
    • exit
  • 一方親側プロセス
    • ソケットからパイプをゲット
    • 止めたスレッドを復活させる
    • 子プロセスがデタッチするのを待つ
    • パイプ返して終了

(20:53)

_ 次の関数

  • いきなり loopback とかいうパイプ作ってる
  • /proc/self/maps
    • 適当に内容読み込み
    • ものすごいアルゴリズムだがメモリマップドデバイスを読み飛ばしだと思う
    • 調べたメモリの先頭 0 になってる部分のサイズを求める
    • わざわざループバックに書き込んでるのはなぜかな EFAULT を落とすため?
    • 読めない maps は飛ばす
  • ELFヘッダ書き込み
  • プログラムヘッダ書き込み
  • note セクションってなんじゃってとこ書き込み
  • ここでアライン
  • メモリ書き込み

なんか色々感心した。

(21:09)

お名前:
E-mail:
コメント:
人生、宇宙、すべての答え
本日のリンク元

2006年
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(2006-07-31 02:31) 2.f#(2006-07-30 01:39) 3.shinh(2006-07-26 22:50)
search / home / index

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

shinichiro.hamaji _at_ gmail.com / shinichiro.h