gymnoの自由談

音楽系、プログラミング系の内容 方針はいずれ

swigで pythonとc++連携

pythonjavaが遅いのなら その部分だけ別の言語で書けばよいではないか という拡張の話

参考にしたページは以下
SWIG and Python
http://www.swig.org/Doc1.3/Python.html

distutils with boost.python - おびなたん☆
http://d.hatena.ne.jp/earth2001y/20070611/p1

C++Pythonのコラボレーション ― PythonMatrixJp
http://python.matrix.jp/tips/cpp_extension/

nesugi.net - swigの使い方のメモ書き
http://www.nesugi.net/hiki/?swig%A4%CE%BB%C8%A4%A4%CA%FD%A4%CE%A5%E1%A5%E2%BD%F1%A4%AD


手順は以下

続きを読む

天と地の守り人文庫版


出ていたのか 5月28日

これで文庫でも完結
買おう

しかし 現時点で

Amazon ベストセラー商品ランキング: 本 - 105位 (本のベストセラーを見る)
1位 ─ 本 > 文学・評論 > SF・ホラー・ファンタジー
2位 ─ 本 > 文庫総合 > 一般文庫 > 新潮文庫

ってのもすごいな

Amazon.co.jp 売れ筋ランキング: SF・ホラー・ファンタジー の中で最も人気のある商品です

そして
Amazon.co.jp: 上橋 菜穂子: 本

守り人シリーズ完全ガイド
なんてのも6/8に出たらしい

マザー牧場にてアルパカと蹴爪陸亀


マザー牧場といえばアルパカ
アルパカ - gymnoの自由談

もともとアルパカを見に行こうとは思っていたのだが 社員旅行でマザー牧場を訪れるという契機を得て勇んででかけた
のだが 一頭しかおらず しかも前髪がやや過多でアルパカならではの憂いにみちたまなざしが見えず がっかりしていた ところへ

蹴爪陸亀登場

ケヅメリクガメ - Wikipedia

サハラ砂漠原産で陸亀としては大きさ3位だったかな
草食で マザー牧場にも一匹しかいないらしい
なぜいるのだろう
めったに見られない出会い と思いきや 両者はさらなる接近を見せる



分かりづらいかもしれないけれど かめが一生懸命アルパカの柵に侵入しようとし しかし甲羅がつかえて入らないので 場所を変えて何度も挑戦している
あと少しで広めの柵から侵入成功か というところで飼育員に連れ戻されていた
そのあいだアルパカはずっと見守っていた
助けてあげればいいのに

しかし りくがめは存外な攻撃心を見せるので アルパカの身も実は危険だったのかもしれない


カメにいじめられるネコ、お尻の毛を引っこ抜かれて「ギャン!!」 | Pouch[ポーチ]
そこに足があるから・・・登るカメ : カラパイア


社員旅行は最下位とはいえオリエンテーション 観覧車  21mのバンジージャンプ ジンギスカン 海ほたる 内房の山奥 ベイブリッジから見えた立ち並ぶガントリークレーンの壮観など盛り沢山でした

追記
http://www.motherfarm.co.jp/news/alpaca.html
2頭いるのか
今日見たのは スリ のほうだね
しかしもう一頭はどうしたのだろうか

XcodeでwxWidgets 開始

Xcode 3.2.3にて。
なんか 有料開発者向けにはバージョン4が出ているらしいが、別にiPhoneアプリを作るわけでもないので今はいらない。
Xcodeのバージョン3.1と3.2でいろいろ仕様が変わったらしい。

コマンドラインで作るのもよいけれどappにパッケージバンドルするのがめんどい。
Xcodeで作ればそのあたりはやってくれる。

XCodeとはMacVisual Studioで、だいたいやっていることは同じで、どちらも

というところをやりたい。 CAEソフトでいうところのプリプロセッサ というところか。
今回必要なのは後者。前者は別にemacsでもよい。
コードの編集能力はVisual Studioの方がやりやすいように感じたが慣れの問題かもしれない。

XCodeのプロジェクトはCocoaアプリケーションで作成。

Carbonがないので げ Object-C限定か と焦るけど実際はc++も使える。ここでの選択はCocoaかCarbonか にあまり関係ないらしい。
プロジェクトのプロパティを見ると「言語」の「コンパイルでのソースの解釈」がデフォルトでは「ファイルタイプに基づいて」ということになっている。

プロジェクトができる。

ごちゃごちゃいっぱいあるけれど、フレームワークという概念などはVisual Studioより分かりやすくてよい。
ある操作に必要なライブラリをまとめて設定できる。OpenGLとかOpenCLとかWebKitとか。
プロジェクトが作成できたらクラスとか拡張子.mのファイルは抹殺し、c++のコードを新規作成して追加する。

c++ファイルの中身はとりあえずwxWidgets付属のsample/minimalからコピペ。
このサンプルだけXcodeのプロジェクトが付属しているためいろいろ参考になる。
それにしても全てのサンプルにプロジェクトファイルが付いていたWindowsVisual Studioとの扱いの差。

プロジェクトの設定でいじるところは以下。
かなりしんどいけど、プロジェクトごとに一度設定してしまえばよいので。
GUIプログラムなんてそうそう書き捨てるものでもないし。 そうでもないかな。

  • アーキテクチャは32-bit Universal
  • 有効なアーキテクチャi386
  • sampleフォルダ直下にあるsample.xpmを追加 これはコピーで。
    • nclude するパスを../sample.xpmから./sample.xpmに変えること
  • ユーザヘッダ検索パスをwx-config --cxxflagsに基づいて変更する。

~/dev/wxMac-2.8.12/macbuild2/lib/wx/include/mac-unicode-release-static-2.8
~/dev/wxMac-2.8.12/include
~/$(PROJECT_DIR)/src

最後の環境変数は xcodeprojフォルダのあるディレクトリ。Visual Studioだと$(SolutionDir)に対応する。
この下にsrcというフォルダをつくってそこに実装ファイルを放りこむやり方が個人的に好み。

  • ライブラリ検索パスを wx-config --libsに基づいて変更する。

~/dev/wxMac-2.8.12/macbuild2/lib

_FILE_OFFSET_BITS=64 _LARGE_FILES __WXMAC__

  • プレフィックスヘッダをプリコンパイルする を オフに
  • プレフィックスヘッダを空にする
  • リンカの設定で 「他のリンカフラグ」として

-lexpat -lwxregexu-2.8 -lwxtiff-2.8 -lwxjpeg-2.8 -lwxpng-2.8 -lz -lpthread -liconv

リンクには
まずwx関係のライブラリをすべて追加 これは参照で。
追加するフレームワーク
Carbon OpenGL IOKit QuickTime

ここまでやれば なんとか。



ところでmacスクリーンショットって影まで含むのか

茗荷谷ラリールにてヴァルター・ファンハウヴェリサイタル

ヴァルター・ファンハウヴェさんリサイタル
with 田中せい子さん ダニエレ・ブラジェッティさん

もうだいぶ前になるけれど
2月7日 月曜日


仕事を無理やり抜け出し いざ茗荷谷
余裕をもったのにまさかの東海道線の運転見合わせ
よくあることらしい

急いで別の路線で10分遅刻くらい 
駅でざっと場所を尋ね 暗い教育の森公園をかけぬけて 抜けたところにある建物にすべりこむ
ちょうど一曲目ボワモルティエが終わったところでTRETのいつもの仲間と合流した
僕の席を取ってくれていた友人は 吉澤実さんが空いている席を探してきょろきょろしているのを見て気が気ではなかったらしい

2曲目のテレマン無伴奏はファンハウヴェさんのソロ



http://www.avanti.gr.jp/concerto/110207tanaka.html
ラリール
http://www.lalyre.jp/
フォンテガーラ
http://www16.ocn.ne.jp/~fonte/index.html


まあ近江楽堂同様小さな部屋がぎっしり埋まる感じ 特にこれ以上宣伝する必要もないか
曲はボワモルティエやテレマンのほかは現代曲がメイン



松永通温 組曲 層
http://www.michiharu-matsunaga.com/list.html
フースヤンセンという クラシックピアニスト出身ジャズの人のリコーダーソロ曲
ユンイサン 




前回はこんな感じだったか

http://www.nihonoranda.jp/ja/events/item/705

ヴァルター・ファンハウヴェ リサイタル〜ソロ&トリオによる響きの競演

日程: 2009年09月12日
場所 : 東京:オペラシティ 近江楽堂
主催者 : ストゥディオ・フォンテガーラ

macでwxglade

Mac OS X 10.6.6
wxWidgesをやろうと思い立ち wxWidgets本体およびwxPythonとwxGladeをインストールする

wxWidgetsはソースを落としてきて

% arch_flags="-arch i386"
% mkdir macbuild
% cd macbuild
% ../configure  --with-opengl --enable-geometry --enable-graphics_ctx --enable-sound --with-sdl --enable-mediactrl --enable-std_string --enable-display --enable-monolithic --enable-unicode --enable-odbc CFLAGS="$arch_flags" CXXFLAGS="$arch_flags" CPPFLAGS="$arch_flags" LDFLAGS="$arch_flags" OBJCFLAGS="$arch_flags" OBJCXXFLAGS="$arch_flags"

でよく (参照 Development: wxMac - WxWiki)
また wxPythonはバイナリパッケージがある


問題はwxGladeで 単にソースを落としてきて実行しても まず

%python wxglade

ImportError: /usr/local/lib/wxPython-unicode-2.8.11.0/lib/python2.6/site-packages/wx-2.8-mac-unicode/wx/_core_.so: no appropriate 64-bit architecture (see "man python" for running in 32-bit mode)

と怒られ さればとて

% export VERSIONER_PYTHON_PREFER_32_BIT=yes

とやっても

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

が出て悲しくなるだけだ

解決は
/usr/lib/python2.6/site-package/sitecustomize.py
というファイルをつくって

import sys
sys.setdefaultencoding('utf-8')

と画像のように書くとうまくいく

スタートアップファイルにこれを書いてもだめで 実際dir(sys)してもsetdefaultencodingなんて出てこない
[Python] UnicodeEncodeErrorが発生した場合は、sitecustomize.pyでデフォルトのエンコーディングを指定する。 - SumiTomohikoの日記
によると 

これは、pythonは起動が終了したら、sysモジュールからsetdefaultencoding関数を削除するためです。

ここで、pythonの起動時の処理を、少し詳しく説明します。pythonは起動時に、モジュールの検索パスを設定し、siteモジュールを読み込みます。Ubuntuなら、/usr/lib/python2.4/site.pyになります。sitecustomizeモジュールも、このsite.pyから読み込まれています。

以下興味深い説明が続く


これでwxGladeによるGUIアプリ作成にかかれる
windowslinuxでは見慣れたwxGladeの画面がmacっぽいルックアンドフィールになっていて面白い
たまに一部反応しなくなったりバグっぽい挙動もある

moinmoinインストールメモ

pythonで書かれたひとりwiki
changelogだと画像が貼れないので 作業メモとして考えた

環境

Mac OS X 10.6.6
moin-1.9.3

apache2の設定

インストールは最初からされている
「システム環境設定」「共有」「web共有」 をクリックすれば開始する
DocumentRootは /var/wwwとかではなく /Library/WebServer/Documents/
で localhostにアクセスするとindex.html.enが開かれて

It Works!

と表示される

また user名をgymnoとすると

http://localhost/~gymno/

にアクセスすると ユーザごとのページが見られる 
先ほどはシンプル極まりなかったが こちらはcss的に凝ったなかなかきれいなページである
こちらのDocumentRootは /Users/gymno/Sites

cgiの設定は

http://localhost/cgi-bin/

へのアクセスが /Library/WebServer/CGI-Executables
に対応することが /etc/apache2/httpd.confの345行目くらいに書いてある

ユーザごとのcgiの設定は
/etc/apache2/extra/httpd-userdir.conf

<Directory /Users/*/Sites/cgi-bin/>
Options ExecCGI
SetHandler cgi-script
</Directory>

と書けばよい

moinmoinの設定

公式インストール方法
http://moinmo.in/HowTo/MacOSXwithApacheServer
公式のだといろいろ混ざってよくわからないし /etc/apache2以下を個別にいじるのがいやなので
以下のページに基本的には従った
http://robotics.naist.jp/~tsuyo-s/cgi-bin/moinwiki/moin.cgi/MoinMoin_Tips

srcディレクトリにて 

python setup.py install --prefix='~/local' --install-data='~/moinwiki'

これにより  ~/local/lib/python2.6/site-packages/ に moinmoin周りのpythonモジュールがインストールされ ~/moinwiki以下にshareというフォルダができる
設定ファイルの設置

$ cd ~/moinwiki
$ cp -r share/moin/data .
$ cp -r share/moin/underlay .
$ cp share/moin/config/wikiconfig.py .

webデータ(?)の設置

$ cd ~/Sites
$ mkdir moin_static
$ cd moin_static
$ cp -r ~/src/moin-1.9.3/MoinMoin/web/static/htdocs/* .

cgiファイルの設置

$ cd cgi-bin
$ mkdir moin
$ cd moin
$ cp ~/moinwiki/share/moin/server/moin.cgi .
$ chmod 755 moin.cgi

moin.cgiの編集

sys.path.insert(0, '/Users/gymno/local/lib/python2.6/site-packages')
sys.path.insert(0, '/Users/gymno/moinwiki')

これはpythonモジュールのパス追加

wikiconfig.pyの編集

url_prefix_static = '/~gymno/moin_static'

これはwebデータの設置場所がURL的にどのようにアクセスできるかを表す  と思う

こうした上で localhost/~gymno/moin/moin.cgiにアクセスすると 

data_dir "does not exist, or has incorrect ownership or permissions."

というエラーがでるので 先のサイトの説明をきちんと読んで

chmod -R a+rwX ~/moinwiki

というパーミッションの設定をする必要があることに思い至る ここで相当時間を食ってしまった


あとはテーマを変えるとかいろいろと

以上