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

Coco 0.2.0

.co

https://github.com/satyr/coco/tree/0.2.0CoffeeScript 1.0.0 のリリースに合わせてこちらもバージョンを繰り上げた。 以下は 0.1 → 0.2 で可能になった書き方の一部。 0.1.1 0.2.0 a[0]['@'] a.0.\@ [arguments[1], arguments[2]] @@[1, 2] [o['+'], o['-'…

rest = a.slice(i, ?)

.js

配列 a の i 番目以降をコピーしたいとき、 a.slice(i) と通常は第二引数を省略するが、状況に応じて切り替えたい場合は a.slice(i, excludeLast ? -1 : x) のように何か値を渡すことになる。この x を何にすべきか((無論 a.length とはしたくない))。splice…

rest = a.splice(i, ?)

.js

配列 a の i 番目以降を抜き出したいとき、 a.splice(i, a.length) だと冗長なので単に省略して a.splice(i) と書いていたが、少し前に JScript で失敗することを知って a.splice(i, 1/0) ((1/0 === Infinity))と書くようになり、でつい今日、今度は JSC が…

Coco 0.1.3

.co

https://github.com/satyr/coco/tree/0.1.3#readme趣味的リファクタリングの結果オリジナルよりかなり小さく速くなった。 ver. LOC size speed Coco 0.1.3 1961 113 KB 1.4 sec Coffee 0.9.6 2312 170 KB 2.0 sec 行数・速度は添付の loc/bench タスク、サイ…

Coco 0.1

.co

http://satyr.github.com/coco/ https://github.com/satyr/coco/tree/0.1 紆余曲折の末無事に CoffeeScript 0.9.5 が出たので、Coco の方もこの機会にリリース宣言しておくことに。 ドキュメントが CoffeeScript からの変更点を羅列しただけの README しか無…

gpum

https://github.com/mooz/gpum惰性で使ってた Notifier が壊れたので乗り換え。快適至極。

CoffeeScript

少し前*1から本格的にちょっかいを出し始め、機能を増やしたり*2独自演算子((? ?. ?[] ?() ?= ||= &&=))の挙動をまともにしたり優先順位を直したり細かいバグを潰したり余分な括弧を外したり必要な括弧を付けたり高速化したりウェブコンソールを作ったりした…

Re: E4X

x.list.(function::hasOwnProperty("@id") && @id == "b"); http://teramako.github.com/doc/modest-20100904/index.html#(10) .(function::child("@id") == "b") で良さそう。 さらにゴルフするなら .(*.parent().@id == "b") とか。 xlist[i] = <span>hoge</span>; http…

typeof / /

.js

ECMAScript 4 discussion - Callable RegExp vs. typeof Bug 61911 - typeof(/regExp/) should return "object", not "function" (WebKit) Bug 28117 - Native JSON.stringify does not omit functions Bug 582717 - Make regular expressions not callable …

life

http://jsdo.it でごるふしてる人が居たので釣られた。 ついでに長らく放置していたテキストベースのやつも縮めて投稿。

464B tetris

AutoPager.ize()

AutoPager 自動更新先の Wedata ミラーが微妙に古い。 のでオリジナルから手動更新。 // Run in chrome://browser/content UpdateSites.updateSites.every(function(s){ if(!~s.url.indexOf('AutoPagerize')) return true; s.url = 'http://wedata.net/datab…

alnumpop

http://gist.github.com/479545 履歴・タブ一覧のポップアップにアクセスキーを振る。 key{config,snail} から開く設定と併用。

lmnpop

https://addons.mozilla.org/addon/196133 / GitHub - satyr/lmnpop: Pops elements as resizable windows. 説明 DOM 要素をポップアップ 詳細 親切な誰かが書いてくれた 用途 Flash 観賞等 経緯 単に open('data:text/html,'+ parent.innerHTML) とかすると…

XPC cache removal

Fx3.7a で JS Module の変更が思うように反映されない件の解決策を教わった。 16:53 (satyr) how do you reload jsm in nightly? restarting Firefox has no effect 17:03 (Unfocused) if you're on windows, delete XPC.mfl in your profile directory (or …

node4x

.js

XML/XMLList → Node を愚直に。 function node4x(xml, doc){ doc = doc || document; if(xml.length() === 1) switch(xml.nodeKind()){ case 'attribute': let at = true; case 'element': let {uri, localName: name} = xml.name(); if(at){ at = uri ? doc…

Halt Alert

http://gist.github.com/418451 alert ループ脱出用 uc.js。commonDialog.xul に checkbox を追加する。 Stop script 親ウィンドウのスクリプト実行を不許可に。setInterval(alert,0) とか onkeydown=onmousemove=alert とかに有効。 Wipe window 親ウィンド…

insertText

テキストボックス((textarea, input:-moz-any(:not([type]), [type=text], [type=password]))) tbox のカーソル位置へ文字列 text を挿入したいとき,HTMLTextAreaElement の貧弱な機能で実現するとこんな風になる。 var {value, selectionStart, selectionE…

xqjs

http://github.com/satyr/xqjs (AMO) 簡易JS実行環境。習作第二弾。 機能 DOMi 風の対象ウィンドウ選択 プリプロセッサ JSマクロ CoffeeScript 入力履歴 単語補完 出力用関数とか は this を参照 作成動機 一々 function を書きたくない。 話題の CoffeeScri…

cal

CmdUtils.CreateCommand({ name: 'cal', previewUrl: <>data:application/vnd.mozilla.xul+xml, <datepicker type="grid" align="top" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"/>, }); はてなグループ 呟いて済ませるつもりが無闇に長い MIME type と xmlns のせいで140字に収まらなかった。悔しい。 jQuery と歴史的仕様のおかげでギリギ</datepicker>…

uc

http://github.com/satyr/uc (AMO) userChromeJS もどきに subscriptoverlayloader.js 相当の機能を付けた拡張。 いい加減 XUL を覚えねばと思い*1,習作として作成。 ○ 読み込み元を複数指定可能*2 若干高速 メタ情報をいちいち読まない(起動時とファイル…

プロトコル別ローカルファイル上クライアントサイド永続ストレージ事情

code \ URI scheme file: chrome: resource: localStorage ×*1 ×*2 ✔ globalStorage[location.hostname] ×*3 ✔ ✔ document.cookie ✔ ×*4 ✔ Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2 落としてきた twicli…

radiko lite

妙に重いし変なエラーを吐くので枝葉を払った。 http://gist.github.com/346209.txt?.user.js ++onhashchange 番組表に埋め込んでみた らどの局がかかってるか分からなくなったので表示欄を追加 Greasemonkeyでサイト既存CSSの影響を受けないポップアップパ…

escape(_,0)

SpiderMonkey の escape() は第二引数にビットフラグを受け取る。 Amazon の API 用にこんな関数を書いてて気付いた。 function amazEnc(str) encodeURIComponent(str).replace(/[!\'()]+/g, escape).replace(/[*]/g, '%2A'); amazEnc('unescape(_)') //=> E…

valueOf() と SpiderMonkey

.js

http://gist.github.com/330746↓こうなるはずが (v8 / Nitro / JScript) +_ -> _.valueOf(undefined) "" + _ -> _.valueOf(undefined) SpiderMonkey*1だと Object(_) -> _.valueOf("object") +_ -> _.valueOf("number") "" + _ -> _.valueOf("undefined") 該…

caret@hint

Hit-a-Hint もどきに続き,Caret Hint もどきを作った。 caret@hint · GitHub javascript:"caret@hint",['http://gist.github.com/230771.txt',function(d){d.body.appendChild(d.createElement('script')).src=this[0]}][1](document) 機能 ヒントで選んだ…

zEn4X

.js

Zen Coding 風の記述から E4X を生成するのを書いてみた。 zen4x('dl#id.cla.ss > dt{content} + dd > input[type=radio][name=$]*2') <dl id="id" class="cla ss"> <dt>content</dt> <dd> <input type="radio" name="1"/> <input type="radio" name="2"/> </dd> </dl> 使い途は…。