Perl開発環境を構築する

Eclipse

EPICはEclipse上でPerlの開発をサポートするプラグインで、以下の機能があり
ます。

  • リアルタイム文法チェック
  • コードアシスト
  • perldocサポート
  • ソースコード整形
  • テンプレート
  • Perlデバッガ

http://e-p-i-c.sourceforge.net/

インストール

プラグインは下記URLからダウンロードできます。
EPIC0.5.x系はEclipse3.1系用の安定バージョンです。Eclipse3.2以降を使って
いてEclipse3.1との互換性が不要な場合は、EPIC0.6.x系が推奨されています。

  • バージョン 0.5.x

http://e-p-i-c.sf.net/updates

  • バージョン 0.6.x

http://e-p-i-c.sf.net/updates/testing

Windowsの場合、PerlインタプリタとしてActive PerlかCygwinのPerlが必要に
なります。以下、Active Perlを使用した場合について説明します。

  • Active StateのサイトからActive Perlをダウンロードします。

http://www.activestate.com/Products/activeperl/

  • デバッグ時に変数の値を表示するためにはPadWarkerが必要です。

コマンドラインからインストールします。

 C:\Perl>ppm install PadWalker
 Downloading PadWalker-1.5...done
 Unpacking PadWalker-1.5...done
 Generating HTML for PadWalker-1.5...done
 Updating files in site area...done
   6 files installed
  • EclipseのメニューからWindow→Preference→Perl EPICを選択し、Perl

ExecutableにPerl実行ファイルへのパス(C:\Perl\bin\perl.exe等)を指定
します。

デバッガに関するメモ

Fire Wallや他のアプリケーションの設定によっては、CGIの実行・デバッグが
ブロックされてしまうことがあります。デバッガはポート5000-5004番を使用
します。

Eclipse3.3 + EPIC 0.5.x(安定版)環境では最初の1回目のデバッグは正しく
動きますが、デバッグをいったん終了すると、Eclipseを再起動するまで
デバッグを再開できなくなってしまいます。これはEPIC 0.6.16以降で修正され
たようです。
http://sourceforge.net/forum/forum.php?thread_id=1786869&forum_id=258688

utf-8で構文解析がおかしい

システム全体の文字コードをutf-8にすることで回避できます。
具体的にはeclipse.iniに下記設定を追加します。

 -Dfile.encoding=UTF-8

下記リンク先に詳細情報がありますので参考にどうぞ。

Peter’s Collaboration E-mails(公開承認ワークフロー管理)

WordPress

投稿された記事を承認工程を経て公開したい時に使えるプラグイン

Peter’s Collaboration E-mails
日本語名:公開承認ワークフロー管理

動作確認

WordPress3.3.1

インストール方法

プラグイン新規追加画面にて「Peter’s Collaboration E-mails」で検索。
結果一覧からPeter’s Collaboration E-mailsをインストールして終了です。

簡単な使用方法

※設定メニューに「公開承認ワークフロー」が追加されています。

既存ルールのままの使い方を説明します。
承認者はwordpress設置時の管理者のみとなっています。もし承認者を追加したい場合は、標準承認者の欄で簡単に追加できます。
承認工程を経たいユーザーの設定ですが、ユーザーの権限を「寄稿者」にします。
※「投稿者」では承認申請はされず、すぐに公開されるので注意。

これだけで設定は終了です。
寄稿者から投稿された記事は承認者が投稿画面で公開するまではサイトには表示されません。

【承認者が公開する方法】
1.クイック編集
投稿一覧でクイック編集をクリックすると色々と設定できますが、その中に「ステータス」があり、承認前は「レビュー待ち」となっています。これを「公開済み」にして更新すれば終了です。
※公開済みにした後でもステータスは変更可能です。もう一度レビュー待ちに戻す事も可能です。

2.投稿の編集
右サイドにある「公開」欄に「ステータス」があります。
こちらも1のクイック編集と同じ?かと思いきや、「レビュー待ち」と「下書き」しかありません。
こちらはステータスはいじらずにそのまま「公開」ボタンを押下すれば公開されます。
※こちらも公開後にもう一度レビュー待ちに戻すことが可能です。その場合はステータスを編集してください。

PHP preg_match等PCRE系正規表現でUTF-8日本語がうまく処理できない

PHP

preg_match等のPCRE(Perl互換正規表現)でUTF-8の日本語のパターンマッチがうまくいかないことがあります。
preg系はUTF-8日本語を正しく処理できますが、パターン修飾子「u」を正規表現の最後につけてUTF-8エンコードされた文字列であることを明示しなければなりません。

パターン修飾子「u」の例です。

 preg_match("/日本語/u", $text)

ちなみに、最近のRHEL系ディストリビューションの標準RPMのPHPではmb_ereg系は正規表現エンジンにrubyと同じくoniguruma(鬼車)を使っているので、PCREの方がmb_eregより早いとは限らないようです。
最近のPHPでは、PCREのメリットは、mbstringに依存しないで済むことだと思います。
また、鬼車とPCREは非互換の部分があるので、その点をどう考えるかということもあると思います。

  • 参考

各種正規表現エンジンのベンチマーク(2010/7/21 MacOSX10.6.4 + gcc-4.2.1)
http://lh3lh3.users.sourceforge.net/reb.shtml

PHP compact

PHP

compactという関数が、オフィシャルのPHPマニュアルだとちょっとわかりにくかったので、書いておきます。

http://jp.php.net/manual/ja/function.compact.php

 例1 compact() の例
 <?php
 $city  = "San Francisco";
 $state = "CA";
 $event = "SIGGRAPH";
 
 $location_vars = array("city", "state");
 
 $result = compact("event", "nothing_here", $location_vars);
 print_r($result);
 ?>

上の例の出力は以下となります。

 Array
 (
    [event] => SIGGRAPH
    [city] => San Francisco
    [state] => CA
 )

$A=B、$C=Dのような変数の組み合わせがあれば、それを配列にしてくれる、ということです。

PHP jsonで送られてきたデータをphpの配列として認識させる方法

PHP

PHP jsonで送られてきたデータをphpの配列として認識させる方法

APIを利用時、JSONで送られてきたデータをPHPで解釈できるようにする方法がわからなかったので、メモしておきます!

 //jsonデータの取得
 $json_data = file_get_contents( jsonデータ );
 
 //jsonデータからphpの配列に変換
 $php_data = json_decode( $json_data, true );