全員ミュート
- http://bird.o0i.es
- したいこと
- ミュート
- ミュート解除
- 中断
- ファイルにエクスポート・インポート
- 必要なこと
- Twitterにログイン
- ログアウト
- 15-minutes windowを考慮して周期的にバックグラウンドでリクエストを送信する
- その間のユーザや状態の管理
- Function(FaaS)では無理
- herokuとか、fly.ioでやる
- pg_cronで定期的にNetlify functionsを叩く
- 実装
- Plan A: traditional web app
- infra: fly.io
- front/backend: warp + egg-mode
- auth: egg-mode
- DB: supabase
- Plan B: serverless
- infra: Netlify
- frontend: Netlify
- backend: Netlify functions + supabase (pg_cron)
- auth: Auth0 or egg-mode on functions
- DB: supabase
- Plan A: traditional web app
- 実装シナリオ
- Plan A
- Plan B
- ユーザがNetlify frontendにアクセスする
- frontendからauth urlに移動する
- 認証する
- 予め設定したurlに飛ぶ。このredirect urlはfunctionに設定する
- functionでsupabaseにaccess_tokenを記録する
- 同時に、pg_cronで更新用functionを叩き、ミュートを進める
- Auth0
- Twitter access tokenの取り方がよくわからないのと若干オーバーキル感があったのでやめた
- Netlifyへのデプロイ
- NetlifyのRust Functionsは
x86_64-unknown-linux-musl
を要求する(←これ、glibcでもいけるかも)ので、ring
crateがビルドできずに失敗→フォーラムで聞いたら修正してくれた
- NetlifyのRust Functionsは
- Vercel へのデプロイ
- こちらは
x86_64-unknown-linux-gnu
なのでringの問題はないが、vercel_lambda
が使っているlambda_runtime
が古すぎて、metadata.rs
周りでエラーが出る - Netlifyの素朴なラッピングに比べると、vercel_lambda側で頑張ろうとしてコケてる感じ
- vercel_lambdaを使わずにLambdaのRustラッパーを使えばビルドできたりできなかったりする
- ローカルではだいたいいける -
- こちらは
error[E0601]: `main` function not found in crate `radix_bases`
14:59:06 --> target/release/build/num-bigint-1904be7ef4ceac38/out/radix_bases.rs:780:314:59:06
14:59:06 780 | ]
14:59:06 | ^ consider adding a `main` function to `target/release/build/num-bigint-1904be7ef4ceac38/out/radix_bases.rs`
14:59:06
14:59:06For more information about this error, try `rustc --explain E0601`.
14:59:06error: could not compile `index` due to previous error