ほんじゃらねっと

ダイエット中プログラマのブログ

2008-01-01から1年間の記事一覧

FileField、ImageFieldでファイルアップロード先フォルダをユーザー毎に変更する

django1.0から、FileFieldとImageFieldのupload_to属性に関数を指定できるようになり、 ファイルのアップロード先を動的に設定できるようになったようだ。 http://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.FileField 関数の第一…

管理ページを使わずにFlatPageを更新する

admin管理サイトを使いたくなかったので、FlatPageを更新するスクリプトを作成した。 settings.pyでFlatPageを使用する設定をしておく。 http://docs.djangoproject.com/en/dev/ref/contrib/flatpages/#ref-contrib-flatpages テンプレートは下記のような感…

添付ファイル付きメールをdjangoに登録する

メールで送信した画像とテキストデータをdjangoに登録するために、 メールサーバからデータベースに保存したメールデータを Pythonのemailライブラリとdjango APIを使ってテキストデータと 画像ファイルとして保存するスクリプトを作成した。 色々省いたので…

Pythonでコマンドプロンプトを拡張

WindowsのコマンドプロンプトをPythonで拡張するwxPythonアプリケーションを作った。 Linuxシェルでも動くかもしれないが、試していない。 pythonスクリプトと、シェルコマンドが使える。コマンドを入力すると、 最初に指定ディレクトリ内のpythonスクリプト…

Pythonで大容量ファイルを指定行数で複数ファイルに分割する

これもちょっと必要だったので作成したスクリプト。 秀丸やgVimで開けないほど大きいファイルを分割する。 split_file.py # -*- coding: utf-8 -*- in_file_name = "verybigfile.log" out_file_name_template = "splitted_%d.log" max_lines = 1000000 split…

Pythonでgrep風にディレクトリ内のファイルを検索

大した機能ではないが、せっかくスクリプトを作ったので保存しておく。 せめて検索フォルダと検索文字列はコマンドオプションとして 渡せるようにしておくべきだったか。 pygrep.py import os import re search_dir = "<検索対象フォルダパス>" search_pat…

CentOSにJPEGサポート付きでPIL(Python Imaging Library)をインストールする

思いのほか苦労したのでメモ。 CentOSにPython2.5とPIL1.1.6の環境を作成してプログラムを動かしてみたところ、 JPEG画像の処理に失敗し、下記のログが表示された。 decoder jpeg not available なんやかんやで下記のライブラリが必要だと分かったのでインス…

django-registrationでユーザー登録と同時にプロファイルを登録する。

django-registration http://code.google.com/p/django-registration/ django-registrationはユーザー登録や認証関連の処理を一通り行ってくれる便利なdjangoアプリケーションである。 設置方法等については、下記のページに分かりやすい説明が記載されてい…

django開発版で発生した問題を解決する

久々にdjangoを最新版にアップデートしたら下記の問題が発生した。 ページを開く時にadmin関連のエラーが出るようになった。 models.pyに定義したverdjnlibのPhotoFieldが動作しなくなった。 ページを開く時にadmin関連のエラーが出るようになった url.pyでa…

django+jQuery Form Pluginでファイルアップロードしてみた

前回発見したjQuery Form Pluginを使って実際にファイルをアップロードするサンプルを作った。 http://d.hatena.ne.jp/piro_suke/20080615/1213498024 ファイルをアップロードする場合のみ、iframeが使用される関係でサーバ側から 返却するデータをtextarea…

jQuery Form Pluginでファイルアップロード

通常のフォームを画面遷移なしで送信可能にしてくれる jQuery Form Pluginを使ってみた。 jQuery Form Plugin http://malsup.com/jquery/form/ フォームに何も加えなくてもjsファイルを読み込んで ajaxForm関数でサブミット後の処理を定義するだけで サブミ…

Pymacsを使ってPythonでEmacs拡張

NTEmacsを使い始めたので、Pymacsを入れて簡単なプラグインを作ってみた。 EmacsはVimと比べるとまだまだ不満がいっぱいだが、色々プラグインを 作ってVimの快適さに近づけていきたい。 苦労したのでメモ。 Pymacsのインストール Python2.5環境で試した。 あ…

新しくなったPaginatorをページリンク機能をつけて使う

djangoのページング機能の使い方が変わったようなので、 それに合わせてページリンクを表示する機能を作った。 また使いそうなので保管。 以前のバージョンで使用していた、BetterPaginatorを参考にした。 http://d.hatena.ne.jp/piro_suke/20070827/1188202…

FlexとJavascriptの連携

Actionscript3で作成したSWFからActionscript2で 作成したSWFは呼び出せないようだ。 YoutubeのAPIで提供される動画再生用のSWFがActionscript2で 作成されたものらしく、Flex2(Actionscript3)から呼び出しても うまく動いてくれなかった。 (やり方がおかし…

Youtube動画プレイヤー

開発中にYoutubeの動画をラジオ代わりに流し聞きするために お気に入りに登録した動画を順次再生する動画プレイヤーを作りました。 PyroJuke http://pyro.hachinos.net/movies/ たまに動画が動かないという致命的な問題はあるものの、 ひとまず目的の動作は…

Webアプリ以外でdjangoを使用する

Using Django in command-line scripts http://surftrackr.net/blog/view/35/using-django-command-line-scripts/ コマンドラインで実行するようなPythonスクリプトでdjangoのライブラリを利用する方法。 この方法を使えば、アップロードしたXMLファイルを解…

UnicodeDecodeErrorが発生する文字をignoreオプションで無視する

Pythonで文字コードを変更する際に変換対象の文字列に変換不能な文字が 含まれているとUnicodeDecodeErrorが発生して困ることが多かった。 しかし、unicode関数やencode関数のignoreオプションを使うと、 それらの変換不能な文字列を無視して変換してくれる…

Actionscript3で外部ファイルを読み込んでTextに表示する

よく使いそうなのでメモ。 まとまった文章や変更の多いテキストはテキストファイルに外部化して、 HTMLへの画像表示と同様にページを開いた時に読み込むようにすることで 再コンパイルする事無くFlex上に表示することができる。 テキストファイルのエンコー…

TextFieldをUniqueにしたい場合

djangoのモデルでTextFieldクラス型にしたフィールドにunique=True設定を行うと、 「lengthが指定されていない」というエラーが発生した。 試しにlengthやらmax_lengthやらのオプションをつけてみたが、今度は 「そのような属性はありません」というエラーが…

モデルのフィールドを組み合わせで一意にする

djangoは複合キーが使えないらしいので、代わりの機能を探したら 開発版で追加されたunique_togetherというMetaオプションを使えば 良いらしいことが分かった。 例えばあるモデルでユーザーとブックマークの組み合わせを一意にする場合は こんな感じかな? m…

FlexのDataGridでカスタムアイテムレンダラーを使う

編集後の値取得方法が分からなくて苦労したのでメモ。 今回は下記で紹介されているスターレーティング用コンポーネントをDataGridで使ってみた。 http://flexibleexperiments.wordpress.com/2007/04/28/flex-201-rating-component/ ここの「Sample and Sourc…

FlexのDataGridのItemEditEndイベントを使う際の注意

DataGridでItemEditEndイベントの処理中にAlert.show()を使うとFirefoxが落ちる。 何らかの無限ループ的なものが発生するのかな? 最初は原因が分からず、何度もFirefoxが落ちて凹んだ。 相変わらずtrace()がうまく動かないので、 代わりにダミーのテキスト…

Pythonで1行メモVimスクリプト

先日に引き続きPythonでVimに挑戦。 コマンドラインで書き込んだメモをファイルに蓄積していくVimプラグインを書いてみた。 画面に表示している内容とまったく関係ないふとした思いつきを書き込む。 :PyMemoAdd メモ のような感じで使う。 pymemo.vim if has…

BeautifulSoupで特定の属性値を持つタグを取得する

下記のようなXMLから rel="next" なタグの href 属性を取得する場合 <feed version="0.3" xml:lang="ja"> <title>Pirosukeのブックマーク</title> <link rel="alternate" type="text/html" href="http://b.hatena.ne.jp/piro_suke/" /> </link></feed>

djangoではてな認証APIを使う

認証APIを使ってユーザー認証を行えるようにしたい。 はてな認証API http://auth.hatena.ne.jp/ livedoor Auth http://auth.livedoor.com/ はてなとライブドアに認証APIがあるようで、両方同じような使い方ができるらしい。 はてなユーザーなのではてな認証…

PythonでVim用のファイルブックマークプラグインを作る

初めてのVimスクリプトをPythonで書いたが、 ほとんどVimの機能を呼び出しているだけになってしまった... しかし楽しい。 環境は gVim7 + WinXP + Python2.5 + BeautifulSoup。 :PyBookmarkAdd でカレントバッファのファイルをブックマーク。 :PyBookmarkLis…

djangoAMFを使ってユーザー登録機能のベースを作る

今後も使いそうなので作っておく。 環境はflex2とs2flex2とdjango開発版。 簡単な入力チェック機能付き。 flex側はTitleWindowなので別途それを表示するための機能を追加する必要あり。 flex側表示用mxml(UserEntryWindow.mxml)

PythonでVim拡張

同じモノを作り続けると飽きるので、気分転換にVimscriptを書き始めた。 自分のエディタが拡張できるのはかなり楽しい。 ひとまず登録、変更、削除、一覧表示ができるようにファイルブックマークプラグインでも作る。 ん、これはVimscriptを書いているのでは…

djangoAMF経由でクラス型変数を持つクラスのオブジェクトを受け取る場合のActionscript側クラス定義

備忘メモ。django側のモデルクラスが他のクラス型の変数を内部に持っている時の受け取り方。 知っていれば簡単なことのようで、django側のモデルクラスで定義された変数名ではなく、 DBのテーブルが持つ外部キー名が入る。変数名_idというint型。 django側モ…

Actionscriptのtrace

trace関数がうまく動かないので仕方なくAlert.show()で デバッグしながら開発している。 mm.cfgも作ったしデバッグプレイヤーもインストールしたのになんで。