2013-04-01から1ヶ月間の記事一覧

QtWebKit を使ってみた

簡単に描画できるらしいのでちょっと使ってみた。 [ソース] #include <QtGui/QApplication> #include <QtWebKit/QtWebKit> int main(int argc, char* argv[]){ QApplication app(argc, argv); QWebView view; view.load(QUrl("http://www.google.com/")); view.show(); return app.exec(); } [出力] </qtwebkit/qtwebkit></qtgui/qapplication>…

unite.vim のステータスを vim-powerline で表示する

vim

先日の unite.vim の更新で表示形式が変更され、今まで unite.vim のバッファに表示されていたデータが statusline へと表示されるようになりました。 しかし、statusline を使用している為、このままでは vim-powerline と併用して使用する事はできません。…

neobundle.vim で github の C++ ライブラリを管理する

この記事は Vim Advent Calendar 2012 149日目の記事になります。 さて、最近では C++ のライブラリも git や svn で公開・開発されている事が多くなってきたと思います。 これらのライブラリを使用する場合は git clone でリポジトリを落としてきたり git p…

lingr に Qt 部屋が出来ました

Qt

某部屋が Qt 部屋になりつつあったので Qt 部屋が出来ました。 Qt Users - lingr 特にこれといった制限もないので Qt に興味のある人とかが来ればいいと思います。 むしろわたしは Qt がわからないので来て下さい!!(他力本願。

Qt4.8 の slot に関数オブジェクトやラムダ式を渡せるようなラッパーを書いてみた

Qt の connect は便利なんですが slot で簡単な処理を行う場合にわざわざ QObject を継承したクラスのメンバ関数で処理を書かなければいけなかったり、Q_OBJECT を付ける必要があったり、クラスは独立したヘッダーファイルで定義しなければいけなかったりと…

Clang で実装されている C++1y を使用してみた

最新版の Clang では C++1y の機能がいくつか実装されているみたいなので試してみた。 現在、実装されている機能 Binary literals Member initializers and aggregates C++11 で実装された Uniform initialization と Member-initializers は併用して使用す…

Vim の map でコマンドを展開させた場合に任意の位置にカーソルを持ってくる

vim

この記事は Vim Advent Calendar 2012 145日目の記事になります。 さて、先日 vimrc読書会でとある vimrc を読んでいると次のような感じに を多用しているマッピングがありました。 nnoremap <A-p> :%s//hoge/g<Left><Left><Left><Left><Left><Left><Left> これは何をやっているのかというと :%s//hoge/g を</left></left></left></left></left></left></left></a-p>…

Vim 7.3.892 から :wviminfo 時に Vim が落ちる

vim

[関連] :wviminfo 時に Vim が落ちる - vim-jp/issues 昨日見つけて vim-jp へと報告し、既に mattn さんが(ありがとうございます)vim_dev へ投げているのでそのうち修正されると思います。 [reanimate.vim を使用している場合に注意] reanimate.vim では …

ClangCheck を使用してソースファイルのエラー箇所を自動的に修正する

ClangCheck の -fixit オプションを使用すればエラーメッセージで出力される『did you mean 〜』の辺りをいい感じに修正してくれます。 [main.cpp] void func1(int n) const{ } int main(){ typedef int integer; integre n = 0; func(n); return 0 } [コマ…

ClangCheck をつかってみた

Clang の clang-tools-extra に含まれている ClangCheck を使ってみました。 ClangCheck は Clang の LibTooling を使用したシンタックスチェッカーです。 LibTooling - Clang 3.3 documentation ClangCheck - Clang 3.3 documentation [main.cpp] void func…

Clang に Inheriting constructors と Thread-local storage が実装された

C++

ClangがC++11を完全実装! 繰り返す、C++11を完全実装 - 本の虫 C++98, C++11, and C++14 Support in Clang - Clang と、いうことらしいので早速コンパイルして試してみました。 [ソース] struct foo{ constexpr foo(int x, int y, int z) : x(x) , y(y) , z…

ideone が gcc 4.7.2 に対応していた

いま気づいたんですが ideone が gcc 4.7.2 に対応していました。 http://ideone.com/JLhxGM これでヒャッハーかと思ったんですがどうやら boost には対応しなくなったっぽいです…。 かなしい。 ところで Vim script にはまだ対応しないんですかね。

Vim からでも qmake したい

vim

この記事は Vim Advent Calendar 2012 139日目の記事になります。 さて、Vim を使っていると突然 Qt をビルドしたい!と思うことがあります。 そんな時に quickrun.vim に予め qmake を行う設定を書いておけば Vim で Qt のコードを書いてすぐにビルドし、実…

cpp11-migrator を試してみた

[追記] さっき気づいたんですが cpp11-migrate を行うとインクルードしているヘッダーファイル内も全て C++11 で書き換えられてしまうようです。 なのでインクルードしている標準ライブラリも書き換えられてしまうので注意して下さい。 回避方法はあるのかな…

Vim script で文字列内に一致する単語をカウント

vim

組み込み関数で用意されていると思ったけど見当たらなかったので適当に自作。 [ソース] function! s:matchcount(expr, pat, ...) let start = get(a:, "1", 0) let result = match(a:expr, a:pat, start) return result == -1 ? 0 : s:matchcount(a:expr, a:…

C++ で物理アドレスの取得

C++

winsock2 を使用した版。 [ソース] #include <winsock2.h> #include <iphlpapi.h> #include <vector> #include <iostream> #include <iterator> #include <iomanip> #include <boost/format.hpp> #pragma comment(lib,"iphlpapi.lib") typedef std::vector<unsigned char> mac_address; std::vector<mac_address> get_mac_addresses()…</mac_address></unsigned></boost/format.hpp></iomanip></iterator></iostream></vector></iphlpapi.h></winsock2.h>

Sprout で乱数の配列を生成する

Sprout で乱数の配列を生成する場合、sprout::generate と sprout::random::combine を使用します。 [ソース] #include <sprout/random.hpp> #include <sprout/array.hpp> #include <sprout/algorithm.hpp> #include <iostream> int main(){ static constexpr sprout::default_random_engine engine; static constexpr sprout::unif</iostream></sprout/algorithm.hpp></sprout/array.hpp></sprout/random.hpp>…

Sprout.Random で次の乱数を取得する

constexpr 時の Sprout.Random は内部の値が変更できない為、標準ライブラリ とは違い operator() を何回呼び出しても同じ値しか返ってきません。 ではどうやって次の乱数値を取得するのかというと operator() を再度呼び出します。 [ソース] #include <sprout/random.hpp> #inc</sprout/random.hpp>…

\(・ω・\)SAN値!(/・ω・)/ピンチ!

vim

この記事は Vim Advent Calendar 2012 133日目の記事になります。 と、いう事で quickrun.vim で SAN値が下がるアニメーションをしてみました。 ついでに出力テキストに特定のワードがある場合に速度が変わるようにもしてみた。 error が出るたびに速度を早…

Sprout.Random でコンパイル時に暗号化の鍵を生成

やってみました。 [ソース] #include <algorithm> struct ango{ explicit ango(int key) : key(key){} template<typename Range> Range operator ()(Range range) const{ typedef typename std::iterator_traits<decltype(std::begin(range))>::value_type value_type; auto result = std::move(range); std::transfor</decltype(std::begin(range))></typename></algorithm>…

Sprout.Random で乱数の種を設定

Sprout.Random で乱数の種を設定する場合、乱数エンジンのコンストラクタに整数値で種を渡します。 また、SPROUT_UNIQUE_SEED マクロを使用する事でコンパイル毎に違う値の種を設定する事が出来ます。 [ソース] #include <sprout/random.hpp> #include <iostream> #include <boost/mpl/print.hpp> int main(){ s</boost/mpl/print.hpp></iostream></sprout/random.hpp>…

ICU を MinGW でビルドする

Qt 5 をビルドする時に必要だったので覚書。 [必要なツール] MinGW msys [ビルド] 基本的にはここに書いてある手順で問題ないです。 [注意] clang のパスが通っていると gcc ではなくて clang の方が使用されるみたいです。 gcc を使用して欲しい場合は clan…

Sprout.Random でコンパイル時乱数

少し使ってみました。 [ソース] #include <sprout/random.hpp> #include <iostream> int main(){ namespace random = sprout::random; static constexpr random::hellekalek1995 engine{}; // 100 ~ 999 static constexpr random::uniform_int_distribution<int> dist1(100, 999); static_asser</int></iostream></sprout/random.hpp>…

Qt 5.0.1 + MinGW + WindowsXP で _vsnprintf_s を参照するバグがある

vim

公式サイトで配布されている Qt 5.0.1 の MinGW 版で出力したバイナリを WindowsXP で実行させると次のようなランタイムエラーになる場合があります。 これは Qt 側のバグです。 このバグは 5.0.2 で修正される予定です。 MinGW ではなくて Visual Studio で…

バッファごとに quickfix のデータを保持する

vim

この記事は Vim Advent Calendar 2012 127日目の記事になります。 気がつくと4ヶ月以上続いているし、どこまで続くんだろう…。 まだまだ参加者は募集していますよ! [quickfix とは] quickfix は :make や :grep などで使用されるファイル(バッファ)位置の…

本日20:00〜から C++オンライン読書会を行います

C++

C++オンライン読書会を行います。 今日読む資料は『atomic Weapons: The C++ Memory Model and Modern Hardware』になります。 かなり専門的な資料っぽいけど無事に完走出来るだろうか…。 気になる方や参加されたい方は 20時頃に lingr-cpp 部屋までお越しく…

Qt 5.0.1 + MinGW で実行時に『エントリポイントが見つからない』エラーの対処方法

Qt

Qt 5.0.1 + MinGW で出力したバイナリを実行した場合に というようなエラーが出ることがあります。 [対処方法] 公式で配布されている MinGW ではなくて Qt 5.0.1 に付属している MinGW のパスを通してそちらを使用するようにすると動作するようになります。 …

Qt 5.0.1 + MinGW で make した場合に .o ファイルが見つからないとエラーになる

Qt 5.0.1 + MinGW でエラーになった話 その1。 Qt5.0.1 + MinGW を使用して make した時に g++: error: release/main.o: No such file or directory というように .o ファイルが見つからないとエラーになることがあります。 これは makefile 内で .o の出力…

unite-alias で unite-message

vim

さて、昨日書いた unite-message なんですが、unite-alias で定義した source でも unite-filters が使用出来るみたいです。 unite-alias を使用する場合はこんな感じ。 [ソース] let g:unite_source_alias_aliases = { \ 'message' : { \ 'source': 'output…

unite-message 書いてみた

vim

unite.vim で :message の出力を行う場合、 :Unite output:message するのが簡単なのですが、この出力に対して unite-filters を適用させたかったので1つの unite-source として定義してみました。 [ソース] let s:source = { \ "name" : "message", \ "desc…