Changes between Version 1 and Version 2 of HowTo/BoostStudy14


Ignore:
Timestamp:
Mar 1, 2014, 3:20:52 PM (11 years ago)
Author:
村山 俊之
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • HowTo/BoostStudy14

    v1 v2  
    33日時: 2014/3/1 10:00 ~ 18:00
    44場所: IIJ@神保町
     5レジュメとか: [https://sites.google.com/site/boostjp/study_meeting/study14 Boost.勉強会 #14 東京 - boostjp]
    56
    67== cpprefjp を支える技術 ==
     
    161162   * ユーザビリティとは、その分野に精通していないユーザーにとっての公開されているアルゴリズムインタフェースのわかりやすさ。
    162163     同時に、精通しているユーザーにとってのアルゴリズムを構成できる幅のこと。
     164
     165== 一体いつから FIFOがスケールしないと錯覚していた? ==
     166
     167 * Lock-free?
     168   * スレッドをブロッキングせずに全体での進行が保証される
     169 * Lock-free stack
     170   * 最後のノードが常に先頭…
     171 * Lock-free queue もできるよ
     172 * stack に積みに行くスレッドがいっぱいあると push と pop で当然渋滞するよね…
     173   * 対策:
     174     * ウェイトを入れる - 200 clock ぐらい?
     175       * 無駄な衝突がなくなってスループット向上。
     176     * 待機中にマッチングすればよくね?
     177       * EliminationArray
     178         * EliminationArray 自体にはランダムな位置に突っ込む。その一が null であることを期待して…
     179           * ランダムにしないとこっちはこっちで衝突しちゃうから。
     180 * EliminationArray を FIFO に適用する - Elimination Queue
     181   * Queue の外に EliminationArray を設ける
     182   * Enqueue, Dequeu をカウントするカウンタをそれぞれ設ける
     183   * CAS に失敗したら EliminationArray に乗せる。このノードには Enqueue カウンタ番号がついてる。
     184   * Dequeu カウンタのほうが大きかったら↑を拾って持っていく。
     185 * EliminationArray を使わなくても 8スレッドぐらいまではスケールする。
     186   * 1CPU を 8スレッドまでに制限するか、 EliminationArray を使うかの選択と言うのはありうるかも…
     187
     188== glfw3 OpenGL を使ったGUI フレームワーク ==
     189
     190 * マルチプラットホームのフレームワーク
     191   * windows, linux, OS X
     192   * unmodified zlib/libpng license
     193 * GLFW とは?
     194   * 必要最小限の機能、シンプルな構造
     195   * サンプルあるよ!
     196   * glut の貧弱な部分を強化した感じ (glut はもはやメンテナンスされてない)
     197   * リアルタイム性重視
     198   * OpenGL/ES とマッチ
     199   * GUI 構造や構成が C++ 向き
     200   * かなり前から少しずつ構築しているため、最近の流行とは逆行する部分も…
     201     * boost, C++11 の機能を的確に利用できてない
     202   * 組み込みでも使えるよ! (iostream には注意…)
     203 * 依存性
     204   * GLFW3, GLEW, Freetype2, OpenAL, libz, libpng, libjpeg, openjpeg, Mad(mp3), AAC, Mupdf, jbig2dec, bullet(physics)
     205 * core
     206   * 機種依存性が高いコード
     207   * GLFW3 をラップした I/F
     208   * Freetype2 I/F
     209   * 漢字 FEP関係
     210   * I/O デバイスラッパー
     211 * GL_FW
     212   * OpenGL/ES を使った描画クラスなど
     213   * OpenGL C++ ラッパー
     214   * フォントの描画・管理
     215   * 画像管理 (モーションオブジェクト)
     216   * ライト (開発中)
     217   * シーングラフ (開発中)
     218   * シェーダー (開発中)
     219 * IMG_IO
     220   * 色、画像を扱う基本クラス
     221 * SNG_IO
     222   * 単音、ストリーム
     223   * OpenAL との橋渡しなど
     224 * WIDGETS
     225   * GUI 部品
     226   * Widget 管理
     227   * 組み込み機器にも移植可能な軽量コンパクト設計
     228 * UTILS
     229   * 頂点、行列など線形代数関係
     230   * ファイル I/O
     231   * 文字列操作
     232   * プリファレンス
     233   * シーン制御
     234 * GLFW3 の改造
     235   * ドラッグアンドドロップ (Windows のみ)
     236   * FEP 関係のメッセージ(予定)
     237 * 開発環境
     238   * MinGW (MSYS)
     239 * GUI フレームワークに期待されること
     240   * 日常、非日常な処理
     241   * ありがちな処理は _簡単な設定_ だけで可能
     242     * 現状では enum ハードコーディングなど (組み込み機器などを考慮すると XML ファイルとかは使いたくない)
     243   * 複雑で特殊な処理を実装することが可能であること
     244   * 拡張性
     245   * 予想できるスマートな挙動
     246   * シンプルな構造
     247   * マウス、ジョイスティック、タッチパッドなどでも操作が可能 (今後の課題)
     248 * 次世代の GUI?
     249   * マウスでもタッチ操作でも可能なポリシー
     250   * Windows, OS X, X11(Qt) の操作はある程度継承
     251   * 「UI ガイドラインを守れば何もかもうまく行く」は幻想にすぎない
     252   * case by case
     253   * CPU もグラフィックスも十分高速なので、もっとヘビーな GUI を考えてもいいかも… (見た目だけの問題でなく)
     254     * ジェスチャーとか?
     255 * アプリケーションの構造
     256   * メッセージを使わない
     257   * 毎フレーム直列同期処理
     258   * ゲーム向きの構造
     259   * シーンごとの処理
     260     * initialize
     261     * update
     262     * render
     263     * destroy
     264
     265== データサイエンスワールドからC++を眺めてみる ==
     266
     267 * イントロ
     268   * データサイエンティストもてもて?
     269   * どんなツールを使ってるんだろ??
     270     * 1st = R, 2nd = python, 3rd = MySQL ... C/C++ は 9位
     271   * R は処理が遅い。
     272     * ループとか
     273   * R から C++ を呼んで高速化 ...結構多い
     274   * C++ から R の関数を呼ぶやりかたもあるよ
     275 * R から C++ を使ってみる
     276   * Rcpp パッケージ
     277     * R から C++ を実行するパッケージ
     278     * R から C++ ソースをコンパイルして実行。
     279       * R から呼びたい関数にコメント行でマークアップする
     280 * C++ での統計解析
     281   * Boost.Accumulators
     282     * 記述等軽量には対応してるけど、統計的検定、多変量解析、機械学習には対応してない模様。
     283     * 統計量の計算などの統計処理を提供。
     284     * 使い勝手は良さげ
     285   * Apophenia
     286   * ROOT
     287   * GSL
     288   * ALGLIB
     289     * これが一番対応範囲が多い?
     290     * 数値計算及びデータ処理のためのソフト
     291     * C++, C#, Python, VBA などから呼び出せる
     292     * 商用版もあるとか…
     293     * データ構造を文字列に持たせるなど、 C++ からの使い勝手は癖がある。
     294   * Rllvm なんてのもあるらしい…
     295   * C++ から R を呼ぶ - RInside パッケージ
     296     * RInside オブジェクトを生成、計算式を文字列で渡して実行、値を取り出す、ということができる。
     297     * Qt に R を埋め込むことも可能。
     298 * まとめ
     299   * C++ で統計解析を行う良いツールがあれば @sfchaos さんまで。
     300
     301 * [https://sites.google.com/site/cpprefjp/editors_doc/random_figure cpprefjp でも使ってた]
     302
     303== .NET とかが当たり前にやってること、C++だとどうするか ==
     304
     305