回精華區
作者qazq.bbs@bbs.cs.nchu.edu.tw (Maple-itoc) 看板: plan
標題[功能] 全站喜好設定統計。
時間中興資科 (2004/01/08 Thu 23:16:29) Updated: 2004/01/08
    由於本站有很多新增的程式都放在喜好設定給使用者設定。

    所以想要觀察一下哪個功能使用率如何,所以寫了這個小程式。

    計算結果會輸出到 ~/gem/@-habit  可以從BBS上面直接觀看。

    下面附上程式碼,以及輸出的畫面。

    當然,畫面可以自己修改&上色。

==============================================================================

: src/util/Makefile

EXE =   ... showHabit

: src/util/showHabit.c   新增下面整支程式

/*-------------------------------------------------------*/
/* util/showHabit.c  ( NTHU CS MapleBBS Ver 3.00 )       */
/*-------------------------------------------------------*/
/* target : 觀察全站喜好設定使用情況                     */
/* create : 04/01/08                                     */
/* update :   /  /                                       */
/* author : qazq.bbs@bbs.cs.nchu.edu.tw                  */
/*-------------------------------------------------------*/

#define _ADMIN_C_

#include "bbs.h"

#define OUTFILE_HABIT   BBSHOME"/gem/@/@-habit"

static int habit[32] = {0};

static void
count_habit(flag)
  unsigned flag;
{
  int i;
  unsigned mask = 1 << 31;

  for (i = 31; i >= 0; i--)
  {
    if (flag & mask)
      habit[i]++;

    flag <<= 1;
  }
}


int
main()
{
  int i, totaluser = 0;
  char c, buf[30];
  FILE *fp;

  for (c = 'a'; c <= 'z'; c++)
  {
    char buf[64];
    struct dirent *de;
    DIR *dirp;

    sprintf(buf, BBSHOME "/usr/%c", c);
    chdir(buf);

    if (!(dirp = opendir(".")))
      continue;

    while (de = readdir(dirp))
    {
      ACCT acct;
      int fd;
      char *fname;

      fname = de->d_name;
      if (*fname <= ' ' || *fname == '.')
        continue;

      sprintf(buf, "%s/.ACCT", fname);
      if ((fd = open(buf, O_RDONLY)) < 0)
        continue;

      read(fd, &acct, sizeof(ACCT));
      close(fd);

      count_habit(acct.ufo);
      totaluser++;
    }

    closedir(dirp);
  }

  if (!(fp = fopen(OUTFILE_HABIT, "w")))
    return;

  fprintf(fp, "全站人數:%d\n\n", totaluser);

  for (i = 0; i <= 31; i++)
  {
    sprintf(buf, "%s", ufo_tbl[i]);
    if (!strcmp(buf, "保留") || !ufo_tbl[i])
      continue;

    fprintf(fp, "Habit[%2d]  %s  開啟人數:%-3d  關閉人數:%d\n",
      i, ufo_tbl[i], habit[i], totaluser - habit[i]);
  }

  return 0;
}

==============================================================================

全站人數:425

Habit[ 1]  動態看板        (開啟/關閉)  開啟人數:412  關閉人數:13
Habit[ 2]  看板列表顯示    (文章/編號)  開啟人數:51   關閉人數:374
Habit[ 3]  看板列表排序    (字母/分類)  開啟人數:149  關閉人數:276
Habit[ 4]  進板畫面        (顯示/跳過)  開啟人數:411  關閉人數:14
Habit[ 5]  文章編輯器      (簡化/完整)  開啟人數:9    關閉人數:416
Habit[ 6]  進/離站畫面     (簡化/完整)  開啟人數:100  關閉人數:325
Habit[ 7]  呼叫器          (好友/所有)  開啟人數:16   關閉人數:409
Habit[ 8]  廣播天線        (拒收/接收)  開啟人數:9    關閉人數:416
Habit[ 9]  遠離塵囂        (安靜/接收)  開啟人數:8    關閉人數:417
Habit[10]  使用者名單顯示  (好友/全部)  開啟人數:17   關閉人數:408
Habit[11]  接受上站通知    (通知/取消)  開啟人數:35   關閉人數:390
Habit[12]  上站送通知/協尋 (不送/通知)  開啟人數:24   關閉人數:401
Habit[13]  水球回顧介面    (完整/上次)  開啟人數:292  關閉人數:133
Habit[14]  不儲存水球紀錄  (刪除/選擇)  開啟人數:123  關閉人數:302
Habit[15]  不儲存聊天紀錄  (刪除/選擇)  開啟人數:17   關閉人數:408
Habit[16]  不使用簽名檔    (不用/選擇)  開啟人數:359  關閉人數:66
Habit[17]  顯示簽名檔      (顯示/不看)  開啟人數:45   關閉人數:380
Habit[18]  上站瀏覽新聞    (瀏覽/不要)  開啟人數:1    關閉人數:424
Habit[19]  整行光棒        (光棒/普通)  開啟人數:404  關閉人數:21
Habit[20]  看板說明        (顯示/隱藏)  開啟人數:417  關閉人數:8
Habit[21]  隱身上站        (隱身/現身)  開啟人數:1    關閉人數:424
Habit[22]  自動跳到未讀看板(自動/不跳)  開啟人數:382  關閉人數:43
Habit[24]  壞人隱藏        (隱藏/顯示)  開啟人數:16   關閉人數:409
Habit[27]  動態隱藏        (隱藏/顯示)  開啟人數:6    關閉人數:419
Habit[28]  隱身術          (隱身/現身)  開啟人數:9    關閉人數:416
Habit[30]  站長上站來源    (限制/任意)  開啟人數:0    關閉人數:425

==============================================================================

--
  Author:  中興資科˙中興資科 e資獨秀  csNCHU.twbbs.org 
  Origin: qazq 61-216-137-35.HINET-IP.hinet.net 發表
精華選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻