/ 最近 .rdf 追記 設定 本棚

脳log[2008-07]



2008年07月04日 (金) ダビング10とか心底どうでもいい。地上波って NHKと WBSとアニメしか見る価値ないじゃない。ん?地上波以外にも影響するの?どこまで?

これはいい > HP TouchSmart PC IQ500

常々、マウス、キーボード、ディスプレイ、無線LANのみを具えた軽量クライアントPC*が欲しいと思っていた。HPの TouchSmart PCはさらにタッチスクリーンを具えていて、期待の一歩先を行っている。64-bit Vistaの採用も良い。メモリが安くて余ってるのに 32-bit OSで 3GB程度のメモリしか扱えないとか馬鹿らしいからね。未だに 64-bit版を選ばせないメーカーは怠慢(<サポートの苦労を考えない放言)。

あえて難をいうなら、地デジ対応(予定)は全くもって必要ないのだが、単体モニタとして使用できるように外部入力端子は欲しい。ディスプレイポートだか HDMIだかはもちろん、コンポーネントか D端子までがカバーされていると完璧。

* ノートPCはまず癖のないキーボードを具えておらず、マウスもなく、縦1024以上のディスプレイを持ったものもなかなかない。


2008年07月05日 (土) 親子どちらの筐体も脆そうなチャチいプラ。エントリーモデルだった WHR-G54Sの方がいい感触してる。

[][VGF-WA1][SN25P]["BUFFALO 〈エアステーション エヌフィニティ〉 Giga Draft11n対応 11a&g or 11g 無線LANブロードバンドルータ LAN端子用 無線LAN WZR-AGL300NH/E"]

 目論見

  • VGF-WA1で SN25Pを WOL
  • VGF-WA1で WMA losslessを途切れなく再生
  • AVLP2/G-2で動画のまともな再生を可能に
  • RD-XS36を LANにつないで PCに動画をコピー (VirtualRDを使って)

 WZR-AGL300NH (IEEE.11n/a/b/g同時使用可 無線LAN親機)

 VGF-WA1が WEPか WPA-PSK(TKIP)か WPA2-PSK(AES)しかサポートしていない(20080628p01)

WZR-AGL300NHなら WPA/WPA2混在、TKIP/AES混在が可能なので無問題。(ところで Ver.1.200ファームでも WPA-PSK(AES)が相変わらず使用不可なのかが疑問。設定項目からそういう区別がなくなっているということは何でも OKになったということ?)

 WMA losslessの再生が途切れる

アンテナが 3本もあるから多分大丈夫? < まだ確かめていない

 WLI-TX4-AG300N (LANポート 4つがついた無線LAN子機)

WLI-TX4-AG300Nには HDDレコーダー(RD-XS36)とネットワークメディアプレイヤー(AVLP2/G-2)を接続。再生が一度途切れると最早まともに再生を再開できない AVLP/G-2の原因が帯域の不足した無線LANだとしたら、AVLP2/G-2の(有線)LANポートを使用して、最大300Mbpsでる WLI-TX4-AG300Nに無線通信を任せたら解決するかも。


無線部分を AVLP2/G-2内蔵IEEE802.11gから WLI-TX4-AG300Nに任せたら再生が途切れることがなくなった。電子レンジを使ってさえ途切れない。

 引退した WHR-G54S (IEEE802.11b/g 無線LAN親機)

WZR-AGL300NHにとってかわられたアクセスポイントには Tomato firmware(version1.19)をインストールしてこの PC(SN25P)のネットワークアダプタになってもらった。

WHR-G54Sをイーサネットコンバータみたいにするには Wireless Modeを Wireless Ethernet Bridgeにするのだけど、これを設定すると Tomatoの設定画面が開けなくなって困った。原因は

ルータ(192.168.1.1) <-/ /-> WHR-G54S(192.168.2.1) <--> (192.168.2.2)SN25P

という環境で作業していたものが、この設定で

ルータ(192.168.1.1) <--> (???.???.???.???)WHR-G54S(192.168.2.1) <--> (192.168.1.XXX)SN25P

というように、SN25Pの IPアドレスを WHR-G54Sではなくルータが割り振るようになって WHR-G54Sの LAN側アドレスと SN25Pが違うサブネットに属してしまっていたから。

IPv4のプロパティを開いて SN25Pのアドレスを一時的に 192.168.2.XXXの固定アドレスに変更して、WHR-G54Sのアドレスを 192.168.1.XXXに変更して、SN25Pのアドレスを元に戻すと解決。

 なぜ WHR-G54Sを BUFFALOのファームウェアのまま中継器にしない?

WZR-AGL300NHの方に WDS(リピータ機能)の設定がなかったのと、あっても暗号化に WEPしか使えないので却下。

 なぜ無線子機(WLI-U2-KG54)があるのに WHR-G54Sをイーサネットコンバータ化?

PCの LANポートが使えるようになるから。USBの無線子機では WOLが使えないので。まだ VGF-WA1が SN25Pを起こすことはできていないけど、きっとできるはず?


2008年07月06日 (日) LIBLIe終了。同時に Printer for LIBLIeなるものの存在を知る。LIBRIeをプリンタに見立てて「印刷」することが可能になるらしい。すごく、LIBRIeが欲しくなりました。

[]ラノベ作家140人ソート

1	秋山瑞人
2	桜庭一樹
2	高殿円
4	野村美月
5	葉山透
6	米澤穂信
7	清水マリコ
8	西尾維新
9	乙一
10	古橋秀之
10	佐々原史緒
10	友桐夏
13	竹宮ゆゆこ
13	森橋ビンゴ
15	今野緒雪
16	十文字青
16	中村九郎
16	海猫沢めろん
19	冲方丁
20	谷川流
21	長谷敏司
22	中村九郎
23	片山憲太郎
23	支倉凍砂
25	桜坂洋
25	一柳凪
27	田中ロミオ
28	山形石雄
29	海原零
29	おかゆまさき
31	加地尚武
32	貴子潤一郎
32	細音啓
34	紅玉いづき
35	アサウラ
36	壁井ユカコ
37	藤原祐
37	海羽超史郎
37	豪屋大介
40	瀬尾つかさ
40	木村航
42	小林めぐみ
43	ヤマグチノボル
43	桑島由一
45	平坂読
46	竹岡葉月
47	有川浩
47	甲田学人

読んだことがあるのがだいたいこの順位までの作者。(何人か下位にこぼれているし、蒼穹の女神を評価している すずきあきら はリストにも入っていない)

 ものもうす

桑島由一の順位が低いがこの人の名前は「桑島由一 <> ヤマグチノボル」の一回しか目にしていない。作家に明確な順位付けなんかしていないから、名前が出てくるたびに評価は上下するもの。一度しか名前が登場しないのでは、例えばこのばあい、桑島由一の評価は完全にヤマグチノボルに依存しているがそれは不正確。ましてこの二人の場合、引き分けを選ぶことしかできませんでしたよ。

<追記>そうだ。推移律。作家をソートするときに推移律が成り立つことを期待してはいけない。作家を評価する軸は作家の数だけあったっておかしくないし、それらの軸ごとに一定の重みを付けて評価をひとつの数値に落とし込むなんて不可能。なんて、今回の試みを真っ向から否定する発言。</追記>

ほんとうにソートしているだけだから選んでいる本人には結果に全く意外性がない。退屈。結果を見ると「高く評価している作品を」「何作も」出している人の評価が高いのがわかるが、そのように選んだのだから自分にとっては当然の結果。

2、3回ダブルクリックしてしまって選択を誤ったが、海羽超史郎という人の著作を読んだことはありません。


2008年07月09日 (水) 自分で一通り納得してしまうと、解らなかったことが不思議で、恥ずかしくなるくらい当たり前のことに思える。(実際そうでしょう)

> (Cの)ポインタ (ときどきの雑記帖 i戦士篇)

まあ、ポインタと配列は一緒とか云っている人は、一遍シンデミル? int array[なんかでかいすうじ]; なグローバルな実体を extern int *array; で参照してはまればいいと思うよw

手っ取り早く確かめるのはこんなんで。

たぶんSEGVで落ちるはず。

なぜ SEGVで落ちるのかわからなかったので、試してみた。

 a.c

/* cmd /V:ON
	SetEnv
	cl a.c foo.c bar.c
*/
#include <stdio.h>
void foo(); // foo.c
void bar(); // bar.c

char array[256];

int main()
{
	printf("main:    :array: %p\n", array);
	printf("main:addr:array: %p\n", &array);
	foo();
	printf("%s\n", array);
	bar();
	printf("%s\n", array);
	return 0;
}

 foo.c

配列(array)を配列(char[])として参照。

extern char array[]; // a.c

void foo()
{
	printf("foo :    :array: %p\n", array);
	printf("foo :addr:array: %p\n", &array);
	strcpy(array, "hello, foo world");
}

 bar.c

配列(array)をポインタ(char*)として参照。

extern char *array; // a.c

void bar()
{
	printf("bar :    :array: %p\n", array);
	printf("bar :addr:array: %p\n", &array);
	strcpy(array, "hello, bar world");
}

 出力 (<以降は注釈。>以降は考察)

main:    :array: 0040DAA0 < char array[]
main:addr:array: 0040DAA0 > &array == array
foo :    :array: 0040DAA0 > foo:array == array
foo :addr:array: 0040DAA0 > &foo:array == foo:array
hello, foo world
bar :    :array: 6C6C6568 < 6C(l) 6C(l) 65(e) 68(h)
bar :addr:array: 0040DAA0 > &bar:array が arrayと同じ
(a.exe は動作を停止しました)

確かに落ちた。

 確認

  • 配列はアドレスを取っても配列?*
  • ポインタはメモリ上に確保された値(だから操作も可能)だが配列名は違う。配列名で得られるアドレスはメモリ上に存在しない。
  • 変数名は(その時々で)特定のメモリアドレスと不可分の存在。そのアドレスの指すメモリイメージをどう解釈し、プログラマに提示するかは変数の型に依存する。

例えば arrayと書いたときに得られるイメージが 6C6C6568... だったとする。これを charと解釈すれば 'h'(68h) になるし、intと解釈すれば 1819043176(6C6C6568h) になる。shortなら 25960(6568h)。では char* なら? そのまま 6C6C6568。(ポインタのサイズが 64-bitなら、あと 4バイト先まで読むことになるが)。ではでは char[]なら? 6C6C6568... というメモリ領域を指すアドレスが手に入る。

 こういうこと?

arrayとラベルされたメモリ領域(6C6C6568...)が存在するときに、それをポインタとして扱った場合と、配列として扱った場合では、得られるものがまるで違う。(6C6C6568というメモリ上の値か、そのアドレスか)

配列とポインタが混同されるのはどちらもアドレスが得られるから。違うのはそのときその変数が参照しているメモリイメージ。配列変数は配列の中身が格納された領域を参照しながらそのアドレスを返すが、ポインタ変数はアドレスが格納された領域を参照しており、その内容をそのまま返している。

* 違うみたい。>http://www.kt.rim.or.jp/%7ekbk/zakkicho/08/zakkicho0808a.html#D20080809-2


2008年07月17日 (木)

[Hiki] quote_pageプラグインを使用したときに tocの飛び先が狂うのを修正 (Hiki-0.8.7)

http://vvvvvv.sakura.ne.jp/w/9784320122079/?QuotePageProblem

ちょっと説明。

アンカーが重複するのを防ぐために、quote_pageプラグインが他ページを HTML化する際に prefixを用いるようにした。でもこの prefixがそのままではうまく動かない。

prefixとは Hiki::HTMLFormatter_default#initializeが受け取る五番目のパラメータ。その意味は、見出しに付くアンカーの接頭辞。デフォルトでは prefix='l' となっており、l0, l1, l2,...とアンカーが割り振られることになる。

ところで、quote_pageが様々な prefixを用いてメソッドを呼び出しても、Hiki::HTMLFormatter_default::HEADING_REが

%r!<h(\d)>.*<a name="l\d+">.*?</a>(.*?)</h\1>!

となっており prefix='l' がハードコーディングされている(太字部分)。これの修正が必要だった。

また、rd+スタイルの場合はもっと悲惨で、五番目のパラメータ(なぜか suffixという名前)は全く利用されていない。修正の可能性はリンク先で書いたが自分で使っていないので未対応のまま。

なんでこんな使えないパラメータ(prefix, suffix)があるんだろう。

 追記

bugfix in headings in blockquotes (html_formatter.rb, Revision 1.47)

このへんが関係ありそう。引用の中の見出しは TOCに含めたくないとかそういうことだろうか。テストケースがあれば regressionの有無を確認できるんだけど……。

現在の状態で確認したが、引用の中の見出しが TOCに含まれるということはなかった。

ちなみに、Revision 1.46の tocメソッドにも prefix='l' 決めうちのミスがあったが、1.47でのそれにあわせるような変更から考えるに、ミスではなく prefix='l' の見出しだけが TOCに含まれるという仕様なのかもしれない。<ないない

ところで、最初のリンク先の Hikiには最新の HikiDocを入れているのだけど、その場合、html_formatter.rbを最新の hikidoc.rbに対応したものに全面的に書き換えないと、hikidoc.rbの大改造のメリットが半分しか活かせていないことになる。現在の html_formatter.rbはかつての hikidoc.rbを思わせる、正規表現で全体をバッサバッサと置換していく、文脈無視の大味な実装。(そこまで正規表現を信用できないし、最大長のわからない文字列を何度も何度もなめまわすのは避けたいところ)

 追記@2008-07-18: 最新の HikiDoc用のフォーマッタ(HikiDoc.newの第一引数)を書いてみたけど.

  • WikiNameを見つけ出す(自動リンク)正規表現が微妙に違う。

    HikiDocの正規表現(WIKI_NAME_RE)
    /\b(?:[A-Z]+[a-z\d]+){2,}\b/
    default/html_formatterの正規表現(WIKINAME_RE)
    /(\b(?:[A-Z][a-z0-9]+){2,}[A-Z]*\b)/n

    HikiDocにおまかせしたので、連続する大文字が許容される一方、大文字で終わる名前は拒否されるようになります。(GOODWikiName, BadWikiNAME)

  • default/html_formatterの URI_REはオーバースペックなので簡略化したいけど、すると動作が変わる。したけど。
  • tocを HTML化と並行して作るようにしてみたけど、quote_pageで引用してきた部分の tocが消えてしまうので、これまで通り最後に HTML全体をなめて作成することに。
  • tocは <ul>の直下に <ul>を配置したりするけど、どうなん?
  • 他に細かい違いがいっぱいあるはず。
    • aliasと titleと ページ名が重複したときどれが優先されるのか。
    • 重複した aliasは、最初に見つかった URLが選ばれるのか最後のものか。
    • ある変数が URLエンコードされているのか HTMLエスケープされているのかが極めてわかりにくい。絶対にどこかで間違えている。(実際に一か所間違えていた)

日記に書いた手前、どんな風になるのか試してみただけだし、現状で困ってもいないので、この(追記部分の)変更は使用中の Hiki( http://vvvvvv.sakura.ne.jp/w/ )には入れていない。あしからず。


2008年07月18日 (金) 二重ブラケットの中でもマークアップが使える。ところで | を \ でエスケープできるんだけど \ が消費されない……。

[tDiary][Hiki] 引用元の URLと説明を HikiDocで書けるように。

こう書くと

""[[http://vvvvvv.sakura.ne.jp]]
""どこからの引用だかわかるでしょうか?
""
""すくなくとも Firefox3、Safari3.1、Opera9.50ではわかるはずですが、IE7では無理です。

こうなる。

どこからの引用だかわかるでしょうか?

すくなくとも Firefox3、Safari3.1、Opera9.50ではわかるはずですが、IE7では無理です。

HTMLはこんな感じになっている。

<blockquote cite="http://vvvvvv.sakura.ne.jp">...</blockquote>

スタイルシートはこう。残念な子 IE7は contentをサポートしていないのが敗因。

.section blockquote[cite]:after,
.section blockquote[title]:after {
  content: "引用元: "attr(title)" "attr(cite); /* ハイパーリンクにしたい。マークアップもしたい。 */
  display: block;
  text-align: right;
  font-style: oblique;
  background-color: #F3F9FF;
}

引用の最初の行が二重ブラケットリンクだけだった場合に限り、その中身を <blockquote>の cite/title属性として扱う。こういうパターンがあり得る。

 URLANDTITLE
 TITLEONLY
 http://URLONLY

add_cite_and_title_to_blockquote3.diff