<?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/tag/javascript/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>テストで学ぶJavaScriptについて</title><link>http://efcl.info/2012/0414/res3059/</link> <comments>http://efcl.info/2012/0414/res3059/#comments</comments> <pubDate>Sat, 14 Apr 2012 14:38:26 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[javascript]]></category> <category><![CDATA[test]]></category><guid
isPermaLink="false">http://efcl.info/?p=3059</guid> <description><![CDATA[A Test-Driven JS Assessment というテストを通るようなコードを書いて、JavaScriptを学ぶものが公開されていたので、それの紹介です。JS Assessmentは最初に失敗するテストが用意さ [...]]]></description> <content:encoded><![CDATA[<p><a
href="https://github.com/rmurphey/js-assessment">A Test-Driven JS Assessment</a> というテストを通るようなコードを書いて、JavaScriptを学ぶものが公開されていたので、それの紹介です。<br
/><a
href="https://github.com/rmurphey/js-assessment">JS Assessment</a>は最初に失敗するテストが用意されていて、そのテストコードを通るような関数などを書いていってJavaScriptの力試し、学習をするものです。</p><p>簡単にやり方を書くと、Node環境を用意した状態で</p><p><code>git clone https://github.com/rmurphey/js-assessment.git</code>などで、リポジトリをダウンロードして、<br
/>ダウンロードしたディレクトリ内で、 nodeを使って以下のようコマンドを実行してテストが実行できるローカルサーバを立ち上げます。</p><pre><code>npm install
node bin/serve</code></pre><p>実行した状態で <a
href="http://localhost:4444">http://localhost:4444</a> というURLに行けば、Mochaで書かれたテストが走った結果が表示されます。</p><p>テストを通るコードの書き方は、node bin/serve を実行した時に表示されますが、</p><pre>To work on the tests, open a browser and visit http://localhost:4444. Then,
edit the tests in the files in the tests/app directory, reloading your browser
to see whether the tests are passing.

Each test will look something like this:

    it("you should be able to return a truthy value", function() {
      // define a function for fn so that the following will pass
      expect(fn()).to.be.ok();
    });

In the case of the above test, you'd need to define a value for fn (by default,
fn is a function that does nothing):

    it("you should be able to return a truthy value", function() {
      // define a function for fn so that the following will pass
      fn = function() {
        return true;
      };
      expect(fn()).to.be.ok();
    });

For some tests, the instructions will be more involved; in those cases, the
inline comments should give you the details you need.</pre><p>と書かれているように、tests/appにあるコードを編集して、それぞれのitの中にテストケースを通るような関数を定義したりして、<br
/> <a
href="http://localhost:4444">http://localhost:4444</a>にアクセスして全てのテストが通るようにするのが目的です。</p><p>e.g) <a
href="https://github.com/azu/js-assessment/commit/c955516d4a66de510585e50f7811253363422e8a">solve Arrays Test · c955516 · azu/js-assessment</a></p><p><img
title="arrays.js - js-assessment - [~_workspace_js_js-assessment].png" src="http://efcl.info/wp-content/uploads/2012/04/arrays.js-js-assessment-_workspace_js_js-assessment.png" border="0" alt="Arrays js  js assessment   ~ workspace js js assessment" width="600" height="400" /></p><p>テストコードはNodeで動くテストフレームワークの<a
href="http://visionmedia.github.com/mocha/">Mocha</a>を使って書かれています。<br
/>expectで期待してる動作は結構そのまま分かる感じなので、itのテスト文とあわせれば、大体期待してる挙動はわかるとは思いますが、<br
/><a
href="http://visionmedia.github.com/mocha/">Mocha</a>自体の挙動も少し知っておいたほうがいい場合もあります。</p><ul><li><a
href="http://blog.livedoor.jp/ryu22e/archives/65636256.html">ryu22eBlog : Node.jsのテスティングフレームワーク「Mocha」（前編）</a></li></ul><p>用意されてるテストはArrayの機能のテストやBackboneを使ったViewのテスト、非同期のテスト等が入っています。</p><p>これで、<a
href="https://github.com/rmurphey/js-assessment">A Test-Driven JS Assessment</a>の紹介は終わりですが、これ見た時に<a
href="http://el.jibun.atmarkit.co.jp/rails/2011/01/koan-3c38.html">禅の公案（Koan）</a>に何か似てるなとか思った。<br
/>JavaScriptでは</p><ul><li><a
href="https://github.com/liammclennan/JavaScript-Koans">liammclennan/JavaScript-Koans</a> ( <a
href="http://code.google.com/p/javascript-koans/">javascript-koans &#8211; Javascript learning tool. &#8211; Google Project Hosting</a> )</li><li><a
href="http://d.hatena.ne.jp/ninoseki/20111023/1319369396">禅の公安スタイルでCoffeeScriptを学ぶ「coffeescript-koans」 &#8211; にのせき日記</a></li></ul><p>あたりが知られてそうな気がします。(他にも色々あるみたいだけど <a
href="https://github.com/search?langOverride=&amp;q=Koans+Javascript&amp;repo=&amp;start_value=1&amp;type=Repositories&amp;utf8=%E2%9C%93">Search · Koans Javascript</a> ) <br
/>Koanとは以下のような穴埋め用のテストがかかれていて、そのテストを正しく書いてプログラミングを学べるものです。</p><pre><code lang="javasript">test("not", function() {
    not(__, 'what is a false value?');
});</code></pre><p>という穴埋め問題だったら</p><pre><code lang="javasript">test("not", function() {
    not(false, 'what is a false value?');
});</code></pre><p>のように、穴埋めするという感じのものです。</p><p>Koanと<a
href="https://github.com/rmurphey/js-assessment">JS Assessment</a>を比較すると、Koanは穴埋めという要素が強くてロジックなどは用意されてる感じになっています。<br
/>一方 、<a
href="https://github.com/rmurphey/js-assessment">A Test-Driven JS Assessment</a>はテストだけ書かれていて、ロジックなどを書いてそのテストを通るような関数を書くというものになっています。<br
/>似ているところもありますが、やりたいことは逆な感じなので、<a
href="https://github.com/rmurphey/js-assessment">A Test-Driven JS Assessment</a>の場合は人によって答えが全然違うという事もありえて、<br
/>実際のテストファーストなものを書くのに近い感じになっていそうです。</p><p>これを書きながら、JavaScriptを学ぶ時に、最初からテストと絡めて学習したほうが良い感じになるのかなということについて考えていました。<br
/>実際に新人教育とかでそういう事をしている<a
href="http://tech.kayac.com/">会社</a>さん等の成果とかを聞いてみたいですね。</p><ul><li> <a
href="http://rmurphey.com/blog/2012/04/12/a-baseline-for-front-end-developers/">A Baseline for Front-End Developers &#8211; Adventures in JavaScript Development</a></li><li><a
href="http://testfirst.org/">TestFirst.org &#8211; The Home of Test-First Teaching</a></li></ul>]]></content:encoded> <wfw:commentRss>http://efcl.info/2012/0414/res3059/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>ECMAScript勉強会 アウトラインメモ</title><link>http://efcl.info/2012/0407/res3047/</link> <comments>http://efcl.info/2012/0407/res3047/#comments</comments> <pubDate>Sat, 07 Apr 2012 12:57:38 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[javascript]]></category> <category><![CDATA[イベント]]></category> <category><![CDATA[ECMAScript]]></category><guid
isPermaLink="false">http://efcl.info/?p=3047</guid> <description><![CDATA[ECMAScript勉強会 に参加してきたのでその時のメモです。久々に結構難しい内容が多かった気がする。 ECMAScript勉強会 ECMAScript概要 &#8211; rika_t ECMAScript Stud [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://atnd.org/events/25793">ECMAScript勉強会</a> に参加してきたのでその時のメモです。<br
/>久々に結構難しい内容が多かった気がする。</p><h1 style="padding-top: 0.25em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: initial; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 23px; border-top-style: none; border-top-color: initial; margin: 0px;">ECMAScript勉強会</h1><h2 style="margin-top: 1.5em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 4px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 20px; border-top-style: solid; border-top-color: #e0e0e0;">ECMAScript概要 &#8211; rika_t</h2><p
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; padding: 0px;"><a
style="color: #4183c4; text-decoration: none; padding: 0px; margin: 0px;" title="ECMAScript Study #1 Overview" href="http://www.slideshare.net/agigigigi/ecmascript-study-1-overview">ECMAScript Study #1 Overview</a></p><hr
style="padding: 0px; margin: 0px; border: 1px solid #dddddd;" /><p
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; padding: 0px;">途中参加</p><hr
style="padding: 0px; margin: 0px; border: 1px solid #dddddd;" /><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">newがあるのはなぜ</h3><p
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; padding: 0px;">プリミティブな型もメソッドやプロパティを持てるようにしたいため、ラッパーでラップしてた。</p><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">globalオブジェクト</h3><p
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; padding: 0px;">globalオブジェクトは必ずしもwindowではない</p><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">オブジェクトとクラス</h3><p
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; padding: 0px;">内部的には[[Class]]というクラスという文字列がでてきてた。</p><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">ES6から内部的にClassというものがなくなってきてる。</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">リテラル記法やコンストラクタを使って様々なオブジェクトを表現してる</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;"><code
style="padding-top: 0px; padding-right: 0.2em; padding-bottom: 0px; padding-left: 0.2em; font: normal normal normal 12px/normal Monaco, 'Courier New', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; font-size: 12px; background-color: #f8f8ff; color: #444444; margin: 0px; border: 1px solid #dedede;">NativeBrand</code>という名前になってる</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">prototype</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">仕様書にのってるprototypeの図はわかりにくい</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">変数宣言</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">“var&#8221;キーワードの後にIdentifierを与える</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">opt = option としてInitiliser = “str&#8221;みたいに初期化も同時にできる</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">IdentifierName<ul
style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">IdentifierStart (変数名の最初に文字列) か初めて</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">IdentifierName IdentifierPart</li></ul></li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;"><strong
style="padding: 0px; margin: 0px;">let</strong> から始まる内容はここで定義してる内容をかかれてる(他を見なくてもいい)</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">変数宣言の処理</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">return (normal,empty,empty) normalは正常終了</li></ul><h2 style="margin-top: 1.5em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 4px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 20px; border-top-style: solid; border-top-color: #e0e0e0;">ES.next 追っかけ &#8211; teramako</h2><p
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; padding: 0px;"><a
style="color: #4183c4; text-decoration: none; padding: 0px; margin: 0px;" title="ES.next 追っかけ - ECMAScript 勉強会" href="http://teramako.github.com/doc/es6_study-20120407/index.html">ES.next 追っかけ &#8211; ECMAScript 勉強会</a></p><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">メーリングリストの購読</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">es-discussの購読</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">ES.nextに追うため見るメーリングリスト</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">流量が多い</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">構文抽出</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">wiki.ecmascript.org に最新版のドラフトがアップロードされる</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">更新内容は色分け表示されてる</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">ドラフト仕様から構文部分のみ抽出したものを作成</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">Mozillaの実装追いかけ</h3><p
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; padding: 0px;">＊SpiderMonkeyのHarmony実装をトラッキングするメタバグがある</p><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">構文解析</h3><p
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; padding: 0px;">JavaScriptがどうやって構文解析していくか</p><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">Reflect.parse()メソッド</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">結果をオブジェクトのツリーで返してくれる</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">reflect.jsmを読み込んでReflect.parseが利用できる</li></ul><h4 style="padding: 0px; margin: 0px; border: 0px initial initial;">iv/js</h4><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">ES.nextの実装をパースできるツール</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">http://constellation.github.com/iv/js/es.next.html</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">esprimaを使ったものも最近でてきた</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">http://esprima.org/demo/parse.html</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">quasiリテラル</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">ヒアドキュメント的に使えそう</li></ul><h2 style="margin-top: 1.5em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 4px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 20px; border-top-style: solid; border-top-color: #e0e0e0;">ES.next the corner case &#8211; Constellation</h2><p
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; padding: 0px;"><a
style="color: #4183c4; text-decoration: none; padding: 0px; margin: 0px;" title="ES.next the corner cases" href="http://constellation.github.com/slides/contents/20120407/presentation.html#slide1">ES.next the corner cases</a></p><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">esprima<ul
style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">コミッターやってる</li></ul></li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">ConstDeclarationの話</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">initializer必須</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">Blockスコープ</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">BNFだけでは判断できないで、semaniticsも見ないと行けないようになった *</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">block scope</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">staticに解析可能</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">ブロックスコープになったことで、ランタイムでないと判定できなかったのが、静的に解析が可能</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;"><p
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; padding: 0px;">そのため速度がかなりよくなった</p></li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;"><p
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; padding: 0px;">再代入はsyntax errorにする</p></li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;"><p
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; padding: 0px;">これもパース時に判断できるので、速度がよくなる</p><p
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; padding: 0px;">const V = 20; V = 30;// syntax error</p></li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;"><p
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; padding: 0px;">early errorに分類(run timeより前)</p></li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">egal operator</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">is</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">isnt</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">より値の同一性に重きをおいたequal</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">is/isnt はContextual Keyword</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">Statement先頭にくるキーワードはcontextual Keywordになる<ul
style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">ofとか</li></ul></li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">文脈依存のキーワードのような扱い方をされるということ</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">&lt;| operator トライアングル演算子</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">常にArrayを継承できる</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;"><code
style="padding-top: 0px; padding-right: 0.2em; padding-bottom: 0px; padding-left: 0.2em; font: normal normal normal 12px/normal Monaco, 'Courier New', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; font-size: 12px; background-color: #f8f8ff; color: #444444; margin: 0px; border: 1px solid #dedede;">&lt;|</code>の右はリテラルしか置けない</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">なぜリテラルのみ<ul
style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">JITとかに破壊的になってしまう</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">inline cacheが破壊されて、キャシュが機能しない</li></ul></li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">右側にfunctionリテラルときは挙動が変わる<ul
style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">継承っぽくなる</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">Base.prototypeを[[Prototype]]にもつObjectが生成されて、インスタンスのprototypeに設定される</li></ul></li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;"><a
style="color: #4183c4; text-decoration: none; padding: 0px; margin: 0px;" title="ECMAScript と OOP パラダイム、それに ES.next の議論中 OOP 周りのシンタックス - oogattaの勉強日記" href="http://d.hatena.ne.jp/oogatta/20111204/1322982897">ECMAScript と OOP パラダイム、それに ES.next の議論中 OOP 周りのシンタックス &#8211; oogattaの勉強日記</a></li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">ES.next Library Extension</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">String/Number/Function などに機能を増やす<ul
style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">repeat</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">startsWith</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">などの便利な関数</li></ul></li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">GlobalなものをNumberにいける<ul
style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">isFinite</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">parseInt などをNumberにも追加する</li></ul></li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">duplicateな変数purge機構</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">関数スコープのレキシカルスコープ内で変数宣言が被った時にsyntax errorになる</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">new Date(NaN)</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">ES.nextのnew Date(NaN).toString() Invalid Dateをかえすようになった</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">propertyの登場順</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">for-in , Object.keysなどの登場順が規定される</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">LHS</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">left hand side</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">今まで()でくくって中が式なら何でも入ってた</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">それがleft hand side expressionという部類のみになった</li></ul><blockquote
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0.6em; border-left-width: 5px; border-left-style: solid; border-left-color: #dddddd; color: #555555;"><p
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; padding: 0px;">(1,2,3) = 20;</p></blockquote><p
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; padding: 0px;">というのがSyntaxErrorになる(ES5はReferrenceErrorなった) またパース時に判断できる</p><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">ES.nextのバグ</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">draftにはバグある</li></ul><blockquote
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0.6em; border-left-width: 5px; border-left-style: solid; border-left-color: #dddddd; color: #555555;"><p
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; padding: 0px;">({responseText }) = res;</p></blockquote><p
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; padding: 0px;">そもそもオブジェクトリテラルの解釈</p><h2 style="margin-top: 1.5em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 4px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 20px; border-top-style: solid; border-top-color: #e0e0e0;">名前</h2><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">ES.next<ul
style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">バージョン番号がアレなので.nextという名前になってる</li></ul></li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;"><a
style="color: #4183c4; text-decoration: none; padding: 0px; margin: 0px;" title="strawman" href="http://wiki.ecmascript.org/doku.php?id=strawman:strawman&amp;amp;s=strawman">strawman</a>(ストローマン)<ul
style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">とりあえずな感じのバージョン</li></ul></li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">Harmony<ul
style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">いずれかのバージョンにはいるかも的なもの</li></ul></li></ul><p
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; padding: 0px;"><a
style="color: #4183c4; text-decoration: none; padding: 0px; margin: 0px;" title="A brief history of ECMAScript versions (including Harmony and ES.next)" href="http://www.2ality.com/2011/06/ecmascript.html">A brief history of ECMAScript versions (including Harmony and ES.next)</a></p><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">CoffeeScript</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">is/isnt みたいにセマンティックが同じなのに、挙動が違うことで論争が起きるのが怖い</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">=&gt; とかでも論争がおきてる</li></ul><h2 style="margin-top: 1.5em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 4px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 20px; border-top-style: solid; border-top-color: #e0e0e0;">ECMAScript読書会</h2><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">6章からが本番</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">Annexに定義などが入ってる</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">Annex C はStrict mode</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">D, Eが変更点修正点</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">4.概要</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;"><blockquote
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0.6em; border-left-width: 5px; border-left-style: solid; border-left-color: #dddddd; color: #555555;"><p
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; padding: 0px;">この仕様では外部データの入力や計算結果の出力に関する規定はありません</p></blockquote></li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">仕様外だが他にもオブジェクトがあるかもしれない事は考慮する(DOM)</li></ul><p
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; padding: 0px;">4.2.2 Strict mode</p><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">“ECMAScriptは、言語において使えるいくつかの機能の使い方を制限したいと考えているユーザがいる可能性があることを認識しています。”</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">標準のものに追加してエラー条件が定義される</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">実装中の注意<ul
style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">パース時にでるエラーと実行時エラー</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">パース時に出すエラーはパース時にstrict modeかどうかをみないといけない</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">関数の先頭にstringリテラルが連続してる　== ディレクティブ プロローグ という<ul
style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">この範囲にuse strictが入っていればstrict modeになる</li></ul></li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">ディレクティブ プロローグの最後に&#8221;use strict&#8221;;を書かれた場合などは、最初のほうのパースにもstrictを適応してエラーにする</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">関数の引数はどっち(中、外)のstrict modeなのか?<ul
style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">中のstrict modeが適応されるので、関数内がstrict modeなら、関数名にevalとかしてる時もエラーにするようにする(disccuss)</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">body,param,functionName 全部strict modeに適応範囲とする</li></ul></li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;"><a
style="color: #4183c4; text-decoration: none; padding: 0px; margin: 0px;" title="Does 'use strict' in a FunctionBody apply strict mode FutureReservedWord restrictions to function name or arguments?" href="https://mail.mozilla.org/pipermail/es5-discuss/2011-January/003904.html">Does ‘use strict’ in a FunctionBody apply strict mode FutureReservedWord restrictions to function name or arguments?</a></li></ul></li></ul><h1 style="padding-top: 0.25em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: initial; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 23px; border-top-style: none; border-top-color: initial; margin: 0px;"></h1><p>メモ: Mou + github.css</p>]]></content:encoded> <wfw:commentRss>http://efcl.info/2012/0407/res3047/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Shibuya.XSS アウトラインメモ</title><link>http://efcl.info/2012/0405/res3027/</link> <comments>http://efcl.info/2012/0405/res3027/#comments</comments> <pubDate>Thu, 05 Apr 2012 05:02:01 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[イベント]]></category> <category><![CDATA[javascript]]></category> <category><![CDATA[XSS]]></category> <category><![CDATA[セキュリティ]]></category><guid
isPermaLink="false">http://efcl.info/?p=3027</guid> <description><![CDATA[Shibuya.XSS テクニカルトーク#1 : ATND に参加してきたので、その時のメモ。 Shibuya.XSS Shibuya.XSSまとめ &#8211; Togetter DOM Based XSSの傾向と対 [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://atnd.org/events/25689">Shibuya.XSS テクニカルトーク#1 : ATND</a> に参加してきたので、その時のメモ。</p><h1 style="padding-top: 0.25em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: initial; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 23px; border-top-style: none; border-top-color: initial; margin: 0px;">Shibuya.XSS</h1><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;"><a
style="color: #4183c4; text-decoration: none; padding: 0px; margin: 0px;" title="Shibuya.XSSまとめ - Togetter" href="http://togetter.com/li/283573">Shibuya.XSSまとめ &#8211; Togetter</a></li></ul><h2 style="margin-top: 1.5em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 4px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 20px; border-top-style: solid; border-top-color: #e0e0e0;">DOM Based XSSの傾向と対策 &#8211; mala</h2><p
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; padding: 0px;"><a
style="color: #4183c4; text-decoration: none; padding: 0px; margin: 0px;" title="Shibuya.XSSで発表してきました - 金利0無利息キャッシング – キャッシングできます - subtech" href="http://subtech.g.hatena.ne.jp/mala/20120405/1333620763">Shibuya.XSSで発表してきました &#8211; 金利0無利息キャッシング – キャッシングできます &#8211; subtech</a></p><p
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; padding: 0px;">機械的なスキャンで見つけづらいXSS</p><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">location.hash経由で発火が多い、</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">サーバ側にアクセスログが残りづらい</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">ビーコンでlocation.hashを記録する事も可能だけど、実行順序で潰される事がある</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">location.hashでの問題</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">XHR2</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">どんな時に見つけにくい</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">パラメーターをパースして利用してる場合</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">ソースを読まないと見つけにくい。</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">難読化されてるとしんどい</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">レガシーコード</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">どうするのがいいのだろうか</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">バリデーション?</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">バリデーションが必要な状況</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">openにファイル名渡す -&gt; パイプでコマンド実行可能</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">ファイル開く関数とコマンド実行を分けて使うべき</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">役割に応じて「それだけを行うように」する</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">バリデーションが必要なライブラリ</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">直接使うときは安全に倒す</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">そもそも安全にすることを考える</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">外部リソース読み込めないようには無理</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">コーディング規約での対処</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">jQueryの場合</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">セレクタの使い方を徹底する</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">findを使って$関数の直接使用を避ける</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">$関数は汎用的すぎ</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">コーディング</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">XHRのリクエストは必ず絶対パス+動的パス</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">絶対パスが/のみだと突破できる</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">/api/的な感じに</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">問題点</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">HTML5等で今まで安全だったかもしれないものが崩壊して、可能な攻撃が増える</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">DOM XSS撲滅装置</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">location.hashにタグが会った場合は消す等</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">その文字列を使わないことが保証されてるなら割りと効果的</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">広告やブログパーツ等、自分で治せないもの等の緊急的</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">潜在的なXSS</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">パスワードを盗めるか?</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">ブラウザのパスワード自動入力機能でパスワードを盗める場合がある</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">セッション乗っ取り + パスワード盗み</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">パスワードの盗み方</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">自動でフィルインされた値を読み取る</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">自動的に盗むことが可能</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">自動フィルイン + クリックジャッキング -&gt; 半自動</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">フォームの宛先を攻撃サイトに誘導</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">事例</h3><blockquote
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0.6em; border-left-width: 5px; border-left-style: solid; border-left-color: #dddddd; color: #555555;"><p
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; padding: 0px;">?to=javascript:eval(location.hash)#攻撃コード</p></blockquote><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">ログイン後のリダイレクトのURL先でjavascript:を実行可能</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">対策</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">そのパスワードを入力するドメインをサブドメインで独立させる<ul
style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">ログイン機能だけを持ったサブドメインを作成する</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">他のjsを入れない、厳しめのルール</li></ul></li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">フェールセーフ設計</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">サンドボックス</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">パスワードを入力するページは外部jsを完全排除するとか</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">パスワード入力ページはそれ専用のサブドメインへ</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">ブラウザ側のリスク軽減</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">XSSフィルタ</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">パスワードの自動フィルイン対策</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">元々危険だったものが更に危険になる =&gt; 理解されないことが多い</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">攻撃パターン</h3><ol
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">iframeで埋め込む -&gt; サードパーティクッキー有効なら発動</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">短縮URL + replaceStateでURL偽装</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">ポップアップWIndowとサードパーティ</li></ol><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">ユーザー側の対策</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">NoScript</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">複雑なルールを設定しないと安全に利用できない</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">攻撃者が嫌う設定を使う<ul
style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">サードパーティクッキーオフ、ポップアップのブロク、リダイレクトの防止</li></ul></li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">初見のURLは全部シークレットモードで開くとか</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">まとめ</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">DOM Based XSSはたくさんある</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">XSSがあっても安全にすることを考える</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">焼肉、刺身</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">XSS発見者には肉か刺身をおごる慣例(*人徳が必要)</li></ul><h2 style="margin-top: 1.5em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 4px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 20px; border-top-style: solid; border-top-color: #e0e0e0;">x-autocompletetypeの実験 by はまちちゃんさん</h2><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">x-autocompletetypeのデモ</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">http://hamachiya.com/junk/x-autocompletetype.php</li></ul><h2 style="margin-top: 1.5em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 4px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 20px; border-top-style: solid; border-top-color: #e0e0e0;">サニタイズ言うぞキャンペーン &#8211; TAKESAKO</h2><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">mixiの新着検索ページでXSSで1件</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">いぬぼくxSS</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">7年前と少し違う状況</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">jQuery</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">XHR2</li></ul><p
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; padding: 0px;">サニタイズ的なものが必要になる場合がある。</p><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">kintone</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">ライブラリ除いて10万行ぐらい</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">社内勉強会</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">jQueryは甘え</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">Closure Templateのエスケープ機能について</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">サニタイズコンテント</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">JavaScriptでHTMLのパーサー的に書かれてる</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">問題を起こしそうな文字列などが定義されてる</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">Closure Template &#8211; Contextual Autoscape</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">JavaScriptエスケープとHTMLエスケープ等の区別をおこなってくれる</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">CSS、属性値等で異なるエスケープを行う</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">無毒化とかを文脈依存で対処される</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">http://d.hatena.ne.jp/teppeis/20120318/1332092081</li></ul><h2 style="margin-top: 1.5em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 4px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 20px; border-top-style: solid; border-top-color: #e0e0e0;">オフレコ &#8211; 春山</h2><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">ベンチャーから始めると、フローの把握ができてない所が存在する</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">そのフローの把握が重要</li></ul><h2 style="margin-top: 1.5em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 4px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 20px; border-top-style: solid; border-top-color: #e0e0e0;">JS Array Hijacking with MBCS &#8211; hasegawa</h2><p
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; padding: 0px;"><a
style="color: #4183c4; text-decoration: none; padding: 0px; margin: 0px;" title="Shibuya.XSS テクニカルトーク#1 開催しました。 - 葉っぱ日記" href="http://d.hatena.ne.jp/hasegawayosuke/20120405/p1">Shibuya.XSS テクニカルトーク#1 開催しました。 &#8211; 葉っぱ日記</a></p><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">Array形式のJSONをジャックする</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">Firefox 修正済み</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">UTF-8をShift-JISで解釈すると壊れた解釈をしてしまう問題</li></ul><p
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; padding: 0px;">Mozillaはポテンシャル的な脅威にも対処してくれる</p><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">Content-Typeとcharset をちゃんとつける</li></ul><h1 style="margin-top: 1.5em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 4px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 23px; border-top-style: solid; border-top-color: #aaaaaa;">LT</h1><h2 style="margin-top: 1.5em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 4px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 20px; border-top-style: solid; border-top-color: #e0e0e0;">mixi scrap Challenge</h2><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">学生向けのセキュリティイベント</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">用意したmixiクローンサイトに攻撃してもらって脆弱性を見つけてもらう</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">イベント用に使ったサイト</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">イベント用のmixiサイトをクローンしてXSSを探してもらう</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">日記ページにあるXSSを探して、スタッフアカウントに対して攻撃URLを送ってもらう<ul
style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">得点方式</li></ul></li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">問題</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">ネギ男に、イラクとnicknameがalertされるURLを踏ませて下さい</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">ネギ男に….</li></ul><p
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; padding: 0px;">みたいな問題形式</p><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">実際のサービスのクローンを舞台にして</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">盛り上がった</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">より実践的な体験をしてもらえた<ul
style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">XSSをみつけるだけではなくSNSの使用を考慮して実践的な内容になった</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">問題をつくやすかった</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">git-grep “XSS” revertで過去に対応してXSS問題から引き出す</li></ul></li></ul><h2 style="margin-top: 1.5em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 4px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 20px; border-top-style: solid; border-top-color: #e0e0e0;">AjaxアプリケーションのXSS対応入門 &#8211; 徳丸</h2><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">入門書にもAjax的な問題</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">X-Content-Type-Options: nosniff</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">JSONハイジャック</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">JSONを罠サイトからスクリプト要素を呼び出す</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">通常はただのデータなので、読み取りはできないはず…</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">JSONハイジャックで読み取りができてしまう =&gt; 既にブラウザは対策済み</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">Androidだとまだ発生する(4.0.3だと問題ない)</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">対策</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">ヘッダチェックが無難</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">あんまりいい方法がない</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">外部APIは基本的に信用しない</li></ul><h2 style="margin-top: 1.5em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 4px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 20px; border-top-style: solid; border-top-color: #e0e0e0;">CSS HTML Attribute Reader &#8211; kyo_ago</h2><p
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; padding: 0px;">The Sexy Assassinで紹介されてるCSS HTML Attribute Readerがどこまで危険か検証してみた http://bit.ly/HU74ad</p><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">CSS Attributeでパスワードの取得 -moz-anyと合わせ技</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">外部からCSS書けるということ自体が問題</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">:visited の履歴取得も最近のブラウザは対策されてる</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">ロングIPアドレス</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">ドット無しでドメインを書くことができる</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">ドットを無効化しても、数字だけでドメインを書く事ができるので問題が起こる場合があるかも</li></ul><h2 style="margin-top: 1.5em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 4px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 20px; border-top-style: solid; border-top-color: #e0e0e0;">セキュリティ小ネタ &#8211; send</h2><p
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; padding: 0px;">http://d.hatena.ne.jp/send/20120405/p1</p><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">rootkit</h3><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">rootやadminが使えなくなってた</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">対策<ul
style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">別の所からpsやkill等のバイナリを持ってきてきて殺してた</li></ul></li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">chattrされてた<ul
style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">細かい改ざんをやっていた</li></ul></li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">対策として改ざん検知などの導入で数ヶ月使った</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">よく狙われる脆弱性</h3><p
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; padding: 0px;">JSだとimg onerror</p><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">src属性指定後すぐ発火してしまう</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">ドキュメントに追加しなくても発火してしまってる(高速)</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">onerrorは除去しにくいので対策しにくい</li></ul><h2 style="margin-top: 1.5em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 4px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 20px; border-top-style: solid; border-top-color: #e0e0e0;">余談</h2><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">最初にサブドメイン以下にtest. やadmin.とかを見る</li><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">crossdomein.xml</li></ul><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">パスワード入力はやっぱり別ドメインに分けるべき</h3><h3 style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding: 0px; border: 0px initial initial;">DOS</h3><p
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; padding: 0px;">くよくよくよくよ</p><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"><li
style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding: 0px;">セキュリティを使うと守ると考えるは違う</li></ul><h1 style="padding-top: 0.25em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: initial; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 23px; border-top-style: none; border-top-color: initial; margin: 0px;"></h1><p>メモ : Mou + Github.css</p><ul
style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 2em; padding: 0px;"></ul>]]></content:encoded> <wfw:commentRss>http://efcl.info/2012/0405/res3027/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>カヤック社内勉強会でBusterJSについて発表してきた</title><link>http://efcl.info/2012/0324/res3020/</link> <comments>http://efcl.info/2012/0324/res3020/#comments</comments> <pubDate>Sat, 24 Mar 2012 08:14:05 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[javascript]]></category> <category><![CDATA[library]]></category> <category><![CDATA[test]]></category> <category><![CDATA[イベント]]></category><guid
isPermaLink="false">http://efcl.info/?p=3020</guid> <description><![CDATA[完全にノープランでしたが、唐突にカヤックの社内勉強会に参加してきて、今色々触っているJavaScriptのテストフレームワークのBuster.JSについて発表してきました。(部外者です&#8230;) JavaScrip [...]]]></description> <content:encoded><![CDATA[<p>完全にノープランでしたが、唐突にカヤックの社内勉強会に参加してきて、今色々触っているJavaScriptのテストフレームワークの<a
href="http://busterjs.org/">Buster.JS</a>について発表してきました。(部外者です&#8230;)</p><div
class="kwout" style="text-align: center;"><a
href="http://azu.github.com/slide/Kamakura/busterJS.html#slide1"><img
style="border: none;" title="JavaScript Testing FrameworkのBusterJSを使う" src="http://kwout.com/cutout/9/vs/8q/s2u_bor_rou.jpg" alt="http://azu.github.com/slide/Kamakura/busterJS.html#slide1" width="600" height="429" /></a><p
style="margin-top: 10px; text-align: center;"><a
href="http://azu.github.com/slide/Kamakura/busterJS.html#slide1">JavaScript Testing FrameworkのBusterJSを使う</a> via <a
href="http://kwout.com/quote/9vs8qs2u">kwout</a></p></div><p>スライド : <a
href="http://azu.github.com/slide/Kamakura/busterJS.html#slide1">JavaScript Testing FrameworkのBusterJSを使う</a></p><p>今JavaScriptのテストフレームワークは色々ありますが、<a
href="http://busterjs.org/">Buster.JS</a>は<a
href="http://code.google.com/p/js-test-driver/">JsTestDriver</a>と似た仕組みを持ったテストフレームワークです。<br
/>Nodeで書かれてる所が大きく違いますが、細かい仕組み等は<a
href="http://busterjs.org/docs/architecture/">Buster.JS Architecture overview</a>という文章が公開されているのでそこを見るのがいいです。</p><p>中心となってる作者の一人は<span
class="autopagerize_page_element"><a
href="http://sinonjs.org/" target="_blank">Sinon.JS</a>、<a
href="http://tddjs.com/" target="_blank">Test-Driven JavaScript Development</a>で有名なChristian Johansenですが、<br
/><a
href="http://www.amazon.co.jp/dp/4048707868/">テスト駆動JavaScript</a>で書かれてるようなノウハウが詰まった感じのテストフレームワークになっているので、触っていてとても楽しいツールになっている気がします。<br
/>また<a
href="http://code.google.com/p/js-test-driver/">JsTestDriver</a>はブラウザ向けという感じが強いですが、<a
href="http://busterjs.org/">Buster.JS</a>はNodeで書かれているのもあって、Nodeでテストを実行するという方法も行えるのでNodeのテストもできるようになっていると思います。 </span></p><p><span
class="autopagerize_page_element">まだ、<a
href="http://busterjs.org/changelog/beta2/">Beta 2</a>なので実装されてない部分やWindows未対応(Windowsで試すなら<a
href="https://github.com/mroderick/try-busterjs">try-busterjs</a>とか)などの点もありますが、<br
/>それ以上に勢いを感じられるので今後のテストフレームワークの選択肢の一つになってくれるんじゃないかなーと思います。</span></p><p><span
class="autopagerize_page_element">WebStormでも使いやすくするために、<a
href="http://azu.github.com/slide/Kamakura/busterJS.html#slide26">WebStorm Integrate</a>についてもスライドに少し書いてあります。</span></p><p> </p>]]></content:encoded> <wfw:commentRss>http://efcl.info/2012/0324/res3020/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>横浜JSTDDハンズオンでWebStormについて発表してきた</title><link>http://efcl.info/2012/0226/res3015/</link> <comments>http://efcl.info/2012/0226/res3015/#comments</comments> <pubDate>Sun, 26 Feb 2012 13:29:58 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[javascript]]></category> <category><![CDATA[イベント]]></category> <category><![CDATA[TDD]]></category> <category><![CDATA[WebStorm]]></category> <category><![CDATA[アウトライン]]></category><guid
isPermaLink="false">http://efcl.info/?p=3015</guid> <description><![CDATA[横浜JSTDDハンズオンに参加してきて、WebStormというIDEはどういうものなのかについて発表してきました。 WebStorm指南書 発表してきた資料置いておきます。 後から資料として見やすいように画像をたくさん入 [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://atnd.org/events/25519">横浜JSTDDハンズオン</a>に参加してきて、WebStormというIDEはどういうものなのかについて発表してきました。</p><div
class="kwout" style="text-align: center;"><a
href="http://azu.github.com/slide/webstorm/webstorm.html#slide1"><img
style="border: none;" title="WebStorm指南書" src="http://kwout.com/cutout/b/v4/vx/5az_bor_rou.jpg" alt="http://azu.github.com/slide/webstorm/webstorm.html#slide1" width="600" height="515" /></a><p
style="margin-top: 10px; text-align: center;"><a
href="http://azu.github.com/slide/webstorm/webstorm.html#slide1">WebStorm指南書</a></p></div><p>発表してきた資料置いておきます。</p><p>後から資料として見やすいように画像をたくさん入れながらWebStormの機能紹介について書いたので、WebStormについて知りたい方は読むといいです。<br
/>また、最近出たばかりの<a
href="http://blog.jetbrains.com/webide/2012/02/phpstorm-webstorm-4-0-early-access-program-started/">WebStorm 4.0 Early Access Program</a>についても書いてあるので興味がある人はどうぞ。</p><p> </p><div
class="kwout" style="text-align: center;"><a
href="http://azu.github.com/slide/webstorm/webstorm.html#slide12"><img
style="border: none;" title="WebStorm指南書" src="http://kwout.com/cutout/9/97/aj/bqs_bor_rou.jpg" alt="http://azu.github.com/slide/webstorm/webstorm.html#slide12" width="600" height="439" /></a><p
style="margin-top: 10px; text-align: center;"><a
href="http://azu.github.com/slide/webstorm/webstorm.html#slide12">スライドの見方</a></p></div><p>スライドは上記のように機能の紹介がベースで、それの利用方法やこういう機能があって便利という感じのスライドになってます。</p><div
class="kwout" style="text-align: center;"><a
href="http://azu.github.com/slide/webstorm/webstorm.html#slide39"><img
style="border: none;" title="WebStorm指南書" src="http://kwout.com/cutout/f/7n/bp/mv7_bor_rou.jpg" alt="http://azu.github.com/slide/webstorm/webstorm.html#slide39" width="600" height="394" /></a><p
style="margin-top: 10px; text-align: center;"><a
href="http://azu.github.com/slide/webstorm/webstorm.html#slide39">WebStormの楽しさ</a></p></div><p>Web開発等JavaScript周りの環境も変化してきているので、それにあわせてエディタやIDEももっと変化するといいなーと思う部分にいろいろ挑戦してる感じがしてるのがWebStormが好きな所でもあります。<br
/>とりあえず、<a
href="http://www.jetbrains.com/webstorm/index.html">WebStorm</a>は<a
href="http://www.jetbrains.com/webstorm/download/index.html">30-day trial</a>なので、試してみるといいかもしれません。他のエディタ等もいろいろ競争して質が上がっていくといいなー。</p><hr
/><p><a
href="http://atnd.org/events/25519">横浜JSTDDハンズオン</a>の方ではJsTestDriverを使ったハンズオンをしたのでその時のアウトラインメモ。<br
/>Twitterのまとめは <a
href="https://yukar.in/note/ckFoT5">横浜JSTDDハンズオン #JSTDD つぶやきまとめ &#8211; Yukarin&#8217;Note</a> に</p><h1>TDDとは何か</h1><ul><li>プログラマが行うホワイトボックステスト</li><li>開発的なアプローチ(TDD)</li><li>ドキュメント的なアプローチ (サンプルコード</li></ul><h1>TDD</h1><ul><li>開発を行うためにテストを行う</li><li>コードカバレッジは考慮しない</li><li>先に大きなインターフェイスを書いて設計を行う</li></ul><h2>BDD</h2><ul><li>振る舞いを先に定義する</li><li>開発を始めるときは重要だけど、開発を進めるといらない</li></ul><h2>ドキュメントアプローチ</h2><ul><li>ドキュメントの代わりにテストを書く</li><li>キッチンシンクと言われたりするような主要な機能についてテストを書く</li><li>開発当初は微妙だけど、公開するにつれて重要になる。</li></ul><h2>品質的なアプローチ</h2><ul><li>コードカバレッジは管理していく段階で重要になる</li><li>コードカバレッジを重視すると、ドキュメント的な役割がし難く。</li></ul><h2>結合テスト</h2><p>Seleniumとかの話</p><h1>JsTestDriverのアーキテクチャ</h1><h1>JsTestDriverの使い方</h1><h3>setUp</h3><p>各テスト実行前に実行される</p><h3>tearDown</h3><p>各テストが終わる事に実行される</p><h3>AsyncTestCase</h3><p>引数で同期か非同期化を分けられるので、SyncTestCaseにもできる。</p><p>各テストにはqueueという引数がわたってくる 非同期テストはとても面倒</p><h2>sinon.js</h2><p>非同期テストを楽にするFakeテストができる</p><h2>JSTestDriverのエラーになりやすい所</h2><ul><li>serverオプションに/を付けるとエラー</li><li>複数人で同じサーバのJSTestDriverを使える(パブリックはやめとけ)</li><li>ブラウザでアクティブでないタブのsetTimeoutがゆっくりになるので、それぞれウィンドウで実行するのがよい</li></ul><h1>Sinon.js</h1><p>トロイの木馬の手引きをしたスパイの名前が由来</p><hr
/><p><strong>ツール</strong></p><ul><li><strong><a
href="http://www.inkcode.net/qute">Qute for PC/Mac</a></strong></li><li><a
href="http://www.jetbrains.com/webstorm/index.html">WebStorm</a></li></ul><p>書いたコードは <a
href="https://github.com/azu/YokohamaJSTDD">azu/YokohamaJSTDD &#8211; GitHub</a> に置いてあります。</p><p> </p>]]></content:encoded> <wfw:commentRss>http://efcl.info/2012/0226/res3015/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <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>今まで書いた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>無料で読めて定期更新されているIT系の電子雑誌</title><link>http://efcl.info/2011/0905/res2963/</link> <comments>http://efcl.info/2011/0905/res2963/#comments</comments> <pubDate>Mon, 05 Sep 2011 13:38:47 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[まとめ]]></category> <category><![CDATA[javascript]]></category> <category><![CDATA[mobile]]></category> <category><![CDATA[pdf]]></category> <category><![CDATA[programing]]></category> <category><![CDATA[セキュリティ]]></category><guid
isPermaLink="false">http://efcl.info/?p=2963</guid> <description><![CDATA[PDF形式などで配布されていて、定期的に更新があるサイトの紹介 今だとブログがいっぱいありますが、まとまった形態,書式である良さというのもあるので、ブログとはひと味違う感じの所を中心に。 デジタルプラクティス 発行は季刊 [...]]]></description> <content:encoded><![CDATA[<p>PDF形式などで配布されていて、定期的に更新があるサイトの紹介 <br
/>今だとブログがいっぱいありますが、まとまった形態,書式である良さというのもあるので、ブログとはひと味違う感じの所を中心に。</p><h4><a
href="https://www.ipsj.or.jp/15dp/dp-index.html">デジタルプラクティス</a></h4><p>発行は季刊で1月（創刊号のみ2月），4月，7月，10月に発行されるのをPDFで読める。 <br
/>内容も多岐にわたっていて、論文というほど堅くはないものもあり読みやすい。</p><blockquote
cite="https://www.ipsj.or.jp/15dp/foreword.html"><p>デジタルプラクティスでは，実務の現場におけるIT 実践例・経験・ノウハウのレベルの成果でも社会的に有用なものならば歓迎し，IT実践における新たな発展を先導するような論文を積極的に採録します <br
/><cite><a
href="https://www.ipsj.or.jp/15dp/foreword.html">創刊に当たって</a></cite></p></blockquote><p>また、著名な人も結構寄稿されているので、読みたいものが何かしらあると思います。</p><ul><li><a
href="https://www.ipsj.or.jp/15dp/Vol2/No2/IPSJ-DP0202003.pdf">プログラミング言語Rubyの世界普及戦略</a> <br
/>まつもとゆきひろ</li><li><a
href="https://www.ipsj.or.jp/15dp/Vol2/No2/IPSJ-DP0202005.pdf">ウェブブラウザLunascapeの起業戦略と技術戦略</a> <br
/>近藤秀和</li><li><a
href="https://www.ipsj.or.jp/15dp/Vol1/No1/IPSJ-DP0101004.pdf">クラウド時代のユーザインタフェースの方向性 <br
/>～サービスサイエンスでUI の方向性を検証する～ </a> <br
/>鹿島泰介</li></ul><p>などなど</p><h4></h4><h4><a
href="http://www.ipa.go.jp/about/NYreport/index.html">情報処理推進機構：ニューヨークだより</a></h4><p>IPAにより月一でPDF形式で発行される。 <br
/>アメリカのIT関係についての最新事情を扱っていて、ものすごく詳しく書かれている。 <br
/>ITやスマートフォンなどのデジタル機器(OSについても)やITと政治についてなど、かなり詳細な情報を掲載している。 <br
/>無料とは思えない質だったり、情報元のソースを脚注で入れてくれるので、情報元自体も見られてとても良い感じになっている。おすすめです。</p><h4><a
href="http://wizardbible.org/">Wizard Bible</a></h4><blockquote
cite="http://wizardbible.org/"><p>Wizard Bibleとは、基本的に毎月リリースしているWebマガジンです <br
/><cite><a
href="http://wizardbible.org/">Wizard Bible</a></cite></p></blockquote><p>発行は月一でtxt形式で発行されている(最近不定期だった気がする) <br
/>内容は<a
href="http://wizardbible.org/wbQandA.html#1">どういったテーマで書けばいいのか？</a>を見ると分かると思いますが、セキュリティ関係のものが中心となっています。それに関係するプログラミングや数学などの内容も扱われています。</p><h4><a
href="http://www.is.doshisha.ac.jp/isreport">IS Report System</a></h4><blockquote
cite="http://www.is.doshisha.ac.jp/isreport"><p>本サイトは 「同志社大学生命医科学部医情報学科 医療情報システム研究室」 及び 「同志社大学工学部インテリジェント工学科 知的システムデザイン研究室」 の所有する研究報告である ISレポートの管理システム <br
/><cite><a
href="http://www.is.doshisha.ac.jp/isreport">IS Report System</a></cite></p></blockquote><p>医療やソーシャルメディア、インターネットや携帯電話などの電子機器について書かれたレポートが公開されています。 <br
/>HTMLとepub形式(一部PDFも)で配布されていて、図などが入ったものも多く内容も結構読みやすいです。 <br
/>結構書かれているジャンルが幅広い気がします。</p><h4></h4><h4><a
href="http://pragprog.com/magazines">The Pragmatic Bookshelf | Read Our Magazines</a></h4><p><a
href="http://pragprog.com/">Pragmatic Bookshelf</a>により毎月発行されるプログラミング関係の電子雑誌。 <br
/>HTML PDF epub mobiが用意されている。</p><h3>番外編</h3><p>タイトルから外れて有料の雑誌。 <br
/>といっても海外だと電子版の雑誌は珍しくないので、気になったものだけ。</p><h4><a
href="http://www.jsmag.com/">JsMag &#8211; the magazine for JavaScript developers</a></h4><p>JavaScriptについて扱う月刊誌。 <br
/>一号毎に購入($4.99)か一年分まとめて購入($53.88 )ができる。 <br
/>日本にもこういうの欲しいですね。。 <br
/></p><h4><a
href="http://hackermonthly.com/">Hacker Monthly &#8211; Print Magazine of Hacker News</a></h4><p><a
href="http://news.ycombinator.com/">Hacker News</a>で話題になったものを厳選して扱う月刊誌。</p><p><strong>おわり</strong></p><p>電子雑誌というタイトルにしたけど、別に雑誌じゃないものが多い気がする。 <br
/>今はブログやソーシャルメディア経由でだいたいの情報はカバーできるだろうけど、論文や雑誌、スライドなどある程度労力を伴って書かれたものにはブログとは異なるものがあると思ってるので、こういうものも読んでいきたいですね。</p><blockquote
cite="https://twitter.com/#!/azu_re/status/75878368695959552"><p>JavaScriptの論文かき集める仕組み欲しい。日本でも小さなもの含めて年間二桁は書かれてる感じする。 <br
/><cite><a
href="https://twitter.com/#!/azu_re/status/75878368695959552">Twitter / @azu_re: JavaScriptの論文かき集める仕組み欲しい。日 &#8230;</a></cite></p></blockquote><p>とか思ったりするのはそういう理由です。</p><p>他にもおすすめがありましたらよろしくお願いします。</p>]]></content:encoded> <wfw:commentRss>http://efcl.info/2011/0905/res2963/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> </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/16 queries in 0.035 seconds using disk: basic
Object Caching 754/783 objects using disk: basic

Served from: efcl.info @ 2012-05-23 10:44:54 -->
