東京Node学園祭2018のアウトラインメモ
東京Node学園祭2018に参加したのでアウトラインメモ。
Keynote
- Node学園のロゴが変わった
- NodeFestは今年で最後、来年からJSConf JP(仮)の予定
Offline-First Collaborative Data Structures
-
P2P データプロトコルのDataについて
-
P2P === Can run anywhere === Don not trust specific server
-
話すこと
- P2P
- Append only logs
- Hash Array Mapped Tries
-
普通のサーバへの接続方法
const net = require(“net”) const socket = net.connect(“test-server”)
-
名前が暗号化されてない
-
問題: すべての通信を暗号化したい
-
P2PのPublic Keyがnameになって名前解決する
- 名前もpublic key的に暗号化される
-
- NOISE protocolでつなぐ
- public key === name
-
デモ
- NOISEを使って接続する
- 普通のnetではhostnameが暗号化できない。 P2P/NOISEではhostnameにpublic keyを使って名前も暗号化して通信できる。
-
Append only log
- 追記のみのログ
- Merkle Trees
- ハッシュ木で実装する
-
例) 5 が欲しい時
- 5から親をたどり、UNCLEからのハッシュ値を照合する
- log(2n)
-
- append only log
-
DEMO
- NOISEでつないてhypercoreでappend only log
-
Hash Array Mapped Tries
- key valueなデータベース
- getが
log(n)
でできる - mafintosh/hypertrie: Distributed single writer key/value store
Accessibility vs latest Web APIs. Can’t we just get along?
-
AccessibilityとWeb API
-
2 Events
-
- Uncle
- Help uncle
- Accessibility, Inclusive
-
必要なスキル
- 推奨のチェックリスト
- 14million peopleがなんらかのAccessibility問題を抱えている
- Websites and apps: How to make accessibility user-friendly | AbilityNet
- Ava - Communicate Beyond Barriers
-
- Web Speech API
- 音声認識API
- Chromeだとserver basedなrecognition engine
- Grammar lists
SpeechGrammerList
- SpeechGrammar - Web APIs | MDN
- 認識する単語を増やせる
- Intents === Purpose
- “go to playlist” === “ok list”
- みたいに認識するIntentsをトリガーにしてアクションを実行する
- デモ: Spotifyのプレイリストを音声で操作する
- 英語
- スペイン語
- エラーハンドリング
- badGrammerとか色々エラーを返してくれる
- ブラウザサポート
- ChromeがExperimental
- Palmaswell/along: 🎙Your Spotify playlists with voice interface. 🔬Empathy and the Web Speech Recognition API.
Room C
- 雑談してた
Visualizing the Decentralized Web - Jim Pick
- 非中央集権的なウェブ
- 1990年からOSS
- Debian
- Linux Kernel
- Java( before sun)
- Focus on “decentralized web”
- Dat
- Protocol Labs
- IPFS
- Web 1998
- Physical hardware
- NCSA httpd
- HTML
- FTP
- NetScape
- Web 2018
- HTMLは同じ
- Cloud Service(AWS, Azure)
- CDN(Akamai, Cloudflare, CloudFront)
- Browser
- SSL, Let’s Encrypt
- WebTorrent
- Web on the web, on WebRTC
- dat DATA
- Data はscience dataを共有するためにデザインされた
- BitTorrentに似ているが、データの更新もできる
- IPFS
- content addressability
- contentのhash
- de-duplication
- デモ: 画像のズームとIPFS
- IPFS pluginを入れたFirefox
- Secure Scuttlebutt
- social network
- each person has append-only network
- まだdecentralized webは始まったばかり!
- Web Speech API
LT
ちゃんとリソース開放していますか?
- Node.jsでWebアプリを作ってる人が対象
- MySQLとかのコネクション管理について
- DBコネクションの管理方法ついて
- リクエストが大量に来たときに、開放忘れのコネクションが大量に残る
- → 開放の3つのルール
- 正常終了したとき
- 異常終了したとき
- 既に切断済みのばあい
- → on-finishedが同じ事をできる
Node.jsでIoTっぽいことをする
- obnizというIoTデバイスを作る
- リアルアンパンデバイス
- JavaScriptでサーボモータを90度回転といったことができる
- Fusion360というCADソフトを使って3Dプリンタを使って出力
- りあるど根性ガエル
- 眠くなったら起こしてくれる
- お腹にGoogle Homeが入ってる
Andrey
- PostCSS の作者
- 失敗について
- Lesson 1: There is no such thing as stupid users. There is only bad UI
- Lesson 2: Always report about issues. Even if it was a documentation issue
- Lesson 3: Let the Robots do the work. Robots must suffers
power-assert v2
- power-assertの哲学 「テストコードは投資、テストフレームワークは投資を無駄にしてはいけない、ゆっくり進化する」
- power-assert
- 覚えることを極端に少なくしてる
- 後方互換性
- 次の3種類
- Source compatible, Binary compatible, Functional compatible
- Functional Compatibilityが難しい
- 作者が見てるスコープとユーザーのスコープが異なる
- 作者はユーザーのアメーバのような利用スコープの面倒を見る
- Nodeはsemver
- majorでグレーな変更
- majorであげるとき: デフォルトの設定を変えるとき
- 破壊的変更時にmajorを上げるのは約束
- power-assert v2
- fix: avoid false positives
- feat: async assertion
assert.rejects
、assert.doesNotRejects
などのサポート- 後方互換性がPromiseによって破壊された
- chore: polyfillの掃除
How to choose the best npm modules for your team?
- How many npm module are you using?
- 4 repositories
- 20 ~ 75 npm moduleがある
- = 197 modules
- = 197回の決定が必要
- npm moduileを選んだ理由を説明できるか?
- ゴールの決定
- 候補について考える
- 何を使うかを決める
- 問題を解決する
kosamari
- https://squoosh.app/ というアプリを作った話
- wasmを使った画像変換ツール
- 要件
- 既存のツールを使う
- フレームワークを使う
- GitHubで開発する
- クロスブラウザ対応
- 画像処理アプリを作ろうという話になった
- CLIで画像変換するのが嫌でGUIを作る
- 小話
- wasmにスレッドが入った -> Cのモジュール自体がスレッド対応してなかった
- WebWorker -> 途中で止められない処理を扱うのに便利、workerごと捨てれば止まる
- webpackめんどくせい -> minifyで魔法が適応される(dead codeを削除)
- Preactを使ったのでファーストビューで読んでいる
- Netlifyでデプロイしている
- 今後の予定
- iframe embed
- crop
- バッチ
- 対応codec
お知らせ欄
JavaScript Primerの書籍版がAmazonで購入できます。
JavaScriptに関する最新情報は週一でJSer.infoを更新しています。
GitHub Sponsorsでの支援を募集しています。