普通のSQLは主キーは非nullになるが、SQLiteは歴史的な理由、初期のバグの影響で主キーにnullを設定できてしまうまま現在に至るらしい。not null制約を明示的に指定して作っていないかぎり、既存のテーブルのスキーマを読むと主キーがnullableになっているのはそんな訳があった
普通のSQLは主キーは非nullになるが、SQLiteは歴史的な理由、初期のバグの影響で主キーにnullを設定できてしまうまま現在に至るらしい。not null制約を明示的に指定して作っていないかぎり、既存のテーブルのスキーマを読むと主キーがnullableになっているのはそんな訳があった
さて、依存関係からRoom消して少し巻き戻すか。リリースしてないのでなんとでもなる
Room で興味深かったのは現在のテーブル構成の情報の取得方法。 https://android.googlesource.com/platform/frameworks/support/+/refs/heads/oreo-m4-s8-release/room/runtime/src/main/java/android/arch/persistence/room/util/TableInfo.java にある、pragmaを使ったクエリでスキーマの情報が取れる。
SQLiteは型を指定せずにカラムを定義することができて、Roomではそれに該当する指定は不可能なので詰んだ。別のDBファイルに手動でコピーするしかない。
https://gist.github.com/tateisu/2c80cdbb22b34b08ee1a9a0deab77cf8 こんな感じの泥臭い作業をしている
エラーメッセージも非常にわかりにくく、テーブル定義のどこが異なるのか指摘してくれず定義全体をまとめてダンプする。仕方ないから比較スクリプトを書いたよ
SQLiteで作った既存のテーブルをRoomで使うの超めんどくさい。sqliteで"_id integer primary key autoincrement" と定義したカラムと Roomで @ColumnInfo(name = BaseColumns._ID) var id: Long?= 0, と定義したカラムはRoomのバリデータによるとnullabilityが異なったとみなされマイグレーション失敗の例外が出るのだ
このアカウントは、notestockで公開設定になっていません。
このアカウントは、notestockで公開設定になっていません。
ほし芋リストに書いといたぶどうジュースを頂きました。ありがとうございます。励みになります。
よくみたらCursorAdapterですらなく自前でCursorをシークさせてた
STでCursorAdapterを使ってた箇所を androidx.paging:paging-runtime に置き換えていくか…。具体的には下書き一覧ダイアログ
MastodonはHTL,LTLの最大保持件数を400から800に上げる見込みだ。これはRAMにキャッシュされるデータが増えることを意味する。人が多いけど資源が少なめなサーバには影響があるのかもしれない。
なおウチの鯖は32000まで上げてるがRAM4GBでそれなりに回ってる。人数次第なのだろう
GitHubで設定するとMastodonのプロフでも承認済み状態になるぜ
このアカウントは、notestockで公開設定になっていません。
Twitterがやるべきだったことは「有料ユーザならサードアプリも使えます」であって「サードアプリ開発者からお金を徴収します」ではない。ただまとめて徴収しやすいからという理由でそんなことをしている
nitterはTwitterのユーザTLをRSSに変換する機能があるので、フィードリーダーのためにこっそり建ててる
結局どうしたかというと、テストコードから差し替えられるようにした。既存のDIライブラリでは「後から差し替える」が難しい。
https://github.com/zedeus/nitter
「Twitter の非公式 API を使用 (レート制限や開発者アカウントは不要)」というコレはいつ塞がれるのだろうか
普及させるために色々バラまいて後からマネタイズしようとするけど、より安価なジェネリックにいずれ変わっていく…というのはあちこちで見かけますね
androidx startupで初期化したオブジェクトに直接アクセスしない作りにしないとダメそう。
試してみたらテスト開始時点でandroidx startupによる初期化が行われていた。テスト用の依存関係を注入しようとしても、テスト開始時点で初期化が済んでいるので無理だ
端末上で動くinstrument テストをします。androidx startupでシングルトンがいくつか初期化されます。それをテスト中だけ差し替えたいです。例えばDBや設定ファイル。…どうやるといいんだ…?
@Common_Lisper issueでカラーコードだしてテーマ増やせって人がいたのさ
ankoのaarが最近のビルド環境で警告を出すから、ソースもってきてSTのツリーにぶちこんでやった🤪
@engled 「Android 6より前のOSが対象のアプリは、最新のAPIへの対応要件を満たさないかぎり弾かれてしまうようです」とのことですが、 #subwaytooter の動作要件は今は最低でもAndroid 8以上です。明らかに古いアプリが切り捨てられるのは年数を考えると仕方ないと思います。
このアカウントは、notestockで公開設定になっていません。