社内勉強会で「今からでも遅くないDBマイグレーション」というタイトルで発表しました

社内勉強会で「今からでも遅くないDBマイグレーション」というタイトルで、FlywayとSchemaSpyの紹介をしました。

FlywayはCLIツール&SQLで書くので、DBマイグレーションやっていなかったプロジェクトに途中から入れる時も敷居がとても低いと思います。 SchemaSpyはDB定義(特にリレーションシップ)を確認するのにとても便利なドキュメント生成ツールなのですが、これがなんでGitHubでスターが2K程度しかついていないのか理解できないくらいに便利です。

Online Bookmark Incremental Search の v2.0.3 をリリースしました

Online Bookmark Incremental Search の v2.0.3 をリリースしました。
大量のブックマークがあると、Chrome版でlocalStorage APIの制限(5,242,880バイト)に引っかかり、ブックマークが保存されないという問題に対応しています。

unlimitedStorage という権限を付けると、制限を回避できるので、それで対応しています。

問い合わせのあった方は、4万件のブックマークがあり、この制限に引っかかっていました。

Online Bookmark Incremental Search の v2.0.2 をリリースしました

Online Bookmark Incremental Search の v2.0.2 をリリースしました。
はてなブックマークで動作しなくなっていたのを修正しています。

Online Bookmark Incremental Search は、オンラインブックマーク(Google Bookmarks, Pinboard, はてなブックマーク)をインクリメンタルサーチする拡張機能です。
ChromeとFirefox版の2つをリリースしています。

Firefox側でのコメントで、はてなブックマークで動作しないってあったので、今回の問題に気が付きました。
はてなブックマークが常時https化されたタイミング(2019年5月28日)から動いていないと思うので、はてなブックマークで使っている人はいなさそうです。

Googleブックマークも今月末で終了なので、この拡張機能を使う人もほとんどいないのかもしれませんね、、

Rocket.Chatでファイルアップロードを頻繁に使うならば、アップロードしたファイルの保存先はデフォルト(GridFS)から変えた方が良い

Rocket.Chatでアップロードしたファイルの保存先は、最新(3.16.3)だと下記の5種類から選ぶ形になっています。

  • GridFS
  • FileSystem
  • Amazon S3
  • Google Cloud Storage
  • WebDAV

設定方法などは、下記にまとまっています。

デフォルトはGridFSです。GridFSでは、ファイルをチャンクに分割してMongoDBのドキュメントとして登録するので、新たな設定が不要(Rocket.ChatはMongoDBが必須)で手軽に使えるのですが、MongoDBに負荷を与えることにもなります。

そのため、Rocket.Chatでは、ファイルアップロードを頻繁に使うような場合にはGridFSの利用を推奨していません。

  • Recommendations for File Upload - Rocket.Chat Docs

    Though GridFS is used in rocket.chat for file storage because MongoDB offers this functionality with zero configuration but GridFS is not recommended for day to day file storage needs in a production environment because it puts an immense amount of load on the database.

Rocket.Chatがちょっと重たくなってきたとか、ファイルアップロードが遅かったり、エラーになったりするような場合には、GridFSを疑ってみると良いと思います。
デフォルトがGridFSなので、問題が起きて気が付く、、といった場合が多そうですね。Rocket.ChatのGitHubやForumでもGridFSに関する問題が何度かやりとりされているようでした。

GridFSからの変更ですが、FileSystemが一番手軽にできる変更だと思います。適当なフォルダ切って、Rocket.Chatからアクセスできるように権限を与え、Rocket.Chat上からフォルダを指定するだけです。再起動はいりません。
ただし、Rocket.Chatを複数台で運用している場合、すべてのRocket.Chatサーバから見て同じパスになるように設定(ネットワークフォルダ等)する必要があります。

2021年5月から6月にZennで書いた記事

2021年5月から6月までの記事

Redmineでステータスと連動して進捗率と担当者を変更する(View customize plugin)

View customize pluginで、(個人的に)一番便利だと思っているスクリプトです。
チケットの担当者を切り替えながら進めていくような場合には、ほんんんんとに便利なので、ぜひ試して欲しいです。