Author Archives: ne-zu

githubのリポジトリを作ってみた

github、もちろん利用させて頂いてましたが、自分のリポジトリを作ったことがなかったので1度やってみようと、

ナウなヤングのためのgithub入門講座 -基本機能からdotfiles管理まで-

を参考に作ってみました。

何を上げようかな〜と考えたのですが、以前PHPの種を掃除した時さっくり消したPreg Onlineを復活させることにしました。これはウェブブラウザからPreg Matchなどのpreg系関数の動作確認をリアルタイムで行えるウェブサービス(?)的なものでした。
まだまだ正規表現につまることが多いので、リアルタイムで確認できると結構便利なのですよね。。

新しい名前は Preger として、基本動作だけ簡単に作ってみました。

Demoを

http://www.php-seed.net/preger/

に置いておきますので、正規表現が苦手&初心者の方は是非お使いください。面倒でなければローカルに落として使うとレスポンスが早いと思います。

$ git clone git://github.com/yusukenakagawa/Preger.git
$ cd Preger
$ wget -O jquery.min.js http://code.jquery.com/jquery-1.7.1.min.js

README.mdの書き方などは、

脱GitHub初心者を目指す人のREADMEマークダウン使いこなし術

を参考にさせていただきました!

これでgitに触れる機会が増えるかな。。

MacでBrewでxdebug

まあBrewが入っていれば

brew install xdebug

するだけです。

Terminal  screen  97×49

お手軽ですね。

書かれているように、php.iniに

zend_extension="/usr/local/Cellar/xdebug/2.1.1/xdebug.so"

を追加します。

PHPでクロージャ

というわけでPythonをちょこちょこ使ってたので(主にGoogle Application Engineのため)、
クロージャを使うのが当たり前になりました。
でも、Pythonは言語仕様的にクロージャが使いやすくなっており、
PHPで言うなら

hoge.php
$x = 0;
function get($y) {
    $x += $y;
    return $y;
}

----

require('hoge.php');
hoge.get(2);

こんな感じで簡単にクロージャが実装できるんですよね。

まあ、それは無理なので。。クロージャを使ったことが無い人に、クロージャのサンプルを上げるとすると、

function counter () {
    $v = 0;
    return function () use(&$v) {
        return $v++;
    };
}

$c1 = counter();
$c2 = counter();

echo($c1() . "\n");
echo($c1() . "\n");
echo($c2() . "\n");
echo($c1() . "\n");
echo($c2() . "\n");
echo($c1() . "\n");

wikiにも載ってるこんな感じのプログラムでしょうか。counterの返り値に無名関数を返して、$vをlexicalに使おうという感じのプログラムです。phpはuse()で使用するlexical変数を指定しなくてはいけないんですねー。変更も加えるので参照付き呼び出しです。
結果は、

0
1
0
2
1
3

こうなります。
便利ですか? まあクラスでやっても同じですねw

class Counter
{
    private $v = 0;
    public function inc()
    {
        return $this->v++;
    }
}

$c1 = new Counter();
$c2 = new Counter();

echo ($c1->inc() . "\n");
echo ($c1->inc() . "\n");
echo ($c2->inc() . "\n");
echo ($c1->inc() . "\n");
echo ($c2->inc() . "\n");
echo ($c1->inc() . "\n");

本当は名前空間を汚さないように、Javascriptのように

(function () {
    function () {
        // hogehoge
    }
})()

こう使いたいんですけど、最後の()で関数実行が出来ないんですよね。
PHPの無名関数は返り値に使うか変数に入れるかしないといけないみたいです。。
残念。

なんだかんだでPHPに戻ってきた

去年はPython、Scalarと他の言語もちょいちょいっと触ってみましたが、なんだかんだでプロトを作ったりサンプルを作ったりなどのプログラムにが多い私としては、やはりPHPが一番使いやすいですね。
「この時はどうするんだっけ」
「PHPで出来るあれは、Pythonだとどうすれば・・」
などを一々調べるのが面倒というのが1番かもしれません。

でもなんだかんだで他の言語を触ってみるのはいいことだな、とも思いました。
Pythonはクロージャ使って当たり前な感じなので、PHP5.3では積極的にクロージャを使っていこうと思ったりしますし。

というわけで、サーバサイドはPHP、フロントエンドはPHP+Javascriptで2012年は乗り切ろうと思います。
でもRubyもやるかも。

新しくなったamazon APIにアクセス

Amazon APIを叩きまくってた日々が懐かしく思われる私ですが、色々と仕様が変わってからさっぱりでした。
ので、ちょっと調べてみたところ、このサイトが非常に参考になりました。

Knockin’on TechLog » Blog Archive » amazon API (AWS) を試す PHP.

まあ、所謂2leggedOAuthな感じですね。

上記サイト、非常に参考になったのですが、実行して出来たURIを叩いてみると

Mozilla Firefox  Vimperator

必要なパラメータが無い、と怒られます。AssociateTagなど、と指定されているので、これが良く忘れられがちなんでしょうね。というかこれが最近必須になったのか。

上記サイトのサンプルプログラムに


// 検索するキーワード 入力から取得
$params['Keywords'] = "php";
// AssociateTagを追加。
$params['AssociateTag'] = 'php-seed-22';

AssociateTagを追加して、出来たURIを叩くと無事リクエストが通りました!

認証が必要になるのも時代の流れですかね。

2011年、PHPerにオススメの本。

2011年、あまりPHP関係の本は読まなかったものの、一番のオススメといったらやはり所謂徳丸本の

これでしょう。買ってさらっと読んで手元に置いておくだけでもいいと思います。こんなに勉強になって実践的な本はない! そのうちどんな中身かブログに書こうと思っていて、ついに年を越しましたのでw せめて紹介だけでも。

どうもこのPHPの種はビジネスでPHPをやられている方がよくご覧になられているようなので、ビジネス向けとして紹介したかったのです。社内にこういうことをちゃんと考える人がいたほうが何かと良いかと。というかあなたがぜひ社内のセキュリティ第一人者になって、社内のセキュリティ向上をドライブしていってください。私も頑張ります!

HTTP_RequestとHTTP_Request2の速度比較

http_request http_request2

10回

2.298秒 3.748秒

2.248秒 3.814秒

2.282秒 3.650秒

100回

22.825秒 37.209秒

22.289秒 38.675秒

22.598秒 38.534秒

1000回

238.429秒 359.032秒

引用元: pear HTTP_RequestとHTTP_Request2の速度比較 | ユメーディア blog.

時代の流れでHttp_Request2を使ってますけど、この結果を鑑みるにHttp_Requestを使いたくなりますね。
うーむ。

WordPress 3.2以降でトラックバックの仕方が分からなくなった貴方へ。

さっき記事を投稿して、関係する自ブログ記事へのトラックバックを送ろうと思ったら、トラックバックを記述する場所が無い。why?

バージョンアップを重ねるうちに、何処かに行ってしまったトラックバック。
実は投稿画面右上の「表示オプション」の中に、
トラックバック送信というチェックボックスがあって、そこで有効にすることでトラックバックウィンドウが出るのでした。

同じ境遇の人の助けになれば幸い。

phpプログラム中でエラー表示する設定に変更。

また来ました。エラーが表示されない!たぶんphp.iniで表示しない設定にされてるんだろうけど、script本体で表示:非表示をon:offしたほうがスマートだよね。でも方法忘れた!(笑

そんな状況、何度もあって、そんな時はこのブログを検索することにしてるのですが、それでも検索しにくいなーと感じたのでもう1回投稿です。

とりあえず、phpinfo()で本当に

  • display_errorsがOFF

かチェックを。error_reportingはphpinfo()から見てもよく分からないので(笑)ついでに設定を。

error_reporting( E_ALL );
ini_set('display_errors', 'On');

phpinfo();でチェックして、display_errorsがonになってることをご確認ください。
さーこれで忘れてもすぐに検索できるぞ!私m9(・∀・)ビシッ!!

mbstringの設定メモ

良いページなのに忘れて一々検索しちゃうのでメモ。

PHPの文字化けを本気で解決する – ぎじゅっやさん.

まあ、最近はデフォルトの設定がこうなってきてますね。