Harukiya Archives

--/--/--

http://sug.blog2.fc2.com/?overture" target="_new

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2006/02/28

http://sug.blog2.fc2.com/blog-entry-397.html


2006/02/27

http://sug.blog2.fc2.com/blog-entry-396.html

外部ファイルで思い出したんだけど(ってこの日記、雑談?)先日ちょっとしたサンプルのHTMLを書いてアップしたんですよ。そしたらファイル名が重複したよーで、前に上げたファイルを上書きしちったらしい(ヨーデルもホーミーもなく、厳然と、跡形もなく、きっちり上書きされている)。元のファイルはどこからリンクしてたのかは覚えているのだけど、直す気力もなく。(´・ω・`)

管理・アップロードページにファイラを付けてくれとは言わないが、せめて、上書きする時はアラート出してくれー。みんな、どうやって管理してんの?

とまあ、これを書こうと思ったのは、昨夜グッとくる日記を読んだからでして。

ふみQさんと実妹のさんとの会話が、実録形式でブログやコンピタの暗い淵について綴られています。

つまづきつつも手探りしながら、自分で考えブログを更新していくふみQさん。あるときは厳しく、またあるときには温かくそれを見守る洵さん。自らさいなみつつも、前向きに進もうとするラストシーンは一編の映画を観たような感動があります。コメントの2段オチが秀逸。


2006/02/26

http://sug.blog2.fc2.com/blog-entry-395.html

2005-09-12のsugarさんの記事で考えたことなど。微妙に遅反応ですけど、コメントで上がってたので。

10年後か50年後かはわからないけれど、携帯電話はPCの大部分にとって代わる存在になるだろう。もちろんWEBとの関わりも深くなる。そうなればスピーカとマイクが標準装備されているというケータイの強みを生かした(あるいは画面が小さいという弱点を克服した)ブラウジングの方法は必ず出てくる(もうあるかも。未検索)

つまりそれは、声でコマンド入力/耳でブラウズという方法だ。独り言しながら歩いてるのはゾッとしないが、運転中などなら便利かもしれない。「でもさ、聞くんだったら最初から録音でいいじゃん?」という考えもある。が、録音されたコンテンツでは、テキストブラウザで利用できない。だから今からHTMLを使う。テキストで入力(そのうちこれも変わるかも)しても、出力の方法を選ばないのがHTMLの魅力だ。ま、妄想のケータイブラウザにしてもゴミ○ズと名高いIE7にしてもHTMLを解さないはずはない、という期待で書いているわけだが。

FC2ブログ自体、携帯でのブラウズに対応しきれていないことに関しては、もし他のブログサービスが優れているとしたら、それに近づけることは可能だろう。でも完全対応は難しい。これは携帯自体が過渡期なので仕方がないと思う(今何とかして欲しいってユーザ心理もわかるけど)。そのうち、逆にケータイの方が歩み寄る時代がくる、という期待を(以下略)。

むしろ、FC2ブログは記事内にすべてのHTML要素が使え、外部ファイルを許可したという点が評価できる。WEB標準を見据えてないとこの条件、特に後者が実現することはない。携帯で見られることを意識するかしまいかと考えることは、読み手(の環境を)選ぶかどうかという問題と同義だ。が、実はメインコンテンツをHTMLで作るということは、環境依存しないという選択をしたことになるのだ。プラス、HTMLを補助するファイルを自由に分離・選択・結合することで各環境により順応性の高いアウトプットが可能になる。

WWWの資産価値(そう、うちの日記みたく・・・ははは・・・)のことを考えれば、各ブラウズソフトのエンジニアはHTMLを無視できない。それは、すぐ実現するものではないかもしれない。どうしても今読まれなければならないコンテンツは、そのメディアに対応させることもアリだろう。だが、自分が歳をとり、あるいは子や孫がアクセスした時(三次元ブラウザとかIE20βとかでも)ちゃんと内容を受取れ「ああ、あのとき滑ってたっけなぁ」と感慨と反省するために、ウェッブ日記(ネタ)は書かれるのではないだろうか。


2006/02/26

http://sug.blog2.fc2.com/blog-entry-394.html

20060225_0

ちょっと不思議な写真・・・

20060225_1

サンシャイン60展望台より。AEロックって面白い。

F460 上 ISO100 SS1/13 F2.8 下 ISO64 SS1/400 F2.8


2006/02/24

http://sug.blog2.fc2.com/blog-entry-393.html

最近、何やってもうまくいかないんだよ。ムキーってなって、逃避のために突然テンプレ書き始めたりするも、それまでうまくいかない(ここはグチを書くブログですか)

ま、具体的なこと書いてもあれだから。

例えば、オカズが多すぎないか?いや、そっちのオカズじゃなくてダシ巻きとかゴマあえの方。ふと、気づくとどんぶりが空なのに、オカズがいっぱい残ってる。オカズはオカズだけじゃ味が濃すぎるのだよ。健全なオカズは健全な定食に宿る。やはり銀シャリと交互に、あうんの呼吸による融合というかハーモニクスというか(同じだ)を感じたいではないか。

米の絶対量が少ないのか、というとそういうわけでもない。腹は満足している。なのにオカズが余ってる。納豆だったら、メシオカズ・ミキシング可能なので作戦無しで体当たりできる。でも、ステーキだと

  1. 目測で(慎重に)8等分にナイフで切る
  2. 皿のライスも8等分(約45度。内角の総和は360度)
  3. まず両側の脂身が多い部位からいただく
  4. 舌の記憶から肉のうまみが消える前にライスをいただく
  5. 添え物やサラダ(ミズナ入り)も忘れずに
  6. *1-5をクリカエス
  7. あまりにもおいしいのでご飯が進む
  8. 肉(オカズ。もっとも赤身でジューシーな部分)が残ってる

現象をほぼ忠実に再現したが、多少ミエをはっている。ステーキはハンバーグと読み替えて欲しい。

聞くところによると、フルコースなどは一品を食べ終えるまで次の料理は運ばれてこないらしい。それでどうやって、ご飯に分布図を描けばいいのか。

まあ、食事中にTVを見たり本を読んだりしてるから、隙ができるんだよね。だから、僕はもっぱらライトユーザ向けのチャーハンにしてる。で、今度はスープが余るわけだ。


2006/02/24

http://sug.blog2.fc2.com/blog-entry-392.html

さりげなくリニュ。JUGEMにいた時も後は記事を削るしかないというところまでダイエタリーなテンプレーを作ったりしてましたが、テーマは軽さです(存在の耐えられn)

先日ふれた、こさとさんのアンダーソン局在をまねてカテゴリページへのリンクをやめました。diaryが100件超えたあたりで、すでに分類の意味を見失っていたので。気が変わるかもしれないから今後もエントリは大雑把には分けていくし、抜け道マップを取り説ページに移植しときます。もし、うちでこの(封印された)リンクを使った!という方がおられましたら、どんな状況の時に必要だったのかを一報くださると、次の改造に生かせるかもです云々。

さて、昨日読み終えたレタス・フライと、同時に読みはじめた工学部・水柿助教授の逡巡は、同じノベルス版なのだけど前者は一段組み後者は二段組なんである(微妙に伏線になってるでしょ?というか、こういう書き方だから分類が無意味になるんだよな)。で、やっぱ二段組の方が読みやすいわけなんですよ。途中で行がクロスカウンター(謎)したりがないから。

そこで、40~50字で折り返すデザインにしてみました。いちおうVGAでも切れないと思います(IE?何ソレ)。が、言いつくろっても固定は固定、ポリシーのない男でスミマセン。読みにくい場合はブックマークレットをご利用ください。うちのスクリプトの中じゃ、もっとも気が利いてます(CMでした)

あと、角を丸めたら(スクリプトオフ?しかもmozilla拡張だった(Get Firefox !ま、いろいろと惜しい)pino(●´Å`)さんちにそっくりになってしまいました。ひしひしと呵責を感じております。


2006/02/23

http://sug.blog2.fc2.com/blog-entry-391.html

短編集は寝る前に一編という読み方ができ、寝不足にならずに済むところが好きだ。と思っていたら、ショーショートと掌編がミックスされている。まずそのトリックに引っかかる。

「ラジオの似合う夜」と「刀之津診療所の怪」はシリーズがらみ。毎回感じることだが、森博嗣は作中のトリックに力をそそがない作家だ。森ワールドに触れたことのある人間に対しては、事件の外にある謎を提示し90%の解決で後味を残す。読者が読み返す、読み続ける動機を生み出すシステムを考えたのだろう。見事に罠に嵌っているわけだが。

SSの「証明可能な煙突掃除人」が良い。10ページにも満たない作品だが、物理的な謎と解決、そして謎だとさえ気付かないものの不条理な解決、そして物語はじめへの回帰。こういう文章にはなかなか出会えない。地球儀のスライス/有限要素魔法に近い感覚。

レタス・フライ / 森 博嗣
406182466X
Powered By G-Tools

2006/02/20

http://sug.blog2.fc2.com/blog-entry-390.html

凍てた山河の 色を変え
無音の森が 芽ぐむ時
月の原野を 進めよと
背を押す 春の嵐かな

遥かに霞む 楼閣は
己が求めし 楽園か
はたまた 更なる煉獄か
砂塵の道の 遠きこと

退けられし 雲間から
ひたまばゆい 光暈あり
暮れ迷いたる 我が道の
標を照らす 光なり

一度は醒めし この胸に
熱き血潮の 流るるは
ようそろうの 掛け声に
帆をはらませよ 春の風

2006/02/19

http://sug.blog2.fc2.com/blog-entry-389.html

半年以上も前に書きっぱなしにしたことの続編。日頃よりスクリプトは動かないことを前提につくっているだのCSSは好き勝手にやっていいだの発言しているが、「じゃ、HTMLはどうなのよ?」という行間を(自ら)考えてみる。

前回の話は、構造に意味づける要素の規格を作ったというところまで。

この規格にそって文章を作成し、規格を解釈できるUA(ブラウザなどのソフトウエア)を使ってアウトプットすれば文意を伝達できるはずだ、という素敵なもくろみ。すべてのHTMLは読み手のためのものである。アウトプットの方法は意味ごとに装飾されたゴージャスなものかもしれないし、ただのテキストかもしれない。あるいは音声や点字や未来に開発される他の何かかもしれない。が、どの場合でも意味を伝える点では変わりない。それがHTMLが作られた、またHTMLを利用する目的だと僕は理解している。

HTML文章の先頭にはDTD(文章型定義)を置くことになっている。UAに「以下の文章は規格にそって作成された文章です」と宣言するわけだ。これを書いたから正統なドキュメントになるわけではなく、ましてや、おまじないなどではない。宣言したからにはルールに則って作成しなければならない責任を負う。

まず、本文である文章なりテキストを書き、マークアップ=意味の印づけしていく。本文作りとマークアップを同じ人間がやる場合は、簡単な作業でルールを守る以外にコツがあるとすれば素直に考えることくらいなもの。HTMLとは、CSSやjavascriptで使われる技巧からもっともかけ離れたものだといえる。想いを伝えたい衝動をとめられずに書いたラブレターに近いだろう(書いたことないけど)。

上手さつたなさはこの際別にして、文章である限り、それはなんらかの構造をもつことになる。ひとつ以上のパラグラフがあり、必要であればその見出しがある。くわえて、意味をこめた部分やとくに伝えたい部分を対応する要素でマークアップすれば良い。非常にシンプルで他の要素で代用するといった技巧の入り込む余地はない。もしも、ページ全体の整合性が壊れるとしたら、変えられるべきは本文のマークアップではなくページの構造、ブログでいえばテンプレのHTMLだと考える。

例えば、テーブルレイアウトを考えてみる。HTML製作者が本文とメニュー(に当る文章)をそれぞれセルだと考え<tabel>要素で段組(のようなもの作成)したとする。当然UAは本文=セル、メニュー=セルと意味を解釈する。それがUAのメインの仕事だからだ。だが、アウトプットの方法がセルを並列することだという保証はどこにもない。その結果、文章全体の意味が変えられて伝わるかもしれない。これは製作者の本意だろうか?

普通、文章やテキストのどこを読んでも段組という意味は見つけ出せない。ないものを意味づけすることが、不自然でそもそもの間違いだということになる。HTMLには意味を持たない要素<div><span>が用意されているのだから、ないもの(シュールだ)や、意味を持たせたくない部分をマークアップするには、それらを使うことで意味の伝達(意味のないものを伝達しない)は行われるべきである。

では、文章ではない部分のマークアップはどうなるか。例えば<script>要素。うちの場合DTDはXHTML 1.0 Transitionalなので、この宣言を守りページや文章の中でプログラムコードに<script>要素を使うには

  1. コードをコメントアウトする
  2. コードをCDATAにエンコードする
  3. コードに< & "のメタ文字は使わず書き、コメントアウトはしない

の3通りしかない。これはコードの正誤よりも上位に位置するHTMLのルールだ。

1番目の方法はUAによっては本当のコメントとして扱われる場合や無条件でパージされる可能性がある。2番目の方法は(自分の知っている範囲の)UAで実装しているものはない。3番目の方法はUAの解釈まかせである。古いUAではそのまま表示したり、スキップするUAもある。

フェールセーフの観点からは、どの場合も要素内のコードは実行されないと考えるのが安全だ。これが最初の自分の発言につながっている。FC2ブログでは外部jsファイルを許可しているので<script>要素のsrc属性を使いソースコードを要素の外に出すことで一部は解決される。とりあえず、これが現状でのもっとも素直なマークアップだと思う。

javascriptを配布(テンプレ内に仕込んだり)する場合、もっとも留意すべきは「スクリプトが動くかどうか」ではなく「どのようにHTMLに組み込まれるべきか」である。HTMLの子である<script>要素を使う以上、それはHTMLのルールに従わねばならない。<script>要素はDTDのバージョンによって扱い方が違うので、コピペすればOKというものではない。わからなければAnother HTML-lintなどで検証するのが簡単確実。

javascriptはせまい環境でしか有効ではない。エラーを出したり文章の意味を変えてしまうような問題のある実行コードはユーザ側が任意に切ることができる。だが、組み込み方を間違えればHTMLそのものが破綻する。これはUA・ユーザとも修復する手段がない。

結論として、HTMLの使い方=マークアップは自然でシンプルな形にしていくことだと思う。自分でもすべて正しくできているとは思っていない。でも、正しくありたいと意識はしている。そこさえクリアすればWEBページのいわゆる”カスタマイズ”は好きなようにやって良いだろう。所詮はオマケなのだ。CSSという虚飾とjavascriptの見栄、それらすべて剥ぎ取っても中心に残るものこそがコンテンツであり、それを伝えるためにHTMLはあるのだ。(つづく・・・かも)


2006/02/17

http://sug.blog2.fc2.com/blog-entry-388.html

Internet Explorer 7: Beta 2 Previewが公開され、レビュー記事もあちこちでアップされてる。ニュース系は受容の方向、個人サイトではこき下ろし意見が多いように感じた。まぁ、錯綜ってやつですね。自分の興味のスピードに関しては、レンダリングはやや早くDOMアクセスは遅くなっているようです(セキュリティの関係か。知らんけど)

IE7のCSS実装も記事を読む限りでは、かなり中途半端。正式版までに改善というか、ベースラインまで引き上げられることはないだろう。IE6環境のみ、モダンブラウザ向けでIE6/5.5向けハック使用、モダンブラウザ環境のみ、などで作られたテンプレすべてがIE7では崩れる可能性をはらんでいるといえる(考えてみればすごいアップデートだ)。

CFDNさんの言うように、移行はしてみたけどIE6に戻すやっぱりIE7.0も窓から投げ捨てろって人、多いんじゃないでしょうか。上手く付き合っていこうって場合は条件付コメントで振り分けが良さげです。ま、現物を見てみないとわかりませんけど。

RSS対応・セキュリティ強化は歓迎されそう。が、これもFxと同レベルまで、やっとたどり着いた感。ぜんぜん関係ないけど、RSSより従来のアンテナの方が使いやすいと感じるのは歳のせいか。


2006/02/15

http://sug.blog2.fc2.com/blog-entry-387.html

そっか、どーしてもバレンタインチョコの話を聞きたいのか?あまりそういうのを自慢するの好きじゃないんだよね、オレ。無論、もらったよ、数え切れないくらい。

去年までは、うちの女子社員みんなで募金(笑)して男子社員の数だけチョコを用意してくれてたのな(誰も何も言わない・聞かないが、もしかして義理ってヤツ?)。

やっぱり不況なのかね。今年はデスクの上に小鉢いっぱいのm&mが置かれてあった。各自好きなだけ持ってけと。

歳の数ほど食ってやったよ。


2006/02/15

http://sug.blog2.fc2.com/blog-entry-386.html

ご利用ありがとうございます。プラムカラーのスタイルシート(デフォルトで適用しているCSS)の<%blog_name><%introduction>が長い場合カレンダーと干渉してしまう不具合を修正しました。

修正点と修正済みファイル

共有テンプレートは上書きしていませんので、お手数ですが上記ファイルを直接ダウンロードしてテンプレートに組み込んでください。組み込み方法は、バージョンアップのお知らせとCSS設定方法のCSS(スタイルシート)の差し替え方法の項を参照ください。


2006/02/13

http://sug.blog2.fc2.com/blog-entry-385.html

finepix1

というわけで(解禁)、予定調和であるがごとくFinePix F11を買ったのである。ありがとう、欲望バトン。これでまたしばらく、いじったり何かを撮ったりして遊べるぞ。

前機種のFZ1は枚数的には「元を取れるくらいは使った」といえるかもしれない。だが、カメラのポテンシャルの2割も引き出してなかっただろう。簡単にいえば使いこなせなくて飽きたというのが正直なところだ。F11はさらに高機能で高解像度と高感度とA/S/Mモードとか露出補正は1/3EV刻みでナチュラルフォトがシーンモードでフラッシュをオフするらしいのだ。

マニュアル読んだだけでくじけそうになっている。その高機能なカメラをケータイで写真に撮ったらピンボケしている。前途多難な様相だ。

さて、これだけだったら充分に満足感(使ってから感じろよ)にひたれるところなのだが、ちょっとした事件があった。

FinePix 兄弟涙の対面の図。

finepix2 finepix3

実家のオヤジが、去年買ったF460をS5200に買い換えするのでくれるという。なぜもう12時間早く言わない!(F11購入は昨日午前、実家に行ったのがその夜)いったい誰に似たんだ?その飽きっぽさは。

知識と力量があれば比較記事など書けるのだろうけど、たぶんムリ。ニコもちでぬるくやっていきます。というか、これレビューか?


2006/02/12

http://sug.blog2.fc2.com/blog-entry-384.html

コメントの展開の方が本文より面白いんで、その辺で考えたことなど。

お口直しに


2006/02/07

http://sug.blog2.fc2.com/blog-entry-383.html

あまりひどいんで「春眠、くいつきを覚えず」から改題(もなにも、内容が違うがや)レタス・フライ工学部・水柿助教授の逡巡は、いずれ。


前9巻(読んだのに何故かレビューがない)は対メロの心理戦というよりはアクション色の濃い内容だったが、10巻前半は対ニアの心理戦。こっちの方がデスノらしさがある。

ついにニアは、キラ=L=八神月までを突き止めた(と確信している)。しかし、この結論の得方には偶然やあいまいな推測が重なりすぎている。1巻のLの推理を見習いたまへ。

後半から登場する新キャラ魅上照がいい。幼年期・少年期とまっつぐに成長していく様が描かれ、青年期でいきなりデムパ開眼。「削除。削除。削除。」こういう性格好きだ。

DEATH NOTE 10 / 大場 つぐみ・小畑 健
4088740181
Powered By G-Tools

2006/02/07

http://sug.blog2.fc2.com/blog-entry-382.html

どこで読んだのか忘れたがプログラムのバグというのは、朝取れるバグと夜取れるバグがあるそうだ。夜(つまり、これはコーディングやバグ取りを集中して続けてる間に夜になったという意味)に気付きやすいバグはスペルミスやケアレスミスが多く、朝(一旦作業をはなれ睡眠をとるなり食事するなり頭をリフレッシュした後)に突如天啓のごとく見つかるのが論理的な間違いや大局的な不具合である、といったような感じの話だった。

文章だってキーボードに向かって考えている時より、全然別のことをしているとプロットが浮かんだりする(それで、この程度の文章なんだよ、悪いか)。この法則はHTMLやCSSのソースにも当てはまるかもしれない。なので、スクリプトなんかを作ったら即アップせず、忘れるくらいまで放置するということをたまにやる。時間をおいて読み返すと、アラ不思議「なんで、こーなるの?」というミスを発見するのだ(そのまま本当に忘れてしまうことだってあるのだが)。

さて、前回のスクリプトにはある不具合が存在する。そこを直してみよう。(これは、考え方の考え方みたいなメタネタです。言いたいことはここまでに書いてあります。以下のスクリプトはテストすらしてません。

<form>のIDは一律でないから使えない。が、name属性はユニークなので代用できる。という部分が論理的というか、もっと根本的な所で間違えていた(スマン)。FC2ブログでは複数記事を表示していても、それぞれの記事にコメント送信フォームを置くことができる。comment[no] の <%pno>こそがブログ全体においてユニークな値である。どこのフォームからsubmitされたかは重要ではないわけだ(と、これは別のネタに繋がりそうな予感)。

前回のスクリプトでは、最初のcomment[body]を見つけた時点で探索を終えていた。これでは2番目以降のフォームから送られた”&”は”&amp;”に変換できない。個別記事だけにコメント送信フォームがあるテンプレでは変換・送信されるだろう(実際にはテストしてません)から、この不具合はひじょーに見つけにくいといえる。

で、修正したコード。

  1. var before_event = null;
  2. if ( document.getElementsByTagName ) {
  3.  var B = document.getElementsByTagName( "BODY" )[0];
  4.  if ( typeof B.onload == "function" ) before_event = B.onload;
  5.  B.onload = function() {
  6.   if ( before_event ) {
  7.    before_event;
  8.    before_event = null;
  9.   }
  10.   hoge();
  11.  }
  12. }
  13. function hoge() {
  14.  if ( document.forms && document.getElementsByTagName ) {
  15.   with ( document ) {
  16.    for ( var i=0; ( F = forms[i] ); i++ ) {
  17.     if ( F.innerHTML.match( /comment\[body\]/ ) ) {
  18.      if ( typeof F.onsubmit == "function" ) before_event = F.onsubmit;
  19.      F.onsubmit = function() {
  20.       if ( before_event ) before_event;
  21.       for ( var j=0; ( T = this.getElementsByTagName( "*" )[j] ); j++ ) {
  22.        if ( T.name && T.name == "comment[body]" ) {
  23.         T.value = T.value.replace( /&/g, "&amp;" );
  24.         return true;
  25.        }
  26.       }
  27.      }
  28.     }
  29.    }
  30.   }
  31.  }
  32. }

あまり変わってないように見える。前回、送信フォームとコメント文字列を持つ要素の探索は同時に行い、最初に見つけたところで処理を終え(break)ていた。ここを分割しすべてのフォームを調べるようにすれば良い。

修正案では、すべての<form>の探索後、その要素内にcomment[body]の文字列を含んでいれば(実はあやうい判定だ)、そのonsubmitイベントで、はじめてコメント文字列を持つ要素の探索と実体参照化を行うことにする。

複数の(可能性がある)フォームに割り当てられている(可能性がある)他のイベントはすべて同じものではない可能性(こちらはグンと高くなる)があるから、このままではまずい。そゆわけで、またしばらく放置しとくのである。(つづく・・・のか?)


2006/02/05

http://sug.blog2.fc2.com/blog-entry-381.html

ホントに行くたびに違う顔の街、アキバを探索。F11(もうコレに決めた、が購入に踏み切れず)は4万円を切っていて、メモリ込みで5みゃんえん。 ( ̄ヘ ̄;)ウ~ン

ついでに色々と物色。VAIO-Rも下級機種じゃ17万台、これキーボードがめっさ良いです。今のVAIOノートもキータッチだけで選んだようなもの。キーボードって半導体なんかと違い、生産コストが昔からあまり変わらないらしい。エントリー機になるほど、こういう部分の質が落ちる。逆にソフトがてんこ盛りなのは、あまり嬉しくない。僕のVAIOには3年間一度も立ち上げたことのないモノもある。


2006/02/04

http://sug.blog2.fc2.com/blog-entry-380.html

いや、今日は寒いね。こんな時VAIOノートをテーブルの上からラップトップにすると暖がとれる。かじかんだ手は排気ファンにかざしてね。ちょっとお得な情報。

冬が来るたびアンチモモヒキな話を書いてるんだけど、心の師と仰ぐあのお方も、ついにタイツに手を出した・・・もとい足を入れたらしい。今年こそ「オレももうダメか」って弱気になってる。

子供の頃は、イソノ何某のように半ズボンで年間すごしてた。あの頃は皮膚感覚がとても鈍感だったんだな。今の僕のオシリはとても敏感(すばらしいミス検だ)で、数センチの布地の違いをも感じ取れるよ。ブリーフよりトランクスの方が温かいって知ってた?

ということはだ、トランクスの裾の部分を長く、足首まで伸ばしたら売れるんじゃなかろうか。素材もネルや起毛にして。このアイディアで一発当てたら新しいファンヒーターが欲しい。できるなら、春が来るまえに。


2006/02/02

http://sug.blog2.fc2.com/blog-entry-379.html

先日Another HTML-lint gatewayを通し、怒られて気付いた(他にもいっぱい怒られちった)のだが、FC2ブログのコメント内の”&”は実体化参照されない仕様のようだ。例えば、<&>とコメント送信すると&lt;&&gt;というテキストが鯖に保存される。半角&はURLに含まれている場合があり、気付かないことも多い(オレだけ?)。

そこでコメント欄に書かれた”&”を”&amp;”に変換してから送信するスクリプトを考えてみよう。(これは頭の体操や詰め将棋ライクなネタです。最良の解法はFC2に要望出して実装してもらうの一手(他力))

スクリプトのメイン、書き換え部分はちょー簡単。

  1. コメント文字列 = コメント文字列.replace( /&/g, "&amp;" );

どうせなら、プラグイン化も視野にいれポン付けで動くものの方がシバリがあって面白い。プラグインするページには複数のフォーム、例えばメール用、サーチ用etcがあるかもしれない(もちろん無い場合だってありうる)。その中からコメント送信フォームを見つだすのがキモになる。<form>のIDは一律でないから使えない。が、name属性はユニークなので代用できる。

  1. function hoge() {
  2.  if ( document.forms && document.getElementsByTagName ) {
  3.   with ( document ) {
  4.    for ( var i=0; ( F = forms[i] ); i++ ) {
  5.     for ( var j=0; ( T = F.getElementsByTagName("*")[j] ); j++ ) {
  6.      if ( T.name && T.name == "comment[body]" ) {
  7.       T.value = T.value.replace( /&/g, "&amp;" );
  8.       break;
  9.      }
  10.     }
  11.    }
  12.   }
  13.  }
  14. }

5行目の記入欄を探す部分で、対象は<input>の場合や<select>の可能性だってありうる。なので(謎)<textarea>と決めつけない方がよさげ。ラジオボタンやセレクトのvalueを送信する、アンケート風なコメント欄だってやろうと思えば作れるのだFC2。(脱線)

さて、すべてに当てはまると限らないがスクリプトには実行のタイミングが重要なものもある。このサンプルでは、コメント書き終わりよりも後、かつ送信よりも前に行いたい。<form>にはonsubmitという条件にぴったりなイベントがあるので、ここで書き換える。

  1. var taget_comment, before_event = null;
  2. function hoge() {
  3.  if ( document.forms && document.getElementsByTagName ) {
  4.   with ( document ) {
  5.    for ( var i=0; ( F = forms[i] ); i++ ) {
  6.     for ( var j=0; ( T = F.getElementsByTagName("*")[j] ); j++ ) {
  7.      if ( T.name && T.name == "comment[body]" ) {
  8.       taget_comment = T;
  9.       if ( typeof F.onsubmit == "function" ) before_event = F.onsubmit;
  10.       F.onsubmit = function() {
  11.        if ( before_event ) before_event;
  12.        taget_comment.value = taget_comment.value.replace( /&/g, "&amp;" );
  13.        return true;
  14.       }
  15.       break;
  16.      }
  17.     }
  18.    }
  19.   }
  20.  }
  21. }

1行目にグローバル変数を設定。他にどのようなスクリプトが共存しているか解らないので、変数名はなるべく複雑なものにするのがバッティングを避けるコツ(確実ではないが)。8行目でコメントが入る要素、9行目でonsubmitに他イベントが割り当てられていればその内容を、それぞれ変数に保存しておく。

最後に<body>が読み込まれたらスクリプト本体を実行させる。onloadイベントを上書きしないような配慮も。

  1. var taget_comment, before_event = null;
  2. if ( document.getElementsByTagName ) {
  3.  var B = document.getElementsByTagName( "BODY" )[0];
  4.  if ( typeof B.onload == "function" ) before_event = B.onload;
  5.  B.onload = function() {
  6.   if ( before_event ) {
  7.    before_event;
  8.    before_event = null;
  9.   }
  10.   hoge();
  11.  }
  12. }
  13. function hoge() {
  14.  if ( document.forms && document.getElementsByTagName ) {
  15.   with ( document ) {
  16.    for ( var i=0; ( F = forms[i] ); i++ ) {
  17.     for ( var j=0; ( T = F.getElementsByTagName( "*" )[j] ); j++ ) {
  18.      if ( T.name && T.name == "comment[body]" ) {
  19.       taget_comment = T;
  20.       if ( typeof F.onsubmit == "function" ) before_event = F.onsubmit;
  21.       F.onsubmit = function() {
  22.        if ( before_event ) before_event;
  23.        taget_comment.value = taget_comment.value.replace( /&/g, "&amp;" );
  24.        return true;
  25.       }
  26.       break;
  27.      }
  28.     }
  29.    }
  30.   }
  31.  }
  32. }

要素の探索、イベント割り当て、実行部分を分けて考えるのが早道か。(つづくかも)


2006/02/01

http://sug.blog2.fc2.com/blog-entry-378.html

同僚がバタバタ倒れていって、インフルエンザA型。

通常6人1チームな仕事に、2人っきりな市場の明け方。

とうぜん各所で問題山積、仕事の進行ガッタガタ。

自分が最初に風邪ひいたのにと、休みそこねていかり肩。

「ああ、元凶はオレだったか」と、やっと気付いた今しがた。


< 01月 | 03月 > | 表紙へ戻る | 探す | 案内


2007年 11月 2007年 10月 2007年 09月 2007年 08月 2007年 07月 2007年 06月 2007年 05月 2007年 04月 2007年 03月 2007年 02月 2007年 01月 2006年 12月 2006年 11月 2006年 10月 2006年 09月 2006年 08月 2006年 07月 2006年 06月 2006年 05月 2006年 04月 2006年 03月 2006年 02月 2006年 01月 2005年 12月 2005年 11月 2005年 10月 2005年 09月 2005年 08月 2005年 07月 2005年 06月 2005年 05月 2005年 04月 2005年 03月 2005年 02月 2005年 01月 2004年 12月 


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。