Archive for the 'program' Category

Eclipse+PDTでXdebugの時external browserでFirefoxの設定がMacではイケテない件

最近仕事でEclipse+PDTでPHPを改造する仕事が多い。
本当はAptana Studio何だが基本一緒。

で、昔は一から自分で全部設計して構築する仕事が多かったんで、基本的には環境的にも自分のコードだしあんまり作りを解析する必要もないし、ブラウザ上でのデバッグ表示や基本はログでのデバッグ表示等で十分事足りていた。今でも自分で一から作るんならそれは変わらないだろうな、スピード的にも。

で、今の本職のお仕事はあるPHPのパッケージプロダクトをカスタマイズや改造する仕事で、どうしても改造やカスタマイズをするにあたってそのソースコードの挙動を細かく追わなければいけない事情が出てきた。

そこで思いついたのが昔やっぱある既存SNSのコードを追う際に良く使っていたXdebugだった。

基本、VisualStudioとかXcodeとかIDEでステップで追うのは慣れていたし、Cのソースコードを追う際はよくgdb使ってたものでこういうPHP環境でもステップ毎に挙動を追えるのは大変助かる。

で、会社でXdebug使って結構効率が上がってるんで家でも自分のプライベートで関わってるプロジェクトに使おうとおもって導入したら、家の環境がMacなんで少しはまりました。

EclipseとかAptana StudioでXdebugでデバッグするときに、いちいちIDE内蔵のブラウザでやる人はあんまりいないと思う。表示域的にもレイアウト的にもそれはない。やっぱ外部ブラウザを使ってデバッグクライアントを起動させるのが常道だろう。POSTの画面遷移とかもデバッグしやすいし。

で、環境設定で外部ブラウザがデフォルトで内蔵の奴になってるんでそれをデフォで入っているFirefoxに変えます。
するとデバッガをIDEで起動した際に設定で指定したURLとファイルでFirefoxを起動してくれるというわけです。
設定では単にFirefoxへのパスが書いているだけなんでシンプルなもんです。会社のWindowsでは問題なくこれでデバッグ出来てました。

で、家のMacなんですけど、MacのEclipse(Aptana Studio)ではデフォでFirefoxのパスが、

“/Applications/Firefox.app/Contents/MacOS/firefox-bin”

になっています。

“/Applications/Firefox.app”

ではダメです。Eclipseはバイナリの実体を指定しないとダメみたいでappの下を掘らないとイケないわけです。

で、Macご存知の片はわかるんだと思うんですが、これだと新たにFirefoxのインスタンスを立ち上げてしまうんです。
しかも起動時に、既にFirefoxのインスタンスが立っているから立てられない、みたいなアラートが出てしまいます。

いちいちインスタンスとウィンドウを立ち上げるのも、アラートが出るのも嫌ですねー。。

で、こうすれば解消します。:q

環境設定で、「General」の「Web Browser」から(僕英語版のまま使ってるんで日本語化してる人は読み替えてね)新規外部ブラウザをNewをクリックして追加します。するとダイアログが立ち上がります。そこに外部ブラウザの「名前」と「Location」(バイナリへのパスね)と「Parameters」(コマンド引数)を入れられます。そこに下記のように入れれば吉です。

Name ; 任意
Location ; /usr/bin/open
Parameters ; -a /Applications/Firefox.app %URL%

Mac少し知ってる人ならなるほどー、なんでしょうが。

これで既存に立ち上がってるFirefoxのタブとしてデバッグページが立ち上がってくれます。(Firefoxのタブの設定等にもよるだろうけど)

もちろんこれを応用すれば他のブラウザでもOKっすね。

簡単なTipsでした。



iphone用bookmarklet for Google

iPhone, ipod touchでgoogleを検索する際にはモバイルiPhone用の物を良く使います。

 http://www.google.com/m?search

結構、Ajaxを使ってあってよくできていますし、検索結果も別ウィンドウで開くので
それはそれで大変良いのですが、一つだけ問題があります。
ipod touch iphoneでは別ウィンドウで開くページ容量が大きい場合、バックグラウンドの画面が保持されずに白くなる場合があります。なので、検索結果画面からリンクをクリックして別画面でそれをみて、また検索結果画面にもどると、なぜか検索結果が消えていて、ブラウザはもう一度リロードするのですが、このgoogle検索画面の欠点でAjaxにて検索していて、URLに検索キーワードやページ数を保持するデータが入っていない為に、リロードした場合、また検索キーワードを入れる前のインプットボックスだけの画面に戻ってしまいます。

そこで、前にreaderでやったようにリンクで開きたいURLをストックしておいて、後でいっぺんに開く為のbookmarkletを作りました。

使い方は簡単で、検索結果画面でbookmarkletを走らすと、検索結果のリンクを保存用にイベントハンドラに置き換えます。あとはリンクをクリックするとそれがHTML内に保存されます。同時に検索ボタンの脇に「Open」ボタンがつきますので、必要なときにそれをクリックすれば、新しいウィンドウでリンクが複数いっぺんに開けます。

注意点としては、ウィンドウはモバイルsafariの仕様上8個までしか開けませんので、検索ページを除いてあと7個までしかウィンドウをひらけませんので、そこまでたまる前に一度ウィンドウを開いてください。一度開けば、ストックは一度空になりますので、またURLをストックすることができます。

まだ、バグがあるとおもいますし、チェックもあんまりしてません。

bookmarkletはここからどうぞ。

本日2008/7/5バグ修正しました。

 



iPhone iPod touch用Bookmarkletを作りました

ipod touch用のGoogle readerはAjaxをつかって使いやすいのですが、元のリンクをクリックすると新しいウィンドウで元記事が表示されます。そのときに新しく開く元記事のウィンドウの容量が大きかったりすると、元の readerのウィンドウがバックグラウンドで消えてしまうという現象が起こります。

これがあんまり都合良くないのと、できれば iPhone用のreaderはAjaxでどんどんページを継ぎ足してみていけるので、後で開きたい元記事をまとめてマークしておきたいと考えました。

そこで二つのbookmarkletを作りました。

一つ目のブックマークレットはreaderでsee originalsの元記事リンクを表示させた状態で走らせると、そのリンクをタッチするとそのリンクを開かずにストックするイベントハンドラーを付加します。モバイルsafariで開けるウィンドウは8つまでですので、リンクストックも7個までしかできないようになっています。

もう一つはストックしたリンクをいっぺんに複数のウィンドウで開くブックマークレットです。

なので、使い方としては、readerを眺めていて、詳細画面を出すとsee originalsの元記事リンクが見えます。個の状態で一つ目のブックマークレットを動かして、その後そのリンクをタッチします。するとリンクがストックされたというアラートが表示されます。

 readerがsee originalリンクを生成するのは動的なので、see originalリンクが表示されると、その都度それを後で開きたい場合は、一つ目のブックマークレットを動かす必要があります。

最後にいい所でいっぺんにリンクを開く訳です。

ブックマークレットは下記からどうぞ

ここから

 




You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.