Archive@2007/09
monologistaっていうのは、うちの会社のラボという扱いで、
個人的にDjangoで作ってるTwitterパクリサイトなんですが、(今のところただの作りかけです)
ふと存在を思い出して、Twitterに同時投稿できるようにしてみようと思ったわけです。
そしたら、便利なPythonライブラリで、
Python Twitterってそのまんまの名前のものがありました。
これを使ったらほんとに簡単に実装できたわけですが、これを本サーバにアップして使ってみたら
なんか↓のような嫌なエラーはいてます。(マックのローカルで動かしてる時は大丈夫でした)
OSError at /monologista/post/ [Errno 25] Inappropriate ioctl for device
OSErrorっていうんだから多分DjangoもPythonも関係ないんだろうけど、
google先生で調べてもさっぱり原因わかりませんでした。
エラー箇所は特定できてて、
[python]import twitter
api = twitter.Api() #ここでだめ[/python]
ちなみに、Apacheが関係あるのかとおもって、先日入れたCherokkeで動かしてもだめ。
Django通さずに、Pythonのシェルから実行すると問題なし。
でもDjangoだとだめというわけでもなく、Django付属の開発サーバで動かすと動くんです。
とまあお手上げ状態なので、一度ライブラリ使わずにTwitterのAPIをいじってみようかな。
- Posted at:
- 2007/09/29 01:49:46
- 0 Comments
- 0 TrackBacks
- Tags:
- Trackback:
- http://blog.monospace.jp/2007/09/29/problem_with_twitter_python/trackback/
どうやら、先日サーバにPHPのAPCを入れたりしたときにhtaccessを消してしまっていたようです。
htaccessにrewriteルールが書いてあったので、パーマリンクが全部NOT FOUNDでしたorz
というのに今気づきました。
というかAPC入れたらWordPressがおかしくなるんですが、それはわたくしだけでしょうか。
まあいれるのやめたらいいんだけど。
- Posted at:
- 2007/09/27 18:26:52
- 0 Comments
- 0 TrackBacks
- Tags:
- Trackback:
- http://blog.monospace.jp/2007/09/27/blog_out_of_order/trackback/
とりあえずやってみました。
Ubuntu Edgy on intel Celeron 1GHz(512MB RAM)自作マシン
ベンチマークは、ab -n1000 -c10でとってます。
ちなみに、ベンチマーク対象 →
http://labs.monospace.jp/monologista/
Apache+mod_python
[code]
Server Software: Apache/2.0.55
Time taken for tests: 163.932477 seconds
Requests per second: 6.10 [#/sec] (mean)
Time per request: 1639.325 [ms] (mean)
Time per request: 163.932 [ms] (mean, across all concurrent requests)
Transfer rate: 81.70 [Kbytes/sec] received
[/code]
Cherokee+SCGI
[code]
Server Software: Cherokee/0.5.5
Time taken for tests: 129.328832 seconds
Requests per second: 7.73 [#/sec] (mean)
Time per request: 1293.288 [ms] (mean)
Time per request: 129.329 [ms] (mean, across all concurrent requests)
Transfer rate: 103.76 [Kbytes/sec] received[/code]
何度かやりましたが、だいたいこんな感じ。
- Posted at:
- 2007/09/25 00:16:35
- 0 Comments
- 0 TrackBacks
- Tags:
- Trackback:
- http://blog.monospace.jp/2007/09/25/django_bench/trackback/
ちょっと遅くなりましたが、
Voluntasさんが書いてくれたので試してみました。
とりあえずインストール。
Ubuntu Edgyでは、apt-get install cherokeeで0.5.5が入りました。
ついでにflupもapt-get install python-flupでインストール完了。
設定ファイルでなぜか苦戦しました。素直に写すのが一番です。
とりあえずこれだけ書いてあれば動きました。
[code]
#/etc/cherokee/sites-available/default
Directory / {
Handler scgi {
Server localhost:8000 #scgiが動いてるとこ
}
}
Directory /site_media/ {
Handler common
}
Directory /media/ {
Handler common
}
[/code]
あと、起動するときに、manage.pyのrunfcgiだとなんかだめでした。
↓ここにかいてある、django-scgi.pyを使ったら起動しました。
Django with Cherokee and SCGI
http://www.rkblog.rk.edu.pl/w/p/django-and-cherokee-server/
プロジェクト直下で、
[code]
python django-scgi.py --projects=`pwd` --settings=settings --host=localhost --port=8000 --daemon
[/code]
さてと、ベンチマークでもとりますか。
- Posted at:
- 2007/09/24 19:21:08
- 0 Comments
- 0 TrackBacks
- Tags:
- Trackback:
- http://blog.monospace.jp/2007/09/24/django_cherokee_scgi/trackback/
ちょっと前にDjangoのネタとしてTwitterっぽいサイトを作ってましたが、
実はほとんどつかったことなかったです。すみません。
最近は、なるべく外部に露出していこうというテーマで生きてますので、
Twitterなんかをはじめて見ました。あとはiddyとかaboutmeとかもやってます。
followして頂けるとうれしいです。
http://twitter.com/pateo/
そろそろ我が社も自社サービスを・・・
- Posted at:
- 2007/09/08 03:34:27
- 0 Comments
- 0 TrackBacks
- Tags:
- Trackback:
- http://blog.monospace.jp/2007/09/08/please_follow_my_twitter/trackback/
今日の
django-jaでちょっとまぎらわしいことを書いてしまったので、まとめです。
Unicodeブランチがマージ後の開発版を使って、
日時の表示をしているようなページを開くとX-MAC-JAPANESEなんたらってエラーが発生します。
(DateTimeFieldのあるmodelをadminで表示するとなるっぽいです。)
この問題は、django.utils.tzinfo.pyが問題のようで一部変更したら解決するようです。
ちなみに、これはMacでしかおこらない問題です。
で、自分が解決しなかったと思ったのは、X-MAC-JAPANESEとは別の話で
contrib.commentsがUnicode対応してない(?)ための問題でした。
コメント欄や名前欄に日本語を書くとUnicodeEncodeErrorが発生します。
仕方ないので、今は0.96を使って開発中です。
「お客様の中に開発版のdjangoでブログのコメント欄にcontrib.commentsを使っている方いらっしゃいませんか?」
- Posted at:
- 2007/09/08 02:13:42
- 0 Comments
- 0 TrackBacks
- Tags:
- Trackback:
- http://blog.monospace.jp/2007/09/08/django_unicode_problems/trackback/
あーもう朝からiPod Touchのニュースばっかだ。うんざりだ。
仕方ないからもうBuy Nowしましたよ。会社の金でね。
早く来ないかな・・・
iPodのsafari向けコンテンツでも考えるかな。
- Posted at:
- 2007/09/07 00:28:22
- 0 Comments
- 0 TrackBacks
- Tags:
- Trackback:
- http://blog.monospace.jp/2007/09/07/ipod_touch/trackback/
現在ここはWordPressで動いてるんですが、
いわゆるパーマリンクのURLを↓のような感じにしてます。
http://blog.monospace.jp/2007/09/02/django_powered_blog4/
URLだけで記事の投稿日が分かるし、
内容もなんとなくわかるので引き続きこれを採用したいと思ってます。
手順としてはこんな感じ。
- models.pyでget_absolute_url()を実装する
- urls.pyでこの形式にはまるViewを指定する
- テンプレート内でget_absolute_urlを呼び出す
まず、models.pyですが、
[python]
def get_absolute_url(self):
return "%04d/%02d/%02d/%s/" % \
(self.posted_at.year, self.posted_at.month, self.posted_at.day, self.slug)
[/python]
posted_atというDateTimeFieldから年月日をいただきます。
slugは日本語だと微妙な存在のSlugFieldを使ってます。
まあ現状もslugは手書きで書いてるので、とりあえず使います。
次にurls.pyですが、
GenericViewsのdate_based.object_detailを使います。
[python]
(r'^(?P\d{4})/(?P\d{2})/(?P\d{2})/(?P\w+)', 'date_based.object_detail',,
{'queryset': latest,
'slug_field': 'slug', # SlugField名
'date_field': 'posted_at', # DateTimeField名
'month_format': '%m', # デフォルトだとApr, Mayとかになる
'day_format': '%d', # 省略可
})
[/python]
object_detailはidを渡す他にslugを渡すことができます。
ちなみにこのViewは、デフォルトでは未来の日付が指定されると404を返します。
最後はテンプレートで
[html]
記事のパーマリンク[/html]
って感じで完成です。
ちまちまと作ってます。なんかいろいろ気が変わって作り直したりして時間かかりそうだなー。
- Posted at:
- 2007/09/06 02:33:20
- 0 Comments
- 0 TrackBacks
- Tags:
- Trackback:
- http://blog.monospace.jp/2007/09/06/django_powered_blog5/trackback/
django-comment-utils
http://code.google.com/p/django-comment-utils/
これですが、次の機能を使ってみました。
- Akismetでコメントスパム対策。
- コメントが投稿された時にメールでお知らせ
- 公開コメントだけをカウントしたり、表示するテンプレートタグ
まず、コメントの対象となるモデル(Entry)に次のようなものをくっつけます。
[python]class EntryModerator(CommentModerator):
akismet = True #Akismetでスパム対策をON
email_notification = True #投稿時のメール送信をおねがい
enable_field = 'enable_comments'
moderator.register(Entry, EntryModerator)[/python]
Entryにenable_comments = models.BooleanField()というフィールドを追加すると、個別にコメントを受け付けるかどうかを設定できるみたいです。
Akismetでのスパム対策ですが、
Python Akismet moduleとAkismet API keyが必要です。
API Keyってどこでとるんだっけな・・・
WordPressユーザなので、ずいぶん前にどっかでとったんだけど。
あと、settings.pyにAKISMET_API_KEY='yourapikey'という記述が必要です。
ちなみにテスト環境で動かしてる現在では、これが動いてるかわかりませんw
次にコメント投稿時のメール送信ですが、
django.core.mailのsend_mailをつかって、
settings.pyのMANAGERSに書かれたアドレスに送信されます。
メール送信内容のテンプレートは、
comment_utils/comment_notification_email.txtを読み込みます。
この時にテンプレートには、次のcontextが渡されます。
'comment': comment, #commentオブジェクト
'content_object': content_object #Entryオブジェクト
[code]
{{ comment.person_name }}さんから
{{ content_object.title }}へのコメントがありました
{{ comment.comment }}[/code]
最後は、テンプレートタグです。
get_public_comment_list(コメント一覧取得)
get_public_free_comment_list
get_public_comment_count(コメント数取得)
get_public_free_comment_count
この4つが定義されています。
Djangoのコメント機能にもこういうのはあるんですが、
公開がオフになってるやつもカウントしたりしてしまうんで、
こっちの方がなにかと便利です。
freeがついてるやつは、フリーコメント用です。
あ、ちなみにDjangoのコメント機能のフリーコメントは誰でも投稿できるやつで、
コメントは登録ユーザだけがコメントできるって機能です。0.96からかな。
フリーコメントの使い方は、
michiluさんとこで紹介されてます。
- Posted at:
- 2007/09/02 06:26:37
- 0 Comments
- 0 TrackBacks
- Tags:
- Trackback:
- http://blog.monospace.jp/2007/09/02/django_powered_blog4/trackback/
引き続きDjangoで作ってるブログのコメント部分なんですが、
どうやらDjangoのコメント機能でちょっと困ったことになっています。
このコメント機能というのは、django.contrib.commentsのことで、
同一プロジェクト内の2つのアプリでこの機能を共有するっていうのはできるんですが、
プレビューとか投稿後のテンプレートが共通になってしまうんですよね。
実は前に、別サービスでこのコメント機能を使ってるので、
そっちのテンプレートを表示してしまうわけです。
どうにか分けれないものかと思ったんですが、
django.contrib.comments.views.comments.pyの中のpost_comment関数に
'comments/preview.html'が直書きされてるんですよねー。
まあ最終的にはプロジェクト分けるからあれですが・・・
とりあえずそういうメモ。
- Posted at:
- 2007/09/02 04:36:47
- 0 Comments
- 0 TrackBacks
- Tags:
- Trackback:
- http://blog.monospace.jp/2007/09/02/django_powered_blog3/trackback/