list.py

iPhone いよいよ発売されましたね。私の利用方法が、主に自宅の Wi-Fi を想定したものだと考えると、 iPhone 16GB で 月額料金 \8720円(+通話料) は躊躇してしまいますね。
本体一括払いにすると、月額料金\5360(+通話料) になるようですが!
たぶん、iPod touch 32GB を購入することになると思います。ただし、iPod も 9月には一新される噂もあるので迷っています。

前回にも書いたように

を続けて読んでいます。574ページまで読みました。今月中には読み終わりそうです。

簡単なプログラムを作りたくなり、2ch 掲示板 ‘新・mac’ 板のスレッド一覧をダウンロードし、スレッドタイトル名でソートして表示するプログラムを作ってみました。

------------------[ list.py ]------------------
#!/usr/bin/env python
# coding: UTF-8
import httplib
import re
connection = httplib.HTTPConnection( 'pc11.2ch.net' )
connection.putrequest('GET', '/mac/subject.txt')
connection.putheader('User-Agent', 'Monazilla/1.00')
connection.endheaders()
connection.send('')
response = connection.getresponse()
print response.status, response.reason
data_shift = response.read()
connection.close()
data = data_shift.decode('shift-jis', 'ignore')
re_line = re.compile("(.*)<>(.*)\((\d+)\)")
subject = []
for line in data.splitlines():
match = re_line.match(line)
t = (match.group(1), match.group(2), int(match.group(3)))
subject.append(t)
subject.sort(lambda x,y: cmp(x[1], y[1]))
for f, t, d in subject:
print '%(f)s %(d)4d %(t)s' % {'f': f, 'd': d, 't': t}
------------------[ list.py ]------------------

利用しやすいように Zip で圧縮したものを以下のリンク先に置いておきます。

ダウンロードファイル list.zip
URL [ http://homepage.mac.com/yos_koyama/list.zip ]

実行結果

ターミナルの環境設定で下図の赤丸部分に注意してください。デフォルトの設定だと文字が汚い場合があります。
その場合は、ターミナルの環境設定を開き、テキストタブを選択し、’フォント’ を Monaco 11 pt. 、’ボールドフォントを使用’ のチェックを外してください。
次にウインドウタブを選択し、’ウインドウサイズ’ を 列 80、行 30 に設定してください。
気に入らない場合は、いろいろ試してみてください。ただし、文字コードUTF-8 以外だと正しく動作しません。


5行目
connection = httplib.HTTPConnection( 'pc11.2ch.net' )

の URL: pc11.2ch.net は変更になる可能性があるので注意してください。

変更された URL は、拙作 Search2chBBS [ http://kyoshiaki.sakura.ne.jp/osx/tiger.html#se201 ] か bbsmenu.html [ http://menu.2ch.net/bbsmenu.html ] から判断できます。

プログラムを作るためには、リファレンスが必要なので

Python Programming Language -- Official Website
http://www.python.org/

の DOCUMENTATION から Download Current Documentation をクリックし

Download Python 2.5.2 Documentation
http://www.python.org/doc/2.5.2/download/

から HTML 版の Zip ファイル [ html-2.5.2.zip ] をダウンロードしました。

Global Module の httplib、re の使用方法も、ダウンロードしたファイル html-2.5.2.zip を展開して作成されたドキュメントを参考にしました。正しい使用方法なのか、あまり自信はありません。

Python入門
http://www.pythonweb.jp/tutorial/index.html

も参考になると思います。

簡単なプログラムなので理解しやすいと思います。大ざっぱに言えば、ブラウザで

http://pc11.2ch.net/mac/subject.txt

にアクセスするのと同様な動作を行っています。

2ch の仕様については、拙作

2ch Script version 0.2 [ http://kyoshiaki.sakura.ne.jp/osx/tiger.html#2cs02 ]
2ch Script version 0.1 [ http://kyoshiaki.sakura.ne.jp/osx/tiger.html#2cs01 ]
Search2chBBS version 0.1 [ http://kyoshiaki.sakura.ne.jp/osx/tiger.html#se201 ]

の ReadMe やその中で紹介されている参考文献を参考にしてください。それほど複雑ではないと思います。

拙作、2ch Script version 0.2 [ http://kyoshiaki.sakura.ne.jp/osx/tiger.html#2cs02 ] は頻繁に利用しているので、暇があれば Python で書き直してみたいですね!(2ch Script version 0.2は、sh、curlruby で作成されています。)

Wordbook2

以前、何度か紹介した Mac OS X Leopard 上で動作する自作フリーウェア ( 登録した単語を問題として出題できる単語帳プログラム。)

Wordbook2 [ http://kyoshiaki.sakura.ne.jp/osx/leopard.html ]

を公開します。Spotlight、Quick Look にも対応しています。ソースも含まれています。

xshogi.app

Mac OS X Leopard 上でコンピュータと対戦できる将棋ソフト (X11ベースの アプリケーション xshogi をバンドルしたアプリケーション。)

xshogi.app [ http://kyoshiaki.sakura.ne.jp/osx/leopard.html ]

を公開します。

キーワード ‘mac 将棋’ で検索してくる人が結構多いので、需要があるかもしれないと思い作成しました。

話は変わりますが、以前は

GIMP.app
http://gimp-app.sourceforge.net/

からダウンロードした Gimp を利用していたのですが、Leopard には対応していないようです。

それで VMware 上に Ubuntu をインストールし、Ubuntu 上の Gimp を使用していました。 (VMware Tools をインストールすれば、ファイルのドラッグ・ドロップにも対応しています。)

最近、 Leopard に対応した Gimp.app を

Wilber loves Apple
http://www.wilber-loves-apple.org/
Download
http://www.wilber-loves-apple.org/pages/download.html

で見つけました。早速、インストールして利用しています。

ソースを

SourceForge.net: Wilber loves Apple
http://sourceforge.net/projects/darwingimp

の中央の ‘code’ タブをクリックして表示されている説明通りに、ターミナル上でコマンド

svn co https://darwingimp.svn.sourceforge.net/svnroot/darwingimp darwingimp

を使ってダウンロードしました。

GIMP.app
http://gimp-app.sourceforge.net/

で説明されているビルド方法と基本的に同じなので、 Leopard に対応した xshogi.app を作成してみました。

以前は gimp.app/Contents/Resources/script ファイル内でコマンド open-x11 を使って The X Window System を起動していたのですが、

今回は ScriptExec 内で起動しているようです。

プロジェクトファイル ScriptExec.xcodeproj の main.c

170行目
// compile "icon clicked" script so it's ready to execute
SimpleCompileAppleScript("tell application \"X11\" to activate");
507行目
static OSStatus CompileAppleScript(const void* text, long textLength,
AEDesc *resultData) {
533行目
/* runs the compiled applescript */
static void runScript()
{
/* run the script */
err = OSAExecute(theComponent, scriptID, kOSANullScript,
kOSAModeNull, &resultID);
return err;
}
543行目
/* Simple shortcut to the function that actually compiles the applescript. */
static OSStatus SimpleCompileAppleScript(const char* theScript) {

の 171 行目

"tell application \"X11\" to activate"

X11.app を起動するアップルスクリプトそのものだと思います。

xshogi.app も同じ仕組みです。