2021-03-16
ひとこと
読んだ
📝 : 下の方に内容メモあり
☁︎ Salesforce
なし
Web, Frontend
- 📝Serving our customers more effectively with new release cycles for Microsoft Edge - Microsoft Edge Blog
- Edge もリリースが4週おきに
- Schniz/fnm: 🚀 Fast and simple Node.js version manager, built in Rust
- Rust 製の Node.js パッケージマネージャ。前もこんなのなかったっけ?
- 📝 Test262, Inside-out - Bocoup
- ECMAScriptの仕様に準拠しているかをテストするためのtest262を約6年間メンテしてきて、これまでにどんなテストのバグあるいはJSエンジン側の不具合を見つけたかの話
- Scripting with GitHub CLI - The GitHub Blog
- GitHub CLIをCLI、シェルスクリプト、GitHub Actionsで使うときのTips。gh aliasでエイリアス、PAGER環境変数でページャー指定、gh apiでREST/GraphQL APIをcurlライクに叩ける、など
- props のバケツリレーって何が悪いんだっけ - fsubal
- props、JSXも渡せる
- サイボウズWebフロントエンド脱レガシーの今までとこれから - Speaker Deck
- Microsoft Edge Legacy desktop application support ends today - Microsoft Edge Blog
- 3/9でLegacy Edgeのサポートは終了。来月4/13のWindowsアップデートですべてのWin 10のEdge Legacyは自動削除されChromium版がインストールされる
- old: DockerとRemote Containersでの開発環境が最高過ぎる - Sweet Escape
- 2020/06の記事
- WAI-ARIAを学ぶときに整理しておきたいこと
- 難しい〜。aria属性はロールによって指定できるものとできないものがあり、また各html要素に暗黙のロールが設定されてる(ので、結果として要素によって指定できる属性が違うよ)
- old: A Guide to Node.js Logging - Twilio
- 2019年の記事だけどよかった。ライブラリやCLIならdebug、CI環境やターミナルモードかどうか判定すべき、など。どういうときにログを残すといいか、は触れられてなかった
- Announcing the New TypeScript Handbook | TypeScript
- Handbook 刷新されたぽい
その他
- アメリカのベンチャーに日本からリモートワークするってこと - ikeike443のブログ
- 日本に居ながら海外の会社にリモートワークで働いていい給料をもらう方法 - ベルリンのITスタートアップで働くソフトウェアエンジニアのブログ
- 毎日コードを書く話- Message Passing
- 誰がどう見てもそうとしか受け取れない文書術(公開版) - Speaker Deck
- SlackのLPを例にプロダクトをグローバル展開する時に最適化した方が良い理由
読みたい
- Open Sourcing Salesforce CLI Update Feb. 2021 | Salesforce Developers Blog
- Web VitalsとJavaScript Errorの可視化 – watilde's blog
- TypeScript 4.2 覚書
- TypeScriptの設定の良し悪し
- Use CSS Variables instead of React Context | Epic React by Kent C. Dodds
- 📕 Tokio チュートリアル (日本語訳)
- Atomic Scrum 個人の生産性を最大化する方法 - Speaker Deck
- Smashing Podcast Episode 35 With Stephanie Stimac & Melanie Richards: What’s Next For HTML Controls? — Smashing Magazine
- Edge の PM が出てる Podcast
- New Microsoft Edge to replace Microsoft Edge Legacy with April’s Windows 10 Update Tuesday release - Microsoft Tech Community
- Rust 1.50を早めに深掘り - OPTiM TECH BLOG
Stale
読んだ記事のメモ
Serving our customers more effectively with new release cycles for Microsoft Edge - Microsoft Edge Blog
先日のChromeのアナウンス(https://blog.chromium.org/2021/03/speeding-up-release-cycle.html)に続き、Edgeもリリースサイクルが6週おき→4週おきになりますよ、という話。 開始時期は 9/23週リリース予定のEdge 94から。 参考:リリーススケジュール https://docs.microsoft.com/en-us/deployedge/microsoft-edge-release-schedule#microsoft-edge-releases
また、企業ユーザー(enterprise customers。この定義が不明)向けにリリースサイクルを8週おきに延長できるExtended Stable optiontというオプションも提供。 これもChrome同様。 その場合は隔週で重要なセキュリティアップデートのみ適用されるそう。
Test262, Inside-out - Bocoup
ECMAScriptの仕様に準拠しているかをテストするためのtest262を約6年間メンテしてきて、これまでにどんなテストのバグあるいはJSエンジン側の不具合を見つけたかの話。
- (ブログを書いた)Bocoupという会社はtest262を6年ぐらいメンテしてる
- テストは strict mode のときとそうでないときで2回ずつ実行してる
- 一方の mode でのみ成立するテストについては、テストコード内に
noStrict
/onlyStrict
というメタデータをつけて制御している - 記事中では過去に遭遇したテストのバグやテストのおかげで気づけたJSエンジンの不具合が中心
Test bug: unnecessary flags
- 一番多かったテストのバグは不要なフラグの使用だった。
noStrict
やonlyStrict
をつけたテストが実際にはどちらのmodeでも動くことが期待されるものだった - たとえば、これはstrict modeを期待しているが、実際にはstrict modeでなくてもテストはパスする
// Copyright (c) 2012 Ecma International. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
es5id: 10.2.1.1.3-4-22-s
description: >
Strict Mode - TypeError is not thrown when changing the value of
the Constructor Properties of the Global Object under strict mode
(Object)
flags: [onlyStrict]
---*/
var objBak = Object;
try {
Object = 12;
} finally {
Object = objBak;
}
Test bug: unintended syntax errors
- 意図しないシンタックスエラーが発生していたテスト
- トリッキーだったのは、それらはinvalidなシンタックスを含むことが想定されていたこと
- 期待しているのと別の理由でシンタックスエラーになっていた
/*---
description: >
It is a Syntax Error if LeftHandSideExpression is neither an ObjectLiteral
nor an ArrayLiteral and IsValidSimpleAssignmentTarget(LeftHandSideExpression)
is false. (for-await-of statement in an async function declaration)
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
features: [destructuring-binding, async-iteration]
flags: [generated, onlyStrict, async]
negative:
phase: parse
type: SyntaxError
---*/$DONOTEVALUATE();
async function fn() {
for await ([arguments] of [[]])
}
- 上の例は、strict mode では
arguments
がないのでエラーになることを期待していた - が、実際には for の後ろに
{}
がないので別のシンタックスエラーになっていた - これがどういう結論をもたらしたか?
- JavaScriptCore だけがunintentional syntax errorという理由でこのテストをパスした
- また、この実行エンジンは修正後のテストもエラーを出さずにパースした→テストを修正したことで実行エンジンの不具合に気づけた!
- 実際には、より一般的なテスト(async関係ないやつ)がすでに存在したので、JavaScritpCoreのメンテナに新たに報告することはなかった
...みたいな話があと2,3続く