<?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; Firefox</title> <atom:link href="http://efcl.info/tag/firefox/feed/" rel="self" type="application/rss+xml" /><link>http://efcl.info</link> <description>フリーソフトやFirefoxなどについて、web全般なサイト</description> <lastBuildDate>Sat, 14 Apr 2012 15:37:26 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.2</generator> <item><title>Mozilla Vision 2012 Conference Day アウトラインメモ</title><link>http://efcl.info/2012/0121/res2997/</link> <comments>http://efcl.info/2012/0121/res2997/#comments</comments> <pubDate>Sat, 21 Jan 2012 13:44:16 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[Firefox]]></category> <category><![CDATA[イベント]]></category> <category><![CDATA[javascript]]></category><guid
isPermaLink="false">http://efcl.info/?p=2997</guid> <description><![CDATA[Mozilla Vision 2012 – Conference Day Mozilla Vision 2012 Conference Dayに参加してきたので、その時のメモです。(いつも通り正確性は保証されません) &#038; [...]]]></description> <content:encoded><![CDATA[<h1 style="margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; font-weight: bold; font-style: normal; font-size: 30px; line-height: 36px; font-family: inherit; color: #404040; padding: 0px; border: 0px initial initial;">Mozilla Vision 2012 – Conference Day</h1><p><a
href="http://mozilla.jp/events/vision/2012/conference/">Mozilla Vision 2012 Conference Day</a>に参加してきたので、その時のメモです。(いつも通り正確性は保証されません)</p><p><img
title="NewImage.png" src="http://efcl.info/wp-content/uploads/2012/01/NewImage.png" alt="NewImage" width="448" height="600" border="0" /></p><p><span
id="more-2997"></span></p><p>&nbsp;</p><h1>Boot to Gecko</h1><p>B2G = Boot to Gecko</p><h3>なぜ必要なのか</h3><p>モバイルは閉鎖的すぎる</p><p>過去を振りかえる</p><ul><li>2002年 ブラウザの場合</li></ul><p>IE のみだったので、拡張性はなかった。 拡張する必要がなかった</p><p>やがて複数のブラウザが登場して競争するようになった。 ブラウザ間で実装の競争が起こると</p><ul><li>UXが良くなる</li><li>ユーザーはハッピーになる</li><li>標準化も良くなっていく -&gt; 書き手もハッピー</li></ul><h3>ブラウザとモバイル</h3><p>モバイルプラットフォームは閉鎖的で、プラットフォーム側がコントールできるようにしている。</p><p>様々なプラットフォームに対応しようとするとそのプラットフォームに対応しないといけない -&gt; 時間の無駄になってる。</p><p>プラットフォームを移行するとデータが移行できない。 このようなsilosがあるとオープンではない</p><p>これを変えるためにB2Gを作っていく。</p><h3>Webプラットフォームができる事</h3><p>オープンなものにするために必要なもの</p><ul><li>オープンなApp Marketsが必要</li><li>プラットフォーム間を移行する際にデータも移行できる Firefox Syncのデバイスを超えた同期システム。</li><li>BrowserID</li></ul><p>ネイティブアプリだと使えるケドWebからは使えないモバイルの機能があるのはWebのバグなども</p><h3>Boo2Gecko</h3><p>B2Gに必要なもの</p><ul><li>iOS負けないUX</li><li>オープンスタンダートを構築する。B2G以外でも同じAPIが利用できる</li><li>Apps。Web自体がapp storeみたいなもの</li></ul><h3>デモ</h3><ul><li>ロックスクリーン、ホーム画面もWebアプリとして実装されている</li><li>60FPS出るようにしている</li></ul><p>電話ができるようにWeb APIとしてDevice APIを実装してある。 ネイティブコードではなくてWebの技術で実装されている。</p><p>ホーム画面もHTMLベースなので、ソースコードが見られる</p><ul><li>Quake 3を使ったアプリ<ul><li>WebGLのエンジン</li></ul></li></ul><p>クラッシュしたけど、直ぐ立ち上がる。</p><h3>B2Gの実装</h3><p>iOSなどのネイティブAPIの代わりに、Webエンジン/標準化されたDevice APIsがあり、ネイティブUIの代わりにWebベースのUIが存在する。</p><p>すべて再開発するわけではなく、Webレイヤー以外の部分は既存のものをサイっ利用したりする。</p><p>Gonk ( Androidのものも再利用) WebランタイムにMozillaは集中開発して、GPSなど他の部分に関してはAndroidのコードを利用する。</p><h3>B2Gは何がしたい</h3><ul><li>モバイルをオープンにしたい</li><li>プランや開発やソースコードもオープンにしている</li><li>作成したAPIを標準化したい</li><li>オープンなエコシステムを作成したい</li><li>Boot2Webkit など他の実装も作れるようにしたい</li><li>B2Gで動くものはB2Wでうごくようになるべき</li></ul><p>一からはじめたプロジェクトではない。 Androidのコミュニティ</p><h3>Q&amp;A</h3><p><em>Q</em> どのようにして標準化していくのか。 それぞれの実装に対してそれぞれのUIがあるから、ポートする作業していく必要がでていく。 Gaiaに対してのUIのガイドラインが必要</p><p><em>A</em> 標準化していくのはシステムのテーマ</p><p><em>Q</em> non-nativeなものを場合、ゲーム等最大限の性能出すためにネイティブAPIを開発するの?</p><p><em>A</em> ネイティブAPIを実装するつもりはない。 WebGLがOpenGLが遅ければそれはWebのバグである。 クロスプラットフォームを常に担保していくという目的を持っているので、少し遠回りでもWeb APIをやっていく。</p><p><em>Q</em> アプリが落ちたときに他のシステムを巻き込むの?</p><p><em>A</em> プライオリティの高いものを別のプロセスを走らせる事もできる。 OSがとても軽量なので、全てがダウンしても直ぐに起動できる。</p><p>電話のプロセスは別のものとして動いてるのでOSがダウンしても生きてる。 プロセスのセパレーションと呼ばれるものが実装できてる。</p><p>Linuxカーネルがあってその上にいくつかのXULや電話やBTなどのプロセスなどを起動していく。そして最後にB2Gのプロセスが起動して、その中でWeb Appが起動する。</p><p>Chromelessのようなイメージで、全てがiframeのようなものになって、iframeにマニフェストを与えて、iframeを別プロセスで動作させることができる。</p><p><em>Q</em> どのようにB2Gを提供していくか? Mozillaがサポートするの?</p><p><em>A</em> Mozillaは直接デバイスを出荷することはなく、 Mozilla Phoneパートナーと一緒してやっていく。 メジャーなキャリアとはやり取りを始めていて、最終的にそのキャリアが出していくことになる。</p><p><em>Q</em> デバイスを買ってきて、OSとしてB2Gを後入れるということはできるの?</p><p><em>A</em> 今サムソンのデバイスを使ってるが勝手に入れてる。 なので、将来的にはより多くのデバイスをサポートして行って、そのような事が可能になる</p><h1>Web 標準の今、そして未来</h1><p>Tantek Çelik</p><p>スライド : <a
href="http://tantek.com/presentations/2012/01/open-web/">Open Standards Stories &amp; Practices</a></p><p>CSSの標準化に参加したことについてのお話</p><ul><li>ISO</li></ul><p>買った上で誰でも見ることができる =&gt; 昔のオープン</p><ul><li>CalConnect</li></ul><p>お金を払った上にテストに参加できる。 テストスイートなのに、対象が限定されている。</p><p>W3Cはだれても見られるオープン</p><ul><li>W3C tests</li></ul><p>CSS WGはレポートを公開していたので誰でも見ることができた。 CalcConnectは公開してはいけないという縛りがあった</p><p><strong>オープンなテストは再現性が担保されている</strong></p><h3>まだCSS WG不満があった</h3><p>更にテスト、レポートをオープンにしていく必要がある。</p><ul><li>Blog</li><li>Wiki</li></ul><p>CSS WGのWikiを作成した。まだ閉ざされていた部分があったが、IRCやバグトラッカーなども公開していくようにした。</p><p>当時にメーリングリストはあったが、W3Cのメンバーでないとみられないようになっていたが、テクニカルな内容のものは全てPublicにしていくようにした。</p><ul><li>editor &#8216;s drafts</li></ul><p>これもエディターが書いてる途中のものも公開していくようにした。</p><ul><li>last call</li></ul><p>2011になってCSS2.1がやっとRCになった。9年もかかった。</p><p>CSS3の確固たる基盤になるCSS2.1ができた。</p><h3>学んだ事</h3><p>オープンは進化する</p><h2>2. XFN</h2><ul><li>2003年</li></ul><p>SXSWという会議に参加した時の話。</p><p>ブログロールの仕組みについての会議で、ものすごく複雑な仕様になっていた。</p><p>rel=&#8221;friend&#8221;がついてればいいぐらいな簡単なものを提案した。</p><p>実際にどういう状態がfriendなのかについて調査した。</p><h3>CC</h3><p>XFNは初めてのCCライセンスを使ったオープンな標準化となった。 そこからフィードバックをもらってXFN1.1をリリースした。</p><h3>rel=me</h3><p>一番大きな6文字。自分を示すrel属性で、多くのSNSなどで使用されている。</p><h3>rel=me , OAuth</h3><p>２つを組み合わせることで、OpenIDをよりシンプルなものを実現できるでは?</p><p>XFNから学んだものは単純でシンプルであるべきということ</p><h2>3. MicroFormat</h2><ul><li>rel=license</li></ul><p>この時初めてMicroFormatという事が使われた</p><p>その頃はまだ標準に関するWikiがなかったので、Wikiで公開した。= 初めてのWikiで公開され知多Web標準</p><h3>人を表現するhtml</h3><p>classnameでつけていた習慣など、定義されていた言葉を元に定義した。</p><h3>hcard , hcalendar</h3><p>既にある用語を元に作成した標準。 既存のフォーマットを使用したので馴染みやすい。</p><h2>Webレビューのフォーマット</h2><p>いろいろ研究した</p><p>80/20の法則 : 比較などのある程度のフォーマットの表現が見えてきた</p><ul><li>hreview</li></ul><p>hreviewという標準化した</p><h3>microformats.org</h3><p>これまでの標準化団体とは少し異なる。</p><ul><li>プロセスそのものを文章化</li><li>今までの教訓を掲載した</li><li>IRCもオープンに</li><li>パブリックなログを公開</li></ul><p>wikiがemail以上の公式な文章であるとした。 -&gt; Wikiが厳格であるようにした</p><ul><li>IRCに変更をとばすbot</li><li>スパムの除去</li></ul><p>Wikiのイイ点としては同時に翻訳が行えるようになった。 今も標準化作業中に17ヶ国に翻訳作業がされている。</p><p>どんどんフィードバックを送る。標準化は誰でも参加ができる環境に翻訳は重要</p><p>Wikiは誰でも参加できる。W3Cは組織としての参加が必要になってる。</p><p>全てPublic domain / CC0にすることで全てがオープンであることを体現する。</p><h3>microformats2</h3><p>更にシンプルになるMicroformat。 ユーザーはシンプルなしようが求められる。</p><h2>4. HTML5</h2><ul><li>2004年</li></ul><p>W3Cのワークショップが始まり。</p><p>HTM + CSS + DOM VS XHTML2 +XForms +etc..</p><p>これまでを進化させていく方向　VS W3CのXML</p><p>incremental VS replace</p><p>進化させていくと置き換えていくの対決</p><p>HTML VS XML は8:11でHTMLは負けた</p><p>ベンダーはHTMlの方を支持していた。MS,Apple,Mozilla等</p><p>Web自体は進化しないと行けない</p><h3>WHATWGが設立</h3><p>ここでHTMLは進化していった。</p><p>Web Apllication specがHTMl5になっていった。</p><p>Core+new APIsという構成はCSSも同じ</p><p>WHATWGはMITライセンスをしようした!!! これまであるライセンスを再利用した</p><p>W3Cは独自のライセンス &#8211; フォークが許されないライセンス</p><h3>W3CとWHATWGの共通点</h3><ul><li>要素</li></ul><p>エディタを信頼する VS WG全体で協議する</p><p>というような対立が生まれてた。</p><h2>5. W3C CGs (コミュニティグループ)</h2><ul><li>2011年</li></ul><p>2011にW3Cコミュニティグループができた</p><p>あるテーマに関するコミュニティグループは4人いればできる</p><h3>CC0 &amp; OWFa の仕様</h3><p>Mozillaの弁護士にそれぞれ調べて持ったが、どちらもいい感じだった。 オープンに使えるライセンス。</p><h2>仕様作成の10個のベストプラクティス</h2><ol><li>オープンに作る(標準をオープンに作っていく)</li><li>オープンに反復を行う(完璧じゃなくてもいいから試行錯誤を出す)</li><li>オープンWikiを使う</li><li>オープンに討議をする</li><li>ブログ、Tweet、あらゆる手を使ってオープンに</li><li>オープンなアーカイブ&amp;ログ</li><li>Wiki編集はIRCに投げる</li><li>オープンテストスイート(堅牢、反復的に</li><li>テストレポートをオープンにする</li><li>可能な限りコミュニティを巻き込む( 多くの人を巻き込む)</li></ol><p>境界を超えた範囲で巻き込んだ作業をする。標準はグローバル</p><h2>Q&amp;A</h2><p><em>Q</em> MicroFormats以外に草の根的なものはありますか?</p><p><em>A</em> OAuthはメーリングリストだけでできてきた</p><p><em>Q</em> ベストプラクティスはWeb以外に対しても適応できる?</p><p><em>A</em> 他にも適応できるだろう.</p><p>Facebookがオープンプラットフォームということをやろうとしている</p><p><em>Q</em> W3Cのノンフォークライセンスだということだけど、コミュニティができてフォークが行われてる。W3Cが変わってきてるの?</p><p><em>A</em> 今は２つの方向ができてきてる。 HTML5はまだノンフォークなライセンスになってる。</p><p>将来的には切り替わるかもしれない。</p><h1>pdf.js — HTML5 と JavaScript の限界に挑戦する</h1><h3>なぜpdf.jsが必要なのか</h3><p>信頼されたネイティブコードは脆弱性があると問題になる。</p><h3>pdfに何が必要なのか</h3><p>portableなのに巨大なフォーマット</p><ul><li>Adobeのみが実装してるサブセットがある</li><li>pdfの一部サブセットを実装することを目的にした</li></ul><p>圧縮されたpdfを戻して、パースしてdrawTextみたい形にしてレンダリングする。</p><p>Document -&gt; ページとオブジェクトがある。</p><h3>HTML/CSS/JS</h3><ul><li>JavaScriptはTyped Arrayなどを使用して高速化</li><li>Fast 2D Canvas、GPUで加速的</li><li>CSS @fant-face フォントに対応、ダイナミックにフォントをロードする機能</li><li>data: URI バイナリデータをJavaScript上で作れる</li></ul><p>SVGなどを使わなかった理由もある。 = スピード</p><h3>pdf.jsの手順</h3><h4>ダウンロード</h4><p>バイナリデータをXHRでresponseTYpe = &#8220;arraybuffer&#8221;でダウンロードできる。</p><h4>デコード、解読、パース</h4><ul><li>PNG,LZWデコーダーをJavaScriptで書いた</li><li>パーサーもJavaScriptで書いた</li></ul><h4>レンダリング</h4><p>パースしたものをレンダリングしていくのが大変</p><ul><li>2D CanvasでLineやarcsなどを描いていく</li><li>bitmapもimgで描画する</li></ul><h4>問題</h4><ul><li>2DCanvasは十分ではなかった。</li><li>Dash line等Canvasには実装されてなかった。 even odd ruleなどもそう</li></ul><p>解決方法として2DCanvas自体を拡張していく</p><p>bitmap画像のデコードをサポートしてなかった。</p><ul><li>img と Canvasはjpeg2000</li><li>フォーマットを追加するのは大変</li><li>JavaScriptでデコーダーを書く</li></ul><p>フォントの問題</p><ul><li>OpenType , TrueTypesなどブラウザはサポートしてないTypeがあった</li><li>Type1は一番PDFで使わてるのにCSS Font faceでサポートされてない</li></ul><p>解決方法としてOpenTypeに変換して、中間フォーマット的にType1をサポートした。</p><p>まだまだやることはいろいろ</p><ul><li>Shading fillはCSS gradientsで実装されてる</li><li>Image Mask はCanvasがネイティブでできる</li><li>PostScriptオブジェクト &#8211; PostScriptのインタープリタをJSで</li><li>TYpe3フォント PDF.js自体でレンダリングを行ってる</li></ul><p>pdfをWeb技術でレンダリングする事に成功した。</p><h3>デモ</h3><ul><li>Web技術で実装するとモバイルでも動かせる</li><li>フルのPDFレンダラーがブラウザ上で走っている</li></ul><h3>PDFビューアーのUI</h3><p>UIを作っていく</p><ul><li>ページビュー(サイドでページをプレビューする)</li><li>ハイパーリンクのサポート</li><li>テキストの選択 &#8211; 難しい</li><li>テキストの検索 &#8211; 難しい</li></ul><h4>ハイパーリンクの実装</h4><p>2種類のリンク方式がある</p><ul><li>相互参照</li><li>外部リング</li></ul><p>Webブラウザが認識できるaリンクに変換した。 そのオブジェクトをpdf.jsでレンダリングした上にaリンクを重ねたものを表示して扱うようにした。</p><p>相互参照はポイントへ飛ぶようにしていて、バックボタンが機能するようになっている。</p><h4>テキストの選択</h4><p>Canvasは画素が並んでいるだけなので選べないが、オーバーレイに透過性を持ったdivタグでテキストを描画している。</p><p>アクセシビリティもサポートできている。</p><h3>pdf.jsの高速化</h3><h4>コンパイル</h4><p>pdf.jsはPDFのサブセットをレンタリング</p><ul><li>PDFレンダラーはインタープリタだった</li><li>PDFレンダラーのJITコンパイルする switch等をコンパイルしたら省略できるので、直接draw*を呼べるようにできて十数倍の動作速度が得られる。</li><li><a
href="http://blog.mozill*A*com/cjones/2011/06/15/overview-of-pdf-js-guts/">Overview of pdf.js guts &lt; Chris Pitchin&#8217; Hey</a></li></ul><p>ダイナミックなコンパイレーションを行なってFunction()で実行してる。</p><h4>Web Workers</h4><p>Web Workersを使って別のスレッドで、デコード、パース、フォント変換、デコードイメージを行う。</p><ul><li>main threadではdrawを行なっていく。(これはUIブロックを生む)</li><li>別スレッドで実行してるものはUIブロックの影響されない</li><li>同時併用でタスクを実行できるので高速化</li></ul><h3>pdf.jsの現状</h3><ul><li>大部分の機能は完成している</li><li>Firefox,Chromeの拡張して利用できる</li></ul><p><em>* HTML/JS/CSS Can redner PDFs *</em></p><h3>next</h3><ul><li>PDF内のテキストを検索</li><li>HTTP byte-rangeリクエストを使ってPDFを分割ロード。メモリの削減になる</li><li>Web Worker内でCanvasをサポート。UIブロックを潰せる</li><li>(maybe) WebGLで高速レンダリング？？？ GPUをもっと使える</li></ul><h3>質問</h3><p><em>Q</em> なぜCanvasを使用したのか?</p><p><em>A</em> JavaScriptが直接やり取りできる。SVGはDOMを経由しないといけないため、より早くするには難しい。</p><p>PDFではPDFファイルがあるのだからDOMを作成してやるのは不要だ。</p><p><em>Q</em> 政府などでフォームとしてPDFを利用する場合。インタラクティブなPDFな方向はするのか?</p><p><em>A</em> ２つのフォームフォーマットがある</p><ul><li>Acro format &#8211; 標準化されてる</li><li>XNA format &#8211; プロレタリア</li></ul><p>PDF.jsでも実装しやすい部類のもの。 AdobeではSpiderMonkeyベースのエンジンが使わていて、Validationが行われていたりする。</p><p>pdf.jsは100%のpdfのサポートするわけではないので、フォームなどのやり取りをべーすとするならばHTMLベースのほうがよいものになるかもしれない。</p><p><em>Q</em> セキュリティポリシーについて</p><p><em>A</em> pdf.jsの用途について</p><p><em>A</em> メールクライアントなどの場合 HTMLのセキュリティポリシーに寄っていく(クロスドメインの問題がでるかもしれない)</p><p><em>Q</em> テキストの描画方法</p><p><em>A</em> PDFは左から右へ書けというようなコマンドが存在する。 まだ、サポートしてないが、Canvasの機能を一部利用かもしれない。</p><p><em>Q</em> Canvasにテキスト選択を追加しなかった理由?</p><p><em>A</em> Canvasにそれが実装されなかったのはとても管理が大変だったから。パフォーマンスとテキスト選択のトレードオフの結果</p><p><em>Q</em> 対応するブラウザについて</p><p><em>A</em> pdf.jsはオープンWeb標準を使って作っていくという方向から始まった。だが、ブラウザにはまだ実装されていない機能があって、その部分が拡張実装として、Firefox や Webkitに実装されていった。</p><p>dot line と even fill あたりが互換性ブラウザの問題を生んでる。 =&gt; スタンダートを追加していく</p><p>重要なのはTyped Arrayのサポートが大事で高速に動作するにはこれが必須。# LT</p><h1>LT</h1><h2>&#8220;実践&#8221;Emscripten</h2><ul><li>Alon zakai<ul><li>EmScriptenの作者</li></ul></li><li>C, C++をLLVMでJavaScriptへ変換する<ul><li>バイトコードになってそれをエミュレート</li></ul></li><li>手作業よりも少し遅いぐらい</li><li>まとめ<ul><li>2-4倍ぐらい遅くなる</li><li>変換作業が短くすむ</li></ul></li><li>JSViz<ul><li>GraphVizを変換</li><li>アニメーション機能付き</li><li>グラフを考えるようにするのを視覚化</li></ul></li></ul><h2>ブラウザプレゼンテーションの教育的利用</h2><ul><li>Nurota Lab.</li><li>教師と生徒とのやり取りが必要になる。<ul><li>臨機応変に内容を変えられるようにする</li><li>黒板以上のことをできるようにする</li></ul></li><li>インタラクティブにコードを実行しながら事業を進行できる</li><li>Webページを埋め込むとかWeb技術を使える</li><li>数学とか物理とか利用方法がある</li></ul><h2>Firefox Syncサーバを建てて見た</h2><ul><li>Firefox Sync<ul><li>保存情報をアドオンを同期する機能</li><li>Androidとも同期できる</li></ul></li><li>Mozillaのサーバに情報が転送される<ul><li>ローカで暗号化されてから送信している</li></ul></li><li>Syncサーバを自前で建てて利用する<ul><li>証明書を用意してHTTPSでやり取りできる</li></ul></li><li>Python, SQLite、Macurialで動く<ul><li>ビルドして、コマンドだけ動く</li></ul></li><li>いろいろ調整しないと動かないけど</li></ul><h2>Firefox 布教大作戦</h2><ul><li>Firefox を 灘高校 に広める<ul><li>IE 83%のシェアな高校</li></ul></li><li>Firefoxノートを1300部発注<ul><li>教員に止められた</li></ul></li><li>「布教」は簡単ではない</li></ul><h2>Firefoxのゴキゲンな通知UI</h2><ul><li>Popup Notifications<ul><li>doorhangerがコードネーム</li></ul></li><li>ノンブロッキングな通知UI</li><li>PopupNotification.show()<ul><li>6つの引数で設定</li></ul></li><li>通知の複数表示ができないバグ</li><li>ドキュメントが充実してない<ul><li>コードはドキュメントになってる</li></ul></li><li>まとめ</li></ul><h2>ドアハンガーをもっと簡単につかいたい! &#8211; Piro</h2><ul><li>PopupNotication.jsmの罠<ul><li>CSSでアイコンの表示</li><li>コードバックをたくさん指定しないといけない</li></ul></li><li>簡単に扱えるライブラリを書いた</li></ul><h2>海外の開発コミュニティをを利用して世界デビューをしよう</h2><ul><li>Linuxに企業として参加<ul><li>コミニティに参加していくには</li></ul></li><li>ユーザーもどんどん参加する</li><li>英語のレベルはあまりきにしない</li><li>批判されても落ち込まない</li><li>思いついたらすぐ投稿(反応を早く)</li><li>オープンにディスカッションをする</li><li>キーとなる人を早く見つける</li><li>まずは感謝</li></ul><h2>才能のソーシャルメディア</h2><ul><li>Stylelist DirectoryというSNSサービス<ul><li>才能のソーシャルメディア</li><li>美容師のソーシャルメディア</li></ul></li><li>欧米だと美容師は芸術家的に個人活動<ul><li>日本だとサロン</li></ul></li><li>美容師が才能を発揮できるようなサイト<ul><li>活躍のアピール</li><li>一般の人たちもそれらに反応</li></ul></li><li>Joomla の CMSを使って運営してる<ul><li>他の業界とのコラボレーションとかやっていきたい</li></ul></li></ul><h2>Scratchでつなぐオープンな学び</h2><ul><li>Openな学び</li><li>Scratch<ul><li>8 &#8211; 12歳向けのMITが開発してるソフト</li><li>80万人ぐらいアクティブユーザー</li></ul></li><li>デモ</li></ul><h2>Interop Tokyoでのオープンなネットワークエンジニア育成</h2><ul><li>Interop<ul><li>ネットワークの国内最大のイベント</li><li>いろんな会社の機器を使ってネットワークを構築する</li><li>超ネット</li></ul></li><li>ShowNet<ul><li>STMプログラム</li><li>インターネット技術者を育てる</li></ul></li></ul><h1 style="margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; font-weight: bold; font-style: normal; font-size: 30px; line-height: 36px; font-family: inherit; color: #404040; padding: 0px; border: 0px initial initial;"><span
style="font-size: 24px; color: #000000; line-height: normal;">まとめ</span></h1><p>Web 標準の今、そして未来 by Tantek Çelik がとても面白かった。仕様を作っている側からの視点の話は結構貴重な貴重な気がした。</p><p>Mozilla飯よかった。</p><p>メモツール(セッションごとに別々のファイルで保存)</p><ul><li><a
href="http://www.inkcode.net/qute">Qute for PC/Mac</a></li><li><a
href="http://mouapp.com/">Mou</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://efcl.info/2012/0121/res2997/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>第３回ブラウザー勉強会 アウトラインメモ</title><link>http://efcl.info/2011/0820/res2954/</link> <comments>http://efcl.info/2011/0820/res2954/#comments</comments> <pubDate>Sat, 20 Aug 2011 13:20:03 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[イベント]]></category> <category><![CDATA[browser]]></category> <category><![CDATA[chrome]]></category> <category><![CDATA[Firefox]]></category> <category><![CDATA[javascript]]></category> <category><![CDATA[アウトライン]]></category> <category><![CDATA[勉強会]]></category><guid
isPermaLink="false">http://efcl.info/?p=2954</guid> <description><![CDATA[2011年8月20日開催された第３回ブラウザー勉強会に参加してきたので、その時のメモです。 TwittterのログはTogetter &#8211; 「第3回 ブラウザー勉強会(#BrowserWS)のまとめ」にまとまっ [...]]]></description> <content:encoded><![CDATA[<p>2011年8月20日開催された<a
href="http://bws.hebikuzure.com/">第３回ブラウザー勉強会</a>に参加してきたので、その時のメモです。</p><p>Twittterのログは<a
href="http://togetter.com/li/176968">Togetter &#8211; 「第3回 ブラウザー勉強会(#BrowserWS)のまとめ」</a>にまとまっています。</p><p><span
id="more-2954"></span></p><p><span
style="font-size: 18px; font-weight: bold;">第3回 ブラウザー勉強会</span></p><h2>午前の部 :コミュニティー セッション</h2><h3 id="kyo_agohttp:tech.kayac.comtestqunitcui">ショートセッション : kyo_ago  (http://tech.kayac.com/) 「Testで始まる物語（ストーリー） QUnit CUIの紹介」</h3><p>[<a
href="http://www.ustream.tv/recorded/16762261">Ustream</a>] [<a
href="http://jsrun.it/kyo_ago/browserws3">発表資料</a>]</p><h4 id="jqueryplugintest">jQuery Plugin testフレームワーク</h4><ul><li>非同期実行されるコードのテストが面倒</li><li>UIのテストが面倒</li></ul><p>テストコードは次の３つから構成される</p><ul><li>テスト前のHTML</li><li>テストするコード</li><li>テスト後のHTML</li></ul><p>コードにすると以下みたいな感じ。</p><pre><code>&lt;script type="dom/base" /&gt; &lt;script type="test/code" /&gt; &lt;script type="dom/comp" /&gt;</code></pre><ul><li>iframe内でこれを行うので、セレクタなどの心配が不要</li><li>自動的にdiffをとれる</li><li>複数端末上で分散実行</li><li>複数ブラウザでの比較</li><li>pluginのテストコードを生成</li></ul><hr
/><h3 id="usingwin32apiinsidechromeextensionbrowserws">ショートセッション : はせがわようすけ 「Using Win32 API inside Chrome Extension」</h3><p>[<a
href="http://www.ustream.tv/recorded/16762480">Ustream</a>] [<a
href="http://utf-8.jp/public/20110820/chrome.pptx">発表資料</a>]</p><p>Chrome Extensionの構成</p><ul><li>HTML + JavaScript</li><li>マニフェストとリソース</li></ul><h4 id="chromeextention">Chrome Extentionの制約を超える</h4><p>NPAPI DLL &#8211; プラグインを書くためのもの</p><ul><li>OSに依存する</li><li>Extension内にplugin DLL<ul><li>リモートHTMLから直接利用は無理</li></ul></li></ul><p>マニフェストにdllのロードパスを書くだけで読み込める。</p><ul><li>拡張の制約が超えられる</li><li>化石のようなもの</li></ul><h4 id="npwin32">NPWIN32</h4><p>何でも使える汎用DLL * JavaScriptから何でもできる</p><p>JavaScriptからネイティブコードを呼び出すことができる</p><ul><li>Windowsの方のalertを呼び出す</li><li>デスクトップ情報の取得</li></ul><p>NaCLとの違い * NaCLは OSネイティブの機能は呼び出せない。</p><hr
/><h3 id="normalianhttp:d.hatena.ne.jpwaritohutsu">ライトニング トーク : normalian さん (http://d.hatena.ne.jp/waritohutsu/)</h3><p>[<a
href="http://www.ustream.tv/recorded/16762671">Ustream</a>] [発表資料]</p><p>「ブラウザ戦国時代で考えるクロスブラウザなテスト方法（仮題）」</p><ul><li><p>ブラウザのバージョンアップ頻度が高くなった</p></li><li><p>ブラウザレンダリングの差異</p></li><li>JavaScriptのイベントハンドリングの差異</li><li>HTMl5の対応状況の差異</li></ul><h4 id="jquerymodernizr">jQuery &amp; Modernizr</h4><h4 id="jquery">jQuery</h4><ul><li>jQuery Core</li><li>jQuery Mobile</li><li>jQuery Template</li><li>jQuery Validate</li></ul><h5 id="modernizr">Modernizr</h5><ul><li>ブラウザのHTML5対応度合いの確認</li></ul><p>jQuery UIとjQuery Mobileはソースコードは一部流用されている。 混ぜると危険。</p><hr
/><p><span
style="font-size: 14px; font-weight: bold;">モバイルブラウザのタブの傾向と対策 -Androidスマフォを主に- saneyuki_s</span></p><p>[<a
href="http://www.ustream.tv/recorded/16762887">Ustream</a>] [<a
href="http://www.slideshare.net/saneyuki/ss-8930380">発表資料</a>]</p><ul><li><p><a
title="モバイルブラウザのタブの傾向まとめ" href="http://www.slideshare.net/saneyuki/ss-8930380">モバイルブラウザのタブの傾向まとめ</a> <strong>スマートフォンブラウザの「タブ」の様式にデファクトがない</strong></p></li><li><p>ウィンドウ式</p></li></ul><ul><li><p>メニューからウィンドウを出して切り替える</p></li><li>画面下部に表示<ul><li>Opera</li><li>Sleipnir Mobile</li><li>サムネイル付きが多くてわかりやすい</li></ul></li><li>画面上部に表示<ul><li>Dolphine Browser</li><li>タブレットでは一般的</li></ul></li><li>FIrefox Mobile式<ul><li>サイドに格納する</li></ul></li></ul><p><strong>番外</strong></p><p>* IE9 Mobile &#8211; タスクスイッチャーと連動<br
/>* Sleipnir Mobile &#8211; タブグループ機能 -  面倒くさい工程</p><h4>まとめ</h4><p>様式は落ち着かないだろう。</p><hr
/><h3 id="googlechrome:hebikuzure">Google Chromeはエンタープライズの夢をみるか : Hebikuzure</h3><p>[<a
href="http://www.ustream.tv/recorded/16763031">Ustream</a>] [<a
href="http://www.slideshare.net/hebikuzure/chrome-gpo-availability">発表資料</a>]</p><ul><li>ユーザ権限でインストールできる</li><li>勝手にアップデートできる</li><li>Google Chrome Frame</li></ul><p>管理者が投げ捨てる可能性</p><h4 id="chrome">Chrome にはグループポリシー機能がある</h4><p>(Windows版について) <strong><a
href="http://www.chromium.org/administrators">Documentation for Administrators &#8211; The Chromium Projects</a></strong></p><p>Chromum Projectの方に書かれてる</p><ul><li>HTTP認証の動作</li><li>コンテンツの設定</li><li>検索プロバイダ</li><li>パスワードマネージャー</li><li>プロキシ</li><li>ホームページ</li><li>拡張機能</li><li>スタートアップページ</li><li>Google Chrome Frameの動作(無効にできる)</li><li>Google Updateの動作<ul><li>Google製品の個別で自動アップデートの有無</li></ul></li><li>Google Installerによるソフトウェアのインストールの設定</li></ul><p>&nbsp;</p><p>Chromeのmsiインストーラーもある(?msi=trueでダウンロード)</p><ul><li>Active Directorで配布できる</li><li>特定のバージョン縛りができる</li></ul><p>グループポリシーのテンプレート(ADM,ADMX)が配布されているので、グループポリシーの追加ができる。<br
/>PolicyDefinitionsというフォルダーにコピーする事で入れることでも読み込める</p><h4 id="qa">Q&amp;A</h4><ul><li>セキュリティアップデートも無効にできる</li></ul><h2 id="web">午後の部 : テーマ セッション 「ブラウザーと Web が描く『夢』」</h2><h3 id="mozillajapanopennessinnovationandopportunity">加藤 誠さん (Mozilla Japan) 「Openness, Innovation, and Opportunity」</h3><p>[<a
href="http://www.ustream.tv/recorded/16764957">Ustream</a>] [<a
href="http://www.slideshare.net/djraven/openness-innovation-and-opptunity">発表資料</a>]</p><p>Mozillaのミッション「Openness, Innovation, and Opportunity」</p><p>非営利法人が扱えるお金が制限されているので、Mozilla Corporationという株式会社ができた。</p><p><strong>Mozilla Labsをメインに</strong></p><ul><li>実装だけではなくて、モックなどでもあり</li><li>RUST 言語</li><li><p>将来のFirefoxで取り入れられることも</p><ul><li>FIrefox Syncなど</li></ul></li><li>UI/UX</li><li>WEB API</li></ul><p>などがLabの範囲</p><h4 id="designchallenge">Design Challenge</h4><ul><li>特定のテーマでデザインやモックでアイデアを募る</li><li>アイデア(デザイン)の発表する場所</li><li>実装ではなく、あくまでもアイデア</li></ul><h4 id="testpilot">Test Pilot</h4><ul><li>ユーザーのブラウザ利用データーを取得して解析<ul><li>収集用のアドオン</li><li>結果を公開</li></ul></li><li>データが偏る傾向があるため、偏りを取る手法を使う</li><li>ユーザーのクリックするホットスポット調査とか</li></ul><p>&nbsp;</p><h4 id="prospector">Prospector</h4><ul><li>ユーザーが目的のサイトにたどり着くためのUXの模索</li><li>Prospectorは実装ありきのアイデア</li></ul><p><strong>Firefox SHARE / F1</strong></p><p>ソーシャルネットワークとの結合</p><h4 id="qa">Q&amp;A</h4><p>アップデートスピードが早くなったのはなんで? * Webの流れが早くなってる</p><p>UI/UXのアプローチ</p><ul><li>目線の移動がおかしいとか</li><li>公開された議論してるので、おかしいとクレームがくる</li></ul><p>検索バーとURLバーの統合について</p><ul><li>一応Firefoxとしてもそういう議論がある</li><li>ユーザーからのフィードバック次第になる。</li></ul><h3 id="danieldavisoperajapanhtml5">Daniel Davis さん (Opera Japan) 「ブラウザの未来：HTML5の先には？」</h3><p>[<a
href="http://www.ustream.tv/recorded/16765907">Ustream</a>] [発表資料]</p><p>1899年に書かれた未来2000年について。</p><p>未来的なものを想像しても、洋服や建物が変化していない。</p><h4 id="morethanhtml5">More than HTML5</h4><p><strong>Device APIs</strong></p><ul><li>まだまだカメラでデータ取得は先だけど 。</li><li>Web APIとARを連動してやるなど(Tweetの取得など)</li></ul><p>逆にカメラにブラウザが乗ることもあり得る</p><h4 id="morelikeaplatform">More like a platform</h4><p>Web on TV * ブラウザが載ってるTVも増えている * ブラウザはWebを見るためではなく、Appとして利用されてる * 多くのメーカーはSVGでUIを使ってる(レンダリングエンジンがブラウザ)</p><ul><li>TVのUI(user input = リモコン)は最悪<ul><li>これが改善されないとWeb on TVが流行らないかも</li><li>ジャイロリモコン</li><li>キーボードタイプ</li></ul></li></ul><p>ブラウザの進化</p><ul><li>ブラウザによりUIが静的から動的に</li><li>動的からインタラクティブへ<ul><li>ペーパーレス = 静的なものがまだ多い =&gt; マルチメディア</li></ul></li></ul><p>履歴書の事例 * 履歴書に動画を入れる * マルチメディアをもっと普通のドキュメントに使う</p><p>再生だけではなく、作成もブラウザで? * contenteditable * 今はまだ非力</p><h4>ネイティブよりウェブ?</h4><ul><li>JavaScriptは早く、パワフルになった</li><li>比較的に書きやすく勉強しやすい</li><li>100%オープン<ul><li>ひとつの会社などにコントロールされてない</li><li>未来的にそれはいいこと</li></ul></li></ul><h4>未来の予想は人によって違う</h4><ul><li>ウェブはひとつの団体にコントロールされないのが重要</li><li>コントロールされないウェブは未来も一緒に作る</li></ul><h4 id="qa">Q&amp;A</h4><p>ブラウザがいろいろなものに乗った場合、それぞれに対して最適なUIは異なるが、それを上手くやる工夫</p><ul><li>OSとブラウザは大きくは変わらない</li><li>ブラウザを一番下において、その上に何かをかぶせて作らせれば異なるものに対して拡張を作りやすい。</li></ul><h3 id="uxweb">春日井 良隆さん (日本マイクロソフト株式会社 UXエバンジェリスト) 「マイクロソフトにとってのWebって？」</h3><p>[<a
href="http://www.ustream.tv/recorded/16766640">Ustream</a>] [<a
href="http://www.slideshare.net/ykasugai/web-8931345">発表資料</a>]</p><p>MSとしてIE6のシェアを減らすのに取り組んでいる。 @mskkie の中の人 with ミゾグチさん</p><p>管理者キット9(IEAK 9) * カスタマイズしたIEをパッケージ化、配布、管理するためのツール<br
/>なんとか版IEというのはIEAKでパッケージ化したものを使ってる</p><p>The Internet Explorer 9 Blocker Toolkit<br
/>WindowsアップデートやMSアップデートを管理するツール</p><p>HTML5 Native to WIndows</p><ul><li>ウェブの技術をネイティブに持っていく</li><li>ウェブサイトをアプリケーションと同じように使う方向性</li></ul><p>タブレットPCは失敗した…</p><p>HTML5+JavaScriptでアプリケーションを作る。</p><p>MSは同じ表示をするという基本思念がある。</p><p>Windowsはカーナビ専用のOSがある。</p><p>Windows Phone はIE9ベースのブラウザ</p><p>MSと携帯会社である程度端末の取り決めがある</p><ul><li>ボタンは3つを付ける</li><li>性能についても取り決めがある</li><li>解像度は固定</li></ul><p>IE10は8-12週でリリースする。</p><p><strong>MSはブラウザ固有の機能は付けない方向</strong></p><p>IEの拡張性について</p><ul><li>IEはカスマイズは上げて行く方向ではない感じ</li><li>拡張を簡単に作る仕組みはまだ見検討</li></ul><p>IE7について</p><ul><li>IE7さんはわすられています。</li><li>まずはIE6からなくしていく。</li></ul><p>IDE, Expression について</p><ul><li>Expressionはdevよりの作り</li><li>デザインはDWの方がいいかも</li><li>ExpressionはそっけないVisual Studioな感じ</li></ul><ul><li>IE10は今年はでない</li><li>Windows 8 がタブレット</li></ul> ]]></content:encoded> <wfw:commentRss>http://efcl.info/2011/0820/res2954/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Re:ブラウザの最新情報を知るために、Web開発者が読んでおくべきブログ</title><link>http://efcl.info/2011/0624/res2917/</link> <comments>http://efcl.info/2011/0624/res2917/#comments</comments> <pubDate>Fri, 24 Jun 2011 08:25:49 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[Firefox]]></category> <category><![CDATA[まとめ]]></category> <category><![CDATA[blog]]></category> <category><![CDATA[browser]]></category> <category><![CDATA[chrome]]></category> <category><![CDATA[IE]]></category><guid
isPermaLink="false">http://efcl.info/?p=2917</guid> <description><![CDATA[ブラウザの最新情報を知るために、Web開発者が読んでおくべきブログの内容を更新した。 Hebikuzure’s Tech Memo Internet Explorer デベロッパーセンター Mozilla Flux Go [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://efcl.info/2011/0301/res2303/">ブラウザの最新情報を知るために、Web開発者が読んでおくべきブログ</a>の内容を更新した。</p><ul><li><a
href="http://hebikuzure.wordpress.com/">Hebikuzure’s Tech Memo</a></li><li><a
href="http://msdn.microsoft.com/ja-jp/ie/aa740469">Internet Explorer デベロッパーセンター</a></li><li><a
href="http://d.hatena.ne.jp/Rockridge/">Mozilla Flux</a></li><li><a
href="http://chromestory.com/">Google Chrome OS &amp; Chromebook Review Tips Themes How to Use Install and Learn</a></li></ul><p>などを追加して更新しました。</p><p>後、alice0775さんのブログの内容(というかスクリプト群)が<a
href="https://github.com/alice0775">alice0775&#8242;s Profile &#8211; GitHub</a>に移行していました。</p>]]></content:encoded> <wfw:commentRss>http://efcl.info/2011/0624/res2917/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>Console2でJetpack SDKを使う</title><link>http://efcl.info/2011/0518/res2753/</link> <comments>http://efcl.info/2011/0518/res2753/#comments</comments> <pubDate>Wed, 18 May 2011 13:36:12 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[Jetpack]]></category> <category><![CDATA[Console2]]></category> <category><![CDATA[Firefox]]></category><guid
isPermaLink="false">http://efcl.info/?p=2753</guid> <description><![CDATA[ConsoleのTabsでシェルにcmd+activateの実行をさせる Shell cmd.exe /k bin\activate Startup dir Jetpackのディレクトリ こうすれば、タブを開くだけでJe [...]]]></description> <content:encoded><![CDATA[<p>ConsoleのTabsでシェルにcmd+activateの実行をさせる</p><table
border="1" cellspacing="0" cellpadding="0" width="214" valign="top"><tbody><tr><td><p>Shell</p></td><td
width="146"><p>cmd.exe /k bin\activate</p></td></tr><tr><td><p>Startup dir</p></td><td
width="146"><p><span>Jetpack</span><span>のディレクトリ</span></p></td></tr></tbody></table><div
style="direction: ltr"><a
class="thickbox" href="http://efcl.info/wp-content/uploads/2011/05/clip_image001.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="clip_image001" border="0" alt="clip_image001" src="http://efcl.info/wp-content/uploads/2011/05/clip_image001_thumb.png" width="202" height="244" /></a></div><p>こうすれば、タブを開くだけでJetpackのコマンドが読み込まれて便利。</p><p><a
class="thickbox" href="http://efcl.info/wp-content/uploads/2011/05/clip_image002.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="clip_image002" border="0" alt="clip_image002" src="http://efcl.info/wp-content/uploads/2011/05/clip_image002_thumb.png" width="195" height="118" /></a></p><p>Shellにnyaosとかを使う方法はよく分からない。</p><ul><li><a
href="http://www.asukaze.net/etc/jetpack/install.html">インストール &#8211; Jetpack SDK &#8211; あすかぜ・ねっと</a></li></ul>]]></content:encoded> <wfw:commentRss>http://efcl.info/2011/0518/res2753/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>トラッキングパラメーターなど邪魔なものをURLが削除するGreasemonkey</title><link>http://efcl.info/2011/0405/res2488/</link> <comments>http://efcl.info/2011/0405/res2488/#comments</comments> <pubDate>Tue, 05 Apr 2011 10:17:15 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[Greasemonkey]]></category> <category><![CDATA[Firefox]]></category> <category><![CDATA[Firefox4]]></category> <category><![CDATA[javascript]]></category> <category><![CDATA[Scriptish]]></category><guid
isPermaLink="false">http://efcl.info/?p=2488</guid> <description><![CDATA[ParamCleanerというURLからutm_*など不要なパラメーターを除去するGreasemonkeyを書きました。すでに同じ目的のGreasemonkeyやアドオンなどがありますが、 UrlCleaner for  [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://userscripts.org/scripts/show/100611">ParamCleaner</a>というURLからutm_*など不要なパラメーターを除去するGreasemonkeyを書きました。<br
/>すでに同じ目的のGreasemonkeyやアドオンなどがありますが、</p><ul><li><a
href="http://userscripts.org/scripts/show/70851">UrlCleaner for Greasemonkey</a></li><li><a
href="http://sangoukan.xrea.jp/cgi-bin/tDiary/?date=20091118">FeedBurnerのトラッキングパラメータらしきものを削るGreasemonkey &#8211; ariyasacca(2009-11-18)</a></li><li><a
href="http://d.hatena.ne.jp/swdyh/20100323/1269305458">URLのトラッキング用パラメータを無視するFirefox拡張 Through utm_ &#8211; SWDYH</a></li></ul><p>history.replaceStateを使う事で他のものに比べて簡潔な処理でURLからトラッキングパラメーターなどを消せます。<br
/>またhistory.replaceStateを使ってるのでFirefox4以上向けで(一応Firefox3でも動くようにしてある)、Scriptish向けに最適化してあるので、できればScriptishで使った方がいいです(Greasemonkeyでも動きます)</p><ul><li><a
href="http://efcl.info/2011/0326/res2411/">GreasemonkeyからScriptishへ環境設定を移行する | Web scratch</a></li></ul><p><strong><a
href="https://developer.mozilla.org/en/DOM/window.history">history.replaceState(data, title [, url])</a>の使い方</strong></p><p>historyオブジェクトについては<a
href="http://webtech-walker.com/archive/2011/01/21123625.html">github</a>などで話題になったので知ってる人も多いと思いますが、pushStateはブラウザの履歴に新規エントリを追加するAPIで、replaceStateは現在のエントリを入れ替えるAPIです。<br
/>引数は<a
href="https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history#The_pushState%28%29.c2.a0method">pushState()</a>と同じで、</p><pre>history.replaceState(stateプロパティに入る値, 状態識別用のタイトル, &#91;現在の状態に対応するURL&#93;);</pre><p>という引数をとります。<br
/>第三引数を指定してSame OriginならURLバーの表示を書き換える事ができるので、以下のように実際に移動しなくても表示が書き換わります。</p><pre class="brush:javascript;">// http://example.com/ で実行
history.replaceState(null, "", "/hey");
// =&#62; http://example.com/hey とURLバーの表示が変わる</pre><ul><li><a
href="http://d.hatena.ne.jp/javascripter/20100404/1270411268">history.pushState、history.replaceState &#8211; 素人がプログラミングを勉強するブログ</a></li><li><a
href="https://dev.mozilla.jp/hacksmozillaorg/history-api-changes-in-firefox-4/">Firefox 4 での History API の変更 « Mozilla Developer Street (modest)</a></li></ul><p>これを使って、今回はトラッキングパラメーターが存在するURL(<a
href="http://wedata.net/databases/UrlCleaner/items">アイテム &#8211; データベース: UrlCleaner &#8211; wedata</a>で管理)にアクセスしたとき、トラッキングパラメーターを除去したURLへhistory.replaceStateを使って書き換えているので他のGreasemonkeyのようなリロードがなかったり、アドオンのように通信を監視する手間が省けます。(以前同じ名前で<a
href="https://github.com/azu/ParamCleaner">アドオン</a>を作ってたけど重すぎた)</p><p><a
href="http://userscripts.org/scripts/show/70851">UrlCleaner</a>と同じWedataで管理されたものを勝手に使ってるので、処理自体は互換性があるようにしています(一部拡張してるけど) 気になったものがあったらSITEINFOを書いて、<a
href="http://wedata.net/databases/UrlCleaner/items">UrlCleaner &#8211; wedata</a>に登録するとよいです。</p><dl><dt><strong>ParamCleaner for Greasemonkeyi</strong></dt><dd><a
title="ParamCleaner for Greasemonkey" href="http://userscripts.org/scripts/show/100611">http://userscripts.org/scripts/show/100611</a></dd></dl>]]></content:encoded> <wfw:commentRss>http://efcl.info/2011/0405/res2488/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>Adblock++がFirefox4で動かなかったのでランタイムを更新</title><link>http://efcl.info/2011/0404/res2482/</link> <comments>http://efcl.info/2011/0404/res2482/#comments</comments> <pubDate>Mon, 04 Apr 2011 01:15:52 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[アドオン]]></category> <category><![CDATA[AD]]></category> <category><![CDATA[Firefox]]></category> <category><![CDATA[Firefox4]]></category><guid
isPermaLink="false">http://efcl.info/?p=2482</guid> <description><![CDATA[C++で書かれたAdblock++アドオンを使用していましたが、Firefox4で上手く動いてなかった(リストに空になるとか)ので、原因は何だろと探してみたらビルド環境がVisual C++ 2010 Expressに変 [...]]]></description> <content:encoded><![CDATA[<p>C++で書かれた<a
href="http://park2.wakwak.com/%7Ebenki/index.html">Adblock++</a>アドオンを使用していましたが、Firefox4で上手く動いてなかった(リストに空になるとか)ので、原因は何だろと探してみたらビルド環境が<a
href="http://park2.wakwak.com/~benki/201010.html" target="_blank">Visual C++ 2010 Express</a>に変わってたようです。</p><p>PCに入ってたランタイムは2008ぐらいのだったので、<a
href="http://www.microsoft.com/downloads/details.aspx?FamilyID=a7b7a05e-6de6-4d3a-a423-37bf0912db84&amp;displayLang=ja">Microsoft Visual C++ 2010 再頒布可能パッケージ</a>からランタイムをダウンロードし、インストールし直したら動作するようになりました。</p><p>ついでに広告配信先が変わって動かなくなってた<a
title="UstreamのFlash動画内広告を消す方法" href="http://efcl.info/2010/0723/res1841/">UstreamのFlash動画内広告を消す</a>方法もアップデートしました。</p><dl><dt><strong>BENKIi</strong></dt><dd><a
title="BENKI" href="http://park2.wakwak.com/%7Ebenki/index.html">http://park2.wakwak.com/~benki/index.html</a></dd></dl>]]></content:encoded> <wfw:commentRss>http://efcl.info/2011/0404/res2482/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>KeySnailプラグイン開発の方法とデバッグ</title><link>http://efcl.info/2011/0402/res2453/</link> <comments>http://efcl.info/2011/0402/res2453/#comments</comments> <pubDate>Sat, 02 Apr 2011 13:05:36 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[Firefox]]></category> <category><![CDATA[KeySnail]]></category> <category><![CDATA[Firebug]]></category> <category><![CDATA[javascript]]></category> <category><![CDATA[UI]]></category> <category><![CDATA[userChrome.js]]></category> <category><![CDATA[検索]]></category><guid
isPermaLink="false">http://efcl.info/?p=2453</guid> <description><![CDATA[KeySnailついて 自分はEmacsユーザーでもありませんが、KeyConfigの代わりにKeySnailを使い始めました。そもそもKeyConfigとは役割違うし、KeyConfigもFirefox4対応したので併 [...]]]></description> <content:encoded><![CDATA[<h4>KeySnailついて</h4><p>自分はEmacsユーザーでもありませんが、KeyConfigの代わりに<a
href="http://d.hatena.ne.jp/mooz/20090921/p1">KeySnail</a>を使い始めました。<br
/>そもそもKeyConfigとは役割違うし、<a
title="KeyConfig" href="http://mozilla.dorando.at/">KeyConfigもFirefox4対応</a>したので併用しています。<br
/><a
href="https://github.com/mooz/keysnail/wiki/keysnail-japanese">keysnail</a>はuserChrome.jsのキー特化みたいな存在で、便利なAPIがある環境みたいなとらえ方でもいいかもしれないです。(emacsのキーバインドは一切使わないで、まっさらな状態で始めました)</p><h4><span
id="more-2453"></span>KeySnailのプラグイン開発について</h4><p><a
href="https://github.com/azu/KeySnail-Plugins/tree/master/JSReference">JSReference</a>というMDN(<a
href="https://developer.mozilla.org/ja">MDC</a>)や<a
href="http://www2u.biglobe.ne.jp/%7Eoz-07ams/prog/ecma262r3/">ECMA-262 3rd Edition</a>をKeySnailのプロンプトから検索できるプラグインを書いたので、これに沿って説明していきます。</p><p><iframe
title="YouTube video player" src="http://www.youtube.com/embed/8-qRFqdtgz4" frameborder="0" height="510" width="640"></iframe></p><p>こんな感じの動作するやつです。(フルスクリーンで見た方がいい)<br
/>端的に言えば<a
href="http://subtech.g.hatena.ne.jp/cho45/20100901/1283268146">Chemr-js</a>みたいな感じでインデックスをキャッシュしてリファレンスを検索するものです。</p><p><strong>KeySnailのプラグイン開発の情報元</strong></p><ul><li><a
href="https://github.com/mooz/keysnail/wiki/_pages">KeySnailのgithub wiki</a></li><li>作者ブログ<ul><li><a
href="http://d.hatena.ne.jp/mooz/">mooz deceives you</a></li><li><a
href="http://keysnail.g.hatena.ne.jp/mooz/">きすねた(ん) &#8211; keysnailグループ</a></li></ul></li><li><a
href="http://keysnail.g.hatena.ne.jp/">keysnailグループ</a>(はてなグループ)</li><li><a
href="http://b.hatena.ne.jp/t/keysnail?sort=eid">タグ「keysnail」を含む新着エントリー &#8211; はてなブックマーク</a></li><li>KeySnailのソースコード(<a
href="https://github.com/mooz/keysnail/tree/master/content">content at master from mooz/keysnail &#8211; GitHub</a>)</li></ul><p>KeySnailのプラグイン開発についての情報はドキュメントが不足(分散)している印象を受けるため、<a
href="https://github.com/mooz/keysnail/wiki">wiki</a>に情報を反映させたり(github wiki使いにくいのでもっと他のがあるといいのだけど)、ブログなど開発手順を記したりすると他の人のためにもなると思います。</p><h4>メタデータ</h4><p>まずKeySnailにはドキュメントも表示できる優秀なプラグインマネージャーとGUIでも追加したコマンドなどの管理ができる(<a
href="https://github.com/mooz/keysnail/wiki/Customizing-%28Japanese%29">.keysnail.js</a>を直接いじるのも可能)ため、プラグインを作った時にはメタデータが結構重要です。</p><div
id="attachment_2455" class="wp-caption alignnone" style="width: 310px"><a
href="http://efcl.info/wp-content/uploads/2011/03/cacc8d20980b1ae5f38e41eabfbb4bcb.png"><img
class="size-medium wp-image-2455" title="2011-03-31-plugin-ss1" src="http://efcl.info/wp-content/uploads/2011/03/cacc8d20980b1ae5f38e41eabfbb4bcb-300x204.png" alt="" width="300" height="204" /></a><p
class="wp-caption-text">プラグインマネージャー</p></div><div
id="attachment_2456" class="wp-caption alignnone" style="width: 310px"><a
href="http://efcl.info/wp-content/uploads/2011/03/2011-03-31-ss2.png"><img
class="size-medium wp-image-2456" title="2011-03-31-ss2" src="http://efcl.info/wp-content/uploads/2011/03/2011-03-31-ss2-300x262.png" alt="" width="300" height="262" /></a><p
class="wp-caption-text">GUIで管理できるキーマネージャー</p></div><p>プラグインはJavaScript(拡張子は .ks.js)で書きますが、プラグイン内部に<a
href="https://developer.mozilla.org/ja/E4X">E4X</a>を利用してメタ情報を含めることができます。(是非入れて)<br
/>メタ情報の書式は<a
href="https://github.com/mooz/keysnail/wiki/writing-plugins-japanese"></a><a
href="https://github.com/mooz/keysnail/wiki/Writing-Plugins-%28Japanese%29">Writing Plugins (Japanese)</a>に詳細に書いてあるので、これと他の<a
href="https://github.com/mooz/keysnail/wiki/Plugin">Plugin</a>をまねるのが早いです。E4Xで書くのでプラグインの詳細な情報を入れるdetail内には簡単なWiki記法を使ってプラグインの詳細を書くことができます。</p><pre>&#60;detail lang="ja"&#62;&#60;!&#91;CDATA&#91;
複数行のヒアドキュメント
のような書き方ができる。
簡単なWikiみたいな記法も使える

見出し:
    - == heading1 == で第一見出し(h1)
    - === heading2 === で第二見出し(h2)
    - ==== heading3 ==== で第三見出し(h3)
整形式テキスト:
    &#62;|| と ||&#60; で囲むと整形式テキスト(pre)になります。
    コードなどを書きたい場合に使用できるでしょう。
など
 &#93;&#93;&#62;&#60;/detail&#62;</pre><p>自分の書いた<a
href="https://github.com/azu/KeySnail-Plugins/tree/master/JSReference">JSReference</a>では以下のようなメタ情報を書きました。</p><pre>var PLUGIN_INFO =
        &#60;KeySnailPlugin&#62;
            &#60;name&#62;JsReferrence&#60;/name&#62;
            &#60;description&#62;JavaScriptリファレンスを引く&#60;/description&#62;
            &#60;updateURL&#62;https://github.com/azu/KeySnail-Plugins/raw/master/JSReference/js-referrence.ks.js&#60;/updateURL&#62;
            &#60;iconURL&#62;https://github.com/azu/KeySnail-Plugins/raw/master/JSReference/MyIcon.png&#60;/iconURL&#62;
            &#60;version&#62;0.0.1&#60;/version&#62;
            &#60;author mail="info@efcl.info" homepage="http://efcl.info/"&#62;azu&#60;/author&#62;
            &#60;license&#62;The MIT License&#60;/license&#62;
            &#60;provides&#62;
                &#60;ext&#62;JsReferrence-open-prompt&#60;/ext&#62;
                &#60;ext&#62;JsReferrence-reIndex&#60;/ext&#62;
            &#60;/provides&#62;
            &#60;detail&#62;&#60;!&#91;CDATA&#91;&#93;&#93;&#62;&#60;/detail&#62;
            &#60;detail lang="ja"&#62;&#60;!&#91;CDATA&#91;
            === 使い方 ===
            ....略.....
            &#93;&#93;&#62;&#60;/detail&#62;
        &#60;/KeySnailPlugin&#62;;</pre><p>それぞれの属性については<a
href="https://github.com/mooz/keysnail/wiki/writing-plugins-japanese"></a><a
href="https://github.com/mooz/keysnail/wiki/Writing-Plugins-%28Japanese%29">Writing Plugins (Japanese)</a>を見ればいいので飛ばしますが、E4Xを利用しているのでプラグイン内部からこれらのメタデータを利用する事もできます。<br
/>たとえば、プラグイン内部からname(JsReferrence)を取得したいと思ったら、</p><pre class="brush:javascript;">var name = PLUGIN_INFO.name.toString();// JsReferrence</pre><p>という風に参照することができます。詳しいE4Xのプロパティやメソッドについては<a
href="http://rephrase.net/days/07/06/e4x">rephrase § E4X</a>が詳しいです。<br
/>E4X自体については以下にリンクをいろいろまとめてあります。</p><ul><li><a
href="../adiary/E4X%E3%81%A8DOM">E4XとDOM &#8211; prog*sig</a></li></ul><p>以上でメタデータについては終わりですが、アップデートURLやアイコンURLなども指定できてとてもいい感じにできてると思います。</p><h4>デバッグ方法</h4><p>自分のデバッグ方法を書きますがもっと効率のいい方法があったらお知らせくださいな。<br
/>まずKeySnailにはいくつかのデバッグ<del>関係</del>に使えそうなのAPIがあります。</p><pre class="brush:javascript;">util.message("format", &#91;args...&#93;); // コンソールにログを出力
display.showPopup(title, msg, &#91;options&#93;);// Growlみたいな通知(Firefoxの通知のやつ)
display.prettyPrint(msg, &#91;options&#93;);// DOM内にポップアップで出力
display.notify(aMsg, aButtons, aIcon);// ページ上部に出てくるインストールButtonみたいな感じ</pre><p>display.prettyPrintは以下みたいなのが出ます。</p><div
id="attachment_2460" class="wp-caption alignnone" style="width: 310px"><a
href="http://efcl.info/wp-content/uploads/2011/03/2011-03-31-ss4.png"><img
class="size-medium wp-image-2460" title="2011-03-31-ss4" src="http://efcl.info/wp-content/uploads/2011/03/2011-03-31-ss4-300x102.png" alt="" width="300" height="102" /></a><p
class="wp-caption-text">display.prettyPrint</p></div><p>他のutil関係のAPIは<a
href="https://github.com/mooz/keysnail/wiki/util.js">util.js &#8211; GitHub</a>に載っています。(ただこれがkeysnail API全部ではなくてドキュメント化されてないものも含めて他にもたくさんあります)</p><p>これらの用意されてる出力形式はオブジェクトを渡すと[object Object]と表示されてしまうので、Firebugでオブジェクトの中身を見られる関数を.keysnail.js(or _keysnail.js)に書き足してデバッグに使っていました。</p><pre class="brush:javascript;">// PRESERVE エリア内に
// firebugでオブジェクトをインスペクト
function fbug(x) {
    var args = Array.slice(arguments);
    var windowManager = Components.classes&#91;'@mozilla.org/appshell/window-mediator;1'&#93;
                        .getService(Components.interfaces.nsIWindowMediator);
    var {Firebug} = windowManager.getMostRecentWindow("navigator:browser");
    if (Firebug.Console.isEnabled() &amp;&amp; Firebug.toggleBar(true, 'console')) {
        Firebug.Console.logFormatted(args);
    }
    return args.length &#62; 1 ? args : args&#91;0&#93;;
}</pre><p>上を書き足したら、プラグイン内でfbugというメソッドが使えるようになります。<br
/>fbugに適当な値を渡すとFirebugでそれを開いて表示してくれます。(要はconsole.logみたいなもの)<br
/>この関数は<a
href="https://addons.mozilla.org/ja/firefox/addon/xqjs/">xqjs</a>から拝借しています。<a
href="https://addons.mozilla.org/ja/firefox/addon/xqjs/">xqjs</a>はとても便利なJavaScript実行コンソールなので是非使うといいです。</p><p>注意としてマルチバイトの文字列を渡すと文字化けするので、<a
href="https://github.com/mooz/keysnail/wiki/writing-plugins-japanese"></a><a
href="https://github.com/mooz/keysnail/wiki/Writing-Plugins-%28Japanese%29">Writing Plugins (Japanese)</a>にも書いてありましたが、そのときはL() と M()を使いましょう。</p><h4>プラグインのリロードについて</h4><p>プラグインのインストールは.ks.jsファイルへのリンク上で右クリックかプラグインマネージャーから行う事ができます。<br
/>プラグイン開発しているときはkeysnailのプラグインディレクトリ(プロファイル/keysnail/plugin)に.ks.jsファイルを置いて開発すると思います。変更を反映させるとき、毎回プラグインマネージャーから&#8221;プラグインのリロード&#8221;をするのは面倒なので、以下のようなものを.keysnail.jsに書き込んで使ってます。</p><pre class="brush:javascript;">// PRESERVE エリアの外に
key.setViewKey(&#91;'ESC', 'ESC'&#93;, function (ev) {
    userscript.loadPlugins();
}, 'プラグインのリロード');</pre><p>これでESCを2回押したらプラグインのリロードするようになるため、プラグインを書き換えて実行→確認がすぐにできるようになります。(ページのリロードすらいらない)</p><h4>プラグインのAPI</h4><p>プラグイン内でthisを見ると、プラグインから使える関数などが見えてくるかも知れません。</p><div
id="attachment_2464" class="wp-caption alignnone" style="width: 310px"><a
href="http://efcl.info/wp-content/uploads/2011/04/2011-04-02-ss2.png"><img
class="size-medium wp-image-2464" title="2011-04-02-ss2" src="http://efcl.info/wp-content/uploads/2011/04/2011-04-02-ss2-300x181.png" alt="" width="300" height="181" /></a><br
/><p
class="wp-caption-text">fbug(this) -thisをFirebugで見る</p></div><p>KeySnail 1.8.5からはundersocre.jsを使えるようになっています。</p><ul><li><a
href="http://keysnail.g.hatena.ne.jp/mooz/20110321/1300729753">KeySnail 1.8.5 &#8211; 相対パス指定, underscore.js, 補完強化 &#8211; きすねた(ん) &#8211; keysnailグループ</a></li></ul><p>また、プラグイン内でグローバル空間(this)を拡張しても<a
href="http://twitter.com/stillpedant/statuses/52977248042627072">問題ない</a>そうです。<br
/>今回、KeySnailプラグイン書くために使ったAPIはJSONでデータの読み書きをするpersist.preserve(aObj, aName) , persist.restore(aName) と 渡した配列から絞り込み検索UIを簡単に使えるprompt.selectorです。<br
/>特にprompt.selectorは便利なので、これのためにKeysnailを使うのもありです。(はてなブックマーク検索ができる<a
href="https://github.com/mooz/keysnail/raw/master/plugins/hateb-keysnail-collabo.ks.js">Hatebnail</a>とかがすごく便利)</p><p>それぞれのAPIの使い方は以下を参考にしました。</p><ul><li><a
href="http://keysnail.g.hatena.ne.jp/mooz/20100220/1267328272">食堂はじめました &#8211; きすねた(ん) &#8211; keysnailグループ</a></li><li><a
href="http://d.hatena.ne.jp/mooz/20091004/p1">prompt.selector を使おう　～はてなブックマーク拡張と KeySnail の連携～ &#8211; mooz deceives you</a></li></ul><p>注意点としてpersist.preserveに渡すオブジェクトは特にシリアライズしないでそのままオブジェクトを渡せばいいようです。また、prompt.selectorのflagsでHIDDEN IGNORE, ICON以外に数値で指定されている場合がありますが、内部でそれぞれ対応する数値が割り当てされているので、直接数値で指定しても大丈夫なようです。</p><ul><li><a
href="https://github.com/mooz/keysnail/blob/master/content/modules/prompt.js#L9">content/modules/prompt.js at master from mooz/keysnail &#8211; GitHub</a></li></ul><p>他にもいろいろ使えるAPIがありますが、Github wikiの方に適当にまとめておいたのでそこら辺を参照するといいです。</p><blockquote
title="Writing Plugins (Japanese) - GitHub" cite="https://github.com/mooz/keysnail/wiki/Writing-Plugins-(Japanese)"><p>プラグイン開発の参考リンク</p><p><cite><a
href="https://github.com/mooz/keysnail/wiki/Writing-Plugins-(Japanese)" target="_blank">Writing Plugins (Japanese) &#8211; GitHub</a></cite></p></blockquote><p>以上でKeySnailのプラグイン開発については終わりです。<br
/>是非、引っかかった点や参考にしたものなどは文章化してください。これは別にKeySnailに限ったことではありませんが、文章化されていないコードは非実在コードになりがちなため、文章やドキュメントにすることは大切だと思います。</p><dl><dt><strong>azu/KeySnail-Plugins &#8211; GitHubi</strong></dt><dd><a
title="azu/KeySnail-Plugins - GitHub" href="https://github.com/azu/KeySnail-Plugins">https://github.com/azu/KeySnail-Plugins</a></dd></dl><dl><dt><strong>KeySnaili</strong></dt><dd><a
title="KeySnail" href="https://github.com/mooz/keysnail/wiki">https://github.com/mooz/keysnail/wiki</a></dd></dl>]]></content:encoded> <wfw:commentRss>http://efcl.info/2011/0402/res2453/feed/</wfw:commentRss> <slash:comments>1</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 5/15 queries in 0.030 seconds using disk: basic
Object Caching 773/800 objects using disk: basic

Served from: efcl.info @ 2012-05-23 10:30:20 -->
