Famo.usというHTML5アプリで描画を高速化するライブラリがあるそうです。

http://jp.techcrunch.com/2013/04/03/20130401famo-us-the-framework-for-fast-and-beautiful-html5-apps-will-be-free-thanks-to-huge-hardware-vendor-interest/

 ゲーミングみたいなレベルの高速描画だとWebGLみたいな埋め込みのほうがいいよということらしいですが、一般的なアプリケーションならパフォーマンスチューニングで悩まなくていいよというのが売りらしいです。
 紹介動画見た感じきれいですね。中身も面白そう。使う方にいまいち興味が持てないですが覚えておくと使いどころあるかも。

 mozillaも新しいエンジンを作るそうです。

Mozilla、Samsungと次世代Webブラウザエンジン「Servo」開発
http://news.mynavi.jp/news/2013/04/04/003/

 開発言語がmozilla製のRustという言語だそうです。
 言語マニアを自認してましたが全然知りませんでした。まだまだ勉強不足です。

 何やらGoogleがwebkitをベースに新しいHTMLエンジン作るみたいです。

Chromium プロジェクトの新しいレンダリングエンジン Blink のご紹介
http://googledevjp.blogspot.jp/2013/04/chromium-blink.html

 webkitにはAppleの意見もたくさん入るので調整が大変なんですかね。
 自由にやれる専用のが欲しい! と思う気持ちはわかるかも。

 のでコメント機能止めます。
 気が向いたら再開しますが @aoi_nagatsuki につぶやいてもらったほうがレスポンスいいです。

 先週の資料置いときます。

T79aoitan自動化前史.pptx

 Android端末で予定が一部消える現象が発生しました。
 ネットで調べると直し方が出てくるのでそれに興味がある人はググってもらうといいんですが、カレンダーデータの消去と再同期をしても過去一ヶ月を超える範囲のデータを取ってきてくれません。
 ぐぐる結果を眺めてるとどうもこれを何とかするにはGoogleカレンダー側で再登録をしないといけないような記事を見かけたので予定のエクスポートとインポートをやってみました。でもこのインポート何やら失敗するんですね。それも調べてみるとどうも他にも失敗してる人がいる模様。
 iCalは正味VCARDでテキストなのでごにょごにょ調べてごにょごにょいじってたらUIDを消すとインポートできました。
 ふぇぇ......iCalのインポートが失敗するよぅって人はUID消してみるといいですよ。(ちゃんとバックアップは取っといてね)

 昨日のわんくま勉強会東京#78の資料置いときます。

 論理パズルでおさらい論理学.pptx

 テザリングとかで検索するとノイズに死にそうになるのでAOSPのソース読んだ方が早かった件。

/packages/apps/Settings/src/com/android/settings/TetherSettings.java 541

private void setUsbTethering(boolean enabled) {
    ConnectivityManager cm =
        (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
    if (cm.setUsbTethering(enabled) != ConnectivityManager.TETHER_ERROR_NO_ERROR) {
        mUsbTether.setChecked(false);
        mUsbTether.setSummary(R.string.usb_tethering_errored_subtext);
        return;
    }
    mUsbTether.setSummary("");
}

 この辺をパク......もといインスパイヤ......いやいや参考にすればよさそう。

16:45追記  ConnectivityManager$setUsbTethering(boolean)はhideっぽい。。。

 javadocよく読んでたら

リストの反復子により、プログラマがいずれかの方向にリストをトラバースし、繰り返し処理時にリストを変更して、反復子の現在の位置をリストで取得することができます。ListIterator には現在の要素がありません。 そのカーソル位置は、previous() の呼び出しによって返された要素と、next() の呼び出しによって返された要素との間に常にあります。長さ n のリストの反復子は、次のキャレット (^) で示されるような、n+1 個の可能なカーソル位置を持ちます。

                  Element(0)   Element(1)   Element(2)   ... Element(n-1)

カーソルの位置: ^ ^ ^ ^ ^

 なるほど。Iteratorは要素を指してるわけじゃないのね(´・ω・`)
 嘘つきとか言ってごめんねjavadoc。

 なんかはまったのでメモ。

あるときバグがあった

 とある要素の次の要素とか前の要素の情報を知りたくて、ListIteratorが使えるコンテナだったのでListIteratorを使ってhasNext()、next()、hasPrevious()、previous()してたんですが、prebious()は前の要素を取ってくるのにnext()が次の要素をとってこない。
 そういえばイテレーションするときもnext()の返り値を使うのでそんなものかと思ったんですが、previous()と対称性が取れていないのが気に入らない。

そうだドキュメントを読もう!

 最近ドキュメントちゃんと読んでなくて苦労したのでjavadocを見に行ったら。

next

E next()

リスト内の次の要素を返します。このメソッドは、リストを反復するために繰り返し呼び出される場合と、前後に移動するために previous の呼び出しと組み合わされる場合があります。next と previous の呼び出しを交互に行うと、繰り返し同じ要素が返されます。

定義:
    インタフェース Iterator<E> 内の next

戻り値:
    リストの次の要素 
例外:
    NoSuchElementException - 繰り返し処理で次の要素がない場合

 と書いてある。次の要素ちゃうやないかヾ(#`Д´)ノ
 一方previousは

previous

E previous()

リストの前の要素を返します。このメソッドは、リストを逆方向に反復するために繰り返し呼び出される場合と、前後に移動するために next の呼び出しと組み合わされる場合があります。next と previous の呼び出しを交互に行うと、繰り返し同じ要素が返されます。

戻り値:
    リストの前の要素 
例外:
    NoSuchElementException - 繰り返し処理で前の要素がない場合

 と書いてある。その通り動いているので何も言えない(´・ω・`)

 javadocが正しいとするとAndroidのCopyOnWriteArrayListが返すListIteratorがおかしい。

そしてAndroidへ

 例によってICSのr1のソースを見てみるとCopyOnWriteArrayListのListIteratorはCowIteratorが返すらしい。CowIteratorのnextとpreviousの実装が以下の通り。

    @SuppressWarnings("unchecked")
    public E next() {
        if (index < to) {
            return (E) snapshot[index++];
        } else {
            throw new NoSuchElementException();
        }
    }

    @SuppressWarnings("unchecked")
    public E previous() {
        if (index > from) {
            return (E) snapshot[--index];
        } else {
            throw new NoSuchElementException();
        }
    }

 と、まさしく実装の通り動いてたということのようです。

おぼれる者はJDKをも掴む

 AndroidのListIteratorがjavadocに沿ってないのはわかった。じゃあJDKどうなの?
 これでJDKが同じ動きだとしたら僕はjavadocのことを許せそうにないよ......。

 ということでJDK6のソースを落としてきてCopyOnWriteArrayListこんにちわ。COWIteratorとか似たような名前のクラスを見つけて覗いてみたら。

    public E next() {
        if (! hasNext())
            throw new NoSuchElementException();
        return (E) snapshot[cursor++];
    }

    public E previous() {
        if (! hasPrevious())
            throw new NoSuchElementException();
        return (E) snapshot[--cursor];
    }

 神は死んだ。。。
 前にも誤訳的な何かがあったりしたしもうそろそろjavadocが信じられなくなってきたよママン。。。

追記

 JavaのIteratorは要素を指しているわけじゃないそうです。

ブログ

最近のコメント

ウェブページ

Powered by Movable Type 5.11