スポンサー広告 - スポンサーサイト

--/--/-- (--) --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【プログラミング】JAVA - WinMerge用プラグイン - プロパティファイルの比較

2013/11/17 (日) 22:36

仕事でプロパティファイルの比較をする必要があったのですが、
一方はコメントあり、もう一方はコメントなし、設定値の記述順もばらばら。
という状況で、有効な設定行だけを抽出して差を確認したかったのです。
単純に「WinMerge」で比較しても、当然上手く比較できません。
そこで、「WinMerge」用のプラグインを作ることにしました。
どんな動作にするかというと、Javaの「java.util.Properties」で読み込み、
キーでソートして出力するという単純な物です。
このAPIで読み込むと、コメント行が除去されます。ついでにUnicode コード変換された文字も元に戻ります。
読み込んだ後に「java.util.TreeMap」に詰め直してソートします。
もしかしたら世の中に需要があるかもしれないのでソースを公開します。
適当に書き換えて使ってください。

package tak.tools;

import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.util.Enumeration;
import java.util.Properties;
import java.util.TreeMap;

/**
* プロパティファイルを読み込んで、キーの値でソートして出力します。
* コメント行は無視されます。
* 実行可能JARを生成してください。
*
* @author tak
*
*/
public class PropertiesOutput {

/**
* メイン
*
* @param args プロパティファィルのフルパス
*/
public static void main(String[] args) {

final Properties prop = new Properties();

try {
prop.load(new InputStreamReader(new FileInputStream(args[0]), "UTF-8"));
outputList(System.out, prop);
} catch (Exception e) {
e.printStackTrace();
}

}

/**
* プロパティの出力
*
* @param out 出力先
* @param prop 対象プロパティファイル
*/
private static void outputList(PrintStream out, Properties prop) {

// キーでソート
TreeMap<String, String> map = new TreeMap<String, String>();

// プロパティの抽出
for (Enumeration<?> e = prop.keys(); e.hasMoreElements();) {
String key = (String) e.nextElement();
map.put(key, (String) prop.getProperty(key));
}

// プロパティの出力
for (String key : map.keySet()) {
out.println(key + "=" + map.get(key));
}

}

}


続いて、WinMerge用のプラグインファイルです。
MergePlugins ディレクトリに配置します。
※64Bit版では動かないかもしれません。
<scriptlet>

<implements type="Automation" id="dispatcher">
<property name="PluginEvent"><get/></property>
<property name="PluginDescription"><get/></property>
<property name="PluginFileFilters"><get/></property>
<property name="PluginIsAutomatic"><get/></property>
<method name="UnpackFile"/>
<method name="PackFile"/>
</implements>

<script language="VBS">

Option Explicit

'環境に応じて変更してください
Const jarPath = "上記JAVAをJAR化して配置したフルパス"

Function get_PluginEvent()
get_PluginEvent = "FILE_PACK_UNPACK"
End Function

Function get_PluginDescription()
get_PluginDescription = "Compare Propertis Files"
End Function

Function get_PluginFileFilters()
get_PluginFileFilters = "\.properties$;\.conf$"
End Function

Function get_PluginIsAutomatic()
get_PluginIsAutomatic = True
End Function

Function UnpackFile(fileSrc, fileDst, pbChanged, pSubcode)
Dim fso
Dim fo
Dim ws
Dim exec

Set fso = CreateObject("Scripting.FileSystemObject")
Set fo = fso.CreateTextFile(fileDst, True)
Set ws = CreateObject("WScript.Shell")
Set exec = ws.Exec("java -jar """ + jarPath + """ """ + fileSrc + """")
fo.Write(exec.StdOut.ReadAll())

Set exec = Nothing
Set ws = Nothing
fo.Close
Set fo = Nothing
Set fso = Nothing

pbChanged = True
pSubcode = 0
UnpackFile = True

End Function

Function PackFile(fileSrc, fileDst, pbChanged, pSubcode)
PackFile = False
End Function

</script>
</scriptlet>

関連記事

【駄文】 - 寒暖差アレルギー

2013/10/27 (日) 21:47

先日の事、朝起きた時に少し鼻がムズムズしていました。
出勤するとそれがひどくなり、鼻水が止まらなくなり、ムズムズするものだからくしゃみも連発する始末。
花粉症の人はこんな感じなのかなぁとか思いつつ、ちっとも仕事にならないので近くの薬局で症状を訴え、鼻炎の薬を購入しました。
昼前に飲んで、昼食後にはすっかり良くなりました。

次の日、隣の席の人が「今、こんなのが流行っているらしいですよ。昨日はこれじゃないですかね?」と見せてくれたのが、「寒暖差アレルギー」の検索結果の画面でした。(スマホで見せてくれました)

調べてみると症状がどんぴしゃ。
熱は出ないし、鼻水は透明。ちょうど季節の変わり目で、日々の気温の差が激しいという事もあり、正に一致した感じです。
(医学的には『血管運動性鼻炎』というらしい)

鼻炎の薬で正解のようでした。
症状はその日の午前中だけで済み、薬の服用もその時だけでした。
(つーか薬高いですねぇ。結果的に1回分しか服用しなかったので、ばら売りしてくれると助かるんだけどなぁと思いました)

takの出向先では10月末までクールビズで、未だにYシャツのみで通っているので寒暖の差にはやられやすいのかもしれません。
でも、外に出るのは出退勤の時だけで、その他はビルに引きこもっているので、上着は不要ですねぇ。電車は相変わらず暑いし。
もうすぐクールビズが終わって、ネクタイを締めることになります。嗚呼…憂鬱だ…。
関連記事

【駄文】 - PS3の修理

2013/10/20 (日) 22:24

先日、久しぶりにPS3(CECH-2000A)に電源を入れたところ、最後には電源が入らなくなってしまいました。
最終的にというのは、少々経緯があったという事です。

1日目
電源を投入したところ、普通に起動。
本体のソフトウェアバージョンアップを実施したところ、途中で電源が落ちました。これを2回繰り返しました。
その後正常に稼働し、ゲームを起動。ひとしきりゲームで遊んで1日目は終了。

2日目
電源を投入したところ、起動せず。
本体を電源に繋げると、電源ランプが赤に点灯。
そこから電源を入れると、緑になってすぐに消灯。電源が入らず。
何度やってもこのループでした。

もはや修理しかないのか?と思ってネットで検索したところ、ドライヤーで復活させている人がちらほら。
熱を排出する所から熱風を送り、ハンダを溶かして接触を改善させるのだとか。
ちょっとギャンブル性が高い施術です。
悪化しても嫌なので、素直に修理に出すことにしました。
とはいえ、既にPS4が発表されているこの状況で、PS3を修理するのはどうなのか?
少々迷いましたが、PS4も発売後すぐに買いわけではないし、まだPS3で遊ぶ機会もあるだろうと思い、修理することにしました。

早速修理の方法を調べたところ、オンラインで修理の依頼ができることがわかりました。
ソニーの公式なので安心です。
「SCEJオンライン修理受付サービス」という物を利用しました。
説明を読むと、ネットで申し込み後、本体を送りつけてくれとのこと。
以前人生をときめかせるために箱の類は全て捨ててしまったので梱包に用の資材がありませんでした。
が、箱がほしい人はサービスセンターに連絡すれば有料で送るとのこと。
仕方が無いのでそれを申込むことにしました。
電話で連絡できるとのことでしたが、すぐ横にチャットでの問い合わせのボタンがありました。
電話はメモとか面倒そうなので、チャットで問い合わせを行ってみました。
ボタンを押すと別のチャットウィンドウが開いて、「接続中」の文字が。
ほどなくして担当者から返事がありました。
毎日キーボードを叩いているtakとしては、チャットの方が楽でしたね。
ログが残るので、聞き返すこともないし。
修理用の梱包資材の送付を依頼して、サクッと終わりました。
個人情報の送信は、さらに別のウィンドウが出てきました。たぶんSSL通信なんでしょうね。

数日後、着払いで梱包資材が届きました。
届いた梱包資材はPS3購入時の箱の無地版でした。
中には症状を記載する「カルテ」と呼ばれるシートが入っていました。
事前にネットで修理を依頼しておき、そこで入力した住所と、ここに記載する住所でマッチングを行うようです。
てっきり事前依頼時に通知された「受付番号」を記載するかとお思ったのですが、それは使いませんでした。
依頼時にクロネコヤマトの集荷依頼も同時に指定でき、家から一歩も出ることなく送ることができました。
素晴らしい世の中になったもんですねぇ。

さらに数日後、修理費用の見積の連絡がきました。
12,600円とのこと。
該当の症状を確認しました。とのこと。
メイン基板、ディスク読取装置を交換するのに、これだけかかるのだそうです。
既にいくらかかっても修理すると決めていたので、すぐにOKしました。
WEBでボタンをぽちっと押すだけなので、これも手間がかかりませんでした。

さらに数日後、無事に修理されたPS3が届きました。修理費は着払いです。
結局最初の梱包資材の申し込みから10日ほどで完了です。
最初から最後まで、誰とも話をせずに済んでしまいました。
ちょっとびっくりですね。オンライン修理はお勧めです。

新しく購入するよりは安く済んだと思いますし、ソニー製品なのに1年以上持ったので、仕方が無いかなと。
次に壊れたら、今度は買い替えかなぁ。
関連記事

【駄文】 - 桃の果実酒 其の参

2013/09/29 (日) 22:34

漬けてから2カ月が経過しました。

写真はフラッシュが強すぎですね(汗)
状態は1か月前とほとんど変化が無いです。色も変わりが無いように思います。

今の内、飲む用のグラスを買っておこうか考えています。
丸い氷が作れるやつとかも気になりますねぇ。
こういうことを考えるのも、物作りの楽しみの一つですかね。

@1ヶ月で飲めるようになるはずです。
ほんとに美味しくなっているのだろうか…

関連記事

【駄文】 - 保険の窓口

2013/09/17 (火) 21:57

実は、今週は遅めの夏休みで10連休なのでした。
そんなわけで、休みを利用して「保険の窓口」に行ってきました。

そもそもtakは任意の保険の類には一切加入していませんでした。
が、母のガンの発見に伴うあれこれの費用を面倒見ることになったことをきっかけに、自分の時には誰にも迷惑をかけないようにしようと思い、医療・がん保険の加入を検討することにしました。

保険の窓口」を利用するきっかけは、現場の人の話を聞いての事でした。
医療保険とか、がん保険とかを考えているとか話をしたら、勧められたのでした。
勧めてくれた人も、つい最近利用して、見直しをして保険会社を乗り換えたりしたそうです。
無料なので行ってみたら?とのことなので、休みを利用して行ってみました。

まず、WEBで最寄りの店舗を検索して、相談予約を行いました。
メールで返事が来るので、それに返信をすると予約が確定します。
その時に、ある程度の相談内容とかを聞かれていたので、素直に書いておきました。

予約の日時に店舗に向かいました。
店舗に入ると、他の相談者は一人もいませんでした。平日だからですかね。
アイスコーヒーを出してくれたり、至れり尽くせりな感じでしたね。
takは保険の知識がほとんどないことを告白し、色々説明してもらいました。
検討するに至ったきっかけとかも話しました。

保険会社ごとに専用の見積ツールがあり、希望に沿う見積もりができる会社のツールを何個も立ち上げてシミュレートしてくれました。
こういうのは職業柄気になりますねw
どの会社のも似たようなインターフェースでしたが、使いにくそうな感じは無かったです。
担当の人が慣れているだけでしょうか。
とはいえ、「さすがに全ての会社のツールを同時には立ちあげられませんと」と言っていました。
PCのスペックの問題ですかね。XPだったし。
中には完全にWEBアプリって会社もありましたが。

1回の相談で契約までする人は少ないんだとか。
大体は3回程度の相談を経て契約をするのだと言っていました。
が、takは目的もしっかり決めてあるし、そもそも1回の相談で決めるものだと思っていたので、1回で決めてきちゃいました。
15時から始めて、終わったのは17時半でした。結構あっという間でしたね。
なんだかんだと色々シミュレーションして、他社の場合はどうか?とか、試してもらいました。
結局は医療保険とがん保険を別々に契約しました。
共に「メットライフ アリコ」社です。1番理想に合う契約の組み合わせが実現できたのがここだけだったので。
担当者の人も、これで問題ないと思いますと言っていましたし。

まぁ長く付き合う事になるであろう事請け合いなので、また見直しをすることもあるでしょう。
これでいつ病気になっても平気かな?なんつって。
関連記事
検索フォーム
RSSリンクの表示
カレンダー
10 | 2017/11 | 12
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 - -
月別アーカイブ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。