2009年6月19日金曜日

Djangoでのクラス名の取得

オブジェクトのクラス名を取得する方法。

xxxxx.__class__.__name__

で取れた。
これってdjangoだけ?ptyhon全部なのかな。

2009年6月11日木曜日

Django 外部アプリ追加

外部アプリ(Pinaxの中のモジュールを単体で)とかをsetup.py installを利用しないで使おうとすると、うまくdjangoで認識できない場合があります。

そんな時には、
mod_wsgiファイルの中で強引にpathを追加してしまう手があります。

詳しくはpinaxのdeployファイルの中で

from os.path import abspath, dirname, join
from site import addsitedir

PINAX_ROOT = abspath(join(dirname(__file__), "../../../"))
PROJECT_ROOT = abspath(join(dirname(__file__), "../"))

path = addsitedir(join(PINAX_ROOT, "libs/external_libs"), set())
if path:
sys.path = list(path) + sys.path

sys.path.insert(0, join(PINAX_ROOT, "apps/external_apps"))
sys.path.insert(0, join(PINAX_ROOT, "apps/local_apps"))
sys.path.insert(0, join(PROJECT_ROOT, "apps"))

sys.path.insert(0, abspath(join(dirname(__file__), "../../")))

とやっているラインを参照に・・・・

2009年6月8日月曜日

POSTFIXから携帯へメール

携帯業者は信頼されたサーバーからしかメールを受け取ってくれないようで・・・。

自分で建てたサーバーから直接飛ばしても届きません。
というわけで、

1.postfixのmain.cfに下記を追加あるいはコメントアウト

transport_maps = hash:/etc/postfix/transport


2.そのあと
/etc/postfix/transport
ファイルに下記を追加

ezweb.ne.jp smtp:【SMTPサーバー】:【ポート】
.ezweb.ne.jp smtp:【SMTPサーバー】:【ポート】
docomo.ne.jp smtp:【SMTPサーバー】:【ポート】
.docomo.ne.jp smtp:【SMTPサーバー】:【ポート】
vodafone.ne.jp smtp:【SMTPサーバー】:【ポート】
.vodafone.ne.jp smtp:【SMTPサーバー】:【ポート】
softbank.ne.jp smtp:【SMTPサーバー】:【ポート】
.softbank.ne.jp smtp:【SMTPサーバー】:【ポート】
pdx.ne.jp smtp:【SMTPサーバー】:【ポート】
.pdx.ne.jp smtp:【SMTPサーバー】:【ポート】

ISPのSMTPサーバーはリレーを許可している必要があります。

OCNだと vc を外して、portは25で行きました。

3.transport.dbを作成
postmap /etc/postfix/transport

4. postfixを再起動

以上でうまくいきました。
ただし、指定したドメインだけ受信するような設定になっている携帯へは
相手に許可リストにいれてと伝える必要があります。

また、mailqでみても、送れなかった場合でもエラーログがでてこないようです。
なにか確かめる方法ってあるんですかね・・・。

2009年6月4日木曜日

Djangoのformに後からデータ追加

Djangoのフォームで一瞬はまりました。

インバウンドのフォームをきっちり作成したあとに、
form.data.update({xxx:xxx})
とか行おうとしたら、
QueryDict immutable

というエラー。
このDict オブジェクトは変更できないとさ。

回避方法としては、
data = request.POST.copy()
data['xxx']=xxxx
とフォーム作成まえにPOSTデータをコピーしてデータ追加してしまう方法です。

2009年6月2日火曜日

tritonnをcentOSへ

Tritonnをセットアップ。

mecabやsennaをインストールした後に、./configureしようとおもったら、
cursesなんちゃらがないよー、っていわれた。

このエラーはncurses5-develというものをいれれば解決。

ついでに実行したコマンドはtritonnに載っているもので、

CC='gcc'  CFLAGS='-g'  CXX='gcc'  CXXFLAGS='-g'  LDFLAGS=''  ASFLAGS='' \
./configure \
'--prefix=/usr/local/mysql' \
'--localstatedir=/usr/local/mysql/data' \
'--libexecdir=/usr/local/mysql/bin' \
'--with-comment=MySQL Community Server (GPL)' \
'--with-server-suffix=' \
'--enable-thread-safe-client' \
'--enable-local-infile' \
'--enable-assembler' \
'--with-pic' \
'--with-fast-mutexes' \
'--with-client-ldflags=-static' \
'--with-mysqld-ldflags=-static' \
'--with-zlib-dir=bundled' \
'--with-big-tables' \
'--with-yassl' \
'--with-readline' \
'--with-archive-storage-engine' \
'--with-blackhole-storage-engine' \
'--with-ndbcluster' \
'--with-csv-storage-engine' \
'--with-example-storage-engine' \
'--with-federated-storage-engine' \
'--with-innodb' \
'--with-extra-charsets=all' \
'--with-senna' '--with-mecab'
です。

MeCabインストール

Sennaを入れようと思って、Mecabをまずはインストール・・・。

コンパイラーのパワーがたりませんとかいうエラーが・・・・。

でもって、必要なのはgcc-c++

g++はyumではgcc-c++

をインストールすればオッケー

PHPのインストール

linux にphpのインストール

./configure --with-mysql=/usr/lib/mysql --with-apxs2=/usr/sbin/apxs --enable-mbstring --with-mcrypt --with-openssl --with-gd --with-png-dir=/usr/lib --with-zlib --with-jpeg-dir=/usr/lib --with-pear --with-freetype-dir=/usr/local/lib

freetypeとかjpegとかいろいろと先にダウンロードしていれておく必要はあります。