How to get GPU Rasterization によると、 Chrome 37 以降で幾つかの条件を満たすと GPU ラスタライゼーションが機能するようになるとの事です。
<meta name="viewport" content="width=device-width, minimum-scale=1.0">- Android 4.4以上 + OpenGL ES 3.0 以上のデバイス
- 最初は Nexus デバイスから
ツボにはまれば描画コストを大幅にカットできるとか。期待ですね
| //{@spec_media | |
| (function(global) { | |
| "use strict"; | |
| // --- dependency modules ---------------------------------- | |
| // --- define / local variables ---------------------------- | |
| //var _isNodeOrNodeWebKit = !!global.global; | |
| //var _runOnNodeWebKit = _isNodeOrNodeWebKit && /native/.test(setTimeout); | |
| //var _runOnNode = _isNodeOrNodeWebKit && !/native/.test(setTimeout); | |
| //var _runOnWorker = !_isNodeOrNodeWebKit && "WorkerLocation" in global; |
How to get GPU Rasterization によると、 Chrome 37 以降で幾つかの条件を満たすと GPU ラスタライゼーションが機能するようになるとの事です。
<meta name="viewport" content="width=device-width, minimum-scale=1.0">ツボにはまれば描画コストを大幅にカットできるとか。期待ですね
// OK case
//
// line = 0000,1111,1111,0000,0000,0000,0000,0000
// bits = 1110,0000,0000,0000,0000,0000,0000,0000
//
// ------------------------------------------------------
// a = 1110,1111,1111,0000,0000,0000,0000,0000 = line xor bits
// b = 1110,1111,1111,0000,0000,0000,0000,0000 = line or bits
function _encodeMessagePackNumber(source, view) {
// https://github.com/msgpack/msgpack/blob/master/spec.md#int-format-family
// https://github.com/msgpack/msgpack/blob/master/spec.md#float-format-family
var type = 0, high = 0, low = 0, u8;
var buffer = view.buffer, cursor = view.cursor;
if (source !== source) {
buffer.set(QUIET_NAN, cursor);JavaScript の ArrayBuffer は生のメモリを扱う都合から fixed length です。つまり後から長さを変更できません。
エンコード/デコード処理の途中でバッファが足りなくなった場合は、ある程度のサイズに expand する必要があります。
一般的には2のべき乗でバッファサイズを拡張するのが良いとされています。(すげぇ面倒なのでここツッコミ禁止ね)
power of 2 を求める方法は、WikiPediaやStackOverflowによると、色々とあるようですが、コードだけみても ?? になるので、多少遅めでも、もうちょっと分かりやすい表現がないかなーと考えてました。
そんなこんなで JavaScript における Next power of 2 を求める方法を考えてみました。
po2 関数は、値nを含む最小の power of 2 を返します。n が負の場合は考慮してません。
トラブルシュート
npm run build でエラーが出る場合は https://github.com/uupaa/Compile.js/wiki/CompileError を参照してください。
設計書やドキュメントの記述は時間と労力がそれなりに掛かります。
馴れないうちはコードを書くよりも時間がかかり、
「書くことに何の意味があるんだ? どうせ自分が使うモジュールだ、自分だけが分かっていればいいじゃないか!?」と自問自答したり、苦痛を感じたりする事があるでしょう。
ですが、そこで諦めてしまったら試合終了です。そのままでは、いつまでもドキュメントをまともに書けない半人前のままです。
WebModule の作法においても、ドキュメントが存在しないモジュールは評価に値しません。
頭のなかに漫然とある設計を、他の人も理解できるように、読みやすく整理された形でアウトプットするのは、とても高度で時間がかかる作業です。
忙しい時などは、なかなか取り掛かれない事もよくあります。
NW.js(node-webkit) をインストールし設定します
https://github.com/rogerwang/node-webkit#downloads から Mac 64bit 版の最新を取得し、適当なディレクトリ(例: ~/workspace)以下に展開します
$ tree -d
~/workspace
├── MyExample.js
$ npm run score コマンドは plato を使用しています。
$ npm run hint コマンドは jshint に依存しています。
$ npm run lint コマンドは eslint に依存しています。
$ npm run min と $ npm run build コマンドは uupaa.compile.js に依存しています。
$ npm install -g plato