Posts Tagged ‘javascript’
サイボウズラボユース中間結果発表会アウトラインメモ
サイボウズ・ラボユース 「中間成果報告会」に参加してきたのでそのときのメモです。
かなり乱雑なメモで正確性など存在していないので、そのまま読まない方がいいです。
(特に手元でスライドがあるわけじゃないので、ちゃんとメモれてすらないです…)
環境記録
メモソフトウェア: bodhi/MarkdownEditor – GitHub
サイボウズラボユース中間結果発表会
NDAは結ばずに、成果をオープンすることを条件に支援を行う。
「ロボット制作を支援するログ解析プログラムの開発」 by @sn_monochr
マイコンカー
赤外線センサーを使ってリアルタイムで制御するカー。 C言語で開発を行う。
マイコンカーの走行ログ
走行ログ
- 制御プログラムの動作状態
- 赤外線などのセンサー状態
メモリが限られているので、データはシフト演算などを使って一つにまとめて保存、送信を行う。 これらのデータを可視化していくため、解析ソフトウェアを開発する。(Windows)
走行ログの可視化
- データに基づいたマシン調整が可能になる
- 1つのソフトウェアに統合
夏の合宿
目標設定をして合宿を行った
- 走行ログの可視化
ラインの中でモードの変更をライン色の変更してる。
- 無線通信でログのやり取りをするのが今後目標
走るコースに、車線変更や直角カーブなどのマークが書かれていて、それを読み取ってモードを変えることで動きを変える。
「世界最速の正規表現JITエンジンの実装」by @sinya8282
- 正規表現エンジンの作成
- 正規表現の歴史は古い 1960~
- 実装はたくさんある
- いろいろやられている
「正規表現エンジンの開発」には意義があるのですか? -> 車輪は車輪でも「最速の車輪」を開発する
正規表現エンジンRegen(れーげん)の開発
Regen
動的コード生成
- Xbyak でJIT regex
- 正規表現に合わせて、プログラムがプログラムを生成する
- 正規表現コンパイルに最適化レベル導入(O0 – O4)
- 最適化しにくいパターンもある
マッチング並列化
- 並列化のための特殊なモデルを実装
ベンチマーク
Google RE2との比較。
JITしても3-5倍の高速化 -> 今はメニーコアの時代 -> 正規表現の並列化
- 6コアでガクって落ちるのはアーキテクチャの問題
まとめ
高速化の二台手法は実装した、成果もでた
- JIT
- 並列化
これからの課題
- 実システムへの応用、ツールの作成
- 正規表現エンジンじゃないと処理できない問題
- なければ作る
- ライブラリとして今夏中に整えたい
質問
- 正規表現 <-> インデクシング
- フィルターなどの分野では、流れるデータに対して正規表現の活用などもある。
- 禁止ワードのORつなぎみたいなものは正規表現より向いてる方法があるとか
「JavaScriptによる型推論器の実装と可視化」by takuto_h
型推論
- 型を書かなくて楽
- 型があるんで安全
引数の型
function foo(bar){ return bar + 1; }どのような演算子を呼んでいるかを見て、型を推論する
型推論は方程式
- 値が広志位なら型が等しい
- 方の上での方程式を集めて解くのが型推論
コンピューターでは解くのか
a = b, b = c, c = d, d= int
<a>, <b>, <c>, <d>というオブジェクトとintという物体を用意する。
- a = b で
<a : <b>>, <b>, <c>, <d> - b = c で ….
どんどん置き換えて行って型推論を行う。
Ibisという型推論機
IbisはJavaScriptで書かれている。
- まずはパースして構文木にする
- ここからステップごとに型推論の計算(推論)を表示
- 最終的に、関数の入力と出力の型推論結果が表示される
型推論はパズル
質問
型推論にとってオブジェクトは鬼門
Q . 循環参照の時はどうするの?
2つの考え方
- 禁止する方針
- 再帰的なものも許す方針
OCamlは不健全な循環参照は禁止されている。 再帰的なものはチェックを付けて型推論を続ける。
演算子のオーバーロードがあると型推論はむずい
「世界で一番仕様に忠実なJavaScript処理系の作成」 by Constellation
iv/lv5
- ESのパーサーiv
- エンジンlv5
sputniktestというECMA262への正確性を測るテスト
- 以前はASTはインタープリンタ
- VMに変えたのでECMAエンジンといえますね。
- インタープリタと共存している(オプションで切り替えが可能)
JITをモジュールとして取り込めるのではないかと。
高速化
いろいろ。11倍近く高速
まだJITはしていない。
今後
- RegisterVmについての検討
- GCの自作
az: ECMAScript Analyzer
JavaScriptの補完候補を出す
型の推論 Doctorjs
- 抽象的なAbstractインタプリターを使って型情報を集めている
- これを元にC++にした
JavaScriptは後ろに関数宣言置けるし、補完するときにシンタックスは壊れてるからどうするの?
方針: シンタックスが不正なASTに対して解析を行う
- シンタックスが不正なスクリプトでも常にASTを得る
target.
こういう時はに解析を行うと、式がエラーになるので、ここでステートメントにマークを付ける。
改行があったらそのへんは大丈夫なんじゃないかと、してぶっちぎる。 JavaScriptにはセミコロン自動挿入があるので、改行を判定に使う必要性が出てくる。
問題点
- Abstractインタープリタは状態が有限でないと終わらない
- なので状態を有限して、行う
- jQueryとのfor inとかむず
WebStromの場合
- JSDocで型情報を読んでこれを基準に解析
- 元に情報を用意して何とかする方向
おわり
仕様忠実は第一
「現役高校生の考えるクラウドOSの設計と実装」by liva_s
クラスドOSって何だろう?
Googleの場合
- ブラウザ上でWebアプリを走らせている
- 確かにクラウドを利用している
僕の考えるクラウド化
カーネルのクラウド化
- カーネルがやるべきことをクラウドサーバー上で一括処理するのはどうだろか?
- サーバー側に処理を置くことで、クライアント側の負荷が減る
カーネルを分割して、クラウド上でカーネルが動いてるいうという状態
- 当然ローカルでやるべきことも残る(ハードウェア制御)
- ローカルとくらうどの線引きが大事になる
どの境界線はどう測るべきものかがわからない(ベンチマークで?)
マイクロカーネル開発
カーネルには最小限なものにして、Serverというアプリケーションにわけてやるもの。 この時のServerをクラウドに乗っければ、クラウドOSになる。
=> マイクロカーネルの開発がいいのではないかと
Serverを単位にして、ローカルとクラウドでベンチマークを取れば、境界線がわかりやくなる。
モジュール開発とマイクロカーネル
モジュールはプロセス管理を作る前に、モジュールを開発できる。 (後で動かせばいい)
まとめ
クラウドOSはWebアプリベースのOSではない
Q. カーネルでどの辺がボトルネックになってるのか?
A. モジュール化していけばベンチは測りやすいから、これからは。
カーネルのモジュール化はダイナミックに構成を変更できるということが結構面白い事になる
Q.マルチキャストの逆みたいな話。同じような処理をしてるコンピューターはいっぱいあるから、そのへんの処理を効率ができるのではないかと
JavaScriptエディタとしてのTitanium Studio
- Titanium StudioとTitanium Mobile 1.7をリリースしました « Appcelerator Developer Center
- InfoQ: Appcelerator の Titanium Studio がデビュー
ちょっと触っただけの雑感です。本質としてとらえてはいけません。
Titanium (Mobile|Desktop)については全く触れていないため、そういうものについては参考にはならないと思います。
というか、Titanium (Mobile|Desktop)向けのものを書かないのに、Titamium Studioを選ぶ理由はない気がするので、タイトルのような事が目的ならばベースが同じAptana Studio 3を使った方が良いでしょう。
クリッカブルなボタンとWAI-ARIAのrole="button"について
前提知識として以下が必要です。
clickイベントに使うためだけに<a href=”#”>text</a>とか(下の例の1,2番目)やるのが嫌いで、どうやるのがスマートorシンプルなんだろと思って書き出したもの。input、button 要素がでてこないのはスタイルシート考えるのが面倒で何となくです。button要素をCSSでリンクのようなデザインにできるならそれでもいいじゃないでしょうか。
1番目は今時ない気がするし、1,2番目は状態が遷移しないのにhref指定してると、ミドルクリックなどで別のページとして開けたりしちゃうのでそれを抑制するコードも必要になるのが何か嫌で、3番目当たりが個人的には好きだった。(4番目は何か気持ちわるい)
<div><a href="javascript:void 0;">javscript:ボタン</a></div> <div><a href="#">#なボタン</a></div> <div><a role="button">hrefがないroleボタン</a></div> <div><span role="button">リンクじゃないspanボタン</span></div>
Note: If pressing the link triggers an action but does not change browser focus or page location, authors are advised to consider using the button role instead of the link role.
The Roles Model | Accessible Rich Internet Applications (WAI-ARIA) 1.0
そして、A要素のroleはnativeでlinkですが3.2.5 Content models — HTML Standardを見ると、 link, button, checkbox, menuitem, menuitemcheckbox, menuitemradio, tab, treeitem のいずれかのroleであれば上書きすることができると書いてあります。(そう読み取れたんだけどあってるのかね)
<a role="button">hrefがないroleボタン</a>
日本語版は一個古い感じなので、内容も結構違う感じする。
- 4.2. Conflicts between native markup semantics and WAI-ARIA
- 3.2. ネイティブなマークアップセマンティクスとARIAとの衝突
翻訳版をみるとnativeなroleがlinkであっても、roleでbuttonと指定すれば上書きできるべきであるみたいな内容。
何で、上書きできるかが気になったかというとjavascript scheme でボタンを作るのは ? | ヨモツネットのコメント欄で、できないかのように読み取れる内容があったため。多分多分、strong native semanticsというのはa要素が本来持っているのはlinkというroleの事で、<a role=”button” />のようにそれぞれのa要素におけるroleは上書きできるけど、a要素本来のlink(strong native semantics)というroleは上書きできないよって話なのかなーとか思った。(仕様読んでないので自信ない)
ちなみに、jQuery UIの$.button()は<button role=”button”>という感じでbutton要素を使用している。
- jQuery UI – Button Demos & Documentation
- jQuery UI に見る WAI-ARIA の実装:dialog 編 – アークウェブアクセシビリティWiki(結構前)
UIライブラリはスタイルとかとセットなので、roleも意味がはっきりしたものとって後はスタイルやった方が良さそうだしね
WAI-ARIA対応のライブラリはこの辺を見た
というわけで、ここに書かれている内容はあまり自信がありません。以上
JavaScriptリファレンスを高速検索するKeySnailプラグイン
JSReferenceというFIrefoxアドオンであるKeySnail上で動くプラグインの紹介
このプラグインはChemr-jsのように先にリファレンスサイトのインデックスのキャッシュを作っておいて、複数のリファレンスからまとめて検索をすることができるプラグインです。
動画だと対応サイトが少ないですが、現在は以下のサイトに対応しています。
(最新の対応サイトリストはJSReference at master from azu/KeySnail-Plugins – GitHubを参照してください)
- developer.mozilla.org
- jp.developer.mozilla.org
- www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/
- api.jquery.com
- es5.github.com
- msdn.microsoft.com
ECMAScriptの仕様書、MDCのドキュメント、jQueryのAPIドキュメント、IEのJavaScriptリファレンスなどを同時に引けるので結構便利です。![]()
対応サイトもSITEINFO的なものを書けば増やせるので、JSReference at master from azu/KeySnail-Plugins – GitHubを参考に見てみるといいです。
プラグインをインストールするとプラグインマネージャーにドキュメントが表示されるので、そこに使い方が書いてありますが簡単に説明すると二つのコマンドが追加されます。
| JsReferrence-open-prompt | JsReferrenceで検索を開始する |
| JsReferrence-reIndex | JsReferrenceのインデックスを作り直す |
このコマンドをKeySnailの設定メニューや_keysnail.jsファイルに直接書き込むなどでショートカットに割り当てて使います。
key.setGlobalKey(['C-b', 'j'], function (ev, arg) {
ext.exec("JsReferrence-open-prompt", arg, ev);
}, 'JsReferrenceのプロンプトを開く', true);
key.setGlobalKey(['C-b', 'r'], function (ev, arg) {
ext.exec("JsReferrence-reIndex", arg, ev);
}, 'JsReferrenceののインデックスを作り直す', true);// 二つのサイトを候補にする - JavaScript
key.setGlobalKey(['C-b', 'l'], function (ev, arg) {
ext.exec("JsReferrence-open-prompt", ["developer.mozilla.org", "www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/"], ev);
}, 'JsReferrenceのプロンプトを開く', true);
// msdn.microsoft.comのインデックスだけを再構築する
key.setGlobalKey(['C-b', 'r'], function (ev, arg) {
ext.exec("JsReferrence-reIndex", ["msdn.microsoft.com"], ev);
}, 'JsReferrenceのプロンプトを開く', true);
JavaScriptでAmazonからASINを取得する方法など
一つの方法はinput要素から取得する方法
document.getElementById("ASIN").valueAmazonはページ中のhiddenなinput要素にASINを持たせてるのでこういう手が取れる。
<input id="ASIN" type="hidden" value="4253196519" name="ASIN">
ページの構造が変わったらダメだけど、結構昔からこの部分は変わってないので意外と安定しているかもしれない。
amazon.comだと構造が違うものがあって、Amazon.com: Buried Prey eBook: John Sandford: Kindle StoreのようにKindle Storeだとページ構造が違ってID=ASINがない代わりに次のようなものがある。
<input type="hidden" value="B004LRPGPC" name="ASIN.0">
var ASIN = document.getElementById("ASIN") || document.getElementsByName("ASIN.0")[0];
もう一つの方法はwindowオブジェクトのプロパティから取得する方法
(2011年6月5日現在だと)
window.sitbAsin;
これはAmazon側のJavaScriptが生やしているので、ページのちょっとした構造の変化では変わらないと思うけど使うライブラリを変えたりJavaScriptが大きく変わると変更されることがある。
以前はwindow.productTagsに入っていた。
最後はURLからASIN部分を切り出す方法
URLにはASINが入ってるはずなので、ページに構造の変化には強いけど、少しパースが面倒なところがある。
どのようなURLがあるかを把握する必要があるので、条件分けなども必要になる。
まあASINのフォーマットは\w{10}と決まっているので、ある程度安定するのかもしれない。
ついでに、replaceStateを使ってリロードなしでAmazonのURLを/dp/ASINだけの短いURLにするGreasemonkey書いた。
JavaScriptのいろいろなコーディングルールをまとめてみた
JavaScriptの書き方はJavaScript自体がある程度自由なためいろいろな書き方ができますが、一貫性を持って書いた方がバグなども発生しにくくなるため、コーディングルールを定めておくのはよいことだと思います(特に複数人の開発の場合)
有名な企業やライブラリはコーディングルールも公開している事が多いので適当にまとめてみました
JavaScript style guide – MDC Docs
Mozilla/Firefox向けのものなので、一部ECMAScriptの範囲を超えたものも含まれています。
多くの人が見ていると思うので、見たことない人は一度読んでみるといいです。
Google JavaScript Style Guide
Google JavaScript Style Guide 和訳 — Google JavaScript Style Guide 和訳(日本語版)
Googleのコーディングルールですが、ルールを並べるだけではなくなぜ悪いのかについても触れているので、一読をお勧めします。
Closure Linterというチェックツールもあるため、採用しやすいかもしれない。
JQuery Core Style Guidelines – jQuery JavaScript Library
jQuery Coreのもの。
Typeチェックの仕方についても触れている。
Dojo Style Guide – The Dojo Toolkit
Dojoのコーディングルール。
コード例が豊富で、命名規則やホワイトスペースの扱いなど細かいところまで入ってる。
Felix’s Node.js Style Guide
Felix’s Node.js Style Guide(和訳)(日本語版)
Node.jsにおけるコーディングルール。(公式なものではない。no official document)
Node.jsに限らず、クライアントサイドJavaScriptに置いても参考になる部分は多い。
Code Conventions for the JavaScript Programming Language
Douglas Crockfordによるもの。
コーディングルールというよりは慣習的なもの。
同作者によるJSLintも併用しましょう。(JSLint or JSHintは他のコーディングルールであっても採用してよいもの)
Code Guidelines for Rich Internet Application Development
コーディングルールではなくてガイドライン的なものです、HTMLやCSS、JavaScriptについてのガイドラインを書かれている。
Introduction to Apple JavaScript Coding Guidelines
JavaScript Coding Guidelines for Mac OS X(日本語版)
Appleによるコーディングのガイドライン。
“JavaScriptのベストプラクティス”でコーディングで気をつける事について触れている。
The WebKit Open Source Project – WebKit Coding Style Guidelines
JavaScriptではありませんが、Webkitにおけるコーディングルール。
ホワイトスペースやLine breakingの所はJavaScriptの場合でも参考になる。
uupaaさんがこれをベースに一部分を変更した感じで使ってるそうです。
サイボウズで学んだこと – IT戦記
amachangによるもの。
大規模 JavaScript 開発におけるルールや命名規則、デバッグ、パフォーマンスについて触れています。
コーディングルールを整えてどのように実践したかについて参考になります。
JavaScriptパターン (オライリー本)
オライリージャパン
売り上げランキング: 8213
この書籍のChapter 2. Essentialsにおいて、JavaScriptのコーディングルールが紹介されています。
また避けるべき事やどう書くべきなのかについてもかなり深く書かれています。
コーディングルールは”どう書けばいいのか分からない”という人向けのものではないと思います。どう書いたらいいのか分からない人は、まずなぜそのように書いたらダメなのかを知るのがよいと思います。
そのため、書き方に不安を持ってる人はなぜダメなのかについても触れているGoogle JavaScript Style Guide 和訳を読むのがよいと思います。(読みやすい日本語版もあるしね)
コーディングルールはコードに一貫性を持つためにあると思います。頻繁にルールを変える必要はないと思いますが、必ずしもそのルールが、その時の(実行環境|JavaScript)において最適な書き方ではない場合もあります。そういうときはルールの更新をしましょう。
おまけ
自分の場合はWebStormの自動整形に任せている(といっても膨大なルール設定があるため、上記で紹介したコーディングルールを自動化できる)ので、基本的にはIDE任せという書き方にしています。
セミコロン忘れなどについてはcomplete current statement機能( [WebStorm]Complete Current Statementがとても便利な件(・∀・))を使ったり、WebStormのシンタックスチェックはかなり優秀なのでエラーも書いてる途中で発見しやすいです。(シンタックスチェックも細かく制御できる)
そのため、やっぱり道具任せといった感じではありますが、WebStormを使用していない場合も同じコードが書けるようにある程度のルールは持っています。
Google JavaScript Style Guide + WebKit Coding Style Guidelines に近いですが、ホワイトスペースなど見た目的なちょっとした違いにはそこまで厳しくしない感じで書いています。
if, for, while, doなどの{}は省略しない(WebStormの自動整形で中括弧を強制的につける)、誰が見てもある程度読める感じにする、ブレークポイントを打ちやすい空間を作るように配慮するなどなどで、他のコーディングルールに書いてある事と同じようなものだと思います。
adblock++からadblock#へ移行する
危険な広告を除去するのにAdblock++を使用していましたが、Firefox5では動かないようなので(ネイティブなものはバージョン毎にコンパイルする必要があるとかないとか)代替として、adblock#.uc.jsを使ってみることにしてみました。
adblock#.uc.jsにはadblock系リスト変換君.htmlというadblock++形式などから変換できるものが入ってますが、さすがニッチなadblock++からadblock#への変換はないようなので書いてみました。
(今思えばadblock系リスト変換君.htmlを拡張すればよかったかも…)
必要なもの
以下のコードをFirebugのコンソール上で実行
adblockDataの部分は自分のabout:configからextensions.adblock++.filter_array の値に差し替えてください。
最後のcopy関数以外は別にFirebugに依存しているわけじゃないので、他の環境でも少し書き換えれば動作すると思います(MITライセンスなのでご自由に)
変換したものはクリップボードに入るので、後はadblock#.uc.js Filter Managerを開いて、入力欄にペーストして”追加”のボタンを押せばフィルターを移行できると思います。
Adblock++はフィルタにコンテンツの種類を設定できるのですが、adblock#.uc.jsは対応していないのでそれ系のフィルターは自動で外されます。また既にdisableなフィルターも外されます。
正規表現周りは元々使ってないので、ちゃんと動作するかは微妙です。
一応、Readmeに従って下記の処理には対応させたつもりです。
ただし,「/ads/」のように前後に「/」が付く物は正規表現フィルタと誤認識されるのを防ぐため,「*/ads/*」と表記する.
FirefoxのJavaScriptデバッガ拡張Firebugの進化がすごい
Firefoxのデバッグ拡張ことFirebugですが、Firefox4よりFirebugとは別にWeb Consoleという機能が入りました。
しかし、Firebug自体もさらに便利になっているので、少し紹介します。(Firebug1.7 –1.8 の範囲で)
現在のFirefox4に正式対応しているのはFirebug1.7xで、Firebug1.8xはAlpha版として公開されているのでまだ不安定な部分もあることに注意して下さい。
特に注意書きしてない部分はFirebug1.7の項目だと思って大丈夫だと思います
Windowsで使えるCoffeeScriptコンパイラを書いた
CoffeeScriptをJavaScriptのコードに変換するコンパイラ(coffee-script.jsをラップしただけ)をNILScriptを使って書いてみました。NILScriptはSpiderMonkeyが実行環境に利用されているので、ブラウザで実行できるようために配布されてるcoffee-script.jsをそのまま利用しています。
使い方
NILScriptが必要なので、ダウンロードしておいてください。
CS-Compiler.ng と coffee-script.js(自分で最新のものを持ってきた方がいいです)を適当な同じディレクトリに置きます。
$ng.exe CS-Compiler.ngへパス "FilePath" or "DirectoryPath"
という感じでコマンドプロンプト(自分はConsole2+nyaos)から実行して使用します。(D&Dでも使えるかも)
コンパイルはファイル、ディレクトリどちらに対しても利用できます。
ng.exe CS-Compiler.ngへパスをまとめたリンクファイルを作っておくと楽かも知れません。
コマンドラインの例はutilityTools/CoffeeScript at master from azu/NILScript – GitHubにも書いてあるので参考にしてください。
ファイルの更新に反応して自動的にコンパイルし直すwatchオプションがあるので次のように
$ng CS-Compiler.ng code.coffee --watch
という感じで起動すれば、code.coffeeを書き換えるたびにコマンドプロンプトにコンパイル結果が表示されます。
watchオプション(–watch or -w)はディレクトリにも使えるようになっていて、起動してからその監視対象のディレクトリに新しくファイルを入れた場合もそのファイルが監視対象に加わるようになっています。
コンパイルの実行速度ですが20Kbほどあるunderscore.coffeeが1-2秒ぐらいでコンパイルできるので、まあまあ使ってられるものだと思います。WindowsでCoffeeScriptをコマンドラインでコンパイルできて、ファイルの変更監視ができるものが見つからなかったのでkennyjのブログ(仮): CoffeeScriptをWindowsで使うを見て何となく書きました。
(Rubyのやつの使い方分からなかったCoffeeScript インストール – sappari wiki)
トラッキングパラメーターなど邪魔なものをURLが削除するGreasemonkey
ParamCleanerというURLからutm_*など不要なパラメーターを除去するGreasemonkeyを書きました。
すでに同じ目的のGreasemonkeyやアドオンなどがありますが、
- UrlCleaner for Greasemonkey
- FeedBurnerのトラッキングパラメータらしきものを削るGreasemonkey – ariyasacca(2009-11-18)
- URLのトラッキング用パラメータを無視するFirefox拡張 Through utm_ – SWDYH
history.replaceStateを使う事で他のものに比べて簡潔な処理でURLからトラッキングパラメーターなどを消せます。
またhistory.replaceStateを使ってるのでFirefox4以上向けで(一応Firefox3でも動くようにしてある)、Scriptish向けに最適化してあるので、できればScriptishで使った方がいいです(Greasemonkeyでも動きます)
history.replaceState(data, title [, url])の使い方
historyオブジェクトについてはgithubなどで話題になったので知ってる人も多いと思いますが、pushStateはブラウザの履歴に新規エントリを追加するAPIで、replaceStateは現在のエントリを入れ替えるAPIです。
引数はpushState()と同じで、
history.replaceState(stateプロパティに入る値, 状態識別用のタイトル, [現在の状態に対応するURL]);
という引数をとります。
第三引数を指定してSame OriginならURLバーの表示を書き換える事ができるので、以下のように実際に移動しなくても表示が書き換わります。
// http://example.com/ で実行 history.replaceState(null, "", "/hey"); // => http://example.com/hey とURLバーの表示が変わる
- history.pushState、history.replaceState – 素人がプログラミングを勉強するブログ
- Firefox 4 での History API の変更 « Mozilla Developer Street (modest)
これを使って、今回はトラッキングパラメーターが存在するURL(アイテム – データベース: UrlCleaner – wedataで管理)にアクセスしたとき、トラッキングパラメーターを除去したURLへhistory.replaceStateを使って書き換えているので他のGreasemonkeyのようなリロードがなかったり、アドオンのように通信を監視する手間が省けます。(以前同じ名前でアドオンを作ってたけど重すぎた)
UrlCleanerと同じWedataで管理されたものを勝手に使ってるので、処理自体は互換性があるようにしています(一部拡張してるけど) 気になったものがあったらSITEINFOを書いて、UrlCleaner – wedataに登録するとよいです。
- ParamCleaner for Greasemonkeyi
- http://userscripts.org/scripts/show/100611


