http://coderepos.org/share/wiki/JSMML テキスケ: ActionScript日記 - サウンドのリアルタイム生成(4) で公開されている、Flash から MML を再生できるライブラリ、 FLMML が素晴らしすぎるので、JavaScript からも再生できるようにブリッジを書いてみました。ライブラリ名は JSMML(まんま)。 JSMML を使うと、SWF を経由して JS な API から MML を再生できるようになります。 <script type="text/javascript" src="JSMML.js"></script> <script type="text/javascript"> JSMML.swfurl = 'JSMML.swf'; // default // onLoad に関数を入れておくと、SWF のロード完了時に呼ばれ
2 進数や 16 進数を使いたいというとき、JavaScript では組み込みの機能を利用できます。使えるのは 16 進数だけではなく、2 進数から 36 進数 (0 ~ 9 および a ~ z を使用) まで扱えます。 n 進数文字列から数値への変換 n 進数文字列から数値へと変換するときは、parseInt 関数を使います。第 2 引数に基数 n を指定することで、第 1 引数の文字列を n 進数であると解釈してくれます。n は 32 ビット整数に変換され、その値が 2 未満または 36 を超えるときは NaN が返ります。ただし、n が 0 になるときは文字列が 10 進数表記であるとして解釈されます。 parseInt(10, 36); // 36 parseInt("10", 0x100000000 + 36); // 36 基数が明示されておらず、文字列が 0 から始まっていた
以下の一行をすべての JavaScript の前に読み込む /*@cc_on _d=document;eval('var document=_d')@*/ この一行を読み込むことによって IE での document へのアクセスが 5 倍速くなります。 たとえば 以下のように、読み込む前と読み込んだ後を比較してみます。 // Before var date = new Date; for (var i = 0; i < 100000; i++) document; alert(new Date - date); // 643 /*@cc_on _d=document;eval('var document=_d')@*/ // After date = new Date; for (var i = 0; i < 100000; i++) document; alert(new Date -
以前の続き。JavaScriptからプライベートデータの参照、更新が出来る。Google Account Authenticationの仕組みを利用している。この前動かなかったサンプルはいつの間にか動くようになってた。 最初プロトコルは勝手にJSONPと思ってたけど、中身見てみたらIFRAME 使った fragment identifier (window.location.hashの値、URLの#以降)による通信だった。たしかに、IEで音をONにしたらクリック音カチカチする。ちなみにfragment identifierによるクロスドメイン通信は他にdojoがライブラリとして実装しているのは知っているけど、これだけ大々的にサービスで使われてるのを見たのは初めて。もっとも、ブラウザでクロスドメイン通信を達成する方法のうち現時点でもっともマシなのはこれじゃないかという意見もある。 解析してみ
Latest topics > selector.js改 宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能! « 選挙 Main 影付きテキストをコピーしても余計な文字列が出ないようにしたよ » selector.js改 - Jul 31, 2007 selector.js改(ミラー) にゃるら、さんのselector.jsをベースに色々やってたらそれっぽい物ができたので、氏に敬意を表しselector.js相当の部分をMITライセンスで公開しときます。冒頭のコメントを見ての通りですが、元のselector.jsで対応されていなかったCSS3のセレクタをだいぶサポートしてます。正しく動かない事があるかもしれないのでその時はフィードバックください。 改造版
Latest topics > getElementsByなんちゃら の代わりにXPathを使う 宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能! « 不可逆的な変化に対する感じ方と、死 Main CSS3セレクタとXPathでの表現の対応表 » getElementsByなんちゃら の代わりにXPathを使う - Sep 09, 2007 拡張機能勉強会の時に焚き付けられた、Text Shadowのコード(textshadow.js)を教材にして拡張機能開発のノウハウを解説していくシリーズ。 W3CのDOMでは、要素ノード(およびそのリスト)を得る方法として以下の方法がある。 getElementById(aName) IDをキーにして単一の要素ノー
29日、Google Gearsの新バージョン0.2がリリースされた。 Google Gearsは、オフラインでも動作するWebアプリケーションを作成するために必要な、一連のJavaScript APIを提供するためのブラウザプラグイン。ユーザはプラグインを導入すれば、インターネットに接続していなくとも、Gearsに対応したサイトを利用することができる。 対応プラットフォームは、Windows版Internet Explorer、Windows/Linux/Mac OS X上のFirefoxとなっている。 Gearsが現在まで提供していた機能は以下の3つであり、GearsをインストールしたWebブラウザ上では、これらの機能をJavaScriptから取り扱うことができる。 ローカルサーバ - Webページをローカルにキャッシュし、オフラインでも閲覧するためのモジュール データベース - 組み
JavaScript save the assistants 上記のスライダー、ドラッグを開始して、ウィンドウ外でボタンを離し、再度ウィンドウに戻るとずっと押しっぱなしのおかしな状態になる。これは、たぶんマウスが離されたことを検知できていないため。 WebFXのスライダーは、ちゃんと動く。実装を読んでみた。 Slidebar (WebFX) Firefoxは、文字を選択するようにドラッグを開始すれば、ウィンドウ外でマウスのボタンを外した時にもmouseupが起こせるようだ。これを利用し、見えない文字を選択し、選択状態も見えなくして、スライダーが正常に動作するようにしていた。 簡単なサンプルは以下。スライダに限らず、ドラッグ全般に使えると思う。mouseup以外に、mousemoveなども取れた。 IEの場合は、onlosecaptureイベントを使っていた。WebFX++
セッターの中で値を返す JavaScript Firefoxでは、ゲッター/セッターを使える。 すごく便利。 コードが短くなる。 セッターの中では、最後にその値を返すといい。 var obj = [ set value(value){ return this._value = value; }, get value(){ return this._value; } } さもないと以下のような、フィルター的なコードが動かない。 var value = obj.value = 'TEXT'; Permalink | コメント(0) | トラックバック(0) | 08:22
Google Gearsのワーカプールとは Webアプリケーションをオフラインでも使用可能にする「Google Gears」。発表から一週間以上が経過し、Gearsを使用したWebアプリケーションもすでに登場してきている。Webアプリケーション開発者にとって「無視することができない技術」だと言えるだろう。本誌でもそうした方々のお役に立てるよう、これまで二度に渡ってGoogle Gearsを用いたプログラミング方法をご紹介してきた。 Google Gearsに含まれる機能は、大きく「ローカルサーバ」「データベース」「ワーカプール」の3つに分けられる。 ローカルサーバは、Webページに関わるリソース(HTMLファイル、JavaScriptファイル、画像ファイル、スタイルシート…など)をクライアントマシンにキャッシュしておく技術だ。ネットワークに接続していない環境でもページを表示することができ、
任天堂のQ&Aサイトで、Wiiリモコンの値を取得する方法が公開されていることを知人から教えてもらいました。 インターネットチャンネル向けのウェブページを作りたいのですが…。 : Q&A - Wii インターネットチャンネルの拡張機能について知りたい Wiiインターネットチャンネルでは特別な JavaScript を用いる事でWiiリモコンのひねりや テレビとの距離、複数のコントローラの状態を取得する事ができます。 手元にWii本体の実機がないので(Wiiリモコンはある^^)まだ試していませんが、こんな感じでJavaScriptからWiiリモコンの値が取れるっぽいですね。 if (window.opera && window.opera.wiiremote) { var num = 0; // wiiremote number 0,1,2,3 var pad = window.opera.w
コンソール上から JavaScript で Web ブラウザを操作できる、JS Commander というプログラムを作ってみました。JS Commander を立ち上げるとプロキシサーバが同時に起動し、このプロキシサーバを使うように Web ブラウザを設定すると、コンソール上で JavaScript のコードが入力できるようになります。Web ブラウザ上の JavaScript を自由に実行できるコンソールには FireBug, FireBug Lite, jsh, MozRepl などがありますが、JS Commander の特徴は以下のような感じです。ブラウザ非依存 - XmlHttpRequest が使えるブラウザであればたぶん動きます。readline を使った操作 - bash などのシェルと同じような emacs 風キーバインドが使えます。別のマシンにあるブラウザも操作可能
現在見ているページをGM_xmlhttpRequestで受信するため、amebloのPVが増えます。さすがYappoです。 http://subtech.g.hatena.ne.jp/yappo/20070319/1174293065 なのでちょっと書き直してみました。 http://la.ma.la/misc/userjs/ameblo_sucks.user.js イベントはremoveEventListenerで外したいところですが、元の関数が参照できないと無効化できないので、onclickやoncontextmenuに直接代入してます。GreasemonkeyではDOMへの参照はラッピングされたオブジェクトが帰ってくるのでunsafeWindow経由で操作を行う必要があります。 Greasemonkey以外のuserjs実装でも動くように書いてみたつもりです。 どうぞご利用ください。
やばい、おもしろいなあ。こういうのはできれば休日にしてほしいよ。 http://la.ma.la/blog/diary_200702210356.htm lazy化するところも汎用的に書いたらだめかしらん? Function.prototype.to_lazy = function() { var orig = this; var args = Array.prototype.slice.apply(arguments); var lazy_object = { isLazy: true, force: function(callback){ orig.receive_lazy().apply( null, args.concat(function(value){ lazy_object.isLazy = false; lazy_object.value = value; callback
「JavaScriptによるテンプレート・モナド、すっげー簡単!」にて: 紙と鉛筆でラムダ計算を実行できることは必要だな、やっぱり。 なんて強調したので、ラムダ計算の入門、いってみよう。 [追記]練習問題集を追加しました。説明を読みながら、あるいは読んだ後で是非やってみてください。→「JavaScriptで学ぶ・プログラマのためのラムダ計算 問題集」[/追記] ※印刷のときはサイドバーが消えます。 内容: JavaScriptの関数リテラル ラムダ式ってなんだ ラムダ計算の体系と適用操作 ラムダ式の例をいくつか β変換 -- ラムダ計算のキモ! β変換を何度か実行してみる 中間まとめ、まだ続きがあるよ JavaScriptの関数リテラル 最初に、JavaScriptに関する知識を確認しておきましょう。なお、JavaScriptの対話的実行環境については「もっともお手軽な対話的JavaScr
Warning! 2008/5/22追記:このエントリは情報が不十分だったり間違いが含まれてたりするので、下記URLのページを参考にするようにしてください↓ http://piro.sakura.ne.jp/latest/blosxom/mozilla/xul/2007-09-13_selector-to-xpath.htm CSS3あたりをXPath1.0あたりに変換する表 CSSXPath .class//*[@class="class"]*1 .class//*[contains(concat(" ",@class," ")," class ")]*2 tag//tag #id//*[@id="id"] tag.class#id//tag[@class="class"][@id="id"] .class.class2//*[contains(concat(" ",@class," "
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く