<?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, 21 Jan 2012 23:30:41 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <item><title>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> <item><title>サイボウズラボユース中間結果発表会アウトラインメモ</title><link>http://efcl.info/2011/0820/res2949/</link> <comments>http://efcl.info/2011/0820/res2949/#comments</comments> <pubDate>Fri, 19 Aug 2011 16:57:50 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[イベント]]></category> <category><![CDATA[javascript]]></category> <category><![CDATA[まとめ]]></category> <category><![CDATA[アウトライン]]></category> <category><![CDATA[最適化]]></category> <category><![CDATA[正規表現]]></category><guid
isPermaLink="false">http://efcl.info/?p=2949</guid> <description><![CDATA[サイボウズ・ラボユース 「中間成果報告会」に参加してきたのでそのときのメモです。かなり乱雑なメモで正確性など存在していないので、そのまま読まない方がいいです。(特に手元でスライドがあるわけじゃないので、ちゃんとメモれてす [...]]]></description> <content:encoded><![CDATA[<p><a
href="https://job.rikunabi.com/2012/company/blog/detail/r646010018/42/">サイボウズ・ラボユース 「中間成果報告会」</a>に参加してきたのでそのときのメモです。<br
/>かなり乱雑なメモで正確性など存在していないので、そのまま読まない方がいいです。<br
/>(特に手元でスライドがあるわけじゃないので、ちゃんとメモれてすらないです…)</p><p>環境記録<br
/>メモソフトウェア: <a
href="https://github.com/bodhi/MarkdownEditor">bodhi/MarkdownEditor &#8211; GitHub</a></p><h2>サイボウズラボユース中間結果発表会</h2><p>NDAは結ばずに、成果をオープンすることを条件に支援を行う。</p><ul><li><a
href="http://labs.cybozu.co.jp/recruit/youth.html">サイボウズ・ラボユース</a></li></ul><h2 id="bysn_monochr">「ロボット制作を支援するログ解析プログラムの開発」 by @sn_monochr</h2><h4>マイコンカー</h4><p>赤外線センサーを使ってリアルタイムで制御するカー。 C言語で開発を行う。</p><h4>マイコンカーの走行ログ</h4><p>走行ログ</p><ul><li>制御プログラムの動作状態</li><li>赤外線などのセンサー状態</li></ul><p>メモリが限られているので、データはシフト演算などを使って一つにまとめて保存、送信を行う。 これらのデータを可視化していくため、解析ソフトウェアを開発する。(Windows)</p><h4>走行ログの可視化</h4><ul><li>データに基づいたマシン調整が可能になる</li><li>１つのソフトウェアに統合</li></ul><h4>夏の合宿</h4><p>目標設定をして合宿を行った</p><ul><li>走行ログの可視化</li></ul><p>ラインの中でモードの変更をライン色の変更してる。</p><ul><li>無線通信でログのやり取りをするのが今後目標</li></ul><p>走るコースに、車線変更や直角カーブなどのマークが書かれていて、それを読み取ってモードを変えることで動きを変える。</p><hr
/><h2 id="jitbysinya8282">「世界最速の正規表現JITエンジンの実装」by @sinya8282</h2><ul><li>正規表現エンジンの作成</li><li>正規表現の歴史は古い 1960～</li><li><ul><li>実装はたくさんある</li></ul></li><li><ul><li>いろいろやられている</li></ul></li></ul><p>「正規表現エンジンの開発」には意義があるのですか? -&gt; 車輪は車輪でも「最速の車輪」を開発する</p><p><em>正規表現エンジンRegen(れーげん)の開発</em></p><h3 id="regen">Regen</h3><p>動的コード生成</p><ul><li>Xbyak でJIT regex</li><li>正規表現に合わせて、プログラムがプログラムを生成する</li><li>正規表現コンパイルに最適化レベル導入(O0 &#8211; O4)</li><li><ul><li>最適化しにくいパターンもある</li></ul></li></ul><p><strong>マッチング並列化</strong></p><ul><li>並列化のための特殊なモデルを実装</li></ul><h4>ベンチマーク</h4><p>Google RE2との比較。</p><p>JITしても3-5倍の高速化 -&gt; 今はメニーコアの時代 -&gt; 正規表現の並列化</p><ul><li>6コアでガクって落ちるのはアーキテクチャの問題</li></ul><h4>まとめ</h4><p>高速化の二台手法は実装した、成果もでた</p><ul><li>JIT</li><li>並列化</li></ul><p><strong>これからの課題</strong></p><ul><li>実システムへの応用、ツールの作成</li><li>正規表現エンジンじゃないと処理できない問題</li><li><ul><li>なければ作る</li></ul></li><li>ライブラリとして今夏中に整えたい</li></ul><h4>質問</h4><ul><li>正規表現 &lt;-&gt; インデクシング</li><li>フィルターなどの分野では、流れるデータに対して正規表現の活用などもある。</li><li>禁止ワードのORつなぎみたいなものは正規表現より向いてる方法があるとか</li></ul><hr
/><h2 id="javascriptbytakuto_h">「JavaScriptによる型推論器の実装と可視化」by takuto_h</h2><ul><li><a
title="JavaScriptで型推論器を作りました - takuto_hの日記" href="http://d.hatena.ne.jp/takuto_h/20110401/ibis">JavaScriptで型推論器を作りました &#8211; takuto_hの日記</a></li></ul><p>型推論</p><ul><li>型を書かなくて楽</li><li>型があるんで安全</li></ul><h4>引数の型</h4><pre><code>function foo(bar){ return bar + 1; }</code></pre><p>どのような演算子を呼んでいるかを見て、型を推論する</p><h4>型推論は方程式</h4><ul><li>値が広志位なら型が等しい</li><li>方の上での方程式を集めて解くのが型推論</li></ul><p>コンピューターでは解くのか</p><blockquote><p>a = b, b = c, c = d, d= int</p></blockquote><p><code>&lt;a&gt;, &lt;b&gt;, &lt;c&gt;, &lt;d&gt;</code>というオブジェクトとintという物体を用意する。</p><ul><li>a = b で <code>&lt;a : &lt;b&gt;&gt;, &lt;b&gt;, &lt;c&gt;, &lt;d&gt;</code></li><li>b = c で ….</li></ul><p>どんどん置き換えて行って型推論を行う。</p><h4 id="ibis">Ibisという型推論機</h4><p>IbisはJavaScriptで書かれている。</p><ul><li>まずはパースして構文木にする</li><li>ここからステップごとに型推論の計算(推論)を表示</li><li>最終的に、関数の入力と出力の型推論結果が表示される</li></ul><blockquote><p>型推論はパズル</p></blockquote><h4>質問</h4><blockquote><p>型推論にとってオブジェクトは鬼門</p></blockquote><p>Q . 循環参照の時はどうするの?</p><p>２つの考え方</p><ul><li>禁止する方針</li><li>再帰的なものも許す方針</li></ul><p>OCamlは不健全な循環参照は禁止されている。 再帰的なものはチェックを付けて型推論を続ける。</p><p>演算子のオーバーロードがあると型推論はむずい</p><hr
/><h4 id="javascriptbyconstellation">「世界で一番仕様に忠実なJavaScript処理系の作成」 by Constellation</h4><p>iv/lv5</p><p><a
title="iv / lv5 VM engine - 枕を欹てて聴く" href="http://d.hatena.ne.jp/Constellation/20110727/1311697245">iv / lv5 VM engine &#8211; 枕を欹てて聴く</a></p><ul><li>ESのパーサーiv</li><li>エンジンlv5</li></ul><p>sputniktestというECMA262への正確性を測るテスト</p><ul><li>以前はASTはインタープリンタ</li><li>VMに変えたのでECMAエンジンといえますね。</li><li>インタープリタと共存している(オプションで切り替えが可能)</li></ul><p>JITをモジュールとして取り込めるのではないかと。</p><h4>高速化</h4><p>いろいろ。11倍近く高速</p><p>まだJITはしていない。</p><h4>今後</h4><ul><li>RegisterVmについての検討</li><li>GCの自作</li></ul><h4 id="az:ecmascriptanalyzer">az: ECMAScript Analyzer</h4><p>JavaScriptの補完候補を出す</p><h4 id="doctorjs">型の推論 Doctorjs</h4><ul><li>抽象的なAbstractインタプリターを使って型情報を集めている</li><li>これを元にC++にした</li></ul><p>JavaScriptは後ろに関数宣言置けるし、補完するときにシンタックスは壊れてるからどうするの?</p><h5 id="ast">方針: シンタックスが不正なASTに対して解析を行う</h5><ul><li>シンタックスが不正なスクリプトでも常にASTを得る</li></ul><blockquote><p>target.</p></blockquote><p>こういう時はに解析を行うと、式がエラーになるので、ここでステートメントにマークを付ける。</p><p>改行があったらそのへんは大丈夫なんじゃないかと、してぶっちぎる。 JavaScriptにはセミコロン自動挿入があるので、改行を判定に使う必要性が出てくる。</p><h5>問題点</h5><ul><li>Abstractインタープリタは状態が有限でないと終わらない</li><li>なので状態を有限して、行う</li><li>jQueryとのfor inとかむず</li></ul><p>WebStromの場合</p><ul><li>JSDocで型情報を読んでこれを基準に解析</li><li>元に情報を用意して何とかする方向</li></ul><h4>おわり</h4><blockquote><p>仕様忠実は第一</p></blockquote><hr
/><h2 id="osbyliva_s">「現役高校生の考えるクラウドOSの設計と実装」by liva_s</h2><h4 id="os">クラスドOSって何だろう?</h4><p>Googleの場合</p><ul><li>ブラウザ上でWebアプリを走らせている</li><li>確かにクラウドを利用している</li></ul><h4>僕の考えるクラウド化</h4><h5>カーネルのクラウド化</h5><ul><li>カーネルがやるべきことをクラウドサーバー上で一括処理するのはどうだろか?</li><li>サーバー側に処理を置くことで、クライアント側の負荷が減る</li></ul><p>カーネルを分割して、クラウド上でカーネルが動いてるいうという状態</p><ul><li>当然ローカルでやるべきことも残る(ハードウェア制御)</li><li>ローカルとくらうどの線引きが大事になる</li></ul><p>どの境界線はどう測るべきものかがわからない(ベンチマークで?)</p><h4>マイクロカーネル開発</h4><p>カーネルには最小限なものにして、Serverというアプリケーションにわけてやるもの。 この時のServerをクラウドに乗っければ、クラウドOSになる。</p><p>=&gt; マイクロカーネルの開発がいいのではないかと</p><p>Serverを単位にして、ローカルとクラウドでベンチマークを取れば、境界線がわかりやくなる。</p><h4>モジュール開発とマイクロカーネル</h4><p>モジュールはプロセス管理を作る前に、モジュールを開発できる。 (後で動かせばいい)</p><h5>まとめ</h5><blockquote><p>クラウドOSはWebアプリベースのOSではない</p></blockquote><p>Q. カーネルでどの辺がボトルネックになってるのか?</p><p>A. モジュール化していけばベンチは測りやすいから、これからは。</p><p>カーネルのモジュール化はダイナミックに構成を変更できるということが結構面白い事になる</p><p>Q.マルチキャストの逆みたいな話。同じような処理をしてるコンピューターはいっぱいあるから、そのへんの処理を効率ができるのではないかと</p> ]]></content:encoded> <wfw:commentRss>http://efcl.info/2011/0820/res2949/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>JavaScriptエディタとしてのTitanium Studio</title><link>http://efcl.info/2011/0622/res2907/</link> <comments>http://efcl.info/2011/0622/res2907/#comments</comments> <pubDate>Tue, 21 Jun 2011 17:56:09 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[software]]></category> <category><![CDATA[インストール設定]]></category> <category><![CDATA[IDE]]></category> <category><![CDATA[javascript]]></category> <category><![CDATA[Titanium]]></category> <category><![CDATA[WebStorm]]></category> <category><![CDATA[エディタ]]></category><guid
isPermaLink="false">http://efcl.info/?p=2907</guid> <description><![CDATA[Titanium StudioとTitanium Mobile 1.7をリリースしました « Appcelerator Developer Center InfoQ: Appcelerator の Titanium St [...]]]></description> <content:encoded><![CDATA[<ul><li><a
href="http://developer.appcelerator.com/blog/2011/06/titanium-studio%E3%81%A8titanium-mobile-1-7%E3%82%92%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F.html?lang=ja">Titanium StudioとTitanium Mobile 1.7をリリースしました « Appcelerator Developer Center</a></li><li><a
href="http://www.infoq.com/jp/news/2011/06/Appcelerator-Titanium-Studio">InfoQ: Appcelerator の Titanium Studio がデビュー</a></li></ul><p>ちょっと触っただけの雑感です。本質としてとらえてはいけません。 <br
/>Titanium (Mobile|Desktop)については全く触れていないため、そういうものについては参考にはならないと思います。 <br
/>というか、Titanium (Mobile|Desktop)向けのものを書かないのに、Titamium Studioを選ぶ理由はない気がするので、タイトルのような事が目的ならばベースが同じ<a
href="http://www.aptana.com/">Aptana Studio 3</a>を使った方が良いでしょう。</p><span
id="more-2907"></span><h3>インストール</h3><p><a
href="http://efcl.info/wp-content/uploads/2011/06/image16.png"><img
style="border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://efcl.info/wp-content/uploads/2011/06/image_thumb16.png" width="320" height="251" /></a></p><p>インストール先がProgram Filesじゃない</p><p><a
href="http://efcl.info/wp-content/uploads/2011/06/image17.png"><img
style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://efcl.info/wp-content/uploads/2011/06/image_thumb17.png" width="320" height="251" /></a></p><p>起動すると、ログインアカウントを求めてくる</p><p><a
href="http://efcl.info/wp-content/uploads/2011/06/image18.png"><img
style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://efcl.info/wp-content/uploads/2011/06/image_thumb18.png" width="320" height="224" /></a></p><p>起動して最初に開く画面</p><p><a
href="http://efcl.info/wp-content/uploads/2011/06/image19.png"><img
style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://efcl.info/wp-content/uploads/2011/06/image_thumb19.png" width="320" height="195" /></a></p><p>Aptanaで昔無かった気がする折り返しがあった</p><p><a
href="http://efcl.info/wp-content/uploads/2011/06/image20.png"><img
style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://efcl.info/wp-content/uploads/2011/06/image_thumb20.png" width="300" height="251" /></a></p><p>プレビューできるのはAptanaと同じ。 <br
/>デフォルトIEだったけど、ApatanaのようにFirefoxもできるのかな。</p><ul><li><a
href="http://d.hatena.ne.jp/yuchi78/20100515/1273944479">Aptana Studio 2.0.3－Firefoxプレビュータブ &#8211; ゆちの備忘録</a></li></ul><p><a
href="http://efcl.info/wp-content/uploads/2011/06/image21.png"><img
style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://efcl.info/wp-content/uploads/2011/06/image_thumb21.png" width="320" height="121" /></a></p><p>適当なJavaScriptファイルでコードを書いてみるけど、補完候補が何か特殊な感じする。</p><p><a
href="http://efcl.info/wp-content/uploads/2011/06/image22.png"><img
style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://efcl.info/wp-content/uploads/2011/06/image_thumb22.png" width="320" height="158" /></a></p><p>2,3番目のFunctionはどちらもスニペットになっていて、2番目のFunctionは以下のような関数定義を展開する。</p><p><a
href="http://efcl.info/wp-content/uploads/2011/06/2011-06-22-ss10.png"><img
style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="2011-06-22-ss10" border="0" alt="2011-06-22-ss10" src="http://efcl.info/wp-content/uploads/2011/06/2011-06-22-ss10_thumb.png" width="320" height="65" /></a></p><div
id="codeSnippetWrapper"><pre id="codeSnippet" class="csharpcode"><span class="kwrd">function</span> function_name (argument) {<br /><br />}</pre><br
/></div><p>3番目のNew Functionもスニペットで、以下のような無名関数を展開する。<a
href="http://efcl.info/wp-content/uploads/2011/06/image23.png"><img
style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://efcl.info/wp-content/uploads/2011/06/image_thumb23.png" width="320" height="67" /></a></p><div><pre id="codeSnippet" class="csharpcode"><span class="kwrd">function</span> (args) {<br /><br />}</pre></div><div>何か、癖が強い感じのする補完になってる気がする。 <br
/>出現する補完候補は以前のAptanaと違ってちゃんと構造を読んで出しているみたいだ。<br
/>毎度おなじみの<a
href="http://d.hatena.ne.jp/teramako/20090205/p1">Komodo Edit が面白い &#8211; hogehoge @teramako</a>から</div><div><pre id="codeSnippet" class="csharpcode"><span class="kwrd">var</span> container = {<br />  init: <span class="kwrd">function</span>() {},<br />};<br />container.obj = (<span class="kwrd">function</span>(){<br />  <span class="kwrd">var</span> privateProp = <span class="kwrd">null</span>;<br />  <span class="kwrd">var</span> namager = {<br />    publicMethod: <span class="kwrd">function</span>(){ },<br />  };<br />  <span class="kwrd">return</span> namager;<br />})();</pre></div><div>という風に書いて、container.obj.の時は<code>publicMethodまでちゃんと補完ができるようになっている。 <br
/>コードを解析して構造(アウトライン)を出してるので、構造から見た補完候補が出てくるのが良い(WebStormとかと同じ感じ、どこまで解析できてるかは調べてない)</code></div><div><code><font
face="Arial"></font></code></div><div><a
href="http://efcl.info/wp-content/uploads/2011/06/image24.png"><img
style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://efcl.info/wp-content/uploads/2011/06/image_thumb24.png" width="320" height="213" /></a><br
/>デフォルトだとdocument.queryselectorが出てこなかったり、何か欠けている感じがするけど、下記を見る感じWebStormやアマテラスのようにjsファイルで補完候補を定義できそうな気がする。(でも、References Viewとやらが見つからないのでやり方よく分からない…)</div><ul><li><a
href="http://akabeko.sakura.ne.jp/blog/2010/11/titanium-aptana-mobile/">Titanium と Aptana でモバイル開発 | アカベコマイリ</a></li><li><a
href="http://akabeko.sakura.ne.jp/blog/2011/04/titanium-studio-1-0-preview/">Titanium Studio 1.0 Preview 版を入れてみた | アカベコマイリ</a></li></ul><p><a
href="http://efcl.info/wp-content/uploads/2011/06/image30.png"><img
style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://efcl.info/wp-content/uploads/2011/06/image_thumb30.png" width="240" height="155" /></a></p><p>入力するごとにJSLint,，HTML Tidy，W3C などを使ってエラー検出ができる。 <br
/>デフォルトだとJSLintは無効になってたけど。</p><p>噂のバージョン管理システム(gitでの表示)</p><p><a
href="http://efcl.info/wp-content/uploads/2011/06/image25.png"><img
style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://efcl.info/wp-content/uploads/2011/06/image_thumb25.png" width="320" height="233" /></a></p><p>ブランチを簡単に作れたり切り替えできるのは結構よさげ。</p><p><a
href="http://efcl.info/wp-content/uploads/2011/06/image26.png"><img
style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://efcl.info/wp-content/uploads/2011/06/image_thumb26.png" width="320" height="196" /></a></p><p>コミット画面もステージへの移動とかさせながらコミットメッセージを書けるようになってる</p><p><a
href="http://efcl.info/wp-content/uploads/2011/06/image27.png"><img
style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://efcl.info/wp-content/uploads/2011/06/image_thumb27.png" width="320" height="195" /></a></p><p>履歴もIDE内で表示できてDiffを見たりできる。</p><p><a
href="http://efcl.info/wp-content/uploads/2011/06/image28.png"><img
style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://efcl.info/wp-content/uploads/2011/06/image_thumb28.png" width="295" height="251" /></a></p><p>メニューからできることは基本的な事だけっぽい感じ。 <br
/>この辺もWebStormとかの方ができが良いかもしれないけど、ブランチの切り替えとコミットやpushができるので、書いていく環境としては悪くないかもしれない。(マージとかその辺のやり方がよく分からない)</p><p><a
href="http://efcl.info/wp-content/uploads/2011/06/image29.png"><img
style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://efcl.info/wp-content/uploads/2011/06/image_thumb29.png" width="313" height="251" /></a></p><p>ただ、Terminal機能が内蔵されているので直接コンソールからgitコマンドを叩けるので結構良い感じかもしれない。</p><p>使いこなすにはちょっと手間がかかりそうだけど、ちょっと触った感じだとそこまで悪くはない。 推測した用に補完候補をいじったりできるなら、結構良い感じにJavaScript IDEとして使えるようになるんじゃないかと思う。 <br
/>Aptana 2では時間とともに腐っていってたけど(長いソースでダメとか、どんどん重くなるとか)、そういうのがないことを祈りましょう。<br
/>まあ、普通にJavaScriptを書くのが目的なら<a
href="http://www.aptana.com/">Aptana Studio 3</a>を使いましょう。ベースは同じなので、Titanium (Mobile|Desktop)向けのものを書かないのに、Titamium Studioを選ぶ理由はない気がする。</p><ul><li><a
href="http://bowz.info/2941">[ Titanium Studio ] インストール・設定してみた | Bowz::Notebook</a></li><li><a
href="http://d.hatena.ne.jp/donayama/20110405/titanium_studio_preview">Titanium Studio 1.0 Previewが出ました！ &#8211; JP::HSJ::Junknews::HatenaSide</a></li></ul>]]></content:encoded> <wfw:commentRss>http://efcl.info/2011/0622/res2907/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>クリッカブルなボタンとWAI-ARIAのrole=&quot;button&quot;について</title><link>http://efcl.info/2011/0607/res2835/</link> <comments>http://efcl.info/2011/0607/res2835/#comments</comments> <pubDate>Mon, 06 Jun 2011 16:17:12 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[その他]]></category> <category><![CDATA[css]]></category> <category><![CDATA[HTML]]></category> <category><![CDATA[javascript]]></category> <category><![CDATA[library]]></category> <category><![CDATA[WAI-ARIA]]></category><guid
isPermaLink="false">http://efcl.info/?p=2835</guid> <description><![CDATA[前提知識として以下が必要です。 リンクのようなボタンを作る: Days on the Moon javascript scheme でボタンを作るのは ? &#124; ヨモツネット clickイベントに使うためだけに&#60;a  [...]]]></description> <content:encoded><![CDATA[<p>前提知識として以下が必要です。</p><ul><li><a
href="http://nanto.asablo.jp/blog/2010/12/15/5584008">リンクのようなボタンを作る: Days on the Moon</a></li><li><a
href="http://www.yomotsu.net/wp/?p=591">javascript scheme でボタンを作るのは ? | ヨモツネット</a></li></ul><p>clickイベントに使うためだけに&lt;a href=&#8221;#&#8221;&gt;text&lt;/a&gt;とか(下の例の1,2番目)やるのが嫌いで、どうやるのがスマートorシンプルなんだろと思って書き出したもの。input、button 要素がでてこないのはスタイルシート考えるのが面倒で何となくです。button要素をCSSでリンクのようなデザインにできるならそれでもいいじゃないでしょうか。</p><ul><li><a
href="http://pastehtml.com/view/aw8e93pdo.html">クリッカブルなボタンとRole</a>のデモ</li></ul><p>1番目は今時ない気がするし、1,2番目は状態が遷移しないのにhref指定してると、ミドルクリックなどで別のページとして開けたりしちゃうのでそれを抑制するコードも必要になるのが何か嫌で、3番目当たりが個人的には好きだった。(4番目は何か気持ちわるい)</p><div><pre id="codeSnippet" class="csharpcode"><span class="kwrd">&lt;</span><span class="html">div</span><span class="kwrd">&gt;&lt;</span><span class="html">a</span> <span class="attr">href</span><span class="kwrd">="javascript:void 0;"</span><span class="kwrd">&gt;</span>javscript:ボタン<span class="kwrd">&lt;/</span><span class="html">a</span><span class="kwrd">&gt;&lt;/</span><span class="html">div</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;</span><span class="html">div</span><span class="kwrd">&gt;&lt;</span><span class="html">a</span> <span class="attr">href</span><span class="kwrd">="#"</span><span class="kwrd">&gt;</span>#なボタン<span class="kwrd">&lt;/</span><span class="html">a</span><span class="kwrd">&gt;&lt;/</span><span class="html">div</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;</span><span class="html">div</span><span class="kwrd">&gt;&lt;</span><span class="html">a</span> <span class="attr">role</span><span class="kwrd">="button"</span><span class="kwrd">&gt;</span>hrefがないroleボタン<span class="kwrd">&lt;/</span><span class="html">a</span><span class="kwrd">&gt;&lt;/</span><span class="html">div</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;</span><span class="html">div</span><span class="kwrd">&gt;&lt;</span><span class="html">span</span> <span class="attr">role</span><span class="kwrd">="button"</span><span class="kwrd">&gt;</span>リンクじゃないspanボタン<span class="kwrd">&lt;/</span><span class="html">span</span><span class="kwrd">&gt;&lt;/</span><span class="html">div</span><span class="kwrd">&gt;</span></pre></div><div>動作的には問題ない気がするけど、ここで、A要素は元々nativeとして持っているroleがrole=&#8221;link&#8221;で、それをrole=&#8221;button&#8221;で上書きできるのかが気になった。</div><div>そもそも、role=&#8221;link&#8221;とrole=&#8221;button&#8221;の違いは何かというとlinkの項を見るとわかるように、押したことによりブラウザのフォーカスやlocationが変わらないなら、それはrole=&#8221;button&#8221;を使うべきだと書いてある。</div><blockquote
title="The Roles Model | Accessible Rich Internet Applications (WAI-ARIA) 1.0" cite="http://www.w3.org/TR/2010/WD-wai-aria-20100916/roles#link"><p>Note: If pressing the link triggers an action but does not change browser focus or page location, authors are advised to consider using the button role instead of the link role. <br
/><cite><a
href="http://www.w3.org/TR/2010/WD-wai-aria-20100916/roles#link">The Roles Model | Accessible Rich Internet Applications (WAI-ARIA) 1.0</a></cite></p></blockquote><p>そして、A要素のroleはnativeでlinkですが<a
href="http://www.whatwg.org/specs/web-apps/current-work/multipage/content-models.html#wai-aria">3.2.5 Content models — HTML Standard</a>を見ると、 <code>link</code>, <code>button</code>, <code>checkbox</code>, <code>menuitem</code>, <code>menuitemcheckbox</code>, <code>menuitemradio</code>, <code>tab</code>, <code>treeitem </code>のいずれかのroleであれば上書きすることができると書いてあります。(そう読み取れたんだけどあってるのかね)</p><div><a
href="http://efcl.info/wp-content/uploads/2011/06/image10.png"><img
style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://efcl.info/wp-content/uploads/2011/06/image_thumb10.png" border="0" alt="image" width="320" height="99" /></a></div><div>なので、role=&#8221;button&#8221;なA要素は仕様に反していないはず。</div><div><pre id="codeSnippet" class="csharpcode"><span class="kwrd">&lt;</span><span class="html">a</span> <span class="attr">role</span><span class="kwrd">="button"</span><span class="kwrd">&gt;</span>hrefがないroleボタン<span class="kwrd">&lt;/</span><span class="html">a</span><span class="kwrd">&gt;</span></pre></div><div>WAI-ARIAの方にもいろいろ書いてあるんだけど、英語力不足で読み取れない… <br
/>日本語版は一個古い感じなので、内容も結構違う感じする。</div><ul><li><a
href="http://www.w3.org/TR/wai-aria-implementation/#mapping_conflicts">4.2. Conflicts between native markup semantics and WAI-ARIA</a></li><li><a
href="http://www.hitachi.co.jp/universaldesign/ria/ajax/wai-aria/WD-wai-aria-implementation-20090224/index.html#mapping_conflicts">3.2. ネイティブなマークアップセマンティクスとARIAとの衝突</a><p>翻訳版をみるとnativeなroleがlinkであっても、roleでbuttonと指定すれば上書きできるべきであるみたいな内容。</p></li></ul><p>何で、上書きできるかが気になったかというと<a
href="http://www.yomotsu.net/wp/?p=591">javascript scheme でボタンを作るのは ? | ヨモツネット</a>のコメント欄で、できないかのように読み取れる内容があったため。多分多分、strong native semanticsというのはa要素が本来持っているのはlinkというroleの事で、&lt;a role=&#8221;button&#8221; /&gt;のようにそれぞれのa要素におけるroleは上書きできるけど、a要素本来のlink(strong native semantics)というroleは上書きできないよって話なのかなーとか思った。(仕様読んでないので自信ない)</p><p>ちなみに、jQuery UIの$.button()は&lt;button role=&#8221;button&#8221;&gt;という感じでbutton要素を使用している。</p><ul><li><a
href="http://jqueryui.com/demos/button/">jQuery UI &#8211; Button Demos &amp; Documentation</a></li><li><a
href="http://www.ark-web.jp/accessibility/2297.html">jQuery UI に見る WAI-ARIA の実装：dialog 編 &#8211; アークウェブアクセシビリティWiki</a>(結構前)</li></ul><div>他のUIライブラリも見てるみると、Extjs,Google Web Toolkit,Yahoo! User Interface Library (YUI)もbutton要素を使っていた。(role=&#8221;button&#8221;は省略してる感じのが多い) <br
/>UIライブラリはスタイルとかとセットなので、roleも意味がはっきりしたものとって後はスタイルやった方が良さそうだしね<p>WAI-ARIA対応のライブラリはこの辺を見た</p></div><ul><li><a
href="http://www.paciellogroup.com/blog/2009/07/wai-aria-implementation-in-javascript-ui-libraries/">WAI-ARIA Implementation in JavaScript UI Libraries – updated | The Paciello Group Blog</a></li></ul><p>というわけで、ここに書かれている内容はあまり自信がありません。以上</p><ul><li><a
href="http://www.w3.org/TR/wai-aria/">Accessible Rich Internet Applications (WAI-ARIA) 1.0</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://efcl.info/2011/0607/res2835/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>JavaScriptリファレンスを高速検索するKeySnailプラグイン</title><link>http://efcl.info/2011/0606/res2830/</link> <comments>http://efcl.info/2011/0606/res2830/#comments</comments> <pubDate>Sun, 05 Jun 2011 17:02:35 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[KeySnail]]></category> <category><![CDATA[javascript]]></category> <category><![CDATA[リファレンス]]></category> <category><![CDATA[検索]]></category><guid
isPermaLink="false">http://efcl.info/?p=2830</guid> <description><![CDATA[JSReferenceというFIrefoxアドオンであるKeySnail上で動くプラグインの紹介 このプラグインはChemr-jsのように先にリファレンスサイトのインデックスのキャッシュを作っておいて、複数のリファレンス [...]]]></description> <content:encoded><![CDATA[<p><a
href="https://github.com/azu/KeySnail-Plugins/tree/master/JSReference">JSReference</a>というFIrefoxアドオンである<a
href="https://github.com/mooz/keysnail/wiki/keysnail-japanese">KeySnail</a>上で動くプラグインの紹介</p><p>このプラグインは<a
href="http://subtech.g.hatena.ne.jp/cho45/20100901/1283268146">Chemr-js</a>のように先にリファレンスサイトのインデックスのキャッシュを作っておいて、複数のリファレンスからまとめて検索をすることができるプラグインです。</p> <iframe
width="640" height="510" src="http://www.youtube.com/embed/8-qRFqdtgz4" frameborder="0" allowfullscreen></iframe><p>動画だと対応サイトが少ないですが、現在は以下のサイトに対応しています。 <br
/>(最新の対応サイトリストは<a
href="https://github.com/azu/KeySnail-Plugins/tree/master/JSReference">JSReference at master from azu/KeySnail-Plugins &#8211; GitHub</a>を参照してください)</p><ul><li><a
href="http://developer.mozilla.org">developer.mozilla.org</a></li><li><a
href="https://developer.mozilla.org/ja">jp.developer.mozilla.org</a></li><li><a
href="http://www2u.biglobe.ne.jp/%7Eoz-07ams/prog/ecma262r3/">www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/</a></li><li><a
href="http://api.jquery.com">api.jquery.com</a></li><li><a
href="http://es5.github.com/">es5.github.com</a></li><li><a
href="http://msdn.microsoft.com/en-us/library/yek4tbz0%28v=VS.94%29.aspx">msdn.microsoft.com</a></li></ul><p>ECMAScriptの仕様書、MDCのドキュメント、jQueryのAPIドキュメント、IEのJavaScriptリファレンスなどを同時に引けるので結構便利です。<a
href="http://efcl.info/wp-content/uploads/2011/06/image8.png"><img
style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://efcl.info/wp-content/uploads/2011/06/image_thumb8.png" border="0" alt="image" width="640" height="116" /></a></p><p>対応サイトもSITEINFO的なものを書けば増やせるので、<a
href="https://github.com/azu/KeySnail-Plugins/tree/master/JSReference">JSReference at master from azu/KeySnail-Plugins &#8211; GitHub</a>を参考に見てみるといいです。</p><p>プラグインをインストールするとプラグインマネージャーにドキュメントが表示されるので、そこに使い方が書いてありますが簡単に説明すると二つのコマンドが追加されます。</p><table
border="1" cellspacing="0" cellpadding="2" width="446"><tbody><tr><td
width="200" valign="top">JsReferrence-open-prompt</td><td
width="244" valign="top">JsReferrenceで検索を開始する</td></tr><tr><td
width="200" valign="top">JsReferrence-reIndex</td><td
width="244" valign="top">JsReferrenceのインデックスを作り直す</td></tr></tbody></table><p>このコマンドをKeySnailの設定メニューや_keysnail.jsファイルに直接書き込むなどでショートカットに割り当てて使います。</p><p><a
href="http://efcl.info/wp-content/uploads/2011/06/image9.png"><img
style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://efcl.info/wp-content/uploads/2011/06/image_thumb9.png" border="0" alt="image" width="240" height="88" /></a> <br
/>設定画面の場合</p><div><pre id="codeSnippet" class="csharpcode">key.setGlobalKey(['C-b', 'j'], function (ev, arg) {
    ext.exec(<span class="str">"JsReferrence-open-prompt"</span>, arg, ev)<span class="rem">;</span>
<span class="rem">}, 'JsReferrenceのプロンプトを開く', true);</span>
key.setGlobalKey(['C-b', 'r'], function (ev, arg) {
    ext.exec(<span class="str">"JsReferrence-reIndex"</span>, arg, ev)<span class="rem">;</span>
}, 'JsReferrenceののインデックスを作り直す', <span class="kwrd">true</span>);</pre></div><div>_keysnail.jsファイルに書き込まれる内容。</div><div></div><div>これらのコマンドは引数を受け取ることができて、ドメイン(上のリストで書かれている<a
href="http://es5.github.com/">es5.github.com</a>といったサイトの固有なもの)を配列で渡すことで、それぞれそれらのサイトを対象にした動作になります。</div><div>デフォルトだとすべてのサイトを対象するので、ドメインを指定したものを_keysnail.jsで複数のショートカットに割り当てれば、グループに分別でプロンプトから検索するなども可能です。</div><div
id="codeSnippetWrapper"><pre id="codeSnippet" class="csharpcode">// 二つのサイトを候補にする - JavaScript
key.setGlobalKey(['C-b', 'l'], function (ev, arg) {
    ext.exec(<span class="str">"JsReferrence-open-prompt"</span>, [<span class="str">"developer.mozilla.org"</span>, <span class="str">"www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/"</span>], ev)<span class="rem">;</span>
<span class="rem">}, 'JsReferrenceのプロンプトを開く', true);</span>
// msdn.microsoft.comのインデックスだけを再構築する
key.setGlobalKey(['C-b', 'r'], function (ev, arg) {
    ext.exec(<span class="str">"JsReferrence-reIndex"</span>, [<span class="str">"msdn.microsoft.com"</span>], ev)<span class="rem">;</span>
}, 'JsReferrenceのプロンプトを開く', <span class="kwrd">true</span>);</pre></div><div>また、これはKeySnailの設定になりますが、<a
href="https://github.com/mooz/keysnail/wiki/Customizing-(Japanese)">Customizing (Japanese) &#8211; GitHub</a>を読んで、プロンプトの設定をしてC-Enterで連続的にサイトを開くなどできるようにするととても便利になります。</div><div></div><div>KeySnailのプロンプトはとてもできがいいので、前から言っていますがこれのためだけにKeySnailを使うのもありだと思います。<a
href="https://github.com/mooz/keysnail/wiki/plugin">Plugin</a>のHatebnailのはてなブックマーク検索やすべてのタブからGrep検索する事ができる<a
href="https://gist.github.com/raw/905297/find.ks.js">Find</a>などはものすごくプロンプトと相性がいいです。</div><div>リファレンスは何度も見ると思うので、この部分を早くできるようになるとストレスが減ってとてもいいので是非試してみてください。</div><div></div><div>右クリックからインストール→<a
href="https://github.com/azu/KeySnail-Plugins/raw/master/JSReference/js-referrence.ks.js">https://github.com/azu/KeySnail-Plugins/raw/master/JSReference/js-referrence.ks.js</a></div><ul><li><a
href="https://github.com/mooz/keysnail/wiki/keysnail-japanese">KeySnail</a></li><li><a
href="https://github.com/azu/KeySnail-Plugins/tree/master/JSReference">JSReference at master from azu/KeySnail-Plugins &#8211; GitHub</a></li><li><a
href="http://efcl.info/2011/0402/res2453/">KeySnailプラグイン開発の方法とデバッグ | Web scratch</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://efcl.info/2011/0606/res2830/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>JavaScriptでAmazonからASINを取得する方法など</title><link>http://efcl.info/2011/0605/res2817/</link> <comments>http://efcl.info/2011/0605/res2817/#comments</comments> <pubDate>Sun, 05 Jun 2011 01:24:13 +0000</pubDate> <dc:creator>azu</dc:creator> <category><![CDATA[Greasemonkey]]></category> <category><![CDATA[javascript]]></category> <category><![CDATA[Amazon]]></category> <category><![CDATA[ASIN]]></category><guid
isPermaLink="false">http://efcl.info/?p=2817</guid> <description><![CDATA[一つの方法はinput要素から取得する方法 document.getElementById("ASIN").value Amazonはページ中のhiddenなinput要素にASINを持たせてるのでこういう手が取れる。  [...]]]></description> <content:encoded><![CDATA[<h4>一つの方法はinput要素から取得する方法</h4><div
id="codeSnippetWrapper"><pre id="codeSnippet" class="csharpcode">document.getElementById(<span class="str">"ASIN"</span>).value</pre></div><p>Amazonはページ中のhiddenなinput要素にASINを持たせてるのでこういう手が取れる。</p><div
id="codeSnippetWrapper"><pre id="codeSnippet" class="csharpcode">&lt;input id=<span class="str">"ASIN"</span> type=<span class="str">"hidden"</span> value=<span class="str">"4253196519"</span> name=<span class="str">"ASIN"</span>&gt;</pre></div><p>ページの構造が変わったらダメだけど、結構昔からこの部分は変わってないので意外と安定しているかもしれない。 <br
/>amazon.comだと構造が違うものがあって、<a
href="http://www.amazon.com/gp/product/B004LRPGPC/ref=s9_simh_gw_p351_d0_i2?pf_rd_m=ATVPDKIKX0DER&amp;pf_rd_s=center-3&amp;pf_rd_r=1GAMW69P6270WWBTEW98&amp;pf_rd_t=101&amp;pf_rd_p=470938811&amp;pf_rd_i=507846">Amazon.com: Buried Prey eBook: John Sandford: Kindle Store</a>のようにKindle Storeだとページ構造が違ってID=ASINがない代わりに次のようなものがある。</p><div><pre id="codeSnippet" class="csharpcode">&lt;input type=<span class="str">"hidden"</span> value=<span class="str">"B004LRPGPC"</span> name=<span class="str">"ASIN.0"</span>&gt;</pre></div><div>なので、inputを取得する場合は次のような形になる。</div><div
id="codeSnippetWrapper"><pre id="codeSnippet" class="csharpcode"><span class="kwrd">var</span> ASIN = document.getElementById(<span class="str">"ASIN"</span>) || document.getElementsByName(<span class="str">"ASIN.0"</span>)[0];</pre></div><h4>もう一つの方法はwindowオブジェクトのプロパティから取得する方法</h4><p>(2011年6月5日現在だと)</p><div
id="codeSnippetWrapper"><pre id="codeSnippet" class="csharpcode">window.sitbAsin;</pre></div><div>にASINの数値が入っている。(ちょっとできるタイミングが特殊な気がするから扱いにくいかも) <br
/>これはAmazon側のJavaScriptが生やしているので、ページのちょっとした構造の変化では変わらないと思うけど使うライブラリを変えたりJavaScriptが大きく変わると変更されることがある。 <br
/>以前はwindow.productTagsに入っていた。</div><ul><li><a
href="http://subtech.g.hatena.ne.jp/h2u/20090529/1243587848">Amazonの商品個別ページでASINを抜き出す &#8211; おれ ここ めも かきなぐる おまえ ここ よむ なぐる &#8211; subtech</a></li></ul><h4>最後はURLからASIN部分を切り出す方法</h4><p>URLにはASINが入ってるはずなので、ページに構造の変化には強いけど、少しパースが面倒なところがある。 <br
/>どのようなURLがあるかを把握する必要があるので、条件分けなども必要になる。 <br
/>まあASINのフォーマットは\w{10}と決まっているので、ある程度安定するのかもしれない。</p><p>ついでに、replaceStateを使ってリロードなしでAmazonのURLを/dp/ASINだけの短いURLにするGreasemonkey書いた。</p><ul><li><a
href="http://userscripts.org/scripts/show/104173">Amazon URL Cleaner for Greasemonkey</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://efcl.info/2011/0605/res2817/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 1/45 queries in 0.126 seconds using disk: basic
Object Caching 776/885 objects using disk: basic

Served from: efcl.info @ 2012-02-10 07:58:13 -->
