2007/4/30 月曜日

xdebugを使ったリモートデバッグの設定

このエントリをはてなブックマークに追加xdebug篏帥c≪若違荐絎のはてなブックマーク被リンク数
Filed under: PHP — akky @ 9:54:12

php.iniに記述を追加

zend_extensionの下に追加

;xdebuger
zend_extension=/usr/local/lib/php/xdebug.so
xdebug.remote_autostart=On
xdebug.remote_enable=On
xdebug.remote_handler=dbgp

php.iniの設定を反映

# service apache stop
# service apache start
# php -i  |grep xdebug\.remote
xdebug.remote_autostart => On => On
xdebug.remote_enable => On => On
xdebug.remote_handler => dbgp => dbgp
xdebug.remote_host => localhost => localhost
xdebug.remote_log => no value => no value
xdebug.remote_mode => req => req
xdebug.remote_port => 9000 => 9000

リモートデバッガをインストール

# xdebug-2.0.0RC3/debugclient
# ./configure
# make
# make install

debugclientを動かしてみる

インストールしたdebugclientを起動して

# debugclient
Xdebug Simple DBGp client (0.9.1)
Copyright 2002-2006 by Derick Rethans.

Waiting for debug server to connect.

待ち状態になったらブラウザからPHPの画面を実行してみる

Xdebug Simple DBGp client (0.9.1)
Copyright 2002-2006 by Derick Rethans.

Waiting for debug server to connect.
Connect
<?xml version="1.0" encoding="iso-8859-1"?>
<init fileuri="file:///usr/local/xxx/public_html/index.php" language="PHP" protocol_version="1.0" appid="9571" idekey="root"><engine version="2.0.0RC3"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2007 by Derick Rethans]]></copyright></init>
(cmd)

となったらdbgpのコマンドを実行するらしい

xdebugをインストール

このエントリをはてなブックマークに追加xdebugゃ潟鴻若のはてなブックマーク被リンク数
Filed under: PHP — akky @ 9:36:44

http://xdebug.org/ から xdebug-2.0.0RC3.tgz を持ってくる

コンパイル

# cd xdebug-2.0.0RC3
# phpize
Configuring for:
PHP Api Version:         20020918
Zend Module Api No:      20020429
Zend Extension Api No:   20021010
# ./configure --enable-xdebug
# make

インストール

# cp modules/xdebug.so /usr/local/lib/php/
# vi /usr/local/lib/php.ini

extension_dirの下にzend_extensionを追加

; Directory in which the loadable extensions (modules) reside.
extension_dir = "./"

;xdebug
zend_extension=zend_extension=/usr/local/lib/php/xdebug.so

apacheを再起動してxdebuugerの組み込みを確認

# service apache stop
# service apache start
# php -i | grep xdebug\.*support
xdebug support => enabled

2007/4/26 木曜日

PHPのデバック

このエントリをはてなブックマークに追加PHPのはてなブックマーク被リンク数
Filed under: PHP — akky @ 0:00:00

今は、デバックログを仕込んでセコセコとでバック中。でも、変数に値がセットされるタイミングを探せない。

探してみるとxdebugというモジュールがあるらしい。

それをvimからデバックするためのセットアップ方法があった。今は時間がないからインストールできないが、週末にやってみよう。vimからやるのが素晴らしい。

eclipseからデバッグする方法もあるのだけど今回はスルー。eclipseは便利だけどメモリーを使う量が多いのでjavaの開発以外では使わない(使いたくない)んだよね。しかも今はノートPCにvmwareを入れてサーバを動かしているので余計にメモリが心配になってるんっすよ。

2007/4/23 月曜日

seleniumでのxpathの指定の仕方に悩む

このエントリをはてなブックマークに追加seleniumсxpath絎篁鴻のはてなブックマーク被リンク数
Filed under: selenium — akky @ 14:57:58

seleniumIDE使ってテストコードを作成していて、tableタグで作成した一覧表の2行目の1列目にあるaタグをクリックしたいのだけど、IDEで記録させるとアンカーのテキストを拾ってしまうが、1列目にくる値は不定なのだけど遷移先の画面での表示項目をチェックしたい。

http://wiki.openqa.org/display/SEL/Selenium+0.7+Reference+(Japanese)#Selenium0.7Reference%28Japanese%29-ElementLocator

を読んでみると//table[0]//tr[1]//td[0]//a[0]でいけそうな気はするのだが、テストを実行してみると not foundと言われてしまう。ほぼして・・・

XPather で解決

このエントリをはてなブックマークに追加XPather цВ羆困里呂討淵屮奪マーク被リンク数
Filed under: selenium — akky @ 0:17:58

上の悩みはkstn さんがコメントに書いて下さったXPatherのプラグインをインストールしてxpathを取得したいセルの部分でxpath取得してみると

/html/body/div[@id='all']/div[@id='main']/div[@id='contents']/form[2]/table/tbody/tr[2]/td[1]/a

となったので

<tr>
	<td>clickAndWait</td>
	<td>xpath=//html/body/div[@id='all']/div[@id='main']/div[@id='contents']/form[2]/table/tbody/tr[2]/td[1]/a</td>
	<td></td>
</tr>

として早速試してみるとするすると最後まで進んでしまった。画面がどんどんと遷移してしまったので本当に意図した遷移だったのか確認できなかったので、問題の場所にブレイクポイントを設定して再度実行。ブレイクポイントまで進んだ所で一時停止したので期待と不安の中で「1ステップ実行」を押してみると・・・

おぉ〜〜〜〜

ブラボーーー

目的通りに遷移していますよ。

テストも無事成功。

xpathがフルパスで長く、他と釣り合いがとれない(?)ので

<tr>
	<td>clickAndWait</td>
	<td>xpath=//table/tbody/tr[2]/td[1]/a</td>
	<td></td>
</tr>

に変更して一件落着です。人力検索で質問していたのでトラックバックをしておく。

kstnさんありがとうございます。

2007/4/22 日曜日

fromとform

このエントリをはてなブックマークに追加fromformのはてなブックマーク被リンク数
Filed under: mysql — akky @ 0:00:00

Webの仕事に限らず、SQLを作りながら画面を作っていると打ち間違えてハマる。

formとfrom。oとrを打つ順番が違うだけ。文法チェックがされる言語ではエラーを出してくれるだけマシ。javascriptだと、エラーも出さす通り過ぎるので値が取得できねぇ!!と小一時間悩むこともある。

2007/4/21 土曜日

焼肉牛蔵

このエントリをはてなブックマークに追加取気里呂討淵屮奪マーク被リンク数
Filed under: 未分類 — akky @ 0:00:00

最寄り駅ちかくにある「焼肉牛蔵」http://www.google.co.jp/search?hl=ja&client=firefox&rls=org.mozilla%3Aja%3Aofficial&hs=07r&q=%E7%84%BC%E8%82%89%E7%89%9B%E8%94%B5%E3%80%80%E5%AF%8C%E5%A3%AB%E8%A6%8B%E5%8F%B0&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja

17時開店のお店なのだが、17時15分頃にいくとその時点で「9時頃になります」と平気で言われてしまう。1年半くらい前に初めて行ったときは1時間30分ち程度だったのが、回を重ねる毎に時間は長くなり、2時間30分、3時間、今では4時間近くになろうとしている。予約を取ろうにも土日は2名での予約を受け付けていないので、一度はお店に行き予約しないといけない。携帯の番号を告げて一度帰宅。駅近くで暇を潰せるような待ち時間ではないので家でゆっくり。

お値段は大手チェーン店の○角と同じくらいなのだが美味しさが違う。満足度としては叙○苑に負けていないかも(それは言い過ぎかな)。でも、電車にのって遠路はるばる高い焼肉を食べに行くと思えば全然安いんですよ。特に「特選盛り」が美味しい。これを食べに行っていると言っても過言ではない。特選盛りを食べたあとは、その日の気分で適当に。

などと、こういう事を書いているから客が増える一方なのかもしれない。

2007/4/20 金曜日

今後の課題

このエントリをはてなブックマークに追加篁緇茯臥のはてなブックマーク被リンク数
Filed under: 未分類 — akky @ 11:55:52

このページは整理してapache1.3にwebdavに統合しました。

はまったこと。

このエントリをはてなブックマークに追加障cのはてなブックマーク被リンク数
Filed under: 未分類 — akky @ 11:55:51

このページは整理してapache1.3にwebdavに統合しました。

httpd.confを編集

このエントリをはてなブックマークに追加httpd.conf膩のはてなブックマーク被リンク数
Filed under: 未分類 — akky @ 11:55:50

このページは整理してapache1.3にwebdavに統合しました。

mod_davをインストール

このエントリをはてなブックマークに追加mod_davゃ潟鴻若のはてなブックマーク被リンク数
Filed under: 未分類 — akky @ 11:55:49

このページは整理してapache1.3にwebdavに統合しました。

mod_encodingをインストール

このエントリをはてなブックマークに追加mod_encodingゃ潟鴻若のはてなブックマーク被リンク数
Filed under: 未分類 — akky @ 11:55:48

このページは整理してapache1.3にwebdavに統合しました。

apache1.3にwebdav

このエントリをはてなブックマークに追加apache1.3webdavのはてなブックマーク被リンク数
Filed under: 未分類 — akky @ 0:00:00

CentOS4 をEUCで動かしているサーバにapache1.3でWebDavをインストールする手順。
自分のためのも記録として残しておく。主に http://www.futurewave.co.jp/linux/webdav.html を参考

mod_encodingをインストール

ソースをダウンロード
iconv_hookをコンパイル
$ tar xvfz mod_encoding-20021209.tar.gz
$ cd mod_encoding-20021209/lib
$ ./configure
$ make
$ su
# make install
mod_encodingをコンパイル
$ cd mod_encoding-20021209/
$ ./configure --with-apxs=/usr/local/apache/bin/apxs --with-iconv-hook=/usr/local/include/iconv_hook
$ make
$ su
# make install
ソースをダウンロード

mod_dav-1.0.3-1.3.6-l10n.diffはサーバへファイルを保存するときの文字コードをEUCにするために必要

ソースの展開とパッチ
$ tar zxvf mod_dav-1.0.3-1.3.6.tar.gz
$ cd mod_dav-1.3.0-1.3.6
$ patch -p1 < mod_dav-1.0.3-1.3.6-l10n.diff

mod_dav-1.0.3-1.3.6-l10n.diffを当てるとmod_encoding-20021209/libにあるiconv_hook_default.c、iconv_hook_ja_auto.c、iconv_hook_mssjis.c 、identify_encoding.cを使う事になる。configureが作成するmakefileがこれらを参照できるようにMakefile.inを編集

SRCS = ・・・
     iconv_hook_default.c \
     iconv_hook_ja_auto.c \
     iconv_hook_mssjis.c \
     identify_encoding.c

SRCS = ・・・
     ../mod_encoding-20021209/lib/iconv_hook_default.c \
     ../mod_encoding-20021209/lib/iconv_hook_ja_auto.c \
     ../mod_encoding-20021209/lib/iconv_hook_mssjis.c \
     ../mod_encoding-20021209/lib/identify_encoding.c

に変更。その後に

$autoconf

/etc/ld.so.confを編集

configureのテストで/usr/local/lib/libiconv_hook.so.1.oを参照できずに失敗する。LDFLAGS=’-L/usr/local/lib -liconv_hook’を指定してもだめ。/etc/ld.so.confを編集する必要がある。下の行を追加

/usr/local/lib

そのあと、

# ldconfig

を実行してキャッシュを更新

コンパイル
$ ./configure CFLAGS=-I/usr/local/include/iconv_hook LIBS='-L/usr/local/lib -liconv_hook' --with-apxs=/usr/local/apache/bin/apxs
$ make
$ make install

httpd.confを編集

認証もするべきなのだけど、今回は省略。

# モジュール読み込み
LoadModule dav_module         libexec/libdav.so
LoadFile  /usr/local/lib/libiconv_hook.so.1
LoadModule encoding_module    libexec/mod_encoding.so

AddModule mod_dav.c
AddModule mod_encoding.c

## for WebDav
# WebDAVとして公開するディレクトリ
alias /dav /usr/local/dav
<Location /dav>
        DAV On
</Location>

<IfModule mod_dav.c>
  # ロックDBの場所
  DAVLockDB logs/DAVLock/lockfiles
  # apache側のタイムアウトは10分
  DAVMinTimeout 600
  # サーバ側のエンコーディング 保存されているファイルの漢字コード
  DAVServerEncoding EUC-JP
</IfModule>

<IfModule mod_headers.c>
   Header add MS-Author-Via "DAV"
</IfModule>

<IfModule mod_encoding.c>
   EncodingEngine on
   # WindowsXPでホスト名を除いて認証させる
   NormalizeUsername on
   # サーバ側のエンコーディング 保存するファイルの漢字コード
   SetServerEncoding EUC-JP
   DefaultClientEncoding JA-AUTO-SJIS-MS SJIS
   AddClientEncoding "Microsoft .* DAV 1.1" ASCII MSSJIS UTF-8
   AddClientEncoding "Microsoft .* DAV" UTF-8 MSSJIS
   AddClientEncoding "(Microsoft .* DAV $)" UTF-8 MSSJIS
   AddClientEncoding "(Microsoft .* DAV 1.1)" MSSJIS UTF-8
   AddClientEncoding "Microsoft-WebDAV*" UTF-8 MSSJIS
   AddClientEncoding "RMA/*" MSSJIS
   AddClientEncoding "xdwin9x/" MSSJIS
   AddClientEncoding "cadaver/" UTF-8 EUC-JP
   AddClientEncoding "Mozilla/" EUC-JP MSSJIS UTF-8
</IfModule>

はまったこと。

  • mod_dav-1.0.3-1.3.6-l10n.diffのパッチと<IfModule mod_dav.c>ディレクティブでDAVServerEncoding を指定しなとサーバから読み込んだときに正しく表示されない。
  • /etc/ld.so.confを編集しないとmod_davのconfigureが失敗する。

今後の課題

このサーバにはmediawikiを同居させたいのだが、mod_encodingの副作用でページ名をUTF-8で渡されるのだがmod_encodingがEUCに変換するで、日本語のページを表示できない。http://www.namazu.org/ml/namazu-win32-users-ja/msg01596.html のパッチを当てればいいのだが、mediawikiはindex.php?wiki名ではなくindex.php/wiki名になっているので、副作用を回避できない。

2007/4/17 火曜日

MSN サーチツールバー を入れてIEでタブブラウズ

このエントリをはてなブックマークに追加MSN 泣若若 ャIEс帥困里呂討淵屮奪マーク被リンク数
Filed under: windows — akky @ 0:00:00

普段つかうwebブラウザはFirefoxが自分的標準なのだけど、仕事でIE(だけ?)をサポートするものを作っているとIEを使わざるを得ない。IEはWindowsXPの標準的なVer.6SP2を使っていて、ウィンドウの数が増えてくるとウィンドウを切り替えるのが使いにくい。Sleipniを使うことも考えたのだけど、何かあったら(って何だ?)いやなのでIEで行きたい。

そこで見つけたのがMSN サーチ ツールバー本来はgoogle disktopのMicrosoft版でそのおまけ程度にタブブラウズの機能がついている。検索の機能は使わないので即効でoff。タブブラウズの機能としては特段目新しいものは無いが、ウィンドウの数が増えなくて快適。快適。

2007/4/15 日曜日

seleniumを使ってテストデータ登録にいそしむ

このエントリをはてなブックマークに追加selenium篏帥c鴻若睡脂蚊のはてなブックマーク被リンク数
Filed under: selenium — akky @ 0:00:00

webアプリの開発に必要なテストデータ登録が130件ほどあり、手で入力してくのは面倒。当初はSQLで直接投入してしまおうかとも思ったのだが、ユニークな文字列の生成を考えると現実的ではない。そこで登場したのがselenium。

本来の利用目的はブラウザを操作してのwebアプリのテストなのだが、selenium-RCを使うとJava,PHP等のから操作できるのでこれを使ってみようと思いつく。今回は言語的に慣れているJavaを使う。登録するデータをCSVに書いておきselenium-RCを介してブラウザを操作し、データの投入。CSVでは足りないIDの類はMySQLのDBを直接覗いてデータ取得。ネタがそろった所で「登録」と。

FireFox2.0.3を使うとLock file still presentで悩んだのはnightly build で解決。IEだとログインした後に画面が遷移しないのは放置(いいのかそれで)。

便利な世の中になったものだ。

次のページ »