狐好きぷろぐらまー (original) (raw)
こんにちは。 pregum_foxです。 また技術書典などのイベントが近づいているので、目当ての本を探しつつ最近の楽しみにしています。
今回はSupabase CLIを使って、ローカル環境をリモートからpullしようとsupabase db pull
コマンドを叩いた時にエラーが出た時の対処法について記載していきます。
問題概要
開発で使用しているローカル環境のSupabaseプロジェクトのDBを変更した後、リモート環境で別の変更を加えた後にsupabase db pull
を叩いた時にエラーが出ました。
エラー画面
原因
ローカル環境とリモート環境のマイグレーションの同期が取れていないことが原因でした。
対応内容
上記の問題を解消するために対応内容について記載します。
前提条件
まずは前提として以下の項目を満たしていることを確認します。
- [x] Dockerが起動していること
- Dockerが起動していないと
supabase
コマンドが動作しませんでした
- Dockerが起動していないと
- [x]
supabase login
コマンドでログインできていること - [x]
supabase link
コマンドでpullしたい対象のプロジェクトへリンクできていること - [x]
supabase status
コマンドでローカル環境のSupabaseプロジェクトの情報が表示されること- こちらはもしかすると不要かもです
エラー内容と対処法
片方のみに反映されているマイグレーションファイルは見当たらなかったので、もう少し調べました。
その結果、リモート側の変更がローカルにすでにその変更が含まれているためにエラーが出ていることがわかりました。(スクショ時にはすでにマイグレーションファイルを削除した後だったので、後付けしております)
- ローカル側の変更を削除
ローカルとリモートの差異を解消するため、ローカル環境にある不要なマイグレーションファイルを削除しました。
例として、20240917140424_~
のマイグレーションファイルを削除しました。
マイグレーションファイルを削除
この時点でsupabase migration list
を叩くと以下のようにローカル環境の欄が空になっていることが確認できます。
- リモートを適用前にマーク
削除後、supabase migration repair --status reverted <マイグレーション日付>
コマンドを使って、リモートの最新マイグレーションを適用前にマークしました。
ここでは、supabase migration repiar --status reverted 20240917140424
というコマンドを叩きました。
このコマンドにより、supabase migration list
の結果からも該当マイグレーションが消えることが確認できました。
- リモートデータを再取得
上記の設定後にsupabase db pull
を再実行し、リモートデータの取得が正常に完了しました。
この際、「remote_schema」マイグレーションファイルを保存するかどうか尋ねられるため、保存する選択を行いました。
上記で保存しなくともリモート環境には保存されている為、特別な理由がない限りは保存する選択をおすすめします。
リモート環境のマイグレーション履歴はSupabaseのDatabase > PLATFORM > Migrations から確認できます。
リモート環境のマイグレーション履歴の参照場所
上記で無事リモート環境とローカル環境のマイグレーションが同期され、supabase db pull
が動作するようになりました。 お疲れ様でした。
雑感
開発時はGUIでぽちぽちできるのですごい楽なのですが、いざローカル環境を整えて開発しようとするとよくDB関連の問題に遭遇し、その度に時間を浪費することがあったので、頻発するdb pullについてのエラー対処法を備忘録として残しました。 他にもマイグレーション方法などローカル環境で作成したfunctionをリモート環境へpushする方法など記事をそのうちまとめたいなと考えています。 ここまで読んでいただきありがとうございました。
参考サイト
https://supabase.com/docs/reference/cli/supabase-migration-repair
こんにちは。pregum_foxです。
今回は、初めて自作キーボードを購入しましたので、組み立てる際に知っておきたかったこと、組み立てた後に知っておくと良いメモを書いていきます。
読むとわかること
- Keyball61をキーボードとして使用する為に必要なもの
- Keyball61の組み立て時間のサンプル
想定読者
- Keyball61を購入しようか迷っている自作キーボード初心者の方
- 結局Keyball61をキーボードとして使うにはが必要?と思っている方
- キースイッチとは?ProMicroとは?TRRSケーブル?という方
以下目次です。
- 読むとわかること
- 想定読者
- 記事を書いている人間のKeyball歴と普段使うキー配列
- 組み立てた範囲と組み立てにかかった時間
- 組み立てた範囲
- 組み立てにかかった時間
- 備忘録: Keyballの組み立て前に知っておきたいこと
- 組み立てた後に知っておきたいこと
- キーマップの設定
- マウスとスクロールの感度設定
- Layerの存在
- キー配置の注意点
- 接触不良の確認
- 通常は有線のみ操作可能
- まとめ
こんにちは。pregum_foxです。
今回はdriftの使い方についていくつか自分が調べて情報がなかった箇所についてtipsとして書いていこうと思います。
以下目次です。
- 検証環境
- サンプルで作成したリポジトリ
- set up
- primaryKeyをuuidにする方法
- 外部キーの有効化
- 外部キー制約の定義方法(CASCADE / RESTRICT 等)
- 中間テーブルを含むDB操作
- マイグレーション方法
- serializer(DataTimeをISO8601形式にする)
- toJsonで出力されるMapのkeyをキャメルケースからスネークケースに変える
- drift_db_viewerの使い方
- シンプルなCRUD操作で使用できるmanagers
- postgreSQL のクライアントとしてDriftを使用する
- まとめ
こんばんは。pregum_foxです。
今回は、Supabaseにも正式に匿名サインイン(Anonymous Sign-ins) が実装されたのとのことなので、手元のリポジトリで試してみました。
前回はSocial Login(Facebook)のサンプルを作成しました。
他のSupabase Authenticationのサンプルを見たい場合は下記記事から確認可能です。
それでは目次です。
- 開発端末
- 検証端末
- サンプルで作成したリポジトリ
- 必要なもの
- 匿名サインイン実装の手順
- 匿名サインインとそれ以外でのサインインの判別方法
- 図解
- 1. 導入するSupabaseプロジェクトにて、匿名サインインを有効にします
- 2. 匿名サインインのクライアントコードを実装します
- 雑感
こんばんは。 pregum_foxです。
今回は個人開発毎回ビルドを手元で行うと、時間が溶けてしまうのでcodemagicを利用して
GitHubのレポジトリのdevelopブランチにPRがマージされたタイミングでビルドからFirebase App Distributeで配布を行う処理を自動化する手順を備忘録として残しておきます。
以下目次です。
- この記事を読んでわかること
- 事前に準備が必要なもの
- 手順
- firebase-tools コマンドのインストール
- firebaseプロジェクトの初期化
- firebaseパッケージをFlutterプロジェクトへ追加
- codemagicの設定
* Build triggers
* Build
* Distribution
* android code signing
* iOS code signing
* Firebase App Distribution
* Firebase service account
* Android Firebase app ID
* iOS Firebase app ID
* Tester groups for Android app / Tester groups for iOS app
- 雑感
この記事を読んでわかること
codemagicを用いてFlutterの開発環境のビルド〜Firebase App Distributionの配布までの設定方法
事前に準備が必要なもの
必須
iOSでのビルドする場合
- code signing certificate(
*.p12
ファイル) - プロビジョニングプロファイル(
*.mobileprovision
)- 今回は開発環境なのでiOS App Development でOK
Androidでビルドする場合
- keystore
- 今回は開発環境なので、
~/.android/debug.keystore
のkeystoreを使用します。残りの3項目は左記のkeystoreの場合は、いじっていなければ以下の想定です。
- 今回は開発環境なので、
- alias
androiddebugkey
- storepass`
android
- keypass
android
Firebase App Distributionで配布する場合
- Firebaseのアカウント
こんにちは。pregum_foxです。
最近模様替えを行いモニタの配置が変わって姿勢がよくなりましたが、机の高さを変えられる昇降デスクが欲しくなった今日この頃です。
概要
今回は、supabaseのsignUpメソッドにてデフォルトの挙動ではすでに存在するEmailを渡しても例外を投げないので、ないなら自分で作ってしまおうということで事前に存在チェックをするPostgres functionを定義して、Flutterから呼び出す処理がうまく動作したので記事にしました。
注意点
Issueにはセキュリティの問題からサニタイズされたユーザーデータ(つまりダミーのユーザーデータ)を返すようなので、戻り値で判定できないようになっているので、セキュリティホールにならないように実装が必要です。
以下目次です。
こんにちは。pregum_foxです。
最近使う電子マネーをSuicaからQUICPayに変えてみたのですが、通知のタイトルを初めてみたときシンプルすぎて少し笑ってしました。
支払い自体はスムーズでチャージもしなくてよいので、今後も使っていこうと思ってます。
概要
さて今回は、最近開発で使っているツールをまとめてみようと思います。
いわゆる「ぼくのかんがえたさいきょうのつーる」のつもりで書いていますので
- 「このツールの方が良いでしょJK」
- 「このツール使ってないとか、にわか乙」
- 「それ、GPTでできるよ」
などがあれば、コメントもらえると嬉しいです😉
注意点
この記事の対象OSはmacOS
です。
ですのでWindows
ならこれがあるやLinux
では〜〜 などは聞き流してしまうのでご注意ください。
また、対象はモバイルアプリ・Webアプリの方をターゲット層のつもりで書いています。
インフラ系の方にはお口に合わない可能性があります。
その場合でも色々ご意見いただけますと幸いです 🙏
以下目次です。
バックグラウンド
普段どのような開発をしているか説明します。
普段はモバイルアプリの開発をやりつつ、React.jsやCloud Function for FirebaseなどのNode.js + TypeScriptのコードも書いていたりしています。
ですので、バックエンドは知ってるぐらいで詳しくないです。
趣味では、FlutterやBaaSの勉強をしつつ個人開発を細々とやっています。
そんな人間がよく使うツール一覧をまとめましたので、その認識で読んでいただけると幸いです。
- 概要
- 注意点
- バックグラウンド
- ターミナル
- Warp
* 使っていて便利だと感じた点
* 少し困っている点
- Warp
- Spotlight系
- Raycast
* 便利な点
* 試してみたい点
- Raycast
- 作業記録系
- toggl
- Window移動(cmd + tab的なもの)
- AltTab
* 嬉しい点
* ちょっと悲しい点
- AltTab
- git操作
- tig コマンド
* 便利な点
* 少し手を加える必要がある点 - lazygit コマンド
* 便利な点
* 少し困った点 - gh コマンド
* 嬉しい点
- tig コマンド
- クリップボード系
- Clipy
* 嬉しい点
- Clipy
- ブラウザの拡張機能系
- vimium
* 嬉しい点
* 悲しい点 - CLEAN crxMouse Gestures
* 嬉しい点
* 対応が必要な点
- vimium
- ちょっとした変換
- Macのデフォルトの変換ショートカットキー
- メモ帳
- トンネリング
- ngrok
- npmなどのバージョン管理ツール
- anyenv
- fvm
- homebrew
- IME関連
- 英かな
- Karabiner-Elements
- 感想
- 参考URL