[js][ruby] jQueryの挙動を調べた

js書くのが久々すぎて完全に忘れてたので、コード汚いけど気にしない。

HTTP Status 2xx系なのにjQueryがエラー扱いするような現象を見かけたので検証してみた。
結論としては1.6.3だと204, 205はエラー扱い。.failでも error : でも同様。
1.7.2なら2xx系は全部成功扱いになってた。バージョンに注意。

少し気になるのがerror扱いになってるはずなのに errorparsererror となっているところ。エラー扱いのコードではパース処理をかけてないはずなのだが...?
xmlが帰ってくることを期待しているので、レスポンスコード2xx系だとパースしようとするも、レスポンスボディはno contentなのでパースに失敗、エラーとして処理、という流れだろうか。
1.7.2では、そこら辺を考えず、2xx系のレスポンスコードが帰ってくれば成功扱い、となっている気がする。

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Demo</title>
    <script src="jquery-1.6.3.min.js"></script>
<!--     <script src="jquery-1.7.2.min.js"></script> -->
<script>
baseurl = "http://localhost:4567/res/";
$('document').ready(function(){
    $('#run').click(function(event){
        var codelist = new Array(200, 201, 202, 203, 204, 205, 206, 400, 401, 402, 403, 404, 405, 406);

        for(var i = 0; i < codelist.length; i++){
            $('#result').append("req:" + baseurl + codelist[i] + "<br/>");

            var jqxhr = $.ajax({
              url : baseurl + codelist[i],
              dataType : "xml",
              async : false,
              success : function(msg){
                  $('#result').append("success" + new XMLSerializer().serializeToString(msg) + "<br/>");
              },
              error : function(xmlhttpreq, msg){
                  $('#result').append("error" + msg + "<br/>");
              }
            });
//              .fail(function() { $('#result').append("error" + "<br/>"); });
        }
    });
});
</script>
</head>
  <body>
<p>jQueryのレスポンスコードとAjaxのエラー処理の検証コード</p>
<p>1.6.3だと204, 205はエラー扱い。.failでも error : でも同様</p>
	<input type="button" id="run" value="RUN"/>
	<div id="result"></div>
  </body>
</html>

サーバの方はRubysinatra使ってさっくりと。(最初知らなくてWEBrickでごりごり書いてたのは秘密)

require 'sinatra'
require 'rubygems'

get '/res/:code' do
    status params[:code]
    headers \
    'Content-Type' => 'application/xml'
    body  "<code>#{params[:code]}</code>"
end

実行結果

req:http://localhost:4567/res/200
success200
req:http://localhost:4567/res/201
success201
req:http://localhost:4567/res/202
success202
req:http://localhost:4567/res/203
success203
req:http://localhost:4567/res/204
errorparsererror
req:http://localhost:4567/res/205
errorparsererror
req:http://localhost:4567/res/206
success206
req:http://localhost:4567/res/400
errorerror
req:http://localhost:4567/res/401
errorerror
req:http://localhost:4567/res/402
errorerror
req:http://localhost:4567/res/403
errorerror
req:http://localhost:4567/res/404
errorerror
req:http://localhost:4567/res/405
errorerror
req:http://localhost:4567/res/406
errorerror

4月になりました

世間はエイプリルフールで盛り上がってますが、毎回いいネタが思いつかないので嘘なんてつかないんだ。ほんとだよ。

長かったモラトリアムと言う名の学生生活も終わり、社会人になります。しかし今年は4月1日が日曜日なおかげで1日エクステンドしてるので、微妙な気分で一日を過ごすことでしょう。何はともあれ、折角働けることになったのでがんばりたいと思います。あとゲーム時間もなんとしても確保するぞ。

わっそうLAN 5thに参加した

3/10(土)に開催されたわっそうLAN 5thに参加しました.会場は千葉県市川市e-sports SQUARE.朝11時から夕方6時までわっそうで遊ぼうというイベントです.

1回目のわっそうLANは2007/07/08,それから1年から半年ぐらいのペースで開催されてきましたが,前回はちょうど1年前の東日本大震災の影響で延期になり,約2年ぶりの開催となりました.

今回は主催nasaさん,運営にサーバ担当qweeさん,配信担当Myhrさんというメンバーでした.最初配信にトラブルがあってスタートが遅れたものの,手慣れた物でスムーズにイベントが進行していきました.配信トラブルではe-sports SQUAREのスタッフさんの助力がすばらしかったです.参加費がやたら安かったのはnasaさんが大会の賞金を投下したかららしいですね.男前!

配信録画

配信はUstreamの録画が残っています.会場カメラとゲーム画面を切り替えながらの配信でした.配信担当もプレイヤーなので時々配信が放置になるのはご愛敬です.

会場

会場のe-sports SQUAREは小綺麗な雰囲気に性能十分なPCとデバイスが揃っており,わっそうLANのようなイベントにはもってこいな感じでした.スタッフさんもいい人でした.e-sports SQUAREのある市川は,秋葉原からも20分程度で着くのでなかなか良い立地だと思います.

会場でのプレイ風景はこんな感じ.

イベント感想

イベントはMidairからスタートして,iCTF,Greed,Raceリレー,Bombという流れで進みました.基本個人競技のレースすらチーム戦にしてしまうことで,Midair以外全てチーム戦となります.

MidairはHassawayさんにボロ負けしたあとpanaさんに僅差で負けて敗退.一度流れを取られると点がぽんぽん入る恐ろしいゲームでした.とりあえずAkimboさんとか上手い人の後ろで「打ち上げてからのー,当たらないー」とか煽るのが楽しかったです.

iCTFはAKKIYさん,Myhrさんと私のチームで挑戦.みんながんばれ作戦で適当に攻めて適当に守ったら全勝しました.

Greedはいいとこなかったねうん.

Raceは,qweeさんに「相手が画面内にいればぶち抜く」と宣言頂いていたのに,そこまで追いつくことが出来ず敗北.nasaさんが「曲がれねー」といいつつ大減速してたのに追いつけなかったのは,さりげなく私も減速してたからです.Haha…

Bombは適当チームでわいわいやって盛り上がった感じ.相手チームの「Aだ!」って声聞いてからBに行き先変えるという駆け引きが楽しかったです.

まとめ

そんな感じで,丸一日どっぷりWarsowを楽しむイベントとなりました.長いことやってる人も最近始めた人も,結構ブランクある人も,みんなWarsowを楽しむ気概で溢れていたのですばらしいイベントになったと思います.自分自身も最近Warsowから離れていましたが,大勢で集まってWarsowを遊ぶのはとても楽しいと改めて実感しました.

今回は私が関西に引っ越してしまうのでこの日程で開催したとの言葉も頂き,大変感謝しています.ネット上では距離は関係ないとはいえ,昔ほど気軽に関東圏のイベントには参加できなくなると思うので,今回のわっそうLANは大事な思い出になりそうです.運営のnasaさん,qweeさん,Myhrさん,ありがとうございました.

イベントとは関係ありませんが,個人的に就職祝いなどして頂き大変感謝しています.Guwashiさん,panaさん,ありがとうございました.新生活がんばります.

そして,このイベントを全力で楽しんだ参加者の皆さん,ありがとうございました & お疲れ様でした!

修士論文提出 & 発表完了

大学院の修士論文の提出と発表が終わりました.国際学会も相まって非常にハードなスケジュールですが無事乗り切ることができました.最後の方はだいぶ「ええいもう知るか!」的なノリでやってましたが,まあなんとかなって良かったです.
4月からは仕事なので,残り少ない学生生活を満喫したいと思います.No time to waste!