Entries : Category [ python ]
[Zakkan]  [mobile]  [NP]  [Zope]  [Linux]  [COREBlog]  [HeatWave]  [PA]  [Windows]  [うちの子語録]  [python]  [Weight] 

21 August
2005

お勉強

LAFP?

Apache,FireBird,Pythonでお勉強。


Apacheは2.054。
Pythonは2.3(日本語版インストーラ)。
Firebirdは1.5.2。
kinterbasdbは3.1.1。
mod_pythonは3.1.3。

Pythonは日本語パッケージを使ったほうがよさそうな気がしたのであえて2.4は見送った。あ、今回はお勉強なんでWindows上でやってます。
また、mod_pythonもWindowsバイナリはpython2.4がまだないようだったから2.3を選択したのが正解となった。


インストール自体は苦労はしない(インストーラ形式なので)のだが、すべてゼロから入れるからそれなりに時間がかかる。こんなときにはZopeの利便性を本当に感じる。


 


関連リンク:
http://sourceforge.net/projects/firebird
http://www.modpython.org/
http://kinterbasdb.sourceforge.net/
http://www.egenix.com/files/python/eGenix-mx-Extensions.html(kinterbasdbが必要とする)

FireBirdの接続コマンドとかすぐ忘れるので助かります。
http://nekomimi.s41.xrea.com/x/firebird/pukiwiki/?FrontPage


設定などを簡単に以下に記していきます。

まずhttpd.confにmod_pythonを有効にするため、
LoadModule python_module modules/mod_python.so
を記入。これがなければ何も始まらない。
また、.htaccessを使えるようにするため
AllowOverride All
NoneをAllに変更。今回はhtdocs以下にテストフォルダを作ったので
<Directory "C:/Program Files/Apache Group/Apache2/htdocs">
.
.
.
</Directory>
で囲まれている行のAllowOverrideのみ変更。Limit句はどういう時使うのだろう?あとで調べよう。

次に、.htaccessをテストするフォルダに作って以下を記述
AddHandler mod_python .py
PythonHandler dbexample
PythonDebug On
Windowsの場合GUIではいきなり"."(ドット)で始まるファイル名は作れないからコマンドプロンプトからcopyコマンドなりで作成。
"dbexample"はこれからテストするファイル名を指定しておく。

で、テストディレクトリに"dbexample.py"ファイルを作成。


def handler(req) :
"""サンプルの実行
"""

from mod_python import apache
import kinterbasdb

con=kinterbasdb.connect(
dsn="c:\\employee.fdb",
user="sysdba",
password="masterkey")

cur=con.cursor()

cur.execute("select * from employee")

req.write("<html><body><pre>")


req.write("従業員テーブル\n")
req.write("__________________________________\n")

while 1:
row = cur.fetchonemap()
if row is None:
break
req.write(row['first_name'])
req.write(" ")
req.write(row['last_name'])
req.write("\n")

req.write("</pre></body></html>")

return apache.OK

con.close()


http://localhost/py/dbexample.py
をブラウザからアクセスしてエラーなく、FirebirdのサンプルDB従業員名簿が表示されれば第一歩をクリア、ということでしょうか。
こう書くと何てことぁないけど結構時間がかかった。ま、一歩一歩。
print文は使えないのーねーーーー。
さて次はcgi形式で使えるようにしないと。

次回のお勉強のためにさらに参考リンク:
http://www.python.jp/doc/contrib/modpython/
http://www.netspice.co.jp/Technic/mod_python/modpython.html
http://kinterbasdb.sourceforge.net/dist_docs/usage.html


え?Zopeがあるのになにをいまさらこんなことやってるの?って、そうですねー、なんかZopeに頼ったままって悔しいじゃないっすか。てなところにしときます。

Posted by shinobu at 23:43 | Comments (3) | Trackbacks (0)
22 August
2005

お勉強(apacheとpython)の続き(その2)

cgi

さて、先にmod_pythonを見つけてしまったわたしは単純にcgi形式で動かすのに悩んでしまった。
.pyのファイルをApacheに実行させたいだけ。

結果としては.htaccessに以下の文を記述
AddHandler cgi-script .py

 

いろいろサイトを見て回っても私のような悩みを抱えている人がいない。.py形式でも問題なく動かしているようなので単純なことに違いない、と思い、上のように試してみた。
ふだんperlのcgiを生かすにはcgi-script .cgiとしているところを.pyにしただけ。AddHandlerとはそういう意味だろうと憶測してのこと。


それから通常のcgiを実行許可するときのようにhttpd.conf内で実行許可するディレクトリ内に
Options ExecCGI

を追加するのも忘れずにやっとこう。


先日と同じことをやる。こんどはprint文が使える。

#! /Python23/python

def displayError() :
	import traceback
	print "content-type: text/html\n"
	print "<html><body><pre>"
	traceback.print_exc()
	print "</pre></body></html>"


def main() :
	"""サンプルの実行
	"""

	#from mod_python import apache
	#import cgi
	import kinterbasdb

	con=kinterbasdb.connect(
	dsn="c:\\employee.fdb",
	user="sysdba",
	password="masterkey")

	cur=con.cursor()

	cur.execute("select * from employee order by first_name")

	print "content-type: text/html\n" ;
	print """<head><meta http-equiv="Content-type" content="text/html; charset=shift-jis"></head>
	<html><body><pre>
	"""


	print "従業員テーブル\n"
	print "__________________________________\n"

	while 1:
		row = cur.fetchonemap()
		if row is None:
			break
		print row['first_name'], row['last_name']
	
	print "</pre></body></html>"

	con.close()

if __name__ == '__main__' :
	import sys
	import traceback

	sys.stderr = sys.stdout
	try :
		main()
	except :
		displayError()
さてさて、よくわかってないのだがこうやって動かしたcgiは http://www.lab.tkikuchi.net/modpython/intr-performance.html で言うところの”標準のcgi”と理解していいのだろう(mod_pythonは必要なかった?) パフォーマンスをだすにはmod_pythonを使う方がいいのかな。

Posted by shinobu at 17:58 | Comments (2) | Trackbacks (0)
24 August
2008

PA屋向けスペクトラムアナライザ その2

なんか、いろいろ調べるといまはオクターブバンドや1/3Octのスペアナもそんな高い値段ではなく存在するみたい。
で、とりあえずExeにしてみました。
配布条件やらライセンスはよく解らないのでしばらく公開してみていったんクローズしますが。
気になった方は下記をご参考ください。

http://nakaj.net/shinobu/Nikki/images/spectrum.zip

ちなみに周波数帯のピーク値を強調表示しているので正確に-??dBみたいな表示にはなりません。言って見ればピークメータ的なものでしょうか。
こういうのも自分でカスタマイズできることが、自分でプログラムできるみりょくですね。そのほかにもいろいろ音響機器について考えさせられました。

あ、正確なジェネレータなどで測っているわけではないので、その辺りは覚悟して使ってください。より、PA屋の感覚に近いものを、がコンセプトです。
(本当はHi側の補正をして聴感に近い表示にしたかったのですがラウドネス補正などはこれといった決め手が無い様でどうすべきかそのものの判断に迷ったので入れ込みませんでした)

なにかリアクションがあれば嬉しい。という気持ちで。


Posted by shinobu at 04:47 | Comments (2) | Trackbacks (0)
[1]