やること: チケット
https://dev.mikutter.hachune.net/
https://dev.mikutter.hachune.net/favicon.ico?1619448608
2022-01-09T06:48:18Z
やること
Redmine
mikutter - バグ #1577 (終了): 抽出タブ絞り込み条件で「投稿したクライアントアプリケーション名」に「含む」を設定するとクラッシュする
https://dev.mikutter.hachune.net/issues/1577
2022-01-09T06:48:18Z
toshi_a 初音
toshi.alternative@gmail.com
<p>再現手順の通り実行すると、抽出タブの絞り込みでクラッシュする。<br />Mastodonのstatusはclient情報をもっていない ( <code>nil</code> )ことがある。<br />この抽出条件は<br /><pre><code class="ruby syntaxhl"><span class="n">message</span><span class="p">.</span><span class="nf">client</span><span class="p">.</span><span class="nf">include?</span><span class="p">(</span><span class="s1">'mikutter'</span><span class="p">)</span>
</code></pre><br />のようなコードにコンパイルされる。clientがnilを返す場合も考慮する必要がある。</p>
<p>Twitterでは、すべてのMessageがsourceの戻り値として空文字列を返すようにしていた気がするので再現しないと思う。<br />また、「=」の場合は <code>==</code> で比較されるので、クラッシュしない。</p>
mikutter - 提案 #1575 (終了): rubocopで定めたコーディング規約の適用方針・範囲の決定
https://dev.mikutter.hachune.net/issues/1575
2022-01-08T08:25:24Z
toshi_a 初音
toshi.alternative@gmail.com
<p>将来的にすべてのソースコードがrubocopのlintに合格しないとmergeできないようにして、常にコーディング規約を満たした状態に持っていく。</p>
<a name="方針"></a>
<h1 >方針<a href="#方針" class="wiki-anchor">¶</a></h1>
<p>10年くらい前までやっていた行末endなどのコーディング規約は既に廃止しているが、一気にやるとdiffがえらいことになってblameなどで若干面倒になるので、少しでも編集したメソッドに関してだけ修正していっている。<br />雑に全部auto correctすると、相当なdiffが発生する。diffの量を小さくするため、次のようにファイルを優先度で分類し、やる価値が高いと判断したものにだけ適用する。</p>
1. 優先度低: 何年もの間、全く開発者から参照されず、書き換えられていないファイル
<ul>
<li>古いコードほど今と異なる規約でコーディングされているので、diffが大きくなっていく傾向にある</li>
<li>そもそも誰も読まないので、コーディング規約を守っていても違反していてもあんまり関係がない</li>
<li>diffが大きいことからリグレッションの可能性が相対的に上がり、検証がだるい</li>
</ul>
2. 優先度高: 頻繁に開発者から参照され、書き換えが行われるようなファイル
<ul>
<li>歴史が浅いため、規約を適用しても小さなdiffですむ</li>
<li>書き換えが最近行われているので、直近で開発者が読む可能性が高く、コーディング規約を守る重要性が高い</li>
<li>リグレッションが発生しても、最近修正した機能ならまだ覚えているので、修正が容易</li>
</ul>
<a name="手順"></a>
<h1 >手順<a href="#手順" class="wiki-anchor">¶</a></h1>
<p>一気にやるとdiffがえらいことになってblameなどで若干面倒になるので、新規ファイルや著しい変更があったファイルに限定したい。<br />これを満たすために、rubocop対象のファイルをブラックリスト形式で管理する。ブラックリストは、作成した後は減らすことしかしないため、全体のエラー率は時間の経過とともに下がっていく。</p>
<p>ブラックリストは以下の条件で作成する:</p>
<ul>
<li>mikutter 4.1.0(rubocop導入したひとつ前のバージョン)で存在したすべてのファイル</li>
</ul>
<p>今後、以下の条件を満たすものは即座にブラックリストから削除する:</p>
<ul>
<li>mikutter 4.1.0以降で50%以上の行が変更されたファイル(割合はいろいろ変えて様子を見て決定する)<br /> 大幅にリファクタリングしたファイルなどはどうせdiffがでかくなっていてblameのとき邪魔なので、いっそのこと機械的にやってしまう</li>
</ul>
<a name="このIssueでやること"></a>
<h1 >このIssueでやること<a href="#このIssueでやること" class="wiki-anchor">¶</a></h1>
<ol>
<li>ブラックリストの作成</li>
<li>ブラックリストを除外したファイルのルールを検証する方法の確立</li>
<li>ブラックリストから除外対象となったファイルを除く方法の確立</li>
<li>2を使ってコードをリファクタリングする</li>
</ol>
<p>適用するバージョンは5.0(メンテナンスしている最も古いバージョン)にする。gtk3のコードに適用したいが、そうするとそれなりのdiffが発生してしまい、mergeが困難となることが予想されるため。</p>
<a name="懸念"></a>
<h1 >懸念<a href="#懸念" class="wiki-anchor">¶</a></h1>
<p>開発者が参照するコードは、頻繁に変更もされているはずだという前提に立っているが、なかには長い間変更されていないが参照されるコードというものも存在する。<br />この基準ではそういったコードをフォローできていない。</p>
<a name="他の方法"></a>
<h1 >他の方法<a href="#他の方法" class="wiki-anchor">¶</a></h1>
<p>rubocop todoは、コードの古さに応じてルールの適用方針を変えていく考え方とはあまり相性がよくなさそうなので、利用を断念した。</p>
mikutter - バグ #1574 (終了): TCPコネクションが確立できないときにmastodon_sse_stramingがクラッシュする
https://dev.mikutter.hachune.net/issues/1574
2022-01-02T08:18:12Z
toshi_a 初音
toshi.alternative@gmail.com
<p>mastodon_sse_stramingが、コネクションを切断された | 確立できなかった場合の処理を実装していない。</p>
mikutter - バグ #1569 (終了): ruby3.1.0環境で新規confでの起動に失敗する
https://dev.mikutter.hachune.net/issues/1569
2022-01-01T11:31:10Z
あひる 家鴨
<p>ruby 3.1.0 環境で新規confで起動しようとすると、下記エラーで落ちます。<br /><pre>
/home/ahiru/work/mikutter/mikutter/vendor/bundle/ruby/3.1.0/gems/gettext-3.4.1/lib/gettext/mo.rb:178:in `require': cannot load such file -- mathn (LoadError)
from /home/ahiru/work/mikutter/mikutter/vendor/bundle/ruby/3.1.0/gems/gettext-3.4.1/lib/gettext/mo.rb:178:in `next_prime'
from /home/ahiru/work/mikutter/mikutter/vendor/bundle/ruby/3.1.0/gems/gettext-3.4.1/lib/gettext/mo.rb:217:in `save_to_stream'
from /home/ahiru/work/mikutter/mikutter/vendor/bundle/ruby/3.1.0/gems/gettext-3.4.1/lib/gettext/mo.rb:292:in `block in save_to_file'
from /home/ahiru/work/mikutter/mikutter/vendor/bundle/ruby/3.1.0/gems/gettext-3.4.1/lib/gettext/mo.rb:292:in `open'
from /home/ahiru/work/mikutter/mikutter/vendor/bundle/ruby/3.1.0/gems/gettext-3.4.1/lib/gettext/mo.rb:292:in `save_to_file'
from /home/ahiru/work/mikutter/mikutter/vendor/bundle/ruby/3.1.0/gems/gettext-3.4.1/lib/gettext/tools/msgfmt.rb:58:in `run'
from /home/ahiru/work/mikutter/mikutter/vendor/bundle/ruby/3.1.0/gems/gettext-3.4.1/lib/gettext/tools/msgfmt.rb:38:in `run'
from /home/ahiru/work/mikutter/mikutter/plugin/uitranslator/uitranslator.rb:37:in `block in spec='
from /home/ahiru/work/mikutter/mikutter/plugin/uitranslator/uitranslator.rb:34:in `each'
from /home/ahiru/work/mikutter/mikutter/plugin/uitranslator/uitranslator.rb:34:in `spec='
from /home/ahiru/work/mikutter/mikutter/core/miquire_plugin.rb:156:in `block (2 levels) in load'
from /home/ahiru/work/mikutter/mikutter/vendor/bundle/ruby/3.1.0/gems/pluggaloid-1.7.0/lib/pluggaloid/plugin.rb:39:in `instance_eval'
from /home/ahiru/work/mikutter/mikutter/vendor/bundle/ruby/3.1.0/gems/pluggaloid-1.7.0/lib/pluggaloid/plugin.rb:39:in `create'
from /home/ahiru/work/mikutter/mikutter/core/miquire_plugin.rb:155:in `block in load'
from /home/ahiru/work/mikutter/mikutter/core/utils.rb:288:in `block in atomic'
from /home/ahiru/work/mikutter/mikutter/core/utils.rb:288:in `synchronize'
from /home/ahiru/work/mikutter/mikutter/core/utils.rb:288:in `atomic'
from /home/ahiru/work/mikutter/mikutter/core/miquire_plugin.rb:147:in `load'
from /home/ahiru/work/mikutter/mikutter/core/miquire_plugin.rb:149:in `block (2 levels) in load'
from /home/ahiru/work/mikutter/mikutter/core/miquire_plugin.rb:148:in `each'
from /home/ahiru/work/mikutter/mikutter/core/miquire_plugin.rb:148:in `block in load'
from /home/ahiru/work/mikutter/mikutter/core/utils.rb:288:in `block in atomic'
from /home/ahiru/work/mikutter/mikutter/core/utils.rb:288:in `synchronize'
from /home/ahiru/work/mikutter/mikutter/core/utils.rb:288:in `atomic'
from /home/ahiru/work/mikutter/mikutter/core/miquire_plugin.rb:147:in `load'
from /home/ahiru/work/mikutter/mikutter/core/miquire_plugin.rb:99:in `block in load_all'
from /home/ahiru/work/mikutter/mikutter/core/miquire_plugin.rb:40:in `block in each_spec'
from /home/ahiru/work/mikutter/mikutter/core/miquire_plugin.rb:35:in `each'
from /home/ahiru/work/mikutter/mikutter/core/miquire_plugin.rb:35:in `each'
from /home/ahiru/work/mikutter/mikutter/core/miquire_plugin.rb:38:in `each_spec'
from /home/ahiru/work/mikutter/mikutter/core/miquire_plugin.rb:98:in `load_all'
from /home/ahiru/work/mikutter/mikutter/core/boot/load_plugin.rb:14:in `<top (required)>'
from mikutter.rb:55:in `require'
from mikutter.rb:55:in `<main>'
</pre></p>
ruby3.1.0からgettextがrequireしているprime gemがdefault gemsからbundle gemsに移行されたことが原因のようです。<br />具体的にはprimeをrequireしようとした結果、LoadErrorとなりエラーハンドリングでmathnがrequireされているが、そんな依存はないのでmathnもLoadErrorとなり上記エラーを発生させています。<br />参考までにprime gemがdefault gemからbundle gemに移行した情報は下記のとおりです。
<ul>
<li><a class="external" href="https://bugs.ruby-lang.org/issues/17873">https://bugs.ruby-lang.org/issues/17873</a></li>
<li><a class="external" href="https://stdgems.org/#bundled-gems-in-ruby-310">https://stdgems.org/#bundled-gems-in-ruby-310</a></li>
</ul>
mikutter - 提案 #1567 (終了): commandの「引用」を削除する
https://dev.mikutter.hachune.net/issues/1567
2021-12-31T14:49:05Z
toshi_a 初音
toshi.alternative@gmail.com
<p>非公式リツイート…なにもかもみな懐かしい</p>
mikutter - 提案 #1556 (終了): Gtk::Widget#applyを削除する
https://dev.mikutter.hachune.net/issues/1556
2021-12-12T06:11:49Z
toshi_a 初音
toshi.alternative@gmail.com
<p>core/mui/gtk_extension.rb に定義されているapplyは削除し、tapなどで代用する。</p>
mikutter - 提案 #1555 (終了): diva2
https://dev.mikutter.hachune.net/issues/1555
2021-12-12T04:04:13Z
toshi_a 初音
toshi.alternative@gmail.com
<p>diva2にアップデートで Diva::Model#to_hash を廃止したことによる影響範囲を確認して対応を考える。</p>
mikutter - 提案 #1550 (終了): 依存gemのバージョン変更 (5.0)
https://dev.mikutter.hachune.net/issues/1550
2021-12-05T09:17:32Z
toshi_a 初音
toshi.alternative@gmail.com
mikutter - バグ #1549 (却下): addressable と gettext の gem バージョン
https://dev.mikutter.hachune.net/issues/1549
2021-12-03T21:19:42Z
Izumi Tsutsui
tsutsui@ceres.dti.ne.jp
<ul>
<li><a class="source" href="https://dev.mikutter.hachune.net/projects/mikutter/repository/main/revisions/146abc89/entry/Gemfile">source:Gemfile@146abc89</a> で<br /><code>gem 'addressable','>= 2.7.0', '< 2.8'</code><br />になっていますが、すでに addressable 2.8.0 が出ているので <a href="https://github.com/toshia/diva/commit/3671fcfe2fe178346e8ba06cbd363bcd9ad087ed" class="external">diva</a> 同様 <code>< 3.0</code> でよいのでは</li>
<li><a class="source" href="https://dev.mikutter.hachune.net/projects/mikutter/repository/main/revisions/146abc89/entry/plugin/uitranslator/Gemfile">source:plugin/uitranslator/Gemfile@146abc89</a> で<br /><code>gem 'gettext', '>= 3.3.5', '< 3.4'</code><br />になっていますが gettext 3.4.1 まで出ているので、これも <code>< 4.0</code> でよいのでは。<br />あと develop の <a class="changeset" title="Update gems" href="https://dev.mikutter.hachune.net/projects/mikutter/repository/main/revisions/f1ed187d736b74ecf1fa6f79bbe9cf2aa93a1f6b">f1ed187d</a> では <code>>= 3.3.6</code> になってるので合わせてしまってよいと思います。<br />( <a class="changeset" title="Update gems" href="https://dev.mikutter.hachune.net/projects/mikutter/repository/main/revisions/f1ed187d736b74ecf1fa6f79bbe9cf2aa93a1f6b">f1ed187d</a> の他の更新もマージすべきかもしれませんが、残り gtk2 と test 関連なので微妙)</li>
</ul>
mikutter - 提案 #1542 (終了): mastodon: Postboxに残り字数表示
https://dev.mikutter.hachune.net/issues/1542
2021-11-14T03:25:11Z
toshi_a 初音
toshi.alternative@gmail.com
<p>mastodon 3.4.3以降は `GET /api/v1/instance` に投稿可能文字数などのフィールドが追加されている。<br />この値を取得できたら、残りの入力可能文字数を計算して表示する。</p>
<p><a class="external" href="https://github.com/mastodon/mastodon/pull/16485">https://github.com/mastodon/mastodon/pull/16485</a></p>
mikutter - 提案 #1532 (終了): gtk3: gladeファイルの使用は続ける?中止する?
https://dev.mikutter.hachune.net/issues/1532
2021-11-03T05:25:58Z
Shibafu Midorino
<p>gtk3ブランチではいくつかのWindowのレイアウトが.glade拡張子のXMLファイルによって記述されています。<br />GladeはGTK界隈のUIデザインツールですが、理由があってgtk2時代には採用しなかった話を聞いた覚えがあります。</p>
<p>このまま使う気があるのか、やっぱりやめる方向でRubyコードでレイアウトを組むように戻すか意思確認をしたいです。</p>
mikutter - 提案 #1525 (終了): closeupメソッドの利用をやめる
https://dev.mikutter.hachune.net/issues/1525
2021-10-30T22:29:44Z
toshi_a 初音
toshi.alternative@gmail.com
<p><a class="issue tracker-1 status-5 priority-4 priority-default closed child" title="バグ: gtk3: mui 関連の deprecated 警告 (終了)" href="https://dev.mikutter.hachune.net/issues/1515">#1515</a> の続きで、標準でcloseupメソッドを使っているのをやめる。<br />互換性のため、closeupメソッド自体はdeprecateとして残す。ただ、多く使われているサードパーティプラグインが大量に警告を出す場合は、標準プラグインの利用をやめるがdeprecateにしないといった対応も考えられる。</p>
mikutter - バグ #1517 (終了): MiraclePainter: 本文の文字選択ができない
https://dev.mikutter.hachune.net/issues/1517
2021-10-23T07:26:46Z
toshi_a 初音
toshi.alternative@gmail.com
<p>MiraclePainterの文字列上でドラッグして文字列選択するとき、マウスボタンを離すと選択が解除される。<br />離したあと、更に右クリックして「選択範囲をコピー」などが実行できる必要がある。</p>
mikutter - バグ #1512 (終了): 自分がリアクションをしたとき、voterが更新されない
https://dev.mikutter.hachune.net/issues/1512
2021-10-17T05:28:35Z
toshi_a 初音
toshi.alternative@gmail.com
<p>添付画像では、自分がふぁぼとboostしている。<br />投稿者のアイコン上には反映されているが、Messageの下にふぁぼとshareの数としてカウントされていない。<br />すでにリアクションがあるものに関しても、自分の投稿はカウントされない。</p>
<p>定期ポーリングで取得したぶんでは反映されているので、たんにふぁぼ、boostの増加イベントに反応できていない可能性がある。</p>
mikutter - バグ #1511 (終了): command: タイムラインの一番上にジャーンプ!が正しく動作しない
https://dev.mikutter.hachune.net/issues/1511
2021-10-09T09:09:25Z
toshi_a 初音
toshi.alternative@gmail.com
<p>タイムラインの一番上にジャーンプ!は、</p>
<ol>
<li>選択中のタイムラインの一番上にスクロール</li>
<li>タイムライン中の、選択中のMessageをその時一番上に表示されていたもの1つにする</li>
</ol>
<p>という機能だが、2番目が正しく機能していない。</p>