憂鬱な午後のひととき


10月30日_

『続・竹林はるか遠く』(ヨーコ・カワシマ・ワトキンズ)

19日の続き. 兄と合流し, 更に父が帰ってくるまでの話. 女学校でいじめられるがなんとかやり過ごす. 最後まで両親が不在なのを隠し通したのは不自然だけど, まあそれはそれ.

残り物を拾ったり, 少しでも手伝いや売り物をしてしのぐ. すごい精神力だ. 姉の入院費用だけは工面できたのがせめてもの救い. 学校の用務員, 病院や湊さんの助けがすばらしい.

10月29日_

CODE BLUE二日目

結局昨晩も寝られたのは2時過ぎ. それなのに目が醒めたら4時50分だった. 仕方がないので家のまわりをぐるぐる走ってた.

朝最初の発表. 日本語版資料, 英語版資料, デモ動画, ツールソース.

2週間前のWindows Update MS15-110で修正済み(KB3085609, KB3085583). ただしそれ以前に動画の方法で作ったファイルがあったら, もしかしたら破られやすいファイルになってるかもしれない. 気になる人は念のため暗号化し直すとよいだろう.

声に抑揚がない, 淡々としてるという感想がちらほら. うーん, 一度ちゃんとプレゼンのやり方を教えてもらった方がよいかも. 資料は結構時間をかけてがんばったのだけど(みなのセンスのいい資料を見てるといやになってくるが).

キヌガワマサトさんのX-XSS-Protectionの話はただいまMSと調整中とのことで自重版. それでも仕様が筋悪でやばそうというのが伝わってくる.

同時通訳の人は集中力を持続させるため15分程度で交代していくらしい. へえ. そんなに頭使う仕事ってあまりなさそう. それはともかくありがたい.

運営者の方, スタッフの方どうもありがとうございました. とりあえず, 大物が終わったので今日はゆっくり寝られそう.

10月28日_

CODE BLUE一日目

既に昨日から緊張して余り眠れてない. 新宿は2年振り. 参加者600人越えてるらしい. スーツの人多い. 余計に緊張するぞ. いろいろな人のすごい発表を聞いてるとなんか場違いなところにいる気がしてくる. バグハンター初めて1年で賞金700万越えとか, もう何がなんだか. 早く発表(無事)終わってほしい.

基調講演, 昔の古典的な映画はともかく最近の映画のネタバレはちょっとまずいかもと思った. 人工知能の方向性としては, 能力を補佐する, 役に立つ/反逆するの2軸ではなく, ここはドラえもんのような何かすごく役に立つわけでもなく(害になってる?), いつもそばにいるという役目も提示したいところ.

10月26日_

MS Officeの数式エディタで=の上や下に?をつける

メニューの演算子のところには△やdefなどはあるのだけど?は選べない. それらを選んで△を削除して代わりに?を入れようとしても選択できない.

困ったなあと試行錯誤していたら、「=┴?」と入力してスペースを押すと=の上に?が出ることがわかった. 「=┬?」なら下付き. こうやって作ると?の代わりに何でも入れられるので便利.

CODE BLUE 2015
今から緊張して準備に身が入らない. 困ったな.

10月25日_

NEXT 未来のために「密着ヒューマノイド世界大会」

人間型ロボットが災害現場を想定した課題に取り組むコンテスト. 日本は「ロボット大国」といいつつ, アイボを見てロボット開発を始めたという韓国チームや圧巻のアメリカチームに完敗.

韓国のロボットは倒れないような形をしていた. 日本は途中でこけてリタイア. MITはロボットは企業から借りて自律制御に専念して開発したらしい.

最近, 根拠もなく「日本はすごい」という番組を見かけるのが多いけど(仮に昔はそうだったのかもしれないが)現実を見つめて一歩一歩堅実に進み直すのがよいのでは. 内向きでよろこんでるだけなんじゃないか(えらそうに私が言うなって).

詳しいことは分からなかったけど韓国のチームは勝つことに専念していたように見えた. 日本のは技術が足りてないのにプライドが邪魔したのか? わざわざ難しい制御をしていたようだった.

人間型ロボット 頂上決戦

こちらにもっと詳しい記事があった.

HRP-2というのは、実はもう12年以上前に開発されたロボットで, 古いロボットなんですね. それでこの成績というのは, 逆に日本のロボット技術っていうのはやはりすばらしい.

どうなんだろ. そっから進化してなくて追い抜かれていて焦らないといけないのでは. すばらしいと過去を称賛していても. 続けて

一方で, 世界も日本のヒューマノイド技術を学んで, かなり日本を超えるようなところまで来たというのも, 事実だと思います.

とは言ってるが.

10月24日_

CTF for Starter in IISEC

CTFは興味あるけど, 最初の一歩の踏ん切りとタイミングが合わなかったので初心者コースに思い切って行ってみた. (意図的に)たいした説明無く問題が始まって, これ何するの?というのに戸惑う. そういう人は割といたようだ. ただ会場の雰囲気に合わせて少しずつヒントが説明されて分かってきた.

終わってみれば流石に簡単なものばかりではあったが, 面白かった. またやってみよう.

10月22日_

Unity Rendering Wizardの集い

たまには違うジャンルの技術を見てみようと参加. dots.がやっていて素敵な会場だった. webの3D記事でよく見かける西川善司氏によるトレンド紹介. やっぱり3Dグラフィックは見栄えがしていいな. 大前広樹さんのUnity Graphics Wizardのための手引きはレンダリングの細かい話を1行1行解説. とても面白かった. デモ中, しょっちゅうUnityの開発環境(?)が落ちまくっていてもみなさん平然と再開してるあたり, 手慣れた感が.

10時近くまで講演があったので懇親会には出ず帰宅.

10月21日_

Stanを使ったクラウドサービスセットアップ時間の推定

16日で触れていた@shuyoさんによる社内勉強会の資料がブログで公開された.

10月19日_

『竹林はるか遠く』(ヨーコ・カワシマ・ワトキンズ)

日本の敗戦直前に北朝鮮にいた幼い著者たちが, 韓国を抜けて日本に戻ってくる話.

本筋よりも冒頭の, 憲兵がいきなり乗り込んできて金属類を持って行ったり, 汽車の中で乳飲み子が死んでしまった途端, 窓から投げ捨てられるシーンが印象に残った.

10月17日_

『素数全書』(和田秀男監訳)

15000円越えの本を買うのは久しぶり. 暗号の本ではなくて素数の本だけど, 楕円曲線の章もある. ぱらぱらと眺めて読んでみよう.

10月16日_

岩波データサイエンス Vol.1

@shuyoさんが刊行委員会に加わって作業されていたもの. 何故か円城塔の掌編小説が載っているのを見て驚いた. サポートページが非常に気合入っていてすばらしい.

まだ全然きちんとは読んでないけど使い方と理論とをうまい具合に混ぜて解説してある印象. Stanは@shuyoさんが社内勉強会で使い方の例をやってくれたばかりなので自分でも試してみたいな.

10月15日_

マイクロソフト セキュリティ情報MS15-110

CODE BLUEで話すネタがこの更新で修繕されていた(メモリ破損などのクリティカルなものではないので載ってない). デモするときだけパッチを外しておかないと.

10月14日_

SHARP製一部携帯電話

大切なご案内
「2016年1月1日(金)以降も正しい日時表示でのご利用を希望されるお客さまは、機種変更されることをお勧めいたします。」

私が今使ってるやつじゃないか. なんで修正できないような実装になってしまったのか.

10月13日_

Goのbig.Intをkeyにする

Goのmapのkeyにできる型は比較可能でないといけないらしく, 多倍長整数のbig.Intをkeyにできない.

sort.Sortの場合はLen, Less, Swapというinterfaceをもっているものは何でもソートできるのだがmapはEqualやHashを作ればよいというわけではないようだ.

FAQっぽいのだがいろいろ調べていくつかの方法を試してみた.

  1. 単純にstringにする.
    これはお手軽だけど10進数変換のコストが大きい.
  2. mapを使わず配列に突っ込んでsortする.
    場合によってはあり.
  3. Bytes()で内部表現を取り出しstringにする.
    単純にstringにするのに比べて10進数変換のコストが小さい. ただし0以上でないといけない.
  4. []intはmapのkeyにできないけど[8]intならkeyにできる.
    使う値の最大値が分かっているならそのサイズの配列を用意してコピーしてしまう.

一番お手軽で速かったのは3番目のbig.Intの内部表現をBits()で取り出し、それをstringにしたものをkeyにすることだった. もっとよい方法があれば教えてください(bigint.go).

10月12日_

サイエンスZERO “眠り”のミステリー

1998年に発見された眠りと覚醒に関わる物質オレキシンのはなし. その物質を光で制御すようにしたマウスは数秒で寝たり起きたりする. 面白かった. オレキシンを発見した柳沢教授が「なぜ眠るのか」といった根本的な疑問についてはまだ何も分かっていないというのが印象的だった.

10月11日_

Go

少しずつGoの勉強. C++よりはずっと文法が単純でわかりやすい. しばらくProject Eulerの最初の方を解き直してみる.

10月10日_

『波の音が消えるまで』(沢木耕太郎)

サーフィンとカメラをやめてふと寄ったマカオのカジノでバカラにのめり込んでいく. 正直, 長いし, 周囲に助けてもらっているだけの主人公に反感しか覚えない(だから一時東京に戻って仕事を再開したときは見直したのだけど). タイトルの意味も途中で予想できたし.

著者の本でつまらないと思ったのは初めてかなあ.

10月9日_

nullptr == NULL?

2.13.7 Pointer literals
nullptrはポインタリテラルであり, std::nullptr_tのprvalueである.
18.2 Typesの3.
NULLは実装定義のnull pointer定数(0や0Lであってよい).
4.10 Pointer conversionsの1
nullポインタ定数は値0の整数リテラルかstd::nullptr_tのprvalue nullポインタ定数はポインタ型に変換できて, その結果をnullポインタ値という. 同じ型のnullポインタ値は同じ.
整数型のnullポインタ定数はstd::nullptr_tのprvalueに変換できる.

だからnullptrとNULLを比較すると, たとえNULLが整数リテラルだったとしても, nullptrとの比較時にnullptr_t型のnullポインタ値に変換されて等しくなる(んじゃなかろうか).

ちなみにnullptr_tは次のように定義される(18.2 Tpesの9)

namespace std {
    typedef decltype(nullptr) nullptr_t;
}

一見, 循環定義ぽくみえるな.

10月8日_

腰痛

腰が痛すぎて動けない. 一回休み.

10月7日_

「ニュートリノ振動」をとらえる[pdf]

Kajitaにある資料の中の一般向け解説. ILLUMEという雑誌の一部らしい. 『ニュートリノでわかる宇宙・素粒子の謎』の見事なダイジェストだった. 本を読んでからこの資料を読むとさらりと書いてある部分の舞台裏とか苦労とかが分かってよい.

10月6日_

梶田隆章氏ノーベル物理学賞受賞

鈴木厚人氏は入ってないのね.

ちょうど『ニュートリノでわかる宇宙・素粒子の謎』などの本を読んでいたところなのでニュートリノ振動とかある程度の雰囲気が分かる. Kajitaにある資料も読んでみよう.

10月5日_

サイエンスZERO これが世界一のシミュレーション!「スーパーコンピュータ京」

エンジニアや研究者が「完全に分かる」と言うとちょっと気持ち悪いが, なかなか面白かった. パネルには少し出ていた天体計算は何が紹介されるのだろうと期待してたのに無かったのが残念.

10月4日_

電子制御の義手を自作」(岩堀滋)

生まれつき右手がない記者が, イクシーが公開しているオープンソースの義手HACKberryを自作する. すごい. 感動した. こういうのに3Dプリンターを使うんだ. よく数ミリの細い回路のハンダ付けをできたなあ.

10月2日_

『ニュートリノでわかる宇宙・素粒子の謎』(鈴木厚人)

著者はカミオカンデ, スーパーカミオカンデ, カムランドの開発に関わった加速器実験の人. 理論のはなしは時々読んでいたけど実験屋さんの本はあまり読んだことが無かったので面白かった.

ああいった巨大なものをどうやって作っていくかというのはとても難しいらしい. シンチレーターを購入するためにアメリカのメーカーに訪問して製造工程をみたら自分たちでもできるんじゃないかと思って結局自分たちで調合したとか.

マヨラナ粒子のマヨラナはフェルミに「難題を彼より巧みに迅速に解決できる人は世の中にいない」と言われていたのに32歳で消息を絶ったらしい. なんだそれは.

10月1日_

volatileの処理系ごとの差異

Effective Modern C++勉強会のItem 40でvolatileが出ていろいろ議論が出て興味深かった. 個人的にはstd::atomicとか出るはるか昔からあったvolatileをC++11の今の規格だけを見て「マルチスレッドで使えない」というのはどうかなと思ってる. 適切にメモリバリア張ればまあなんとかなるんじゃないのと(実際昔はそうしてきたわけだし). もちろん処理系依存だけど.

まあそれはともかく改めてそれぞれの処理系依存のドキュメントを見ると細かい部分で違っているのに気付かされた. VCのvolatileが特殊(/volatile:ms)なのは知っていたけどgccとclangでも違うのだった.

たとえば

void f(int *nv1, int *nv2, volatile int *v)
{
    *nv1 = 1;
    *nv2 = 2;
    *v = 3;
    *nv2 = 4;
    *v = 5;
    *nv1 = 6;
}

についてVCとclangはそのまま順にmov命令を生成する.

// clang 3.5
movl    $1, (%rdi)
movl    $2, (%rsi)
movl    $3, (%rdx)
movl    $4, (%rsi)
movl    $5, (%rdx)
movl    $6, (%rdi)

ところがgccは非volatile変数への書き込みはまとめられて初めの代入が消える.

movl    $3, (%rdx)
movl    $4, (%rsi)
movl    $5, (%rdx)
movl    $6, (%rdi)
*nv = 1;
*v = 3;

の順序を保ちたければその間にメモリフェンスasm volatile ("":::"memory");を入れるべし.

ところで いつもgccの方がclangよりアグレッシブかというとそうとも限らない.

たとえばvolatile int *v;に対する*v;をどう扱うかという問題があるらしい. 上記g++のリンク先に書いてあるのだけどCとC++とでは規格が違う. C++で脱参照(*v)してlvalueからrvalueへの変換をするとは限らないのでメモリアクセスが起こるとは限らないらしい.

ただ大抵のプログラマは混乱するのでg++ではvolatileの場合はreadを発生させる.

void f(volatile int *v)
{
   *v;
}
// g++, gcc
f:
movl (%rdi), %eax ; アクセス発生
ret

clangはCではreadを発生させ, C++ではしなくてよいのならしないというスタンスのようだ.

>clang -x c -S -Ofast t.c
f:
    movl    (%rdi), %eax
    retq

>clang -x c++ -S -Ofast t.c
f:
  // からっぽ
    retq

同じ処理系でCでコンパイルしたのとC++でコンパイルしたのと結果が変わると場合によってははまるかもしれないなあ.

(2016/3/8追記) C++11では挙動は変わらないようになっているとの指摘(C++11で変わっていたlvalueからrvalueへの変換の扱い)参照.


御意見は光成滋生<herumi@nifty.com>までお願いします