機能 #1038
完了
TLに表示するツイート上限数をユーザー設定で変更可能にしたい
Izumi Tsutsui さんが7年以上前に追加.
約7年前に更新.
説明
現状の表示ツイート数上限は magic number で埋め込んである以下の数字だと思います。
source:core/mui/cairo_timeline.rb@27049201#L168
# TLのMessageの数が上限を超えたときに削除するためのキューの初期化
# オーバーしてもすぐには削除せず、1秒間更新がなければ削除するようになっている。
def init_remover
@timeline_max = 200
@remover_queue = TimeLimitedQueue.new(1024, 1){ |messages|
Delayer.new{
if not destroyed?
remove_count = size - timeline_max
if remove_count > 0
to_enum(:each_iter).to_a[-remove_count, remove_count].each{ |iter|
tl_model_remove(iter) } end end } } end
とりあえず感がありますが、上記の 200 の数字を userconfig で変更可能なようにするという案はどうでしょう?
200という数字は mikutter 黎明期になんとなくで決められた値のように見えます。
https://twitter.com/toshi_a/status/9691075197
リビジョン12をコミットしました:
タイムライン上のつぶやきの完璧なソート
長すぎるつぶやきの末尾を切って投稿
メモリ節約のため、200個以上前のつぶやきを非表示に
READMEの後進を忘れなかった
明日起きれるか心配になった
#mikutter
3:48 - 2010年2月27日
どんなもんでしょう。
ファイル
賛成です。
200という数字の根拠は、当時Twitter APIで各種タイムラインを取得する時に、1ページの最大件数が200だったことに由来していたと記憶しています。
cairoを使った現在の実装だと、一度表示されたことのある画像がメモリ上に残るが、処理速度的にはペナルティは少ないと思うので、よりスペックの高い環境であればこれを増やすことが出来ると便利そうです。
3.5からは、filerプラグインのように200以上のModelを常に保持するのが正当なケースも出てきたので、UIDSLのtimelineメソッドで、プラグインがタイムラインを生成する時に最大件数を設定できるようにしようと思います。これのデフォルト値は、UserConfigに記録しておいて、エンドユーザが設定できるようにすると良いでしょう。
明日は来ました。
topic/1038-changeable-timeline-max です。
確認をお願いします。
あひる 家鴨 さんは書きました:
明日は来ました。
この履歴が書かれたのが日付変わった 11/12 だったのでどうかなと思っていました(どうでもいい)
topic/1038-changeable-timeline-max です。
確認をお願いします。
パッケージ環境なのでどうテストしようかと思案して
インストール済みの 3.5.13 の環境に対して
11f2465e の修正を手で変更する
という暴挙で確認しましたが、とりあえず意図通り動いていて
200以上のツイート表示もできているようです。(添付)
ステータスが新規のままですが、通常ユーザーだと終了か却下にしか変えられないみたいなので
適当に更新お願いします。
確認方法メモ
https://twitter.com/toshi_a/status/929632483687067648
@tsutsuii TL全選択して、「ツイートのURLをコピー」コマンドを実行して、エディタに貼り付けて行数を測ればすぐわかりますよ
実装設計的なところはよくわかっていませんが、履歴#1のとしぁさんコメント通りの実装ということですよね。
タブごとに表示件数を変える、みたいな要件があるのかな、ということも思っていました。
確認しましたが、これで一度developにmergeで良いと思います。
タイムラインごとに最大数を設けるのは、今後の課題とします。
- 関連している 機能 #1081: タイムラインに表示するMessageの件数を、プラグインがタイムラインを生成するときに個別に設定できるようにする を追加
developにマージ完了したのでcloseします。
他の形式にエクスポート: Atom
PDF