ひとりwiki その3

その3とか書いてるわりに、まだちょっと起動してみてるって域を出てないんですが。出力データ見て気になった点とか。
ひとりwikiの出力形式は、ファイル名規則がタイトル名をEUCコード化したもの.txt で中のデータ形式EUCテキストみたいですね。ファイル名から手動で目的のファイルを探すのはちと手間ですが、ファイル自体は普通に秀丸で開けたのでEUCをサポートする外部エディタだったら直編集でも問題なさそう。これは当然htmlへのエクスポートを考慮しての仕様だとおもってたんだけど、Template用のhtml見たら charset=Shift_JIS だった。工エエェェ(´д`)ェェエエ工工
いや別に、htmlの出力形式が Shift_JISだって個人的には全然構わないんですけど、苦労して*1EUCにしたテキストをまたSJISに戻してるのは何故なのかなと。同作者さんのデータ変換器のようにperl通すならEUCのが扱いやすいってのはあるかもしれないけど、ひとりwikiのほうは自力で処理してるっぽいし。個人的には、ローカルPC内のひとりwikiデータはShift-JISテキストで、htmlエクスポート時にエンコードタイプを選べるようになってるほうがいいんじゃないのかなぁと思う。ローカルPC内だったらファイル名が日本語だって別にいいわけだし、外部エディタとも連携しやすいだろうしね。

*1:作者さんの開発日記を見ていると随分と文字化け対策に苦しんでいるようです

ネット通販

最近弟がよくネットで買い物をしているのだが、オークションで商品説明を読まないで動かないジャンクCPUを5千円近い金額で即決したりと結構やっちまっているようだ。たまたま奴がメールチェックしてるのを横で見ていたら、受信箱にPCサクセスの文字がw*1 価格com経由で最安値調べて注文したらしい。話を聞いてみると注文受付けた後、店舗内に在庫がないってメールが来たそうだ。奴個人の買い物だと思って嘲ってたら、お母んに頼まれたポットだった。買い替えるって言ってから随分経つのにまだ古いポットのままなのはそういうことか。
これって確かキャンセルすると「お客様都合のキャンセル」とやらになってキャンセル料とられるって話だったかな。あーぁ。

*1:お店の評価についてのコメントは敢えて伏せますが、安値が売りのネット通販店は注文前に2ちゃんやkakakuの掲示板等で評判を調べることを強くお薦めします。

adcall.mac バックグランド風アイドル時マクロ実行

秀まるおのホームページ(サイトー企画)−バックグランド風アイドル時マクロ実行

秀丸でアイドル時マクロ実行を実現するDLLとマクロのお試しセットです。
アイドル時にマクロを実行させることが出来ます。
キーが押されたり、フォーカス・カーソル位置が変更されたりすると実行されます。
見かけ上マクロが常駐しているように見えます(擬似常駐型マクロ実行)。

試してみたけどDLLが常駐できてないみたいな感じ(WinXP SP1/WinNT4 SP6 秀丸Ver5.06)

#r=dllfunc("enablestay", hidemaruhandle(0), #mac);
debuginfo "#r=" + str(#r);

enablestayの戻り値が 0なのは確認できたんだけどそれが正しい値なのかがわからない。
マクロというより拡張用DLLの提供とそれの使用サンプルって構成なので、DLLのリファレンスは入れて欲しかった。うまくすればIntelliSense やWsh補完クン みたいなのが秀で実現可能になりそうなんだけどなぁ。

作者の人のサイト http://bouz.blog.ocn.ne.jp/bouzman/2005/10/post_c7d5.html

本家に日の丸の旗が!

公式に日本語ページができたのかと思いクリックしてみたら流行らせるページに飛ばされた。これっていつからリンク貼られてたんだろ、今まで全然気が付かなかったよ。
いつのまにといえば、DllCall()で構造体使えるようになってたんですね。試しに GetWindowRectでやってみたらOKだった。

    VarSetCapacity(rect, 16)
    ;Declare Function GetWindowRect Lib "user32.dll" _
    ;(ByVal hWnd As Long, lpRect As Rect) As Long
    if(DllCall("GetWindowRect", Uint,hWnd, str,rect))
    {
        l := ExtractInteger(rect)    ;http://lukewarm.s101.xrea.com/commands/indexframe.html
        t := ExtractInteger(rect,4)
        r := ExtractInteger(rect,8)
        b := ExtractInteger(rect,12)
        Msgbox,l=%l% t=%t% r=%r% b=%b%
    }

そういえば流行らせるページ管理人さんが、BREGEXP.DLLを使うスクリプトを公開されたようです。BREGEXPは前に自分でも試してみたんだけど、構造体以前にバージョン情報すら取出せずに挫折したんだった。まだちょっと内容見てないんですがAHK正規表現使えるようになるのは嬉しい。本家でもregexp実装は予定されてるけど何時になるかわからなかったからなぁ

MDI子ウィンドウの位置移動

前にMDIの子ウィンドウのハンドルを取得する関数をいくつか作ったまま放置してたんだけど、実際そのハンドルでWinMoveしたら位置がズレる(XとYを空欄にしてもダメ) コンテナ内のものは親からの相対位置で指定してやらんといかんのだった。

    ;位置は変えないでResiseだけしてみるテスト
    hWnd := getMousePosWindowEx()  ;http://d.hatena.ne.jp/eamat/20050827
    hMdiClient := DllCall("GetParent",UInt,hWnd, UInt) 
    if (hMdiClient)
    {
        WinGetPos,px,py,pw,ph,ahk_id %hMdiClient%
        WinGetPos,cx,cy,cw,ch,ahk_id %hWnd%
        SysGet,  ex,45                  ;SM_CXEDGE
        SysGet,  ey,46                  ;SM_CYEDGE
        Winmove, ahk_id %hWnd%,,% cx-px-ex,% cy-py-ey,%cw%,30
    }

ていうかウィンドウ扱いにしないで普通にControlMoveすればいいだけなんだけど、AHKのコントロールってZオーダーでコントロール名変化するので子ウィンドウの特定ができなくなるんだよね。

ひとりwiki その2

色々なツール試してるうちに訳がわからなくなってきた。はてなChangeLogとひとりwikiってそれぞれ微妙に記法が違うんだもん。
昨日の日記について作者の人がご自分の日記で返答されてました。ありがとうございます。
http://d.hatena.ne.jp/MAS3/20051023#p4
templete編集で見た目のアレンジはOK、アンインストール情報についてはヘルプに記載があったそうで。見落としてましたスミマセン。

レジvsINIはそれぞれにメリットデメリットあるけど「お気に入りツールをUSBストレージに入れて出先のパソコンで」なんて使い方もできるようになった昨今、ちょっとした子物ツールなんかだったら設定内容もexe以下ディレクトリ内で完結しているもののほうが個人的には使いやすいかな。まぁ所詮マルチ考慮しないシングルユーザー環境で使ってるものの認識ですが。
レジストリと ini ファイルについて考えるページ

html作成考

テーマを変えてみました。前(はてな標準の色を変えたもの)より文字サイズがちょっと小さめなのかな、人によっては見づらいとかあるのかも。ローカルOSでのエディタフォントなんかも14ptや12pt標準で使ってる人って結構いるみたいだし。自分は大体9ptか10ptくらいなのでこのくらいのほうが落ち着くんですけどね。

htmlエディタってどうよ

ブログとは別にサイトを持ちたいな、と考えてたりもするんですがHTMLを作る気がしなくて長いこと頓挫したままです。昔読んだ本にはHTMLはなるべく論理タグで構成して修飾はCSSでやるべきとか書いてあったんだけど、アウトラインエディタ的なアプローチでHTMLを作ってくれるエディタって当時はなかった。ていうか今だに無いような気がする。自分が知らないだけかもしれないけど。
色々調べてみると、やっぱり手打ちかタグ挿入型エディタが一番って結論みたいなんだけど、まぁ実際タグを覚えてタイプするのは慣れればそんなに手間じゃないとも思う。けどタグ混じりのソース状態じゃ文章内容推考上に支障が出るんだよね。自分なんかは打鍵は速いんだけど脳内で文を組み立てられないのでフレーズを断片で打ってってそれらを適当に切った貼ったで辻褄を合わせるという方法を取っているのですが、タグ入れ込んだ後に内容修正したいとかも当然あるわけで、しかしタグ混じりじゃ 通しで読んでの文章チェックとかできないのでやたらブラウザプレビューばっかやってる状態になり、そんなことしてるうちに何が書きたかったのかわかんなくなってしまうというパターン。

例えばWordで文書作るときは段落に「見出し1」「標準」「標準インデント」などのスタイルを割り当てて、スタイルのほうの書式をカスタマイズしたりするんですが。そしたら個別にフォント変えて行くより手間がないし修正も楽だし。普通のHTMLエディタだってそういう感じで作れればいいなって思うんですよ。(WordでHTML作りたいのかっつたらそれは別問題なんだけど。)
BODYは論理タグで適当にやってくれて、CSSの部分をGUI上で効果を確認しながら設定できるようなの。独自classとか無視で、既存の論理タグに対する修飾だけできるれば必要充分。けどWYSIWYG系HTMLエディタって今でもRichEdit的な修飾方法がメインっぽいんだな。手動で余計な修飾しなければ物理タグ吐かないようにはできるんだろうけど、CSSの設定をWYSIWYGで簡単にやらせてっつのは難しいんかな。その辺は大体サポート対象外つか、やりたかったら自分で設定せぇっつー感じっぽいですよね。

txt→html コンバートはどうか

はてなのブログ記法とかchalow(ローカルのChangeLog日記をブログに変換&ftpアップロード)とかを知って、テキストの簡単なルールに沿ってhtmlにコンバートするってのはありかもなぁと思った。単純にテキストをhtmlで読めるようにするだけじゃなくて、

[[ほげほげ|http://www.hoge.com/hogehoge/]]

みたいなのを書くとリンクにしてくれたり、画像貼っつけたり。引用や強調や削除線、ラインなんかも分かりやすい記号での記法で書くと置換えてくれる。Hikiの記法ってやつらしいんですが。
chalowはブログ生成なので、もちっと単純なtxt→HTMLコンバートツールを探したんだけどなかなかピンと来るものがない。やっぱそゆことやりたい人はperlとかで自作してるのかな。しかしperlとかPHPとかRubyとか、そのあたり界隈はさっぱりわからんので、とりあえず無謀と思いながらもAutohotkeyで試してみた。まぁ予想通り正規表現使えないのでしんどい。で、今度は秀丸マクロ(こっちは正規表現が使える)で試そうと思って、どういう正規表現を使ったらいいのか調べるのにchalowのソースとか覗いてみて…つかさ、お手本あるんだし素直にperlでやったほうが早いし賢いよな、と当たり前の結論に至る。でも文法が全然わかんないので結局やんないんだけど。
基本的にCGIとかは全然興味ないんだけどテキスト整形とかが簡単にできるらしいのはいいよなとは思っていて、本屋でちょっとマニュアル本覗いてみて、うっかり3冊ほど買ってきちゃったりして。うちにはこういう買ったはいいが全然読まなかったマニュアル本がいくつもある。

ひとりwiki

上でごちゃごちゃ書いてみたけど、改めて考えると1HTMLファイル単位でなく関連記事単位で考えればwikiのほうがまとまりが良いんだな、とchalow(≒Hiki)の記法はwikiのそれだと知ってから思い始めた。wikiというと複数のユーザーでページを作っていく、何かやたらと重くて見づらくて閲覧者に優しくないシステム って印象だったんですが。別にコミュニティ前提でなくても個人サイトの体裁にwiki使ってもいいわけで、重いのはサーバー側の問題もあるだろうしwikiの種類にもよるだろうし、見づらいと思うのは自分がwikiの閲覧に慣れてないからで、あと自分で使うならテーマ変えてカスタマイズすればいいんだな、と気がついた。というわけでWikiの無料レンタルサイトとかをあたって見ていたのですが、はてなのトップページをぼんやり見ていたら人気記事のところにローカルPCにwikiの記法でメモを取れるVector: ひとりWiki - 新着ソフトレビューというソフトがありました。
ローカルで作ったwikiをhtmlに変換してからサイトに上げる方式(ローカルにバックアップがある) = 鯖飛びによるデータ消失に脅えなくていい。ってのはちょっといいかも。とりあえず少し触った感想、テーマ等は現状未サポートのようですが、template\wiki.cssを直接弄れば見栄えはカスタムできるのかな。あとreadmeには記載がありませんが、レジストリ使用してますね。

HKEY_CURRENT_USER\Software\Mas\HitoriWiki

って項目ができてた。

尚、同作者のperlを使用したデータ変換器は簡単なperl学習ツールとして使えそう。こっちもレジ使用ソフトだけど。*1

作者さんのサイト

MASのページ データ変換器から閲覧可能なperlのリファレンスとかもある。
2005-10-23 開発日記

*1:別にレジストリを使用するソフトを毛嫌いしているというわけでも、そんなに神経質になってるわけでもないんですが、ini仕様とレジ仕様でインストール先を分けているためで試用時には必ず確認しています。この辺の情報はreadmeに記載が欲しいなぁ