<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/ndruger/">
    <title>ndruger @ ウィキ</title>
    <link>http://w.atwiki.jp/ndruger/</link>
    <atom:link href="https://w.atwiki.jp/ndruger/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>ndruger @ ウィキ</description>

    <dc:language>ja</dc:language>
    <dc:date>2012-10-26T09:48:05+09:00</dc:date>
    <utime>1351212485</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/ndruger/pages/1.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/ndruger/pages/2.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/ndruger/pages/14.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/ndruger/pages/3.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/ndruger/pages/4.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/ndruger/pages/5.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/ndruger/pages/6.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/ndruger/pages/7.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/ndruger/pages/8.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/ndruger/pages/10.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/ndruger/pages/1.html">
    <title>トップページ</title>
    <link>https://w.atwiki.jp/ndruger/pages/1.html</link>
    <description>
      [[Webアプリ開発に利用するデバッグ機能等まとめ(仮)]]
-[[メニュー]]    </description>
    <dc:date>2012-10-26T09:48:05+09:00</dc:date>
    <utime>1351212485</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/ndruger/pages/2.html">
    <title>メニュー</title>
    <link>https://w.atwiki.jp/ndruger/pages/2.html</link>
    <description>
      **メニュー
-[[トップページ]]    </description>
    <dc:date>2012-10-26T09:47:50+09:00</dc:date>
    <utime>1351212470</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/ndruger/pages/14.html">
    <title>Webアプリ開発に利用するデバッグ機能等まとめ(仮)</title>
    <link>https://w.atwiki.jp/ndruger/pages/14.html</link>
    <description>
      Webアプリ開発に利用するデバッグ機能等まとめ(仮)。まずFirefoxとChromeのみ記述。後で他の奴も書く。~
分類が適当なので後で開発環境という形でまとめなおす。
#contents

* ブレークポイントの設定
** ソースコードの特定の行
Firefox, Chrome共に条件付きのブレークポイントが指定可能
*** FX
- Firebug
*** Chrome
- Chrome Developer Tools
*** ソースコード
debuggerステートメントを書くと開発ツールを開いているときはそこで止まる
 function a() {
   debugger;  // ここで止まる
 }
 a();
** DOMツリーの変更
Firebug, Chrome共にツリーの操作、属性の変更に対してBPの指定が可能。
*** FX
- Firebug
-- https://getfirebug.com/doc/breakpoints/demo.html#html
*** Chrome
- Chrome Developer Tools
-- https://developers.google.com/chrome-developer-tools/docs/scripts-breakpoints#dom

** JavaScriptオブジェクトプロパティアクセス
値の変更時のBPはFirefox, Chromeともに指定可能。取得時のBPに関してはソースコードを修正する必要がある。
*** Firefox
- Firebug
-- 値の変更時に可能
*** Chrome
- Chrome Developer Tools
-- 値の変更時に可能
*** ソースコード
- 対象のプロパティの___defineGetter__, __defineSetter__を定義して、それらの関数にdebuggerステートメントを記述する

** XHR
Firefox, Chromeともに可能。
*** Firefox
- Firebug
-- https://getfirebug.com/doc/breakpoints/demo.html#net
*** Chrome
- Chrome Developer Tools
-- https://developers.google.com/chrome-developer-tools/docs/scripts-breakpoints?hl=ja#xhr
*** ソースコード(todo)

** 例外(todo: Firebug)
Firefoxだとリロードしても有効な例外でのブレークポイントが張れない？もう少し調査。
*** Chrome
- Chrome Developer Tools
-- https://developers.google.com/chrome-developer-tools/docs/scripts-breakpoints?hl=ja#js_uncaught

** DOMイベント
*** Chrome
- Chrome Developer Tools
-- https://developers.google.com/chrome-developer-tools/docs/scripts-breakpoints?hl=ja#listeners


* 再描画の範囲・回数の確認
パフォーマンスに影響するリフローやリドローが、期待の範囲・回数になっているかどうか確認するために利用する。
*** Firefox
拡張機能の[[Firebug Paint Events:https://addons.mozilla.org/ja/firefox/addon/firebug-paint-events/]]を入れて、about:configでdom.send_after_paint_to_contentを有効にするとFirebugのPaintsタブで確認することが出来る。
*** Chrome
- Chrome Developer Tools
-- TimelineタブでRecordをして記憶した後で、Eventsのラインをクリックするとイベントが一覧で表示される。Paintイベントにマウスをホバーすると描画領域が視覚的に表示される。


* ページ読み込み時間のチューニング(todo: タイムラインの説明を追記)
Firefox, Chrome共にPage Speed Insights(Google), YSlowが拡張機能にある。

*** ソースコード(todo: w3cのNavigation Timingの動作確認)


* 圧縮されたJavaScriptの整形(Pretty Print)
*** Firefox
- 拡張機能の[[Javascript Deminifier:https://addons.mozilla.org/ja/firefox/addon/javascript-deminifier/]]を入れて、ステータスバーの&quot;JSD OFF&quot;をクリックして&quot;JSD ON&quot;にしてリロードすると、Firebugのスクリプトタブで表示するJavaScriptが整形される

*** Chrome
- Chrome Developer Tools
-- Sourcesタブの{}をクリック。リロードしても有効


* CPUプロファイラ
Firebug, Chrom Developer Tools共に開発ツールでプロファイルが可能。

*** ソースコード
- console.profile()とconsole.profileEnd()を使って、ソースコードから特定の間のプロファイルを取ることが出来る。
 function some(a) {
 	return a + a^2 - a*2;
 }
 console.profile();	// プロファイル開始
 var sum = 0;
 for (var i = 0; i &lt; 100000; i++) {
   sum = some(sum);
 }
 console.profileEnd();	// プロファイル終了


* DOMツリーの特定の要素を見つける

** Firefox
- Firebug
-- マウスのクリックで要素を見つける
--- 省略
-- CSSセレクタで要素を見つける
--- コンソールから$$(&#039;セレクタ&#039;)
 $$(&#039;#a&#039;)
- 拡張機能の[[Tilt:https://addons.mozilla.org/ja/firefox/addon/tilt/]]を利用すると3Dで要素を見つけられる

** Chrome
- Chrome Developer Tools
-- マウスのクリックで要素を見つける
--- 省略
-- CSSセレクタで要素を見つける
--- コンソールからinspect($(&#039;セレクタ&#039;))
 inspect($(&#039;セレクタ&#039;))


* ページのメモリ利用量やリークのチェック
*** Firefox
簡単にはできないっぽい。
about:memoryではタブごとではなく全体のメモリ利用量が表示される。Firebugのメモリプロファイラも1.10.3の時点で動かない。

*** Chrome
- about:memoryでタブごとの利用量の確認が可能
- Developer ToolsのTimelineタブでメモリ利用量・リスナーの数・要素の数の時系列のグラフを取得可能
- Developer ToolsのProfileタブのTake Heap Snapshotにてより詳細な情報を取得可能
-- 要素をDOMツリーからremoveしたが、意図せずにJavaScriptの変数が参照を持ってしまう場合のリークなどは、メインのDOM Treeに繋がってない要素の一覧が&quot;Detached DOM tree / 2 entries&quot;に現れるので、そこから発見できる。
 (function() {
   var ele = document.createElement(&#039;div&#039;);
   document.body.appendChild(ele);
   document.body.removeChild(ele);
   window.globalLeakMaker = ele;	// 意図せぬ要素の参照保持による要素のリーク
 })();
- –enable-memory-infoのオプション(todo: 記述)

*** ソースコード(todo: オブジェクトリークチェッカーの実装を記述)


* スタックトーレスの確認
*** ソースコード
- console.trace()
- 例外.stack
- arguments.callee.callerからcallerで辿る(todo: コードを記述)

* ブラウザのキャッシュの無効化
ちなみにリロードボタンをクリックする時はShiftキーを押しながらクリックするとスーパーリロードになり、HTTPリクエストヘッダーから&quot;If-Modified-Since&quot;などが外されるため304が返らなくなり、ページを確実に更新ができる可能性が高くなる。
*** Firefox
拡張機能の[[Web Developer Toolbar:https://addons.mozilla.org/ja/firefox/addon/web-developer/]]で無効化できる。
*** Chrome
Developer Toolsの設定の&quot;Disable cache&quot;で無効化できる。


* ToDo(書く予定)
ASSRET(), DP(), リモートデバッガ + dyndns, Proxy(cocproxy等), IDE + jslint, scrict mode, テスト用smtpサーバー, クエリでの動作変更, FPSカウンタ, アニメーション動作のスケールベース化、クラス名の取得、watchの活用~    </description>
    <dc:date>2012-09-25T07:25:40+09:00</dc:date>
    <utime>1348525540</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/ndruger/pages/3.html">
    <title>右メニュー</title>
    <link>https://w.atwiki.jp/ndruger/pages/3.html</link>
    <description>
      **更新履歴
#recent(20)


&amp;link_editmenu2(text=ここを編集)
    </description>
    <dc:date>2010-04-04T07:50:53+09:00</dc:date>
    <utime>1270335053</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/ndruger/pages/4.html">
    <title>プラグイン/ニュース</title>
    <link>https://w.atwiki.jp/ndruger/pages/4.html</link>
    <description>
      * ニュース
@wikiのwikiモードでは
 #news(興味のある単語)
と入力することで、あるキーワードに関連するニュース一覧を表示することができます
詳しくはこちらをご覧ください。
＝＞http://atwiki.jp/guide/17_174_ja.html


-----


たとえば、#news(wiki)と入力すると以下のように表示されます。


#news(wiki)
    </description>
    <dc:date>2010-04-04T07:50:53+09:00</dc:date>
    <utime>1270335053</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/ndruger/pages/5.html">
    <title>まとめサイト作成支援ツール</title>
    <link>https://w.atwiki.jp/ndruger/pages/5.html</link>
    <description>
      * まとめサイト作成支援ツールについて
@wikiには[[まとめサイト作成を支援するツール&gt;&gt;http://atwiki.jp/matome/]]があります。
また、
 #matome_list
と入力することで、注目の掲示板が一覧表示されます。

利用例）#matome_listと入力すると下記のように表示されます
#matome_list
    </description>
    <dc:date>2010-04-04T07:50:53+09:00</dc:date>
    <utime>1270335053</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/ndruger/pages/6.html">
    <title>プラグイン/編集履歴</title>
    <link>https://w.atwiki.jp/ndruger/pages/6.html</link>
    <description>
      * 更新履歴
@wikiのwikiモードでは
 #recent(数字)
と入力することで、wikiのページ更新履歴を表示することができます。
詳しくはこちらをご覧ください。
＝＞http://atwiki.jp/guide/17_117_ja.html


-----


たとえば、#recent(20)と入力すると以下のように表示されます。


#recent(20)
    </description>
    <dc:date>2010-04-04T07:50:53+09:00</dc:date>
    <utime>1270335053</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/ndruger/pages/7.html">
    <title>プラグイン/アーカイブ</title>
    <link>https://w.atwiki.jp/ndruger/pages/7.html</link>
    <description>
      * アーカイブ
@wikiのwikiモードでは
 #archive_log()
と入力することで、特定のウェブページを保存しておくことができます。
詳しくはこちらをご覧ください。
＝＞http://atwiki.jp/guide/25_171_ja.html


-----


たとえば、#archive_log()と入力すると以下のように表示されます。
保存したいURLとサイト名を入力して&quot;アーカイブログ&quot;をクリックしてみよう


#archive_log()
    </description>
    <dc:date>2010-04-04T07:50:53+09:00</dc:date>
    <utime>1270335053</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/ndruger/pages/8.html">
    <title>プラグイン/動画(Youtube)</title>
    <link>https://w.atwiki.jp/ndruger/pages/8.html</link>
    <description>
      * 動画(youtube)
@wikiのwikiモードでは
 #video(動画のURL)
と入力することで、動画を貼り付けることが出来ます。
詳しくはこちらをご覧ください。
＝＞http://atwiki.jp/guide/17_209_ja.html

また動画のURLはYoutubeのURLをご利用ください。
＝＞http://www.youtube.com/

-----


たとえば、#video(http://youtube.com/watch?v=kTV1CcS53JQ)と入力すると以下のように表示されます。


#video(http://youtube.com/watch?v=kTV1CcS53JQ)

    </description>
    <dc:date>2010-04-04T07:50:53+09:00</dc:date>
    <utime>1270335053</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/ndruger/pages/10.html">
    <title>プラグイン/関連ブログ</title>
    <link>https://w.atwiki.jp/ndruger/pages/10.html</link>
    <description>
      * 関連ブログ
@wikiのwikiモードでは
 #bf(興味のある単語)
と入力することで、あるキーワードに関連するブログ一覧を表示することができます

詳しくはこちらをご覧ください。
＝＞http://atwiki.jp/guide/17_161_ja.html

-----


たとえば、#bf(ゲーム)と入力すると以下のように表示されます。


#bf(ゲーム)
    </description>
    <dc:date>2010-04-04T07:50:53+09:00</dc:date>
    <utime>1270335053</utime>
  </item>
  </rdf:RDF>
