Re: [建議] 存以/搜尋的關鍵字群回系統待下次登入用

作者: IepID (Iep Iweidieng)   2024-05-13 16:23:31
※ 引述《if4 (if Chen)》之銘言:
: [略……]
: 建議下次登入,再把 if 回存,方便使用
要讓此功能方便實用的話,只將輸入框歷史儲存起來是不夠的。
一、目前 PttBBS 的輸入框是無論輸入爲何,都會將輸入文字存進輸入歷史,
所以如果要重覆使用 2 項或更多項的輸入紀錄時,就必須愈按愈多次 ↑ ,
可能到最後反而比直接輸入還不方便。
DreamBBS 有對這部份改進,參考了 bash 的命令歷史記錄方式,
如果是一字不改地重覆使用歷史輸入項目,就不會存進歷史。
※ 引述《if4 (if Chen)》之銘言‧續:
: 因為我認為大多數關鍵字會是差不多的,所以才有必要回存。
: 這算是強化BBS系統搜尋功能。
二、目前的輸入框歷史紀錄,並沒有對不同的輸入用途分開儲存,
所以會出現搜尋時叫出剛才的推文內容或相反的不方便情況,
甚至會出現推文時叫出剛才編輯的自己甚至(若爲站長)他人的個人資料的隱私問題。
只有密碼輸入、1~2 字元的短輸入、等特定情況不會存進歷史紀錄。
實作上會需要多指定輸入框的用途給處理輸入框的函式來解決這個問題,
但是要在程式碼中找出所有同一用途的輸入框而需要付出一定的心力。
※ 引述《if4 (if Chen)》之銘言‧續:
: 如果相同帳號有不同使用者呢?(我這裡是假設某帳號被盜用^^)
: 因為有些人根本不換密碼的,密碼又很短...我只是假設一下 XD
: 所以我再建議:
: 下次要再度使用要打密碼(可以跟帳號不一樣)
: 也就是說在這次使用時會問使用者要儲存密碼
: 等到下次登入按/會確認密碼
: 認為多此一舉的使用者,可以選擇不輸入密碼
: 因為有些人心中坦蕩,不怕心中的秘密洩漏...XD
: 但這服務要做得好...當然也要把各種狀況考慮進去
: 可以先做沒保護的...視情況斟酌加入...
三、至於歷史紀錄的密碼,當賬號被盜時,有其它更隱私的東西需要擔心,
比如私人信件與個人資料,比保護搜尋紀錄來得重要。
而且懂得設搜尋紀錄密碼的使用者較不太可能設定弱的賬號密碼。
用不重要的密碼當作重要的密碼被破解的防線的設計可說是過於多餘。
再來是有關輸入歷史紀錄的密碼的介面跳出的時機。
如果沒有解決 二、 的問題的話,跳出的時機會是在登入後顯示任何長輸入框時,
不會只有進行搜尋時。
而不幸的是,很多基於解析終端機介面的第三方 app 需要配合修改才能正常運作,
無論有沒有解決 二、 的問題,第三方 app 開發者都必須在程式碼中
找出所有會跳出密碼介面的輸入框,同樣需要付出一定的心力。
※ 引述《if4 (if Chen)》之銘言‧續:
: 因為我覺得大部份使用 / 的時候...
: 有很多是打過的...下次登入還能使用...就蠻貼心的...
: 可以辦個全站投票調查一下,看我是不是講真心話...XD
悲觀地說,個別人的用前眞實意見不一定會符合眾人的多數用前眞實意見,
而眾人的多數用前眞實意見不一定會符合眾人的多數用後眞實意見。
※ 引述《if4 (if Chen)》之銘言‧續:
: 關鍵字可以挑剔以使留下來的關鍵字是最經典的。
四、有關輸入框歷史紀錄的編輯,由於目前的輸入框歷史紀錄項數是有上限的,
爲 IH_MAX_ENTRIES(目前定義爲 12)
(DreamBBS 與 MapleBBS 3.10-itoc 則是 MAXLASTCMD,目前皆定義爲 8),
定義的值太小,所以新的紀錄會很快地排擠掉舊的紀錄,編輯的意義不大。
但從這個想法可以延伸出不同的設計,讓使用者可以編輯常用輸入,在輸入時可以按
特定的按鍵來叫出(類似於編輯文章時所按的 Esc -數字)而不受歷史紀錄的干擾。
參考——相關 BBS 的輸入框處理函式:
‧ PttBBS(常被各站臺採用的 MapleBBS 2 支系 SOB BBS 的分支,
不像 MapleBBS 3 經過 opus、Thor、等 MapleBBS 開發者的大輻度重構,
但又經過 in2、piaip、等開發者的重構與改進而不同於其它 SOB BBS 分支):
‧ getdata() → vgets()(不預先填入字串) → vgets()
‧ getdata_buf() (會預先填入輸出緩衝區內已有的字串) → vgetstr()
‧ getdata_str() (會預先填入使用額外的字串引數所指定的字串) → vgetstr()
‧ vgets() → vgetstr() → vgetstring(),後者支援指定自訂的按鍵回呼函式
以及重繪輸入框背後的畫面的回呼函式,利用自訂的資料結構來實作:
https://github.com/ptt/pttbbs/blob/c4f6a2910e/mbbsd/vtuikit.c#L1153-L1459
其中 getdata…() 的使用佔多數。
‧ MapleBBS 3.10-itoc(常被各站臺採用且說明文件較完善的 MapleBBS 3 分支;
經過 itoc、等開發者參考各個 TANet BBS 支系改進,但已停止主要開發多年):
‧ vget()
https://github.com/xeonchen/maplebbs-itoc/blob/5deda09183/bbs/src/maple/visio.c#L1672-L1999
‧ DreamBBS(夢之大地 BBS 採用的系統,MapleBBS 3 支系 WindTopBBS 3 的分支,
與 MapleBBS 3.10-itoc 的最後共同祖先爲 MapleBBS 3.10,但之後的演變歷史不同):
‧ vget() → vget_xo(),後者支援指定重繪輸入框背後的畫面的回呼函式,
利用了 MapleBBS 3 既有的 Xover 選單系統的回呼函式架構來實作:
https://github.com/ccns/dreambbs/blob/d8488428b9/maple/visio.c#L2749-L3212
其中許多原使用 vget() 的函式已轉用 vget_xo()。

Links booklink

Contact Us: admin [ a t ] ucptt.com