MP4Box は mp4 ファイルの結合や Mux ができます。
GPAC Nightly Buildsから最新版をダウンロードし、 dmg を実行して、適当な場所(例: /Application)にコピーします。
MP4Box を PATH に追加するか、Osmo4.app/Contents/MacOS/MP4Box コマンドへのエリアスを追加します。
MP4Box は mp4 ファイルの結合や Mux ができます。
GPAC Nightly Buildsから最新版をダウンロードし、 dmg を実行して、適当な場所(例: /Application)にコピーします。
MP4Box を PATH に追加するか、Osmo4.app/Contents/MacOS/MP4Box コマンドへのエリアスを追加します。
| function Adler32(source) { | |
| var u32 = new Uint32Array([1, 0, source.length, 0, 0, 65521, 5550, 0]); | |
| while (u32[2] > 0) { | |
| u32[4] = u32[2] > u32[6] ? u32[6] : u32[2]; | |
| u32[2] -= u32[4]; | |
| do { | |
| u32[0] += source[u32[3]++]; |
2015/07/18 に試すと、requestDevice() は引数を1つ要求してくるように変化している。また、permission を要求してくる。
permission API は Chrome 43 から追加されているが、bluetooth 関連の ID はまだ利用できないようだ。
https://www.chromestatus.com/features/4747009953103872 は、Chrome 45 で追加された機能で、sandboxing された iframe の中における popup を抑止する。
具体的な用途は、不躾な広告をブロック など。
<!DOCTYPE html>
<meta http-equiv="Content-Security-Policy" content="sandbox allow-scripts">ES6 (ES2015) で追加された WeakSet は、かなり使い方が限定された(≒ まだ有効な使い方があまり見つかっていない)コレクションクラスです。
Task.js では、この WeakSet を現在実行中のインスタンスの一覧を開発者に提示する Task.dump() 機能で利用していますので、その背景と使い方について軽く説明をしてみたいと思います。
Task.js が WeakSet を使って実装されたのはごく最近の事です。
初期の Task.js のデザインではこのようになっていました。
https://github.com/uupaa/Task.js/blob/1798bcd241b7ac9268d3e7eedd39b40ae5107d06/lib/Task.js
uupaa/Thread.js は、WebWorker に MessageChannel を使っていたが、実は不要なんじゃないか説があり、実際のところを調べた。
結論を先に言えば不要だった。
window.onmessage は闇を抱えており、それは「あらゆるコンテキストからメッセージが onmessage に流れ込み、どのコンテキストからのメッセージなのか判別ができなくなる」というものだ。MessageChannel はそれを解決する優れた手段である。
2つ以上のコンテキストが存在する場所とは、具体的には以下となる。
WebModulePattern を以下の形にする。
moduleExporter の中で return しているのがポイント。
// WebModule.js
GLOBAL.WebModule = {
exports: function(name, closure) {
var alias = name in GLOBAL ? (name + "_") : name;Chrome に与えられるコマンドラインオプションの一覧はここにあって http://t.co/BCT7lZkGz9
さらに v8 の option は --js-flags “—fast-math false” みたいにすると渡す事ができる
ES5 + TypedArray 環境において、Hash 生成関数のように、大量のデータをループで処理する場合は、TypedArray を使った変数の参照を作成することで、さらなる最適化を期待できる場合があります。
function Adler32(source, // @arg Uint8Array|String
hex, // @arg Boolean = false
seed) { // @arg Integer = 1 - seed
// @ret UINT32|HexString - 0x00000000 or "00000000"
// @desc http://en.wikipedia.org/wiki/Adler-32
seed = seed === undefined ? 1 : seed;| (function moduleExporter(moduleName, moduleBody) { // http://git.io/WebModule | |
| "use strict"; | |
| var alias = moduleName in GLOBAL ? (moduleName + "_") : moduleName; // switch | |
| var entity = moduleBody(); | |
| if (typeof modules !== "undefined") { | |
| GLOBAL["modules"]["register"](alias, moduleBody, entity["repository"]); | |
| } | |
| if (typeof exports !== "undefined") { |