• Read older messages (September 06, 2007)
  • 12:00am (September 07, 2007) 26x26にしお
  • Chain of responsibilityですよね。
  • 12:01am (September 07, 2007) 26x26whosaysni
  • 西尾さんのアイデアを形にするなら
  • from myproject.myapp import templates
  • templates.load('foo.html')
  • みたいなAPIがあればいいんじゃないかな。
  • あと、 from django.templates import global_templates
  • global_templates.load('template_name_with_fallback')
  • を提供する、くらいでどうでしょう
  • 12:02am (September 07, 2007) 26x26にしお
  • リスト自体を直接人間が管理するのがちょっと嫌な感じですけど、まぁこれはこれでいいかも。
  • テンプレートタグ的には、
  • 本来のロード順序で検索する{% include "app/hoge" %}の他に
  • 自分のそばを優先する{% use "hoge" %}があればすむ話ですね。
  • 12:03am (September 07, 2007) 26x26whosaysni
  • その設計は間違ってる。
  • どっちかというと {% include variable_points_template_name %} じゃない?
  • 12:04am (September 07, 2007) 26x26にしお
  • それはuseで書かれた場合にカスタマイズの可能性が奪われるからですか?
  • 12:05am (September 07, 2007) 26x26whosaysni
  • テンプレートエンジンにモデルをカップリングしてる。
  • (原理主義的だけどね)
  • 12:06am (September 07, 2007) 26x26にしお
  • 脱カップリングで思い出しましたが
  • 以前テンプレートでモデルのメソッドを呼ぶ際にuserを渡したいとか言って専用のtemplatetagを作ったのは
  • やはり失敗でした(苦笑
  • 12:07am (September 07, 2007) 26x26whosaysni
  • ところで、 {% use "hoge" %} の入ったテンプレート templ を app1 と app2 からロードしたら、 hoge は app1/.../hoge と app2/.../hoge のどっちを指すんだろう?
  • (templ が app1 に置いてあるとして。)
  • 12:09am (September 07, 2007) 26x26にしお
  • app1で。
  • 26x26whosaysni
  • app2 で app1 の hoge をオーバライドしたい場合は?
  • 12:10am (September 07, 2007) 26x26にしお
  • useを使うとオーバーライドはできなくなります。
  • 26x26whosaysni
  • app2 から app1 の hoge をロードしたい場合はどうなんだろう
  • 26x26にしお
  • それはfooパッケージ内にbar.pyがある場合に、foo/__init__.pyからimport barしたときと同じでしょう。
  • 12:11am (September 07, 2007) 26x26whosaysni
  • テンプレートファイルのある場所にひもづけられているわけだね
  • 26x26にしお
  • 別のパッケージbazからfooをインポートしてもfoo/bar.pyのかわりにbaz/bar.pyが使われるようにはならないし、そういう方法でのオーバーライドは変更箇所が分散してわかりにくくなります。
  • 12:12am (September 07, 2007) 26x26whosaysni
  • ok じゃ、 TEMPLATE_DIRS 上でオーバライドはできないわけだ。
  • 26x26にしお
  • テンプレートファイルは単体で働くものだけではなくて、密に関連づけられたいくつかのテンプレートが連携している場合もあると思います。
  • そうですね、結局のところそれがトレードオフになる見たいですね。
  • テンプレートのオーバーライドをしたいならば今の方法が現時点で最良の解決方法。
  • 12:13am (September 07, 2007) 26x26whosaysni
  • 結局のところ、ローダがグローバルに働くべきか、アプリやモデルに紐づけられるべきかで方向性が決まりそうだね
  • 12:14am (September 07, 2007) 26x26にしお
  • その代わり名前の解決に関しては「全ての変数がグローバル変数で、衝突しないように長い名前を使わざるを得ない言語」と同じ。
  • 26x26whosaysni
  • 同意。
  • 26x26にしお
  • まぁ、テンプレートがあんまりプログラミング言語的になってしまっても本末転倒ですし、
  • 完全修飾で書くのはそういうもんだと諦めるのが妥当みたいですね。
  • 12:15am (September 07, 2007) 26x26whosaysni
  • from myapp import templates; t = templates.loader.load('foo') が欲しくなってきた。ちょっとだけ。
  • 12:17am (September 07, 2007) 26x26にしお
  • 僕がカスタマイズするときは元のファイルを書き換えてしまうかなぁ…。
  • 26x26whosaysni
  • PythonとDjango template語を共生させようとするから、こんなキモイことが起こるんだろうな。
  • 12:18am (September 07, 2007) 26x26にしお
  • どのみちオーバーライドされるかどうかがTEMPLATE_DIRSで決まるのだったら、オーバーライド前とオーバーライド後を併存させることはできないわけで。
  • 12:19am (September 07, 2007) 26x26whosaysni
  • loaderから明示的にロードすればできるよ
  • 26x26にしお
  • ああ、なるほど…。
  • pateo has left
  • 12:20am (September 07, 2007) 26x26にしお
  • うーむ。それがわかりやすいカスタマイズの方法かどうかと言うと…。
  • 結局テンプレートといえど言語なわけですよね。
  • でプログラミング言語に慣れた僕とかから見ると「全部グローバル変数」とか気持ち悪く見えるけども、
  • 実際のところテンプレートにそこまでの「言語の力」は求められていないのでその辺は諦めた方が吉と。
  • 12:22am (September 07, 2007) 26x26whosaysni
  • phpの呪いが...
  • 26x26にしお
  • 概念的に理解しやすい「テンプレート言語」だからこそ非プログラマにも受け入れやすいわけですし…。
  • 26x26whosaysni
  • phpはあなたに触れた!あなたはのろくなった。
  • 26x26にしお
  • さようならレベル11
  • あなたはおろかになった気がした…
  • 12:24am (September 07, 2007) 26x26whosaysni
  • BBBBBBB@BBBBBBBBB
  • 常山 has left
  • 12:25am (September 07, 2007) 26x26にしお
  • ぎゃー
  • 26x26whosaysni
  • c - 祝福された虐殺の巻物
  • 26x26にしお
  • おおこおもりだー(ぇ
  • どのクラスを虐殺する? @
  • 12:26am (September 07, 2007) 26x26whosaysni
  • -- more --
  • 12:27am (September 07, 2007) 26x26everes
  • BBBBあたりからまったくわからん :'(
  • 12:29am (September 07, 2007) 26x26にしお
  • PHPはリッチ系のモンスターかと思ったけどじつはコカトリスでしたか?(ぉ
  • 26x26whosaysni
  • http://nethack.at.infoseek.co.jp/
  • 26x26にしお
  • トルネコみたいなゲームとかいうと逆だと怒られますw
  • 12:30am (September 07, 2007) 26x26whosaysni
  • そうだね。死にかけのぺちぱーを投げつけられるとたいてい人は身動きとれなくなるしね。
  • 26x26everes
  • へぇ
  • 12:31am (September 07, 2007) 26x26にしお
  • ちなみにクリアできていません(ぉ
  • 26x26whosaysni
  • (ぺちぱーは好みに応じてVBとかJavaとかにおきかえてもよい)
  • 26x26everes
  • http://nethack.at.infoseek.co.jp/image/nh.gif
  • すげー
  • 26x26にしお
  • http://www002.upp.so-net.ne.jp/zry/Recommended/SLC700/jnethack.png
  • 12:32am (September 07, 2007) 26x26whosaysni
  • tahkkllq
  • 26x26everes
  • 呪われていないっていちいち断ってるのが…
  • 26x26にしお
  • 道に落ちているものは呪われているかも知れません
  • 呪われていないことが確認できるまでは恐ろしくて…
  • 12:33am (September 07, 2007) 26x26whosaysni
  • dA@sacrifice
  • 26x26everes
  • ウィザードリ的…
  • 26x26whosaysni
  • #dip
  • 26x26にしお
  • #dip
  • おもしろい…
  • ウィザードリーは名前はよく聞くけど遊んだことありません
  • 12:34am (September 07, 2007) 26x26everes
  • 1は面白かったなぁ。
  • 12:35am (September 07, 2007) 26x26whosaysni
  • http://www.success-corp.co.jp/keitai/vodafone/wizardry01/index.shtml
  • 26x26にしお
  • ちなみにnethackは今なら教養のサーバにログインして人のプレイを見たり人の死体をあさったりできますw
  • 12:36am (September 07, 2007) 26x26everes
  • ウィザードリは、携帯じゃレスポンス悪くてだめだろうなぁ。残念ながら
  • 26x26whosaysni
  • えええ?今の携帯ファミコンよりはるかに高性能でしょ
  • 26x26everes
  • 15秒くらいで最後のボスまで行けるスピード感が欲しいなぁ
  • 12:37am (September 07, 2007) 26x26whosaysni
  • # つちのなかにいる!
  • 26x26everes
  • あのセーブのスピード感も欲しいなぁ
  • リセット間に合わないのorz
  • 12:38am (September 07, 2007) 26x26whosaysni
  • 昔は公開nethackサーバがあったんだけど
  • もうないかなぁ
  • 12:39am (September 07, 2007) 26x26にしお
  • ウィザードリィは僕と同い年
  • 26x26everes
  • もうおどろかないもーん
  • あぁ、いかん。6時におきられない。
  • everes has left
  • 12:44am (September 07, 2007) 26x26にしお
  • >地下4階からエレベーターで地下9階まで直接行けるし
  • その発想はなかった
  • ダンジョンにエレベータって。
  • 12:46am (September 07, 2007) 26x26whosaysni
  • telnet nethack.alt.org
  • 最初の反応がすげーーーーーーーーーー遅い
  • 12:47am (September 07, 2007) 26x26にしお
  • 入った
  • 他人みるの面白いなぁ
  • これをうまいこと自動化できないかと考えたんですけど、
  • この画面データをどうやって取得したらいいかがわからなくて頓挫しました。
  • tokibito has left
  • 12:49am (September 07, 2007) 26x26whosaysni
  • 端末エミュレータを自分で書けばいいんじゃないかな
  • あとはnethackをpopenして読書きすればいい。
  • http://www.fzort.org/bi/sw/vt100-js/
  • けっこうCOMET向きの課題?
  • 12:52am (September 07, 2007) 26x26にしお
  • nethackをpopenしたんですけど
  • それじゃダメなんですよ
  • 端末エミュレータを書くのはどれくらい大変なんだろう…
  • 12:54am (September 07, 2007) 26x26whosaysni
  • 端末タイプをセットしないとだめかな
  • 12:57am (September 07, 2007) 26x26にしお
  • 端末のことは全然詳しくないのですけど、
  • nethackの画面出力は標準出力を使っているのではなくて
  • 画面に対して直接書き込んでるんだと思います。
  • 12:59am (September 07, 2007) 26x26whosaysni
  • http://www.python.jp/doc/2.4/lib/module-pty.html
  • かな?
  • 1:01am (September 07, 2007) 26x26にしお
  • それ説明を読んでもさっぱり使い方がわかりませんでした
  • そろそろ寝ます…
  • 26x26whosaysni
  • pty.spawn(('nethack', ), redirect_socket_read, redirect_socket_write)
  • かな。
  • 風呂入って寝よ。
  • 1:03am (September 07, 2007) 26x26にしお
  • JSのエミュレータが600行ちょいなのならPythonで実装するのも500行くらいでできそう
  • 26x26whosaysni
  • jsに突っ込むバイト列を
  • http経由で送ればいいんじゃないかなぁ
  • http://slashdot.jp/articles/07/05/31/158257.shtml
  • 惜しい。
  • http://ttyshare.com/play/nethack
  • かなり惜しい。
  • にしお has left
  • whosaysni has left
  • ji- has joined
  • 3:39am (September 07, 2007) 26x26ji-
  • konnnitiha
  • ji- has left
  • にしお has joined
  • 常山 has joined
  • にしお has left
  • 3:25pm (September 07, 2007) 26x26常山
  • ni!
  • Komodo going open source