やること: チケット
https://dev.mikutter.hachune.net/
https://dev.mikutter.hachune.net/favicon.ico?1619448608
2020-07-04T07:32:59Z
やること
Redmine
mikutter - バグ #1457 (終了): 存在しないコマンドのショートカットキーを更新しようとするとクラッシュする
https://dev.mikutter.hachune.net/issues/1457
2020-07-04T07:32:59Z
Osamu Koga
osak.63@gmail.com
<p>存在しないコマンドのショートカットキー設定を編集して保存しようとするとクラッシュします。こういうショートカットキーは、サードパーティプラグインのコマンドにショートカットキーを割り当てた後、そのプラグインを削除すると作ることができます。</p>
<p>スタックトレース:<br /><pre>
NoMethodError undefined method `[]' for nil:NilClass
{MIKUTTER_DIR}/plugin/shortcutkey/shortcutkey_listview.rb:205:in `name_of'
{MIKUTTER_DIR}/plugin/shortcutkey/shortcutkey_listview.rb:173:in `update_iter'
{MIKUTTER_DIR}/plugin/shortcutkey/shortcutkey_listview.rb:186:in `merge_key_bind'
{MIKUTTER_DIR}/plugin/shortcutkey/shortcutkey_listview.rb:120:in `on_updated'
{MIKUTTER_DIR}/core/mui/gtk_crud.rb:143:in `force_record_update'
{MIKUTTER_DIR}/core/mui/gtk_crud.rb:163:in `block in record_update'
{MIKUTTER_DIR}/core/mui/gtk_crud.rb:160:in `selected_each'
{MIKUTTER_DIR}/core/mui/gtk_crud.rb:160:in `record_update'
{MIKUTTER_DIR}/core/mui/gtk_crud.rb:39:in `block in update_button'
{MIKUTTER_DIR}/core/mui/gtk_extension.rb:35:in `block in safety_signal_connect'
{MIKUTTER_DIR}/plugin/gtk/mainloop.rb:18:in `main_iteration'
{MIKUTTER_DIR}/plugin/gtk/mainloop.rb:18:in `block (2 levels) in mainloop'
{MIKUTTER_DIR}/plugin/gtk/mainloop.rb:12:in `loop'
{MIKUTTER_DIR}/plugin/gtk/mainloop.rb:12:in `block in mainloop'
{MIKUTTER_DIR}/plugin/gtk/mainloop.rb:10:in `catch'
{MIKUTTER_DIR}/plugin/gtk/mainloop.rb:10:in `mainloop'
mikutter.rb:81:in `boot!'
mikutter.rb:117:in `<main>'
</pre></p>
mikutter - バグ #1432 (終了): mastodon_account_viewerがエラーを吐いている
https://dev.mikutter.hachune.net/issues/1432
2020-01-27T08:09:32Z
Osamu Koga
osak.63@gmail.com
<p>Mastodonユーザのプロフィールを開いたとき、mastodon_account_viewerが以下のエラーを吐いています。これにより、自分と同じサーバにいる人のタイムラインが表示できないようです。</p>
<pre>
notice: {MIKUTTER_DIR}/core/boot/delayer.rb:33:in `block in terminate': undefined local variable or method `pm' for #<Plugin::GUI::Fragment:0x00007f6ef463b658>
Did you mean? p
from {MIKUTTER_DIR}/plugin/gui/widget.rb:99:in `method_missing'
from {MIKUTTER_DIR}/plugin/mastodon_account_viewer/mastodon_account_viewer.rb:255:in `block (4 levels) in <top (required)>'
from /home/osamu/.gem/gems/delayer-deferred-2.1.3/lib/delayer/deferred/chain/base.rb:18:in `activate'
from /home/osamu/.gem/gems/delayer-deferred-2.1.3/lib/delayer/deferred/worker.rb:93:in `block (2 levels) in wait_and_activate'
from /home/osamu/.gem/gems/delayer-deferred-2.1.3/lib/delayer/deferred/worker.rb:87:in `catch'
from /home/osamu/.gem/gems/delayer-deferred-2.1.3/lib/delayer/deferred/worker.rb:87:in `block in wait_and_activate'
from /home/osamu/.gem/gems/delayer-deferred-2.1.3/lib/delayer/deferred/worker.rb:86:in `catch'
from /home/osamu/.gem/gems/delayer-deferred-2.1.3/lib/delayer/deferred/worker.rb:86:in `wait_and_activate'
from /home/osamu/.gem/gems/delayer-deferred-2.1.3/lib/delayer/deferred/worker.rb:76:in `block (2 levels) in fiber'
from /home/osamu/.gem/gems/delayer-deferred-2.1.3/lib/delayer/deferred/worker.rb:75:in `loop'
from /home/osamu/.gem/gems/delayer-deferred-2.1.3/lib/delayer/deferred/worker.rb:75:in `block in fiber'
</pre>
mikutter - バグ #1290 (分類待ち): 絵文字と普通のテキストが同じ行に現れると行の高さが異常に高くなる
https://dev.mikutter.hachune.net/issues/1290
2018-08-20T07:08:31Z
Osamu Koga
osak.63@gmail.com
<p>絵文字と普通のテキストが同じ行に現れると、その行の高さが異常に高くなります。</p>
<p>ブラウザ上の表示<br /><img src="https://dev.mikutter.hachune.net/attachments/download/499/don.png" alt="" /></p>
<p>mikutterの表示<br /><img src="https://dev.mikutter.hachune.net/attachments/download/498/mikutter.png" alt="" /></p>
<p>mikutterで行を選択したところ<br /><img src="https://dev.mikutter.hachune.net/attachments/download/500/mikutter-sel.png" alt="" /></p>
mikutter - バグ #1136 (終了): ハッシュタグをクリックすると落ちる
https://dev.mikutter.hachune.net/issues/1136
2017-12-23T06:21:24Z
Osamu Koga
osak.63@gmail.com
<p>ツイートに含まれるハッシュタグをクリックすると落ちます。<br /><a class="changeset" title="guide: guide中、world_shifterの操作を促す時に表示されていなかったら強制的に表示 refs #1127" href="https://dev.mikutter.hachune.net/projects/mikutter/repository/main/revisions/00b99cc81da8a727ebb2bc4e1984315691a33e78">00b99cc</a><br />スタックトレース:<br /><pre>
/home/osak/app/mikutter/core/plugin/search/search.rb:42:in `block (2 levels) in present_tab': undefined method `text=' for nil:NilClass
from /home/osak/.gem/gems/pluggaloid-1.1.1/lib/pluggaloid/listener.rb:25:in `call'
from /home/osak/.gem/gems/pluggaloid-1.1.1/lib/pluggaloid/event.rb:97:in `block (2 levels) in call_all_listeners'
from /home/osak/.gem/gems/pluggaloid-1.1.1/lib/pluggaloid/event.rb:96:in `each'
from /home/osak/.gem/gems/pluggaloid-1.1.1/lib/pluggaloid/event.rb:96:in `block in call_all_listeners'
from /home/osak/.gem/gems/pluggaloid-1.1.1/lib/pluggaloid/event.rb:95:in `catch'
from /home/osak/.gem/gems/pluggaloid-1.1.1/lib/pluggaloid/event.rb:95:in `call_all_listeners'
from /home/osak/.gem/gems/pluggaloid-1.1.1/lib/pluggaloid/event.rb:39:in `block in call'
from /home/osak/.gem/gems/delayer-0.0.2/lib/delayer/procedure.rb:24:in `run'
from /home/osak/.gem/gems/delayer-0.0.2/lib/delayer/extend.rb:58:in `run_once'
from /home/osak/.gem/gems/delayer-0.0.2/lib/delayer/extend.rb:30:in `run'
from /home/osak/.gem/gems/delayer-0.0.2/lib/delayer.rb:43:in `method_missing'
from /home/osak/app/mikutter/core/plugin/gtk/delayer.rb:10:in `block in boot'
from /home/osak/app/mikutter/core/plugin/gtk/mainloop.rb:10:in `main'
from /home/osak/app/mikutter/core/plugin/gtk/mainloop.rb:10:in `mainloop'
from mikutter.rb:68:in `boot!'
from mikutter.rb:104:in `<main>'
</pre></p>
mikutter - バグ #1085 (新規): 抽出タブにRTが反映されない
https://dev.mikutter.hachune.net/issues/1085
2017-11-23T14:42:31Z
Osamu Koga
osak.63@gmail.com
<p>状況:<br />1. 抽出タブでmikutter丼のタイムラインとホームタイムラインをデータソースとして指定する<br />2. 公式webから@brsyweのツイートをRTする<br />3. ホームTLタブではRTが反映されているが、抽出タブには反映されない</p>
mikutter - 最適化 #931 (新規): 一部のオブジェクトが不要なデータを抱えている
https://dev.mikutter.hachune.net/issues/931
2016-11-13T16:02:05Z
Osamu Koga
osak.63@gmail.com
<p>例えば<code>User</code>オブジェクトは、api_call_support.rb内でTwitterの渡してきたUserオブジェクトをそのままparseして格納していますが、ここにはユーザの最新ツイートなど、mikutter的には不要なものが含まれています。<br /><pre>
>>> User.findbyidname('osa_k').to_hash[:status][:text]
"mikutter分からんけど何が分からないのかも分からない……"
</pre><br />これが直接的に問題となる箇所はないですが、多くのUserオブジェクトが生成される環境(フォロー数が多い、RTが大量に流れてくる等)ではメモリを無駄に圧迫する可能性があります。</p>
mikutter - バグ #925 (新規): mikutterがメモリを大量に消費することがある
https://dev.mikutter.hachune.net/issues/925
2016-11-04T15:27:13Z
Osamu Koga
osak.63@gmail.com
<p>いわゆるダークマターです。</p>
<p><a class="external" href="https://github.com/toshia/memory_profiler/">https://github.com/toshia/memory_profiler/</a> を入れて1日半程度起動しっぱなしにしておいたmikutter(<a class="changeset" title="openimg: fileスキームの時にローカルの画像ファイルを開く" href="https://dev.mikutter.hachune.net/projects/mikutter/repository/main/revisions/e1b618778b0afc3f1a0eaec83e98c8101bcff244">e1b61877</a>)でグラフを生成したところ、次のグラフが得られました。<br /><img src="https://dev.mikutter.hachune.net/attachments/download/246/mikutter-memory.png" alt="" /><br />この時点でVIRTが20,844,868KB, RESが18,716,708KBとなっています。</p>
Stringの個数が異常に多いので、不要なStringがダブっているのではないかと考えて、以下の手順でダブり数をカウントしました。
<ol>
<li><code>GC.start; File.open('/tmp/strings.txt', 'w'){|f| f.puts(ObjectSpace.each_object(String).to_a)}</code> をmikutterコンソールで実行し、生き残っているStringのリストを得る</li>
<li><code>$ cat /tmp/strings.txt | sort | uniq -c | sort -k1 -r | head -n30</code> でダブリ個数の上位30件を取ってくる</li>
</ol>
<p>以下はその結果です。どうもcairoに渡している色コード(詳細不明)と、画像関係っぽい文字列が異常に多く生き残っているようです。<br /><pre>
40392 ja
31135 fit
19951 000000
16739 C0DEED
15604 https
15599 twitter.com
14341 333333
14159 Tokyo
12637 none
10775
10378 crop
10191 DDEEF6
10129 photo
9794 https://abs.twimg.com/images/themes/theme1/bg.png
9794 http://abs.twimg.com/images/themes/theme1/bg.png
8553 low
6356 FFFFFF
6162 0084B4
4896 recent
4741 njslyr
4515 /home/osak/app/mikutter/core/lib/uithreadonly.rb:23:in `block (2 levels) in singleton class'
3915 /search
3076 1DA1F2
2899 <a href="http://twitter.com" rel="nofollow">Twitter Web Client</a>
2880 en
2871 http
2846 pbs.twimg.com
2780 #njslyr
2680 mikutter.rb:92:in `<main>'
2679 mikutter.rb:63:in `boot!'
</pre></p>
この時点でのオブジェクト数のうち、メモリやオブジェクトの使用量に相関していそうなものの値は以下の通りでした。<br /><pre>
>>> GC.start;ObjectSpace.each_object(Message).count
12605
>>> GC.start;ObjectSpace.each_object(User).reject{|u| Message::MessageUser === u}.count
7738
>>> GC.start;ObjectSpace.each_object(Gtk::TimeLine).reject{|t| t.destroyed?}.count
113
>>> GC.start;ObjectSpace.each_object(Gtk::TimeLine).reject{|t| t.destroyed?}.map(&:size).sort.reverse
[3959, 1243, 1041, 383, 206, 200, 200, 200, 200, 187, 182, 119, 117, 108, 97, 84, 76, 73, 60, 60, 59, 59, 58, 56, 52, 51, 44, 41, 41, 40, 40, 39, 38, 37, 35, 35, 34, 34, 29, 28, 27, 27, 27, 27, 25, 24, 24, 23, 23, 23, 22, 22, 21, 21, 20, 20, 14, 13, 12, 10, 8, 8, 7, 6, 5, 5, 5, 5, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
>>> GC.start;ObjectSpace.each_object(Hash).map(&:size).sort.reverse[0..30]
[41108, 27682, 12673, 7760, 7757, 5096, 4233, 4010, 1620, 1270, 1041, 1017, 918, 811, 498, 485, 436, 383, 383, 379, 373, 373, 348, 327, 327, 310, 291, 273, 262, 256, 253]
>>> GC.start;ObjectSpace.each_object(Gdk::Pixbuf).count
3905
>>> require 'objspace'
GC.start;ObjectSpace.memsize_of_all(String)
164113887
>>> require 'objspace'
GC.start;ObjectSpace.memsize_of_all(Array)
15699400
>>> require 'objspace'
GC.start;ObjectSpace.memsize_of_all(Hash)
159073600
</pre><br />あと入ってるプラグイン一覧:<br /><pre>
YUKI.N@aincrad> ls ~/.mikutter/plugin
display_requirements/ memory_profiler/ osa_k_store/ sub_parts_client/
dummy_dep/ mikustore/ pakuri/ toshi_a_store/
eject/ mikutter-fb/ penguin2716_store/ usercomplete/
favorited_count/ mikutter-subparts-image/ protected_source/ userutil/
geocode/ mikutter_shell_post/ randnum/ yukkuri_/
intelligent_fav/ mikutter_update_with_media_/ sakuratrick/
matsuyatter/ mikutter_yodobashi/ shindanmaker/
md5tweet/ nonomura/ show_tweet/
</pre><br />問題になりそうなものは
<ul>
<li>単純にMessageが多く、そもそも200個を超えてMessageを保持している謎のGtk::TimeLineがいる(ちなみにプロフィールと抽出タブを合わせて50個くらいタブを開いているので、プロフィール1つにつきTLとDMの2つGtk::TimeLineが生成されることを考えると、TLの個数自体は妥当だと思います)。</li>
<li>mikutter内に存在する、意味のある(と想像される)オブジェクト数に対して、異常に巨大なハッシュが存在する</li>
<li>スタックトレースの断片のようなものが見える(ただしこれは時間経過で増えないっぽい)</li>
</ul>
<p>あたりだと思われます。ただそれにしても、memsize_of_allの結果と比べて実際の消費メモリが多すぎるのが少し気になります。<br />とりあえずはみんなから情報が集まるといいな。</p>
mikutter - バグ #752 (新規): Gtk::PostBoxのdelegete_otherが機能してない
https://dev.mikutter.hachune.net/issues/752
2015-02-01T16:53:24Z
Osamu Koga
osak.63@gmail.com
<p>Gtk::PostBoxのオプションにdelegate_otherというのがありますが、このオプションの値に関わらず投稿時に新しいPostBoxが作られてしまいます。<br />postboxstorageにnilを入れれば回避できますが、実際にはpostboxstorageに所属してるのにnilというのも変なので、before_postでdelegate_otherも見るようにしたほうが良いように思います。</p>
mikutter - バグ #747 (新規): イベントハンドラが例外を投げると、それ以降のハンドラが呼ばれなくなる
https://dev.mikutter.hachune.net/issues/747
2015-01-01T17:28:15Z
Osamu Koga
osak.63@gmail.com
<p>Plugin.callなどでイベントを起動したとき、イベントハンドラをnotify_observersで呼び出していますが、これはどれかのイベントハンドラが例外を投げるとそれ以降のハンドラが呼ばれなくなってしまいます。<br />変なイベントハンドラの被害をあまり広げるべきではないので、呼び出し部分も自分で書いて、問題があるハンドラ以外は確実に呼ばれるようにしたほうがよいと思います。</p>
mikutter - バグ #690 (新規): IntelligentTextViewの右クリックメニューが表示されていない
https://dev.mikutter.hachune.net/issues/690
2014-06-06T18:30:55Z
Osamu Koga
osak.63@gmail.com
<p>IntelligentTextView内で、リンクが張ってあるテキストで右クリックすると、コンテキストメニューに「リンクのURLをコピー」と「開く」が表示されてほしい(ように見えます)。<br /><a class="issue tracker-2 status-5 priority-4 priority-default closed" title="機能: ポストボックスを右クリックした時に、コンテキストメニューに:postboxロールのコマンドを表示する。 (終了)" href="https://dev.mikutter.hachune.net/issues/632">#632</a> と同様の手法でいけるかと思ったのですが、GtkTextTagはpopulate-popupシグナルを受け取らないようで、うまく修正できませんでした。</p>
mikutter - バグ #594 (終了): タブ移動のショートカットキーが反応しないことがある
https://dev.mikutter.hachune.net/issues/594
2013-06-29T14:25:58Z
Osamu Koga
osak.63@gmail.com
<p>症例1. C-nやC-pをタブ移動に割り当てると、タイムラインのカーソルが移動するだけでタブ移動にならない。<br />症例2. 検索タブなど、タイムラインが存在しないタブでタブ移動ショートカットを入力しても反応しない(タイムラインにフォーカスがないとタブ移動できない?)。</p>
mikutter - 機能 #592 (終了): ショートカットキーの設定を手書きできるようにする
https://dev.mikutter.hachune.net/issues/592
2013-06-26T12:40:26Z
Osamu Koga
osak.63@gmail.com
<p>ショートカットキー設定を手でちくちく設定していくのは面倒なので、手書きできると便利かも。<br />参考:https://twitter.com/eagletmt/statuses/349864187238944768</p>
mikutter - 致命的 #457 (終了): mikutterが起動に失敗する
https://dev.mikutter.hachune.net/issues/457
2012-04-12T08:27:12Z
Osamu Koga
osak.63@gmail.com
<p>rev732で<br /><pre>
/usr/lib/ruby/1.9.1/json/common.rb:148:in `parse': 743: unexpected token at ' (JSON::ParserError)
from /usr/lib/ruby/1.9.1/json/common.rb:148:in `parse'
from /home/osa/app/mikutter/trunk/core/service.rb:189:in `user_initialize'
from /home/osa/app/mikutter/trunk/core/service.rb:52:in `initialize'
from /home/osa/app/mikutter/trunk/core/service.rb:23:in `new'
from /home/osa/app/mikutter/trunk/core/service.rb:23:in `services_refresh'
from /home/osa/app/mikutter/trunk/core/service.rb:28:in `all'
from /home/osa/app/mikutter/trunk/core/service.rb:33:in `primary'
from /home/osa/app/mikutter/trunk/mikutter.rb:32:in `<main>'
</pre><br />というエラーを吐いて起動途中(窓が開く前)に落ちる.<br />何回か繰り返し試したら起動できた.再現方法は不明です.</p>
mikutter - 致命的 #349 (終了): タブを閉じると落ちる
https://dev.mikutter.hachune.net/issues/349
2011-10-21T06:31:06Z
Osamu Koga
osak.63@gmail.com
<p>ユーザ詳細画面やSaved searchのタブを左上のしいたけで閉じると落ちる.</p>
mikutter - バグ #289 (終了): ポスト完了しても複製されたテキストボックスが残ることがある
https://dev.mikutter.hachune.net/issues/289
2011-08-23T08:48:03Z
Osamu Koga
osak.63@gmail.com
<p>ポストしたときにテキストボックスが複製されて下に移動するが,正常にポスト完了したのに残ってることがある.<br />r476のtrunkで発生.再現方法は不明.<br /><a class="external" href="http://gyazo.com/75625d162514953dfb8da9a253b86add">http://gyazo.com/75625d162514953dfb8da9a253b86add</a></p>