一年ぶりにtvitterを修正
しばらく放置してましたが、tvitterでログインできない問題を修正しました。
使うのやめてしまった人も、まだの人も、よろしければ使ってみてください。
公開中のBRAVIA用アプリ一覧
リリースしてから1年ほど経過していたtvitterですが、先日の更新がきっかけか少し話題になっているみたいですね。便乗して公開中のBRAVIA用アプリを改めて紹介。
neltv - BRAVIAで動く2ちゃんねるのTV番組実況ビューア
個人的には最も使用頻度の高いアプリです。
視聴中のTV番組の2ch実況をひたすら表示するのですが、その高速&無秩序なレスっぷりにテレビの視聴体験が激変します(大げさ)。
こちらのエントリにデモ動画があります。
tvitter - BRAVIAで動くtwitterクライアント
twitterのつぶやきを閲覧・投稿できるアプリです。
白状するとあまりアクティブなtwitterユーザではないので、作ったものの自分ではあまり使ってなかったりします...
AnySearch - BRAVIAのWeb検索フロントエンド
Google、Yahooなどいろいろな検索エンジンでキーワード検索するアプリです。
アプリキャスト本家の投稿ページのランキングでは公開以来3位以内をキープしています。
アプリキャストのタイマの持つ致命的な欠点 + その解決策
アプリキャストのタイマ関数は以下のような問題を抱えています。
- コールバックにグローバル関数しか指定できない*1。このためタイマを使うたびに名前空間が汚染され、またクロージャが使えません。
- 同時に3つ以上のタイマを設定できない。多少複雑なプログラムではタイマが3つでは不足しがちです。そうでなくても、「今タイマ何個使ってたっけ?」と意識しながらプログラミングしなければいけないのは、ストレス以外の何ものでもありません。
aclibでは、これらの問題を解消するために独自のタイマ関数を用意しています。
*1:グローバル関数以外を指定すると「setting timer with anonymous function is not allowed.」というエラーが出ますが、単に関数に名前をつけるだけではダメで、グローバル関数である必要があるようです
aclibでアプリキャストのノード操作を100倍高速化する
アプリキャストでは、getPosX()、 getW()、などノードの属性値を取得する関数がめっぽう遅いです。
// ベンチマーク function bench(f) { var d = Date.now(); for (var i = 0; i < 100; i++) f(); print(f.name + ' -> ' + (Date.now() - d) + ' msec'); } var node = getNode('foo'); bench(function getPosX1() { getPosX(node); }); bench(function setPosX1() { setPosX(node, 10); });
// 結果 getPosX1 -> 1563 msec setPosX1 -> 16 msec
get系がset系に比べてめちゃくちゃ遅いことがわかります。
上記はエミュレータでの計測結果ですが、実際のTVでも同じくらい遅いです。
aclibのNodeオブジェクトでは、
続きを読むaclibでアプリキャストのノード操作をオブジェクト指向にする
aclibを使うと、アプリキャストでのノード操作をオブジェクト指向にすることができます。
// 標準的な記述 var node = getNode("foo"); setW(node, 100); setPosX(node, getPosX(node) + 10); setVisible(node, bar == 0 ? 1 : 0); setStr(node, "bar"); // 上と同じことをaclibを使ってオブジェクト指向で記述する var node = new Node(getNode("foo")); node.w = 100; node.x += 10; node.visible = bar == 0; node.str = "bar";
Nodeクラスを使用するには、aclibのうち、base.jsとnode.jsをincludeする必要があります。
ちなみにaclibのNodeクラスにはもうひとつ大きな特徴があるのですが、それはまた次回説明します。