Archive@2007/06

vimのprojectを導入してみました

vim project http://www.vim.org/scripts/script.php?script_id=69 vimにディレクトリの一覧を表示するやつです。 あんまり見つからなかったのでインストール方法(MacOSX)でもメモっておきます。
  1. ↑のURLからダウンロードして解凍。
  2. 中身を~/.vim/に移動
  3. viを起動して、:Projectというコマンドを実行。画面の左にプロジェクトウィンドウが表示。
  4. プロジェクトウィンドウで¥Cとタイプ(ノーマルモード時)。ウィザードが開始
  5. 言われるがままに入力するとディレクトリの一覧が表示されます。
手動でプロジェクトファイルを作成することもできますが、¥Cを使うと簡単です。 ちなみに¥cでも同じことをしますが、サブディレクトリを検索しません。 ¥Cを使ったときにウィザードで聞かれる内容です。
Enter the Name of the Entry: プロジェクトの名前 Enter the Directory to Load: プロジェクトのディレクトリ Enter the CD parameter: ファイルを開いたときなどにそのディレクトリへCDします Enter the File Filter: *.py *.htmlなど拡張子を指定しておくとそれらのみ一覧に表示します。
新しいファイルを作成したときなどは、¥Rを実行するとプロジェクトをリフレッシュします。 これも¥Cと同様¥rと小文字にするとサブディレクトリはリフレッシュしません。 多分そんな感じです。他にもいろいろ出来そうですが、とりあえずこんだけ。
Posted at: 
2007/06/24 15:22:32
0 Comments
0 TrackBacks
Tags: 
Trackback: 
http://blog.monospace.jp/2007/06/24/vim_project/trackback/

ちょっとテスト

なんかブログシステムが不調なのでテスト。 そろそろうちもDjango製にしたいな。 [追記] うはー、原因判明。 ベンチマークとってるときにmod_rewrite切ってたorz 最近このブログのPVが2とか3だからおかしいと思ってたんだけどw
Posted at: 
2007/06/19 18:21:47
0 Comments
0 TrackBacks
Tags: 
Trackback: 
http://blog.monospace.jp/2007/06/19/testtesttest/trackback/

nginxとかApacheとかlighttpdとか

ベンチマークが好きなのでちょっと試してみました。 試したのは、Djangoでできているmonologistaのトップページ。 Apacheのabで-n100 -c10しました。何度かやって一番速そうな結果です。 Apacheはpreforkでmod_pythonです。 Apache
Server Software: Apache/2.0.55 Server Hostname: labs.monospace.jp Server Port: 80 Document Path: /monologista/ Document Length: 13829 bytes Concurrency Level: 10 Time taken for tests: 22.896289 seconds Complete requests: 100 Failed requests: 0 Write errors: 0 Total transferred: 1404800 bytes HTML transferred: 1382900 bytes Requests per second: 4.37 [#/sec] (mean) Time per request: 2289.629 [ms] (mean) Time per request: 228.963 [ms] (mean, across all concurrent requests) Transfer rate: 59.88 [Kbytes/sec] received
lighttpd
Server Software: lighttpd/1.4.13 Server Hostname: localhost Server Port: 8080 Document Path: /monologista/ Document Length: 13829 bytes Concurrency Level: 10 Time taken for tests: 16.404260 seconds Complete requests: 100 Failed requests: 0 Write errors: 0 Total transferred: 1398438 bytes HTML transferred: 1382900 bytes Requests per second: 6.10 [#/sec] (mean) Time per request: 1640.426 [ms] (mean) Time per request: 164.043 [ms] (mean, across all concurrent requests) Transfer rate: 83.21 [Kbytes/sec] received
nginx(設定はeveresさんがブックマークしてたここ
Server Software: nginx/0.5.25 Server Hostname: localhost Server Port: 8080 Document Path: /monologista/ Document Length: 13829 bytes Concurrency Level: 10 Time taken for tests: 16.389358 seconds Complete requests: 100 Failed requests: 0 Write errors: 0 Total transferred: 1398000 bytes HTML transferred: 1382900 bytes Requests per second: 6.10 [#/sec] (mean) Time per request: 1638.936 [ms] (mean) Time per request: 163.894 [ms] (mean, across all concurrent requests) Transfer rate: 83.29 [Kbytes/sec] received
mod_pythonが一番遅いというおそろしい結果になりました。 マシンがCeleron1GHzで512MBのRAMというほぼ死にかけのマシンのせいかな。 LinuxでUbuntuのEdgyです。lighttpdとApacheはapt-getでいれて特にチューンしてません。 Apacheはphpとかcgiとかmod_python以外のモジュール全部オフにしても一緒でした。 もうちょいまともなサーバでリベンジします。わたくしApacheファン。 ちなみに静的なファイルの場合。ab -n1000 -c100です。 これが4倍速いってやつですか。
Apache(モジュールオフ前は680[#/sec]くらいでした) Requests per second: 770.08 [#/sec] (mean) lighty Requests per second: 2400.60 [#/sec] (mean) nginx Requests per second: 2736.95 [#/sec] (mean)
Posted at: 
2007/06/15 02:02:49
0 Comments
0 TrackBacks
Tags: 
Trackback: 
http://blog.monospace.jp/2007/06/15/django_apache_lighty_nginx/trackback/

ポストauto_now時代のModels.py

[python]created_at = models.DateTimeField(auto_now_add=True) modified_at = models.DateTimeField(auto_now=True)[/python] ↓ [python]import datetime created_at = models.DateTimeField() modified_at = models.DateTimeField(default=datetime.datetime.now()) def save(self): self.modified_at = datetime.datetime.now() super(モデル名, self).save()[/python] 結局こういう感じで書けばいいですかね。 はっきりこうしろっていうのが見当たらなかった(そんなに探してない)ので公開メモしときます。
Posted at: 
2007/06/08 19:54:30
0 Comments
0 TrackBacks
Tags: 
Trackback: 
http://blog.monospace.jp/2007/06/08/post_auto_now/trackback/

今更ですがnewforms入門しました

Modelだとmaxlengthなのに、Formだとmax_lengthなのか。 RadioボタンのWidgetはないんかな。 まあその辺は比較的どうでもいいんですが、マニュアルに目を通した感じでは、 随分前に0.95のoldformsで苦労したことが、すんなりできそうだなあと思いました。 そろそろViewを書こうかと思います。 DjangoSnippetsは楽しいですね。 あと、どうでもいいんですけど、.orgって打とうとすると.orzって打ってしまいます。
Posted at: 
2007/06/08 17:38:44
0 Comments
0 TrackBacks
Tags: 
Trackback: 
http://blog.monospace.jp/2007/06/08/django_newforms_intro/trackback/

Djangoの管理画面テーマ配布についての問題

テンプレート上でのMEDIA_URL呼び出しについて [django] 静的ファイル配信と MEDIA_URL のあれ [django-ja:373] MEDIA_ROOTについて この辺の事情が絡んでくるんかなあとちょっと思いました。 管理画面の場合、htmlはadminってフォルダ作って置いておくと、 デフォルトのhtmlではなくて、自家製のadminフォルダを優先してくれますよね。 でも、adminのメディアファイルってADMIN_MEDIA_PREFIXで指定した場所からしか 読み込んでくれないっぽくて、MEDIA_URLの方に置かないとだめですね。 メディアファイルをadminのメディアも含めてDjango以外で配信することを前提にするのもあれだし。 WordPress並に特定のフォルダにアップロードするだけで使えたらいいんだけど、 環境によってMEDIA_URLが違うことを考えると修正なし(html内のCSSのパスとかimgのパス) でっていうのが難しいなあ。{{ MEDIA_URL }}が常にとれたらいいんだけど。 まあフレームワークとしての機能とまったく関係ないんで、そんなこと気にして作らないですよねw
Posted at: 
2007/06/08 17:17:16
0 Comments
0 TrackBacks
Tags: 
Trackback: 
http://blog.monospace.jp/2007/06/08/django_admin_theme2/trackback/

Djangoの管理画面のテーマ配布とか流行らないかなあ

無駄にカラフルなDjangoの管理画面の入り口 なんとなく仕事の区切りがついたので、ちょっと息抜きにデザイン作業でもしてみました。 MovableTypeとかWordPressのテーマみたいな感じでDjangoの管理画面のテーマを 配布するような流れはないんかな、とふと思いました。 んで、うちのラボのDjangoの管理画面のログインページを変更してみました。 無駄にカラフルで、ロードするたびに色変わります。ちょっとやってみたかっただけ・・・。 オレンジ ブルー ブラック あと2色あるんですけどね。
Posted at: 
2007/06/07 02:44:42
0 Comments
0 TrackBacks
Tags: 
Trackback: 
http://blog.monospace.jp/2007/06/07/django_admin_theme/trackback/

Djangoのコマンドオプションをbashで補完

extras/django_bash_completion # To install this, point to this file from your .bash_profile, like so: # # . ~/path/to/django_bash_completion
実はこんなのあったんですね。 マニュアルにも書いてありますねorz いつもsyncdbが打ちにくいとか文句いっててごめんなさい。 [追記:6/8] technolizeさんがzsh版を作ってくれたみたいです。 http://d.hatena.ne.jp/technolize/20070607#1181193568
Posted at: 
2007/06/06 20:53:02
0 Comments
0 TrackBacks
Tags: 
Trackback: 
http://blog.monospace.jp/2007/06/06/django_bash_completion/trackback/

Google Gearsは面白そうだけど

対応したら面白いコンテンツを作るのが大変だなあ。 とりあえず、お客さんのマシンにインストールしておいてサーバ落ちてませんって いうのに使えるソフトですよね。 ちょっとなんか作ってみたくなった。 確かに、Remember the milkとかTODO管理アプリには最適な感じしますね。
Posted at: 
2007/06/06 19:02:30
0 Comments
0 TrackBacks
Tags: 
Trackback: 
http://blog.monospace.jp/2007/06/06/google_gears_intro/trackback/

Djangoの(フリーじゃない)コメント機能を使ってみた

前回は、monologistaをフリーコメント機能で誰でもコメントできるようにしてみたわけですが、今回、ログイン済みユーザのみがコメントできる機能に変更しました。 変更はいたって簡単でした。 基本的にはフリーコメントと同じです。名前が若干違います。 まず、コメントリストを取得する部分。 {% get_free_comment_list for monologista.post object.id as comment_list %} ↓ {% get_comment_list for monologista.post object.id as comment_list %} freeをとるだけです。 次に、コメントフォームを表示する箇所。 {% free_comment_form for monologista.post object.id %} ↓ {% comment_form for monologista.post object.id with ratings_optional scale:1-5|この独り言の評価 %} これもfreeとるだけ。with以降はオプションなんでいらないんですが、 せっかくなので、レートをつける機能をつけてみました。レートは8個までつけれそうです。 他のオプションは、is_publicで公開・非公開設定したり、画像をいれたりもできるっぽいです。 あと、ソースを見る限り、コメントのタイトルもつけれそうですね。使わんけど。 次は、プレビュー部分。 フリーコメントの場合は、free_preview.htmlっていうテンプレートを使ってましたが、 今回は、preview.htmlというテンプレートを使います。これもfreeとっただけ。 中身はfree_preview.htmlとほとんど変わりません。他の部分は、 django.contrib.comments.templates.commentsの中にあるform.htmlを参考にしました。 最後に、コメント数をカウントしている部分。 {% get_free_comment_count for monologista.post p.id as comment_count %} ↓ {% get_comment_count for monologista.post p.id as comment_count %} やっぱりfreeとるだけです。 monologista こちらに実装済みですので、興味があったら試してみてください。 ユーザ登録しないといけないんでめんどいかもしれないですけど。 ちなみに登録時のメルアドは、現状うそでも通りますw そのままではできなさそうなのは、 公開、非公開をコメントごとに設定するのができないかなー。 削除、編集ができないって書こうと思って、コメントのurls/comments.py見たら 削除はできそうですね。ちょっとまだ奥が深そうなんでもうちょい調べてみよっと。
Posted at: 
2007/06/06 03:38:58
0 Comments
0 TrackBacks
Tags: 
Trackback: 
http://blog.monospace.jp/2007/06/06/django_usercomment_function/trackback/