トップ «前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|

ToDo:


2014-07-24

_ アルカ

http://conlang.echo.jp/arka/index.html

1991年から人工言語を作って、辞典作ったり小説書いたり動画作ったり いろいろやってる人がいて世の中広いなーと思ってたら、 なんか殺人未遂で捕まった人らしい。

http://sankei.jp.msn.com/affairs/news/130601/crm13060118010008-n1.htm

動画とかすごい

http://www.youtube.com/watch?v=VIeBX5S1f8E

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

いやーすごいな、なんか。

(02:18)


2014-07-23

_ 東京村とねじ天

人狼の東京村に8年ぶりくらいに行った。 10周年ということでひさびさに来る人みたいなのが結構多くて、 なんかなつかしい人がいろいろいた。

だいたいいつも通り、全然変わっとらんなと言われるわけだけど、 一人だけ大人ぽくなったと言う人がいて面白いなと思った。

村は適当にやって2回普通に勝って、1回普通に負けた。 いつも通り飽きてあとは適当にだべっていた。

帰ってから、ねじ天のアホみたいな役職数の短期をいくつかやった。

http://nejiten.halfmoon.jp/index.cgi?cmd=user&uid=she

なにかちゃんと集中してやらないとかなりミスる。 とはいえややこしすぎて他の人達もミスりまくっている。

2回しか勝ってないけど、その2勝も単に運が良かっただけ。 1勝目とか存在しない役職を騙ってなぜか乗り切れたし、 2勝目も村側早々に全滅してるのになんか恋人のせいで全員ふっとんで勝った。 というかその時は邪気眼使いとかいう全く役に立たない役職を わざわざ希望したのになんか勝った。

基本的に運ゲーというか、勝ちにこだわるなら強い役職を希望すべきゲーだけど、 その邪気眼以外は全く希望せずにやってたら、固定役職である 占いと狼ばっか引いてる感じだった。

ちょっと面白かったのがこれで、

http://nejiten.halfmoon.jp/index.cgi?vid=93&date=1&log=all

これは人狼2人狂人2人村1占1どっちつかず1ダミー1、みたいな 何をどうやっても人狼勝つだろってゲームで、 いきなり人狼占った真のクセにその人狼に白出しして狂人のフリをする、 みたいなことやってて楽しかった。

まぁ PP 状態になってるゲームでは狂人に狼吊らせないと勝てないと思うので、 それ自体は正しいと思うんだけど、普通にやってる人からすると ムカつく感じだったみたいで申し訳なかった。

http://nejiten.halfmoon.jp/index.cgi?vid=93&date=2&log=all#say13

これに呼応して「狂人に吊られるね☆」とか言えば吊れたかもなんで、 それを言えたらなあとか後で思った。

(00:03)

_ あと

東京村のリアル人狼はなんか初日開幕に全員COするハンドサインを ゲーム前に教えておく、みたいなことになってて、 まぁ別にいいんだけど、カオスぽさが足りなくて残念な気がした。

(00:06)


2014-07-20

_ ムリゲーバグ

別に面白いバグとかではないはなし。

金曜日朝、なんかとんでもなくダメダメなことになってて、エラーメッセージがこんな感じで、これ昨日のお前の変更があやしいよね、ってバグが priority 0 としてファイルされてた。

うん、これはどう見ても俺です100%犯人です、ごめんなさい…ってバグで、あわててコードを眺める。うんうんあやしいよね…って思いながら結構な時間一文一句追う感じで眺めるも、どう考えても問題のエラーメッセージが出るコードパスに到達できる状況が想定できない。

あと当然、自分の環境では全く再現しない。なにもかもが全く動かない、ってくらいのレベルのバグだったんで、再現するような状況ならそもそもサブミット前のローカルでのテストでわかってるハズだし、仮にうっかりテストしてなかったとしても、 CI が見つけないはずが無いような問題。テストしてた人の環境を忠実に再現してみたぽくしてみても、ダメ。

あれこれ考えても本気でわからないので、とりあえずエラーメッセージの内容を増やすような感じの change を作ってみて、すまん本気でわからん、 P0 バグ放置するのは心ぐるしいけど、とりあえずログ増やしてみたんで新しいバージョンをそっちの環境で試してみて、ログ送ってくれない?と書いてあきらめる。

当然自分の犯人くさいパッチを revert することも考えたんだけど、そのパッチ自体は最終的にその致命的なバグを修正した上で入れたいものだったので、意味不明な状態で revert しちゃうと、もう一度入れるのが大変困難なので、とりあえずやめておくことにした。

で、土曜日。なんか新しいの試したらフツーになおってたっていうか、古いやつでもセットアップしなおしたらなんか動いたから、セットアップミスってただけぽいスマソ、みたいなことが書いてあって、バグが閉じられていた。まあつまり濡れ衣だったわけだ。

普通だと少しは怒るところなんだろうけど、そういう気持ちには全くならず、我ながら得な精神構造ができてるな…とか思う。ふたつくらい、今の精神構造になってる理由をひねりだした。

ひとつめは、ムリゲー解く努力をする、ってのが結構好きで、かつそれなりにちょくちょくやってること。特にゴルフとかって、どう見てもこれが最短なんじゃ…ってところからまだまだ考えるわけで、最終的に数時間考えてからやはりこれ以上は無理だ…って結論になることが結構多い。もちろん考えてた問題が解けるに越したことは無いんだけど、単に考える過程自体も結構好きなことがあり、ムダな努力はそれほど苦にならない。

仕事ではそんなことは普通無いんだけど(無理なことは自明に無理ってわかるケースがほとんど)、まあ割と家では、やってみてダメでしたー的なことをやってる気がする。いや、最近は仕事でもそういうのちょくちょくあるかもわからんな…

ふたつめは、こういうのがレアケースであること。もう少しまわりの人が頼りない環境だと、こういうことはもっと頻繁に起きるんだと思う。自分が悪いと人に言われて、本当は自分は悪くない、ってことが、いやまあそれなりにはあるけど、頻度がそれほど多くないから、おっ珍しいな、くらいで鷹揚にかまえられるというか。

これが毎日起きてりゃ気が狂うと思うんで、当たり前のことが当たり前な環境はありがたいなぁとか思う。

ところで、これ revert してたら、かなりこわい感じである。当然、「revert したらなおったぽい。やぱりあれが悪かったんだね」って話になるだろうし、しかしやはり入れたかったものなので、次に入れる時は「前回起きた大惨事を起こさないように形に変えるにはどうすれば…」って真剣に考えなければならず、ローカルでは絶対再現しないものだけに、もっとムリゲーだったわけで…

(12:30)


2014-07-09

_ 白熱光

読んだ。まぁまぁ楽しんだと思う。

ネタバレバレバレで

とりあえず思うっていうかたぶんみんな思ってるのは偶数章が難しい。 ただ話自体は偶奇ともに素直な気がする。 詳細わかってなくてもまぁ楽しめる感じ。

偶数で孤高世界のモチベーションがわかる、 みたいなオチもまぁよかったと思う…が。 それだけしか偶奇関係ないのかよ、ってのがむしろ強くて。

よくわからんのはまず、奇数の人達を呼んだ理由。 想像で語られた理由が正しいとすると、 孤高世界の人達は自分たちでスイッチを押すのはイヤだった、 ってことになるんだろうけど、 最後の方で同じく想像で語られてる、 孤高世界の人達はスイッチが入ってないからぼんやりしてる、 っていうような話とあわせると、なんでぼんやりしてるのに 外部の人まねき入れる判断ができてるんだろ…と。

次にわからんのは奇数で発見される人達はなんなの、って話。 そもそも誰があの全体を作ったのかよくわからんし、 その中に進化してないチャンクがあるのもよくわからない。

途中奇数の人が融合世界からの連絡受けれちゃってるけどそれはいいんだろうか。 ていうかそんなことできるならもっと入念に準備しないもんだろうか…

どうでもいいけど奇数のバックアップってどうやって起動の判断してるんだろ。 しばらく連絡なかったら? 孤高世界への旅行の日程とか決めがたそうだけど。

イーガンって人は科学的な整合性さえ取れてれば このへんは比較的読者の想像におまかせしますー 的な感じにしちゃう人なのかもなぁとか思うけど知らない。

結局物語自体よりSF的な仕掛けばかりが面白いな。

偶数はとりあえず方角くらいは地球の言葉で書いて欲しかった。 本気で想像できない。あと図が2回出てくるけど、 その図に出てこない方角があるのが鬼。

偶数の発見史が地球史と比べてどうなのか、ってのが知りたいけどむずかしい。 たぶん発見の順序とかはいじりまくってる気がする。 地球だと物理で「幾何学」と「対称性」あたりの言葉が とても大事になったのはたぶん最近だと思うんだけど、 そのへんがすごい最初の方から語られまくってるあたりは、 たぶん順序いじったところだと思うんだけど確信は無い。

ザックの原理って結局何だったんだろ。

なんか読んでて、あ、これ一般相対論にあたるものの発見かなーと2回思ったので、 やはりたぶんさっぱりわかってない。

偶数全体的にわかんなさすぎてアレなんで、 まぁぼちぼち解説読むか…

(09:21)


2014-07-01

_ 世界の美意識

http://www.huffingtonpost.jp/2014/06/28/what-happened-when-one-woman-had-her-picture-photoshopped-in-25-different-countries_n_5540682.html

日本のアニメ絵がオチに使われると思いながら読んでたけど使われなかった

(00:34)


2014-06-24

_ CPU をつくりたい

東大情報理工のひとたちのやっている(いや他の大学もやってるぽいけど話題になってるのをよく見るのは東大なので)、 CPU を作る学生実験が楽しそうだと、はじめに思ってから…12年くらいは経過した気がする。

僕もマネしてみたいなあと思っている…だけではやらないようなので、自分を追いつめる目的をかねて特設サイトをひっそり作ってみた

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

僕自身の趣旨としては実際の課題を、しょぼくてもいいからぼんやりなぞってみれば良いなぁ思っている。まぁ授業の邪魔にならないようひっそりと

たぶん10月くらいから、いっしょに(チームを作るとかじゃなくておのおのが好き勝手に、しかし同時にやるという意味で)やろうという暇な人募集。ちなみに僕が挫折する確率も結構たかい

(01:20)


2014-06-22

_ RTA メモリ書き換え

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

うーん人類すごいな

(05:09)

_ hex clock

http://www.jacopocolo.com/hexclock/

なんだこれ頭いいな…

(12:31)


2014-06-10

_ 自己書き換え

http://golf.shinh.org/reveal.rb?Ten+Count/kaki_1401263437&bef

なるほど便利

(12:24)


2014-05-27

_ カーネルVM

まずカタカナ混じってるので kernelvm とかでぐぐっても出にくいと覚えておくと良い

まあありきたりだけど刺激になる感じでよかった。

個人的に ARM64 の話が聞けたのがまず良かった。最近仕事でぐぐっててよく参照する個人ブログトップ3の人ってのがまた。

http://d.hatena.ne.jp/embedded/

ちなみに残り二人は隣に座ってた人と自分自身なんだが。

ARM64 は x64 同様昔のしがらみが減っていて…みたいなのを twitter で見たけど、 x86 => x64 より diff がでかいんじゃないかなぁとか。あと、今 CPU イチから作るとどうなるのかなぁとか気になる。 IA64 はそういう試みだったと思うんだけど、商業的に失敗しちゃったからなあ。そういうのでいうと Mill ってのが色々おかしくて面白い気がする。

http://millcomputing.com/topic/introduction-to-the-mill-cpu-programming-model-2/

レジスタが無い (SSA ぽい感じ) とか stack が別れてるとか。

あとは、 Rust の発表と qemu の発表が若いのに色々知っててすごいなぁとか思った。特に qemu の話は普通に symbolic execution とか知らなかったのでなるほどなぁとか思った。

あと、 qemu の TCG ぶんまわす部分は、 valgrind がわりと似てると思う。どっちが読みやすいかはよく知らない。 qemu は一度 TCG まわりいじって遊んだことあるんだけど、あまり読みにくいとは感じなかったのは、運がいい部分だけ触ってたか、単に相性のいいコードなのか、それか僕が見た時から大幅に変わってるか、かな。相性いい説は普通にありえるな、 TCC あんま抵抗ないし。

ネットワークの話がなんか一番おかしい気がしたけど、ただなんかあまりわからない話なのが残念。どうもネットワークは勉強する意欲がわかない

話的には Unicode の話も面白かったな。ていうか m17n とかの話はただでさえ、だいたい悲惨で面白いのに、話し方も面白いとかなりのコンテンツ力。

あとは PDP11 はみんな感心してたけど、どのくらい大変なのかいまいちピンと来なかった。というのは ICFPC とかで作るオモチャ CPU とどのくらい大変度に差があるのかな…ということでちょっと眺めてみた

https://github.com/kanorimon/pdp11

いやまあこれいきなり書くのはまぁ大変かな… getMnemonic がすごい。

日頃見てるドメイン的に syscall のとことか見たくなるんだけど、 fork で FD 閉じてるのはこれいいのかな。あと brk がなんもしてないけど色々動くもんだな。

あとだらだらしてる時に学生の人に学生ですかと話しかけられてみたり。社会人に見えない風体をしてるのは自覚してるので、似たような年代だと推測されたんでないかと思うんだけど、現実には15歳年上だった。

(00:58)

_ そういえば

http://www.ioccc.org/1984/mullender.c

これを実行してみたいな。コンパイラ無いけど、たぶん a.out 作ればいい感じだよな。

つーことで適当にいじったら実行できた!

       ORG 0
       dw  0x108               ; NMAGIC
       dw  0xa2                ; text size
       dw  0                   ; data size
       dw  0x100               ; bss size
       dw  0
       dw  0
       dw  0
       dw  0
       dw  277, 2525, -4129, 25, 0, 477, 1019, 0xbef, 0, 12800
       dw   -113, 21119, 0x52d7, -1006, -7151, 0, 0x4bc, 8196
       dw  14880, 10541, 2056, 2056, 4548, 3044, -6716, 0x9
       dw  4407, 6, 5568, 1, -30460, 0, 0x9, 5570, 512, -30419
       dw  0x7e82, 496, 6, 0, 4, 1280, 15, 0, 4, 1280, 4, 0
       dw  4, 0, 0, 0, 0x8, 0, 4, 0, ',', 0, 12, 0, 4, 0, '#'
       dw  0, 16, 0, 4, 0, 30, 0, 22, 0, 0x6176, 120, 25712
       dw  'p', 29811, 'r', 29303, 29801, 'e'

nasm で作れる。 8進数を nasm は知らないみたいだったんで、適当に10進数に変換してある。

" :-)...." をひたすら出力するプログラムだったみたいだ。長年の謎が解けたので PDP-11 インタプリタには感謝しないと…ついでに出力できたアセンブリコード:

  0:   0115            br       0x2c
  2:   09dd            jsr      pc, *(r5)+
  4:   efdf 0019 0000  sub      *$0x21, *$0
  a:   01dd            br       0xffffffc6
  c:   03fb            beq      0x4
  e:   0bef            tst      *-(pc)
 10:   0000            .word    0
 12:   3200            bit      (r0), r0
 14:   ff8f            setd     
 16:   527f 52d7       bis      (r1), *$0x52f1
 1a:   fc12            setd     
 1c:   e411            sub      (r0)+, (r1)+
 1e:   0000            .word    0
 20:   04bc            bge      0xffffff9a
 22:   2004            cmp      r0, r4
 24:   3a20            bit      *-(r0), -(r0)
 26:   292d            cmp      -(r4), *-(r5)
 28:   0808            jsr      r0, (r0)
 2a:   0808            jsr      r0, (r0)
 2c:   11c4            mov      pc, r4
 2e:   0be4            tst      -(r4)
 30:   e5c4 0009       sub      $11, r4
 34:   1137 0006       mov      r4, 0x3e
 38:   15c0 0001       mov      $1, r0
 3c:   8904            sys      4
 3e:   0000            .word    0
 40:   0009            .word    11
 42:   15c2 0200       mov      $1000, r2
 46:   892d            sys      5
 48:   7e82            sob      r2, 0x46
 4a:   01f0            br       0x2c
 4c:   0006            rtt      
 4e:   0000            .word    0
 50:   0004            .word    4
 52:   0500            blt      0x54
 54:   000f            .word    17
 56:   0000            .word    0
 58:   0004            .word    4
 5a:   0500            blt      0x5c
 5c:   0004            .word    4
 5e:   0000            .word    0
 60:   0004            .word    4
 62:   0000            .word    0
 64:   0000            .word    0
 66:   0000            .word    0
 68:   0008            .word    10
 6a:   0000            .word    0
 6c:   0004            .word    4
 6e:   0000            .word    0
 70:   002c            .word    54
 72:   0000            .word    0
 74:   000c            .word    14
 76:   0000            .word    0
 78:   0004            .word    4
 7a:   0000            .word    0
 7c:   0023            .word    43
 7e:   0000            .word    0
 80:   0010            .word    20
 82:   0000            .word    0
 84:   0004            .word    4
 86:   0000            .word    0
 88:   001e            .word    36
 8a:   0000            .word    0
 8c:   0016            .word    26
 8e:   0000            .word    0
 90:   6176 0078       add      r5, 170(sp)
 94:   6470 0070       add      (r1)+, 160(r0)
 98:   7473 0072       ash      162(r3), r1
 9c:   7277 7469       div      0x7509, r1
 a0:   0065            jmp      -(r5)

(01:59)


2014-05-23

_ 量子エニグマ暗号

arton さんのところで Y-00 てのがあるのかーと知ったので

http://www.artonx.org/diary/20140430.html#p01

買う前はなんかうさんくさいなぁ…と思ってたんだけど、読んだ後も同様な印象だった。

というか終始 BB84 を攻撃してて、肝心の Y-00 の中身についてほとんど説明してないような…

(00:32)

_ リンカローダ実践テクニック

http://www.amazon.co.jp/dp/4789838072

主に人に勧めるという観点で、Linkers & Loaders は教科書的にいい本ではあるけど、 GNU とか ELF に寄せたもうちょい実践的な本無いかなぁと思ったらあったので買ってみた。

ざーとながめたかんじ、なかなか勧められそうな感じで良い、と思う。ただまあそれなりに気になる点が。

P.97 ライブラリ・アーカイブどうしの場合には、先に見つかったほうのシンボルが優先されます

これはまー書いた人はわかってそうだけど、ダウトだよな。

$ cat foo.c
void func() {}
void foo() {}
$ gcc -c foo.c && ar crus libfoo.a foo.o
$ cat bar.c
void func() {}
void bar() {}
$ gcc -c bar.c && ar crus libbar.a bar.o
$ gcc main.c -L. -lfoo -lbar

とか、この記述だとエラーにならなさそうに見えるけど、エラーになる。

P.158 同じような .a の恐怖的な話。 -u も紹介してあげるとやさしい気がする

8.4 章、簡易ローダの作成。ここから先、なんで memcpy でロードするんだろう…って感じ。わざわざ ELF 書き換えツールを作って RWX にするとかしてるけど、たぶん本の記述量的にも実践的にも、ローダをリンクする時に 0x8048000 付近を避けて、ローダ内では mmap するのが良いと思う。ELF 書き換えツールもリンカスクリプトもいらなくて、ローダをリンクする時に

-static -Wl,-Ttext-segment=0x50000000

とかすればいいだけでないかなと。そのへんわかってないとは思えないんで、ちょっと意図がつかみかねるかんじ。 -Ttext-segment は最近だった気もするんで、まぁリンカスクリプトいじりは必要かもしれないけど。

あとローダがセクションヘッダ読むのも微妙だなぁと。これも mmap でやってりゃいらんと思うんだけど。

9.3 章、 undump の話。これも mmap すればいいやろ、って感じが。 P.197 の malloc により取得したメモリの考慮が必要、とかはちょっとなんの考慮が必要なのかわからない気がする。 PT_LOAD を全部ちゃんと復元すればたぶん動くと思うけど。

復元後に printf が動かなかった、って書いてあるけど、これはなんでだろう。あとひとつ気になるのは、復元中に fprintf とかしてるけど、これ当然 .data が塗り潰された後に動いてるのは単に運が良いだけなような、ていう。

なんか最後の方で実践的感が減ってる気がしたのが少し残念だった。でもまぁなんかでもよくまとまってる感じではあるかなぁ。

(01:06)


2014年
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

search / home / index

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

shinichiro.hamaji _at_ gmail.com / shinichiro.h