/var/log/soymsk

id:soy_msk


モジュール内部からのカレントディレクトリの取得


実行スクリプトからモジュールを呼び出す場合、モジュール内部からモジュール本体のパスを取得する方法。
単純にos.getcwd()を使うと実行スクリプトのカレントディレクトリを取得してしまう。
呼び出しているモジュール中で、モジュールのカレントディレクトリを扱いたい場合、
inspectモジュールを使うTIPS。[From stackoverflow]

import inspect
import os
filename = inspect.getfile( inspect.currentframe() ) # module file name
dirpath = os.path.dirname( inspect.getfile( inspect.currentframe() ) ) # module directory

絶対パスもabspathを使えば取得できる。

mingw-getでのMingwインストール

MinGWのインストール方法がいつの間にか変更されていた。

リポジトリを参照してパッケージ管理をするようになった。

とりあえず20111118版はアンチウィルスソフトにはじかれるので、以前のバージョンをインストールして、インストール段階で最新のレポジトリを参照するように変更して試してみよう。

synchronous通信中のasynchronous通信について

サーバー側で時間のかかる処理をする場合にプログレスバーを表示させたい。
重いメインの処理はGET+同期通信のレスポンスが返ってくる前に、GET+非同期通信で進行状況を取りたい。

Firefox, Chrome, Safariで試したところFirefoxは同時に通信可能だったが、ChromeSafariは非同期通信は行えなかった。

Webkitの仕様なのかな?

両方非同期通信で行えば上手くいきそう。


[追記 2011/10/28]
結局非同期通信で実装できた。

Django + South

Djangoではモデルの変更には対応できないのでSouth ( ver0.7 ) を導入。
できること:
 モデルのフィールドの変更?
できないこと:
 モデル名の変更など

モデルの同一性を判別できない以上、リネームは無理っぽいね。それなら手動でやったほうが早いし確実。

Xerces Static Library

Visual Studio 2010でXerces XMLを使ってはまったのでメモ。

プリプロセッサの前処理シンボルにXERCES_STATIC_LIBRARYを指定すること。

指定しない場合、リンク時に未解決のシンボルエラーが発生する。

以上。

MPICH2 on Windows7 64bit with visual studio 2010

1台のPCで並列処理を行う場合、openMPMPI の2通りがあるらしい。
MPI はPCクラスタ上で実行する分散処理フレームワークだけれども、一台で実行する場合でもopenMP以上の性能が出る場合があるとのことなので、まずインストールをやってみた。

1, MPICH2 or OpenMPI
MPIには openMPI, MPICHなどいくつかの実装がある。openMPIはver1.5からwindowsバイナリの配布が始まったけど、実例が少なそうなので却下。

MPICHの方はこなれた実装らしく、割と情報が多かった。

2, MPICH2のインストール
MPICH本家のサイトよりWindows用バイナリをダウンロード。
最新版はなぜかリンク切れでダウンロード出来なかったので、少し古いバージョンをインストールした。

[注意]
Windows版では、インストール作業を管理者権限で行う必要があり、インストーラーのアイコンから起動してもダメ。

コマンドプロンプトを管理者権限で実行し、以下のコマンドを叩いてインストール。
msiexec /I [インストーラー.msi]
, サンプル
インストールするとサンプルも同時にインストールされる。
[INSTALL_DIR/example] にサンプルがあるので
mpiexec -n [サンプルexe]
で実行出来るか試す。


ここで実行できない場合、MPICHのインストールを管理者権限で行っていない、ファイヤーウォールを開けていないなどが考えられる。

PCクラスタ上で計算する場合は各PCにMPICHをインストールして、アカウントを登録しる必要があるが、今回は単なる並列処理なので省略。

, 設定
Visual Studio 2010でコンパイルしてみる。

設定としては、
1, Include ディレクトリ
2, ライブラリディレクトリ
3, ライブラリファイルをプロジェクトに追加
が必要。1,2 で十分かと思ったが、3がないとコンパイルできない。

サンプルと同じようにコマンドプロンプトから
mpiexec -n [実行ファイル]
で実行。

MPICH2 on Windows7 64bit with visual studio2010

1台のPCで並列処理を行う場合、openMP と MPI の2通りがあるらしい。
MPI はPCクラスタ上で実行する分散処理フレームワークだけれども、一台で実行する場合でもopenMP以上の性能が出る場合があるとのことなので、まずインストールをやってみた。

1, MPICH2 or OpenMPI
MPIには openMPI, MPICHなどいくつかの実装がある。openMPIはver1.5からwindowsバイナリの配布が始まったけど、実例が少なそうなので却下。

MPICHの方はこなれた実装らしく、割と情報が多かった。

2, MPICH2のインストール
MPICH本家のサイトよりWindows用バイナリをダウンロード。
最新版はなぜかリンク切れでダウンロード出来なかったので、少し古いバージョンをインストールした。

[注意]
Windows版では、インストール作業を管理者権限で行う必要があり、インストーラーのアイコンから起動してもダメ。

コマンドプロンプトを管理者権限で実行し、以下のコマンドを叩いてインストール。
msiexec /I [インストーラー.msi]
, サンプル
インストールするとサンプルも同時にインストールされる。
[INSTALL_DIR/example] にサンプルがあるので
mpiexec -n [サンプルexe]
で実行出来るか試す。


ここで実行できない場合、MPICHのインストールを管理者権限で行っていない、ファイヤーウォールを開けていないなどが考えられる。

PCクラスタ上で計算する場合は各PCにMPICHをインストールして、アカウントを登録しる必要があるが、今回は単なる並列処理なので省略。

, 設定
Visual Studio 2010でコンパイルしてみる。

設定としては、
1, Include ディレクトリ
2, ライブラリディレクトリ
3, ライブラリファイルをプロジェクトに追加
が必要。1,2 で十分かと思ったが、3がないとコンパイルできない。

サンプルと同じようにコマンドプロンプトから
mpiexec -n [実行ファイル]
で実行。