Bashシェルで連想配列を使う

シェルを使ってみている今日この頃. 連想配列はシェルでは無理だろうと思っていたが, シェルならではの方法で実現できることがわかった. #!/usr/bin/env bash MAP_key1="value1" MAP_key2="value2" MAP_key3="value3" for key in key1 key2 key3; do val=$(e…

PS3とPS Vitaでリモート起動とリモートプレイ

PS4が発表されてすぐになんだが, PS3とPS Vitaでインターネット経由でリモート起動とリモートプレイを可能にする設定についてメモしておく.ネットワーク環境はPS3から無線LANでルータWZR-600DHPへ, そこからはVDSLです. PS3の設定, リモートプレイ設定から機…

std::coutを一時的に無効にする

状況に応じてstd::coutで出力していたものを一時的に無効にして, コンソールに何も出力されないようにしたい. ちょっと検索してみると以下のようなスレッドがひっかかった. 読んでみると面白い.http://stackoverflow.com/questions/8246317/redirecting-func…

libはじまりでない共有ライブラリをリンクする

wafでビルドシステムを構築している際に, libはじまりでない名前の共有ライブラリをビルド時にリンクする必要が出てきた. wscriptではlibオプションにライブラリ名を指定できるが, libで名前のはじまるパスの通ったものしかリンクできないように見えたので, …

Pythonで3次元単位球面上に一様な乱数を生成する

お題の通り. 単純に v = numpy.random.uniform(-1, 1, size=3) v /= numpy.linalg.norm(v) 等とすると一様でなく偏った分布になってしまう. この場合, 例えば, 一行目で生成したvの長さが1以下の場合に限って正規化して返し, それ以上の場合は生成しなおすよ…

boost::arrayの初期化

boost::arrayを初期化する際に以下のように書く. どちらも普通にコンパイルした場合は通るが, strictなチェックでは"warning: missing braces around initializer for 'int [4]'"などと言われて, Line2が落ちる. ようするにLine 1が正しい記述である. boost:…

C++のswitch文

ググってC++のswitch文の説明を見ているとおよそフォールスルーが話題になりがちに見える. #include <iostream> int main(int argc, char** argv) { switch (argc) { case 1: std::cout << "1." << std::endl; { // この波括弧は必須 const int var(10); std::cout << </iostream>…

Emacsでコメント行の色を変更

設定ファイルをいぢったせいか, python-modeでコメント行の色が赤でなくなり読みづらい. 結論から言うと, .emacsファイルに以下の行を足すと直った. (set-face-foreground 'font-lock-comment-face "red") M-x list-faces-displayでフォントのface(種類)の一…

STLのsetについて

こんな話もあるようです.http://lafstern.org/matt/col1.pdf http://codezine.jp/article/detail/6186

std::setのinsertが返すiteratorについて

std::setに要素を追加するコードとして以下のようなものを書いてみた. #include <iostream> #include <set> struct Element { Element(int const& arg1, int const& arg2) : first(arg1), second(arg2) {} int first; int second; }; inline bool operator<(Element const& </set></iostream>…

H5Cpp.hを使ってみる

Ubuntu 12.04でlibhdf5-serial-devをSynapticでインストールする. #include <H5Cpp.h> using namespace H5; int main() { H5File fout("data.h5", H5F_ACC_TRUNC); return 0; } これをh5c++でコンパイルして実行すると以下の様になります. $ h5c++ main.cpp $ ./a.out</h5cpp.h>…

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