外部のSubversionレポジトリからソースを取得する
SVN レポジトリの公開: blog.bulknews.net
http://blog.bulknews.net/mt/archives/001790.html
レポジトリから、どうやって取ってくるんだろう?と思ったのと、GmailでBloglines ってのに興味があったので、ちょっとコードを閲覧させたもらう事にした。
続々 Gmail で Bloglines: blog.bulknews.net
http://blog.bulknews.net/mt/archives/001802.html
ちなみに、今入れているSubversion関連の環境は、
- Subversion 1.2.3
- TortoiseSVN 1.2.2
コマンドラインからコードをゲット
事例が書かれていたので、早速試す。
適当にフォルダを作って、svn コマンドを呼び出す。
F:\Wacky\Test\bulknews>svn co svn://svn.bulknews.net/public/bloglines2email/trun k bloglines2email A bloglines2email\Makefile.PL A bloglines2email\Changes A bloglines2email\bloglines2email A bloglines2email\MANIFEST.SKIP A bloglines2email\bloglines2email.conf.sample リビジョン 1651 をチェックアウトしました。 F:\Wacky\Test\bulknews>pwd /cygdrive/f/Wacky/Test/bulknews F:\Wacky\Test\bulknews>tree /F F:. └─bloglines2email bloglines2email bloglines2email.conf.sample Changes Makefile.PL MANIFEST.SKIP
あっけな。
TortoiseSVNからゲット
フォルダを選択し、右クリックメニューから「SVN Checkout」(「TortoiseSVN」→「Export」とすると、単にファイルだけ取ってくる)し、Checkoutダイアログの「URL of repository」に、以下を入力。
svn://svn.bulknews.net/public/bloglines2email/trunk
少し待たされた後(30秒くらいか?)、シャカシャカとファイルがゲットできる。
TortoiseSVNだと、「Repository Browser」を使う事で、ツリーの構造やログを見る事ができるので便利ですな。
フォト蔵
フォト蔵ってのを以下で知った。
SNS画像共有サイト「フォト蔵」が正式サービス、招待なしで登録可能に
http://internet.watch.impress.co.jp/cda/news/2005/09/08/9077.html
自分のブログに貼り付ける事ができる。とある。
って〜事は何ですかいな?
フォト蔵に画像を置いて、はてなダイアリーでサムネイルを持ってくる事が可能なのかいな?どっかにFAQないかな?
(「Powered by フォト蔵」とか付けてもいいから、OKだといいな)
まぁ、どんなものなんだろ?と思って、登録してみた。が、ログインできねぇ。
混んでいるのかしらん?まぁ、暫くして、またアクセスしてみるか。
追記 20:00
再度アクセスしたら入れた。ふむふむ。
XML-RPCでメッセージに日本語を通す方法
- サーバ側:SimpleXMLRPCServer.SimpleXMLRPCServer で、公開したい関数 or クラスを登録するだけ
- クライアント側:xmlrpclib.ServerProxy で、呼び出したい関数をコールするだけ
動かす際、Apacheとか何かと連携しないといけないのかと思ったら、全然そんな事なくて、単に書いて python hoge.py という風に呼び出すだけ。
DCOMやCORBAだと、色々 あれこれ しないといけないのに、「何これ?卑怯じゃん。漏れ、すっげー損してたよ!」って感じ。
で、早速遊んでいたら、string(文字列)引数に、日本語を突っ込んだら、エラーが発生する事に気付いた。
... File "/usr/lib/python2.4/xmlrpclib.py", line 1096, in __call__ return self.__send(self.__name, args) File "/usr/lib/python2.4/xmlrpclib.py", line 1383, in __request verbose=self.__verbose File "/usr/lib/python2.4/xmlrpclib.py", line 1137, in request headers xmlrpclib.ProtocolError: <ProtocolError for localhost:8000/RPC2: 500 Internal error>
さっそく ぐぐーる様に お伺いを立てるが、あまり言及する資料が無い。
メーリングリストで、自分と同じ現象で困っている人が居たくらい。
[Python-ml-jp 1497] xmlrpclibで日本語を扱うには?
http://www.python.jp/pipermail/python-ml-jp/2002-June/001494.html
Morf-hine : はてなダイアリーキーワード自動リンクAPI
http://www.zoili.net/203
う〜ん、あんまり日本語を通す要求って無いのかしらん?と思って、サーバとクライアントの両方をUTF-8にしたりして、トライ&エラーで、試してみた。
で、結局の所、
XML-RPCで日本語を通すには、UTF-8に変換して通す必要がある
という事がわかった。
という訳で、実証コードね。
server.py: # -*- encoding: euc_jp -*- import commands import sys import re import SimpleXMLRPCServer def test(msg): print type(msg), len(msg) if type(msg) is unicode: print msg.encode("euc_jp") else: print msg return 0 def main(): srv = SimpleXMLRPCServer.SimpleXMLRPCServer srv.register_introspection_functions( ) srv.register_function(test) print "listen" srv.serve_forever() if __name__ == "__main__": main()
client.py # -*- coding: euc_jp -*- import commands import sys import re import xmlrpclib def main(): print sys.stdout.encoding print sys.getfilesystemencoding() srv = xmlrpclib.ServerProxy("http://localhost:8000") print srv.system.listMethods() while True: c = raw_input(">") if c == "q": break s = unicode(c, "euc_jp", "ignore").encode("utf-8") print type(s), len(s) print srv.test(s) if __name__ == "__main__": main()
実行結果。(Python 2.4.1 for Cygwinでテスト)
クライアント側: $ python client.py US-ASCII US-ASCII ['system.listMethods', 'system.methodHelp', 'system.methodSignature', 'test'] >ほげ <type 'str'> 6 0 >hoge <type 'str'> 4 サーバ側: $ python server.py listen localhost - - [11/Sep/2005 12:20:38] "POST /RPC2 HTTP/1.0" 200 - <type 'unicode'> 2 ほげ localhost - - [11/Sep/2005 12:20:47] "POST /RPC2 HTTP/1.0" 200 - <type 'str'> 4 hoge localhost - - [11/Sep/2005 12:21:03] "POST /RPC2 HTTP/1.0" 200 -
当初、MLの内容から、コード自体をUTF-8で記述しないといけないのか?と思ってたんだが、そこまでする必要は無く、実際、検証コードも、EUCで記述している。
送受信時、ちと手間な変換作業が発生するが、まぁ 許容範囲でしょう。