latest log

酩酊状態で書いたエンジニアポエムです。酩酊状態で読んでください。

2012-01-01から1年間の記事一覧

iOS 5 から WebWorker と Web SQL Database(同期) が使えます

モバイルブラウザでは、 WebWorkers は利用できない Web SQL Database で定義されている 同期SQL (openDatabaseSync)も利用できない と考えていましたが… やってみたら使えました。 デモ 以下は、現在時刻を WebWorkers 上でDBに保存/取得し表示するコードで…

UnitePlayer.js デモ - マリオシーケンサ

github 慣れするために、色々とローカルに眠ってるファイルを上げてたりします。UnityPlayer.js*1を今年の初めぐらいに限定公開したのですが、その時に作成したマリオシーケンサのデモを http://uupaa.github.com/UnitePlayer.js/ に上げました。 使い方(Mob…

new msgpack.js with ArrayBuffer

リクエストを頂いたので、 ArrayBuffer を使った msgpack.js を書きました。とりあえずコードを書いた段階で、識者の意見を取り入れて I/F の改善や、妥当性のチェックとテストケースの作成、ベンチマークなどはこれからの作業になります。https://gist.gith…

JavaScript で ヒアドキュメントもどき

脳内棚卸 JavaScript でヒアドキュメントもどき JavaScript にはヒアドキュメントがありませんが、改行の前にエスケープ文字(¥, バックスラッシュ)を置くことで、次の行とつながります。 var str; str = "\ hoge\ huga\ piyo\ "; alert( str ); // -> "hoge…

プロトタイプ汚染とループ

脳内棚卸 Prototype.js と プロトタイプ汚染(昔話) jQuery が登場する以前、Prototype.js という JavaScript ライブラリがありました。 Prototype.js は、JavaScript OOP の普及期(2005~2007年頃)に多くのサイトで活用されました。Prototype.js は Object.p…

続: 型情報(宣言)と、実装を分離できる仕組み prof.js を実装してみました

http://uupaa.hatenablog.com/entry/2012/10/31/221550 の続きです。prof.js は、 既存の関数やメソッドに、引数と戻り値の型チェック,プロファイラ,トレース機能を後付します。 簡単な使い方 簡単な使い方は以下のようになります。以下のコードで、window.a…

Ruby 風 mofmof.js

mofmof.js が String.prototype 等を拡張しているのは、Ruby などの OOP 言語の良さを取り込むためです。mofmof.js に同梱されている es.js や ruby.js を追加すると Array#reject, select, flatten, map, each, or, and, fill, shuffle, assoc, index, uniq…

型情報(宣言)と、実装を分離できる仕組み prof.js を実装してみました

続き書きました: http://uupaa.hatenablog.com/entry/2012/11/02/154337 今朝方ピコーン*1 があったので頑張って1日で実装してみました。ピコーンの内容は ・今あるソースコードを汚さずに、動的な型チェックのための仕組みを後付で追加する事ってできないか…

uuCanvas.js のサブセットとして VMLCanvas.js を切り出しました + 速くしました

uuCanvas.js は、ExplorerCanvas をヒントに作成した、canvas を VML, Silverlight, Flash でレンダリングするライブラリです。uuCanvas.js から VML 限定版として VMLCanvas.js を切り出しました。 # uuCanvas.js は 1万行。VMLCanvas.js は 2000行 です。 …

JavaScript delete 演算子が数字をキーにした場合に期待と異なる結果を返す

ツイッターだと無理なのでこちらに、 var a = new String('a'), b = (function (s) { s[0] = '_'; return s }(a)); console.log(a.toString()); console.log(a === b); // a, true 何故 #js via https://twitter.com/nazomikan/status/258953859731443712 の…

巨大な配列をUIスレッドをブロックせずに処理する Array#async を mofmof.js に実装してみました

(ε・◇・)з o O ( 実装に4時間かかってるけど、1分でよめるよ!ブラウザ上で動作する JavaScript はシングルスレッドで動作するため、 巨大な配列を Array#forEach などに与えてしまうと UI スレッドが固まってしまう可能性があります。 Array#async は配列を…

TypeScript / js / mofmof.js 並べてみて、第三者から見れば動いているコードにコメントがあるのって凄くありがたい事かなーって今更ながらに再確認(長い

# CSS3 の flexbox をサポートしているブラウザで御覧ください // TypeScript interface Size { _width: number; _height: number; getWidth(): number; setWidth(value: number): void; getHeight(): number; setHeight(value: number): void; } class Box …

TypeScript の Interface が mofmof.js にもほしい

TypeScript を知ってる前提で書きますよー(ε・◇・)з TypeScript いいですねー、JavaScriptの上位互換でES6と衝突しない感じでステキですねー。 (ε・◇・)з Interface とかもいいですねー。とりいれたいですねー Interface を mofmof.js に実装してみました //…

Ruby のブロックスコープ風の構文を JavaScript に取り入れるとすると…

(ε・◇・)з o O ( Ruby のブロックスコープ的なコードですかー console.log([1,2,3].map2('{|i| "<li>" + i + "</li>" }').join("")); console.log([1,2,3].map2('{|i| var rv = "<li>" + i + "</li>"; rv }').join("")); console.log([1,2,3].map2('{|i| return "<li>" + i + "</li>" }'…

ぴんましゅちゃんが逝きました

(ε・◇・)з 我が家のアイドル ぴんましゅちゃん( (ε・﹏・)з )がお亡くなりになりました (υ・﹏・)υ 4才と6ヶ月生きましたし! 在りし日の ぴんましゅちゃん どっかーん 大好き 「なんて?」な ぴんましゅ(左) と うぱぱ(右) うちに来たばかりの頃の ぴんくまし…

予約語をHashのキーに使用できるブラウザ

ES5 をサポートしているブラウザでは、予約語を "こうしなくても" Hash のキーに利用可能になりました。 var ES5Ready = { delete: "Ready?" }; 各ブラウザの対応状況です。 OS Browser ES5Ready iOS 5.1 Safari ○ iOS 5.1 Chrome ○ Android 4.0.4 Browser ○…

Android 2.3 の WebViwe で GET によるクロスドメインリクエストが最初の1回しか成功しない

現象 Unity + WebView 環境において、XHR を使ったクロスドメインリクエストに失敗します。Async GET なら xhr.readyState = 4 で xhr.status = 0 となり失敗します。 Sync GET なら NETWORK_ERR: XMLHttpRequest Exception 101 でエラーになります。同様の…

iPad で消音にしたままハードスイッチの機能を切り替えるとアプリの音が出ないままになる

一般的な対処方法はこちらを参照 http://support.apple.com/kb/TS1205?viewlocale=ja_JP&locale=ja_JPまたは [設定] - [一般] - [本体横のスイッチの機能] を [消音] にして、 本体横のハードスイッチをOFF(上:ミュート解除)にすると、アプリの音が鳴ったり…

Unity + WebView + Android でパーミッションが落ちてしまいストレージに書き込みできない

Unity + WebView 環境で、WebViewPluginでストレージを許可したつもりが書き込めないと。NW-Z1050 にはSDカードスロットがないのだけど、同じくSDカードスロットがない Galaxy Nexus では起きないと。WebStorage(window.localStorage) や WebSQL を使えるよ…

mofmof.js とクラスベースOOP

クラスの使い方(初級) mofmof.js では mm("Hoge", { メソッド }) でクラス mm.Hoge を定義することができます。 mm("Hoge", { init: function(arg1, arg2) { this._arg1 = arg1; this._arg2 = arg2; }, method: function() { alert(this._arg1 + this._arg2)…

2カラムスタイルのテスト

以下のスタイルを追加し div.box { width: 100%; display: -webkit-box; display: -moz-box; display: -ms-box; display: -o-box; display: flexbox; } div.boxLeft { min-width: 50%; } div.boxRight { min-width: 50%; } pre.code { min-height: 50px; } …

ガラケー用コンテンツをスマフォ用に変換されて幅が余っちゃってる時に使うコード

えーと、幅240pxのガラケー用のコンテンツをサーバで自動変換されちゃって、幅が広めなAndroidでみると左右が黒い場合に使うような、きっとそんな時に使うコード。 <meta name="viewport" content="width=240, initial-scale=1.333333, maximum-scale=1.333333, user-scalable=yes"> <script> (function() { function getClientWidth() { if (document.documentElement) { // documen</meta>…

DataURI Maximum length

DataURI サポート状況: http://caniuse.com/datauri Wikipedia: http://en.wikipedia.org/wiki/Data_URI_scheme Browser Max length Source IE 7 0 IE 8 32KB - 1 http://msdn.microsoft.com/en-us/library/cc848897%28VS.85%29.aspx IE 9 4GB http://msdn.m…

grepとかググるだけで、ついでに色々わかったほうがいいよね的視点からみる言語の文法設計

mofmof.js は言語じゃないけど、クラスの定義部分はそれっぽいので、タイトルは勢いです。 忘れちゃうので、自分用メモ。先週までの mofmof.js は、 mm("Class:Trait") でクラスの特性(Trait)*1を定義できたり、 mm("Class:Parent") で継承できたりしたので…

オレオレチェアレスできたったー

チェアレスとは? 2010年のミラノサローネで注目を集めたVitraの新作「Chairless(チェアレス)」は、パラグアイのアヨレオ族の習慣から着想を得た、座るためのツールです。 シートも背もたれもないのに、快適にリラックスして座ることができる、丈夫なファブ…

CSS3 の border-image で簡単にリッチなボタンを作れる未来がいつの間にかきてた

画像を使ってリッチでフレキシブルに伸び縮みするボタンやフレームを作る時みなさんはどうしているでしょうか。従来の方法だと デザイナーさんが画像を9分割 マークアップで頑張って再現する というハードワークを強いられていましたが、 昨今のモバイル開発…

prototypeを拡張することで得られるもの。prototype拡張指向へのスイッチ

(ε・◇・)з mofmof.js や新しい uupaa.js では prototype拡張を活用しています (ε・◇・)з 長所がわかりづらいみたいなので、言い出しっぺのボクの中の人がメリットを列挙してみよー というエントリです (ε・◇・)з でも、長文になりそうなので、思いついたらち…

mm.allow によるアサーションとステキログ

mofmof.js には mm.allow() や mm.deny() といった assertion(アサーション, 前提条件のチェック) のための関数があります。mm.allow は関数の入り口で多用され、引数の型や内容が正しいか確認し、まずい場合は例外を挙げます。 mm.deny は mm.allow の逆の…

うるう秒 と JavaScript の Date.parse

うるう秒を Date.parse 関数に与えるとどうなるのか? 1998-12-31 23:59:60 (過去のうるう秒) 2012-07-01 08:59:60 (今回のうるう秒) 2012-07-01 08:59:59 (通常の秒) の3パターンで調べました。 Browser type "Thu Dec 31 23:59:60 GMT 1998" "2012-07-01T08…

mofmof.js の上に uupaa.js をどすーん

uupaa.js (uu) は、mofmof.js (mm) をベースに再構築している最中です。 新しい uupaa.js は IE6, IE7 非対応になります、古いIEを切り捨てることでライブラリがシンプルになり、より効率的なコードになっています。今日は、最近実装した機能のご紹介。 uu.d…