Fork me on GitHub

2019-03-12のJS: TensorFlow.js 1.0、詳細Cache-Control、`JSON.stringify(-0)`

Edit on GitHub 編集履歴を見る

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ヘッダについて詳しく解説されています。

publicprivatemax-ageno-storeno-cacheimmutablestale-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

しかし、===での比較なら-00の違いは無視されることやString()の挙動と合わせている点など、
現実ではあまり問題となるケースがないという話もあり、一旦PRが取り下げられています。

// === は -0 と 0 の違いを無視して比較する
JSON.parse(JSON.stringify(-0)) === -0; // => true

興味がある人は仕様のIssueを読んでみると面白いかもしれません。
===Object.isの比較については次のページがわかりすいと思います。


JSer.infoをサポートするには

JSer.info Sponsors

JSer.info SponsorsGitHub SponsorsとしてJSer.infoを支援してくれている方々です。


ヘッドライン


Release 1.0.0 · tensorflow/tfjs

github.com/tensorflow/tfjs/releases/tag/v1.0.0

MachineLearning library JavaScript

TensorFlow.js 1.0リリース。
パフォーマンスの改善、Tensor.array()Tensor.arraySync()の追加など


Release: [email protected] - 📣 announcements - npm forum

npm.community/t/release-npm-6-9-0/5911

npm ReleaseNote

npm 6.9.0リリース。
指定した日付より前のバージョンをインストールする--beforeオプションの追加、パッケージ名をaliasしてインストールするpackage aliasのサポートなど


rmdm/rmgr: Release resources gracefully

github.com/rmdm/rmgr

JavaScript library

リソースを管理するライブラリ。
リソースごとにinitializeとdispose時の処理を定義し、リソースの解放などを行うヘルパーライブラリ


Marble.js 2.0 🔥 — reactive, better, functional, stronger

medium.com/@jflakus/marble-2-reactive-better-functional-stronger-5924119d3098

JavaScript library ReleaseNote

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

JavaScript DOM library ReleaseNote

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/

HTTP article

Cache-Control HTTPヘッダについての解説記事。
publicprivatemax-ageno-storeno-cacheimmutablestale-while-revalidateなどそれぞれの項目の解説。
またCache Bustingの手法などについても書かれている


JavaScript loose comparison (==) step by step

felix-kling.de/js-loose-comparison/

ECMAScript JavaScript spec

==がどのように値を比較するかをECMAScript仕様に定義されているアルゴリズムのステップごとにチェックするツール。


What's New In DevTools (Chrome 74)  |  Web  |  Google Developers

developers.google.com/web/updates/2019/03/devtools

Chrome debug article

Chrome 74の開発者ツールの変更点について。 CSS propertyの影響をハイライト、Lighthouse v4へアップデート、WebSocketのバイナリメッセージの表示対応。パフォーマンスパネルでLong taskを記録できるようになるなど。


A Complete Guide to useEffect — Overreacted

overreacted.io/a-complete-guide-to-useeffect/

React article

React HooksのuseEffectの動作や使い方、よくある質問について


サイト、サービス、ドキュメント


Request Map Generator

requestmap.webperf.tools/

webservice performance Tools

指定したURLのリクエストの関係をマップ表示して可視化するツール。
WebPageTestの結果を利用している


twbs/rfs: Automated responsive font sizes

github.com/twbs/rfs

CSS library PostCSS

レスポンシブなフォントサイズを指定するCSS。
Sass、PostCSS、less、stylus版が用意されている


Feature policy

featurepolicy.info/

JavaScript browser example document

Feature Policyのデモサイト。 それぞれのポリシーのサポート状況やドキュメント、サンプルなどがまとめられている


ソフトウェア、ツール、ライブラリ関係


Introduction · AnyProxy

anyproxy.io/en/

node.js proxy Tools

HTTPSやWebSocketなどに対応したローカルProxyツール。
Proxyしたログを閲覧するGUIもついている。


jaames/iro.js: 🎨 Color wheel widget for JavaScript - with zero dependencies and a lovely SVG-based UI

github.com/jaames/iro.js

SVG color library

依存がないカラーピッカーライブラリ。SVGをベースにしたカラーピッカーUIを作成するライブラリ


vladocar/femtoJS: femtoJS - Really small JavaScript (ES6) library for DOM manipulation.

github.com/vladocar/femtoJS

JavaScript jQuery library

一部のjQueryライクなDOM APIを提供するライブラリ。
ES2015+に対応したブラウザのみを対象にしている。


この記事へ修正リクエストをする
JSer.info Slackに参加する