日々のメモ書き
Debian Developerが綴るメモ
302
HTTPのリダイレクト関係。
- 302はPOSTならPOSTでリダイレクトが続くのが実は正解。コンテンツが一時的に移動しただけなんだから、移動した先で勝手にPOSTからGETに変えてはおかしいということか。
- GETにしたいのなら303。HTTP/1.1で新設。302で間違って使われているからというのが理由。
- とはいうものの多くの実装がそうなってないらしい。
- GETをPOSTに変換するのはできません。JavaScriptで頑張れ。JavaScriptが動かなかったらあきらめましょう。
Django + modwsgi
DjangoをApacheのmodwsgiで動かす。
必要なパッケージ
- libapache2-mod-wsgi
/home/takaki/devel/django_app で開発しているとする。
apacheの設定ファイルのように記述。/etc/apache2/site-availableなどを利用する。
Alias /media/ "/usr/share/python-support/python-django/django/contrib/admin/media/"
<Directory "/usr/share/python-support/python-django/django/contrib/admin/media">
Order allow,deny
Options Indexes
Allow from all
IndexOptions FancyIndexing
</Directory>
WSGIScriptAlias / "/home/takaki/devel/django_app/apache/django_app.wsgi"
<Directory "/home/takaki/devel/django_app/apache/django_app.wsgi">
Allow from all
</Directory>
/home/takaki/devel/django_app/apache/django_app.wsgiを以下のように書く。
import os, sys
#Calculate the path based on the location of the WSGI script.
apache_configuration= os.path.dirname(__file__)
project = os.path.dirname(apache_configuration)
workspace = os.path.dirname(project)
sys.path.append(workspace)
os.environ['DJANGO_SETTINGS_MODULE'] = 'django_app.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
これだけで動く。意外と簡単だった。develとproductionで分けたいとかは参考文献を見て下さい。
XOrg-7.3で固まる
DebianのXOrg 7.3-2 にしたらXが固まる。
うんともすんとも言わなくなるしCPUを100%使うし。7.2に戻す。BTSはいろいろ出ているようなのでまあいいか。
Collective SVN report
2007-09-24
- r49296 FlickrAlbum
- r49398 FCKEditor plone 3 integration
- r49412 Quills removed the old style properties and sharing tabs from the Weblog and WeblogEntry types in GS
- r49458 Quills - removed LinguaPlone imports, as we're not supporting LP currently anyway. (LP support will be re-introduced with Quills 2.0 aka QuillsEnabled)
- r49661 CMFSin 0.7
- r49673 PloneSoftwareCenter GS
- r49744 ExpertsPool - ExpertsPool is a Container where special Members named Experts can write categorized articles.
- r49769 PloneHelpCenter - first draft of a generic setup profile
- r49965 quills.app - getting rid of calling the trackback macro, as we are not supporting trackbacks currently ''at all''.
- r49980 NavigationRootFolder
Plone SVN report
2007-09-24
- r17217 plone.browserlayer - a package to help third party product authors conditionally register browser layers for visual components upon product install.
SQLでお絵かきロジックを解く
SQLで数独を解くという記事に触発されてやってみました。
残念ながら全部SQLではできなかった。問題設定から得られる条件をSQLに変換するところでRubyの助けが必要なのが現状である。なんとかしたいんだけどなあ。ここらへんがSQLの知識不足なところである。
問題の方針としては Bool値をカラムに持つテーブルの升目文の直積を作って where に条件を書くというものである。
たとえば5x5の升目だとする。すると "SELECT * FROM boolean AS b_0_0 CROSS JOIN boolean AS b_0_1 CROSS JOIN ... CROSS JOIN booean AS b_4_4"が答になるべきものである。ちなみにこんなものを直接実行すると二度と帰ってこないのでやめましょう。で次は条件を書くわけだが…。
条件が2,1とあったら OOXXO OOXOX XOOXO の3通がある。たとえば一つ目をSQLで書くと "b_0_0.bool = true AND b_0_1.bool = true AND b_0_2.bool = false AND b_0_3.bool = false AND b_0_4 = true"となる。ちなみに booelanというのは "CREATE TABLE boolean (bool bool)"である。 3通をORで結び、各行についての条件をANDで結ぶ。これをwhereに書く。
が、この条件文を作るのはもちろん自動化する。これはどうやるかというと 0か4までの数列(seq)の入ったテーブルの条件個の直積を作る。で where に "seq1 + 個数 < seq2" をANDで結ぶ。 2,1 なら seq1 + 2 < seq2 AND seq2 + 1 <= 5 となる。そこからテーブルのwhereに変換するのはRubyで書いてしまった。ここが問題か。
結構遅い。8x8で1秒ぐらい。15x15だと帰ってきません。
苦労したのが適当に作ったらX軸とY軸がごっちゃになってしまったこと。きちんとやりましょう。それからもっと頭のいい方法を考えないと。
generic viewのextra_context (2)
間違っていた話。
extra_context に QuerySet渡すと静的に解決されて困ったな、という話ですがwww.lingr.com/room/django-ja/archives/2007/09/19 で指摘されているようにlambdaで囲うのが正解でした。折角なのでソースを読む。
- あたり前の話として dictionary は静的に値が決まる。つまり値で関数を呼べばその結果が入る。
- じゃあなんでlambdaならいいんだよという話は django/views/generic/list_datail.py で extra_context の値を RequestContextに渡すときに callable な物はその場で呼び出した値を渡すから。
- 以上が結論。あ、でも関数を渡せたとしても関数自体は静的に決まるから…、これはまた考えよう。
ドキュメントを斜め読みしないでもうちょっとソースを読もう…。
トラックバックがおかしかった件
某所でトラックバックの挙動がおかしいと指摘されていたのでいい加減調べる。
PloneのSecurityを見ると "plonetrackback: View Trackbacks" にAnonymousからPermissonがなかった。なんだこのデフォルトの設定。
コメントができないのは…。なんでだろう。トップにはコメントをつける事もできるように設定できるが、記事にはできないな。またそのうち考えます。
追記: 記事毎にコメントを許可するか全部のコメントを許可するかか…。面倒だな。フォルダ単位とかないのか。
acroread 8
debian-multimediaのacroreadが8になった。
日本語が出なくなったが慌てず騒がずダイアログに表示されているAdobeのサイトにアクセスしてフォントをインストールする。ディレクトリを/usr/libにするのがポイント。
最近のSun
SunというかSolarisというか。
ハードウェアはIntelでもいいみたいだし、Windows Server機を売るらしいし。Sun MicrosystemsのIAサーバーってハードとしてそんなに魅力的だったっけ?DELLやHPのほうがサーバ単体で見るならいいと思うけどな。SolarisはそのうちNetscapeみたいになりそうなのが恐い。