Kita - 2ch client for KDE part2
■ このスレッドは過去ログ倉庫に格納されています
0001kitaの中の人 ◆KITAulkOso
04/07/16 00:31ID:IZzU7SYf名前の由来はKDEの'K'に「板(board)」を加えたのと、キターー(゜∀゜)ーー!!から来てます。
Kitaのウェブサイト
http://kita.sourceforge.jp/
http://sourceforge.jp/projects/kita/
Kita Wiki
http://kita.sourceforge.jp/cgi-bin/hiki/hiki.cgi
前スレ
Kita - 2ch client for KDE
http://pc5.2ch.net/test/read.cgi/linux/1069738960/
前々スレ(DAT落ち)
おいお前ら! GTK+使ってLinux版かちゅーしゃ作れや
http://pc.2ch.net/test/read.cgi/linux/1022744633/
0529421
04/11/14 23:57:33ID:85izyi2Z現在は>>511で書いたタイミングでidxに保存しているため同じ値になりますが、将来的には
オフラインモードやdat落ちしたときのことも考えてsubject.txtから(ログのあるスレの)
レス数を取得したタイミングでレス数だけセーブするつもりなので、異なる値になる場合がある
ため今のうちに項目を別にしておきました。ViewPosも既読数つまりログの取得数とは異なる
ので別にした方が良いと思います。
> 既読情報がなくなるのはやっぱり害だと思います
私はどっちかというとユーザの都合よりもプログラムの都合を優先させてコードを書く悪癖が
あるので、ユーザが混乱するとかそういうことはあまり考えてなかったりしてw あとhikiの
> 起動時に"cache"ファイルの存在をチェックし、存在する場合は上の関数を実行
の方法も一度考えたんですが、一度しか使わない関数を書くのが面倒臭かったので
やめたという経緯もあったりしてw
まあ、この辺はリリース日までにもう少し仕様を詰める必要がありますね。
0530421
04/11/15 00:00:45ID:7NGKoUqLttp://www.geocities.co.jp/SiliconValley-Bay/7435/patch-1114.txt
(1) 2ch以外のBBSの更新時も逐次表示するように
Access::emitDatLineList()という関数を新設して、そこで入力されたデータを行単位で
2chタイプのdat形式データに変換してDatInfo::slotReceiveData()に行単位のリスト形式で
送るようにしました。これによってAccessクラスで各BBSのスクリプト間の差が吸収されるため、
DatInfo以上のクラスではスクリプトが2chなのか他のスクリプトなのかを気にしなくても済むようにしました。
(2) Flash CGI/Mini Thread の読み込みに内部対応 ( 書き込みは未テスト )
で、Kita::ParseFlashCGIOneLine()という関数を作って、とりあえずテスト用に
oooug.jp が外部板に登録されてたら Flash CGI 型のスクリプトと認識するようにしました
( BoardManager::parseBoardURLの/* test for Flash CGI/Mini Thread */のところ )。
というかextbrd.confの仕様もぽちぽち決めないとなあ。
以下、非2chスクリプトの掲示板を表示させるための改造方法についてメモ。基本的にはこんな感じで。
(1) boardmanager.hの/* type of board */ のとこにタイプを登録して
(2) BoardData::setHostName(),BoardData::createKeys()、
BoardManager::readSubjectTxt()、Kita::convertURL()をタイプに合わせて更新して
(3) kita_misc.cppにKita::ParseFlashCGIOneLine()みたいなパース関数を追加して
(4) Access::emitDatLineList()でデータを2ch型dat形式に変換する
(5) BBSのrawmode.cgiみたいに特殊なスクリプトを使わなければいけないときは
Access::getupdate()も変更
0531421
04/11/15 00:17:54ID:7NGKoUqLいちいち書かなくても良い気がしますが、「(5) JBBSのrawmode.cgi」の間違いです。
あと書き忘れた気がするので書きますが、>>511のパッチをあてると、お気に入り
スレ情報のXMLファイルが0.172.0以前のファイルと互換性が無くなるので注意して
下さい(これもインテグリティの問題でスレ名とかレス数とかのノードを消した)。
まあ、これも過渡期の間はXMLファイルの互換性を持たせるために
FavoriteThreads::toXML()を元に戻した方が良いかも。
とまあ、こんな風にいま内部をかなり変えてるところなので、軽い気持ちでcvs
とかsnapshotをインストールすると泣くはめになるので気を付けて下さいw
バックアップは基本。
0532421
04/11/15 23:00:32ID:7NGKoUqLttp://www.geocities.co.jp/SiliconValley-Bay/7435/patch-1115.txt
・>>1-1000みたいなリンクが張ってあると、レスの参照ツリー表示のときにいちいちその
レスが参照されるのがウザかったので、20個以上のスレにリンクを張ってるときはそのリンクを
無視することに( DatInfo::checkRes() のとこ)
・Flash CGI/Mini Threadへの書き込み、スレ立て対応
最新版のスクリプトがローカルで動かなかったのでVer3.21aでテスト。
ちなみにあるスクリプトの書き込み、スレ立て対応をする手順は次の通り。
(1) KitaWriteView::KitaWriteView()で
書き込みスクリプトのアドレス(m_bbscgi)を設定して
(2) KitaWriteView::slotPostMessage() で
スクリプト別に投稿メッセージを作って(setPostStr()みたいに)
(3) KitaWriteView::resultCode()やKitaWriteView::resultMessage()で
スクリプトのレスポンスからリザルトコードやメッセージを取得
一番難しいのは(3)で、デバッグ出力でスクリプトのレスポンスをみながら調整する必要があります。
0533kitaの中の人 ◆KITAulkOso
04/11/15 23:40:23ID:LCbJtlpL>>531
> まあ、これも過渡期の間はXMLファイルの互換性を持たせるために
> FavoriteThreads::toXML()を元に戻した方が良いかも。
こういうことは先に言ってください。>>511の後元に戻したらお気に入りが消えましたorz
# まあバックアップ取ったので問題ではないですが…
>>511のパッチはrejectします。
・お気に入り板が読めない問題
・XMLファイルの互換性
・既読数が1になってしまう問題
を解決しないと取り込めません。
最後は"ReadNum"でなく"ViewPos"を使う案でいいので、パッチを再作成してください。
0535421
04/11/16 00:00:59ID:zE/fWQoP> ・お気に入り板が読めない問題
これは>>527で書いたようにただの凡ミスなので簡単に直ります。
> ・XMLファイルの互換性
favorites.xmlはQDomDocument()を使って作っているため、FavoriteThreads::toXML()を
元に戻すだけでいつでも元のファイル形式に戻す事ができるため特に問題は無いと思います。
やっぱりしばらくは互換性持たせた方が良いかな。
> ・既読数が1になってしまう問題
これはHikiに書いてあるようにcache->idx変換関数を書けば解決できますが、書いた方が
良いのかな。
まあいずれにしろ後でなんとかできる問題ばかりなのでとりあえずマージしちゃって後で調節
して行くって方法をとりたいのですが・・・
0536kitaの中の人 ◆KITAulkOso
04/11/16 00:24:31ID:HUHW5Lx0> やっぱりしばらくは互換性持たせた方が良いかな。
少なくとも、「古いバージョンから新しいバージョンへ移行」
「新しいバージョンから古いバージョンへ移行」したときに取り返しの
付かない問題が起きないようにすることが必須です。
少なくともバックアップファイルを作成する必要があります。
# 新→旧を入れてるのは大きなトラブルがあったときとかに元に戻せるようにするため。
あと、favorites.xmlについてはブックマーク整理のUI作るときに
別のフォーマットに移行させます。なので今変えてもあまり意味ないです。
> まあいずれにしろ後でなんとかできる問題ばかりなのでとりあえずマージしちゃって後で調節
> して行くって方法をとりたいのですが・・・
それなら>>511>>530>>532を当てた状態でさらに当てるパッチを出してください。
全部当てた状態でテストしますので。
こっちもパッチの調整ばかりしてるの嫌なんですよ…。
0537kitaの中の人 ◆KITAulkOso
04/11/16 00:36:01ID:HUHW5Lx00538421
04/11/16 01:11:34ID:zE/fWQoPちなみに私がパッチを小出しで出すのは
(1) 物理的に一日の作業時間がそんなに取れない
(2) 大きいパッチを一気に当てると細かい説明をするのが面倒になる(というか
最初の方で修正した項目を忘れるw)
(3) 小刻みにチェックポイントを作りたい
(4) パッチ単位で修正点などの意見を聞いて柔軟に調節したい
のが理由です。まあ(1)が主な理由なんですが。
> # 新→旧を入れてるのは大きなトラブルがあったときとかに元に戻せるようにするため。
> あと、favorites.xmlについてはブックマーク整理のUI作るときに
> 別のフォーマットに移行させます。なので今変えてもあまり意味ないです。
了解です。FavoriteThreads::toXML()は元に戻す方向で、cacheは(情報は使わない
けど)しばらくは既読情報を保存する方向で調整します。
0539421
04/11/16 01:15:25ID:zE/fWQoP> cacheは(情報は使わないけど)しばらくは既読情報を保存する方向で調整します。
idxにReadNumの項がない時は1にするんじゃなくてcacheから既読数を取得するよう
にすれば良いのか。これなら簡単かつ自然にcache->idxへの移行が出来るかな。
0540kitaの中の人 ◆KITAulkOso
04/11/16 01:21:33ID:HUHW5Lx0こちらこそすみませんorz
えっと、>>511>>530>>532のパッチのマージ&
> ・お気に入り板が読めない問題
> ・XMLファイルの互換性
> ・既読数が1になってしまう問題
のfixやってしまいました。CVS版に入っています。
既読数が1になってるのは"ViewPos"を使うことで対応してます。
お気に入りの情報がおかしいですが…これも何とかしないとまずいな。
0541421
04/11/16 03:18:35ID:zE/fWQoP>>540
乙です。
> 既読数が1になってるのは"ViewPos"を使うことで対応してます。
idxが無いログではうまく働かないと思うので、>>539の仕組みも
同時に入れとこうと思います。こんな感じで
(1) idxからReadNum読む
(2) 無かったらViewPosを読む
(3) 無かったらcacheから取得
> お気に入りの情報がおかしいですが
明日辺り私も見ときます。
0542kitaの中の人
04/11/16 22:07:46ID:HUHW5Lx0>>541
(1)(2)は逆にしてください。もしくはcolumnを追加。
「既得数」でなくあくまで「既読数」なので。
面倒ならその順序でパッチ出してください。自分がやります。
0543421
04/11/16 22:20:26ID:jQaZyowR> 「既得数」でなくあくまで「既読数」なので。
ちょっと遅かったですw いまパッチを書いて簡単なテストが終わったとこなので、
とりあえずそのまま出しますが、後で説明するように ThreadIndex::getResNum()
や ThreadIndex::getReadNum()で>>541の作業をするようにしたので変更するなら
その辺をいじって下さい。
でパッチ。cvsからの差分でkitaディレクトリで-po。
あれこれやってるうちに何時の間にかfeature freezeの日も近付いてきたのでデカいパッチは
一応これで最後にしてあとは調整とデバッグに移ります。
ttp://www.geocities.co.jp/SiliconValley-Bay/7435/patch-1116.txt
内容は主に昨日話した旧バージョンとの互換問題の解決+アルファ。board.{cpp,h}は消しても良いです。
もうちょっと詳しく説明すると
(1) KitaMainWindow::loadCache() と KitaMainWindow::saveCache() を復活させて
cacheの情報も使うようにした。具体的には ThreadIndex::getResNum() や
ThreadIndex::getReadNum()を変更して、idxがないか、又はidxにその項目が無いときは
KitaMainWindow::loadCache()で読み込んでおいたcacheの情報を使ってidxの項目
を作ります。idxにその項目があるときはidxから読み取った数値が使われます。また既読数は
KitaMainWindow::saveCache()でcacheにも保存されるので旧バージョンとの互換性もあり。
(2) BoardManager::readSubjectTxt()の拡張。BoardManager::getThreadInfoFromIdx()を
統合してやや速度向上。BoardManager::readSubjectTxt()でセッション中に初めて板を開いたとき
(つまりbdata->readIdx() == FALSE のとき)にidxから既読数やレス数を取得。
つづく
0544421
04/11/16 22:25:17ID:jQaZyowR(3) Thread::m_cached という変数を追加してそのスレがキャッシュに存在するかどうかを
Thread::m_cached が TRUE か FALSE で判定することに。KitaThreadInfo::readNum()==0
でも判定できますが、いちいちQMapで検索するのはオーバーヘッドがでかいのと将来的にKitaThreadInfo
は廃止する事からとりあえず別パラメータにしときましたが、この辺りは仕様変更が若干あるかも。
なおthread->setCached( TRUE )によってThread::m_cachedをTRUEにセットする場所とタイミングは
・BoardManager::getCachedThreadList(): dat落ちしたログのリストを取得したとき
・BoardManager::readSubjectTxt(): セッション中に初めて板を開いたとき
・DatInfo::saveIndex(): キャッシュにあるログの表示やスレのロードが終わったときに
DatInfo::initPrivate() や DatInfo::slotFinishLoad()の中から呼ばれる
の3箇所。逆にFALSEにするのは DatInfo::deleteCache() の一ヶ所。
(4) subject.txtを読み込んだとき、subject.txtから読み取ったレス数とidxのResNumの値が
違っていたら新しいレス数をidxにセーブするようにした。具体的にはBoardManager::readSubjectTxt()の
/* update res num */ 以下の部分で、スレッドがキャッシュされていて( thread->isCached() == TRUE )
かつ旧レス数( oldNum )と新しいレス数( newNum )が違うときはThreadIndex::setResNum()を呼んで
新しいレス数をセーブするという仕組み。これによってidxのResNumとReadNumは基本的に違う値になる。
とりあえず私的には
ResNum・・・サーバ上のレスの数
ReadNum・・・ローカルキャッシュ上のレスの数(既得数)
ViewPos・・・ここまで読んだの位置
という感じでやってましたが、この辺は適当に調整しておいて下さい。
0545421
04/11/16 23:48:59ID:jQaZyowRところで
> もしくはcolumnを追加。
ということから察するに、スレ一覧の「既読数」にViewPosの値をセットしたいということ
でしょうか。となると現在DatManager::getKokoyonNum()では直接idxからViewPosを
取得しているため非常にパフォーマンスが悪いので、ViewPosをメモリにキャッシュ
しておいて読み込むときはメモリから読むような機構にしておきますが・・・
0546rpmpoint no naka no hito
04/11/17 00:10:10ID:FGWV9h+Irpmpoint no naka no hito desu.
tetigai kara SuSE ga kidou sinaku narimasita node
korekara 1syuukan gurai no uti ni Snapshot ga riri-su sarete mo
kousin ga dekimasen node go yousya kudasai
orz
0547kitaの中の人 ◆KITAulkOso
04/11/17 01:44:22ID:qx23v2F3>>545
> ということから察するに、スレ一覧の「既読数」にViewPosの値をセットしたいということでしょうか。
そういうことです。
> ResNum・・・サーバ上のレスの数
> ReadNum・・・ローカルキャッシュ上のレスの数(既得数)
> ViewPos・・・ここまで読んだの位置
の解釈でいいと思いますが、普段使う分にはViewPosで、ReadNumは見える必要はないと思うので。
やっぱりReadNumも見えた方がいいというのなら、項目を追加する方向で行きます。
という意味でかきますた。
> 非常にパフォーマンスが悪いので
そんなにパフォーマンス悪くなります?実測で明らかに遅いなら入れてもいいですが…。
>>546
お大事に…。
0548421
04/11/17 02:09:56ID:9xOg/LBj> > ということから察するに、スレ一覧の「既読数」にViewPosの値をセットしたいということでしょうか。
> そういうことです。
了解しました。
> そんなにパフォーマンス悪くなります?
>>543のパッチで修正していますが、cvsのKitaSubjectView::loadBoardだと
int readNum = Kita::DatManager::getKokoyonNum( datURL ); と
なっていましたが板を開く早さがうちのPCだと5倍位違いました。Linux板は普段なら
setting.txtをダウンロードした後1秒程度で開くのですが、DatManager::getKokoyonNum
を使うと5秒以上かかります。やっぱりいちいちHDDにアクセスしてファイルを
オープンするのは禿げ遅ですなあ。
つう訳で明日あたりこの辺の話のことをやろうかと思います・・・。Threadクラスをちょっと
拡張するだけなのでそんなに大変じゃないかな。
>>546
私もFC3入れたいけど時間がないなあ・・・
0549login:Penguin
04/11/17 11:19:11ID:Keq27Qk9「レス数」「既読数」「未読」の数字が変化しないのですが、
皆様のところではいかがでしょうか?
kita の 20041109 のスナップショットを Fedora Core2 で使っています。
0550login:Penguin
04/11/17 15:53:25ID:ERm6Yf8o>>397,398,399,403,405,505,512
0551login:Penguin
04/11/17 17:00:37ID:g2zTluWp>>418も♪
0552login:Penguin
04/11/17 19:00:08ID:9USYoFY5configureでこけます.
configure:24394: error: libart_lgpl_2 was not found!
となるのですが,/usr/local/lib/にlibart_lgpl_2.soは存在しています.
どなたかFreeBSDでmakeができた方がいましたら,ヒントを教えていただけませんか?
教えて君で申し訳ないです.
0553login:Penguin
04/11/17 21:11:26ID:ERm6Yf8o/usr/local/libってことはパスが通ってない悪寒
linuxなら/etc/ld.so.confに追加してldconfigだ(ったと思う)が、
FreeBSDは分からない
0554login:Penguin
04/11/17 22:28:15ID:6Gva/oFtkitaのtar玉を展開して出てくる"INSTALL"って名前のファイルを穴があくまで読みやがれ
0555421
04/11/17 23:12:14ID:l27aQPKpその辺はいま直してるとこなので気にしないでおいて下さい。
でパッチ。内容は昨日話したあたりのところ。>>543からの差分でkitaで-p0。
サイズが思ったより大きくなってしまったorz。これでやっとデバッグモードに入れるかな・・
ttp://www.geocities.co.jp/SiliconValley-Bay/7435/patch-1117.txt
・ViewPosをキャッシュ処理してスレ一覧の既読数に表示
Thread::m_viewPosというパラメータにキャッシュすることに。値を取得する関数は
DatManager::getViewPos()、セットするには DatManager::setViewPos()。
ついでにThread::m_resNumと Thread::m_readNum も作って resNum と readNum の
管理もThreadクラスに移し、新設したKitaSubjectView::updateListViewItem()でやってる
みたいに、Threadクラスのポインタから直接レス数などを取得できるようにしたのでパフォーマンスが
向上しました(まあ本当はクラス間の結合度が上がるのでポインタを使うのはいくないんですが、
KitaSubjectView::updateListViewItem()は特例ということで)。これでThreadInfoクラスは
旧バージョンとの互換性のために残しているだけになります。というかぶっちゃけThreadInfoクラスが
無くてもKitaは動きます。ThreadIndex::saveIndex()の/* save "cache" */のところで
ThreadInfoクラスにレス数などの情報を"おすそわけ"しています。
つづく
0556421
04/11/17 23:14:47ID:l27aQPKp・>>544の(3)のThread::m_cachedはやっぱり廃止。
Thread::m_readNum == 0 かどうかでキャッシュにログがあるかどうか判定することに。
・idxの保存、読み込みまわりのコード整理
で、idxの保存と読み込みの場所とタイミングが>>511からすこし変わったのでメモ
----------------------------------------------------------------
(1) idxにスレ情報を保存する場所(タイミング)
a) キャッシュにあるスレを表示した直後(鯖からデータをロードする前)に
DatInfo::initPrivate() からThreadIndex::saveIndex()を呼ぶ。
b) スレのロードが終わったときに
DatInfo::slotFinishLoad()からThreadIndex::saveIndex()を呼ぶ。
c) ViewPosを変更するときは はDatManager::setViewPos()で直接 ViewPos を保存
(2) idxからスレ情報を取得する場所(タイミング)
a) 板のスレリストを取得するとき(初回のみ1回だけ)
BoardManager::readSubjectTxt()からThreadIndex::loadIndex()を呼ぶ。
b) dat落ちログのリストを取得するときに
BoardManager::getCachedThreadList()からThreadIndex::loadIndex()を呼ぶ。
c) 起動時にお気に入りスレを登録するときに
FavoriteThreads::processThreadNode()からThreadIndex::loadIndex()を呼ぶ。
0557kitaの中の人 ◆KITAulkOso
04/11/18 02:28:48ID:aa1PkYlFmerged.
あぼーんがあったりスレ停止があったときにsubjectがおかしくなる問題があったので、
ひとまず直しておきました。DatInfo::parseDat()です。
今のところの問題点は
・「ここまで読んだ」をセットしている場合、スレ一覧でのマークが緑色になる
くらいでしょうか。
古いキャッシュの廃止は移行環境が整ってからになるかな。
>>548
了解。それだけ遅ければキャッシュ利用した方がいいですね。
0558421
04/11/18 02:51:14ID:oF+1Wu7X>>557
> ・「ここまで読んだ」をセットしている場合、スレ一覧でのマークが緑色になる
マークなんですが、KitaSubjectView::updateListViewItem()を見れば分かると
思いますが、現在の仕様ではViewPosとResNumでは無くて、ReadNumとResNum
の差を見て付けています。つまり鯖側にあるdatとキャッシュにあるdatが違って
いると赤、同じなら緑という感じで。
「既得数(ReadNum)」のcolumnがあればマークの動作が分かりやすくなるかなとも
思ったんですが、最近項目が増え気味なので入れても良いものかどうか躊躇中。
>>381みたいにスレ一覧の項目の表示ON/OFFがあれば良いんでしょうけど・・・
> キャッシュ利用
Threadクラスによるスレ情報のキャッシュ方式に移行したらスレ一覧の表示が
3割ほど速くなったような気が。ThreadInfo利用時のQMapの検索速度ってそんな
に遅かったのかw
0559552
04/11/18 12:00:42ID:Z8mpNkQ8CPPFLAGS=-L/usr/local/libを追加することでconfigureはできるようになりました
でも,結局コンパイルでもlibart_lgpl_2がないといわれるので,/usr/lib/に
リンクを作ることで解決しました
スマートな解決ではないですが,無事kitaから書き込むことができました
どうもでした
0560kitaの中の人 ◆KITAulkOso
04/11/18 23:25:48ID:aa1PkYlF作りました。何か気になる点があったら言ってください。
http://kita.sourceforge.jp/cgi-bin/hiki/hiki.cgi?%A5%E1%A5%E2+-+%A4%AA%B5%A4%A4%CB%C6%FE%A4%EA%A4%CE%B0%DC%B9%D4
・同じURLで2つ別の名前が付けられないが問題ないか
(名前については問題ないはずだけど他の属性で問題が出ないか)
・スレを識別するキーはdatファイルのURLでいい?
・互換性について(移行は当然サポートします)。
>>558
> >>381みたいにスレ一覧の項目の表示ON/OFFがあれば良いんでしょうけど・・・
んじゃそっちを先に対応します。お気に入り整理は今回は間に合いそうにないので
あきらめますたorz
0561421
04/11/19 00:55:35ID:JmaYCgMdとりあえず
datmanager.{cpp,h}
datinfo.{cpp,h}
あたりをメインに直しているので、2,3日はその辺をあまりいじらないでおいて下さい。
> > >>381みたいにスレ一覧の項目の表示ON/OFFがあれば良いんでしょうけど・・・
> んじゃそっちを先に対応します。
ではそちらはおながいします。
お気に入り整理の新ファイルフォーマット
> 同じURLで2つ別の名前が付けられないが問題ないか
エイリアス機能ってことですか?まあ、あればあったで良いけど無くても良いような。
> ・スレを識別するキーはdatファイルのURLでいい?
どうせ内部的にはKita::getDatURL()で違いが吸収される(dat形式になる)ので、
read.cgi形式でもdat形式でもどっちでも良いと思いますがdat形式が無難かと。
> 板名の情報は誰が管理?
これはBoardManager(とboard_list)が全部管理してるので、ここでは特に
考えなくても良いと思われ。
> スレ名、レス数は.idxから取得
レス数はidxから取るので必要ないと思いますが、スレ名は手動で編集するときに
便利なので、使わないとしてもラベルとして入れておいた方が良いかも。
0562kitaの中の人 ◆KITAulkOso
04/11/19 01:42:13ID:YJYSSRcW先に、カラムの順序、サイズの保存を実装する予定。
手動でリサイズ&移動すればOff状態とまああまり変わらないということでw
ちなみに、サイズと順序はKListView::saveLayout()で保存できるようですが、
複数ビューがあるので同期をどうやって取ろうかなと悩んでます。
>>561
> エイリアス機能ってことですか?まあ、あればあったで良いけど無くても良いような。
いや、とりあえず制限事項になるので挙げてみただけです。
逆に、1つ編集したら同じURLは全て一緒になるのでむしろこの方がよいかなと。
> これはBoardManager(とboard_list)が全部管理してるので、ここでは特に
> 考えなくても良いと思われ。
了解。まあ、板情報を入れるのは簡単なので実装してから考えます。
0563421
04/11/19 02:08:30ID:JmaYCgMd> スレ一覧の項目On/Off
GUIを作るのが面倒ならとりあえずKitaConfigかあるいは別の設定ファイルを
作ってそこで手動でOn/Offするようにしてみてはどうでしょうか。あとスレッド
ビューのツールバーのボタンの表示On/Offもあると良いなあとか言ってみるテスト。
同期はSignalCollection経由で他のサブジェクトビューに更新があったことを
知らせるのが常套手段だと思いますが、面倒なら次に開いたビューから変更って
タイプでも良いんじゃないですかね・・・
0564421
04/11/19 23:14:01ID:iR+YSKnS以後は肉の日までテストしながら細かいデバッグパッチを出していって、テストが終わ
った部分から順次qDebugを消して行く予定。
ttp://www.geocities.co.jp/SiliconValley-Bay/7435/patch-1119.txt
・ここまで読んだの処理で変だったところを修正
・スレ一覧からのログ削除高速化
DatManager::deleteCache()のとこ。従来はいちいちDatInfoを作って
いたため削除が激重だったのを、DatInfoを作らないでログを消すように変更
・ついでにDatManager コード整理
主にDatManager::getDatInfo()のあたり。あといちいちmutexかけてたのをやめて
DatManager::boardURL()みたいなobsoleteな関数をいくつか削除。これでだいぶ
見やすくなったかな。
・ThreadIndex::loadIndex()、ThreadIndex::saveIndex()を高速化
項目毎にいちいちファイルをオープンしてたのをやめ
・BoardManager::getBoardData()とかKita::convertURL()をキャッシュ使って高速化
・その他細かいデバッグいろいろ
0565421
04/11/20 00:07:03ID:AKAy4KPd既に移転済みの板を開いて(もちろんスレ一覧は空白)から板の移転を行った後に再度板を開くと
既読のはずのスレが未読表示になるバグの修正。
最初に板を開いたときにBoardData::m_readIdxがTRUEにセットされたため、それを
リセットしないとidxの読み込みがおこなわれないというのが理由。
*** libkita-org/boardmanager.cpp 2004-11-19 23:01:23.000000000 +0900
--- libkita/boardmanager.cpp 2004-11-19 23:45:34.992309872 +0900
***************
*** 906,911 ****
--- 906,915 ----
keyHosts.prepend( newhost );
bdata->createKeys( keyHosts );
+ /* reset BoardData */
+ bdata->setReadIdx( FALSE );
+ bdata->setSettingLoaded( FALSE );
+
/*---------------------------*/
/* move cache dir */
0566421
04/11/21 00:08:04ID:WvvQKFPl無かったのでqDebugを消してコメント入れただけ。libkitaで pacth < patch-1120.txt
ttp://www.geocities.co.jp/SiliconValley-Bay/7435/patch-1120.txt
0567kitaの中の人 ◆KITAulkOso
04/11/21 01:58:59ID:K8+Vt0l8>>564-566
merged.
> 同期はSignalCollection経由で他のサブジェクトビューに更新があったことを
> 知らせるのが常套手段だと思いますが、面倒なら次に開いたビューから変更って
> タイプでも良いんじゃないですかね・・・
とりあえずそれで実装しました。
リサイズ時にいちいち書き込みするので遅いかなぁと思ったんですが、
うちの環境だと問題なかったのでとりあえずそのまま。
しかし一番最後のCokumnだけhideColumnが効いてないみたい…。なぜだ…
0568login:Penguin
04/11/21 07:55:36ID:YtiHxrKyウインドウを最大化している状態でシェードし、元に戻すと強制的に最大化が
解除されてしまいます。
すごく使いにくいんですが、これは仕様でしょうか?
0569421
04/11/21 13:53:06ID:yZR+sU9http://www.geocities.co.jp/SiliconValley-Bay/7435/patch-1121.txt
原因は KitaThreadView::setFocus() の if ( topWidget->isMinimized() ) topWidget->showNormal();
の一文です。最小化してる状態からスレッドビューにフォーカスが移るとウィンドウが通常状態に戻ります。
何故setFocus()に topWidget->showNormal() なんてコードが入っているかと言うとウィンドウの切替え処理を行うためです。
つづく。
0570421
04/11/21 13:54:26ID:yZR+sU9h(1) KitaTabWidgetBase::setupActions()で new KAction( i18n( "Switch to Thread" ), Key_3 )が定義
されてるので 3 を押すとsignalcollectionにswitchToThread()シグナルが飛ぶ
(2) signalcollection::switchToThread() は KitaThreadDock::setupAsMainView() と
KitaThreadDock::setupAsKitaNavi() で KitaDockWidgetBase::slotShowDock() にコネクトされているので
KitaDockWidgetBase::slotShowDock()が呼び出される。
(3) KitaDockWidgetBase::slotShowDock() で ShowDockEvent() イベントが作られる
(4) イベントループに戻った後、KitaDockWidgetBase::customEvent() が呼び出されて
KitaDockWidgetBase::showDock() が呼び出される
(5) そこの if ( w ) w->slotCurrentChanged( w->currentPage() ); から
KitaTabWidgetBase::slotCurrentChanged() が呼び出される
(6) w->setFocus(); より KitaThreadView::setFocus() が呼び出される。
という流れでKitaThreadView::setFocus()が呼び出されてスレッドビューにフォーカスが移ります。ここで
画像ビュワーみたいにメインウィンドウから切り離したウィンドウ上で「3」を押したときにメインウィンドウが
最小化されてるとウィンドウが切り替わらないので最小化されてるメインウィンドウを表示させるため
topWidget->showNormal()を呼んでいます。とまあ原因は分かっていたんですが、単にtopWidget->show()と
しただけでは最小化は解除されないため、解決方法が良く分からなかったので突っ込まれるまで見て見ぬふりしてましたw
で超アドホックな解決方法としてはKitaThreadDock::slotShowThreadDock()というスロットを作って
signalcollection::switchToThread()シグナルをそこにコネクトしてそこでtopWidget->showNormal();
することに。これで一応最小化状態からフォーカスが移ったときに最大化状態が外れることはなくなります。
最小化状態で他のウィンドウから「3」を押したときに最大化状態が外れる問題はそのうち直すってことで。
0571kitaの中の人 ◆KITAulkOso
04/11/21 14:59:19ID:K8+Vt0l8http://kita.sourceforge.jp/snapshot/kita-20041121.tar.gz
>>569まで入れてます。
あとスレ一覧でサイズを変更するとその位置が保存されるようにしてます。
お気に入りはその情報を利用してないですが…やっぱり対応した方がいいかな?
とりあえず致命的な問題はないはず。
お気に入り整理は次(以降)にしますorz
0572kitaの中の人 ◆KITAulkOso
04/11/21 19:47:05ID:K8+Vt0l8%filesセクションのkitapart/kita*ui.rcを削除してください。
0573421
04/11/21 22:14:01ID:yZR+sU9h一応バックアップを取ってから起動してください。
で、そのsnapshotですが、Qt3.1だとQListView::hideColumn()がエラーを出します。
マニュアルを見る限りだとsetColumnWidth( column, 0 )にすれば良いのかな。
あと cache と idx の互換性問題のテストをしたのでThreadIndexクラスを若干修正
しました。libkita で patch < patch-1121-2.txt
ttp://www.geocities.co.jp/SiliconValley-Bay/7435/patch-1121-2.txt
テスト手順は、例の如くKNOPPIX3.6を使ってまっさらな状態から
(1) kita-0.172.0 をインストール
(2) 適当にスレを見る
(3) snapshot を make
(4) snapshot を起動してidxのViewPosからReadNumを作るかチェック
(5) idxを全部消してからsnapshotを起動してcacheからidxを作るかチェック
(6) 適当にスレを見る
(7) kita-0.172.0を起動してcacheが保存されてるかチェック
ってな感じ。明日はAccessクラスあたりを軽くテストする予定。
0574kitaの中の人 ◆KITAulkOso
04/11/22 02:01:43ID:BQLsuu/Nmerged.
気になったのが、ロードしてもスレ一覧の既読数が更新されないこと。
スレッドのタブを閉じたらその時にアップデートされるようですが。
ロード時に既読数が更新されるのも違和感があるので、
意図したものでなければ直さない方がいいかもしれません。
>>558
> マークなんですが、KitaSubjectView::updateListViewItem()を見れば分かると
> 思いますが、現在の仕様ではViewPosとResNumでは無くて、ReadNumとResNum
> の差を見て付けています。つまり鯖側にあるdatとキャッシュにあるdatが違って
> いると赤、同じなら緑という感じで。
やっぱりViewPosとResNumの差を取るようにしてください。
ユーザの観点からすると、
赤:まだ見てないレスがある
緑:もう見るレスがない
というのが分かりやすいので。
0575421
04/11/22 02:23:08ID:UnXhyNRq>>574
> 気になったのが、ロードしてもスレ一覧の既読数が更新されないこと。
これは正常動作です。今まではViewPosがReadNumも兼ねていたため、変則的に
ロード直後にViewPos=ResNumにしていたのですが、今回からViewPosとReadNumが
分離されたため、あくまでViewPosはここまで読んだの位置になります。つまり
スレッドのタブを閉じた時点でここまで読んだが最後に移動したということになる
ためその時点でアップデートされます。
> やっぱりViewPosとResNumの差を取るようにしてください。
しばらくはサブジェクトビュー周りはいじる予定は無いのでこの辺りは任せます。
あと明日はaccess.cppだけでなくてkita_misc.cppもちょっとだけいじるかも・・・
0576kitaの中の人 ◆KITAulkOso
04/11/22 03:30:36ID:BQLsuu/N>>575
> しばらくはサブジェクトビュー周りはいじる予定は無いのでこの辺りは任せます。
修正しました。
0577421
04/11/22 22:21:28ID:3vQSWaNYttp://www.geocities.co.jp/SiliconValley-Bay/7435/patch-1122.txt
・Accessの方はm_orgDataを消してAccess::writeCacheData()で m_threadData
だけを追加保存するように変更。これによりメモリ消費量を減らして速度も向上。
まあ速いマシンではあまり変わらないと思いますが、ちょっと古くてHDDが遅いマシンなら
多少効果ありかと。
・kita_miscはHOST表示対応
削除依頼とかまちBBSとかHOST表示される板でHOST表示するようにしました。
Kita::parseDateId()とKita::parseTITLEdat()に数行追加しただけ。
でもホスト表示させると横幅が長すぎるかな・・・
あとは軽くテストしてqDebugを消したりとか。明日は休みなので、また
KNOPPINXを使って板の移転処理まわりの最終テストをする予定。
0578421
04/11/22 22:27:05ID:3vQSWaNY基本的に ViewPos <= ReadNum <= ResNum の関係が成り立ってるので取れる状態は
(0) ReadNum == 0, キャッシュ無し
(1) ViewPos <= ReadNum < ResNum、未読有り、新しい書き込み有り
(2) ViewPos < ReadNum = ResNum、未読有り、新しい書き込み無し
(3) ViewPos = ReadNum = ResNum、未読無し、新しい書き込み無し
の4つ。(0)はマーク無し(or New)、(1)を赤、(3)を緑にするのは問題ないけど、
(2)を赤、緑どっちに分類するかが問題。
(2)を緑の問題点: 未読があるのが分かりにくい
(2)を赤の問題点: スレを閉じない限り(緑にならないので)新しい書き込みがあっても分かりにくい
・解決案 1: マークを増やす。例えば
(1)赤○、(2)緑○、(3)緑□
みたいに。つまり新しい書き込み有り無しを色、未読有り無しを形で分別(逆でも可)。もしくは単に
(1)赤、(2)黄、(3)緑
みたいに色を変える。問題はユーザが新マークに馴れる必要があること。
・解決案 2: 内部パラメータを増やして従来通りの動作にする。
従来はDatInfo::m_kokoyonNumというパラメータを使って(2)をさらに
(2-1) ViewPos < ReadNum = ResNum、ロード直後でない
(2-2) ViewPos < ReadNum = ResNum、ロード直後
と分けて(1),(2-1)を赤、(2-2),(3)を緑にしてた。問題は内部コードがぐちゃぐちゃになること。
0579login:Penguin
04/11/22 23:41:46ID:CFYXtOSd終了時でしょうか? ウインドウを開いたままKDEを終了すると保存されていない
ようなのですが。
0580421
04/11/23 00:21:06ID:zOYbsGHe結構残ってますね・・・
>>579
既読情報は0.172.0以前は終了時、最新版は>>556のタイミング
お気に入りは終了時 (KitaMainWindow::~KitaMainWindow()の saveFavoriteBoards()
と saveFavorites()のとこ )
です。
0581kitaの中の人 ◆KITAulkOso
04/11/23 01:05:18ID:9ejod1vc(1)(2)を積極的に区別する必要性が分かりません。
少なくとも(2)(3)に比べたら区別する必要性は低いです。
なので、(1)赤○、(2)赤□、(3)緑□ なら反対しませんが。
あとむしろ問題なのは、スレを開いたときにスレ一覧(KitaSubjectView)の
色が更新されないことです。少なくとも赤のままはまずいです。
今まで通り緑にするか、新しく「開いているスレ=黄色」にするのがいいと思います。
種類を増やすのは危険ですが…。
>>579-580
今回断念したorzお気に入りの編集でまとめて直そうと思ってたのですが、
登録/削除のタイミングで保存するのなら簡単に出来ると思うので直しましょうか?
KitaMainWindow::bookmark()でsaveFavorites()を呼べばいいだけだと思うので。
0582421
04/11/23 03:11:32ID:zOYbsGHe>>581
> (1)(2)を積極的に区別する必要性が分かりません
区別しないことで生じる問題点は>>578の「(2)を赤の問題点」以下で述べて
ることで、要するに「少なくとも赤のままはまずい」ということです。で、
> (1)赤○、(2)赤□、(3)緑□
これが解決案1の「逆でも可」のところで
> 今まで通り緑にするか、
これが解決案2で
> 新しく「開いているスレ=黄色」
これが解決案1の「色で分ける」のとこですね。どの解決案を選ぶかは
一任しますが、個人的見解を言うとせっかくコードをきれいにしたので
解決案2は出来れば避けたいところ。
0583kitaの中の人 ◆KITAulkOso
04/11/23 11:59:39ID:9ejod1vc> 区別しないことで生じる問題点は>>578の「(2)を赤の問題点」以下で述べて
> ることで、要するに「少なくとも赤のままはまずい」ということです。で、
何か話がかみ合ってないようですが、421さんは内部仕様の話をして、
自分は外部仕様の話をしてるような気が…。
外部仕様が決まらないと内部仕様の話はありえないです。
外部仕様としては、多くても以下の4種類しかありえないです。
(A) 未読スレ
(B) 既読スレ、未読あり
(C) 既読スレ、未読なし
(D) 開いているスレ
(D)は今の仕様にはないもので、(C)と区別される必要はないですが、
(B)とは区別される必要があります。これを満たさない内部仕様は不許可です。
で、どの案を採用するかですが…これはまた後で書きます。
0584kitaの中の人 ◆KITAulkOso
04/11/23 12:44:11ID:9ejod1vchttp://kita.sourceforge.jp/cgi-bin/hiki/hiki.cgi?%A5%B9%A5%EC%A5%C3%A5%C9%B0%EC%CD%F7%A4%CE%A5%DE%A1%BC%A5%AF%A4%CE%BB%C5%CD%CD
0585421
04/11/23 13:24:48ID:qRM01ICu>>583,584
Hiki見ましたが、パターン1が従来パターン(解決案2)ですね。
でパターン2なんですが、上の方で懸念していた問題点は、鯖側で新しい書き込みがあっても
パターン2では分からないこと・・・だったんですが、良く考えたらReadNumの数字をスレ一覧に
表示しとけば分かるのか。
と言う訳で「(D)状態のマークを新設してパターン2+ReadNumの数字をスレ一覧に表示」案に一票。
ちなみにJaneViewはそのパターンみたいです。
0586kitaの中の人 ◆KITAulkOso
04/11/23 13:47:40ID:9ejod1vc> と言う訳で「(D)状態のマークを新設してパターン2+ReadNumの数字をスレ一覧に表示」案に一票。
パターン2はいいですが、>>547へループする危険性があるので注意してください。
未読のあるなしに比べたら数字の大小は大した問題ではないですが。
0587421
04/11/23 22:30:13ID:qRM01ICuまあどっちにしろ(D)の状態を判定する関数が必要なので、DatManagerとKitaHTMLPartに数行加えて
スレが開いているかどうかをチェックする関数を追加しました。cvsからの差分でkitaで-po
ttp://www.geocities.co.jp/SiliconValley-Bay/7435/patch-1123.txt
bool DatManager::isMainThreadOpened( const KURL& url );
bool DatManager::isMainThreadOpenedFast( const KURL& datURL );
使いかたは url を入れて開いてればTRUE閉じてればFALSE。下の方はKita::getDatURL()を使わないで
高速化したバージョンなので、KitaSubjectView::updateListViewItem()で使うときは
isMainThreadOpenedFast()の方が良いと思います。ただしURLとして datURLを入れてください。
その他追加した関数に関しては
KitaHTMLPart::setup()でDatManager::addMainThreadToList()を呼んでURLを登録
KitaHTMLPart::clearPart()でKita::DatManager::removeMainThreadFromList()を呼んでURL抹消
って感じ。
0588421
04/11/23 22:38:45ID:qRM01ICu微調整して後でパッチ出します。boardmanagerとkitaboardviewあたりいじってます。
しかしKNOPPIXって開発環境があらかた揃っててCVS版でも余裕でmake出来るのでほんと
テスト用に最適ですなw テスト手順はこんな感じ
(1) KNOPPIXにkitaをインストール
(2) linux板を開いて適当なスレを開く。とりあえずこのスレ(1089905503.dat)とKNOPPIXのスレ(1094401227.dat)
(3) kitaを閉じる。
(4) pc.2ch.net から pc5.2ch.net に移転したという仮定の元でテストする。1094401227.dat を
擬似的に前々スレ( http://pc.2ch.net/test/read.cgi/linux/1022744633/ )とする。
cd /var/tmp/kdecache-knoppix/kita
mv pc5.2ch.net pc.2ch.net/
mv pc.2ch.net/linux/1094401227.dat pc.2ch.net/linux/1022744633.dat
mv pc.2ch.net/linux/1094401227.dat.idx pc.2ch.net/linux/1022744633.dat.idx
board_list を書き換えて pc5.2ch.net/linux から pc.2ch.net/linux に変更。
(5) kitaを再起動して linux 板を開いて開かないことを確認。
(6) 板一覧を更新
(7) Linux板をもう一度開いてキャッシュと既読情報が受け継がれてるか確認
(8) >>1の前々スレのリンクがポップアップするかチェック
(9) もう一度再起動して pc5.2ch.net/linux/BBSHISTORY がうまく読まれるかチェック
(10) BBSHISTORYとBBS_MOVEDの中身をチェック
0589421
04/11/23 23:46:48ID:qRM01ICu変更対象は boardmanager.{h,cpp}とkitaboardview.cpp
ttp://www.geocities.co.jp/SiliconValley-Bay/7435/patch-1123-2.txt
・外部板の登録の仕方を若干変更
KitaBoardView::loadExtBoard()のあたり。まあ、相変わらず暫定仕様な訳ですが。
oooug.jpみたいな Flash CGI/mini thread 型の板の場合はextbrd.confで
OpenOffice.org<>http://oooug.jp/cgi-bin/bbs/users/<>3
みたいに最後に「<>3」を付けて下さい。するとこの板はFlash CGI/mini thread 型として登録されます。
その他の2ch互換板、したらばの場合は自動判定するので「<>数字」は必要ないです。ちなみにこの3って数字は
boardmanager.hの/* type of board */以下の数値だったりして。
・板リストの更新前に本当に更新するかメッセージボックスを出すようにした
KitaBoardView::downloadBoardList()のとこ。これで移転かなと思ったら気軽にメニューの板一覧更新で
移転があったか確認できます。あとついでに新板や移転した板の名前をクリップボードにコピーできるようにしたり。
ちなみに板移転ですが、従来どおりプリファレンスのデバッグのページで手動で移転することも可能ですが、
そっちでは板リストは更新されないのでなるべく手動で移転するのは避けてください(デバッグのページは
消しちゃった方が安全かも・・・)
・あとはこまかいバグの修正とかqDebug消したりとか。
明日はDatManagerのチェックをする予定。
0590login:Penguin
04/11/24 01:35:52ID:NIUn7ONT1行AA、適当に拾って来て足しときますた。
気に入らないのは削ってください。
#RPMPOINTの人はPC復活したんだろうか…?
0591kitaの中の人 ◆KITAulkOso
04/11/24 02:10:02ID:HeQ5hYMFあと>>574あたりから議論していた未読表示の対応を入れました。
とりあえず黄色にしましたがいまいちなのでたぶん変更しますw
ヘッダのOn/Offも入れましたがまだ微妙にバグが残ってます。
とりあえず明日snapshot出す予定なので、やばそうなら止めてくださいw
>>590
どもです。README.2chに入れました。
# hikiって履歴を辿っていけないのかなぁ。
0592421
04/11/24 22:13:14ID:Q57DaliPthread.{cpp,h}
datmanager.{cpp,h}
kitathreadview.cpp
kitahtmlpart.cpp
kita.cpp
を少しだけ修正してます。
ところでcvsですが、Qt3.1だと下のエラーが出ます。
kitasubjectview.cpp: In member function `virtual bool
KitaSubjectView::eventFilter(QObject*, QEvent*)':
kitasubjectview.cpp:498: error: `adjustColumn' undeclared (first use this
function)
kitasubjectview.cpp:498: error: (Each undeclared identifier is reported only
once for each function it appears in.)
kitasubjectview.cpp: In member function `void
KitaSubjectView::loadHeaderOnOff()':
kitasubjectview.cpp:537: error: `adjustColumn' undeclared (first use this
function)
0593421
04/11/24 23:39:48ID:Q57DaliPthread.{cpp,h} datmanager.{cpp,h} kitathreadview.cpp kitahtmlpart.cpp kita.cpp
ttp://www.geocities.co.jp/SiliconValley-Bay/7435/patch-1124.txt
・>>587のDatManager::isMainThreadOpened()の仕様を若干変更して効率化
パラメータ Thread::m_isOpened で判定するようにしたので、KitaSubjectViewの
Kita::DatManager::isMainThreadOpenedFast( datURL ) の部分は
thread->isOpened() に変更しておいて下さい。
ちなみに他のクラスから開いているかどうか知りたい時は DatManager::isMainThreadOpened()
のままでOK。
・KitaHTMLPart::setup()あたりを若干整理
ついでにコメント増やしたりとか。
・登録されてる板上のスレッドのURLかどうかをチェックする DatManager::isThreadEnrolled( url )
という関数を新設
で、KitaMainWindow::slotOpenURLRequestExt()でURLをスレッドタブを開くかどうかを
その関数で判定するようにした。
・終了時にDatInfoをdeleteするようにした
~KitaMainWindow()のKita::DatManager::deleteAllDatInfo()のとこ。
まあ何もしなくてもOSが開放してくれますが一応明示的に。
・あとは細かい修正とかqDebug消したりとか。
明日はKitaWriteViewあたりをチェックする予定。
0594kitaの中の人 ◆KITAulkOso
04/11/25 01:45:31ID:D9N/zWPiつhttp://kita.sourceforge.jp/snapshot/kita-20041125.tar.gz
あとはUIの整理と翻訳くらいの予定
0596421
04/11/25 23:19:35ID:IULYOANR対象は threadindex.{h,cpp} datmanager.{cpp,h} boardmanager.{cpp,h}
kitawriteview.cpp kitawritetabwidget.cpp
多分いま中の人がいじってる最中のあたりとはバッティングしてないはず。
ttp://www.geocities.co.jp/SiliconValley-Bay/7435/patch-1125.txt
・ViewPos = 0 の時に、スレッドプロパティなどから直接 ThreadIndex::getViewPos() を呼ぶと
ViewPosの数字がidxとキャッシュでずれるバグ修正
ThreadIndex::getViewPosPrivate()のところ。ViewPos=0のときに無条件で"cache"の情報
を利用していたのを止めた。
・あとは細かいバグ修正とqDebug外したくらい。
明日は全体的な微調整とレビューをおこなう予定。というかレビュー要員募集中。
ここの動作が変だとか言ってくれないとそのままリリースされる可能性が大なので。
0597421
04/11/26 00:10:14ID:98xYxq86aaaa aaa>>123
みたいに全角空白があって、その後にテキストノード、Aノードが続くと
Aノードの位置がずれることだと思います。それで、いま晩飯食いながら
なんとなくKDEのWebCVSでKHTMLのコードを眺めてた訳ですが、
とりあえず昔KDE3.1の時代に先頭の全角空白が詰まる問題のパッチでは
kdelibs/khtml/rendering/bidi.cppを直してたので、多分そこにまだ
問題が残ってるんだろうなと当たりを付けて眺めてみたら、
computeHorizontalPositionsForLine()というそれっぽい関数があって、
コメントとか見ながらその関数の中を眺めてたら
int x = leftOffset(m_height); という行と
int rightPos = lineBox->placeBoxesHorizontally(x); という
行があって、どうもノードの幅の計算をするときに、先頭の全角空白問題の時
みたいに全角空白を半角空白として認識して空白を詰めて計算してるため続く
Aノードの位置が左にずれてるらしい・・・という結論から言うと至極当り前な
推測に至ったのですが、良く考えるとKDEの開発MLにも参加してない自分が
バグの追求をしても仕方ないとふと我に帰ってやめましたw まあ30分位しか
調べてないので全然違う理由なのかもしれませんが・・・
と言う訳で、もしKDEの開発MLか何かに参加してる人がこれを読んでたら
開発者に直してと頼んでもらえるとありがたかったり。
0598kitaの中の人 ◆KITAulkOso
04/11/26 01:56:59ID:uJKFpkbeつhttp://kita.sourceforge.jp/snapshot/kita-20041126.tar.gz
全部パッチは入ってるはず。
あととりあえず翻訳終わりました。
今まで英語のままのところが多かったのは>>492のKitaThreadPart廃止による副作用でした。
あとプリファレンスから「デバッグ」を消しています。>>589
Qt 3.1の対応(>>592)も入れてますが面倒なので30pxに強制的に設定してますw
設定する機会も少ないと思うので影響は少ないと思いますが…。
直したいところは終わったので何事もなければリリースの準備にします。
0599login:Penguin
04/11/26 18:56:12ID:6s/ZOlZl乙彼です
板一覧の選択色がKDEのカラースキームの設定に関わらず群青色固定なのですが仕様でしょうか
あとkitaイメージビューワで表示したあとKonquerorに画像を渡すと文字で表示されてしまいます
(リロードすれば大丈夫)
0600421
04/11/26 23:15:51ID:akDpOYEt>>599
最初の方はバグです。listviewitem.cppのpaintCellを次に修正してください。
void ListViewItem::paintCell( QPainter *p, const QColorGroup &cg,
int column, int width, int align )
{
QColorGroup color = cg;
color.setColor( QColorGroup::Text, m_textColor );
color.setColor( QColorGroup::Base, m_baseColor );
KListViewItem::paintCell( p, color, column, width, align );
}
2つ目は実は結構難しい問題で、そもそも何故テキストが表示されるかと言うとkitaimgtabwidget.cppの
480行目あたりの openURLRequestExt( view->url(), KParts::URLArgs(), "text/html" );
の部分でMIMEタイプを"text/html"と指定して画像ファイルをKonquerorに送ってるのを、Konquerorが
ファイルのヘッダも調べずにテキスト形式ファイルと決めつけてファイルを開いているからで、じゃあ
"image/png"みたいにMIMEタイプを指定して送ればよいじゃんと思うかもしれませんが、そうすると今度は
KonquerorじゃなくてKViewやkuickshowで画像を開いてしまうという問題が。
結局、取れる対策は2つ
1、コントロールセンターのファイルの関係付け経由でなくて自前で外部ブラウザを設定する。
2、MozillaかFireFoxを使う。
0601421
04/11/26 23:21:22ID:akDpOYEtお気に入りまわりは次バージョンで整備するということなのでレビュー対象から除外しました。
テスト環境: KNOPPIX3.6、Qt3.2.3、KDE3.2.3、mona フォント
・そもそもユーザーマニュアルがないので詳しい使用方法が分からない
・プリファレンスの左側のツリービューの項目の文字が全部表示されない、枠を広げることができない
・板別に串の設定ができない
・キャッシュディレクトリが固定で任意の場所を指定出来ない
・板一覧やスレ一覧の背景色を設定できない
・キーボードショートカットのキー割り当てが適当
・いちいちコントロールセンターでマウスジェスチャーの設定をする必要がある
・他のブラウザからのログ移行が難しい
・外部板の登録の方法が良く分からない
・外部板の並び替え、カテゴリ別分類ができない
・板名検索機能が無い
・スレ一覧の更新のときにいちいちダウンロードダイアログが出るのがうざい
・スレ一覧の各行の幅が保存されないで勝手に調整される
・スレ一覧のIDの順序の行が消せない
・スレ一覧のViewPos、板の行に何も表示されない
・スレを開いていると更新があってもスレ一覧のマークが変わらないため更新があったことが分かりにくい
・スレ一覧でまとめてスレ削除ができない
・スレ別でのコテハン記憶、あぼーん機能が無い
・スレビューで全角空白があるとリンクの位置が左にずれる
・スレビューの検索単語をハイライトのボタンを押しても何も起きない
・スレビューでマークしたスレの番号が保存されない
・スレビューでレス抽出の仕方がいまいち分かりにくい
・スレビューでメアド欄非表示設定だと名前が数字でもレスポップアップしない
・スレビューのフォントサイズを変更するときにいちいちプリファレンスを開くのが面倒
・メインスレッドウィンドウとKitaNaviの見分けが付きにくい
・まちBBSに書き込み出来ない
・画像ビュワーの右クリックメニューのサイズのところで現在の画像サイズが分からない
・画像のプロパティみたいなものが無いためファイルサイズやフォーマットが分からない
・画像あぼーんが無い
0602kitaの中の人 ◆KITAulkOso
04/11/27 01:13:29ID:VYdYsESQcommitしました。
>>601
> ・スレ一覧のViewPos、板の行に何も表示されない
subjectviewの設定を保存するようにしたため、将来使いそうなのをあらかじめ入れたためです。
(「板」はFavoriteListViewのため)
> ・スレを開いていると更新があってもスレ一覧のマークが変わらないため更新があったことが分かりにくい
これはまずいですね…さすがに29日には間に合わないけど、
また仕様から考え直す必要がありますね。
0603421
04/11/27 02:18:55ID:bkTkhvpQ実は割合簡単な話で、hikiの書き方に合わせれば
5. スレを開いた状態でスレが更新されたなら
(D) => (B)
とするだけですね。具体的にはkitasubjectview.cppの
// no effect: m_unreadNum, m_readNum, m_newNum, markOrder
if ( thread->isOpened() ) { /* opened *
を
// no effect: m_unreadNum, m_readNum, m_newNum, markOrder
if ( thread->isOpened() && resNum == readNum ) { /* opened */
にするだけでok。 あと個人的には次バージョンでは
> ・キーボードショートカットのキー割り当てが適当
> ・いちいちコントロールセンターでマウスジェスチャーの設定をする必要がある
> ・他のブラウザからのログ移行が難しい
> ・スレビューでマークしたスレの番号が保存されない
> ・メインスレッドウィンドウとKitaNaviの見分けが付きにくい
> ・まちBBSに書き込み出来ない
あたりをなんとかしようと考え中。
0604kitaの中の人 ◆KITAulkOso
04/11/28 01:56:36ID:uKBX3WgK個人的にはマークの意味が曖昧になるのが気になりますが、
現状よりはよいということでcommitしますた。
寝て起きて覚えてたら最後のsnapshot出します。
0605421
04/11/28 02:44:08ID:oNq/H9eY・書き込みの時に現在のバイト数の計算が間違ってたバグ修正
diff part-org/kitawriteview.cpp part/kitawriteview.cpp
434c434
< int length = m_cp932Codec->fromUnicode( bodyText->text(), tmpln ).length();
---
> int length = m_cp932Codec->fromUnicode( bodyText->text().replace( "\n", " <br> " ), tmpln ).length();
バイト計算をするときは改行をbrタグにしてから計算しないと駄目みたいです。となると特殊文字なども
変換してから計算しなきゃいけないのか・・・。まあこの辺は次バージョンでもう少し調べてみます。
・あとqDebugの消し忘れ
diff libkita-org/favoritethreads.cpp libkita/favoritethreads.cpp
67d66
< qDebug("readFromXML");
0606login:Penguin
04/11/28 09:17:37ID:S1pxb2sA[環境] SUSE 9.1 Qt 3.3.3 KDE 3.3.3 kita-20041126
★スレを開いても閉じるかそのタブに別のスレを開かない限り未読数が消えない
#以前は開くと同時に未読の欄が消えていた。こっちの方が分かり易い
★上記に関連して、スレ一覧の「更新」ボタンの横の「未読スレ数」(赤字)表示も、
閉じるかそのタブに別スレを開くまで変わらない
★スレビューを更新しようとしたが「更新中」のまま反応がない時、メニューの「停止」を選択しても、
escapeを押しても変化がない。スレビューをクリックすると消える(ただし再現させるのが難しいので、
常にそうなるかどうかは不明)
★スレビューで検索し、一つもhitするものがなかった場合、「見つかりませんでした」というメッセージがほしい
今は何故か120から130番レス辺りに黙って飛んでしまうので、一瞬hitしたのかと思ってしまう
★あと、メール欄非表示の設定の時、ミョーな現象ハッケソ。>>606←これのPopupの名前欄
それと、イメージビューアに初めモザイクが掛かってるのはどういう理由からなんでしょうか?
見なきゃどんな画像か分からないからどの道外すことになるので意味ないような…
0607login:Penguin
04/11/28 09:29:20ID:S1pxb2sAってか、前は何でしたっけ?レス間の関係図みたいな奴でしたっけ?
0608login:Penguin
04/11/28 09:49:34ID:S1pxb2sA>>607は見なかったことに…
#機能を理解してなかっただけだったので…(TДT)
#ちゃんと機能してましたです
0609421
04/11/28 13:06:50ID:2307/MxE> ★スレを開いても閉じるかそのタブに別のスレを開かない限り未読数が消えない
> ★上記に関連して、スレ一覧の「更新」ボタンの横の「未読スレ数」(赤字)表示も、
> 閉じるかそのタブに別スレを開くまで変わらない
このスレの上の方で話が出てますが、今までは内部では「(鯖側の)レス数」、「ここまで読んだの位置」
の2つのパラメータを持っていたのをほにゃららして、「未読数」の列をスレを開いた直後は「新着数」として
扱って0にセットし、ここまで読んだを移動したら「未読数」として扱ってましたが、今回からは内部では
「(鯖側の)レス数」、「(キャッシュにある)取得レス数」、「ここまで読んだの位置」の3つのパラメータを
持つようになったので、「未読数」の列には厳密に「レス数 - ここまで読んだの位置」の数字が入るように
なりました。従って以前みたいに「新着数」を知りたいときは「新着数」という列を新設する必要があります。
まあスレ一覧の列のOn/Offが出来るようになったし、「新着数」と「取得レス数」の列を入れるとしたら
次バージョンでですかね。
> ★スレビューを更新しようとしたが「更新中」のまま反応がない時、メニューの「停止」を選択しても、
> escapeを押しても変化がない。
こっちでは確認出来てないので、ぼちぼち見ときます。
> ★スレビューで検索し、一つもhitするものがなかった場合、「見つかりませんでした」というメッセージがほしい
> 今は何故か120から130番レス辺りに黙って飛んでしまうので、一瞬hitしたのかと思ってしまう
このバグは認識してましたが、突っ込みが入るまで放置してましたw 次バージョンで直します。
つづく
0610421
04/11/28 13:11:18ID:2307/MxE> ★あと、メール欄非表示の設定の時、ミョーな現象ハッケソ。>>606←これのPopupの名前欄
これはバグですね。次みたいに修正しておいて下さい。
diff kita_misc.cpp.org kita_misc.cpp
841,842c841,842
< titletext += "<a href=\"" + linkurl;
< titletext += " title=\"" + addstr + "\">";
---
> titletext += "<a href=\"" + linkurl.replace( ">", "<" );
> titletext += " title=\"" + addstr.replace( ">", "<" ) + "\">";
> それと、イメージビューアに初めモザイクが掛かってるのはどういう理由からなんでしょうか?
グロ画像対策です。モザイクをoffにしたいときは .kde/share/config/kitarcで
「UseMosaic=false」として下さい。
> あとスレビューでレス番号を右クリックしても何も起こらなくなってる
参照がないときでも何か反応させた方が良いのかも・・・
ところで全体の設定ファイルが.kde/share/apps/kitaではなくて.kde/share/config
にあるのはKDEのアプリとしては正しいんですが、OS再インストールの時とかバックアップする
ときにバックアップし忘れそうな気がしますねえ、と今日の夜FC3をインストールするつもりで
いまバックアップしてる最中なのでそうオモタ。
0611kitaの中の人 ◆KITAulkOso
04/11/28 14:12:40ID:uKBX3WgK・文字列を選択すると標準出力に"XXX heuristicNameMatch hint = utf-8"が出続ける
という問題をfixしました。単にwarning削っただけですが…。
本来はQCp932Codec::heuristicContentMatch()を実装しないとダメですけどね…。
>>605
commitしますた。
> バイト計算をするときは改行をbrタグにしてから計算しないと駄目みたいです。となると特殊文字なども
> 変換してから計算しなきゃいけないのか・・・。まあこの辺は次バージョンでもう少し調べてみます。
たぶんdatファイルに格納するときのバイト数なので、
リンクについても同様に変換してから計算しないとまずいですね。
で、2chだとリンクするけど、まちBBSだとリンクしないということは…((((;゚Д゚)))ガクガクブルブル
>>606>>607>>609>>610
> 取得レス数
これは今の「既読」に相当しますよね。というかこれは「取得」のミスorz
あと、On/Offは出来るようになりましたが、あまり列を増やすと混乱するので別の方法を
使うことを検討したいです。数字の色を変えるとか。
> モザイク
On/Offの具体的な要望がなかったような気がするので今までUI付けてなかったり。
というわけで次(12/29?)に入れます。たぶん。
> メール欄のバグ
commitしますた。
> 参照がないときでも何か反応させた方が良いのかも・・・
に一票。
> 設定ファイル
これってKDEの設計の問題だよなぁと。configは廃止してもいい気が。
0612login:Penguin
04/11/28 15:11:33ID:IzXu5vFBところで前にスレ一覧のNo.とかTitleとかの欄の幅を変えられるようにしてホスィ
ってお願いしていて、最近のスナップショットで叶えられたと喜んでいたのですが、
せっせと設定したベストポジションが一度kitaを終了してしまうとリセットされてし
まってショボーンです。
kita終了しても欄幅覚えて再現してくれるようにキボンヌ。
0613kitaの中の人 ◆KITAulkOso
04/11/28 16:26:54ID:uKBX3WgKつhttp://kita.sourceforge.jp/snapshot/kita-20041128.tar.gz
>>612
ごめんなさい。入れたつもりだったのですがバグっててうまくいかないようですorz
すぐには直せそうにないので次でお願いします。
0615kitaの中の人 ◆KITAulkOso
04/11/28 17:09:57ID:uKBX3WgK「コピー」で得られるURLが間違ってるバグの修正。
まちBBSは直ってませんが、一行だと直らないっぽいので次に回します。
Index: kita/src/part/kitahtmlpart.cpp
===================================================================
RCS file: /cvsroot/kita/kita/kita/src/part/kitahtmlpart.cpp,v
retrieving revision 1.68
diff -u -r1.68 kitahtmlpart.cpp
--- kita/src/part/kitahtmlpart.cpp 25 Nov 2004 16:05:02 -0000 1.68
+++ kita/src/part/kitahtmlpart.cpp 28 Nov 2004 07:57:47 -0000
@@ -1566,7 +1566,7 @@
/* url */
if ( str != QString::null ) str += "\n";
- str += Kita::DatManager::threadURL( m_datURL ) + QString().setNum( resNum ) + "\n";
+ str += Kita::DatManager::threadURL( m_datURL ) + "/" + QString().setNum( resNum ) + "\n";
/* body */
if ( ret == WRITEMENU_COPY ) {
0616kitaの中の人 ◆KITAulkOso
04/11/28 17:33:45ID:uKBX3WgK(バグは除いてます)
>409>467>476>589
・鯖移転対応
>422>425
・環境変数KDEDIRSが設定されていないときも正しく動く
# ただし英語のままなのでKDEDIRSの設定自体は必要
>435>451
・したらば読み/書き/スレ立て対応
>446
・キャッシュに残ってるdat落ちしたログの表示(スレ一覧の右クリック)
>492
・書き込みウィンドウで行数、バイト数の表示
# これ分かりにくいので説明が必要ですね。
・板看板表示(スレ一覧タブの右クリック)
>530>532
・2ch以外のBBSの逐次表示
・Flash CGI/Mini Thread読み込み/書き込み/スレ立て対応
>577
・HOST表示対応
>591
・未読表示方法を変更
・スレ一覧の項目のOn/Off
0617login:Penguin
04/11/28 20:43:19ID:S1pxb2sA> このスレの上の方で話が出てますが、
スマソ。純粋に、お二人の会話についていけてませんでした orz
> ★スレビューを更新しようとしたが「更新中」のまま反応がない時、メニューの「停止」を選択しても
この件に関してですが、どうもVer. upしたときに、cacheにログがあるのに読み込めていない(スレ一覧の
「既読数」が空欄になってる)スレで発生するようです。ので、問題としては「停止やescapeが効かない」
というよりは、「Ver. up時にログを読み込めないスレがある」というものかと。
詳しく書くと、
1.) Ver. up後スレ一覧を開くとログがあるはずなのに既読数が空欄のスレがある
2.) そのスレを開こうとすると、statusbarに「更新中」とでたまま変わらない(「停止」やescapeを押しても変化なし)
3.) スレビュー(真っ白)を左クリックすると「更新中」の表示は消える
4.) スレビューを右クリックするとkitaがクラッシュする
こんな感じです。
> 「UseMosaic=false」として下さい。
早速。
>>611
>> モザイク
>というわけで次(12/29?)に入れます。たぶん。
お願いしまつ
0618421
04/11/28 22:19:52ID:2307/MxEそのバグ再現しました。例えば、kitaを閉じてから
rm 1089905503.dat (このスレのキャッシュ)
したあとkitaを起動してこのスレを開くとその症状がでます。ちなみに直すときは
スレ一覧でログを削除してからもう一回クリック。
で、これはキャッシュファイルが無いのにidxがあるとデータベースに不整合が起きて
生じるバグみたいで、多分DatManagerとBoardManagerを数行直せば直ると思うんで
すが、いかんせん現在OSを再インストール中でしょぼいサブノートから書いてる状況
なので、あと2,3時間ほど待ってください。
0619login:Penguin
04/11/28 22:58:09ID:S1pxb2sAあ、いやいや、こっちでもログ消して再取得で復旧済ですので、
急がなくて大丈夫です。
ありがとです
0620421
04/11/28 23:57:32ID:2307/MxEもうひとつ、「お気に入りスレに登録されてる」って条件が必要ですね。つまり、
FavoriteThreads::processThreadNode()のThreadIndex::loadIndex()で
キャッシュがあろうが無かろうがidxを読み込んでしまうためデータベースが壊れて、
キャッシュが無いのにReadNum > 0 になるため、KitaHTMLPart::setup()の
if( Kita::DatManager::getReadNum( m_datURL ) == 0 ) Kita::DatManager::createDatInfo( m_datURL );
のところでDatInfoを作らずにそのまま突き進んで、結局右クリックすると
KitaHTMLPart::showPopupMenu()の datInfo = Kita::DatManager::getDatInfoPointer()で
NULLが返って datInfo->getReadNum()でぬるぽで落ちるという感じ。
で、とりあえずこんな感じで回避。
diff kitahtmlpart.cpp.org kitahtmlpart.cpp
130c130
< if( Kita::DatManager::getReadNum( m_datURL ) == 0 ) Kita::DatManager::createDatInfo( m_datURL );
---
> Kita::DatManager::createDatInfo( m_datURL );
KitaHTMLPart::setup()でReadNum==0のチェックを外しただけ。するとDatInfoが
作られたときにDatInfo::initPrivate()の中でm_thread->setReadNum( 0 );
としてるのでレス数がリセットされます。DatManager::getDatInfo()を見れば
分かるように、別にReadNum==0のチェックを外しても害は無いです。というか、
むしろチェックすると上みたいな害がある訳ですがw
整合性が壊れる問題の根本的な解決は次バージョンでやります。
0621kitaの中の人 ◆KITAulkOso
04/11/29 00:29:46ID:xEs1DOao落ちなくなったことガッ確認できたのでcommitしました。
直接は関係ない話ですが、
.datがなくて.dat.idxがある状態って普通はないと思ってたんですが、
>>556にあるように
> a) キャッシュにあるスレを表示した直後(鯖からデータをロードする前)に
> DatInfo::initPrivate() からThreadIndex::saveIndex()を呼ぶ。
なので鯖が反応なくてロードを停止した場合に起き得るみたいですね。
0622kitaの中の人 ◆KITAulkOso
04/11/29 22:06:23ID:OfktG3qJ変更点(ほとんど421さん)
* 各種板対応
o 2chのサーバ移転に対応
o したらばの読み/書き/スレ立て対応
o Flash CGI/Mini Threadの読み/ 書き/スレ立て対応
* スレ一覧表示関連
o 未読数表示方法を変更
o 項目のOn/Off(ヘッダーで右クリック)
o 板看板の表示(タブで右クリック)
o キャッシュに残ったdat落ちしたログの表示(タブで右クリック)
* スレ表示/書き込み関連
o HOST表示対応(削除依頼、まちBBSなど)
o 2ch以外のスレの逐次表示
o 書き込みウィンドウで行数/バイト数を表示(右下に 「(現在の行数)/(最大行数) | (現在のバイト数)/(最大バイト数)」で表示されます。)
* その他UIの調整、バグ修正
今回は修正点が多いので、各種設定ファイルのバックアップを特におすすめします。
(.kde/share/config/kitarc, .kde/share/apps/kita/* 以下が設定ファイル、
.kde/share/cache/kita 以下がキャッシュ)
多分大丈夫だとは思いますが。
0623kitaの中の人 ◆KITAulkOso
04/11/29 22:12:28ID:OfktG3qJとりあえず次こそお気に入りの整理を入れる予定ですが、
仕事が忙しかったり何やら誘惑の多い時期なのでダメだったらごめんなさいと先に謝っておきます。
(#゚Д゚) ゴルァいわれない程度には頑張りますが。
0624login:Penguin
04/11/29 22:46:34ID:wxdUEsm/--- kita/src/part/kitawriteview.cpp.origSun Nov 28 13:22:18 2004
+++ kita/src/part/kitawriteview.cppMon Nov 29 22:38:31 2004
@@ -436,8 +436,8 @@
int maxLength = Kita::BoardManager::getBBSMsgCount( m_datURL );
QString str;
- str = QString().setNum( lines ) + "/" + ( maxLines != 0 ? QString().setNum( maxLines ) : "--" );
- str += " | " + QString().setNum( length ) + "/" + ( maxLength != 0 ? QString().setNum( maxLength ) : "--" );
+ str = QString().setNum( lines ) + "/" + ( maxLines != 0 ? QString().setNum( maxLines ) : QString( "--" ) );
+ str += " | " + QString().setNum( length ) + "/" + ( maxLength != 0 ? QString().setNum( maxLength ) : QString( "--" ) );
lengthLabel->setText( str );
if( maxLines != 0 && lines > maxLines ) return FALSE;
0625login:Penguin
04/11/29 23:42:34ID:Iq38my1Rダウンロードできない。
シクシク
0626625
04/11/30 00:54:11ID:wn41vUAvaudio/x-pn-realaudio-pluginと判断されてダウンロードできない。
Linux版のFirefox1.0とOpera7.6P3で試しました。
他の人は無問題?
0627login:Penguin
04/11/30 01:11:19ID:mDUrXQW00628kitaの中の人 ◆KITAulkOso
04/11/30 01:20:56ID:VERsZy1V他のところだと起きてない。何でだろう。
とりあえずこっちからダウンロードしてください。md5sum確認は忘れずに。
http://keihanna.dl.sourceforge.jp/kita/12389/
http://kyushu-u.dl.sourceforge.jp/kita/12389/
■ このスレッドは過去ログ倉庫に格納されています