CakePHPではデバッグレベルが2の場合、レンダリングした画面の下部に発行したSQLのログを表示してくれます。

この機能は非常に便利ですが、本番環境などでデバッグレベルを0にしていると、発行したSQLを確認する手段がありません。

本番環境で何かしらデータベースエラーが発生した場合に、発行されているSQLを確認したいと思っても、そのままでは方法が無いのが現状です。

そこで、利用しているデータベースのドライバクラスを改良して、CakePHPのデバッグレベルに関わらず、発行したSQLをログファイルに保存できるように改造してみます。

ロギング用のデータベースドライバを作成

CakePHPのコアファイルに手を入れるのは避けたいので、データベースのドライバクラスを継承したログファイル保存用のドライバクラスを作成します。

ここではMySQLを利用する場合を想定します。
他のデータベースを利用している場合は、適宜利用しているデータベースのドライバクラスにを読み替えて下さい。

ファイルを作成

app/models/datasources/dbo_mysql_log.php を作成します。

dbo_mysqlを継承したコードを記述する

ここではDboMysqlを継承したDboMysqlLogという名前でクラスを作成します。

そして、SQLを発行するための関数であるexecute関数と、SQLのログ表示に関する処理を行うlogQuery関数をオーバーライトして、SQLをログに保存する設定であれば、実行したSQLをログファイルに保存できるように改良します。

App::import()関数を利用してスーパークラスを読み込んでおかないとエラーが出ますので注意して下さい。

データベースの接続設定を行う

app/configs/database.php ファイルの中で、利用するデータベースのドライバ指定を、先ほど作成したドライバに切り替えます。

public $development = array(
	'driver' => 'mysql_log',
	'persistent' => false,
	'host' => 'localhost',
	'login' => '********',
	'password' => '********',
	'database' => 'test',
	'prefix' => '',
	'encoding' => 'utf8'
);

driverの指定は、作成したドライバのファイル名から dbo_ と拡張子を除いたもので指定しましょう。

ログ保存用の設定を行う

config/bootstrap.php に下記のようなコードを記述します。

Configure::write('Sql.log', true);

これで、デバッグレベルに関係なく、発行されたSQLが tmp/logs/sql.log に出力されます。

Facebookのコメントプラグインは設置も簡単で、さらにフィードバックも得られやすい素晴らしいソーシャルプラグインだと思いますが、ちょっとした設定を加えるだけで「コメントの管理画面」を表示できるので、その方法を簡単にまとめてみました。

以下は何も設定していないFacebookのコメントプラグインです。

コメントができる以外に、特に機能はありません。

ここで、ちょっとした設定を加えるだけで下記のような、コメントのモデレーションやコメントプラグインの挙動を設定できる、管理画面を表示することができます。

CONTINUE READING

本日、ドメインをietomi.is-blog.netより、inspire-tech.jpに移転しました。

旧ドメインでもアクセス可能ですが、もしブックマークされている方がいらっしゃれば、URLの変更をお願いいたします。

というわけでドメイン移転をしたので、その際に行ったことをまとめてみます。

前提

自分の場合、下記のような条件でドメインの移転を行いました。

サーバー
変更無し
データベース
同一サーバー上なので変更無し
ドメインのディレクトリへのマッピング
  • ietomi.is-blog.net/www/ietomi.is-blog.net/
  • inspire-tech.jp/www/inspire-tech.jp/
行ったこと
ietomi.is-blog.netinspire-tech.jpに切り替える

新しく取得したドメインを古いドメインと同一のサーバーにマルチドメインとして割り当てて、新しいドメインでWordPressが稼働するようにしました。

ファイルを移動

まずは稼働しているWordPressの全ファイルを、古いドメインのディレクトリ/www/ietomi.is-blog.net/から新しいドメイン用のディレクトリ/www/inspire-tech.jp/に移動します。

何か不具合があったときのために、まずはコピーで対応すると良いでしょう。

データベースの書き換え

ファイルを移動しただけだと、WordPressの管理画面が404エラーになってしまい、ログインすることさえできなくなってしまっています。

これは、WordPressの環境変数に古いドメインが含まれているためです。

また、投稿記事の内容などにも古いドメインが含まれているため、データベースの内容を全て新しいドメインに書き換えてやる必要があります。

下記は最低限変更を書き換えを行ったテーブルです。
必要に応じて他のテーブルも書き換えて下さい。

wp_options
UPDATE wp_options SET option_value=REPLACE(option_value, 'ietomi.is-blog.net, 'inspire-tech.jp')
wp_posts
UPDATE wp_posts SET post_content=REPLACE(post_content, 'ietomi.is-blog.net', 'inspire-tech.jp'), guid=REPLACE(guid, 'ietomi.is-blog.net', 'inspire-tech.jp')

.htaccessのでリダイレクト設定

古いURLを参照した場合に404になってしまうのは問題なので、ModRewireを使ってリダイレクトを設定します。

.htaccess/ietomi.is-blog.net/に設置することにします。

RewriteEngine on
RewriteBase /ietomi.is-blog.net/
RewriteRule ^$ http://inspire-tech.jp/ [R=301,L]
RewriteRule ^(.+)$ http://inspire-tech.jp/$1 [R=301,L]

ステータスコード301を返すことで、検索エンジン等に恒久的なURL移動があったことを伝えます。

移行完了

以上でドメインの切り替えは完了です。

切り替えは非常にあっけなく終わりましたが、ソーシャルプラグインのカウントが0になってしまったのはちょっと寂しいですね。

OGP属性のog:imageは複数指定することができる

Facebookで利用され初めてから、最近ではmixiやgreeなど日本の大手ソーシャルメディアも対応し、利用者の増え続けているOGPですが、その属性の1つであるog:imageには、複数の画像が利用できることはご存知でしょうか?

OGPっていったい何?という方や、Facebookやmixiのいいね!ボタンは設置してみたけどOGPなんて知らないという方は、下記の記事をご覧ください。

OGP属性のog:imageは、Webページのサムネイルを示すもので、正しく指定しておくと、例えばFacebookのいいね!ボタンが押された時などに、リンクやその他情報と共に、そのサムネイルがボタンを押した方のウォールに投稿されます。

実はこのog:imageですが、他のOGPタグと違って、以下のように複数指定しておくことができます。

<meta property="og:image" content="http://inspire-tech.jp/wp-content/uploads/2011/07/facebook-wall-300x134.png" />
<meta property="og:image" content="http://inspire-tech.jp/wp-content/uploads/2011/07/facebook-share-300x258.jpg" />

複数指定する事でどんな意味があるかというと、Facebookのシェアボタンをサイトに埋め込んでいる場合に、クリックした人がシェアする際のサムネイルを、自由に選んでもらうことができるようになります。

Facebookのいいね!ボタンではあまり意味なし

ただ、Facebookのいいね!ボタンに限ってみた場合、og:imageを2つ以上記述する意味はあまりありません。

いいね!ボタンはシェアボタンとは違い、og:image属性が複数指定されていても、シェアボタンが押された場合の画面のような、画像の選択は表示されません。

選択が表示されないばかりか、設定してあるog:image属性の中から1つが、Facebookによって自動的に利用されます。

しかしながら、この自動的に選択する部分の仕様が不透明で、どういった条件で1枚の画像を選ぶのか、その条件が全くわかりません。

画像サイズやファイル名、アスペクト比などでソートされているのかと思っていろいろと実験してみましたが、特に関係が無いようでした。

今後のソーシャルメディア側の対応に期待

今後、各ソーシャルメディアやそのほかのサービスで、さらにOGPを使った機能が増えてくると思いますが、いつ如何なるサービスで、この複数指定が生きてくるかわかりません。

現状ではあまり使い道はないですが、覚えておいても損はないでしょう。

Facebookのいいね!ボタンがとても流行していますが、いいね!ボタンの真の力を発揮させるためには、Open Graph Protocol(OGP)の設定が不可欠なのはご存じでしょうか?

今回はOGPとは何なのか、どのように設定すれば良いのかを調べてみました。

CONTINUE READING