Hits:21 ... « 1 2 3 4 5 »

七夕

織姫(ベガ[こと座])&彦星(アルタイル[わし座])が1年に1度会うことを許された日☆

そんな今日は,Djangoでログインフォームを作成してみた.GenericViewは使わないでーやっていたんですがーformsとnewformsがゴチャゴチャにつかっていたりー…美しくない出来だ!!

そういやーDjangoってHTMLの属性が画面に出す時に,1度属性などを整理整頓してから出力してるのかい? なんの意味があるのか…わからないまま

[Django]

2007/07/03 00:50 | Comments(0)

Bookmark作成

Django and jQuery で Bookmarkの画面を作成!! 以前作成したものが,ショボショボでしたのでー修正!!

HTMLやCSSは苦手なのでー普段から適当!!その適当さが原因でjson形式のレスポンスをHTMLに展開するときに面倒となった!! あと,jQueryのTraversingとManipulationを自由に使いこなせていないのも原因だわっ!!

だれか,わかりやすく図で表現してくれないかなぁ〜.

[Python] [Django]

2007/07/22 23:16 | Comments(0)

環境構築

近々,サーバの環境を再構築しようと思っておりましてー別のPCで環境構築のテストをしてみました.

今回インストールしたのは, FedoraCore5 Mecab-0.96 Senna-1.0.8 tritonn-1.0.3.mysql-5.0.41 Apache2.2.4 PHP5.2.3 Python2.5 mod_wsgi1.0c1 Django0.96

とOSからインストールしたのでーかなり面倒な戦いだった….欲を言えばーXenにも挑戦したかったのですが….目的からそれちゃうのでー別の機会で…. そうそう目的はdjangoで作ったサイトをapache越しに見れるようにしたかったのだ!!あと,一応業務でPHPを使うことが多いのでーPHPも同時に使えるようにと…. さらに,せっかくなのでー全文検索も…と欲張ってしまった…あはは….

色んなところでエラーが起きて対応したんですがーその場その場で対応したので…覚えてないかも…. ざざーっとこんな感じでインストールしたというのもメモっておきます.

■ MeCabのインストール

$ tar xzvf mecab-0.96.tar.gz
$ cd mecab-0.96
$ ./configure --prefix=/usr --with-charset=utf8
$ make
# make install

■ MeCabの辞書をインストール

$ tar xzvf mecab-ipadic-2.7.0-20070801.tar.gz
$ cd mecab-ipadic-2.7.0-20070801
$ ./configure --prefix=/usr --with-charset=utf8
$ make
# make install

■ Sennaのインストール

$ tar xzvf senna-1.0.8.tar.gz
$ cd senna-1.0.8
$ ./configure --prefix=/usr
$ make
# make install

■ MySQL(Tritonnパッチ適用済)

$ tar xzvf mysql-5.0.41-tritonn-1.0.3.tar.gz
$ ./configure --prefix=/usr/local/mysql \
--with-charset=utf8 \
--with-extra-charsets=all \
--with-mysqld-user=mysql \
--with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock \
--enable-thread-safe-client \
--with-senna \
--with-mecab
$ make
# make install

今までは,どうもTritonnパッチをあてる作業やよくわからないコマンド操作があったようだがーこれはなくて楽チン!! オプションは適当!しかし--enable-thread-safe-client つけないとーMySQL_pythonがインストールできない!!

あとは,通常のMySQLの設定DBの初期設定,DB作成,ユーザ作成,…などした. 一応,全文検索のテストをやってみたらー無事成功!! 今度アプリと連動して動かしてみたい!!

■ Apacheのインストール

$ tar xzvf httpd-2.2.4.tar.gz
$ cd httpd-2.2.4
$ ./configure
$ make
$ make install

今回はじめて2.2系を使ったので,設定ファイルが分離されててーほんの一瞬戸惑った!!あはは….

■ PHPのインストール

$ tar xzvf php-5.2.3.tar.gz
$ cd php-5.2.3
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-config-file-path=/usr/local/php5/etc \
--with-config-file-scan-dir=/usr/local/php5/etc/php.d \
--with-layout=GNU \
--enable-mbstring \
--with-libmbfl \
--enable-mbregex \
--with-mysql=/usr/local/mysql \
--with-gd
$ make
# make install

PHPのオプションは適当に必要かなぁ 0と思ったのをつけてます.

/usr/local/apache/conf/httpd.conf にapplication/x-httpd-php .php 追加して

ここで,apache, php, mysqlの連携テストスクリプト作成して成功!!

■ Python2.5のインストール FedoraCore5には2.4ならデフォルトでインストールされていてーそれを使おうと思ってmod_wsgiをインストールしようとしたらなんかうまくいかなかったんでー2.5インストールした.(あれ!?なんのエラーだっけ…)

$ tar xzvf Python-2.5.tgz
$ cd Python-2.5
$ ./configure --enable-shared
$ make
# make install

ここで,俺はwhich python とやったらーパスが新しくインストールされているところに切り替わっていたのでー次のmod_wsgiのインストールにすすんだんだがーエラー「error while loading shared libraries: libpython2.5.so.1.0」とエラーがでてーオプションのせい?とか悩んでしまった…. 結果は,/etc/ld.so.conf に追記する必要があった.あーもちろん「export LD_LIBRARY_PATH」でもOKだと思います.

# vi /etc/ld.so.conf
(追記)
/usr/local/lib
# ldconfig

これでOK.ldconfig -p で libpython2.5.so.1.0 表示されればダイジョブ.

■ Djangoのインストール

# sh setuptools-0.6c6-py2.5.egg
# easy_install -U -Z MySQL_python
# tar xzvf Django-0.96.tar.gz
$ cd Django-0.96
# python setup.py install

確か,MySQL_python をインストールするときに mysql_config がどうのこうのってエラーがでっけなぁ 0.それはPATHに/usr/local/mysql/binを追加して終了. 一応プロジェクト作成してlocalhost:8000でアクセスできるかは試したところOKでした.

■ mod_wsgiのインストール こちらは, nobu さんのサイトを参考にapacheの設定などを行いました.

$ tar xzvf mod_wsgi-1.0c1.tar.gz
$ cd mod_wsgi-1.0c1
$ ./configure
$ make
# make install

/usr/local/apache2/conf/httpd.conf に LoadModule wsgi_module libexec/apache22/mod_wsgi.so を追記する.

あとは,バーチャルホストの設定やdjango.wsgiのスクリプトを作成した. この変は nobu さんのサイトなどをまるまるコピーして終了した感じでーあまり細かいことが解らないまま成功している. Apache <--> mod_wsgi <--> django.wsgi <--> django.project って感じのやり取りをしているんでしょうね.あはは….

いやいやー長かった….最初のFC5で漢字が表示できないとか訳の解らないトラブルなんかにも付き合っていたんでー時間かかっちゃいました…ぷぅ 0 0 0.

さて,近々本番でやらないとなぁ 0.てーことでー予告なくサーバが止まるかもしれませんがーお許しあれ!?

参考
http://qwik.jp/tritonn/userguide.html http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango

[Mecab] [tritonn] [PHP] [mod_wsgi] [MySQL] [Fedora] [Senna] [Apache] [Python] [Django]

2007/08/04 20:17 | Comments(0)

環境構築2

最近,めっちゃ暑かったですわぁ.そんな中今日は比較的涼しくて過ごしやすかったですわっ!!

さーてさて, こないだのテストインストールを生かして環境構築した. まだ,中途半端なところだらけなのだが….忘れぬよう個人的メモとして箇条書き程度に記しておくことにした.

■ FedoraCore5 手元にメディアがあったのでこちらのOSにした. インストールは,ほぼ最小インストール. Cコンパイラなどからインストール(こういったいくつかはyum使用). これかったるいねっ!!

■ Mecab-0.96

wget http://downloads.sourceforge.net/mecab/mecab-0.96.tar.gz?modtime=1181487226&big_mirror=0
tar xzvf mecab-0.96.tar.gz
./configure \
--prefix=/usr/local/mecab \
--with-charset=utf8
make
make install

■ Mecab-ipadic-2.7.0

wget http://downloads.sourceforge.net/mecab/mecab-ipadic-2.7.0-20070801.tar.gz?modtime=1185895550&big_mirror=0
tar xzvf mecab-ipadic-2.7.0-20070801.tar.gz
./configure \
--prefix=/usr/local/mecab \
--with-charset=utf8 \
--with-mecab-config=/usr/local/mecab/bin/mecab-config
make
make install

■ Senna-1.0.8

wget http://keihanna.dl.sourceforge.jp/senna/26563/senna-1.0.8.tar.gz
tar xzvf senna-1.0.8.tar.gz
./configure \
--prefix=/usr/local/senna \
--with-mecab \
--with-mecab-config=/usr/local/mecab/bin/mecab-config
make
make install

■ MySQL-5.0.41(tritonn)

wget http://globalbase.dl.sourceforge.jp/tritonn/26391/mysql-5.0.41-tritonn-1.0.3.tar.gz
tar xzvf mysql-5.0.41-tritonn-1.0.3.tar.gz
./configure \
--prefix=/usr/local/mysql \
--localstatedir=/home/mysql/data \
--libexecdir=/usr/local/mysql/bin \
--with-mysqld-user=mysql \
--with-charset=utf8 \
--with-collation=utf8_general_ci \
--with-unix-socket-path=/home/mysql/data/mysql.sock \
--enable-thread-safe-client \
--enable-local-infile \
--enable-assembler \
--with-zlib-dir=bundled \
--with-big-tables \
--with-readline \
--with-innodb \
--with-senna=/usr/local/senna \
--with-mecab=/usr/local/mecab \
--with-extra-charsets=complex
make
make install

■ Apache2.2(apr, apr-util, apache)

wget http://www.meisei-u.ac.jp/mirror/apache/httpd/httpd-2.2.4.tar.gz
tar xzvf httpd-2.2.4.tar.gz

○ apr

cd /httpd-2.2.4/srclib/apr
./configure \
--prefix=/usr/local/apr \
--enable-threads
make
make install

○ apr-util

cd /httpd-2.2.4/srclib/apr-util
./configure \
--prefix=/usr/local/apr \
--with-apr=/usr/local/apr
make
make install

○ apache

./configure \
--enable-mods-shared=most \
--enable-dav \
--enable-dav-fs \
--enable-dav-lock \
--enable-cgi \
--enable-cgid \
--enable-so \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr
make
make install

■ PHP-5.2.3

wget http://jp.php.net/get/php-5.2.3.tar.gz/from/this/mirror
./configure \
--prefix=/usr/local/php5 \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-config-file-path=/usr/local/php5/etc \
--with-config-file-scan-dir=/usr/local/php5/etc/php.d \
--with-layout=GNU \
--enable-mbstring \
--with-libmbfl \
--enable-mbregex (省略)
make
make install

■ Python-2.5

wget http://www.python.jp/pub/ftp.python.org/python/2.5/Python-2.5.tgz
./configure --prefix=/usr/local/python
make
make install

■ SetupTool

wget http://cheeseshop.python.org/packages/2.5/s/setuptools/setuptools-0.6c6-py2.5.egg
sh ./setuptools-0.6c6-py2.5.egg

■ 色々

easy_install-2.5 -U -Z docutils
easy_install-2.5 -U -Z MySQL_Python
easy_install-2.5 -U -Z ipython
easy_install-2.5 -U -Z pysqlite
easy_install-2.5 -U -Z TracPygments

■ neon

wget http://www.webdav.org/neon/neon-0.25.5.tar.gz
./configure --prefix=/usr/local/neon
make
make install

■ swig

wget http://jaist.dl.sourceforge.net/sourceforge/swig/swig-1.3.29.tar.gz
./configure \
--prefix=/usr/local/swig \
--with-python=/usrlocal/python/bin/python2.5 \
--without-java \
--without-ruby \
--without-php4
make
make install

■ clearsilver

wget http://www.clearsilver.net/downloads/clearsilver-0.10.5.tar.gz
tar xzf clearsilver-0.10.5.tar.gz
./configure \
--prefix=/usr/local/cs \
--with-apache=/usr/local/apache2 \
--with-python=/usr/local/python/bin/python2.5 \
--disable-csharp
make
make install

「--disable-csharp」を最初つけておらず,エラーがでていた.C#あたりのインストールもこころみたのだが結局 disable .

■ SVN

./configure \
--prefix=/usr/local/svn\
--enable-dso \
--with-apxs=/usr/local/apache2/bin/apxs \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr \
--with-editor=/usr/bin/vim \
--without-jdk \
--with-swig=/usr/local/swig \
--with-neon=/usr/local/neon
make
make install

vim /etc/ld.so.conf.d/svn.conf
ldconfig

make swig-py
make install-swig-py

vim /usr/local/python/lib/python2.5/site-packages/svn-python.pth

■ mod_wsgi

wget http://modwsgi.googlecode.com/files/mod_wsgi-1.0c3.tar.gz
tar xzf mod_wsgi-1.0c3.tar.gz
./configure \
--with-apxs=/usr/local/apache2/bin/apxs \
--with-python=/usr/local/python/bin/python2.5
make
make install

■ Trac

wget http://ftp.edgewall.com/pub/trac/trac-0.10.4.tar.gz
tar xzf trac-0.10.4.tar.gz
python2.5 ./setup.py build
python2.5 ./setup.py install

■ Django

wget http://www.djangoproject.com/download/0.96/tarball/
tar xzf Django-0.96.tar.gz
python2.5 setup.py install

ざざっとこんなんかなぁ?.間々で,ldconfig, path設定やuser作成なども行っている. 何が面倒だったってー前PCがEUC-JPだったもんでー文字コードが変わり,色んなソースコードなどの変更に追われた感じ….

個人的に忘れそうだからーlinux漢字フォントのインストールはこれで…. yum install fonts-japanese

[tritonn] [mod_wsgi] [Fedora] [Apache] [Django] [SVN] [Mecab] [PHP] [MySQL] [Senna] [Python] [Trac]

2007/08/19 00:32 | Comments(0)

画像アップロード + リサイズ

昨日に引き続きファイルアップロード! 色々と中途半端な部分もあるのですがーBLOGへ….

昨日のmodelとは,カラム数が増えてしまい見づらいかもしれません. とりあえず,やってみたかったのはーviews.py は

def upload(request):
    f = forms.form_for_model(Image)

    if request.method == 'POST':
        request_post = request.POST.copy()
        request_post.update({'user':request.user.id})
        form = f(request_post, request.FILES)

        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/imagedb/')

    else:
        form = f(None)

    t = loader.get_template('imagedb/upload.html')
    c = RequestContext(request, {'form':form})
    return HttpResponse(t.render(c))

とほとんど変えず….つまり form.save() を実行するだけで thumbnail を作成 しちゃって欲しいなぁーと…. また,ファイル名をランダム文字列に! ということで,下記のような model にカスタマイズしてみました.

class Image(models.Model):
    user            = models.ForeignKey(User)
    title           = models.CharField(maxlength=30)
    description     = models.TextField()
    filecode        = models.CharField(maxlength=100, editable=False)
    extention       = models.CharField(maxlength=100, editable=False)
    image           = PhotoField(upload_to='photos')
    labels          = models.ManyToManyField(Label)
    created_at      = models.DateTimeField(editable=False, default=datetime.now)
    updated_at      = models.DateTimeField(editable=False)
    is_active       = models.BooleanField(editable=False, default=True)

    class Admin:
        pass

    def __unicode__(self):
        return self.title

    def save(self):
        self.updated_at = datetime.now()
        super(Image, self).save()

    def save_resize_file(self, image_content, suffix, height, width, mode=FIT):
        resized_image =  PhotoField.resize(image_content, height, width, mode)
        filename = self.filecode + suffix + self.extention
        return filename, resized_image

    def save_thumbnail_file(self, image_content):
        return self.save_resize_file(image_content, '_thumb', 75, 75)

    def get_thumbnail_url(self):
        return '/'+self._meta.get_field('image').upload_to+'/' + self.filecode + '_thumb' + self.extention

    def save_middle_file(self, image_content):
        return self.save_resize_file(image_content, '_middle', 250, 250)

    def get_middle_url(self):
        return '/'+self._meta.get_field('image').upload_to+'/' + self.filecode + '_middle' + self.extention

    def save_image_file(self, filename, raw_contents, save=True):
        self.filecode = ''.join([random.choice(string.letters+string.digits) for x in range(15)])
        m = re.search(r'(?P<ext>\.[a-zA-Z]+$)', filename)
        self.extention = m.group('ext')

        # get image field
        image = self._meta.get_field('image')
        self.image = image.upload_to + self.filecode + self.extention

        # create upload thumbnail
        filename, resized_image = self.save_thumbnail_file(raw_contents)
        super(Image, self)._save_FIELD_file(image, filename, resized_image, False)

        # create upload middle
        filename, resized_image = self.save_middle_file(raw_contents)
        super(Image, self)._save_FIELD_file(image, filename, resized_image, False)

        # upload save original
        return super(Image, self)._save_FIELD_file(image, self.filecode + self.extention, raw_contents, True)
これで,「xxxxx.jpg」なんてファイルをアップロードすると,
RANDOMSTRINGZZZ.jpg, RANDOMSTRINGZZZ_thumb.jpg, RANDOMSTRINGZZZ_middle.jpg というファイルが3つアップロードされ,

System Message: WARNING/2 (<string>, line 99)

Definition list ends without a blank line; unexpected unindent.

データベースには,

+----+-+-----------------+-----------+-------------------------------+-
| id | | filecode        | extention | image                         |
+----+-+-----------------+-----------+-------------------------------+-
|  1 | | RANDOMSTRINGZZZ | .jpg      | photos/RANDOMSTRINGZZZ.jpg    |
+----+-+-----------------+-----------+-------------------------------+-

なんて情報が登録される.

改善点はまだありますが,とりあえず目的は達成!! nobu さんのパワーも沢山お借りしました☆ありがとうございます.

方向としてはどうなのか…邪道なのか….どなたからかの突っ込みがあればなんて思ってます.

[Django] [Python]

2007/09/12 00:04 | Comments(0)

Hits:21 ... « 1 2 3 4 5 »