仕事でXMLの比較ツールが必要になった。
しかし、めぼしいXML専用比較ツールは有料のものばかり。
TEXT比較ツールだと、XMLの使用上、正確な比較ができない。。。
(XMLのルール上、要素と属性の順序が常に同じである必要がないため)
てわけで、つくってみようかと思っている。
で、何で作るかだが。。。
最近、VSを使ってC#&WPFのしたらば掲示板参照ツールを作ったので、WPFは割と満足した(ぇ
なので、JavaとSwingでかっちょよくGUIアプリでも作ってみたいなぁと思った。
早速、GUI部分を調べたが、コードから作るのはとても面倒な事はよくわかっていて、それらしきフレームワークが何種類かあったが、使いこなすのが面倒そう。
てなわけで、NetBeansを使ってサクっとやろう、と決める。
次に比較ロジックだが、とりあえず、XMLをパースしてちゃんと比較するロジックを自力で作るのは大変そうなので、XMLを入力として、常に順序が同じXMLに編集するという仕様を考えた。
そうすれば、普通のDIFFで比較できるからね。
JavaでテキストのDIFFをとれるライブラリを探していたら、<a href="http://d.hatena.ne.jp/reiro/20080225/javadiff">こんな</a>記事を発見。
Java-DIFF?というライブラリで、一致か不一致で比較してくれるようだ。
まぁ、似ているは今回は気にしない方向でいこう。
とりあえず以下の仕様で作る方針にする。
・XMLは正確なもののみ(構文が間違っていない)
・親要素内、要素内の属性をソートする。
・ソートされたXMLの単純DIFFを取る。
・結果を表示
まぁ、そんなに困らなくても出来るだろうと思うが、楽しんでつくろうと思う。
2011/08/22
tips.ExcelVBA改行コード
VBAの最適化について調べていたら見つけたことを検証した。
VBAで文字列中に改行コードを表す場合、VBAで用意されている定数「vbCrLf」を使う場合と、「Chr(13) & Chr(10)」を使い場合で速度が異なるということだった。
以下、1,000,000回繰返し中に改行コードと文字列の結合を行った際にかかる時間を算出してみた。
OS:WindowsXPSP3
Office:2003 SP3
1,000,000回繰返しを行った際の秒数を10回の平均で出したもの。
明らかに時間がかかっていることがわかる。
定数の場合は4倍は早いようだ。
よっぽどのことが無い限り定数を使うほうがよさそうという結論。
上記とは別件だが、エクセルのセル内改行はLFを用いている様子。
VBAで文字列中に改行コードを表す場合、VBAで用意されている定数「vbCrLf」を使う場合と、「Chr(13) & Chr(10)」を使い場合で速度が異なるということだった。
以下、1,000,000回繰返し中に改行コードと文字列の結合を行った際にかかる時間を算出してみた。
OS:WindowsXPSP3
Office:2003 SP3
1,000,000回繰返しを行った際の秒数を10回の平均で出したもの。
明らかに時間がかかっていることがわかる。
定数の場合は4倍は早いようだ。
よっぽどのことが無い限り定数を使うほうがよさそうという結論。
上記とは別件だが、エクセルのセル内改行はLFを用いている様子。
2011/07/18
JavaのSerializableについて
ずっと謎だったSerializable。
Eclipseを使ってると、必ず警告がでるアレですね。
Eclipseにしたがって適当にID付けてたけど、ちゃんとした意味を調べようと思い直し、調べたところ分かりやすい記事を発見。
http://d.hatena.ne.jp/daisuke-m/20100414/1271228333
オブジェクトを出力(ファイル、ネットワーク等)したり、入力したりというのを保証する為のもの?ということ?
まぁ、正直いまいちつかめてないけど、意味ワカンネ状態よりましになったかしら。
追加 2011.12.26
C#でなんとなく、したらば掲示板参照ツールを作っていて、ダウンロードしたdatデータをオブジェクトに詰め込んでシリアライズして保管するという方法をとっていた。
これで、シリアライズの使い道を覚えたわけだが、Javaで以前調べた覚えがあって、おんなじことができるのかなぁと思ったら、できそうですなぁ。
Serializableインタフェースはシリアライズできるようにクラスを作るよ!
という宣言ってことだね、うん。
serialVersionUIDはクラスのバージョンってことだね。
理解が進んだ感じ。
Eclipseを使ってると、必ず警告がでるアレですね。
Eclipseにしたがって適当にID付けてたけど、ちゃんとした意味を調べようと思い直し、調べたところ分かりやすい記事を発見。
http://d.hatena.ne.jp/daisuke-m/20100414/1271228333
オブジェクトを出力(ファイル、ネットワーク等)したり、入力したりというのを保証する為のもの?ということ?
まぁ、正直いまいちつかめてないけど、意味ワカンネ状態よりましになったかしら。
追加 2011.12.26
C#でなんとなく、したらば掲示板参照ツールを作っていて、ダウンロードしたdatデータをオブジェクトに詰め込んでシリアライズして保管するという方法をとっていた。
これで、シリアライズの使い道を覚えたわけだが、Javaで以前調べた覚えがあって、おんなじことができるのかなぁと思ったら、できそうですなぁ。
Serializableインタフェースはシリアライズできるようにクラスを作るよ!
という宣言ってことだね、うん。
serialVersionUIDはクラスのバージョンってことだね。
理解が進んだ感じ。
2011/07/17
2011/07/11
SQL Server 2005の表データをコピペしてExcelに貼り付けるときは
イラッとした。
絶対同じことやると思うので調べた結果をメモ
絶対同じことやると思うので調べた結果をメモ
SQL Server 2005の表データをコピペしてExcelに貼り付けるときはhttp://remindbook.blogspot.com/2009/11/sql-server-2005excel.html
SQL Server Management Studioで、オブジェクトエクスプローラから「テーブルを開く」で、表示されたテーブルデータで左上見出し行の行番号列の交差する灰色文字なしの部分をクリック→コピー→Excelで貼り付けとすると日本語が文字化けする。
SQLのselect文の結果をコピペすると文字化けしないのに。。。
で、文字化けする場合は、形式を選択して貼り付け→Unicode テキスト で貼り付ければいいらしい。
2011/02/28
登録:
投稿 (Atom)
