icon

初めてまともに実用に供したと言えるコードはTwitter bot、初めて公開したまともなライブラリはTwitter APIのラッパ(<crates.io/crates/twitter-strea>)、その後に公開したライブラリ(<crates.io/users/tesaguri>)も全てTwitter bot(<crates.io/crates/pipitor>)の間接依存、学部の卒業研究はTwitterデータの解析(笑)……どうも、青春の全てをTwitter APIに捧げたオタクです(?)

2023-02-02 18:41:53 カルの投稿 nullkal@social.nil.nu
icon

TweetDeckは新バージョン(という名の改悪版)が控えてると聞きますね。広告流れてきて、しかも複数アカウント扱えないとか。

icon

TweetDeck Preview(クライアント名としては"TweetDeck Web App")、私のアカウントもテストに当選しているけど、Web Appの画面をコンポーネントとしてそのままカラムに敷き詰めましたという感じの見た目で、まあ開発の観点では合理的なのだろうなとは思う(詳しくないけど)。ユーザとしてそれが使いやすいかというと……まあ、はい

icon

Abandoning egg-mode · Issue #132 · egg-mode-rs/egg-mode
github.com/egg-mode-rs/egg-mod
Rust向けのTwitterクライアントである`egg-mode`のオリジナルの作者の声明

Web site image
Abandoning egg-mode · Issue #132 · egg-mode-rs/egg-mode
icon

荒削りだけど何とかAPIの有償化に間に合ったー! 肝心の実験が思うように進まないものだから実験が未完のままでも投稿するつもりでdisclaimerを書き連ねていたけど、ギリギリでそれらしい結果が出たので何とか最低限の体裁が整った(ひどいオチが付いているけど……)

icon

まさか$-100にまで価値が落ちるとは流石に予想しえなかった(?)
QT: fedibird.com/@tesaguri/1097213
[参照]

Web site image
tesaguri 🦀🦝 (@tesaguri@fedibird.com)
Web site image
投稿の参照(1件) by tesaguri 🦀🦝 (@tesaguri@fedibird.com)
icon

まあ何はともあれこれで心おきなくTwitter APIに別れを告げられる(いや、まだやり残したことはあるけど……)

icon

Twitter APIにおけるタイムラインの取得漏れ問題――前編:原理と対策
zenn.dev/tesaguri/articles/lea
TwitterのSnowflake IDは完全な投稿時刻順でなくk-sortedであり、IDが時刻順であることをを仮定した`since_id`パラメータの設定によりタイムラインのポーリングにおいてツイートを取りこぼしうるという問題提起と、その解決法の提案を行う記事です。ちなみにSnowflakeの仕組みはMastodonでも使われています。

Web site image
Twitter APIにおけるタイムラインの取得漏れ問題――前編:原理と対策
icon

Your Timelines Are Leaky: A Slipperiness of Twitter's Snowflake IDs and `since_id` ❄️
github.com/tesaguri/leaky-snow
's Snowflake IDs (akin to Mastodon's post IDs) are k-sorted instead of complete chronological order. Apps polling timelines may thus miss Tweets by setting the `since_id` parameter on the assumption of the chronological order. This article demonstrates the mechanism of and a solution to the problem.

icon

宣伝慣れしていなくて、そういえばハッシュタグを付け忘れていたので恥を忍んで再投稿

icon

これはどちらかというとむしろミュートされる類のハッシュタグでは?

icon

MastodonのAPI向けのコード例を書いていて思ったけど、Mastodonのタイムラインに対するポーリングはどうやるのが正しいのかしら。脚注でも触れたとおり、Mastodonの場合は特に`since_id`では不十分な気がするけど

icon

単にソートして表示するだけの用途とかなら投稿時刻によるSnowflake IDで良いけど、ポーリングにおいて必要なのはサーバに到達した順のcursorだよね。しかしドキュメントをざっと眺めた感じだとそれらしいものが見当たらない

icon

Twitter APIをメインに扱っておまけとしてMastodon APIにも適用するという構成を取ってしまったけど、じきに$-100の価値になるAPIをメインとするより今後発展していくであろうAPIをメインに据えるべきだったかもしれないな(?)

icon

結局Cookieを隔離した上でZennを使うことにしたけど、やはりGoogleアカウントの扱いが面倒なので早く別の手段が提供されてくれると嬉しい
QT: pawoo.net/@dmiz/10963598638658
[参照]

Web site image
tesaguri 🦀🦝 (@dmiz@pawoo.net)
Web site image
投稿の参照(1件) by tesaguri 🦀🦝 (@tesaguri@fedibird.com)
icon

Apps may miss Tweets in timeline due to Snowflake ID's rough-sortedness and `since_id` in combination - Twitter API - Twitter Developers
twittercommunity.com/t/apps-ma
Cross-posting to Twitter Developers Discourse

icon

Discourseに投稿するには英語版の記事の方が下手な皮肉がキツすぎたと反省している(ニュアンスの制御の効かない非母語で皮肉など書くものでない)

icon

developer.twitter.com/en/docs/
Twitter API v2の`GET /2/users/:id/timelines/reverse_chronological`(ホームタイムラインの取得)がパスパラメータとしてユーザIDを求めるのは何故なのだろう。Authenticated user以外のIDを指定するとエラーを返してくるし存在意義が謎

icon

型引数の山括弧が多すぎてGitのconflict markerかと思った(?)

icon

`Pin<Box<dyn Future<Output = hyper::Result<Response<Body>>>>>`←これ

icon

無理に借用で持ち回そうとしてHRTBなどという機能を使おうとするからややこしくなるのである、はい

icon

`for<'a> &'a T: Foo`のときに関連型を名指ししたい場合に`<&T as Foo>::Type`と書けなくて適当なライフタイムを指定して例えば`<&'static T as Foo>::Type`のようにする必要があるのだけど(任意のライフタイム`'a`について`&'a T: Foo`だから`&'static T: Foo`も成立する)、こうすると`T: 'static`が要求されて困った。リンク先のテストコードの構造体の例だと適当なライフタイムを宣言して動いているけど(何故?)、トレイト実装の境界で同じことをしようとすると"unconstrained lifetime"として怒られる

icon

An (unsuccessful) attempt to deserialize async response body using a type-erased `DeserializeSeed` impl
gist.github.com/tesaguri/e45f1
無理〜

Web site image
An (unsuccessful) attempt to deserialize async response body using a type-erased `DeserializeSeed` impl
icon

kennytm/omgwtf8: Optimized-Matching-Generalized Wobbly Transformation Format — 8-bit
github.com/kennytm/omgwtf8
WTF-8のみならずOMG-WTF-8なるものまであるのか

Web site image
GitHub - kennytm/omgwtf8: Optimized-Matching-Generalized Wobbly Transformation Format — 8-bit
2023-02-15 18:20:02 kphrxの投稿 kPherox@pl.kpherox.dev
icon

著作権法 | e-Gov法令検索
https://elaws.e-gov.go.jp/document?lawid=345AC0000000048_20220617_504AC0000000068&keyword=%E8%91%97%E4%BD%9C%E6%A8%A9%E6%B3%95

> 第二十八条 二次的著作物の原著作物の著作者は、当該二次的著作物の利用に関し、この款に規定する権利で当該二次的著作物の著作者が有するものと同一の種類の権利を専有する。

本来はガイドラインとか特に決めなくても原作側が好きに使っていいってことになるのかなこれって

icon

これ、たまに見かける解釈だけど実際はそうでなく、当該二次的著作物の利用に関して原著作物の著作権者の許諾も必要という意味らしい(IANAL)
ameblo.jp/kimuralaw/entry-1049
QT: pl.kpherox.dev/objects/ea25049
[参照]

Web site image
『著作権法28条の意味』
Web site image
投稿の参照(1件) by tesaguri 🦀🦝 (@tesaguri@fedibird.com)
icon

文化庁の著作権なるほど質問箱を引用しようと思ったら、404になっていた

icon

あまりよく分かっていないけど、例えば「著作権の制限」(著作権者に無断で引用ができるとかのあれ)と言ったとき、それは著作物を利用する権利の制限のことでなく著作物の利用を制限する権利の制限のことだったりするよね(ややこしい)

icon

これに関連して思ったのだけど、ActivityPubの`sharedInbox`ってサーバをまたいで共有できたりするのかしら?
QT: fedibird.com/@tesaguri/1097214
[参照]

Web site image
tesaguri 🦀🦝 (@tesaguri@fedibird.com)
Web site image
投稿の参照(1件) by tesaguri 🦀🦝 (@tesaguri@fedibird.com)
icon

規格上は特に禁止されているや鵜な記述が見られなかったけど、意図と現実の実装における扱いとしてはどうなるのかなと

icon

後者については実験すれば良い話だろうけど、個人的にそのような実装を作る動機がないのでそこまでするほどの意欲はないという

icon

仮に複数サーバで`sharedInbox`を共有する実装があったとして、書き込みをする分には良いけど読み取りの挙動があまり自明でないかあ……と思いながら自分の`sharedInbox`に対して`Accept: application/ld+json; profile="w3.org/ns/activitystreams"` で`GET`を投げたら404が返ってきた。Mastodon/Fedibirdでは読み取りは実装されていないのか

Attention Required! | Cloudflare
icon

「削除して下書きに戻す」機能が便利〜(?)

icon

【対談】夢の対談実現!アライさん参上なのだ!!!【  / アライグマ】 - YouTube
youtube.com/watch?v=EysoFYA56J

Attach YouTube
icon

icon

github.com/rust-lang/rust/issu
`AsyncIterator::next()`に対するwithoutboats氏の意見、簡便さを求めるならばジェネレータが理想であって`next`メソッドを書かせるのは中途半端だというのは考えてもみなかったけど、なるほどな

Web site image
Tracking Issue for #![feature(async_iterator)] · Issue #79024 · rust-lang/rust
icon

個人的にも`poll_next`の方が好みなのだけど、keyword genericsへの応用などを考えると`async fn`の方が嬉しいというのも理解できるので、どうしたら良いのじゃろうねという気持ち

icon

`async fn`から`poll`系の関数を呼び出すのは`poll_fn`のような適当なヘルパを噛ませればできるけど、逆に`poll`から`async fn`への呼び出しが上手くいかないのがつらいところなのよなあ

icon

twitter.com/tesaguriguma/statu
現に私も`poll`を手書きしているので……(早く`async fn`に移行しろ)

icon

(いつの日か)`async fn`であらゆる`poll`を再現できるなら良いのだろうけど、それって本当に可能なのだろうか。例えば`poll`の合間に構造体の値を書き換えるような操作は`async fn`に置き換えると`await`の前後で(内部可変性のない)スタックの値が勝手に入れ替わるような状況に相当するだろうけど、それって無理では。もちろん内部可変性を導入すれば再現できるけど、ゼロコストではないよね

icon

お前のアプリケーションはその程度のコストをケチってまで`poll`で書くべきものなのか? ぐええ

2023-02-28 15:47:29 κeenの投稿 blackenedgold@mstdn.jp
icon

このアカウントは、notestockで公開設定になっていません。

icon

Helix、以前に一瞬だけ触って「安定したプラグイン機構が整備されたら常用したいなあ」と思いながらアンインストールした思い出

icon

github.com/tesaguri/dotfiles/b
Neovimで有効にしているプラグインが40個くらいか。このうちどうしても欲しいものかつプラグイン機構無しで実現できないものというとどのくらいあるだろう

icon

完全に独立したプラグインだけでなく`init.vim`のスクリプティングでコマンドを定義したりしているのもあるけど、そういう用途はWASMベースのようなプラグイン機構との親和性が微妙そうだなあ。こちらは個人的に依存度は低めだけど