Home

日記
asahi.comがちゃんとtitleタグをつけるようになった (13:51)Edit

今までコーナー名称程度までしかtitleタグに入れてなくって、記事タイトルの取得が面倒だったasahi.comが、ちゃんとtitleタグに記事名称まで含ませるようになったらしい。SEO対策をちゃんとするようになったってことかな。あるいはRSS配信をはじめたついでか。どちらにしろこれでblogmapのメンテの手間がずいぶん楽になるな。あとはzakzakとかnikkansportsとかSANSPOとかもちゃんとtitleタグを入れるようにして欲しいのー。titleかh1〜h3タグあたりまでで解釈できれば自動化も楽なんだが。

Published At2004-03-14 00:00Updated At2004-03-14 00:00

日記
微妙にinvalidなRSSを手軽にvalidにする方法 (13:51)Edit

微妙にinvalidなRSSってのが世の中には結構ある。微妙にinvalidってのは、たとえば、

  • charsetが宣言と違っていたり(日本語なのにISO-8859-1のままになっているパターンが多いかな)
  • URLに「&」とかが含まれていてもescapeされていなかったり(これは結構多い気がする)
  • 不正な文字コードが含まれていたり

とか。

ありもののRSSパーサーとかを使うとちょっとでもinvalidな要素が含まれているとパースできなかったりするんだけど、この程度の微妙なinvalidさだったら自動で修正して読み込んでしまってもかまわない気がする。特に2番目とか。

「&」「<」「>」「"」「'」「&#[0-9A-Fa-f]+;」以外の「&」を「&」にするとかでいいかなー。それとも「&#?[0-9A-Za-z]+;」以外の「&」を「&」にした方がいいのか。

Published At2004-03-16 00:00Updated At2004-03-16 00:00

日記
キンタマ ishinao (13:51)Edit

近頃流行のキンタマhttp://myui.s53.xrea.com/kin/index.html)。Winnyはやっていないんで大丈夫だろうと思いつつも、念のため「キンタマ ishinao」でググって見たら55件も見つかったんで結構びびった。ひとまず関係なさそうだったけど。

そういやこの「キンタマ」の件で、「こういう言葉を使うことによってマスコミや公的機関が話題にしにくくする」みたいな話が出ているのを見て、ふと昔うちのサイト名を「○んこ」という名前にして、日替わりで「○」を五十音順に変えていったことがあるのを思い出した。

「あんこ」「いんこ」「うんこ」まではいいんだけど、そこからしばらくだるくて、「ちんこ」でちょっと楽しくなるんだけど、またしばらくだるい日々が続き、なんとか「まんこ」まで来たところで「まんこ達成おめでとう!」ということでサイト名を元に戻したんだったかな。あのままずっと「まんこ」というサイト名で続けているのも面白かったかもしれない。今からでも遅くないか?

Published At2004-03-17 00:00Updated At2004-03-17 00:00

日記
extedit - Webブラウザの入力フォームで好きなエディタを使うEdit

概要

Internet Explorer(もしくはIEコンポーネントを使ったブラウザ)のtextarea入力を、外部エディタを利用して行うためのツール。IEの右クリックメニューから外部エディタを呼び出してテキストを編集し保存終了すると、textareaにその内容が反映される。

※ソースの公開やカスタマイズ性が不要な方は、「AreaEditor」を使った方が便利ですよ。

必要な環境

  • Windows+IE(コンポーネントを使ったブラウザ)
  • WSH

インストール

  • 2004/4/15板 zipファイル(extedit_040415.zip)/lzhファイル(<extedit_040415.lzh)のどちらかをダウンロードし、解凍する。
  • 解凍されたファイルを適当なディレクトリ(「c:\program files\extedit」など)にコピーする
  • install.exeを実行し「インストール」ボタンをクリックする。
  • IEもしくはIEコンポーネントを使ったブラウザを一度すべて終了し、再起動する

使い方

  • ブラウザでtextareaを持つ投稿フォームがあるページを開く。
  • 編集したいtextareaの上で右クリックメニューから「外部エディタで編集する(extedit)」を実行する。
    • すると、テンポラリディレクトリに編集用のテキストファイルが生成され、そのファイルがエディタで開かれる。
    • ファイル名は日付時刻+「.txt」となる。デフォルトではテンポラリファイルは削除しないので、入力履歴をローカルにバックアップするという意味も持つ。

  • エディタを閉じると、編集した内容がtextareaにセットされる
    • テンポラリファイルには、そのときの日付時刻およびURLが記録される
    • ログファイル(extedit.log)には、日付時刻、URL、テンポラリファイル名が記録される
  • 注意点
    • エディタでの編集中は呼び出し元ブラウザはロックされるため、タブブラウザなどを利用している際には他のウィンドウを参照できなくなるという欠点がある。

アンインストール

  • install.exeを実行し、「アンインストール」ボタンをクリックする(レジストリの登録が削除される)。
  • exteditがあるディレクトリを削除する。

カスタマイズ

  • extedit.jsの設定部を変更することで、以下のカスタマイズが可能になる。
    • tempdir……使用するテンポラリディレクトリ。「ex) tempdir = "c:\tmp";」デフォルト(未設定)ではシステムテンポラリディレクトリを使用する。
    • logfile……ログファイルパス。「ex) logfile = "c:\tmp\log.txt";」デフォルト(未設定)ではシステムテンポラリディレクトリ+"\extedit.log"を使用する。
    • editor……編集の使用するエディタパス。「ex) editor = "c:\program files\hidemaru\hidemaru.exe";」。デフォルトでは「.txt」に関連づけられたエディタを開く。
    • deletetemp……テンポラリファイルの削除設定。「deletetemp = true;」とすると、作成したテンポラリファイルを削除するようになる。
    • targetItems……対象となるtextareaを選択せずに実行した場合に、優先的に対象とするtextareaのname属性。配列で指定する。

TIPS

  • MovableTypeみたいな、投稿欄にHTMLを記述できるツールを使う場合は、テンポラリファイルの拡張子をhtmlにして、エディタをHTMLエディタ(Dreamweaverとか)にするといいかも。
  • HTMLのローカルプレビューをしたい場合は、doEdit()の最後にでも、var preview = window.open();preview.document.write(body);とか追加すると、エディタを閉じたときに別窓が開いてそっちでプレビューできる。
  • 元ブラウザがロックする件、投稿フォームだけはタブブラウザとかじゃなく、単体のIEで開いておく(とメインのタブブラウザはロックされない)という逃げ道もありますよ。アホっぽいけど。

ライセンス

  • extedit.js、インストーラともにGPL(gpl.txtを参照)。

更新履歴

  • 2004/3/18 最初のてきとーバージョン公開
  • 2004/3/18-2 テンポラリファイルを日付時刻で自動生成、削除するようにした。
  • 2004/3/19 全面的に作り直して、exteditという名前にしてアップロード
  • 2004/3/19-2 やっぱりソースを本文にも載せた
  • 2004/3/19-3 インストールと使い方を書いた
  • 2004/3/19-4 textareaが見つからなかったときの処理を変更。あとちょっと変数名をいじった
  • 2004/3/19-5 終了時に親Windowにfocus()。デフォルトでtempdirがない場合はシステムtempパスを利用。デフォルトエディタをnotepad.exeに変更。
  • 2004/3/19-6 textareaにfocusがある状態で呼び出すと、そのtextareaを最優先ターゲットにするよう変更。
  • 2004/3/21 デフォルトエディタを未設定(=「.txt」に関連づけられているエディタ)に変更
  • 2004/3/22 インストーラ付きアーカイブを用意した。あとライセンスをGPLに。
  • 2004/3/22-2 インストーラを(たぶん)単体で動作するようにコンパイルし直した。
  • 2004/3/29 テンポラリファイル名にtextarea名を使わないようにした。テンポラリファイルを残す場合、テンポラリファイルの最初に更新日時、元URLを挿入するようにした。ログファイルに更新日時、URL、テンポラリファイル名を残すようにした(ネタ元)。
  • 2004/4/15 月情報が-1されていたのを修正。日付時刻ベースの文字列をきちんとフォーマットするようにした(ネタ元)。

Published At2004-03-18 13:51Updated At2004-03-18 13:51

日記
この雪はなんディスカー! (13:51)Edit

先に起きたムスコが雪だ雪だと騒いでいて、まあちょっと粉雪でも降っているのだろうと思っていたら、なんかぼた雪が降っているんですが、どないなっとるんですか。ここ数日くそ暑かったはんどうですか? わけわからんな。これが平日だったら、東京近郊は大変だっただろうね。

Published At2004-03-20 00:00Updated At2004-03-20 00:00

日記
2004F1マレーシアGP (13:51)Edit

予選

やっぱり前回の予選は「だるい」と評判だったらしく、予選方式を変えようという話もちらほら出たらしいけど、ひとまず最初の3戦は現状のレギュレーションでやってみることになったらしい。というわけで、このレギュレーションの間は最初の1時間ちょっとは斜め見していてもかまわないんだね。

というわけで1回目は斜め見。というか流していただけだ。気がついたら2回目も5、6人終わっていた。

さて琢磨。あれ、もう出てきたってことは1回目はあんまり良くなかったのかな。なんかずいぶんステアリング操作が不安定っぽいな。ちょっとオーバーステア気味にセッティングしてちょっと不安定なところを腕でカバーってつもりなのかな。とか書いているうちにスピンアウト。あらら。これで最下位スタート確定ですか。なんでこういうことしちゃうかなー。せっかく今年のBARは車の能力的にスタートダッシュができているんだから、他のチームが追いついていないうちは堅実に走ってポイントを取っておいた方がいいのに。といいつつも、前回はそんな感じで走ってポイントにちょっと届かなかったから、今回はもうちょっと無理しておこうと考えたのかなー。

しまった。PCのバッテリが切れた。というわけでここから先は放送が終わった後の記憶で書く。

相変わらずフェラーリが速いけど、今回はスピンしてしまったアロンソならばいい勝負ができたっぽい程度の差になっているかな。ウェバーはよくわからん。もしかして今年のジャガーってBARと同じ感じなのかな。車自体はトップ4レベルだけど、そのスピードで走れるのはナンバーワンドライバーだけ状態? ウィリアムズ、マクラーレンは相変わらずあんまりぱっとしない感じ。完全にトップ4の下位の混戦に紛れ込んでしまったかな。

決勝

  • あらライコネン、フォーメーションラップでスピンですか。復帰したけど。路面は結構微妙なのかな。
  • おお、アロンソと琢磨がすごいな。ごぼう抜き状態だ。
  • 早速雨ですか。バリチェロはハードタイヤだからさらにきついのかな。
  • 今回トゥルーリがいいな。
  • ありゃ、琢磨まただめですか。復帰できなかったかな? 復帰できていた模様。
  • モントーヤのショートピットストップは、ミスなのか作戦なのかよくわからんな。路面コンディションが頻繁に変わる展開を祈っているのかな?
  • おお、バトンがライコネンをかわしたか。がんばれば表彰台いけるかな。レースペースもライコネンより速いくらいじゃん。
  • あらラルフ、エンジンブローですか。今年のBMWはだめっぽいなー。
  • おお、琢磨ってまだワンストップだったんだ。それで8番手ってことは、すごくいいペースってことじゃん。一発はいまいち速くないけど、レースで地道に順位を上げて結果を出すっていうキャラクターのドライバーになってくれるといいな。
  • で、琢磨ピットストップ。ちゃんと燃料入ったのかな? なんか微妙な雰囲気。
  • ライコネンもだめっすか。ライコネンって、車の能力以上にがんばって走った時ほど、よく車が壊れている気がする。車を酷使しているからとかじゃなくて、運が悪いって感じ。
  • うがー、琢磨ここまで来てエンジンブローですか。もうあとゴールに持っていくだけだったのに。
  • ミハエルまたも楽勝か。差はさほどなかったけど、最後まで危なげなかったな。
  • モントーヤは全然目立たなかったな。今年のウィリアムズのぱっとしなさ(というか去年もそうだったか。速いんだけど、あんまりできがいい気がしない車)からすれば、ものすごくがんばって速かったんだけど、ミハエルの手のひらから出ることができなかったという印象。
  • バトンはちゃんと3位でフィニッシュできたね。最後までどきどきしちゃったよ。
  • バリチェロはタイヤ選択のミスか。あとピットストップのミスもあったか。ソフトタイヤ履いていたらどうなっていたのかちょっと気になる。

Published At2004-03-20 00:00Updated At2004-03-20 00:00

日記
なんでもテキストエディタ (13:51)Edit

2004/3/22

ObjectFromLresultへのリンクを動的に解決する方法を見つけた。

HINSTANCE hInst = LoadLibrary("OLEACC.DLL");
LPFNOBJECTFROMLRESULT pfObjectFromLresult =
(LPFNOBJECTFROMLRESULT)GetProcAddress(hInst, "ObjectFromLresult");
LRESULT lRes;
CComPtr<IHTMLDocument2> spDoc;
HRESULT hr = (*pfObjectFromLresult)(lRes, IID_IHTMLDocument2, 0, (void**)&spDoc);

って感じで動的に関数ポインタを得ればいいのか。単にinclude "oleacc.h"しただけじゃライブラリはリンクされないのか? OLEACCってものの正体もいまいちよくわかっていない。

でまあ、カーソル位置のIEコンポーネントへのポインタは取得できたんだけど、そこから先の処理をどう書くべきか迷い中。IHTMLDocument2のポインタから、現在選択されているtextareaを解決する方法が思いつけないんで、また初期のexteditのようなアバウトな方法に戻ってしまうんだよなー。あとC++でOLEオブジェクトをいじる書き方がいまいちよくわからん&めんどうくさいなー。もっと楽な言語で書き直そうかな。


2004/3/21

Webブラウザの入力フォームで好きなエディタを使う」の発展系を考えているうちに、ふと思いついたネタ。Windows上の入力欄をなんでも自分の好きなエディタで入力する仕組みってのもできそうだよな。

基本的な考え方としては、

  • GetCursorPos(&pos)して現在のマウスカーソル位置を取得
  • hwnd = WindowFromPoint(pos)してカーソル位置のコントロールのウィンドウハンドルを取得
  • GetClassName(hwnd, classname, BUFFER_SIZE);してコントロールの種類を判別
  • コントロールがtextareaの類だったら、SendMessage(hwnd, WM_GETTEXT, BUFFER_SIZE, buffer)して、その内容の文字列を取得
  • テンポラリファイルに書き出して、エディタで開く。
  • エディタが終了するまで待つ
  • テンポラリファイルの内容を読み込み、SendMessage(hwnd, WM_SETTEXT, BUFFER_SIZE, buffer)して、コントロールにセットする

といった感じ。

で、試しにやってみようかと思って、プロトタイプを作ってみたんだけど、あいにくWebブラウザ内に表示されるコントロールは、直接WindowPointではとれないんだね。IEとMozillaで試してみたけど、Internet Explorer_ServerとかMozillaWindowClassとか、たぶんウィンドウ自体がActiveXコントロールになっていて、そのレベルまでしか取得できない。

しょうがないから、取得したhwndのclassnameがInternet Explorer_Serverだった場合は、そこからさらにWebブラウザーコントロールへのポインタを取得して……とかやろうかと思ったけれども、調べてみたらなんだか結構面倒くさそうだったんで挫折(というか、書いてはみたんだけど、ObjectFromLresultへのリンクが通らないってところで詰まった)。

誰か続きをやってみて。

Published At2004-03-21 00:00Updated At2004-03-21 00:00

日記
Amazon Web Service URL変更 (13:51)Edit

でアナウンスされていたAmazon Web ServiceのURL変更に今頃対応。そういや日曜日中に旧URLは無効になっていたんだっけ。主要なデータはキャッシングされているから、全然気づいていなかったよ。

SOAPな人は、WDSLファイルのURLをhttp://soap.amazon.com/schemas3/AmazonWebServices.wsdlからhttp://soap.amazon.co.jp/schemas3/AmazonWebServices.wsdlに変更しないとだちかんですよ。

Published At2004-03-22 00:00Updated At2004-03-22 00:00

日記
XULよくわからん (13:51)Edit

2004/3/27

自分で作りかけていたけど、

でちゃんとできたんで、作るの中止。ちなみに上記のスクリプトではブラウザをロックしない仕組みになっているんで参考になるな。

textareaごとにユニークなIDを生成し、それを使ってテンポラリファイルを生成。それをエディタで開く。いったんエディタを開いて以降は、textareaがアクティブになるたびにテンポラリファイルの更新をチェックし、更新されていたらその内容を取り込む。といった感じかな。

mozexの場合は、Mozillaのプラグインとして組み込まれ、そのプロセスの寿命がMozillaと同じになっているからそういうことができるんだけど、IEのコンテキストメニューから呼び出した場合は、寿命は呼び出しから終了までだから、単純にその動きは真似できない(exteditの場合はエディタが閉じるまでスクリプトの動作を止めておく=ブラウザがロックすることで、編集中も寿命を長引かせている)。

思いつく回避策としては、コンテキストメニューから呼び出したときに、元ウインドウに対してイベントハンドラ(呼び出されるスクリプトも込み)を登録しておき、それがテンポラリファイルからtextareaへの書き戻し処理を担う、とかかなー。でもそんなことできるんだろうか。


2004/3/22

Webブラウザの入力フォームで好きなエディタを使う」のMozilla(Firefox)バージョンを作ってみようと、XULを書いてみたんだけど、途中でなんだかよくわからなくなった。

contents.rdfとextedit.jsとextedit.xulとinstall.jsを書いて、installed-chrome.txtに

content,install,url,resource:/chrome/extedit/extedit/

とか書いてみた(install.jsがchrome/extedit/、それ以外はchrome/extedit/exteditに置いてみた)けど、何の音沙汰もなし。install.logにも何も出てこないし。最低限自作のXULを動かすためには何をすればいいんだ?

初歩の初歩のみが書いてあるドキュメントはないかのー。「XUL Tutorial 和訳進行状況」(http://www.mozilla.gr.jp/jt/xul/progress.html)と「Mozillaでプログラミング(XUL)」(http://pc2.2ch.net/test/read.cgi/tech/1019704370/)と「XUL Apps - outsider reflex」(http://white.sakura.ne.jp/~piro/xul/xul.html)を斜め読みしてみたけどよくわからんちん。

Published At2004-03-22 00:00Updated At2004-03-22 00:00

日記
ヨセフアンドレオン社のセキュリティポリシー (13:51)Edit

ヨセフアンドレオンってのは、office氏の事件のターゲットとなったASKACCSのサイトを制作した会社。

前にもとても会社の名前を背負って発言しているとは思えない文章をWebサイト上に掲載して、すぐに削除してばっくれたことがある(http://mylog.ishinao.net/id/1123)けれども、また似たような文章を掲載したらしい。

コラム(http://www.josephandleon.co.jp/column/column_backnumber.html)の2004年2月13日によれば、 >>セキュリティポリシー改訂しました。スタッフは必ず守ってくださいね。 ということで、実際のセキュリティポリシーは、http://www.josephandleon.co.jp/staff/security/policy.htmlな感じだそうな。

ジョークなのかな。全然面白くないけど。それとも誰かに対する当てつけのつもりなのかな。自分たちの反省&進歩のなさを表現しているようにしか見えないけど。

>>5.学会の先生から「大きな事件が起きないと変わらない。一発、ドカンと頼むよ」と言われても安請け合いはしない。 >>6.「本当は公表するつもりはなかったんです。引っ込みがつかなくなったんです」という場合も、自分自身で責任を負い、けっして「私は・・の命令支配下にある」などと他人に責任をおっかぶせるようなマネはしない。 >>9.セキュリティの専門家同士の抗争にはかかわらない。 >>10.家族、親族に迷惑をかけない。 >>*詩人のさるやまさるぞう氏より提案のあった「信念をもって事を起こした場合は逮捕されてもジャンパーで顔を隠さない」は、「そんなの当然。ポリシーでうたうまでもない」「そんな思想の脆弱なやつはうちにはいない」ということで却下されました。

とかよくわからんな。それが「本当にそういうことがあったのか」ってあたりが特に。まだ終わっていない事件に関する話題なんだから、ここに書かれている内容はそれなりにちゃんとした意味があると解釈してもいいんだよね。それが真実であるかどうかはともかくとして、上記で匂わせている内容は、ヨセフアンドレオン社の正式な見解であるという「意味」において。

Published At2004-03-23 00:00Updated At2004-03-23 00:00