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を思わせる、正規表現で全体をバッサバッサと置換していく、文脈無視の大味な実装。(そこまで正規表現を信用できないし、最大長のわからない文字列を何度も何度もなめまわすのは避けたいところ)
WikiNameを見つけ出す(自動リンク)正規表現が微妙に違う。
HikiDocにおまかせしたので、連続する大文字が許容される一方、大文字で終わる名前は拒否されるようになります。(GOODWikiName, BadWikiNAME)
日記に書いた手前、どんな風になるのか試してみただけだし、現状で困ってもいないので、この(追記部分の)変更は使用中の Hiki( http://vvvvvv.sakura.ne.jp/w/ )には入れていない。あしからず。
まあ、ポインタと配列は一緒とか云っている人は、一遍
シンデミル?int array[なんかでかいすうじ]; なグローバルな実体を extern int *array; で参照してはまればいいと思うよw
手っ取り早く確かめるのはこんなんで。
たぶんSEGVで落ちるはず。
なぜ SEGVで落ちるのかわからなかったので、試してみた。
/* 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; }
配列(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"); }
配列(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
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回ダブルクリックしてしまって選択を誤ったが、海羽超史郎という人の著作を読んだことはありません。
WZR-AGL300NHなら WPA/WPA2混在、TKIP/AES混在が可能なので無問題。(ところで Ver.1.200ファームでも WPA-PSK(AES)が相変わらず使用不可なのかが疑問。設定項目からそういう区別がなくなっているということは何でも OKになったということ?)
アンテナが 3本もあるから多分大丈夫? < まだ確かめていない
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に任せたら再生が途切れることがなくなった。電子レンジを使ってさえ途切れない。
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のアドレスを元に戻すと解決。
WZR-AGL300NHの方に WDS(リピータ機能)の設定がなかったのと、あっても暗号化に WEPしか使えないので却下。
PCの LANポートが使えるようになるから。USBの無線子機では WOLが使えないので。まだ VGF-WA1が SN25Pを起こすことはできていないけど、きっとできるはず?
常々、マウス、キーボード、ディスプレイ、無線LANのみを具えた軽量クライアントPC*が欲しいと思っていた。HPの TouchSmart PCはさらにタッチスクリーンを具えていて、期待の一歩先を行っている。64-bit Vistaの採用も良い。メモリが安くて余ってるのに 32-bit OSで 3GB程度のメモリしか扱えないとか馬鹿らしいからね。未だに 64-bit版を選ばせないメーカーは怠慢(<サポートの苦労を考えない放言)。
あえて難をいうなら、地デジ対応(予定)は全くもって必要ないのだが、単体モニタとして使用できるように外部入力端子は欲しい。ディスプレイポートだか HDMIだかはもちろん、コンポーネントか D端子までがカバーされていると完璧。
* ノートPCはまず癖のないキーボードを具えておらず、マウスもなく、縦1024以上のディスプレイを持ったものもなかなかない。
AVLP2/G-2の件が謎だが、どうもこのパソコンに問題があるらしい。Vistaなので Windows Media Connect 2.0をインストールしたり、WMP11を再インストールしたりできないのがつらい。WMP12をインストール(いつの話だ)したときに共有できるようになったらいいなあ。
AVLP2/G-2は OKと書いたが安定していない。起動してもなかなかデバイスリストに追加されない。
TVersityと VGF-WA1を起動した状態で、ルーターを再起動したりなんかしていて、ふと WA1の画面を見たら TVersityが現れていた。謎。WMP11ではやはり共有できない。
TVersityは Shift_JISな mp3タグが化けるので使いにくい。それ以外は設定項目が多くて良い。何よりサーバーとして役目を果たしている! でもアルファベットを問答無用でキャピタライズするのはやめて。
1.0.0.0 RC1を、UACオンの Vistaに XP SP2互換モードでインストールして、SSDP Discoveryサービスも動かしたままだけど問題ない。ただ、ハイバネーションから復帰したあとつながらなくて、TVersityのサービスを再起動する必要があったりする。文字コードも iTunesと同じ Unicodeにしたら化けないし、もはや何のソフトが原因で Shift_JISにこだわっていたのかも思い出せないのでタグは、Unicodeに一括変換してしまう。
これで VGF-WA1を使い倒す環境が整った、わけではなくて、WMA Losslessをこのように
PC --(IEEE802.11g)--> AP --(IEEE802.11g)--> WA1
無線で送り出して無線で受け取ろうとすると再生が途切れ途切れになる。WMAファイルのプロパティを見たら 1Mbps弱だったから、理論上限値 54Mbpsの IEEE802.11gにはがんばって欲しい。
(余談) WMP11の共有もずっとオンにしているが WA1から見えたことはない。
箱を開けたりしているうちはウキウキだった。さすが日本のメーカーだなー、とか。梱包とモノはすごくいい。でもいろいろつまずいた。
VGF-WA1がサポートしているのは IEEE802.11b/gの
説明書を見たら WPA-PSK AESは確かに抜けている。うちのアクセスポイントが古いのは認めよう。でもクライアントにはどんなアクセスポイントにも接続できるように幅広い対応を求めたい。仕方がないのでアクセスポイントを TKIPにした。
最新のファームが購入の決め手だったのに……。
デバイスドライバのインストールに失敗したというメッセージが出て失敗する。(VGF-WA1の液晶が updating firmware...と表示したままになるが、電源を切っても再起不能になったりはせず問題なかった)
説明書に Vista対応とは書かれているが、SP1なのがいけないのか、64-bit版なのがいけないのか。(ちなみに Vista対応を謳うのならそれは当然 32/64-bit両対応を意味するものと了解しているので、64-bitがいけないとは思っていない。原因である可能性は極めて高いと思っているが)
XP SP2を使ってファームウェアのアップデートだけはできたが、インストーラがファームウェアアップデートという、最初のプロセスでこけるので Vista機にワイヤレススピーカーマネージャをインストールできなかった。だもんで、VGF-WA1を PCのリモートスピーカーとして使用することができない。インストーラから個別のインストーラを展開できれば他のモノのインストールは成功する可能性もあるのに。
DLNAサーバーには Windows Media Player 11を使うことにした。
コントロールパネル > ネットワークと共有センター > メディア共有 > 変更...
で設定画面が開くがデバイスリストに VGF-WA1が現れない。パケットが届いていない可能性もあるかと思って、別の DLNAクライアント(I-O DATA AVel LinkPlayer2)を起動したらこれはリストに追加された。VGF-WA1は現れない。当然、VGF-WA1の方にもサーバーが現れない。
とりあえず Webラジオ*を聞きながら日記を書きつつ途方に暮れている。
追記: DELLの XP SP2パソコンでは問題なく共有できる。
追記: VAIO Media Integrated Serverなら Vista機でも共有できる⁑。でも余計なものはインストールしたくない。
追記@2009-03-23: LinkStation Mini(LS-WS1.0TGL/R1)を DLNAサーバーにした。 日本語の表示も問題なし。DLNAクライアントとしても使えるようになりネットラジオ専用機状態から脱却。
なんだかんだで SONYが好きなのだろうか*。今、これだけが目に入る。
PlayStationは代替がないが、それ以外は比較検討した結果だ。もちろん VGF-WA1も。
VGF-WA1の決め手は安さ(¥17000)と、二度のファームウェアアップデートで、指摘された弱点(その1、その2)をきっちり潰しているところ。(もちろんハードウェアはどうにもできないが)
* SONYのデザイン偏重のカタログは 明確に 好きではない。要はターゲットの違いなんだろうが(つまり俺は SONYのターゲットではないということだが) TOSHIBAのマニアックでオタ心をくすぐるカタログが好ましい。
最終更新: 2009-08-30T23:50+0900
別に隠してないみたいだけど。
ftp://ftp.logitech.com/pub/techsupport/mouse/
ボタンが押されたことの通知を受け取ったり、LEDを制御したり、(持ってないけど) MX Airに関連した機能が用意されている。
もっとも、MX610HIDが既にあるので、メールの受信時にこれを叩けば LEDは点灯する。特に使い途はない。
例えば、Mailbox Alertというアドオンを入れて
[チェック] Execute a command: C:\path\to\MX610hid\mx610hid.exe mx mpg t60000 mx
というふうに設定すればメール着信後一分間ホタルのように光る。