ブログ移転します
WordPressを使ってみて半年。。。
以前ははてなダイアリーを使っていたのですが、やっぱり自分にははてダの方が馴染むよう
なので、ブログを移転(戻)します。
ということで、新しい移転先はこちら
WordPressを使ってみて半年。。。
以前ははてなダイアリーを使っていたのですが、やっぱり自分にははてダの方が馴染むよう
なので、ブログを移転(戻)します。
ということで、新しい移転先はこちら
最初は関数型絶対肌に合わんと思ってたけど、触ってみると
以外といけそうな気がしてきたので、Scalaの勉強始めます。
いや、言語としては相当いい感じですよね。
Javaの静的なところとRubyのキレイに書けるところを上手く
合わせたみたいな。
ということで、事始めに文法注意書きメモ。
しばらくは言語自体の勉強して、それから何かアプリを作っていこう。GAEでも動くみたいですし。
Ajaxでのコンテンツ取得に時間がかかっている時に、画面をreloadすると、Firefoxだけreload後にエラー処理が実行された。
例えば、ブラウザ側では
$.ajax( {
type: "get",
url: "test.php",
data: queryString,
success: function(msg){
alert( "Success! " + msg );
},
error: function( msg ) {
alert( "Error! " + msg );
}
} );
で、サーバ側では時間がかかるようにsleep(10)とかしといて、待ってる間にブラウザをreloadしてみます。
すると、XHRがabortされずにエラーハンドラが実行されちゃう。
エラーハンドラが実行されてしまうのは、リロードされるタイミングでreadyStateは4なのに、statusが0(ってか空っぽ)が返ってきて、エラー処理まで到達してしまうからなんだけど、XHRってreload関係なく引き継がれるのか。。。
IEとSafariはよしなにabortしてくれてるみたい。
Firefoxで”readyState”が4なのに”status”が0ってのは仕様らしくて、その場合”responseText”があるかどうかでabortするか判定できる。
ちなみにjQueryの$.ajax関数は対応してないorz
そもそも、まだレスポンスが返ってきていないので、readyStateは1を返すべきですが。
でもreloadのケースの場合、reloadされるタイミングでabortしないといけないので、上の対応をしてもどうしようもない。
ということで、MDCを見たら”onBeforeUnload”というドンピシャなイベントを発見。
$( document ).bind( 'beforeUnload', function() {
xhr.abort();
} );
これでエラーが出なくなりましたー。ヒャッハー!
勉強になりました。
ちょっと早く帰れた日は、HTML5を勉強していくよ!
で、早速Web Workersを触ってみました。
バックグラウンドで処理を実行してくれる上に、マルチスレッドで動いてくれるらしい。しかもマルチコアCPU対応とのこと・・!
これまでのJavaScriptはシングルスレッドなので、setTimeout()使って無理くり並列で処理させていたのが、これでだいぶスッキリできる、、のか?
チュートリアルを参考に、フィボナッチ数列の計算をバックグラウンドで実行してみました。
sample.html内
// workers
var start1 = new Date();
var worker1 = new Worker('job1.js');
worker1.onmessage = function (event) {
document.getElementById('result1').textContent = (new Date() - start1) + "ms, " + event.data;
};
job1.js
function fib( num ) {
var list = {};
var _fib = function( n ) {
if( list[n] ) return list[n];
if( n <= 2 ) return 1;
return list[n] = _fib(n-1) + _fib(n-2);
}
for( var i = 1; i <= num; i++ ) {
postMessage( _fib( i ) );
}
return list;
};
fib( 1000 );
おー何か楽しい。
HTMLとWorkerのやりとりはシンプルで、
Workerから postMessageで HTMLに通知を送り、
HTML側ではWorkerインスタンスの onmessage イベントで通知を受け取れます。
逆にHTMLからWorkerに通知を送ることはできないみたい。
(ストップとかできないのかな?調べよう)
また、HTML側で定義した関数や変数はWorker内で利用できないので、Worker内に全て記述する必要があります。
HTMLとWorkerで相互にデータをやりとりする場合は、
HTML側で
・workerをインスタンス化
・何かトリガーになる関数で、worker.postMessage( value )
・workerからの結果受け取りのためのworker.onmessage( event )
Worker側で
・onmessage( event ) 内で、postMessage( result )
みたいにやれば、相互にやりとりが可能です。
実際に使う場合は、ラッパを作ってしっかり汎用化しないとカオスな感じになりそうですが。。。
ちなみに、WebSocketはまだSafari4でもFF3.5でも未実装みたい。
次はShared Workerを見ていくお。
会社の研修に1泊2日で金曜、土曜と行ってきましたー。
研修といっても同期と人事だけなので精神的にはきつくなく、要は久々に同期と飲み明かすといったもので。
声出せ、声!小せえよ!とかそういうガクブルなものではなくてよかったです。
やっぱり同期はいいもんですね。
っていうか、みんなちょっとづつ偉くなってきているので、オレも頑張ろう。
というモチベーションがちょっと沸いたので、行った意味はあったのかも。
しかし、本当に自分のキャリアどうしていこうかな。。。
週末はホテルミラコスタ&ディズニーランドに行ってきた!
金曜の夜から行って、ディナー食べてから宿泊したのですが、な、なんとスウィートが空いてるので、同じ料金で変更しておきましたとのこと。
こんな形で人生初のスウィートを体験するとは。。

て、テレビもトイレも2つあるよかあちゃん。しかも風呂がユニットバスじゃないよ!
となんとも庶民ぷりを発揮してベッドでブルブル震えることしか出来ませんでした。
まあディズニーシーを全面に望める夜景は最高でしたけど。
やはり近くのホテルに泊まっておくと、ランドに行くのがホントに楽ですね。
いっつも現地に着いたら結構疲れてるので。
新しくできたモンスターズインクのアトラクションも乗れたし、いいリフレッシュとなりました。
元記事。
むー、パターン厨とjsで名前空間汚さない厨は絶賛かかり中だー。
最近まで3項演算子厨もかかってました。
JSだと、継承する設計でもないのに this.initialize.apply 厨とか、メソッドチェーン厨とか?
7月10日に国内初のAndroidケータイ「HT-03A」が発売されますね!
とうとう携帯電話を買い替える日が・・!
携帯電話なんて最後に買い替えたの5年前ですから。
電池パックを交換すること4回!謎の再起動が起こる現象に悩まされること2回!
オレ、この忙しさを抜け出したらAndroidで遊ぶんだ・・・
だってねえ、Flashが動くんですよ?それだけで十分でしょう。
神ベース弾きであられるアンソニージャクソンの名演はいろいろ有名なのがありますが、個人的に最も好きなプレイは、ミシェル・カミロの「one more once」の最後に入ってる「not yet」。
キメの箇所のタイム感がすごすぎです。
直前まで木村カエラ聞いてすげー可愛い最高とかほざいてた奴の言う事じゃないかもしれませんが。
JavaScriptの高速化はドットの数減らしたり、ローカル変数にキャッシュしたり、再描画がなるべく起きないよう気をつけたりと、地道な作業の連続で成果が出るので、疲れます。。。
とりあえずjQueryのeach()は便利なんですけど、for文で回すようにしよう。
とあるプラグインで使われてたeachをforに変えただけで10%速くなってビックリした。
それはそうと、最近Scalaが気になってしょうがない。
チラッとリファレンス見たところ、キレイで読みやすそうな仕様だった。
Scala勉強会したいなー。