オンラインゲームの仕組みや工夫を調べてみたのを社内勉強会で発表した。ときのスライド。の公開用。 オンラインゲームの種別とそれぞれの仕組みについての話と、オープンソースになっているQuakeの仕組みの話、という2つの話が主なトピック
![C++ マルチスレッド 入門](https://cdn-ak-scissors.b.st-hatena.com/image/square/5a6be7ba361500f818e742d6237a85f7f4d959c8/height=288;version=1;width=512/https%3A%2F%2Fcdn.slidesharecdn.com%2Fss_thumbnails%2Fc-150424105445-conversion-gate01-thumbnail.jpg%3Fwidth%3D640%26height%3D640%26fit%3Dbounds)
友人に Java で関数合成するプログラムを作れって課題の相談をされて一緒に考えた。で、せっかくだから勉強も兼ねていろんな言語で書いてみた。Java 以外はほとんど書いたことのない言語。 問題 f(x) = ex g(x) = x2 h(x) = -x + 1 f⋅g⋅h を Java で表せ。 上のような感じの問題らしい。人伝(ひとづて)。 Java ver. 1 まずは課題でもある Java から。一番手慣れた言語。でも、ラムダ式を扱えないので悩んだ。継承でオーバーライドすることで、関数本体を与えるようにすることで解決。まじめに、なるべく型はインターフェースで。抽象クラスも使って。ブログ書いてる今思うとこんなところまじめにしなくてもいいのに。 目指すは次のような形で書けること。 Function composed = f.compose(g).compose(h); 初めエンクロージン
この文書はGoogleの「Introduction to Parallel Programming and MapReduce」を日本語に翻訳したものです。 原文のライセンスに従い、この文書はクリエイティブ・コモンズ 表示 2.5 一般 ライセンスの下に提供されています。 なお、誤字脱字、誤訳などありましたらぜひコメント欄などでご指摘ください。 対象読者と前提条件 このチュートリアルは並列プログラミングとMapReduceプログラミングモデルの基本をカバーします。 前提として、C++やJavaのような言語と、データ構造とアルゴリズムについての相当なプログラミング経験を必要とします。 逐次プログラミングと並列プログラミング コンピューティングの初期には、プログラムは逐次プログラムでした。 逐次プログラムとは、一続きの命令で書かれたプログラムのことで、そこでは各命令はひとつづつ順番に実行されま
ゲームプログラミングにおけるC++の都市伝説 † この記事は、C++ Advent Calendar 2012 22日目の記事です。 Prev 21日目の記事 CEANによる配列操作 Next 23日目の記事 構造化並列プログラミング 時間の関係で3つの都市伝説しかご紹介できませんでしたが、またの機会があれば他の都市伝説についてもお話したいと思います。 2012/12/22 written by h.godai @hgodai 目次 初めに 都市伝説1 C++は遅いのでゲームには向いていない 都市伝説2 boost::poolはゲームには向いていない 都市伝説3 boostライブラリは怪しいライブラリだ。使うと呪われる。 ↑ 初めに † かつて、8bit時代はゲームのプログラムはアセンブラが主流でした。やがて、ゲームのプラットフォームが16bitから32bitになるに従い、C言語でゲームが
C++ の行列ライブラリ Eigen(アイゲン)で SVD と LSI。 インストール % tar zvxf eigen-eigen-3.0.3.tar.bz2 % cd eigen-eigen-3.0.3 % mkdir build_dir % cd build_dir % cmake ../ % sudo make install サンプルを動かす Eigen: Getting started にあるサンプルを動かしてみる。インクルードパスを追加するのを忘れずに(例:-I /usr/local/include/eigen3)。 #include <Eigen/Core> #include <iostream> using Eigen::MatrixXd; int main() { MatrixXd m(2, 2); m(0, 0) = 3; m(1, 0) = 2.5; m(0, 1)
(2012/01/02 補足) 勘違いしていたようですが、neocomplcache-clang と clang_complete の補間自体は libclang に頼っているので掛かる時間は変わりません。ただ clang_complete の方は入力を受け付けると補間の計算をやめるため、体感的に「速く感じる」というものらしいです。 (neocomplcache-clang と complete_clang の速度を比較してみた - 凹みTips参照) はじめに neocomplcache-clang を使うと、vim に簡単に C++ 補完機能を搭載させることができます。しかしながら Boost を使うと補完に要する時間が Boooooooost!! してしまいます。これについて作者の Shougo さんにご返答をいただきました。 (2012/01/02: 追加し忘れていた会話を追記)
粒子法シミュレーションに本格的にハマっていくうちに、計算時間が気になりだしたので、せっかくCore2Duoのマシンなんだし(Quadでないのが悔やまれた!)、マルチスレッド化でもしてみようかと、インテルのTBBライブラリの、parallel_for機能を使ってみた。粒子法では、同時刻における個々の粒子の挙動は全て互いに独立しているので、並列化にはもってこいの題材でもある。それに、TBBは今やオープンソースだ。 ここから誰でもダウンロード取得できる。 並列化というと何やら面倒そうに聞こえるが、TBBにおいては、その考え方はstlの for_eachを呼ぶのとほとんど同じで、コーディングする上でそれ以上のことを考える必要は一切ない。要はfor_eachのTBB版を呼べば、それが自動的にマルチスレッドで並列して走ってくれるのだ。 parallel_forは簡単に、stl::for_each のT
C++2c(C++26)標準ライブラリに追加される多次元部分ビューstd::submdspanについて。 // <mdspan>ヘッダ namespace std { template< class T, class E, class L, class A, class... SliceSpecifiers> constexpr auto submdspan( const mdspan<T, E, L, A>& src, SliceSpecifiers... slices) -> /*see below*/; } まとめ: 多次元ビューstd::mdspan(→id:yohhoy:20230303)から部分ビューを取り出す(slice)関数。 第2引数以降のスライス指定子リストにより、各次元のスライス方法(slicing)を指定する。 単一インデクス:単一値。指定次元に対するインデクスを固
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く