備忘録のぺえじ

Archive - 2006/7

'06 7/30またウィジェットの更新です

cursorプロパティの"hand"って非標準の値なんですね。"pointer"に修正しました。

あと、検索候補が一件も表示されてないときにEscキーを押してもウインドウが閉じていなかったのでそれも修正しました。

ここ見てるかな

javascript:(function(){open('http://www.h3.dion.ne.jp/~tokky/');focus();location.href=location.href;})()

こんな感じのスクリプトをOperaのアドレスバーに投げてみてはどうですかね。

追記(7/31 00:30)

"location.href=location.href"だと、リロードされるせいで、URLにアンカー(index.htm#〜みたいなの)を含んでるときやリアルタイムに内容が変わるページを見ている場合に問題ですね。

で、気付いたのですが、コマンドラインから

E:\application\Opera9\Opera.exe javascript:location.href='http://www.h3.dion.ne.jp/~tokky/';blur();

と飛ばすだけでいけるっぽい。タブ関連の設定しだいで駄目になるかもしれませんけど。

'06 7/26ウィジェットをもう少しだけ更新

入力欄にフォーカスがあるときにEscキーを押すとウインドウを閉じるようにしました。Enterキーで該当ページを開いた直後は、普通、Opera本体にフォーカスが移るのであまり意味はないのですが。

あとは一部の文字列リテラルをグローバル変数にしてみたり、スペルミスを直したりw

そういえば

カレンダーのウィジェットをちらほら見かけるんですが、あれって祝日とかどうやって取得してるんだろう。自前で用意するとしたら半永久的にウィジェットを手動更新し続けなくちゃならなくなるしなぁ。他所から拾ってくるにしても、取得先が半永久的に手動更新してくれるかどうか、という信頼性の問題になるだけだし。

やはりアレですね。ネタ帳の中の人が言ってたように、内閣府が祝日の日程を列挙したXMLをWebサービスとして提供するべきですな。自分で言ってて虚しくなるくらい実現する可能性は低いでしょうけど。

'06 7/25ウィジェットの話の続き

WidgetizeでどんなRSSを受け取るようにしたら便利なのかぼんやり考えてたのですが、良いアイディアが思いつきません。天気予報RSSとかどうかな。

自作ウィジェットを更新しました

コードを少し変えましたけど内側の動作は全く変わってない(はず)なので、前回のバージョンを持っていらっしゃる方は新しくダウンロードする必要はありません。

あと、ライセンス表記を付けました。このテの話題にはあまり詳しくないので、とりあえずGPLです。何かマズい状況があったらこっそり教えてください。

なんていうか、いつまでも何も付けないのも逆に無責任な気がして…、この程度のコードで考えすぎ?

'06 7/23たまには昼に更新してみる

なんか最近はてなアンテナの調子が悪いみたいですね(公式アナウンスにも出てますけど)。で、不調が続いているせいでえらく叩かれているみたいです。それだけはてなアンテナの需要が高いということでしょうか。

まあ、まだまだRSSに対応していない大手サイトは多いですからねぇ。僕はむしろ、トップにカウンタを載せてPV数を自慢するという悪習が一部のニュースサイトに依然として残っているのが良くないんじゃないかと思うのですが。特にKKGとか。

エクストラを更新しました

Opera9用ウィジェットを作ってみました。以下、制作中に思ったことをだらだらと。

'06 7/21Opera9といえばやはりウィジェットですか

以下の内容は僕がウィジェットをカスタマイズしたときの覚え書きですが、「これからウィジェットを作ってやるぜ!」って方にも参考になる…かもしれません。

Opera9になって追加された機能であるウィジェット。ダウンロードサイトに色々あるので落として使ってみたりしました。で、途中で気付いたことが。

多くのウィジェットで特定のページにジャンプするために"<a href=〜"が使われてるのですが(特に画像リンク)、これ、普通にウィジェット内のHTMLをブラウザで表示させたときと同じ使い勝手にはならないですね。次から、何でそう思ったのかとその対処として考えたものを挙げます。

ウィジェットのドラッグが優先されるためにリンクをクリックしにくい

つまり、マウスの左ボタンを押してから離すまでにカーソルを1ピクセルでも動かしていると、ドラッグが優先されてリンクをクリックしたことにならない、ということです。リンククリックに失敗するたびにウィジェットの場所がずれるのも微妙にイヤ。

たぶん仕様だと思います。なので、対策としてフォーム部品でリンクを代用することにしました(フォーム部品上ではドラッグできないようになっている)。頻出である「ロールオーバーな画像リンク」をフォームで代替するとこんな感じになると思う。

<input
  type="image"
  src="img/button-normal.png"
  onmouseover="this.src='img/button-hover.png';"
  onmouseout="this.src='img/button-normal.png';"
  onclick="widget.openURL('http://misttrap.s101.xrea.com/');"
  alt="button"
  id="image"
/>

リンクの上にマウスカーソルを置いてもカーソルが"hand"にならない

おかげで、制作者以外はリンクの場所が分からないし、分かってもボタンが小さいと押しにくくなってしまいます。

これ、仕様なのかバグなのかイマイチよく分からないんですよねー。まあ、前述の理由によって<a>要素自体使うのをやめた訳ですが、フォーム部品で代替したときもカーソルを変えた方が大抵の場合便利なので変えちゃいましょう。

やり方は直球です。CSSでcursorプロパティを変更するだけ。ただ今までやってみた感じだと、該当箇所に設定しただけだと意図しない場所もカーソルが変わってしまうときがあったので、

body{
  cursor:default;
}

input[type="image"]:hover{
  cursor:hand;
}

このような感じにするとうまく動くみたいです。

色々言いましたが

なんだかんだ言ってやっぱり楽しいです。もっと流行ってほしい。

惜しむらくは日本語情報の少なさですね、やっぱり。まとめサイトやリング、グループのどこかが人気ウィジェットの日本語訳集などを用意してくれると面白いことになりそうなのに…と他力本願なことを言ってみる。

'06 7/19これぐらいなら出来そう

ウェブページを作る人に8の質問に答えてみようと思います。8個という答えやすさが良心的ですね。

使用しているエディタは?

HTML Project2(HTMLとCSS)、GreenPad(スクリプト等)。

いい加減、スクリプト用の多機能なエディタを用意すべきなのか。でも何を使えばいいのかよく分からないorz

使用しているテキスト置換ソフトは?

HTML Project2のテキスト置換機能。

置換っていうか、実体参照の変換等ですね。

使用している画像編集ソフトは?

IrfanView 日本語版

使用しているカラーピッカーは?

ゆなカラーピッカー

リンクチェックは?

HTML Project2の属性値チェック機能、自分で踏む。

そう頻繁にやってるわけでもないです。

構文チェックは?

Another HTML-lintをHTML Project2経由で。

これもたまにしかやらないですね。

ファイルのアップロードの方法は?

FFFTP

なんかエラー出て送れないときがあるので、そういうときはXREAの管理画面からブラウザでアップロードしてます。

その他使っているソフトがあればどうぞ

Opera+opera_ex(アンカー等の作成)、Firefox+LiveHttpHeaders+Firebug(CGI等の動作チェック)、esPst(定型文の貼り付け)。

要は、HTML Project2最高!ってことです。

'06 7/6またプチ放置期に入りそうです

月一回更新、のようなスタイルは過去ログの管理が面倒になることに今年の頭に気付きました。なので、放置するときはスパッと放置して、思い出したときにまとめて書いていくようにしたいな、と。

その辺、所謂人気サイトの人たちはホントすごいと思います。自分には、ネタを考える力も、質・量の安定した文章を書く力も無いんだなぁと実感するばかりです。

prototype.jsの$関数の話

キャッシュの活用とかECMA仕様との適合性とかの難しい話はとりあえず脇に置いておいて。

引数の数による分岐を一番最初にもっていって、引数がひとつの場合は仮引数を使うようにすると動作が速くなるんじゃないかと愚考してみる。

function $(element) {
  var count = arguments.length;
  if (count == 1)
    return document.getElementById(element) || element;
  for (var i = 0, elements = []; i < count; i++) {
    element = arguments[i];
    elements[i] = document.getElementById(element) || element;
  }
  return elements;
}

要はベタ書きなんですけどね。良いコードと思えないし、実際試したらそれほど早くなってないしで全然ダメだった。残念。

'06 7/1サムネイルの話の続き

Operaでリンク集を表示させたときだけ画像が読み込まれるタイミングが遅い(マウスオーバーした時点から読み込みを開始していた)ので、色々いじってたのですが、ようやっと原因が分かりました。いや、まあ初歩的なミスって言われたら返す言葉も無いのですが。

どうも、ツールチップ内のタグを全部、文字列連結→innerHTMLで挿入、ってやってたのが原因みたいです。DOMで生成するようにしたら解決しました。ドキュメントにアタッチされていないelementオブジェクトのinnerHTMLをどの時点で解析するのかはブラウザ任せ…といったところでしょうか。基本的に文字列連結を使った方が処理速度が速いらしいので、ついinnerHTMLに走ってしまいます。

もちろん、new Image.src = 〜で先読みさせる力技もアリなんですが、こっちの方がスマートかなぁ、と。

ライブドアの話の続き

LDRのクライアントサイドを全部最速の人がプログラミングしたってマジデスカ…。

BloglinesからLDRに乗り換えてソース読んでみようかな…。