Home

Shin x blog

Winノートに入れてるアプリ19個をあらためて並べてみた

この記事の所要時間: 約 5分19秒

from: Macに入れているアプリ19個+拡張10個を本気だして列挙してみた : ロケスタ社長日記

前エントリに書いたようにちょうど一ヶ月前にWinノートを購入したので、その時インストールしたアプリを並べてみます。

基本

 FireFox

なにはともあれブラウザです。ごてごて拡張を足してます。

 Launchy

キーボードで操作できるランチャーです。アプリケーションの登録も楽なので、かなりいけてます。慣れるとこれ無しではやっていけません。どのPCでもアプリケーションを立ち上げる時は、ついつい[Alt]+[SPACE]を押してしまいます;-)

 Atok

これも慣れていると手放せません。変換がいけてるのもありますが、辞書との連携で語句の用例・意味が分かるのも見逃せません。

 nod32

アンチウィルスソフト。動作が軽いので使ってます。

開発系

 gvim

いわずとしれたvimです。開発だけでなく、メモや打ち合わせの議事録を書くときにも使ってます。この中で作業できてる時は快適です。

日本語対応を盛り込んでいるKaoriya.netで配布されているバイナリを入れています。

 Peggy Pro

開発に特化したエディッタです。vimの前はこれをメインに開発していました。ただのエディッタだけではなく、ファイル群をプロジェクトとして扱う機能やCVSやctagsとの連携などがあり、プログラマにはかゆいところに手が届くツールです。またEclipseよりも動作が軽いことも魅力です。

今はvimメインなので、これで開発することはほとんど無いですが、様々なファイルを開いたり、ブラウザのソースを見るエディッタに指定していたり、とまだまだ活躍しています。

VisualStudio

Windowsアプリケーションを作る案件がたまにあるので入れてます。IDEとしては良くできています。

 VMware Player

仮想マシンですね。仮想アプライアンスにはubuntuを使っています。

はじめはwww.ubuntulinux.jpで配布されている仮想アプライアンスを利用していたのですが、自分の環境では、仮想マシンのサスペンドできないなどの問題がありました。試しにvmware.comにある仮想アプライアンスを使ってみたところ、この問題は解消されました。

日本語表記に関しても、単にOSの言語設定を「日本語」に変えればokでした。

LAPPな環境はこの中に構築していて、作業する時はSSHでログインしています。

 Cygwin

はい、Cygwinです。ほとんどfind/grepのために入れてます。

通信系

 Putty

定番ですね。SSHクライアントに使ってます。無くてはなりません。最近になって「パティー」と読むことを知りました。。。;-D

メニューなどが日本語されている「ごった煮版」を使っています。

 Poderosa

タブ型のSSHクライアントです。こちらもPutty同様にかなり使っています。

タブを上下に分けて、上下で違うログをtail -fしておくとか、サーバ間で設定ファイルをコピペするなど、便利です。また一度接続するとアプリケーションを終了するまで接続情報(アカウントやパスワード)を保持しておく機能があるので、タブを増やして新たな接続を行うときもショートカットキー一発でできます。

あとCygwinとの連携もでき、他のSSHサーバに接続するのと同様にCygwin内を操作できます。

vim立ち上げてバリバリ開発するにはPuttyを、その他のログ表示やファイル操作などはPoderosaを使ったりしています。

 WinSCP

これも定番です。SCPクライアントです。エクスプローラライクな操作感でSCPができます。

ちなみに既存のFTPクライアントが使えていれば、これを使うのは何ら難しくありませんので、SCPもどんどん使っていきましょう。

 FFFTP

FTPクライアントです。特にこだわりも無く、以前から使っていたという理由だけで使用しています。

サイトを見ると最新版でもディレクトリトラバーサルな問題があるようなのです。信頼されていないサーバへこれで接続することは無いのですが、タイミングを見て変えようと思います。

おすすめがあれば教えて下さい。:-D

 Becky!

定番のメーラーですね。長年使っているので特に移行する気も無く、使い続けています。

その他

 WinShot

画面をキャプチャするツールです。基本機能は網羅されており、便利に使えてます。

 Free Mind

マインドマップを描くツールです。実装のアイデアやタスク・文書等々、整理して考えたい事柄はこれを使ってマインドマップに書き出すようにしています。

出来上がった図をどうこうするよりも、思考を洗い出して整理する方にメリットを感じています。自分の場合は、出来上がった図は単なるメモ書きに近いですね;-)

Microsoft Office – Visio

いわずと知れたOfficeです。OpenOfficeなどもありますが、やはり使いやすさや過去バージョンのファイル互換性などは当然ながら本家に分があります。

特にVisioに関しては、代替できるフリーソフトが見あたりません。これだけのために買っているところもあります。システム構成図、ER図、UMLなどなど、ドキュメント作成には欠かせませんね。

 iTunes

iPod Touchを買うまでは、これで音楽を聴いていました。touchを購入してからは、単なる母艦です。

以前はデスクトップPCをiPod touchの母艦にしていたのですが、自宅ではノートなので、こちらを母艦にしました。

 IconStars

アイコン抽出ソフトです。元エントリを参考に、このエントリを描くためにインストールしました。

Drag&Dropで.exeを投げるとicoを抽出できます。pngやjpeg変換や色数・画像サイズ変換もあり、なかなか良いです。

並べてみて

結構大変ですね。。。

こうして見ると定番なツールが多いです。定番なツールをyum installが如くごっそりインストールできるパッケージがあると助かりますね。

他に良いツールがあれば教えて下さい。:-D

Let’s note T4からFMV LOOX R/A70Nに変えました

この記事の所要時間: 約 7分32秒
LOOX R/A70N

モバイルノートを3年近く使っていたCF-T4からLOOX R/A70Nに変えました。

事務所内では自作PCをメインに使っているのですが、出張や打ち合わせに外出する際、カフェで開発する際、自宅での作業など使用頻度はかなり高いです。

購入して1ヶ月経ったのですが、多少クセはありつつも、なかなか良い感じで使えています。

LOOX R/A70Nを選んだ

ちょうどCF-T4のパフォーマンスに不満が出てきたころ、「半角/全角」キーのキートップが取れてしまいました(正確に言うと一度取ったらツメが折れて付かなくなった)。そろそろ買い換えの時期かなと思い、買い換え候補を色々と探しました。

候補は以下。

・Let’s note W7

とりあえず一番候補。レッツの質実剛健ぷりは気にいっていたので、順当に考えるとこれでした。

ただ実物を見に行くと、解像度がXGA、メモリが2Gまで、そしてCF-T4にも増して色気の無いデザインがいまいちでした。あとキーボードがCF-T4よりパチパチ系になっていて、そこもマイナスでした。

・MacBook Air

以前からMacを所有したいなあという漠然とした思いはあり、発売当初から気になっていたので、また候補にあがりました。

しかし軽くなったとはいえ、Winノートに比べると大きいですね。またOS Xでメモリが2Gまでというのが、どうなのかなという思いもあり、今回も見送りました。

・LOOX R/A70N

本命2つがイマイチだったので、他にどれにしようかな、と考えていたところ急浮上してきたのが、LOOX Rでした。

LOOXがモバイルノートとして良いという話は聞いていたのですが、FMVデスクトップ機が実家にあったとこもあり、家庭用PCのイメージから、避けてきました。(あとレッツの完成度の高さからWinノートを買うならレッツのみという固定観念があったのもあります。;-))

LOOX Rを気に入った理由は、メモリが4Gまで可、解像度がWXGA、キーボードが意外としっかりしていて打ちやすかった、といったところです。あとWebでの直販なら天板変更ができる(好きな色があった)のもポイント高かったです。

で、結局はLOOX Rを選ぶわけですが、圧倒的にレッツに感じていたメリット(重量・コンパクトさ・バッテリの持ち)が実用では他のノートでも十分だということが分かったのが大きいです。

レッツを選んでも損は無いし、実用上は全く問題と思うのですが、面白みに欠けるというところで触手が動きませんでした。

LOOX R/A70NをWeb直販で注文

Web直販サイトであるWEB MARTでカスタマイズして注文しました。

カスタマイズしたのは以下。

  • ワイドノングレア液晶
  • XPダウングレード権
  • メモリ: 4G
  • HDD: 160GB
  • CD/DVD: スーパーマルチ
  • 天板: クリムゾン

バッテリが標準バッテリ

Web直販ではまったのがここ。小売店で販売している一般モデルの標準添付バッテリは、駆動時間が10.9時間(JEITA測定法1.0)となっていました。この値がそのまま実際の駆動時間だとは思わないですが、この値を参考に実用上は問題無いであろうと判断していました。

実は、この駆動時間は「内蔵バッテリパック(L)」でのもので、「内蔵バッテリパック」では駆動時間6.7時間となっています。ようは一般モデルでは「内蔵バッテリパック(L)」が標準添付となっているわけです。

なぜかWeb直販では駆動時間が短い「内蔵バッテリパック」が標準添付とされており、「内蔵バッテリパック(L)」はオプションとなっていました。

キチンと確認しなかった自分が悪いのですが、カスタムモデルは一般モデル+αを選択するイメージだったので、「内蔵バッテリパック」を注文してしまいました。できれば、ここは一般モデルと同じ「内蔵バッテリパック(L)」をデフォルトとして欲しかったところです。

# 結局、デフォルトバッテリ(「内蔵バッテリパック」)ではフル充電でも、3時間弱しかもたなかったので、追加で「内蔵バッテリパック(L)」を注文しました。。。

XPへのダウングレード

仕事で使うソフトがXPでしか動作しないものがあり、またVistaにするメリットが見えなかったので、XPダウングレード権を付けました。

ダウングレードの方法については丁寧なマニュアルも付いており、何の問題も無くXPにすることができました。

XP環境で1ヶ月使っていますが、大きな問題も無く動作しています。

残ったメモリをRamdiskに

メモリ4G搭載LOOX Rを購入した大きな理由の一つがこれ。:-D

XP自体は3.24Gまでしかメモリを認識しないのですが、残りをRamdiskに使うことにより、パフォーマンスを上げようというわけです。

Gavotte Ramdiskを使って756MをRamdiskにして、TEMPフォルダをここに割り当てています。

ニコニコ動画やYoutubeを見るときは早くなったのを体感できます。またZIPファイルをダウンロードしてブラウザでそのまま開く時は、一時ファイルであるZIPファイル自体がメモリ(Ramdisk)にあるので、そこからファイルを取り出すのはかなり早いです。

初期設定さえ行えば、日頃は意識することなく動作しているので、これは中々良いですよ。

インストール等は以下が参考になります。
[RAMディスク]Gavotte Ramdiskを導入してみた。 (KUMA TYPE)

1ヶ月使ってみてCF-T4との比較

CF-T4と比較しての印象をつらつらと。

・バッテリ

LOOX Rでは内蔵バッテリパック(L)を搭載していますが、やはりバッテリの持ちではCF-T4に分があります。

もちろんバッテリは持てば持つほど良いですが、新大阪->東京の新幹線+1hくらい持てば実用上は問題無いので、LOOX Rでもokです。あと80%充電もレッツ同様に可能で、XPダウングレードしても動作します。

・重量

CF-T4より若干重くなりましたが、LOOXも1.29Kg程度なので、すぐに慣れました。

・パームレスト

CF-T4(というかレッツ)ではお馴染みのパームレストの熱さですが、これが一切無くなりました!背面ファンからは熱気が出てきますが、ひざ置きでもそれほど気になりませんでした。特に夏場はこれは有り難いです。

・デザイン

レッツに飽きたのが大きいですが:-P 、天板カラーや筐体の形はLOOX Rを気に入っています。

ただパームレストなどプラスチックの部分は、おもちゃっぽくて安っぽい印象はあります。

・キーボード

ノートにしてはわりとしっかりしていて、打刻感を感じます。(ThinkPadと比べるとアレでしょうが)CF-T4ののペタペタしたノートらしいキーボードも悪くないですが、LOOXの方が入力しているリズムが良いです。

望むならレッツにある「ローマ字すっきりキーボード」や英字配列があると嬉しいですね。

・CD/DVDドライブ

CF-T4はCD/DVDドライブ無しでした。USB接続のドライブは持っているのですが、やはり標準で搭載している方が接続する手間もなく便利です。今では搭載してもそれほど重量が増えるわけでは無いので付けといた方が良いですね。

ちと困っていること

おおむね問題無いですが、少し困っていること。

  • USBメモリを認識しなくなる時がある
  • emobile(PCカード)を認識しなくなる時がある
  • VMware Playerが固まる

主にスタンバイ状態復帰後になることが多いです。またVMware Playerにubuntuを入れてるのですが、これとの相性なのか、USBメモリを認識しなくなったり、emobileカードを認識しなくなったりすることがあります。

日頃はスタンバイ前にはVMware Playerを落とすようにしています。またデバイスを認識しなくなった時は素直に再起動しています。(まあ再起動も早いのでそれほど大きなストレスでは無いですが)

これらはLOOXの問題というより、VMware Playerの問題かもしれません。

Winノートはレッツだけじゃない

以前はレッツの完成度の高さに満足していたので、「仕事でWinノートならレッツ」と決め込んでいたところがありました。実際数年前は、仕事で使うモバイルノートという意味では、持ち運び易すさやバッテリの持ち、添付ソフト・設定の簡素さから、レッツは一歩抜きん出ていた印象でした。

しかし昨今では他メーカーノートでもこれらの熟成が進んでおり、以前ほどレッツの優位性が感じられなくなりました。LOOX Rもそうですし、先日発売されたVAIO typeZも中々良さ気です。

専らレッツ派の方も次のノートを探す際は先入観を捨てて他メーカーノートも見てみてはいかがでしょうか。

# 次買う時はSSDノートですね。;-)

[Twitter検索] public_timeline APIの仕様が変わっている件

この記事の所要時間: 約 2分29秒

8/7の10:00頃からTwitterのpublic_timeline APIの仕様が変わったようです。

この影響を受けてTwitter検索にてアイコン表示・ユーザIDが表示できない状況です。

出力項目を削減?

実はこれまでも突然APIの出力が変わり、データが取得できない事が何度かありました。そういった場合、APIの仕様変更の場合もあるのですが、そのほとんどはメンテナンス等(?)で出力されるデータが壊れていたり、APIが正常に動作していないことがほとんどでした。

そういったケースでは数時間様子を見ていると回復していたので、今回も静観していたのですが、1 日様子を見たところでも変化はなく、仕様変更と見るのが良いかもしれません。

現在データとして取れなくなったのは、↓です。

  • screen_name – ユーザID?コード? (twitter.com/shin1x1 の shin1x1 の部分です)
  • location
  • profile_image_url – アイコンURL

と、ここまで書いたところで調べていると、上記のデータは復活したようです。ここを見るとチケットが上がっていたようで、復活したようです。

キャッシュの強化?

さてこれで一安心と思いきや、そうでも無くて、これよりも大きな影響があるのが、キャッシュが強化されてそうなことです。

以前からpublic_timeline APIにはキャッシュが適用され、全てのPostを取得するのが難しい状況になっていました。

今回の変更以降ではこのキャッシュがさらに強化(されたのか、適用が甘かったのを厳密に適用するようになったか分かりませんが。。。)したようで、1分あたり40件程度のPostしか収集できなくなっています。

それも時間帯も決まっていて、N分15秒~N分30秒に投稿されたもののみが出力されています。(毎分15秒あたりにキャッシュ再生成?)

実際に取得できているPost量にも大きく違いがあり、8/6(変更前)と8/7(変更後)を比べると、Post量が1/3程度になっていました。(Twitter検索のトップを見ると、各Postが見事にN分15秒~N分30秒になっています;-))

できれば、くまなく検索対象としたいところですが、こういった状況なのでかなり取りこぼしが発生する事になり、なかなか難しいのが現状です。

今後の対応

キャッシュの件もいつものように一時的なものであれば良いのですが、恒久的にこうなるのであれば、そもそもTwitter検索の意味が無くなるのではないか、と感じています。

取得の方法としては他にもアプローチは考えられるのですが、公式検索サイトも存在する今となっては、あれこれ対応して続ける意味があるのかなーと思案したりもします。

# まあ公式は日本語の検索がイマイチですが。。。

というわけで、しばらくはご不便をおかけしますが、よろしくお願いします。:-D

vodafone.ne.jpアドレスのメールサーバが変わってた

この記事の所要時間: 約 2分40秒

この話は一般的なMTA経由でメールを送る場合は問題ありません。専用メール配信システム等でキャリアのメールサーバに直接配信する時のみ関係ある話です:-D

vodafoneメールアドレスのメールサーバが気がついたら変わってました。

まず各地域アドレスのMXレコードですが、以前は各地域毎にMXが異なっていたのですが、全てmx.k.vodafone.ne.jpに統一されています。

これ自体は以前から変わっていたような気もするのですが、地域毎のメールサーバが生きていたため、実は各々のメールサーバにメールを送ることが可能でした。

しかしここ数ヶ月の間で、[rnsq].vodafone.ne.jpの地域メールサーバ自体が存在しなくなったようで、それらのアドレスに送るには、MXレコードで指定されているmx.k.vodafone.ne.jpを利用するしかなくなりました。

各地域のアドレスを調べてみると以下のようになっていました。

地域 ドメイン MX 地域MX
北海道地区 d.vodafone.ne.jp mx.k.vodafone.ne.jp ok
東北・新潟地区 h.vodafone.ne.jp mx.k.vodafone.ne.jp ok
関東・甲信地区 t.vodafone.ne.jp mx.k.vodafone.ne.jp ok
東海地区 c.vodafone.ne.jp mx.k.vodafone.ne.jp ok
関西地区 k.vodafone.ne.jp mx.k.vodafone.ne.jp ok
北陸地区 r.vodafone.ne.jp mx.k.vodafone.ne.jp –
中国地区 n.vodafone.ne.jp mx.k.vodafone.ne.jp –
四国地区 s.vodafone.ne.jp mx.k.vodafone.ne.jp –
九州・沖縄地区 q.vodafone.ne.jp mx.k.vodafone.ne.jp –

今のところ[dhtc]については地域メールサーバが生きていますが、MX自体は[k]になっているので将来無くなってしまうかもしれません。

通常のMTAのようにMXレコードを引いて配信先メールサーバを決定する場合は問題無いのですが、メールサーバを決め打ちしている場合は対応が必要となるので要注意です。

いっそvodafone.ne.jpアドレスがsoftbank.ne.jpに移行してくれると助かるのですが:-P

[2009/02/19追記]

どうやら全ての地域メールサーバ(kを除く)が使用できなくなったようです。vodafone.ne.jpアドレスは素直にMXであるmx.k.vodafone.ne.jpに送信するようにしましょう:-D

第34回PHP勉強会に参加してきました&発表資料

この記事の所要時間: 約 2分53秒

CakePHP勉強会の翌日に行われた第34回PHP勉強会にも参加してきました。

今回はLTで「動かしてコードの流れを追う」というタイトルで話してきました。PHP勉強会では初発表だったので秘かに感慨深いものがあったりしました。

発表時の資料をアップしておきます。

あとスライド中で紹介しているdebug_print_backtrace_source()はこれです。

以下、つらつらと。

maru_ccさん

  • 現場での貴重なお話 => なかなか外に出ない話なので興味深い
  • deployが悩みなのはどこも同じ:-D
  • 発表後にmaru_ccさんを囲んでのdeploy雑談がかなりアツかった!

kaz_29さん

  • PostgreSQLでの全文検索のお話
  • 8.3の全文検索は使える印象 => Ludiaとの比較も見たいなー:-D
  • デモがイイ! => やっぱり動いてるものは説得力が違います

sotarokさん

  • SimpleXML/XMLReaderのお話
  • 「そたろそたろっく」はNG(w
    => 「そたろっく」の間違いでした><。sotarokさんありがとうございますー:-D
  • sotarokさんがいかにみんなに愛されてるかが良く分かった;-)
  • 軽くSPLをdis => SPLは使える(使いたい)イメージなので意外だった
  • コードを使ったデモが多くてイイ!

shin1x1

  • 反省点は色々あったものの、会場で反応を頂けたので満足です!=> ありがとうございます!
  • IRCのログが見たい。。。(後半に何かツール?が紹介されてたような)
  • 自分の発表のustreamは怖くてまだ見れません><

gusagiさん

  • PHPセッションをDBで共有するお話
  • Webサーバをスケールすると必ず出てくる話なので実用的
  • セッションクラスにsetter/getterを持たして、$_SESSIONへのアクセスもラップしてしまうのもアリかも。

nemo_kazさん

  • IBMのProjectZeroなお話
  • 軽快なプレゼンで楽しかった:-D
  • 割り切りがスゴイ。
  • 割り切り1. 1コンテナで同時に動かせるアプリは1つ。
  • 割り切り2. リクエスト毎にJVMを再起動! => これはスゴイ。速度・負荷が気になる
  • 割り切り3. ブラウザで開発!(Eclipseでも開発可) => ガリガリ書くのは辛そう:-P
  • 家電並にマニュアルを読まない(w

懇親会

  • 端テーブルでまったりしてました
  • アツいユーザ会話 => 恩恵を受けているだけの自分としては感謝感謝です。
  • 例によって書けない話が多数:-D
  • CakePHP勉強会運営組は抜け殻のようでした。。。
  • 新幹線の都合で1次会で無念の離脱。maru_ccさんのレポでは3次会まであった模様。

また参加したい!

今回は発表があったのでちょっと落ち着かないところもあったのですが、かなり楽しかったです。やはりイベントごとは参加してなんぼだなと思います。

土曜日で昼開始だったのでノンビリした雰囲気なのも良いですね。土日参加はなかなか難しいですが、また参加したいです。

会場提供して下さったトライコーンさん(鈴木さん)、勉強会ではcocoitiさん、動画配信では安藤さん、懇親会ではゆどうふさん、ありがとうございました。そして参加された皆さんお疲れさまでしたー。

第3回CakePHP勉強会も盛り上がりました。

この記事の所要時間: 約 3分42秒

第3回CakePHP勉強会に参加してきました。

回を増すごとに熱気むんむんなのですが、今回はあのトライコーンさん(すずきさんいつもありがとうございます!)の会場がびっしり埋まる勢いでした。

特に今回は関東圏外の方が多いのにも驚きました。北海道の方や福岡の方が来てらしたので、大阪からの自分では遠方者扱いとはなりませんでした;-)。ありがたいことです。

~フェイス女学園~ CakePHP を使った効率的なPC・モバイルサイト構築について

  • スパイスボックスラボラトリ 神部さん
  • 受付でバタバタしていてあまり落ち着いて聞けませんでした><
  • 資料公開に期待!
  • サービスが伝播していく流れがリアル
    => 何だかんだいってTVは強力なのかな

CakePHPでの失敗談

  • ブルーオーシャン 岡田さん
  • 「CakePHPポケットリファレンス」出版おめでとうございます!
  • 次期C++を使って、C++版CakePHP? => CakeC++とか?:-D
  • 実際の失敗談は参考になります
  • アソシエーション周りの話はあるある
  • ビヘイビアのインスタンスは一つのみ
    モデルごとの設定は$this->__setting[%モデル名%]以下に書く
  • コンポーネントのstartup()でインスタンス変数がクリアされる話は、?
    => 手元のRC1では再現できなかった

ホッテントリメーカー@CakePHP

  • phaさん
  • 放浪生活は勝手に親近感が:-D
  • ゆるい感じがイイ!
  • 用語が分かりづらかった話はリアル
    => 確かにフレームワークを少しでも知っていないと難しい
    => 解説記事の用語が専門的過ぎる話は結構大事な指摘かも
  • phaさんもCake教に染まってしまったオチ:-D

CakePHPゆとり開発環境

  • k1LoWさん
  • 遠目に見ると知り合いに檄似で勝手に親近感が:-D
  • いきおいある良いLT!
  • Emacsを使ってCakePHP開発を最適化
  • デモが見たかった!
  • rails.vimをCakePHP用にカスタマイズしようとして放り投げたのを思い出した。。。
  • 会場でのエディッタ使用調査は、vim>eclipse>emacs>秀丸>textmateでした:-D

AuthComponentについて

  • 受付をご一緒した高木さん => 助かりました!
  • OpenIDが手軽に使えるのは嬉しい
  • AuthComponent自体を使ってない。。。事例増えてるみたいだし追っかけてみよう>自分

Cakeにテストがやってきた

  • きしださん
  • 自分にはど真ん中ストライクなCakePHPでのユニットテスト話
  • CakePHPでちゃんとしたユニットテスト事例は初めて聞いた気が。
  • やっぱControllerにロジック書いちゃダメ。
  • 1000あるテストケースの実装が見たかった:-D
  • => ユニットテスト勉強会に行きたいな。
  • チケットには「このテストが失敗する」の英語とそのテストケースがあればok:-D
  • CakePHP1.2本、企画中!

何が違う? CakePHP and symfony

  • 司会しつつ動画配信しつつの安藤さん
  • symfonyとCakePHPの違いを「使って」比べる
  • イメージだけで判断してはダメ!
  • モデルの戻り値は、CakePHPが連想配列、symfonyはオブジェクト
  • ヘルパは、CakePHPがオブジェクト、symfony:が関数
  • => モデルの戻り値はオブジェクトがいいなあ。あちこちで出る話題だからいずれはそうなると思うけど。
  • 1.2はsymfonyよりちょい遅い => PTはこれからかな

懇親会

  • 居酒屋の地下室をほぼ貸し切り状態!
  • あちこちのテーブルが盛り上がっていて楽しかったー!!
  • 勉強会を連日はしごする人が結構いてビックリ。みんなアツいなー。
  • ubuntuをレッツノートに入れたくなった;-D

次回はCakePHP本家の人が?

いやあ今回も盛り上がりました。この盛り上がりを見るとCakePHPのパワーを改めて感じました。

次回はいよいよgwoo氏を呼ぼうという流れになっているのでさらに盛り上がりそうですね。

参加された皆さんありがとうございました&お疲れさまでしたー。鈴木さん、高木さん、そして何から何まで安藤さんお疲れ様です!

CakePHP index.php以外からフレームワークを使う

この記事の所要時間: 約 1分21秒

CakePHPでは[app/webroot/index.php]がFront Controllerになっているのですが、これを他のファイル名に変える方法です。(DocumentRootがapp/webrootになっている場合)

1. index.phpを他のファイル名に変更

ここではgw.phpをFront Controllerにします。

$ mv index.php gw.php

2. .htaccessを変更

あとはapp/webroot/.htaccessのRewriteRuleを変更すればokです。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
#    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
    RewriteRule ^(.*)$ gw.php?url=$1 [QSA,L]
</IfModule>

index.phpはフレームワークを避けるとか

これは以前index.phpだけはデザイナーさんが自由に使いたいという要望があったため考えました。(もちろんPagesControllerを使っても良いのですが)

index.phpはサイトのトップページになることが多いので、アクセスによる負荷を考えて、あえてフレームワークを避けるという手にも使えますね。

第3回CakePHP勉強会&第34回PHP勉強会に参加します

この記事の所要時間: 約 0分14秒

今週末の第3回CakePHP勉強会と第34回PHP勉強会に参加してきます。

CakePHP勉強会では運営(手伝い)、PHP勉強会ではLTで話す予定です。

外の勉強会は久しぶりなので楽しみです。

当日参加される方々よろしくお願いします!

debug_backtraceを見やすくしたdebug_print_backtrace_source

  • 2008-06-16 (月)
  • PHP
この記事の所要時間: 約 0分41秒

debug_bracktrace()は手軽にバックトレースが取れるので便利です。

メソッド(関数)の呼び出し順だけではなく、引数の内容や現在動作しているオブジェクトの状態なども取得することができます。

そこでこれらを利用してバックトレースの内容を見やすくしたdebug_print_backtrace_source()を作ってみました。

ダウンロード

debug_print_backtrace_source.php

dBugを内包しているのでライセンスはGPLで。

使用方法

debug_print_backtrace_source.phpを読み込んで、debug_print_backtrace_source()もしくは、dpbs()を実行するだけです。

引数は2つでどちらもbooleanです。第1引数でバックトレース表示後に処理をexitするか否かを、第2引数でバックトレースを逆順で表示するか否かを指定します。指定しない場合はどちらもfalseが有効となります。

表示の見方

a. ファイルパス、行番号、クラス名、メソッド名
b. 現在のインスタンス情報(クリックすれば展開)
c. バックトレース行
d. 引数(クリックすれば展開)

実装した機能

実装した機能は以下です。

  1. ソースコードを表示(前後10行)
  2. バックトレースの内容を並べた
  3. 現在のクラス・メソッド(関数)・オブジェクトの内容では次のトレース内容を表示

1. ソースコードを表示

バックトレースで指し示している箇所前後10行のソースを表示します。これが一番実装したかった機能です。実際にトレースで指定されている行は背景色を変えています。

2. バックトレースの内容を並べた

debug_backtraceでは多くの情報が取れるのでそれらを視認しやすいように並べました。

現在のオブジェクトとメソッド(関数)引数の表示では、dBugを一部変更して使用しています。

3. 現在のクラス・メソッド(関数)・オブジェクトの内容では次のトレース内容を表示

バックトレースの内容では、ファイルパス・行番号とクラス名・メソッド名・現在のオブジェクトがずれているので若干把握しづらくなっています。ですので見やすいように後者については次のトレースの値を表示しています。

ちなみに「ずれている」というのは、バックトレースとしては問題ありません。単に見やすいようにした、というだけです:-D

フレームワークで使うと良いかも

フレームワークのようにクラス構造が複雑で、メソッドの呼び出しが深くなりがちなシステムでは、メソッドの呼び出し履歴が見やすくて便利だと思います。フレームワークのソースを読む時のお供にどうぞ。

フレームワークで使われているPHP関数を数えてみた

この記事の所要時間: 約 4分18秒

CakePHPを使ってからempty()を使うようになった、なんて話が以前社内でもあったので、各フレームワークで使われているPHP関数を調べてみました*1。

調べたのはCakePHP/symfony/ZendFrameworkで、それぞれ最新版を使用しています。

あと関数全てを載せると長いので上位20件のみ記載しています。

CakePHP-1.2RC1

array()が圧倒的ですね。2位以下もin_array()から5位のis_array()まではarrayに関係する関数となってます。

さらにarray()自体の数がスゴイです。ソースコードは3つの中で一番少ないのですが(symfonyの約2/3、ZFの約1/3)ですが、array()はsymfonyの約5倍、ZFの約2倍となっています。

いかにCakeがarrayを多用しているかが、良く分かります。

ソース行数:126,469行

16645 array
1519 in_array
1151 isset
889 empty
486 is_array
454 str_replace
378 unset
314 strpos
302 array_merge
270 count
241 sprintf
235 preg_quote
169 define
165 date
148 file_exists
148 preg_match
146 strtolower
144 explode
134 extract
134 substr

symfony-1.1.0RC2

やはりarray()が一位ですね。Cakeと違うのところでは、sprintf()が3位に来ています。さらに4位にsubstr()、5位にstrlen()と文字列関数が上位に来ています。

ソース行数:179,517行

3534 array
1083 isset
729 sprintf
515 count
372 substr
256 strlen
230 is_null
229 is_array
218 dirname
213 empty
204 strpos
201 unset
198 array_merge
164 in_array
156 str_replace
155 strtolower
150 preg_match
134 date
133 implode
124 preg_replace

ZendFramework-1.5.1

ソースコード行数が最も長いZFです。これもやはりarray()が1位となっています。4位にdirname()が入っています。Cakeでは50位(53件)、symfonyで218件(9位)なので、多いように感じます。あとord()が8位に、definedが12位などが上2つとは違う点でしょう。

ord()でソースをgrepしてみるとPDFやLucene、NTP関連のソースが引っかかりました。このへんはライブラリ的要素が強いZFの特徴ですね。

ソース行数:372,103行

8686 array
1528 isset
1407 count
999 dirname
789 is_array
650 empty
542 unset
508 ord
334 strlen
326 substr
295 array_key_exists
286 defined
243 explode
233 is_string
215 strpos
205 preg_match
202 date
201 strtolower
189 define
180 list

DB関数に着目

DB関連の処理は3フレームワーク共にフレームワーク自体に機能があるので、通常はPHPのDB関数を直接実行する必要はありません。これはフレームワーク内の処理も同様で、SQLを直接発行する箇所は1つにまとめておいて、各箇所からはそこを呼び出すイメージです。

よってpg_queryやmysql_queryは1つしか登場しないと思っていました。

Cakeは想像どおりそれぞれ1つしかありませんでした。ZFもPDOを使用しているのでこれらの関数自体が無いのですが、Oracleのoci_executeは2つ(1つはテスト)のみでした。

さて残るsymfonyですが、なぜかmysql_queryが27、pg_queyが20となっていました。あちこちに書いているのには、何か理由があるのでしょうか(歴史的な理由?)。

最後に関数の種類

最後に関数の種類ですが、3フレームワーク共に400前後でした。

もう少しじっくり見ると面白いところがあるかもしれませんが、今回はこのあたりで。

*1 array()やempty()など厳密には関数でないもののありますが、ここでは本質では無いのでスルーしてください;-)

Home

検索
フィード
メタ情報

Return to page top