路傍のプログラマ

只のプログラマが綴る愚痴と備忘録

BOF: アプリケーション仮想化

2009-05-08 18:38:43 | Birds-Of-Feather
記事「Microsoft、アプリ仮想化のサーバ版を検討 - ハイパーバイザよりも」
http://journal.mycom.co.jp/news/2009/05/08/013/index.html
によると、

MSが新しい仮想化技術を模索しているらしい。

記事中のリンクから、「MMS 2009のデモ」
http://blogs.technet.com/virtualization/archive/2009/04/29/MMS-2009_3A00_-Application-Virt-for-Servers.aspx
を見ると、なにやら

「アプリケーションをOSから取り外して、その下にあるOSを取り除き、新しいOSに差し替えて、アプリケーションをその上に置く」

ことができるんだそうです。

なるほど、そういわれれば仮想化技術ではあるのですが、

「コアアプリケーションだけではなく、それが使っているライブラリもまとめてパッケージとする」という説明を聞くと、

むしろ、OSとアプリケーションを疎結合にすることで(運用、構成の両方の意味で)容易に管理できるようにする技術、という意味合いが濃いような気もします。

64ビット化計画、再び。 #5 CPython

2009-05-08 14:19:32 | プログラミング
「Pythonなら、64ビット版のインストーラーを配布してるよ」と言われそうですが、

ちょっと疑問がわいたので、ソースからコンパイルしてみます。コンパイラは配布されているCPythonと同じもの、VC 9.0 (2008)を使います。

いろいろ試したのですが、結果的にうまくいった方法は以下の通り。

(1) ソース(Python-2.6.2.tar.bz2)をダウンロードして展開したディレクトリを
c:¥Python-2.6.2とします。

(2) コマンドラインから以下を実行すると、デバッグ版のpython26_d.dllをビルドできます。
pushd c:¥Python-2.6.2
Tools¥buildbot¥build-amd64.bat

途中、コンパイラがsqlite3が無いとか、db何たらが無いとかエラーを出しますが、

とりあえず、c:¥Python-2.6.2¥amd64に*.lib, *.dll, *.pyd等が生成されるようです。

(3) チェックのため、C言語からpython26_d.dllを呼び出すソースをビルドしてみます。

VS 2008でプロジェクトを作り、ドキュメントからパクった以下のソースをペースト。

#include <Python.h>

int
main(int argc, char *argv[])
{
Py_Initialize();
PyRun_SimpleString("from time import time,ctime¥n"
"print 'Today is',ctime(time())n");
Py_Finalize();
return 0;
}

構成マネージャで、64ビット版(x64)の構成を作ります。
インクルードディレクトリに"c:¥Python-2.6.2¥include"を追加。
ライブラリディレクトリに"c:¥Python-2.6.2¥PCbuild¥amd64"を追加。

# 本来はこれで良いはずなのですが、このままだとコンパイラに「pyconfig.hが無い」と怒られてビルドできません。

(4) 通常のCPythonの配布ファイルに含まれているpyconfig.hを"c:¥Python-2.6.2¥include"にコピーします。

ビルドすると、ちゃんと動くexeができました(実行時にpython26_d.dllにパスを通しておくのをお忘れなく)。

めでたしめでたし。

ちなみに、Pyconfig.hを読んでみると、コメントに「これは自動的に生成されるファイルではない」と書いてあり、本来はインストール作業の一貫として手作業で作ることが想定されているようです。

中身は、プラットフォーム別のマクロ定義のようでした。本来はきちっと調べるべきなのかもしれませんが、今回は動くところまで確認できたので、とりあえずよしとします。

(2009/05/20 追記)
一部ファイルのパスを間違えて記述していたのを修正。