« June 2005 | Main | August 2005 »

July 2005

2005.07.31

Tracで日本語Wikiページ

 Tracにおいて、日本語Wikiページが使えない・・・と書いたことがありますが、少しの修正で使えることが判明。
 urllibというライブラリに含まれているquote関数で、日本語を上手い具合にエスケープしてくれるみたいですね。tracに含まれているutil.py中のhref_join関数の戻り値に対してquoteを適用したところ・・・Subversionリポジトリの日本語ファイル名に対して二重でエスケープしてしまうため、不採用。なもんで、とりあえずHref.py内のwiki関数部分のみに適用してみました。


def wiki(self, page=None, version=None, diff=0, history=0):
if page and version and diff:
return urllib.quote(href_join(self.base, 'wiki', page)) + '?version=' + str(version) + '&diff=yes'
elif page and version:
return urllib.quote(href_join(self.base, 'wiki', page)) + '?version=' + str(version)
elif page and history:
return urllib.quote(href_join(self.base, 'wiki', page)) + '?history=yes'
elif page:
return urllib.quote(href_join(self.base, 'wiki', page))
else:
return urllib.quote(href_join(self.base, 'wiki'))

こんな感じ(多分、もっとスマートな書き方ができると思います・・・最初にpage = urllib.quote(page)と書けばよかったかも)。

 ってか、よく見てみると、browser関数等は既にquote処理的用済みだったんですね。wiki部分に関してquoteが適用されていなかったのは何故だろう・・・? もしかしたら、どこかに不都合があるのかもしれません(ざっと使った感じでは問題ないようですが・・・だからといって、動作を保障するというわけではありませんが)。

| | Comments (2) | TrackBack (0)

2005.07.29

QuickREx

 Eclipse用正規表現プラグインQuickREx。同様のツールとして、他にもRegular Expression Testerってのがあるんですね。
 使い比べたわけではないのでどちらがどうってのはないのですが(インストールしたのはQuickRExの方・・・理由は先に見つけたのがそちらだったから)、あると結構便利かも。
 テキストファイル等から正規表現でデータを取り出すような場合、正規表現のパターンが正しいかどうか、およびその検索結果が事前に簡単にわかりますので。

| | Comments (0) | TrackBack (0)

2005.07.25

プラッツ近鉄→ヨドバシカメラ

 JR京都駅前にヨドバシカメラがくるという噂は以前聞いたことがありましたが、プラッツ近鉄の土地&建物全体をヨドバシカメラが買収するんですね。
 旭屋書店や無印良品などのテナントはどうなるんでしょ??

| | Comments (0) | TrackBack (0)

2005.07.23

加藤いづみさん★入籍!

 加藤いづみさんが7/21に入籍したとのこと。おめでとうございます、です〜。

 今年のSlowツアーには残念ながら行くことができませんでしたが(もちろんCDは買ってます)、1999/7/21(もう6年前になるんですね)に行われたライブがすごく印象に残っています。ライブの日がちょうどいづみさんの誕生日と重なっていたので、それにちなんだイベント(?)も入っていたり。

 今後も音楽活動を続ける予定との事ですが、次の作品がどんな感じになるか楽しみです。

| | Comments (0) | TrackBack (0)

Subversion and Javahl

 SubversionのリポジトリにJavaからアクセスするためのJavaHLバインディングの実験・・・。
 とりあえず、あるリポジトリにおける、あるリビジョンから最新リビジョンまでのログメッセージを取得してみました(import宣言は省略。エラー処理も適当)。

public class SVNTest {
  public static void main(String[] args) {
    try {
      SVNClient client = new SVNClient();
      LogMessage[] message = client.logMessages("svn://localhost/RepositoryPath", Revision.getInstance(1), Revision.HEAD);
      for (int i=0; i<message.length; i++) {
        System.out.println("Revision:" + message[i].getRevisionNumber());
        System.out.println("Message :" + message[i].getMessage());
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

 とりあえず、これでメッセージを取得することはできました。が、接続したリポジトリは、一応認証を要求するようにしているはずなのですが、何事もなかったかのようにアクセスできたのは何故??
 資料もほとんど見つからないし、せめてソースがあれば何とかなるかもしれませんが、それも見つからず。
 かろうじてPure Java Subversion (SVN) Client LibraryでSVNClientのJavaDocは見つけましたが・・・。

 とはいっても、Javahlを用いて行うことは、おそらくログメッセージの取得だけだとは思うので、今の状態でも何とかなるような気もしますが(^^;;

| | Comments (1) | TrackBack (0)

2005.07.21

J2SE5.0でXPath(2)

ついでに、DOMを用いた操作も試してみました。mainメソッド内のみを記述します。
Nodeの除去を行ってみるテストです。


try {
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
documentBuilderFactory.setNamespaceAware(false);
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();

Document document = documentBuilder.parse(new InputSource(new StringReader(sampleXML)));

String xpathvalue = "/学生マスタ/学生/番号";
XPath xpath = XPathFactory.newInstance().newXPath();

NodeList nodes = (NodeList) xpath.evaluate(
xpathvalue, document, XPathConstants.NODESET
);

int length = nodes.getLength();
for (int n = 0 ; n < length ; n++) {
Node node = nodes.item(n);
Node parent = node.getParentNode();
parent.removeChild(node);
}

TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer transformer = transFactory.newTransformer();
DOMSource source = new DOMSource(document);
StringWriter sw = new StringWriter();
StreamResult result = new StreamResult(sw);
transformer.transform(source, result);
sw.close();
System.out.println(sw.toString());
} catch (Exception e) {
e.printStackTrace();
}


指定した値を持つNodeの除去を行ってみる(番号が1235である学生のデータを除去してみる)テストです。

try {
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
documentBuilderFactory.setNamespaceAware(false);
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();

Document document = documentBuilder.parse(new InputSource(new StringReader(sampleXML)));

String xpathvalue = "/学生マスタ/学生[番号=1235]";
XPath xpath = XPathFactory.newInstance().newXPath();

NodeList nodes = (NodeList) xpath.evaluate(
xpathvalue, document, XPathConstants.NODESET
);

int length = nodes.getLength();
for (int n = 0 ; n < length ; n++) {
Node node = nodes.item(n);
Node parent = node.getParentNode();
parent.removeChild(node);
}

TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer transformer = transFactory.newTransformer();
DOMSource source = new DOMSource(document);
StringWriter sw = new StringWriter();
StreamResult result = new StreamResult(sw);
transformer.transform(source, result);
sw.close();
System.out.println(sw.toString());
} catch (Exception e) {
e.printStackTrace();
}

 後はXPathの記述の仕方そのものの勉強だな・・・。

#Transformerを用いると、改行がなくなってしまうのは仕方がないの??

| | Comments (0) | TrackBack (0)

J2SE5.0でXPath

 J2SE5.0で新たに追加されたXPathを使ってみようと思ったところ・・・資料がかなり少ないですね(苦笑)。Apacheの方のXPathを用いたサンプルは結構たくさん見つかるのですが。で、かろうじて見つけたのがGuy Mac's Java HutFAQTs
 上記のサイトを元に作成してみたサンプルです(Import文は省略)。例外処理などは手を抜いています。


public class XPathTest {
private static final String sampleXML =
"<?xml version=\"1.0\" encoding=\"Shift_JIS\" ?>" +
"<学生マスタ>" +
" <学生>" +
" <番号>1234</番号>" +
" <名前>学生 太郎</名前>" +
" <点数 科目=\"数学\">90</点数>" +
" </学生>" +
" <学生>" +
" <番号>1235</番号>" +
" <名前>学生 次郎</名前>" +
" <点数 科目=\"数学\">70</点数>" +
" </学生>" +
" <学生>" +
" <番号>1236</番号>" +
" <名前>学生 花子</名前>" +
" <点数 科目=\"英語\">90</点数>" +
" </学生>" +
"</学生マスタ>";

public static void main(String[] args) {
try {
// InputSourceを用いた方法
// 科目が数学である点数の内容を取得する
String xpathvalue = "/学生マスタ/学生/点数[@科目=\"数学\"]";
XPath xpath = XPathFactory.newInstance().newXPath();

InputSource inputSource = new InputSource(new StringReader(sampleXML));

NodeList nodes = (NodeList) xpath.evaluate(
xpathvalue, inputSource, XPathConstants.NODESET
);

int length = nodes.getLength();

for (int n = 0 ; n < length ; n++) {
Node node = nodes.item(n);
System.out.println(node.getTextContent());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}


これで、学生太郎・学生次郎の二人の点数を取り出すことができました。

| | Comments (0) | TrackBack (0)

xmllint

 XMLファイルの内容が、XMLSchemaの定義に従っているかどうかを調べるためのツールとして、xmllintというのがあるらしい・・・ということで、探して、試してみました(ここからWindows用のバイナリを入手)。

 試しに簡単なXMLSchemaとそれを元にしたXML(およびわざと間違えたXML)でいくつかテストしてみた感想です。
・手軽に使える(コマンドプロンプトを使えることが前提ですが)。
・XMLファイルのエンコードがShift_JISの場合、文字化けが起こるっぽい??(何かライブラリが足りないんでしょうか・・・)

 まぁ、XMLを処理する場合、Shift_JISは別に対応している必要はないので、仕方がないところかもしれませんが(UTF-8に変換して処理を行った場合、当然のことながら問題なく処理できました)。

 とりあえず、XMLを使う場面に遭遇した場合にまた使うことになるでしょう(閉じタグ漏れ等ならInternetExplorerでも簡単にわかりますが)。

| | Comments (0) | TrackBack (0)

2005.07.17

JExcelApi

 JavaでExcelファイルを扱うとなると、JakartaPOIがありますが、他にもJExcelApiというものもあるんですね(公式サイト)。
 具体的にどこまでできるのか、JakartaPOIと比較してどこが違うのかはまだ全然調べていませんが、ある程度まとまった時間が取れたら調査ですね。

| | Comments (0) | TrackBack (0)

2005.07.16

天空のキラ

 アスランから見てもやはり「フラガ少佐」なんですね(笑)。
 それはそうと、エターナルの追手の中にイザークの舞台がいたらどういう展開になっていたんだろう、とか思ってしまいました(^^; イザークやディアッカはストライクやフリーダムとも縁がありますし。

 25機のザクとグフがわずか2分で全滅・・・。アムロは12機のドムを3分でしたっけ? まぁ、機体の装備が違いすぎますからね。キラの戦闘能力で「オールレンジ攻撃」(古っ)ってのは反則でしょう(笑

素朴な疑問点。
1.ストライクのカラー、いつの間に青く変えたんでしょうね? まぁ、ルージュのもともとの色+キラってのは似合わないような気もしますが。
2.バルドフェルド隊長の機体はいつの間にムラサメからガイアに? もしかして、ムラサメは宇宙では使用不可能な機体とか?
3.ストライクはエターナルに着艦する際にかなりの被弾を? さすがにフリーダムに比べたら装甲もパワーも劣ってしまいますが。

| | Comments (0) | TrackBack (0)

2005.07.15

Google ローカル

 Google ローカルってサービスが始まったんですね。Googleの検索対象となっているページ中から、キーワードと住所を元に絞込みを行ってくれているみたいですが・・・その検索結果画面に表示されているのは、GoogleMap?
 実は(噂には聞いていたけど)まだ見たことがなかったのですが、ドラッグでぐりぐり動くし、確かにすごいかも。ステータスバーを見ていると、ドラッグした際などに通信処理が発生していますが、その表示さえ見なければとてもWebアプリとは思えないかも。
 恐るべしAjax!

| | Comments (0) | TrackBack (0)

2005.07.13

FreeMind 0.8.0RC5

 FreeMind 0.8.0のRC5が公開されていました。OpenOfficeWriterへのエクスポート機能が追加されたらしいです。OpenOfficeは僕自身は使っていないのであまり関係ないのですが、RCの間にかなり機能が追加されている感じですね。RC2→RC3のときとかすごかったですし(設定画面も追加されていましたし)。
 さすがにそろそろRCが外れた0.8.0(Stable)がリリースされる・・・かな?

| | Comments (0) | TrackBack (0)

ExcelでWebDAV(2)

 ExcelでWebDAV・・・ファイルが読み取り専用属性になっていたのは、httpd.confの設定の問題と関係していた模様。
 Subversion管理下のフォルダを、「閲覧は誰でもOK」「更新は認証ユーザーのみ」という設定にしていたのですが、それを外して「閲覧も含めてアクセス可能なのは認証ユーザーのみ」という設定にすれば、普通に更新可能なファイルとしてアクセスできました。
 もしかしたら、そもそもの設定を間違えていたのかもしれませんが。

#Excelから直接更新した場合、当然のことながらログなどは入力できません(DeltaV非対応クライアントからのコミット、というような感じのメッセージが自動的にセットされるようです)。

| | Comments (0) | TrackBack (0)

2005.07.10

SubversionのHooks

 Subversionリポジトリのhooksフォルダに各種ファイルを格納することで、コミット時に通知を送ったりすることができる・・・とのことなのですが、全然反応してくれず。
 ドキュメント等には、
  ・Windowsの場合は実行ファイル(.batや.exe)を配置する
  ・環境変数などは全てクリアされた状態で呼び出される
 というところまでは記載されているのですが・・・いろいろと調べてみると、
  ・カレントディレクトリは、hooksではなくSubversionがインストールされているフォルダ内のbinである
 ってのに引っかかっていたようでした。
 hooksフォルダ内の実行ファイルそのものが、Subversionからフルパスで呼び出されているんでしょうね。

#って、Runtime.exec()などで別ファイルを実行する場合も、基本的にフルパスで指定しているなぁ(苦笑)。

| | Comments (0) | TrackBack (0)

2005.07.09

Excel&WebDAV

 Excelって、元々WebDAV経由でのファイルのアクセスをサポートしていたんですね。
 Apacheのhttpd.confにちょこちょこっと設定を加えて、Excelからhttp://〜でアクセスすると、問題なく読み書きできました。ただ、Subversionのリポジトリと共通化することはできないんですかねぇ・・・(読み取り専用属性でオープンしてしまう)。

#まぁ、コミットの問題やら何やらが発生するので難しいのかもしれませんが・・・。

| | Comments (0) | TrackBack (0)

2005.07.03

TracWebAdmin(2)

 上手く動かないといっていたTracWebAdminですが、そもそも、使うパッチを間違えていたようで。前回はadmin-patch-05.diffを使用したのですが、trac-0.8.1-webadmin-patch.diffを使わなければいけなかった??
 Tracを0.8.4にバージョンアップして、こちらのパッチを当てなおすとさっくりと動きました(四反ですが、Tracバージョンアップの際、勝手に更新していた.pyファイルなどはコピーされないんですね)。
 期待通り、コマンドプロンプトからの処理だと文字化けしてしまうような内容も、TracWebAdminからなら問題なく登録できました。
 とりあえずは、これで様子見、かな?

 ・・・と思ったら、0-8-4-webadmin-patch-with-fixes.diffが公開されていました。

| | Comments (0) | TrackBack (0)

2005.07.02

Eclipse3.1

 Eclipse3.1リリース。Javaプログラムの開発という意味での最大の変更点はJ2SE5.0で追加された構文をサポートしたという点でしょうか。プラットフォームとしても、(SWTも含めて)結構いろいろと機能追加されているみたいですが。

#CVSNTも正式にサポートされたんですね。Subversionは残念ながらSubclipseが必要ですが・・・。

| | Comments (0) | TrackBack (0)

« June 2005 | Main | August 2005 »