October 8, 2009

Javascriptのメモ

久々の投稿。改めてきちんと学ばないとだめだと感じて、本を読んでいます。

JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス

中・上級者向きで出てくる言葉も難しめ。だががんばる。 以下はメモ書き。自分がこれはと思った部分だけ載せているので、詳しい内容が気になる方は実際の本をどうぞ。

2章 文法:

  • ブロックコメントは正規表現 /a*/ などとかぶる危険性。//推奨。(p8)
  • 数値型は1つしかない。内部的には64ビットの浮動小数。(p9)
  • ユニコードが16ビットの文字集合だったときに設計されているため、すべての文字は16ビット長。(p11)
  • switch、while、for、do文は、ラベルをオプションとして命令文の前に付けることが出来る。(p12)
  • returnと式の間に改行を入れることはできない。(p16)
  • breakとラベルの間に改行を入れることはできない。(p17)
  • typeofを利用すると・・・オペランドが配列かnullだった場合には、結果はobjectになってしまう。(p19)

3章 オブジェクト:

  • プロパティ名には、空文字を含む任意の文字列が利用できる。プロパティ名の前後につけるクォートは、文字列が予約語でなく、Javascriptの名前に則っていれば、省略可能。(p24)

  • (以下はどっちかというと2章 p19の出張版)
    ||演算子を使ってデフォルト値を設定することができる。(p24)

    var aaa = bbb["ccc"] || "(none)";
    
  • &&演算子を使って、undefinedに対してさらにプロパティを取得しようとしたときのTypeErrorを回避できる。(p25)

    aaa.bbb //undefined
    aaa.bbb.ccc //type error
    aaa.bbb && aaa.bbb.ccc //undefined
    
  • オブジェクトは参照渡しが行われる。コピーされることはない。(p25)

    var a={}, b={}, c={}; //a, b, cはそれぞれ異なる空オブジェクトを参照している
    a = b = c = {}; //a, b, cはすべて同じ空オブジェクトを参照している
    
  • プロパティの列挙。for in文で関数やプロトタイプチェーン上のプロパティを取り除く方法として一般的なのは、hasOwnPropertyメソッドと、typeofを用いて関数を取り除く方法。(p27)

August 24, 2009

祝 mixiアプリ正式公開

でも自作アプリは作りかけのままコンテナの過負荷に巻き込まれていったよ・・・

続きの作業をしたかったのになあ。
OpenSocialの特長を活かして、GooホームとかMySpaceとか他のOSコンテナも意識しながらいろいろ実験してみるかな。
GFCのほうも少し調べてみよう。

追記:
opensocial-jquery が便利だ。JSDefferedつき。
今までこういったライブラリをあまり活用できてなかったけど、これからはどんどん使うべきだと思った。

opensocial-jqueryでちょっと戸惑ったのは、makeRequest() に相当する ajax() 関係のメソッドで、 gadgets.io.ProxyUrlRequestParamters.REFRESH_INTERVAL の設定ができないらしいこと。
jQuery.container.cache = false; で代用、ということらしいけど。

August 20, 2009

opensocial関係のメモ

ぐずぐずしていて、まだこっちにGFC関係のあれこれをつけたりとかは後回し。

あれから気づいたことをいくつかメモ。

作り方のせいかもしれないけども、mixiアプリで画面遷移時にパラメータ渡したいのに、requestNavigateTo()の第2引数にセットした値がgetParams()で受け取れないという問題が。
canvasビューからhome/profileビューへ移動するときにパラメータをもらうテストコードを書いててしばらく気づかなかったんだけど、逆にhome/profileビューからcanvasビューへの移動では普通に取得できてた。

んで、canvas -> canvas な移動なら値渡してcanvasビュー内の画面遷移をdevapp環境でも実現できるかもってことを今思いついたので後で試す。

追記:requestNavigateTo()で飛んだ先のコードタブが最初のサンプルコードに戻ってしまっててダメだったorz

opensocial対応のjQueryがいくつかあって気になってるんだけど、jsファイルのホスティングをしてくれる opensocial-jquery なんかありがたい感じ。

August 18, 2009

ふと思ったけど、opensocialいじるならこのブログ(たんぶら)にもソーシャルな機能をつけてあげたくなってきた。 Google Friend Connectとか使ってみる?

August 16, 2009

DevAppを試すのつづき

mixiアプリになってるDevApp、いくつか制限がある。

コードタブの内容を保存してくれるわけではないみたい。最初にエラーっぽい表示が出るから、そのへんほんとはやってくれそうな感じなんだけども。

あと画面遷移が必要なところまではカバーしてくれないようだ。
「onclickで関数呼び出し」でview内の画面遷移っぽいことをしようとしたら、DevApp環境では、「関数が宣言されてない」とおこられてしまった。
※XMLを書き出してアプリ登録するととくに問題なく動いた。

基本的には、一画面で完結するコードスニペットの動作検証用と考えたほうが良さそう。
08/20 追記:あとData Viewerタブが、取得可能な情報のあたりをつけるのに何気に便利。

あとDevAppからXMLを書き出して、mixiアプリ登録するときに「XMLが正しくない」とおこられるときは、CDATAの閉じるところにへんなインデントがついて分断されてるのが原因かも。

]]>

と、ちゃんとつなげておくと大丈夫だった。

DevApp内でおこられずに画面遷移を実現できる方法ないかなー。

August 15, 2009

mixiアプリづくりを試してみる

オープンベータからもうすぐ正式公開になりそうなmixiアプリ
今頃手をつけてみた。まだサンプルいじって遊んでる程度。
mixiアプリは、Googleが提唱したOpensocialという規格を採用している。

OpenSocial DevApp が便利そう。
mixi内でも使えるのがこれ

これ、”Export XML”でそのままdevapp外のgadget xml にコピペするには不足してそうだ。
devapp内で使える関数、cls(), output()が無い場合にダミーを宣言してみるようにする。output()は、firebugとか使える環境ならdevapp内での動作と同じくconsole.log()に横流し。

/* ADDED ----- */
if (typeof output != 'function') {
    var output = function (data) { if (window.console) console.log(data) };
}
if (typeof cls != 'function') {
    var cls = function () {};
}

でもって、コンテンツ領域に id=”dom_handle” な divタグ(devapp環境上でスクリプト書き換えの対象となるエレメント)が無かったので、これを挟んでおく。

<![CDATA[
<div id="dom_handle"></div>
August 14, 2009

リセットした

さっくり、再スタート。
これからメモ代わりに使ってみることにする。