路傍のプログラマ

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

IronPythonがctypesをサポート

2009-05-22 12:23:31 | プログラミング
IronPython 2.6のベータのリリースノートに、ctypesを追加したとの記述が。

ちょっと驚きました。

これだったら、Python-C APIを使う代わりに、ctypesから呼び出すようにすれば、C/C++で拡張モジュール書けるなあ。

うーん、すごい。

リリースから間がないのに、Issue Trackerにctypes関連の不具合がどんどん上がっているところを見ると、かなりの人が試しているみたいだし。

面白くなってきました。

前言撤回

2009-05-20 21:14:49 | その他
5/7のエントリでは、Windows 7 RCとUbuntu 9.04をVaio Type Pにインストールして比較したい、と書きましたが、止めました。

ちょっと調べてみたのですが、Ubuntu 9.04だとvesaドライバでごまかすしかないようだし。

Windows 7 RCのディスプレイドライバも完成度いまいちで、黒い四角が壁紙のあちこちに浮き出てきます(特に、スリープから復帰したときとか真っ黒)。

この状態で比べても、あまり意味なさそうなので。

VS 2010ベータ(英語版)出てる

2009-05-19 21:12:42 | プログラミング
Visual Studio 2010ベータの英語版のダウンロード始まってました。

CTPではやたらと条件きつかったので、無理かも?と思いつつ、

おそるおそるWindows 7 RC日本語版が載ってる実験用PCにインストール。

インストールの途中、SQL Server 2008の互換性うんぬん、と警告が出たのですがインストーラー自体は無事終了。

Windows Updateのお告げによるとSQL Server 2008のサービスパックがあるらしいのでそれもインストール。

で、VS2010を起動して、C++0xのラムダが入っているソースコードを(構文はうろ覚えなのでカンニングしながら)書いて、ビルド。

ちゃんと動きます。

面白い。

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 追記)
一部ファイルのパスを間違えて記述していたのを修正。