pyenvとpyenv-virtualenv

pythonの開発環境をプロジェクト毎に分ける必要が出てきたので, pyenvとpyenv-virtualenvをインストール.

インストール

brew install pyenv pyenv-virtualenv

pyenvの設定

export PYENV_ROOT="${HOME}/.pyenv"
if [ -d "${PYENV_ROOT}" ]; then
export PATH=${PYENV_ROOT}/bin:$PATH
eval "$(pyenv init -)"
fi

pyenvの使い方

# インストール可能なバージョン一覧を表示する
$ pyenv install -l

# Pythonをインストールする
$ pyenv install 2.7.8

# インストールされたバージョンを確認する
$ pyenv versions

# 全体のバージョンを切り替える
$ pyenv global 2.7.8

# 特定のディレクトリ配下のみバージョンを切り替える
$ pyenv local 2.7.8

# インストールされたバージョンを削除する
$ pyenv uninstall 2.7.8

pyenv-virtualenvの使い方

# プロジェクトのディレクトリで環境を作成
$ pyenv virtualenv 3.3.5 hoge
$ pyenv local hoge
# 削除
$ pyenv uninstall hoge

同じバージョンでもパッケージを別々に分けることができるようになりました.

C++でプログラムの処理時間計測

C++のプログラムで処理時間の比較をしたかったのでメモ.

#include <iostream>
#include <chrono>
int main() {
const auto startTime = std::chrono::system_clock::now();

// TODO: ここに計測したい処理を記述

const auto endTime = std::chrono::system_clock::now();
const auto timeSpan = endTime - startTime;
std::cout << "処理時間:" << std::chrono::duration_cast<std::chrono::milliseconds>(timeSpan).count() << "[ms]" << std::endl;
}

.gitignore

リポジトリに登録したくないファイルを拡張子で指定するときに毎回.gitの中に作成するのは面倒なのでグローバルに設定したいと思いました。
ホームディレクトリの直下に.gitignoreを作成する.

git config --global core.excludesfile ~/.gitignore

個別に細かく指定したいときには各リポジトリの中で指定すると上書きされて設定が反映される。

Topcoderのプラグイン設定

Topcoderはデフォルトだと使いにくいのでプラグインを導入し問題のページを開くとファイルが自動生成されるように設定した。
FileEdit、CodeProcessor、TZTesterの3つのファイルをダウンロードする。
「Arena」画面からOptions→Editorとすると、Editor Preferencesが開く。
Common ClassPathの箇所はBrowseを押して、「TZTester.jar」と「FileEdit.jar」を選択する。
その後、Addを押して、以下のように入力しOK
Name:CodeProcessor
EntryPoint:codeprocessor.EntryPoint

ClassPath:ブラウズを押してCodeProcessor.jarを選択する。
CodeProcessorを選択して、Configureを押す。
Editor EntryPointに「fileedit.EntryPoint」と入力しConfigure
GeneralタブのEnter directory to read/write problems toにソースを置きたいディレクトリを入力(例:/home/hoge)
Code Templeteタブでテンプレートを編集する。
マクロを書いている人が多いようだが、使いこなせないと思うので最低限のものだけ記述した。

#include <iostream>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <algorithm>
#include <set>
#include <sstream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <cctype>
#include <climits>
using namespace std;

typedef long long ll;
#define foreach(itr,c) for(__typeof(c.begin()) itr=c.begin();itr!=c.end();itr++)

class $CLASSNAME$ {
public:
$RC$ $METHODNAME$($METHODPARMS$) {

}
$TESTCODE$
};
// BEGIN CUT HERE
int main() {
  $CLASSNAME$ ___test;
  ___test.run_test(-1);
}
// END CUT HERE

Saveを押して、次にProcessor Classに「tangentz.TZTester」と入力し、Verifyを押す。上記3つについてfoundと出たらOK
最後に「Arena」画面→Option→Setup user Preferenceを選択し、EditorsタブのDefault Languageで自分の使いたい言語を選ぶ。

ファイルはクラス名で保存される。
ソースコードを編集して保存したら、Topcoderの画面からそのままコンパイルして提出することができる。