eneloop kairo

こんな商品あるんですねぇ〜!

そのうちiPhone Kairoってアプリ出たりしないかな?

…ありえないね。。。

RFC3629でUTF-8のバイト範囲が変更されている

最新のUTF-8では5〜6バイトの表現がすべて不正になったんですね
知らなかった…(ぉぃ
最新と言っても RFC3629 って2003年?ずいぶん前だな
他にもコマゴマと範囲が変わったみたい

RFC2279(旧)

1バイト 2バイト 3バイト 4バイト 5バイト 6バイト
UTF8-1 0x00 〜 0x7F - - - - -
UTF8-2*1 0xC0 〜 0xDF UTF8-tail - - - -
UTF8-3*2 0xE0 〜 0xEF UTF8-tail UTF8-tail - - -
UTF8-4*3 0xF0 〜 0xF7 UTF8-tail UTF8-tail UTF8-tail - -
UTF8-5*4 0xF8 〜 0xFB UTF8-tail UTF8-tail UTF8-tail UTF8-tail -
UTF8-6*5 0xFC 〜 0xFD UTF8-tail UTF8-tail UTF8-tail UTF8-tail UTF8-tail
  1. UTF8-tail は「0x80 〜 0xBF」
  2. RFC 2279 - UTF-8, a transformation format of ISO 10646

RFC3629(現)

1バイト 2バイト 3バイト 4バイト
UTF8-1 0x00 〜 0x7F - - -
UTF8-2*6 0xC2 〜 0xDF UTF8-tail - -
UTF8-3 0xE0 0xA0 〜 0xBF UTF8-tail -
= 0xE1 〜 0xEC UTF8-tail UTF8-tail -
= 0xED 0x80 〜 0x9F UTF8-tail -
= 0xEE 〜 0xEF UTF8-tail UTF8-tail -
UTF8-4 0xF0 0x90 〜 0xBF UTF8-tail UTF8-tail
= 0xF1 〜 0xF3 UTF8-tail UTF8-tail UTF8-tail
= 0xF4 0x80 〜 0x8F UTF8-tail UTF8-tail
  1. UTF8-tail は「0x80 〜 0xBF」
  2. 5〜6バイト表現は全て撤廃
  3. RFC 3629 - UTF-8, a transformation format of ISO 10646


このチェックロジック作るの面倒だなァ〜…

参照

*1:0xC081 〜 0xC1BF は使用禁止

*2:0xE08080 〜 0xE09FBF は使用禁止

*3:0xF0808080 〜 0xF08FBFBF は使用禁止

*4:0xF880808080 〜 0xF887808080 は使用禁止

*5:0xFC8080808080 〜 0xFC8380808080 は使用禁止

*6:0xC081 〜 0xC1BF は使用禁止

「はてなブックマーク for iPhone」と「はてなtouch」

はてなtouch


http://click.linksynergy.com/fs-bin/click?id=SsjUadZH7vs&offerid=94348.688105185&type=10&subid=



どういう住み分けなんでしょう???

人力検索とかで質問してみたほうがイイのかな?

って、いまだに「はてな」自体の使い方がよく分かっていない…

しばらくは両方使ってみるかなァ〜

追記

はてなtouch」は岸川さんが作ったアプリであって
はてな公式の〜とかそういうのじゃないということね…

Google Chrome 4.0 (BETA) へupdate

Google Chrome (BETA) を導入


Hatena Bookmark extension

はてなブックマークextension が使えるようになった!


他にもいろいろextension入れてみようかな〜


参照


今朝通勤中に電車でコソコソ見ました…
はやく病院行ってください…

外部JavaScriptファイルでformをsubmitする場合の注意 submitが複数回実行される

submit.js

$(function() {
    var btn = $('.btn');
    btn.click(function(){
        $(this).parents('form:first').submit();
        alert('call alert');
    });
});

test.html

<script type="text/javascript" src="jquery.js"></script> 
<!-- 同じ外部JavaScriptファイルを2回呼び出す -->
<script type="text/javascript" src="alert.js"></script>
<script type="text/javascript" src="alert.js"></script>
<form name="form1" action="test2.html" method="post">
    <input class="btn" type="button" value="送信">
</form>

IE8、Google Chrome3.0

  1. alert.js は2回読み込まれる
  2. submit は2回実行される
  3. alert は2回実行される

FireFox3.5

  1. alert.js は2回読み込まれる
  2. submit は1回だけ実行される
  3. alert は1回だけ実行される

まとめ

ブラウザごとに挙動が変わるのでページ内で同じ外部JavaScriptファイルの読み込みが複数回おこないわないように注意する

jQueryでinputタグのname属性に「submit」が指定されているformのsubmitができない

inputタグのname属性に「submit」が指定されているform

<form name="form1" action="test2.html" method="post">
    <!-- name属性に「submit」を指定 -->
    <input name="submit" class="btn" type="button" value="送信">
</form>
<script language="JavaScript" type="text/javascript">
    $(function() {
        var btn = $('.btn');
        btn.click(function(){
            $(this).parents('form:first').submit();
        });
    });
</script>

「送信」ボタンを押しても反応もナシ
ちなみにid属性にも「submit」が指定されると同じ現象が発生
理由はなんとなく分かる気がするが…?後で調べよう!

inputタグのname属性を別の名前にするか、指定なしにすれば問題なくsubmitされました
IE8、FireFox3.5、Chrome3.0で確認

グレゴリオ暦開始は日本時間のAM09:00から

ロケールが日本であった場合

Date changeDay = (new GregorianCalendar()).getGregorianChange();
System.out.println("Gregorian Change is " + changDay);

実行結果


Gregorian Change is Fri Oct 15 09:00:00 JST 1582

コンストラクタ GregorianCalendar(int, int, int)

もしグレゴリオ暦以降というチェックをかけたい場合
GregorianCalendar(int, int, int) コンストラクタの使用には注意が必要!
時分秒がゼロ埋めされてしまう

Date changeDay = (new GregorianCalendar()).getGregorianChange();
Date date1582_10_15 = (new GregorianCalendar(1582, 10-1, 15)).getTime();

System.out.println("Gregorian Change is " + changDay);
System.out.println("date1582_10_15   is " + date1582_10_15);
System.out.println("changeDate.after(date1582_10_15) : " + changeDate.after(date1582_10_15));
System.out.println("changeDate.before(date1582_10_15): " + changeDate.before(date1582_10_15));

実行結果


Gregorian Change is Fri Oct 15 09:00:00 JST 1582
date1582_10_15 is Fri Oct 15 00:00:00 JST 1582
changeDate.after(date1582_10_15) : true
changeDate.before(date1582_10_15): false


つまり、日本時間で「1582年10月15日」の
「09:00:00」以降がグレゴリオ暦であり
「08:59:59」はグレゴリオ暦ではない(ユリウス暦というらしい?)


「1582/10/15」という入力データだけでは
グレゴリオ暦として扱うのか、ユリウス暦で扱うのか
決定できないので、扱いには注意が必要だ