山田偽研

SQDN マニュアル

1 インストール&アンインストール

1−1 実行に必要なライブラリー

SQDNを実行するためには,下記の実行環境とランタイムライブラリーが必要です..NET Framework以外は,SQDNパッケージに同梱してありますので,そのままお使いください.

フリーのランタイムライブラリーをご提供されている作者様に,改めて御礼を申し上げます.ありがとうございます.

1−1−1 .NET Framework

このソフトを利用するためには,事前にMicrosoft .NET Framework 4.5.1もしくは3.5をインストールしておく必要があります.ご自分の環境に合わせたパッケージを以下のリンクから取得してください.

1−1−2 System.Data.SQLite.DLL

日記データ管理には,SQLiteライブラリー「System.Data.SQLite」を使用しています.

1−1−3 Azuki.DLL

日記編集のエディタエンジンには,「Azuki」を使用しています.

1−1−4 jQuery

ブラウザ表示エフェクトには,「jQuery」を使用しています.初期状態では,CDN(Contents Delivery Network)から参照しています.しかし,この場合はネットに接続できる環境がないと使用することができません.オフライン環境で使用したい場合は,ダウンロードしてローカルディスクに設置してください.

1−1−5 Shadowbox

メディアやインラインフレームのポップアップ表示エフェクトには,「Shadowbox.js」を使用しています.

1−2 インストール

ZIP圧縮ファイルを適当な場所に解凍したらそのまま起動できます.

フォルダ略称 説明
{SQDN} SQDN.exeを格納するフォルダ
{設定&日記} 初期設定&日記データを格納するフォルダ

"{設定&日記}"の配置方法によって,様々なユーザーモードで動作します.

1−2−1 シングルユーザーモード
{SQDN}\single\

というフォルダを配置すると,SQDNはシングルユーザーモードで動作します.異なるユーザーが実行しても"{設定&日記}"は必ず"single"フォルダに格納されるので,同じ設定を共有することになります.

実際に"{設定&日記}"を共有することはあり得ないと思いますが,簡易動作チェック用に設けています.

1−2−2 マルチユーザーモード・その1
{SQDN}\users\ユーザー名\

というフォルダを配置すると,SQDNはマルチユーザーモードで動作します.ログインユーザーごとに別々のフォルダが作成されるので,個別の"{設定&日記}"を所有することができます.

1−2−3 マルチユーザーモード・その2

上記二種類の"{設定&日記}"が存在しない場合,

{AppData}\SQDN\初期設定名\
{AppData}
XPまで C:\Documents and Settings\ユーザー名\Application Data\
Vista以降 C:\Users\ユーザー名\AppData\

というフォルダが自動的に作成され,SQDNはマルチユーザーモードで動作します.ログインユーザーごとに個別の"{設定&日記}"を所有できるのは前節の"マルチユーザーモード・その1"と同じですが,こちらは更に"初期設定名"フォルダを任意にいくつでも作成することができます.すなわち,1ユーザーが複数の"{設定&日記}"を所有することができるわけです.

> SQDN /初期設定名

コマンドライン引数に"初期設定名"を記述して起動することで,各々の"{設定&日記}"を使い分けることができます.また,"初期設定名"が異なれば複数のSQDNを干渉すること無く同時に起動することも可能です.

1−2−4 {設定&日記}のファイル/フォルダ構成
ファイルパス 説明
SQDN.XML 初期設定ファイル
define.XML 定義ファイル
define.BAK 定義ファイルのバックアップ
data\SQDN.DB 日記データベースファイル
data\SQDN.DB.BAK 日記データベースファイルのバックアップ
data\images\*.* メディアファイル

1−3 バージョンアップ

バージョンアップは"{SQDN}"フォルダにすべての新規ファイルを上書きするだけで完了です.

1−4 アンインストール

以下の順番に従って行います.

2 概要

2−1 日記を書いてみよう

やりたいこと 操作
今日の日記を書く Today2.pngボタンの今日の日記を編集/新規作成メニューをクリック
任意の日付の日記を書く カレンダーの日付のコンテキストメニューをクリック
日記ブラウザEdit.pngボタンをクリック

そしたら,編集ウィンドウに思いの丈を書き込みましょう.

日記文には普通に平文テキストを入力するだけでも良いのですが,Wiki風の文法を駆使すると様々なスタイル&レイアウトの文章を作成することができます.

また,文中の好きな場所に分類タグを埋め込むことができます.それらはタグクラウドにまとめて随時リストアップすることができます.

書き終わったら,編集ウィンドウのツールバーのEdit.pngボタンをクリックします.

2−2 日記を表示してみよう

書き溜めた日記は,日記ブラウザに様々な表示モードを切り替えてリストアップすることができます.

2−2−1 通常モード

ツールバーのカレンダーコントロール日記ブラウザの日付をクリックすると,その日付の日記を起点にリストアップします.

2−2−2 履歴モード

ツールバーのHistory.png(編集履歴)をクリックすると,日記を編集日時の新しい順にリストアップします.

2−2−3 検索モード

キーワード検索にヒットした日記を日付の新しい順にリストアップします.

2−2−4 タグモード

日記ブラウザのタグリンクを左クリックすると,同じ分類タグの記述がある日記を日付の新しい順にリストアップします.

2−2−5 見出しモード

日記ブラウザのタグリンクを右クリックすると,同じタグ見出しの記述がある日記を日付の新しい順にリストアップします.

2−2−6 メディアモード

ツールバーのImage.png(メディア列挙)をクリックすると,静止画・動画・音声などのメディア構文インラインフレーム構文の記述がある日記を日付の新しい順にリストアップします.

2−2−7 Webモード

日記ブラウザの外部リンクをクリックして,Webページを表示すると,このモードに切り替わります.

3 メインウィンドウ

3−1 ツールバー

3−1−1 GoBack.png 戻る (Ctrl+<)

日記ブラウザの表示履歴をひとつ前へ辿ります.

3−1−2 GoForward.png 進む (Ctrl+>)

日記ブラウザの表示履歴をひとつ先へ辿ります.

3−1−3 表示履歴

日記ブラウザの表示履歴をドロップダウンメニューにリストアップします.

仕切り線より 現在表示している内容より
上のメニュー項目 新しい履歴
下のメニュー項目 古い履歴
3−1−4 Refresh.png 更新 or Stop.png 中止 (F6)
ボタン 動作
Refresh.png ブラウザの表示を更新(スタイルも再読み込み)
Stop.png ブラウザの更新動作を中止
3−1−5 Bookmark.png ブックマーク

表示中のページをブックマークに登録して,いつでもそれを再現することができます.

登録できるページは,日記ページに限らずWebページでもなんでも構いません.

ブックマークに登録

ブックマークを登録する前にタイトルなどを編集することができます.

上級者モード

このスイッチをオンにするとSQLiteクエリーと検索式も編集できます.

しかし,腕に覚えがある人以外は安易に編集しないほうが懸命です.

登録

ブックマークリストの先頭に追加します.

中止

ブックマーク登録を中止します.

ブックマークリスト

ブックマークリストから項目を選択すると,ページ表示を再現します.

更に,ブックマークリストの先頭に項目を移動します.

コンテキストメニュー

メニュー項目上で右クリックを行うと,コンテキストメニューが開きます.

編集

ブックマークのタイトルを編集します.

削除

メニューからブックマーク項目を削除します.

中止

ブックマークメニューは開いたまま,コンテキストメニューだけを閉じます.

3−1−6 カレンダー

Calendar.png

カレンダーで指定した日付を起点とする日記ページを表示します.

直接入力

上部の日付表示テキストボックスに「年月日」を直接入力して,エンターキーを押すと,その日付を起点とするページを表示します.

「年月」だけを直接入力して,エンターキーを押さずに,下部のドロップダウンカレンダーから「日付」を選択するというトリッキーな使い方もできます.

カレンダー入力

ボタンをクリックすると下部のドロップダウンカレンダーが開くので,日付をクリックして,その日付を起点とするページを表示します.

その他の操作は以下のとおりです.

マウスボタン 対象 説明
左クリック First.png 表示年の前の年の同月に移動
Prev.png 表示月の前の月に移動
Next.png 表示月の次の月に移動
Last.png 表示年の次の年の同月に移動
年のロングジャンプメニューを開く(1)
月のロングジャンプメニューを開く
その日付を起点とするページを表示(2)
右クリック コンテキストメニューを開く(3)
中クリック 今日を含む年月のカレンダーに移動
注意1
年の移動ステップは定義ファイルの"Calendar\menu\year"属性から設定できます.
注意2
その日付の日記が存在しない場合に,"オプション設定|表示&編集|編集ウィンドウ|日記のない日付をクリックしたら,編集ダイアログを開く"スイッチがオンならば,日記を新規作成するために編集ウィンドウを開きます.スイッチがオフならば,エラーメッセージを表示してなにもしません.
注意3
指定日の日記を新規作成/編集するために編集ウィンドウを開くコマンドを実行できます.
動作

指定日を起点とする日記を表示する場合,内部的には以下のような命令をデータベースに送ります.

select * from diaries where date <= 'yyyy-MM-dd' order by date desc limit N
注意
このマニュアルの随所に上記のようなSQLite命令文がたびたび登場しますが,一般的なユーザーの皆さんは読み飛ばして頂いて結構です.通常の利用には全く必要ない情報です.
3−1−7 First.png 最初のページ (Ctrl+Alt+<)

最も古い日付を起点とした日記ページに移動します.

内部的には以下のような命令をデータベースに送ります.

select * from diaries order by date asc limit N
注意
厳密には取得した日記データを逆順にソートして表示します.
3−1−8 Prev.png 前ページ (Alt+<)

表示モードを維持したまま,前の日記ページ(N日前)に移動します.

表示モードごとにそれぞれ,内部的には以下のような命令をデータベースに送ります.

select * from diaries where date < 'yyyy-MM-dd' order by date desc limit N
select * from diaries where edit < 'yyyy-MM-dd' order by edit desc limit N
select * from diaries where (content regexp 'キーワード') and date < 'yyyy-MM-dd' order by date desc limit N
select * from diaries where id in (select d_id from relation where id=(select id from tags where name='分類タグ名')) and date < 'yyyy-MM-dd' order by date desc limit N
select * from diaries where (content regexp '(<{2,3}|>{2,3})\{.+?\}') and date < 'yyyy-MM-dd' order by date desc limit N
3−1−9 Today2.png 今日からのページ
今日からのページ (Alt+T)
今日の日記が存在する場合

今日を起点とした日記ページに移動します.

内部的にはカレンダーコントロール同じ命令をデータベースに送ります.

今日の日記が存在しない場合

"オプション設定|表示&編集|編集ウィンドウ|日記のない日付をクリックしたら,編集ダイアログを開く"スイッチがオンならば,日記を新規作成するために編集ウィンドウを開きます.スイッチがオフならば,エラーメッセージを表示してなにもしません.

今日の日記を編集/新規作成
今日の日記が存在する場合

編集ウィンドウを開いて,今日の日記を編集します.

既に,今日の日記の編集ウィンドウが開かれている場合は,そちらにフォーカスを移動します.

今日の日記が存在しない場合

編集ウィンドウを開いて,今日の日記を新規作成します.

3−1−10 Next.png 次ページ (Alt+>)

表示モードを維持したまま,次の日記ページ(N日後)に移動します.

表示モードごとにそれぞれ,内部的には以下のような命令をデータベースに送ります.

select * from diaries where date > 'yyyy-MM-dd' order by date asc limit N
select * from diaries where edit > 'yyyy-MM-dd' order by edit asc limit N
select * from diaries where (content regexp 'キーワード') and date > 'yyyy-MM-dd' order by date asc limit N
select * from diaries where id in (select d_id from relation where id=(select id from tags where name='分類タグ名')) and date > 'yyyy-MM-dd' order by date asc limit N
select * from diaries where (content regexp '(<{2,3}|>{2,3})\{.+?\}') and date > 'yyyy-MM-dd' order by date asc limit N
注意
厳密には取得した日記データを逆順にソートして表示します.
3−1−11 Last.png 最新のページ (Ctrl+Alt+>)

最も新しい日付を起点とした日記ページに移動します.

内部的には以下のような命令をデータベースに送ります.

select * from diaries order by date desc limit N
3−1−12 History.png 編集履歴

編集日時の新しい順に日記をリストアップします.

内部的には以下のような命令をデータベースに送ります.

select * from diaries order by edit desc limit N
3−1−13 Image.png メディア列挙

静止画・動画・音声などのメディア構文インラインフレーム構文の記述がある日記を日付の新しい順にリストアップします.

内部的には以下のような命令をデータベースに送ります.

select * from diaries where (content regexp '(<{2,3}|>{2,3})\{.+?\}') order by date asc limit N
3−1−14 検索/置換/アドレスボックス

入力する内容によって3種類の動作をします.

入力内容 動作
検索式 検索
置換構文 置換
URL アドレスボックス
検索

日記の全文および日時情報に対する検索式に一致した日記をリストアップします.

検索式
 {文字列検索式} and {日時比較式}
 {文字列検索式1} or {文字列検索式2}
 {文字列検索式}
 {日時比較式}

検索式とは文字列検索式日時比較式を論理演算子(and,or,not)で結合した式です.もちろん,文字列検索式日時比較式を単独で記述することも可能です.論理式をまとめるために,括弧を使うことはできません.ブール代数の規則に従い,括弧を展開したり,式順を変更して記述してください.

文字列検索式

文字列検索式とは,日記全文に対する文字列検索を評価する式です.

 {検索オプション} {キーワード}

{検索オプション}は必ず{キーワード}の前に記述します.

{検索オプション}と{キーワード}の間に一つ以上のスペースを挿入します.

{検索オプション}を省略すると"暗黙の検索オプション"が補います.

検索オプション
 @{記号1}{記号2}...

{検索オプション}は,"@"の後に下記の{記号}を組み合わせて記述します.

{記号}の記述順や大小文字の違いを気にする必要はありません.

ただし,{記号}と{記号}の間にスペースや文字を挿入すると正しく認識できません.

{記号} 説明
r 正規表現でキーワードを記述する
n 通常表現でキーワードを記述する(デフォルト値)
i 英文大小文字を区別しない(両表現で使用可)
s 改行も一般文字とみなす(正規表現のみ使用可)
m 各行で^と$を認識する(正規表現のみ使用可)
b 末尾から検索を実行する(正規表現のみ使用可)
キーワード
  • 前後のスペースはトリミングしますが,複数の単語から構成される文字列ならば,間のスペースも含めてひとつのキーワードと見なします.
  • 通常表現の場合,キーワード中のアスタリスク"*"文字はワイルドカードとして作用します.正規表現の場合は0回以上の繰り返しを表すメタ文字として作用します.
  • キーワードが単語の一部分ではなく単語そのものであることを明示したいならば,通常表現の場合は"ダブルクォーテーション"で,正規表現の場合は"\b"で囲んで記述します.
  • キーワードの中に論理演算子(and,or,not)を使いたい場合は,それらの前に"\"を付けてエスケープしてください.
日時比較式

日時比較式とは,日記日付や編集日時に対する新旧関係を評価する式です.

 {要素} {演算子} {日時}
{要素} 説明
date 日記日付
edit 編集日時
{演算子} 説明
= {要素}が{日時}と同日同時ならば真
> {要素}が{日時}より新しければ真
< {要素}が{日時}より古ければ真
>= {要素}が{日時}以降ならば真
<= {要素}が{日時}以前ならば真
実行

検索式に続けてエンターキーを入力すると検索を開始します.

検索は内部的に以下のような命令をデータベースに送ります.

select * from diaries where (content regexp 'キーワード') order by date desc limit N
注意
この例は文字列検索式のみの検索の場合です.
結果 動作
成功 検索式に一致した日記を日付の新しい順にリストアップ(1)
検索式を検索ボックスの履歴に記録(2)
失敗 ・エラーメッセージをステータスバーに表示
SQLiteに関連するエラーは別ダイアログに表示
注意1
検索一致する日記がN件以上あっても,1ページに表示できる日記はN日分のみです.
それ以前/以降の日記を表示するには,前ページ / 次ページ コマンドを実行します.
注意2
コントロール+エンターキーで開始した場合は履歴に記録しません

検索ボックスの履歴を再選択すると,その検索を即座に再現します.

この動作が鬱陶しい場合は,シフトキーを押しながら履歴を選択すると動作を抑止します,

本文に"山田"あるいは"偽研"を含む日記
 山田 or 偽研
本文に"山田"を含むが"ウィルス"を含まない日記
 山田 and not ウィルス
 not ウィルス and 山田
本文に"山田(任意の文字列)研"を含む日記
 山田*研
 @r 山田.+?研
本文に"山田"を単語単位で含む日記
 "山田"
 @r \b山田\b
本文に"sqdn"を単語単位で大小文字区別なく含み,かつ日記日付が2012年1月31日以降の日記
 @ri \bsqdn\b and date >= 2012/1/31

{日時}の表記は一般的な日付&時間の書き方であれば大体認識します.

本文に"http://www.google.com"を含む日記
 "http://www.google.com"

本節の冒頭でも触れたとおり,URLをそのまま入力すると検索ボックスではなくアドレスボックスとして機能します.それ故,URL文字列を検索するにはいろいろなトリックが考えられますが,上記の如くダブルクォーテーションで囲むのが最も簡単な方法でしょう.

本文に正規表現&大小文字区別なしの条件で"[yh]amada"もしくは"[gr]iken"というパターンを含むか,通常表現&大小文字区別ありの条件で"iCBM3"という文字列を含む項目
 @ri [yh]amada or [gr]iken or @n iCBM3

検索オプションの継承のサンプルです.

途中の文字列検索式検索オプションを省略すると,直前の文字列検索式のオプションを継承します.継承は新たにオプションを記述するまで続きます.上記の例の場合,"[gr]iken"は"[yh]amada"のオプション"ri"を継承します.しかし,"iCBM3"は新たなオプション"n"に置き換わります.

置換

置換構文検索式に一致した日記の文章を置換テキストで文字列置換します.

置換構文
 replace {検索式} with {置換テキスト}

先頭からこのような構文が入力されたら,置換コマンドと見なします.

ただし,先頭や末尾に余計な空白があると,構文を正しく認識できなかったり,誤った置換を行うので注意が必要です.

検索式

置換構文の検索式は,基本的に検索検索式と同じ書式の入力が可能です.

ただし,置換テキストと1対1の対応関係が成立しなければならないので,文字列検索式は必ず1つでなければなりません.それ以外の個数の文字列検索式が見つかった場合は,エラーと判断して実行を中止します.

置換テキスト

置換される文字列を記述します.

文字列検索式が正規表現で記述されている場合は,置換要素を示すメタ文字を使うこともできます.

また,改行などの特殊文字は以下のように記述します.

入力 出力
\t タブ
\r 復帰
\n 改行
$e 空文字(注)
注意
"\e"と間違わないように
実行

置換構文に続けてエンターキーを入力すると,「本当に実行するか」を問うダイアログを表示します.「はい」と答えると置換を開始します.「いいえ」と答えるとなにもしません.

置換はまず検索式による検索命令をデータベースに送って,日記をリストアップします.そして,リストアップした日記の全文に対して置換テキストで文字列置換を施した後,更新命令をデータベースに送ります.

update diaries set content='文字列置換した日記文' where id=日記ID
結果 動作
成功 ・最後に文字列置換した日記を起点としたページを表示
置換構文を検索ボックスの履歴に記録(注)
失敗 ・エラーメッセージをステータスバーに表示
SQLiteに関連するエラーは別ダイアログに表示
注意
コントロール+エンターキーで開始した場合は履歴に記録しません

置換構文の場合は履歴を再選択しても,検索のように動作を再現しません.

再び実行したい場合は,通常実行と同じくエンターキーで開始してください.

連続する空改行を単一改行に変換
 replace @rs (\r\n){2,} with $1
特定文字列を含む物理行を削除
 replace @rm ^.*特定文字列.*\n with $e
2012年1月1日以降の分類タグ"[未決]"を"[完了]"に変換
 replace [未決] and date >= 2012-01-01 with [完了]
アドレスボックス

URLに続けてエンターキーを入力すると,そのウェブページにナビゲートします.つまり,Webモードに切り替わります.また,Webモードである間は,ナビゲートされたURLをここに表示します.

3−1−15 Window.png 編集ウィンドウ

開いている編集ウィンドウを選択してフォーカスを移動します.

3−1−16 Option.png オプション設定
オプション設定
定義ファイルを開く

ブラウザ表示やHTMLタグなどの定義ファイル外部エディタで開いて編集できます.

編集結果を反映させるには,保存後に更新コマンドを実行してください.

インポート

テキスト形式の日記データを読み込みます.

読み込み可能なファイルは以下の通りです.

ファイル名 種類 内容
yyyyMMdd.txt SQDNのエクスポートデータ 日記本文のみ
yyyyMM.txt "Osciroi for Windows"の日記データ 1ヶ月分の日記データ

ダイアログで選択したフォルダ直下の日記ファイルをすべて読み込みます.

注意
この操作で日記文中に書かれたローカルパスは変換しないので注意してください.例えば,手動で画像などローカルファイルをSQDNのイメージフォルダに移動した場合は,インポート前に日記文中の該当パスを修正するか,置換機能を使ってパスの置換操作を行うと良いでしょう.
エクスポート

すべての日記をテキスト形式の日記データとして書き出します.

ダイアログで選択(作成)したフォルダにまとめて出力します.

パスワードを変更

パスワード変更ダイアログが開くので,新しいパスワードを入力します.

この時,ヌルスペース(空文字)を入力するとパスワードロックを解除します.

変更したパスワードは,次回起動時から有効になります.

空き領域を開放

SQLiteデータベースを長い間使い続けていると,無駄な空きスペースやデータの残骸ができてファイルサイズを肥大させる要因となります.そのような問題を解消するため,このコマンドは以下の処理を実行します.

  • 使わなくなったタグエントリーを削除
  • 飛び飛びになったidを整理
  • データベースの空き領域を開放(SQLitevacuumコマンド)

3−2 日記ブラウザ

日記データをリストアップ&HTML整形して表示します.

3−2−1 クリッカブルアイテム
日記日付

日付リンクをクリックすると,通常モードで該当する日記を起点としたページを表示します.

Edit.png 編集

編集ウィンドウで該当する日記を編集します.

Erase.png 削除

該当する日記をデータベースから削除します.

さらに,日記から参照されなくなったメディアファイルをゴミ箱に捨てます.ただし,捨てるのは,

{設定&日記}\data\images\

にあるファイルのみです.このフォルダの外にあるオリジナルファイルを削除するようなことはないので,ご安心を.

Copy.png コピー

該当する日記への内部リンクをクリップボードにコピーします.

この時,任意のテキストを選択していると,それをアンカーテキストとした内部リンクを作成します.

Bookmark.png ブックマーク

該当する日記のみを表示するコマンドをブックマークします.

見出し行

見出し行をクリックすると,直下のパラグラフを開閉します.

この表示エフェクトはjQueryを使って実現していますので,ユーザーが自由に改良することができます.

タグクラウド

日記に記述したすべての分類タグを集計して表示します.

内部的には以下のような命令をデータベースに送ります.

select name,count(*) from relation natural inner join tags group by name

実際のタグクラウドの表示の仕方はこちらを御覧ください.

タグリンク

タグクラウドのタグリンクをクリックすると,同じ分類タグを含む日記を日付の新しい順にリストアップします.

内部的には以下のような命令をデータベースに送ります.

select * from diaries where id in (select d_id from relation where id=(select id from tags where name='分類タグ名')) order by date desc limit N

日記内のタグリンクをクリックすると,上と少しだけ動作が異なり,その日記日付を起点としてリストアップします.

内部的には以下のような命令をデータベースに送ります.

select * from diaries where id in (select d_id from relation where id=(select id from tags where name='分類タグ名')) and date <= 'yyyy-MM-dd' order by date desc limit N
マウスボタン

タグリンクをクリックするマウスボタンによって表示モードが異なります.

マウスボタン 表示モード 説明
左クリック タグモード 分類タグを含む日記全文
右クリック 見出しモード タグ見出しのパラグラフのみ
3−2−2 コンテキストメニュー
GoBack.png 戻る (Ctrl+<)

ツールバーの戻るコマンドと同じです.

GoForward.png 進む (Ctrl+>)

ツールバーの進むコマンドと同じです.

Refresh.png 更新 or Stop.png 中止 (F6)

ツールバーの更新/中止コマンドと同じです.

Bookmark.png ブックマークに追加 (Ctrl+D)

ツールバーのブックマークに追加コマンドと同じです.

First.png 最初のページ (Ctrl+Alt+<)

ツールバーの最初のページコマンドと同じです.

Prev.png 前ページ (Alt+<)

ツールバーの前ページコマンドと同じです.

Today2.png 今日からのページ (Alt+T)

ツールバーの今日からのページコマンドと同じです.

Next.png 次ページ (Alt+>)

ツールバーの次ページコマンドと同じです.

Last.png 最新のページ (Ctrl+Alt+>)

ツールバーの最新のページコマンドと同じです.

テキストをコピー (Ctrl+C)

選択した文字列をクリップボードにコピーします.

URLをコピー

マウス直下にあるリンクアドレスをクリップボードにコピーします.

マウス直下にリンクがない場合は表示ページのアドレスをコピーします.

外部ブラウザで表示 (F7)

マウス直下にあるリンクアドレスを外部ブラウザで表示します.

マウス直下にリンクがない場合は表示ページのアドレスを表示します.

ソースを表示 (F8)

現在表示中のHTMLソースを外部エディタで表示します.

全日記検索

選択テキストを全日記データベースから検索して,日記ブラウザに表示します.

ウェブ検索

選択テキストをウェブ検索して,日記ブラウザに表示します.

ウェブ検索エンジンのURLは"オプション設定|表示&編集|検索|ウェブ検索"で設定します.

3−3 ステータスバー

3−3−1 メッセージエリア

日記ブラウザからのメッセージやマウス直下のリンクアドレスを表示します.

また,ツールチップテキストには表示ページのSQLiteクエリーを表示します.

メッセージエリアを左クリックするとそのSQLiteクエリーをクリップボードにコピーします.

3−3−2 検索一致した件数

表示モードが検索タグ見出しの場合に一致した件数を表示します.

非力なマシンだと場合によっては動作が重くなるかもしれません.

{設定&日記}SQDN.XML

そんな時は,上記ファイルをメモ帳などのエディタで開いて,"MainWindow\statbar\disp_hit"属性を偽値=Falseに変更して,SQDNを再起動するとこの機能をオミットすることができます.

3−3−3 日記を書いた日数

日記を書いた総日数,すなわち日記データベースのdiariesテーブルのレコード総数を表示します.

3−3−4 表示スタイル変更

日記ブラウザ表示スタイルを変更します.

4 編集ウィンドウ

日記を編集するためのウィンドウです.

ウィンドウを開く時に修飾キーを押しているか否かによって読み込み動作が異なります.

修飾キー 読み込み動作
なし 新規作成:定型文(注)or 空テキスト
編集:日記文
Ctrl 新規作成/編集に関係なく定型文(注)
Shift 新規作成/編集に関係なく空テキスト
注意
"オプション設定|定型文|リスト先頭の定型文を日記作成時に自動挿入する"フラグがオンの時のみ有効です

編集ウィンドウは同時に複数開くことができます.つまり,複数の日付の日記をまとめて編集可能なわけです.

4−1 ツールバー&コンテキストメニュー

4−1−1 Edit.png 保存 (Ctrl+S)

編集内容をデータベースに保存して,日記ブラウザに表示します.

この時,通常は文頭・文末にある無駄な改行コードを自動的にトリミングします.しかし,コントロールキーを押しながらコマンドを実行すると,原文のまま保存することができます.,

編集内容を破棄して,編集前の状態にしたい場合は,ウィンドウのクローズボタンをクリックします.

4−1−2 Undo.png 元に戻す (Ctrl+Z)

編集操作をひとつ前の状態に戻します.

4−1−3 Redo.png やり直す (Ctrl+Y)

元に戻した編集操作をひとつやり直します

4−1−4 Copy.png コピー (Ctrl+C)

選択テキストをクリップボードにコピーします.

4−1−5 Cut.png カット (Ctrl+X)

選択テキストを削除してクリップボードにコピーします.

4−1−6 Paste.png ペースト (Ctrl+V)

クリップボードの内容を選択位置にペーストします.

4−1−7 Template.png 定型文を挿入 (Ctrl+0〜)
新規定型文を作成 (Ctrl+T)

オプション設定ダイアログ定型文タブの新規ボタンをクリックした直後の状態でダイアログが開きますので,新規定型文を入力してください.

定型文を挿入

選択した定型文をキャレット位置に挿入します.

コンテキストメニュー

定型文項目上で右クリックを行うと,コンテキストメニューが開きます.

編集

オプション設定ダイアログ定型文タブの該当する定型文を選択した状態でダイアログが開きますので,適当に編集してください.

削除

メニューおよびデータベースから該当する定型文を削除します.

中止

定型文メニューは開いたまま,コンテキストメニューだけを閉じます.

4−1−8 Tag.png 分類タグを挿入
空の分類タグ (Ctrl+[)

分類タグ作成用のテンプレートをキャレット位置に挿入します.

タグリスト

選択した分類タグをキャレット位置に挿入します.

4−1−9 Image.png メディアを挿入
ウェブメディア

ウェブページ上のメディアをキャレット位置に挿入します.

URLは挿入後に手動入力してください.それ以外の引数は,定義ファイルの"Editor\options\media\with"や"Editor\options\media\without"要素に値を用意しておくと,挿入時に自動的に補完されます.

通常表示 (Ctrl+M)

日記ブラウザ内に表示する構文を作成します.

ポップアップ表示 (Ctrl+Shift+M)

Lightboxを使ってポップアップウィンドウに表示する構文を作成します.

ローカルメディア

ローカルディスク上のメディアをキャレット位置に挿入します.

ローカルメディアのファイルパスはファイル選択ダイアログから設定します.それ以外の引数は,定義ファイルの"Editor\options\media\with"や"Editor\options\media\without"要素に値を用意しておくと,挿入時に自動的に補完されます.

通常表示 (Ctrl+J)

日記ブラウザ内に表示する構文を作成します.

ポップアップ表示 (Ctrl+Shift+J)

Lightboxを使ってポップアップウィンドウに表示する構文を作成します.

インラインフレーム

インラインフレームをキャレット位置に挿入します.

表示URLは挿入後に手動入力してください.それ以外の引数は,定義ファイルの"Editor\options\iframe\with"や"Editor\options\iframe\without"要素に値を用意しておくと,挿入時に自動的に補完されます.

通常表示 (Ctrl+I)

日記ブラウザ内に表示する構文を作成します.

ポップアップ表示 (Ctrl+Shift+I)

Lightboxを使ってポップアップウィンドウに表示する構文を作成します.

4−1−10 Link.png リンクを挿入
外部リンク (Ctrl+H)

外部リンクをキャレット位置に挿入します.

内部リンク (Ctrl+Shift+H)

今日付の内部リンクをキャレット位置に挿入します.

適宜,任意の日付に修正してお使いください.

4−1−11 Deco.png テキスト装飾
装飾を解除 (Alt+R)

選択テキストから装飾を解除します.

等幅 (Alt+T)

選択テキストを等幅表示にします.

太字 (Alt+B)

選択テキストを太字表示にします.

斜体 (Alt+I)

選択テキストを斜体表示にします.

取り消し線 (Alt+S)

選択テキストに取り消し線を引きます.

下線 (Alt+U)

選択テキストに下線を引きます.

上付き (Ctrl+U)

選択テキストを上付き表示にします.

下付き (Ctrl+L)

選択テキストを下付き表示にします.

配色&フォント (Alt+F)

選択テキストの配色&フォントを設定します.

設定は専用ダイアログから行います.

選択テキスト内に配色&フォントがすでに設定されている場合は,それらを除去して設定しなおします.

ボタン 説明
文字色 カラーピッカーを使って文字色を設定
背景色 カラーピッカーを使って背景色を設定
フォント フォントっピッカーを使ってフォント名&サイズを設定(注)
行高 ボタン右横のテキストボックスに設定
注意
スタイルを設定しても無視します.

上記の設定はボタンをもう1度クリックするとリセットします.

ボタン 説明
決定 設定値をもとに配色&フォントを書き出し
中止 設定を中止
4−1−12 Window.png メインウィンドウ

メインウィンドウにフォーカスを移動します.

4−1−13 すべてを選択 (Ctrl+A)

すべてのテキストを選択します.

4−1−14 全日記検索

選択テキストを全日記データベースから検索して,日記ブラウザに表示します.

4−1−15 ウェブ検索

選択テキストをウェブ検索して,日記ブラウザに表示します.

ウェブ検索エンジンのURLは"オプション設定|表示&編集|検索|ウェブ検索"で設定します.

4−2 ドラッグ&ドロップ

ブラウザリンクやローカルファイルを編集ウィンドウにドラッグ&ドロップすると,Wiki書式のリンクやメディア構文に変換して,キャレット位置に挿入します.

ドラッグ元 作成されるWiki構文
ウェブブラウザのリンクやアドレスバーのファビコン 外部リンク / メディア(1)(2)
日記ブラウザの日付リンク 内部リンク
日記ブラウザのタグリンク 分類タグ
ローカルディスクのメディアファイル メディア(1)(2)
注意1
ドラッグ元がメディアのリンクやファイルであるか否かの判定は,定義ファイルの"Browser\medias\media"要素への登録の有無に従います.
注意2
予め決めておいた表示オプションを自動でセットすることがきます.定義ファイルの"Editor\options\media\with"や"Editor\options\media\without"要素から設定できます.

4−3 文法

日記文には普通に平文テキストを入力するだけでも良いのですが,Wiki風の文法を駆使すると様々なスタイル&レイアウトの文章を作成することができます.

このWiki風の文法は,山田偽研で採用しているWikiクローン wifkyを元に構成しています.但し,いくつかはオリジナルの拡張記法もあるので注意してください.

4−3−1 インライン要素

行の一部分を記号で囲んだ構文をインライン要素と呼びます.

外部リンク

外部アドレスへのハイパーリンクを作成します.

[ほげほげ|http://hogehoge.com/]
<a href="http://hogehoge.com/">ほげほげ</a>

無変換領域の以外の生URLは自動的にリンク化します.

http://hogehoge.com/
<a href="http://hogehoge.com/">http://hogehoge.com/</a>

ただし,生URLを二重引用符で囲むとリンク対象から除外します.

"http://hogehoge.com/"
注意
常に生URLをリンク化したくない場合は,定義ファイルの"Browser\link_options\rawurl"属性を偽にセットしてください.
内部リンク

指定日の日記ページへのハイパーリンクを作成します.

[[2011/3/11]]
<a href="http://sqdn/?from=2011-03-11">2011年3月11日</a>
<a href="http://sqdn/?to=2011-03-11">2011年3月11日</a>
注意1
"http://sqdn/"はSQDN内部だけで動作する仮想URLです.外部にアクセスしているわけではないのでご安心を.
注意2
アンカーテキストの日付書式は,定義ファイルの"DateTime\link"要素で設定できます.

内部リンクのアンカーをクリックした時の表示方法は2種類あります.

形式 説明
from 指定日の日記を起点に日付降順にリストアップ表示
to 指定日の日記のみ表示

通常は,定義ファイルの"Browser\link_options\innerfrom"属性の値が示す形式で表示します.

innerfrom 説明
True from形式で表示
False to形式で表示

個別に形式を指定したい場合は,日付の前に以下の接頭語を付加します.

形式 接頭語
from +
to -
[[+2011/3/11]]
[[-2011/3/11]]

外部リンクと同じ様に,任意のアンカーテキスト付きの内部リンクを作成することもできます.

[[あの日|1995/1/17]]
[[あの日|+1995/1/17]]
[[あの日|-1995/1/17]]
分類タグ

分類タグのハイパーリンクを作成します.

[ほげほげ]
[<a href="http://sqdn/?tag=%e3%81%bb%e3%81%92%e3%81%bb%e3%81%92">ほげほげ</a>]

分類タグは外部リンク内部リンクと明確に区別できるように,引数は文字と数字だけで記述されなければなりません.記号を使うことは許されません.また,英字は大小文字を区別しません.日記内で大文字を含んだ記述であっても,タグクラウドでは便宜上小文字に統一して表示します.

メディア

画像・動画・音声などのメディアデータを表示します.

ただし,すべての種類のメディアデータを表示できるわけではありません.定義ファイルの"Browser\medias\media"要素に登録されているデータ形式のみ適切なHTMLコードに変換して表示可能です.それ以外のデータ形式の場合は未変換のまま表示します.

書式

データ形式が画像・動画・音声の何であっても,同じ書式で記述することができます.そのため,データ形式ごとに書式を記憶しておく煩わしさから開放されます.更には,日記本文に長ったらしいHTMLコードを書く必要がなくなるので,日記本文が非常に見やすく簡潔になります.

表示方法は以下の2種類から選ぶことができます.ただし,データ形式によっては,定義ファイルの"Browser\medias\media"要素に片方の定義しか登録されていない場合もあるので注意してください.もし,定義がない方法を選んだ場合は未変換のまま表示します.

通常表示
<<{識別子=値,識別子=値,…}

メディアデータを日記ブラウザに直接表示します.

ポップアップ表示
<<<{識別子=値,識別子=値,…}

目印(アンカー)となるサムネイル画像やテキストを日記ブラウザに表示して,それをクリックするとLightboxを使ったポップアップウィンドウにメディアデータを表示します.

引数

引数は

識別子=値

というパラメータ定義式をカンマで連結して記述します.

値にカンマを含む場合は,連結子のカンマと区別するため"\,"とエスケープするか値を二重引用符'"'で囲んでください.

識別子 説明
@u URL/ローカルパス メディアデータのURL/ローカルパス
@s 幅:高さ 表示サイズ(画像に関しては幅のみの記述も可)
@f right/left 表示を右寄せ/左寄せするかを設定
@n テキスト キャプションテキスト
@t テキスト ポップアップ表示用のアンカーテキスト
@i 画像URL/パス ポップアップ表示用のアンカー画像のURL/ローカルパス

@uパラメータ定義式は必須ですが,それ以外は省略することができます.

省略した場合は,定義ファイルの"Browser\medias\media"要素内の環境変数既定値で補完します.

すべてのパラメータ定義式は自由な順番で記述することができます.

ところで,過去のバージョンとの互換性を維持するため,識別子@u@s@fは省略可能です.すなわち,値だけを記述しても自動的に何のパラメータか識別します.逆に言えば,それ以外のパラメータ定義式の識別子を省略すると値を誤認することがあるので注意してください.

複製
<<<{@u=copy:D:\users\yamada\sample.jpg,...}

URL定義式にローカルパスを記述する場合に,copy:という接頭句をつけると,オリジナルのメディアファイルを"設定&日記"配下の

{設定&日記}\data\images\

というフォルダに複製します.これにより,オリジナルファイルを移動や削除しても,デッドリンクになる心配がありません.

複製後は,ファイル名の重複を避けるため,以下のように自動的にリネームして参照します.

<<<{@u=2011-03-10-1.jpg,...}
注意
imagesフォルダ内のファイル命名ルールは,"{日記の日付}-{通し番号}.{拡張子}"となっています.絶対パスで記述する必要はありません.ファイル名のみを記述した場合は,imagesフォルダ内のファイルを参照していると見なします.
<<{D:\users\hoge\hage.jpg}
<img src="file:///D:/users/hoge/hage.jpg" class="media">
<<<{@u=2000-04-01-1.jpg,@f=left,@s=200,@n=グチョグチョ}
<a href="file:///{設定&日記}/data/images/2000-04-01-1.jpg" rel="shadowbox" class="media" title="グチョグチョ"><img src="file:///{設定&日記}/images/2000-04-01-1.jpg" style="float:left" width="200"></a>
<<{http://www.youtube.com/watch?v=XXXXX}
<iframe frameborder=0 width=500 height=281 class="media" src="http://www.youtube.com/embed/XXXXX" allowfullscreen></iframe>

Youtubeなどの動画を貼り付ける場合は,動画ページのURLを記述するだけで,自動的に貼り付け用アドレスに変換します.

<<<{http://www.dailymotion.com/video/XXXXX,@t=<b>ゴニョゴニョ</b>,@s=420:315}
<a href="http://www.dailymotion.com/swf/XXXXX" rel="shadowbox;width=420;height=315;player=swf" class="media"><b>ゴニョゴニョ</b></a>

アンカーテキストには平文だけでなくHTMLタグも記述することもできます.

<<{"https://www.google.co.jp/maps/place/%E9%80%9A%E5%A4%A9%E9%96%A3/@34.6524992,135.5041171,18z"/,right}
<iframe frameborder=0 width=400 height=300 style="float:right" class="media" src="http://maps.google.co.jp/maps?q=%E9%80%9A%E5%A4%A9%E9%96%A3&ll=34.6524992,135.5041171&z=18&output=embed"></iframe>
<<<{https://www.google.com/maps/@35.658581\,139.745433\,17z,@t=東京タワー}
<a href="http://maps.google.co.jp/maps?q=&ll=35.658581,139.745433&z=17&output=embed" rel="shadowbox" class="media">東京タワー</a>

Googleマップを表示するには,メニューの「地図を共有または埋め込む」コマンドの「リンクを共有」で取得したURLを@u引数として入力してください.それ以外のURLでは上手く表示できない場合があります.

また,URLクエリー中の緯度・経度・倍率を区切るカンマ記号をエスケープするかURL全体を二重引用符で囲むことを忘れないでください.

インラインフレーム

指定URLの内容をインラインフレーム(iframe)に表示します.

URLはブラウザが認識できるものであればHTML・メディア・ウェブサービスなどなんでも指定可能です.

書式

表示方法は以下の2種類から選ぶことができます.

注意
メディア構文とよく似ているので間違わないようにしてください.
通常表示
>>{識別子=値,識別子=値,…}

日記ブラウザにインラインフレームを開いて表示します.

ポップアップ表示
>>>{識別子=値,識別子=値,…}

目印(アンカー)となるサムネイル画像やテキストを日記ブラウザに表示して,それをクリックするとLightboxを使ったポップアップウィンドウを開いて表示します.

引数

引数の表記法はメディア構文とまったく同じです.

複製

URLがローカルファイルだった場合はメディア構文と同様にオリジナルファイルを"{設定&日記}\data\images\"フォルダに複製します.

>>{http://www.bing.com/images/search?q=%E3%82%AD%E3%83%80%E3%82%BF%E3%83%AD%E3%83%BC,450,right}
<iframe frameborder=0 width=450 height=200 style="float:right" class="media" src="http://www.bing.com/images/search?q=%E3%82%AD%E3%83%80%E3%82%BF%E3%83%AD%E3%83%BC"></iframe>
>>>{http://abehiroshi.la.coocan.jp/,@t=阿部寛}
<a href="http://abehiroshi.la.coocan.jp/" rel="shadowbox" class="media">阿部寛</a>
テキスト装飾
配色&フォント
書式
&font(識別子=値,識別子=値,…){文字列}
引数

引数はメディア構文の引数と同様にパラメータ定義式をカンマで連結して記述します.

識別子 説明
@c 16進コード,色名 文字色
@b 16進コード,色名 背景色
@n テキスト フォント名(1)
@s 数値+単位,相対スケール フォントサイズ
@h 数値+単位,百分率 行の高さ
注意1
名称の途中に空白がある場合は単引用符で囲む

すべてのパラメータ定義式は自由な順番で記述することができます.

省略も可能ですが,少なくともひとつの定義式は記述してください.

&font(@c=Red,@s=48pt,@n='メイリオ',@h=120%){大きな文字列}
<span style="color:Red; font-size:48pt; font-family:'メイリオ'; line-height:120%;">大きな文字列</span>
スタイル
スタイル 記法 表示 HTML
等幅 ``TypeWriter-Text`` TypeWriter-Text <tt>Typewriter</tt>
太字 '''Bold''' Bold <b>Bold</b>
斜体 ;;;Italic;;; Italic <em>Italic</em>
取り消し線 ==StrikeLine== StrikeLine <strike>StrikeLine</strike>
下線 __UnderLine__ UnderLine <u>UnderLine</u>
上付き Text^^SuperScript^^ TextSuperScript Text<sup>SuperScript</sup>
下付き Text~~SubScript~~ TextSubScript Text<sub>SubScript</sub>
制御コード

特殊文字を出力するには下記の制御コードを使います.

制御コード HTML出力
((spc)) &nbsp;
((amp)) &amp;
((gt)) &gt;
((lt)) &lt;
((lb)) [
((rb)) ]
((lm)) {
((rm)) }
((lp)) (
((rp)) )
((ll)) ((
((rr)) ))
((vl)) |
((quot)) "
((br)) <br />
((brc)) <br style="clear:both" />(1)
((char NN)) &#NN;
((html HTMLテキスト)) HTMLテキストをそのまま出力(2)
注意1
メディアデータを右寄せ/左寄せして,テキストを回り込ませている状態から通常レイアウトに戻すために使用します.
注意2
こちらのやり方は将来廃止する予定なので,"ブロック要素|HTMLテキスト"をご利用ください.
4−3−2 ブロック要素

行頭の記号もしくは複数行を挟みこむ記号で定義する構文をブロック要素と呼びます.

v0.79bより,日記文の行頭&行末の空白は,変換前にトリミングします.

そのため,ネスティング可能なブロック要素にインデントをつけて,見やすく記述することができます.

見出し

見出し行を作成します.

!!!!特見出し
<h1>特見出し</h1>
!!!大見出し
<h2>大見出し</h2>
!!中見出し
<h3>中見出し</h3>
!小見出し
<h4>小見出し</h4>
タグ見出し

タグ見出しを作成します.

タグ見出しとは,行頭にタグを記述した特別な見出し行です.

[ほげほげ]タグの後にテキストを書くことも可能
<h1>[<a href="http://sqdn/?tag=%e3%81%bb%e3%81%92%e3%81%bb%e3%81%92">ほげほげ</a>]タグの後にテキストを書くことも可能</h1>
リスト

リストを作成します.

行頭 説明
* 単純リスト
+ 番号付きリスト
*リスト1
*リスト2
**リスト2−1
**リスト2−2
*リスト3
++リスト3−1
++リスト3−2
***リスト3−2−1
<ul>
 <li>リスト1</li>
 <li>リスト2</li>
 <ul>
  <li>リスト2−1</li>
  <li>リスト2−2</li>
 </ul>
 <li>リスト3</li>
 <ol>
  <li>リスト3−1</li>
  <li>リスト3−2</li>
  <ul>
   <li>リスト3−2−1</li>
  </ul>
 </ol>
</ul>
定義

定義リストを作成します.

:ほげほげとは
::ハゲでもヒゲでもありません・・・
<dl>
 <dt>ほげほげとは</dt>
 <dd>ハゲでもヒゲでもありません・・・</dd>
</dl>
テーブル

テーブルを作成します.

|||ヘッダ1|ヘッダ2|ヘッダ3
||データ1−1|データ2−1|データ3−1
||データ1−2|データ2−2|データ3−2
<table>
 <tr><th>ヘッダ1</th><th>ヘッダ2</th><th>ヘッダ3</th></tr>
 <tr><td>データ1−1</td><td>データ2−1</td><td>データ3−1</td></tr>
 <tr><td>データ1−2</td><td>データ2−2</td><td>データ3−2</td></tr>
</table>
引用

引用を作成します.

以下の2つの例は両方とも同じHTMLテキストを生成します.

""引用文1
""引用文2
""引用文3
6<
 引用文1
 引用文2
 引用文3
>9
<blockquote>引用文1<br />
引用文2<br />
引用文3</blockquote>

引用はネスティング(入れ子)して記述することもできます.

""!!!見出し
""""*リスト1
""""*リスト2
""""*リスト3
6<
 !!!見出し
 6<
  *リスト1
  *リスト2
  *リスト3
 >9
>9
<blockquote><h2>見出し</h2><blockquote><ul>
 <li>リスト1</li>
 <li>リスト2</li>
 <li>リスト3</li>
</ul></blockquote></blockquote>
無変換

"8<〜>8"で囲まれた領域を無変換の平文テキストとして出力します.

8<
 <そのまま出力>
 2行目
 3行目
>8
<pre>&lt;そのまま出力&gt;
2行目
3行目</pre>

厳密には何も変換せず出力するわけではありません.

特殊コードだけはHTMLエンコードを施します.

HTMLテキスト

"=<〜>="で囲まれた領域をHTMLテキストとして出力します.

=<
<object type="application/x-shockwave-flash" data="player_mp3.swf" width="200" height="20">
<param name="movie" value="player_mp3.swf" />
<param name="FlashVars" value="mp3=test.mp3" />
</object>
>=
<object type="application/x-shockwave-flash" data="player_mp3.swf" width="200" height="20">
<param name="movie" value="player_mp3.swf" />
<param name="FlashVars" value="mp3=test.mp3" />
</object>
仕切り線

仕切り線を出力します.

----
<hr />
通常文

以上のブロック要素のどれにも当てはまらない行は,通常文と見なします.

通常文1
通常文2
通常文3
通常文1<br />
通常文2<br />
通常文3<br />

5 オプション設定

5−1 表示&編集

5−1−1 日記ブラウザ
起動時の表示ページ

起動時の表示方法を選択します.

前回の表示を再現
今日付近の日記から
最新の日記から
注意
はじめて起動するときは,この設定を無視します.
1ページに表示できる最大数

1ページにリストアップする日記の最大数を設定します.

入力欄 表示モード
前者 通常, 履歴, 検索, タグ
後者 見出し

内部的にはselect文のlimit句パラメータとしてこの値が利用されます.

select * from diaries ... limit N
IEと同等のパフォーマンスを実現する

通常,日記ブラウザはデフォルト状態のままならば,IE7相当の能力しか発揮できません.

このスイッチをオンにすると,インストールされているIEと同等のパフォーマンスが得られるように,レジストリ設定を調整します.

外部ブラウザ

外部リンクを日記ブラウザの外で開くためのウェブブラウザを設定します.

設定を省略すると,"OSのデフォルトブラウザ"を外部ブラウザと見なします.

外部エディタ

日記ブラウザに表示中のソースを閲覧するためのテキストエディタを設定します.

言うまでもありませんが,ソースは閲覧するだけで編集はできません.

5−1−2 編集ウィンドウ
日記のない日付をクリックしたら,編集ウィンドウを開く

カレンダー日記ブラウザ内部リンクで日記のない日付をクリックした場合に,このスイッチがオンならば,日記を新規作成するために編集ウィンドウを開きます.スイッチがオフならば,エラーメッセージを表示してなにもしません.

シンタックスハイライトを有効にする

Wiki書式の部分をハイライト表示するか否かを設定します.

5−1−3 検索
暗黙の検索オプション

文字列検索式検索オプションを省略した場合に,暗黙のオプションとして働く値を設定します.

もちろん,何も設定しないことも可能です.

ウェブ検索

日記ブラウザや編集ウィンドウで選択したテキストをウェブ検索する検索エンジンのURLを設定します.

検索キーワードのセットは環境変数"%s"を介して行います.

5−2 定型文

定型文を編集します.

ここで作成した定型文は,編集ウィンドウ定型文を挿入メニューから利用することができます.

5−2−1 名前

選択項目の名前を設定します.

この名前は定型文を挿入メニューのタイトルになります.

名前が"-"の項目はメニューの仕切り線と見なします.

5−2−2 

選択項目の内容を設定します.

定型文には,通常のテキスト以外に,以下の環境変数を利用することもできます.

環境変数 説明
{{clip}} クリップボードのテキスト
{{clip:検索テキスト/置換テキスト}} クリップボードのテキストを加工して出力(1)(4)
{{select}} エディタで選択中のテキスト
{{select:検索テキスト/置換テキスト}} エディタで選択中のテキストを加工して出力(1)(4)
{{now}} 現在日時
{{now:date}} 今日の日付
{{now:time}} 現在の時間
{{now:ユーザー定義書式}} ユーザー定義書式による現在日時(2)(4)
{{spc}} 半角スペース 1回
{{spc:N}} 半角スペース N回)
{{spcw}} 全角スペース 1回
{{spcw:N}} 全角スペース N回
{{eol}} 改行コード 1回
{{eol:N}} 改行コード N回
{{caret}} この位置にキャレットを移動(3)
{{caret:語句}} この位置に引数語句を挿入&選択&キャレットを移動(3)(4)
注意1
"加工して出力"とは,クリップボードの内容やエディタで選択中のテキストを文字列置換で加工して出力する機能です.他の環境変数と異なり,検索テキストと置換テキストのペアを"/"(スラッシュ)で連結して記述します.検索テキストには,キーワード検索と同じオプションをセットすることができます.また,検索テキストが「正規表現」の場合は,置換テキストに「メタ文字」を使用することができます.
注意2
ユーザー定義書式については,「カスタムの日付と時刻の書式指定文字列」を参考にしてください.
注意3
"キャレットを移動"とは,定型文を貼り付けた後に,この環境変数の位置へキャレットを移動して,それが可視領域に入るようにスクロールを調整する機能です.
注意4
引数の途中で"}"や"/"という文字列を使う場合は,"\}"や"\/"のようにエスケープして記述してください.
5−2−3 リスト先頭の定型文を日記作成時に自動挿入する

日記を新規作成する時に,このリストの先頭に定義されている定型文を,編集ウィンドウに自動挿入するか否かを設定します.

5−2−4 新規

新規項目を追加します.

5−2−5 複製

選択項目を複製します.

5−2−6 削除

選択項目を削除します.

5−2−7 ▼・▲

選択項目のメニュー表示順を移動します.

5−3 記念日

毎年あるいは毎月やってくる記念日を編集します.

祝日は定義済みなので,記念日には誕生日や命日のような個人事項を入力してください.

ここで作成した記念日は函数"{{annual}}"を介して日記ブラウザに表示します.

5−3−1 月

記念日の月を設定します.

月が0の場合は毎月の記念日と見なします.

5−3−2 日

記念日の日を設定します.

5−3−3 名称

記念日の名称を設定します.

5−3−4 新規

新規項目を追加します.

5−3−5 複製

選択項目を削除します.

6 表示スタイル

表示スタイルによって,日記ブラウザ上のデザイン&レイアウトを定義します.

{SQDN}\styles\

個々の表示スタイルごと定義ファイルをフォルダにまとめて"stylesフォルダ"直下に配置します.

このフォルダ名が個々のスタイルの名称となります.

表示スタイル名には"_"から始まる名称を使ってはいけません.

"_"から始まる名称のフォルダは共用の画像やスクリプトを格納します.

スタイルの変更はメインウィンドウステータスバー表示スタイル変更から行います.

6−1 構成ファイル

個別スタイルフォルダの基本ファイル構成です.

ファイル名 説明
main.html 全体の共通テンプレート
main.css 全体の共通スタイルシート
item.html 日記モードのテンプレート
caption.html 見出しモードのテンプレート

必要に応じて画像やスクリプトも同じフォルダに配置します.

6−1−1 テンプレートのインクルード機能

テンプレートに下記のような記述をすると,その位置に別テンプレートを読み込むことができます.

$$別テンプレートファイルの相対パス$$

多重階層の読み込みも可能ですが,安全のため5階層以上のインクルードは禁止します.

6−2 環境変数&函数

テンプレート環境変数函数を介して日記データを受け取ります.

6−2−1 main.html
環境変数 説明
{{base}} ベースURL(表示スタイルフォルダ)
{{title}} ページタイトル
{{prev}} 前のページコマンドのURL
{{next}} 次のページコマンドのURL
{{first}} 最初のページコマンドのURL
{{last}} 最新のページコマンドのURL
{{today}} 今日のページコマンドのURL
{{calendar}} ミニカレンダー
{{items}} 日記/見出しの配列
函数 説明
{{index}} このページの日記への内部リンクリスト(1)
{{list [リストアップオプション] -s 検索テキスト}} 検索した日記への内部リンクリスト(2)
{{search [リストアップオプション] 検索テキスト}}         〃
{{list [リストアップオプション] -e}} 最近編集した日記への内部リンクリスト(3)
{{recent [リストアップオプション]}}         〃
{{list [リストアップオプション] -c タグ}} タグ見出しのある日記への内部リンクリスト(4)
{{caption [リストアップオプション] タグ}}         〃
{{tagcloud 整列方法}} タグクラウド(5)
(1) このページの日記への内部リンクリスト

このページに表示中のすべての日記への内部リンクリスト形式で出力します.

{{index}}
(2) 検索した日記への内部リンクリスト

検索テキストに一致する日記への内部リンクリスト形式で出力します.

検索テキストはキーワード検索と同じ書式&オプションを用いて入力することができます.

また,以下のリストアップに関するオプションを付加することもできます.

オプション 説明
-df 内部リンクfrom形式で表示する(1)
-dt 内部リンクto形式で表示する(1)
-r 逆順にリストアップする
-数字 リストアップする上限値(2)
注意1
-dfと-dtの両方とも省略した場合は,定義ファイルの"Browser\link_options\innerfrom"属性の値に従います.
注意2
-数字を省略した場合は,上限を10件までに設定します.-0と記述した場合は,上限なしの無制限でリストアップします.
{{list -5 -s @ri (javascript|perl|php)}}
{{search -5 @ri (javascript|perl|php)}}
(3) 最近編集した日記への内部リンクリスト

最近編集した日記への内部リンクリスト形式で出力します.

(2)と同じリストアップオプションを付加することもできます.

{{list -e -dt}}
{{recent -dt}}
(4) タグ見出しのある日記への内部リンクリスト

指定したタグ見出しのある日記への内部リンクタグ見出し定義リスト形式で出力します.

複数のタグを定義する場合は"|"で連結して記述します.

(2)と同じリストアップオプションを付加することもできます.

{{list -0 -c -df 予定|TODO}}
{{caption -0 -df 予定|TODO}}
(5) タグクラウド

タグクラウドを出力します.

整列に関するオプションを付加することができます.

オプション 説明
0 タグ名 / 昇順
1 タグ名 / 降順
2 定義数 / 昇順
3 定義数 / 降順
{{tagcloud 1}}
6−2−2 item.html, caption.html
環境変数 説明
{{id}} 日記のID
{{day_of_week}} 曜日クラス(1)
{{date}} 日記の日付
{{year}} 日記の日付の年
{{month}} 日記の日付の月
{{day}} 日記の日付の日
{{edit}} 編集コマンドのURL
{{delete}} 削除コマンドのURL
{{page}} ページコマンドのURL
{{copy}} 内部リンクコピーのURL
{{inner}} 内部リンクコピーのURL(obsolute)
{{content}} 日記本文(item.html)/タグ見出し(caption.html)
{{changed}} 編集日時
函数 説明
{{holiday:HTMLテキスト}} 祝日(2)
{{annual:HTMLテキスト}} 記念日(3)
(1) 曜日クラス

日記の日付の種類によって下記のクラス名を返します.

クラス名 説明
weekday 平日
saturday 土曜日
sunday 日曜日
holiday 祝日
(2) 祝日

日記の日付が祝日の場合のみ,HTMLテキストを出力します.

その時,HTMLテキスト内の一時変数"%name%"祝日名に置き換わります.

{{holiday:<span class="ex_holiday">&nbsp;<img src="../_img/Holiday.png">&nbsp;%name%</span>}}
(3) 記念日

日記の日付が記念日の場合のみ,HTMLテキストを出力します.

その時,HTMLテキスト内の一時変数"%name%"記念日名に置き換わります.

{{annual:<span class="ex_annual">&nbsp;%name%</span>}}

7 その他

7−1 日記データベースのテーブル

以下の日記データベースファイルのテーブル構成を紹介します.

{設定&日記}\data\SQDN.DB
7−1−1 system

システム変数を格納したテーブルです.

create table system (key text,val text);
カラム名 説明
key キー
val
予約レコード
key 説明
version データベースファイルのバージョン
cycle データベースファイルのバックアップ作成間隔(日数)(1)
backup 前回のバックアップ作成日時
auto_template 日記作成時にtemplatesテーブルの最初のレコードを自動挿入するか?(2)
bookmarks_advanced ブックマークを上級者モードで編集するか?(2)
max_keywords keywordsテーブルの最大レコード数
注意1
初期値はcycle=7と設定しています.つまり,1週間に1回バックアップを行うことになります.
バックアップを行いたくない場合はcycle=0と設定してください.
注意2
真偽値は真=1,偽=0と表します.
7−1−2 diaries

日記データを格納したテーブルです.

create table diaries (id integer primary key autoincrement,date datetime,edit datetime,content text);
カラム名 説明
id 通し番号
date 日記日付
edit 編集日時
content 日記本文
7−1−3 tags

分類タグを格納したテーブルです.

create table tags (id integer primary key autoincrement,name text);
カラム名 説明
id 通し番号
name 分類タグ名
7−1−4 relation

日記と分類タグの関係性を記述したテーブルです.

create table relation (id integer,d_id integer);
カラム名 説明
id tagsテーブルの通し番号
d_id diariesテーブルの通し番号
7−1−5 templates

定型文を格納したテーブルです.

create table templates (name text,content text)
カラム名 説明
name 名前
content 内容
7−1−6 annuals

記念日を格納したテーブルです.

create table annuals (month integer,day integer,title text)
カラム名 説明
month
day
title 記念日名
7−1−7 bookmarks

ブックマークを格納したテーブルです.

create table bookmarks (mode text,scroll text,position integer,title text,query text,keyword text)
カラム名 説明
mode 表示モード
scroll スクロールモード
position スクロール座標
title タイトル
query mode=Web以外:SQLiteクエリー
mode=Web:URL
keyword mode=検索:検索式
mode=タグ or 見出し:分類タグ
7−1−8 keywords

検索式を格納したテーブルです.

create table keywords (keyword text)
カラム名 説明
keyword 検索式

7−2 祝日

7−2−1 祝日ファイル

以下の祝日ファイルを読み込んで算出します.

{SQDN}\default\holidays.txt

祝日法が制定された翌年の1949年以降の祝日を取得することができます.また,今後祝日法が改正された場合でも,祝日ファイルをほんの少し修正するだけで,その後も「原則的に」祝日を取得し続けることができます.「原則的に」と申し上げたのは,あまりにもトリッキーな改正が行われた場合は,プログラムを修正する必要があるかもしれないためです.

7−2−1 書式

祝日ファイルには以下の書式で一行に一祝日を記述します.

祝日名,年,月,日
注意
「2007年以降の5月6日」以外の振替休日を記述する必要はありません.

その祝日が有効な年範囲を西暦で以下のように記述します.

開始年-終了年
開始年-

例外として,「皇族の結婚の儀」などの特定日の祝日は単独年として記述します.

単独年
表記 説明
数字 数字の日付に確定している祝日
数字M ハッピーマンデー,数字は何週目の月曜日かを示す
? 日付が確定していない祝日(1)
数字? 数字の日付に確定しているが,実現条件がある祝日(2)
注意1
春分の日,秋分の日,国民の休日(敬老の日と秋分の日に挟まれた日)
注意2
国民の休日(1986年〜2006年の5月4日が火〜土曜日の場合)
振替休日(2007年以降の5月6日が月〜水曜日の場合)
1949年から1999年までの1月15日は成人の日
成人の日,1949-1999,1,15
1949年以降の春分の日
春分の日,1949-,3,?
2007年以降の5月6日が月〜水曜日ならば振替休日
振替休日,2007-,5,6?
2003年以降の7月第3月曜日は海の日
海の日,2003-,7,3M

7−3 定義ファイル

以下の定義ファイルに表示やHTMLタグなどの設定を記述します.

{設定&日記}\define.XML

ユーザーはSQDNの実行時でもパラメータを自由に編集することができます.

編集結果を表示に反映させるには,更新コマンドを実行してください.

注意
"{SQDN}\default\define.XML"はひな形ファイルなので決して編集してないでください.
7−3−1 パラメータ
DateTime

日時表示のフォーマットを定義します.

要素 説明
standard 標準的な日付のフォーマット
edited 日記ブラウザの編集日時のフォーマット(日付と時間)
link 日記ブラウザ内の内部リンクのアンカーテキスト
menu ツールバー表示履歴メニューのフォーマット
注意
日時の定義書式については,「カスタムの日付と時刻の書式指定文字列」を参考にしてください.
Calendar

カレンダーコントロールの外観に関する定義を行います.

要素 属性 説明
font name フォント名(1)
size フォントサイズ
fg header ヘッダ(1行目)の文字色
other_month 前の月と次の月の日付の文字色
holiday 休日の文字色
annualday 記念日の文字色
sunday 日曜日の文字色
saturday 土曜日の文字色
weekday 平日の文字色
bg header ヘッダ(1行目)の背景色
header_hover マウスをかざした時のヘッダ(1行目)の背景色
week 曜日(2行目)の背景色
date 日付(3行目以降)の背景色
date_hover マウスをかざした時の日付(3行目以降)の背景色
select 日記ブラウザに表示している日付の背景色
today 今日の日付の背景色
size offx 外枠とカレンダー本体との間の余白サイズ(幅)
offy 外枠とカレンダー本体との間の余白サイズ(高さ)
cellx 日付のセルサイズ(幅)
celly 日付のセルサイズ(高さ)
tooltip show 日記の要約をツールチップとして表示するか?
upper マウス座標の(真:上,偽:下)にツールチップを表示
width ツールチップの最大幅
length 要約の最大文字数
menu year 年のロングジャンプメニューのステップ(2)
markers シンタックスマーカーの配列(3)
mk bg シンタックスマーカーの背景色
(テキスト) シンタックスマーカーのパターン(4)
注意1
nameを省略すると,SQDNが用意したフォントで代用します.
注意2
移動年とカレンダー年の差の数列をセミコロンで連結して記述します.
値がゼロの場合は移動年とカレンダー年が同じことなので,ジャンプの動作はしませんが,仕切り線としての役目を果たします.
注意3
シンタックスマーカーとは「特定の文字列がある日付の背景色を任意の色に変える」機能です.
配列内に要素mkをいくつでも作成することができます.
注意4
パターンの記法ははTMNユーザー定義セットと同じです.
Editor

編集ウィンドウの外観やシンタックスハイライトに関する定義を行います.

要素 属性 説明
font name フォント名(1)
size フォントサイズ
text fg 編集エリアの文字色
bg 編集エリアの背景色
select fg 選択文字列の文字色
bg 選択文字列の背景色
number fg 行番号エリアの文字色
bg 行番号エリアの背景色
bracket fg 対になる括弧の文字色
bg 対になる括弧の背景色
special eol 行末記号色
eof 文末記号色
ul 下線色
dirt 内容が変更された行のマーク色
switch eol 行末記号を表示するか?
eof 文末記号を表示するか?
tab TAB記号を表示するか?
ul カーソル行に下線を表示するか?
dirt 内容が変更された行にマークするか?
bra ペアになっている括弧を強調表示するか?
ruler ルーラーを表示するか?
lnum 行番号を表示するか?
wrap ワードラップするか?
indt 自動インデントするか?
space left 左マージン
top 上マージン
line 行間隔
tab TAB幅
highlights シンタックスハイライトの配列(2)
hl fg シンタックスハイライトの文字色(3)
bg シンタックスハイライトの背景色(4)
(テキスト) シンタックスハイライトのパターン(5)
options\media\with メディア構文の既定オプション/ポップアップ表示(6)
options\media\without メディア構文の既定オプション/通常表示(6)
options\iframe\with インラインフレーム構文の既定オプション/ポップアップ表示(6)
options\iframe\without インラインフレーム構文の既定オプション/通常表示(6)
注意1
nameを省略すると,SQDNが用意したフォントで代用します.
注意2
配列内に要素hlをいくつでも作成することができます.
注意3
fgを省略すると,編集エリアの文字色のまま表示します.
注意4
bgを省略すると,編集エリアの背景色のまま表示します.
注意5
パターンの記法ははTMNユーザー定義セットと同じです.
注意6
メニューコマンドドラッグ&ドロップでメディア構文やインラインフレーム構文を作成するときの既定オプションを設定します.
Browser

日記ブラウザのHTMLコード生成に関する定義を行います.

要素 属性 説明
js_selected_text 選択したテキストを取得するためのJavaScriptコード(1)
link_options rawurl 生URLを自動的にリンク化するか否かのフラグ
innerfrom 内部リンクの表示をリストモードで行うか否かのフラグ
tagletter タグクラウドの英字タグの表記法(注)
0:小文字,1:大文字,2:先頭だけ大文字(2)
css_paragraph id 段落に対応するdiv文のid
class 段落に対応するdiv文のclass
medias メディア雛形配列(3)
media\pattern メディア雛形/URLマッチングパターン(4)
media\with メディア雛形/ポップアップ表示用(4)
media\without メディア雛形/通常表示用(4)
iframe\with インラインフレーム雛形/ポップアップ表示用(5)
iframe\without インラインフレーム雛形/通常表示用(5)
注意1
日記ブラウザのコンテキストメニュー項目テキストをコピー全日記検索ウェブ検索を実行するために使用します.
注意2
編集ウィンドウ分類タグを挿入メニューの表記もこの設定に従います.
注意3
配列内に要素mediaをいくつでも作成することができます.
注意4
メディア雛形の記述に関する詳しい説明は次節を見てください.
注意5
インラインフレーム雛形の記述に関する詳しい説明は次々節を見てください.
7−3−2 メディア雛形の書き方

メディア雛形とは日記本文のメディア構文から日記ブラウザに表示するHTMLテキストに変換するための定義です.

具体的にはメディア雛形配列の中からメディア構文@uパラメータにマッチするpetternの雛形を探索して,その雛形本体(with/without)を使ってHTMLテキストを作成します.

pattern

メディア構文@uパラメータの特徴にマッチする正規表現を記述します.

更に,正規表現内にグループを使用するとそのキャプチャ文字列を次節の雛形本体に埋め込むこともできます.

with, without

雛形本体にはポップアップ表示用(with)と通常表示用(without)の2種類があります.

メディア構文入力パラメータは以下の環境変数を介して雛形本体に流し込まれます.

環境変数
環境変数 タイプ 入力 説明
{{url}} 値型 @u メディアのURL/ローカルパス
{{name}} 値型 @n キャプション文字列
{{anchor}} 値型 @t,@i ポップアップ表示のアンカーテキスト
もしくはアンカー画像のURL/ローカルパス
{{$N}} 値型   patternのN番目グループのキャプチャ文字列
{{style}} 式型 @f 右寄せ/左寄せするスタイル
{{width}} 式型 @s 表示サイズの幅
{{w}} 式型 @s 表示サイズの幅
{{height}} 式型 @s 表示サイズの高さ
{{h}} 式型 @s 表示サイズの高さ

環境変数は2種類の展開タイプがあります.ひとつは,入力パラメータの値をそのまま表示する値型,もうひとつは環境変数名と入力パラメータの値を代入式で表示する式型です.

例えば,"@u=http://hoge.com/hage/hige.mp4"という入力パラメータに対して,値型の環境変数"{{url}}"は

http://hoge.com/hage/hige.mp4

と単純に展開するだけですが,"@s=420:315"に対して,式型の環境変数"{{width}}"と"{{height}}"はそれぞれ

width=420
height=315

と式形式で展開します.ただし,"@f=right"に対して,式型の環境変数"{{style}}"は特別に

style="float:right"

と字句を補って展開します.

既定値

環境変数に既定値を設定しておけば,入力パラメータを省略しても値を補うことができます.

既定値を設定していない場合に,入力パラメータを省略すると空文字列として展開します.

設定はすべて共通で

{{環境変数名=既定値}}

という具合に記述します.

ただし,"{{$N}}"は原理的に省略されることがないので,既定値を設定できません.

"{{anchor}}"の入力パラメータ値と既定値のプライオリティ(優先順位)はちょっと複雑で,

アンカー画像(@i) > アンカーテキスト(@t) > 既定値

となっています.すなわち,アンカー画像(@i)を省略するとアンカーテキスト(@t)を採用し,更にアンカーテキスト(@t)も省略すると既定値を採用する仕組みです.

画像リンク/ファイルをポップアップ表示
<a href="{{url}}" rel="shadowbox[group]" title="{{name}}"><img src="{{url}}" {{width}} {{height}} {{style}} class="media"></a>
ニコニコビデオを通常表示
<div {{style}} class="media">
<script type="text/javascript" src="http://ext.nicovideo.jp/thumb_watch/{{$1}}?{{w=500}}&{{h=281}}">
</script>
</div>

メディア構文にサイズに関する入力パラメータがない場合は,幅:500&高さ:281ピクセルの既定値がセットされます.

YouTubeのリンクをポップアップ表示
<a href="http://www.youtube.com/v/{{$1}}" rel="shadowbox;{{width=500}};{{height=281}};player=swf">{{anchor=<img src="http://img.youtube.com/vi/[[$1]]/2.jpg" [[style]] class="media">}}</a>

この例では,環境変数"{{anchor}}"の既定値に「動画サムネイル画像のimgタグ」を設定しているのですが,そのimgタグにも環境変数"[[$1]]"や"[[style]]"を使うというトリッキーな記述をしています.

{{anchor=<img src="http://img.youtube.com/vi/[[$1]]/2.jpg" [[style]] class="media">}}

ここで,注意して欲しいのは環境変数の中の環境変数は"{{...}}"ではなく"[[...]]"で囲っている点です.これは,環境変数が入れ子になっていることを明確化するための決め事です.同時に入れ子の入れ子は禁止するという意味合いもあります.

7−3−3 インラインフレーム雛形の書き方

インラインフレーム雛形とは日記本文のインラインフレーム構文から日記ブラウザに表示するHTMLテキストに変換するための定義です.

with, without

雛形本体にはポップアップ表示用(with)と通常表示用(without)の2種類があります.

インラインフレーム構文入力パラメータメディア雛形と同じ環境変数を介して雛形本体に流し込まれます.

環境変数の説明はメディア雛形の節を参照してください.

ポップアップ表示
<a href="{{url}}" rel="shadowbox" class="media">{{anchor=ウェブページ}}</a>
通常表示
<iframe frameborder=0 {{width=400}} {{height=200}} {{style}} class="media" src="{{url}}"></iframe>