なんかcmakeの使い方わからんかった、という記事を最近見たのでごく簡単な部分をまとめる。 単一のソースファイルの場合
複数のプロジェクトで共通して必要なプロジェクトや、 外部のライブラリを使用したいが、システムにインストールしたく無い場合にどうするか。 cmake + gitを用いれば簡単に解決できます。 Requirements C++プロジェクトprojに外部のC++プロジェクトsubを使用する場合を例に取って考えます。 上述のように以下の方法を実行するには projがcmakeで管理されている事 proj, subがgitで管理されている事 subがcmakeで管理されているか、ヘッダのみで構成されているテンプレートライブラリである事 が必要です。 Procedure まずgitのリポジトリは yourhost:repos/proj.git anotherhost:repos/sub.git のようになっているとします。各自の環境に合わせて読み替えてください。 アイデアは以下の通りです。 git s
便利なBoost.Range でもお高いんでしょう? という事で簡単なコードで速度測ってみた。 ちょっと簡単すぎるループな感はある。 #include <chrono> #include <boost/range/irange.hpp> #include <boost/range/adaptors.hpp> namespace A = boost::adaptors; namespace ch = std::chrono; unsigned long native(unsigned int N) { unsigned long sum = 0; for (unsigned long i = 0; i < N; ++i) { if (i % 2 != 0) continue; sum += i + 1; } return sum; } unsigned long range(unsigned
表題の通り、現在編集中の*.[ch]ppファイルを保存時に自動的clang-formatで整形します .vimrcに以下を追加します function! s:clang_format() let now_line = line(".") exec ":%! clang-format" exec ":" . now_line endfunction if executable('clang-format') augroup cpp_clang_format autocmd! autocmd BufWrite,FileWritePre,FileAppendPre *.[ch]pp call s:clang_format() augroup END endif システムにclang-formatがインストールされていればvim側はプラグイン等一切必要ありません。 2014/6/25追記 不具合を
c++11の主要なtopicであるムーブセマンティクスは非常に多くの方が解説されいます。 しかし初学者が一つの記事で理解できるようにはなっていないのが現状です。 そこで以下に順番に読むとわかりやすいリンクを挙げていきます。 Return value optimization : Wikipedia 先に知っておく方が良い基礎知識。 C++11は関係ありません。 #include <iostream> struct C { C() {} C(const C&) { std::cout << "A copy was made.\n"; } }; C f() { return C(); } int main() { std::cout << "Hello World!\n"; C obj = f(); } (Wikipediaより転載)の挙動に自信が無い人は必読です。 とはいえ最適化は標準規格で
C++11では<future>ヘッダが導入され、 簡単に非同期の処理が実装できるようになった。 以下では用途毎に実装方法をまとめる。 thread間での同期の話はせず、あくまで完全に非同期な処理についてまとめる。 戻り値が必要ない場合(Thread-per-message pattern) とりあえず非同期に実行できればいい場合。 実行時間を短縮するために複数の独立な処理を並列に実行するなどの応用が考えられる。 std::threadを使用する。最も基本的な使い方は以下の通りである: auto th1 = std::thread([]{ do_long_work(); }); do_another_things(); th1.join(); std::threadの引数に実行したい関数を渡す。 関数に引数を与えたい場合は、std::thread(func, arg)のように行う。 プログラ
で生成されるkeyはデフォルトで2048bitです(最小が768bit)。 この暗号はどのくらい強力なのか? ざっくりいって、この暗号はいつまで使えるのか? という事を調べます。 免責 以下の解析は非常にざっくりしているので参考程度に考えてください。 私は一切の責任を負えません。 RSA Factoring Challenge RSA Factoring Challenge(Wikipadia)にRSA secuirty (株)の実施した RSAの暗号解読チャレンジの記録が載っています。このチャレンジは1991から2007まで開催されたそうです。 ここの表から単にkeyの長さ(bit)と解読された年を切り出します: 330 1991 364 1992 397 1993 426 1994 426 1996 463 1999 496 2004 512 1999 563 2009 576 200
zaw - zsh anything.el-like widget zawはEmacsにおけるanything.el, helm.el, あるいはvimにおけるunite.vimに対応するpluginです。 履歴の検索 ディレクトリの移動 gitの操作 (branchの切替, fileのステージ等) processの管理 (PIDの取得, kill) tmux (attach) といったシェルでするべき事の大半がこのプラグインで非常に直感的に操作できます。 残念ながら、私には言葉でこのプラグインの素晴しさが伝えられないので 上のgifアニメをご覧ください。 anything.elやunite.vim等を使用した事のある方なら馴染みのある考え方だと思いますが、 zawでは source に action を結び付けます。 ディレクトリの移動においては source は最近訪れたディレクトリの
引数が多くて機能を把握できないfind。 でも大丈夫、zshがあればそんなの覚えなくても簡単! 現在のディレクトリ以下のPDFファイルを一覧する
Note for Boost Concept Check Library (BCCL) 本家ドキュメント(v1.55) 日本語ドキュメント(v1.30) Reference (v1.55) 以下の記述は公式のドキュメントを自分なりに要約した物であり、 和訳を目指す物ではない。 また内容を保証するものでもない。 Index - #1 Concept Checking Introduction - #2 Using Concept Checks - #3 Creating Concept Checking Classes - #4 Concept Covering and Archetypes Using Concept Checks BOOST_CONCEPT_ASSERT() コンセプトを満しているかを確認するマクロ。 cassertのassertに相当する。 #include "boos
Note for Boost Concept Check Library (BCCL) 本家ドキュメント(v1.55) 日本語ドキュメント(v1.30) Reference (v1.55) 以下の記述は公式のドキュメントを自分なりに要約した物であり、 和訳を目指す物ではない。 また内容を保証するものでもない。 Index - #1 Concept Checking Introduction - #2 Using Concept Checks - #3 Creating Concept Checking Classes - #4 Concept Covering and Archetypes Concept Checking Introduction Conceptが必要な理由 間違ったテンプレート引数によるコンパイルエラーが非常に難読である。その間違ったテンプレート引数使用された位置でなく
% typeset -A map # 連想配列型を定義 % echo ${(t)map} # mapの型を表示 association # 連想配列の型はassociation % map=(a 10 b 20) # mapの定義、(key1 val1 key2 val2)のようにする % echo $map 10 20 # 値のみが表示される % echo $map[a] # key(a)に対応するvalue(10)が表示される 10 % echo ${(k)map} # (k)は連想配列のkeyの一覧を取得するフラグ a b % map=("a*" 10 "b*" 20) # keyにパターンを記述できる % echo ${(k)map} b* a* % echo $map[abcd] # そのままではパターンマッチを行わない % echo $map[(k)abcd] # keyの部分
matplotlibで2次元プロットを作成する。 gnuplotで表示が遅くなる場合(1000x1000)くらいでも余裕で動く。 ここで2次元プロットと言っているのは、 座標(x,y)におけるスカラ量f(x,y)を表示する図の事である。 基本編 import numpy from matplotlib import pyplot data = numpy.random.rand(128,128) # 128x128の2次元numpy.arrayに乱数を入れて生成 pyplot.imshow(data) from numpy import arange, meshgrid from math import pi from matplotlib import pyplot x = arange(0,2*pi,2*pi/128) y = arange(0,2*pi,2*pi/128) X, Y
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く