JSer.info #426 - TensorFlowのモデルをブラウザやNode.jsでも利用できるTensorFlow.js 1.0がリリースされました。
1.0ではTensor.array()
とTensor.arraySync()
の追加、またAPIの細かなリネームといった破壊的な変更が含まれています。
また、リリースしたばかりの頃にくらべてパフォーマンスが改善されています。
Cache-Control for Civilians – CSS Wizardry – CSS Architecture, Web Performance Optimisation, and more, by Harry Robertsという記事では、Cache-Control
HTTPヘッダについて詳しく解説されています。
public
、private
、max-age
、no-store
、no-cache
、immutable
、stale-while-revalidate
といった各プロパティの動作やユースケースについての解説がされています。
またCache Bustingの手法などやClear-Site-Data
ヘッダ、ライブ配信向けのページの設定など幅広い内容を扱っています。
今週のIssue
ECMAScript仕様のIssueにJSON.stringify(-0)
の処理についてのIssueが作られています。
現在の仕様ではJSON.stringify(-0)
した場合の結果はString(-0)
した場合と同じロジックであるため、-
を無視した"0"
という文字列になります。
一方で、JSON.parse("-0")
は-
を考慮するため-0
という結果になります。
そのため、parseしてstringifyした結果が元の値とはObject.is
で一致しないケースがあります。
この仕様は、JSONを発見したdouglascrockford/JSON-jsに基づいたものです。
// 今の仕様
Object.is(JSON.parse(JSON.stringify(-0)), -0); // => false
この仕様を修正してJSON.stringify(-0)
が"-0"
となるようなPRが出されました。
// PRで出されていた仕様
Object.is(JSON.parse(JSON.stringify(-0)), -0); // => true
しかし、===
での比較なら-0
と0
の違いは無視されることやString()
の挙動と合わせている点など、
現実ではあまり問題となるケースがないという話もあり、一旦PRが取り下げられています。
// === は -0 と 0 の違いを無視して比較する
JSON.parse(JSON.stringify(-0)) === -0; // => true
興味がある人は仕様のIssueを読んでみると面白いかもしれません。
===
とObject.is
の比較については次のページがわかりすいと思います。
JSer.infoをサポートするには
- 😘 知り合いにJSer.infoをおすすめする
- ❤️ GitHub Sponsorsで@azuのスポンサーになる
- 🐦 X(Twitter)で@jser_infoをフォローする
JSer.info Sponsors
JSer.info SponsorsはGitHub SponsorsとしてJSer.infoを支援してくれている方々です。
ヘッドライン
Release 1.0.0 · tensorflow/tfjs
github.com/tensorflow/tfjs/releases/tag/v1.0.0
TensorFlow.js 1.0リリース。
パフォーマンスの改善、Tensor.array()
と Tensor.arraySync()
の追加など
Release: [email protected] - 📣 announcements - npm forum
npm.community/t/release-npm-6-9-0/5911
npm 6.9.0リリース。
指定した日付より前のバージョンをインストールする--before
オプションの追加、パッケージ名をaliasしてインストールするpackage aliasのサポートなど
rmdm/rmgr: Release resources gracefully
リソースを管理するライブラリ。
リソースごとにinitializeとdispose時の処理を定義し、リソースの解放などを行うヘルパーライブラリ
Marble.js 2.0 🔥 — reactive, better, functional, stronger
medium.com/@jflakus/marble-2-reactive-better-functional-stronger-5924119d3098
RxJSを使ったNode.js向けのHTTPフレームワークであるMarble.js 2.0リリース。 WebSocketsの対応、Contextを使ったDIの対応、io-tsを使ったバリデーションの対応など
jsdom/Changelog.md at master · jsdom/jsdom
github.com/jsdom/jsdom/blob/master/Changelog.md#1400
JSDOM 14.0.0リリース。
JSDOM.fragment()
がbrowsing contextを持たないframentsを作成するように変更、element.blur()
のリグレッションの修正など
アーティクル
Cache-Control for Civilians – CSS Wizardry – CSS Architecture, Web Performance Optimisation, and more, by Harry Roberts
csswizardry.com/2019/03/cache-control-for-civilians/
Cache-Control
HTTPヘッダについての解説記事。
public
、private
、max-age
、no-store
、no-cache
、immutable
、stale-while-revalidate
などそれぞれの項目の解説。
またCache Bustingの手法などについても書かれている
JavaScript loose comparison (==) step by step
felix-kling.de/js-loose-comparison/
==
がどのように値を比較するかをECMAScript仕様に定義されているアルゴリズムのステップごとにチェックするツール。
What's New In DevTools (Chrome 74) | Web | Google Developers
developers.google.com/web/updates/2019/03/devtools
Chrome 74の開発者ツールの変更点について。 CSS propertyの影響をハイライト、Lighthouse v4へアップデート、WebSocketのバイナリメッセージの表示対応。パフォーマンスパネルでLong taskを記録できるようになるなど。
A Complete Guide to useEffect — Overreacted
overreacted.io/a-complete-guide-to-useeffect/
React HooksのuseEffect
の動作や使い方、よくある質問について
サイト、サービス、ドキュメント
Request Map Generator
指定したURLのリクエストの関係をマップ表示して可視化するツール。
WebPageTestの結果を利用している
twbs/rfs: Automated responsive font sizes
レスポンシブなフォントサイズを指定するCSS。
Sass、PostCSS、less、stylus版が用意されている
Feature policy
Feature Policyのデモサイト。 それぞれのポリシーのサポート状況やドキュメント、サンプルなどがまとめられている
ソフトウェア、ツール、ライブラリ関係
Introduction · AnyProxy
HTTPSやWebSocketなどに対応したローカルProxyツール。
Proxyしたログを閲覧するGUIもついている。
jaames/iro.js: 🎨 Color wheel widget for JavaScript - with zero dependencies and a lovely SVG-based UI
依存がないカラーピッカーライブラリ。SVGをベースにしたカラーピッカーUIを作成するライブラリ
vladocar/femtoJS: femtoJS - Really small JavaScript (ES6) library for DOM manipulation.
一部のjQueryライクなDOM APIを提供するライブラリ。
ES2015+に対応したブラウザのみを対象にしている。