やること: チケット
https://dev.mikutter.hachune.net/
https://dev.mikutter.hachune.net/favicon.ico?1619448608
2017-12-19T22:02:45Z
やること
Redmine
mikutter - 最適化 #1121 (却下): Photoは実質同じ画像を複数保持する可能性がある
https://dev.mikutter.hachune.net/issues/1121
2017-12-19T22:02:45Z
toshi_a 初音
toshi.alternative@gmail.com
<p>GdkPixbufはvariant毎にキャッシュされるため、実質同じPixbufが複数のvariantにキープされる可能性がある。要求サイズより大きいvariantであればどれを縮小してGdkPixbufを作っても同じなので、GdkPixbufのインスタンスプールをそれらのvariantで共有する</p>
mikutter - バグ #1069 (却下): bundlerを使ってGemをインストールする時、pluginグループを除外してもプラグインの要求するGemがインストールされる。
https://dev.mikutter.hachune.net/issues/1069
2017-09-27T18:02:51Z
toshi_a 初音
toshi.alternative@gmail.com
<p>次のようにしても、例えばgtk2などのプラグインがインストールされてしまっている。</p>
<pre>
bundle install --without plugin
</pre>
<p>理由は、プラグインのGemfileでロードされる物をpluginグループに所属させる処理が、最近のBundlerでは期待通り動いていないから。</p>
mikutter - 機能 #940 (却下): プロフィール画面で非公開アカウント・認証済みアカウントの確認をできるようにする
https://dev.mikutter.hachune.net/issues/940
2016-12-01T02:54:26Z
toshi_a 初音
toshi.alternative@gmail.com
<blockquote>
<p>DeNA公式アカウントがまさかの鍵垢に <a class="external" href="https://twitter.com/suisse_credit/status/804080136316256256/photo/1">https://twitter.com/suisse_credit/status/804080136316256256/photo/1</a> <a class="external" href="https://twitter.com/suisse_credit/status/804080136316256256">https://twitter.com/suisse_credit/status/804080136316256256</a><br />やばい 認証済かつ鍵というTwitterクライアント的には激レアテストケースだ <a class="external" href="https://twitter.com/wakamesoba98/status/804149400394047488">https://twitter.com/wakamesoba98/status/804149400394047488</a><br />SobaCha、DeNAcorp正しく表示できねえ!!!!!!https://twitter.com/wakamesoba98/status/804149657320329216</p>
</blockquote>
<p>mikutterではプロフィール画面で鍵垢・認証アカウントであることを直接確認する手段がないので波に乗れなかった。アイコン表示するだけで良いと思うので、確認できるようにしておきたい。</p>
mikutter - 機能 #899 (却下): ツイートする内容を新しいMessageインスタンスに格納し、その内容を投稿する仕組み
https://dev.mikutter.hachune.net/issues/899
2016-09-27T12:47:47Z
toshi_a 初音
toshi.alternative@gmail.com
<p>tweetはどんどん複雑になっていて、 <a class="issue tracker-7 status-5 priority-4 priority-default closed parent" title="環境対応: TwitterのTweet文字数制限の変更 (終了)" href="https://dev.mikutter.hachune.net/issues/890">#890</a> のような仕様変更・追加で投稿APIのインターフェイスがどんどん変わっていってる。<br />この変化を吸収し、クライアントサイドバリデーションの仕組みを共通化するために、Messageクラスに新しいtweetを作成する機能を追加する。</p>
<a name="例"></a>
<h1 >例<a href="#例" class="wiki-anchor">¶</a></h1>
<pre><code class="ruby syntaxhl"><span class="c1"># いままで</span>
<span class="no">Service</span><span class="p">.</span><span class="nf">primary</span><span class="p">.</span><span class="nf">post</span><span class="p">(</span>
<span class="ss">message: </span><span class="s2">"魔剤ンゴ!?"</span><span class="p">,</span>
<span class="ss">receiver: </span><span class="n">toshi_a</span><span class="p">,</span>
<span class="ss">replyto: </span><span class="n">parent_message</span><span class="p">,</span>
<span class="ss">mediaiolist: </span><span class="p">[</span><span class="o">...</span><span class="p">]</span>
<span class="p">)</span>
<span class="c1"># 新しいの</span>
<span class="no">Message</span><span class="p">.</span><span class="nf">new</span><span class="p">(</span>
<span class="ss">user: </span><span class="no">Service</span><span class="p">.</span><span class="nf">primary</span><span class="p">.</span><span class="nf">user_obj</span><span class="p">,</span>
<span class="ss">body: </span><span class="s2">"魔剤ンゴ!?"</span><span class="p">,</span>
<span class="ss">receivers: </span><span class="p">[</span><span class="no">User</span><span class="p">.</span><span class="nf">findbyidname</span><span class="p">(</span><span class="s1">'toshi_a'</span><span class="p">),</span> <span class="o">...</span><span class="p">],</span>
<span class="ss">replyto: </span><span class="n">parent_message</span><span class="p">,</span>
<span class="ss">attachments: </span><span class="p">[</span><span class="o">...</span><span class="p">]</span>
<span class="p">).</span><span class="nf">compose</span>
</code></pre>
<a name="利点"></a>
<h1 >利点<a href="#利点" class="wiki-anchor">¶</a></h1>
<a name="学習コスト低減"></a>
<h2 >学習コスト低減<a href="#学習コスト低減" class="wiki-anchor">¶</a></h2>
<p>ReadとWriteのインターフェイスがMessageに統一されることで、フィールドの名前を知ることでTweetからの値の読み出し・投稿の両方が出来るようになり、覚えることが減る。</p>
<a name="投稿前に情報を取得することが容易になる"></a>
<h2 >投稿前に情報を取得することが容易になる<a href="#投稿前に情報を取得することが容易になる" class="wiki-anchor">¶</a></h2>
<p>Messageには現在でも、ツイートに関する情報を集めるためのメソッドがたくさん用意されているが、これを投稿前に利用しながら、バリデーションなどのユーザへの情報の提供ができる。<br />具体的には、文字列のどの範囲がURLとして扱われるか、hidden header, hidden footerはどこからどこまでかといった情報が提供できると思う。</p>
<a name="懸念"></a>
<h1 >懸念<a href="#懸念" class="wiki-anchor">¶</a></h1>
<a name="IDがない"></a>
<h2 >IDがない<a href="#IDがない" class="wiki-anchor">¶</a></h2>
<p>IDはTwitterが決定するので、新しく作成したインスタンスにはIDがセットされない。Messageを扱う多くの処理が、IDがあることを前提にしているので、後方互換性を保ってこれを行うのは難しいかもしれない。</p>
mikutter - 機能 #875 (却下): Activityの表示のためのMiraclePainter
https://dev.mikutter.hachune.net/issues/875
2016-09-02T23:26:44Z
toshi_a 初音
toshi.alternative@gmail.com
<p>mikutter 3.4のActivity同様、1行で表示する。<br />収まりきらない範囲はカットし、横スクロールは実装しない(できないんだけどね)。</p>
<p>そのままでは、開かない限り通知の全文を見ることができないので、フォーカスされている間だけ複数行表示する。<br />あまりにも行数が長いならそれはタイムライン上からカットして、通知を開いて見てもらう感じにする。</p>
mikutter - 機能 #874 (却下): ActivityのListViewを廃止し、Timelineを使う
https://dev.mikutter.hachune.net/issues/874
2016-09-02T23:25:11Z
toshi_a 初音
toshi.alternative@gmail.com
<p>Activityが独自のListViewになっているので、Timelineを利用する。</p>
<p>これに伴って、mikutter 3.4のような、画面を上下に割って、上にリスト、下に選択されている項目を表示するというのをやめる。</p>
mikutter - 機能 #872 (却下): MiraclePainterをModel毎に提供する
https://dev.mikutter.hachune.net/issues/872
2016-09-02T23:12:07Z
toshi_a 初音
toshi.alternative@gmail.com
<p>現在のmikutterでは、MiraclePainterは全て同じものを使っている。Twitter用の最適化されていて、アイコンやSubPartsといったものが表示されてしまう。<br />Twitter以外のサービスでは基本的にこれは好ましくないので、タイムライン上に表示する時のMiraclePainterをModelから指定できるようにする。</p>
<a name="目的"></a>
<h1 >目的<a href="#目的" class="wiki-anchor">¶</a></h1>
<p>User、ListといったものもTimelineに表示できるようにする。<br />今はUserはGtk::UserList、ListはGtk::ListListといったようにそれぞれ独自のリストビューを定義して表示しているが、どれもModelなのだから、Viewさえ指定すればTimelineで扱えるという状態にしたい。</p>
<a name="雰囲気"></a>
<h1 >雰囲気<a href="#雰囲気" class="wiki-anchor">¶</a></h1>
<pre><code class="ruby syntaxhl"><span class="k">class</span> <span class="nc">MikuPainter</span> <span class="o"><</span> <span class="no">Cairo</span><span class="o">::</span><span class="no">MiraclePainter</span>
<span class="c1"># pixbufとかを書き出す処理をいろいろ書く</span>
<span class="k">end</span>
<span class="k">class</span> <span class="nc">Miku</span> <span class="o"><</span> <span class="no">Retriever</span><span class="o">::</span><span class="no">Model</span>
<span class="n">paint_by</span> <span class="no">MikuPainter</span>
<span class="k">end</span>
</code></pre>
<a name="その他"></a>
<h1 >その他<a href="#その他" class="wiki-anchor">¶</a></h1>
<p>複数のMiraclePainterを提供して選べるようにしても面白いかも。このチケットでは取り扱わない。<br />あとこれもやらないかもしれないけどプラグインが特定のModelに対してMiraclePainterを提供できると便利そう。ツイートを1行で表示するプラグインみたいなものが実現できる可能性がある。</p>
mikutter - 絵 #865 (シール化): mikutter 3.5のアイコン
https://dev.mikutter.hachune.net/issues/865
2016-08-22T15:33:28Z
toshi_a 初音
toshi.alternative@gmail.com
<p><a class="external" href="http://mikutter-ilust.tumblr.com/image/148150671145">http://mikutter-ilust.tumblr.com/image/148150671145</a></p>
<p>これをベースにいくつかデザイン案をよろしく。<br />ディテールは事前打ち合わせのとおり。最初の期日は9/15。たのむゾ〜</p>
mikutter - 致命的 #714 (却下): mikutter以外でリストを追加したあとmikutterを起動すると、リスト更新時にクラッシュする?
https://dev.mikutter.hachune.net/issues/714
2014-09-29T01:51:31Z
toshi_a 初音
toshi.alternative@gmail.com
<p>たまに来ているエラー報告。<br />再現出来たが、起動して暫くしたら突然クラッシュした。<br />リストを別のクライアントで追加したことが原因か</p>
<pre>
TypeError destroyed GLib::Object
(eval):1:in `model'
{MIKUTTER_DIR}/core/mui/gtk_listlist.rb:46:in `block in add_hook'
{MIKUTTER_DIR}/core/mui/gtk_listlist.rb:45:in `each'
{MIKUTTER_DIR}/core/mui/gtk_listlist.rb:45:in `add_hook'
{MIKUTTER_DIR}/core/mui/gtk_listlist.rb:27:in `block in set_auto_getter'
{MIKUTTER_DIR}/core/event_listener.rb:25:in `call'
{MIKUTTER_DIR}/core/event_listener.rb:25:in `update'
/usr/local/Cellar/ruby/2.1.2/lib/ruby/2.1.0/observer.rb:196:in `block in notify_observers'
/usr/local/Cellar/ruby/2.1.2/lib/ruby/2.1.0/observer.rb:195:in `each'
/usr/local/Cellar/ruby/2.1.2/lib/ruby/2.1.0/observer.rb:195:in `notify_observers'
{MIKUTTER_DIR}/core/event.rb:46:in `block (2 levels) in call'
{MIKUTTER_DIR}/core/event.rb:46:in `catch'
{MIKUTTER_DIR}/core/event.rb:46:in `block in call'
{MIKUTTER_DIR}/vendor/bundle/ruby/2.1.0/gems/delayer-0.0.2/lib/delayer/procedure.rb:24:in `call'
{MIKUTTER_DIR}/vendor/bundle/ruby/2.1.0/gems/delayer-0.0.2/lib/delayer/procedure.rb:24:in `run'
{MIKUTTER_DIR}/vendor/bundle/ruby/2.1.0/gems/delayer-0.0.2/lib/delayer/extend.rb:58:in `run_once'
{MIKUTTER_DIR}/vendor/bundle/ruby/2.1.0/gems/delayer-0.0.2/lib/delayer/extend.rb:30:in `run'
{MIKUTTER_DIR}/vendor/bundle/ruby/2.1.0/gems/delayer-0.0.2/lib/delayer.rb:43:in `method_missing'
{MIKUTTER_DIR}/core/plugin/gtk/delayer.rb:10:in `block in boot'
{MIKUTTER_DIR}/core/plugin/gtk/mainloop.rb:10:in `call'
{MIKUTTER_DIR}/core/plugin/gtk/mainloop.rb:10:in `main'
{MIKUTTER_DIR}/core/plugin/gtk/mainloop.rb:10:in `mainloop'
mikutter.rb:63:in `boot!'
mikutter.rb:92:in `<main>'
</pre>
mikutter - 機能 #706 (却下): saved searchをデータソースとして提供する
https://dev.mikutter.hachune.net/issues/706
2014-08-05T01:53:45Z
toshi_a 初音
toshi.alternative@gmail.com
<p>saved searchプラグインは、タブの提供をやめて、抽出タブのデータソースを提供する。</p>
<p>saved searchデータソースは、利用されているときだけ自動更新をかける。<br />不要な検索タブが表示されないようになること、データソースとタブが分離するので、起動時にUI上に空のタブが生成されてしまう問題などを回避できる。</p>
<p>ただし、「保存した検索」を削除する機能をどこかにつけなければいけない。現状ではタブのコマンドになっているが、これは無くなる。</p>
mikutter - バグ #514 (却下): プロフィールのタブのユーザのアイコンが表示されていないことがある
https://dev.mikutter.hachune.net/issues/514
2012-09-18T06:38:53Z
toshi_a 初音
toshi.alternative@gmail.com
<p>ごく稀に再現。ちゃんとユーザのアイコンが読み込み終わってるにも関わらず、アイコンが表示されず、タブがめっちゃ細くなっていることがある。開きなおすと元に戻ってるけれど、放置していても直らない。<br />WebImageの実装に問題がありそう</p>
mikutter - 環境対応 #441 (却下): 廃止されるAPIを使用していないか確認する
https://dev.mikutter.hachune.net/issues/441
2012-03-13T01:26:25Z
toshi_a 初音
toshi.alternative@gmail.com
<p><a class="external" href="https://dev.twitter.com/blog/api-housekeeping">https://dev.twitter.com/blog/api-housekeeping</a></p>
<p>5月14日に、ページ番号を使ったページ指定は廃止されるので、対応する。</p>
mikutter - バグ #418 (却下): 表示されないツイートがある
https://dev.mikutter.hachune.net/issues/418
2012-01-28T08:21:41Z
toshi_a 初音
toshi.alternative@gmail.com
<p><a class="external" href="https://twitter.com/#!/hozki_/status/163172241373282304">https://twitter.com/#!/hozki_/status/163172241373282304</a></p>
<p>このツイートを表示しようとしたら、デバッグモードでコンソールに以下のような出力がされ、ツイートは表示されなかった。</p>
<pre>
error: {MIKUTTER_DIR}/core/mui/cairo_markup_generator.rb:20:in `rescue in parse_markup': 魚みたいな目しやがってっ&gt;゜)))彡 RT <span underline=\"single\" underline_color=\"#000000\">@yk_marble</span>n underline=\"single\" underline_color=\"#000000\">@yk_marble</span>たことあるじゃないですか QT <span underline=\"single\" underline_color=\"#000000\">@hozki_</span>span underline=\"single\" underline_color=\"#000000\">@hozki_</span>った人が言ってるんだから間違いない RT <span underline=\"single\" underline_color=\"#000000\">@yk_marble</span>:それやばい QT <span underline=\"single\" underline_color=\"#000000\">@hozki_</span>: まーぶるは白目むいてる
error: {MIKUTTER_DIR}/core/mui/cairo_markup_generator.rb:20:in `rescue in parse_markup': 魚みたいな目しやがってっ&gt;゜)))彡 RT <span underline=\"single\" underline_color=\"#000000\">@yk_marble</span>n underline=\"single\" underline_color=\"#000000\">@yk_marble</span>たことあるじゃないですか QT <span underline=\"single\" underline_color=\"#000000\">@hozki_</span>span underline=\"single\" underline_color=\"#000000\">@hozki_</span>った人が言ってるんだから間違いない RT <span underline=\"single\" underline_color=\"#000000\">@yk_marble</span>:それやばい QT <span underline=\"single\" underline_color=\"#000000\">@hozki_</span>: まーぶるは白目むいてる
</pre>
mikutter - 機能 #413 (却下): Retriever.findbyidの結果をdeferredで受け取れるようなメソッドを実装する
https://dev.mikutter.hachune.net/issues/413
2012-01-27T17:03:37Z
toshi_a 初音
toshi.alternative@gmail.com
<p>Retriever.idof() みたいなメソッドを実装して、必ずDeferredを返すようにする。<br />これで、スレッド問題を気にせずにどこでもidからRetrieverを取得できるといいなぁ</p>
mikutter - 致命的 #405 (却下): 画像プレビューをするときにクラッシュした
https://dev.mikutter.hachune.net/issues/405
2012-01-17T00:01:31Z
toshi_a 初音
toshi.alternative@gmail.com
<p>r641<br /><pre>
/core/lib/weakstorage.rb: line 24
GdkPixbuf-WARNING **:GdkPixbufLoader finalized without calling gdk_pixbuf_loader_close() - this is not allowed. You must explicitly end the data stream to the loader before dropping the last reference.
</pre><br />どう見てもgt(ry<br />weakstorageがObjectSpaceを使っているのも原因なので、そっちの見直しとかそろそろしたほうがいい</p>