2010年4月23日金曜日

 

【Imagick】Fisheye(魚眼レンズ)エフェクト

失敗の記録。
・コマンド実行、「convert: unable to parse expression `@fisheye.fx'」と出る。
・数式をそのまま「"(ダブルクォーテーション)」で括って実行。
・エラー「convert: unable to parse expression `kk」。
・セミコロンが不味いという推測の基に式を代入して一つにする。
・エラー「convert: unable to parse expression `hypot」。
・「hypot(x,y)」を「sqrt(x*x+y*y)」に置き換える。
・画像生成、失敗。
のようなことを各式について行ってはコレジャナイ・エフェクトがかかった画像が出来上がったので手詰まり。
成功した方教えてくださると助かります。

参考

ImageMagickでFisheyeエフェクト - suz-lab - blog
convert -fx @fisheye.fx input.jpg output.jpg
fisheye.fx
kk=w*0.5;ll=h*0.5;dx=(i-kk);dy=(j-ll);aa=atan2(dy,dx);rr=hypot(dy,dx);rs=rr*rr/hypot(kk,ll);px=kk+rs*cos(aa);py=ll+rs*sin(aa);p{px,py}
fisheye view の計算式とプログラム - まめめも
Imager で魚眼っぽいフィルタつくった - TokuLog 改メ Perlを極めて起業する日記

ラベル:


2010年4月14日水曜日

 

【PHP】PHPmailerのメールアドレスバリデータ

簡単にメール送信が出来るライブラリPHPmailer
アドレスのバリデータ関数は「filter_var()」を使用するか、独自の正規表現を「preg_match()」でチェックしている。

/* class.phpmailer.php L.523~ */
public static function ValidateAddress($address) {
    if (function_exists('filter_var')) { //Introduced in PHP 5.2
      if(filter_var($address, FILTER_VALIDATE_EMAIL) === FALSE) {
        return false;
      } else {
        return true;
      }
    } else {
      return preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $address);
    }
  }

filter_var()」はPHP5.2.0以降に導入された、もとはPECLにあった関数。
定義してあるフィルターを指定して、値をチェックする。

filter_var - PHP マニュアル
検証フィルタ

PHPmailerのバリデータはPHP 5.2以降で関数があれば「filter_var()」を使うようになっている。
これの「FILTER_VALIDATE_EMAIL」オプションは次のような正規表現でチェックされている

filter_var()関数の真価を見極める - muddy brown thang
PHPのfilter_var()で入力チェック - firegoby
/* filter_var() の FILTER_VALIDATE_EMAIL オプションのフィルター */

void php_filter_validate_email(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */
{ /* From http://cvs.php.net/co.php/pear/HTML_QuickForm/QuickForm/Rule/Email.php?r=1.4 */
    const char regexp[] = "/^((\\\"[^\\\"\\f\\n\\r\\t\\b]+\\\")|([A-Za-z0-9_\\!\\#\\$\\%\\&\\'\\*\\+\\-\\~\\/\\^\\`\\|\\{\\}]+(\\.[A-Za-z0-9_\\!\\#\\$\\%\\&\\'\\*\\+\\-\\~\\/\\^\\`\\|\\{\\}]*)*))@((\\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9])(([A-Za-z0-9\\-])*([A-Za-z0-9]))?\\.?)+[A-Za-z\\-]*))$/D";

コメントを見るにPEAR::HTML_QuickFormのバリデータを使っている様子。
この正規表現の意味や解説などはリンク先を見て頂くとして、この正規表現は以下のアドレスを通す。

/* filter_var() の動作 - フィルタリングされないアドレス */
filter_var("a@a.b.c-", FILTER_VALIDATE_EMAIL);
filter_var("a@123x", FILTER_VALIDATE_EMAIL);

そして以下のアドレスを通さない。

/* filter_var() の動作 - フィルタリングされるアドレス */
filter_var('docomo.@example.com' FILTER_VALIDATE_EMAIL);
filter_var('ntt...docomo@example.com' FILTER_VALIDATE_EMAIL);

つまり日本の携帯メールアドレスをチェックするには適さない。

PHP 5.2より前のバージョンで「filter_var()」が無い場合の正規表現によるバリデータも同様に、日本の携帯メールアドレスに存在するものを通さない。
もしPHPmailerを使うのであれば、携帯ユーザのアクセスがある場合は「PHPmailer::ValidateAddress()」を変更する必要があるだろう。

/* class.phpmailer.php  PHPmailer::ValidateAddress() の変更*/
  public static function ValidateAddress($address) {
      return preg_match('/^([a-z0-9_]|\-|\.|\+)+@(([a-z0-9_]|\-)+\.)+[a-z]{2,6}$/i', $address); 
  }

有名なメールライブラリQdmailがあるが、そちらを使うのも手かもしれない。
Qdmailのバリデータは、デフォルトで「/[^@]+@[^@]+/」のみのチェックでユーザが定義することになってるし、マルチバイト対応で絵文字も使える。

関連

正規表現チェッカー

strfriend
Rubular
メールフォーム - PHPmailer+xajax - さぼてん:2009年2月14日記事

ラベル:


2010年4月3日土曜日

 

【CMS】サーバインストール型tumblog - Chyrp【オープンソース】

Chyrp
環境
PHP >= 5.1.3
MySQL 4.1+, or SQLite 3+ with PDO
追記:2010/04/07
Chyrp is available under the GNU General Public Licence (version 3) for your hacking pleasure,
Build your own Tumblog with Chyrp - Download Squad

ライセンスはGPL3のようなので商用も可能のよう。

以下のリンクの方が分りやすいので参照。
XREAレンタルサーバにインストールしたので、それ対応の解決策は最後に。

Chyrp備忘録(バージョン2.0) - AZ store

ダウンロード

Download - Chyrp

現在、ver.2.0が最新。

アップロード

解凍したディレクトリをサーバにアップロード。
(「public_html/」直下など)
同じディレクトリに「uploads/」ディレクトリを作成。

インストール

アップロードしたディレクトリの「install.php」にアクセスする。
(「http://example.com/install.php」など)

「.htaccess」の作成

表示された内容を「.htaccess」として作成し、他のファイルと同じディレクトリにアップロード。

属性の変更

以下のディレクトリの属性を「0777」に変更する。

includes/
includes/caches
uploads/
データベースの設定 - 『Database Setup』

データベース接続の情報を入力。

サイトの設定 - 『Website Setup』

サイトのタイトル、説明、ロケーションを入力。

サイト管理者の設定 - 『Admin Account』

サイト管理者のアカウント、パスワード、メールアドレスを入力する。

完了

インストールの完了。「install.php」を削除。
画像は「includes/caches/」に権限を与えてない時の警告。

あとは管理画面にログインして、テーマやモジュールをインストールしたり「tumblr」と同様の投稿フォーマットにする「feather」を有効にしたりする。
いくつかの「module」と「feather」は一緒にアップロードされている。

XREAレンタルサーバ用の対策

Zlib(gzip)の無効化

インストールしてサイトを開いたら、<だけが表示され真っ白な状態になった。
以下の部分をコメントアウトして対応。

「includes/common.php」
/* includes/common.php */
/*
    if (!AJAX and
        extension_loaded("zlib") and
        !ini_get("zlib.output_compression") and
        isset($_SERVER['HTTP_ACCEPT_ENCODING']) and
        substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], "gzip")) {
        ob_start("ob_gzhandler");
        header("Content-Encoding: gzip");
    } else
*/
        ob_start();

ChyrpではZlib(gzip)対応していれば、出力を圧縮して処理を軽くする様になっている。
XREAではZlibが存在するのでif文に従い「ob_start("ob_gzhandler")」が処理されるが、使えないようになっているようで、エラーになり表示されないと予想。

「includes/lib/gz.php」

次に、jsファイルの読込みをする「includes/lib/gz.php」も「extension_loaded("zlib")」のif文をコメントアウトする。
jsファイルが読み込めず、管理画面で『Modules』『Feathers』『Themes』のインストールが出来ない。
(無効のプラグイン一覧から有効にドラッグ&ドロップする)

/* includes/lib/gz.php L.9〜 */
/*
    if (extension_loaded('zlib')) {
        ob_start("ob_gzhandler");
        header("Content-Encoding: gzip");
    } else
*/
        ob_start();

Zlibが有効なら、jsファイルを圧縮して送る処理のよう。

追記:2010/04/05
「includes/helper.php」
/* includes/helper.php L.4〜 */
    # Since the header might already be set to gzip, start output buffering again.
/*
    if (extension_loaded("zlib") and !ini_get("zlib.output_compression") and
        isset($_SERVER['HTTP_ACCEPT_ENCODING']) and
        substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], "gzip")) {
      ob_start("ob_gzhandler");
      header("Content-Encoding: gzip");
    } else
*/
      ob_start();

改めて全ディレクトリ検索して「ob_start("ob_gzhandler")」をコメントアウト。
ログイン・ログアウト時のページ遷移が上手くいかない。

セーフティーモード

サイトの設定ファイル「includes/config.yaml.php」が、インストール後に作成される。所有者がApacheの為、セーフティーモードでは編集できないので、管理画面からの設定変更でエラーになる。
なので、「.htaccess」にCGI版の設定をするか、「config.yaml.php」をダウンロードして削除し、アップロードし直せば良い。

ラベル: ,


2010年4月2日金曜日

 

オープンソースのショッピングカートシステム OpenCart Ver1.4.0 日本語版をインストールしてみる

以前、チェックだけしてが、日本語版リリースというお知らせが届いたので試してみる。

OpenCart日本ユーザー会
動作環境
   MySQL5.0以上
   PHP5.0以上
   Apache ウェブサーバー
   共用SSL非対応 
デモ

S安くなってるので専用SSL買いましょうてことのよう。EC-CUBEもコミュニティで取り組んで実用には無理だということらしいし。
サーバはXREAレンタルサーバ。

ダウンロード

OpenCart1.4.2日本語版beta - SourceForge.JP

現在、公開されてる「opencart_v1_4_2jp_7.zip」をダウンロード。

アップロード

解凍したディレクトリ内の「upload/」の中をサーバにアップロードする。
(「public_html/」以下に)

インストール

アップロードしたURLにアクセスしてインストールを開始する。
(「http://example.com/」など)

STEP 1

ライセンスに同意して次へ進む。

STEP 2

ファイルとディレクトリの設定をする。
書き込み権限が必要なもののステータスが表示される。

次のファイルとディレクトリの属性を変更する。「0777」にする。

/virtual/[ユーザ名]/public_html/config.php 
/virtual/[ユーザ名]/public_html/admin/config.php

/virtual/[ユーザ名]/public_html/system/cache/
/virtual/[ユーザ名]/public_html/system/logs/
/virtual/[ユーザ名]/public_html/image/
/virtual/[ユーザ名]/public_html/image/cache/
/virtual/[ユーザ名]/public_html/image/cache/data/
/virtual/[ユーザ名]/public_html/image/data/
/virtual/[ユーザ名]/public_html/download/
STEP 3

データベースの接続情報とサイト管理者のアカウントを設定する。

STEP 4

インストール完了。
「install/」ディレクトリを削除する。

OpenCartの管理画面

ログイン画面。

管理画面のダッシュボード。

デモが公開されているので詳しくはそちらを見て頂くということで、雰囲気だけでも。
メニューは次のよう。

∟ダッシュボード
∟カタログ
    o カテゴリ登録
    o 商品登録
    o メーカー登録
    o ダウンロード商品登録
    o レビュー管理
    o インフォメーション登録
∟機能拡張
    o 各種モジュールの設定
    o 配送業者設定
    o 支払方法設定
    o 注文合計項目設定
    o 登録済みフィード一覧
    o 登録済みアフェリエイト一覧
∟販売関係処理
    o 顧客注文管理
    o 顧客管理
    o 顧客グループ
    o クーポン
    o メール
∟システム
    o ストアフロント
    o 設定
    o 管理者の編集&登録
        + 管理者
        + 管理者グループの権限
    o 地域設定
        + 言語の編集&登録
        + 通貨の編集&登録
        + 在庫ステータス名登録
        + 注文ステータス名登録
        + 各国特有の編集&登録
        + 地域範囲の設定の編集&登録
        + ジオゾーン
        + 課税クラス
        + 長さの単位の編集&登録
        + 重さの単位の編集&登録
    o エラーログ
    o バックアップ / 復元
∟レポート
    o 販売状況レポート
    o 閲覧された商品
    o 購入された商品
∟ヘルプ
    o (本家)公式サイトへ
    o (本家)マニュアル
    o (本家)サポートフォーラム
    o (日本)ユーザー会サイトへ
    o (日本)サポートフォーラ

簡単にインストール出来て、デフォルトのデザインもシンプルで見やすく、管理画面も使い易そう。
実際に運用しないと見えない部分もあるだろうし、リリースされたばかりなので今後期待したいところ。

ラベル:


This page is powered by Blogger. Isn't yours?

登録 投稿 [Atom]

Google