2011-01-01から1年間の記事一覧

vimfiler で任意のソートを行う

vim

でファイルのソートを行うことが出来ます。 どの条件でソートで行うかは、unite.vim で選択を行います。 1.[ でソート] 2.[unite.vim から選択] 頭文字が大文字の場合は降順で、小文字の場合は昇順でした。 3.[ソート] unite.vim を使っている辺りがカッコイ…

Boost 1.48.0

Boost 1.48.0 がリリースされました。 Boost 1.48.0 リリースノート- boostjp Boost.Container 辺りを試してみたいですね。

汎用的なベクトルの at_c を考える

C++

考えました。 [定義] template<std::size_t N, typename T> typename T::value_type at_c(T const&); struct vec{ typedef float value_type; float x, y, z; }; vec v = {1.0f, 2.0f, 3.0f}; at_c<0>(v); // 1.0f at_c<1>(v); // 2.0f at_c<2>(v); // 3.0f 使い方はこんな感じ。 [at_c_</std::size_t>…

vimfiler で簡単にファイルやディレクトリに移動する

vim

注意 - vimfiler の表記が変わりました。 Windows の Explorer のように名前の『頭文字』でサクッと移動したかったので書いてみました。 [vimrc] autocmd FileType vimfiler nnoremap <buffer> / /\_^- \zs これで『/』キーで名前の頭文字で検索を行います。</buffer>

C++11 Advent Calendar 2011

C++

こちらも立てました。 C++11 Advent Calendar 2011 - ATND 今気づきましたが1日目に Vim と C++11 が被っていますね…。 まぁ両方書きます。 [関連] Boost Advent Calender 2011 - PARTAKE

Vim Advent Calendar 2011

vim

Vim Advent Calendar 2011 を立てました Vim Advent Calendar 2011 - ATND Vim への愛を語りましょう!

戻り値型を書かない関数定義

C++

\(^o^)/ [ソース] #include <iostream> #include <boost/function.hpp> #include <boost/bind.hpp> static const auto plus = [](int a, int b){ return a + b; }; static const auto bind1st = [](boost::function<int(int, int)> f, int a){ return boost::bind(f, a, _1); }; int main(){ auto n = plus(1, 3); std::c</int(int,></boost/bind.hpp></boost/function.hpp></iostream>…

transform_if?

C++

と、いうものを Twitter で見かけたのでちょっと書いてみました。 transform_if の挙動としては、 cond == true の要素のみを関数に適用させる(range のサイズはそのまま) 要素をフィルタリングしてから関数に適用させる(filter + transform) と、いう処理…

ユーザ定義リテラルを使った FizzBuzz

C++

まぁ処理自体は、Boost.MPL で行っているんですが。 整数は template で受け取る事が出来るので、Boost.MPL を使用してコンパイル時に処理することが出来ます。 [ソース] #include <iostream> #include <type_traits> #include <string> #include <utility> #include <boost/mpl/string.hpp> #include <boost/mpl/eval_if.hpp> namespace mpl = boos</boost/mpl/eval_if.hpp></boost/mpl/string.hpp></utility></string></type_traits></iostream>…

Boost.勉強会 #6 札幌

ATND:http://atnd.org/events/18252 togetter:http://togetter.com/li/210115 #6 回目は試される大地で Boost.勉強会が開催されました。 今回も UST 参加です。 発表資料とかはあとで追加する予定。 ☆Boost.Geometryに学ぶテンプレートライブラリの設計(@cpp…

gcc 4.7 にユーザ定義リテラルが実装されていた

C++

ついに!いつの間にか実装されていたみたいです。 C++0x/C++11 Support in GCC - User-defined literals バイナリはここら辺から落としてきました。 [ソース] #include <iostream> #include <type_traits> template<unsigned long long acc, char ...cs> struct binary_impl : std::integral_constant<unsigned long long, acc>{}; template</unsigned></unsigned></type_traits></iostream>

rvalue と lvalue の理解を深める

C++

なんとなく分かっていなかったので、改めて復習。 書かないとなかなか覚えないですね…。 [ソース] struct X{}; void lvalue_f(X lvalue){} void lvalue_reference_f(X& lr){} void const_lvalue_reference_f(X const& clr){} void rvalue_reference_f(X&& rr…

OGLplus で画像の描画

OGLplus を使用したテクスチャの描画です。 OGLplus では、libpng で .png の画像ファイルを読み込むことが出来るので、今回はそれを使用します。 使用するためには予め libpng を導入しておく必要があります。 libpng 1.2.46 - http://www.libpng.org/pub/p…

vim script で遊ぶなら知っておきたい 10 の組み込み関数

vim script で遊ぶ時によく使う組み込み関数とか。 vimプラグインを作る場合だとまた違ってくると思います。 むしろ、そっちの方が誰かが書いてくれると嬉しいな(チラチラッ。 あと当然ながら詳細は help を参照してください。 ☆まえがき 関数の可変長引数 関数…

OGLplus のエラーハンドリング

OGLplus では、OpenGL でエラーが発生した場合に、例外をスローします。 スローした例外から詳細な情報(ソースファイルの位置や OpenGLのAPIなど)を取得することが出来ます。 [ソース] #include <vector> #include <iostream> #include <GL/glew.h> #include <oglplus/gl.hpp> #include <oglplus/context.hpp> #include <oglplus/shader.hpp> #incl</oglplus/shader.hpp></oglplus/context.hpp></oglplus/gl.hpp></gl/glew.h></iostream></vector>…

OGLplus 0.7.0

OGLplus 0.7.0 またバージョンアップしたみたいです。 ペースが早い…。 HPのレイアウトもちょっと変わっていますね。 チュートリアルもいつの間にか出来ていたので、初めて使う場合はここら辺を読んでみるといいかも? そろそろリリースノートが欲しいところ…

Shader のコンパイルエラーを取得

OGLplus で Shader のコンパイルに失敗した場合、Comple() 時に例外(CompileError)が飛んできます。 [ソース] #include <vector> #include <iostream> #define GL_VERSION_4_1 1 #include <GL/glew.h> #include <oglplus/gl.hpp> #include <oglplus/context.hpp> #include <oglplus/shader.hpp> #include <GL/Glut.h> int main(int argc, char *argv[]){ n…</gl/glut.h></oglplus/shader.hpp></oglplus/context.hpp></oglplus/gl.hpp></gl/glew.h></iostream></vector>

OGLplus を使ってシェーダで遊んでみた

実行時にシェーダファイルをリロードできるようにして遊んでみました。 [main.cpp] #include <vector> #include <GL/glew.h> #include <oglplus/gl.hpp> // OGLplus 0.5.0 以降だと near far を undef しておかないと動かない #undef near #undef far //#include <oglplus/all.hpp> #include <oglplus/context.hpp> #include <oglplus/buffer.hpp> #include </oglplus/buffer.hpp></oglplus/context.hpp></oglplus/all.hpp></oglplus/gl.hpp></gl/glew.h></vector>

if 文を使わないで FizzBuzz

C++

というものをみかけたので C++ でやってみました。 条件演算子を使うとかいうトンチではない。 [ソース] #include <string> #include <iostream> #include <boost/lexical_cast.hpp> int main(){ std::string fizz[2] = { "", "Fizz" }; std::string buzz[2] = { "", "Buzz" }; for(int i = 1 ; i < 30 </boost/lexical_cast.hpp></iostream></string>…

Boost 1.48.0 beta1

が公開されたらしいです。 Boost 1.48.0 beta1 とりあえず Boost.Fusion の std::tuple アダプタを試してみました。 [ソース] #include <boost/fusion/include/for_each.hpp> #include <boost/fusion/adapted/std_tuple.hpp> #include <boost/fusion/include/make_fused.hpp> #include <boost/lambda/lambda.hpp> #include <iostream> #include <tuple> #inclu…</tuple></iostream></boost/lambda/lambda.hpp></boost/fusion/include/make_fused.hpp></boost/fusion/adapted/std_tuple.hpp></boost/fusion/include/for_each.hpp>

OGLplus 0.6.0

いつの間にか OGLplus がバージョンアップしていました。 0.6.0 はまだ正式リリースじゃないのかな? 最新版の OGLplus だと gcc 4.6.1 にも対応しているみたいです。Windows にはまだ対応していないみたいなので、ソースコードに手を加えないと Windows だ…

Boost.Phoenix でフィボナッチ数列

メモ化していないので実行速度は遅いですが。 [ソース] #include <boost/phoenix/core.hpp> #include <boost/phoenix/bind.hpp> #include <boost/phoenix/operator.hpp> #include <boost/phoenix/scope.hpp> #include <boost/function.hpp> #include <boost/range/irange.hpp> #include <boost/range/algorithm/for_each.hpp> #include <iostream> i…</iostream></boost/range/algorithm/for_each.hpp></boost/range/irange.hpp></boost/function.hpp></boost/phoenix/scope.hpp></boost/phoenix/operator.hpp></boost/phoenix/bind.hpp></boost/phoenix/core.hpp>

Boost.Phoenix で sleep sort

一時期流行ったアレ。 最初は、Boost.Thread を使った sleep sort を書こうと思っていただけなんですが、気がついたら Boost.Phoenix でガシガシ書いていました。 [ソース] #include <boost/thread.hpp> #include <boost/phoenix.hpp> #include <boost/function.hpp> #include <boost/typeof/typeof.hpp> #include <iostream> int main(){ namespace phx = </iostream></boost/typeof/typeof.hpp></boost/function.hpp></boost/phoenix.hpp></boost/thread.hpp>…

vim で filetype ごとの設定を簡単に行う

vim

っていうのを以前 Twitter で見かけたので自分でもやってみました。 [vimrc] " after/ftplugin/{&filetype}.vim ファイルを開く " ディレクトリは各環境にあわせて設定 let $AFTER_FTPLUGIN = $BUNDLE_ROOT."/after/ftplugin" nnoremap <silent> <Space><CR> :execute ":e ".$AF</cr></space></silent>…

Vim を使うなら入れておきたい 10 のプラグイン

vim

Vim を使うなら『これぐらいは入れておいたほうがいい』っていうプラグインの紹介です。 どちらかといえば初心者向けな感じで、なるべく汎用的に使えそうなプラグインを選んでみました。 しかし、正直、初心者向けにしては数が多かったかも知れない…。 0.各…

エラトステネスの篩

を Boost.MPL で。 [ソース] #include <boost/mpl/print.hpp> #include <boost/mpl/vector_c.hpp> #include <boost/mpl/range_c.hpp> #include <boost/mpl/modulus.hpp> #include <boost/mpl/copy.hpp> #include <boost/mpl/copy_if.hpp> #include <boost/mpl/not_equal_to.hpp> #include <boost/mpl/back_inserter.hpp> #include…</boost/mpl/back_inserter.hpp></boost/mpl/not_equal_to.hpp></boost/mpl/copy_if.hpp></boost/mpl/copy.hpp></boost/mpl/modulus.hpp></boost/mpl/range_c.hpp></boost/mpl/vector_c.hpp></boost/mpl/print.hpp>

パス区切りの置換

vim

いい加減、\ → / への変換を手打ちするのは疲れたのでキーマップ。 [vimrc] " \ から / へ置換 vnoremap <silent> <Leader>/ :s/\\/\//g<CR>:nohlsearch<CR> nnoremap <silent> <Leader>/ :s/\\/\//g<CR>:nohlsearch<CR> ふぅ、これですっきり。</cr></cr></leader></silent></cr></cr></leader></silent>

OGLplus で複数の△ポリゴンの描画

oglplus/001_triangle.cpp をベースにして複数のポリゴン描画を行ってみました。 [ソース] #include <vector> #define GL_VERSION_4_1 #include <GL/glew.h> #include <oglplus/gl.hpp> //#include <oglplus/all.hpp> #include <oglplus/context.hpp> #include <oglplus/buffer.hpp> #include <oglplus/vertex_attrib.hpp> #include </oglplus/vertex_attrib.hpp></oglplus/buffer.hpp></oglplus/context.hpp></oglplus/all.hpp></oglplus/gl.hpp></gl/glew.h></vector>

Vim から GUI アプリケーションを起動する

vim

Vim のコマンドから直接起動してもいいのですが、それだと GUI アプリケーションが終了するまで、Vim を操作することが出来ないので、open-browser.vim を使用して起動させてみたいと思います。 [プラグイン] open-browser.vim [vimrc] " 実行ファイルを呼び…

OGLPlus を Windows で動かしてみた

OGLPlus に関してはここら辺を参照して下さい。 OGLplus はまだ Linux しかサポートされていませんが、無理やりがんばって Windows で動かしてみました。 glew が使える環境であれば多分問題ないはず…。 [手元の環境] WindowsXP MinGW gcc-4.5.2 OGLPlus 0.4…