トップ 最新 追記

活動日誌

2005|02|03|04|05|06|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|03|04|05|06|10|
2008|04|

2005-12-02

trac 0.9 を mod_python で動かす

ドキュメントをちゃんと読んでなかったのが失敗した。

PythonHandler trac.web.modpython_frontend

としたら mod_python で動作した。

サーバが貧弱なので mod_python なしだとあまりに重すぎてつらかったけど、 mod_python ありだと割と普通に使えるくらいのスピード。

Tags: trac

2005-12-06

JavaScript のコメントとインデントを削除する正規表現

Makeを利用したJavaScriptファイルの結合・圧縮 というエントリを目にしました。

Make に対抗して Rake を紹介するのもいいかなと思ったのですが (以前訳してみた Rake チュートリアルは、たまに見てくれている方もいらっしゃるようですし)、 後半の「圧縮」という方に目をつけて、JavaScript のコメントとインデントを削除する 正規表現を紹介してみます。

このようなスクリプトが

/*
 * hogehoge
 */

function C(){
    var a = 1;

    /*
     * foo
     */
    this.foo = function(){
        // foobar
        var str = "/* comment */";
        this.a = '"foobar"';
    }
}

var c = new C(); // fugafuga
c.foo();

こういう感じになります。


function C(){
var a = 1;

this.foo = function(){

var str = "/* comment */";
this.a = '"foobar"';
}
}
var c = new C();
c.foo();

これは、次のようなワンライナーで可能です。

% ruby -e "print ARGF.read(nil).gsub(%r<([^\"'/\\s]+|\"[^\"\\\\]*(?:\\\\.[^\\\\]*)*\"[^\"'/\\s]*|'[^'\\\\]+(?:\\\\.[^'\\\\]*)*'[^\"'/\\s]*)|/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/|//[^\\n]*|^\\s+>){\$1}"

……これだけ見ても、さっぱり分からないですね。

この正規表現は、詳説正規表現第2版を参考にしました。 第6章で、C言語のコメントを削除する正規表現の書き方と、その最適化の方法が 順を追って解説されています。 正規表現について詳しく知りたいという人にはおすすめの本です。

詳説 正規表現 第2版(Jeffrey E.F. Friedl) 詳説 正規表現 第2版(Jeffrey E.F. Friedl)

本日のツッコミ(全2件) [ツッコミを入れる]

_ llamerada [トラックバックありがとうございます。 Railsは結構使っているのですが、Rakeは調べたことがありませんでした。便..]

_ yanagi [実はこの正規表現をワンライナーの形にしてみたのはこれが初めてです。半分はネタのつもりだったのですが、実際に書いてみた..]


2005-12-07

spaceでファイル名補完ができなくなる?

http://kitaj.no-ip.com/tdiary/20051206.html#p03

どうやら、将来的に space でのファイル名補完がなくなるようです。 (自分で割り合てればいいわけですが)

私は space を使ってます。いつからかは覚えてないなぁ…… 多分、Emacs を使い始めてからずっとなんだろう。

Tags: Meadow

Selenium ことはじめ

Web アプリケーションのテストとして、Selenium を試してみましたので、 初歩的な使い方をメモしておきます。

Selenium は、実際のブラウザ上で Web アプリケーションを自動実行しながら テストを行なうというツールです。 デモがあるので、実行してみてください。

設置

Selenium を使うには、基本的に、テスト対象の Web アプリケーションがインストールされているホストに Selenium を置く必要があります。

ダウンロードページから selenium-0.6.0.zip を ダウンロードし、アーカイブの中の selenium ディレクトリを、httpd から見える位置に置きます。

ここでは、http://<Server>/selenium/ に相当する場所に置いたとしましょう。

http://<Server>/selenium/TestRunner.html にアクセスすると、配布物に含められているテストを実行することができるので、 一度実行してみましょう。 ウィンドウのポップアップを禁止していたりすると、ポップアップ関連のテストでエラーが出るかもしれませんが、 それ以外は問題なく通ると思います。

テストを書く

テストは、selenium/tests ディレクトリの中に書きます。

単なる HTML ファイルの table なので、手で書いてもいいのですが、 Selenium recorder を使うととても便利です。

書いたテストファイルには、TestSuite.html からリンクをはっておきます。 すると、TestRunner から実行できるようになります。

Tags: Selenium

2005-12-13

capitalize

JavaScript の話に対して正規表現の指摘をするのもどうかという気持ちですが、 こっちの方が、ちょっと短く書けていいかもしれません。

function capitalize(str){
  return str.replace(/\b\w/g, function(word){ return word.charAt(0).toUpperCase() });
}

from Collection & Copy

本日のツッコミ(全2件) [ツッコミを入れる]

_ brazil [おっ、トラックバックありがとうございますー。そちらの方が効率がよさそうですよね。 私が作者じゃないですが、きっと以下..]

_ yanagi [あ〜 2文字目以降をそろえることを全く考えてませんでした orz]


2005-12-14

Windows XP 上での hta を使った Selenium テスト

Selenium でのテストで、ローカルの Windows マシンにある hta を使って 別ホストのアプリケーションをテストするとき、Windows XP だと クッキーを送ってくれなくて悩んだ。

ローカルの html ファイルで iframe に別ホストを記述した状態で、 iframe の中のページのクッキーを送ってくれない(Windows 2000 だと送ってくれる)ので、Selenium 自体の問題ではない模様。

試行錯誤してみたが、テスト対象ホストを「信頼済みサイト」にすると解決した。SP2 におけるセキュリティ強化の一種なのだろうか。 (もしくは、クッキーだけ送るようにする設定があるかもしれない。後で調べる)

Tags: Selenium

Selenium で A 要素のリンク先をテストする

<a href="/hoge.html">hoge</a> というリンクにマッチさせようとして //a[@href="/hoge.html"] と書くと、 FireFox だと通るんだけど IE だと通らない。

どうやら IE だと、DOM で elem.getAttribute('href') としたときの値が 絶対 URL になっているみたい。

IE でも通る書き方は

//a[contains(@href, "/hoge.html")]
Tags: Selenium

2005-12-15

Selenium で //input[@name='n' and @value='v'] と書くと IE でエラーになる件

このパッチで動くようになった。

Index: html-xpath/html-xpath-patched.js
===================================================================
--- html-xpath/html-xpath-patched.js    (revision 666)
+++ html-xpath/html-xpath-patched.js    (working copy)
@@ -602,7 +602,7 @@
            {
                var attribute = node.attributes[i];
                var attributeValue = attribute.nodeValue;
-                   if (attributeValue && attribute.specified)
+                   if (attributeValue && (attribute.specified || attribute.nodeName.toLowerCase() == 'value'))
                {
                    var domAttribute = dom.createAttribute(attribute.nodeName);
                    domAttribute.value = attributeValue;

なぜ IE でダメだったかというと、どうも IE だと input 要素に value 属性を指定しても、 attribute.specified が true にならないからのようだ。IE のバグ?

Tags: Selenium

2005-12-18

Rails勉強会に行った

あとで書く


2005-12-27

IE で //a[@href="..."] がうまく動かないことがある

Selenium で、//a[@href="..."] という指定子が a 要素をうまく見つけられ ないというので悩みました。

実験してみると、どうも、IE の getAttribute は a 要素の href 属性に対しては、半角空白を %20 で置き換えた値を返すようです。

こんな感じの HTML でテスト。

<a href="Program Files/hogehoge" foo="Program Files/hogehoge">foobar</a>
<script type="text/javascript" language="javascript">
alert("<" + document.getElementsByTagName('a')[0].getAttribute('href') + ">");
alert("<" + document.getElementsByTagName('a')[0].getAttribute('foo') + ">");
</script>
Tags: Selenium

2005-12-31

y2005.close

個別には書きませんが、転機の一年だったのではないかと思います。

いろんなところに行って、いろんな人と会って、いろんな体験をしました。 お世話になった皆様本当にありがとうございました。

来年もよろしくお願いします。


トップ 最新
Written by Kouhei Yanagita <yanagi at shakenbu.org>