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

os.path.joinでリストを連結する

Pythonのos.path.joinを使うと、実行環境に応じた適切なセパレータによってパスを連結できます。 import os os.path.join("path", "to", "somewhere") # 'path/to/somewhere'が返る(linuxの場合) join()の引数にリストを与えるのはよくある間違いです。以下…

Python3でmkdir -pする(深いディレクトリを作る)

bashなどでmkdirに-pを付けると、深い階層のディレクトリを一発で作れます。 mkdir -p very/deep/dir これと同じことをPython3(3.2以上)で行うには、os.makedirs()を使います。 import os os.makedirs(os.path.join("very", "deep", "dir"), exist_ok=True) …

VS2013で、新しいファイルをUTF-8で作成する

Visual Studioで新しいファイルを追加すると、以下のようなダイアログが出ます。 このダイアログでファイルを新規作成して保存すると、文字コードはShift-JISになってしまいます。しかし、できることならUTF-8で保存したい。ファイルの新規作成時に文字コー…

VS2013では初めからminimapが使える

minimapといえば、Sublime Textというエディタが提供して人気になった、コードの全体像を縮小して表示する機能のことです。Visual Studio2013では初めからその機能が組み込まれていることをさっき知りました。 minimapを有効にするには以下の手順を踏みます…

Pythonの辞書で順番を保つにはOrderedDictを使う

Pythonの辞書(dict)では、keyを登録した順番は記憶されません。 例えば以下のコードを実行すると、 # 普通のdictの場合 d = {} d["zz"] = 0 d["cc"] = 30 d["aa"] = 10 d["bb"] = 20 d["aa"] = 40 for key, val in d.items(): print(key, val) 以下の結果が…

VS2013にSign inできない現象(SP324098)を一応解決

現象 Win7 + Visual Studio 2013 Community Editionにて、Sign inしようとすると以下のようなエラーメッセージが出て失敗しました。 Sorry, we ran into a problem SP324098: Your browser could not complete the operation. 調査は難航 SP324098でググって…

Visual Studioのコードスニペット機能を使って高速にコードを書く

常識かもしれないのですが、Visual Studioのコードスニペット機能にいまさら気が付きました。 例えばC++の場合、classと打鍵してからTabを押すと、自動的に以下のコードスニペットが挿入されます。 class MyClass { public: MyClass(); ~MyClass(); private:…

Python Toolsで対話的にデバッグする

Visual StudioにPython Toolsプラグインをインストールした構成にて、コードの実行中に対話的にデバッグを行う方法についてご紹介します。Windows 7 + Visual Studio Express 2013 for Windows Desktop Update 4 + Python Tools 2.1という構成で動作を確認し…

matplotlibの使い方メモ

自分用メモ。ブログ用に編集し直すのが面倒なので、IPython Notebookのノートへのリンクを置きます。 nbviewer.ipython.org/gist/minus9d/e7fea3fc9301762ce9e0

IPython Notebookのノートをgitなどで版管理する

IPython Notebookのノートは、拡張子が.ipynbであるファイルとして保存されます。この.ipynbファイルを覗いてみると、以下のようにpngがファイル内に埋め込まれていることがわかります。 "outputs": [ { "metadata": {}, "output_type": "display_data", "pn…

IPython Notebookのちょっとしたメモ

最近流行のきざしがあるIPython Notebookに関するちょっとしたメモです。 定型文 %matplotlib inline グラフをインラインに埋め込むためのおまじない %pylab inlineは名前空間を汚染する副作用があるので使用しない方がよい (参考:iPython Notebookの--pyla…

gitで、昔のrevisionのファイルを閲覧する

git

Is there a quick git command to see an old version of a file? - Stack Overflowが参考になります。 方法1: コマンドラインを使う 以下のようにgit showコマンドを使います。 $ git show REVISION:path/to/file 例えば以下のように書きます。 $ git show …

OpenCV C++とPythonでの画像の取り扱いの比較

表題について自分なりにまとめています。経験値が足りないせいで誤ったことを書いているかもしれません。 C++のcv::Mat 例えば縦幅480, 横幅640のカラー画像を例にとって考えてみます。 cv::Mat img = cv::imread("board.jpg", CV_LOAD_IMAGE_COLOR); cv::Ma…

OpenCVがアルゴリズムのコンペを開催

OpenCV Vision Challenge | OpenCV によると、OpenCVがアルゴリズムの公募を行うようです。分野は以下の11個です。 (1) image segmentation (2) image registration (3) human pose estimation (4) SLAM (5) multi-view stereo matching (6) object recognit…

Visual Studioで、namespaceのブロック内をインデントしないようにする方法

従来のVisual Studioでは、namespaceで囲ったブロック内が強制的にインデントされました。しかし、Visual Studio 2013のUpdate 2から(?)、インデントしないように設定できるようになったようです。(参考:Option to stop indenting namespaces in C++ code …

C++にてPImplイディオムを使ってUnion Findクラスを実装する

「C++のためのAPIデザイン」(AA) をKindleで購入し、読み始めました。残念ながらページレイアウトが固定で、スマホなどで読むにはまったく向いていません。しかしKindle Cloud ReaderにアクセスするとPCからでも本を開けるようになったので、27インチのディ…

"random.py", "test.py"などのファイル名を付けるとハマる

Pythonのrandom.choiceを試してみようと、以下のようなrandom.pyを作成し、実行しました。 #!/usr/bin/env python3 # -*- coding: utf-8 -*- import random print(random.choice(["a", "b", "c"])) しかし、以下のようなエラーが出て実行できませんでした。 …

Internet Archiveが公開するアーケードゲームは合法なのか?

InternetArchiveが懐かしのアーケードゲーム900本を無料公開、全部ブラウザで遊べるぞ! - ねとらぼなどで報じられている通り、Internet Archiveが大量のクラシックアーケードゲームを公開し始めました。しかしInternet Archiveには著作権に関する記述が見つ…

Picasa フォト ビューアで高速に画像を送る方法

キーボードの左右キーを押すと一枚ずつ画像を進めたり戻したりできますが、 Ctrlキーを押しながら左右キーを押すと、10枚ずつ画像を進めたり戻したりできます。 また、Ctrlキーを押しながらマウスホイールを回しても、画像を進めたり戻したりできます。

GCCでCPUクロックをカウントする

c++ - clock cycle count wth GCC - Stack Overflowに書いてあるコードをそのまま試してみました。環境はWindows 7 + Cygwin + g++ 4.8.2です。 #include <iostream> #ifdef __i386 __inline__ uint64_t rdtsc() { uint64_t x; __asm__ volatile ("rdtsc" : "=A" (x));</iostream>…

OpenCVを使うならC++かPythonか?

Computer Visionの巨大なライブラリであるOpenCV。C/C++, Python, Javaのインターフェースが提供されており、どの言語で始めるか迷っている方もいるかと思います。私は残念ながらJavaからOpenCVを使ったことはないのですが、C++からはそれなりに、Pythonから…

Python版OpenCVにて補完機能を使う (VS2013 Python Tools)

以前に Visual Studio Express 2013をPythonのIDEとして使う - minus9d's diary という記事を書きました。これの延長として、VS2013にてOpenCVのPythonバインディングを使用するときに、補完機能を有効にする方法について書きます。 「ソリューションエクス…

MacportsでPython2.7.5をPython2.7.8に更新しようとして失敗

Macに入っているPython2.7を、2.7.5から2.7.8へと更新しようと以下のコマンド $ sudo port upgrade python27 を打つと、以下のエラー Warning: The Xcode Command Line Tools don't appear to be installed; most ports will likely fail to build. Warning:…

Visual Studio Express 2013をPythonのIDEとして使う (Python Tools)

Microsoftから公式リリースされているPython Tools for Visual Studio - Homeを使うと、Visual Studio 2013をPythonのIDEとして使うことが可能となります。どうせ有償であるProfessional版だけでしょ?と思いきや、2.1バージョンからはなんと無償であるExpre…

Pythonの標準ライブラリargparseで引数をパースする

Python 2.7から標準ライブラリに加わったargparseを使うと、簡単に引数のパーサが書けます。詳細はargparseを使ってみた - そこはかとなく書くよ。を見ていただくとして、ここでは基本機能だけ書きます。 目標 以下のようなargparse_test.pyを作ることを目標…

Python 3で、iTunesのXMLをパースする その2

Python 3で、iTunesのXMLをパースする その1 - minus9d's diary の続きです。 XPathを使ってXMLを探索 XMLから所望のデータを取り出すには、XPathと呼ばれる、XMLのツリーのうち特定の条件にあった部分を取り出すための言語を使うのがよいでしょう。 今回のX…

Python 3で、iTunesのXMLをパースする その1

AppleのiTunesで曲を管理していると、"iTunes Music Library.xml"というXMLファイルが自動生成されます。このファイルを分析することで、「もっとも曲数が多いアーティスト」「リリース年別の曲数の遷移」などさまざまな情報を抽出できます。 今回はPython 3…

○○行列のまとめ その2

前回の続き。 随伴行列(adjoint matrix) ある行列Aがあったとき、Aの転置をとり、各要素を複素共役で置き換えた行列を、Aの随伴行列と呼び、と書く。 "共役転置行列"と呼ぶこともあるようだ。 Octaveで随伴行列を得るには、以下の2種類の書き方がある(複素…

○○行列のまとめ その1

線形代数でよく出てくる行列をまとめました。Octaveでのコマンドを使って例を示しています。英訳はWikipediaを参考にしています。 零行列(zero matrix, null matrix) すべての成分が0である行列。例: octave:> a = zeros(3,4) a = 0 0 0 0 0 0 0 0 0 0 0 0 …

numpyのndarrayを使った行列操作練習帳 その2

前回の続きです。 行列の情報を取得 行列のサイズを取得するには.shapeを使います。 >>> a = numpy.arange(35).reshape(5,7) + 10 >>> a array([[10, 11, 12, 13, 14, 15, 16], [17, 18, 19, 20, 21, 22, 23], [24, 25, 26, 27, 28, 29, 30], [31, 32, 33, 3…