Home > アーカイブ > 2007-08

2007-08

PHP5.2.4ではPHPエラーでHTTP 500を返す

  • 2007-08-26 (日)
  • PHP
この記事の所要時間: 14

via: Gregory Szorc’s blog – PHP Now Using Proper HTTP Status Codes on Error

PHP5.2.4ではPHPエラーでHTTP 500 Internal Server Errorが返ってくるようにです。

PHP5.2.4RC3で試してみると、以下のような「Fatal Error」や「Parse Error」などスクリプトの実行が停止するようなエラーではHTTP 500が返ってきました。

<?php
// Fatal Error: Call to undefined function a() 
a();
?>
<?php
// Parse error: syntax error, unexpected '}'
$f = true;
if ($f) 
  echo "a";
}
?>

例外投げてcatchしない場合も同じです。

<?php
// Fatal error: Uncaught exception 'Exception'
throw new Exception();
?>

trigger_error()でE_USER_ERRORを発生させた場合もHTTP 500が出力されます。

<?php
trigger_error(null, E_USER_ERROR);
?>

ちなみにNoticeやWarningではこれまでどおりHTTP 200が返ってきました。

mod_phpを使っている時は見ることが無かったInternal Server Errorですが、これからは目にすることがありそうです。

あとHTTP経由でPHPアプリケーションを監視している場合は、頭に入れておきましょう。

PHPカンファレンス2007に参加します

この記事の所要時間: 043

9/1に開催されるPHPカンファレンス2007に参加します。

プログラムが公開されているのですが、複数の会場で講演があるのでどれを見るかは迷いますね。

基調講演以降は下のように動く予定です。

  • 11:00 大規模サイトの構築・運用ノウハウ(仮題)
  • 13:30 PHP Framework Update
  • 15:00 PHP at Yahoo! JAPAN
  • 16:00 パネルディスカッション or ライトニングトーク

16:00からは内容がまだ不明なのでそれに応じて考えます。

あと新幹線の時間はありますが、懇親会には出るつもりです。懇親会に興味あるけど行くのに抵抗がある方はこちらのエントリをどうぞ。(もし私で良ければ声懸けてやってください。お話しましょう。)

では皆さんよろしくお願いします。;-)

クリアエッジタイプって何?

この記事の所要時間: 120

名刺用のプリンタ用紙が無くなったのでヨドバシカメラに買いに行きました。

いつも買っているものを手にしようとした時、ふと目に付いたのが隣にあった「クリアエッジタイプ」の用紙。

普段の用紙はA4サイズの紙にミシン目が入っていて、印刷後に一枚一枚を切り離します。若干ながら手間もかかるし、名刺の縁に切り離したミシン目の痕が残るので少し安っぽいです。その点、このクリアエッジタイプはシールのようになっており、印刷後は剥がすだけで良いようです。またミシン目ではないので名刺の縁に痕が残りません。

これは良いということで、購入しました。

事務所に戻って、いざ印刷!ということで用紙を取り出してみてある注意書きに気づきました。

片面印刷

ええーウチの名刺は両面に刷るのですが。。。

クリアエッジタイプは台紙にくっついているので考えてみれば片面印刷は当たり前ですね。両面印刷をする方、クリアエッジタイプには注意しましょう。(あとでamazon見ると両面印刷のクリアエッジタイプもありました。どういう構造になっているのだろう。)

用紙を買い直す時間は無いので片面だけ印刷してみました。以下感想。

  • ○ 剥がすのは簡単、楽ちん
    元々切れているので簡単です。
  • ○ 名刺の縁がキレイ
    たしかにキレイです。ミシン目のヒゲもありません。
  • × 縁に黒いものが付く
    これはウチのプリンタの問題かもしれませんが、何枚かの名刺の縁に黒いものが付いていました。

というわけで今日明日で名刺交換する方、片面印刷なのはこういう経緯です。反省。。。;-)

CakePHP データベースを使わないアプリケーション

この記事の所要時間: 220

CakePHPはデータベースを使用することが前提となっているので、フレームワークがデータベースへの接続を自動的に行います。ただマッシュアップ系のサービスなどデータベースを全く使用しない場合はこの機能を無効にしたくなります。

そこでCakePHPアプリケーション全体でデータベースを使わない方法です。

ちなみにこの方法では[app/config/database.php]を作成する必要もありません。

1. モデルを使わない

コントローラの$usesにnull or array()を設定することによりモデルを使用しないようにできます。データベースへの接続はモデルを介して行うのでモデルを使わなければ接続処理は行われません。(セッションやキャッシュをDBに保存する場合は別ですが)

<?php
class HogeController extends AppController {
  var $uses = null;
}
?>

ただこの方法だと当然ながらモデルは使用できませんし、各コントローラに$uses=nullを設定する必要があります。

2. AppModelに$useTableを設定する

モデルの$useTableにfalseを設定することにより、そのモデルではデータベースを使用しないようにできます。これを利用して基底クラスAppModelの$useTableにfalseを設定します。

[app/app_model.php]

<?php
class AppModel extends Model {
  var $useTable = false;
}
?>

この方法ならAppModelに設定するだけで、全てのモデルでデータベースを使用しなくなります。1.よりも手間がかからないのでオススメです。

フレームワークのビューテンプレートに注意

いずれの方法を取った場合でもデフォルトのルーティングのままで[http://example.com/]にアクセスするとデータベースに接続できないといったエラーメッセージが表示されます。

これは出力されるビューテンプレート[cake/libs/view/templates/pages/home.thtml]にてデータベース接続を行っているためです。このビューテンプレートはアプリケーション稼働時に出力することは通常無いので無視して構いません。

なおこのビューテンプレートへのルーティングをコメントアウトしてしまえば表示されなくなります。

[app/config/routes.php]

<?php
// コメントアウト
//	$Route->connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
?>

DATABASE_CONFIGを空にする方法はNG

“データベースをまったく使わない設定” フォーラム – CakePHP Users in JapanにDATABASE_CONFIGクラスを空にする方法が紹介されていますが、1.1.16.5421ではObject#cakeError()が呼ばれてしまうのでこの方法は使えません。ご注意を。

カフェで仕事する

この記事の所要時間: 58

via. Do You PHP はてな – 「カフェで仕事」してみて分かった8つのこと

「カフェで仕事」は良いですね。気分を落ち着かせる照明にゆったりとしたソファ、適度な他人の気配。そして何より暖かいコーヒー。。。

ノートPCを持ち込んで作業をするというのがお決まりのパターンなのですが、慣れない内はなかなか旨く馴染めず色々と試行錯誤をしました。そこで「これから」の人のためにも自分なりのパターンというかスタイルをご紹介します。

アイテム

・ノートPC let’s note [CF-T4]

まずはこれが無いと始まりません。バッテリさえ充電しておけばokでしょう。

・ノイズキャンセライヤホン [SONY MDR-NC22]

これは必須です。以前は耳にひっかける普通のイヤホンを使っていたのですが、外部の音を遮断するには音量をかなり上げる必要があったので逆に集中の妨げになったり、疲労の原因になりました。

その点NCイヤホンはかなりいけてます。NCをOnにするだけでかなりの雑音を遮断してくれます。さらに音楽を適度にかけておけばカフェ内の会話くらいなら全然気になりません。

難点は耳栓をしているのと同じなので耳に入れたまま何かを食べるとかなり響きます。またPCに差したPHSが通信しようとするとノイズが発生します。あとこれはMDR-NC22特有の問題ですが、イヤホンの耳栓部分がポロポロ取れるので、たまにカバンから出すと耳栓が無くなって悲しいことになります。。。

NCイヤホンは一度付けると病み付きになります。今では事務所内でも付けてます。;-)

・A4サイズの雑誌 or ノート or ファイル

ノートPCを膝に置いて作業をしているとPCからの放熱でかなり暑くなってきます。そのためその熱を少しでも遮断するようにPCの下に敷きます。これは何か良いモノを物色中です。。。

・コーヒー

これが無いとはじまりません。

以下無くてもよいが、あれば良いもの。

・PHSカード [b-mobile]

やはり完全なオフラインは辛いのでPHPカードを差してます。ちょっとした調べモノに使います。

・ノートPC用ACアダプタ

電源が確保できる場所ならあっても良いですが、近場のカフェに行く程度ならバッテリで十分です。

ロケーション

・カフェ

あちこち行きましたが、実際のところ作業に向くところはなかなか無いですね。あまりに人大杉なところは辛いですし、タバコが吸えるところもダメです。また膝にPCを置いて作業をするのでイスとテーブルとの位置が近すぎる環境はNGでした。

というわけで最近はとあるホテルにあるカフェばかり行ってます。ここはいちおうオフィス街にあるのでスーツ姿の人が多く、ホテル内にあるため落ち着いた雰囲気です。またテーブルが無く、ソファだけの場所があるのでとても重宝しています。

・ファミレス

ドリンクバーがあるので一時良く行ってたのですが、客層がかなり賑やかな店だったので断念しました。またテーブルが近すぎる(食事をするところなので当たり前ですが)、照明が明るすぎて落ち着かない、などもあり作業には不向きと判断しました。

ドリンクバーは今でも魅力的ですけど。

・イタメシ屋

遅めの時間に行ってランチを食べた後、コーヒーを飲みながらやってみました。雰囲気は悪くなかったですが、やはりあまり長居できる場所でも無いので止めました。本を読む人はままいたのですが、さすがにPC出している人はいませんでしたし:-p。

・インターネットカフェ

まだ未開拓ですが一度やってみたいです。でも個室に入ると事務所にいるのと変わらないので意味が無いかも。

・自宅

家に持ち帰ってやってみましたが、やはり子供が小さいとこれはかなり難しいです。あと自分自身も家に帰るとモードが切り替わってしまうようで集中するのに事務所よりも苦労しました。なのでこれも今はパスです。

スタイル

・行くタイミング

煮詰まってきた時や熟考したい時、これから全く違う作業をする時が行きたくなるタイミングです。なお昼前後は間違いなく混むので避けています。快適な時間帯は場所によって異なるでしょうから色々な時間帯に覗いてみるのが良いでしょう。

一時カフェにはまっていた時期があって、その時は毎朝カフェに出勤して作業をしてから事務所に行く、という感じでした。;-)

・事前準備

これはある程度皆さんが書かれているとおりで、「やる事を明確にしておく」「ざっくりとした調べ物はやっておく(Webは開いたままにしておく)」くらいですね。

・作業開始

コーヒーを軽くすすって、NCイヤホンを装着して作業を開始します。集中してしまえばこっちのもの。音楽に頭を振り気味でも気にせずにそのままそのまま。

・作業終了

予定していた作業が完了した段階で終了ですが、自分の場合は大枠で着地点が見えたあたりでお尻がむずむずとしてきます。ただここで終わっては勿体ないので、何かしらのアウトプットが出せるまではガマンして作業を続けます。

・集中ができない時

せっかくカフェに来ても集中できない時もあります。そういう時は諦めて本を読んだりしてリラックスします。普段行っているカフェは仕事の打ち合わせなんかに使っている人もいるので、そういった話しを聞くのもなかなか楽しいです。

カフェの良さ

だらだらと書きましたが、最後に「カフェで仕事」の良さを。

  • 電話等で邪魔が入らない
  • 落ち着く雰囲気(コーヒー含む)
  • 他人がいる適度な緊張感

こんなところでしょうか。私は「オフラインである」という事には実はそれほどメリットは感じていません。実際PHSを持って行ってますし、携帯でインターネットを見ることはできます。またもしカフェで無線LANサービスがあればそれを利用すると思います。

やはり作業をするにあたってはオンラインである方が何かと都合が良いです。

それよりも場の雰囲気を使って自分を集中モードに持って行けることの方にメリットを感じています。いつかカフェみたいなオフィスにしてみたいです。:-D

皆さんも一度お試しあれ。

PostgreSQL8.1以降はoidに注意

この記事の所要時間: 131

PostgreSQL8.1以降はデフォルトではテーブルにoid列が存在しません。

このままだとPHP側からINSERTした後、pg_last_oid()で追加したレコードのoidを取り、それを使って追加したレコードをSELECTで読み込むという方法が使えません。

過去のアプリケーションを移行するなどしてoid列が必要な場合はテーブルを作成する際に以下のような方法を取る必要があります。

1. default_with_oidsをOnにする

postgresql.confにあるdefault_with_oidsをonに設定する(デフォルトはoff)とそれ以降に作成したテーブルにはoid列が生成されます。

default_with_oids = On

default_with_oidsはset文でも設定可能です。この場合設定したセッション内でのみ有効となります。

set default_with_oids = On;

2. CREATE TABLE文にWITH OIDSを付ける

CREATE TABLE文でテーブルを作成する際にWITH OIDSを付けておくとdefault_with_oidsの設定に関わらず、oid列が生成されます。

create table test(id int) with oids;

先日とあるアプリケーションをPostgreSQL7.2から8.1に移行した際にこの問題が発生しました。シーケンスから直前に追加された値を取得するなど他の方法もあったのですが、PHP側を変更したくなかったので、default_with_oids=onにして対応しました。

懇親会を楽しむ5つの方法

この記事の所要時間: 528

勉強会やセミナーなど人が集まるイベントには懇親会が付きものです。

イベント中は知り合いでもない限り他の人と話しをすることはないですが、懇親会の場となればお酒が入ることもあり、くだけた雰囲気で話しをすることができます。

自分と同じ興味を持つ人が集まって、それについて語り合うのは楽しいものです。同じ話題でも見方が人それぞれなので自分とは異なる意見を聞くのも勉強になります。また、その道で有名な方が参加される事も多いので、そういった方とお話できるのも(ミーハー的ですが;-))楽しみの一つです。

そんな懇親会ですが、慣れないうちは話しをする人が見つけられなかったり、会話に付いていけなかったりすることがあります。私自身も参加したもののうまく馴染めず、楽しめなかったことが過去にいくつかありました。

そこで自分の体験から懇親会を楽しむ方法を考えてみました。

1. 目的を決めておく

懇親会の雰囲気に慣れない人は何でも良いので参加する目的を設定しておくのが良いでしょう。イベントに参加する前は懇親会に行こうと思っていても、いざ当日になると物怖じしてしまって、懇親会まで参加するのが億劫になることがあります。

こういった時に懇親会内で一つ目的を設定しておけば、それを達成するために参加しようと自分を仕向けることができます。また目的を達成さえすれば気分良く帰ることができます。

設定する目的は何でも良いですが、おすすめは「会う人を決めておく」です。

1-1. 会う人を決めておく

冒頭にも触れましたが、こういったイベントではその業界で有名な人が参加します。そこでその人に会うことを目標にしてしまいましょう。

懇親会に多数の人が参加していてもその人にさえ会えば良いのです。たった一人と話しをするだけなのでこういった場が苦手な人でも勇気を出せるのではないでしょうか。

いざその人と対面しても、何を話したら良いか分からず頭が真っ白になってしまうことがあります。そこであらかじめ話しをする内容を考えておきます。内容は業界での流行やその人が公開しているblogや作品(ライブラリやらサービス等々)、出版物などなんでも良いです。聞きたいことがあるならそれも良いでしょう。

また当日までにblogコメントやTwitterなどで「参加しますのでよろしくお願いします。」といった感じでコンタクトを取っておくとモアベターです。

ちなみに私はPHPセミナーでDo you PHP?でお馴染みのshimookaさんに会いに行きました。それまでオンラインでは少し交流があったのですが、お会いしたのは初めてでした。その場では正直テンション上がり過ぎて何を話したのかあまり覚えてないのですが(・・・)、とても優しく接して頂きました。それ以後オンオフに関わらず交流させて頂いてます。その節は本当にありがとうございました。;-)

ちなみにその懇親会ではshimookaさんの他にもPHP界隈で有名な方が多く参加されていて、一人ミーハー気分で舞い上がっていたのを覚えています。。。:D

2. 今時の話題をキャッチしておく

さてうまく雰囲気に馴染めて会話に入っても話している内容がちんぷんかんぷんだとやはり面白くありません。もちろん全ての話題を把握するのはムリなので、せめてその業界で流行している内容は掴んでおいた方が良いでしょう。

まあ日頃からblogやらで情報収集していれば問題無いです。最近のPHP界隈なら、フレームワークがはやってるらしいとか、さよならPHP4とか、round関数と聞いて「ニヤッ」とできればokです。;-)

3. 話す・聞くネタを考えておく

誰にでも聞けそうなネタを一つ考えておくと会話の取っかかりに良いです。これは皆が興味ありそうなことでかつ自分も聞いてみたい内容にするのが良いです。(自分が興味無いと話が膨らまないですし、楽しくないので)

ちなみに私が良く聞くのは下のような感じです。

  • フレームワークは何か使ってますか?
  • PHP5使ってますか?
  • コードキャッシュ・アクセラレータ使ってますか?
  • Rubyって業務で使ってますか?
  • PEAR/Smarty使ってますか?(これはもう言わないけど)

4. 自分を発信しておく

blogやソフト、Webサービス、Wiki等々何でも良いですが普段から情報を発信しておくと相手が見てくれている可能性があります。名刺交換をして「ああー○○の人ですか」と言われるのはとても嬉しいものです。

また相手がそれについて知らなくても「こんなことやってるんです」と会話のネタになります。

こういったイベントに参加されるようなコアな人は情報感度が高い人が多いので、「こんなの誰も読んでないよ」と思って書いた内容でも見てくれてたりします。いつか懇親会でアピールできるようにblogを書く、というのも良いかもしれません。

5. 有名な人でも普通に接する

「1-1. 会う人を決めておく」にも関連することですが、普段blogなどで見ている有名な人に対してはこちらが気後れしてしまって近寄りがたい感じがします。しかし直にお会いすると意外に普通に接して貰えます。

凄く有名な方でイベントやblogなどで見ると初心者的な事を聞くと怒られそうな雰囲気な人でも、お話しするととても腰の低い人でこちらの質問にも丁寧に答えて貰えたという事がありました。

ですのでムリに緊張せず、こちらも普通に接すれば良いのではないでしょうか。(まあ中には冷たくあしらう人もいるかもしれませんが。。。)

ちょっとした心づもりで楽しく参加!

どうでしょう。参加し慣れている人やそもそもこういった場を苦にしない人には「そこまで考えなくても良いんじゃない?」という内容だと思います。

ですが意外と小さなことが気になって参加するのをためらう人もいるのではないでしょうか。ここで挙げた内容を全て実行する必要は全くないですが、少しでも気持ちを楽に参加できればと思います。

私自身はこういった場はわりと好きな方なのですが、それでも楽しめないイベントが続いたりして、一時懇親会やイベント自体に参加するのがイヤになった時期がありました。

もちろんイベントや懇親会の雰囲気が自分に合う合わないというのはあるでしょうから、ムリに参加する必要はありません。しかし、もし少しでも行ってみたいという気持ちがあるなら、ここに書いてるようなことを少しだけ気にして勇気を持って参加してみてください。

きっと日常には無い良い刺激を受けることができますよ。

Twitter検索の検索式

この記事の所要時間: 054

Twitter検索では検索式を組み合わせることにより様々な検索を行うことができます。

AND検索

キーワードをスペースで区切ることによりAND検索となります。

ex) 「晩飯」と「カレー」を含む [カレー 晩飯]

OR検索

キーワードを[OR]で区切ることによりOR検索となります。[OR]は半角大文字で入力します。

ex) 「カレー」か「ラーメン」を含む [カレー OR ラーメン]

NOT検索

キーワードに[-](マイナス)を付けることにより、そのキーワードを含む投稿を除外することができます。

ex) 「うどん」を含むが「カレー」を含まない [うどん -カレー]

例えばこんな使い方

・PHPを検索したいが、.phpは除きたい [php -.php]

ツイッテル!!の回答から「help」を除く [@ajata -help]

・自分の発言から検索 [shin1x1 -@shin1x1]

・「関西」「オフ」のうち、「連絡」「告知」除いて検索 [オフ 関西 -連絡 -告知]

Home > アーカイブ > 2007-08

検索
フィード
メタ情報

Return to page top