ravelll の日記

よしなに

タブを uniq する Google Chrome extension を作った

ブラウザのタブを開きまくっていると同じページを複数タブで開いてたみたいなことが容易に起きる。開いているタブ群から特定のタブを探すときに同じページが無駄に複数のタブで開かれているとその分見つけづらくなるし少しだけイラッとする。タブを uniq したくなる。

という背景があり、それを実現する Google Chrome extension を作った。というか、何年も前に作ろうとして放置していたのをふと思い立ち動くようにして Chrome Web Store に公開した。

chrome.google.com

やっていることはただ開いている全タブの URL を取得して各 URL について重複して開いているタブを閉じているだけ。最低限動くようにだけしたという感じで、例えばパラメータやフラグメントについて何も考慮していなかったり、Manifest のバージョンが V2 だったり、Chrome Web Store の説明画像が雑だったりする。気が向いた時にちょいちょい手を入れていこうと思う。

Prisma Migrate の default(uuid()) attribute は DB のテーブル定義に影響を与えない

下記のようなデフォルト値の記述が無い id field を含む User model があるとする。

model User {
  id    String  @id
}

この id field に @default(uuid()) attribute を付けて prisma migrate dev --preview-feature を実行すると、DEFAULT gen_random_uuid() のような設定が id カラムに付与される ALTER TABLE が書かれた migration ファイルが作成されるかと思いきやそんなことはなく、何も起こらない。
なぜだろうと思っていたら、ちゃんとドキュメントに理由が書かれていた。

https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#uuid

Implemented by Prisma and therefore not "visible" in the underlying database schema. You can still use uuid() when using introspection by manually changing your Prisma schema and generating Prisma Client, in that case the values will be generated by Prisma's query engine.

Prisma Client に実装された generator が UUID を生成するので DB scheama には生成のための設定は付与しないということだった。cuid の場合も同様のようだ。

Alfred で /Applications にあるアプリケーションがサジェストされないときの対処法

以下を実行して1〜2分ほど時間を置いたところサジェストしてくれるようになった。
ちなみに使っている Alfred のバージョンは 4.3.1, macOS のバージョンは 10.15.7 (Catalina)。
参考: Alfred is not finding apps on Catalina - macOS 10.15 Catalina Bugs & Issues - Alfred App Community Forum

  • sudo mdutil -a -i off
  • sudo mdutil -a -i on

mdutil は Spotlight が使う metadata を管理するためのコマンドで、-a オプションは全ての Volume にある全ての metadata の store に対して処理を実行することを表し、-i on|off オプションは metadata の indexing の on|off を設定することを表している。

最初は https://www.alfredapp.com/help/troubleshooting/indexing/#rebuild に従って permission を付与したり index を rebuild したりしたのだけど問題が解決しなくて困ったのだけど、解決して良かった。