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