新日記(仮)2012年ログ


他の過去の日記

他の過去の日記はこちらにあります。


新日記(仮)

2012/12/31 17:52

さて、大晦日なので、今年を総括してみよう。

……うん、何もしない一年だった。いや上半期に旅行とかしたけど、旅行記も仕上がってないし、どうも何かをしたという実感がない。来年は何かしたいところだ。本当に自動二輪の免許でも取ろうかしら。

あとは……公開から3年経つZORK1取り急ぎ攻略ヒント集のアクセスが若干増えてきた感じ。日本語での攻略サイトはあまりないので、わりとニッチな需要を満たしているのかもしれない。ゲームレビューのサイトから「ヒントはこちらのサイトが便利です」ってリンクしてもらったり、一行掲示板で「ネタバレ少なくて素晴らしい」ってほめてもらったりしたので、もう少しがんばってみる。もっとも、掲示板に関しては自作自演の投稿の方が多いんだけどね。まあそれは去年の7月の日記で宣言しているので、別にこっそりやってるわけじゃなくて、公開後にQ&Aを自作して追加しているのだ。ともかく、今のところはヒントだけで、攻略チャートみたいなものはないんだけど、そのうち作ってみてもいいかな。最短攻略手順とか。でもその前にプレステ版のゾーク・ワンを入手したいところ。近所のゲーム屋さんでは見かけないんだよなあ。

ま、そんなとこでしたかね。ではみなさん、よいお年を。

2012/12/30 12:37

2年ほど使っていた電気ケトルが先日使えなくなり、近日中に同じものを買うことが決まったので、分解してみた。ごめんなさい、写真はありません。

本体の中、特に電気系統はとてもシンプルな構造で、ヒーターそのものが壊れない限り故障しないような印象。むしろスイッチ周りが壊れたら簡単には修復できそうにない感じ。でもその辺に破損は見当たらないし、ヒーターにも焦げたりショートしたりした痕跡はない。つまり使えなくなっている原因は本体でなく電源プレート側にあるのかもしれない。調べてみると、どうやら真ん中の穴の中にある接点が本体側の棒状の接点に当たっていないことが判明。針金を曲げたもので引っ張ってみたら接点が少し上がってきたので、本体を置いて電源を入れてみたが、やはり使えない。導通をあれこれ調べた結果、まだ接点同士が当たっていない様子。電源プレートの分解方法がわからなかったので、接点の真裏にドリルで6mmの穴をあけ、棒を突っ込んでぐいぐい押したらなんとか直った。直ってしまったのだが、熱を発する器具だけに適当な修理をして使いつづけるのは怖い気もする。まあ長時間使うものじゃないから、火災を起こしたりはしないだろうけど。

そののち、今度は卓上ロースターの上部ヒーターが発熱しなくなったとかで、こちらも分解してみた。例によって写真はありません。

タイマー部分は見てないけど、こちらの構造もまあシンプル。発熱体につながっている配線は熱くもなるし、ふたの開閉時に多少動きがあるので、繊維で被覆されたコードが使われていた。接続部は、コードの先端に圧着金具があり、その金具はヒーターに溶接されているっぽい。ともかく、この圧着部分が断線していたので応急的に修理。晴れて上下ヒーターとも発熱するようになりました。こんなんで大丈夫かなあ。

こうして2つの電化製品の延命に成功。っていうか、あたしいつもこんなことばっかりやらされるんだけど。怖いからちゃんと勉強して、電気関係の資格でも取ろうかなあ。


本当はメーカーの人しか分解しちゃいけませんよ。よくわからんという人は決して真似しないで下さい。しがらみ資料館は無保証です

2012/12/16 21:52

しかし、この年になって、しかも人並みに長生きするつもりがなくなってから、政治に対する自分の意思表明が本当にこの1票でしかできないことを理解するとはね。あたしはおろかだった。今もだけど。

若い皆さんはもっと選挙に行って下さい。若い世代の投票率が低いと、もっと別の年齢層を取り込むための政策ばかりが掲げられるようになりますよ。苦しめても不満の声を上げない集団があるなら、そりゃ政治家や政党はその集団をいじめてでも自分の支持層の利益になるような政策を打ち出すでしょうよ。たとえば高年齢層を支援して、そのつけを今の若者に将来払わせるような政策とか。

それでよければ、まあ棄権でもかまわないんでしょうが。

2012/12/16 21:51

やっと選挙終わったわー。ついでに政権も変わるわー。これからどうなるかしら。

2012/11/24 21:28

おととい、みょんなところでくわがたの幼虫(と思われるもの)を拾った。経験がないので自信もないのだが、せっかくなので飼育に挑戦してみることにした。

小次郎を飼いはじめた頃、くわがたの飼育について調べたことがあったので、菌糸びんという単語に記憶があった。確か、幼虫の飼育には菌糸びんというものを使うはずだ。まあ、菌糸びんじゃなくて発酵済みのくぬぎマットでもいいんだけど。菌糸びんは、お金をかけても大型のくわがたを育てたい人向けなのかな。

ともあれ、さっそくペットショップへ赴いて購入。もちろん買ったのは初めて。こんな感じのもの。

拾ってきた幼虫はこんな感じ。調べによると、こくわがたの雌っぽい。よくわからないけど。

表面の菌糸をほじって、幼虫を投入。気に入ってくれるといいな。

2012/10/28 22:47

ちなみに、今年の5/12の日記に書いてある、有意義なエントリやコメントがたくさんあるのに、スパムのせいで「最近のコメント」機能が役に立たなくなってるブログっていうのはkikulogのことでした。復活後すでに広告スパムがいくつも投稿されていて、なんとかならないものかなあと思いながら見ています。

もっとも、kikulogで本当にうっとうしいのは粘着さんの方なんですけどね。あ、これは個人の感想です。

2012/10/10 23:35

菊池誠先生のkikulogが復活したみたい。とてもうれしい。

2012/09/06 21:22

こないだ家の裏にいととんぼがいたので、捕まえてしばらく撮影させてもらった。落ち着かない様子でかわいそうだったから、すぐに逃がした。どうせ簡単には飼えないし。

なお、HRうんぬんと書いてあるリンクを開くと、やや高解像度の写真が出ます。1024x768ピクセル、70〜80キロバイトくらいです。どうせ素人のあたしが撮ったものですから、大きいからといって写真の質はたいしたことありません。

それから、今日見えた夕焼けと虹の写真。よくわからないけど、カメラの設定を変えて何枚か撮ったので、露出が違ったりします。

2012/07/16 16:27

備忘のためのメモ。

魚の干物を作るときは、さばいたあと塩水にしばらく浸しておくわけだけど、この塩水の濃度と浸す時間がよくわからなかった。検索してみたら、5%の塩水に20分とか、10%の塩水に10分とか、10%に1時間とか、いくつも出てきた。

これだけだと覚えにくいので、濃度と時間を掛け算して、100〜200%・分とする方法を基本として覚えておくことにした。ここから先は実際に試してみないとわからない。味が薄いようなら600%・分くらいまで上げられるようだが、よほど大きくて脂の乗った魚でなければ大丈夫じゃないかと予想。

塩水に浸したあとはもう洗わないという流儀もあるようだが、さっと真水にくぐらして表面の塩分を取り除いた方がいいという流儀もあるようだ。前者はそもそも魚を真水に触れさせない方がいいという考え方だろうが、浸した塩水が濃ければ後者もいいかもしれない。あくまでさっとくぐらす程度なら。

あとは風通しのいいところで干す。水が部分的にたまらないよう傾斜をつける。特に頭に水分が残ると生ぐさくなるのでこちらを上に。夏の日差しの強いときは日陰で干さないと身が煮えてしまう。日差しの穏やかな時期なら日に当ててもいい。一夜干しは乾燥に時間がかかるので冬がいい。いずれにしても風があった方がいいので、もしあまりに無風ならば扇風機を使うことも考える。

干しあがりまで、5時間から半日くらい。うんと小さい魚なら3時間とかもあり得るらしい。でもまあ、実際に身の表面を見たり触ったりして覚えなければ意味がない。あとは、時間がかかりそうな日には塩水を濃い目にして、浸す時間を短くするとか、あるいはその逆とか、経験してみないとわからないことがたくさんあるに違いない。

こうして自作した干物はたぶんあまり日持ちしないので、さっさと食べるか冷凍する。うは、なんだか作ってみたくなってきたぞ。ついでに鯵切りと出刃も欲しくなってきたぞ。こうして包丁ばかりが増えていく。

2012/06/30 17:48

虫の写真を撮ったので公開しておこう。

かまきりの幼虫は、あたしが挿し木で増やした南天の鉢植えに住み着いているみたい。こんなところにいるのは小さい間だけだろうな。がんばって無事成長してほしい。とんぼの方はたぶん「はぐろとんぼ」だろうと思うんだけど、詳しくはわからない。あ、かまきりの方も種類まではわからないから、つまりはなんにもわかっちゃいないんだけどね。

はぐろとんぼなんか、どこで繁殖してるんだろう。近所にきれいな川なんかないはずなんだけど、汚いどぶ川でも繁殖できるのかな。

2012/06/30 15:47

どうやら風邪は治ったのだが、微熱だけは下がらないまま。くっそう、恋する乙女じゃないんだぞ。

神経の病気ってのは面倒だなあ。

2012/06/24 23:37

結局風邪はまだ本復しない。のどの痛いのと、膿を含んだ痰はおさまったが、微熱が下がらない。常に37度前後。まあ、これはいつものことと言えばいつものことで、風邪のせいばかりではないかもしれない。自律神経がおかしいとそういうこともあるらしい。そしてあたしの自律神経はおかしいのだ。

さておき、具合を悪くするたびに思うのだが、どうしてあたしは風邪で熱があっても食欲が落ちないのだろう。今回も初日の朝と昼の食事は抜いたが、それ以降はきちんと食べていた。この2回の食事も、「食べたくない」とか「食べられない」とかじゃなくて、単に寝ていたかっただけのことだ。食欲があるのは回復のために悪いことじゃないんだろうけど、今回の症状のうち腹痛は食欲が落ちなかったことが原因なんじゃないかと思ったりして。

2012/06/17 22:16

先週の火曜にひいた風邪がまだ治らない。38度手前まで上がった熱は翌日37度前後まで下がったのだが、そこからが下がらないまま。ずっと微熱なので全身だるくて、特に腰から下が重い。そして例によって腰痛。とにかく弱いところに症状が出る。

熱が下がってからはのどが痛くなり、寝起きは痛みで水も飲めない。そして大量の膿を含んだ痰が出る。0.9%の塩水を作ってのどと鼻を洗っているが、すっきりするのは洗った直後だけ。口から届く範囲はポビドンヨードで消毒しているが、炎症は治まらない。金曜に耳鼻科へ行って見てもらったところ、処方されたのは総合感冒薬。飲んでいるが治らない。

そのうち腹がしくしく痛みはじめた。細菌やウィルスによるものなのか、それとも単に胃腸が弱って消化不良を起こしているのかはわからない。口の奥が痛いのは、のどがはれているせいか、それとも胃が悪くなって口内炎ができているのか。どうやら歯茎も少しはれている。そして昨日からは目やにがひどくなった。もう粘膜という粘膜が炎症を起こしているような気がする。こんな風邪は久しぶりだ。

明日内科にかかろうかなあ。1週間も続くとさすがにつらいので、対症薬でもいいからそろそろがっつり処方してもらえないかしら。熱が高くないのが痛しかゆしだ。

2012/06/08 21:35

1ヶ月に渡って掲示板をいじりながらスパムについて調べてきたが、ここらでねたが尽きてきたので、今までに得られた知見から新しく一行掲示板を作ってみた。まあ、実験に使ってたスクリプトをちょろっと改良して、あと余計なものをそぎ落としただけだけど。名付けて「中・一行掲示板」。これは、「旧」のあとだけど「新」はまだできないからその中間、というほどの意味で、特に深い理由があって付けたわけじゃない。旧称「動作試験中・一行掲示板」の一部を消し忘れたみたいでなんだか変。でもまあいいや。

今のところ、フォームの工夫程度でできる最も効果的なスパム対策は、「INPUTのNAME属性にわかりやすい値を指定しないこと」だろうと思う。スパマーは"body"という名前を持つINPUTを「本文を入力するところだな」と判断するらしい。他にも"message"や"comment"という名前なら同様に本文と見なして長文を投稿してくる。そして、これら「本文を入力するところ」がなくなると、おそらくほとんどのスパマーが投稿そのものをあきらめる。だから、そこいらで無料配布されている掲示板でも、その部分さえ書き換えができれば、スパムをかなり防ぐことができるはずだ、たぶん。

2012/05/30 22:34

昨日突如としてなくなったスパム投稿、今日になってあっさり復活。しかも件数は増えている。今日は現在までの時点で140件。

なんだったんだろう、スパムの投稿元の地域でネットワークでもダウンしたのか、それともスパムにも定期メンテナンスや大規模アップデートによるお休みがあるのかね、なんて話したりしてた。一人で

ここ数日のログを見ると、スパムの投稿の仕方も変わってきている。以前は同じIPアドレスから連続10件くらい平気で投稿してきていたのに、最近は一度に2件、しかも別々のIPアドレスから投稿するようになっている。わざと変えてきてるのか、それとも独立した2つのスパマーが同じスケジュールで動いてるだけなのかな。

いやはや奥が深い。

2012/05/30 00:53

多いときには日に300件あった掲示板へのスパム投稿。その後200件、100件、30件と、ゆっくり減ってきていたのだが、なんと28日の夜からほぼゼロに。スパマーの皆さんに何があったんだ。

スパム投稿なんかないのが本来望ましい状態なんだけど、なんだか急に寂しくなってしまった。まあ、明日以降ずっと来なくなるのかはわかったもんじゃないが。

ともかく、もうしばらく様子を見て、スパムがほとんど来なくなってしまったら実験は終了。んで今回得られた知見からいくつか対策を施して、注意書きとかあれこれ整理して、一行掲示板はいったん平常運行に戻すことにする。

落ち着いたら、こないだ日記に書いたような掲示板を作ってみるかな。めんどくさかったらやめちゃうけど。

あ、そんなことより旅行記書かないと……。

2012/05/19 23:43

どこかで誰かがZORK1のプレイ実況の生放送でもしたようで、「ZORK1取り急ぎ攻略ヒント集」にアクセスが何件かあった。プレイしたのはたぶんPSの日本語版だろうと思うけど。何にせよ、アクセスが増えるとやっぱりうれしい。

しかし、あの記事が実際攻略の役に立ったのかどうかは未だにわからないまま。誰か質問でも感想でもいいから書いていってくれないかしら……。

2012/05/18 22:09

さて、連日いろいろやっていると称しているくせに見た目はほとんど変わらず、なぜか注意書きばかりが増えていく一行掲示板ですが、これでもいくらか収穫はあるのですよ。

前にも書いたけど、スパムを投稿していくプログラムは、掲示板そのものはおそらくほとんど何も読んでいないけれど、フォーム部品のINPUT要素の属性値だけはよく読んでいるようだ。NAME="name"だったら名前の入力欄だなとか、"mail"だったらメールアドレスの、"body"だったら本文の入力欄だなとか、ちゃんと判断してデータを送ってよこす。つまりフォーム部品にこういうわかりやすい名前を付けないようにすれば、スパムはそれだけで減るはずだ。

調べてみたところ、連中はINPUT要素にDISABLED属性が指定されていたら該当するデータを送ってこないし、TYPE属性が"hidden"になっていれば手を触れず既定のVALUE属性の値を送ってくる。この辺は正しい動作をしていると言える。

しかし、INPUT要素にREADONLY属性を指定してあっても、データをばんばん変えて送ってくる。READONLYだから、基本的にはその入力ボックスの内容をブラウザから変更することはできないはず。あとはSTYLE="DISPLAY:none;"とか指定してあって、CSS対応ブラウザならレンダリングされないはずの入力ボックスもどうやら「見えて」しまうようで、やっぱり好き勝手にデータを入力して送ってくる。ちなみに連中の自称するHTTP_USER_AGENT値はほとんどが"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"だから、普通の状態ならCSS非対応ってこともないはずだ。そんなわけで、この辺をスパム投稿の判別方法にすれば楽にスパム回避ができると思う。いくつか組み合わせればより確実になるだろう。

今後は日替わりで、"mail"を"url"、"site"、"web"、"website"、"sub"、"subject"、"title"など、いろんなものに変えて試してみたいと思っている。

2012/05/17 23:27

掲示板の実験も、少しずつ手を変えながら継続中。日に200件のサンプルが取れるのでとても楽だ。

2012/05/17 23:26

ZORK2の攻略ヒント集に手をつけはじめる。いや本当はずっと前から作りはじめていたんだけど、HTML文書としては目次だけ作ってあって、あとは紙のメモしかない状態なんだよね。現在マップから再確認中。

ZORK1もそうだったけど、調べはじめると細かい情報がどんどん出てきて、記事を書く方が進まなくなる。たとえば熱気球の燃料にできるものがいくつかあるんだけど、燃え尽きるまでの時間は同じじゃないとか、迷路のような部分が、どういう処理によって迷路のようになっているのかとか。調べはじめたらきりがない。

あと、ZORK1では謎解きはあるけど、基本的には闇雲に宝物を集めてtrophy caseに入れていけばよかった。ところがZORK2では、このtrophy caseに相当するものが初期状態では存在しないため、まずはこれを呼び出すために必要な3つのアイテムを集めなければならない。まあ、他の宝物と平行して集めても問題はないけど。そして、この3つのアイテムを入手するためには、それぞれ難しい謎解きが必要。この3つのアイテムを所定の場所に置くと別なアイテムに変わり、そのアイテムをさらに特定の場所に置かないといけない。おまけに、それによって出現したものがZORK1のtrophy caseに相当するものだとは、1回や2回クリアしたくらいでは気づかないかもしれない。

上のtrophy caseの例でも推測できるかもしれないけど、ZORK2ではZORK1よりも謎解きがむずかしい。それはまあ当然かもしれないけど、ZORK1ではわりと論理的に解ける謎が多かったのに対して、ZORK2ではより魔法的な謎解きが多くなっている。ZORK1の魔法的な謎解きと言えば、gold coffinを持ち出す方法とか、虹を渡る方法とか、鏡に触れると別な部屋へ移動するとか、あとは冥界へ行く儀式くらいかな。鍵を使って錠を開けるとか、電源を入れてからダムを操作するとか、ビニールボートをふくらますのにポンプが必要とか、あくまで筋の通った操作を要求される場面が多かったと思う。ところがZORK2ではけっこう無茶が多くて、ロボットに命令してあれこれやらせないといけなかったり、桶に水を入れると桶が浮かび上がったり、ケーキが水を蒸発させたり、カーテン状の光の謎を解かないと銀行から物を持ち出せなかったり、棒とダイヤ型の窓だけでランダム迷路の謎を解かされたり、首輪をするとCerberusがおとなしくなったり。一応筋の通っている謎も、難しいものが多い。Dreary Roomへ入るための鍵の入手方法なんかはその例だろう。そして、宝物を全て集めてから、ゴール地点へ行くための謎を解くのがまた難しかったりする。

攻略手順を説明するのも難しい。一応、こうやったら楽かなと思う手順はあるけど、それをただ書いていってもそれはただの答で、ヒント集ではなくなってしまう。かといって攻略手順を示さず、各所の謎解きだけ解説しても、たぶん最後まで付き合ってくれる人はいなくなってしまいそうな予感。

まだまだ悩みの中。モチベーションが下がったら、まだクリアしてないZORK3にでも挑戦してみるかな。

2012/05/15 21:40

さて、例によって掲示板の話。今回の実験は、まず「メールアドレス入力欄をいかにもそれらしく設置したら、スパマーはメールアドレスを入力するかどうか」について調べた。INPUT要素のNAME属性は"mail"としておいて、スパマーにもわかりやすい親切設計にした。エラーログにより、案の定メールアドレスを入力していることがわかった。

そして次の段階へ。これは「スパマーはINPUT要素のNAME以外の属性を解釈するかどうか」についての実験だ。メールアドレス入力欄のINPUT要素に、MAXLENGTH属性を設定し、値を0とした。まっとうな設定値じゃないからちょっといやなんだけど、こうすることで、普通のブラウザならばメールアドレス欄には文字を入力できなくなるはずだ。これが正しいと仮定すると、普通のブラウザからの投稿なら、"mail"という名前の付いた投稿データはVALUE属性で規定値にされている"xxx..@shigarami-museum.com"という文字列か、そうでなければ空で送られてくるはず。ところがスパマーは"MAXLENGTH=0"を解釈せず、当たり前のようにメールアドレスを入力して投稿してきている。これを利用すれば、「ひらがな認証」を使わなくてもスパム投稿を弾くことができそうだ。

続けてREADONLY属性とかDISABLED属性も試してみようと思う。"MAXLENGTH=0"はさすがにいかがなものかと思うし。あとはCSSを使って、スパム見極め用の入力ボックスだけ非表示にしてしまうなんてのも実験してみたい。

2012/05/15 20:08

掲示板関連であれこれ調べて、思いついたり気づいたりしたことがいくつか。まあ、そのうちの1つはおとといあたりここに書いたんだけど、誤読されそうな部分とかがあって、訂正が面倒だから消したという経緯があるのですが。で、今日は別な1つを書こうと思う。

まともなHTMLを出力する掲示板スクリプトって、昔はそれなりに意識している人がいたように記憶しているんだけど、今探してみてもそういう掲示板は見つからなかったりする。たぶん、未だに存在しないんじゃないかな。もし存在するなら教えてほしい。これはべつに挑発するつもりで書いてるわけじゃなくて、純粋に「あるなら見てみたい」のです

レンタル掲示板や無償配布されている掲示板スクリプトがひどいHTMLを出力するのは昔から今まで変わっていないし、どうせ使わないんだからもうどうでもいいやと思わなくもない。正しいHTMLを解説してくれているサイトだって、ブログや掲示板は借り物で、ソースがひどいことになってるところもあるけど、それもまあ仕方ないかなと思う。でも、HTMLの解説をしているサイトで、自作したっぽい掲示板を使っているにもかかわらず、出力されるHTMLが変だったりすることもある。どうしてだろうね、とは思うが、余計なお世話だろうから、よそさまへの言及はここまでにしておく。非難するつもりはないのだ。

本題は、正しいHTMLを出力する掲示板を作るのってそんなに難しいことなのかしら、ということだ。その辺について少し私見を書こうと思う。

まず、掲示板スクリプトの作者やブログサービスの提供者には、HTMLに詳しくない人が多いようだと想像する。掲示板の出力するHTMLソースを見ると、レイアウトのためのTABLE要素とか、インデントのためのBLOCKQUOTE要素とか、BODY要素やFORM要素直下のインライン要素とかが平気で出てくる。もういっそ既存のHTMLの文書型宣言なんか書かなきゃいいのに。独自形式ですってことにして。

とにかく全体的につっこみどころが多すぎて、この件について書くと話が拡散してしまう傾向にあるのだが、それはあたしの頭が散漫だからかもしれない。ここはぐっとがまんしよう。今回掘り下げたいのは、投稿データのマークアップ、特に投稿本文のマークアップについての考え方だ。

たとえば、こんな感じの投稿データがあったとする。

件名:手長えび釣りについて
投稿日時:2012/05/13 15:00:00
投稿者:しがやん
メールアドレス:******@**********
サイトURL:http://**********
本文:去年から手長えび釣りを始めた者です。
手軽さと、引きの楽しさにはまってしまいました。
5月に入って一度、ためしに釣ってみたのですが、まだまだ
えびの数は少ないようです。サイズも小さめでした。
今年もシーズン本格化は6月に入ってからでしょうかね?
ところで皆さん、えさは何を使ってますか?
私は今までに
・  みみず
・  さし
・  豚肉
を試しましたが、みみずが一番釣れるような気がしています。
豚肉で釣れたのには驚きました(^^;。

もちろん、投稿データの中でもっとも重要なのは本文だ。そしておそらく、この本文をどうマークアップするかが意見の分かれるところなんだろうと思う。よって、ここをじっくり考える。というか、ここが終わればあとはおまけみたいなもんだ

マークアップの適正さを気にかけないスクリプト作者なら、全体をTABLEでレイアウトするから本文はTD要素の内容にしようとか、レイアウトのためのDIV要素の直下に入れようとか考えるだろう。で、改行は無条件にBR要素に置き換えてしまうだろう。いろいろ問題はあるが、シンプルな考え方だと思う。もっとも、こういうやり方をするなら既存のHTMLのふりなんかしないで、独自形式だと主張してほしいけど。

適正なマークアップを意識する人なら、そう無頓着なことはしないだろう。投稿の本文は文章で、段落なのだから、P要素の内容にしよう、と考えるかもしれない。でもこの方法を選ぶとなかなか面倒なことになる。改行はBR要素を用いた強制改行を採用する人もいるだろうが、改行があったらP要素をいったん終わらせ、新たにP要素を開始させるという方法を選ぶ人もいるかもしれない。しかし、後者を機械的に処理すると、空の行でも同じ置き換えをしてしまい、結果として内容が空、もしくは改行文字のみのP要素ができてしまうことになる。文法違反ではないが、あたしはあまりそういう変なマークアップはしたくない。そもそも、投稿者が改行を入れたならそこが必ず段落の終わりであると見なすのは、ちょいと無邪気すぎるんじゃないかと思う。

あたしは、投稿者が皆HTMLを知っているとは思わない。「知ってるよ」と言われても、おいそれとは信じない。だから、掲示板を作るとしたら、プレーンテキストのみで投稿してもらうものにする。HTMLのタグは使用禁止とし、投稿内にタグがあれば文字参照に置き換えてしまう。さらにあたしは、投稿者が皆文章の構造に従って適正な改行をするとも思わない。だから改行が段落の終わりだなんて考えず、改行を</P><P>に置き換えるなんて処理もしない。

では、どうするか。

投稿者は自分なりに本文を整形しようとすることがある。上の投稿データの例で示したつもりだが、長くなりそうな行は途中で改行したり、中黒を使って箇条書きリスト風に見えるように工夫したりしている。投稿者によって整形されたプレーンテキストならば、これは「整形済みテキスト」そのものだ。つまりPRE要素の内容とするのが最適である。これがあたしなりの解だ。

PRE要素を投稿本文に使っている掲示板は見たことがない。スクリプト作者はPRE要素を知らないのかもしれないし、知っていても「長い文章を入れると横スクロールバーが出る」ということを考慮した上で使わないのかもしれない。でも、掲示板の投稿ってまさに「整形済みテキスト」だと思うんだよね。だから、この目的でPRE要素を使ってはいけない理由は思いつかない。まさかプログラムのコードと定型詩以外で使ってはいけない、なんてルールはないはずだし。

話が飛ぶようだが、昔のパソコン通信の電子会議室や掲示板、メールでは、投稿者が適当な長さで文章を改行したり、読みやすくするために空行を入れたりすることが一般的だった。適切な改行を使わない投稿はむしろきらわれたりもした。詳しくは知らないが、これは閲覧側の環境が一定でなく、長い文章の折り返しがうまく行われるとは限らなかったためかもしれない。そして、ウェブサイトの掲示板やブログのコメント欄など、類似のサービスがインターネットに移行し普及した今でも、掲示板への投稿やメールの本文などで同じことが行われている。もちろん、きちんと折り返されることを想定して1行を長く書く人もいるし、当然いてかまわない。

PRE要素を投稿本文に使って問題になるのは、1行が長い文章を入れると、それに応じてページの横幅がどんどん伸びていってしまうことだろう。でもそんなのたいした問題じゃないと思う。1行に書いていい文字数の上限を決めて、それを超えた投稿はエラーにしてしまえばいいのだ。

上にも書いたが、あたしは投稿者の投稿を信用しない。だから、投稿者は必ず本文を自分なりに整形するはずだ、とは考えない。ただ、投稿者には本文を自分なりに整形してもらおう、とは考える。投稿されたデータを処理する際、本文の各行について文字数を調べ、あらかじめ決めておいた文字数より長い行があれば、そのままでは投稿を受け付けないようにする。具体的には、上限を超えている行があるよと警告して、決められた文字数の上限に合わせて機械的に整形していいか、それとも自分で整形しなおすかを選択してもらえばいい。

もちろん、面倒なら投稿を断念してもらってもかまわない。投稿は義務ではない。ただし、投稿するならば、1行あたりの文字数の上限を超えないよう整形することは義務とさせてもらう。いずれにしても、投稿される本文は文句なく「整形済みテキスト」となる。PRE要素の内容にしてもいいはずだ。横幅が無制限に大きくなることもない。携帯電話など、閲覧環境によっては横スクロールバーが出てしまうこともあるかもしれないが、そこまで心配していられない。考えろと言われれば考えなくもないが、その代わり、サイトに大きい画像を載せても横スクロールバーが出ず、しかもウィンドウが十分に大きいときには画像を拡大せずに表示する方法を教えてほしい。PREについてだけ考えても意味がないので。

どうがんばっても、はみ出るときははみ出る、とあたしは思う。ウィンドウの幅をうんと狭くすれば、どんなサイトでも横スクロールバーが登場する。最大化の状態ではみ出るようでは困るが、まあ文字数を制限すれば大丈夫だろう。WCAG 2.0には、アクセシビリティのレベルAAAに適合する視覚的表現の要件として、日本語なら「1行の幅は40文字以下である」ようにしなさいという記述があるので、これを参考にして、投稿も日本語で1行あたり40文字、80バイトまでに制限してしまうことにするかな。まあ、レベルAAAに適合する掲示板を作るつもりは今のところないけど。

残りの件名、投稿日時、投稿者名とメールアドレスとサイトURLについては、そんなに難しくないから適当に。って、いくら適当でも、段落でもないものをP要素にしたり、DIV要素とSPAN要素だけでマークアップしたりはしないけど。案をいくつか挙げてみる。

文法違反さえなければ、あとは仕様の解釈とか、思想とかの問題になってしまうのかな。W3CのドキュメントはHTML 4.01の仕様書くらいしか見ていないから、ひょっとしたら上の案のうちには適切でないとされているものもあるかもしれない。教えていただけたら幸甚。

2012/05/14 12:35

日差しが暑い……。温度差で体調崩しそう。

2012/05/12 22:22

ちなみに一番効果がありそうな対策は、投稿がエラーになったら「あなたの投稿はこういう理由でエラーになりましたよ」なんて情報を返さずに、404とかのHTTPステータスコードでエラーを返すようにすることなんじゃないかと思っていたり。しばらく続けたらそのうち来なくなるんじゃないかな、と。

クライアントじゃなくてサーバサイドのエラーになるのかな。なら、500か。

2012/05/12 22:21

一行掲示板では「ひらがな選択認証」を継続しつつ、別な実験を開始。今回の実験は「メッセージ本文」と「お名前」の入力ボックスに付けられた「名前」を入れ替えるというもの。

HTMLについての細かい話はできるだけ避けたいが、今回は書いてみようかな。わからない人は読み飛ばして下さい。明らかな間違いはご指摘いただければ幸甚。

今まで「メッセージ本文」として設置していたINPUT要素のNAME属性の値は"body"、「お名前」の方は"name"としてあった。今回の実験ではこれを入れ替えた。つまり、ブラウザで表示されたフォームを通して投稿されたメッセージならば、本文が"name"、お名前が"body"というNAME属性の値とともに送信される。当然だが、この投稿データを受け取るスクリプトも書き換えて、"name"を本文、"body"をお名前として投稿データを処理するように修正した。ブラウザを通してごく普通に投稿すれば不都合は生じない。「砂糖」と書かれた入れ物に塩を、「塩」と書かれた入れ物に砂糖を入れているようなものだが、レシピも「砂糖」と「塩」を書き換えてあるので、レシピ通りに作れば問題ないというわけだ。

さて、この実験で何を調べたいかというと、スパムを投稿しているプログラム、もしくは人が、フォームをどのように見ているかということだ。上で述べた通り、ブラウザを使って人間が投稿する場合には問題ないはず。ではもしソース、それもINPUT要素のNAME属性の値だけを読んで投稿しようとする存在があった場合、その存在はどのINPUT要素のVALUE属性の値として本文を送り、名前を送ろうと考えるだろうか?

INPUT要素のNAME属性の値は、設置する人間が好きに決めていい。本文と名前を"body"と"name"にしようが、"data1"と"data2"にしようが、"dog"と"cat"にしようが、それでデータを受け取るスクリプトがちゃんと動くなら問題はなかろうと思う。

ところで、サイトを運営している人がみんな掲示板スクリプトを自作できるとは限らない。自作できない人が掲示板を使いたいと思ったら、誰かが提供してくれる掲示板スクリプトを借りてきてサイト内に設置するか、あるいは外部のレンタル掲示板サービスを利用することになる。

こういった「借りてきた掲示板」では、INPUT要素やTEXTAREA要素のNAME属性の値が大体似たり寄ったりの値になっているんじゃないかと思う。本文なら"body"とか"message"とか"comment"とか、名前なら"name"とか"username"とか"handle"とか。そして、サイト運営者は普通このNAME属性の値を変更できず、このまま使うしかない。フォームだけを書き換えた場合、スクリプトが投稿データを処理できず誤作動を起こすだろう。どうしても変更したければスクリプトも書き換える必要があるわけだが、スクリプトの改変が禁じられている場合もあるだろうし、許可されていたとしてもある程度の知識がないと改変できない。レンタル掲示板サービスを利用する場合には、知識があったところでフォーム部分やスクリプト本体に手を触れることもできない。

考えてみればすぐわかるけど、これは「掲示板」に限った話ではなく、メール送信フォームやレンタルブログのコメント欄でも同じことだ。そして、同じスクリプト、同じサービスの利用者が増えれば増えるほど、スパムを投稿するプログラムが力を発揮しやすくなっていく。1,000人が使っている掲示板と、50,000人が使っている掲示板があったとして、たった1つプログラムを作ることでスパム投稿ができるとしたら、どちらを狙うか。多い方に決まっている。

これに対抗するべく、投稿者がプログラムでなく人間であることを確認するための認証を採用しているのが現状。もちろん、認証を採用するといくらか不便になるが、スパムで掲示板が荒れるよりはましと考えることもできる。認証がなくて投稿が簡単な掲示板でも、スパムが日に300件も投稿されるようでは閲覧しにくいので、利便性は著しく低下することになる。有意義なエントリやコメントがたくさんあるのに、スパムのせいで「最近のコメント」機能が役に立たなくなってるブログを見ると、簡単なのでいいから対策してくれないかなあと思ったりもする。

話が大きくなった気がするので、うちの掲示板にも関連するレベルまで話を戻す。要するに、スパムを投稿するプログラムは、どの入力ボックスが「本文」で「名前」で「メールアドレス」で「URL」か、ある程度判断しているだろうと推測できる。そしてその判断はNAME属性の値を材料として行われると考える。というわけで、INPUT要素のNAME属性の値だけを入れ替えてみたわけだ。推測が正しければ、スパムは「新・お名前」であるところの"body"の方のINPUT要素に本文を、「新・メッセージ本文」であるところの"name"に名前を入れて投稿してくるだろう。そしてエラーログを見る限り、推測は正しかったようだ。

ついでに、「新・お名前」こと"body"の方のINPUT要素のデータに200バイトの長さ制限をかけてみた。これはメッセージ本文にかけてある500バイトの制限をスパム投稿者側が見切って短い投稿を増やしたことへの新しい対策だ。これがうまくいくようなら、効果がありすぎてつまらない「ひらがな認証」を外してみてもいいんだけど、そこそこの頻度で「新・お名前」が200バイト以下の投稿もある。上限を150バイトにすればかなり有効だろうと思うんだけど、たとえば万が一ピカソがうちのサイトに来て、フルネームをかたかなで入力して投稿しようとしたときにエラーになっちゃうと申し訳ないからなあ

おお、書いているうちに新しい対策を思いついたぞ。こうして実験の予定が増えていく。でもページビューは増えない

2012/05/04 00:49

ところで、エラーのログを見ると、おとといまではほとんどのエラーが500バイトあるいは1,000バイトの制限によるものだったんだけど、昨日未明からは長い投稿がぱったりと消えている。学習したのかな。自動学習だとしたら、賢いな。人間の手でプログラムが修正されたんだとしたら、うちの一行掲示板に投稿を成功させるためだけに手間をかけたってことなのかな。その手間は割に合わないぞ、掲示板はあたし以外ほとんど誰も見てないんだから。

2012/05/04 00:48

またしてもスパムが来たので、一行掲示板をいったんリセットして、いろいろテストをしてみることにしました。テストと言っても、こちらが変化したときに相手がどう動くか、ちょいと調べてみたいだけですけど。そんなわけで、一行掲示板はしばらく仕様が安定しませんが、ご容赦下さい。

今回は、ひらがなを1文字書いておいて、5つの文字の中から同じものをラジオボタンで選んでもらうテスト。「同じ文字を選ぶ」だけだと、迷惑な投稿者もすぐに察してしまうかもしれないので、見本の方は数値文字参照にしてみた。でも文字は固定で、ランダムに変わったりするわけではない。ランダムに変化するようにできないわけじゃないけど、ぶっちゃけめんどくさいからやらなかった(^^;。

もう少し詳しく書くと、うちの一行掲示板は投稿のときだけCGIを動かしている。投稿されたメッセージは直接HTML文書に記録し、独立したログファイルは用意していない。投稿の閲覧はこのHTML文書を見るだけで済む。なるべくスクリプトが実行されない方がいいかなあと思ってこうしてある。実際のところは、投稿をログファイルに保存して、投稿処理も閲覧もCGIにやらせるとどのくらい負荷が上がるのかなんてことは全く知らないし、1日に300件から500件の迷惑な投稿があって、そのほとんどがエラーとなっていても、その回数分CGIが動いていることに変わりはないわけだけど。しかもエラーのログを取っていれば、毎回ファイルへの記録をするわけで、どちらの負荷が高いかわかったもんじゃない。まあ、これは余談。とにかく、投稿フォームがメッセージ置き場と同じHTML文書にあるから、ひらがな選択部分を閲覧ごとに変化させるとしたらSSIを使うことになる。SSIを使わないなら、CGIが動くたびに、あるいは投稿に成功したときにだけ、HTML文書の当該部分を書き換えるという手もあるけど、SSIだろうがCGIだろうが、5個しかないラジオボタンをランダムに選択するプログラムで投稿されれば、5回に1回は投稿に成功することになる。ラジオボタン5個を使っての認証もどきはこの程度の性能しかないんだから、認証のランダム生成に手間をかけるよりは次に試す認証方法でも考えた方が有意義ってもんです。

対策後、80件くらいの投稿エラーが記録されているけど、ラジオボタンを「い」以外にチェックした投稿はまだ来ていないようだ。文字色とか、アイコンとかの選択だと思ってるのかな。そのうち総当りで来るかしら、あるいはランダムで来るかな。何度か成功したら学習するのかな。

今試している「文字と文字での認証」が破られたら、「画像と文字での認証」に変えてみてもいいけど、どちらにしてもラジオボタンでは総当りやランダム選択で破られる可能性が常にある。回避するためにはテキストボックスを使うことになるけど、認証のためにカーソルをテキストボックスへ移動して、キーボードで文字を入力して、その他に名前とメッセージを入力する必要があるわけで、投稿者から見た利便性は低下する。つまり「投稿しにくくなる」ということだ。「簡単に投稿させない」という対策は、迷惑投稿をブロックしやすくする代わりに、まともな投稿者から見れば利便性やアクセシビリティが下がることになるから、実はあまりやりたくない。もともとあまりアクセシビリティに配慮したサイトじゃないけど、一行掲示板への投稿のハードルを上げてしまうのはやはり望ましくない。ただでさえ投稿がないんだから。

次の対策の候補はいくつかある。迷惑投稿のブロックも目的だけど、そういう投稿をするプログラム、あるいは人間が、投稿フォームをどう解釈しているのかという点にも興味がある。次の対策はその辺を推測できるようなものにするかな。

2012/04/16 21:43

毎年恒例、淡白な日記。今日は誕生日でした。

もうそろそろ、欲しいものもなくなってきました。自動二輪免許くらいかなあ?(自力で取得しろ)

2012/04/09 20:35

切符の残り、最後の1日分を使ってきます。今回は房総方面です。

2012/03/24 09:40

無事帰りました。歩きすぎて体があちこち痛い。

詳しくはいずれ旅行記に。って、いつになるんだ?(^^;

2012/03/22 05:20

また、行ってきます。

2012/03/20 00:28

あした〜あたしは〜旅(著作権保護のため後略)

前回の旅行記がまだ仕上がりませんが、次の旅行へ行くことになりました。前回行ってみたいと思った、三重県の国民宿舎へ。ついでに、前回と同じ東海道を帰ってもつまらないから、別なルートを考えてみたりして……。

ちなみに出発は明日じゃありません。冒頭でそんなことを歌ったように見えますが、その辺は言葉のあやです。本当は今度の木曜日に出発です。

詳しくはいずれ旅行記で報告すると思います。いつまで経っても旅行記が公開されないようなら、「ああ、しがらみの野郎、仕上げられなくて投げやがったな」と思って下さいまし。

2012/03/17 13:36

旅行記ね、書いてるんだけどね、なかなか終わらないのよ。

今どのあたりかって? えっと、あの、初日の午前中……

2012/03/07 22:46

おっと、書くのを忘れてた。昨日の夜中に無事帰りました。

旅行記は……落ち着いたら書きます。

2012/03/05 05:18

じゃ、行ってきます。

2012/03/04 20:52

「旅のしおり」が完成した(注:本当です)。

あとは当日朝、ちゃんと起きられれば旅行に出発できるぞ。

2012/02/26 21:10

列車の旅に慣れるため、ちょいと大回り乗車に初挑戦してきました。ずっと列車に乗っているだけなら、さほど疲れはしないものだなと実感。途中下車して観光するとなると疲れるだろうけど。あとは乗り換え時間が長すぎるとつらいし、短すぎるとせわしない。事前の計画は大事よね。

今日の大回り乗車体験記は後日書くとして、今日はとりあえず切符を買ってきた報告をば。

快速「あいづライナー」の指定席を取った……だって、郡山から会津若松まで1時間、座れなかったらいやだもん。そして今回お世話になる青春18きっぷも購入。前にも書いたけど、買うのは初めて。

青春18きっぷを買うと、うぃーんうぃーんと連続してやたらと発券される。何かと思ったら、3枚にわたる「ご案内」と、青春18きっぷについてのアンケートと、その書き方、切符本体も含めて計6枚も発券された。ついでに先の快速指定席券と、クレジットカードの利用控も切符と同じ用紙で一度に発券されたため、全部で9枚。枝番だけ増えて、発券番号は変わらないんですね。って、細かい話なんで、何の話かわからない人はわからないままで問題ありません。

アンケートを見て思ったんだけど、青春18きっぷの利益配分ってどういう風に計算されるんだろう。自社で売った分が全額自社の売上になるとすると、売上は上がらず利用客ばかり増えて損をする会社も出てきそうだ。かといって売上を各社で持ち寄って6で割るとも思えない。駅の数や営業キロ数で配分ってのもちょっと違うような気がする。もしかして、このアンケートを参考に配分してる……わけないよねえ。

2012/02/25 22:40

あわわわわ……なんか、カクテルについての質問をメールでもらってたみたいで、えらい遅くなったけど返信してみたのね。ところがUnknown userで返ってきちゃったのよ。

送信者がアドレスを変更したのかしら? それとも、携帯のメールアドレスだったから、キャリアが迷惑メールとしてブロックしたのかしら? そもそも、迷惑メールとしてブロックされた場合、Unknown userを返すのかしら?

ともかく、お役に立てなくて申し訳ないm(_"_)m。>質問してくれた方

2012/02/17 00:06

ついに買ってしまった。

新潟発大阪行き、寝台急行「きたぐに」号の急行券、寝台券、ならびに新潟から大阪までの乗車券、しめて\15,540。乗車券って高いのな。

買った勢いで軽く告知。旅行に出ることにしました。出発日は内緒。だけど、急行「きたぐに」は3月17日のダイヤ改正で定期運行廃止が決まっているので、当然その前です。1月10日の日記に「具体的には3月初めくらい」と書いたのは、ダイヤ改正前にこの「きたぐに」に乗ることでした。

詳しいことはいずれ旅行記でも書こうかなと思っているので、そちらへ譲ります。面倒になったらここに書くかもしれませんけど。

2012/02/12 20:47

風邪をひいて寝込んでいました。風邪はもう治ったと思うんですが、なぜか腰から下が激痛。寝すぎが原因? それとも、弱っているところに痛みが出てるだけなのかしら。

今春の青春18きっぷの発売予定がようやくわかりました。あとはいろいろ切符を買うだけです。初めての体験にわくわくどきどき。

詳細は余裕があったらいずれ書きます。なかったら書きませんけど(^^;。

2012/01/10 21:58

今年やりたいことが1つ増えた。しかも、もし実行するならば、わりと近い時期でないといけない。具体的には3月初めくらい。

実行が決まったら何か書くかもしれない。あるいは書かないかもしれない。

2012/01/07 14:40

年末年始にあったことをいくつか書こうと思う。

まず例の宝くじは、100枚の連番なりに当たった。まだ交換していないが、たぶん当選総額は\6,000。これで両親と回転寿司でも食いに行こうかと思う。

別な話。近所の神社へ初詣に行った。意外に人が来ていてびっくり。まあたいてい小さい子供を連れた家族で、あたしくらいの年齢で1人で来ている人はいない。ともかくお参りをし、おみくじを引く。ここ数年がた落ちのおみくじ運だが、今年もやはり上向かないようで、小吉。内容はやたらと女難を強調している。あとは初めに調子に乗るとあとで失敗するから慎重にやれとか、縁談は取り返しのつかないことが起こるとか。今年は結婚しないことに決めた。相手もいないから問題ないんだけど。

ところで、このおみくじの文章って旧かな遣い風に書いてあるんだけど、どうもあちこちおかしいんだよね。「思ふにまかすようにて」は、旧かななら「やうにて」だろうし、「お産 さわりなし」は「さはり」だろうし、「とりかえしのつかぬこと」は「とりかへし」だろうし。これ、昔からの文章を新かなに直し損ねたのか、それとも新しく作ったそれっぽい文章を旧かなにしようとして間違えたのか。どっちにしてもひどいと思う。まあ、ひょっとしたら底本がそもそも間違っていた可能性もあるか。江戸時代以前の本なら、かな遣いがそれほど厳密に守られていなかったりするのかもしれない。不勉強なのでここまで。

また別な件。やまびこ氏と秋葉原へ行った。ずいぶん長いこと続いていた例のPC不調だが、現象をよくよく考えれば原因は電源ではないかと思い当たるに至った。ようやくである。今までメモリ→マザーボード→CPU→ハードディスクと疑ってきたが、今思えばまったくもって迂遠な考え方をしたものだ。でも、今まで電源が壊れたことってなかったんだよなあ……いつも他が先に壊れちゃってたから。ともかくそんなわけで、この機会に電源を買うことにした。今まで使っていたのと同じくらいの容量のもので済ました。ついでに上野に寄って、君野園のお茶を購入。僕の飲むお茶ぼくのえん。念願の玉露の粉茶を手に入れた。それから、名前は知らないが上野の大きなおもちゃ屋へ入って、キャストパズルを2つ買った。NUTCASEとCHAINというやつで、どちらも難易度は6。

帰宅後、電源の交換を済ませて、PCの回復を確認。早速パズルに取り掛かったが、これが案外簡単で、1時間くらいで両方解けてしまった。

NUTCASEに関しては、構造が大体予想していた通りだったので、あとはどの位置なら抜けるかを探すだけ。そこは面倒だった。CHAINは知恵の輪らしい知恵の輪だった。切れているところ以外に抜けそうな部分がない以上、どうにかして切れているところ同士をかみ合わせるしかなくて、そのためにじゃまなピースをいかによけるか、と考えたらわりと簡単に抜けた。次の課題は以前うっかりはずしてしまったENIGMAを元に戻すことかな。抜くには抜いたんだけど、戻せなくてもう何年も放置したままなのよね。はずし方もすでに忘れてしまったから、もはやあたしにとっては新作同然。考えてみると、最初に買ったキャストパズルがENIGMAだった。はずすのには苦労しなかったはずなんだけどなあ。次に買ったのがNEWSで、これも構造がすぐ理解できたのでわりかし簡単にはずせた。今回2つ買ったので、うちには今キャストパズルが4つあることになる。

2012/01/01 17:21

明けましておめでとうございます。しがらみです。

今年の目標は……いつ死んでもいい体になること。まあ、これは去年からずっと継続中なんですけどね。なかなかそんな理想的な状態にはなれないようで……。端的に書けば、まず欲しいのは金である。しかるのちに健康である。

そんなしがらみですが、今年もよろしくお願いします。