2012/06/28
【2012/7/6 追記】
このアイディアは、アクセスが非常に多いサービスなどではメール通知が爆発する危険性があり、最適な方法とは言えないと気づきました。
↓補足エントリーを書きましたのでこちらもあわせてご覧ください
WEB アプリケーションのエラーをメールで通知する時に気をつけること
【/追記終わり】
また、FuelPHP の話しですよー。
WEB アプリケーションを動かしていて、何かエラーが発生した時に、管理者にメールで通知する、ってよくある話だと思うんですが、FuelPHP だとどうするのかなー、って色々考えて、この方法どうかなというのを思いつきましたので晒します。
それは、
エラー画面の View ファイルにメール送信のコードを埋め込む
です。
まず、COREPATH/views/errors/
以下のファイルを APPPATH/views/errors/
にコピーしてきます。FuelPHP の view ファイルはただの php なので、コピーしてきた各エラー用の view ファイルの末尾に、たとえば、APPPATH/views/errors/php_error.php
なら
こんな風にメール送信スクリプトを書き加えると、エラーが発生するとメールが送信されてきます。
ちょっと工夫したのは、メールの body に View::forge()
したものを渡しているところでしょうか。
ちなみに、メール本文の view ファイル error_mail.php
はこんなかんじです。
すると、こんなメールが送られてきます。
実は、もっとちゃんとした方法がありそうな気もするんですが、ちょっと見つけられなかった。みんないったいどうしてるんだろう??
もし、こんなのあるよー、というのがあればぜひ教えてください。
2012/06/26
仕事で日本の住所を扱う機会が多いので、FuelPHP のパッケージの勉強も兼ねて、ひとつ試しに作ってみました。その名も「fuel-jpaddress」!名前超ダサい!
https://github.com/omoon/fuel-jpaddress
今のところできるのは、
の2つ。
今回は、郵便番号から住所を取得する部分に、以前 @msng さんに教えてもらっていつか試したいと思っていた Google CGI API for Japanese Input を使ってみました。詳しくはこの辺のソース参照のこと。
さて、このパッケージをあなたのアプリでも使いたい場合は、こんな感じになると思います。ここでは、FuelPHP らしく oil コマンドでインストールする方法を紹介します。
COREPATH/config/package.php
return array(
'sources' => array(
'github.com/fuel-packages',
),
);
これを、APPPATH/config/package.php に持ってきて、
return array(
'sources' => array(
'github.com/fuel-packages',
'github.com/omoon',
),
);
とします。これで、oil コマンドで インストールできるようになります。
$ oil package install jpaddress
Downloading package: git://github.com/omoon/fuel-jpaddress.git
remote: Counting objects: 30, done.
remote: Compressing objects: 100% (21/21), done.
remote: Total 30 (delta 8), reused 23 (delta 3)
Receiving objects: 100% (30/30), 4.61 KiB, done.
Resolving deltas: 100% (8/8), done.
Cloning into /Users/omoon/Documents/foo/fuel/packages/jpaddress...
こんな感じで先ほど追加したレポジトリからインストールされます。
なお、oil コマンドは、リポジトリの中からパッケージ名が「fuel-hogehoge」となっているものを探しに行くようなので、パッケージを作る時は、「fuel-hogehoge」とする必要があるようです。そうすると、パッケージ名が「hogehoge」と認識され、$ oil package install hogehoge
でインストールできる、ということみたいです。
で、jpadress を APPPATH/config/config.php の always_load の部分に追加します。config も使ってるのでそっちも。
return array(
'always_load' => array(
'packages' => array(
'parser',
'jpaddress', // 追加
),
'config' => array(
'session',
'jpaddress', // 追加
),
)
);
これで、
Jpaddress\Ken::getName(27); // 大阪府
Jpaddress\Ken::getShortName(27); // 大阪
Jpaddress\Jusho::getJushoByZip('531-0071')); // 大阪府大阪市北区中津
Jpaddress\Jusho::getJushoByZip('5310071')); // 大阪府大阪市北区中津
こんな風に使えるようになるはずです。
では、また。
2012/06/14
『FuelPHPの”KILL ALL HUMANS!”のロボットには名前があるのか』を朝電車の中で読んでいたら、もう気になって気になって仕事が手につかないので、直接聞いてみました。
ここは twitter で。いきなりこんな風に聞いたった。
@omoon you’ll need to ask @dallard if the robot has a name. I think he should be called Tim the Tin robot, but I suck at names. ^PS
— FuelPHPさん (@fuelphp) 6月 14, 2012
ということで、最終回答は @dallard さんの返答待ちですが、今のところ「Tim the Tin robot」っていうのが有力みたいですね。「ブリキのちむ」(ティムではなく敢えて「ちむ」を推したい)ってところでしょうか。
【追記】正式回答来ました!「ブリキのちむ」でファイナルアンサーです!
@omoon @fuelphp The guy on docs.fuelphp.com/packages/oil/r… should definitely be named “Tim the tin robot”. The guy on my site is “Peepo”.
— Derek Allardさん (@dallard) 6月 14, 2012
【/追記】
続いて、Pagoda Box のこのロボット2体。
Pagoda Box が何なのかということについては機会があれば色々と書きたいのですが、簡単に言うと、PHP が使える PaaS! しかも無料から! ってところでしょうか。実はこのブログも Pagoda Box でタダで動かしてます。
で、Pagoda Box はサイト上にライブチャットがあるんですね。早速聞いてみました。
左のあいつは「Hal」。右のやつには名前がないと。で、オススメない?って聞かれたので、僕の名前「omoon」使ってもいいよ、っていうときました。
では、最後に復習です。テストに出ますから、みなさんしっかり覚えましょう。
あー、すっきりした。
おまけ)
Pagoda Box とのチャットログです。ひどい英語です。英語へのツッコミも大歓迎です。
→my name is omoon, and my address is [email protected]
→can i ask you a question?
Hal: hi!
Hal: sure!
→I can see two robots at this page https://pagodabox.com/
Hal: i want to help any way that I can
→does they have names?
→do they have names?
→sorry about my poor english;-(
Hal: one is hal, but we don’t have a name for the other
Hal: your english is fine
→which is hal?
→left one?
→ ???
→r u hal?
→!
Hal: i’m not hal
Hal: 😀
→oh, ;-D
Hal: the left one is hl
→left one is hal, right?
Hal: hal
→oh, i c
→and the right one has no name, right?
Hal: that is correct
Hal: do you have any recommendations?
→yes, you can use my name ‘omoon’!
→;-)
Hal: 😛
→anyway, you all should have to have a meeting to named he/her.
→ok, thank you.
Hal: someday I’m sure we’ll decide
Hal: 😀
Hal: you are the first person to ask
→I will blog about his name.
→thank you!
→take care!