サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
今年の「#文学」
0-9.sakura.ne.jp
kyo ago Chrome API JSer.info 5周年 おめでとうございます 自己紹介 @kyo_ago ChatWorkの中の人です 二槽式の人 Chrome API chrome.automation なんか内部DOMみたいなやつ? 自動操作とは関係なかった なんでこんな名前なんだろう。。。 chrome.processes レンダリングプロセスの情報が取れる タブとかその他のものからプロセス取れる タブ毎のCPU使用率とかメモリ使用量とかネットワーク使用量とかCache情報とかとれる chrome.experimental.devtools.console devtoolsのconsoleのメッセージが取れたり出したりできる メッセージだけっぽいのであんまり嬉しくない consoleに入力した内容をbabelかけて実行したかった Remote debugging proto
解決策 フロントエンドを「Frontend-backend」と「Frontend-frontend」に分けてpostMessageで通信する Frontend-frontendはFluxを採用してFrontend-backendから送られてきたメッセージを流すだけにする Frontend-frontendで発生したイベントはpostMessageで投げてFrontend-backendで処理する
自己紹介 @kyo_ago ChatWorkの中の人です 普段はLT中心 ApplicationCacheとかSSEとかCSSを何とかしたい人 (自覚は無いです)
CSSの問題 セレクター設計が辛い 特に大規模化する場合、「CSSの問題」===「セレクターの問題」と言っていい (それ以外にもあるけど、大規模化するとほぼ確実にセレクターは問題になる) なぜ大規模化するとセレクターが辛くなるのか 「隠蔽ができない」 サイト全体で使用しているグローバル変数に対する定義を書いているようなもの
それぞれの対応方法 Chrome、Firefox meta[name="viewport"][content="width=device-width"] IE touch-action: none iOS8 touch time(150ms)
「君は新人だから知らないと思うけどリクエストが改竄されることもある。フロントエンドValidationは安全ではない」
自己紹介 (SelfIntroduction) @kyo_ago ApplicationCache Poisoning歴1年3ヶ月の新米です。 (ApplicationCache Poisoning NEWBIE.)
構成 TravisCI上に仮想環境作成 TravisCIからProtractorでSauseLab呼ぶ SauseLabからTravisCI上の仮想環境に繋げる SauseLabはChrome, Firefox, IE, Safariでテスト
最新版で試してみた 圧縮前コード381KB 圧縮後コード14KB コンパイル(fastOptJS)時間[success] Total time: 13 s 最適化コンパイル(fastOptJS)時間[success] Total time: 22 s (MBA 11-inch, Mid 2011)
SSEとは Server-Sent Events 常時接続系API JavaScriptからはnew EventSource(url);で使う JavaScript APIと通信プロトコルが合わさったもの プロトコルはHTTPのContent-type: application/octet-stream;、Transfer-Encoding: chunked;
kyo ago 作ることと、しゃべること 自己紹介 @kyo_ago 作ることと、しゃべること 作ることと、しゃべることどちらが重要か 自分はこう考えてる 最初はとにかく喋ったほうがいい でも 形になってきたら喋らない方がいい なぜ? しゃべることでイメージが固まる 作ってるものが正しいか不安になる しゃべるだけで満足してしまう 作ることよりしゃべることが楽しくなる 未実装のアイデアが増えてくる アイデアが形になったら喋らない方がいい 自分がほしい物を作るべきか? 自分はわりと他人がほしいかどうかを考える 他人がほしい物はポートフォリオにしやすい ひとに見せても恥ずかしくない ご清聴ありがとうございました
自己紹介 @kyo_ago Scala, TypeScript, LocalProxy, ApplicationCache Chrome apps, extension合わせて20個くらい作成
2008~2009 会社の技術ブログを書く 技術ブログを書くようになったのは他に書く人がいないから 元々個人ブログで書いていたが、会社ブログのほうがウケるのでそっちメインに 個人ブログを書いてたのは日報に書いてた技術ネタをブログにまとめてたから 2008~2009 jQuery関連記事でブクマが付くのが嬉しくて週1くらいで書く jQueryの情報がまだが少なかった 社内からイベント告知記事の投稿を依頼されるようになる 社内からも広報的な意味で認知してもらっていた JS関係のイベントに参加するようになる
〜2000 ブラウザ自体の問題が多かった 「セキュリティのためJavaScriptはoffに」 現存していない技術を使った攻撃も多い 主な攻撃対象は利用者のOS自体 〜2000 JavaApplet、ActiveX、VBS、ActiveScript chm、mhtml等を利用したメーラ経由の攻撃 バッファオーバーフロー等危険な攻撃も iframeやwindow経由のOriginの詐称
壁 各htmlにJavaScriptを書く どこから呼ばれているかわからないコードが増える 既存のコードを修正できなくなる 機能追加がコピペになる lib2.js, showDialog2みたいなコードが出てくる
豊富な言語仕様 関数型とオブジェクト指向型のマルチパラダイム Javaのライブラリが透過的に呼び出せる 省略できる部分が多い 他の言語があえてサポートしなかったであろう仕様も採用 (implicit系とか) JSer的に嬉しい部分も多い JSer的に嬉しい部分 Future、ActorはPromiss、Worker JavaよりはJSに近い 言語仕様的に欲しいものは大抵ある (マクロとか、ヒアドキュメントとか、文字列リテラルへの式埋め込みとか) 言語の強力さと静的型付け言語としてのバランスはいい 当然JSerに辛い部分もある
常時接続が一般化し、ブラウザ上のオフライン動作の需要は減少 (逆にネイティブアプリケーションすらオンライン動作を要求)
createDocumentFragmentとcreateRangeとinsertAdjacentHTMLとcompareDocumentPositionとパフォーマンスとブラウザ互換
ユリウス通日(-つうじつ AJD) 紀元前4713年1月1日からの通算日数 例:2013-9-17 = 2456553 PostgreSQLの内部で使われてたり 契約関係でも使われてるとか (単純にn年だとうるう年、nヶ月だと大小あるので) 日付が100万を超えるので、「2400000.5」(240万)を引いた修正ユリウス日もよく使われる 「ユリウス暦」とは関係ないので注意 (ユリウス暦は紀元前45年〜1582年まで使用されていた暦。グレゴリオ暦に置き換えられた)
「location.hrefが信用出来ない問題」 http://hoge.com%[email protected]/へアクセスした場合にlocation.hrefがhttp://hoge.com/@example.com/を返す (勝手にデコードされている) location.href = location.hrefで別のページに飛ぶ iOS 6.0未満、Android4.1未満の標準ブラウザで再現 Masato Kinugawa Security Blog: location.hrefの盲点 「location.hrefが信用出来ない問題」 location.hrefに@使ってなにか入れるのは普通にできる (http://hoge:[email protected]/のlocation.hrefはhttp://hoge:[email protected]/) location.hrefを独自解析
なぜわかりにくいのか 「TypeScript ジェネリクス」で検索しても「?」 型の恩恵を受けたあとじゃないと嬉しさがわからない TypeScriptでのサポートも最近 JS使ってる人間から見ると書式的に型変換と紛らわしい
自己紹介 @kyo_ago 趣味はテンプレートエンジン開発と、ローカルプロキシ開発です 超高速開発コミュニティに昔書いたコードが使われてました\(^o^)/ Mac版FiddlerのAutoResponderサポートが待ち遠しいです
kyo ago 桐島、TDDやめるってよ 仏教で悟るTDD 人はなぜコードを書くのか コード コード=坐禅 良いコードを書きたい 良いコードを書きたい=解脱したい テスト テスト=公案 Test Firstは悟りへの道 ただし、Test Firstが解決してくれることは少ない でも一部の問題はTest Firstが非常に適してる 「Test Firstの実践法」 「Test Firstの費用対効果」 「Test Firstの採用理由」 ご清聴ありがとうございました
Modelどうする? サンプルコードはControllerの中に書かれてるものが多いけど、そのまま使うと悲しくなる 基本的に最初からModelを別に作成してControllerから使う方がいい 自分ではBackbone.Model、Backbone.Collectionとか使ってみた AngularJS自体でやるならagektmr/flexbox-experiment参照(今日知った)
オフラインでも内容を表示できるキャッシュ機構 .appcacheファイルで指定した内容を自動的に差分確認して更新 テキスト、バイナリなんでもOK
「絶対に正規表現を使わないコード」、「ifのブロック内でvarしてるコード」、「日付の計算が間違ってるコード(動くけど)」、「最初JSが分かる人が書いてるけどその後引き継ぎの人はあんまり詳しくなくてちょっとづつ崩れてってるコード」なんかがあったり
それ以外にも簡単なので自作されることも (ぶっちゃけこれでもいい) function template (template, param) { return template.replace(/{{(.+)}}/g, function (all, name) { return param[name] || ''; }); }
コードを文字列として分割し、どういった内容が書かれているか解釈すること /* block comment */ (function () { //line comment console.log(/regexp/); return 'string'; })()
PACとは何か Proxy Auto Config Proxyの設定情報をJSで書ける PC, iOSのみ設定可能 (Androidは4.1でも設定できなかった) なぜ重要か 「指定ドメイン、パスのみProxy通す」とかできる (Commet等のLocal Proxyを通しにくいAPIを除外したり) 安全に常時LocalProxyをたちあげていられる (OS、アプリのアップデートや動画再生等でも落ちない) PAC sample(example.comに接続する場合だけproxyを通す) function FindProxyForURL(url, host) { if (host === 'example.com') { return 'PROXY 127.0.0.1:8888'; } return 'DIRECT'; }
次のページ
このページを最初にブックマークしてみませんか?
『0-9.sakura.ne.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く