2006-01-01から1年間の記事一覧
【続報】東証が次世代開発ベンダーを富士通にした理由 http://itpro.nikkeibp.co.jp/article/NEWS/20061220/257456/ベンダーを選定するプロセスや根拠付けの話が書いてある。これだけの巨大プロジェクトだから念には念を入れてベンダーを選定するのは当然な…
来年の頭の実施を目標に、動き始めました。ってわたしは見てるだけー、なんですけど。興味がある人はTRIVIAL TECHNOLOGIESへどうぞ↓http://coreblog.org/ats/turgogears-workshop-questionaire
とても普通に考えて、Content-Type を書き換えてあげればよいはず。 @expose(template="nkm.templates.entry") def entry(self): response.headers['Content-Type'] = "text/xml;charset=UTF-8" return dict(wdg=EntryFormDesc()) ところがこれではダメでし…
TurboGearsとMochiKitを使っています。 WidgetsのRemoteFormを使ってフォームを非同期に送信します(とても普通のこと)。 Deferred.addCalback()を使ってその結果を受け取ります(とても普通のこと)。 結果のresponseTextを取り出します(とても普通のこと)。 e…
フレームワークと呼ばれるプログラムは、逆に「仕事のしかた」を規定することが多い。Ruby on Railsなどは最たるもので、これこれのシステムを作るならば、これこれの作業をしてプログラムを書けばいいですよ、ということがかなり決まっている(アーキテクチ…
「ソフトウェア治具」という言葉をわたしが発明したわけではないのだけど、あえてこの言葉に定義を与えたいと思う。たぶん、他で使っているのとは違う意味になってしまうが、それはそれ。最近ではオープンソースのツール、ライブラリ、フレームワークといっ…
http://www.wind.sannet.ne.jp/masa-t/index.htmlあとで読む。
id:yach:20061101 に書いたことの発展です。 目的 個人情報を極力使わずに、イベント申し込みと受付をおこなう。 動機 イベントを実施するとき、申し込み手続きが必要になる。申し込みには個人情報を取得するが、個人情報管理、社内手続きのコストがかかり、…
セミナー資料作成でちょっと必要になったので、調べてみた。いや、きっと世の中にはそういうツールがいっぱいありそうな気がしたんだけど、簡単にできそうなのでやってみた。Hibernateのソースから、Hibernateのパッケージ(だけ)のあいだの依存関係を、impor…
@expose() def foo(self): ... if s==1: template = '.templates.success' else: template = '.templates.failure' return dict(tg_template=template,....) @expose(template="templates.ok") def foo(self): if (not s): return(tg_template="templates.no…
http://turboentity.ematia.de/ "I suggest you to take TurboEntity a try. TurboEntity is build upon SA and provide SO's simplicity. It's pretty cool to save lots of coding effort of plain SA."
オブジェクト倶楽部秋のイベントが、11/17(金)の夜にあります。実はもう申し込みを締め切ってしまったのですが、明日2日(木)の正午から、追加で10名だけ追加申し込みを受け付けることになりました。今回、100人弱しか入れない場所しか用意できず、とても残念…
昨日第1回がありました。参加者は5名。 http://qwik.jp/minpyshakyo/5.htmlPython初心者も多くて、なかなかいい感じです。本自体が、「Python入門」のみならず「プログラミング入門」に近いのも、幸いしてるかな。第2回以降からの参加も歓迎です。次回は10/…
MLより http://trac.turbogears.org/turbogears/wiki/UsingModelsOutsideTurboGearsmodel.pyに書いてあるモデルをTurboGears以外から使うには、以下のようなスクリプトを書く。 import turbogears turbogears.update_config(configfile="dev.cfg", modulenam…
だいぶ前に書いたのを発掘したので、メモとして残しておきます。アーキテクチャの定義にはいろいろあるが、だいたいにおいて「できあがった姿」を云々するものである、という点においては共通していると思う。いっぽう、開発プロセスという言葉だっていろん…
個人的な問題かもしれないが、TDDで作っているときに違和感を感じることがある。作りたいもののイメージが最初から明確な場合は、テストをどんどん書いてどんどん実装してゴールに着実に近づいていける。これは問題ない。なにかちょっとしたアイデアがあって…
Or maybe you can use $ easy_install -m TurboGears to remove old version, and use $ easy_install -U TurboGears to force install new version
というわけで3日間Python漬けになってきました。わりと黙々とプログラミングしている時間が多かったです。もっと他の人としゃべればよかったかも。 Webアプリスプリント Webチャットは、いちおう非同期で(ポーリングせずに)動くようになったものの、再接続し…
...というわけで、チャットならば「やっぱリアルタイムだよね。ポーリングしたくないし」、サーバーとクライアントのコネクションをはりっぱにする方法を前もって見つけておこうと思って、調べていました。結論を言うととても簡単で、1. CherryPyの stream_r…
明日から富士でおこなわれるPython DevCamp 2006に行ってきます。泊りがけでコーディング(+ドキュメント)ざんまいということで、とても楽しみ。http://nagosui.org/Nagosui/Misc/temporary-items/events/devcamp2006sここで、いくつかトラックと言うかコー…
SYNOPSIS ソフトウェアの変更は、そのソフトウェアに関わる人間の活動によって発生する。人間の活動には周期があり、その周期によって発生する変更の内容も変わってくる。変更は種類に応じて周波数を持つことになるので、その周波数をソフトウェアの設計で考…
MLからの引用。 I would like to run my TG application behind Apache httpd. In order to do this I'm trying to use the following rewrite rule: RewriteRule ^/myapp(.*) http://127.0.0.1:8080$1 [P] In your dev.cfg or prod.cfg, put: server.webpat…
formencode/compound.py に、AnyとAllというバリデータークラスが定義されています。これを使うと、複数のバリデーションの組み合わせが実現できる、みたいです。ちゃんと確認してないけど。http://formencode.org/module-formencode.compound.html >>> from…
これらのクラスはすべてFancyValidatorクラスを継承しています。これは formencode/api.py にあるクラスで、基本的なバリデーション機能を提供してます。FancyValidatorおよびそのサブクラスは、初期化時に引数を与えるとバリデーションの挙動(主に値が空の…
Widgetには、バリデーションが設定できます。こんな感じ。 class EditUserWidgets(widgets.WidgetsList): user_name = widgets.TextField(name="user_name", label=u"ログイン名", validator=validators.NotEmpty()) display_name = widgets.TextField(name=…
TurboGearsがついに1.0ベータになりました。Preview扱いだったのが、本体のほうで1.0ベータが配布されています。http://www.turbogears.org/で、1.0ベータとはなんの関係もないのだけど、MLで発見して「おおー!」と感動したのでメモ。app.cfgdev.cfg に tg.…
さて、この仕組みはどうやって実現されているかというと、turbogears/widgets/forms.py の CompoundInputWidget.params_for(self, item, **params)で実装されている。このメソッド自体はTableFormのテンプレートから呼び出される。こんな感じになっている(抜…
WidgetsのTableFormは、複数のWidgetを詰め込んでフォームにできる。詰め込むのはもちろんINPUT要素になるようなWidgetで、たとえば以下のように書ける。(書いてる本からの抜粋) from turbogears import widgets class EditUserWidgets(widgets.WidgetsList)…
はやっ。バグフィックスだけみたいです。あとKidのバージョンアップ。http://www.turbogears.org/preview/about/changelog.html
time.strptime(string, format)を使う。 http://www.python.jp/doc/release/lib/module-time.htmlstrftimeはdatetimeモジュールの各クラスにあるのだけど、strptimeはtimeモジュールにしかないので注意。 日付のパースは、こんな感じが楽かしら。 y,m,d,_,_,…