#t_wada_sushi でOpen Collectiveの話をしてきた
#t_wada_sushiでOpen Collectiveの話をしてきました。
- スライド: Open Collective
最近webpackなども利用し始めたOpen Collectiveというウェブサービスについての話をしてきました。 いわゆる寄付サービスやPatreonに近いものです。 オープンソースプロジェクトなどの小さなコミュニティが法人格を持たないで、透明性を持ってお金をやり取り出来るような状況を作ることを目的にしたサービスです。
どういう目的をもって作られてたか、また最近利用するJavaScriptのOSSが増えてきたので簡単に調べた感じです。
Twitterログ
いろいろとヤバいプレゼントを貰いました。ありがとうございました! #t_wada_sushi pic.twitter.com/8ilgnGhEAq
— Takuto Wada (@t_wada) January 23, 2017
webpack2 - 会長
- Tree shakingについて
- webpack2への移行でハマったのは
- postcss
- extract-text-webpack-plugin
- webpack2のTree shakingのしくみについて
- webpackは
// unused
なコメントをつけていく - これをuglifyJSが圧縮時に消し去る
- という仕組み
- Tree shakingした結果12kb減った
- モジュールを元からきちんと分けてるとそこまで効果がない感じ
- 圧縮を書けないとコメントが増える分余計に増える
whatwg/urlについての最近の動向 - laco
- Contributors to whatwg/url
- コミットが最近活発化
- URLSearchParamsについての変更がある
- URLフラグメントのASCII文字列化 (373dbed)
- URL passwordの仕様変更 (5e0b05e)
- URLSearchParamsのコンストラクタ仕様変更 (31ddc5b)
- mapを受け入れるようになった
- tuple、map、文字列にURLSearchParamのコンストラクタに渡せるようになった
- オーバーロード
- Simplify constructing URLSearchParams by annevk · Pull Request #175 · whatwg/url
- URLSearchParams#sort() (960f607)
- Arrayと同じく破壊的なsort
- CanIuseだとバージョン毎の変更の対応が分からない
- MDN
- URLSearchParams - Web API インターフェイス | MDN
- 実装されたバージョンごとの違いもでる
mixed content - jxck
Cookpad緑だよ #t_wada_sushi https://t.co/oeWnGMbQ7V
— azu (@azu_re) January 23, 2017
- CookpadもHTTPS化した
- 大きなサイトがhttps化するのは大変
- mixed contentの問題が大きい
- 広告とか
- 一つでもmixed contentがあるとURLバーがグリーンにならない
mixed contentには二種類
— azu (@azu_re) January 23, 2017
active mixed content = DOMいじれる
passive mixed content = DOMいじれない #t_wada_sushi
- 外れAdガジャ問題
- 広告配信サービスはHTTPS対応していても、中身の雑な広告があるとmixed contentになってしまうことがある
- HTTP_UPGRADE_INSECURE_REQUESTSについて
- ブラウザに対するHTTPヘッダ
- Chrome 43でUpgrade Insecure Requestsに対応してた - あすのかぜ
- Upgrade Insecure Requests
- ヘッダを受けて、ブラウザはサブリソースのhttp://へのリクエストを自動でhttps://のものに変更する
- httpで書いてあってもhttpsとしてリクエストする
- リクエスト先がhttpsがじゃない場合は見つからないので400になる
- mixed contentにはならない(httpは400になるので混ざらない)
- mixed contentの問題
mixed contetntの問題はmixed contentが起きてるか分からないこと。
— azu (@azu_re) January 23, 2017
#t_wada_sushi
-
CSP: block-all-mixed-content + report-onlyで発見できる
- CSP: block-all-mixed-contentでmixed contentはblockされる
Content-Security-Policy-Report-Only: policy
- Content Security Policy (CSP) - HTTP | MDN
-
report-only
modeなら実際にはblockされないで、reportだけを遅れる
-
Welcome to report-uri.io
- UIがダメ、すぐダウンする
- CSP reportの管理ツールでいいものがまだない
- Reporting API 1
- クライアントのログ問題
XSSがなくてもCSPのinline scriptのreportが来る。
— azu (@azu_re) January 23, 2017
Chrome拡張、ブックマークレットとかクライアントはノイズデータが多い #t_wada_sushi
- エラーログ、CSPログなどはノイズが多い
FirefoxのTime-Travel Debugging - kyo_ago
- Firefox DevTools
- FirefoxのTime-Travelデバッグがくる?
- ブレークポイント貼って戻して、再現するデバッグ
Electron - kyo_ago
- Electronのアプリに対してJavaScriptなどをinjectしたい
- ブラウザのウェブサイドはユーザ側からいじれる
- Electronアプリはいじれなくて不便
イベント用の名札シート印刷アプリのCSS - yoshiko
- イベント用の名札シート印刷アプリ「参加者の名は。」を作った - エンジニアをリングする
- 参加者の名は。- Name cards generator for events
- CSSで微妙にはみ出る表現の話
A4サイズにしつつ、少し常にはみ出すようなCSSを書いた話 #t_wada_sushi https://t.co/zZocQrChZq
— azu (@azu_re) January 23, 2017
CSSで固定比率のスライド #t_wada_sushi https://t.co/R8jEe0PBh8
— よしこ (@yoshiko_pg) January 23, 2017
::beforeはその要素の中の先頭、::afterはその要素の中の最後。
— azu (@azu_re) January 23, 2017
つまり疑似要素は中にくる #t_wada_sushi
- 疑似要素とmarginが親の横幅を元にする仕様を使った固定比率の話
Modern JavaScript概観、そしてElectronへ - taichi
- 皆がよくハマるところを防ぐコードを書いていくとフレームワークは汚くなる
- Angular 2、Vue1, 2はコードがキレイ
「食べられる泥」 #t_wada_sushi
— Local Proxy (@kyo_ago) January 23, 2017
その他
- Dart
- rubyのsassはdart-sassになった
- Google社内での再熱
Google内部でDartはかなり人気があるし、今でも2か月に一回はリリースされている。確かに公式サイトを見ると、次世代のAdWordsはDartで作られたとある。 https://t.co/2bKYmskevO #t_wada_sushi
— 太一 (@ryushi) January 23, 2017
DartはHaxeの立ち位置を目指している? #t_wada_sushi
— azu (@azu_re) January 23, 2017
- DartのStrongModeは極限まで型推論を頑張るモード
- V8のStrong Modeとはまた異なるもの
- Dart Dev Compilerがでない
最近やったこと - t_wada
- unassert-js
- organizationになった
- power-assertの 200ぐらい増えた
- 中国の人達が見つけたため
- alibabaとか最近OSSでも活発
- chai to assert
- twada/chai-to-assert: A jscodeshift codemod that transforms from chai to assert
- 元はany tool to migrate
should/expect
code topower-assert
? · Issue #74 · power-assert-js/power-assertのIssue - chatの構文を調べてる
- 結構凶悪
- ランタイムに型をチェックして分岐している部分がでてくる
- 静的にはわからないため変換が難しい
// simple referencing
var obj = { foo: 'bar' };
expect(obj).to.have.property('foo');
expect(obj).to.have.property('foo', 'bar');
// deep referencing
var deepObj = {
green: { tea: 'matcha' }
, teas: [ 'chai', 'matcha', { tea: 'konacha' } ]
};
expect(deepObj).to.have.deep.property('green.tea', 'matcha');
expect(deepObj).to.have.deep.property('teas[1]', 'matcha');
expect(deepObj).to.have.deep.property('teas[2].tea', 'konacha');
- http://chaijs.com/api/bdd/#method_property
- wow
- 変換にはfacebook/jscodeshift: A JavaScript codemod toolkit.を使ってる
- Reactのマイグレーションツールなどでも使われてる
- フレームワーク側がマイグレーションをするツールとして提供するケース
- Assertionツール同士の変換ツールが色々有る
- 2週ぐらいすると必要なものが残る
お疲れ様でした。
お知らせ欄
JavaScript Primerの書籍版がAmazonで購入できます。
JavaScriptに関する最新情報は週一でJSer.infoを更新しています。
GitHub Sponsorsでの支援を募集しています。