作者: roga (罪人) 站內: Bug_Report
標題: [轉錄]Re: [誠徵]推文魔人~
時間: Wed Feb 23 23:55:32 2005

※ 本文轉錄自 [Talk] 看板

作者: roga (罪人) 站內: Talk
標題: Re: [誠徵]推文魔人~
時間: Sat Feb 12 22:39:05 2005



以下轉自 ITOC 全國連線討論區


 作者  weiyu.bbs@******** (Andy)                     看板  ITOC        
 標題  Re: [請益]想請教板上前輩一個推文的問題                                 
 時間  王者之家 (2005/02/12 Sat 16:26:14)                                     

※ 引述《roga.bbs@******** (罪人)》之銘言:
> 您好,有記負分的制度,推文方式其實就和原本的ITOC完全一樣..
> 站方也沒有修改 推到「99」或是 推到 「」以及呸到「99」以及呸到「> 小弟很好奇這種情形是怎麼發生的,而且很多看板都曾經有過。

抱歉,沒注意:p(不小心和人氣的計數搞混了:p)
有可能真的是因為推文太密密集了
因為在做判斷if(hdr->score < 35)的時候
和真正寫入磁碟的時間是有段差距(雖然應該是差不多)
等到真正更新的時候
可能真正的值已經改變了(這在hdr->score<35的時候是看不出來的)
所以如果要避免這種情形
if(hdr->score < 35)可以放在addscore內判斷
修改addscore
static int
addscore(hdd, ram)
  HDR *hdd, *ram;
{
  if(hdd->score * curraddscore < 35) {
    hdd->score += curraddscore;
    hdd->xmode |= POST_SCORE;
  }
}
然後看你post.c:post_score裡面這段的兩個if要不要去掉
  case '1':     /* 加分 */
    if (hdr->score < 35)
      curraddscore = 1;
    break;
  case '2':     /* 扣分 */
    if (hdr->score > -35)
      curraddscore = -1;
    break;
沒去掉的話
整段patch在一般狀況下(也就是還沒爆掉的情況下)
總共會做兩次檢查
但是如果已經達到上限
則會做一次檢查
也就是爆掉情形很多的情況下比較有利

如果去掉的話
無論如何 就是一次檢查
但是問題是...
在爆掉情形很多的情況下比較花io
因為每次都會去讀檔案(無論有沒有爆掉)

--
沒想到我居然用乘的XD
--
                        生▂�R▃有▁了▃苦▆痛
                        何不把眼睛的餘光留給別人
                            你會看到更多

--
╭────╮ ╬ weiyu.twbbs.org ☆☆☆☆☆☆☆☆☆☆☆☆
家│ ╬ weiyu  ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
╰────╯ ╬ 發表於 weiyu.mshome.net  ☆☆☆☆☆☆☆☆☆



 作者  weiyu.bbs@******** (Andy)                     看板  ITOC        
 標題  Re: [請益]想請教板上前輩一個推文的問題                                 
 時間  王者之家 (2005/02/12 Sat 18:13:42)                                     

※ 引述《weiyu (Andy)》之銘言:
> static int
> addscore(hdd, ram)
>   HDR *hdd, *ram;
> {
>   if(hdd->score * curraddscore < 35) {
>     hdd->score += curraddscore;
>     hdd->xmode |= POST_SCORE;
>   }
> }
另外,如果你原本的addscore是
static void
addscore(hdd, ram)
那那個void不用改成int
不然compiler可能會產生warning
(rec_ref的第六個參數好像改成void (*fref)()了
原本是int (*fref)()
所以新版的應該是
static void
addscore(hdd, ram)
  HDR *hdd, *ram;
{
  if(hdd->score * curraddscore < 35) {
    hdd->score += curraddscore;
    hdd->xmode |= POST_SCORE;
  }
}

--
面對它
    接受他
        處理它
            放下它

--
╭────╮ ╬ weiyu.twbbs.org ☆☆☆☆☆☆☆☆☆☆☆☆
家│ ╬ weiyu  ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
╰────╯ ╬ 發表於 weiyu.mshome.net  ☆☆☆☆☆☆☆☆☆



--

誰愛   愛


--
  Origin:  玩車人的天地 ˙東吳機研站  scumotor.com.tw 
  Author: roga 220-134-15-5.HINET-IP.hinet.net 發表CMLI0107 :我的建議是加上 timer 去解決啦......好久沒玩code惹     05/02/12
→ roga :XDDD                                                      05/02/12