2008年3月29日土曜日

HttpUnitの実行に必要なライブラリ

HttpUnitの実行に必要なライブラリを以下にメモしておきます.

httpunit.jar
nekohtml.jar(Tidy.jarでもいいみたい)
xercesImpl.jar
xmlParserAPIs.jar
js.jar(JavaScriptが含まれていなければ必要がないみたいだけど,コンソールにメッセージが出るので含めました)

2008年3月24日月曜日

JettyをWebサーバとして実行する方法

JettyをWebサーバとして実行する方法を以下にメモしておきます.


public class WebServer {

static int PORT = 8080;

static String DOCUMENTROOT = "./WebContent";

public static void main(String[] args) throws Exception {
Server server = new Server(PORT);

ResourceHandler resourceHandler = new ResourceHandler();
resourceHandler.setResourceBase(DOCUMENTROOT);

HandlerList handlerList = new HandlerList();
handlerList.setHandlers(new Handler[] {resourceHandler,
new DefaultHandler()});
server.setHandler(handlerList);

server.start();
}

}

2008年3月23日日曜日

MetaWeblog APIを使ってRollerに記事を投稿する方法

MetaWeblog APIを使ってRollerに記事を投稿する方法を以下にメモしておきます.


Hashtable<Object, Object> entry = new Hashtable<Object, Object>();
entry.put("title", title);
entry.put("description", content);

Vector<Object> parameterList = new Vector<Object>();
parameterList.add(this.blogId);
parameterList.add(this.username);
parameterList.add(this.password);
parameterList.add(entry);
parameterList.add(true);

String endpoint = this.url + this.endpoint;
XmlRpcClient client = new XmlRpcClient(endpoint);
Object result = client.execute("metaWeblog.newPost", parameterList);

2008年3月15日土曜日

四則演算に登場する数の名前

四則演算に登場する数の名前を以下にメモしておきます.

addition: augend + addend = sum
subtraction: minuend - subtrahend = difference
multiplication: multiplicand * multiplier = product
division: dividend / divisor = quotient (... remainder)

可視化ツール

可視化ツールについて報告しているページをメモしておきます.

The Best Tools for Visualization
http://www.readwriteweb.com/archives/the_best_tools_for_visualization.php

2008年3月14日金曜日

Subversionにてリポジトリ内のディレクトリを移動する方法

リポジトリ内のディレクトリを移動する方法を以下にメモしておきます.

svn move -m "コメント" 移動元のディレクトリのURL 移動先のディレクトリのURL

Subversionでは,リポジトリ同士間あるいは作業コピー同士間での移動はできますが,リポジトリと作業コピー間での移動はできないようです.

情報抽出に関する論文

情報抽出に関する以下の論文についてメモしておきます(論文にはない個人的な意見も含んでいます).

張建偉, 石川佳治, 北川博之: トピックを考慮した大規模文書情報源からのレコード抽出, 情報処理学会論文誌:データベース, Vol. 48 No. SIG14 TOD35, 2007

・背景
・情報抽出の研究が重要視されている.
・様々な情報発信手段の発達→電子化されたテキスト文書が急激に増加
・テキスト文書には有用な情報が含まれているが,構造化されていないので,計算機では容易に取り扱えない
・情報抽出
・テキスト文書から有用な情報を自動的に,あるいは,半自動的に抽出する
・ブートストラッピング型が注目を浴びている
・ブートストラッピング型
・抽出パターンと抽出レコードを交互に繰り返し学習することにより,
少数のサンプルレコードから大量のレコードを抽出する手法
・従来のブートストラッピング型手法の着目点
・大量のレコードの獲得
・レコードのノイズの削減
・レコード
・一つないし複数の属性からなるデータで,各属性には同種のデータが含
まれるもの
・問題
・文書が大量にある場合,多大な処理コストがかかる.
・文書に対してタグ付けなどの前処理を行う.
・文書をスキャンする.
・単なるパターンマッチングで抽出されたレコードは,
必ずしもユーザが興味のあるトピックと合致しない
・目的
・構造化されたレコード構造の情報を抽出する
・抽出されたレコードの集合は一種のデータベースと考えられ,既存のデー
  タベースとの統合など,様々な形で応用することが可能となる.
・提案
・ユーザの意図にあった情報を効率よく抽出するためのレコード抽出法
・少ない処理コストで早くレコードを獲得する
・ユーザがほしいレコードを獲得する
・ユーザの意図に適合した情報を含んでいる可能性の高い文書群を特定し,
選択された文書を優先的にレコード抽出の対象とする.
・レコードにノイズが含まれているかどうかだけでなく,
ユーザの意図に合致するかどうかも考慮する.
・情報抽出研究の分類
・構造に基づくウェブ抽出手法
単一のページから,あるいは構造が類似するページから情報を抽出する
・ブートストラッピング型
・トピック主導型
 ・あらかじめ欲しいトピックを与えて,そのトピックに合致するページを
重点的に収集する.

2008年3月13日木曜日

JUnitによる例外のテスト

例外がスローされることをチェックしたい場合,Assertクラスのfailメソッドを使うそうです.

public void testXXXX() {
try {
// 例外 XXXXException をスローするコードを書く
Assert.fail("例外がスローされないときに表示するメッセージ");
}
catch(XXXXException expected) {
Assert.assertTrue(true);
}
}


Tips02 例外が正しく投げられることをテストする――例外のテスト手法の基本形――
http://www.itarchitect.jp/technology_and_programming/-/34141-2.html

Squeak本

オンラインかつ無料で見れるSqueak本が「The Weekly Squeak」で紹介されていました.

その本のURLは以下のとおりです.
http://www.squeakbyexample.org/

Squeak by Example, 2.0!
http://news.squeak.org/2008/03/12/squeak-by-example-20/

2008年3月10日月曜日

部分文字列の取得

Squeakで部分文字列を取得する方法をメモしておきます.

[Java]
String string = "tr[3]";
string.substring(0, 2); // -> "tr"

[Squeak]
string := 'tr[3]'.
string copyFrom: 1 to: 2.

更新クローラに関する論文

以下の論文に関してメモしておきます(論文に記述されていない個人的な意見も含んでいます).

田村 孝之, 喜連川 優: 大規模Webアーカイブのための更新クローラの設計と実装, 日本データベース学会 Letters, Vol. 6, No. 1, pp. 173-176, 2007

・クローラの分類
・一括クローラ(batch crawler)
・更新クローラ(incremental crawler)
・クローラの目的
・Webの大域的構造と時間変化の分析を主眼とするWebアーカイブの
収集
・社会知の抽出に使用
・クローラの要件
・網羅性と時間分解能を両立することが求められる
・更新クローラが不可欠<-網羅性も高まる<-時間分解能が高まる
・問題
・網羅性より再現性が重視されている.
・網羅性や時間分解能を向上させる試みもあるが,誤判定の問題が生
じている.
・スケジューリングする際に,アクセス先の状態が考慮に入れられて
いない.
・スケジューリングができても,リソースの状態により,そのとおり
にいかないケースがある.
・リソースは,クローラを動作させているマシンやネットワークだけ
でない.
・アクセス先のサーバの負荷等も影響する
・先行研究
・既出のWebアーカイブプロジェクト
・網羅性より,再現性(スクリプトやプラグインの動作)を重視し
ている
・網羅的に収集しているプロジェクトもある
・コンテンツの入手を外部に依存しているため,時間分解能に問題
・先行研究1
・WebサイトやWebページ群を単位として更新の有無を推定
・誤収集,収集漏れ
・提案
・上記の問題を解決するために,アクセス先のWebサーバの負荷状態
を考慮しながら,Webページの更新頻度に基づくアクセス
スケジュールリングを行う方式

ループとループの中断

ループとループの中断の方法をメモしておきます.

Java:

List nameList = new ArrayList();
nameList.add("html");
nameList.add("body");
nameList.add("table");
nameList.add("tr");
nameList.add("td");

Iterator iterator = nameList.iterator();
while(iterator.hasNext()) {
String name = iterator.next();
System.out.println(name);
if(name.equals("table")) {
break;
}
}

Squeak:

nameList := OrderedCollection new.
nameList add: 'html'.
nameList add: 'body'.
nameList add: 'table'.
nameList add: 'tr'.
nameList add: 'td'.

nameList do: [:name |
Transcript cr; show: name.
name = 'table' ifTrue: [^ nil].
].

2008年3月9日日曜日

デリミターによる文字列の分割

デリミターにより文字列を分割する方法をメモしておきます.

Java:

String path = "/html/body/table/tr[position()=1]";
String[] name = path.spilit("/");

Squeak:

path := '/home/body/table/tr[position()=1]'.
nameList := path findTokens: '/'.

授業撮影のためのカメラの自動制御

授業撮影のためのカメラの自動制御についての論文を読みました.その論文についてメモしておきます(論文には書いていない個人的な意見も含んでいます).

Qiong Liu, Yong Rui, Anoop Gupta and JJ Cadiz: Automating Camera Management for Lecture Room Environments, Technical Report of Microsoft, 2000.

・提案
・撮影スタッフのノウハウが反映されたルールに従ってカメラを制御することで,遠隔地の受講者に対して人が撮影するのと同品質の映像を配信する方式
・遠隔授業の種類: live(同期型), on-demand(非同期型)
・急速な技術革新,生涯学習の高まり -> 大学,企業において講義をする機会が増加 ->
時間的および空間的に講義がバッティング -> 必要な講義が受けられない ->
同期・非同期の遠隔講義で解決
・遠隔講義を実施する上での問題
・設備にかかるコスト
  単発的,低価格化が進行
・人材にかかるコスト
継続的,撮影スタッフともなると,ノウハウを会得するのに時間を要する.
これをカットできれば,遠隔講義を大規模に実施できる
・先行研究との相違点
・被写体を追跡する技術
先行研究:カメラ1台
本研究:カメラ複数台
・授業撮影のためのカメラ自動制御
先行研究1:非同期型授業が対象,講師に特別な機材を装着する,
映像の編集ルールがスライドの切り替えに基づいている
本研究1:同期・非同期の両方が対象,講師は何も装着しない,
映像の編集ルールがプロの撮影スタッフのノウハウに基づいている
先行研究2:受講生を撮影するカメラがない,ビデオ解像度が変化する,
user studyの報告がない
・プロのルール
・ライン(line of interest)を交差しない
 ・話者の視線の先あるいは頭の向いているほうに空間を多くもうける
・話者を追跡しているカメラはあまり動かさない
・話者の頭の上に話者の頭の半分程度の空間をもうけるように話者を撮影する
・最初は全体の映像を撮影する.遠隔の受講者は,環境全体の雰囲気を味わうことができる
・ジャンプカット(同じ場所を微妙に動かして撮影する場合は切れ目なくそうするということか?)をしない.
・暗すぎるカメラの映像を使わない.意味を取り違えているかもしれないので,原文を(Don't cut to a camera that is too dark.)
 ・最低ほげほげ時間以上は同じところを撮影する.
・最高ほげほげ時間以上同じところを撮影しない.見ている人が飽きてしまうから.
・すべてのカメラの調子が悪い場合にバックアップカメラを用意しておく.
・質問している受講者は,即座に撮影する.
 ・質問している状態になくても,教室にいる受講生の様子を定期的に撮影する.

2008年3月7日金曜日

javadocの文字コードに関するオプション

javadocの文字コードに関するオプションをメモしておきます.

-locale ja ナビゲーションバーなどのメッセージの言語を指定
-charset UTF-8 HTMLファイルのヘッダで文字コードを指定
-encoding UTF-8 ソースファイルの文字コード
-docencoding UTF-8 HTMLファイルの文字コード

Javadocで日本語APIリファレンスを作る
http://endeavour.cocolog-nifty.com/developer_room/2008/01/javadocapi_0b61.html