f8g

JavaScript

ポップアップブロック

下の二つはブラウザによって動作が違うみたいというお話でした。 button.onclick = function(){ window.open(url); }; button.onclick = function(){ setTimeout(function(){ window.open(url); }, 1); }; http://arikui.github.com/js/popupblock.html <html> <head> <title>te</title></head></html>…

クロージャ, call, apply の今

もう1年も経っていた。 http://d.hatena.ne.jp/arikui/20091021 久々に気になったのでちょっと直して測りなおしました。計測PCも違ってたりしますが、多分傾向は同じ。 単位はナノ秒。 fx3.6 plain 57 closure 218 call 230 apply 520 apply arguments 1700 …

ImageData callback

イマドキなデータのやりとり。 server.php 255){ exit("cannot support charactor '" . $c . "'"); } else{ $data[] = $n; } } $v_n = count($data); $px_n = ceil($v_n / 3); $img = imagecreate($px_n, 1); $i = 0; $x = 0; while($x < $…

Selectorの話し

firefox GChrome IE8 opera #foo .bar 636 512 432 551 .bar 493 262 435 336 #foo a 597 320 390 561 #foo * 619 280 384 530 span.bar 386 170 240 217 <html> <head><title>test</title> <script type="text/javascript"> window.onload = function(){ var selectors = [ "#foo .bar", ".bar", "#foo a", "#foo *", "</head></html>…

WSHでウェブページをHTMLDocumentで取得

いろいろ調べたけどあんまりうまくいかなかったりしたので、ちょっとややこしい方法。 ウェブページの取得 MSXML で。 var XmlHttp = WSH.CreateObject("MSXML2.XMLHTTP"); XmlHttp.open(method, url, false); XmlHttp.send(data); 文字コード変換 変換には…

LDR のピンを最後に追加するようにするのと, 100 件溜まったら自動で開く Greasemonkey

http://userscripts.org/scripts/show/61268LDR よく分からないのと, onload 書き換えとか色々やな感じではあるけど, 動作的に問題はなさそう. // ==UserScript== // @name LDR pin push // @namespace d.hatena.ne.jp/arikui // @include http://reader.liv…

WSHでTwitterのリストを見る

http://groups.google.com/group/twitter-api-announce/browse_thread/thread/617bdef9f6b08372?hl=en&pli=1 var username = "username"; var password = "password"; var api_url = "http://twitter.com/ユーザ名/lists/リスト名/statuses.json"; var creat…

Ctrl + Click で検索

テキストボックスを Ctrl + Click すると, 親 form を submit. // ==UserScript== // @name post ctrl click // @namespace d.hatena.ne.jp/arikui // @include * // @require http://gist.github.com/29681.txt // ==/UserScript== $X("//input[@type='text…

クロージャ, call, apply

http://d.hatena.ne.jp/arikui/20090928/1254140257 var o = {r: 1}; 1. クロージャ o.f = function(){ var self = this; (function(n){ self.r += n; })(2); }; 2. call o.f = function(){ (function(n){ this.r += n; }).call(this, 2); }; 3. apply (call…

ifとスコープの速さ

ifとor 書き方として気になったんですが、 if(!b) b = 2; a = b + c; と a = (b || (b = 2)) + c; と、if文を書くかどうかで速度に違いが出るのかなー、と思って計ってみました。 // case 1 var a, b, c = 1; while(i--){ if(!b) b = 2; a = b + c; b = null…

Rubyで書いてJavaScriptで使う 2(managed codeを使いやすくする)

前回の続き。 http://d.hatena.ne.jp/arikui/20090428/1240866008 前は、 (なんちゃら).Invoke("呼ぶメソッドの名前", [引数]) という風でしたがやっぱり使いづらい。Ruby のオブジェクトをそのまま JavaScript にしたような感じで使いたい。ということで、…

Rubyで書いてJavaScriptで使う

AgDLRのRepl面白いですね。 CodePlex Archive ブラウザ上で Ruby を試せる「IRBWEB」を作ってみた - てっく煮ブログ 跡地 Replは名前のとおりブラウザ上でレプるためのパーツって感じでしょうか。Replの実装は大体こんな感じでやってるんだと思います。 http…

Text to Canvas

この前のネタ、テキスト手書きとかすると酷いことになるなー、と思ったのでFx3独自仕様を使って文字を描画します。Canvas上をダブルクリック。日本語も可能でした(Windows)。 文字を描く | MDN 座標は適当にやってるので、ちゃんと調整しないとマズイ。 // …

Function Map

Ctrl + クリック長押し、離したときに実行。場所で覚えるGUI。 // ==UserScript== // @name Function Map // @namespace http://d.hatena.ne.jp/arikui/ // @include * // ==/UserScript== var fields = [ new Field( new Circle(new Point(window.innerWidt…

TomblooのexecuteWSHでオブジェクトのやりとり

TomblooのexecuteWSHはこういう仕様になってます。 /** * Windows上でWSHを実行する。 * スクリプト内でWScript.echoなどで出力された文字列も返り値に含まれる。 * * @param {Function} func WSHスクリプト。 * @param {Array} args WSHスクリプトの引数。 …

Dashboard Drag Scroll

SpaceキーやPageDownキーやLDRizeより細かい移動が欲しい人向け。Dashboardの左右両端をドラッグしてスクロールするようにします。(実際の移動量の7倍スクロール → position.rato(ratioのスペルミス)) // ==UserScript== // @name Dashboard Drag Scroll…

WSHでImageMagick、Tomblooに位置情報付加

ImageMagickはCOMからも使えるんですね。 Install the ImageMagickObject COM+ Component @ ImageMagick たとえば、identify -verbose rose.jpgをWSHで実行したいときはこうやります。 var ImageMagick = WSH.CreateObject("ImageMagickObject.MagickImage.1…

Tomblooで自動タグ付加 その2

はてなブックマークからも取得、全ポストにタグ付け。いまいちだけどいいか。 del.icio.usはMD5が面倒くさそう。 (function(){ function Tag(init, args){ this.tags = {}; if(init && args) init.apply(this, args); } Tag.prototype = { add: function(tag…

Tomblooで自動タグ付加

タグ付けとか面倒なわりにLivedoor Clipではタグからしか検索できないみたいで。他の人が付けたタグを見て自動でタグ付ける。 addAround(LivedoorClip, 'post', function(proceed, args){ var ps = args[0]; var url = "http://api.clip.livedoor.com/json/c…

SilverlightでJavaScriptのライブラリを書く

メモ。 クラスにScriptableTypeAttributeを設定する ScriptableTypeAttribute Class (System.Windows.Browser) | Microsoft Docs <Browser.ScriptableType()> _ Public Class Library1 Dim _aaa As Integer = 1 Public Property aaa() As Integer Get Return Me._aaa End Get Set(ByVal</browser.scriptabletype()>…

Canvasでバーコードを読む

JANの仕様 ここが分かりやすい。→ バーコードの作り方 プログラミングでの話 まずは、 バーコードの部分だけ写ってる写真を用意する 高さ1px分どこかを切り取る コントラスト調整 2値化 ビットの文字列にする モジュールの幅を調節 左右のガードバーからスケ…

Shellなプロトコル

中身がまったく別物になってきたので別のGistにしました。ちゃんと動いてる気がする。 http://gist.github.com/69913 普通の実行 cmd:command 例「cmd:ruby -e "puts 1"」 ファイルにコードを保存して実行 cmd:command;code;args 例「cmd:vbs; WSH.Echo(WSH.…

いろんな言語を実行できるプロトコル

昨日の発展したやつです。「eval:言語;コード」で実行します。(たとえば「eval:vbs;WSH.Echo(1)」とか「eval:ruby;puts 1」とか) Language.evaluatorsに色々追加していけば色々実行できると思います。 Tomblooを使わないようにしたら、Tomblooのコードをパ…

Firefox3でWSHプロトコル

Firefox3のXPCOMUtilsを使うと、短いコードで独自プロトコルを登録できるんですね。 Components.utils.import | MDN MXR is retired 2008-12-03 - 趣味プログラマの外部記憶 XPCOMUtilsを使わない方法との比較 使わない方法は以下のリンクを参考に。 Adding …

まだ聴いてない曲を意識したい

友達や家族からCDを借りたり違法ダウンロードしたりしてると、あっという間にプレイリストの中の曲が膨らんできて、一体どの曲を聴いてないか困る、なんて事例がよくあります。自分もそうです。(違法ダウンロードしているという意味ではない) なので、 み…

vb.jsの日記 : For Next

人気のプログラミング言語、VisualBasicっぽく書けるJavaScriptライブラリを開発する日記です。 最初はFor Nextステートメントを実装したいと思います。 function For(start){ For.isExit = false; return { To: function(end){ var step = 1; var loop = fu…

JSActionsでGPSから座標を取得してGoogleMapsに反映

Tombloo + JSActionsでWSHを実行するコードは下ページからのコピペです。凄い簡単にFirefoxからWSHが使える。 http://d.hatena.ne.jp/brazil/20090102/1230876349 GPSからデータを取得する GPSからデータを取得するのに自作コンポーネントを使ってますが、MS…

netkeibaの出馬表に過去の競争成績を表示するGreasemonkey(修正)

http://d.hatena.ne.jp/arikui/20060513/1147528160 久々に動かしたら動かなくなってたので修正。多少軽くもなったか。 pastRaceNumを変えると、過去何走表示するかを変更できます。

画像を分割してランダムに配置するモザイク

カラー画像だと少々面倒臭そうなので、グレースケールに変換してからやります。手順はこんな感じです。 グレースケール化 10 * 10 に分割 分割画像のRGBを平均して分類 分類ごとにランダムソート 再配置 コード 使用 ImageProcessing.prototype.f= function(…

Tombloo Mozaic でソート by 色

Greasemonkeyでやろうとしたけど動かなかったんで、そのままHTMLにコード書き込みました。HTMLは通常、 Firefoxのプロファイルディレクトリ\extensions\tombloo@brasil.to\chrome\content\library\Mosaic.html にあります(多分)。Mosaic.htmlの一番下の方…