log.metatype

CSS Blueprint.tmbundle

  • Jun 25, 2008, 13:08
  • Tags: mac, lib

CSS Frameworkの Bulueprint をTextMateのBundleにしてみた。

Bundleの中にマスターのソースがあって
プロジェクト毎にコピーして使える。
CSS Frameworkっていうよりも、
常用スタイルをBundleの中に貯めていって
育てていく感じで使うと良いかもしれない。

» CSS Blueprint.tmbundle

JsLoad released on Google App Engine

SWFUpload Plugin for symfony

  • May 12, 2008, 20:47
  • Tags: php, lib

探しても見つからなかったので、
SWFUploadsymfony に組込むプラグインを作ってみた。
画像ファイルのサムネイル生成は sfThumbnailPlugin を使った。

» mySWFUploadPlugin

2008-07-16 追記
公式に出たっぽい sfSWFUploadPlugin


インストールとテスト

適当なプロジェクトを作ってテストするまで。

  1. プロジェクト作成。
    mkdir myproj
    cd myproj
    symfony init-project myproj
  2. プラグインをインストール。
    サムネイル生成に必要なsfThumbnailPluginもインストール。
    symfony plugin-install http://src.metatype.jp/mySWFUploadPlugin
    symfony plugin-install http://plugins.symfony-project.com/sfThumbnailPlugin
  3. サンプル用のappsとwebに入れ替える。
    rm -R apps
    rm -R web
    mv plugins/mySWFUploadPlugin/sample/apps apps
    mv plugins/mySWFUploadPlugin/sample/web web
  4. パーミッション修正とキャッシュクリア。
    symfony fix-perms
    symfony cc
  5. これでwebにブラウザからアクセスしてテストできる。
    ファイルの配置はサンプルを見れば大体分かると思う。

使い方

詳しく説明すると大変そうだから、簡単なフローの説明。

  1. SWFUploadのコンストラクタを使わずに、
    設定名(name)を付けて、
    SWFUpload.addSetting(name, {
    	SWFUpload Settings…
    });
    設定を定義しておく。
    イベントハンドラを設定しないと、
    web/mySWFUploadPlugin/handlers.js のデフォルトの挙動が適用される。
    設定はテンプレートに直接書いても良いし、
    外部JavaScriptにまとめておいてもOK。

  2. テンプレートでSWFUploadヘルパを有効。
    <?php use_helper('SWFUpload') ?>
    ヘルパを使ってSWFUploadを起動する。
    <?php echo swfupload($name, $id, $js, $version) ?>
    引数 省略時 説明
    $name string 必須 SWFUploadの設定名
    $id string|array 必須 アップロード開始トリガーになる要素のID
    $js string|array 読込まない SWFUploadの設定や使いたい外部JavaScriptなど。
    use_javascriptヘルパを使って読込まれるので、
    web/js/ からファイル名までのパスでOK。
    $version int 9 Flashのバージョン、通常は指定なしでOK。


  3. アップロードが実行される毎に、
    現在のモジュールの executeSWFUpload がコールされる。

    アップロード処理をサポートする mySWFUploadクラスを用意している。
    mySWFUploadクラスを通すとセッションに保存されたファイルIDで、
    アップロードファイルの情報を参照できる。
    メソッド 引数 説明
    __construct $tmp_dir
    $param
    $tmp_dir でアップロードファイルを一時的に移動するディレクトリを指定。 省略時は、システムのテンポラリディレクトリのまま。

    $param はアップロードファイルのパラメータ名。
    省略時は、Filedata になる、通常は指定なしでOK。
    createThumbnail $maxWidth
    $maxHeight
    $scale
    $inflate
    $quality
    $adapterClass
    $adapterOptions
    sfThumbnailPluginを使ってサムネイルを生成する。
    引数は sfThumbnail コンストラクタと同じ。
    setResponse $data SWFUploadへのレスポンスを出力する。
    $data にPHP変数を渡すとJSON形式で、
    イベントハンドラ upload_success_handler で受け取れる。
    getFile $id staticメソッド。
    $id にセッションに保存されたファイルIDを渡すと、
    アップロードファイルの情報を返す。


  4. イベントハンドラ upload_success_handler を設定してあれば、
    executeSWFUpload からのレスポンスを受け取る。
    引数 説明
    file SWFUploadが渡すファイルオブジェクト
    id executeSWFUpload からのレスポンス。
    mySWFUpload->setResponse を使っていれば、
    セッションに保存されたファイルIDを受け取る。
    data mySWFUpload->setResponse にPHP変数を渡していれば、
    JSON形式で受け取る。
    this.getModuleURL() で現在のモジュールの正規のURLが取得できる。
    this.getSessionID() で現在のセッションIDが取得できる。

  5. あとはイベントハンドラ側で表示処理をしたり、
    モジュールのアクションに渡したりすれば良いのでは。

適当に作ったから、色々と足りない部分がありそう。

jQuery.drawer

リクエストをもらったので、
jQueryプラグイン形式のライブラリを作ってみた。
jQueryは便利。

» jQuery.drawer
» Download

PHP GD Extension for Intel Mac (64-bit)

  • Apr 10, 2008, 13:12
  • Tags: mac

2月に買ったMacBook Airをずっと放置していて、
ようやくセッティングをしているのだけれど、
PHPのGD ExtensionでIntel Mac特有の問題に当たったのでメモしておこう。

Adding GD Library for Mac OS X Leopard を参考にしたので、
詳しいインストール手順はこちらをどうぞ。


必要なもの

X11 SDKが必要で、
Xcode Developer Toolsをインストールしておけば、
たぶん一緒に入っているはず。


MacPortsのライブラリを使わないでコンパイルする

GD Extensionはコンパイル時に
libjpeg、libpng、freetypeが必要になるけど、
PPC Macの場合はMacPortsからインストールしたものでOKだけど、
Intel Macの場合は駄目っぽいので、
使わないでコンパイルする。


libjpegのインストール

libjpegが足りないのでインストールしておく。

  1. 本家のlibjpegが落ちていたので、
    MacPorts経由でソースを持ってきた。
    sudo port install jpeg
    sudo port uninstall jpeg
    cp /opt/local/var/macports/distfiles/jpeg/jpegsrc.v6b.tar.gz .
  2. jpegsrc.v6b.tar.gzを解凍してディレクトリに移動。
    cd jpeg-6b
  3. /usr/share/libtool 以下の2つのファイルをコピーしておく。
    cp /usr/share/libtool/config.sub .
    cp /usr/share/libtool/config.guess .
  4. 64-bit環境に設定。
    MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" CXXFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" LDFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -bind_at_load" ./configure --enable-shared
  5. インストール先のディレクトリを作成。
    mkdir -p /usr/local/include
    mkdir -p /usr/local/bin
    mkdir -p /usr/local/lib
    mkdir -p /usr/local/man/man1
  6. libjpegをコンパイル・インストール。
    make
    sudo make install

GD Extensionのインストール

Apple提供のDarwin Sourceを利用する。

  1. PHPのソースをダウンロード。
    新しいものがあるので、
    http://www.opensource.apple.com/darwinsource/10.5.2/apache_mod_php-44/の、
    php-5.2.5.tar.bz2を使ってみた。
  2. php-5.2.5.tar.bz2を解凍してGDのディレクトリに移動。
    cd php-5.2.5/ext/gd
  3. 64-bit環境に設定。
    libjpegはインストールした /usr/local/lib を指定、
    それ以外は /usr/X11R6 を指定。
    phpize
    MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" CXXFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" LDFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -bind_at_load" ./configure --with-zlib-dir=/usr --with-jpeg-dir=/usr/local/lib --with-png-dir=/usr/X11R6 --with-freetype-dir=/usr/X11R6 --with-xpm-dir=/usr/X11R6
  4. GDをコンパイル・インストール。
    make
    sudo make install

PDO MySQL Extensionも入れたかったのだけど、
GDと同じ様に、MacPortsのMySQLでは駄目っぽくて、
面倒くさいので断念した。