iwiwi 備忘録

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

Python でのデータ処理パイプライン

統計的処理、特徴量抽出、機械学習の訓練・予測のパイプラインを上手く扱いたい。

  • scikit-learn:パイプラインがあるが、キャッシュしたりできない。
  • joblib:scikit learn と仲良し(バンドル)。キャッシュしたりする機能がある。
  • maf:求めているものに近いと思うけど、メンテされているのだろうか

並列・分散処理

  • Celery:古そうに見えたが今も使われているようだ
  • RQ http://python-rq.org/
  • Dask:EC2ともくっついていてよさそう。joblib フロントエンドがあるがこれは使い物になるのか。なったらとても便利かも。
  • mesos:期待していたが、Python のコードがパット見で触れたくない感じだった(Python2だしlowerCamelCaseだし)

リバーストンネル + autossh で ssh 開通

状況

  • マシン A に ssh したい
    • でも,マシン A はネットワークの内側にあって,外から ssh できない
  • マシン B は外から ssh できる
    • マシン B からマシン A に ssh できない
    • マシン A からマシン B に ssh できる

解決法

マシン A の crontab に以下を書いておく

@reboot /usr/bin/autossh -f -N <ほげほげ> -i <ぴよぴよ> -R 10022:localhost:<ふがふが>

これで,マシン B で以下を打てばマシン A に入れる.

ssh -p 10022 localhost

注意

ssh で使う鍵にパスフレーズがかかってると当然ながら失敗する.パスフレーズ無しの鍵を用意することになる.

CTF for ビギナーズ 2015

社長から資料を貸してもらったのでメモだけ取って返す.

バイナリ

書籍など

ネットワーク

  • 問題の種類:キャプチャしたものを渡される場合と,自分でキャプチャする場合があるfilter, follow tcp streams, export object, statistics?のかな?
  • Wireshark
  • filter, follow tcp streams, export object, export selected packet bytes, statistics

書籍

  • マスタリング TCP/IP 入門編
  • 実践パケット解析

Webサイト

Web

調査

攻撃

  • SQL インジェクション
    • ' と --
    • UNION 句で他のテーブルを見る
    • 目は見えない SQL 文を想像する必要ありエスパー
    • 他キーワード:GROUP_CONCAT, LOAD_FILE, Blind SQL Injection, Error Based SQL Injection
  • ディレクトリトラバーサル
    • index.php?id=about -> index.php?id=/etc/passwd
  • Cookie の書き換え

サイト

  • XSS game
  • alert(1) to win
  • prompt(1) to win

書籍

  • 体系的に学ぶ安全な Web アプリケーションの作り方
  • めんどうくさい Web セキュリティ
  • Web Security Testing Cookbook

東海道新幹線を予約したい

どうやって予約するのが良いのだろう?

インターネット予約

何らかのカードが必要らしい.どっちを選択しても,登録後カードが届いてようやく利用できる.カードが届くまで 2~3 週間.今予約したい場合困る.

  • プラスEX
    • UFJ-VISA カードを持っているので,それに年 500 円で機能を付加できる.
    • だが,重大な問題が指摘されている. http://www.tepkode.com/?p=1140
  • エクスプレスカード
    • 年 1000 円,クレカ増やしたくない
  • モバイルSuicaのエクスプレス特約
    • 年 1000 円,これかなあ

窓口・販売機

物理的に行かないといけない.

電話予約サービス

https://www.jr-odekake.net/goyoyaku/phone/
https://www.jr-odekake.net/goyoyaku/phone/purchase.html

「※JR東日本の駅では、東海道新幹線などJR東海エリアを含む予約はお受け取りいただけません。」やめろ

ちなみに:予約開始時刻

新幹線の予約は 1 ヶ月前の日の 10:20 からできるらしい.

追記:えきねっと

えきねっとからインターネット予約可でした

google perftool を使う

リンクする

これが意外と難しい。

https://code.google.com/p/gperftools/wiki/GooglePerformanceTools

これを読むと、-lprofiler をつけてコンパイルするだけで、あとは環境変数でプロファイリングを行えるようになると書かれている。

しかし、実際にはそうならない。これだけでは何も出力されない。

これは、gcc で "--as-needed" というオプションがデフォルトで有効になっているせいである。以下のようにすると解決する。 http://stackoverflow.com/questions/9577627/ubuntu-11-10-linking-perftools-library

g++ main.o -Wl,--no-as-needed -lprofiler -Wl,--as-needed

実行する

CPUPROFILE=hoge.prof ./hoge

表示する

kcachegrind が最高。 http://nu-pan.hatenablog.com/entry/20140410/1397099300

google-pprof --callgrind hoge hoge.prof > hoge.cg
kcachegrind hoge.cg

大塚家具に椅子を見に行った → バロンにしようかな?

話題の大塚家具に行って,椅子を試させてもらった.

アーロン,バロン,コンテッサエルゴヒューマンあたりのよく聞くオフィスチェアを候補として試した.結論から言うとバロンにしようかと思っている.その経緯を思い出せるようにメモ.

アーロン

前提知識として,作業が PC 操作中心の人は後傾姿勢用の椅子,筆記作業などが中心の人は前傾姿勢が良いと言われている.

僕も時間の和で考えれば PC 作業中心になると思う.アーロンは前傾用なので,その点では今回の候補として若干微妙なのである.

というわけで,一応座ってはみたけど,特別なものを感じることもなかったので,候補から最初に除外.

エルゴヒューマン

周りの人からよく名前を聞くので最も気になっていたが,ご自慢のランバーサポートが強すぎて気に入らなかった.

背もたれの上下位置を中心に色々な調整を試したが,ランバーサポートが,どちらかというと邪魔.背中を背もたれに接触させるためには,それなりに強くランバーサポートを押しこむことになる.ランバーサポートが強く当たるのが大変気になるので長くこの姿勢を続けられる気がしない.また,面ではなくいくつかの「点」で腰〜背中が支えられている状態を抜けだせず,あまり快適ではなかった.

もっとも,ランバーサポートは,座り心地を改善するためというよりは,疲労を改善するためのものなのである.「良薬口に苦し」ということで,すわり心地は良くなくても,実は価値があるのかもしれない.ただ,ランバーサポートは浅く腰掛ける人の姿勢を正すものとの噂もある.一方僕は深く腰掛けたいので,そういう理由でちょっと合わないのかも.あるいは単純に体型があっていないのか.

とにかく,強く押されすぎて気になるというのと,背中との接触が「点」になっていて気持よくないということで,エルゴヒューマンは今回はやめる.

バロン

バロンは最初からかなり快適に感じた.背中との接触が「点」になっていたエルゴヒューマンとは対照的に,メッシュが上手くたわんで,背中を「面」でちょうどよく包み込んでくれる.

また,腰の部分が少し出たデザインになっている背もたれが,僕の体にはちょうどフィットする.深く腰掛けるのが好きだからか,ランバーサポートなしで,腰の部分も気持ち良い押され具合.

むしろ,ランバーサポートがあると,せっかく「面」で包み込んでくれていた背もたれが,ランバーサポートばかりの「点」になってしまうように感じられた.ランバーサポートは無しが良い.

コンテッサ

コンテッサとバロンは,同じ岡村製作所が作っていて,僕はコンテッサを 5 年間使ってきた.

コンテッサが上位機種,バロンが下位機種と言われる.僅かなスペック・サイズと操作性のみが違うと書いているサイトが多い.が,それなりに別物であるのではないかと僕には感じられる.写真だけでも,背もたれのデザインは結構違うように思う.腰のやや突き出ている部分から下について,バロンのほうがメッシュが広い.これがすわり心地に影響しているような気がする.

ただ,コンテッサにはランバーサポートの付いたものしか置いていなかったので,ランバーサポート無しのコンテッサにも座ってみたい.少なくとも,ランバーサポートに付いたコンテッサの座り心地(=これまで 5 年間使ってきたもの)より,ランバーサポート無しのバロンのほうが,快適に感じた.


(ちなみに 5 年前は,あまり比較をせず,近場ですぐ手に入るとのことだったコンテッサをすぐに買ってしまったのであった.)

いろいろ

バロン・コンテッサには最近,「スタンダードメッシュ」の他に「グラデーションメッシュ」が発売されている.これは,(オシャレではなく)メッシュの密度を均一にせず負荷をより分散させるというものである.

良さそうなので是非こっちにしてみたいが,グラデーションメッシュにすると,メッシュシートが選べず,強制的にクッションシートになるらしい.なんで!?と思ったけど,メッシュシートは欠陥だという指摘もあり,クッションシートのほうが良いかもしれない.

ヘッドレストは,可動式のものと固定式のものがある.バロンの可動式ヘッドレストは,可動機構がかなりちゃっちい.固定できず簡単に動いてしまうので,せっかく前に出せても荷重をかけるとすぐに後ろに戻っていく.アホらしいのでさっぱりした固定式のほうが良いと思う.

それから,椅子に関しては基本的に腰部分の話が多いが,僕が困っているのは,どちらかというと腰よりも首と肩である.猫背というほどではないが,PC に夢中になっていると首から上を PC に近づけてせり出してしまい,後から首の痛みになる.首を前に出さなくても済むように,フォントを大きくしたり,アームでディスプレイを顔に近づけるといった工夫を別途したい.

こういうことを考えていると,クルーズ&アトラスにも興味が出てくるが,あれは 27 インチディスプレイを 3 枚とか使っていてもいけるサイズなのだろうか?見た感じ,小さそう.

Finding the Hierarchy of Dense Subgraphs using Nucleus Decompositions (WWW'15)

概要

  • たくさんの密グラフの包括的・階層的表現
    • 沢山の密部分グラフが欲しい
    • 密度や大きさの分布が欲しい
    • 構造的関係(入れ子)が知りたい
  • いかした図を出力する
    • グラフを「核の森」で表す (Nucleus Decomposition)

定義 k-(r,s)-nucleus

  • パラメータ k, r, s がある (r < s)
  • 別のグラフを考える
    • 頂点はサイズ r のクリーク
    • サイズ s のクリークを hyperedge だと思う
  • このグラフの k-core を取る

関係

  • r = s-1 なら k-clique community
  • k-(1,2)-nucleus は k-core
  • k-(2,3)-nucleus は k-truss に近いけど違う

性質

  • (r, s)-核は層族 (laminar family)
    • K_r の集合で考えるからである.
    • K_r を共有しない.K_r-1 なら共有するかも(OK).
  • それぞれの k についての核を森で表現

結果

  • いかした図

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 でない共有ライブラリの方が読み込み後の実行速度は早い(と思う).