iwiwi 備忘録

学んだことを殴り書きます。自分向けのメモです。

Ubuntu 14.04 に nvidia の最新ドライバを入れる

カーネルをアップデートする度に画面が真っ黒になってしまう.nvidia のドライバを更新すると治る.面倒くさい.

1. 画面が映るように起動する

nolapic nomodeset を引数につけて Linux を起動

2. コンソールに入る

Ctrl+Alt+F1.Ctrl が Caps の場所ではないことに注意.

3. インストール

sudo service lightdm stop
sudo ./Nvidiaなんたら

http://askubuntu.com/questions/149206/how-to-install-nvidia-run

C++

reinterpret_cast は rvalue reference を扱ってくれない

C++11 の union が超便利

C++11 の STL では push 系に rvalue reference を受け取るオーバーロードが追加されてる

emplace 系は forward するので,もらった引数が直接与えられたコンストラクタが呼ばれる.push 系は rvalue reference を受け取るコンストラクタが呼び出される.

築地の寿司屋でお寿司を食べる

中高時代の部活の友人たちと築地で最も有名な「寿司大」というお店にお寿司を食べに行きました.忘れないようにメモ.平日(火曜日朝).

  • 始発では無理と判断し,前日からカラオケボックスで夜を明かした
    • 築地は銀座から歩いてすぐ,銀座にはカラオケがいっぱい
    • 6 時に到着して 6 時間待ちという最近の情報を目にしたため
    • お店の人も話していたが,ここ最近で急激に混雑度が上昇しているらしい
    • 1 年前の食べログなどの情報は(少なくとも混雑度に関しては)当てにならない
    • 築地がなくなることが関係しているか?(とお店の人も言っていた)
  • 3:30 過ぎに到着
    • 前には,2 人組,6 人組,4 人組 が居た
    • 先頭の人は 3:00 頃着だったようだ
    • 到着後すぐに後ろに列が伸びたのでかなり良いタイミングであった
  • 5:00 開店
    • 最初のロットでは入れず
    • 1 席余るからと後ろのお一人様が先に案内された
  • 5:50 頃入店
    • おいしい
    • 「おまかせ」の後での追加注文は,できるっぽい(右の客はやっていた)
    • しかし,お腹いっぱいになってしまい追加注文せず
    • 店内で聞いた話によると,その頃既に 5 時間待ち

寿司は確かに美味しい.シャリが大きいのがちょっと勿体無いと思った(好み?).小さくしてもらうことができるようだ.

次いで有名な「大和寿司」はここまでの混雑ではなかった.3:30 到着時には誰も並んでいなかった.また,周囲にはそれら以外にも寿司屋が大量に存在した.寿司大だけが異様な人気を誇る.

静的ライブラリ,共有ライブラリ,動的リンク,静的リンク

静的ライブラリとは

  • 静的ライブラリ (static library) は ar コマンドで .o をまとめて作った .a ファイル.
  • libhoge.a が有る時,gcc に -lhoge オプションを与えるとリンクされる.
  • データが全て含まれるので .a ファイルはコンパイル時のみ必要
  • .a ファイルの中身は .o ファイルの連結のようなものであり,連結時に与えた順番通りに読み込まれる

共有ライブラリとは

  • 共有ライブラリ (shared library) は gcc に -shared オプションを与えて得られる .so ファイル.
  • libhoge.so が有る時,gcc に -lhoge オプションを与えるとリンクされる.

共有ライブラリの動的リンクとは

  • 共有ライブラリは通常は動的リンクされる.
  • .so ファイルの内容は実行ファイルに含まれず,.so ファイルが必要であるということが記録される.
  • 実行時に,動的リンカローダがメモリマップを弄って同じプロセスから使えるようにする.
  • ldd コマンドで動的リンクされ依存している .so ファイルが見れる.

共有ライブラリの静的リンクとは

  • 共有ライブラリも静的リンクできる.gcc に -static オプションを与えると共有ライブラリが静的リンクされる.この場合,.so フィアルに依存しない.
    • 他にも 例えば -static-libstdc++ と与えると libstdc++.so への依存が消える.
  • 吐かれるバイナリは大きくなる.

動的リンクの利点

  • ファイルサイズが小さくなる.
  • 複数のプロセスから共有することにより使用メモリも少なくなる (Position Independent Code (PIC)).
  • ABI を壊さなければ,共有ライブラリを入れ替えるだけで処理を変えられる.

静的リンクの利点

  • .so ファイルが設置されていない環境でも動く.

Position Independent Code (PIC) とは

  • 実行時の再配置が不要なオブジェクトファイル.
  • gcc に -fPIC オプションを与えると生成される.
  • PIC でない共有ライブラリを作ることも可能だが,再配置のぶんプログラムの起動が遅くなる上,書き換えによってメモリ上の共有が行われなくなる.
  • しかし,PIC でない共有ライブラリの方が読み込み後の実行速度は早い(と思う).

Ubuntu 14.04 上で Eclipse CDT 日本語化 + ランチャー登録

http://ubuntu.hatenablog.jp/entry/20140528/1401270897

上に加えて以下を行わないと起動しなかった.

eclipse.ini コメントアウト

#-showsplash
#org.eclipse.platform

pleades のパス

pleades のプラグインのパス指定は必ずフルパスで.

追記

使ってると落ちる.(昔の ICPC アジア地区大会を思い出す.)

Babel も問題が起きるみたいだし,しばらく英語のまま使うことにしよう.

Ubuntu 14.04 + TeXlipse で快適な日本語原稿執筆

求めた条件は以下.

  • 日本語がビューワでもちゃんと表示される
  • SyncTeX がちゃんと動く

結論から言うと,以下を設定すると上手く行った.

  • ビューワには pdf4eclipse
  • ビルダーには pdflatex
  • フォントを全て埋め込む (dvipdfmx に -f ptex-ipa.map)
  • \documentclass{scrartcl} \usepackage[whole]{bxcjkjatype} (LaTeX-CJK - TeX Wiki)

TeXlipse の設定は以下のサイトがかなり有用.


普通に設定すると,英語のみではすぐに快適に動く.しかし,日本語が表示されず,その症状と戦うことになった.以下は,試行錯誤のログ.

違うビューワを用いる方針

SyncTeX の連携を活用してみたかったので,TeXlipse との連携が必要.

デフォルトで日本語が表示できないのは,ビューワとして pdf4eclipse が用いられるためである.したがって evince なんかをビューワとして用いれば良いように思う.

しかしこの設定が上手く行かない.また,pdf4eclipse はフォントが埋め込まれていれば日本語も正しく表示できるらしい.どうせなら生成する PDF にはフォントを埋め込んだほうが良さそうなので,PDF にフォントを埋め込む方針にする.

uplatex + dvipdfmx, platex + dvipdfmx

pdflatex は日本語がサポートされていないと記憶していたし,ちょっと試してみたらやっぱりコンパイルできなかったので,(u)platex をまずは試す.

フォントを埋め込むことは頑張るとできた.いくつか情報があるが,上手く行かないものと上手く行ったものがある(あるいは両方が必要だったのかもしれない).


この方法でフォントを埋め込むと,pdf4eclipse で確かに日本語が表示された.めでたしめでたし……と思いきや,この方法で生成された PDF では,SyncTeX で位置が大幅にズレるということに気づいた.がっかりである.どうやら,そもそも日本語を含めなくてもズレてしまう.

pdflatex で日本語をコンパイル出来るようにする作戦

一方,英語のみで pdflatex を試すと SyncTeX は大変正確に場所が一致する.pdflatex に日本語をコンパイルさせる簡単な方法はないものかと思い調べたところ,意外とかなり楽であった.

適当に apt でパッケージを入れまくり,以下のページに従った.

白い巨塔で学ぶ教授職

ドラマ「白い巨塔」を見ました.前半は主人公である財前助教授が教授選で戦い教授になるまでの物語です.教授という職がいかに素晴らしいものであるか,そして教授になるのがどれほど難しいことかといったことが描かれています.医学部(大学病院)の話ではありますが,我々にも通じるところがあるはずです.

1 話

(財前助教授の意見を受けて)
東教授「君は,私の言葉を批判するのかね?」

助教授(=現准教授)とは言え,教授に意見するなど以ての外である.教授のお言葉は常に正しい.

3 話

(財前助教授の説明を受けて)
東教授「君,言葉を慎みたまえ!君にそのような講義を聞かなくてもわかっているよ.それとも,既に教授にでもなったつもりかね?」

教授は学問を究めし者である.当然全てをご存知である.出しゃばった説明は失礼である.

5 話

東教授「今のはなんだね?」
財前助教授「新人局員の柳原であります.」
東教授「君が言わせたのかね?」
……
東教授「一介の医局員が教授に意見を言うのは百年早いよ.」

ましてや医局員(≒博士課程学生)が教授に意見を述べるというのは到底あり得ないことである.

5 話

鵜飼教授「里見君,君は志のある良い医者だが,僕の方針に従えないのなら,第一内科を出て行ってもらうしかないね.忘れちゃいけないよ?僕は教授で,君は助教授なんだよ.」

常に立場を忘れてはならない.研究室に所属する以上,教授の方針は絶対である.

7 話

里見助教授「どうしてお前はそんなに教授になりたいんだ?」
財前教授「なんでかなあ.」
里見助教授「お前は医者として確かな腕を持ってる,たくさんの患者を救ってきた,それじゃだめなのか?」
財前教授「いくら命を救っても,教授になれなきゃ意味無いね.俺は偉くなりたいんだよ!一番になって,より多くの人間を従えて歩きたい.男なら誰でも思うことじゃないのか?」
里見助教授「少なくとも俺は思わんがね.」
財前教授「本当かね,自信が無いだけじゃないのかね?」

男なら誰でも教授になりより多くの人間を従えて歩きたいのである.そう思わない者は自信がないだけである.

10 話

財前教授「里見くん,僕に意見をするのは最後にしてくれないか?年を開けたら僕は教授に就任する.一助教授の意見にいちいち耳を傾けてはいられないからな.」

教授に就任すれば,例え同期であれ,当然,一助教授の意見にはいちいち耳を傾けていられなくなる.



真面目に身にしみたセリフのメモ

……ここまでの記事はもちろんジョークです.とにかく権力を急ぐ財前は,最終的に医療ミスによる裁判に負ける上,病気で早死にしてしまいます.幸せとは思えません.一方,誠実な仕事を貫く里見は,私立の病院に飛ばされてはしまうものの,幸せそうに暮らします.そういった物語だと言ってしまえばそれまでですが,なんとなく身近な話のようにも感じます.

7 話

里見助教授「教授になるのは目的じゃなくて結果だからな.」
子供「ねえ,お父さんはいつ教授になるの?お父さんも偉い教授になるんでしょ?」
里見助教授「教授だからって偉いわけじゃないんだ.教授でも,教授じゃなくても,自分の仕事をしっかりやる人はみんな偉いんだ.」

10 話

財前教授「里見くん,僕に意見をするのは最後にしてくれないか?年を開けたら僕は教授に就任する.一助教授の意見にいちいち耳を傾けてはいられないからな.」
里見助教授「俺は祝えないよ.悪いが,君が教授になったことを喜べる日が来るとは思えない.」

11 話

東前教授「学者というのは野心や器用さだけで務まるものではない.これからゆっくりと拝見するものとしよう.」


ところで,白い巨塔ですが,どうやらインターネットを通じた動画配信サービスで配信されておらず,物理的なレンタルを利用するしかないようで,面倒でした.(貸出中の場所が多くて,2 箇所の TSUTAYA を組み合わせることにより全巻揃った.)

ACM Paris Kanellakis Award (Theory and Practice Award)

Paris Kanellakis Theory and Practice Award はコンピュータの世界に重要な実用的インパクトを引き起こした理論的研究成果に対して贈られる賞だそうです.賞金は $10,000.

Paris Kanellakis 氏はデータベース分野の研究者でしたが,1995 年に飛行機事故に巻き込まれ亡くなったそうです.賞金にはご両親からの寄付に加え ACM の分科会などからの支援が含まれているそうです.

以下は受賞者と受賞の対象となった成果の表です.上記の Wikipedia 英語版の記事に記載されている表の日本語版……のつもりでしたが,Wikipedia にはよくわからない説明が多くても試しに公式ウェブページの説明を開くとよく知っているキーワードが出てきたりということも多く,そこそこの部分は結局公式ウェブページの説明に基づいています.

受賞者 受賞の対象となった研究成果
1996 Leonard Adleman, Whitfield Diffie, Martin Hellman, Ralph Merkle, Ronald Rivest, and Adi Shamir 公開鍵暗号
1997 Abraham Lempel and Jacob Ziv データ圧縮(LZ アルゴリズム
1998 Randal Bryant, Edmund M. Clarke, E. Allen Emerson, and Kenneth L. McMillan 記号モデル検査と BDD
1999 Daniel Sleator and Robert Tarjan スプレー木
2000 Narendra Karmarkar 内点法
2001 Eugene Myers シーケンスアラインメントアルゴリズム(BLAST)
2002 Peter Franaszek Constrained Channel Coding
2003 Gary Miller, Michael Rabin, Robert Solovay, and Volker Strassen 素数判定アルゴリズム(Miller-Rabin,Solovay-Strassen)
2004 Yoav Freund and Robert Schapire ブースティング機械学習
2005 Gerard Holzmann, Robert Kurshan, Moshe Vardi, and Pierre Wolper 形式的検証システム(COSPAN,SPIN)
2006 Robert Brayton 回路設計のための論理合成
2007 Bruno Buchberger グレブナー基底
2008 Corinna Cortes and Vladimir Vapnik SVM (Support Vector Machine)
2009 Mihir Bellare and Phillip Rogaway Practice-Oriented, Provable-Security (POPS)
2010 Kurt Mehlhorn Library of Efficient Data types and Algorithms (LEDA)
2011 Hanan Samet 4 分木等の多次元データに対するデータ構造
2012 Andrei Broder, Moses S Charikar and Piotr Indyk LSH (Locality-Sensitive Hashing)
2013 Robert D. Blumofe, and Charles E. Leiserson 並列プログラミング(Cilk 等)

回路・ハードウェア寄りの分野は不得手なので不正確かもしれません.より適切な日本語訳などもし有れば教えて頂ければと思います.

Core Decomposition of Uncertain Graphs (KDD'14)

定義

  • uncertain graph
    • 各辺に対し存在する確率が与えられる
    • リンク予測の出力,影響,protein-interaction (ノイズ)
  • (k, η)-core
    • 極大部分グラフ H, [deg_H(v) ≧ k] ≧ η

計算

  • 小さい方から剥ぎ取る
  • 確率の計算がちょっと入るが簡単な DP

応用実験

  • 影響最大化:密グラフとして抽出する前処理
  • Task-Driven Team Formulation:それっぽいチームを探す

ダメな統計学

http://id.fnshr.info/2014/12/17/stats-done-wrong-toc/

知っている部分もあったが面白かった

  • (1) はじめに
    • 統計的処理がきちんと行われず誤った結論が導きだされている論文は半数以上かもしれないらしい(医学の話)
  • (2) データ分析入門
    • 「p値」 = どれだけ驚くべきか
      • 差異がないという仮定の元で,このような(あるいはこれ以上極端な)結果が出る確率
      • 多くのデータを使って差異が出たら驚く
      • 大きな差異が出たら驚く
    • 使われている方法:「p が 0.05 ⇔ 有意
    • 限界がある
      • らしいが説明があまりよくわからない
      • 次章を見るに,主に「有意でない」ことを言う能力が欠けているという指摘か
      • 重大な副作用に気づかないかもしれない
  • (3) 検定力と検定力の足りない検定
    • 「検定力」 = 有意差を検定できる確率
    • 「検定力曲線」 = 影響に対する検定力のグラフ
    • 「新しい薬が生存率を 10% 以上改善するかを私見するために,どれだけの患者が必要か」
    • アメリカでは 1970 年代に赤信号で右折できるようになった.事故が増えるかについて有意差が発見できなかったが,そもそも検定力が足りていなかった.後々に増えてきたデータにより,事故が有意に増えていることが分かった.
  • (4) 擬似反復:データを賢く選べ
    • 100 人で 10 回計測 → 1000 のデータ点?ではない
    • 「擬似反復」と呼ばれる
    • 対策法
      1. 独立していないデータ点の平均をとる
      2. 独立していないデータ点を別個に分析 → 多重比較
      3. 階層モデル
  • (5) p値と基準率の誤り
    • 「基準率」 = 調査対象のもののうち,真に有効であるものの割合
    • p = 0.05 で判定を行うと,5% は擬陽性になる
    • 真に陽性である確率(=基準率)と併せて考えないと結果が殆ど擬陽性になる
    • p < 0.05 ≠ 「これの結果が偶然の確率は 5% だ」 (よくある勘違い)
    • 偽発見率を制御する方法:ベンジャミーニ=ホッホベルク法
  • (6)有意であるかないかの違いが有意差でない場合
    • エラーバーが重なっていても有意差がある可能性がある
    • エラーバーが重なっていなくても有意差がない可能性がある
  • (7) 停止規則と平均への回帰
    • 停止規則 = 有意差が出たら実験を止める
      • しばしば結果が実際より誇張される
    • サイズの違う集合での平均点の「上位」「下位」は両方小さい集合になる(ばらつくから)
  • (8) 研究者の自由:好ましい雰囲気?
    • 統計処理の際,無視して良い要素,除外する outlier 等で結果が大きく好ましい方向にねじ曲げられる
  • (9) 誰もが間違える
    • データを公開してほしい
  • (10) データを隠すこと
    • データを要求して送ってくる著者グループは 3/4
    • データを得られた研究の半分がデータの処理に誤りがあった
    • 15% では誤りによって有意な結果が出てしまっていた
    • データを共有したがらないグループの方が誤りが多い
    • マイナーな論文誌のほうがデータ処理法を隠す

ここから後は技術的な話ではなく教育等についての議論

次に誰かが「この結果は p<0.05で有意だから、これが偶然である確率は20分の1しかない!」と言うのを聞くことがあったら、私のためにその連中の頭を統計の教科書でぶったたいでください

高画質動画配信の方法

最近,やはり動画配信の時代だなと思う.どうせなら高画質で配信をしたい.その方法を調べる.

前提:Web カメラは NG

Logicool C920(t) は Web カメラとしては評判が良い.これは俺も持っているし,ICPC 放送の時とかはチョクダイもこれを持ってくる.定番のようだ.

まーしかし,やっぱりサイズもサイズだし画質はお遊びレベル感が否めない.特に,今年の ICPC 配信はカーテンを閉めた暗めの部屋だったからか,結構辛かった様子.

もっとデカいカメラは直接 PC につながるのか?

繋がらないようだ.

ここで,もっとデカいカメラはデジタル一眼レフとかデジタルビデオカメラを想定.USB に繋いでそのまま配信〜という用途で使えるものは今の所ない様子.

HDMI スルー出力」

動画配信用途でそういったカメラを使う際のキーワードは「HDMI スルー出力」というものらしい.この機能を用いて,カメラから映像をそのまま HDMI で出力し,それを PC に取り込む.

HDMI スルーはできる機種は結構限られているらしい.メーカーのウェブページを見てもよくわからないので,口コミを探すしかない.

俺の E-M5 はできない.パナソニックの GH シリーズができるらしく,GH-2 時代から高画質配信界隈で好評らしい.α7 もできるらしい.

HDMI → PC

Monster X live という製品がよく使われているらしい.USB バスパワーのみで動作するので持ち運びにも好評.

ちなみに

高画質配信を目指す界隈は「シネ UST」なんて呼ばれているらしい.
https://www.facebook.com/cineust

latex 執筆時に omake -P で快適自動ビルド

博論執筆の現実逃避で自分の latex 執筆環境の改善を少し試みる.

OMakefile

だいたいこれをベースにさせてもらうととても良い感じ.

eps → pdf

eps の図を入れまくると texコンパイルが遅くなり omake -P の快適さが薄れてしまう.tex からは pdf を入れるようにして,omake で事前に eps を pdf に変換するようにした.

OMakefile

問題は,自分の画像のディレクトリ構造が上の OMakefile で想定されているものよりももっと深いこと.これに対応するのが簡単かと思いきや omake 初体験にはかなり骨が折れた.

omake はドヤ顔で「omake のルールには有効範囲のスコープがあるので管理しやすい!ワイルドカードを用いるルールが適用されるのはカレントディレクトリだけだ!」って言っているのだけれど,それがめっちゃ困るっていう.export というものを使うと変数等をグローバル化したりできるっぽいのだが,ワイルドカードのルールは頑張っても外に出てくれず,自分のググり力で30分ググった感じでは出すのに成功してる人は見つけられなかった.

というわけで愚直に foreach する以下のような物を書いたら動いた.

EPS_IMAGE_FILES = $(glob $(IMAGE_DIR)/*.eps $(IMAGE_DIR)/*/*.eps $(IMAGE_DIR)/*/*/*.eps)

foreach(EPS_FILE, $(EPS_IMAGE_FILES))
	PDF_FILE = $(addsuffix .pdf, $(removesuffix $(EPS_FILE)))
	XBB_FILE = $(addsuffix .xbb, $(removesuffix $(EPS_FILE)))
	$(PDF_FILE): $(EPS_FILE)
		$(EPSTOPDF) $<
	$(XBB_FILE): $(PDF_FILE)
		$(EBB) $<

no BoundingBox

上記のように Bounding Box を用意してやっても no BoundingBox と言われることがある.調べると,ファイルパスにドットが2つ以上入っていると起こる有名なバグみたいだ.これはひどい

これは,hoge.piyo.pdf というファイル名とすると,{hoge.piyo}.pdf と表記すると回避できる.

結果

EPS 使用時

omake thesis.pdf 10.17s user 0.61s system 100% cpu 10.740 total

PDF 使用時

omake thesis.pdf 0.89s user 0.09s system 99% cpu 0.977 total

満足.

発表中に画面にニコ動風にコメントを流したい

2つソフトが見つかった.どっちもすぐにマトモに動作した.

n2witter

Twitter を使う.このご時世なのにアカウントのパスワードを入れないといけない.

鍵アカからの投稿が表示されるか等,要検証.

パパパコメント

Twitter に依存しない.簡単に部屋が作れ,皆をその「部屋」に導入するとコメントさせられる.

コメント一覧ができない.通り過ぎるのを見逃したらもう見れない.

自分が使うための検討

Twitter について

  • Twitter アカウントを持ってない人 or 晒したくない人からもコメントを貰いたい
  • しかし n2witter はアイコンが出るからちょっとテンションが上がる
  • というかパパパコメントは一覧機能がないので n2witter 中心にしたい

方法 1:「Twitter からの人は n2witter, それ以外の人がパパパコメント」

  • 同時起動で上手く動くことは確認した
  • ただし,パパパコメントはコメント一覧が見れない
  • コメント一覧を見たい場合,パパパコメントに投げつつ一覧を表示できるラッパー CGI を書くことになりそう
    • しかし一覧をツイッターCGI で2つみないといけなくなってしまう(かっこわるい)

考えられる方法 2:「Twitter 以外の人のコメントを自分のツイッターアカウントに投げて n2witter でまとめて拾う」

  • こっちでも CGI を書くのは同じだが,twitter に投稿するだけでよい
  • 一覧が1つになるので楽
  • ただし,匿名投稿用のアカウントに鍵をかけると,n2witter はキーワードでは拾えなくなる
  • n2witter を2つ起動してキーワードと user stream にすることで解決?(動作は一応確認)

結論

Heroku でコメント投稿用画面を作っておいた.

スライド

Heroku アプリの短縮 URL を張る.URL は簡単にすり替えられるようにフッターにする.

パパパコメントの部屋の URL も念のため短縮しておき,パワポのコメントに入れておく.当日問題が出たらその URL に切り替える.

当日

  1. ディスプレイを繋ぐ.画面をミラーリングにする.
  2. n2witter を2 つ起動する.
  3. Tween を起動する(余裕があればフォントサイズ調整)
  4. パワポ
  5. パパパコメントを一応起動しておく