2006/06/15(木)シンボリックリンクの利用

シンボリックリンクに対応したバージョンを検討中。シンボリックリンクを使うと、サムネイルの表示等に余計なcgiを通さずにすみます。ただし、サムネイルの存在チェック等をcgi側で行うことができないため、mod_rewrite必須です。

mod_rewrite使える環境にないので、テストできません。

現在検討中の案

ユーザ: serika
ホームディレクトリ: home (config.ini)
ハッシュ用フォルダ: .hashdb (config.ini)
サムネイル用フォルダ: .thumb (config.ini)
ハッシュ内画像キーワード: image (固定)
ハッシュ内サムネイルキーワード: thumb (固定)
ギャラリー: test
画像: test.jpg
画像のハッシュ: abcdefg
サムネイル作成プログラム: thumbnail (固定)
サムネイルの拡張子: .jpg (固定)
サムネイル作成プログラムは、サムネイル作成後、実際のサムネイルにリダイレクトする

アルバムの出力する可能性のあるパス
画像本体: album/home/serika/test/test.jpg
サムネイル: album/home/serika/test/.thumb/test.jpg.jpg
 このとき、サムネイルが無い場合は、次のパスへ変換が必要
 album/thumbnail/serika/test/test.jpg
画像本体(ハッシュ利用): album/home/serika/.hashdb/image/abcdefg
サムネイル(ハッシュ利用): album/home/serika/.hashdb/thumb/abcdefg
 このとき、シンボリックリンクが無い場合は、次のパスへの変換が必要
 album/thumbnail/serika/.thumb/abcdefg

最終的には、makeファイルでシンボリックリンクを使うか、切り替えられるようにしたいところ。両方同時に利用することは考えていません。

2006/06/13(火)ハッシュによるファイルの検索

ハッシュを使うことで,ファイルの移動にも対応できるようになったが,その分,余計なファイルのロードや,利用するたびにデータの問い合わせが発生することになってしまった.

今後の方針としては,

  1. ハッシュデータベースをやめ,ハッシュで画像へのシンボリックリンクを作成する
  2. 負荷がかかっても気にしない \まあ,ある程度のキャッシュはすることになると思うが...

の2択である

確かに,シンボリックリンクで対処した方が,余計なcgiを通さずに済むが,一部の存在しないファイルに対しても,シンボリックリンクを張ることになってしまう*1.そもそも,ハッシュによる検索は,ファイルのアップロード時に同じファイルがあるか,チェックするための物の副産物であり,新着画像のような,ほんの一部のページでしか使われることは無い.

余計なcgiを通さずに済むメリットと,画像と同じ数のリンクを張らなければならないデメリット.価値としてはどちらが上か悩むところである.

*1 : サムネイルは,アクセスがあった時点で作成するため,サムネイルが無い状態で,サムネイルへのリンクを張ることになってしまう

2006/06/11(日)プラグイン::一般

プラグインは,最低限以下に上げる関数を実装しなければならない.

  • int IsEnable(void);
    プラグイン自体が有効か示す関数.
    プラグインが無効ならば 0 ,有効ならば 0以外の値 を返すこと
  • int Type(void);
    プラグインのサポートする種類を返す関数.
    返値は,CPlugin内において定義されているENUM値の論理和である必要がある.
         ENUM値サポートする機能
    AUTH 認証
    IF サムネイル作成
    AX アーカイブ展開
    EXT 機能拡張
    PEXT ページ拡張
    PV 画像表示
    例えば,機能拡張,ページ拡張の2つの機能を持つプラグインの場合,

    int Type(void){
        return CPlugin::EXT | CPlugin::PEXT;
    }
    

    となる

  • const char *Info(void);
    プラグインの説明文.
  • const char *Name(void);
    プラグインの名前.

2006/06/11(日)認証

テスト段階ではあるが,実装してみた.現在,ファイルのアップロード,フォルダの作成の2つに制限をかけてある.

サンプルでは,javascriptでcookieを出すようにしているため,両方とも有効にしておく必要がある.

ID, PWは同じものを入れればなんでも通るので適当にためして欲しい.\[http://bigslope.dyndns.org/album3.1/index/serika:せりかのアルバム C版 v3.1.0]

2006/05/30(火)プラグインの種類

プラグインは,
  1. 認証
    他のプラグインを利用するための認証プラグイン.
    実際に実装するのは,開発の後期になってからだと思う.
  2. サムネイルの作成
    アップロードされた画像からサムネイルを作成するためのプラグイン.
    サムネイルは,jpeg限定.オフィシャルでは,GIF,JPEG(libexifによる埋め込みサムネイルへの対応),PNGの3種類のプラグインを配布する予定.
  3. アーカイブの展開
    アップロードされたアーカイブを展開するためのプラグイン.
    実際には,ファイルをアップロードするためのプラグインから,逐次解凍するために利用されることになる.zip展開プラグインを配布する予定.
  4. 機能拡張
    アルバム本体とは直接関係ない機能を追加するためのプラグイン.
    フォルダの作成と1行掲示板のプラグインを配布する予定.
  5. ページ拡張
    アルバムの各ページにおいて機能を拡張するためのプラグイン.
    画像のアップロードや,画像の移動といった,画像に関するプラグインがメイン.
  6. 画像表示
    各ページにおいて,サムネイル画像を表示するためのプラグイン.
    このプラグインが無いと,アルバムの各ページにおいて画像を表示することができない,画像のみのサムネイル表示,画像のタイトルなどの情報を含めたリスト表示,一枚ずつ画像を表示するスライドショーの3つのプラグインを配布する予定.
の6種類である.

2006/05/27(土)ハッシュによる画像へのリダイレクト

とりあえず実装してみた.ハッシュがハッシュリストに登録されているか調べることで,すべての画像の中から重複画像を探すことができるようになった.また,リストの情報を更新することでファイルの移動にも対応することが出来るようになった.

現在のところ,ハッシュの先頭2バイトをファイル名としてリストへと登録している.configで利用するバイト数を指定できるようにしてもいいが,このリストは一つのフォルダにまとめておいてしまっているため,あまりファイル名を長くするとリストファイルの数が多くなりすぎるので,注意が必要.3バイト以降は,2バイトずつ切って,フォルダを掘るのもいいかもしれない.

ハッシュに関して,似た画像のハッシュは似たような値にすることは出来ないのか?ある程度解像度を落とした画像の各ピクセル情報を持ってくることで似た画像の検索,また,それをハッシュにすることで,似た画像の検索が出来るようになると良い.