2004/08/31(火)【解決】ソース貼るにはKShikiは向かないぞ!?

2004/08/30 26:00 PC(全般)
今更だけど、華式にはタブやインデントを に変換する機能が無いっぽい。

うーん、ほとんどの日記系cgiにはついてるのにな。

ーっと思ったら、KShikiConfigS.cgiに以下の設定がございました。
$TagSelects='b;i;blink;dl;dt;dd;ol;ul;li;font;a;IMG;table;tr;td;th;tbody;div;onepage;strong;page;toppage;pre';	# 一般使用許可タグ
preを末尾に追加。

で、
 こんな風に、
	a
		b
			c
いけるようになりました。やりぃ。

2004/08/31(火)doxygen スタイルシート

スタイルシートちょっとお勉強して、doxygen.cssを書き換え。
書き換えたdoxygen.cssはc:\online\doxygen\に置いた。
これを指定してdocumentを作る場合は、設定ファイルに
HTML_STYLESHEET        = c:\online\doxygen\doxygen.css
を指定する。
H2 {
&nbsp&nbsp padding: 0px 0px 2px 4px;
&nbsp&nbsp font-family: Geneva, Arial, Helvetica, sans-serif;
&nbsp&nbsp color: White;
&nbsp&nbsp background-color: DarkBlue;
}
グループセクション名が目立たないので、反転系に。
.mdescRight {
       padding: 2px 8px 4px 20px;
&nbsp&nbsp font-size: 12px;
/*&nbsp&nbsp font-style: italic; */
&nbsp&nbsp background-color: #FAFAFA;
&nbsp&nbsp border-top: 1px none #E0E0E0;
&nbsp&nbsp border-right: 1px none #E0E0E0;
&nbsp&nbsp border-bottom: 1px none #E0E0E0;
&nbsp&nbsp border-left: 1px none #E0E0E0;
&nbsp&nbsp margin: 0px;
}
目次部の簡略説明がどうにも見にくいので、文字小、イタリック無し、paddingで偽インデント。
b {
&nbsp&nbsp border-bottom: 2px Solid MediumSlateBlue
}
dd {
&nbsp&nbsp padding-top: 6px;
}
em {
&nbsp&nbsp color: #BB0000;
&nbsp&nbsp font-style: normal;
&nbsp&nbsp font-weight: bold;
}
上記は相当強引。

&ltb&gtは"引数"、"返り値"などの見出し用。太めのアンダーライン付加。
&ltdd&gtは"引数"等の説明用。上の見出しとちょっと離した。
&ltem&gtは引数名のピックアップ用。斜体になって見づらかったので、濃いめの赤、普通字体、強調表示とした。

スタイルシートってこの程度しかできないんだっけか。勉強不足だな。うーん。

2004/08/31(火)doxygenあれこれ

色々いじってみたのでメモ。

とりあえず、当面我が家でのコメントの書き方。
//! ジャンル判定2(曖昧)
(*!
	@par
	指定文節のかっこを除去した文字列が、あらかじめ読み込んでおいたGenreList中の文字列に”含まれる”かどうかを判定する。
	@param id [in] 文節番号
	@return 含まれるならばTrue、そうでないならFalse
*)

procedure / function...
  • //! 簡略説明

  • /*! */ 詳細ブロック

  • @par 詳細説明(doxygen本来の規定では@parは必要ないが、つけないと簡略と区切りが分からなくなる)

  • @param 引数

  • @return 返り値

  • @note 覚え書き

  • @bug バグ


  • 重要なのはここらあたりだろう。出来れば詳細ブロック内でもHTMLタグは書きたくない。
    どちらがメジャーか分からないが、JavaDocよりはQtスタイルで良し。
    参考: http://members.at.infoseek.co.jp/sakura_editor/comment-rule.html

    引数には、[in],[out],[i/o]を書けという指示があったがデファクトだろうか? (doxygenではピックアップされない)

    ところで、関数説明部のタグは&ltdl compact&gtとなっている。そのため、短いパートによっては行変えが行われないなどなんかいまいちな仕様。compactは推奨されないはずでは? ソースのhtmlDocVisitor.cppをいじれば何とかなりそうではあるが、やりたくない以上に今コンパイル環境がない。まあ、やりたくなったら。あ、BCBでいけるか?

    さて、スタイルシートもいじったのだが、長くなりそうなので次項に回す。

    2004/08/30(月)doxygen + Delphi

    for doxygen 1.3.8

    Delphi(Object Pascal)のソースをdoxygenでドキュメント化させてみようと思い立つ。
    doxygenはデフォルトではpascalのソースに対応していないが、pas2doxというツールがある。こいつはpascalのソースをCっぽいソースに変換してくれる。あとはdoxygenに渡すだけである。

    ところが、単体のファイルをコマンドラインでちまちまやるとできるのに、doxygenに一括で処理させると上手くいかなかった。設定ファイルの書き方に注意が要る。

    以下、上手くいったときのdoxygenファイル抜粋。
    #---------------------------------------------------------------------------
    # configuration options related to the input files
    #---------------------------------------------------------------------------
    INPUT                  = d:\renamer
    FILE_PATTERNS          = *.c \
                             *.cc \
                             *.cxx \
                             *.cpp \
                             *.c++ \
                             *.java \
                             *.ii \
                             *.ixx \
                             *.ipp \
                             *.i++ \
                             *.inl \
                             *.h \
                             *.hh \
                             *.hxx \
                             *.hpp \
                             *.h++ \
                             *.idl \
                             *.odl \
                             *.cs \
                             *.php \
                             *.php3 \
                             *.inc \
                             *.m \
                             *.mm \
                             *.pas
    RECURSIVE              = YES
    EXCLUDE                = 
    EXCLUDE_SYMLINKS       = NO
    EXCLUDE_PATTERNS       = 
    EXAMPLE_PATH           = 
    EXAMPLE_PATTERNS       = *
    EXAMPLE_RECURSIVE      = NO
    IMAGE_PATH             = 
    INPUT_FILTER           = c:\online\doxygen\bin\pas2dox.exe
    FILTER_PATTERNS        = 
    FILTER_SOURCE_FILES    = YES
    
    FILE_PATTERNSに*.pasを追加し、FILTER_SOURCE_FILES = YESにする。

    注意点は、INPUT_FILTER, FILTER_PATTERNSに関して。

    ・INPUT_FILTER
    コマンドパスを書くときに、""(ダブルクォーテーション),クォーテーション無しはOK。''(シングルクォーテーション)は×。

    コマンドはフルパスで書く必要がある。(doxygenのフォルダ)/binに置いても、フルパスでないとダメなようだ。エラーメッセージ出せよ……

    ・FILTER_PATTERNS
    新しいオプションのようだ。*.pas、"*.pas"等指定してもうまくいかない。
    d:/renamer/FileNameAnalyze.pas:23: Warning: Found ';' while parsing initializer list! (doxygen could be confused by a macro call without semicolon)
    
    というエラーが延々出てしまう。軽く調べてみたが、書き方のサンプルも見つからない。機能していないのだろうか? 今のところ、空白にしておくのが正解のようだ。

    2004/08/28(土)GetClientRectの謎

    知り合いにきかれたので調べたのだが、私も迷宮に迷い込んでしまった。
    さっさと、メモって忘れてしまおう。

    GetClientRectで取得した短形領域を子フォームのWindows Sizeに指定すると、子フォームのサイズがクライエント領域から少しはみ出す問題。

    API自体大して知らないので、表示の方から逆に調査してみることにした。
    適当にDelphiアプリを作って、色々いじってみる。

    まず、CapCapで取得したフォームの全体サイズが1088x750だった。
    BoundsRectでWindow Sizeを取得すると、ltrbが192,107,1280,857で返ってくるのでサイズは合っているようである。TRectの基準はどうもよく分からないが、left-right=Widthなので、TopLeftが左上ピクセル端、BottomRigthが右下ピクセル端に1pixelずつずらした点だろうか。

    さて、GetClientRectだと、lrtbが0,0,1080,723である。GetClient領域の描画エリアの幅がタイトルバーの青く色が変わっている部分と同じ幅で、描画できるエリアはそれより少し狭い。

    これをMDI子フォームのWindowサイズに指定すると若干はみだし、それぞれ幅、高さそれぞれ-4するとぴったり。枠線幅の分だろうか? 枠線の幅は所得できるが、確証がもてない。

    なぞ

    眠くて何書いてるのか分からない……

    2004/08/28(土)Ruby動かすまで

    Rubyで書いたCGIを動かすにあたり、Apacheの設定は特に追加しなくても通りました。

    注意点として、Samba経由だとサクラエディタで保存時に改行コードをLF(Linux)にしないと、

    bad interpreter

    といわれて怒らります。Sambaの設定で変えられると思うんですけどね。

    なおもちろん実行属性が必要なので、Sambaだけでは無理。WinSCPを一緒に立ち上げながら作業すると良いでしょう。なお、Internal Server Errorでログに

    malformed header

    と出るときは、"Content-Type:html/text; charset=Shift_JIS"の出力忘れだ!

    ええい! ……思わずShift_JISにしてしまったけど、何で統一するのがベストなんだっけ。WebだとUTF-8だっけか。

    2004/08/24(火)備忘メモ

    2004/08/24 7:00 PC(Linux)
    ど忘れ防止のメモです。
    [Linux]
    Ctrl+Z での中断プロセスは、fg/bgで再開。
    kill -9 id で超強制終了。-HUPって互換あるんだっけ?
    [emacs編]
    ・バッファ窓
    C-x 1 1つに
    C-x 2 2つに
    C-x o 窓移動
    C-x b 表示切り替え

    ・検索
    C-s/C-r 前方・後方

    ・編集
    C-Space マーク開始
    C-W カット
    C-Y ペースト
    C-k 1行カット
    Esc C コピー(いくらなんでもEsc Cは…… 割り当て直した方が良い気がする)

    ・Undo/取消
    C-x u Undo(今回C-zに割り当てました。2動作はどうよ?)
    C-g Cancel(意外とよく忘れる)
    DynamicMacroとか便利そうなのは分かるんだけど、キー体系が複雑になると恒常的に使い続けない限り忘れ去っていくに決まっているのさ。Windowsじゃもう、Sakuraで決定してるからどうにもね。

    2004/08/24(火).emacsいじったが……

    2004/08/24 6:00 PC(Linux)
    emacsがあまりに使いにくいままだったので、色々いじってみようと思い立つ。
    があああああ、一部ギブアップ。
    以下 .emacsへの追加部分。
    ;;選択範囲の表示
    (transient-mark-mode t)
    
    ;;UndoをCtrl+Zで
    (global-set-key "\C-z" 'undo)
    
    ;;全域選択をCtrl+Aで
    (global-set-key "\C-a" 'mark-whole-buffer)
    
    ;;Home/Endはファイルの最初/最後
    (global-set-key "\e[1~" 'beginning-of-buffer)
    (global-set-key "\e[4~" 'end-of-buffer)
    
    ;;時間表示
    (display-time)
    
    ;;桁表示
    (column-number-mode 1)
    
    ;; show-paren
    (show-paren-mode t)
    (setq show-paren-style 'mixed)
    (set-face-background 'show-paren-match-face "gray10")
    (set-face-foreground 'show-paren-match-face "SkyBlue")
    
    基本的にはWindowsライクになるようにした。
    show-parenはかっこの対応関係を見やすくするもの。

    さらに、html-helper-modeをdselectでインストールしておいた。

    敗北したのは[Ctrl + Home/End] や[Ctrl + ↓]に割り当てが出来なかった点。探しても情報が出てこないし(googleで探しにくいのは分かってもらえると思う)、自分でも考えられる限り試してみたがダメだった。エラーか認識してくれないか、どちらか。

    設定にもあるが、Putty + xtermでは home -> \e[1 , end -> \e[4 となる。ここら辺に秘密がありそうだが…… 攻め方としては、

    emacsに端末設定を割り当てる方法がある?
    端末の文字認識自体をいじる?
    .emacsに書く方法が何かしらある?

    、のいずれかだろう。xtermのバージョンが古いのではないかという節もある。

    調べている途中でadd-hook 'term-setup-hookなんてのを見つけたが、効果無しである。

    emacsについては一度総ざらいしなければならないのだろう、もううんざりだが。

    2004/08/23(月)eperl ? embperl?

    eRubyと同様に、html等に埋め込めるPerlを調べてみた。

    さて、まず規格乱立である。この時点でやる気をなくさせる。

    eperlとembperlが比較的メジャーなようだが余りWEBドキュメントがない。うーむ。

    而して、Rubyとなると見やすいリファレンスが見つかっておらずまだ導入にためらいがある。

    Perlポケットリファレンスはそこそこに使えるんだよなあ……
    OK キャンセル 確認 その他