とても寒い元旦

なんだが,元旦だが文化が違うせいか,普通の日と大差ない.こちらは旧正月が元旦になるので,普通の土曜日とほとんど変わらないようだ.
今週は寒波が来ているせいかとても寒い.今日は基隆河沿いをジョグしてきたが,走っている人はほとんどいなかったなぁ.8 度ぐらいだったか.耳まきして走って正解.手がとても冷たかった.
部屋も寒い.暖房が一切無いので,ちょっと辛いなぁ...
明日から温かくなるみたいなので,期待.

で作る Cocoa アプリ(5)

Motacilla2004-12-31

今回は Xcode のプロジェクトファイルを作る(だんだんアプリを作る気分が盛り上がる).
Xcode を立ち上げ,New Project... を選択する.
PyObjC が正しくインストールできていれば,Cocoa-Python Application および,Cocoa-Python Document-based Application が新に選択できるようになる.
今回作るアプリは Document-based ではないので,Cocoa-Python Application を選択する.Next ボタンを押して Project 名をつけるとプロジェクトファイルの出来上がり.

次は,Interface Builder で画面を作る(って,今日は大晦日なのね...).



Click Here!

で作る Cocoa アプリ(4)

(3)を実現するために必要な機能は次の通り:

それぞれのソフトの入手先は次の通り:

PyObjChttp://pyobjc.sourceforge.net/

mysql-pythonhttp://sourceforge.net/projects/mysql-python

インストール:PyObjC

  • Download のリンクから,「PyObjC 1.2 installer package for Apple's Python (MacOS X 10.3)」をクリックし,必要なソフトをダウンロード,と思ったら,リンクをクリックしてもダウンロードされない.なんで? 気を取り直して「Files section of our SourceForge project.」をクリックし,「pyobjc-1.2-python2.3-macosx10.3.dmg」をダウンロードする
  • pyobjc-1.2.mpkg をダブルクリックするとインストーラが起動するので,指示に従う

以上で,PyObjC のインストールは完了.

インストール:mysql-python

  • MySQL-python-1.0.0.tar.gz をダウンロードする
  • ファイルを解凍し Console で次の通り:python ./setup.py build
  • error が出まくり,build 失敗.error が発生する原因は,MySQL 用のヘッダーファイルが無いため.もし,既に MySQL がインストールされている環境であれば,一発で build できるはず.無い物は用意すればよい,ということで,やや遠回りながら,MySQL のソースをダウンロードし,必要なファイルを揃えることにする
  • setup.py を実行時に出力される error を見ると,

_mysql.c:41:19: mysql.h: No such file or directory

_mysql.c:42:26: mysqld_error.h: No such file or directory

_mysql.c:43:20: errmsg.h: No such file or directory

...

とあるので,とりあえず,これらのファイルを用意する.

  • MySQL は次からダウンロードできる:http://dev.mysql.com/downloads/
  • 現時点の最新版 ver. 4.1.8 Standard (Without installer),MacOS X 用 tar.gz をダウンロードする
  • ver. 4.1.8 Standard (Without installer) のファイルから.ファイルを解凍すると,include の中に,必要なファイルが揃っている.列挙すると,
  • setup.py を確認してみると,75 行目付近に OS ごとに path が指定されている部分がある.ここを,先ほどダウンロードした MySQL のソース中の lib ディレクトリに変更すればよい.具体的には,

#include_dirs.append('/sw/include/mysql')
#library_dirs.append('/sw/lib/mysql')
include_dirs.append('/Users/who/Desktop/mysql-standard-4.1.8-apple-darwin7.6.0-powerpc/lib')
library_dirs.append('/Users/who/Desktop/mysql-standard-4.1.8-apple-darwin7.6.0-powerpc/lib')
のような感じ

  • python setup.py build すると,無事モジュールができる
  • インストールは,sudo python setup.py install とする

以上で必要なソフトが揃った.

接続テスト:Python to MySQL

Python から MySQL へ接続できるか,簡単なテストを実施してみる.この実験で,mysql-python が正しくインストールされているか確認できる.
まだ Cocoa は使わない.
次のような Python script ファイルを作成:
file --test_connect.py--


#!/usr/bin/python
import MySQLdb, _mysql, time, datetime

vhost = "192.168.1.1" # MySQL のホストを指定
vuser = "who" # 接続ユーザ名
vpass = "pass" # パスワード
vdatabase = "testdb" # MySQL に作ったデータベース名

def connectMySQL():
host_name = vhost
user_name = vuser
password = vpass
database_name = vdatabase
mesg = "Your input information as below:?n"
mesg = mesg + "?t Host = %s?n" % (host_name)
mesg = mesg + "?t User = %s?n" % (user_name)
mesg = mesg + "?t Pass = %s?n" % (password)
mesg = mesg + "?t database = %s?n" % (database_name)

try:
db = MySQLdb.connect(host = host_name,
user = user_name,
passwd = password,
db = database_name,
connect_timeout = 1440 * 60)

mesg = mesg + "OK, I can connect MySQL Server"
print mesg
return db

except:
mesg = "I can't connect"
print mesg
return None

if __name__ == '__main__':
test = connectMySQL()

python test_connect.py とし,Console に,
OK, I can connect MySQL Server
と表示されれば接続成功



Click Here!

で作る Cocoa アプリ(3)

Motacilla2004-12-29

機能を実現するための画面を作成してみる(画像参照).
この画面は次のようなストーリーで展開する.

  • Start ボタンを押すと,MySQL サーバに接続し,show full processlist を実行
  • show full processlist の結果を,Table に表示する
  • show full processlist は,自分自身も表示するので,Table には最低でも 1 行表示される
  • show full processlist は,5 秒に一度程度実行し,Table の情報も更新される
  • show full processlist 実行中は,Start ボタンを変化させ,サーバに接続中であることを視覚化する
  • Table に表示された任意の行を選択し Kill ボタンを押すと,選択したしたプロセスを終了できる
  • Log フィールドには,サーバとの接続情報など,付加的な情報を画面に表示する
  • Menu から Quit を選ぶとアプリケーションは終了する

以上の通り.


Click Here!

で作る Cocoa アプリ(1)

書くぞ,書くぞと思い書いていなかったが,やっと書くことにする.
PyObJC を使うと,PythonCocoa アプリが作れる.と聞くと,「イイじゃん」と思いがちだが,実際にはそんなに楽ではありません.Objective-C というか,AppKit や Foundation の関数を熟知しないとダメです.でも,フル Objective-C ベースで書くのに比べると,楽にはなります.
今回作るアプリは Python で Console で動く簡単なのを作っていて,ふと CocoaGUI をつけたらどうなるか? と思いつくって見たのがきっかけです.
PyObjCCocoa ベースのアプリを作れることは分かっていても,実際の作り方を解説しているページは少ないので,備忘を兼ねて書くことにする.

PyObjC で Cocoa アプリを作る

Motacilla2004-12-24

仕事の合間をみてちょっとづつ作ってようやく完成.MySQL の Process を見るソフト.Timer の使い方が少々難しかった.
やはり PyObjC は便利だと思う.Python の簡単な言語をそのまま使えるところがいい.
カッコイイアイコンが欲しいなぁ.画才がないのはつらい...
今度作り方を少しづつ書こうと思う(備忘のため).



Click Here!