ブログ移転します

posted by cheesepie on 2009.09.25, under diary
25th

WordPressを使ってみて半年。。。

以前ははてなダイアリーを使っていたのですが、やっぱり自分にははてダの方が馴染むよう
なので、ブログを移転(戻)します。

ということで、新しい移転先はこちら

Scalaはじめました

posted by cheesepie on 2009.08.28, under scala
28th

最初は関数型絶対肌に合わんと思ってたけど、触ってみると
以外といけそうな気がしてきたので、Scalaの勉強始めます。

いや、言語としては相当いい感じですよね。
Javaの静的なところとRubyのキレイに書けるところを上手く
合わせたみたいな。

ということで、事始めに文法注意書きメモ。

valとvar
再代入できる変数はvar、再代入できないのがval
関数型指向でいくなら、varを使わないような記述を心がける
staticな関数作りたい時
クラスは静的メンバを持てないので、代わりにobjectを使って実装する
リストとタプル
共にイミュータブルだけど、違う型の値を持てるのがタプル。
リストに「::」で値を追加する際、最後にNilを追加するのが何か慣れない

しばらくは言語自体の勉強して、それから何かアプリを作っていこう。GAEでも動くみたいですし。

FirefoxでAjax中にF5押したとき

posted by cheesepie on 2009.08.07, under javascript
07th

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を勉強していく

posted by cheesepie on 2009.08.05, under html5, javascript
05th

ちょっと早く帰れた日は、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を見ていくお。

研修に行ってきたお

posted by cheesepie on 2009.07.19, under diary
19th

会社の研修に1泊2日で金曜、土曜と行ってきましたー。

研修といっても同期と人事だけなので精神的にはきつくなく、要は久々に同期と飲み明かすといったもので。
声出せ、声!小せえよ!とかそういうガクブルなものではなくてよかったです。

やっぱり同期はいいもんですね。
っていうか、みんなちょっとづつ偉くなってきているので、オレも頑張ろう。
というモチベーションがちょっと沸いたので、行った意味はあったのかも。

しかし、本当に自分のキャリアどうしていこうかな。。。

週末、舞浜にて

posted by cheesepie on 2009.07.13, under diary
13th

週末はホテルミラコスタ&ディズニーランドに行ってきた!

金曜の夜から行って、ディナー食べてから宿泊したのですが、な、なんとスウィートが空いてるので、同じ料金で変更しておきましたとのこと。
こんな形で人生初のスウィートを体験するとは。。
cimg1082

て、テレビもトイレも2つあるよかあちゃん。しかも風呂がユニットバスじゃないよ!
となんとも庶民ぷりを発揮してベッドでブルブル震えることしか出来ませんでした。
まあディズニーシーを全面に望める夜景は最高でしたけど。

やはり近くのホテルに泊まっておくと、ランドに行くのがホントに楽ですね。
いっつも現地に着いたら結構疲れてるので。

新しくできたモンスターズインクのアトラクションも乗れたし、いいリフレッシュとなりました。

麻疹

posted by cheesepie on 2009.07.09, under development
09th

元記事

むー、パターン厨とjsで名前空間汚さない厨は絶賛かかり中だー。
最近まで3項演算子厨もかかってました。

JSだと、継承する設計でもないのに this.initialize.apply 厨とか、メソッドチェーン厨とか?

Androidケータイもうすぐ!

posted by cheesepie on 2009.07.09, under diary
09th

7月10日に国内初のAndroidケータイ「HT-03A」が発売されますね!

とうとう携帯電話を買い替える日が・・!
携帯電話なんて最後に買い替えたの5年前ですから。
電池パックを交換すること4回!謎の再起動が起こる現象に悩まされること2回!

オレ、この忙しさを抜け出したらAndroidで遊ぶんだ・・・
だってねえ、Flashが動くんですよ?それだけで十分でしょう。

アンソニージャクソンの名演といえば

posted by cheesepie on 2009.07.02, under music
02nd

神ベース弾きであられるアンソニージャクソンの名演はいろいろ有名なのがありますが、個人的に最も好きなプレイは、ミシェル・カミロの「one more once」の最後に入ってる「not yet」。

キメの箇所のタイム感がすごすぎです。
直前まで木村カエラ聞いてすげー可愛い最高とかほざいてた奴の言う事じゃないかもしれませんが。

1歩づつ前進

posted by cheesepie on 2009.07.01, under javascript
01st

JavaScriptの高速化はドットの数減らしたり、ローカル変数にキャッシュしたり、再描画がなるべく起きないよう気をつけたりと、地道な作業の連続で成果が出るので、疲れます。。。
とりあえずjQueryのeach()は便利なんですけど、for文で回すようにしよう。
とあるプラグインで使われてたeachをforに変えただけで10%速くなってビックリした。

それはそうと、最近Scalaが気になってしょうがない。
チラッとリファレンス見たところ、キレイで読みやすそうな仕様だった。
Scala勉強会したいなー。

pagetop