CKFinder からKCFinderに乗り換え

WYSIWYGエディタは「CKEditor」 + 「CKFinder」を利用していたが、「KCFinder」というツールを見つけた。

CKFinderは有料だが、KCFinderは無料で利用可なので、早速導入してみた。

インストールはこちらを参考にさせていただきました。
では、早速インストールしてみる。

1.CKEditorをインストール
  (詳細は省略)

2.KCFinderをダウンロード

3.ダウンロードしたKCFinderををサーバーに設置

  CKEditorを doc_root/js/ckeditor に設置しているので、
  KCFinderを doc_root/js/kcfinder に設置する

4.kcfinder/config.php に追記

//    override config setting
$_CONFIG['disabled'] = !CheckAuthentication();
$_CONFIG['uploadURL'] = '/uploads/';
$_CONFIG['uploadDir'] = 'doc_root/uploads/';

//  ユーザー認証
function CheckAuthentication() {
    include 'lib/Admin/Auth.php';
    return AdminAuth::isAuthorized();
}

※【AdminAuth】クラスは自作クラス

5.CKEditorにKCFinderをセットアップ
  ckeditor/config.js を修正

CKEDITOR.editorConfig = function( config )
    ・・・
    config.filebrowserBrowseUrl = '/js/kcfinder/browse.php?type=files';
    config.filebrowserImageBrowseUrl = '/js/kcfinder/browse.php?type=images';
    config.filebrowserFlashBrowseUrl = '/js/kcfinder/browse.php?type=flash';
    config.filebrowserUploadUrl = '/js/kcfinder/upload.php?type=files';
    config.filebrowserImageUploadUrl = '/js/kcfinder/upload.php?type=images';
    config.filebrowserFlashUploadUrl = '/js/kcfinder/upload.php?type=flash';
});

これでインストール完了。

6.実際にアクセスしてみる。

「サーバーブラウザ-」をクリック

あれ?まっしろ、、、

 

原因を調査すると、kcfinder/core/autoload.php に定義されている function __autoload() が正常に動作していない様子。
自分のソースではZendFramework なども使用しているため、__autoload() が上書きされてしまったようだ。

 

7.ということで、再度 kcfinder/config.php に追記

//    __autoloaderが上書きされるので再定義
spl_autoload_register('kcfinderAutoload');
function kcfinderAutoload($class) {
    if ($class == "uploader")
        require "core/uploader.php";
    elseif ($class == "browser")
        require "core/browser.php";
    elseif (file_exists("core/types/$class.php"))
        require "core/types/$class.php";
    elseif (file_exists("lib/class_$class.php"))
        require "lib/class_$class.php";
    elseif (file_exists("lib/helper_$class.php"))
        require "lib/helper_$class.php";
}

再度アクセスする。

めでたく表示されました。

ちなみにファイルのアップロードは、FireFoxやGoogleChromeならドラッグ&ドロップでも行えます。
便利!!

 

「KCFinder」は「CKFinder」と遜色なく使える。

ただし注意点として、KCFinderは以下の条件が必要

  1. WebサーバはApache2
  2. PHP5をApacheのモジュールとしてインストール
    (できればPHPのバージョンは5.3以上)
  3. PHPのGD、ZIPモジュール利用可
  4. IE6なんてサポートしません

 

 

郵便番号検索API

郵便番号検索APIを公開しました。
郵便番号検索と住所検索ができます。

概要

元データは、日本郵便の郵便番号データおよび事業所の個別郵便番号データを使用しています。
毎月1日の早朝に最新データを取り込みDBを更新します。
※日本郵便のサイトでは月末に更新されているようです。

無料で利用できます。
今後、サーバーの負荷状況によってアクセス制限をすることがあるかもしれませんが、今のところは考えていません。
利用される方は、利用規約に同意したとみなします。
 

1.郵便番号検索

リクエストURL

[結果を json で取得したい場合]
http://groovelab.asia/zipcode/address.json

[結果を xml で取得したい場合]
http://groovelab.asia/zipcode/address.xml

リクエストパラメータ

zipcode : 郵便番号
  ※8000001 または 800-0001 としてください。

レスポンスデータ

※文字コードはUTF-8
・リクエスト郵便番号に対応する住所データが存在する場合

項目名 説明
status 'OK' データ取得状態
results array 取得データを格納
results.method 'address' リクエストメソッド
results.type 'json' or 'xml' レスポンスタイプ
results.count '1' 取得したデータ件数
results.address array 取得した住所データを格納
results.address.zipcode ex.) '8100001' リクエストした郵便番号
results.address.ken_id ex.) '40' 都道府県ID
results.address.ken ex.) '福岡県' 都道府県名
results.address.address1 ex.) '福岡市中央区' 住所1
results.address.address2 ex.) '天神' 住所2
results.address.ken_kana ex.) 'フクオカケン' 都道府県名カナ
results.address.address1_kana ex.) 'フクオカシチュウオウク' 住所1カナ
results.address.address2_kana ex.) 'テンジン' 住所2カナ

 

・リクエスト郵便番号に対応する住所データが存在しない場合

項目名 説明
status 'OK' データ取得状態
results array 取得データを格納
results.method 'address' リクエストメソッド
results.type 'json' or 'xml' レスポンスタイプ
results.count '0' 取得したデータ件数
results.address 空配列 取得データがない

サンプルリクエストURL

json で取得したい場合
http://groovelab.asia/zipcode/address.json?zipcode=8000001
または、
http://groovelab.asia/zipcode/address.json?zipcode=800-0001

xml で取得したい場合
http://groovelab.asia/zipcode/address.xml?zipcode=8000001
または、
http://groovelab.asia/zipcode/address.xml?zipcode=800-0001

 

2.住所検索

リクエストURL

[結果を json で取得したい場合]
http://groovelab.asia/zipcode/search.json

[結果を xml で取得したい場合]
http://groovelab.asia/zipcode/search.xml

リクエストパラメータ

keyword : 検索キーワード
start:データ取得オフセット
※1度に取得できるデータ件数は100件まで

レスポンスデータ

※文字コードはUTF-8
・検索キーワードに対応する住所データが存在する場合

項目名 説明
status 'OK' データ取得状態
results array 取得データを格納
results.method 'search' リクエストメソッド
results.type 'json' or 'xml' レスポンスタイプ
results.count ex.) '100' 取得したデータ件数
※総件数ではありません
results.next ex.) '100' 次回取得時にstartパラメータにセットするオフセット値
※0の場合、全データ取得済み
results.address array 取得した住所データを格納
results.address.zipcode ex.) '8100001' リクエストした郵便番号
results.address.ken_id ex.) '40' 都道府県ID
results.address.ken ex.) '福岡県' 都道府県名
results.address.address1 ex.) '福岡市中央区' 住所1
results.address.address2 ex.) '天神' 住所2
results.address.ken_kana ex.) 'フクオカケン' 都道府県名カナ
results.address.address1_kana ex.) 'フクオカシチュウオウク' 住所1カナ
results.address.address2_kana ex.) 'テンジン' 住所2カナ

 

・検索キーワードに対応する住所データが存在しない場合

項目名 説明
status 'OK' データ取得状態
results array 取得データを格納
results.method 'search' リクエストメソッド
results.type 'json' or 'xml' レスポンスタイプ
results.count '0' 取得したデータ件数
results.next '0'  
results.address 空配列 取得データがない

 

サンプルリクエストURL

json で取得したい場合
http://groovelab.asia/zipcode/search.json?keyword=福岡県福岡市

xml で取得したい場合
http://groovelab.asia/zipcode/search.xml?keyword=福岡県福岡市

※results.next が 0でない場合は、リクエストパラメータ start にその値をセットして、
再度検索してください。
例.) results.next が 100 の場合
http://groovelab.asia/zipcode/search.xml?keyword=福岡県福岡市&start=100

利用規約

  • 郵便番号検索APIを利用した時点で当規約に同意したものとみなします。
  • 個人・法人・商用・非商用問わず無料でご利用可能です。
  • 各種コンテンツ等の無断転用を禁じます。
  • 当サイト内のサービスを使用したことによる一切の損害等に対し責任を負いません。
  • 当サイト内のサービスが使用できなくなったことによる一切の損害等に対し責任を負いません。
  • 管理人が不適当と判断した場合、設置・公開を中止していただく場合があります。
  • このページの内容(著作権・免責事項・その他)は変更する場合があります。

PHPプロファイラー XHProf

PHPのプロファイラー「XHProf」が紹介されていた。
元ネタはphpspot開発日誌より。

前は、XdebugとWinCacheGrindでプロファイルできたが、XHProfだと一度設定すればブラウザだけでプロフィリングできる。チョー便利。

 

続きを読む

Navicat9 Lite

仕事先でNavicatというGUIのRDB管理ツールを教えてもらったので、使用方法などをメモ。

MySQLやPostgreSQLなどのRDBを操作するとき、基本的にはコマンドライン(Windowsならコマンドプロンプト、linuxならtera term)で直接SQL文を書いているが、ただ単にテーブルデータの一覧が見たい時とかはちょっと面倒くさい。こんな時はNavicatを使うと、とても楽。

Navicatには有料版と無料版(Navicat Lite版)があり、無料版は一部機能が制限されているが、普通に使用するには何も問題ない。

インストールは簡単。

まずはNavicat9 Liteをダウンロード。

アンケートに応えて、メルマガ購読すればダウンロード出来る。

インストールは、ダウンロードしたインストーラを起動して画面にしたがってクリックしていけば、あっという間に完了。

起動後、最初に設定するのはDBへの接続設定。

ローカルマシンのPosgfreSQLに接続したいので、「接続」→「PostgreSQL」をクリックして接続設定画面を表示する。

ホスト名・ポート・初期データベース・ユーザー名・パスワードを入力して確認ボタンをクリックすれば接続設定が保存される。(初期データベースは空で登録した)

作成した接続設定をダブルクリックすると、DB一覧が表示される。
DB名をダブルクリックすると、テーブル情報が表示される。

 

このNavicatはテーブル、ビュー、ファンクション(ストアドプロシージャ)など基本的な操作が出来るだけでなく、ユーザー管理やダンプ出力、SQLを直接記述してクエリを実行できる。

本番環境は、外部からDB接続するのは難しいだろうが、ローカル開発環境ならGUIで楽にRDBが管理ができる。すばらしい。

でも、こういう便利ツールに慣れてしまうと、本番サーバーにログインして調査するときにSQL文が書けなくなったりしてしまう気が、、、

追記:

「ツール」「オプション」「基本-ドッキング」「ドッキングを使用-ウィンドウをドック-メインウィンドウに」

これで、テーブルデータを表示したとき、別Windowではなく、同一Window内に表示される。

jQueryとmootools

JavaScriptのフレームワークとして、これまではmootoolsを使ってきたのだが、自分の周りを見渡すと自分がマイノリティーであることが発覚。みんな、jQueryを使ってた。。。

という訳で、jQueryについて少し調べてみた。

まずは、Googleトレンド(国内)

あれ、、、mootoolsが0、、、

次にGoogleキーワード検索の件数

jQuery 38,200,000件 検索結果
mootols 2,530,00件 検索結果

圧倒的だ、、、

 

Amazonで本を検索

jQuery 132件 検索結果
mootools 8件 検索結果

圧倒的だ、、、
てか、mootoolsの日本語の本は無いんだ、、、

 

フォーラムの投稿件数

jQuery 75620件 参考リンク
mootools 13112件 参考リンク

 

こんなにmootoolsがマイナーだとは思わなかった。。。

2、3年前にドキュメントを見たときは、絶対mootolsのほうが使いやすいと思ったけど、
jQueryのドキュメントがこんなにも充実していたのは知らなかった。

長いものには巻かれたほうが良いので、今後はjQueryにします。
とりあえず、

jQuery 日本語リファレンス

を読みながら慣れていこうと思う。
 

CKFinderの設置方法

前回設置したCKEditorにCKFinderを設置するこになった。
というわけで、設置方法をメモる。

1.CKFinderをダウンロード

2.ダウンロードしたCKFinderをサーバーに設置

基本的には、公式サイトにドキュメントがあるので、そちらを参考にすればOK。
CKEditor Developers Guide
CKFinder Developers Guide

設置場所はどこでも良いが、CKEditorが設置しているのと同じディレクトリにする。
/home/username/public/js/ckfinder/
(CKEditorは、/home/username/public/js/ckeditor/ に設置している)

3.ckfinder/config.php を修正

・ライセンスコードを記述

$config['LicenseName'] = 'hoge';
$config['LicenseKey'] = 'fuga';

・CheckAuthentication関数を変更
    ログインユーザー(管理者)のみファイルアップロードが可能にしたいので、認証ロジックを組み込む。

function CheckAuthentication()
{
    include 'lib/Admin/Auth.php';
    return AdminAuth::isAuthorized();
}

※【AdminAuth】クラスは自作クラス

・baseURLを変更
    ログインユーザーごとにアップロードディレクトリを変更する。

if ( CheckAuthentication() )
{
    $identity = AdminAuth::getInstance()->getIdentity();
    $baseUrl = '/uploads/'.$identity->userid.'/';
}

4.CKEditorを組み込んでいる入力画面を修正

・jsファイルを読み込み

<script type="text/javascript" src="/js/ckfinder/ckfinder.js"></script>

・CKEditorのtoolbar に ['Image','Flash'] を追記

・CKEditorにCKFinderをセットアップ

var editor = CKEDITOR.replace( 'editor' , {
    ・・・
    config.filebrowserBrowseUrl      = '/js/kcfinder/browse.php?type=files';
    config.filebrowserImageBrowseUrl = '/js/kcfinder/browse.php?type=images';
    config.filebrowserFlashBrowseUrl = '/js/kcfinder/browse.php?type=flash';
    config.filebrowserUploadUrl      = '/js/kcfinder/upload.php?type=files';
    config.filebrowserImageUploadUrl = '/js/kcfinder/upload.php?type=images';
    config.filebrowserFlashUploadUrl = '/js/kcfinder/upload.php?type=flash';
});

・イメージプロパティダイアログやFlashプロパティダイアログのタブの順番が気にくわないので、アップロードタブを一番左にセットする 参考
 

CKEDITOR.on( 'dialogDefinition', function( ev )
{
    var dialogName = ev.data.name;
    var dialogDefinition = ev.data.definition;
    if ( dialogName == 'image' || dialogName == 'flash' )
    {
        var contents = dialogDefinition.getContents( 'Upload' );
        dialogDefinition.removeContents( 'Upload' );
        dialogDefinition.addContents( contents, 'info' );
    }
});

これで、CKFinderを使えるようになった。