【広告】楽天市場から 春のお買い物マラソン4月27日朝9時まで

H:Home > Read Me First > Profile > Diary
i-mode / J-SKY / EZweb(の一部) 対応の簡易版
検索文字列:

脱 三日坊主 宣言!

このサイトの管理人、表具師かっぱの日記です。
(新規投稿は出来ませんが、ツッコミは入れられます)

別冊 表具師かっぱの「脱 三日坊主 宣言!」もちまちま更新中

※ 当日記はレイアウトに CSS2 を使用しています ※
(CSS2 未対応のブラウザでも閲覧・投稿は可能です)
なお、IE3NN4CSS への対応が不完全ですので、設定にかかわらず適用されないようにしています。ご了承下さい。

ホームページへ戻る


こちらの記事へツッコミを入れる場合は下のフォームに書いて下さい。
内容が異なる場合はブラウザのバックボタンで戻って下さい。


2004-02-16 の出来事

歯医者へGO!

金曜日に予約した歯医者さんに行ってきました。

親不知は痛みも引き、順調に発育(?)しているようで、今日も消毒だけでした。その他、検診の結果、虫歯もなく歯石を取ってしまえば後は問題ないそうです。

歯石は4回に分けて取るそうで、今日は左の上顎から。プィーンという機械の音で痛いかもと思ったのですが、全然痛くもなく、緊張して損しました。(笑)

歯石取りは後3回。次回は水曜日の午後2時です。

対談のマークアップ

犬神さんが対談のマークアップに悩んでいらっしゃるようですが、HTML4.01の仕様書(和訳)に以下のような記述が在りますよ。

DL要素の応用として、例えば対話のマーク付けがある。DT要素が話者を示し、DD要素が話の内容を示す、というものである。

原文では、Another application of DL, for example, is for marking up dialogues, with each DT naming a speaker, and each DD containing his or her words. となっています。

って事で、定義リスト(<dl>/<dt>/<dd>)で良いんじゃないでしょうか。

ちなみに、この日記のツッコミ欄も <dl>/<dt>/<dd> でマークアップしています。(ツッコミが少ないから出番が殆ど無いけど……。(笑) )

Camino べんりセット

1月18日にインストールした Mozilla 1.6 同様、昨日インストールした Revontulet(Mozilla Firefox 0.8) にも「Camino べんりセット(v1.68)」を Bookmarks にインポートしました。

で色々と試してみたのですが、日記を書く上で最もよく使う「選択部分のソース」と「リンクタグ作成」がやはり上手く動きません。そこでなんとか解決しようと、昨夜遅くまで(明け方近くまで)かかって悪戦苦闘した末、「リンクタグ作成」だけは使えるようになりましたので、その経過を報告します。

リンクタグ作成」のソースは benriSet.jsvar bsetLinkTag = { 以下の部分でオブジェクトリテラルとして定義されています。

URL 文字列末尾の数字

"?" につづく 8 桁の数字が URL 末尾にある場合は、それを削除します。いわゆる「更新日時取得アンテナ」がリンク URL に付加してる事の多い文字列。この処理が不都合であれば、以下のように変更してくださいな。

kill8Nums : true,kill8Nums : false,

と「リンクタグ作成」の説明に書いていましたので試しに kill8Nums : false, にしてみました。するとあっさり動くじゃないですか。と言う事は、Error: invalid quantifier ? の原因は kill8Nums プロパティに関係するものだと推測できます。

kill8Nums プロパティは、getPageURL : function(target) { 以下の if (this.kill8Nums) url = url.bsetRemove8Nums(); で、bsetRemove8Nums() メソッドを呼び出す条件式に出てきます。kill8Nums : false, にするとエラーが出なくなるのですから、エラーの原因は bsetRemove8Nums() メソッドの定義部分にあると考えました。

bsetRemove8Nums() メソッドは run : function() { 以下の try/catch 文中の String.prototype.bsetRemove8Nums = this.remove8Nums; で、String オブジェクトのプロトタイププロパティとして定義され、その値は this.remove8Nums ですから、次は remove8Nums を探しました。remove8Numsremove8Nums : function() { 以下で定義されています。

remove8Nums : function() {
    var ptn = new RegExp('\?\\d{8}(#.*)?$');
    return (this.match(ptn)) ? RegExp.leftContext + RegExp.$1 : this;
},

Error: invalid quantifier ? からまず RegExp() コンストラクタで定義されている正規表現パターン \?\\d{8}(#.*)?$ を疑ってかかりました。

まず始めの "\?" は"?" につづく 8 桁の数字に書かれている "?" を表しています。次の "\" はその次に続く "\" をエスケープしている訳ですから次の "\d{8}" は任意の数字を8回繰り返すという文字クラスじゃなくて……。と正規表現が苦手な僕はここで訳が解らなくなってしまいました。ちなみにこの後に続く "(#.*)?$" は、"#" と次に続く0文字以上の任意の文字列(".*")の組("(#.*)")を0回または1回だけ繰り返したもの("(#.*)?")を文字列の最後("$")に持つという意味で、文中のアンカーにリンクする時に使う「URI#名前」の「#名前」を表しています。

結局残ったのは訳が解らなくなった "\\d{8}" の部分です。任意の8桁の数字は "\d{8}" ですから、単純に "\" を一つ取ったのですが、これでもダメみたいです。でも、 "\?\d{8}(#.*)?$" で良いはずだし……と、ここではまってしまいました。

悩んだ末に、試しに RegExp() コンストラクタを使わず、正規表現リテラル形式で var ptn = /\?\d{8}(#.*)?$/; のように定義してみました。そしたらあっさり動いたんです。明け方に一人で小躍りしてしまいました。(笑) 纏めると以下のようになります。

remove8Nums : function() {
    var ptn = /\?\d{8}(#.*)?$/;
    return (this.match(ptn)) ? RegExp.leftContext + RegExp.$1 : this;
},

なぜ RegExp() コンストラクタはダメで、正規表現リテラル形式ならエラーが出ないのか、そんな難しい事はさっぱり解りませんが、兎に角使えるので結果オーライです。

調子に乗って「選択部分のソース」も同じ所を触ってみましたが、こちらはさらに別の部分にもエラーの原因があるようなので、今のところお手上げです。何とかなりませんか?>ありみかさん

後、動作には全く関係ないですが、extraEntities プロパティの中に [255, 'yuml'], が2回出てくるので1つ削除しておきましたよ。(笑)

あまりにも長くなったので

1ページあたり5日分の表示にしました。これで少しは読み込みが早くなるはず。

今までなぜ10日分も1ページに表示していたかと言うと、基本的に1日の日記が短かったからで、ここ3日が異常に長いだけなんです。(笑)

あと、もう少し読み易く、かつ使い易く出来るように裏でごにょごにょやってますので、読み難いなぁと思う方は表示スタイルに杜若をお使い下さい。少しはましだと思います。(u_u)

2004-02-16 の出来事にツッコミを入れる


本日のツッコミ

のり E-mail URL

こんなのがあって、入れ替えたらうちではうまく動くようになりました。
http://pc2.2ch.net/test/read.cgi/hp/1060694407/925-930

(2004年02月16日 (月) 18時16分)

表具師かっぱ(管理人) E-mail URL

のりさん、情報有難う御座います。(u_u)
早速入れ替えてみたところ、うちでも問題無く動きました。
やっぱり純正品(?)は安心ですね。(笑)

(2004年02月16日 (月) 20時08分)





ツッコミ投稿フォーム


Number
Pass

ThinkPadを買おう!
レンタカーの回送ドライバー
【広告】楽天市場から 春のお買い物マラソン4月27日朝9時まで
無料で掲示板を作ろう   情報の外部送信について
このページを通報する 管理人へ連絡
SYSTEM BY せっかく掲示板