<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
><channel><title>Web scratch &#187; javascript</title> <atom:link href="http://efcl.info/category/javascript/feed/" rel="self" type="application/rss+xml" /><link>http://efcl.info</link> <description>フリーソフトやFirefoxなどについて、web全般なサイト</description> <lastBuildDate>Sat, 21 Jan 2012 23:30:41 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <item><title>今まで書いたJavaScript情報の読み方をまとめてみた</title><link>http://efcl.info/2012/0116/res2985/</link> <comments>http://efcl.info/2012/0116/res2985/#comments</comments> <pubDate>Mon, 16 Jan 2012 14:49:50 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[javascript]]></category> <category><![CDATA[イベント]]></category><guid
isPermaLink="false">http://efcl.info/?p=2985</guid> <description><![CDATA[もう既に見た人もいるかもしれませんが、オフライン勉強会でJSer.info一周年について発表してきた &#124; JSer.infoで今まで書いてた記事のまとめ的な発表をしてきました。 海外のJavaScript情報を見つけよう [...]]]></description> <content:encoded><![CDATA[<p>もう既に見た人もいるかもしれませんが、<a
href="http://jser.info/post/15883533195">オフライン勉強会でJSer.info一周年について発表してきた | JSer.info</a>で<br
/>今まで書いてた記事のまとめ的な発表をしてきました。</p><ul><li><a
title="海外のJavaScript情報を見つけよう" href="http://efcl.info/2011/0116/res2185/">海外のJavaScript情報を見つけよう</a></li><li><a
title="世界のJavaScript情報を読もう" href="http://efcl.info/2011/0117/res2229/">世界のJavaScript情報を読もう</a></li><li><a
title="今からRSS購読すべきタグと検索結果" href="http://efcl.info/2010/1025/res2018/">今からRSS購読すべきタグと検索結果</a></li><li><a
title="ブラウザの最新情報を知るために、Web開発者が読んでおくべきブログ" href="http://efcl.info/2011/0301/res2303/">ブラウザの最新情報を知るために、Web開発者が読んでおくべきブログ</a></li><li><a
href="http://azu.github.com/slide/HowToLearn/#slide1">HOW TO LEARN</a> (これだけ記事じゃないですが)</li></ul><p><a
href="http://azu.github.com/slide/offline_study/javascript_world.html#slide1">世界のJavaScriptを読もう @ 2012</a>を発表していた時、<a
href="http://azu.github.com/slide/offline_study/javascript_world.html#slide29">RSS購読フロー</a>の部分がなぜか<a
href="http://twitter.com/tatsuoSakurai/statuses/158419082654400512">受け</a>が<a
href="http://twitter.com/koichik/statuses/158542707378233344">良かった</a>ようなので、簡単な補足を書いておきます。</p><p><img
title="social_flow.png" src="http://efcl.info/wp-content/uploads/2012/01/social_flow.png" border="0" alt="Social flow" width="600" height="528" /></p><p>自分はRSSリーダを多用しているので、何でもRSSにしてとりあえずRSSリーダーに流れてくるような状況を作っています。<br
/>Webサイトを見ていて、Read It Latorなどで後で読むことにしても結局読むのを忘れてしまうことがあるため、Read It Latorに登録したリストがRSSとしてRSSリーダーに流れてくるといった感じです。</p><p>Pinboardやはてなブックマークや<a
href="http://azu.github.com/slide/offline_study/javascript_world.html#slide22">ソーシャルニュース</a>サイト等もRSSで購読していると、同じ記事を扱ったものが何度もRSSに出てきます。<br
/>これは<a
href="http://efcl.info/2010/1025/res2018/">今からRSS購読すべきタグと検索結果</a>でLDRの読み方にでも書いていましたが、SBMなどは量が多くなってしまうので、全て目を通そうとすると気疲れします。<br
/>そのため、SBMや検索結果等のRSSは高めのレートにして心理的に飛ばしやすい(LDRでいうSキーを押す)状態にしています。</p><blockquote><p>なんで検索結果のRSSは★4にしてるかというと、検索結果RSSで出てくるサイトは★3のサイトと被ったりすることがあるので、<br
/>★4で飛ばしても★3で出てくるからまあいいっかと適当な感じで読める安心感が生まれます。</p> <a
title="今からRSS購読すべきタグと検索結果 | Web scratch" href="http://efcl.info/2010/1025/res2018/">今からRSS購読すべきタグと検索結果 | Web scratch</a></blockquote><p>ここから、発表してたときにウケてた部分ですが、RSSリーダで読んでいるときに少しでも気になった記事は<br
/>とりあえずTwitterへ投稿しています。(<a
href="http://userscripts.org/scripts/show/46441">Post Now browsing to Twitter</a>がLDRから直接投稿できるようにしているのもその辺の関係)<br
/>一応軽くは目を通してからTwitterへ投稿していますが、専門的な記事や英語の記事など一度みるだけじゃ理解が出来なかったり、判断が難しい記事も多いと思います。</p><p>そういう時にTwitterのフォロワーから反応があると理解しやすかったりします。<br
/>またFavやRTがあったものが流れてくるようにRSSを購読しておけば、重要な記事 (少なくてもフォロワーが興味を持った記事)が再度RSSとして流れてくるようになります。</p><div><blockquote
class="twitter-tweet" lang="ja"><p>ありのまま今起こった事を話すぜ！『おれは奴が情報を選別してくれてると思ったらいつのまにか選別させられていた』 何を(ry という素晴らしいフィードバックを見た</p> — koichikさん (@koichik) <a
href="https://twitter.com/koichik/status/158542707378233344">1月 15, 2012</a></blockquote><script src="//platform.twitter.com/widgets.js"></script></div><p>こういう感じで、重要な記事は何度もRSSとして流れるようにして、読み忘れを減らしたり &amp; 心理的に軽い気持ちでフィードを読み飛ばしても大丈夫なように意識しています。<br
/>他の人の力も借りて手を抜きつつ、人があまり見ないようなところもチェックするようにして、いろいろな情報を共有できればいいかなと思います。</p><p>どういう所などをみているかについては<a
href="http://jser.info/post/15883533195">オフライン勉強会でJSer.info一周年について発表してきた | JSer.info</a>のスライドの方にもまとめたのでそちらを見てください。</p><ul><li><a
href="http://jser.info/post/15883533195">オフライン勉強会でJSer.info一周年について発表してきた | JSer.info</a></li></ul><p> </p><ul></ul>]]></content:encoded> <wfw:commentRss>http://efcl.info/2012/0116/res2985/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>第七回ありえるえりあ勉強会 アウトラインメモ</title><link>http://efcl.info/2011/1013/res2971/</link> <comments>http://efcl.info/2011/1013/res2971/#comments</comments> <pubDate>Thu, 13 Oct 2011 14:55:07 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[javascript]]></category> <category><![CDATA[イベント]]></category><guid
isPermaLink="false">http://efcl.info/?p=2971</guid> <description><![CDATA[第七回ありえるえりあ勉強会 〜JSで大規模・エンタープライズ開発〜に参加してきたので、その時のメモ。 「JavaScriptで大規模ゲーム開発」渋川 ソーシャルゲームの定義 ユーザー間で非同期のやり取りが発生する ngC [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://partake.in/events/2de2385a-fe4a-42ea-98a4-a321c9249bcf">第七回ありえるえりあ勉強会 〜JSで大規模・エンタープライズ開発〜</a>に参加してきたので、その時のメモ。</p><h3>「JavaScriptで大規模ゲーム開発」渋川</h3><h5>ソーシャルゲームの定義</h5><ul><li>ユーザー間で非同期のやり取りが発生する</li></ul><h4>ngCore</h4><ul><li>マルチプラットフォーム<ul><li>同一ソースでAndroidとiOSに対応</li><li>テスト環境はFlashにも対応</li></ul></li></ul><h5>ゲームの構成</h5><ul><li>ngCore上にゲームロジック/JavaScript</li><li>サーバ/APach+FCGI上に認証とか結果の書き込みをMobageサーバに</li></ul><h5>役割分担</h5><ul><li>ngCoreのクライアント<ul><li>アクションシーン</li><li>サーバ側で作ったデータの再生</li></ul></li><li>ゲームサーバ<ul><li>パラメーター保持、変化</li><li>アイテム管理</li><li>ミッションのスロットの目の決定など</li><li>ずる防止をするためサーバ側でロジックがある</li></ul></li></ul><h5>ngCoreの開発サイクル</h5><ul><li>node.jsで書かれたビルドサーバでビルドを行う。<ul><li>ファイルの結合とか</li></ul></li></ul><h5>コード</h5><ul><li>CJSライクなモジュール</li><li>クラスを作るsubclass関数</li><li>ゲームはmain関数から始まる</li><li>Core.UpdateEmitter でゲームループを回す</li></ul><h5>ゲームの基本構成</h5><ul><li>シンプルなクラス群<ul><li>Sceneクラスを継承してシームを作っていく</li><li>Sceneを遷移してゲームの遷移が行われる</li></ul></li><li>サーバ側からjsonのジョブスタックを受け取る<ul><li>ミッション結果なども配列で返ってくる</li><li>知らないジョブが来たら無視が基本方針</li><li>クライアントは順番に再生していくだけ</li><li>新しいミッションも簡単に追加できる</li></ul></li><li>サーバエラーがおきたらホーム画面に強制的に戻る</li></ul><h5>DnLig/ngGo</h5><ul><li>DnLib<ul><li>ゲーム開発の共通ライブラリ</li></ul></li><li>ngGo</li></ul><h5>開発拠点</h5><ul><li>サンフランシスコ</li><li>日本</li><li><p>パキスタン</p></li><li><p>SKypeチャットが主なインフラ</p></li><li>git<ul><li>git flow</li></ul></li><li>ドキュメントSphinx</li></ul><h5>ngGo/ngBuilder</h5><ul><li>– データ駆動で行えるように</li><li>- パラメーターチューニングのしやすさ</li></ul><h5>デバッグとテスト</h5><ul><li>デバッグメニュー<ul><li>サーバにデバッグ用画面がある</li></ul></li><li>Jasmineを使ってる</li></ul><h5>今後のngCore</h5><ul><li>3D対応、HTML5対応</li></ul><h4>まとめ</h4><p>JavaScriptベースで</p><h3>オフラインWebアプリケーションの作り方 (白石)</h3><p>Google Gearsを使ってオフラインアプリケーションを作ったことがある。</p><h4>オフラインWebアプリケーション</h4><h5>Google Gears</h5><ul><li>Google Gears終了 –&gt; HTML5へ以降を推奨<ul><li>HTML5を中心にするようになった</li></ul></li></ul><h4>オフラインでも読めるアプリの作り方</h4><ul><li>それほど実装は難しくない</li><li>アプリケーションキャッシュを利用すればいい</li></ul><h5>アプリケーションキャッシュとは</h5><ul><li>静的なリソースをキャッシュすることができる機能</li><li>ローカルキャッシュの利点</li><li>IE以外のブラウザでは実装されてる</li></ul><h5>キャッシュマニフェスト</h5><ul><li>リソースのリストを作成する</li><li>Titanium Mobileのリファレンスはローカルキャッシュされてる</li></ul><h5>アプリケーションキャッシュのJavaScript API</h5><ul><li>window.applicationCacheにJavaScriptから操作できるアプリケーションキャッシュAPIがある。</li></ul><h5>アプリケーションキャッシュを利用する上での注意点</h5><ul><li>キャッシュマニフェストを更新しないとリロードで反映しない</li><li>キャッシュ容量が限られている<ul><li>モバイルとかだと10MBぐらい</li></ul></li></ul><h4>オフラインでも書けるアプリの作り方</h4><ul><li>割りと面倒なもの</li><li>デスクトップアプリとやりたい事はあんまり変わらない</li></ul><h5>オフラインWebアプリを作るポイント</h5><ul><li>基本はリッチクライアント+同期機能</li></ul><h5>利用できるローカルストレージ</h5><ul><li>Web Storage</li><li>Web SQL Database</li><li>Indexed Database API</li><li>File API<ul><li>ドメインごとに仮想的な空間</li><li>セキュリティ的なものがあるため</li></ul></li></ul><h5>双方向同期</h5><p>かなり難しく面倒くさい – フェールセーフ – 更新の衝突 – 同期のタイミング – ネットワーク状態、データの状態管理 – ローカルDBのスキーマ管理/サーバのスキーマと2つできてしまう – ローカルDBのクオータ(5MBぐらい)</p><pre><code>- 容量の限界がきたときにどうするか
</code></pre><h4>まとめ</h4><ul><li>オフラインアプリケーションといっても読む/書くの2つがある</li><li>書く/同期的なアプリケーションはかなり面倒臭い<ul><li>割り切ったほうがいい</li></ul></li></ul><h3>スケールするUIについて – @monjudoh</h3><p>Objective-Cで非同期処理のチェーンライブラリとか</p><h5>要素数</h5><p>ループの中でbind/unbindしてたので大量に追加されたときに重たかったのでliveメソッドに変更 bindはここの要素に付けるから、要素が多いと死ぬ。delegateとかliveはその枠の方にイベント一個張るだけだから軽くてすむ。</p><h5>D&amp;D</h5><ul><li>ユーザが触れる範囲だけにイベントを付ける</li><li>D&amp;Dは複数のイベントから成り立つので複雑(down-&gt;move-up)</li></ul><h5>要素の生成</h5><ul><li>UITableView<ul><li>表示範囲+ぐらいのみを描画してる</li><li>再利用してる</li></ul></li></ul><h3>JavaScriptのテスト事情 –  @os0x</h3><ul><li>JavaScriptのテスト<ul><li>まだまだ未成熟</li></ul></li><li>二種類<ul><li>JavaScriptのテスト<ul><li>JavaScriptだけなので比較的わかりやすい</li></ul></li><li>JavaScriptを含めたテスト<ul><li>UIとかも含むインテグレーションテスト</li></ul></li></ul></li></ul><h5>インテグレーションテスト</h5><ul><li>インテグレーションテストは書くのが大変</li><li>動いてあることが保証できるので重要<ul><li>後から追加修正とかも</li></ul></li></ul><h5>インテグレーションテストの定番 – Selenium</h5><ul><li>インテグレーションテストは遅い</li></ul><h5>テスト実行環境</h5><ul><li>カピバラさん + Webkit</li></ul><h5>QUnit,Jasmine</h5><ul><li>Jasmineの方がアプリケーションテストは向いてる</li></ul><h5>jasmine-headless-webkit</h5><ul><li>jasmine のspecをCUI環境で実行できる</li></ul><h3>Titanium Mobile – Masui Yuichiro</h3><ul><li>ココログ</li><li>liblis</li><li>AKB</li><li>サイボウズLiveの</li><li>MobSnap</li></ul><h4>Titanium Mobile</h4><ul><li>JavaScriptだけでアプリを作成できる</li><li>Titanium Mobile のモジュール売買できる<ul><li> mobile market place</li></ul></li></ul><h4>モバイルのUX</h4><ul><li>それぞれのプラットフォームに合わせた形に変換する</li><li>それぞれに合わせたUIはUXに</li><li>タブバーの位置がAndroid/iPhoneで逆になったり</li></ul><h4>飯食う</h4><ul><li>追加モジュールとサポートのみが有料</li><li>認定トレーニング</li></ul><ul></ul><p>感想</p><ul><li>ちょっと落ち着きがなかった気がするの</li><li>あまり掘り下げた感じにはならなかったのは少しもったいない気がした。</li></ul><p>メモ環境</p><ul><li><a
href="http://mouapp.com/">Mou</a></li></ul><p> </p><ul
style="margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 25px; font-weight: normal; font-style: normal; font-size: 13px; line-height: 1; font-family: inherit; list-style-type: disc; list-style-position: initial; list-style-image: initial; padding: 0px; border: 0px initial initial;"></ul>]]></content:encoded> <wfw:commentRss>http://efcl.info/2011/1013/res2971/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Mozilla 勉強会＠東京 6thのアウトラインメモ</title><link>http://efcl.info/2011/1003/res2967/</link> <comments>http://efcl.info/2011/1003/res2967/#comments</comments> <pubDate>Mon, 03 Oct 2011 14:01:06 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[Firefox]]></category> <category><![CDATA[javascript]]></category> <category><![CDATA[イベント]]></category> <category><![CDATA[アウトライン]]></category><guid
isPermaLink="false">http://efcl.info/?p=2967</guid> <description><![CDATA[2011年10月1日に行われたMozilla 勉強会＠東京 6thのメモ イベントのページ: Mozilla 勉強会＠東京 6thTwitterのまとめ: Mozilla 勉強会＠東京 6th &#8211; Toget [...]]]></description> <content:encoded><![CDATA[<p>2011年10月1日に行われた<a
href="https://dev.mozilla.jp/events/workshop11/">Mozilla 勉強会＠東京 6th</a>のメモ</p><p>イベントのページ: <a
href="https://dev.mozilla.jp/events/workshop11/">Mozilla 勉強会＠東京 6th</a><br
/>Twitterのまとめ: <a
href="http://togetter.com/li/195486">Mozilla 勉強会＠東京 6th &#8211; Togetter</a></p><ul
style="font-family: Arial;"><li>14:30 – 15:00: 開場、発表者準備</li></ul><ul
style="font-family: Arial;"><li>15:00 – 15:10: Opening</li></ul><p>自己紹介の流れ。</p><div
style="font-family: Arial;">■15:10 – 15:50: Firefox for Developers – 開発者ツール＆セキュリティ編</div><div
style="font-family: Arial;">発表資料: <a
rel="nofollow" href="http://www.slideshare.net/dynamis/firefox-developer-tools">開発者ツールの紹介</a></div><div
style="font-family: Arial;">Firefox開発者ツール &#8211; Web Console</div><ul
style="font-family: Arial;"><li>コマンドの補完</li></ul><p>Inspector</p><div
style="font-family: Arial;"><ul><li>DOM Inspectorみたいなもの</li><li>要素を調査するツール</li><li>Style Inspector(開発中)</li></ul> CSS Doctor</div><div
style="font-family: Arial;"><ul><li>CSSの間違いとか</li></ul> ScrachPad</div><div
style="font-family: Arial;"><ul><li>エディタ</li><li>選択行のコードだけを実行できたりする。</li></ul><div>GCLI</div><ul><li>ubiquityみたいな感じの</li><li>CUIとGUI</li></ul> Source Map</div><div
style="font-family: Arial;"><ul><li>CoffeeScriptのような変換コードと元コードをマッピングしたたものを作る</li><li>変換前の言語</li></ul> Tilt</div><div
style="font-family: Arial;"><ul><li>DOMマップを3D化するアドオン</li></ul> <strong>about:Firefox</strong></div><div
style="font-family: Arial;">セキュリティとプライバシーの話</div><div
style="font-family: Arial;">発表資料: <a
rel="nofollow" href="http://www.slideshare.net/dynamis/firefox-security-features">セキュリティ機能の紹介</a></div><div
style="font-family: Arial;">Same Origin Policy</div><div
style="font-family: Arial;">Content Security Policy</div><ul
style="font-family: Arial;"><li>次世代のセキュリティポリシー<ul><li>XSSの攻撃防止</li></ul></li><li>コンテンツ種別で読み込み制御<ul><li>画像やCSSやJSなども制御できるようにする</li></ul></li><li>Webkitではほぼ開発されてる</li></ul><ul
style="font-family: Arial;"><li>デフォルトセキュリティポリシーがいろいろ強化される</li><li>CSPの使い方<ul><li>X-Content-Security-PolicyのHTTPレスポンスヘッダを送信</li><li>HTMLのメタタグは書き換えできたりするものだからヘッダーで</li><li>Apache でCSPの設定</li></ul></li><li>CSP対応に移行する<ul><li>JS,CSSは外部ファイルに</li><li>evalを使わない</li><li>ポリシー違反レポートでどこがおかしいのかも確認できる<ul><li>ヘッダーでレポートを報告するURLを指定してログを残せる</li></ul></li><li>CSPブックマークレットもある</li></ul></li></ul><p>HTTP Strict Transport Security</p><div
style="font-family: Arial;"><ul><li>HTTPSでの接続を要求するヘッダ</li></ul> X-Frame-Options</div><div
style="font-family: Arial;"><ul><li>クリックジャッキングとか</li></ul> Cross-Origin Resource Sharing</div><div
style="font-family: Arial;"><ul><li>クロスドメインでの読み込み許可</li><li>他のドメインから読み込まれてもいい場合の設定</li><li>XHR2とか</li></ul> ユーザ追跡拒否ヘッダ</div><ul
style="font-family: Arial;"><li>Do-Not-Trackヘッダ<ul><li>ブラウザ側でサイトに通知する</li><li>IE,Safariも対応</li><li>Chromeだけ非対応</li></ul></li><li>受け取ったらユーザー追跡をしない</li></ul><div
style="font-family: Arial;"><div>■15:50 – 16:30: Pano って拡張機能 teramako</div><div>発表資料: <a
rel="nofollow" href="http://teramako.github.com/doc/modest-20111001/">Pano って拡張機能</a></div><div>Panorama</div><ul><li>Firefox4から導入された</li><li>タブグループを管理するビュー<ul><li>アクティブなタブグループの切り替え</li></ul></li></ul> タブの種類</div><div
style="font-family: Arial;"><ul><li>ピン止めタブ(AppTab)</li><li>グループの属するタブ</li><li>グループに属さないタブ(Firefox7で廃止)</li></ul> Pano できること</div><div
style="font-family: Arial;"><ul><li>グループの作成/削除</li><li>グループ名の変更</li><li>D&amp;D操作</li></ul> 実装の仕組み</div><div
style="font-family: Arial;"><ul><li>panoramade上で起こったイベントを拾ってビューを作ってる<ul><li>tabopenなど</li><li>起こらないイベントは上書きして起こす</li></ul></li><li>基本的にはビュー</li></ul> 頑張った所</div><div
style="font-family: Arial;"><ul><li>アイコンはSVG<ul><li>いろいろな場所で使われてる</li><li>使いまわしたい -&gt; SVGで作る</li></ul></li><li>SVG<ul><li>ベクターなので拡大縮小できる</li><li>ファイルサイズも小さい</li></ul></li><li>about:addonsでアイコンが表示されてない<ul><li>アイコンのサイズが指定されてなかった</li><li>SVG内にサイズの指定した</li></ul></li><li>タブ、Panoramaから発生するDOM Eventを拾う<ul><li>Panoramaから発生しないEvent<ul><li>グループが作成された</li><li>グループから削除された</li><li>グループから移動した</li></ul></li><li>取れないEventは無理やり発行させる<ul><li>Gropuが作成されたときに起きるイベントを上書きする</li></ul></li></ul></li><li>GroupItems.registerの上書き<ul><li>元関数を実行</li><li>DOM Eventを発行</li><li>コールバックシステムに関数を登録してDOM Eventを発行させる</li></ul></li></ul> 起動速度の改良</div><div
style="font-family: Arial;"><ul><li> 起動時のスクリプトは最小限<br
/><ul><li>必要なときにロードさせる</li><li>mozUSSubScriptLoaderの使用</li></ul></li><li>必要なときに取得<ul><li>getterの使用</li></ul></li><li>速い読み込み<ul><li>Firefox8 から mozUSSubScriptLoader もキャッシュされる</li></ul></li></ul> 実装方法<br
/><ul><li>最初の読み込みは必要最小限<ul><li>40行ほど</li><li>最初はロードするものを書いておいて、ロードしたときにそれを上書きする</li></ul></li><li>getterの使用<ul><li>XPCOMUtil.jsmを使用してgetterを使いやすくする</li><li>defineLazyGetter</li></ul></li></ul> コンテンツの遅延読み込み</div><div
style="font-family: Arial;"><ul><li>bartab<ul><li>起動したときはタブはできるが、ロードはされない</li><li>タブが選択されたときに初めてロードされる</li></ul></li><li>nsISessionStoreが鍵<ul><li>短いコードで実現する</li></ul></li></ul> 非アクティブなグループ内に開くには</div><div
style="font-family: Arial;"><ul><li>Panoramaとバッテングして上手く行かなった</li><li>上手い解決方法が見つからない<ul><li>setTimeoutでぐるぐるー</li></ul></li></ul> パネルでD&amp;Dするために</div><div
style="font-family: Arial;"><ul><li>パネルをドラッグする前に閉じないようにする<ul><li>noAutohide = true</li></ul></li><li>メニューボタンを押したときは閉じない様にする</li></ul><div>■16:40 – 17:20: restartless – 再起動不要なアドオンをSDK無しで作るフレームワーク &#8211; Piro</div><div>発表資料: <a
rel="nofollow" href="http://piro.sakura.ne.jp/xul/doc/20111001workshop11/">restartless – 再起動不要なアドオンをSDK無しで作るフレームワーク</a></div><div>Add-on SDKの目的</div><ul><li>誰でも開発できるようにする</li><li>高機能なアドオンの開発は目的ではなかった</li><li>今までのアドオン開発<ul><li>自由すぎた</li><li>敷居高い</li><li>何でもできた</li></ul></li><li>SDKを使えばある程度制限された状態で簡単作れるようになる</li></ul> Add-on SDKはGreasemonkeyスクリプトと同じような立ち位置</div><div
style="font-family: Arial;">restartlessの目的</div><div
style="font-family: Arial;"><ul><li>再起動不要なアドオンを今までの開発と同じ方式で作れるように</li><li>Mozilla特有の事情を必要なのも従来方式</li><li>対象も従来の開発者向け</li></ul><div>restartlessの使い方</div><ul><li>main.jsの内容<ul><li>startup()で読み込まれる</li><li>専用の名前空間で実行される</li><li>shutdown()を定義</li></ul></li><li>ユーティリティ<ul><li>location.href</li><li>load関数 = Cu.importと互換</li><li>require関数</li><li>existsでファイルの有無を調べる</li><li>resolve 相対パスの解決</li><li>EXPORTED_SYMBOLS</li><li>doAndWait<ul><li>非同期処理を同期的に扱うときに使用</li></ul></li><li>jstimer</li><li>pref</li><li>locale<ul><li>国際化</li></ul></li><li>config</li><li>WindowManager<ul><li>DOMWindowにアクセスする</li><li>ウィンドウのopenを監視</li></ul></li><li>KeyboardShortcut<ul><li>ショートカットの定義</li></ul></li><li>jsDefferred</li></ul></li></ul> restartlessの利用例</div><ul
style="font-family: Arial;"><li>ALT</li><li>back to owner tab</li><li>Fox Splitter</li></ul><p>restartlessのコードリーディング</p><div
style="font-family: Arial;"><ul><li>index.rdf<ul><li>bootstrap=&#8221;true&#8221;で再起動不要と認識される</li></ul></li><li>bootstrap.js<ul><li>モジュールのロードとか</li></ul></li><li>loader.js<ul><li>ユーティリティとかが定義されている</li><li>doAndWait<ul><li>スレッドをたててメインループを回す実装</li></ul></li></ul></li><li>main.js<ul><li>各アドオンのコード</li></ul></li><li>module<ul><li>各ライブラリが入ってるので、削除すれば消える</li></ul></li></ul><div>■17:20 – 18:00: Lightning Talk</div></div><ul
style="font-family: Arial;"><li><a
rel="nofollow" href="http://www.slideshare.net/knagato/mozilla-workshop-20111001-lt-addon-sdk">アドオン SDK を利用した初めてのアドオン開発</a>– by knagato<br
/><ul><li>初めてアドオン開発する人が対象</li><li>SDKを使ったアドオン開発を特徴<ul><li>HTMLやJavaScriptなどが中心で、XULやXPCOMなどMozilla特有の機能を使わなくても開発できる</li></ul></li><li>開発環境の種類<ul><li>Add-on BuilderをWeb上での開発<ul><li>再起動不要なのでその場で試せる</li></ul></li><li>Addon SDKを使った開発<ul><li>コマンドラインベース</li></ul></li></ul></li><li>Add-on SDKのチュートリアル</li></ul></li><li><a
rel="nofollow" href="http://www.p2pwf.com/">Thunderbirdアドオンによるワークフロー開発について</a>– by Nakashima<br
/><ul><li>提案するツール<ul><li>自分自身でのプロセス改善が可能</li><li>やり取りの簡略化ができる</li></ul></li><li><a
href="http://www.p2pwf.com/">http://www.p2pwf.com/</a> に仕様の詳細</li></ul></li><li><a
rel="nofollow" href="http://www.slideshare.net/saneyuki/forking-secure-login">Forking Secure Login</a> – by saneyuki_s<br
/><ul><li>Secure Loginアドオンのフォークの話<ul><li>現在はメンテナンスアップデートのみになってる</li><li>全面改装してる</li></ul></li><li>一部機能の省略</li><li>レガシーコードの除去</li><li>doorhanger対応<ul><li>Firefoxに入ってるSSLのポップアップするやつ</li></ul></li></ul></li><li><a
rel="nofollow" href="http://0-9.sakura.ne.jp/pub/lt/modest/start.html">jQueryで破棄されたrequestAnimationFrameとJSでのアニメーション実装で注意すること</a> – by <a
rel="nofollow" href="https://twitter.com/#%21/kyo_ago">kyo_ago</a><br
/><ul><li>requestAnimationFrame<ul><li>setIntervalの問題点としてアニメーション向けではない</li></ul></li><li>jQuery 1.6から削除された<ul><li>setIntervalとrequestAnimationFrameが衝突してキューがたまる</li><li>タブがバックグランドにあるときの挙動</li></ul></li></ul></li><li><a
rel="nofollow" href="http://d.hatena.ne.jp/mooz/20111002/p1">ES.next WeakMap</a>– by mooz (<a
rel="nofollow" href="https://twitter.com/#%21/stillpedant">@stillpedant</a>)<br
/><ul><li>WeakMap = 連想配列</li><li>Firefox6から利用可能</li><li>{}やObject()と比較して<ul><li>keyにオブジェクトが指定可能<ul><li>ハッシュはkeyに文字列しか指定できない(toStringされてる)</li><li>WeakMapはkeyにオブジェクトが指定可能<ul><li>オブエジェクトしか指定できない</li><li>プリミティブ値はエラー</li></ul></li><li>オブジェクトの外部拡張<ul><li>DOMノードに独自プロパティは危険</li><li>ES5ではオブジェクトの拡張がfreezeできる</li><li>オブジェクト自体は拡張しないで、外部に付加情報を持つ</li><li>WeakMapを利用する<ul><li>キーとして外部情報をもたせる</li></ul></li></ul></li></ul></li><li>keyに指定されたオブジェクトを弱く参照<ul><li>CGにたいして</li></ul></li></ul></li></ul></li><li>Firefox4以降のE4X– by teramako<ul><li>ワイルドカード<ul><li>*が指定子に使える</li></ul></li><li>属性アクセス<ul><li>@が使える</li></ul></li><li>Firefox3.6までは上記のものがE4X以外でも使えた<ul><li>Firefox4以降は禁止された</li><li>ざんねんでしたね</li></ul></li></ul></li></ul>]]></content:encoded> <wfw:commentRss>http://efcl.info/2011/1003/res2967/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Firebugを使ったページロード解析(Net panelの読み方)</title><link>http://efcl.info/2011/0612/res2855/</link> <comments>http://efcl.info/2011/0612/res2855/#comments</comments> <pubDate>Sun, 12 Jun 2011 10:37:50 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[Firefox]]></category> <category><![CDATA[javascript]]></category> <category><![CDATA[Firebug]]></category><guid
isPermaLink="false">http://efcl.info/?p=2855</guid> <description><![CDATA[Software is hard &#124; Page load analysis using Firebug の記事を元に書いています。 January 18th, 2010に書かれた時点での例を使用しているため、現在のブラウ [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://www.softwareishard.com/blog/firebug/page-load-analysis-using-firebug/">Software is hard | Page load analysis using Firebug</a> の記事を元に書いています。 <br
/>January 18th, 2010に書かれた時点での例を使用しているため、現在のブラウザでは若干挙動が違うかもしれません。 <br
/>また、著者の<a
href="http://www.softwareishard.com/blog/about/">Jan Odvarko</a>さんに翻訳許可は頂いていますが、翻訳というより意訳や自分の理解のために書いていたので、いろいろ書き加えたりしています。 <br
/>Net panel(ネットパネル)について理解したいと思って書いたので、Net Panel自体の解説記事<a
href="http://www.softwareishard.com/blog/firebug/introduction-to-firebug-net-panel/">Software is hard | Introduction to Firebug: Net Panel</a>も一緒に読むといいかもしれません。</p><p>翻訳許可のメールをわずか15分で返してくれた著者の<em>Jan Odvarko</em>さんに感謝を。 <br
/>Thnak you, <em>Jan Odvarko.</em></p><span
id="more-2855"></span><hr
/><p>原文: <a
href="http://www.softwareishard.com/blog/firebug/page-load-analysis-using-firebug/">Software is hard | Page load analysis using Firebug</a></p><p>ページ読み込みパフォーマンスはWeb開発者にとって重要なトピックです。 <br
/>各ページロードの例において、FirebugのNet panelから得たデータをどのように解析するかを見ていきます。</p><p>このテストにおける例は<a
href="http://www.mozilla.com/en-US/firefox/all-beta.html">Firefox 3.6</a> + <a
href="http://getfirebug.com/releases/firebug/1.5X/">Firebug 1.5</a> + <a
href="http://www.softwareishard.com/blog/netexport/">NetExport 0.7</a>においてのNet Panelの結果をNetExportにより<a
href="http://groups.google.com/group/firebug-working-group/web/http-tracing---export-format">HAR</a>形式で出力したものをオンラインで表示しています。 <br
/>(<a
href="http://groups.google.com/group/firebug-working-group/web/http-tracing---export-format">HAR</a>形式はChromeのWeb Inspectorからも出力できます。)</p><ul><li><a
href="http://www.janodvarko.cz/har/viewer/">HTTP Archive Viewer 2.0.10</a>(オンラインビューアー)</li></ul><h4>Example 1: Simple Page Load</h4><p><iframe
class="harPreviewFrame" height="220" border="0" src="http://www.janodvarko.cz/har/viewer//loader.php?service=pagelist&amp;expand=true&amp;path=/har/examples/posts/analysis-using-firebug/simple-page-load.har" frameborder="0" width="518"></iframe></p><p>ここでは2つのリクエストが表示されています。 <br
/>1つめのリクエストではページは16msで取得できていて、load event (赤いライン)は58msで発生している事がわかります。ログ上にマウスオーバーさせると詳細な表示がされます。</p><p><a
href="http://efcl.info/wp-content/uploads/2011/06/image11.png"><img
style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://efcl.info/wp-content/uploads/2011/06/image_thumb11.png" width="300" height="249" /></a></p><ul><li>青の縦線であるDOM Loaded はDOMContentLoaded event</li><li>赤の縦線であるPage Loaded はLoad event</li><li>灰色のReceiving がページの取得にかかった時間</li></ul><p><a
href="http://efcl.info/wp-content/uploads/2011/06/image12.png"><img
style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://efcl.info/wp-content/uploads/2011/06/image_thumb12.png" width="158" height="77" /></a></p><p>同じように2つ目のリクエストを見てみると、5msでXHRが実行されています。 <br
/>そして合計経過時間は408msであることもわかります。</p><p><a
href="http://efcl.info/wp-content/uploads/2011/06/image13.png"><img
style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://efcl.info/wp-content/uploads/2011/06/image_thumb13.png" width="307" height="250" /></a></p><p>2つ目のリクエスト(XHR)上でもマウスオーバーで詳細な情報が表示されています。 <br
/>こちらでもload event を表していますが、こちらはXHRのリクエストからの相対値が表示されています。XHRが発生(Started)したのは403msなので 403 &#8211; 357 = 58msでload event が発生したことがわかります。(load eventはページの取得を見た方がわかりやすいからこう見る必要はない気がするけど)</p><h4>Example 2: Connection Limit</h4><p>各ブラウザは一つのページをダウンロードするのに同時接続制限あります。もし、同時接続の制限に達したとき、他のリソースは接続してるリソースが解放されるまでブラウザ内部のキューで待機させられます。 <br
/>次の2つのページログを見ると、同時接続制限数の違いで8つの画像をロードするのにどれぐらいの違いがでるかがわかります。</p><div
class="harPreviewBox"><iframe
class="harPreviewFrame" height="220" border="0" src="http://www.janodvarko.cz/har/viewer//loader.php?service=pagelist&amp;expand=true&amp;path=/har/examples/posts/analysis-using-firebug/browser-blocking-time.har" frameborder="0" width="518"></iframe></div><p><strong>#1 Cuzillion (同時接続制限 == 6)</strong></p><ul><li>Firefox 3.6の同時接続制限のデフォルト値は6で、最初の6つの画像をダウンロード開始した時点でドキュメントは利用可能(DOMContentLoaded event が発生する)</li><li>他の2つの画像はコネクションが空くまで待っている(light-brown 色の部分がblocking部分)</li><li>他の2つの画像がダウンロードされたときは緑色のconnectionフェーズ無いのは、最初の6つの画像をダウンロードに使用したconnectionを再利用しているためです。</li></ul><p><strong>#2 Cuzillion (同時接続制限 == 2)</strong></p><p>このテストだと、各画像ごとに2～3秒の時間がかかり、合計経過時間やload eventが発生時間に#1の2倍弱近くかかっていることがわかります。 <br
/>同時接続制限が2なのはIE7以下のものやモバイル向けのブラウザなどがあります。 <br
/>各ブラウザの同時接続数は<a
href="http://www.browserscope.org/?category=network">Home &#8211; Browserscope</a>を見るといいでしょう。 <br
/>Firefoxではabout:configのnetwork.http.max-persistent-connections-per-serverの設定から変更可能です。</p><p><a
href="http://efcl.info/wp-content/uploads/2011/06/image14.png"><img
style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://efcl.info/wp-content/uploads/2011/06/image_thumb14.png" width="514" height="240" /></a></p><p>同じように#2のポップアップされる詳細のログを見てみると、Blocking(light-brown 色)はページを取得(DOM Loaded)した時から4.63s待たされていて、リソースの取得は2.22sかかり、6.85sで完了している事がわかります。</p><h4>Example 3: Pipelining</h4><p>#2と同じページを使い、ブラウザの<a
href="https://developer.mozilla.org/ja/HTTP_Pipelining_FAQ">パイプライン処理</a>がONとなっている場合を見てみる。</p><div
class="harPreviewBox"><iframe
class="harPreviewFrame" height="220" border="0" src="http://www.janodvarko.cz/har/viewer//loader.php?service=pagelist&amp;expand=true&amp;path=/har/examples/posts/analysis-using-firebug/pipelining.har" frameborder="0" width="518"></iframe></div><p>Firefox(3.6)でパイプライン処理が有効(network.http.pipelining == true)になっている場合を比べてみると、実際にはload eventが発生するまでにかかる時間が増えていることがわかります。 <br
/>1から6の画像はそれぞれ異なる接続を利用していますが、7から8の画像は共有接続を利用してダウンロードしています。実際にどれと接続を共有しているかは明らかではありませんが(Firebugからそれを知るAPIはないため)、最後の2つの画像は接続を共有して合計時間を増加させているのは明らかです。</p><h4>Example 4: Persistent Connections</h4><p>このテストはHTTP <em>Connection</em>ヘッダーの効果を現しています。このヘッダーは既存の接続が閉じられているか将来のリクエストのために保持されているのかをサーバーに教えるために使われます。 <br
/>それぞれ<em>Keep-Alive</em> (default in HTTP/1.1) or <em>Close</em>でどのような違いが出るかを見てみましょう。</p><div
class="harPreviewBox"><iframe
class="harPreviewFrame" height="220" border="0" src="http://www.janodvarko.cz/har/viewer//loader.php?service=pagelist&amp;expand=true&amp;path=/har/examples/posts/analysis-using-firebug/persistent-connections.har" frameborder="0" width="518"></iframe></div><p>それぞれのログで、最初のページと3つのリクエストとで合計4つが表示されています。 <br
/><em>Connection</em>ヘッダーは3つ(file1.php, file2.php, file3.php)のリクエスト時に要求されます。</p><p><strong>#1 Test page (Connection: Keep-Alive)</strong></p><ul><li>一つ目のページのログでは、ページダウンロードのための一つの接続しか作られていないことがわかります。緑色のConnectionフェーズが一つだけになっていて接続が再利用されている事がわかります。</li></ul><p><strong>#2 Test page (Connection: close)</strong></p><ul><li>二つ目のログでは、ページダウンロードと<em>file1.php</em>のリクエストで接続が再利用されている事がわかります。しかし、他の接続ではConnection: closeなため、また接続を作り直す必要があります。</li></ul><h4>Example 5: Inline Scripts Block</h4><p>インラインスクリプトがページのダウンロードをブロックすることはよく知られていますが、ネットワークの観点から見るとどのように見えるかを調べてしましょう。</p><div
class="harPreviewBox"><iframe
class="harPreviewFrame" height="220" border="0" src="http://www.janodvarko.cz/har/viewer//loader.php?service=pagelist&amp;expand=true&amp;path=/har/examples/posts/analysis-using-firebug/inline-scripts-block.har" frameborder="0" width="518"></iframe></div><p><strong>#1 Cuzillion</strong></p><p>3番目と4番目のリクエストの間に隙間ができています。これは5秒間のインラインスクリプトの実行によりブロッキング発生しています。 (*ここで言うインラインスクリプトとは&lt;script&gt;/*実行スクリプト*/&lt;/script&gt;という感じで&lt;script&gt;タグ内で実行しているものを言う) <br
/><a
href="http://stevesouders.com/cuzillion/?ex=10100&amp;title=Inline+Scripts+Block">Inline Scripts Block</a>のページにて試すことができます。</p><p><a
href="http://efcl.info/wp-content/uploads/2011/06/image15.png"><img
style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://efcl.info/wp-content/uploads/2011/06/image_thumb15.png" width="320" height="141" /></a> <br
/>Firefox5に試すとちょっと挙動が異なるけど、インラインスクリプトで隙間ができるのは同じ。 <br
/>どちらかというとChromeがログに近い動きをしていた。 <br
/>Firefox4からインラインスクリプトの実行タイミングが変わったのも関係するかもしれない。 <br
/>詳細は<a
href="http://www.softwareishard.com/blog/firebug/script-execution-analysis-in-firefox-4/">Software is hard | Script Execution Analysis in Firefox 4</a>に。</p><p><strong>#2 Cuzillion</strong></p><p>こちらはインラインスクリプトをページの底(&lt;/body&gt;前かな?)に置いた場合のログです。 <br
/>リクエストの合計時間は減っていますが、load eventは#1と同じくインラインスクリプトにより遅れていることがわかります。 <br
/>こちらは<a
href="http://stevesouders.com/cuzillion/?c0=bi1hfff1_0_f&amp;c1=bi1hfff1_0_f&amp;c2=bb0hfff0_5_f&amp;t=1307854749986">Cuzillion</a>のようなイメージだと思います。</p><p>特にこれをどうとらえるべきかについては元記事に記述はありませんでしたが、この例はリソースのダウンロード時間よりもload eventなどへブロックが発生している事が重要な気がします。 <br
/>負荷が大きいインラインスクリプトやdocument.writeなどのブロッキングを誘発するものがある場合loadやDOMContentLoadedイベントの発生を遅くしてしまいます。そのためdocument.writeそのものを避けることや、load eventなどイベントリスナーにして実行させるなどした方がページの表示は速くなるかと思います。</p><h4>Example 6: Redirects</h4><p>これはネットパネルにて、リダイレクトがどのように見えるかを表示した例。</p><div
class="harPreviewBox"><iframe
class="harPreviewFrame" height="220" border="0" src="http://www.janodvarko.cz/har/viewer//loader.php?service=pagelist&amp;expand=true&amp;path=/har/examples/posts/analysis-using-firebug/redirects.har" frameborder="0" width="518"></iframe><div
class="harPreviewResizer"></div></div><p><strong>#1 Final Page (one redirect)</strong></p><p>サーバーによって301リダイレクトが行われて、URLの末尾に/がついたことがわかります。</p><p><strong>#2 Final Page (infinite redirection)</strong></p><p>無限ループしているリダイレクトの例 <br
/>自分自身にリダイレクトしているのでいつまでもループしてしまいますが、Firefoxではデフォルトで20回で停止しています(<em>network.http.redirection-limit</em> の設定値)</p>]]></content:encoded> <wfw:commentRss>http://efcl.info/2011/0612/res2855/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>JavaScriptでAmazonからASINを取得する方法など</title><link>http://efcl.info/2011/0605/res2817/</link> <comments>http://efcl.info/2011/0605/res2817/#comments</comments> <pubDate>Sun, 05 Jun 2011 01:24:13 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[Greasemonkey]]></category> <category><![CDATA[javascript]]></category> <category><![CDATA[Amazon]]></category> <category><![CDATA[ASIN]]></category><guid
isPermaLink="false">http://efcl.info/?p=2817</guid> <description><![CDATA[一つの方法はinput要素から取得する方法 document.getElementById("ASIN").value Amazonはページ中のhiddenなinput要素にASINを持たせてるのでこういう手が取れる。  [...]]]></description> <content:encoded><![CDATA[<h4>一つの方法はinput要素から取得する方法</h4><div
id="codeSnippetWrapper"><pre id="codeSnippet" class="csharpcode">document.getElementById(<span class="str">"ASIN"</span>).value</pre></div><p>Amazonはページ中のhiddenなinput要素にASINを持たせてるのでこういう手が取れる。</p><div
id="codeSnippetWrapper"><pre id="codeSnippet" class="csharpcode">&lt;input id=<span class="str">"ASIN"</span> type=<span class="str">"hidden"</span> value=<span class="str">"4253196519"</span> name=<span class="str">"ASIN"</span>&gt;</pre></div><p>ページの構造が変わったらダメだけど、結構昔からこの部分は変わってないので意外と安定しているかもしれない。 <br
/>amazon.comだと構造が違うものがあって、<a
href="http://www.amazon.com/gp/product/B004LRPGPC/ref=s9_simh_gw_p351_d0_i2?pf_rd_m=ATVPDKIKX0DER&amp;pf_rd_s=center-3&amp;pf_rd_r=1GAMW69P6270WWBTEW98&amp;pf_rd_t=101&amp;pf_rd_p=470938811&amp;pf_rd_i=507846">Amazon.com: Buried Prey eBook: John Sandford: Kindle Store</a>のようにKindle Storeだとページ構造が違ってID=ASINがない代わりに次のようなものがある。</p><div><pre id="codeSnippet" class="csharpcode">&lt;input type=<span class="str">"hidden"</span> value=<span class="str">"B004LRPGPC"</span> name=<span class="str">"ASIN.0"</span>&gt;</pre></div><div>なので、inputを取得する場合は次のような形になる。</div><div
id="codeSnippetWrapper"><pre id="codeSnippet" class="csharpcode"><span class="kwrd">var</span> ASIN = document.getElementById(<span class="str">"ASIN"</span>) || document.getElementsByName(<span class="str">"ASIN.0"</span>)[0];</pre></div><h4>もう一つの方法はwindowオブジェクトのプロパティから取得する方法</h4><p>(2011年6月5日現在だと)</p><div
id="codeSnippetWrapper"><pre id="codeSnippet" class="csharpcode">window.sitbAsin;</pre></div><div>にASINの数値が入っている。(ちょっとできるタイミングが特殊な気がするから扱いにくいかも) <br
/>これはAmazon側のJavaScriptが生やしているので、ページのちょっとした構造の変化では変わらないと思うけど使うライブラリを変えたりJavaScriptが大きく変わると変更されることがある。 <br
/>以前はwindow.productTagsに入っていた。</div><ul><li><a
href="http://subtech.g.hatena.ne.jp/h2u/20090529/1243587848">Amazonの商品個別ページでASINを抜き出す &#8211; おれ ここ めも かきなぐる おまえ ここ よむ なぐる &#8211; subtech</a></li></ul><h4>最後はURLからASIN部分を切り出す方法</h4><p>URLにはASINが入ってるはずなので、ページに構造の変化には強いけど、少しパースが面倒なところがある。 <br
/>どのようなURLがあるかを把握する必要があるので、条件分けなども必要になる。 <br
/>まあASINのフォーマットは\w{10}と決まっているので、ある程度安定するのかもしれない。</p><p>ついでに、replaceStateを使ってリロードなしでAmazonのURLを/dp/ASINだけの短いURLにするGreasemonkey書いた。</p><ul><li><a
href="http://userscripts.org/scripts/show/104173">Amazon URL Cleaner for Greasemonkey</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://efcl.info/2011/0605/res2817/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>JavaScriptのいろいろなコーディングルールをまとめてみた</title><link>http://efcl.info/2011/0527/res2764/</link> <comments>http://efcl.info/2011/0527/res2764/#comments</comments> <pubDate>Fri, 27 May 2011 13:20:55 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[javascript]]></category> <category><![CDATA[まとめ]]></category><guid
isPermaLink="false">http://efcl.info/?p=2764</guid> <description><![CDATA[JavaScriptの書き方はJavaScript自体がある程度自由なためいろいろな書き方ができますが、一貫性を持って書いた方がバグなども発生しにくくなるため、コーディングルールを定めておくのはよいことだと思います(特に [...]]]></description> <content:encoded><![CDATA[<p>JavaScriptの書き方はJavaScript自体がある程度自由なためいろいろな書き方ができますが、一貫性を持って書いた方がバグなども発生しにくくなるため、コーディングルールを定めておくのはよいことだと思います(特に複数人の開発の場合)</p><p>有名な企業やライブラリはコーディングルールも公開している事が多いので適当にまとめてみました</p><h4><a
href="https://developer.mozilla.org/ja/JavaScript_style_guide">JavaScript style guide &#8211; MDC Docs</a></h4><p>Mozilla/Firefox向けのものなので、一部ECMAScriptの範囲を超えたものも含まれています。 <br
/>多くの人が見ていると思うので、見たことない人は一度読んでみるといいです。</p><h4><a
href="http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml">Google JavaScript Style Guide</a></h4><p><a
href="http://cou929.nu/data/google_javascript_style_guide/">Google JavaScript Style Guide 和訳 — Google JavaScript Style Guide 和訳</a>(日本語版) <br
/>Googleのコーディングルールですが、ルールを並べるだけではなくなぜ悪いのかについても触れているので、一読をお勧めします。 <br
/><a
href="http://code.google.com/intl/ja/closure/utilities/docs/linter_howto.html">Closure Linter</a>というチェックツールもあるため、採用しやすいかもしれない。</p><h4><a
href="http://docs.jquery.com/JQuery_Core_Style_Guidelines">JQuery Core Style Guidelines &#8211; jQuery JavaScript Library</a></h4><p>jQuery Coreのもの。 <br
/>Typeチェックの仕方についても触れている。</p><h4><a
href="http://dojotoolkit.org/community/styleGuide">Dojo Style Guide &#8211; The Dojo Toolkit</a></h4><p>Dojoのコーディングルール。 <br
/>コード例が豊富で、命名規則やホワイトスペースの扱いなど細かいところまで入ってる。</p><h4><a
href="http://nodeguide.com/style.html">Felix&#8217;s Node.js Style Guide</a></h4><p><a
href="http://popkirby.github.com/contents/nodeguide/style.html">Felix&#8217;s Node.js Style Guide(和訳)</a>(日本語版) <br
/>Node.jsにおけるコーディングルール。(公式なものではない。no official document) <br
/>Node.jsに限らず、クライアントサイドJavaScriptに置いても参考になる部分は多い。</p><h4><a
href="http://javascript.crockford.com/code.html">Code Conventions for the JavaScript Programming Language</a></h4><p>Douglas Crockfordによるもの。 <br
/>コーディングルールというよりは慣習的なもの。 <br
/>同作者による<a
href="http://www.jslint.com/">JSLint</a>も併用しましょう。(<a
href="http://www.jslint.com/">JSLint</a> or <a
href="http://www.jshint.com/">JSHint</a>は他のコーディングルールであっても採用してよいもの)</p><h4><a
href="http://jibbering.com/faq/notes/code-guidelines/">Code Guidelines for Rich Internet Application Development</a></h4><p>コーディングルールではなくてガイドライン的なものです、HTMLやCSS、JavaScriptについてのガイドラインを書かれている。</p><h4><a
href="https://developer.apple.com/library/mac/#documentation/ScriptingAutomation/Conceptual/JSCodingGuide/Introduction/Introduction.html">Introduction to Apple JavaScript Coding Guidelines</a></h4><p><a
href="http://developer.apple.com/jp/documentation/ScriptingAutomation/Conceptual/JSCodingGuide/">JavaScript Coding Guidelines for Mac OS X</a>(日本語版) <br
/>Appleによるコーディングのガイドライン。 <br
/>&#8220;JavaScriptのベストプラクティス&#8221;でコーディングで気をつける事について触れている。</p><h4><a
href="http://www.webkit.org/coding/coding-style.html">The WebKit Open Source Project &#8211; WebKit Coding Style Guidelines</a></h4><p>JavaScriptではありませんが、Webkitにおけるコーディングルール。 <br
/>ホワイトスペースやLine breakingの所はJavaScriptの場合でも参考になる。 <br
/>uupaaさんがこれをベースに一部分を変更した感じで使ってるそうです。</p><ul><li><a
href="http://code.google.com/p/uupaa-js/wiki/CodingStyle">CodingStyle &#8211; uupaa-js &#8211; JavaScript Coding Style Guide &#8211; JavaScript Library for Casual Creator &#8211; Google Project Hosting</a></li></ul><h4><a
href="http://d.hatena.ne.jp/amachang/20100917/1284700700">サイボウズで学んだこと &#8211; IT戦記</a></h4><p>amachangによるもの。 <br
/>大規模 JavaScript 開発におけるルールや命名規則、デバッグ、パフォーマンスについて触れています。 <br
/>コーディングルールを整えてどのように実践したかについて参考になります。</p><h4><a
href="http://www.amazon.co.jp/exec/obidos/ASIN/4873114888/book042-22/ref=nosim/">JavaScriptパターン</a> (オライリー本)</h4><h4></h4><div
class="azlink-box" style="margin-bottom: 0px;"><div
class="azlink-image" style="float: left;"><a
name="azlinklink" href="http://www.amazon.co.jp/exec/obidos/ASIN/4873114888/book042-22/ref=nosim/" target="_blank"></a><img
style="border-style: none;" src="http://ecx.images-amazon.com/images/I/51ZoMJ%2BrLhL._SL160_.jpg" alt="JavaScriptパターン ―優れたアプリケーションのための作法" /></div><div
class="azlink-info" style="line-height: 120%; float: left; margin-left: 15px;"><div
class="azlink-name" style="line-height: 120%; margin-bottom: 10px;"><a
name="azlinklink" href="http://www.amazon.co.jp/exec/obidos/ASIN/4873114888/book042-22/ref=nosim/" target="_blank"></a>JavaScriptパターン ―優れたアプリケーションのための作法<div
class="azlink-powered-date" style="line-height: 120%; margin-top: 5px; font-family: verdana; font-size: 7pt;">posted with <a
href="http://sakuratan.biz/azlink/dp/JavaScript%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%20%E2%80%95%E5%84%AA%E3%82%8C%E3%81%9F%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E4%BD%9C%E6%B3%95/4873114888/book042-22" target="_blank">AZlink</a> at 2011.5.27</div></div><div
class="azlink-detail">Stoyan Stefanov,豊福 剛 <br
/>オライリージャパン <br
/>売り上げランキング: 8213</div><div
class="azlink-link" style="margin-top: 5px;"><a
href="http://www.amazon.co.jp/exec/obidos/ASIN/4873114888/book042-22/ref=nosim/" target="_blank">Amazon.co.jp で詳細を見る</a></div></div></div><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>この書籍の<a
href="http://efcl.info/adiary/JavaScriptPatterns/Chapter2Essentials">Chapter 2. Essentials</a>において、JavaScriptのコーディングルールが紹介されています。 <br
/>また避けるべき事やどう書くべきなのかについてもかなり深く書かれています。</p><p>コーディングルールは&#8221;どう書けばいいのか分からない&#8221;という人向けのものではないと思います。どう書いたらいいのか分からない人は、まずなぜそのように書いたらダメなのかを知るのがよいと思います。 <br
/>そのため、書き方に不安を持ってる人はなぜダメなのかについても触れている<a
href="http://cou929.nu/data/google_javascript_style_guide/">Google JavaScript Style Guide 和訳</a>を読むのがよいと思います。(読みやすい日本語版もあるしね) <br
/>コーディングルールはコードに一貫性を持つためにあると思います。頻繁にルールを変える必要はないと思いますが、必ずしもそのルールが、その時の(実行環境|JavaScript)において最適な書き方ではない場合もあります。そういうときはルールの更新をしましょう。</p><h4>おまけ</h4><p>自分の場合は<a
href="http://www.jetbrains.com/webstorm/">WebStorm</a>の<a
href="http://efcl.info/2010/1027/res2023/">自動整形</a>に任せている(といっても膨大なルール設定があるため、上記で紹介したコーディングルールを自動化できる)ので、基本的にはIDE任せという書き方にしています。 <br
/>セミコロン忘れなどについてはcomplete current statement機能(<a
href="http://blog.livedoor.jp/okashi1/archives/51751259.html"> [WebStorm]Complete Current Statementがとても便利な件(・∀・)</a>)を使ったり、<a
href="http://www.jetbrains.com/webstorm/">WebStorm</a>のシンタックスチェックはかなり優秀なのでエラーも書いてる途中で発見しやすいです。(シンタックスチェックも細かく制御できる) <br
/>そのため、やっぱり道具任せといった感じではありますが、WebStormを使用していない場合も同じコードが書けるようにある程度のルールは持っています。 <br
/><a
href="http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml">Google JavaScript Style Guide</a> + <a
href="http://www.webkit.org/coding/coding-style.html">WebKit Coding Style Guidelines</a> に近いですが、ホワイトスペースなど見た目的なちょっとした違いにはそこまで厳しくしない感じで書いています。 <br
/>if, for, while, doなどの{}は省略しない(<a
href="http://www.memetodo.co.cc/2011/05/webstorm_29.html">WebStormの自動整形で中括弧を強制的につける</a>)、誰が見てもある程度読める感じにする、ブレークポイントを打ちやすい空間を作るように配慮するなどなどで、他のコーディングルールに書いてある事と同じようなものだと思います。</p> ]]></content:encoded> <wfw:commentRss>http://efcl.info/2011/0527/res2764/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>DropPagesでエクストリームコードリーディング環境を作る</title><link>http://efcl.info/2011/0510/res2744/</link> <comments>http://efcl.info/2011/0510/res2744/#comments</comments> <pubDate>Mon, 09 May 2011 19:07:08 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[javascript]]></category> <category><![CDATA[雑記]]></category> <category><![CDATA[blog]]></category> <category><![CDATA[code]]></category> <category><![CDATA[WebStorm]]></category> <category><![CDATA[wiki]]></category><guid
isPermaLink="false">http://efcl.info/?p=2744</guid> <description><![CDATA[DropPagesというDropboxにテンプレートファイルとMarkdownで書いたコンテンツ(記事)を置いて公開できるサービスを利用してどこでもコードリーディングができる環境を作って使っています。 DropPages [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://droppages.com/">DropPages</a>というDropboxにテンプレートファイルとMarkdownで書いたコンテンツ(記事)を置いて公開できるサービスを利用してどこでもコードリーディングができる環境を作って使っています。</p><h3><a
href="http://droppages.com/">DropPages</a>について</h3><p><a
href="http://droppages.com/">DropPages</a>の導入方法</p><p>詳細は<a
href="http://droppages.com/Getting+started">Getting started | DropPages.com</a>を見る。</p><ol><li><a
href="http://droppages.com/">DropPages</a>から好きなThemeファイルのzipをダウンロードする</li><li>zipを展開すると&lt;Theme名&gt;.droppages.com というフォルダができるので、 <br
/>このフォルダ毎、Dropboxフォルダの好きな所に置く</li><li>&lt;Theme名&gt;..droppages.com の&lt;Theme名&gt;を自分の使いたいサブドメイン名にする。 <br
/>たとえばうちは<a
title="http://sig.droppages.com/" href="http://sig.droppages.com/">http://sig.droppages.com/</a>なので、sig.droppages.comというフォルダ名にリネーム。</li><li>Dropboxフォルダ内なら、<strong>右クリック-&gt;Dropbox-&gt;このフォルダを共有</strong>からDropboxのサイトが開いて、 <br
/>コラボレータのメールアドレスを入力する画面になる。</li><li>招待するコラボレーターに<a
href="mailto:server1@droppages.com">server1@droppages.com</a>と入力すれば共有は完了。</li></ol><p><a
href="http://efcl.info/wp-content/uploads/2011/05/image10.png"><img
style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://efcl.info/wp-content/uploads/2011/05/image_thumb10.png" border="0" alt="image" width="240" height="162" /></a></p><p>後は、その共有したフォルダ名のアドレス(sig.droppages.comなら<a
title="http://sig.droppages.com/" href="http://sig.droppages.com/">http://sig.droppages.com/</a>)にアクセスできるようになるまで待つだけ(結構かかります。一日とか)</p><p><strong>Droppagesの構造</strong></p><p><a
href="http://droppages.com/Getting+started/FolderLayout">FolderLayout | DropPages.com</a></p><div><pre id="codeSnippet" class="csharpcode">sig.droppages.com
├Content[DIR]
│  └記事となるmarkdownファイル
├Public[DIR]
│  └css, js ,画像などのテンプレートから呼び出すリソース
└Templates[DIR]
   └テンプレート.html</pre></div><div>どのテンプレートも3つのフォルダからできていて、それぞれの意味は上のような感じです。</div><div>Publicは単純にリソースをおけて、テンプレートやコンテンツから/ ルートでアクセスできます。</div><div>テンプレートは思ったより頑張れるので、<a
href="http://droppages.com/Getting+started/Managing+pages">Managing pages | DropPages.com</a>や既存のテーマを参考にいじってみるのがいいと思います。</div><div>簡単にまとめると</div><table
border="0" cellspacing="0" cellpadding="2" width="526"><tbody><tr><td
style="text-align: center;" width="200" valign="top"><p><strong>構文</strong></p></td><td
width="324" valign="top"><p
style="text-align: center;"><strong>意味</strong></p></td></tr><tr><td
width="200" valign="top"><p>:テンプレート名</p></td><td
width="324" valign="top">テンプレート間でのテンプレート内容を継承</td></tr><tr><td
width="200" valign="top">@変数名 変数に入れたい文字列 <br
/>@変数名 <br
/>変数に入れたい文字列のブロック <br
/>複数行でもいい(Bodyとかに使われてる)</td><td
width="324" valign="top">変数名の定義はコンテンツ、テンプレートどちらでもできる。 <br
/>変数名に入れたものはテンプレートから参照して使う。 <br
/>{{変数名|プレースホルダ}} で参照できて、プレースホルダ部分は変数が定義されてないときの初期値を決められる。</td></tr><tr><td
width="200" valign="top">@Titleや@Bodyなど <br
/>{{PrimaryNavigation}} <br
/>{{SecondaryNavigation}} <br
/>{{Navigation}} <br
/>{{Breadcrumbs}}</td><td
width="324" valign="top">最初から決められてる特殊な変数がある。 <br
/><a
href="http://droppages.com/Getting+started/Managing+templates">Managing templates | DropPages.com</a> <br
/>テンプレートを書くときに、子のコンテンツを列挙する{{SecondaryNavigation}}やサイトマップ的な{{Navigation}}やパンくずリスト的な{{Breadcrumbs}}などは結構工夫すればブログみたいになる</td></tr><tr><td
width="200" valign="top">_drafts フォルダ</td><td
width="324" valign="top">_drafts という名前でコンテンツ内にフォルダを作れば、それはドラフト扱いになり公開されない。 <br
/>フォルダじゃなくても_と先頭につければ{{Navigation}} <br
/>などの列挙対象にはならない気がする。(直接URLたたくとアクセスできるけど)</td></tr></tbody></table><p>自分のサイトは<a
href="https://github.com/azu/4-Code-Reading">azu/4-Code-Reading &#8211; GitHub</a>でコンテンツ共々テンプレートも公開しているので、適当に見てください。(アクセス解析のコードとは固有になっちゃってるけど)</p><p>Droppagesのコンテンツ(記事)はtxtファイルに、以下のような感じで書いていって保存すると、Dropboxで同期されて自動でWebサイト側が更新される仕組みなってます。</p><div
id="codeSnippetWrapper"><pre id="codeSnippet" class="csharpcode">@Title タイトル
@Body
記事内容書ける
Markdown記法を使える
これ以外にも変数は定義できるけど</pre></div><div>自分がDroppagesを気に入った理由にMarkdown記法で書けるという所が結構大きくて、これが結構便利です。 <br
/>デモなどではtxtファイルになっていますが拡張子がmdなmarkdownファイルでも問題なく扱えます!</div><div>Markdownの書き方は</div><ul><li><a
href="http://www.kotono8.com/wiki/Markdown">Markdown &#8211; 閾ペディアことのは</a></li><li><a
href="http://www.kawaz.org/projects/kawaz/wikis/Markdown%E3%81%AE%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95/">Kawaz &#8211; Markdownの使用方法</a></li></ul><p>などを見るとよいと思います。</p><p>MarkdownならiPadの<a
href="http://ryosblog.net/6682">Textastic</a>など対応してるアプリもいろいろある。</p><h3>コードリーディング</h3><p>Droppagesを使えば、markdownファイルに書いて保存するだけど自動的にWebに公開するという手順が簡単に行えます。 <br
/>で、なんでコードリーディングサイトにしようと思ったのかは、元々Markdownなどでコードリーディング記録を書きたいなーと思っててGithub pages + Sphinxなどいろいろ試してたんですが面倒な手順が多くて、そこに自動的にMarkdownを変換して公開できるサービスとして<a
href="http://droppages.com/">DropPages</a>がきたわけです。</p><p>コードリーディングの環境には<a
href="http://www.jetbrains.com/webstorm/">WebStorm</a>を使っています。 <br
/>WebStormなら<a
href="http://plugins.intellij.net/plugin/?webide&amp;id=5970">Markdown</a>プラグイン(EAPだと動かなかったりするのでWebstormは正式版を使う)があるのと、WebStormには構文解析をおこなってコードの構造がつかみやすいのでコードリーディング自体に最適だと思います。 <br
/>(ブックマークや変数、関数、参照先へのジャンプ、アウトラインなどなど)</p><p>WebStormはファイルの分割表示を持ってるので、左でコードを読んで、右でMarkdown形式でコードリーディングの記録を書いていくという事もできます(EmacsとかVimとかでも似たような環境作れると思う)</p><p><a
href="http://efcl.info/wp-content/uploads/2011/05/image11.png"><img
style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://efcl.info/wp-content/uploads/2011/05/image_thumb11.png" border="0" alt="image" width="240" height="146" /></a><a
href="http://efcl.info/wp-content/uploads/2011/05/image12.png"><img
style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://efcl.info/wp-content/uploads/2011/05/image_thumb12.png" border="0" alt="image" width="240" height="146" /></a><a
href="http://efcl.info/wp-content/uploads/2011/05/image13.png"><img
style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://efcl.info/wp-content/uploads/2011/05/image_thumb13.png" border="0" alt="image" width="240" height="146" /></a>Markdownのプレビューもその場でできる。</p><p>少し戻って、テンプレートはいろいろいじって、記事毎にいろいろメタ情報の変数を定義させるようにすれば、普通のブログと遜色ないぐらいの記事が簡単に作れます。 <br
/>毎回その変数定義を手入力だと面倒なので、WebStormのテンプレートからファイルを作るFile Templeteの機能を使って以下のような感じにしています</p><ul><li><a
href="https://gist.github.com/951733">DroppagesのFile Templete — Gist</a></li></ul><p>実際に入力して出てくる感じは下のようなもの。後はBody以下を書いていくだけ。</p><div
id="codeSnippetWrapper"><pre id="codeSnippet" class="csharpcode">@Title Underscore.js
@description 便利関数の詰め合わせライブラリUnderscore.jsのコードリーディング
@keywords Underscore.js
@Dates 2011年05月03日
@Body
[Underscore.js] 1.1.6のソースコードを見ていく

Table of Contentsによるとそれぞれジャンル分けされているので、それに沿って読む。</pre></div><div>実際に<a
href="http://sig.droppages.com/Code+Reading/underscoreJS">Underscore.jsのコードリーディング</a>をしていて、Markdownはコードリーディングととても相性がよいと思いました。</div><div>&gt; が先頭にあれば引用になったり(一行preみたいな使い方できる) <br
/>タブがスペース4つで字下げすれば、<a
href="http://www.kotono8.com/wiki/Markdown#.E3.82.B3.E3.83.BC.E3.83.89.E3.83.96.E3.83.AD.E3.83.83.E3.82.AF">コードブロック</a>になるので編集中もとても読みやすくコードを書ける。(他の記法のように何かで囲むなどをしなくていいので見通しがよい) <br
/>後はMarkdownの<a
href="http://www.kotono8.com/wiki/Markdown#.E3.83.AA.E3.83.B3.E3.82.AF_2">リンク</a>管理ですが、これも一カ所にリンクをまめて書くことができるので、上手くやればいい感じにリンクを書ける。</div><div>実際の自分のコードリーディング手順は以下のような感じで</div><ol><li>コードはブロックぐらいで適当に区切って読んでいく</li><li>## ブロックタイトル とMarkdownにブロックのタイトルをつける(テンプレートで自動的に目次生成をしているため)</li><li>コードを読みながらコード本体にコメントとして、コードの解説やアノテーションなどを書いていく</li><li>コードブロックを読みながら、気になったことや使い方や例などはMarkdownに書いていく</li><li>コードブロックを読み終わったら、そのコードブロックをMarkdownにコピペする(先ほどのように字下げしてpreにする)</li><li>1から繰り返し</li><li>全部読み終わったら<a
href="http://jashkenas.github.com/docco/">Docco</a>でコンパイルして、コード全体とコメントを見比べしやすいHTMLを生成する。(コード本体にコメントを書いていくのはこれも目的にしているため)</li></ol><p>## でサブタイトルをつけて区切っていくのは<a
href="http://efcl.info/2010/1126/res2111/">英語が読めない人向け、英語技術書の読み方 | Web scratch</a>でやっていたような章ごとに本を読んでいくのと同じ感覚でやっています。 <br
/>また<a
href="http://sig.droppages.com/Code+Reading/underscoreJS/Functions">Functions of undersocore.js &#8211; 4 Code Reading</a>など適当なページを見てもらうと分かると思いますが、h2,h3などのタグには自動的に内部リンクを振って目次を作るためにもサブタイトルをつけています。</p><p>また、コンテンツは先ほどから言っているようにmarkdownで書けるので、githubとも相性がいいです。(githubはmdファイルを変換して表示してくれる) <br
/>どこまで読んだかをgitで管理できたり、githubなどを使って複数人で共有したりもできるのでいろいろな使い道があると思います。また仮に<a
href="http://droppages.com/">DropPages</a>が消滅しても手元にはコンテンツファイルが残るので、markdownならそこそこメジャーなので逃げ道もいろいろあると思います(htmlに変換もできるし)</p><p><a
href="http://db.tt/GfwDjDR">Dropbox</a>+<a
href="http://droppages.com/">DropPages</a>+<a
href="http://ja.wikipedia.org/wiki/Markdown">Markdown</a>+<a
href="https://github.com/">GitHub</a>+<a
href="http://www.jetbrains.com/webstorm/">WebStorm</a>(任意のエディタ)</p><p>= 素敵なコードリーディング生活</p><p>ここから<a
href="http://db.tt/GfwDjDR">Dropboxに登録</a>すれば250MBのボーナスがうんぬんです。</p><ul><li><a
href="https://github.com/azu/4-Code-Reading">azu/4-Code-Reading &#8211; GitHub</a> (自分のサイトのテンプレートなど)</li><li><a
href="http://droppages.com/">Home | DropPages.com</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://efcl.info/2011/0510/res2744/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>FirefoxのJavaScriptデバッガ拡張Firebugの進化がすごい</title><link>http://efcl.info/2011/0424/res2647/</link> <comments>http://efcl.info/2011/0424/res2647/#comments</comments> <pubDate>Sat, 23 Apr 2011 18:57:01 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[Firefox]]></category> <category><![CDATA[javascript]]></category> <category><![CDATA[API]]></category> <category><![CDATA[Firebug]]></category> <category><![CDATA[まとめ]]></category><guid
isPermaLink="false">http://efcl.info/?p=2647</guid> <description><![CDATA[Firefoxのデバッグ拡張ことFirebugですが、Firefox4よりFirebugとは別にWeb Consoleという機能が入りました。 しかし、Firebug自体もさらに便利になっているので、少し紹介します。(F [...]]]></description> <content:encoded><![CDATA[<p>Firefoxのデバッグ拡張こと<a
href="http://getfirebug.com/">Firebug</a>ですが、Firefox4よりFirebugとは別に<a
href="https://developer.mozilla.org/en/Using_the_Web_Console">Web Console</a>という機能が入りました。 <br
/>しかし、Firebug自体もさらに便利になっているので、少し紹介します。(Firebug1.7 –1.8 の範囲で)</p><p>現在のFirefox4に正式対応しているのはFirebug1.7xで、Firebug1.8xは<a
href="http://getfirebug.com/downloads">Alpha</a>版として公開されているのでまだ不安定な部分もあることに注意して下さい。 <br
/>特に注意書きしてない部分はFirebug1.7の項目だと思って大丈夫だと思います</p><p><span
id="more-2647"></span></p><h3>コマンドラインに履歴ボタン</h3><p><a
href="http://efcl.info/wp-content/uploads/2011/04/image2.png"><img
style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://efcl.info/wp-content/uploads/2011/04/image_thumb2.png" border="0" alt="image" width="240" height="72" /></a></p><p>コンソールパネルでのコマンドエディタ(でかい方のコマンドライン)にHistoryボタンが新たに追加されました。 <br
/>過去に実行したコマンドをポップアップから選択して挿入することができます。(以前はCtrl+ZでUndoし続ける必要があった)</p><p><a
href="http://efcl.info/wp-content/uploads/2011/04/image31.png"><img
style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://efcl.info/wp-content/uploads/2011/04/image3_thumb.png" border="0" alt="image" width="240" height="177" /></a></p><p>コマンドライン(小さい方)も同様に履歴ボタンが存在します</p><p><a
href="http://efcl.info/wp-content/uploads/2011/04/image4.png"><img
style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://efcl.info/wp-content/uploads/2011/04/image_thumb4.png" border="0" alt="image" width="240" height="17" /></a></p><h3>スタイルサイドパネルの表示が細かく制御できるように</h3><p><a
href="http://efcl.info/wp-content/uploads/2011/04/image121.png"><img
style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://efcl.info/wp-content/uploads/2011/04/image12_thumb.png" border="0" alt="image" width="348" height="121" /></a></p><p>CSSパネルにあるスタイとるサイドパネルの計算済みスタイルでアルファベット順のソートができるようになりました。 <br
/>そのため並び順でどのようなスタイルが適応されているのかが見やすくなりました。</p><p><a
href="http://efcl.info/wp-content/uploads/2011/04/image151.png"><img
style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://efcl.info/wp-content/uploads/2011/04/image15_thumb.png" border="0" alt="image" width="485" height="131" /></a></p><p>同じくスタイルサブパネルにて、Only Show Applied Stylesフィルターが追加されました。 <br
/>これは重複して適応されているものなどを非表示にすることで、実際に適応されているスタイルが見やすくなります。</p><ul><li><a
href="http://blog.getfirebug.com/2011/03/04/firebug-1-7b1/">Getfirebug Blog » Blog Archive » Firebug 1.7b1</a></li></ul><h3>コンソールの実行結果の表示形式が変更</h3><p><a
href="http://efcl.info/wp-content/uploads/2011/04/image21.png"><img
style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://efcl.info/wp-content/uploads/2011/04/image21_thumb.png" border="0" alt="image" width="515" height="155" /></a></p><p>コンソールの実行結果の表示にてglobalStorageオブジェクトにも対応しました。</p><p><a
href="http://efcl.info/wp-content/uploads/2011/04/image24.png"><img
style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://efcl.info/wp-content/uploads/2011/04/image24_thumb.png" border="0" alt="image" width="480" height="106" /></a></p><p>それに伴ってDOMパネルにおいてDOM Storage(global, session, local)の表示に対応しています。</p><p><a
href="http://efcl.info/wp-content/uploads/2011/04/image36.png"><img
style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://efcl.info/wp-content/uploads/2011/04/image36_thumb.png" border="0" alt="image" width="394" height="134" /></a></p><p>また、以前はDateオブジェクトをコンソールに表示すると、<a
href="http://d.hatena.ne.jp/os0x/20100916/1284650917">DateをtoStringした値</a>が表示されていたのがちゃんとDateオブジェクトとして表示されるようになりました。</p><p>この辺のコンソール実行結果の表示形式の変更に伴ってか、<a
href="http://jsfiddle.net/efcl/zVFdd/3/">http://jsfiddle.net/efcl/zVFdd/3/</a> のようにconsole.log()の返り値が_firebugIgnoreとなっています。これはconsole.log(&#8220;hoge&#8221;);でundefinedが返ってくるとログ画面にundefinedが表示されてしまうので、仮の値として_firebugIgnoreを返してログ画面ではそれを無視しよう的な方法がとられているため、undefinedではない値を返すようになっているようです。(FIrefox4 +Firebug1.7以降) <br
/>なので、console.logがundefinedを返す事を期待するのは少し危険です。</p><ul><li><a
href="http://www.mail-archive.com/firebug@googlegroups.com/msg11737.html">Re: Test results for Firebug 1.7 + Firefox 4 combo</a></li></ul><h3>Break時のメッセージUIが変更</h3><p><a
href="http://efcl.info/wp-content/uploads/2011/04/image27.png"><img
style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://efcl.info/wp-content/uploads/2011/04/image27_thumb.png" border="0" alt="image" width="520" height="151" /></a></p><p>JavaScriptやHTMLの変更に対してブレークポイントを打った際にBreakした事を知らせるメッセージUIが変わりました。 <br
/>以前よりわかりやすい表示になりました。</p><h3>ファイルの指定行数目にジャンプ</h3><p><a
href="http://efcl.info/wp-content/uploads/2011/04/image30.png"><img
style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://efcl.info/wp-content/uploads/2011/04/image30_thumb.png" border="0" alt="image" width="510" height="82" /></a></p><p>エディタではよく見られる、JavaScriptやCSSなどの指定行数にジャンプする機能が検索バーに追加されています。</p><p><a
href="http://efcl.info/wp-content/uploads/2011/04/image33.png"><img
style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://efcl.info/wp-content/uploads/2011/04/image33_thumb.png" border="0" alt="image" width="510" height="184" /></a></p><p>検索バーに #行数 と入力する事で指定行数にジャンプすることができます。</p><h3>メモリプロファイラー</h3><p>Firebug1.8a2にてメモリ使用量の変化を見るメモリプロファイラーが実装されました。</p><p><a
href="http://efcl.info/wp-content/uploads/2011/04/image39.png"><img
style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://efcl.info/wp-content/uploads/2011/04/image39_thumb.png" border="0" alt="image" width="240" height="128" /></a></p><p>これはabout:memoryと同じAPIを使っていて、Firefox4からJavaScriptのヒープメモリなども取得できるようになったのに基づいて作られています。以前書いた<a
href="http://efcl.info/2010/1226/res2191/">JavaScriptからメモリ情報を取得する方法 | Web scratch</a>でのWebkitに実装されているconsole.memoryに近い感じの値がとれるようになったと思います。 <br
/>メモリプロファイラーはボタンを押してから次にボタンを押すまでのメモリについての変化を見る機能となっているようです。Firebug1.8aを入れた状態で<a
href="http://getfirebug.com/tests/issues/memory/test.html">Test Case for Issue #4376</a>にて実験することができます。</p><p>このメモリ監視機能は元々<a
href="http://getfirebug.com/wiki/index.php/Firebug_Memory_Profiler">Memorybug</a>というFirebug拡張として開発されていて(Firebugの実験的機能は別アドオンとしてくられることが多い)、それがFirebug本体にポートされ始めたものだと思います。将来的にはコンソールAPIにconsole.memoryProfile()などのメモリプロファイル操作APIが追加されると思います。</p><ul><li><a
href="http://getfirebug.com/wiki/index.php/Firebug_Memory_Profiler">Firebug Memory Profiler &#8211; FirebugWiki</a></li></ul><h3>DOMパネルの表示が細かく制御できるように</h3><p><a
href="http://efcl.info/wp-content/uploads/2011/04/image42.png"><img
style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://efcl.info/wp-content/uploads/2011/04/image42_thumb.png" border="0" alt="image" width="508" height="256" /></a></p><p>同じくFirebug1.8a2にて、DOMパネルにshowOwnProperties と showEnumerablePropertiesのフィルタオプションが追加されました。 <br
/>showOwnPropertiesはprototypeチェーンの表示を決めるフィルタで、showEnumerablePropertiesはenumerableなプロパティの表示を決めるオプションとなっています。スタイルサイドパネルと同様にDOMパネルにおいてもフィルター機能が充実してきているようです。</p><p>ここで書かれている内容はほとんど</p><ul><li><a
href="http://hacks.mozilla.org/2011/03/firebug-1-7-new-features/">Firebug 1.7 New Features ✩ Mozilla Hacks – the Web developer blog</a></li><li><a
href="http://blog.getfirebug.com/">Getfirebug Blog</a></li><li><a
href="http://getfirebug.com/wiki/index.php/Firebug_Release_Notes">Firebug Release Notes &#8211; FirebugWiki</a></li></ul><p>に載っている内容です。 <br
/>今回書いたもの以外にも変更点はあるので上記のサイトを読むといいです。 <br
/>動画で見るFirebug1.6の変化も <a
href="http://vimeo.com/18411877">What&#8217;s new in Firebug 1.6 on Vimeo</a></p><h4><strong>蛇足</strong></h4><p><a
href="http://d.hatena.ne.jp/os0x/20110422/1303468821">Google ChromeのJavaScriptデバッガの進化がすごい &#8211; 0xFF</a>が元ネタなので、それと似たようなアドオンの紹介。</p><h3>圧縮されたコードの整形</h3><p>IE9の開発者ツールに実装されていたJavaScriptコードの整形機能は<a
href="https://addons.mozilla.org/ja/firefox/addon/javascript-deminifier/">Javascript Deminifier</a>というアドオンによって行う事ができます。</p><p>たとえばGoogleのJavaScriptは圧縮されているため普通は読めませんが、</p><p><a
href="http://efcl.info/wp-content/uploads/2011/04/image45.png"><img
style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://efcl.info/wp-content/uploads/2011/04/image45_thumb.png" border="0" alt="image" width="640" height="229" /></a></p><p>JSBボタン(<a
href="https://addons.mozilla.org/ja/firefox/addon/javascript-deminifier/">Javascript Deminifier</a>をインストールするとステータスバーに表示)をONにする事で</p><p><a
href="http://efcl.info/wp-content/uploads/2011/04/image48.png"><img
style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://efcl.info/wp-content/uploads/2011/04/image48_thumb.png" border="0" alt="image" width="640" height="228" /></a></p><p>このように整形してくれます。 <br
/>これはリロードした際にも維持されているので、整形した状態のJavaScriptにたいしてもブレークポイントを打つことができます。</p><p><a
href="http://efcl.info/wp-content/uploads/2011/04/image51.png"><img
style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://efcl.info/wp-content/uploads/2011/04/image51_thumb.png" border="0" alt="image" width="640" height="170" /></a></p><p>これで圧縮されているライブラリの確認も楽にできます。</p><h3>Firebugをエディタにする拡張</h3><p><a
href="http://efcl.info/wp-content/uploads/2011/04/image18.png"><img
style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://efcl.info/wp-content/uploads/2011/04/image_thumb18.png" border="0" alt="image" width="240" height="184" /></a></p><p><a
href="https://addons.mozilla.org/ja/firefox/addon/firebug-autocompleter/">Firebug Autocompleter</a>はFirebugのコマンドラインに自動補完機能をつけてくれます。 <br
/>コマンドライン(小さい方)は公式にも一応ついていますが、コマンドエディタに対してもポップアップして表示される自動補完機能をつけてくれます。</p><p><a
href="http://efcl.info/wp-content/uploads/2011/04/image19.png"><img
style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://efcl.info/wp-content/uploads/2011/04/image_thumb19.png" border="0" alt="image" width="240" height="180" /></a></p><p><a
href="https://addons.mozilla.org/ja/firefox/addon/acebug/">Acebug</a>はFirebugのコマンドエディタを<a
href="http://Ajax.org">Ajax.org</a> Cloud9 Editorのものに変えてくれます。 <br
/>Syntax Highlightingや自動補完やファイルからロード、セーブなどエディタさながらの機能をつけてくれます。 <br
/>少し重たいですが便利です。</p><p>そのほかにもjQueryに特化した<a
href="http://firequery.binaryage.com/">FireQuery</a>やリッチUI系のExtJSやSproutCoreなどのライブラリに特化している<a
href="https://addons.mozilla.org/ja/firefox/addon/illuminations-for-developers/">Illuminations for Developers</a>やRuby on Railsに特化した<a
href="https://addons.mozilla.org/ja/firefox/addon/railsbug/">RailsBug</a>など様々なFirebugアドオンがあります。 <br
/>後、Firebugは<a
href="http://getfirebug.com/releases/">Index of /releases</a>あたりに新しい機能や実験的なものをFirebug拡張として分けて置いていることが多いです。その中には要素に適応されているイベントを表示する<a
href="http://www.softwareishard.com/blog/category/eventbug/">Eventbug</a>やCSSパネルでCSSが適応されてる要素を表示する<a
href="http://getfirebug.com/releases/selectbug/">selectbug</a>など結構便利なものがあります。(いずれFirebug本体に載るのかもしれない)</p><ul><li><a
href="http://efcl.info/2010/1119/res2075/">Firebugを拡張するアドオンをまとめてみた | Web scratch</a></li></ul><p>表面的にはFirebugはそこまで大きく変わっていないように見えますが、少しづつ<a
href="http://getfirebug.com/wiki/index.php/Firebug_1.8:_Architecture_Refactoring">内部の整理</a>も入ってきているため、Firebug拡張も作りやすくなるようです。</p><p>IE、Firefox、Chrome&amp;Safari、Operaとブラウザ自体も大きく変化していきますが、その中のデバッガもいろいろな変化が起きています。それぞれのブラウザでいい機能はどんどん取り入れて(パクって)いってもらいたいですね。</p><ul><li><a
href="http://getfirebug.com/downloads">Downloads: All Versions of Firebug : Firebug</a></li></ul><h4><strong>追記</strong></h4><p>タイトルにJavaScriptデバッグとあるのは元ネタに合わせてみただけですが、Firebug1.7はCSS関係の機能が結構拡充されてる印象。</p><p>アイコンが…ってのは<a
href="http://ai11.net/2010/fbicon/">FireBugのアイコンを置き換えようじゃなイカ : Firefoxをイカ娘が侵略プロジェクト</a>なんてのもあるんじゃなイカ<br
/>userChrome.cssとか<a
href="http://userstyles.org/styles/26321/firefox-firebug-status-icon">Stylish</a>でアイコンぐらいなら簡単に差し替えできるよ(アップデートの度にやり直さなくてもいいという利点も)</p> ]]></content:encoded> <wfw:commentRss>http://efcl.info/2011/0424/res2647/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>GithubにあるjQueryのコードをビルドする方法</title><link>http://efcl.info/2011/0423/res2558/</link> <comments>http://efcl.info/2011/0423/res2558/#comments</comments> <pubDate>Sat, 23 Apr 2011 05:03:59 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[javascript]]></category> <category><![CDATA[jQuery]]></category> <category><![CDATA[Node.js]]></category> <category><![CDATA[開発環境]]></category><guid
isPermaLink="false">http://efcl.info/?p=2558</guid> <description><![CDATA[普段、jQuery(本体)のコードを見たりする時にウェブだと見づらいので、ローカルにダウンロードして見ているのですが、jquery/jquery &#8211; GitHubからpullしたものにはビルドしたjQuery [...]]]></description> <content:encoded><![CDATA[<p>普段、jQuery(本体)のコードを見たりする時にウェブだと見づらいので、ローカルにダウンロードして見ているのですが、<a
href="https://github.com/jquery/jquery">jquery/jquery &#8211; GitHub</a>からpullしたものにはビルドしたjQuery.jsが含まれていないので、ビルドできる環境を整えてみました。</p><p>以前は<a
href="http://docs.jquery.com/Downloading_jQuery#If_you.27re_using_ant:">Downloading jQuery &#8211; jQuery JavaScript Library</a>に書いてあるようにAntを使ってどのOSでもビルドできたようですが、現在はuglifyやJSLintを使う都合上かも知れませんがNode.jsがビルド環境に必要となっています。<br
/><a
href="http://rewish.org/javascript/jquery_dev_build">jQueryの開発コードをビルドして使う (Win &amp; Mac) &#8211; Rewish</a> の後半がNode必須になった感じ。</p><p>環境はWindows7 6bitで、cygwinでもNode使う事ができるのでやればできるみたいですが、VM上のUbuntuをつかって作業しました。 <br
/>参考</p><ul><li><a
href="http://efcl.info/2011/0420/res2588/">WindowsからVM上のLinuxをSSH経由で利用する開発環境の構築 | Web scratch</a></li></ul><p><strong>必要なもの</strong></p><ul><li>git</li><li>node.js環境</li></ul><p>jQueryのコードはgithubからcloneして持ってきます。 <br
/><em>git clone &#8211;recursive </em><a
href="https://github.com/jquery/jquery.git"><em>https://github.com/jquery/jquery.git</em></a> するのが楽ですが、他の方法も<a
href="https://github.com/jquery/jquery">jquery/jquery &#8211; GitHub</a>に書いてあります。</p><div
id="codeSnippetWrapper"><pre id="codeSnippet" class="csharpcode">$<span class="rem"># git clone --recursive https://github.com/jquery/jquery.git</span>
<span class="rem"># githubからサブモジュールも含めて再帰的にclone</span>
Initialized empty Git repository <span class="kwrd">in</span> /media/sf_D_DRIVE/MyDocuments/Dropbox/workspace/toybox/lib/jquery/.git/
remote: Counting objects: 18336, done.        
remote: Compressing objects: 100% (5977/5977), done.        
remote: Total 18336 (delta 13065), reused 17001 (delta 11817)        
Receiving objects: 100% (18336/18336), 12.53 MiB | 1.04 MiB/s, done.
Resolving deltas: 100% (13065/13065), done.
Submodule <span class="str">'src/sizzle'</span> (git://github.com/jquery/sizzle.git) registered <span class="kwrd">for</span> path <span class="str">'src/sizzle'</span>
Submodule <span class="str">'test/qunit'</span> (git://github.com/jquery/qunit.git) registered <span class="kwrd">for</span> path <span class="str">'test/qunit'</span>
Initialized empty Git repository <span class="kwrd">in</span> /media/sf_D_DRIVE/MyDocuments/Dropbox/workspace/toybox/lib/jquery/src/sizzle/.git/
remote: Counting objects: 1422, done.        
remote: Compressing objects: 100% (622/622), done.        
remote: Total 1422 (delta 903), reused 1169 (delta 734)        
Receiving objects: 100% (1422/1422), 526.34 KiB | 243 KiB/s, done.
Resolving deltas: 100% (903/903), done.
Submodule path <span class="str">'src/sizzle'</span>: checked out <span class="str">'4bcc09702d6dadfd0b90c7de3c8b206e97ff97f4'</span>
Initialized empty Git repository <span class="kwrd">in</span> /media/sf_D_DRIVE/MyDocuments/Dropbox/workspace/toybox/lib/jquery/test/qunit/.git/
remote: Counting objects: 995, done.        
remote: Compressing objects: 100% (751/751), done.        
remote: Total 995 (delta 415), reused 661 (delta 241)        
Receiving objects: 100% (995/995), 158.30 KiB | 98 KiB/s, done.
Resolving deltas: 100% (415/415), done.
Submodule path <span class="str">'test/qunit'</span>: checked out <span class="str">'9887663380693009874e8c76f0bf77a921931766'</span>
$<span class="rem"># cd jquery/</span>
$<span class="rem"># ls</span>
GPL-LICENSE.txt  MIT-LICENSE.txt  Makefile  README.md  build  speed  src  test  version.txt
$<span class="rem"># make</span>
<span class="rem"># makeコマンドでjQuery.jsとjQuery.min.jsを生成</span>
Building selector code from Sizzle
Building ./dist/jquery.js
Minifying jQuery ./dist/jquery.min.js
Checking jQuery against JSLint...
JSLint check passed.
jQuery build complete.
$<span class="rem"># ls dist/</span>
<span class="rem"># jquery/distディレクトリに生成される</span>
jquery.js  jquery.min.js</pre></div><p><em>make</em>コマンドでJSLintや圧縮がかかったものが生成されますが、<em>make jquery</em>とすることでそれらをかけないで生成することもできます。 <br
/>細かい事は<a
href="https://github.com/jquery/jquery">jquery/jquery &#8211; GitHub</a>に載っています。</p> ]]></content:encoded> <wfw:commentRss>http://efcl.info/2011/0423/res2558/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>WebStorm上でjQueryのAPIドキュメントを表示する</title><link>http://efcl.info/2011/0419/res2566/</link> <comments>http://efcl.info/2011/0419/res2566/#comments</comments> <pubDate>Tue, 19 Apr 2011 14:19:41 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[javascript]]></category> <category><![CDATA[software]]></category> <category><![CDATA[API]]></category> <category><![CDATA[jQuery]]></category> <category><![CDATA[WebStorm]]></category><guid
isPermaLink="false">http://efcl.info/?p=2566</guid> <description><![CDATA[WebStorm &#38; PhpStorm Blog » Blog Archive » jQuery API documentation at your fingertipsで紹介されていますが、WebStorm上で [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://blogs.jetbrains.com/webide/2011/04/jquery-offline-doc/">WebStorm &amp; PhpStorm Blog » Blog Archive » jQuery API documentation at your fingertips</a>で紹介されていますが、WebStorm上でjQueryのオンラインヘルプをローカルにダウンロードしたものを表示できるようになっていました。(WebStorm/PHPStrom 2.1 以降が対象)</p><p>まずは<a
href="http://blogs.jetbrains.com/webide/2010/11/working-with-javascript-libraries-in-phpstorm-webstorm/">JavaScript libraries</a>の設定(Settings&gt; JavaScript Library)で、Addボタンを押してローカルにおいたjQuery.jsをFileに指定します。 <br
/>Documentation URLsのSpecifyボタンを押して、<a
title="http://api.jquery.com" href="http://api.jquery.com">http://api.jquery.com</a> を指定してからダウンロードボタンを押すとローカルにjQueryのドキュメントがダウンロードされます。(実際にダウンロードされるのは<a
href="http://api.jquery.com/api/">Raw XML API Dump</a>ですが<a
title="http://api.jquery.com" href="http://api.jquery.com">http://api.jquery.com</a>の方を指定する)</p><p><a
class="thickbox" href="http://efcl.info/wp-content/uploads/2011/04/2011-04-19-ss1.png"><img
style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="2011-04-19-ss1" border="0" alt="2011-04-19-ss1" src="http://efcl.info/wp-content/uploads/2011/04/2011-04-19-ss1_thumb.png" width="240" height="196" /></a></p><p>これでライブラリの追加は終わったので、次は実際にjQueryを使うプロジェクトを開きます。(プロジェクトを開いていない状態で設定すれば常に適応されるグローバルとして設定できると思う、その辺は<a
href="http://efcl.info/2010/1203/res2152/">WebStormのコード補完に新しく候補を追加する方法 | Web scratch</a>と同じかな） <br
/>また同じく設定に行き、JavaScript Library&gt;Scopeを見るとそのプロジェクトで適応されているライブラリが分かると思います。jQuery(Addボタン追加したライブラリ名の事）にチェックを入れれば準備は終わりです。(逆をいれば、プロジェクト毎に補完候補に現れるライブラリを指定できるようになっている)</p><p><a
href="http://efcl.info/wp-content/uploads/2011/04/2011-04-19-ss2.png"><img
style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="2011-04-19-ss2" border="0" alt="2011-04-19-ss2" src="http://efcl.info/wp-content/uploads/2011/04/2011-04-19-ss2_thumb.png" width="240" height="122" /></a></p><p>後はjQueryのメソッドにカーソルを合わせて、Quick Documentation Look-up(デフォルトCtrl+Q)をすれば、APIドキュメントがパネルに表示されます。</p><p><a
class="thickbox" href="http://efcl.info/wp-content/uploads/2011/04/2011-04-19-ss3.png"><img
style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="2011-04-19-ss3" border="0" alt="2011-04-19-ss3" src="http://efcl.info/wp-content/uploads/2011/04/2011-04-19-ss3_thumb.png" width="240" height="158" /></a></p><p>Shift+F1か、ポップアップしたドキュメントの矢印ボタンからドキュメントのWebページのジャンプもできる。</p><p><a
class="thickbox" href="http://efcl.info/wp-content/uploads/2011/04/2011-04-19-ss4.png"><img
style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="2011-04-19-ss4" border="0" alt="2011-04-19-ss4" src="http://efcl.info/wp-content/uploads/2011/04/2011-04-19-ss4_thumb.png" width="240" height="87" /></a></p><p>今回はjQueryだけみたいですが、ちゃんとオフライン向けのドキュメントを発行してくれるライブラリなら対応されるかも知れません。ドキュメントのヘルプページへのジャンプ機能はjQuery以外にも対応しているライブラリがあります。 <br
/><a
href="http://blogs.jetbrains.com/webide/2011/01/external-api-docs-support-for-popular-javascript-frameworks/">WebStorm &amp; PhpStorm Blog » Blog Archive » External API Docs Support for Popular JavaScript Frameworks</a></p><p>jQueryの補完もちゃんとできるし、APIドキュメントもすぐに見られるようになったのでjQuery使うのがかなり楽になったと思います。後、自分で追加する<a
href="http://blogs.jetbrains.com/webide/2010/11/working-with-javascript-libraries-in-phpstorm-webstorm/">JavaScript libraries</a>を設定できるので、ライブラリバージョン別に分けるといった事もできたりすると思います。</p><p>参考</p><ul><li><a
href="http://blogs.jetbrains.com/webide/2011/01/external-api-docs-support-for-popular-javascript-frameworks/">WebStorm &amp; PhpStorm Blog » Blog Archive » External API Docs Support for Popular JavaScript Frameworks</a></li><li><a
href="http://efcl.info/2010/1203/res2152/">WebStormのコード補完に新しく候補を追加する方法 | Web scratch</a></li></ul><p>おまけ</p><p><a
href="http://www.jetbrains.com/webstorm/buy/"><img
title="WS_SpringOffer_2" alt="" src="http://efcl.info/wp-content/uploads/2011/04/WS_SpringOffer_2.jpg" width="210" height="180" /></a></p><p>WebStormが今春のキャンペーンがまだ続いているので半額で購入できるみたいです。 <br
/>JetBrains公式の<a
href="http://plugins.jetbrains.com/plugin/?webide&amp;id=6098">NodeJS</a>プラグイン(Node.jsもそのうち公式対応されると思う)の公開が始まったりして、まだ進化のスピードは落ちてない印象なので、安いうちに買っておくのもいいかと思います。</p><p><dt><strong>WebStorm &amp; PhpStorm Blog » Blog Archive » 50% OFF personal WebStorm licensesi</strong></dt></p><dd><a
href="http://blogs.jetbrains.com/webide/2011/04/50-off-on-personal-webstorm-licenses/">http://blogs.jetbrains.com/webide/2011/04/50-off-on-personal-webstorm-licenses/</a></dd>]]></content:encoded> <wfw:commentRss>http://efcl.info/2011/0419/res2566/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 1/41 queries in 0.078 seconds using disk: basic
Object Caching 759/854 objects using disk: basic

Served from: efcl.info @ 2012-02-05 03:50:20 -->
