物理と数学とITのあれこれ

物理や数学、パソコンの設定とかプログラミングとかいろいろ書きなぐってます。

プログラミング、PC設定

丸め誤差の恐怖〜浮動小数点数の扱いに注意する〜

丸め誤差は予想以上に厄介であることを思い知らされた。 こいつのせいで予想外のバグとの格闘に時間を割かれてしまったのだ。 自分への戒めとしてこの文章を残す。 丸め誤差とは? 簡単な例として10/3を考えよう。10を3で割り切ると 3.33333.... と永遠に続…

g++でc++11の機能を使ってコンパイルする時のメモ

コンパイルの方法 g++ -std=c++11 -O2 -Wall ‘root-config --cflags —libs’ -o test test.C とすればtestという名前のオブジェクトファイルができる。 ./test とかすれば実行される。 main関数に引数を与える場合は ./test (引数1) (引数2) とかやれば通る。…

c++ でテキストファイルを読み込んでループを回す時のメモ

データ解析においてテキストファイルに書かれたデータを読み込む機会は結構多い。 俺も今までさんざん使ってきたんだけど、結構細かい書き方忘れちゃうし、曖昧な箇所も多いのでこの際ちゃんと覚える。 例えば次のような内容のテキストファイル(test.dat)…

Linuxで自分の使ってるシェルの種類を確認するときのメモ

自分の使ってるシェルを確認 $ echo $SHELL で現在使ってるシェルの種類がわかる。自分の環境だと。 /bin/tcsh とでた。 cshを拡張、バグ修正したものがtcshらしい。 csh、tcshはcsh系と呼ばれ、 sh、bash、kshはsh系と呼ばれる。文法とかも微妙に違う。 zsh…

rootのTProfileで任意の幅でrebinしたりProfileどうしを足したり割ったりする方法

いくつかのTProfile(or histogram)同士でrebinしたりProfile同士を足したり割ったりしたい。 今まではGetBinContent()でビンの中身持って来て足したりとか脳筋っぽいことをしてたんだけど、 histogramと違ってProfileの場合はエラーの計算とかがめんどくさ…

c++でstd::stringを分割する方法のメモ

stringで文字列を定義した時に途中で分割する必要が出てきた。 例えば "8:3"という文字列を:で区切って8と3をそれぞれ取り出したい場合について考える。 調べるとそれっぽいページが出てきたのでやってみる。 C++ 文字列クラス std::string 入門 どうやらstd…

Firefoxをvimのキーバインドで操作する方法〜vimperatorを入れよう〜

動機 vim。言わずと知れたテキストエディタである。 vimを使ってコードや文章を書くときは基本的にキーボードしか使わない。移動もコピペもすべてキーボード上のショートカットで行うのである。例えばカーソルの移動も矢印キーなんか使わず"hjkl"の4つを使…

Ubuntuにrootを入れる

さて、Ubuntu 16.04 LTSをPCに入れることができたので、次にrootを入れる。 rootっていうのはCERN(欧州原子核研究機構)で開発されている、高エネルギー物理解析でよく使われるデータ解析用のフレームワークです。 rootをインストールする方法は大きく分けて3…

Ubuntu16.04を入れたときの最初にした設定

おうちのPCにUbuntu16.04を入れたので、最初にした設定等をめも。 16.04は比較的新しく出たばかりなのでいろいろと不安ではある。 1、ディレクトリを英語表記にする これは16.04に限った話じゃないけど、Ubuntuのディレクトリ名はデフォルトで日本語になっ…