Django10日目日記
= フォームのlabelにHTMLタグを入れてもエスケープされてしまうようだ。 投稿フォームにフォーマットの選択肢を書いて、詳しい説明は「?」アイコンを押すと説明にジャンプするようにしようと思ったのだけど…。
format = forms.ChoiceField(
widget=forms.RadioSelect(),
choices=(("text", _("text")), ("pre", _("pre"))),
label=_("Format") + ("<a href='/qa#format'>"
"
"))
デフォルトの見栄えで満足できない人は
テンプレートで好きなようにカスタマイズせよと言うことだろうか。
とりあえずレイアウトは本質ではないのでhelp_text扱いすることにした。
HTMLタグ書くの面倒だから。
= mod_pythonで動かした。ADMIN画面が白くなったので ADMIN_MEDIA_PREFIXを書き換えた。"/static/admin/"にしておいて site-packages\django\contrib\admin\mediaの中身をstatic/adminにコピー。 できたできた。
「User.objects.get(pk = 2) # guest」ってやってたのを 「User.objects.get(name = 'guest') 」にした
= transの中で'が使ってあると\でエスケープしてもダメっぽい。 {% trans 'It\'s' %}はダメということ。
日本語のサービスでアカウントを作って英語のメールが来ても アレだとおもったのでi18nでメールの本文も翻訳したけど、 そしたらメールヘッダがContent-Type: text/plain; charset="us-ascii"なせいでばけばけだ。
ウノウラボ Unoh Labs: Pythonでメールを送信したい人のためのサンプル集。 これに全部書いてあった。 僕はPython温泉でまず最初の方法を試してこけて、 帰ってきてから2番目のgmailの方法でうまく行ったけど日本語で化けて、 今日3番目のエンコーディング指定方法を読んで全部うまく行った。 っていうか最後までちゃんと読めということ<自分
= 一部の設定を、OSを見て自動的に切り換えるようにしたので、 手元のWindowsで開発した内容をWinSCP3でサーバに送るだけで更新できる。便利。
WindowsからFedora6+Apache+mod_pythonへの移行の際に問題になったことや変更の必要があったこと
- パス
- パーミッション (SQLiteだったのでデータベースファイルにapacheが書き込めないといけない、 だけではなく、ジャーナルファイルを同じフォルダに作ろうとするので 入っているフォルダも書き込み可能にする必要がある。)
- デフォルトエンコーディング(us-asciiになってたのでutf-8に変更)
= doukaku.orgは「どうかくおるぐ」と読ませるつもりだったのだけど、 ja.doukaku.orgは「じゃ、どう書く?おるぐ」なのかも。
= データベース周りは初めてなので、 どう書くのが美しいのか、そういう指針がよくわからない。 とりあえず、最初から高速化は考えずに、 計算結果を別のテーブルに保管するとかも考えずに、 毎回計算する設計にした方がいいらしい。
正規化されて、綺麗な設計の方が、後からいじりやすい。
そういう「実行速度度外視」の実装をしていると、 いつか「遅いから高速化したい」と思うだろうけど、 その時にいったいどこからチューニングしたらいいのか。
あ、そのためにdjango.db.connection.queriesでクエリーを見ると実行時間がセットで入っているのか。 今は0.0000って表示されている。
= Python Workshopの準備をしていて思ったんだけど、 Pythonのコードを貼り付けて解説するのに PowerPointは使いづらい。 なんでフォントがIDLEと同じCourierNewなのに、 バックスラッシュが円に変わったり、片方の引用符の形が変わったりするのかな。 そしてどうやってその勝手な変形を無効にするのかわからない。
= 添削道場、思ったより時間が余った。 これだったらもうちょっとじっくり説明してもよかったかもなぁ。 時間が足りなくなるかと思ったのだが…。
= Djangoハンズオンに潜り込んだ。
= Djangoのインストールされているフォルダを探す方法。
import django django.__file__なるほど。
= Textmate?横にツリーがあるのいいなぁ。
= ローカルとサーバで同じアプリを(デバッグのために)動かしていると、 間違えそうになる。 adminページの背景を変えるか…。
= PylonsとTurbogearsって統合するのか。
= 発表側だとなかなかゆっくり話を聞けないのが残念だなぁ。
= 発表したアレは 「まぁ最初のうちはPythonのコードばっかりになるだろうけど、しかたないかな」 とか思っていたのですけど、 予想を(いい方向に)裏切って現在のところ投稿数でRubyが一位です。 C、Scheme、Python、Javaと続く。
接続の時々切れるPHS接続で修正作業をするのは怖いので (気にしすぎ?) 修正は月曜日に会社でやろうと思っています。
タグの詳細を表示しようとするとこける件、 エンコードかなーとか言っていたけど違いました。
from django import db
db.reset_queries()
(中略)
print db.connection.queries[-1]['sql']
馬鹿すぎる!自分に開いた口がふさがらない!
やっぱり色々と修正すべきところがある。 バグつぶしが一段落付くまでは積極的な宣伝は避けておこうかな。
= テスト用の環境と本番環境と、両方のウェブアプリが同じ見栄えでは取り違える。 そこでテスト用の環境だけ背景色を変えたい。
テスト環境のスタイルシートだけ書き換える: 修正して本番環境と同期するときに一緒に同期してしまいそう。
GreaseMonkeyでテスト環境だけいじる: いまテスト環境がlocalhost:8000なので、 同じマシンで開発している別のものにまで影響しうる。
テスト環境用のスタイルシートを用意してウェブアプリ内で どっちのスタイルシートを使うか判断させる: いまテンプレートの中で「{{ MEDIA_URL }}/style.css」ってなってるところを 「{{ MEDIA_URL }}/{{ CSS_NAME }}」とかにするんだな。 これがよさそう。
問題点。 スタイルシート単位で切り換えているので、 テスト環境でスタイルシートのデバッグをするときには役に立たない。
= いまコメントのabsolute_urlはお題のURLに#でIDをつけたものになっているけども、 コメントにも詳細ページ作ろうかな。 レスが付いている場合にツリー表示されるような。 ツリー表示ってDjangoのテンプレートだけでできるかなぁ。
できるなぁ。 テンプレートのincludeで再帰呼び出しができるから、 素直に「コメントにレスがあったら、テンプレートxをインクルード」ってのを テンプレートxとして保存しておけばツリーになる。 と思う。 明日作る。
= ああっ、ひっそりアルファ版のつもりだったのに、 すでにはてぶ135userとかになってる! 直接聞いた人よりはるかに多いじゃん! Web2.0の時代、おそるべし。
って人気エントリに入ってるし! あらら、全然ひっそりじゃなくなってるな。 まぁいいか。
「超ヘタレの独学プログラム書きであることに引け目も感じていることだし、いっちょうここで鍛えられようかなあ。/と思ったらQ&Aに恐ろしげなことが書いてあったのでやっぱりやめとく。綺麗なコードなんてかけないし。」 というコメントが付いていたけども、どの辺が恐ろしげなんだろう。 恐ろしくないように書き換えたいので誰か教えてください。
= そうだ書き忘れてた。 懇親会のじゃんけん大会でPython CookbookとSPAMをもらいました。 関係者みなさま、どうもありがとうございます。
= フィードバックで「アルファ版にしても酷いので程度を疑う」と言われてしまったorz
Djangoの勉強を含めて150時間程度で作ったプロトタイプにクオリティを求められても…、 って思うのは甘えなんだろうなぁ。 たとえ作者が小規模なテストのつもりでも、 消費者から見ると他の公開されているサービスと同じで、 当然同じクオリティを求められるわけだ。
Jython本も、いっぱいバッシングされるんだろうなぁ。 もっと強くならなければいけないのか。
= 窓を閉めると暑いけど、 開けると外で大声でしゃべっててうるさい。
= そういえばJythonTシャツを作るときにはGIMPでパスを使ったのだけど、 いまだにバージョン1.2なのでかなり使いにくかった。 次に作るときはInkscapeの方がいいかもと思った。
= doukakuは一日50PVだったのが一日5000PVへ。 500PVくらいのぬるま湯が1ヶ月ほどあったらその間にメンテとかに慣れられてよかったかもなー。 でもまぁ、人気が出たということはいいことだから、 頑張っていこう。
GoogleAnalyticsによれば、6割がFirefox、3割がIE。 画面の解像度は1024x768が一番多くて3割。横幅でまとめると1280が4割。 それより小さい人は10位以内に入っていない。その他の4%以下。 僕のノートパソコンが1024x768なので、 これで見てきちんと見えるように作ればほぼOKだということか。
コードの行あたりの文字数が長すぎるとレイアウトが崩れる問題は、 やっぱり行あたりの文字列を制限することにしよう。 1280の人がプレビューして「これでよし」と思っても、 3割の1024の人にとっては見にくいわけだから。
もう注目エントリーからは外れたようなので、 これから落ち着いてくるんだろうと期待したい。
方向性がわからないという言及がいくつかあるみたい。 一応実用性重視なのだけどなぁ。伝わらないかぁ。 そして実用性はコードの長さや速度みたいに機械的に測定することはできないのだ。 あと、「いろんなやり方」を許容したいので、 あえて変態的なワンライナーを書くのもOKだとは思う。 そういういろいろな尺度で測るためにあのレーティング方法にしたんだがな。
あう… 投稿されたバッチファイルで削除する方法に プラスのレーティングをしようと思ったけど 「役に立つ」って評価項目がないなぁ。
= うー。 UTF-8でメールを送ってはいけないのか。 ISO-2022-JPに変えたらUnicodeDecodeErrorがでる、うーん、 本文ちゃんとISO-2022-JPにエンコードしたのに… と思ったらタイトルのエンコードし忘れでした爆
フィードバック
とありますが、
div.highlight pre { overflow: auto; }としてはどうでしょうか。これだけでも、結構見た目はおかしくならなくなるかと思います。