タグ

ブックマーク / d.hatena.ne.jp/brazil (58)

  • 周期的に処理を実行するキュー - FAX

    JavaScriptLDR + GoogleWebHistoryで使った。 インスタンスを作って、処理を追加(push)するだけでスタート。実行中でも、停止後でも、いつでも処理を追加できる。タイマーは一個なので、処理は直列で実行されてく。 function Stack(interval){ var interval = interval==null? 100 : interval; var q = []; var iid = null; this.push = function(fs){ if(typeof(fs)=='function'){ q.push(fs); } else { while(fs.length) q.push(fs.shift()); } if(iid!=null) return; iid = setInterval(function(){ q.shift()();

    wacky
    wacky 2008/06/08
    登録された関数をタイマーで順次実行するJavaScriptクラス。コードスニペット。/キューなのにstack。
  • LDR、重複エントリをグレー表示するGreasemonkeyスクリプト、約第三版 - 実用

    JavaScript LDR - Dedupe Entries – Userscripts.org LDRで表示したエントリーと、訪問済みのエントリーをグレー表示するGreasemonkeyスクリプトです。フィードを既読にするタイミングでフィード内の全エントリーのアドレスが保存されます。以降同じエントリーは「以前表示したことがある」とわかるように文字と写真が薄くなって表示されます。以前のバージョンが入っている場合は、「関連付けられた設定も削除」をチェックして一度アンインストールを行ったうえで、再度インストールを行ってください。 このブログには書いてませんが、今までに、何度か大きく更新をしていて、最初のバージョンよりずいぶん良くなってます。エントリー表示テンプレートを書き換える方式になり、エントリーが多いときでも固まらなくなりました。このバージョンではDOM Storageを使うことで、10

    wacky
    wacky 2007/12/06
    livedoor Readerで表示済み&訪問済みのエントリを目立たなくするGreasemonkeyスクリプト。複数フィードで同じURLが含まれる場合に便利。
  • スライドショーのようにテキストを読むGreasemonkeyスクリプト、YHC - FAX

    JavaScript YHC – Userscripts.org 長文をスライドショー形式で読むテキストリーダーです。デモビデオ(1分半)は以下。kotorikoさんの『捨松定吉』を、ランダムフィルタをかけて読んでいます。 機能説明ウィンドウ右下のGreasemonkeyメニューから[YHC]を選びスタートさせます。先に文章の一部を選択している場合はその部分を、そうでない場合は対象となる部分をマウスで指定します。 操作は主にキーで行います。 キー機能Esc終了↓ or S再生開始/停止→ or J or Space次のスライド 再生中はスピードアップ← or K前のスライド 再生中はスピードダウンGジャンプHome先頭のスライドEnd最後のスライド ↓キーで再生を開始して、→キーで再生速度を少し速くして、速すぎたら←で遅くして。気になるところに戻りたい場合は、↓で止めて、←→で移動して手動

    wacky
    wacky 2007/09/06
    Webページのテキストをスライドショー形式で読むテキストリーダのGreasemonkeyスクリプト。
  • String.prototype.supplant - FAX

    JavaScriptDouglas Crockford: ”The JavaScript Program - Yahoo! Video String.prototype.supplant = function (o) { return this.replace(/{([^{}]*)}/g, function (a, b) { var r = o[b]; return typeof r === 'string' ? r : a; } ); }; var template = '' + 'Last{last}' + 'First{first}' + ''; var data = { first: "Carl", last: "Hollywood", border: 2 }; mydiv.innerHTML = template.supplant(data);

    wacky
    wacky 2007/05/07
    文字列を置換する簡易テンプレートエンジン。コードスニペット。
  • Collection & Copy - 次の画像/前の画像、ブックマークレット

    JavaScript[J]と[K]で、次の画像/前の画像へ移動できるようにするブックマークレット。ウェブで、写真や画像を、よく見る人には便利なことと思う。 以下のページのように、一つのページの中に多数の画像があるページで利用する。(全部のページで正常動作を確認した。) Dark Roasted Blend: Lords of the Logistics, Part 3らくがきVintage Photographs -- Entries on 3rd January 2006Flickr: Photos from hiramekii スクロールをするために、視線をスクロールバーへやったり、マウスを操作したりすることを煩わしく思ったため作った。ページの上部に次々に写真が現れるため集中できる。おかしな位置でスクロールが止まり、画像が切れてしまうこともない。 以下は、Firefox 2.0とIE

    wacky
    wacky 2007/04/16
    j/kキーで、次の画像・前の画像へ移動できるようにするブックマークレット。
  • Collection & Copy - Firefox 2.0、Storage(SQLite)、ポイント

    JavaScriptMDC - Storage これを読んで、僕が思ったポイント。 Firefox 2.0には、SQLiteが組み込まれている。同じくFirefox 2.0で導入された、クライアントサイドストレージ(sessionStorage/globalStorage)とは異なるもの。 (クライアントサイドストレージの中では、このSQLiteが利用されている。)基的にchrome URLや拡張からの利用を想定し、ウェブページからは利用できない。システムや拡張のデータファイルはプロファイル*1に、拡張子sqliteで保存されている。mozIStorageConnection#executeSimpleSQLは、値を返さない。 テーブルの作成や削除、データ追加などに利用する。セキュリティ的にもパフォーマンス的にもmozIStorageConnection#createStatementを

    wacky
    wacky 2007/01/29
    Firefox 2.0にはSQLiteが組み込まれているらしい。Webページからは利用不可能。
  • infogami、他のページに書かれたコードをロードする - FAX

    infogami、他のページに書かれたコードをロードする JavaScript 2007/1/4 追記 swdyhの日記 - 「infogami、他のページに書かれたコードをロードする」を試してみた Markdown解釈の際に、infogamiが>とか<をエスケープしちゃうとのこと! そうでした、infogamiがスルーしてくれる要素というのがあるんですよね。 すんません、適当で。 こんなコードも残ってて、各ページで個別にCSSを書こうとしてたみたいです。 style要素、書けなかったのかなぁ。 function addRules(css){ document.body.appendChild( document.createElement('span') ).innerHTML = '<span style="display:none">DUMMY</span><style tyoe=

    wacky
    wacky 2007/01/04
    jsファイルをアップロードできないCMSやWikiで無理矢理JavaScriptライブラリを利用する。
  • Collection & Copy - 相対パスを絶対パスに変換する

    JavaScriptIE 6、IE 7、Firefox 2.0、Opera 9で確認。 function absolutePath(path){ var e = document.createElement('span'); e.innerHTML = ''; return e.firstChild.href; } alert(absolutePath('/')); 関連リンクJavaScriptな日々 | 相対パスを絶対パスに変換する方法Imageを使っています。 getAttribute href bugBug Report: getAttribute(”HREF”) is always absolutegetAttribute("href",2)とか。既存のa要素のhrefは上記の方法で絶対パスになるけど、document.createElement('a').href='/'では、

    wacky
    wacky 2007/01/04
    URLを相対パスから絶対パスに変換する方法。a要素をcreateElementしてhref属性にセットするだけでは駄目。
  • Deferred、結果値の保存、非同期にインターフェースを合わせる - FAX

    JavaScript はじめてMochiKit.Async.DeferredのJSON取得のサンプルコードを見たとき、「いつ取得の処理が開始されるのか」、「なぜ、はじめにコールバックを渡さなくてよいのか」という疑問が起きました。ベルトコンベアで流れ作業を行うときに、作業者が並ぶ前に、材料を投入してラインを始動してしまっているような感覚です。そのサンプルコードは、以下のようなものです。 var deferred = loadJSONDoc('http://sample.com/data.json'); deferred.addCallback(function(data){ alert(data); // JSONデータが渡される }); MochiKit.Async.Deferredの最初のテストコードでは、ハンドラをセットして、コールバックして、その後に再度ハンドラをセットするテストが

    wacky
    wacky 2007/01/01
    MochiKit.Async.Deferredの解説(3)。コールバックはどのタイミングで追加してもOK、同期処理と非同期処理を同じインターフェースで扱うことが可能。
  • Collection & Copy - Deferred、遅延リソースのインターフェース、パターン

    JavaScript setTimeoutで実行される関数の中で発生するエラーは、セットした部分のtry/catchで補足することはできません。 function throwError(){ throw new Error('ERROR'); } try{ setTimeout(throwError, 3000); } catch(e){ // ここには到達しない alert(e); } MochiKit.Async.Deferredを使うと、エラーバックでエラーを補足できます。 callLater(3, throwError).addErrback(function(e){ alert(e); }); エラーの補足以外にも、Deferredのインターフェースから以下が行えます。 キャンセル(cancel)状態(fired)コールバックの追加(addCallback)エラーバックの追加

    wacky
    wacky 2006/12/31
    MochiKit.Async.Deferredの解説(2)。「準備に時間のかかるリソース」を抽象化し汎用的なインターフェースを提供。
  • Deferredチェーン、非同期処理の逐次実行 - 実用

    JavaScript MochiKit.Async.Deferredは、「現時点ではまた利用できない値」を扱うためのクラスです。 以下のように、コールバックを並べ、イベントを発火させると、各々の返り値が次のコールバックへ渡され実行されていきます。 function increment(value){ alert(value); return value+1; } var d = new Deferred(); d.addCallback(increment); // alert(1) d.addCallback(increment); // alert(2) d.addCallback(increment); // alert(3) d.callback(1); この時、コールバックは以下のようにチェーンを形成しています。(当はエラーバックも合わせて一つのチェーンを形成しているのですが、

    wacky
    wacky 2006/12/29
    MochikitのMochiKit.Async.Deferredの解説(1)。コールバックを並べて逐次実行。
  • JSAN-0.10 - ドキュメント - FAX

    翻訳 原文:JSAN-0.10 - DocumentationCopyright (c) 2005 Casey West. All rights reserved. 名前JSAN - JavaScript Archive Network概要 // または、ライブラリの中では if (typeof JSAN != 'undefined') { JSAN.use('Some.Library'); } 詳細このライブラリは、古典的なプログラミング言語に備わる振る舞いをJavaScriptへ追加します。そして、きちんと設計されモジュールに分けられたコードを作成するために必要な機能をプログラマに提供します。クラスプロパティglobalScope JSAN.globalScope = _player; globalScopeには、デフォルトでselfの値がセットされます。これはウェブブラウザでは上手く

    wacky
    wacky 2006/12/19
    JSANドキュメントの和訳。
  • ページ遷移前に確認をする、onbeforeunload - 実用

    JavaScriptwindowのonbeforeunloadハンドラで、Event#returnValueに値を入れると、ページ遷移直前にユーザーに確認ダイアログを表示することができる(んだって)。 以下コードの正常動作を、Firefox 2.0とIE 7で確認した。Operaでは実行されなかった。 window.onbeforeunload = function(event){ event = event || window.event; event.returnValue = '?'; } 以下は、IEとFirefoxの確認ダイアログのキャプチャ。 MochiKitでは、Event#confirmUnloadで確認ダイアログを出せる。 connect(window, 'onbeforeunload', function(event){ event.confirmUnload('?'

    wacky
    wacky 2006/11/05
    ページ遷移直前にユーザーに確認ダイアログを表示することができるonbeforeunloadイベントハンドラ。
  • アスペクト指向/AOP関連 - FAX

    JavaScript, リンク最終更新 2006/12/22AspectJS 1.0.0 - Javascript AOP frameworkSlipwave Javascriptjs.aop.Aspectjs.aop.Observablejs.aop.PointCut あまきた日記 - JavaScriptでアスペクト指向marsのメモ - JavaScriptでAOPsubtechグループ - ピンク ブロッサム ダイアリー - JS で AOP というか before, after trigger檜山正幸のキマイラ飼育記 - JS番外編:これって、アスペクト指向かぁ llameradaの日記 - JavaScriptの簡易プロファイラ(new Hatena).blog() - JavaScript でプロファイリング dotvoid.com - Aspect Oriented Pro

    wacky
    wacky 2006/10/07
    JavaScript+アスペクト指向プログラミングの関連記事まとめ。
  • setOffsetHeight - FAX

    setOffsetHeight JavaScript function setOffsetHeight(elm, h){ with(elm.style){ height = h + 'px'; if(elm.offsetHeight == h) return; height = h - (elm.offsetHeight - h) + 'px'; } } むりやり。 一度heightを設定して、その値になっていなかったら、誤差を調整し再度設定。 Permalink | コメント(0) | トラックバック(0) | 03:40

    wacky
    wacky 2006/10/02
    DOMの高さをoffsetHeight値で指定するJavaScript関数。コードスニペット。
  • Collection &amp; Copy - テキストエリアのカーソル座標を取得する

    JavaScriptテストコードのため書きっぱなしです。以下は、テキストエリアのカーソルの下に、候補窓がついてくるサンプルです。これをちゃんと書き直して、補完と組み合わせてみよう。 サンプル pre要素にborderやwidth/height、font-familyやword-spacingなど全ての属性をコピーしてテキストエリアのクローンを作り、その中のカーソルを真似たspan要素の座標を取得しています。もしかして、eventなどから簡単に位置を割り出せるのかなぁ。 カーソルの位置(文字数)はid:kosekiさんのCross Browser selectionStart/selectionEndをコピーして真似ました。 EditArea(コードが大変な感じ)も、テキストエリア(編集領域)とDIV要素(表示領域)を重ね合わせて色々なことをやってる。大量のspan要素で色づけ。 infog

    wacky
    wacky 2006/09/25
    textareaのキャレット位置を取得するサンプル。実際にはpre要素で擬似textareaを作成し、その中の擬似カーソルの位置を取得。
  • CSSルールを一括で追加する - FAX

    CSSルールを一括で追加する JavaScript IEのStyleSheet#addRule(selector, property)は、セレクタごとに実行しなくてはいけないため代替を書きました。 Firefox、IE 6.0、Operaで確認しました。 function addRules(css){ document.body.appendChild( document.createElement('span') ).innerHTML = '<span style="display:none">DUMMY</span><style tyoe="text/css">' + css + '</style>'; } ダミーのエレメントがないと、IEではエレメントの追加を検知しないようです。 参考リンク 暴満館 » JavaScriptCSSを弄る際のメモ The styleSheet o

    wacky
    wacky 2006/09/17
    ページへCSSルールを動的に追加するJavaScript関数。コードスニペット。
  • 改行コード、pre、textarea - FAX

    JavaScriptpre要素内の文字を変更する際、改行コードの扱いが各ブラウザで異なるようなので以下コードで調べました。 var pre = document.getElementsByTagName('pre')[0]; pre.innerHTML='[R]\r[N]\n[NR]\n\r[RN]\r\n[END]'; pre.appendChild(document.createTextNode('[R]\r[N]\n[NR]\n\r[RN]\r\n[END]')); innerHTMLで追加した結果は以下です。IEOperaFirefox\r空白のみ○○\n空白のみ○○\n\r空白のみ改行×2改行×2\r\n空白のみ○○ createTextNodeで追加した結果は以下です。IEOperaFirefox\r○○×\n空白のみ○○\n\r○改行×2○\r\n改行+空白○○ この結果を見

    wacky
    wacky 2006/09/17
    pre要素 / textarea要素へ動的に文字列を追加した際の、ブラウザによる改行コードの違いについて。
  • Windows XP、レジストリ、2次キャッシュ - FAX

    高速化、エクスプローラーでzip/cabのサポートを切るのは大事だよなぁ。 僕は、こんなレジストリファイルを使ってます。 Windows Registry Editor Version 5.00 // 応答しないプログラムを強制終了させる // 1000 = 1秒 [HKEY_CURRENT_USER\Control Panel\Desktop] "AutoEndTasks"="1" "WaitToKillAppTimeout"="100" "HungAppTimeout"="100" // DLLファイルのメモリー常駐を開放する [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer] "AlwaysUnloadDLL"=dword:00000001 // ショートカットのリンク先を追跡しない [HKE

    wacky
    wacky 2006/09/12
    適用すればWindows XPが快適になる(かもしれない).regファイル。こういうの自分用に作っておくと便利だな。
  • 配列と単一の値の両方を取る関数 - FAX

    配列と単一の値の両方を取る関数 JavaScript function(arg){ var args = [].concat(arg); ... Permalink | コメント(0) | トラックバック(0) | 08:36

    wacky
    wacky 2006/08/28
    JavaScript変数の内容を配列に統一するシンプルな手法。