Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Separate mail font #195

Merged
merged 4 commits into from
Mar 1, 2020
Merged

Separate mail font #195

merged 4 commits into from
Mar 1, 2020

Conversation

mtasaka
Copy link
Collaborator

@mtasaka mtasaka commented Feb 26, 2020

http://mao.2ch.net/test/read.cgi/linux/1551889442/194 で話題になってた、メール欄で別のフォントを設定する、というのを実装してみたものです。実装したものは、 http://mao.2ch.net/test/read.cgi/linux/1551889442/899 のようなものになってます。

色々チェックが必要だと思うので、確認お願いします。

DrawAreaBase classにおいて、layoutの計算をするときに、layoutで
使っているフォントをきちんと渡して、位置を計算するようにする
メール欄のフォントの設定を追加する。(一先ず設定を追加するだけの変更)
@ma8ma

This comment has been minimized.

@ma8ma ma8ma added the feature 機能の追加と削除 label Feb 26, 2020
@mtasaka
Copy link
Collaborator Author

mtasaka commented Feb 26, 2020

parse_date_idの所で落ちてましたので修正しました。

@ma8ma

This comment has been minimized.

src/dbtree/nodetreebase.cpp Outdated Show resolved Hide resolved
実際に、メール欄のフォント設定を、レイアウト等に適用する
本修正
node作成関数に引数を追加する方向に修正
@ma8ma
Copy link
Collaborator

ma8ma commented Feb 28, 2020

baf5979 でopen2chのスレッドを読み込み確認しました。それからカスタムBBSメニューに載っているサイトや知ってるサイトに接続してスレッド表示を確認してみました。新しいコミットではスレッド開いただけで落ちることはおそらくないと思います。
週末にオプションや動作のチェックを行う予定です。

サイトの接続チェック(スレッドの表示)

サイト (bbsmenuのURL)

  • 5ch.net (http://menu.5ch.net/bbsmenu.html)
  • bbspink.com (http://menu.5ch.net/bbsmenu.html)
  • jbbs.shitaraba.net/internet/20196/ (外部板)
  • dic.nicovideo.jp/2ch/ (外部板)
  • yaruoshelter.com/yaruo001/ (外部板)
  • machi.to (https://bbsmenu.afi.click/machi/bbsmenu.html)
  • open2ch.net (https://menu.open2ch.net/bbsmenu.html)
  • super2ch.net (https://super2ch.net/bbsmenu.html) (1) edit(2020-02-29): 接続を確認
  • next2ch.net (https://bbsmenu.afi.click/next2ch/bbsmenu.html) (2)
  • refugee-chan.mobi (https://bbsmenu.afi.click/rc/bbsmenu.html)
  • saradabird.com (https://bbsmenu.afi.click/bbstype/bbsmenu.html)
  • www.2nn.jp (https://bbsmenu.afi.click/2nn/bbsmenu.html)
  • jane2ch.net/community/ (https://bbsmenu.afi.click/monazilla/bbsmenu.html)
  • azlucky.s28.xrea.com/katjusha/ (https://bbsmenu.afi.click/monazilla/bbsmenu.html)
  • hot.zonubbs.net/zonu/ (https://bbsmenu.afi.click/monazilla/bbsmenu.html)
  • ha10.net (https://bbsmenu.afi.click/ha10/bbsmenu.html)
  • ex14.vip2ch.com (https://bbsmenu.afi.click/vip2ch/bbsmenu.html)
  • maguro.2ch.sc/linux/ (外部板) (3)
  1. super2ch.netはHTTPステータスコード502が返ってきて接続できなかった
  2. next2ch.netはサイトのhttp://next2ch.net/bbsmenu.htmlを読み込むとクラッシュするため別サイトを使った
  3. 2ch.scはサイトのhttps://menu.2ch.sc/bbsmenu.htmlを読み込むとクラッシュするため外部板として登録した

@mtasaka
Copy link
Collaborator Author

mtasaka commented Feb 28, 2020

話がちょっとそれますが

2. `next2ch.net`はサイトの`http://next2ch.net/bbsmenu.html`を読み込むとクラッシュするため別サイトを使った
3. `2ch.sc`はサイトの`https://menu.2ch.sc/bbsmenu.html`を読み込むとクラッシュするため外部板として登録した

masterでもこんな感じで落ちますね

=91827==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000088 (pc 0x556b7cd4ffd1 bp 0x7fff85062b90 sp 0x7fff85062b20 T0)
==91827==The signal is caused by a READ memory access.
==91827==Hint: address points to the zero page.
    #0 0x556b7cd4ffd1 in std::__cxx11::list<XML::Dom*, std::allocator<XML::Dom*> >::begin() const /usr/include/c++/10/bits/stl_list.h:951
    #1 0x556b7cd4ffd1 in std::__cxx11::list<XML::Dom*, std::allocator<XML::Dom*> >::operator=(std::__cxx11::list<XML::Dom*, std::allocator<XML::Dom*> > const&) /usr/include/c++/10/bits/list.tcc:286
    #2 0x556b7cd4ffd1 in XML::DomList::operator=(std::__cxx11::list<XML::Dom*, std::allocator<XML::Dom*> > const&) /home/tasaka1/rpmbuild/fedora-specific/jd/master/GIT/JDim/src/xml/domlist.cpp:15
    #3 0x556b7cd00e29 in XML::Dom::childNodes() const /home/tasaka1/rpmbuild/fedora-specific/jd/master/GIT/JDim/src/xml/dom.cpp:652
    #4 0x556b7bf72c73 in DBTREE::Root::bbsmenu2xml(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /home/tasaka1/rpmbuild/fedora-specific/jd/master/GIT/JDim/src/dbtree/root.cpp:415
    #5 0x556b7bfca86f in DBTREE::Root::receive_finish() /home/tasaka1/rpmbuild/fedora-specific/jd/master/GIT/JDim/src/dbtree/root.cpp:366
    #6 0x556b7c6a8a44 in SKELETON::Loadable::callback_dispatch() /home/tasaka1/rpmbuild/fedora-specific/jd/master/GIT/JDim/src/skeleton/loadable.cpp:200
    #7 0x556b7b2c5e32 in CORE::DispatchManager::slot_dispatch() /home/tasaka1/rpmbuild/fedora-specific/jd/master/GIT/JDim/src/dispatchmanager.cpp:108
    #8 0x556b7b2968e7 in sigc::internal::signal_emit0<void, sigc::nil>::emit(sigc::internal::signal_impl*) /usr/include/sigc++-2.0/sigc++/signal.h:794
    #9 0x7f9d3ff9074d in Glib::DispatchNotifier::pipe_io_handler(Glib::IOCondition) (/lib64/libglibmm-2.4.so.1+0x6474d)
    #10 0x7f9d3ff92f6f in Glib::IOSource::dispatch(sigc::slot_base*) (/lib64/libglibmm-2.4.so.1+0x66f6f)
    #11 0x7f9d3ff92ace in Glib::Source::dispatch_vfunc(_GSource*, int (*)(void*), void*) (/lib64/libglibmm-2.4.so.1+0x66ace)
    #12 0x7f9d3f40871e in g_main_dispatch ../glib/gmain.c:3309
    #13 0x7f9d3f408aa7 in g_main_context_iterate ../glib/gmain.c:4047
    #14 0x7f9d3f408dba in g_main_loop_run (/lib64/libglib-2.0.so.0+0x52dba)
    #15 0x7f9d3fa5dd4c in gtk_main /usr/src/debug/gtk3-3.24.14-1.fc32.x86_64/gtk/gtkmain.c:1325
    #16 0x556b7aec02d7 in main /home/tasaka1/rpmbuild/fedora-specific/jd/master/GIT/JDim/src/main.cpp:590
    #17 0x7f9d3e0b7041 in __libc_start_main ../csu/libc-start.c:308
    #18 0x556b7aec801d in _start (/home/tasaka1/rpmbuild/fedora-specific/jd/master/GIT/JDim/src/jdim+0x417401d)

// 現在の仕様では HTML > BODY > font[size="2"] の子要素が対象
この辺で死んでます。クラッシュするサイトのソースを見ると、他のにはある<font size=2> というのがこれらのサイトに無い為、html.getElementsByTagName( "font" )[0]というのがnullptrになって死んでいるようです。

@ma8ma
Copy link
Collaborator

ma8ma commented Feb 29, 2020

@mtasaka

// 現在の仕様では HTML > BODY > font[size="2"] の子要素が対象

この辺で死んでます。クラッシュするサイトのソースを見ると、他のにはある<font size=2> というのがこれらのサイトに無い為、html.getElementsByTagName( "font" )[0]というのがnullptrになって死んでいるようです。

2ch.scとnext2ch.netのbbsmenu.htmlを読むと2ch.scはfontタグのかわりにsmallタグが、next2ch.netはbodyタグ直下にリンクが配置されてますね。
要素にアクセスする前に確認してタグを変える方法でbbsmenuを読み込めそうです。

XML::DomList targets = html.getElementsByTagName( "font" );
if( targets.empty() ) targets = html.getElementsByTagName( "small" );
if( targets.empty() ) targets = html.getElementsByTagName( "body" );
targets = targets.front()->childNodes();

edit(2020-03-01): 修正をまとめ #196 を開きました。

@ma8ma
Copy link
Collaborator

ma8ma commented Feb 29, 2020

一通りチェックして動作に問題はありませんでした。フォント情報が追加されるためメモリ使用量は増えますね。検証結果を5chにレスしてみます。

下の条件でフォントファミリー、フォントサイズを変更して動作させました。

  • configureオプション
    • --with-gtkmm3 (デフォルト)
    • --with-gtkmm3 --with-pangolayout
    • --with-gtkmm3=no
    • --with-gtkmm3=no --with-pangolayout
  • スタイルシート
    • デフォルト
    • オンラインマニュアルのサンプル (リンク)
    • 実況向け1行スタイル (jd wiki)
  • スレッド
    • about:config 最大表示可能レス数を小さくする
    • レス数が1000より多いスレッドを開く
    • スレッドのタブ100個開く
システムモニターで確認したおおよそのメモリ使用量
  • スレッド 1タブ
  • スレッド 10タブ
  • スレッド 100タブ

スレビューのデフォルトとメール欄のフォントが同じときは
デフォルトフォントだけ使うようにしてメモリ使用量を節約する。
@ma8ma
Copy link
Collaborator

ma8ma commented Feb 29, 2020

mtasaka#1
スレビューのデフォルトとメール欄のフォントが同じときはデフォルトフォントだけ使うようにしてメモリ使用量を節約する修正を mtasaka:separate-mail-font にpull requestしました。確認をお願いします。

Copy link
Collaborator

@ma8ma ma8ma left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

travis-ciがダブって実行中ですが一つ通っているのでマージします。
パッチの作成ありがとうございました。

@ma8ma ma8ma merged commit e203fa1 into JDimproved:master Mar 1, 2020
@ma8ma
Copy link
Collaborator

ma8ma commented Mar 1, 2020

@mtasaka
差し支えなければ今後スレビューの表示で気づいたが出たときにご助力をお願いできればと思います。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature 機能の追加と削除
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants