XMLHttpRequest(普通のAjax)
<div id="test"/>
<script>
goog.require("goog.dom");
goog.require("goog.net.XhrIo");
var request = new goog.net.XhrIo();
goog.events.listen(request, "complete", function(){
if (request.isSuccess()) {
goog.dom.$("test").innerHTML = request.getResponseText();
}
});
request.send("http://www.google.co.jp", "POST", null);
</script> <div id="test"/>
<script>
goog.require("goog.dom");
goog.require("goog.net.XhrIo");
var request = new goog.net.XhrIo();
goog.events.listen(request, "complete", function(){
if (request.isSuccess()) {
goog.dom.$("test").innerHTML = request.getResponseText();
}
});
request.send("http://www.google.co.jp", "POST", null);
</script>
|
コンボボックス例
<html>
<head>
<title>goog.ui.ComboBox</title>
<script src="../base.js"></script>
<script>
goog.require('goog.ui.ComboBox');
</script>
<link rel="stylesheet" href="css/menus.css">
<link rel="stylesheet" href="css/combobox.css">
</head>
<body>
<h1>コンボボックス例</h1>
<input type="hidden" id="vv" value=""/>
<div id="combo1" class="use-arrow"></div>
<script type="text/javascript">
var cb = new goog.ui.ComboBox();
cb.setUseDropdownArrow(true);
cb.addItem(new goog.ui.ComboBoxItem('Windows7'));
cb.addItem(new goog.ui.ComboBoxItem('iMac'));
cb.addItem(new goog.ui.ComboBoxItem('Linux'));
cb.addItem(new goog.ui.ComboBoxItem('超漢字'));
cb.addItem(new goog.ui.ComboBoxItem('iPhone'));
cb.addItem(new goog.ui.ComboBoxItem('Windows mobile'));
cb.render(goog.dom.getElement('combo1'));
goog.events.listen(cb, 'change', function(e) {
var attrs = { 'value': e.target.getValue()};
var res = goog.dom.setProperties(document.getElementById('vv'), attrs);
});
window.onbeforeunload = function() {
cb.dispose();
};
</script>
<input type="button" onClick="alert(document.getElementById('vv').value)" value="hiddenの内容チェック" />
</body>
</html>
autocomplete例
script.aculo.usのautocompleteを利用していたが、
・変換前の文字列で保管してくれない
・自作タグライブラリでautocompleteを呼び出そうとすると、若干ソースが煩雑になる
の2点からライブラリをGoogle Closure に変えました。
使い方は下記の通り
http://code.google.com/intl/ja/closure/から
Google closureをチェックアウトする
<html>
<head>
・・・略・・・
<link rel="stylesheet" type="text/css" href="/test/css/autocomplete.css" />
<script type="text/javascript" src="/test/js/goog/base.js"></script>
<script type="text/javascript">
goog.require('goog.ui.AutoComplete.Remote');
</script>
・・・略・・・
<body>
・・・略・・・
<input type="text" id="aaa" name="aaa" autocomplete="off" value="" id="aaa" />
<script type="text/javascript">
new goog.ui.AutoComplete.Remote('/test/autoComplete/autocompletetest/',document.getElementById('aaa'));
</script>
・・・略・・・
</body>
</html>●SAStrutsのAutoCompleteAction
@Execute(validator = false)
public String autocompletetest() {
//入力途中のデータはtokenパラメータで取得可能
String token = request.getParameter("token");
//[aa,bb,cc]という文字列を返却する必要あり
//今回はtokenを最後につなげて返してみた。
//実際はDBに問い合わせて結果を返す。
String str = "["
+ "aaaa,"
+ "bbbb,"
+ "cccc,"
+ "dddd,"
+ token
+ "]";
ResponseUtil.write(str);
return null;
}変換前の文字列でもサーバーに問い合わせてくれるので非常に速い印象を受けます。
多分suggestのようにjavascriptのtimerを利用して取得しているのでしょう。
大満足。
dbflute0.9.4 + Buri-1.0.1(S2JDBC版)? + SQLServer2008
※buri-core-1.0.1.jarはsqlserver2008で使えないので、svnからソースを落としてビルドし直す。
1.escafe-flowのburi-coreを落とす。
https://www.escafe.org/svn/escafeflow/trunk/buri-core/
2.dbfluteのburiモジュールを落とす。
https://www.seasar.org/svn/sandbox/dbflute/trunk/dbflute-buri-example/
3.dbfluteで提供されているburi関連sqlのデータ型をsqlserver用に書き換える。
NUMBER->BIGINT,INTEGER
VARCHAR2->NVARCHAR
TIMESTAMP->DATETIME
4.dbfluteのsqlで定義されているDDLの各名称を変える。
camel→_区切りに
5.dbfluteのsqlで記述されているCREATE SEQUENCEをIDENTITYに変える。
6.buri-coreのentityを直す。
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "BURI_BRANCH_GEN")
→
@GeneratedValue(strategy = GenerationType.IDENTITY, generator = "BURI_BRANCH_GEN")
Seasar Confenrence
Seasar Confenrence に行ってきました。
S2やSlim3については特に言うことは無く、ただひたすら受身でした。
テスト駆動開発のこころ
では若干思うところがあり、id:t-wadaさんに直接伺いました。
●TDDを導入というかリファクタリングを正式に導入するためのコツ
顧客に面と向かってリファクタリングするのでお金下さい(そうはいわないけど。)とはいえない。どんな説得をするのか?
・非常に小さいタスクに分割して組み込む
・契約時に80%は製造、20%は品質向上に利用すると盛り込んでおく
後者は20%が事実上バッファとして扱われそうだから、
佳境になってくると品質向上どころじゃないだろうなぁ。
残業時間にリファクタリングすることになりそう。下手すると反乱がおきるかも。
そこをうまくするのがPMの手腕なんだろうけど。。
とりあえず現実的な所では前者かな。
●リファクタリングを実施するポイント
上の話の流れで聴きましたが、
・テストを作る前
・テストを作った後
この辺はやってみないとわからないけど、実際には心にゆとりがあるときかも。
ぼちぼち実践して検証してみます。
●レガシーコードのバージョンアップに関して
テストがないStruts1.0bのコードをSAStruts化していますが、具体的にどうアプローチしようかという話で。
junit/s2unit等のような小さな単位のテストはあきらめて
もっと大きな単位でのテストを行う
→selenium等でやってみては?とのアドバイス
色々試してみます。
xUnit Test勉強会機会があれば参加します。
#間違ってたら指摘お願いします
ニコニコカレンダープラグインセットアップ方法
【インストール】
trunkディレクトリにて以下のコマンドを実行してください。
python setup.py install
trac.iniの[components]に以下の1行を追加してください。
nico.* = enabled
以下のコマンドを実行し、「nicostate」テーブルを作成します。
trac-admin [Tracプロジェクトフォルダ] upgrade
【設定】
表示する日数を変更する場合は以下の内容をtrac.iniに追記してください。日数の初期値は14です。
[nico]
dispdays = 日数
【使い方】
Tracにログインしてください。「NicoCale」リンクから画面を開き、顔画像をクリックすればその日の状態が登録されます。