Login
  Days of Liris
   1 2 3 4 5    Next>

2008/05/08

Jythonの本,買った

Tag: python

また,コレクションが増えた。

ぱらぱらとめくると,「Javaのprivateなんて飾りです」と。ほほー。面白い。と言うか、ビミョーと言うか・・・,笑った。Javaのリフレクション何それ?とか,Javaのデバッガは魔法だと思っている人にとっては・・・。つまりは,Jythonはリフレクションを超簡単にするツールってことで,おk?

エーと,まじめな話としては,読んでいないので分りません。

それから,もう少しまじめな話としては,Sunがゴニョゴニョしているとしても,メンテナンスとか,開発スピードとか,安定性とか,いろいろ心配事があるので,会社のプロダクトにはまだ,組み込む気がしないのが本音。個人のプロジェクトでは,Javaは使わないでしょう。一年後は分りません。

プロダクト本体では使う気はしませんが,その周辺部分では何かできるかも。


2008/04/14

Google App EngineでPylons動いた

Tag: python

Google App EngineでPylonsが動くそうです。 もとねた

まずは、appengine-monkeyというお猿さんんが必要らしいです。多分、Virtual Envを使って必要なパッケージをインストールしたりいろいろしているんだと思います。で、とりあえずは、

$ cd tmp
$ svn checkout http://appengine-monkey.googlecode.com/svn/trunk/ appengine-monkey

で必要なLinuxにこけにされているSubversionからモジュールを落としてきます。あんまり変なものをインストールしたくないので、

$ cd appengine-monkey
$ python appengine-boot.py --paste-deploy myapp

として、テスト用のvirtual envを作ります。その次に必要なものをこのvirtual envにインストールします。

$ cd myapp
$ source bin/activate
$ easy_install Mako==dev Beaker Pylons

ちなみにMakoちゃんはtrunkじゃないとGoogle App Engineでは動かないらしいです。次に、自分のプロジェクトを作ります。

$ cd src
$ paster create --template=pylons MyApplication

プロジェクトができたらとりあえずインストールします。

$ cd my-app/src/MyApplication
$ python setup.py develop
$ python -m pth_relpath_fixup

さて、とりあえず、起動します。

$ cd ~/tmp/appengine-monkey
$ ln -s myapp/src/MyApplication/development.ini myapp/
$ dev_appserver.py

で、これで起動するはずですが、僕のところではたくさん「そんなモジュールなんかねーよ」とおこられました。おこられたら、言うことを聞いてvirtaul envの環境に一個ずつインストールしてあげましょう。

必要なモジュールがインストールできれば、とりあえず、動きます。

ちなみに、Pylonsはモデルが固定化されていない(ユーザが好き勝手にできる)ので、Googleさんとは相性は良さそう。


2008/04/11

Google App EngineのDataStore

Tag: dev python

Getting Startedの Using the Datastore を読んでいたら,なんだかGQLとか言うSQLもどきで書かないと行けなさそう。SQLObjectとか,SQLAlchemyとか,適当なO/R Mapperで堕落した僕には敷居が高いなー,と思っていたら, The Query Class にO/R Mapperっぽい書き方が書いてありましたとさ。ちょっと好きになれないAPIですが,まあ,なれの問題かもしれません。

で,うーん,何作ろう?


2008/03/17

なんだかずーっと忘れていることがあると思ったら・・・

Tag: python

合宿で見せたWeb Mail、公開するんだった。すっかり忘れていた。YouTubeで遊んでいる場合じゃなかった。

何気に日本語化してみたりした。Pylonsに限った話じゃないけど、日本語化するときはPythonとしてがんばるべきなのだろうか?DojoとかJavaScriptでがんばるべきなんだろうか?今回はPythonでやったけど・・・。

で、気分的には二つに分かれるのはいやなので、どちらかにしたい。みんなどうしているんだろう?

そろそろ、dovecot以外のIMAPサーバを動かし始めるかな・・・。


2008/03/08

IronPythonStudio

Tag: dev python

http://www.codeplex.com/IronPythonStudio

なるほど,あとで試す。


2008/03/07

pyHyperestaier 0.10.6 release

Tag: python

aodagさんに動かないとおこられて,0.10.6をリリースしました。

多分,大丈夫なはず。


2008/03/06

PyHyperestaier 0.10.5 release

Tag: python

とりあえず, PyHyperestaier 0.10.5 をリリースしました。

変更点はスニペットが消えることがあるバグの修正かな。


2008/02/21

Pylonsを使ってみる その5

Tag: python

そろそろこのシリーズも疲れてきたので,終るかもしれません。

urlとコントローラのパッチングはrouting.pyでやります。終わり。

で,次からはdojoで遊ぼう編です。でも,実はPylons以上に何やったか覚えていない・・・。


2008/02/08

Pylonsを使ってみる その4

Tag: python

その4はファイルのダウンロードです。だんだん力つきてきた。

静的なファイルは,Apacheなどの専用のhttpサーバにフィードさせるがベストです。奴らは静的なファイルのフィードには十分威力を発揮します。ただ,開発途中のものであれば,それは難しいのでmyproject/publicの下に静的なファイルをおいておけば勝手にフィードしてくれます。

Webアプリケーションでアップロードされたファイルもこのpublicフォルダにおいておいて,適切なリンクをはればユーザはダウンロード可能になります。

さて,ユーザ認証するシステムだと,どうすればいいでしょう?データベースの中にファイルがある場合は?Pylonsの正式なやり方は分かりませんが,paste.fileappモジュールの中のクラスを使えばできます。

from paste.fileapp import DataApp, FileApp

class HogeController(BaseController):
    
def download(self):
        
content = get_from_db()
        
mimetype = "image/jpg"
        
r = DataApp(
            
content_disposition='%s; filename="%s"' % ("inline", "iyan.jpg")),
            
content_type=mimetype,
            
content = content)

        
return r(request.environ, self.start_response)

ファイルの場合だと,FileAppを使えばもっと簡単にできます。基本的にはDataAppもwsgiアプリケーションの1つなので,コントローラからwsgiアプリケーションを呼んでいます。と言うことです。


2008/02/06

Pylonsを使ってみる その2

Tag: python

と言うことで,起動までできたのでコントローラを作っていきます。このシリーズはいつまで続くことやら。Pylonsでは,TurboGearsと違って1つのコントローラは1つのモジュール(ファイル)です。理由は後で。コントローラを作るのもpasterを使います。

$ paster controller hoge

という感じで作ります。コマンドを実行するとmyproject/controllerにhoge.pyがいます。hoge.pyの中にHogeContorollerとうクラスが勝手に定義されています。

さて,ブラウザからhttp://localhost:5000/hogeアクセスします。Hello, Worldと素っ気なく表示されます。素っ気ないので悲しいです。

URLとコントローラのマッチングはmyproject/config/routing.pyで行ないますが,それはまた今度。

で,ここまでできたので,controllerをいじって,例外を投げるようにします。indexのメソッドの中でraise Exception("debug from web")とかします。ブラウザでもう一度アクセスすると,Pylonsを有名にしたブラウザからのデバッグ画面が表示されます。めでたしめでたし。

turbogearsでもPylonsでも,最近は起動しっぱなしでコードを書いています。modelとかはコンパイルエラーがあったりすると落っこちちゃいますが,Pylonsはコントローラはリクエストがあったタイミングでロードされるので,プロセスが落っこちることは少ないです。で,最初の何で,1コントローラ1ファイルなのかと言うと,名前からコントローラのオブジェクトをインスタンスかするようになっています。TurboGearsは,基本的にはコントローラのオブジェクトを複数のスレッド,リクエストが共有するものですが,Pylonsはリクエストごとにオブジェクトを生成しています。まあ,それがいいのか悪いのかは分かりません。TurboGearsではコントローラに状態を持たせることができますが,Pylonsでは無理です。もっともコントローラに状態を持たせると言うこと自体,設計としてどうなのさ?と言うのはありますが・・・。


   1 2 3 4 5    Next>