https://dev.mikutter.hachune.net/
https://dev.mikutter.hachune.net/favicon.ico?1619448608
2018-05-07T16:24:00Z
やること
mikutter - バグ #1233: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている
https://dev.mikutter.hachune.net/issues/1233?journal_id=3308
2018-05-07T16:24:00Z
toshi_a 初音
toshi.alternative@gmail.com
<ul></ul><p>mikutterのCKの凍結解除をお願いするためにフォールバック用のコンシューマキーをすべて手放したため完全にTwitterができません。<br />誰か実際に再現するかやってみてほしいです。</p>
mikutter - バグ #1233: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている
https://dev.mikutter.hachune.net/issues/1233?journal_id=3325
2018-05-12T01:57:19Z
Izumi Tsutsui
tsutsui@ceres.dti.ne.jp
<ul><li><strong>ファイル</strong> <a href="/attachments/439">tsutsuii-995119161520013312.png</a> <a class="icon-only icon-download" title="ダウンロード" href="/attachments/download/439/tsutsuii-995119161520013312.png">tsutsuii-995119161520013312.png</a> を追加</li><li><strong>ファイル</strong> <a href="/attachments/440">tsutsuii-995119161520013312-web.png</a> <a class="icon-only icon-download" title="ダウンロード" href="/attachments/download/440/tsutsuii-995119161520013312-web.png">tsutsuii-995119161520013312-web.png</a> を追加</li></ul><p>いつもの NetBSD/i386 8.0_RC1 + pkgsrc mikutter 3.7.0 + <a class="changeset" title="Message Modelに規定されていないiconメソッドを利用しない refs #1229 Message Modelにはuserメソッドは要求されるので、userの存在チェックは消した" href="https://dev.mikutter.hachune.net/projects/mikutter/repository/main/revisions/2ee74d6c03e1fcf015e94d5d0a6c16240a251101">2ee74d6c</a> の <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="バグ: 特定のMessage Modelが表示される時クラッシュすることがある (終了)" href="https://dev.mikutter.hachune.net/issues/1229">#1229</a> の修正の環境で<br />以下のように再現しますね。<br /><a class="external" href="https://twitter.com/tsutsuii/status/995119161520013312">https://twitter.com/tsutsuii/status/995119161520013312</a></p>
<p><img src="https://dev.mikutter.hachune.net/attachments/download/439/tsutsuii-995119161520013312.png" alt="" /><br /><img src="https://dev.mikutter.hachune.net/attachments/download/440/tsutsuii-995119161520013312-web.png" style="width:400px;" alt="" /></p>
mikutter - バグ #1233: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている
https://dev.mikutter.hachune.net/issues/1233?journal_id=3326
2018-05-12T02:15:16Z
Izumi Tsutsui
tsutsui@ceres.dti.ne.jp
<ul><li><strong>ファイル</strong> <a href="/attachments/442">tsutsuii-995119161520013312-patched.png</a> <a class="icon-only icon-download" title="ダウンロード" href="/attachments/download/442/tsutsuii-995119161520013312-patched.png">tsutsuii-995119161520013312-patched.png</a> を追加</li></ul><p><a class="issue tracker-1 status-5 priority-4 priority-default closed" title="バグ: 本文に実体参照を含むツイートにEntityも含まれていた場合、インデックスがずれる (終了)" href="https://dev.mikutter.hachune.net/issues/1227">#1227</a> の <a class="changeset" title="本文に実体参照を含むツイートにEntityも含まれていた場合、インデックスがずれる refs #1227" href="https://dev.mikutter.hachune.net/projects/mikutter/repository/main/revisions/c95d16b22cc4741ba96d0f60d62de93b0e857673">c95d16b2</a> が原因なのかなあ、ということで<br />差分を見て野生の勘で以下のパッチを当てると直るっぽいです。<br />どこかの alias 修正漏れ?</p>
<pre><code class="diff syntaxhl"><span class="gh">diff --git a/core/plugin/twitter/model/message.rb b/core/plugin/twitter/model/message.rb
index 4f58e235..ed2061fb 100644
</span><span class="gd">--- a/core/plugin/twitter/model/message.rb
</span><span class="gi">+++ b/core/plugin/twitter/model/message.rb
</span><span class="p">@@ -660,6 +660,7 @@</span> class Plugin::Twitter::Message < Diva::Model
# 本文を人間に読みやすい文字列に変換する
def to_show
@to_show ||= body.gsub(DESCRIPTION_UNESCAPE_REGEXP, &DESCRIPTION_UNESCAPE_RULE).freeze end
<span class="gi">+ alias_method :description, :to_show
</span>
# このMessageのパーマリンクを取得する
# ==== Return
</code></pre><br /><img src="https://dev.mikutter.hachune.net/attachments/download/442/tsutsuii-995119161520013312-patched.png" alt="" />
mikutter - バグ #1233: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている
https://dev.mikutter.hachune.net/issues/1233?journal_id=3327
2018-05-12T02:20:54Z
toshi_a 初音
toshi.alternative@gmail.com
<ul></ul><p><a class="issue tracker-1 status-5 priority-4 priority-default closed" title="バグ: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている (終了)" href="https://dev.mikutter.hachune.net/issues/1233#note-3">#1233-3</a> だと、 <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="バグ: 本文に実体参照を含むツイートにEntityも含まれていた場合、インデックスがずれる (終了)" href="https://dev.mikutter.hachune.net/issues/1227">#1227</a> の問題が再発しないでしょうか。<br />Plugin::Twitter::Message は、文字列置換を行うと文字列の長さが変わってしまうためEntityの位置がずれてしまいます。したがって <a class="changeset" title="本文に実体参照を含むツイートにEntityも含まれていた場合、インデックスがずれる refs #1227" href="https://dev.mikutter.hachune.net/projects/mikutter/repository/main/revisions/c95d16b22cc4741ba96d0f60d62de93b0e857673">c95d16b2</a> では、実体参照の解除をScoreで行うようにしています。</p>
mikutter - バグ #1233: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている
https://dev.mikutter.hachune.net/issues/1233?journal_id=3328
2018-05-12T02:31:55Z
Izumi Tsutsui
tsutsui@ceres.dti.ne.jp
<ul></ul><p><a class="issue tracker-1 status-5 priority-4 priority-default closed" title="バグ: 本文に実体参照を含むツイートにEntityも含まれていた場合、インデックスがずれる (終了)" href="https://dev.mikutter.hachune.net/issues/1227">#1227</a> の本質をわかっていなかったりしますが、<br />認証のPINを入れたあとに「追加しますか」のウインドウが出なかった<br />ということがあって、それと同じ現象になるということでしょうか。</p>
<p>とりあえず twitter_api_keys を入れた状態で<br />Twitter world 削除→ mikutter 終了 → mikutter 再起動 → Twitterアカウントworld追加<br />を1回やったところでは正常に Twitter World 追加されましたが、<br />再現するしないの問題でもなさそうですね。</p>
<p>いずれにせよ <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="バグ: 本文に実体参照を含むツイートにEntityも含まれていた場合、インデックスがずれる (終了)" href="https://dev.mikutter.hachune.net/issues/1227">#1227</a> では意図して<br />「description の挙動としてはエスケープ文字列を置き換えずに渡す」<br />ということであれば、 to_show を使うべきところで description が使われてしまっている<br />とかなんでしょうか。(深く考えずに書いてます)</p>
mikutter - バグ #1233: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている
https://dev.mikutter.hachune.net/issues/1233?journal_id=3329
2018-05-12T10:29:02Z
cob odo
cobodo@gmail.com
<ul><li><strong>ファイル</strong> <a href="/attachments/444">スクリーンショット 2018-05-12 19.23.02.png</a> <a class="icon-only icon-download" title="ダウンロード" href="/attachments/download/444/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202018-05-12%2019.23.02.png">スクリーンショット 2018-05-12 19.23.02.png</a> を追加</li></ul><p><img src="https://dev.mikutter.hachune.net/attachments/download/444/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202018-05-12%2019.23.02.png" alt="" /><br />下から順に、</p>
<pre>
> https://mstdn.kanagu.info
</pre><br /><pre>
> mstdn.kanagu.info
</pre><br /><pre>
> mstdn
</pre>
<p>と入力したものです。</p>
<p>要するに、Entityが存在し、Entityの処理のために(Entityより前の部分を)TextNoteにする場合には、unescapeが効いたTextNoteが生成されますが、Entityが無い場合にはそういったことは起こらず、unescape処理が行われないために、こうなってしまうのだと思います。<br />恐らくこの場合のTextNoteはscore_by_scoreのelse節で生成されているものなのではないでしょうか?</p>
mikutter - バグ #1233: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている
https://dev.mikutter.hachune.net/issues/1233?journal_id=3331
2018-05-12T11:40:37Z
Izumi Tsutsui
tsutsui@ceres.dti.ne.jp
<ul></ul><p>いろいろ試した結果のあまり役に立たないメモですが</p>
<p><a class="source" href="https://dev.mikutter.hachune.net/projects/mikutter/repository/main/entry/core/plugin/twitter/twitter.rb">source:core/plugin/twitter/twitter.rb</a> の <code>text_note</code> に以下の <code>notice</code> を入れてみて、<br /><pre><code class="diff syntaxhl"><span class="gh">diff --git a/core/plugin/twitter/twitter.rb b/core/plugin/twitter/twitter.rb
index 1cb0208d..938e19c5 100644
</span><span class="gd">--- a/core/plugin/twitter/twitter.rb
</span><span class="gi">+++ b/core/plugin/twitter/twitter.rb
</span><span class="p">@@ -492,6 +492,7 @@</span> Plugin.create(:twitter) do
# Plugin::Twitter::Message#descriptionの結果が実体参照をエスケープすると
# Entityのインデックスがずれるので、このメソッドで行う。
def text_note(description:)
<span class="gi">+ notice description.gsub(Plugin::Twitter::Message::DESCRIPTION_UNESCAPE_REGEXP, &Plugin::Twitter::Message::DESCRIPTION_UNESCAPE_RULE).freeze
</span> Diva::Model(:score_text).new(description: description.gsub(Plugin::Twitter::Message::DESCRIPTION_UNESCAPE_REGEXP, &Plugin::Twitter::Message::DESCRIPTION_UNESCAPE_RULE))
end
</code></pre></p>
<p><a class="issue tracker-1 status-5 priority-4 priority-default closed" title="バグ: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている (終了)" href="https://dev.mikutter.hachune.net/issues/1233#note-3">#1233#note-3</a> のツイートを show_tweet プラグイン<br /><a class="external" href="https://github.com/osak/show_tweet">https://github.com/osak/show_tweet</a><br />で受信してみると、一応以下のように <code>text_note</code> は複数回呼ばれているようです。<br /><pre>
warning: /usr/pkg/lib/ruby/2.4.0/rubygems/deprecate.rb:62:in `block (2 levels) in deprecate': NOTE: Skin.get is deprecated; use get_path instead. It will be removed on or after 2018-01-01.
Skin.get called from /home/tsutsui/.mikutter-test/plugin/show_tweet/show_tweet.rb:17.
notice: {MIKUTTER_DIR}/core/plugin/twitter/twitter.rb:495:in `text_note': <>&
&lt;&gt;&amp;
という mikutter twitter プラグインのエスケープ問題再発問題
notice: {MIKUTTER_DIR}/core/plugin/twitter/twitter.rb:495:in `text_note': <>&
&lt;&gt;&amp;
という mikutter twitter プラグインのエスケープ問題再発問題
notice: {MIKUTTER_DIR}/core/plugin/twitter/twitter.rb:495:in `text_note': <>&
&lt;&gt;&amp;
という mikutter twitter プラグインのエスケープ問題再発問題
notice: {MIKUTTER_DIR}/core/plugin/twitter/twitter.rb:495:in `text_note': <>&
&lt;&gt;&amp;
という mikutter twitter プラグインのエスケープ問題再発問題
notice: {MIKUTTER_DIR}/core/plugin/twitter/twitter.rb:495:in `text_note': <>&
&lt;&gt;&amp;
という mikutter twitter プラグインのエスケープ問題再発問題
notice: {MIKUTTER_DIR}/core/plugin/twitter/twitter.rb:495:in `text_note': <>&
&lt;&gt;&amp;
という mikutter twitter プラグインのエスケープ問題再発問題
notice: {MIKUTTER_DIR}/core/plugin/twitter/twitter.rb:495:in `text_note': <>&
&lt;&gt;&amp;
という mikutter twitter プラグインのエスケープ問題再発問題
notice: {MIKUTTER_DIR}/core/plugin/twitter/twitter.rb:495:in `text_note': <>&
&lt;&gt;&amp;
という mikutter twitter プラグインのエスケープ問題再発問題
notice: {MIKUTTER_DIR}/core/plugin/twitter/twitter.rb:495:in `text_note': <>&
&lt;&gt;&amp;
という mikutter twitter プラグインのエスケープ問題再発問題
notice: {MIKUTTER_DIR}/core/plugin/twitter/twitter.rb:495:in `text_note': <>&
&lt;&gt;&amp;
という mikutter twitter プラグインのエスケープ問題再発問題
notice: {MIKUTTER_DIR}/core/plugin/twitter/twitter.rb:495:in `text_note': <>&
&lt;&gt;&amp;
という mikutter twitter プラグインのエスケープ問題再発問題
notice: {MIKUTTER_DIR}/core/plugin/twitter/twitter.rb:495:in `text_note': <>&
&lt;&gt;&amp;
という mikutter twitter プラグインのエスケープ問題再発問題
notice: {MIKUTTER_DIR}/core/plugin/twitter/twitter.rb:495:in `text_note': <>&
&lt;&gt;&amp;
という mikutter twitter プラグインのエスケープ問題再発問題
notice: {MIKUTTER_DIR}/core/plugin/twitter/twitter.rb:495:in `text_note': <>&
&lt;&gt;&amp;
という mikutter twitter プラグインのエスケープ問題再発問題
notice: {MIKUTTER_DIR}/core/plugin/twitter/twitter.rb:495:in `text_note': <>&
&lt;&gt;&amp;
という mikutter twitter プラグインのエスケープ問題再発問題
notice: {MIKUTTER_DIR}/core/plugin/twitter/twitter.rb:495:in `text_note': <>&
&lt;&gt;&amp;
という mikutter twitter プラグインのエスケープ問題再発問題
notice: {MIKUTTER_DIR}/core/plugin/twitter/twitter.rb:495:in `text_note': <>&
&lt;&gt;&amp;
という mikutter twitter プラグインのエスケープ問題再発問題
notice: {MIKUTTER_DIR}/core/plugin/twitter/twitter.rb:495:in `text_note': <>&
&lt;&gt;&amp;
という mikutter twitter プラグインのエスケープ問題再発問題
notice: {MIKUTTER_DIR}/core/plugin/streaming/perma_streamer.rb:33:in `block in mainloop': PermaStreamer exit
</pre></p>
<p>ただ、どれがTL描画に使われているのかというのは把握できていません。</p>
mikutter - バグ #1233: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている
https://dev.mikutter.hachune.net/issues/1233?journal_id=3335
2018-05-12T11:48:36Z
cob odo
cobodo@gmail.com
<ul><li><strong>関連している</strong> <i><a class="issue tracker-12 status-14 priority-4 priority-default" href="/issues/1241">提案 #1241</a>: Scoreの初期値をModelが提供できるようにする</i> を追加</li></ul>
mikutter - バグ #1233: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている
https://dev.mikutter.hachune.net/issues/1233?journal_id=3339
2018-05-12T15:30:04Z
toshi_a 初音
toshi.alternative@gmail.com
<ul><li><strong>ステータス</strong> を <i>分類待ち</i> から <i>実装待ち</i> に変更</li></ul><p>なるほど、確かに単一のText Noteだと、Scoreによる置き換えが発生しませんね。<br /><a class="issue tracker-1 status-5 priority-4 priority-default closed" title="バグ: 本文に実体参照を含むツイートにEntityも含まれていた場合、インデックスがずれる (終了)" href="https://dev.mikutter.hachune.net/issues/1227">#1227</a> を実装する時、実体参照解除機能をもたせたModelを検討したのですが、大げさになる為止めたということがありました。しかしよく考えれば、TextNoteを使うということは一切文字列を置換しないということを表明していることになるのですから、内容を変えているならTextNoteを使うべきではないですね。</p>
mikutter - バグ #1233: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている
https://dev.mikutter.hachune.net/issues/1233?journal_id=3358
2018-05-16T07:16:21Z
cob odo
cobodo@gmail.com
<ul></ul><p>逆に、TextNoteを使わないということは他のプラグインによるScore置き換えを一切拒否するということになるので、それはそれで面白くないなーと思いました。</p>
mikutter - バグ #1233: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている
https://dev.mikutter.hachune.net/issues/1233?journal_id=3359
2018-05-16T16:07:50Z
cob odo
cobodo@gmail.com
<ul><li><strong>ファイル</strong> <a href="/attachments/450">1233-dummynote.patch</a> <a class="icon-only icon-download" title="ダウンロード" href="/attachments/download/450/1233-dummynote.patch">1233-dummynote.patch</a> を追加</li></ul><p>サードパーティプラグインでのScore置き換えを許容し、かつ <a class="issue tracker-12 status-14 priority-4 priority-default" title="提案: Scoreの初期値をModelが提供できるようにする (toshi_aの判断待ち)" href="https://dev.mikutter.hachune.net/issues/1241">#1241</a> で提案した方法を除いて、Unescape済み<code>TextNote</code>を採用させるには、先頭に<code>description</code>が空のNoteを置けばいいはずだ、ということで、例えば添付したパッチのような実装が考えられます。</p>
mikutter - バグ #1233: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている
https://dev.mikutter.hachune.net/issues/1233?journal_id=3360
2018-05-16T19:47:39Z
toshi_a 初音
toshi.alternative@gmail.com
<ul></ul><p><a class="issue tracker-1 status-5 priority-4 priority-default closed" title="バグ: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている (終了)" href="https://dev.mikutter.hachune.net/issues/1233#note-10">#1233-10</a></p>
<p>これは思ってました。注記したときは勝手に再帰展開されるしこれでいけると思ってたんですが、再帰展開されるのは Diva::Model(:score_text) だけなので、確かに別の方法を考えないとですね。</p>
<p><a class="issue tracker-1 status-5 priority-4 priority-default closed" title="バグ: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている (終了)" href="https://dev.mikutter.hachune.net/issues/1233#note-11">#1233-11</a> のパッチはたしかに動きそうですが(Twitterの規約に従い、mikutter以外のCKを手放してしまってまたTwitterできなくなったため未確認です)、他にエレガントな方法があればそちらを採用したいですね。</p>
<a name="他の解決策"></a>
<h1 >他の解決策<a href="#他の解決策" class="wiki-anchor">¶</a></h1>
<p>実体参照を解除したdescriptionを持っているText Noteを仮に、UnescapedTextNoteと呼ぶことにします。</p>
<a name="scoreルールがscoreを再帰的に問い合わせた結果を使う"></a>
<h2 >scoreルールがscoreを再帰的に問い合わせた結果を使う<a href="#scoreルールがscoreを再帰的に問い合わせた結果を使う" class="wiki-anchor">¶</a></h2>
<p>私の当初の考えをブラッシュアップすると、Text Noteの代わりにUnescapedTextNoteを返すのではなく、UnescapedTextNoteを引数にscoreを得て、その内容を返すようにすれば全てのModelに適用できるScoreルールは適用されるようになります。<br />ただ、twitter_tweetではなくUnescapedTextNoteが対象となるため、twitter_tweetのみを対象にしたScoreルールが適用されません。</p>
<p>愚直な解決策としては、score_ofのオプション引数として、親となるModelとして別のものを渡せるようにすることです。しかしあまりにも解決方法が場当たり的すぎて、これも他に良い方法があれば避けたいところです。</p>
<a name="TextNoteの要件を拡張"></a>
<h2 >TextNoteの要件を拡張<a href="#TextNoteの要件を拡張" class="wiki-anchor">¶</a></h2>
<p>現在、score_ofがNoteを再帰展開するルールは、次のようなものです。</p>
<pre><code class="ruby syntaxhl"><span class="n">note</span><span class="p">.</span><span class="nf">class</span><span class="p">.</span><span class="nf">slug</span> <span class="o">==</span> <span class="ss">:score_text</span>
</code></pre>
<p>これが例えば次のようになっていれば、score_ofがUnescapedTextNoteを受け取った時に、Text Noteと同じように再帰展開が試みられます。</p>
<pre><code class="ruby syntaxhl"><span class="n">should_expand?</span><span class="p">(</span><span class="n">note</span><span class="p">)</span>
</code></pre>
<p>もともと、Model slugを使うのはダックタイピングを阻害していて嫌だと思っていたので、副作用も少ないこの方法は私の中では今のところ有望です。</p>
<a name="全てのNoteが再帰的に展開されるようにする"></a>
<h2 >全てのNoteが再帰的に展開されるようにする<a href="#全てのNoteが再帰的に展開されるようにする" class="wiki-anchor">¶</a></h2>
<p>実はチケットにもしておらず、mikutter 3.8で実現しようと思っていた機能です。現在のScoreの仕組みでは、ハイパーリンクがNoteを持つことができないので、プレンーテキストにしかリンクを貼れないという問題があります。</p>
<p>具体的には、絵文字が含まれるURLは、twemojiプラグインで絵文字を展開できない(又は、twemojiプラグインのせいでURLが分断され、ハイパーリンクにならない)という問題があります。現状実装されているWorld系プラグインでこれが問題になることはまずないようですが。</p>
<p>この機能を実現するとしたら、全ての未知のNoteは必ず再帰展開を試みられることになるため、UnescapedTextNoteは特に工夫をしなくても <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="バグ: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている (終了)" href="https://dev.mikutter.hachune.net/issues/1233#note-10">#1233-10</a> の問題が発生しなくなります。</p>
<p>先延ばしにした理由は単純に解決できない問題があるからです。本筋から逸れるので程々にしますが、実装によってはScoreが単なるModelの配列ではなくなったり、そのせいでMiraclePainterがキャッシュしづらくなるという問題が起こると予想しています。</p>
mikutter - バグ #1233: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている
https://dev.mikutter.hachune.net/issues/1233?journal_id=3403
2018-06-06T06:13:13Z
ncaq エヌユル
ncaq@ncaq.net
<ul></ul><p>twitter.rbの295行のfilter_score_filterを弄ってdeadbeefのtext noteを返すようにしてみたのですが全く何も反映されませんでした…<br />プリントデバッグしてみたら呼び出されてはいるようなのですが<br />何に使われてるんでしょうこの処理…<br />ここのscore見てみるとちゃんとunescapeされてるんですよね</p>
mikutter - バグ #1233: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている
https://dev.mikutter.hachune.net/issues/1233?journal_id=3404
2018-06-06T06:32:25Z
cob odo
cobodo@gmail.com
<ul><li><strong>クラッシュする</strong> を <i>いいえ</i> から <i>はい</i> に変更</li></ul><p>ncaq net さんは書きました:</p>
<blockquote>
<p>twitter.rbの295行のfilter_score_filterを弄ってdeadbeefのtext noteを返すようにしてみたのですが全く何も反映されませんでした…<br />プリントデバッグしてみたら呼び出されてはいるようなのですが<br />何に使われてるんでしょうこの処理…<br />ここのscore見てみるとちゃんとunescapeされてるんですよね</p>
</blockquote>
<p>TextNoteのみで構成されるscoreは <a class="external" href="https://dev.mikutter.hachune.net/projects/mikutter/repository/revisions/acbbb1e2b5dd77f490da3b41ae8e41a92a60f846/entry/core/plugin/twitter/twitter.rb#L298">https://dev.mikutter.hachune.net/projects/mikutter/repository/revisions/acbbb1e2b5dd77f490da3b41ae8e41a92a60f846/entry/core/plugin/twitter/twitter.rb#L298</a> の条件で落ちます。<br />そこを書き換えても、 <a class="external" href="https://reference.mikutter.hachune.net/basis/2018/04/24/score.html">https://reference.mikutter.hachune.net/basis/2018/04/24/score.html</a> の「Score選定アルゴリズム」により却下される場合があります。</p>
<code>score_filter</code>がつくるscoreはあくまで提案で、複数提案されるscoreのどれが選ばれるかによって最終的な結果が変わるので、実行時にコードパスとして通っているからといって、必ずしもそれが結果に影響するわけではないんですね。
mikutter - バグ #1233: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている
https://dev.mikutter.hachune.net/issues/1233?journal_id=3405
2018-06-06T06:35:58Z
cob odo
cobodo@gmail.com
<ul><li><strong>クラッシュする</strong> を <i>はい</i> から <i>いいえ</i> に変更</li></ul>
mikutter - バグ #1233: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている
https://dev.mikutter.hachune.net/issues/1233?journal_id=3579
2018-07-22T00:51:43Z
Izumi Tsutsui
tsutsui@ceres.dti.ne.jp
<ul><li><strong>ファイル</strong> <a href="/attachments/482">tsutsuii-995119161520013312-dummynote.png</a> <a class="icon-only icon-download" title="ダウンロード" href="/attachments/download/482/tsutsuii-995119161520013312-dummynote.png">tsutsuii-995119161520013312-dummynote.png</a> を追加</li></ul><p>master に対して <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="バグ: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている (終了)" href="https://dev.mikutter.hachune.net/issues/1233#note-11">#1233-11</a> の <a class="attachment" href="https://dev.mikutter.hachune.net/attachments/450">1233-dummynote.patch</a> を適用してみたところ、回避策としては問題ないようです。<br /><img src="https://dev.mikutter.hachune.net/attachments/download/482/tsutsuii-995119161520013312-dummynote.png" alt="" /></p>
<p>toshi_a 初音 さんは書きました:</p>
<blockquote>
<p><a class="issue tracker-1 status-5 priority-4 priority-default closed" title="バグ: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている (終了)" href="https://dev.mikutter.hachune.net/issues/1233#note-11">#1233-11</a> のパッチはたしかに動きそうですが(Twitterの規約に従い、mikutter以外のCKを手放してしまってまたTwitterできなくなったため未確認です)、他にエレガントな方法があればそちらを採用したいですね。</p>
</blockquote>
<p><a class="issue tracker-1 status-5 priority-4 priority-default closed" title="バグ: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている (終了)" href="https://dev.mikutter.hachune.net/issues/1233#note-12">#1233-12</a> の本質対策に時間がかかるならば上記を先に適用しておくという選択肢もありかと思いますが<br />弊害はあるでしょうか。</p>
<p>ぼちぼち指摘が出ているようです。<br /><a class="external" href="https://twitter.com/ray45422/status/1020669432446660608">https://twitter.com/ray45422/status/1020669432446660608</a></p>
<blockquote>
<p>mikutterでhtmlでエスケープしないと表示できない文字がエスケープされたまま表示されてる</p>
</blockquote>
mikutter - バグ #1233: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている
https://dev.mikutter.hachune.net/issues/1233?journal_id=3596
2018-07-25T16:03:51Z
cob odo
cobodo@gmail.com
<ul></ul><blockquote>
<p>弊害はあるでしょうか。</p>
</blockquote>
<p>ない(つもり)です。</p>
<p>あるとすれば3.8向けのMiraclePainterリニューアル作業への影響がある、といった感じなんだと思います。</p>
mikutter - バグ #1233: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている
https://dev.mikutter.hachune.net/issues/1233?journal_id=3597
2018-07-26T03:23:42Z
toshi_a 初音
toshi.alternative@gmail.com
<ul></ul><blockquote>
<p><a class="issue tracker-1 status-5 priority-4 priority-default closed" title="バグ: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている (終了)" href="https://dev.mikutter.hachune.net/issues/1233#note-12">#1233-12</a> の本質対策に時間がかかるならば上記を先に適用しておくという選択肢もありかと思いますが<br />弊害はあるでしょうか。</p>
</blockquote>
<p><a class="issue tracker-1 status-5 priority-4 priority-default closed" title="バグ: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている (終了)" href="https://dev.mikutter.hachune.net/issues/1233#note-11">#1233-11</a> の次善策は一見うまく動いていますが、このハックが同様の問題を抱えるサードパーティプラグインで横行すると、場合によっては将来のmikutterの実装が(ハックとの互換性を考えて)複雑なものになってしまうことを危惧していました。なので <a href="https://dev.mikutter.hachune.net/issues/1233#TextNote%E3%81%AE%E8%A6%81%E4%BB%B6%E3%82%92%E6%8B%A1%E5%BC%B5" class="external">TextNoteの要件を拡張</a> が簡単に出来なかった場合に <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="バグ: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている (終了)" href="https://dev.mikutter.hachune.net/issues/1233#note-11">#1233-11</a> の適用をしようと考えていました。</p>
<p>(実はこの検証のために、OSC展示やテストのためにAkkiesoftから貰っていたTwitter APIキーを有効にしたところ標準プラグインのバグと思われるものを見つけたと思ったらPortalの問題だった、といったyak shavingをやっているところで、そうこうしているうちにTwitter APIに関する新しい発表があったりして少々焦っています)</p>
mikutter - バグ #1233: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている
https://dev.mikutter.hachune.net/issues/1233?journal_id=3618
2018-08-02T10:07:11Z
cob odo
cobodo@gmail.com
<ul><li><strong>ファイル</strong> <a href="/attachments/496">0001-html-entity.patch</a> <a class="icon-only icon-download" title="ダウンロード" href="/attachments/download/496/0001-html-entity.patch">0001-html-entity.patch</a> を追加</li></ul><p>別の問題を追っていたら、図らずもコレに対する修正ができたので、パッチをここに貼ってみます。<br />このパッチでは、以下の2つの修正をします。</p>
<ul>
<li><code>Plugin::Twitter::Message#description</code>がHTML実体参照を解除したものを返すようにする</li>
<li><code>Plugin[:twitter].score_by_entity</code>が<code>Plugin::Twitter::Message#description</code>ではなく<code>Plugin::Twitter::Message#body</code>を使うようにする</li>
</ul>
<p>この結果、以下の効果が得られます。</p>
<ul>
<li>本文表示時にentityが無い場合にも実体参照が解除された状態になる(entityがある場合は <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="バグ: 本文に実体参照を含むツイートにEntityも含まれていた場合、インデックスがずれる (終了)" href="https://dev.mikutter.hachune.net/issues/1227">#1227</a> で対処された方のコードを通るため、実体参照は解除されている)</li>
<li>「本文をコピー」時に実体参照が解除された状態になる</li>
<li>extractプラグインによる<code>:popup_notify</code>通知の本文パートで実体参照が解除された状態になる</li>
</ul>
mikutter - バグ #1233: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている
https://dev.mikutter.hachune.net/issues/1233?journal_id=3619
2018-08-02T10:12:11Z
cob odo
cobodo@gmail.com
<ul></ul><code>:popup_notify</code>が使用する<code>notify-send</code>はむしろHTML実体参照でエスケープしなきゃいけないんですね。
<p><a class="external" href="http://www.galago-project.org/specs/notification/0.9/x161.html">http://www.galago-project.org/specs/notification/0.9/x161.html</a></p>
<p>さっきのパッチを使用するなら、送る直前に改めてエスケープするコードを追加する必要がありますね……</p>
mikutter - バグ #1233: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている
https://dev.mikutter.hachune.net/issues/1233?journal_id=3620
2018-08-02T11:01:27Z
cob odo
cobodo@gmail.com
<ul></ul><p>ちょっといくつか見てみましたが、メッセージモデルの<code>description</code>がHTML実体参照エスケープされているものを返すサードパーティプラグインは見当たりませんでした。</p>
<ul>
<li>Worldon: APIからHTMLで取得→descriptionはunescapeして返す</li>
<li>Slack: APIから専用の記法で記述されたテキストで取得→Entity機構でユーザ名などを加工して表示するが、descriptionはそのまま。</li>
<li>Haiku: APIからはてな記法で記述されたテキストで取得→そのまま返す</li>
<li>RSS <a class="external" href="https://github.com/yukkurisinai/mikutter_rss">https://github.com/yukkurisinai/mikutter_rss</a> : リポジトリ消失?</li>
<li>IRC <a class="external" href="https://bitbucket.org/Phenomer/mikutter-irc">https://bitbucket.org/Phenomer/mikutter-irc</a> : Divaより前の時代のプラグインですが、IRCなのでおそらくHTML実体参照は無い。</li>
</ul>
<p>とすると、<>&などが含まれたメッセージの通知はTwitter以外ではそもそもマトモに動いてなかったんでしょうか? Linuxデスクトップを使っていないのでわかりませんが……<br />動いていないとしたら別チケットを立てるべきですね。</p>
mikutter - バグ #1233: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている
https://dev.mikutter.hachune.net/issues/1233?journal_id=3621
2018-08-03T09:51:46Z
cob odo
cobodo@gmail.com
<ul><li><strong>ファイル</strong> <a href="/attachments/497">0001-copy_description_filter_dm.patch</a> <a class="icon-only icon-download" title="ダウンロード" href="/attachments/download/497/0001-copy_description_filter_dm.patch">0001-copy_description_filter_dm.patch</a> を追加</li></ul><p>DirectMessageで落ちたのでパッチに対策を入れました。</p>
mikutter - バグ #1233: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている
https://dev.mikutter.hachune.net/issues/1233?journal_id=3923
2019-05-18T19:49:06Z
cob odo
cobodo@gmail.com
<ul></ul><p>ブランチをつくりました</p>
mikutter - バグ #1233: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている
https://dev.mikutter.hachune.net/issues/1233?journal_id=3924
2019-05-18T19:50:12Z
cob odo
cobodo@gmail.com
<ul><li><strong>ステータス</strong> を <i>実装待ち</i> から <i>レビュー待ち</i> に変更</li><li><strong>担当者</strong> を <i>Izumi Tsutsui</i> にセット</li><li><strong>対象バージョン</strong> を <i>3.7</i> から <i>3.8</i> に変更</li><li><strong>プラグイン名</strong> を <i>twitter</i> にセット</li><li><strong>ブランチ</strong> を <i>topic/1233-html-entities-in-twitter-description</i> にセット</li></ul><p>レビューお願いします。</p>
mikutter - バグ #1233: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている
https://dev.mikutter.hachune.net/issues/1233?journal_id=3925
2019-05-19T01:51:04Z
toshi_a 初音
toshi.alternative@gmail.com
<ul></ul><p>修正方針はこれで良いと思います</p>
mikutter - バグ #1233: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている
https://dev.mikutter.hachune.net/issues/1233?journal_id=3926
2019-05-19T04:57:21Z
Izumi Tsutsui
tsutsui@ceres.dti.ne.jp
<ul><li><strong>ステータス</strong> を <i>レビュー待ち</i> から <i>マージ待ち</i> に変更</li><li><strong>対象バージョン</strong> を削除 (<del><i>3.8</i></del>)</li></ul><p>topic ブランチで検証しようとすると totori.dip.jp の gem でハマるという罠があるので<br />とりあえずで <a class="changeset" title="- Plugin::Twitter::{Message,DirectMessage}#description がHTML実体参照を解除したものを返すように変更。 - Plugin[:twit..." href="https://dev.mikutter.hachune.net/projects/mikutter/repository/main/revisions/ffab18130378fa7d57c51d9016df1e079a5e1d7f">ffab1813</a> の差分を pkgsrc の mikutter にオレオレパッチで当ててテストしました。</p>
<p>show_tweet プラグインで<br /><a class="external" href="https://twitter.com/tsutsuii/status/995119161520013312">https://twitter.com/tsutsuii/status/995119161520013312</a><br />を表示させてみて、意図通り <>& が表示されました。<br />なので問題ないと思います。</p>
mikutter - バグ #1233: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている
https://dev.mikutter.hachune.net/issues/1233?journal_id=3927
2019-05-19T04:57:36Z
Izumi Tsutsui
tsutsui@ceres.dti.ne.jp
<ul><li><strong>対象バージョン</strong> を <i>3.8</i> にセット</li></ul>
mikutter - バグ #1233: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている
https://dev.mikutter.hachune.net/issues/1233?journal_id=3928
2019-05-19T04:58:36Z
Izumi Tsutsui
tsutsui@ceres.dti.ne.jp
<ul></ul><p>リロードしてもプルダウンメニューの選択が変わらない<br />(ので意図せず設定が戻ることがある)のは<br />Redmine の問題なのか Firefox の問題なのか……(´・ω・`)</p>
mikutter - バグ #1233: Twitterのメッセージに含まれる <>& がHTML実体参照のままになっている
https://dev.mikutter.hachune.net/issues/1233?journal_id=3933
2019-05-19T06:32:17Z
cob odo
cobodo@gmail.com
<ul><li><strong>ステータス</strong> を <i>マージ待ち</i> から <i>終了</i> に変更</li></ul><p>merge して push しました。</p>