やること: チケット
https://dev.mikutter.hachune.net/
https://dev.mikutter.hachune.net/favicon.ico?1619448608
2022-01-16T03:51:58Z
やること
Redmine
mikutter - 提案 #1581 (分類待ち): Color Model
https://dev.mikutter.hachune.net/issues/1581
2022-01-16T03:51:58Z
toshi_a 初音
toshi.alternative@gmail.com
<p>mikutter上で色を表現するデータオブジェクトを標準提供する。</p>
<a name="やりたいこと"></a>
<h1 >やりたいこと<a href="#やりたいこと" class="wiki-anchor">¶</a></h1>
現在、色情報を利用する場面は以下のとおりだが、色の表現方法が異なる:
<table>
<tr>
<th>名前</th>
<th>形式</th>
<th>値の範囲</th>
</tr>
<tr>
<td> UserConfig </td>
<td> RGB </td>
<td> 0..0xffff </td>
</tr>
<tr>
<td> Cairo::Color::RGB </td>
<td> RGBA </td>
<td> 0..1 (Float) </td>
</tr>
<tr>
<td> Gtk::Color </td>
<td> RGB </td>
<td> 0..0xffff </td>
</tr>
<tr>
<td> Gdk::RGBA </td>
<td> RGBA </td>
<td> 0..1 (Float) </td>
</tr>
<tr>
<td> CSS </td>
<td> RGB </td>
<td> 0..0xff </td>
</tr>
</table>
<p>現状だと、色をどこで利用するかによって適切に変換しなければならない。<br />異なるクラスなのは仕方ないにしても、UserConfigからCairoに変換するために、各要素を0xffffで割るみたいな処理を毎回実装しなければならない。</p>
<p>レンダリングを行う層以外ではそういった詳細には立ち入りたくないし、現にGtk3移行のときに変換処理がバグっていたことがあった。</p>
<p>mikutterプラグインの共通の色の表現があると、こういった問題を解決できる。</p>
<a name="インターフェイス"></a>
<h1 >インターフェイス<a href="#インターフェイス" class="wiki-anchor">¶</a></h1>
<p>RGBAの要素のみを要求する。<br />精度は、各要素を8bitで返すインターフェイスと、0-1のFloatやRationalで返すインターフェイスが考えられる。<br />アルファブレンド値自体は、無いと困るケースがあるので、このデータオブジェクトで表現に対応する。</p>
<p>ディスプレイは1677万色の表現能力しか持っておらず、24bit (0-255)で十分表現できる。したがって、現在採用しているほとんどの表現形式が過剰である。<br />また、これは人間の識別精度を十分超えているらしく、mikutterのユーザは今のところ地球人のみであると考えているので、これ以上の精度は不要である。</p>
<p>以上のことから、各8bitでも十分である。</p>
<p>一方で、0-1で表現すると、計算が楽で、何をやっているのかわかりやすいというメリットがある。<br /><pre><code class="c++ syntaxhl"><span class="kt">uint16_t</span> <span class="nf">conv</span><span class="p">(</span><span class="kt">uint8_t</span> <span class="n">c</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="n">c</span> <span class="o">*</span> <span class="mh">0x101</span><span class="p">;</span>
<span class="p">}</span>
<span class="kt">uint16_t</span> <span class="nf">conv</span><span class="p">(</span><span class="kt">float</span> <span class="n">c</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="n">c</span> <span class="o">*</span> <span class="mh">0xffff</span><span class="p">;</span>
<span class="p">}</span>
</code></pre><br />ん〜どうしよっかな〜</p>
<a name="永続化について"></a>
<h1 >永続化について<a href="#永続化について" class="wiki-anchor">¶</a></h1>
<p>UserConfigは古いバージョンとの互換性のために現在の形式を維持しなければならない。</p>
<a name="表現"></a>
<h1 >表現<a href="#表現" class="wiki-anchor">¶</a></h1>
<p>各データクラスは、異なる方法でデータを保持するが、同じインターフェイスを持っている。</p>
<p>TrueColor (32bit color)<br /><pre><code class="ruby syntaxhl"><span class="no">Color</span><span class="p">.</span><span class="nf">new</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="c1"># red</span>
<span class="no">Color</span><span class="p">.</span><span class="nf">new</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="c1"># red</span>
<span class="no">Color</span><span class="p">.</span><span class="nf">parse</span><span class="p">(</span><span class="s1">'#FF0000'</span><span class="p">)</span> <span class="c1"># red</span>
</code></pre></p>
<p>ContinuouslyColor<br /><pre><code class="ruby syntaxhl"><span class="no">ContinuouslyColor</span><span class="p">.</span><span class="nf">new</span><span class="p">(</span><span class="mf">1.0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="c1"># red</span>
<span class="no">ContinuouslyColor</span><span class="p">.</span><span class="nf">new</span><span class="p">(</span><span class="mf">1.0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="c1"># red</span>
</code></pre><br />同じインターフェイスを実装しColor Modelの要件を満たす独自の実装をプラグインが行うことによって、mikutterの色の表現方法を拡張できるように注意する。</p>
<a name="操作"></a>
<h1 >操作<a href="#操作" class="wiki-anchor">¶</a></h1>
<p>spellを使った場合、結果は必ずPromiseを受け取ることになる。色の操作はリアルタイム性が求められることが多く、spellは不適切である。<br />よくありそうな操作についてはColor Pluginで用意する。</p>
<a name="UserConfigの読み込み書き出し"></a>
<h2 >UserConfigの読み込み、書き出し<a href="#UserConfigの読み込み書き出し" class="wiki-anchor">¶</a></h2>
<p>RGBAの各要素は同じ方法で取得できるため、UserConfigに書き出せるはず。<br />現実的には、今の所UserConfigはあらゆるModelを永続化するような機能はもっていないため、別のところに変換ルーチンを実装しなければならない。<br /><pre><code class="ruby syntaxhl"><span class="n">c</span> <span class="o">=</span> <span class="no">Plugin</span><span class="o">::</span><span class="no">Color</span><span class="p">.</span><span class="nf">new</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">)</span>
<span class="no">UserConfig</span><span class="p">[</span><span class="ss">:color</span><span class="p">]</span> <span class="o">=</span> <span class="n">c</span> <span class="c1"># 理想</span>
<span class="no">UserConfig</span><span class="p">[</span><span class="ss">:color</span><span class="p">]</span> <span class="o">=</span> <span class="no">Color</span><span class="p">.</span><span class="nf">export_to_user_config</span><span class="p">(</span><span class="n">c</span><span class="p">)</span> <span class="c1"># 現実</span>
</code></pre><br />一方、読み込みはColor Modelだったらどんなものに復元しても良いため、もう少し直接的になりそう。<br /><pre><code class="ruby syntaxhl"><span class="n">c</span> <span class="o">=</span> <span class="no">UserConfig</span><span class="p">[</span><span class="ss">:color</span><span class="p">]</span> <span class="c1"># 理想</span>
<span class="no">Plugin</span><span class="o">::</span><span class="no">UserConfigColor</span><span class="p">.</span><span class="nf">new</span><span class="p">(</span><span class="ss">:color</span><span class="p">)</span> <span class="c1"># こういうのがあってもよい?</span>
</code></pre></p>
<a name="印字変換"></a>
<h2 >印字、変換<a href="#印字変換" class="wiki-anchor">¶</a></h2>
<p>例えばHTML形式で印字したいなど。すべてのColor Modelに実装を要求すると印字形式が拡張できないが、インターフェイスが統一されているのでどうとでもなる。<br /><pre><code class="ruby syntaxhl"><span class="k">def</span> <span class="nf">html_color</span><span class="p">(</span><span class="n">color</span><span class="p">)</span>
<span class="s1">'#%02f%02f%02f'</span><span class="p">.</span><span class="nf">format</span><span class="p">(</span><span class="n">color</span><span class="p">.</span><span class="nf">r</span><span class="p">,</span> <span class="n">color</span><span class="p">.</span><span class="nf">g</span><span class="p">,</span> <span class="n">color</span><span class="p">.</span><span class="nf">b</span><span class="p">)</span>
<span class="k">end</span>
</code></pre><br />Cairo::Colorに変換するといった処理は、gtk3プラグインなどが各々提供する。<br /><pre><code class="ruby syntaxhl"><span class="no">Plugin</span><span class="o">::</span><span class="no">Gtk3</span><span class="p">.</span><span class="nf">cairo_color</span><span class="p">(</span><span class="n">c</span><span class="p">)</span>
</code></pre></p>
<a name="比較"></a>
<h2 >比較<a href="#比較" class="wiki-anchor">¶</a></h2>
<p>==で比較する場合、RGBA各要素を0-255で表現した値が等しければ等しいとする。<br />Color Modelインターフェイスの精度以上で比較する意味がないからである。</p>
<p>同様に、eql?とhashもすべてのColorModelが同じ計算式で値を算出しなければならない。</p>
<p>大小比較は、多分ソートすることがないので別にいいや</p>
<a name="標準色"></a>
<h2 >標準色<a href="#標準色" class="wiki-anchor">¶</a></h2>
<pre><code class="ruby syntaxhl"><span class="n">c</span> <span class="o">=</span> <span class="no">Plugin</span><span class="o">::</span><span class="no">Color</span><span class="o">::</span><span class="no">RED</span>
</code></pre>
<p>16色とか256色とか用意する。</p>
<a name="備考"></a>
<h1 >備考<a href="#備考" class="wiki-anchor">¶</a></h1>
<p><a href="https://github.com/red-data-tools/red-colors" class="external">red-colros gem</a> は採用しない。<br />目的に対してできることが多すぎるため。<br />あと、色に対する複雑な演算をしたいわけじゃないので、その程度の理由で直接依存を増やしたくない。</p>
<p>Diva::Modelのatomic typeとして追加することも考えたが、wellknownではあるけどatomicではないかな</p>
mikutter - 提案 #1578 (実装待ち): Emacsのfaceのように継承構造を持ったフォント・配色の設定機能が欲しい
https://dev.mikutter.hachune.net/issues/1578
2022-01-09T10:13:58Z
Shibafu Midorino
<a name="動機"></a>
<h3 >動機<a href="#動機" class="wiki-anchor">¶</a></h3>
<p>Mastodon, Twitter, 他…といったように多くのWorldが存在すると、フォントや配色の設定をいくつも変更しなければならず、面倒です。<br />何かしら、まとめて設定できる仕組みがあってほしい。</p>
<a name="提案"></a>
<h3 >提案<a href="#提案" class="wiki-anchor">¶</a></h3>
<p>Emacsの <a href="https://ayatakesi.github.io/emacs/27.2/html/Faces.html" class="external">Face</a> のように、継承構造を持ったスタイル設定を導入したいです。<br />説明上、このスタイル設定の定義情報について(Emacsから借用して) "Face" と呼ぶことにします。</p>
<p>さて、mikutterに当てはめて考えると、次のようなスタイル設定のツリーができるかなと想像しています。</p>
<pre>
* Default
`-- Message
|-- Mastodon Status
`-- Twitter Tweet
</pre>
<p>このツリーは、クラスベースオブジェクト指向プログラミングの継承構造に近い振る舞いをします。<br />たとえばあるノードのフォントファミリー属性を得ようとした時、そのノードにおいて結果が未定義であれば親ノードに再帰的に問い合わせます。</p>
<p>また、ユーザーは設定を通して、各ノードに対して属性を上書きすることができます。<br />Default faceにフォントを設定すれば、あらゆるトゥートやツイートのフォントが一括で変更されます。<br />トゥートだけ色を変えたいのであれば、トゥートの設定だけを変える……ということもできますね。</p>
<table>
<tr>
<th>Face </th>
<th>Layer </th>
<th></th>
<th>Font </th>
<th>Color </th>
</tr>
<tr>
<td> Default </td>
<td> Default (Faceごとの既定値) </td>
<td> </td>
<td> Sans 10 </td>
<td> <code>#000000</code> </td>
</tr>
<tr>
<td> </td>
<td> User (ユーザー設定) </td>
<td> </td>
<td> Noto Sans CJK JP 12 </td>
<td> ↓ </td>
</tr>
<tr>
<td> Message </td>
<td> Default </td>
<td> </td>
<td> ↓ </td>
<td> ↓ </td>
</tr>
<tr>
<td> </td>
<td> User </td>
<td> </td>
<td> ↓ </td>
<td> ↓ </td>
</tr>
<tr>
<td> Mastodon Status </td>
<td> Default </td>
<td> </td>
<td> ↓ </td>
<td> ↓ </td>
</tr>
<tr>
<td> </td>
<td> User </td>
<td> </td>
<td> ↓ </td>
<td> <code>#303030</code> </td>
</tr>
<tr>
<td colspan="2"><strong>表示に使用される値</strong> </td>
<td> </td>
<td> Noto Sans CJK JP 12 </td>
<td> <code>#303030</code> </td>
</tr>
</table>
<p>Faceの定義はプラグインのロードフェーズで登録されたDiva Modelからは自動生成を試みたいですね。<br />タイムライン表示対象に関しては、プラグイン側に追加の手間をかけたくないです。</p>
<p>一方、Subpartsを追加するようなプラグインに関しては、自分で新しいFaceを作成することになると思います。<br />この際、コアで提供するFaceの中から役割の近いものを継承元として選んでもらうことで、ユーザーの設定がなるべく尊重されるようにしてもらうのが理想です。</p>
mikutter - バグ #1429 (実装待ち): Cairo::InvalidSize 例外でクラッシュすることがある
https://dev.mikutter.hachune.net/issues/1429
2020-01-12T04:16:12Z
toshi_a 初音
toshi.alternative@gmail.com
<p><a class="source" href="https://dev.mikutter.hachune.net/projects/mikutter/repository/main/revisions/0b6ec3e0/entry/core/mui/cairo_miracle_painter.rb#L446">source:core/mui/cairo_miracle_painter.rb@0b6ec3e0#L446</a> でこの例外が発生してクラッシュすることがある。<br />状況がよくわからないので、受け取ったMessageに規則性があるか検証したい。</p>
mikutter - 機能 #1384 (新規): Extractの設定に、FormDSLのlistviewを使う
https://dev.mikutter.hachune.net/issues/1384
2019-09-21T00:13:54Z
toshi_a 初音
toshi.alternative@gmail.com
<p>設定画面の「抽出タブ」に抽出タブ一覧があるが、これを <a class="issue tracker-2 status-2 priority-4 priority-default" title="機能: Gtk::CRUDに依存しているコードを減らす (実装待ち)" href="https://dev.mikutter.hachune.net/issues/1380">#1380</a> で実装したlistviewメソッドを利用したものに置き換える。</p>
mikutter - バグ #1377 (実装待ち): Diva::Modelの子クラス(A)で定義したフィールドの型がAの子クラス(B)で適用されない
https://dev.mikutter.hachune.net/issues/1377
2019-08-27T11:12:50Z
Yuto Tokunaga
yuntan.sub1@gmail.com
<p>Diva::Modelの子クラス(A)で<code>field.uri</code>等で定義したフィールドの型が,Aの子クラス(B)では<code>String</code>になってしまい,期待した型が得られません.</p>
<pre><code class="ruby syntaxhl"><span class="nb">require</span> <span class="s1">'diva'</span>
<span class="k">class</span> <span class="nc">A</span> <span class="o"><</span> <span class="no">Diva</span><span class="o">::</span><span class="no">Model</span>
<span class="n">field</span><span class="p">.</span><span class="nf">uri</span> <span class="ss">:uri</span>
<span class="n">field</span><span class="p">.</span><span class="nf">time</span> <span class="ss">:created</span>
<span class="k">end</span>
<span class="k">class</span> <span class="nc">B</span> <span class="o"><</span> <span class="no">Base</span>
<span class="n">field</span><span class="p">.</span><span class="nf">uri</span> <span class="ss">:alt_uri</span>
<span class="n">field</span><span class="p">.</span><span class="nf">time</span> <span class="ss">:updated</span>
<span class="k">end</span>
<span class="n">s</span> <span class="o">=</span> <span class="s1">'https://example.com/'</span>
<span class="n">t</span> <span class="o">=</span> <span class="s1">'2019-08-27T20:01:00'</span>
<span class="n">a</span> <span class="o">=</span> <span class="no">A</span><span class="p">.</span><span class="nf">new</span> <span class="ss">uri: </span><span class="n">s</span><span class="p">,</span> <span class="ss">created: </span><span class="n">t</span>
<span class="n">b</span> <span class="o">=</span> <span class="no">B</span><span class="p">.</span><span class="nf">new</span> <span class="ss">uri: </span><span class="n">s</span><span class="p">,</span> <span class="ss">alt_uri: </span><span class="n">s</span><span class="p">,</span> <span class="ss">created: </span><span class="n">t</span><span class="p">,</span> <span class="ss">updated: </span><span class="n">t</span>
<span class="nb">p</span> <span class="n">a</span><span class="p">.</span><span class="nf">uri</span><span class="p">.</span><span class="nf">class</span><span class="p">.</span><span class="nf">name</span> <span class="c1"># => "Diva::URI" </span>
<span class="nb">p</span> <span class="n">a</span><span class="p">.</span><span class="nf">created</span><span class="p">.</span><span class="nf">class</span><span class="p">.</span><span class="nf">name</span> <span class="c1"># => "Time" </span>
<span class="nb">p</span> <span class="n">b</span><span class="p">.</span><span class="nf">uri</span><span class="p">.</span><span class="nf">class</span><span class="p">.</span><span class="nf">name</span> <span class="c1"># => "String" </span>
<span class="nb">p</span> <span class="n">b</span><span class="p">.</span><span class="nf">alt_uri</span><span class="p">.</span><span class="nf">class</span><span class="p">.</span><span class="nf">name</span> <span class="c1"># => "Diva:URI" </span>
<span class="nb">p</span> <span class="n">b</span><span class="p">.</span><span class="nf">created</span><span class="p">.</span><span class="nf">class</span><span class="p">.</span><span class="nf">name</span> <span class="c1"># => "String" </span>
<span class="nb">p</span> <span class="n">b</span><span class="p">.</span><span class="nf">updated</span><span class="p">.</span><span class="nf">class</span><span class="p">.</span><span class="nf">name</span> <span class="c1"># => "Time" </span>
</code></pre>
<p>Ruby v2.6.2, diva v1.0.0 で確認.</p>
mikutter - バグ #1161 (レビュー待ち): --confrootオプション付きで起動した時Gemfileを含むプラグインが存在すると落ちる
https://dev.mikutter.hachune.net/issues/1161
2018-01-29T06:27:56Z
cob odo
cobodo@gmail.com
<p>再現手順の通り。</p>
mikutter - バグ #1148 (新規): 3.6.0でdows用file_pathプラグインが動作しない
https://dev.mikutter.hachune.net/issues/1148
2018-01-05T05:05:52Z
kagura1050 てお
<p>README通りの場所に入れて、--debugで読み込んでいるのを確認しましたが<br />UNIX用と同じ動作(一部アイコンがerror)になってしまっています。<br />msys2 x64 の mingw64環境 の ruby 2.3.1を使用しました。</p>
mikutter - バグ #1138 (新規): activityプラグインがデフォルトで提供しているactivityが、Twitterに依存している
https://dev.mikutter.hachune.net/issues/1138
2017-12-25T09:16:06Z
toshi_a 初音
toshi.alternative@gmail.com
<p>favorite、retweetなどのアクティビティが、activityプラグインで定義されているが、これはTwitterのものなので、twitterプラグインで行われるべき。</p>
<p>また、slugもtwitter_favorite、twitter_retweetにそれぞれ変更したほうが良い。ただしその場合、今まで設定したアクティビティの通知先の設定が引き継がれず、ユーザは再設定することになる。この他にどういう影響があるか調査し、slugを変更するか判断する</p>
mikutter - バグ #1067 (新規): 3.5.11にアップグレード後 Gdk-CRITICALが大量にコンソールに出力されて少し重くなる
https://dev.mikutter.hachune.net/issues/1067
2017-09-06T11:22:11Z
kagura1050 てお
<p>3.5.9(git)を使っていて3.5.11をgit pullしました(bundler installは実行済み)<br />するとTLが描画(更新?)されるとき(数十個ぐらい)大量に</p>
<blockquote>
<p>Gdk-CRITICAL **: gdk_window_invalidate_rect_full: assertion 'GDK_IS_WINDOW (window)' failed<br />from /home/kagura1050/mikutter/core/plugin/gtk/mainloop.rb:10:in `mainloop'<br />from mikutter/mikutter.rb:67:in `boot!'<br />from mikutter+/mikutter.rb:96:in `<main>'</p>
</blockquote>
<p>のメッセージが出力されます<br />重くなる内容はTLのアイコン表示が極端に遅くなる(LOADING表示の時間が長い)感じです。<br />3.5.9では確認できませんでした。</p>
mikutter - バグ #1054 (実装待ち): bundle installをしても一部のGemがインストールされない
https://dev.mikutter.hachune.net/issues/1054
2017-06-30T06:37:33Z
At Nanasi
ys2000pro@gmail.com
<p>mikutter.3.5.8.tar.xzを展開した後に<br /><pre>
bundle install --path vendor/bundle
</pre><br />して起動してみたものの</p>
<ul>
<li>gettext</li>
<li>gtk2</li>
<li>moneta</li>
<li>nokogiri</li>
<li>httpclient</li>
<li>totoridipjp</li>
</ul>
<p>がインストールされませんでした。</p>
<p>monetaは'core/plugin/image_file_cache/Gemfile'に、<br />gtk2は'core/plugin/gtk2/Gemfile'に、<br />nokogiri,httpclient,totoridipjpは'core/plugin/photo_support/Gemfile'に、<br />gettextは'core/plugin/uitranslator/Gemfile'に<br />記述してあるのを確認しています。</p>
<p>mikutterのバージョンは'3.5.8'<br />rubyのバージョンは'2.4.1p111'<br />bundlerのバージョンは'1.15.0'<br />です。</p>
mikutter - バグ #1012 (新規): cascadeのtypo
https://dev.mikutter.hachune.net/issues/1012
2017-03-28T12:19:31Z
あひる 家鴨
<p>cascade を cuscade と typo しています。<br />影響範囲は広く、 cuscaded 及び cuscadable を合わせて 18ファイル46箇所に使用されており、ファイル名にも適用されています。<br />typoの修正自体は用意ですが、それによる影響がどのように出るかわからないため、修正したくてもできない状態です。</p>
<p>どのような修正にするか、修正した場合に何を持って問題がないとするかなどに関する情報が欲しいです。</p>
mikutter - バグ #948 (新規): 3.4.x → 3.5.0 のアップグレード時プロファイルタブが引き継がれない
https://dev.mikutter.hachune.net/issues/948
2016-12-15T17:11:19Z
Izumi Tsutsui
tsutsui@ceres.dti.ne.jp
<p>mikutter 3.4.8 を使っていた環境でマルチペインを使用している時に<br />複数のユーザーのタブを開いた状態でいったん終了して、<br />3.5.0 にアップグレードして再度 mikutter を立ち上げると、<br />プロファイルタブの表示が以下のように崩れます。</p>
<p>~/.mikutter が存在しない状態から 3.4.8 を起動して<br />マルチペイン設定してプロファイルタブを表示して終了する直前の状態<br /><img src="https://dev.mikutter.hachune.net/attachments/download/278/mikutter-3.4.8.png" style="width:400px;" alt="" /></p>
<p>その後 3.5.0-alpha1 に更新して mikutter を再起動した直後の状態<br /><img src="https://dev.mikutter.hachune.net/attachments/download/279/mikutter-3.5.0.png" style="width:400px;" alt="" /></p>
<p>プロファイルタブの名前が user ID (?) からプロファイルページの URL に変わったのが<br />関係していると思いますが、何かしら移行策は取れるもんでしょうか。</p>
mikutter - バグ #937 (新規): entity key :url required. but not exist
https://dev.mikutter.hachune.net/issues/937
2016-11-21T16:14:08Z
Izumi Tsutsui
tsutsui@ceres.dti.ne.jp
<p>このところ mikutter の起動時にコンソールに以下の表示がされています。<br /><pre>
error: {MIKUTTER_DIR}/core/entity.rb:212:in `rescue in block (2 levels) in message_entities':
entity key :url required. but not exist occured by 799911863601532928
(mrg: external/gpl3/gdb: Makefile.gdb_arch: s/#/$/ in a $NetBSD$ so it actually expands)
from {MIKUTTER_DIR}/core/entity.rb:40:in `block (2 levels) in filter_wrap'
from {MIKUTTER_DIR}/core/entity.rb:38:in `each'
from {MIKUTTER_DIR}/core/entity.rb:38:in `block in filter_wrap'
from {MIKUTTER_DIR}/core/entity.rb:201:in `call'
from {MIKUTTER_DIR}/core/entity.rb:201:in `block (2 levels) in message_entities'
from {MIKUTTER_DIR}/core/entity.rb:196:in `each'
from {MIKUTTER_DIR}/core/entity.rb:196:in `block in message_entities'
from {MIKUTTER_DIR}/core/entity.rb:195:in `each'
from {MIKUTTER_DIR}/core/entity.rb:195:in `message_entities'
from {MIKUTTER_DIR}/core/entity.rb:175:in `_generate_value'
from {MIKUTTER_DIR}/core/entity.rb:88:in `initialize'
from {MIKUTTER_DIR}/core/message.rb:80:in `new'
from {MIKUTTER_DIR}/core/message.rb:80:in `initialize'
from {MIKUTTER_DIR}/core/retriever.rb:53:in `new'
from {MIKUTTER_DIR}/core/retriever.rb:53:in `block (2 levels) in new_ifnecessary'
from {MIKUTTER_DIR}/core/utils.rb:285:in `block in atomic'
from /usr/pkg/lib/ruby/2.2.0/monitor.rb:211:in `mon_synchronize'
from {MIKUTTER_DIR}/core/utils.rb:285:in `atomic'
from {MIKUTTER_DIR}/core/retriever.rb:52:in `block in new_ifnecessary'
from {MIKUTTER_DIR}/core/utils.rb:210:in `call'
from {MIKUTTER_DIR}/core/utils.rb:210:in `result_strict'
from {MIKUTTER_DIR}/core/retriever.rb:48:in `new_ifnecessary'
from {MIKUTTER_DIR}/core/lib/mikutwitter/api_call_support.rb:115:in `message'
from {MIKUTTER_DIR}/core/lib/mikutwitter/api_call_support.rb:156:in `block in messages'
from {MIKUTTER_DIR}/core/lib/mikutwitter/api_call_support.rb:156:in `map'
from {MIKUTTER_DIR}/core/lib/mikutwitter/api_call_support.rb:156:in `messages'
from {MIKUTTER_DIR}/core/lib/mikutwitter/api_call_support.rb:97:in `block (2 levels) in search'
from /usr/pkg/lib/ruby/gems/2.2.0/gems/delayer-deferred-1.0.4/lib/delayer/deferred/thread.rb:28:in `call'
from /usr/pkg/lib/ruby/gems/2.2.0/gems/delayer-deferred-1.0.4/lib/delayer/deferred/thread.rb:28:in `block (3 levels) in _deferredable_trap_proc'
from /usr/pkg/lib/ruby/gems/2.2.0/gems/delayer-deferred-1.0.4/lib/delayer/deferred/thread.rb:26:in `catch'
from /usr/pkg/lib/ruby/gems/2.2.0/gems/delayer-deferred-1.0.4/lib/delayer/deferred/thread.rb:26:in `block (2 levels) in _deferredable_trap_proc'
from /usr/pkg/lib/ruby/gems/2.2.0/gems/delayer-deferred-1.0.4/lib/delayer/deferred/thread.rb:25:in `catch'
from /usr/pkg/lib/ruby/gems/2.2.0/gems/delayer-deferred-1.0.4/lib/delayer/deferred/thread.rb:25:in `block in _deferredable_trap_proc'
error: {MIKUTTER_DIR}/core/lib/weakstorage.rb:189:in `rescue in []': 96560580 was deleted
error: {MIKUTTER_DIR}/core/lib/weakstorage.rb:189:in `rescue in []': 72088431 was deleted
error: {MIKUTTER_DIR}/core/lib/weakstorage.rb:189:in `rescue in []': 538762014 was deleted
error: {MIKUTTER_DIR}/core/lib/weakstorage.rb:189:in `rescue in []': 141222560 was deleted
</pre></p>
<p>メッセージからすると検索タブに表示されている以下のツイートが原因のようです。<br /><a class="external" href="https://twitter.com/netbsdsrc/status/799911863601532928">https://twitter.com/netbsdsrc/status/799911863601532928</a><br /><pre>
mrg: external/gpl3/gdb: Makefile.gdb_arch: s/#/$/ in a $NetBSD$ so it actually expands
</pre></p>
<p>公式web で見ると $NetBSD のところがエンティティ扱いになっているようですが、<br />どう動くのが正しいのかはよくわかりませんでした。</p>
<p>error といいながら mikutter 自体はそのまま立ち上がるので実害はないんですが、<br />想定された動作なんでしょうか。</p>
mikutter - 機能 #876 (新規): Activityの詳細画面
https://dev.mikutter.hachune.net/issues/876
2016-09-02T23:40:45Z
toshi_a 初音
toshi.alternative@gmail.com
<p><a class="issue tracker-2 status-5 priority-4 priority-default closed" title="機能: URIを渡すと適切な方法で開く機能 (終了)" href="https://dev.mikutter.hachune.net/issues/866">#866</a> の方法でActivityが開かれた時のUIを作る。</p>
<a name="ヘッダ部分"></a>
<h1 >ヘッダ部分<a href="#ヘッダ部分" class="wiki-anchor">¶</a></h1>
<p>通知のタイトル</p>
<a name="実装するタブ"></a>
<h1 >実装するタブ<a href="#実装するタブ" class="wiki-anchor">¶</a></h1>
<p>「関係するModel」タブをデフォルトでアクティブにしておく。</p>
<a name="関係するModel"></a>
<h2 >関係するModel<a href="#関係するModel" class="wiki-anchor">¶</a></h2>
<p>通知に関係するModelを詰めたTimeline。タイムラインだからここからいろいろできて最高</p>
<a name="詳細"></a>
<h2 >詳細<a href="#詳細" class="wiki-anchor">¶</a></h2>
<p>descriptionを表示する部分。ツイート詳細の本文みたいなやつ。異様に長い文字列が入る可能性があるので注意する。</p>
mikutter - バグ #822 (新規): CRUDで:adjustment他、一部のウィジェットが使用できない
https://dev.mikutter.hachune.net/issues/822
2016-02-27T22:18:42Z
Satoshi Okuno
moguno12@gmail.com
<p>Gtk::CRUDのcolumn_schemerで、:widget => :ウィジェット名すると、追加、編集ボタン押下時に出るダイアログにMtkのウィジェットが出せますが、<br />幾つかのウィジェットが使えない状況です。</p>
<ul>
<li>adjustment<br />引数の並びが他のウィジェットと異なる。<br />keyにProcが渡された場合の処理が無い。</li>
</ul>
<ul>
<li>fileselect, fontselect, colorselect,fontcolorselect<br />keyにProcが渡された場合の処理が無い。</li>
</ul>
<p>「keyにProcが渡された場合の処理が無い。」は互換性を維持したまま対応可能ですが、<br />adjustmentの「引数の並びが他のウィジェットと異なる。」は互換性の破壊が生じます。</p>
<p>Mtk:adjustmentは他から使われていないので変更しても影響は小と思いますが、見解いただきたいなと思います。</p>