2021-09-21
TOC
💬 ひとこと
1 ヶ月以上あいてしまった。 Next.js, swr, react-hook-form, Chakra UI あたりを素振りしてこんなものを作ってた。 Pixela API をブラウザ上で試せる Playground を Next.js で作った - dackdive's blog
✅ 読んだ
📝 : 下の方に内容メモあり
☁︎ Salesforce
🌐 Web, Frontend
- うわっ…リスト表示重すぎ… React のパフォーマンス改善の処方箋/react-list-performance-improvement - Speaker Deck
- ようやく見た。virtuoso は知らなかったな。勉強会当日 twitter 上で「10000 件超えてきたら canvas で...」みたいな話見た気がしたけど特に言及されてなかった
- iframe sandbox でユーザー入力スクリプトを実行する - Speaker Deck
- めちゃくちゃ丁寧でわかりやすかった。iframe sandbox を使って 3rd party のスクリプトを安全に実行する方法
- フロントエンドテストプラクティス in open 8 - Speaker Deck
- 【追記あり】ES2022 Array#at がちょっとおかしい #fix_ecmascript_at - Qiita
- lahmatiy/react-render-tracker: React render tracker – a tool to discover performance issues related to unintentional re-renders and unmounts
- Announcing TypeScript 4.4 - TypeScript
--exactOptionalPropertyTypes
知らなかった。オブジェクトの key がないのと明示的に undefined をセットしたのを区別してくれる
- garmeeh/next-seo: Next SEO is a plug in that makes managing your SEO easier in Next.js projects.
- これ入れたらさっと OGP とか対応できるのか
- 📝 The Firebase Blog: Deep dive into the new Firebase JS SDK design
- Introducing: API to automate publishing and updating Microsoft Edge Add-ons - Microsoft Tech Community
- Edge アドオンの publish をプログラムで自動化できるような API が提供される。まだまだ experimental な感じかな
- ホスト名の最後が数字な URL の扱いについて - ASnoKaze blog
- メルカリ Shops のフロントエンド | メルカリエンジニアリング
- mouseover 中に表示される DOM のデバッグ | blog.jxck.io
- いつも困ってた。DevTools で mouserleave/mouseout のイベントハンドラを消す、なるほど
- 総当たり攻撃時のパスワード最大解読時間の表(by 上野宣)について分析した - Qiita
- 15 分でわかった気になる Vite / Explain Vite in 15 minutes - Speaker Deck
🦀 Rust, WebAssembly
- seed-rs/seed: A Rust framework for creating web apps
- Rust の構造体に文字列を持たせるいくつかの方法 - Qiita
- マイクロソフト、WebAssembly と WebGL で推論エンジンを実装した「ONNX Runtime Web」(ORT Web)をオープンソースで公開 - Publickey
- なんで WebGL?と思ったけど "WebGL は GPU にアクセスするための一般的な規格" か
- Cross Compiling Rust Binaries with Github Actions
- GitHub Actions での Rust のクロスコンパイル。GitHub Releases へのリリースも
その他
- 新卒向け研修資料「テスト文字列に"うんこ"と入れるな」を公開しました | 株式会社インフィニットループ技術ブログ
- techschool/simplebank
- AWS CDK に Lambda 関数を数秒でデプロイする hotswap deployments 機能が追加されました
- Lambda 関数だけに変更があった場合に素早くデプロイできる--hotswap オプション
- 統計の入門講座が無料に、京大メソッドでデータサイエンス関連教員が担当 | Ledge.ai
- マイクの使い方と音質向上の Tips - bluelines
- Web 会議のマイクはどれがおすすめ? 試行錯誤した 3 名がイチオシを紹介 - ソレドコ
- 新卒エンジニアがフルリモートで知識を吸収するためにモブプロを取り入れてみた話 - Yahoo! JAPAN Tech Blog
- 【Amazon】予算 10 万円で椅子を選ぶなら| kargo かるご / ErgoHealth | note
- 中心メンバーしゃべりすぎ問題と、その手当て | Coral Capital
- どっちがいいってことではないんだろうけど。でも最近主流の自律的なチーム・組織とか目指すんだとメンバーが能動的になるよう仕向けたほうがいいんだろうな
- ノーコード・コードレスで Google スプレッドシートから API を作成できる「SSSAPI」β 版がリリース - Digital Shift Times(デジタル シフト タイムズ) その変革に勇気と希望を
- 【翻訳】技術的負債という概念の生みの親 Ward Cunningham 自身による説明 - t-wada のブログ
- 読み直してた。これ 1 年以上前か
- 📕 RISC-V と Chisel で学ぶ はじめての CPU 自作 ――オープンソース命令セットによるカスタム CPU 実装への第一歩:書籍案内|技術評論社
- 真面目に OSS を公開する際にやってみたこと・意識したこと
- これはすごく参考になるまとめ。自分も Chrome 拡張作ったときもっと広報すればよかった。OG Image やってみよ
- リモートアジャイル開発のノウハウ集 第 2 版を公開しました
- 共感できるの多かった。ひみつきち、無言の同意をやめる、打ち合わせ前のざつだんとか
- ソフトウェアエンジニアとして Ubie に入社しました|えんぴつ| note
✨ 読みたい
- Keeping third-party scripts under control
- Using asynchronous web APIs from WebAssembly
- The webworkers driven UI framework neo.mjs version 2 release announcement | by Tobias Uhlig | Apr, 2021 | ITNEXT
- Use CSS Variables instead of React Context | Epic React by Kent C. Dodds
- 📕 Tokio チュートリアル (日本語訳)
✏️ 書いた
🗑Stale
- 🦀 🚀 Visualizing memory management in Rust | Technorage
- 🦀 Hello, Video Codec!
- 🦀 Using WebAssembly threads from C, C++ and Rust
- How to Build a Webview-Powered VS Code Extension with LWC | Salesforce Developers Blog
- HTTP キャッシュ入門の入門 – cat /dev/random > /dev/null &
📝 読んだ記事のメモ
The Firebase Blog: Deep dive into the new Firebase JS SDK design
Firebase SDK v8 -> v9 にかけてインターフェースを大きく変えるような変更を行ったそう。
元々は firebase.auth().onAuthStateChanged(user => {...})
のように巨大な firebase オブジェクトの下に様々なモジュールが生えている状態だったのが、これを廃止し、独立したモジュールとして import するようになった。
before
import firebase from "firebase/app";
import "firebase/auth";
firebase.initializeApp({
/* config */
});
const auth = firebase.auth();
auth.onAuthStateChanged((user) => {
// Check for user status
});
after
import { initializeApp } from "firebase/app";
import { getAuth, onAuthStateChanged } from "firebase/auth";
const firebaseApp = initializeApp({
/* config */
});
const auth = getAuth(firebaseApp);
onAuthStateChanged(auth, (user) => {
// Check for user status
});
このような変更を行った理由として挙げているのが、webpack などのモジュールバンドラーに備わっている tree shaking。
before では export なしの firebase/auth
モジュールを import することで firebase オブジェクトに auth という名前空間を作成し、その下の各種メソッドが利用可能になるが、これだとユーザーが使っていないメソッド群もバンドルコードに含まれることになる。
そのため、after のように各名前空間からは getXXX および各種関数を export し、getXXX に firebase 本体(initializeApp()で生成するインスタンス)を渡す形式に変更された。
これにより、ユーザー側でバンドルする際には使用している関数のみが含まれるようになる。
また、段階的に移行できるよう新しいバージョンでも以前と同じインターフェースの API を提供している。