[リストへもどる]

一括表示

▼ 板塀新機能 - としき@家主 2006/10/14 23:33 No.772
  ┣板塀新機能構想 - としき@家主 2006/10/17 17:55 No.773
  ┃┣板塀新機能妄想 - としき@家主 2006/11/04 15:06 No.780
  ┃┃┣Re: 板塀新機能妄想 - めざら 2006/11/05 10:21 No.781
  ┃┃┃┣Re^2: 板塀新機能妄想 - としき@家主 2006/11/05 11:53 No.782
  ┃┃┃┗Re^2: 板塀新機能妄想 - としき@家主 2007/02/16 13:25 No.889
  ┃┃┣Re: 板塀新機能妄想 - としき@家主 2007/02/04 14:36 No.883
  ┃┃┗Re: 板塀新機能も「うっそ〜?」 - としき@家主 2007/05/05 17:13 No.930
  ┃┗Re: 板塀新機能構想 - としき@家主 2007/01/18 23:22 No.880
  ┣Re: 板塀新機能 - としき@家主 2006/12/11 15:52 No.787
  ┃┣Re^2: 板塀新機能 - 文太 2006/12/12 23:59 No.788
  ┃┃┣Re^3: 板塀新機能 - めざら 2006/12/13 00:23 No.790
  ┃┃┃┗Re^4: 板塀新機能 - 文太 2006/12/13 13:21 No.791
  ┃┃┗Re^3: 板塀新機能 - としき@家主 2006/12/14 01:59 No.800
  ┃┃ ┣Re^4: 板塀新機能 - めざら 2006/12/14 08:38 No.802
  ┃┃ ┃┗Re^5: 板塀新機能 - としき@家主 2006/12/14 22:04 No.805
  ┃┃ ┗Re^4: 板塀新機能 - としき@家主 2006/12/17 18:42 No.808
  ┃┃  ┣Re^5: 板塀新機能 - めざら 2006/12/17 20:32 No.809
  ┃┃  ┃┗Re^6: 板塀新機能 - としき@家主 2006/12/17 21:16 No.810
  ┃┃  ┣Re^5: 板塀新機能 - としき@家主 2006/12/18 21:37 No.811
  ┃┃  ┗Re^5: 板塀新機能 - としき@家主 2006/12/23 10:32 No.812
  ┃┃   ┗Re^6: 板塀新機能 - めざら 2006/12/23 22:57 No.813
  ┃┃    ┗Re^7: 板塀新機能 - としき@家主 2006/12/24 16:44 No.814
  ┃┃     ┗Re^8: 板塀新機能 - めざら 2006/12/25 10:09 No.815
  ┃┃      ┗Re^9: 板塀新機能 - としき@家主 2006/12/25 14:46 No.816
  ┃┃       ┗Re^10: 板塀新機能 - としき@家主 2006/12/25 19:39 No.817
  ┃┗Re^2: 板塀新機能 - めざら 2006/12/13 00:21 No.789
  ┣Re: 板塀新機能 - としき@家主 2007/06/27 12:19 No.971
  ┃┗Re^2: 板塀新機能 - めざら 2007/06/28 20:21 No.972
  ┃ ┗Re^3: 板塀新機能 - としき@家主 2007/06/28 22:23 No.973
  ┃  ┗Re^4: 板塀新機能 - めざら 2007/06/30 07:41 No.975
  ┃   ┗Re^5: 板塀新機能 - としき@家主 2007/06/30 11:02 No.976
  ┃    ┗Re^6: 板塀新機能 - めざら 2007/06/30 11:28 No.977
  ┃     ┗Re^7: 板塀新機能 - としき@家主 2007/06/30 12:44 No.978
  ┃      ┗Re^8: 板塀新機能 - めざら 2007/07/02 10:08 No.979
  ┃       ┗Re^9: 板塀新機能 - としき@家主 2007/07/02 10:37 No.980
  ┗Re: 板塀新機能 - としき@家主 2007/10/09 20:08 No.1053
タイトル板塀新機能
記事No772
投稿日: 2006/10/14(Sat) 23:33
投稿者としき@家主
参照先http://www.hinocatv.ne.jp/~toshiki/
私はこの掲示板を、かつてのTTY時代のニフティのフォーラムの電子会議室の
ように運用しようと思っております。もっと具体的に言うと、いわゆる各フォー
ラムの「壁会議室」のイメージですね。ほとんどフリートークなんだけど、たま
にそうではないこともある、まさに落書き用。一部フォーラムでは「堀」とかっ
て名称だったりしたようですが、堀には落書きはできません。
このような考えに基づいて、ここで使っているWebForumというスクリプトを拡張
してきました。例えばツリー表示とか、ニフティの会議室でのrmnコマンドもどき
であるスレッド一覧表示とか。

さて、当時のニフティでは、例えば発言番号nn番の発言を指定するのに「#nn」と
いう表記を使っていました。ある一つの発言は最大でもどれか一つの発言のコメ
ントにしかなれなかったため、複数の発言を参照したり引用したりする場合に、
特にこの表記が効果的でした。
現在のWEBでは好きなようにリンクを張れるため、このような表記でなければ
ならないという必然性はありません。ただ、素直にURLを書くと長くなるので、
URLではなく発言番号で個別の発言を特定することにメリットが全くないわけ
ではありません。

かつて、あじゃ氏は、WebForumでこのような記述をした場合に、それをその発言
にジャンプするリンク文字列にするという改造を実装したことがあります。ただ、
これ、いかんせん不完全なものだったのですね。一番大きな欠陥は、WebForumの
標準機能である過去ログ機能を全くサポートしておらず、過去ログ送りになった
発言に対してリンクすることができないこと。にもかかわらず、逆に過去ログ送
りになった発言で他の発言を指定する記述があった場合、確かこれは自動的に、
リンクできないリンクを作り上げるような構造になっていたように記憶していま
す。ただ、この部分に関しては、氏の作成したシステムに対する理解が足りない
ので間違っているかもしれません。
もう一つ些細な欠点がありました。それは、表示されるのが、純粋にその指定さ
れた発言のみである、ということ。具体的には、現在のこの板塀で言うところの
「新着記事」に似た体裁なのですが、返信欄もなければ返信用のボタンもない、
というもの。「関連記事」のリンクはあるので、それをクリックすれば他の場面
で「関連記事」をクリックしたときと同じようにツリー一括表示がなされるので
すが、ちょっと不便。
さらに、実用上は全く問題のない点ではあるのですが、存在しない発言を指定し
た場合、例えば現在1000発言しかない状況で2000番を指定したような場合、画面
に表示されるのが意味不明な内容になってしまっています。これはもっとタコな
システムだとハングアップしてしまうような場合もあるわけですから、それに比
べればはるかにましですが。それに、ブラウザの「戻る」ボタンで戻れますし。
単にこれは仕様の考慮もれに過ぎないのでしょう。


今回、この板塀に、この形式の発言番号指定リンク機能を導入してみました。
上記の、私の気がついた欠陥に関しては回避するように努力しています。
過去ログ機能って基本的にツリー一括表示しかないわけで、過去ログとそれ以外
でルーチンを分けるのも面倒ですから、全ての場合においてツリー一括表示にな
るようにしてみました。過去ログでない場合は当然、返信ボタンを押せば、通常
の返信欄が表示されるようになっています。ただ、この板塀はまだ過去ログ機能
を使用していないので、過去ログ送りになった場合に、果たして本当にきちんと
機能するかは不明です。
存在しない発言を指定した場合も、少なくともその旨表示するようにはしました。
例えば、こんな感じですね。

  #15  #150  #15000

本当はもっと丁寧な表示にしたり、あるいは戻るボタンをつけたり、ということ
も可能なのですが、家主がそこまでを必要と感じなかったということもあって、
素直に手を抜いてあります。

もし、おかしな表示になるとか、あるいはここはこうしたほうが良いというよう
なご意見がございましたら、遠慮なくお寄せくださると幸いです。もちろん、家
主の能力的な、またはその他の理由で、それらを実現できるとは限りませんが。

このスクリプトのコードについては、例によって、数ヶ月以内には板塀の手入れ
のページ(http://www.hinocatv.ne.jp/~toshiki/computer/itabei/)に掲載いた
します。もしそれ以前に自分の掲示板に導入してみたいなどの理由で緊急にコー
ドが必要でしたらご連絡ください。
 

タイトル板塀新機能構想
記事No773
投稿日: 2006/10/17(Tue) 17:55
投稿者としき@家主
参照先http://www.hinocatv.ne.jp/~toshiki/
レス元772
> 私はこの掲示板を、かつてのTTY時代のニフティのフォーラムの電子会議室の
> ように運用しようと思っております。

と思いつつも、最近の流行を追いかけたいという気持ちもちょっとだけあったり
なんかして。すなわち、板塀の「ブログもどき」化です。その第一歩として、か
つて永続的URL対応やらトラックバック受信対応なんていうものを提案してみ
たこともあります。ただ、これのためにはドメイン取得などが必要であり、自宅
サーバでちまちまと運用しているような人間にとってはちょっとだけ敷居が高い
のでペンディング。ニフティのCGIサーバなんかに移転すればすぐに解決する
問題なんですけどね。

より一層の「ブログもどき」化を推し進めるにあたって検討してみたのが、新着
情報のサマリーのRSSによる提供。これ、ほとんどのブログはもとより、大手
掲示板サイトであるteacupでも提供されています。噂によると、msnだかどこだか
の検索エンジンでは、検索結果のサマリーが提供されているようなのですが、こ
れはどういった使い道があるんだろう。

もともとこの掲示板では、新着記事を表示する機能があります。また、日本では
INCMといった掲示板閲覧ツールがある程度普及しており、これ用の改造を行って
も新着情報の提供機能が強化されます。が、あえてRSSを用いる理由というと、
やはりこれは、世界的に広く普及している、ということ。

ただ、この機能の実装にあたって考慮しなくてはならない、仕様上の重要な問題
が一つあります。それは、単に発言の新しい順にサマリーを提供すればよいのか、
ということ。実際、teacupはこの方式ですよね。
でも、多くのブログでは、仮にブログをブロガー自身の記事をルートとするツリ
ー式掲示板と見たてた場合、ルートの発言のみサマリーが提供される形になって
いるわけです。そして、ここはツリー形式の掲示板なので、多くのブログと同じ
く、ルートの発言のみサマリーを提供するという方法もありうるわけです。そし
て、この方式を採用しているツリー形式の掲示板も実際に存在しています。

ただ、一般的なブログとこの掲示板とで大きな違いがいくつかあります。最も大
きな違いは、ルートの発言は必ずしも掲示板管理者ではないことがありうる、と
いうもの。また、多くのブログでは、ブロガー自身の記事は日付順に並ぶため、
必然的にサマリーも日付順に並びます。しかし、この掲示板では、ツリーに新規
発言があるとそのツリーがトップになるように設定してあるため、仮にルートの
記事を並べても日付順にはならない、という違いもあります。もっとも、こちら
は単に設定の問題ですから、設定を変えるという選択肢もあるのですが。


ここまででウダウダと仕様の検討を行ってきていますが、では実装にあたっての
難しさはどうなんだというと、これは実は大したことはないと思っております。
発言の新しい順にするのであれば既存の新着記事のルーチンを書き換えるだけだ
し、ルートの発言のみサマリーを提供するのであればスレッド一覧のルーチンを
改造すれば何とかなると踏んでいます。そして、例えばwforum.cgi?mode=rdfなん
て形で呼び出されたらRSSの形式に則った応答を返してやればよし。まぁ、そ
のルーチンの中では、もしかしてログを2回読まないといけないかもしれません
が、そんな事は大した問題ではありません。あとは、しかるべき部分のHTML
ヘッダに必要な記述を追加してやればOK。

ところが、いろいろと実験しているうち、うちのサーバにとっては大きな問題を
発見してしまいました。一部のRSSリーダーでは、定期的にサマリーを再読み
込みするのです。WEBブラウザのFireFoxの場合、ブックマークにRSSを登録
すると、なんとデフォルトでは1時間に1回、再読み込みが行われるのです。過
去のサーバのログ解析より、ここの掲示板のサマリーをブラウザなどのツールに
登録するような人、いわゆる常連さんは大体5人くらいかな、と予想されます。
その5人が常にブラウザを立ち上げておくわけではないでしょうし、時間帯も人
によって昼だったり夜だったりするので、予想されるサマリーへのアクセス量は
1日平均すると1時間あたり約2回。この程度であれば、いかにうちのサーバが
貧弱といえど、アクセス集中による過負荷で落ちる、などというような恥ずかし
いことは起きません。では、何が問題かというと、うちのサーバへのアクセスは、
現状では1日平均で1時間に1回程度。これに1時間あたり2回のアクセスが上
乗せされると、サーバのアクセスログが3倍に肥大化する!(爆)

いや、まぁ、別にいいんですがね。
でも、常連さんが増えれば増えるほどサマリーへのアクセス比率は増えるはずだ
し、サマリーへのアクセスが気にならないほど一見さんを増やすのは非現実的だ
と思われるわけです。という事は、サマリーを提供しているサイトはどこもその
ような状況になっていると想定されるわけです。

これがWeb2.0の現実なのでしょうか。う〜む、当面悩んでみます。
 

タイトル板塀新機能妄想
記事No780
投稿日: 2006/11/04(Sat) 15:06
投稿者としき@家主
参照先http://www.hinocatv.ne.jp/~toshiki/
レス元773
遠い将来の課題というか、実現させるかどうかも固まっていないのですが、この
掲示板でのサービスとして、コメント通知メールというものを考えております。
要は、コメントがついたらそれをメールで通知するという、そのまんまのものな
のですが。幸いというか、投稿時の入力欄として、メールアドレスの欄も用意し
てあります。もちろん、アドレス非表示という指定であっても、入力さえしてお
いてもらえればメール通知できるようにするつもりです。

実現するにあたり、私が問題点だと思っているのが、掲示板への投稿時にいいか
げんなアドレスを登録されてしまった場合。もしその投稿に対して多数のコメン
トがつくと、そのアドレスに対して多数のメールが飛んでいってしまうのです。
タイトルは「コメントがつきました」くらいにするつもりだし、内容もその程度
のものにするでしょうから、いわゆる広告メールのような使い方はできませんが、
発信者名は私の名前になりますから、ただでさえあまりいい評判のない私の信用
をますます失墜させるには十分です。
この問題点を解決するために、メールアドレスを事前登録制にすることを考えま
した。が、事前登録にしても、そこでいいかげんなアドレスを登録されてしまっ
ては同じです。何かよい方法はないかと考えておりました。そして、やっと最近、
解決策の1つを知ることができました。

実は最近、私自身が某所のメールサービスを受けることになりました。
そこでやはり、アドレスの事前登録制を取っていたのです。
方法は実に巧妙というか、わかってしまえば「な〜んだ!」という感じなのです
が、それに気づけなかったということで、私自身、やはり頭が固くなっていたよ
うです。

具体的には、以下のようなものです。
(1)WEB上のアドレス登録ページでアドレスを仮登録する
(2)仮登録されたアドレスにパスワードメールを送信
(3)アドレス登録ページで、送られてきたパスワードを使って本登録する

このようにすると、1つの仮登録アドレスには1回しかメールが送信されません
し、同一のアドレスに対して重複して仮登録できないようにしておけば、ひとつ
のアドレスに何回もメールが飛んでしまうということは避けられます。
もし誰かがいたずらとか間違いでアドレスを登録したとしても、存在しないアド
レスであれば私のところにリターンメールが返ってくるだけです。存在するアド
レスであっても、1回しか送られないわけですし、文面に気をつければ、それ程
迷惑をかけずに済むのではないかと考えております。

掲示板の側では、コメント元のアドレスが登録済みであればそのアドレスにメー
ルを送るという処理を追加する必要があります。ただ、この掲示板システム、な
かなかの優れもので、だから使わせていただいているのですが、オリジナルとい
うか、私が入手した生のままで既に掲示板管理人にメールを送るというルーチン
がありますので、それにちょっと手を加えれば割と簡単に実装できるのではない
かと踏んでおります。
あとは、登録アドレスの削除についてはどうするかなぁ。


ということで、もろもろの処理に目処がついたら、近日中に大々的にメールアド
レスの登録受付を開始するかもしれません。その際には、できれば皆さんにもア
ドレスの登録を行っていただければ幸いです。もっとも、これがいつ実現するか
は不確かというか、永遠に実現しない可能性も高いわけですが。
#だから妄想なんだってば
  

タイトルRe: 板塀新機能妄想
記事No781
投稿日: 2006/11/05(Sun) 10:21
投稿者めざら
参照先http://homepage3.nifty.com/mezala/
レス元780
 「コメントが付きましたメール」は嬉しい機能ですよね。
旧ニフティではこの機能があったので,コメントを付けてくれた人に
失礼になるほど返答が遅れるということも回避できたように思います。
特に終焉近くでは,自分のアクセスそのものも減っていましたから。

 ということで,期待しております。

 残念なのは,自分とこで sendmail が使えないこと。
nifty の特殊な cgi ディレクトリの扱いも困ったものですが,
こういった細かなサービスも制限されているので
レンタルサーバーに流れる人が多いのですよね。

タイトルRe^2: 板塀新機能妄想
記事No782
投稿日: 2006/11/05(Sun) 11:53
投稿者としき@家主
参照先http://www.hinocatv.ne.jp/~toshiki/
レス元781
> 旧ニフティではこの機能があったので,コメントを付けてくれた人に
> 失礼になるほど返答が遅れるということも回避できたように思います。

某フォーラムでは、フォーラムとして推奨していたというべきか、フォーラムの
オープニングメッセージにこの機能の紹介が出てました。サブフォーラムをいく
つか持っているような大きなフォーラムでしたが、確かに私がアクセスした時代
には閑古鳥系のフォーラムになっていましたね。
そういうフォーラムがある、というようなことを別のフォーラムで話題に出した
ら、こちらはシスオペさんが割としばしば顔を出しているところで、シスオペさ
ん直々に、うちはフォーラムとしては推奨しない、みたいなコメントをもらった
ことがありました。とは言いつつ、でも便利だよ、みたいな事も言ってたけど。

>  ということで,期待しております。

う〜ん、アカウントというか、アドレス登録のスクリプトをどうしようかな。
登録されているものの削除はスクリプトでできた方が便利かな。あ、勝手に削除
されると困るかもしれないから、やはり管理者が手作業で削除の方がいいかも。
その他、修正なども当面は全て手作業で十分かな。そんなにお客さんも多いとは
思えないし。
KENTさんのところをちょっと見た範囲では、そのものズバリのスクリプトってな
かったな。削除ルーチンを組み込まないのであれば、自分で作ってもたかが知れ
ているけど。
データ形式は、1行1アドレスの単純リスト。
コメントがついたら、親発言の投稿者のアドレスがこっちのリストに掲載されて
いるかチェックして、掲載されていればメール送信。うん、簡単とは言わないも
のの、極端に複雑ではないな。

>  残念なのは,自分とこで sendmail が使えないこと。

これはねぇ、やっぱり悪用されてスパムの発射台になってしまうと恐いですから。
うちとこの地主のケーブルテレビ屋なんて、CGI用のサーバすら、立てる立て
るといいながら一向に立ち上がってこないくらいだし。まぁ、管理するスキルも
なしに立ち上げて世間様に害悪をまき散らすくらいなら、いっその事立ち上げな
いというのも立派な選択肢ではあるのですが、でも、プロバイダのくせにそんな
事もできないのか、という感じで、技術力は決して立派なものではないというの
がバレてしまうというのがちょっと悲しい。
 

タイトルRe^2: 板塀新機能妄想
記事No889
投稿日: 2007/02/16(Fri) 13:25
投稿者としき@家主
参照先http://www.hinocatv.ne.jp/~toshiki/
レス元781
>  残念なのは,自分とこで sendmail が使えないこと。

ちょっと調べてみたら、sendmailの使えないhpcgi上でも、掲示板のオーナーへの
発言通知メールはちょっと工夫すればなんとかなるようです。
でも、任意のアドレス宛のコメント通知メールは、無理に無茶を重ねればもしか
したらなんとかなるかもしれない(ならない可能性大)が、仮に何とかなったと
しても、セキュリティの問題はあるは使い勝手は悪いは、というような状況にな
りそうだということがわかりました。

ということで、どうしてもsendmailを使いたければ、どこぞのレンタルサーバな
り自宅サーバに移行する必要がある、というのが現実的な答かと。
 

タイトルRe: 板塀新機能妄想
記事No883
投稿日: 2007/02/04(Sun) 14:36
投稿者としき@家主
参照先http://www.hinocatv.ne.jp/~toshiki/
レス元780
> 遠い将来の課題というか、実現させるかどうかも固まっていないのですが、この
> 掲示板でのサービスとして、コメント通知メールというものを考えております。

近々にこのサービスを導入するというわけでもないのですが。
メールアドレス関係をチェックしていて気が付いてしまった事があります。
私は書き換えた記憶がない部分なのでたぶんデフォルトでそうなっていると思う
のですが、ここで使っているWebForumというスクリプト、メールアドレスの登録
を必須とするオプションを管理者が設定しておくとアドレスの正当性をある程度
チェックしてくれるのですが、アドレス登録を任意と指定すると、全然チェック
してくれないのですね。でもって、この掲示板、アドレス登録は任意と指定して
あります。
さすがにこれはマズイだろうという事で、簡単なチェックルーチンを追加してみ
ました。従来通り、メールアドレスの欄が空白であっても発言を受け付けますが、
なにかを記入した場合で、だけどそれがあからさまにメールアドレスの体を成し
ていない場合はハネるようにしたつもりです。

もし、正しいメールアドレスを入力したにもかかわらず、メールアドレスが不正
というようなエラーメッセージが出てきたら、とりあえずはアドレス欄を空白に
してみて下さい。また、併せて、私宛に何らかの手段でご連絡いただけると幸い
です。
 

タイトルRe: 板塀新機能も「うっそ〜?」
記事No930
投稿日: 2007/05/05(Sat) 17:13
投稿者としき@家主
参照先http://www.hinocatv.ne.jp/~toshiki/
レス元780
コソコソ...

WebForumそのものに具備する機能としては、レスがついたら、レス元の発言のメ
ールアドレスにメールを飛ばす、というのが一番基本。ただし、自己レスという
か、新しく付いたレスに記載してあるメールアドレスとレス元のアドレスが同一
であればメールは飛ばさない、つもり。ということは、実装時に自分で試験して
みようと思ったら、新しくつけるレスの方はわざとアドレスを変えるとか空欄に
しておいて、あとから修正機能を使って正しいメールアドレスにすればよし、と。

あとは、メールアドレス登録制にするのなら、レス元のアドレスが登録リストに
掲載されているかどうかのチェックを入れるだけ。
う、こう書くと、工数的には大したことはなさそうな気になってしまう。

とりあえず、探さないでください。
#探すまでもなく、私は自宅にいますけど。



いや、何をこそこそしているかというと、このゴールデンウィーク、どこへ行く
という事もなく仕事をしているわけですよ。うちの会社は工場が閉まるとかいう
事もないんで、4月28〜29日が宿直、5月1〜2日が普通に日勤、4〜5日
もまた宿直。他の日は休みですが、全然連休になっていないわけなんですね。
日帰りでどっかに遊びに行ってもいいのですが、どうせ道路も混んでいるだろう
という事で家でごろごろしていたいのですが、こう好天が続くと、なんか追い立
てられるような気分になってしまうわけです。
あ〜、この連休中、私が休みの日が全て雨だったら、かなり充実したものになっ
ただろうなぁ。あ、いや、充実して休みが取れるというか密度の濃いゴロ寝がで
きるというか、まぁそういった意味で。
 

タイトルRe: 板塀新機能構想
記事No880
投稿日: 2007/01/18(Thu) 23:22
投稿者としき@家主
参照先http://www.hinocatv.ne.jp/~toshiki/
レス元773
> これがWeb2.0の現実なのでしょうか。う〜む、当面悩んでみます。

悩み終わったわけでもないし、悟りを開いたわけでもありませんが。
とりあえず、実装してみました。
bbs.htmlをFirefoxで開くと、URL窓の右端に怪しげなマークが出るようになっ
ていると思います。もしかしたら出ていないかもしれませんが、その場合は私の
HTMLの書き方がよろしくない、ということですので、近日中に直します。

> 改造すれば何とかなると踏んでいます。そして、例えばwforum.cgi?mode=rdfなん

modeはrdfではなくmode=rssと指定するようにしてみました。
どっちがいいというのはあるのかな。

> ただ、この機能の実装にあたって考慮しなくてはならない、仕様上の重要な問題
> が一つあります。それは、単に発言の新しい順にサマリーを提供すればよいのか、

結局、この方式に落ち着きました。だって、楽なんだもの。

> ところが、いろいろと実験しているうち、うちのサーバにとっては大きな問題を

> 乗せされると、サーバのアクセスログが3倍に肥大化する!(爆)

こちらの問題は解決していません。
実際、どの程度のものになるのか試してみるという意味もあって導入しました。
当面、2〜3ヶ月は試験運用という事で維持していきますが、もしログの肥大化
に耐えきれないようであれば、その後はこのルーチンを外してしまいます。

実は、サーバ名というかIPアドレスは決め打ちなので、IPアドレスが変わっ
てしまったりするとうまく情報が取得できなくなります。
実装というか導入に当たって、一番悩んだのが、このIPアドレス関係の問題。
ドメインを取得しているわけではないので、URLはコロコロと変わる可能性が
あるわけです。それを回避するために、フレーム化などという姑息な手段を使っ
ているわけですが、このRSSを使ってアクセスされると、フレームをすっ飛ば
して直リンクでアクセスするようなものなので、姑息なワザが機能しなくなって
しまうのです。
もしかしたら、実際にはこちらの問題の方が元で更新情報の提供停止に至るかも
しれません。

例によって、数ヶ月以内には、板塀の手入れのページにプログラムリストを掲載
します。もし、早急にコードを入手したいという方がおられましたら、個別にお
問い合わせください。
 

タイトルRe: 板塀新機能
記事No787
投稿日: 2006/12/11(Mon) 15:52
投稿者としき@家主
参照先http://www.hinocatv.ne.jp/~toshiki/
レス元772
DOS上でちょっとあれやこれややるに当たって、この掲示板の過去ログを参照
すれば楽ができることがわかりました。もちろん、生ログをじっくりと見ていっ
てもよいのですが、やはりツリー形式の掲示板ですから、ツリー形式で閲覧した
くなります。さてどうするか。
perlのスクリプトがあるわけだから、それを生DOS上で実行させるというのも
一案。でも、私、生DOSにはjperlをインストールしていません。また、現状で
は、インストールするためのHDDの空きがない、という現実もあります。あと
数ヶ月したらいくらか空きができるはずなのですが、それまで待てん。
そんな時に思い出したのが、これ。

> 私はこの掲示板を、かつてのTTY時代のニフティのフォーラムの電子会議室の
> ように運用しようと思っております。もっと具体的に言うと、いわゆる各フォー
> ラムの「壁会議室」のイメージですね。ほとんどフリートークなんだけど、たま

うん、ニフティのフォーラム会議室をツリー形式で表示するようなツールがある
じゃないか、と。ならば、ここのログをニフティ形式に変換してやればよい。昔、
ikubohさんがなにか作っていたよなぁ、と探したけど見つからん。
そういえば最近、めざらさんもVzマクロで作ったといってたよな、あの人なら
きっとマクロ工房に置いてあるだろう、と思ったけど、どれがどれやらわからん。
む、牧場で肥育中かな、と思ってそちらも確認したけど、無いみたい。

Win3.1の遅いマシンであちこちさまよったりgoogleと格闘したり、30分あまり
ネットの海で溺れていたんだけど、結局探索を断念。速いマシンなら実質10分
に満たないくらいだと思うけど。
仕方ないのでWin3.1から生DOSに降りて、AWKの変換スクリプトを作りはじめて
みたら、ありゃ、10分ぐらいで、とりあえず動くものができてしまった。
NIFPで閲覧すると、とりあえずそれっぽい表示にはなってくれる。いくつか欠落
が出るけど、原因はすぐに判明、タイトルや発言者名が長すぎるということのよ
うだから、これを切り詰めるルーチンをくっつけて、ここまでで20分未満。
とりあえず、これで今回必要な部分のログを取り出して任務完了。
取り出したログの中身を見ると、改行が<br>になっているので、これはVzで\n
に置換。あと、実体参照もそのままになっているけど、今回は&gt;だけ置換すれ
ば用は足りる。一応、AWKのスクリプトの方にもこの2つの置換はフィードバック
して、でもここまでで約30分。
む、探すよりも自分で作った方が速いという、珍しい実例を作ってしまった。

今回作ったAWKスクリプト、もうちょっと手を入れればそれなりに使い物にはなり
そう。残りの実体参照の置換はすぐにできるとして、長すぎるという事で削った
タイトルや発言者名の扱いはどうしようかな。あと、今回、全発言者ともIDの
部分はAAA00000で決め打ちにしたけど、ここもなんとかしよう。それから、タイ
トル部分も長さ40バイトで決め打ちにしてあって、足りない分は空白を詰めて
あるけど、これもトリミングするルーチンがほしいな。
そうだ、どうせAWKで作るのなら、そのままサーバに仕込んでしまえば、それこそ
「板塀新機能」の名に恥じない物になるかも。

ということで、ニフティ形式ログ出力機能、乞う御期待。
#大丈夫、誰も期待しないから
##そう簡単には完成しないから、もっと大丈夫
 

タイトルRe^2: 板塀新機能
記事No788
投稿日: 2006/12/12(Tue) 23:59
投稿者文太
レス元787
http://homepage3.nifty.com/mezala/noz/index.html
 ここの一番下あたりがそれだと思うのですが、手遅れですね(仕様も何も分か
ってないのだけど)。僕も、TS-Net のメール(1発言1ファイル)を Nifty 形
式にしようと思ってはいて…。

 『ミリオン・ダラー・ベイビー』に泣いた夜。(地上波初登場より少し遅れて
います。)

 あ、僕はそのawkスクリプトに期待してます、はい。

タイトルRe^3: 板塀新機能
記事No790
投稿日: 2006/12/13(Wed) 00:23
投稿者めざら
参照先http://homepage3.nifty.com/mezala/
レス元788
 あ,負けた。(^^;

 でも,あんな深いところにあるの,よくご存知でしたね。

タイトルRe^4: 板塀新機能
記事No791
投稿日: 2006/12/13(Wed) 13:21
投稿者文太
レス元790
> あ,負けた。(^^;

 勝った(゜゜;

>  でも,あんな深いところにあるの,よくご存知でしたね。

 そりゃ。過去ログ関係でしょ。一家言あります。腐れ縁で。(^^)

タイトルRe^3: 板塀新機能
記事No800
投稿日: 2006/12/14(Thu) 01:59
投稿者としき@家主
参照先http://www.hinocatv.ne.jp/~toshiki/
レス元788
どもども、めざらさんも文太さんもありがとうございます。
とりあえず、近々に必要な要件は済んでしまいましたが、マクロの方はちょっと
読ませていただくことにします。

手元では、実体参照のうちの不等号(両方)とアンパサンドを置換するコードは
仕込んでみました。あと、タイトルの尻尾の空白を削除するルーチンも、割と簡
単に導入できました。コメント数に関しては、生ログに記載されているコメント
数をそのままニフティ形式ログにも表示してしまっています。

> ってないのだけど)。僕も、TS-Net のメール(1発言1ファイル)を Nifty 形
> 式にしようと思ってはいて…。

昔、確かニフティのFGALTSだと思ったけど、XMLな中間形式に変換して保存するこ
とにより、会議室発言もメールも全て相互に変換可能なようにするというような
プロジェクトを見かけたような気がします。
そこまで情報の欠落に神経質になるつもりはありませんが、発言者名とタイトル
に関しては、情報落ちを防ぐちょっとトリッキーなアイディアを思いついたので、
実装可能か検討してみます。

現状で不満な点は、発言者名とタイトルの切り詰めルーチン。
単純にバイト数で切っているので、2バイト文字の真ん中で切られる可能性があ
るのです。これはなんとかしましょう。
あと、発言者IDを、めざらさんのマクロでは発言者名から生成しているようで
すが、私は書き込みを行ったIPアドレスから生成したいですね。
この辺はまさに、ツール作成者の意向で左右される部分だと思う。

そうすると、欠落する情報は、参照先URLぐらいかな。
これはなんとか回収したいな。
他にも、メールアドレスやらそれの表示・非表示の別なんて情報も欠落するけど、
それらはばっさり切り落としてしまうことにしましょう。

ということで、一番早くて12月20日頃にはお目にかける事ができるかもしれ
ません。ま、そんなに慌てるつもりもないので、もしかしたら年明け以降になる
かもしれませんが。
 

タイトルRe^4: 板塀新機能
記事No802
投稿日: 2006/12/14(Thu) 08:38
投稿者めざら
参照先http://homepage3.nifty.com/mezala/
レス元800
> そこまで情報の欠落に神経質になるつもりはありませんが、発言者名とタイトル
> に関しては、情報落ちを防ぐちょっとトリッキーなアイディアを思いついたので、
> 実装可能か検討してみます。

 うちにも応用できそうだったら頂戴ね。
 「トリッキー」というのが気になるところです。 としきさんが Konno さん
ちに書かれたような本文中への埋め込みくらいしか思い付かないですけど。

> 私は書き込みを行ったIPアドレスから生成したいですね。

 これはわたしも考えたのですが,自分の IP アドレスすら大きく変わるので
ハンドルの方にしちゃったのです。なりすましに対処するような必要も今のと
ころなさそうなので。反面,としきさんの ID が少しずつ変化しますけど。^^;

 2ちゃんねるの ID って,やっぱり IP アドレスからの生成なんでしょうね。
ときどき変えないで自演してバレてたりってのが可笑しいですけど。

> そうすると、欠落する情報は、参照先URLぐらいかな。
> これはなんとか回収したいな。

 これは,としきさんが以前からこだわってらっしゃるところですよね。うち
でもそれを参考にして本文末に入れるようにしています。メールアドレスは,
公開しない人がほとんどなので必要ないですよね。

タイトルRe^5: 板塀新機能
記事No805
投稿日: 2006/12/14(Thu) 22:04
投稿者としき@家主
参照先http://www.hinocatv.ne.jp/~toshiki/
レス元802
>  「トリッキー」というのが気になるところです。 としきさんが Konno さん
> ちに書かれたような本文中への埋め込みくらいしか思い付かないですけど。

埋め込む場所は本文中しかないのですが。
ただ、ちょっと誇大な表現でした。トリッキーはトリッキーなんですが。
何を考えていたかというと、base64でエンコードして埋め込んでみたら、という
ことだったんですね。でも、何にもメリットがなさそうなので、素直にやめます。
考えついた時には、なにかひどくメリットいっぱい、と思い込んでいたようなん
ですが、眠かったのかな。

>  これはわたしも考えたのですが,自分の IP アドレスすら大きく変わるので

これはね、発言者の特定という事を考えると、発言者名から生成した方が合理的
だと思います。ただ、私の場合は目的が違っていて、元の掲示板ログの情報をニ
フティ形式ログの中にどれだけ詰め込めるか、というところなんですよ。
ちなみに、計算するとすぐにわかりますが、IPアドレスをニフティ形式IDに
押し込もうとすると、2ビット程度情報が欠落します。ここはもう割り切って、
最初から上位3バイトしか保存しない、というやり方もあります。他にも、自宅
のメインマシンで書き込んだ時はSDIで、会社から遠隔で書き込んだ時はSTFで、
その他の環境から書き込んだ時は個人というかIPアドレスからの生成値そのま
ま、なんてお遊びもできます。

あ、ちなみに、会議室ヘッダはつけません。
つけなくても、NIFPはきちんとツリー表示してくれたもので。
 

タイトルRe^4: 板塀新機能
記事No808
投稿日: 2006/12/17(Sun) 18:42
投稿者としき@家主
参照先http://www.hinocatv.ne.jp/~toshiki/
レス元800
要素技術の一番目。

> 現状で不満な点は、発言者名とタイトルの切り詰めルーチン。
> 単純にバイト数で切っているので、2バイト文字の真ん中で切られる可能性があ
> るのです。これはなんとかしましょう。

切ろうとするから真ん中で切られる可能性があるのであって、もとより切ろうと
しなければ切れてしまうことはありえない、ということに気がつきました。
つまり、くっつけていけば良いのです。
って、なんだか思いっきり禅問答のようですが。

という事で、jleftっていうユーザー定義関数を作ってみました。

function jleft(str,len,        i,result){
#文字列strの左からlenバイトからなる部分文字列を返します。
#2バイト文字の真ん中で切られてしまう場合は、1バイト短く切り詰めます。

  result=""
  if (len<1) return result
  if (length(str)<1) return result
  
  i=1
  while (length(result jsubstr(str,i,1))<=len && i<=jlength(str)){
    result=result jsubstr(str,i,1)
    i++
  }
  return result
}

えへへ、見事にくっつけております。
これで、2バイト文字の泣き別れはなくなりました。
スピードは遅いかもしれないけどね。
でも、たかだか40回ループさせるだけだから、がんばっても効果は低そうだし。

> そうすると、欠落する情報は、参照先URLぐらいかな。
> これはなんとか回収したいな。

teacupって、参照先URLを、本文の一番下のところに表示するようになってい
るんですね。めざらさんのマクロでもそうだし。
う〜ん、どこに表示しようかな。表示位置の問題だけなんだけど。


ということで、あと必要な要素技術はIPアドレスのニフティIDへのマッピン
グ技術のみ。アイディアは暖まっているんだけど、実装するためのスキルが足り
ないかもしれず。
 

タイトルRe^5: 板塀新機能
記事No809
投稿日: 2006/12/17(Sun) 20:32
投稿者めざら
参照先http://homepage3.nifty.com/mezala/
レス元808
 着々ですね。

> teacupって、参照先URLを、本文の一番下のところに表示するようになってい
> るんですね。めざらさんのマクロでもそうだし。


 HTMLだったら発言者名をリンク文字列としてアンカーにしてしまうという方法も
ありますけれど,そういうのはお好みではなかったかなぁ。収集されにくいという
根拠もないのですが,表示だけはすっきりしていますよね。



タイトルRe^6: 板塀新機能
記事No810
投稿日: 2006/12/17(Sun) 21:16
投稿者としき@家主
参照先http://www.hinocatv.ne.jp/~toshiki/
レス元809
>  着々ですね。

ぐちゃぐちゃになりそうです。

>  HTMLだったら発言者名をリンク文字列としてアンカーにしてしまうという方法も
> ありますけれど,そういうのはお好みではなかったかなぁ。

好みでないというか。
これをやるのなら、メールアドレスのアンカーにしたくなってしまうのですよ。
mailto: ってやつね。

ニフティログ化にあたってこの点に関して悩んでいるのは、純粋に表示する位置
のことだけでして。それだって、上の方に表示するか下の方に表示するか、そし
てフォーマットはどうするか、という程度のことなので、些細な問題と言っても
よいでしょう。
 

タイトルRe^5: 板塀新機能
記事No811
投稿日: 2006/12/18(Mon) 21:37
投稿者としき@家主
参照先http://www.hinocatv.ne.jp/~toshiki/
レス元808
> という事で、jleftっていうユーザー定義関数を作ってみました。

今回の開発は、DOS上で行っています。
DOS上で動く主なAWK処理系としては、以下のものがあります。

・JGAWK
・GAWKR(リアルモード版)
・GAWK(DPMI版)
・MAWK(16ビット版)

今回、作成したjleft関数は、上記の4つの処理系の全てで、私の意図した通りに
動く事を確認しました。

一方、ターゲットとなる実行環境は、32ビットなWindowsの自宅サーバです。
この環境で動く主なAWK処理系としては、以下のものがあります。

・GAWK(DPMI版)
・MAWK(32ビット版)

実際には私の場合、Windows上でAWKを使う時には、ほとんどGAWKをターゲットと
して開発しており、GAWKではうまく動かないような機能を使う時だけMAWKで開発
しています。今回も、GAWKで使うつもりです。
32ビット環境で試験していないとは言え、DOS環境と全く同じGAWKですから、
動かないことはないと踏んでいます。もちろん、最終的には実行環境で試験して
確認をとります。試験してNGだったらどうしよう。


JGAWKには16ビット版しかありません。
が、日本語ドキュメントが一番充実しているのはJGAWKでしょう。
で、このJGAWKのドキュメントの中に、まさに今回のような事例を解決するための
サンプルが記載されている事に気がつきました。
このサンプルを使ってjleft関数を書き直してみると、以下のようになります。

function jleft(str,len,        result){
#文字列strの左からlenバイトからなる部分文字列を返します。
#2バイト文字の真ん中で切られてしまう場合は、1バイト短く切り詰めます。

  result=""
  if (len<1) return result
  if (length(str)<1) return result
  
  result = substr(str, 1, (len+1));
  if (length(result) == (len+1)) sub(/.$/, "", result);
  return result

}

ぅぉぉ、短くてシンプルで、おまけにループも使っていないから少しは速そう。
でも、JGAWK以外の環境で動かないなら意味ないな、と思いつつも念のためテスト
してみると・・・(;_;)
まず、動作速度。
クロック133MHzのマシンで約1MBのログを処理するのに要する時間は、体感で
は全く短縮されておりません。きちんと測定すれば、もしかしたら数%は短縮さ
れているかもしれませんが。
そして出力結果。これが噴飯もの。
予想に反して、GAWKの2つのバージョンは、きちんと処理されました。
ループを使ったバージョンとバイナリ一致することも確認済。
ところが、肝心のJGAWKで1ヶ所、泣き別れが発生することが判明。
ファイルサイズもなぜか1バイト大きくなっているし。何が悪いんだろう。
MAWKは最初から期待していなかったというのもありますが、もうボロボロ。
ほとんどのところで泣き別れ発生。
ところが、最終的に出力されたファイルサイズは泣き別れのないものと同じなん
ですよ。う〜ん、どこかが欠落しているのかなぁ。ちょっと追いかけてみよう。


ということで、こんな不安定なものは使えない、というのが結論。
多分、このままループバージョンで走る事になるでしょう。
 

タイトルRe^5: 板塀新機能
記事No812
投稿日: 2006/12/23(Sat) 10:32
投稿者としき@家主
参照先http://www.hinocatv.ne.jp/~toshiki/
レス元808
> ということで、あと必要な要素技術はIPアドレスのニフティIDへのマッピン
> グ技術のみ。アイディアは暖まっているんだけど、実装するためのスキルが足り
> ないかもしれず。

とりあえず、スキルは足りたのですが。
大体、こんな感じになりました。

function ip2id(str,        arr1,arr2,result){

  if (split(str,arr1,"\.")!=4) return ""
  
  arr2[1]=arr1[1]%26+65
  arr2[2]=arr1[2]%26+65
  arr2[3]=arr1[3]%26+65
  arr2[4]=int(arr1[1]/26)
  arr2[5]=int(arr1[2]/26)
  arr2[6]=int(arr1[3]/26)
  arr2[7]=int(arr1[4]/100)
  arr2[8]=arr1[4]%10
  result=sprintf("%c%c%c%1d%1d%1d%1d%1d",arr2[1],arr2[2],arr2[3],arr2[4],arr2[5],arr2[6],arr2[7],arr2[8])
  
  return result

}

ところが、生ログを使って試験してみると、うまく値を返してこないことがある。
生ログがおかしいのかな、と思ってチェックしてみたら、その通りでした。
具体的には、サーバーに対して、DNSの逆引きをしないように指定してあるの
で、ホスト名のフィールドにはIPアドレスが入ってくるはずでした。これは、
ニフティのhpcgiなんかの挙動と同一です。ところが、サーバーマシンにはhosts
ファイルが入っているのですが、これがきちんと検索されてしまっているようで、
自宅内LANからアクセスした時、即ち自分のメインマシンからアクセスしたよ
うな場合なんかが全て、マシン名で記録されてしまっているのです。
もっとひどいことに、なぜかホスト名のフィールドがヌルというか何も情報が入
っていないことすらありました。これは原因が不明。ただ、全てを追いかけては
いないのですが、ほとんどは発言者が私自身のものなので、自宅内LANでアク
セスした際に何かの具合でこのようになってしまったものでしょう。

ということで、残念ながらこの線はあきらめることにしました。
すると、次善の策は、めざらさんと同じように、発言者名からでっち上げるのが
ベター、と。
一番簡単には、発言者名の先頭4バイトを取り出して、IPアドレスと同じ方法
で変換してやればよいのですが、発言者名が短い場合はどうしようかな。いっそ
めざらさんのロジックをそのまま導入してしまおうかなぁ。
ということで、めざらさんのマクロを読ませてもらったのですが・・・
全然わかりません。ワード型のポインタとロング演算を使ってあれやこれややっ
ているというのはわかったのですが、そこまで。私、徹底的にポインタは不得手
のようです。

なので、めざらさんにお願い。もし可能でしたら、高級言語で表現したらこうな
る、というようなのを教えていただけないでしょうか。別に、めざらさんのとこ
ろと一致させなければならない必要もないのですが、いえ、もちろん、一致させ
れば喜ぶ人が数名いるのはわかっていますが、何というか、ロジックが理解でき
ないのが悔しいというか。

よろしくお願いいたします。
  

タイトルRe^6: 板塀新機能
記事No813
投稿日: 2006/12/23(Sat) 22:57
投稿者めざら
参照先http://homepage3.nifty.com/mezala/
レス元812
 あれですね,ロジックなんて言えない代物で恥ずかしいのですが,
一応ご参考になればということで手順を説明させてもらいます。

 まず変換ルーチンの中で使っている定数が 4種類あります。
    26  アルファベットの文字の数です (A-Z)を示します
   676  26^2 です (A-Z)(A-Z)を示します
 17576  26^3 です (A-Z)(A-Z)(A-Z)を示します
    65  アルファベットの'A'の十進文字コードです

 まず,ハンドルの先頭2バイトを値として取得し, 17576で割った商と余り
を取得します。商を文字'A'に加算して ID の1桁目にします。 次に余り(最
大値で 17575)を 676で割った商と余りを取得します。 商を文字'A'に加算し
て ID の2桁目にします。 残った余り(最大値で 675)を 26で割った商を文
字'A'に加算して ID の3桁目にします。 これが ID のアルファベット3桁分
になります。

 次はハンドルの文字コードすべてを先頭から 1バイト単位で加算していきま
す。16ビットをあふれると丸められますので上限は 65535です。この値をゼロ
パディングで出力したのが ID の数字5桁分です。

 単純でしょう?
 こんなのですので ID の先頭アルファベットは'D'くらいまでなんです。
 これがちょっと心残り。先頭2バイトから生成するからなんですけどね。

タイトルRe^7: 板塀新機能
記事No814
投稿日: 2006/12/24(Sun) 16:44
投稿者としき@家主
参照先http://www.hinocatv.ne.jp/~toshiki/
レス元813
ご説明いただきありがとうございます。
コードと照らし合わせて、解読してみます。
ところで、一番小さい可読文字は「!」だと思いますが、これ1文字のハンドル名
の場合、めざらさんのマクロだとIDはどうなるのかな。

>  こんなのですので ID の先頭アルファベットは'D'くらいまでなんです。
>  これがちょっと心残り。先頭2バイトから生成するからなんですけどね。

仮に、3バイトにするとどうなるんだろう。
概算で最大値は256*256*256=16777216。
26進にすると、AJRNIN、か。
1*26^5+10*26^4+18*26^3+14*26^2+9*26+14=16777216
ちょっと大きすぎるな。
じゃ、一桁ずらしてみるかな。

>  まず,ハンドルの先頭2バイトを値として取得し, 17576で割った商と余り
> を取得します。商を文字'A'に加算して ID の1桁目にします。 次に余り(最
> 大値で 17575)を 676で割った商と余りを取得します。 商を文字'A'に加算し
> て ID の2桁目にします。 残った余り(最大値で 675)を 26で割った商を文
> 字'A'に加算して ID の3桁目にします。 これが ID のアルファベット3桁分
> になります。

まず、ハンドルの先頭2バイトを値として取得し、 676で割った商と余りを取得
します。商をさらに26で割った余りを文字'A'に加算して ID の1桁目にします。
次に余り(最大値で675)を26で割った商と余りを取得します。商を文字'A'に加
算してIDの2桁目にします。残った余りを文字'A'に加算してIDの3桁目にします。
これをIDのアルファベット3桁分にしてみます。

こうすると、もちっと正確に計算すると、最大値は255*256+255=65535。
26進ではCRXO。
3*26^3+18*26^2+24*26+15=65535
ここでRXOを取り出すようにします。

>  次はハンドルの文字コードすべてを先頭から 1バイト単位で加算していきま
> す。16ビットをあふれると丸められますので上限は 65535です。この値をゼロ
> パディングで出力したのが ID の数字5桁分です。

AWKだと、2バイトでは丸められませんからね。
ここも、100000で剰余を取得するようにしましょう。
うん、これならなんとかなりそうだ。
でも、このままでは導入しない。
なんか、「めざら」さんと「めさり」さんが同じIDになるような気がするから。
でも、似たようなロジックになることでしょう。

いやぁ、ここはいろいろと悩んだんですよ。
例えば、変なハッシュ関数をでっち上げてみようか、とか。
でも、ハンドルを文字コードで表したときに一番下の桁が1つだけ違う、例えば
「めざら」と「めざり」なんてときにはIDもひとつ違いになってほしいけど、
ハッシュ関数の内容によってはそうはならないし。
 

タイトルRe^8: 板塀新機能
記事No815
投稿日: 2006/12/25(Mon) 10:09
投稿者めざら
参照先http://homepage3.nifty.com/mezala/
レス元814
> ところで、一番小さい可読文字は「!」だと思いますが、これ1文字のハンドル名
> の場合、めざらさんのマクロだとIDはどうなるのかな。

 AAU00033 になりますね。
 33は$21と同じですから問題はありませんが,ん? 何故 AAA にならないのか?

 コードを見直したところ3桁目の種になる,676での剰余に余計な 65加算を
行っていました。このせいで最小値でも AAA にならなかったのですね。 もっ
とも 65を足さなくても 26で割った余りなのだから 0になりようがないですね。

 こういうのは,としきさんにとっては我慢ならないところだと想像したりし
ます。わたしは,アルファベットと数字の範囲に納まればよいと考えているの
で,いいかげんなのですが,例えば!を AAA00001にするのであれば下駄をはか
せるとかすればよいのですよね。

 まぁ,どのように結果を出すにしても,手法は似たようなものでしょう。

タイトルRe^9: 板塀新機能
記事No816
投稿日: 2006/12/25(Mon) 14:46
投稿者としき@家主
参照先http://www.hinocatv.ne.jp/~toshiki/
レス元815
>  こういうのは,としきさんにとっては我慢ならないところだと想像したりし

ところが、そんなに気にならなかったりします。
むしろ、私が我慢できないとは言わないまでも、ちょっといやだな、と思うのが、
例えば、絶対に00001という値を取りえない、なんて言うようなロジック。
一応ね、00000は別にして、00001から99999または65535のすべての値は取りえて
ほしいわけなんですよ。だから、前にも書いたけど、ハッシュ関数なんて大がか
りなことを思いついてしまったりしたわけで。

でもね、半角1文字のハンドル名だった場合にどうするか、というのは、最後の
段階でちょっとだけ悩んだんですよ。素直にやれば、2バイト目はヌルというか
0という値を入れてやればいいのですが、なんとなく、1バイト目と同じ値を重
ねてみたらどうか、などという事を考えてしまったのです。なぜそんな事を思い
ついたのか全く覚えていませんが、ゆっくり考えて、何にもメリットがないこと
がわかったので、素直な方式に落ち着きました。

結局、こんな方式になりました。

function name2id(str,        tmp,i,x1,x2,result){

  x1[1]=ord(substr(str,1,1))-32
  if (length(str)>1){ x1[2]=ord(substr(str,2,1))-32 } else { x1[2]=0 }

  tmp=x1[1]*256+x1[2]
  x2[1]=int(tmp/(26*26))%26
  x2[2]=int(tmp/26)%26
  x2[3]=tmp%26
  
  tmp=0
  for (i=1;i<=length(str);i++){
    tmp=(tmp*256+ord(substr(str,i,1))-32)%100000
  }
  
  x2[4]=int(tmp/10000)%10
  x2[5]=int(tmp/1000)%10
  x2[6]=int(tmp/100)%10
  x2[7]=int(tmp/10)%10
  x2[8]=tmp%10
  
  result=sprintf("%c%c%c%1d%1d%1d%1d%1d",x2[1]+65,x2[2]+65,x2[3]+65,x2[4],x2[5],x2[6],x2[7],x2[8])
  
  return result
}

まぁ、結局、文字コードで32を減算してしまっていますが。
これで、手元のDOSマシンでは、完璧に動くようになりました。
jgawkとgawkとgawkの3つの環境でね。
ところが、試しにサーバマシンのgawkで実行させてみたところ、jsubstr関数がな
い、などというエラーを吐いてくるのです。むぅ、同じバージョンだと思ったけ
ど、勘違いだったかな。ちょっと確認しなくては。
 

タイトルRe^10: 板塀新機能
記事No817
投稿日: 2006/12/25(Mon) 19:39
投稿者としき@家主
参照先http://www.hinocatv.ne.jp/~toshiki/
レス元816
> ところが、試しにサーバマシンのgawkで実行させてみたところ、jsubstr関数がな
> い、などというエラーを吐いてくるのです。むぅ、同じバージョンだと思ったけ
> ど、勘違いだったかな。ちょっと確認しなくては。

確認した結果、わかったこと。
DOSマシンのgawkはver3.0.3でした。
ところが、サーバマシンのgawkはver2.15でした。
では、ということで、vectorに最新版を探しに行った所、これはver3.1.5。
これに置き換えてみたところが、やっぱり同じメッセージが出る。
なぜや、とおもって付属ドキュメントを見たところ、

> 以前のjgawk/マルチバイト対応gawkとの相違点:
> ・length, index, substr は常にバイトではなく、キャラクタを単位として動
>   作します(--ctype=ASCII指定時はバイト=キャラクタです)。バイトを単位と
>   する同等の関数はありません。欲しいなら説得してください。

だって。つまり、j*系の関数はなくなったってことね。ありゃりゃ。
試しに、jsubstrなどを使わないように書き換えてみたら、今度はハンドル名から
IDを合成するところで、1バイトではなく1文字で取り出す関係で、値が軒並
みマイナスになってくれる。だめだこりゃ。

ということで、板塀新機能計画(ニフログ編)は失敗で終了、かな。
ま、こういうこともあるということで。
 

タイトルRe^2: 板塀新機能
記事No789
投稿日: 2006/12/13(Wed) 00:21
投稿者めざら
参照先http://homepage3.nifty.com/mezala/
レス元787
> そういえば最近、めざらさんもVzマクロで作ったといってたよな、

 もう遅いけれど,過去ログダウンロードのページにあります。
 → http://homepage3.nifty.com/mezala/noz/index.html

 動作は遅いですよ。母艦で使うことを前提にして作ったことと,たまにしか
使わないので単にメンテナンスしやすいようにということで,コードを整理し
ていませんので。

タイトルRe: 板塀新機能
記事No971
投稿日: 2007/06/27(Wed) 12:19
投稿者としき@家主
参照先http://www.hinocatv.ne.jp/~toshiki/
レス元772
当分新機能をつけるつもりはなかったんですが、やってみたら10行以下で追加
できてしまったもので。

繰り返しアナウンスしていることですが、この掲示板、自宅サーバで提供してい
ます。自宅のIPアドレスは、プロバイダ(地主)からDHCPでもらっていま
す。そのため、いつ、IPアドレスが変化するかわかりません。通常、このよう
な時は DynamicDNS を使ってドメイン名を取得し、それでアクセスするようにす
ることにより、いつIPアドレスが変化してもいいような体制を採用するもので
す。が、うちではそのようなことはせずに、生のIPアドレスでそのままサービ
スを提供しています。IPアドレス変動対策としては、掲示板をフレーム化し、
掲示板本体はフレームの内側とすることにより、外枠のURLは常に一定となる
ようにしています。IPアドレス変動時には、外枠のファイルに記述してある内
容がIPアドレスの変動に追従することで、アクセスが維持できるようになって
います。

途絶防止という観点からはこれで十分なんですが、デメリットもあります。
フレーム内の呼び出しは常にオプションなしなので、一番最初の表示時はデフォ
ルト表示になってしまうという事です。デフォルトは何かというと、通常はツリ
ー表示ですね。ある特定のブラウザの場合はスレッド表示がデフォルトになるよ
うにしてあるのですが、対象となる利用者はほとんど私だけでしょう。
つまり、この掲示板にアクセスした時の一番最初の表示を、例えば新規順表示や
新着記事表示画面にしたいとなった場合、外枠ではなくフレーム内部の掲示板の
URLに直リンクするしかないわけです。そしてその場合、上記のIPアドレス
変動時のデメリットは、直リンクした側が全て負うしかないわけです。

現在、アクセスログから判明しているのは、そのような直リンクをしているサイ
トは、検索エンジンを除くと約2〜3ヶ所。その他、ブックマークに直接うちの
URLを入れておられると思しきアクセスがやはり2〜3人。
この程度の数だと、無視してしまっても構わないのかもしれません。
あるいは逆に、そのようなアクセスは遮断してしまい、強制的に外枠経由とする
ことも不可能ではありません。が、その場合は、オプション付のアクセスができ
なくなるというわけで、若干のデメリットに泣いてもらう事になります。

この問題の解決を図るために、この板塀に新たな機能を追加しました。
すなわち、外枠経由のアクセスで、かつ、この掲示板に対する直接のオプション
指定がない、という2つの条件が満たされた時、もし仮に外枠の方にオプション
指定があれば、そのオプションをそのままこの板塀のオプションとする、という
ものです。
具体的には、以下のような指定ができる事になります。

http://www.hinocatv.ne.jp/~toshiki/bbs.html?mode=newsort

もしかしたらまだバグが残っているかもしれませんが、その時はごめんなさい。


ということで、WEBサイト上でこの掲示板に直リンクされている方、あるいは
この掲示板を直接ブックマークされている方におかれましては、おいおい修正し
ておいていただけるとありがたいです。

このスクリプトのコードについては、例によって、数ヶ月以内には板塀の手入れ
のページ(http://www.hinocatv.ne.jp/~toshiki/computer/itabei/)に掲載いた
します。
 

タイトルRe^2: 板塀新機能
記事No972
投稿日: 2007/06/28(Thu) 20:21
投稿者めざら
参照先http://homepage3.nifty.com/mezala/
レス元971
> 具体的には、以下のような指定ができる事になります。
>
> http://www.hinocatv.ne.jp/~toshiki/bbs.html?mode=newsort

 おっ,これでようやく板塀も [新着] リンクが入れられるようになるのかな。
 めでたし,めでたし。

 Konno さんとこをそうしているので,こっちもできたらなぁと思っていたの
ですよ。

タイトルRe^3: 板塀新機能
記事No973
投稿日: 2007/06/28(Thu) 22:23
投稿者としき@家主
参照先http://www.hinocatv.ne.jp/~toshiki/
レス元972
>  おっ,これでようやく板塀も [新着] リンクが入れられるようになるのかな。

>  Konno さんとこをそうしているので,こっちもできたらなぁと思っていたの
> ですよ。

もし、なにかヘンなことになっていたらご連絡ください。
多分、大丈夫だとは思いますけどね。
この機能が安定したと判断できたら、本気で、直リンク遮断をするかも。
あ、いや、遮断というのは語弊があるかな。
直リンク強制転送、というのが正しい。
つまり、直リンクでのアクセス時のQUERY_STRINGをそのままbbs.htmlに付加する
形でリロードさせる、というもの。
かなり極悪な動きになるので、本気で導入する気はないのですが、場合によって
は、スパム対応の一環として、類似機能が導入されるかも。
 

タイトルRe^4: 板塀新機能
記事No975
投稿日: 2007/06/30(Sat) 07:41
投稿者めざら
参照先http://homepage3.nifty.com/mezala/
レス元973
 他山の璧のやしきの板塀に[新着]リンクを追加してみましたが,
期待した動作になっていないようなんです。勘違いだったでしょうか。
最初,こちらの#971に埋めてあるリンクから表示した時は,
所期の動作だったように思ったのですが,期待するものが違っていたかしら。

 「以下のような指定」って,「本体」側が新着表示にできるという意味ですよね。
ここが勘違いだとそもそもが異なるのですが。

タイトルRe^5: 板塀新機能
記事No976
投稿日: 2007/06/30(Sat) 11:02
投稿者としき@家主
参照先http://www.hinocatv.ne.jp/~toshiki/
レス元975
>  他山の璧のやしきの板塀に[新着]リンクを追加してみましたが,
> 期待した動作になっていないようなんです。勘違いだったでしょうか。

んげげ、このパターンは考慮していませんでした。
バグ出しに御協力、ありがとうございます。

何が悪かったかと申しますと、チルダ。
これが%7Eと表記されるパターンを無視していました。
とりあえず、チルダのみがURLエンコードされた場合は無事表示できるように
しました。でも、極端なことを言えばURLの全ての文字列がURLエンコード
される場合もありうるわけですが、そんなものには対応しません、と、割り切っ
てしまいます。その他、URL表記にはDNSを使わないIPアドレス直接指定
など、いろいろなバリエーションが考えられるわけですが、そういうものも一切
無視しています。

ということで、多分これで大丈夫だと思いますので、もう一度お試しください。
もし、その他の不都合等に気づかれましたら、遠慮なくどんどんご指摘ください。
もちろん、こんな機能を新たに導入してほしいとか、あの機能はどうした、など
というご意見でも結構です。能力的な問題があって実現できないとか、実は既に
実装済み、なんてものもあるかもしれませんが。
 

タイトルRe^6: 板塀新機能
記事No977
投稿日: 2007/06/30(Sat) 11:28
投稿者めざら
参照先http://homepage3.nifty.com/mezala/
レス元976
 ティルダに対応してくださったおかげで,無事に新着を表示できるようになりました。定期的に訪問させていただいている掲示板は,基本的に新着を見るようにしているので,本人が一番助かったりします。

 ありがとうございました。
 本体だけ直リンクてのは,永久にだめなんですよね。

タイトルRe^7: 板塀新機能
記事No978
投稿日: 2007/06/30(Sat) 12:44
投稿者としき@家主
参照先http://www.hinocatv.ne.jp/~toshiki/
レス元977
>  本体だけ直リンクてのは,永久にだめなんですよね。

だめということもありませんが。
それに、検索エンジン経由は絶対に本体直リンクになってしまっていますし。
ただ、現行の方式では、本体直リンクは利用者にとってデメリットがとても大き
いというだけです。もちろん、いささかのメリットもあるのでしょうが、その種
のメリットを少しずつでもつぶしていって、本体直リンクをする必要をなくし、
ゆっくりとでも全てのアクセスを外枠経由に誘導するというのが、家主としての
基本方針です。
もちろん、お客さんの側に、その種のデメリットを全て無視して行動することを
禁止するものではありません。ただ、その場合は、いろいろと負うべきものが増
える可能性がありますよ、というだけの話で。

あ、今のところは強制ホゲホゲは導入していませんよ。
面倒なんで、当面は導入するつもりもありませんし。
#といいつつ、最近導入済みの某機能はもっと面倒だったような
 

タイトルRe^8: 板塀新機能
記事No979
投稿日: 2007/07/02(Mon) 10:08
投稿者めざら
参照先http://homepage3.nifty.com/mezala/
レス元978
 実はよく理解していないのがバレバレなのですが,本体直リンクはアドレスが変化してしまってリンクした側からは追跡が非常に困難であるということですよね。

 自分はフレーム嫌いだからというだけなのですが,フレームであっても本体側のページモードを制御できるのであれば,特別不都合はありません。





 今日,やっとメアド登録してみました。(笑)

タイトルRe^9: 板塀新機能
記事No980
投稿日: 2007/07/02(Mon) 10:37
投稿者としき@家主
参照先http://www.hinocatv.ne.jp/~toshiki/
レス元979
あぁ、見つかってしまった。(笑)
#探すまでもないと書いたのに、探しまわった人もいる模様

>  本体直リンクはアドレスが変化してしまってリンクした側からは追跡が非常に困難であるということですよね。

その通りです。

>  自分はフレーム嫌いだからというだけなのですが,

実は、私も、嫌いというほどではありませんが、もしフレーム版と非フレーム版
があれば非フレーム版を選ぶ人間だったりします。
なので、フレームを使わずにURLを一定に保てる別の方法を発見できれば、き
っとそれを採用することでしょう。
 

タイトルRe: 板塀新機能
記事No1053
投稿日: 2007/10/09(Tue) 20:08
投稿者としき@家主
参照先http://www.hinocatv.ne.jp/~toshiki/
レス元772
一年前の発言に対する、それも自己レスってなんのこっちゃって感じですが。

> るようにしてみました。過去ログでない場合は当然、返信ボタンを押せば、通常
> の返信欄が表示されるようになっています。ただ、この板塀はまだ過去ログ機能
> を使用していないので、過去ログ送りになった場合に、果たして本当にきちんと
> 機能するかは不明です。

ここの掲示板も、やっとというか、きちんと過去ログができているようです。
なので、この部分の挙動確認を行ってみました。
結果、なんとか無事に動いているようです。
少なくとも、今のところはバグや不具合は見つかっておりません。
明日にも見つかるかもしれませんけどね。
う〜ん、実機を使わず、紙と鉛筆だけでも、ある程度はきちんと動くプログラム
が作れるものだなぁ。

ということで、報告でした。