2010年5月 8日 #css

まずGoogleが実際使っている画像ファイルを見てみましょう。

Googleの各アイコン

いろんな画像、アイコンが混じっていますね。
そして実際使うときはCSSのbackground-positionで表示するモノを指定しているようです。
例えば検索結果の星マークのCSSを見ると

background-position: -117px -117px;

Webサーバとのコネクションが1回で済むので、
それが狙いですね。

background-positionに関しての説明は:
http://www.htmq.com/style/background-position.shtml

ちなみにこういることをやってくれるライブラリもあるようです。
使ったことはまだないですけど。
http://csssprites.org/

2010年4月28日 #chrome

http://ruzanow.ru/extensions/getflash.crx

インストール後Flashがあるサイトに接続すると
アドレスバーの一番右にFlashのアイコンが表示され、
クリックするとサイト内のFlashの上にDownloadのリンクが表示されます。
そのリンクでダウンロードできます。

公式サイトは多分これです。
http://www.chromeplugins.org/google/chrome-plugins/ext-getflash-8721.html

2010年4月27日 #ie

現象

IE6を使ってSSL(https)経由で接続する時に以下の警告が出るなら
iframeのsrc属性をまずチェックしてください。

このページにはセキュリティで保護されている項目と保護されていない項目が含まれています。

ダメな書き方

<iframe />
<iframe src="" />

解決策

src属性にちゃんと値を設定するか、javascriptでfalseを指定する

<iframe src="/dummy.html" />
<iframe srec="javascript:false" />

存在しないファイルを指定するとサーバ側のログにエラーが出るかもしれないので、
設定する場合は実際存在するファイルを設定してください。

2010年4月26日 #jquery

下記のURLで試してみればすぐ分かりますが、
表題の通りblockUIで制御したところは解除した後にマウスのカーソルがおかしいです。
IE,FirefoxとChromeでテストした結果、Firefoxは無事のようです。

http://malsup.com/jquery/block/position.html

解決策

jquery.blockUI.jsを開いてreset()のfunctionのところに以下のコードを追加

data.el.style.cursor = 'default';

第三者のソースに手を加えるのはあまりやりたくないけど。

参考サイト

http://groups.google.com/group/jquery-en/browse_thread/thread/c86671033a86be25/ebd5e710cc78885a?lnk=gst&q=cursor#

2010年4月19日 #jquery

よく出来ていると思います。
勉強になります。

siblings: function( elem ) {
    return jQuery.sibling( elem.parentNode.firstChild, elem );
},
children: function( elem ) {
    return jQuery.sibling( elem.firstChild );
},

そしてjQuery.sibling()の中身です!
nodeTypeが1の場合はelementノードの意味です。
nはループに使われて、elemは除外する要素です。
例えばsiblings()の場合は自分自身を除外しています。
for文の書き方も覚えとこう、、
javaでのIteratorのhasNext()関数みたいな動きをしていますね。


    sibling: function( n, elem ) {
        var r = **;

        for ( ; n; n = n.nextSibling ) {
            if ( n.nodeType === 1 && n !== elem ) {
                r.push( n );
            }
        }

        return r;
    }

2010年4月16日 #java

ハマっちゃったException第二弾です。
実際はハマったワケではありませんが、
一応こんなExceptionがあると。

String blank = "";

int i = Integer.parseInt(blank);

これで余裕に下記のExceptionが出ます。

java.lang.NumberFormatException: For input string: ""

何も考えずにあるJavascriptの処理をJavaに書き換える作業で発生したんです。
JavascriptはブランクをparseIntするとNaN(Not a Number)になるが、
Javaは完全におちますね。。。

2010年4月16日 #java

久々にJavaを書いたので、表題のExceptionにハマっちゃいました。
こんなコードでした。

String** array = {"a", "b", "c"};
List<String> list = Arrays.asList(array);
list.add("d");

ちょこっとググッてみたらasListで作ったListに
add()で要素を追加すると上記のExceptionになるそうです。
asListのJavadocでの記載は

指定された配列を基にする固定サイズのリストを返します。返されたリストへの変更は、そのまま配列に書き込まれます。(後は省略)

なるほど。。。
とりあえず深く考えずに下記のように書き換えて回避しました。

String** array = {"a", "b", "c"};
List<String> list = new ArrayList<String>();
list.addAll(Arrays.asList(array));
list.add("d");
2010年4月 4日 #jquery

表題の通り、IE6 + jQuery1.3.2の状態でbindする時に
jQueryのnamespaceを使うと確実にメモリリークが発生します。
jQuery1.4.2では発生しないことを確認しました。

メモリリークが発生するコード

$("#foo").bind("change.abc", function(){});

上記"change.abc"のabcがnamespaceです。
それをなくすことでメモリリークは解消されます。
イベントハンドラの中身とは関係ありません。

メモリリークは発生しない

$("#foo").bind("change", function(){});

これはjQueryのbugとして上げられましたが、
完全に修正できなかったみたいです。
http://dev.jquery.com/ticket/4241
当時の担当者のコメントを見ると

I had a really difficult time getting a reliable test case to verify this actually solves the memory leak. r6321 appears to have fixed this issue

「時間ないからちゃんとテストしてない、r6321の対応で解決できたように見える」と、
ずいぶん適当な回答ですよね。。。