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
同じバージョンでもパッケージを別々に分けることができるようになりました.
Homebrew cask
OSを入れなおした時に開発環境や最初に入れるアプリは決まっているので自動化するためにHomebrew caskを導入.
brew install caskroom/cask/brew-cask
brewfileを作成してインストールしたいパッケージを記述.
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; }
homesickでdotfiles
homesickでdotfilesを管理しているのですが, dotfilesを更新した時にリポジトリも更新する方法.
homesick commit dotfiles “commit message.” homesick push dotfiles
Tmuxで画面分割した際にカレントディレクトリで開く
.tmux.confのsplit-window に -c "#{pane_current_path}"を追加する。
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の画面からそのままコンパイルして提出することができる。