GNU social JP
  • FAQ
  • Login
GNU social JPは日本のGNU socialサーバーです。
Usage/ToS/admin/test/Pleroma FE
  • Public

    • Public
    • Network
    • Groups
    • Featured
    • Popular
    • People

Conversation

Notices

  1. Embed this notice
    のえる (noellabo@fedibird.com)'s status on Wednesday, 04-Dec-2024 16:33:33 JST のえる のえる
    in reply to
    • かき@GNUsocialJP
    • 白湯さゆぬ

    @sayunu とりあえずデータを。

    fedibird.comに保存されているstatusesが344,711,092件あり、下位16bitが0のsnowflake値をIDに持つstatusが5,257件ありました。

    statusが65571.82652個につき1個発生していて、まぁ綺麗に確率通りという感じですね。

    In conversation about 5 months ago from fedibird.com permalink
    • Embed this notice
      白湯さゆぬ (sayunu@mofu.kemo.no)'s status on Wednesday, 04-Dec-2024 16:33:38 JST 白湯さゆぬ 白湯さゆぬ
      in reply to

      ミリ秒単位の区切りも 65536 の倍数だから、精度が足りなくても取り扱えそうに思えるけど、JavaScript の toString が十進法の表示を作る時に「0」で丸めてしまうようなので、安易な処理では厳密に正しい値を API に渡せない…多分。

      #Mastodon

      In conversation about 5 months ago permalink
    • Embed this notice
      白湯さゆぬ (sayunu@mofu.kemo.no)'s status on Wednesday, 04-Dec-2024 16:33:42 JST 白湯さゆぬ 白湯さゆぬ

      Mastodon の現行版で使われている Snowflake‐形式の投稿識別子は、上の方の桁がミリ秒単位の UNIX‐時刻で、下の 16‐ビットが時刻以外の情報。時刻だけに注目するなら、一秒経過する毎に 65536000 だけ加算されてる。

      「何時から何時まで」と範囲を指定してタイムラインを取得したい場合に、API の説明書を信じるなら「min_id」や「max_id」などのパラメーターは境界の値を区間に含まないのがずっと気になってる。厳密に考えるなら、境界となる識別子に 1 を足したり引いたりしないといけない。

      それを気にしないなら簡単なんだけど。ミリ秒単位で区間を指定する需要はないので、秒が最小単位だとすれば区切りとなる値は常に千の倍数。倍精度の浮動小数点数で雑に扱ったとしても、表現し切れない末尾は問題にならない。精度が足りないので、数値のまま 1 を足す事はできない。

      本当に境界の値を含まないのかしら。影響を受けるのは、投稿がミリ秒単位で指定時刻に一致し、しかも下位 16‐ビットのハッシュ値がたまたま 0 と算出された場合だけなので観察できない。

      #Mastodon

      In conversation about 5 months ago permalink

Feeds

  • Activity Streams
  • RSS 2.0
  • Atom
  • Help
  • About
  • FAQ
  • TOS
  • Privacy
  • Source
  • Version
  • Contact

GNU social JP is a social network, courtesy of GNU social JP管理人. It runs on GNU social, version 2.0.2-dev, available under the GNU Affero General Public License.

Creative Commons Attribution 3.0 All GNU social JP content and data are available under the Creative Commons Attribution 3.0 license.