miのJavaScriptモードを作った
mi.app用のJavaScriptモードを作ってみた。miはコード補完機能が標準でついてないので、そこのところを補完することを第一目標として作成した。詳しい機能などはGithubの方に書いておいたので、そちらも参照のこと。
スクリーンショット
主な機能
- JavaScriptの主要なプロパティ名/メソッド名をキーワードとして登録。
- 関数・オブジェクト・変数名を自動的に見だしリストに追加し、かつキーワードとして登録。
- キーワードに登録されたものは、コード入力中にescまたはCtrl+Spaceを押すことでコードの補完候補に現れるようになるので、入力の負荷が大幅に削減される。
- function/if/for/whileなどのあとで自動的にインデントを一段深くする機能を搭載
- ツールとして、JSDocのコメントをカーソルの位置に挿入する機能と、JSDoc Toolkitで表示中のファイルのドキュメントを作成する機能を搭載
インストール
Githubからダウンロード(ページ上の「ZIP」ボタンからzipでまとめてダウンロードできる)して、「JavaScript」フォルダをLibrary/Application Support/mi/mode/のなかに放り込めばインストールは完了です。
Tagged as: JavaScript, development
BogosortをJavaScriptで実装してみた
暇でWikipedia見てたらボゴソートとかいうのを見つけた。JavaScriptでの実装例があまりないようだったので、どうせだからと実装してみることにした。
ちなみに、ボゴソートとは「要素をシャッフル→ソートされてたら処理終了、されてなければまたシャッフル」を繰り返す、非常に効率の悪いアルゴリズムである。
function isSorted(aArray){
for(var i=0,l=aArray.length-1;i<l;i++){
if(! (aArray[i] <= aArray[i+1])) return false;
}
return true;
}
function shuffle(aArray){
return aArray.sort(function(){
return Math.random()*100 <= 50;
});
}
function bogoSort(aArray){
while(!isSorted(aArray)){
shuffle(aArray);
}
}
追記。sortでシャッフルすると偏るらしいです。
「タブを隠す」メニューを追加するuserChrome.jsスクリプト
他人に見られたくないサイトを見ているようなときに使えるかも?
隠されたタブは、タブバーからは見えなくなるので、タブ一覧のメニューから選択するようにして下さい。 また、隠されたタブを選択している状態で、「Show Selected Tab」を実行すると、普通のタブに戻ります。
Tagged as: Product, development, JavaScript, userChrome.js
adblock#.uc.js
匿名で開発していたものも公開することにした。これはそのうちの一つ。
個人的に、Adblock Plusとかが重かったので、非力なPCでもそれなりのスピードで動くようにすることを目指して開発した。 詳しい使い方などは、Read Me.txtを見ていただければ分かると思う。Tagged as: Product, development, JavaScript, userChrome.js, Firefox, adblock
IEのDOMがおかしい
導入したie6-upgrade-warningが実はうまく動いていなかったので、原因を探っていたら、IEのバグらしきものに遭遇した。
具体的には、以下のような感じ。
var input = document.createElement('input');
input.id = "test_i_1";
input.type = "checkbox";
document.body.appendChild(input); //きちんとチェックボックスが追加される
var input = document.createElement('input');
input.id = "test_i_2";
document.body.appendChild(input);
var i = document.getElementById('test_i_2');
i.type = "checkbox"; //エラーがでる
なぜか、getElementByIdしたやつだとDOMがうまく動かないみたい。ちなみに、i.setAttribute("type", "checkbox")でも
結果は同じだった。
やはりIEのDOMはよく分からん...
Tagged as: development, JavaScript, ie