2012年8月5日

XMLで記述したメモをフォルダツリー風に表示(2)

各フォルダの開閉状態は、ページをリロードすると元に戻ってしまいます。
これを、リロードしても開閉状態を維持するよう[tree.xsl]を修正します。


フォルダの開閉状態をクッキーに保存するため、JavaScriptのコードがかなり増えてしまっています。
またクッキーは容量に上限があるので、あまりフォルダ数が多くなると正常に動作しなくなる恐れがあります。

ブラウザで表示させると、













[Reset all]を押すと開閉状態を初期状態に戻します。
[Open all]を押すと全フォルダが全開状態になります。ただし開閉状態は書き換えないので、リロードすれば元にもどります。

※フォルダ数は子フォルダのみカウントするように修正
※ソースコードが誤った表記になっていたため修正 2012.09.21

2012年7月30日

XMLで記述したメモをフォルダツリー風に表示(1)

XMLで階層構造で記述されたメモを、フォルダツリー風に整形して表示します。
階層は無制限、フォルダ名には配下のフォルダ数を括弧で表記。

メモは普通のエディタで記述します。記述ルールは以下のとおり。
・ルートのタグは<top>にします。他に使用するタグは<c><o><t>の3つ。
・<c>と<o>はフォルダ名、<t>は本文です。
・<c>は初期状態で閉じたフォルダ、<o>は開いたフォルダを表します。
・<t>にはHTMLのタグが使えます。

このルールに従って記述するとこうなります。

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="tree.xsl" type="text/xsl"?>
 

食費比較
  安いか高いかはカロリーを基準にしている
  白米
    一番安い。しかし同じ食べ方だと飽きやすい。
  
  冷凍うどん
    冷凍はかなり安く買える。素うどん続けても飽きにくい。
  
  パスタ
    乾麺自体はかなり安いが、素パスタで食べる訳にもいかない。
 
       何か和えたりすると結局高くつく。
    
  
  食パン
    高い。同じ食べ方は飽きる。
  



これをブラウザで表示させると、



画像上がブラウザで開いた初期状態、下がクリックして展開した状態です。
このようにXMLを整形して表示させるため、別途フォルダ画像とXSLファイルが必要です。
フォルダ画像は適当に用意して[open.gif],[close.gif]という名前にします。
XSLファイルは以下の内容を[tree.xsl]という名前にして保存。 エンコードは[*.xml]、[*.xsl]共にUTF-8。他のエンコードを使用するならencoding="UTF-8"を変更。


ツールやwikiの使用が制限されるなど、環境が限定される客先での情報共有で役立つかもしれません。

ただし、複数人でxmlを同時編集すると内容を壊してしまう危険があります。
またタグ構造は単純ですが、構造を壊すとすぐエラー表示になってしまいます。
ある程度のタグ打ちスキルは必須です。

※ソースコードが誤った表記になっていたため修正 2012.09.21

2012年1月14日

DoxygenでISO-8859のコード変換失敗に対応するには

欧米のソースコードはシングルバイトコード(ISO-8859)がよく使用されますが、ASCIIコードで無いコード、 つまり\x80~\xFFのシングルバイトコードが含まれている場合があります。
その多くはコメント部で使用されます。例えば人名やCopyrightの©記号などです。

これらの文字コードを含むソースに日本語のコメントを追加すると、全体で文字コードの不一致が起こります。
そのため、Doxygenでドキュメント生成しようとするとコード変換に失敗します。

・ISO-8859の特殊文字(\x80~\xFF)を検出する方法 
サクラエディタUNICODE版のgrepを使用します。
正規表現を使用し、検索条件を[\x{dc80}-\x{dcff}]とします。

・対処法
コメント部で使用されていた場合、単純に削除するかスペースなどで置き換えます。
文字列中で使用されていた場合、内容を変える訳にはいかないのでバックスラッシュ(¥or\)によるコード表記に置き換えます。

・大量にある場合
スクリプトを書かざるを得ないでしょう。
日本語のコメントを付加する前であれば簡単なスクリプトで済みます。
(\x80~\xFFの文字コードをコード表記に変えるだけ)

2012年1月2日

HomeCompass::Update Ver.1.0.7

Ver.1.0.7版を公開しました。


ネットワークによる現在位置の測位

設定画面で切替ができます。
 

天候が悪く、GPSの電波が拾えない場合に使用して下さい。
GPSより精度は悪いですが、大まかな位置は把握できます。
また、ネットワークによる測位は通信料金が発生する場合があります。

地図上では、 ネットワークによる測位の場合に現在位置が赤く表示されます。


・Googleマップの共有機能との連携

Googleマップで検索した場所の情報を、ホームコンパスへ送り込む機能です。
例えば、Googleマップのマイプレイス(お気に入り)を
ホームコンパスで登録したいとき、少しだけ入力の手間が省けます。

マイプレイスを選択し、「この場所を共有」→「ホームコンパス」と選択すると
ホームコンパスが起動し自動的に検索を実行します。

ただし、ホームコンパスで検索できない場所では連携が上手くいかなかったり、
全く別の場所を表示してしまう場合があります。