一括表示

− 野ざらし言 −

[2334] 順位づけのアルゴリズム

めざら 2007/10/18(Thu) 06:32
<mezala@nifty.com> http://homepage3.nifty.com/mezala/
 先日から,それほど多くない値の順位づけの必要があって,ソートのアルゴ
リズムなどを『定本 C プログラマのためのアルゴリズムとデータ構造』 から
拾い読みしていました。ですが,どうもぴったりくるものがなかったので何と
も情けないコードになってしまい,もっとよい方法がないか悩み中です。

 今回扱ったデータの数は,わずか 6個。こんなわずかな個数でも,そういう
作業が不得意な人間にとって(わたし個人のことなのか人間一般のことなのか
は一応置いといて…)それなりに時間がかかります。

 アルゴリズムと言えるかどうかわからないほど単純な方法ですが,先頭から
順番にひとつの値を基準にして自分自身を含む 6個の値と比較して,自分より
大きな値がいくつあるか数えるということを 6回繰り返すというもの。

    ; ---- 順位づけ ---- 値はqを先頭アドレスとするバッファにある
    i0~,
 :j j-, k-,
    i++, a=q..i,
    (6){ (a<q..k)?j++, k++, }
    &?("%d",j+1)
    (i<5)?{ #21 >j }

 ソートなどするとデータを入れ替えなければならないのですが,この方法だ
と同じ値が存在する場合は同じ順位のものが複数あって続く順位が飛ぶという
所期の動作になるので,それほど悪くもないと思ったりもするのですが,なに
しろデータの量に比例した計算量,同じ比較を繰り返すというあきれるほどの
愚かさに閉口しています。

 なんかいい方法はないものかな。

[2340] Re: 順位づけのアルゴリズム

としき@宿直 2007/10/23(Tue) 04:11
[2334]へのコメント http://www.hinocatv.ne.jp/~toshiki/
私もいろいろと考えてみたのですが。
えと、要件としては、値を並べ替えてはいけないのですよね。
であれば、計算量は多分、O(n^2)にならざるを得ないような気がします。
並べ替えてしまってもよいのであれば、何番目までは並べ替え済みだから、
そこまでの比較は省略、という方法が使えるので計算量を削減が可能なんで
しょうけどね。
計算量が同一のアルゴリズムの中では、提示されたものが一番わかりやすい
のではないかと思います。というか、私が思いついたその他の方法は2つほ
どあるのですが、いずれも、計算量は同じになってしまうようだからです。
もしかしたら、むしろ増えてしまうかもしれない。

ま、6個ぐらいのデータだったらいいのですが、これが仮に8000個のデ
ータを順位付けしなければならない、ということになれば、並べ替えて順位
づけして並べ戻す、ということを考えたほうがいいかもしれません。
 

[2341] Re^2: 順位づけのアルゴリズム

めざら 2007/10/23(Tue) 22:23
[2340]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/index.html
> えと、要件としては、値を並べ替えてはいけないのですよね。
> であれば、計算量は多分、O(n^2)にならざるを得ないような気がします。

 挿入ソートと同じ計算量ということですね。まぁ,対象の数が極端に限られ
ているので,単純なアルゴリズムでも十分ということで。

> ま、6個ぐらいのデータだったらいいのですが、これが仮に8000個のデ
> ータを順位付けしなければならない、ということになれば、並べ替えて順位
> づけして並べ戻す、ということを考えたほうがいいかもしれません。

 これをやろうとすると,データの函の他に,並べ戻す位置のアドレスを示す
函と並べ替えて付与する順位を示す函が必要ということになりますよね。テス
トの点数で言えば,順位と名前が必要なように。


 今回,これの関連で初めて JavaScript を書きました。
文字コードを返す内部関数がなかなか見つけられなくて難儀しましたが,配列
や条件分岐などがきちんと使えるのはずいぶん楽ですよね。しかし肝腎の順位
付けはまだ入れていません。これだけで息切れしてしまったので。

function Calc() {
    mondat = document.hpara.family.value;
    famdata = mondat.split(",");
    apti = famdata[2];
    napti = new Array();
    for (i = 0; i < 6; i++) {
        napti[i] = 69 - apti.charCodeAt(i);
        if (napti[i] < 0 || napti[i] > 5)
            napti[i] = 0;
    }
    document.hpara.mondata.value = mondat;
    with (document.hpara) {
        al.value = apti.charAt(0);
        ap.value = apti.charAt(1);
        aw.value = apti.charAt(2);
        ah.value = apti.charAt(3);
        ad.value = apti.charAt(4);
        as.value = apti.charAt(5);
        hl.value = Math.round(sl.value * napti[0] * 0.5);
        hp.value = Math.round(sp.value * napti[1] * 0.5);
        hw.value = Math.round(sw.value * napti[2] * 0.5);
        hh.value = Math.round(sh.value * napti[3] * 0.5);
        hd.value = Math.round(sd.value * napti[4] * 0.5);
        hs.value = Math.round(ss.value * napti[5] * 0.5);
    }
}

 なんだ,改めて眺めると,サブルーチンもないや。(笑)
 MF2 resources を久々に更新しました。

[2342] Re^3: 順位づけのアルゴリズム

としき 2007/10/24(Wed) 11:18
[2341]へのコメント http://www.hinocatv.ne.jp/~toshiki/
>  これをやろうとすると,データの函の他に,並べ戻す位置のアドレスを示す
> 函と並べ替えて付与する順位を示す函が必要ということになりますよね。テス
> トの点数で言えば,順位と名前が必要なように。

そです。
かつて、FGALTSで、これに似たことを教えてもらった記憶があります。確か、
数千行のデータを行頭の値で順位付けするというようなものだったかな。

・まず、awkで行頭数桁分に1カラム増やし、そこに現在が何行目か
 というデータを入れる。
・それを2つめのカラム(元データの行頭の値)でソート。
・その結果をさらにawkにかけて、現在が何行目かというのを行末に
 付加。
・これを今度は行頭の値でソートして、元データの順に並べ戻し。
・最後に、awkまたはsedで行頭の新設カラムを削除。
・結果は、元データの順位が行末に付加されている形。

ただ、この方法のままだと、同じ値の時に同じ順位になりませんね。
これを改善するのなら、3番目の手順のところでちょっと工夫が必要。
 

[2343] Re^4: 順位づけのアルゴリズム

めざら 2007/10/27(Sat) 20:31
[2342]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/
> ただ、この方法のままだと、同じ値の時に同じ順位になりませんね。
> これを改善するのなら、3番目の手順のところでちょっと工夫が必要。

 どんな工夫をすればよいのか結局想像つきませんでしたが,awk でアレコレ
すればできそうなんでしょうかね。 自分でやるならまた sortf のお世話にな
りそうです。

 その後も,やはり適当なアルゴリズムは思い付かなかったので,マクロでの
手法をそのまま JavaScript にしました。

    for (i = 0; i < 6; i++) {
        j = 1;
        crnt = o1[i];
        for (k = 0; k < 6; k++) {
            if (crnt < o1[k]) j++;
        }
        o2[i] = j;
    }

 順位づけしたら格段にスピードが落ちました。(笑)

[2344] Re^5: 順位づけのアルゴリズム

としき 2007/10/27(Sat) 21:48
[2343]へのコメント http://www.hinocatv.ne.jp/~toshiki/
>  どんな工夫をすればよいのか結局想像つきませんでしたが,awk でアレコレ

いや、そんな大層なことではなくて、単純にNR変数を使って行数をカウント
するのではなく、順位用に別途変数を設ける、というだけのことだったりし
ます。


ところで、今気がついたのですが、この個別発言表示というか記事閲覧での
表示、なんか変。どこが、というと、一番上の方の発言ヘッダの部分。

> − 野ざらし言 −
> [2335] Re^4: 順位づけのアルゴリズム - めざら 2007/10/27(Sat) 20:31
>  <mezala@nifty.com> http://homepage3.nifty.com/mezala/index.html 

「2335」ってなんですか?
って言うか、いろいろとみてみたら、どうも、ツリー表示にした時の一つ下
のツリーのルート発言の発言番号のようなんですが。なんかスクリプトを変
に書き換えてしまっていませんか?
 

[2346] Re^6: 順位づけのアルゴリズム

めざら 2007/10/27(Sat) 22:10
[2344]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/index.html
> ところで、今気がついたのですが、この個別発言表示というか記事閲覧での
> 表示、なんか変。どこが、というと、一番上の方の発言ヘッダの部分。

 あう,確かに変ですね。どれを個別表示しても,次のツリーのルート番号に
なっているようです。どこを弄ったわけでもないので…ヘッダ部分はしばらく
前まで表になっていたのを直してますが,あくまでも表示周りなので以前から
そうだったはず。

 うわー,いつからなんだろう。
 全然わかりません。…が,特に支障がないのでゆっくり考えます。

[2347] Re^7: 順位づけのアルゴリズム

としき@宿直 2007/10/28(Sun) 20:50
[2346]へのコメント http://www.hinocatv.ne.jp/~toshiki/
>  あう,確かに変ですね。どれを個別表示しても,次のツリーのルート番号に
> なっているようです。どこを弄ったわけでもないので…ヘッダ部分はしばらく
> 前まで表になっていたのを直してますが,あくまでも表示周りなので以前から
> そうだったはず。

発言番号のところで表示している変数って$v_no(だったかな?)ですよね。
これが$noを表示するようになっていると、このような表示がでる可能性が
ありそうです。
どっかで誤って代入とかしていませんか?
 

[2348] 不思議な発言番号

めざら 2007/10/29(Mon) 01:02
[2347]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/index.html
> 発言番号のところで表示している変数って$v_no(だったかな?)ですよね。
> これが$noを表示するようになっていると、このような表示がでる可能性が
> ありそうです。

 うーむ,オリジナルで「記事No」を検索してみると,$noですね。
場合によって$_が使われているところもありますが。$v_noは見つかりません。

 いや,変なのは確かなので自信ありませんが…。

[2349] Re: 不思議な発言番号

としき@宿直 2007/10/29(Mon) 03:02
[2348]へのコメント http://www.hinocatv.ne.jp/~toshiki/
>  うーむ,オリジナルで「記事No」を検索してみると,$noですね。
> 場合によって$_が使われているところもありますが。$v_noは見つかりません。

あ、そうか、ここってv4.8ベースでしたね。
私が記憶しているのは、確か、v4.7だったと思うので、それで違うかも。
というか、そもそも記憶が誤っている可能性も高い。
帰宅してから確認します。

[2350] Re: 不思議な発言番号

としき 2007/10/29(Mon) 15:31
[2348]へのコメント http://www.hinocatv.ne.jp/~toshiki/
> 場合によって$_が使われているところもありますが。$v_noは見つかりません。

あ〜、ごめんなさい。
他の項目が全て$v_がついていたので、発言番号もそうなっているとばかり思
い込んでいました。本当のオリジナルでは、そもそも、こんな変数は使って
いないのですね。
ではどうするかというと、他の項目に合わせ、発言番号も$v_noという変数に
代入してそれを表示するか、あるいは、$noのかわりに$in{'no'}を表示する
ようにすればとりあえずは解決すると思います。
とにかく、現在の記事番号表示タイミングで$noという変数を使うかぎり、次
のツリーのルート発言が表示されてしまうというのは避けられないと思いま
す。タイミングはかえられないと思いますので、ならば変数の方を変えるよ
り仕方がないでしょう。
 

[2351] Re^2: 不思議な発言番号

めざら 2007/10/30(Tue) 08:10
[2350]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/index.html
> とにかく、現在の記事番号表示タイミングで$noという変数を使うかぎり、次
> のツリーのルート発言が表示されてしまうというのは避けられないと思います。

 あー,分かりました。(^^ゞ
 8月末に発言ヘッダの表示要素を表組から通常テキストに変更したのですが,
その時に他からコピーして記事番号を入れてしまっていたのでした。

 ここで使用していたのが,$no でした。

 もともと個別の記事閲覧では発言番号は表示していませんので,ごく単純に
その部分をコメントアウトしました。発言番号はあった方が自然かと思うので
教えていただいたように別の変数を用意して表示するように直そうと思います。

 どうも有難うございました。

[2363] Re^3: 不思議な発言番号

としき 2007/11/18(Sun) 22:45
[2351]へのコメント http://www.hinocatv.ne.jp/~toshiki/
> 教えていただいたように別の変数を用意して表示するように直そうと思います。

ついでというか。
できれば、#nnnnでその番号の発言に飛んでくれるルーチンを仕込んでもらえ
るととってもありがたいのですが、ちょっと無理ですかね。基本的にここは
オリジナルから表示しか変えない方針だったかと思うけど、これを導入して
しまうと表示以外の部分が変わってしまいますからねぇ。

そういえば、OFFの幹事をやってもらえれば掲示板スクリプトの改造を請
け負う、と言ったことがあったような。夏のOFFの幹事をやってもらった
わけだから、可能な範囲で改造のお手伝いはしますよ。もちろん、いきなり
メールで現在の使用中のスクリプトを送りつけていただいてもいいけど。
 

[2364] Re^4: 不思議な発言番号

めざら 2007/11/19(Mon) 08:41
[2363]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/
> できれば、#nnnnでその番号の発言に飛んでくれるルーチンを仕込んでもらえ
> るととってもありがたいのですが、ちょっと無理ですかね。基本的にここは

 いやー,現在 VRAM の書き換えのことで頭がいっぱいなので,ちと無理かと。
板塀を見るたびに本文中の発言番号などもリンクになっているのが羨ましい。

> オリジナルから表示しか変えない方針だったかと思うけど、これを導入して
> しまうと表示以外の部分が変わってしまいますからねぇ。

 方針や主義ではなくて単にスキルの問題です。表示と言うかマークアップの
ほうは出力可能なアイテムを配置すればよいだけなので,バージョンアップが
あっても比較的楽に対応できることが分かっているのですが,スクリプト自体
を変更するのは冒険に近いですね。

> そういえば、OFFの幹事をやってもらえれば掲示板スクリプトの改造を請
> け負う、と言ったことがあったような。夏のOFFの幹事をやってもらった
> わけだから、可能な範囲で改造のお手伝いはしますよ。もちろん、いきなり
> メールで現在の使用中のスクリプトを送りつけていただいてもいいけど。

 ラッキー!幹事をやらせてもらったという自覚はないのですが,請け負って
くださるなら随意契約・即発注ということで。納期指定なしでよいのですが,
謝礼のほうはいかがしましょうか。携帯を機種変更してだぶついてしまった
miniSD カードなんていかがでしょう。うわーい。\(^_^)/

[2365] Re^5: 不思議な発言番号

としき@会社 2007/11/19(Mon) 08:54
[2364]へのコメント http://www.hinocatv.ne.jp/~toshiki/
>  いやー,現在 VRAM の書き換えのことで頭がいっぱいなので,ちと無理かと。

また新しいマクロを作ろうとされているのですね。
期待しています。

>  ラッキー!幹事をやらせてもらったという自覚はないのですが,請け負って

あれ、そうでしたっけ。
私の記憶だとめざらさんが幹事だったような気がするのですが、私の記憶も
あまりあてにならないというか、半年たっていないことも既に忘却のかなた
だったりします。

> くださるなら随意契約・即発注ということで。納期指定なしでよいのですが,
> 謝礼のほうはいかがしましょうか。携帯を機種変更してだぶついてしまった

えと、謝礼が幹事役を勤めるということで前払いしてもらったというつもり
だったのですが。なので、私はもうこれ以上不要です。
いえ、どうしてももっと払いたいということであれば、忘年会または新年会
オフの幹事役をやってもらうということで。

[2366] Re^6: 不思議な発言番号

めざら 2007/11/20(Tue) 07:33
[2365]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/
 新しいと言うか,パクリと言うか,先日ご質問のあった,キーワードを強調
表示するマクロなのですが,どんぴしゃりというわけではないものの和生さん
の bright.def(nifty:FGALDC/mes/15/12873,1999/02/17T17:15) というものが
あり,これをパクらせてもらえば可能かなと解読しているところです。


 幹事と言うか,連絡役ならいつでもやらせていただきますけどね。ただ幹事
というとどうしても,いい場所を設定する役というイメージがあって,それを
やってないですから。

 それではお言葉に甘えて,現 CGI を見てもらえたらと思います。 遅くとも
今週中にメールさせていただきますので,よろしくお願いします。

[2367] Re^7: 不思議な発言番号

としき 2007/11/20(Tue) 23:03
[2366]へのコメント http://www.hinocatv.ne.jp/~toshiki/
>  それではお言葉に甘えて,現 CGI を見てもらえたらと思います。 遅くとも
> 今週中にメールさせていただきますので,よろしくお願いします。

は〜い、お待ちしております。
受託内容としては、

・記事閲覧画面に発言番号表示追加
・#nnnnで該当記事への自動リンク

だけでよろしいですかね。
もっとも、発言番号自動リンクを過去ログ対応にするために、今ならもれな
く永続的URL対応がついてきますけど、それは構いませんよね。もちろん、
永続的URL対応は絶対いやだとおっしゃるのであれば、現在ログのみ対応
という形になります。
その他、こんなことはできないかというのがあれば今のうちにおっしゃって
ください。うちで採用している改造であれば組み込めますし、konnoさんのと
ころで採用しているアレ、なんていうのであればコードを取り寄せます。そ
れ以外の内容であっても、言うだけならタダです。

一応、納品物としては、改造済みのコードのほかに、現在使用中のコードと
の差分も添付します。これがあれば、将来のバージョンアップの際にも多少
なりとも参考にできるかと。別に、差分ファイルなんて簡単に作れるのだか
ら、めざらさんご自身で作っていただいても結構なんですが、一応、形だけ
でもサービス精神を発揮しておかなくては。
 

[2370] Re^8: 不思議な発言番号

めざら 2007/11/21(Wed) 06:36
[2367]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/
 うわー,なんか凄いですね。突如,高機能な掲示板になってしまう。(笑)

 特にアレがいやとかコレが欲しいなんてことを思わなかったので,ちょっと
考え付かないものですから,便利そうなのをあらかた付けていただければ嬉し
いです。

 よろしくお願いします。

[2371] Re^9: 不思議な発言番号

としき 2007/11/21(Wed) 10:50
[2370]へのコメント http://www.hinocatv.ne.jp/~toshiki/
> 考え付かないものですから,便利そうなのをあらかた付けていただければ嬉し

便利そうなもの、ねぇ。
例えば、ツリー表示の変造なんか、私には便利なんですけど、ちょっとここ
に導入するには躊躇してしまうわけです。なんとなくそぐわないような気が
するわけですよ。スレッド表示の新設も同じく。
うちで導入していて無害そうなものといったら、RSS配布ぐらいですか。
発言のタイムスタンプ表示は過去ログの書き換えが必要だし、個別UA対応
なんていうのも不要でしょうし。
HTTPやHTMLのヘッダ回りはちょっと眺めてみますかねぇ。
あとは、可能であれば、スパム除けのルーチンをちょこっと入れてみるくら
い、でしょうか。
 

[2372] Re^10: 不思議な発言番号

めざら 2007/11/21(Wed) 21:03
[2371]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/
> 例えば、ツリー表示の変造なんか、私には便利なんですけど、ちょっとここ
> に導入するには躊躇してしまうわけです。なんとなくそぐわないような気が
> するわけですよ。スレッド表示の新設も同じく。

 そうですねぇ,要素が変っちゃうのはちょっと困ります。スレッド表示は,
ウチでは無くちゃ困るというものでもないので必要はないように思います。

 というふうに考えていくと,発言番号の欲しいところ,本文中の発言番号へ
のリンク,くらいなのかなぁ。あまり不便に思っていないものですから,考え
付かないですね。

> あとは、可能であれば、スパム除けのルーチンをちょこっと入れてみるくら
> い、でしょうか。

 どんな感じの対策なのでしょう。効果があれば欲しいところですが,現状で
あまり困っていないものですから,奥の手にとっておいた方がいいかな。

[2373] Re^11: 不思議な発言番号

としき@宿直 2007/11/21(Wed) 22:08
[2372]へのコメント http://www.hinocatv.ne.jp/~toshiki/
>  というふうに考えていくと,発言番号の欲しいところ,本文中の発言番号へ
> のリンク,くらいなのかなぁ。あまり不便に思っていないものですから,考え
> 付かないですね。

そうですよね。
了解です。

>  どんな感じの対策なのでしょう。効果があれば欲しいところですが,現状で
> あまり困っていないものですから,奥の手にとっておいた方がいいかな。

あんまり大したことは考えていませんよ。
ちょっと投稿時の変数名をいじって、機械書き込みをはじけるようにしよう
かな、という程度のことです。

[2374] Re^7: 掲示板改造ただいま快調に進行中

としき 2007/11/24(Sat) 12:50
[2366]へのコメント http://www.hinocatv.ne.jp/~toshiki/
>  それではお言葉に甘えて,現 CGI を見てもらえたらと思います。 遅くとも
> 今週中にメールさせていただきますので,よろしくお願いします。

受け取りました。
改造は現在快調に進行中!

今までに組み込んだのは以下の通り。

・HTTPヘッダでログ最終更新時明示
・HTMLヘッダでfavicon設定
・記事閲覧画面での発言番号表示
・永続的URL対応
・#nnnでの発言番号自動リンク

ここまでは、新規開発というわけではなく、うちのところですでに動いてい
る既存のルーチンをどう組み合わせるかというだけですから、そんなに手間
のかかるものでもありません。

以下、掲示板オーナーに判断を仰ぎたい部分が2点。
1点目は、RSS表示を組み込むかどうしようか、ということ。
うちの板塀では、最近はRSSにCSSまでくっつけて、FireFoxなんかで表
示した場合にはそれなりの見栄えも確保できるようになりましたが、必要性
はやはり掲示板オーナーに判断してもらいたいかな、と。

2点目は、過去ログ対応の部分。
小項目の1点目として、#651で私が触れている部分、ええっと、過去ログ送
りになっているので

/mezala/noz/wforum.cgi?mode=allread&no=648&pastlog=0001&act=past

を参照していただきたいのですが、ツリー一括表示の際のID指定で、オリ
ジナルでは半角「N」が付いていないのを、めざらさんご自身が、現在ログ表
示時だけつけるように改造した部分。ここを、過去ログと現在ログの統一を
図ろうとしているのですが、「N」付で統一するべきか、それとも「N」なし
で統一するべきか。統一さえされていればどちらでもいいのですが。なるべ
くオリジナルに近い方が、ということであれば「N」なしにしますけど、めざ
らさん自身が改造されたという事は何か目的があって改造されたのだろうし、
でも、その目的がさっぱりわからないというのもあって。例えば、id指定時
は数字のみではダメ、みたいなことってあるんでしょうか。
小項目の2点目は、同じツリーの中で議論されている、「▼」の件。
こちらもどうしましょうか。

ということで、以上、よろしくお願いします。
 

[2375] Re^8: 掲示板改造ただいま快調に進行中

めざら 2007/11/24(Sat) 20:54
[2374]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/
> 1点目は、RSS表示を組み込むかどうしようか、ということ。

 うーん,自分自身が RSS を理解していないということもありますが, うち
はコメント形式の掲示板なので,RSS を発行する必要性は感じません。

> 2点目は、過去ログ対応の部分。

> id指定時は数字のみではダメ、みたいなことってあるんでしょうか。

 そうなんです。 id 属性の書式としては最初の1文字は英字でなければなら
ず,数字から始まってはならないと決められています。それで無理してアルフ
ァベットを付けたんですね。そんなわけで1文字目のアルファベットは絶対に
必要です。

> 小項目の2点目は、同じツリーの中で議論されている、「▼」の件。

 これは自分でもぜひやらなくちゃと思っていたのですが,それなりに運用さ
せてしまうとなかなか手が付かなくて。でも,これって現行ログと同様に扱う
のはなかなか難しかったような気がするのですよね。多分ストリクトに出来な
くて半ば諦めちゃったのではなかったかなぁ。

 そんなわけで,
・RSS は不要
・id属性の1文字目のアルファベットは絶対必要
・スレッド先頭の「▼」印はうまく表示できれば万万歳
…というったところです。

 よろしくお願いします。

[2376] Re^9: 掲示板改造ただいま快調に進行中

としき 2007/11/25(Sun) 01:00
[2375]へのコメント http://www.hinocatv.ne.jp/~toshiki/
ということで、RSSなしで「N」つきの過去ログ対応ルーチンを組み込んで
みました。
が、まだ、組み込んだだけ。
細かい調整はおろか、デバッグすら済んでいない。
試験実行してみたら、見事にperlがエラーを吐いてくれた。
とりあえず、バグ取りします。
その後に、過去ログの▼マーク付近のタグとかをできるだけ文法にあった形
に調整する作業を行って、今回のお仕事は終了となる予定。が、その細かい
調整が思いのほか難航するかも。だって、どんなタグを吐き出すか、私にも
予想がつかない状況なんだから。

今夜はもう寝ます。
明日、というかもう今日か、通常の日勤なんで、帰宅してから続きにチャレ
ンジします。
 

[2377] Re^10: 掲示板改造とりあえず完成?

としき 2007/11/25(Sun) 22:26
[2376]へのコメント http://www.hinocatv.ne.jp/~toshiki/
えぇっと、多分うまく行っていると思います。
うちの板塀のログを使ったサンプルを以下のところに置いておきます。

hpcgi3.nifty.com/~toshiki/noz/wforum.cgi

一応、#nnnで過去ログ0001にはきちんとジャンプする事を確認できたけど、
過去ログ0002以降にもきちんとジャンプするかは不明。なにせ、うちの板塀
ですら実験できていないのだから。一応、それなりにロジックには自信があ
るのだけど、もし本番環境でうまく行かなかったらまたすぐ手直しする、と
いう事で許してください。

一応、チェックしてもらいたい点。

・favicon設定
・現行ログの記事閲覧画面での発言番号表示
・#nnnでの発言番号自動リンク(過去ログ対応)
・過去ログでの個別発言へのジャンプ(「N」つき対応)
・過去ログでの「▼」

そうですねぇ、過去ログのところに限って言えば、
 /~toshiki/noz/wforum.cgi?mode=allread&no=986
あたりのところでいろいろと実験してもらえると嬉しいかも。

ところで、過去ログをAnother HTML-lintでチェックしていて気が付いたこと
があります。
過去ログの同一のツリーでは同一の階層のコメントの時、「Re」を使ってい
ると同一のタイトルになることがあります。ところが、リンク先はそれぞれ
個別の発言番号を指すわけです。すなわち、同一のアンカーに対して別々の
リンク先を指しているといって、Another HTML-lintは文句を言ってくるわけ
です。まぁ、確かに、これは推奨されることではありませんけどね。
これを解決するためには、うちの板塀のように、リンクのアンカーにそれぞ
れの発言番号を含めてしまう、という手があります。こうすれば、発言番号
は一意に定まりますから、決して同一のアンカーは発生しないわけです。
あ、ちなみに、私が自分のところをそうしているのは決して文法的な正しさ
を狙ったわけではありません。単に発言番号が行頭に近い方が私のセンスに
あっているという事であのようにしているだけで、副作用として文法違反が
少なくなってしまっているわけです。

ということで、この点についてはどうしましょう。
御依頼があれば私の方で直しても良いですが、単に表示にかかわるだけの部
分なので、あとでめざらさんご自身で納得のゆくように直されるほうがいい
ような気もしますし。

今後の予定。
数日間寝かせて熟成させて、その間に特にバグ等に気がつかなければ、今週
の水曜日か木曜日にも発送したいと思います。
 

[2378] Re^11: 掲示板改造とりあえず完成?

めざら 2007/11/26(Mon) 08:41
[2377]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/
> えぇっと、多分うまく行っていると思います。

 どうも有難うございます。サンプルを拝見しに行こうと思ったときに,ニフ
ティのサーバー上にあると思わず, やしきの末尾に noz 以下を書き込んでし
まって,「お客様がおかけになった電話番号は、現在使われておりません。」。

 いろいろ試行錯誤しているうちに「あれ? hpcgi3??」ですと?
 自分の早とちりに笑いました。

 テスト板で過去ログ番号を記入させてもらって,ジャンプできることを確認
させていただきました。いや,ほんと素晴らしいです。\(^_^)/

 チェック点に挙げられているところは一通り見させていただきました。
 いずれも,あら捜しに血道を上げてみたいくらい完璧のようです。

> ところで、過去ログをAnother HTML-lintでチェックしていて気が付いたこと

 そうなんですね。その点はわたしも初期から気付いてはいましたが,末尾の
番号をリンクにすればいいけれど格好悪いし…ということで見送っていたのを
思い出しました。

 なるほど,位置を変えて含めてしまえばよいのですね。板塀を改めて眺めて
見ると確かにそうなっているのに,あんまり自然で気付きませんでした。(笑)

 やってみていただくと色々と改善点が見えてくるものだなぁ…と再認識した
ところですが,実は自分でやる気力がなかったりします。えーと,まるっきり
丸投げのようで申し訳ないのですが,番号を移動してリンクに含めてしまうと
いう改造もお願いしてよろしいでしょうか。

 自分で改善しようとする気力を持たない者に奉仕するなんてことをお願いす
るなんて,なんて虫がよい考えだろうと思いますが,こういうことはマクロの
方でお手伝いすることができれば,そのときにお返しするということでいかが
でしょうか。

 あつかましいとは存じますが,なにとぞよろしくお願いします。

[2379] Re^12: 掲示板改造とりあえず完成?

としき 2007/11/27(Tue) 00:52
[2378]へのコメント http://www.hinocatv.ne.jp/~toshiki/
> まって,「お客様がおかけになった電話番号は、現在使われておりません。」。

いやぁ、絶対にコピペでURLを入力すると思っておりましたもので。
まさか、手入力されるとは予想しておりませんでした。

>  テスト板で過去ログ番号を記入させてもらって,ジャンプできることを確認
> させていただきました。いや,ほんと素晴らしいです。\(^_^)/

そう言っていただけるとありがたいです。

> 丸投げのようで申し訳ないのですが,番号を移動してリンクに含めてしまうと
> いう改造もお願いしてよろしいでしょうか。

全然構いません。
早速そのようにしておきました。
同じURLですので、もう一度ご確認下さい。
表示だけですので、見ておかしくなければOKという事で。

もしまだなにか御要望があれば、今のうちにどしどしどうぞ。仕様の追加が
あっても、納期が延びるだけで新たな費用負担は発生しませんから。
一応、私が直接受託しているのはめざらさんからだけですが、その他の方で
も、うまくめざらさんを丸め込めれば御要望はお受けできると思いますので、
やっぱり今のうちに、めざらさんにGO!
 

[2380] Re^13: 掲示板改造とりあえず完成?

めざら 2007/11/27(Tue) 22:55
[2379]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/
 番号を先頭に移動してリンク文字列に含むという件,確認させていただきま
した。「どしどし」と言ってくださるのに甘えて,限りなくあつかましくなっ
てゆく自分が空恐ろしいのですが,おついでにですね(^_^;, ▼を押して一覧
表示にしたときのツリーも同様の表示にしていただけるとありがたいのです。
そうすると統一が取れるんですね。

 一方,「返信」ボタンを押した時の閲覧画面で,「関連記事一覧ツリー」が
あるのですが,こちらは現在閲覧中の記事番号が強調されるようになっている
ので,同じ様にはいかないなと思っています。こちらはよい対応案を思い付か
ないのですが,後でなにかしら思い付いたときに対応できるように,こちらの
ツリーも同様の表示にしていただけるでしょうか。

 うーん,厚かましさ全開となっておりますが,なにとぞご容赦くださいませ。

[2381] Re^14: 掲示板改造とりあえず完成?

としき@宿直 2007/11/27(Tue) 23:45
[2380]へのコメント http://www.hinocatv.ne.jp/~toshiki/
> てゆく自分が空恐ろしいのですが,おついでにですね(^_^;, ▼を押して一覧
> 表示にしたときのツリーも同様の表示にしていただけるとありがたいのです。
> そうすると統一が取れるんですね。

> ないのですが,後でなにかしら思い付いたときに対応できるように,こちらの
> ツリーも同様の表示にしていただけるでしょうか。

以上2点、了解しました。
今夜は宿直なんで、帰宅してからやってみます。
これに伴い、納期は来週日曜日とさせてください。
もちろん、もっとご要望があればそれも受けられるとおもいますよ。

[2382] Re^14: 掲示板改造とりあえず完成?

としき 2007/11/28(Wed) 19:16
[2380]へのコメント http://www.hinocatv.ne.jp/~toshiki/
とりあえず作ってみました。
▼押下時の一括表示の方は特に何ということもないと思います。
記事閲覧時のツリーの方は、うちの板塀でも発言番号を尻尾に回したままに
なっているくらいで、どうしようかと思ったのですが、ま、こんな感じかな、
ということで。番号だけ強調、という方がいいですかね。

ちなみに、ゼロパディング時の数値解析はスクリプトでは行っていないはず。
perlの機能でやっているので、今後、例えばperlがバージョンアップするこ
とによって、うまく機能しなくなる可能性はありますが、いくらなんでもこ
んな基本的なところに変更は加わらないでしょう。
存在しない発言番号へのジャンプ時の挙動は、この機能を発案されたあじゃ
さんのオリジナルバージョンで私が最も不満に思っていた部分ですが、その
割には大したことがないので、改善してこの程度か、と笑われてしまいそう
です。ちなみに、あじゃさんバージョンでは、全く何にも表示されない真っ
白な画面になってしまいます。分母がほぼゼロですから、分子がわずかでも、
改善率としたら無限大に近いのでしょうけど。
もし、戻るボタンだのモロモロなリンクの表示が必要などという事があれば、
今のうちにおっしゃって下さい。
 

[2383] Re^15: 掲示板改造とりあえず完成?

めざら 2007/11/28(Wed) 21:22
[2382]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/
 ありがとうございます。記事閲覧画面でのリンク文字列を強調していただい
たのですね。 十分かとは思いますが,後で手元の CSS を少し弄って工夫して
みたいと思います。番号だけ強調よりも全部強調してしまった方がずっとよい
ですね。

> ちなみに、ゼロパディング時の数値解析はスクリプトでは行っていないはず。

 あら。そうなのですか。 まぁ,VZ でも文字列を数値として認識させるとい
うことも日常茶飯の事ですから Perl にとってはお茶の子なんでしょうね。

 存在しない発言番号を渡したときの挙動は十分親切だと思います。ユーザー
は戻るだけのことですし,空白ページや唐突な処理が行われるよりもはるかに
良いと思います。

 これだけ拡張しておいていただければ,わたしは表示調整をするだけなので
すが,それもなかなか楽しみになってきました。機能そのものは自分では拡張
できませんが,表示上の工夫の余地があれば是非手をつけてみたいですね。

 本当にありがとうございました。感謝感謝です。

↑ このページの先頭