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

C++におけるtypenameの役割2

コンパイラが"error: type 'foo' is not derived from type 'bar'"と言って通してくれない.メッセージの意味から何か未定義なものがあるのかと思っていたら, 単にtypenameの書き忘れであった. ある意味未定義だったわけだが, メッセージが分かりにくい. foo,…

UbuntuでDNSサーバの設定

DNSのアドレスが変更になったと聞いて, ネットワーク接続の編集からDNSを修正したが, 効果がない. 教えてもらうと/etc/resolv.confにnameserverが直書かれていて, それが昔のままになっていた. これも書き直すと問題なく動作した. このファイルって自動的に…

OpenMPIを用いたモンテカルロ計算

以下の記事が非常に良く書いてある. 今度ちゃんと読んで何か書くかもしれないのでメモ.http://darrenjw.wordpress.com/tag/openmpi/

Boost::multi_arrayをfor文でイテレートする

multi_arrayは次元毎にa[0][1][2]のように指定する. 普通にすべての要素をループ仕様と思い, a.begin()などのようにイテレータをとってくるとハマります. どうやらこのイテレータはa[0], a[1], ...のようになっているらしく, 個々の値をイテレートしているわ…

Pythonで端末の出力文字に色をつけたい

Pythonでprintなどするときに出力される文字列に色をつけたい. 方法については以下の質問回答に良くまとまっている. 環境に依存しないようにするためにはそのためのパッケージがいくつか書いてあるのでどれかを使えば良いだろう.http://stackoverflow.com/qu…

Gitで空のディレクトリを追加

厳密にはムリぽなので姿の見えないファイルを作成してそれを追加してやる. ".gitkeep is just a placeholder." $ mkdir target $ touch target/.gitkeep $ git add target/.gitkeep http://digiclu.hatenablog.com/entry/2012/02/19/204034

boost::is_sameのBOOST_CHECK

二重括弧にしませう. BOOST_CHECK((boost::is_same<int, int>::value)); BOOST_STATIC_ASSERT((boost::is_same<int, int>::value)); BOOST_MPL_ASSERT((boost::is_same<int, int>)); http://www.cs.brown.edu/~jwicks/boost/libs/type_traits/index.html http://flast.hateblo.jp/entry/201</int,></int,></int,>…

Firefoxの新規タブで履歴が表示されるのを防ぐ

ロケーションにabout:configを入力して設定画面を開き, browser.newtabpage.enabledを検索. 出てきたものをダブルクリックすると値がtrueからfalseに変わるので, 新しいタブを開いてみて何も表示されなければOK.browser.newtab.urlを入力しておくと, 新規タ…

git pullはヤバい

詳細は以下のページを参照のこと.http://dqn.sakusakutto.jp/2012/11/git_pull.html http://d.hatena.ne.jp/inouetakuya/20120826/1345979787 http://d.hatena.ne.jp/hokaccha/20120404/1333507076なんつーか何がヤバいってgit pullがgit pushの反対と思うと…

C++におけるtypenameの役割

C++に限ったことではないが, 基礎をちゃんとやらなかったので今更typenameというものを勉強し始めた.そもそもtypenameはテンプレート引数を指定するときに使うばかりだったが, 正しくは以下のような宣言の仕方を先に学ぶべきである. template<class T, std::size_t SIZE> class CBuffer </class>…

C++でtemplate typedef

C++でtypedefをtemplate化してやりたい. 例えば単純に #include <map> typedef std::map<std::string, std::string> string_map_type; /// これはOK template<typename Tkey_, typename Tvalue_> typedef std::map<Tkey_, Tvalue_> my_map_type; /// これはエラー という感じ. 後者の記法はC++0xではサポート予定らしいがなんにせよ今は動かない</tkey_,></typename></std::string,></map>…

Windows7標準装備のiso書き込みツール

Windows7には標準でディスクイメージ(iso)書き込みツールがインストールされているらしい.isoをマウントするための別のソフトウェアを導入したところ, 右クリックで"ディスク イメージの書き込み"という選択が現れなくなってしまった. もともとこの選択に関…

C++ STLでfind_ifとファンクタの組み合わせで使う

==演算子をオーバーライドできない場合にstd::findの代わりとして, std::find_ifを使いたい. std::find_ifは3番目の引数として値そのものの代わりに条件を返す関数を与える.これは例えば関数を用いて以下のように書ける(多分). typedef std::vector<std::pair<int, int> > contai</std::pair<int,>…

C++でswitch文の中でcontinue

どうやらswitch文自体にはbreakだけで, continueはないため, switchの外側のループ(while, forなど)からちゃんと抜けてくれるようです.http://htp365.blog61.fc2.com/blog-entry-17.html

g++の環境変数を介したパスの指定

g++について, ライブラリやイクルードパスの指定を環境変数を介して行いたい. インクルードパスであれば, CPLUS_INCLUDE_PATHに指定するとできる.さて, ライブラリパスではLIBRARY_PATHとLD_LIBRARY_PATHがあっていまいち違いを理解していなかったので調べて…

Gitで(no branch)のコミットをmasterへマージする

以下のサイトに書いてありました.http://at-aka.blogspot.jp/2009/05/git-no-branch-commit.html $ git checkout master Previous HEAD position was 9a5e01d... Hoge Hoge Commit Log Switched to branch "master" $ git merge 9a5e01d ようするにmasterを…

Emacsで文字コード変換

いつも忘れるので. "C-x RETURN f euc-jp"のようにしてから保存でいけます.開いた瞬間文字化けしている場合, "C-x RETURN r euc-jp"のようにすると勘違いが治ります.http://d.hatena.ne.jp/gan2/20080527/1211875871

C++でOpenMPI入門 追記1 MPI::InitとMPI::Finalizeの確認

OpenMPIでは並列処理の前にMPI::Init, 終了時にMPI::Finalizeを呼ぶことになっているが, MPI::Init(); MPI::Init(); MPI::Finalize(); MPI::Finalize(); のようにすると実行時エラーで落ちる. これを回避するために既にMPI::InitやMPI::Finalizeが呼ばれてい…

Emacsでインデント揃え

領域選択してまとめてソースコードのインデントをそろえたいときは, M-x indent-region でいけます.http://www.lns.tohoku.ac.jp/~hadron/mbr/miyahara/miyahara_memo/emacs_tips.html#emacs_shortcut

Windowsキーの有用性

いまさらだがWindows 7を使い始めた. ずっとUbuntuを使っていたので気分を変えてみようという趣旨です. (職場のPCはやはりUbuntuであるため.)UbuntuとKinesisの組み合わせを使っているとスーパーキー(Windowsキー)からUnityを読み出したり、ショートカットを…

Windows 7のログイン画面の背景変更

タイトルの通り. 背景とフォントはそのPCを使おうという動機につながりますよ.プログラムとファイルの検索からregedit.exeを起動する. HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\BackgroundのOEMBackgroundの値…

Windows 7で/etc/hostsファイルを編集する

Linuxと同様にWindows 7でも/etc/hostsファイルに相当するものがある. これを使えばPuTTYなどのSSHクライアントでログインするときにIPを打ち込む手間が省けてわかりやすい.ファイルの場所はc/windows/system32/drivers/etc/hostsです.編集するときは, メモ…

バージョン管理システムへのcommitについての反省

現在ソースの管理にgitを使っているのだが, 自分で反省した点があったのでメモしておく.個人的にはpushはともかくcommitはこまめにやるべきだと思う. すなわち, ひとつの作業につきひとつのcommitを心がけるということである. そうでなければバージョン管理…

C++におけるグローバルスコープ

C++においてグローバル変数はあまり好ましくないと思うのでほとんど使わないのだが, 関数名がクラスのメンバ関数とグローバル関数でかぶることがある. これを区別するためには, ClassName::funcと書いて区別する.しかしながら一方で他のメンバ関数からこのメ…

gitでESCが表示される場合の対処

git lolaについて書いたのだが, ある環境でESCが表示されてしまう変な現象が起こっていたので調べてみた.http://d.hatena.ne.jp/bettamodoki/20120427/1335512071結論から言うと, git lolaの内容を.gitconfigに書いていた場合はそれに加えて以下の内容を書き…

SUSE環境でパッケージ管理

なんかしらんが, SUSE環境で作業する必要があってパッケージ管理ソフトについて教えてもらったのでメモ.といっても, SUSEではapt-getでもyumでもなく, zypperというのを使うんだよというだけのことです.なにも考えずにzypperとタイプすると丁寧なヘルプが出…

C++でOpenMPI入門8 一対一でノンブロッキング通信

話がちょっと戻るが, 入門のその6で試したブロッキング通信をノンブロッキング通信を用いてやってみた.http://d.hatena.ne.jp/bettamodoki/20120627/1340797509ブロッキング通信では, 送受信が完了するまでその関数を出なかったが, ノンブロッキング通信では…

C++でOpenMPI入門8 コミュニケータ2

というわけで早速, 2次元座標で前回と同様のことをしてみる. #include <iostream> #include <mpi.h> int main(int argc, char **argv) { MPI::Init(argc, argv); int procs = MPI::COMM_WORLD.Get_size(); int dims[2] = {0, 0}; MPI::Compute_dims(procs, 2, dims); bool per</mpi.h></iostream>…

C++でOpenMPI入門7 コミュニケータ1

前回に続いて, 一対一のブロッキング通信を用いてランク(int型)の送受信を行う. 今度はSendrecvによって, ひとつ隣のプロセスに自分のランクを送信する. 0は1へ, 1は2へ, 2は3への要領. 4プロセス並列の場合, 3はまた0へ送信することで周期的な関係を用いた.…

C++でOpenMPI入門6 一対一のブロッキング通信

並列化のより効率の良い制御をしようとすると, ブロードキャストではなく, プロセス間の一対一の通信が不可欠になる. #include <iostream> #include <mpi.h> int main(int argc, char **argv) { MPI::Init(argc, argv); int rank = MPI::COMM_WORLD.Get_rank(); int send_valu</mpi.h></iostream>…