###### tags: `annoying-code` `quest` Annoying Codes 01 === --- ##### [2022-08-22] annoying "if"(poor) ⠿ 一個不好的例子,重構題目中指定的程式碼。 * c# * https://code.sololearn.com/cwtjO7J4dvtP `2022-11-09 新增` * https://www.jdoodle.com/ia/DoZ `2023-02-06 新增` * golang * https://code.sololearn.com/cs3A6odRM08W * https://www.jdoodle.com/ia/u5V * javascript * https://code.sololearn.com/ci2m7sl6psYk * lua * https://www.jdoodle.com/ia/zsY --- ##### [2022-08-29] resolve key codes(poor) ⠿ 解析輸入的鍵盤按鍵,並回傳對應的指令。<br/> 輸入的按鍵參考 ( https://css-tricks.com/snippets/javascript/javascript-keycodes/#aa-keycode-values )。<br/> 作答要求調整題目中 resolveKeyEvent() 方法。 * c# * https://code.sololearn.com/cFXdi9UmBOLD `2022-11-11 新增` * https://www.jdoodle.com/ia/Dp2 `2023-02-06 新增` * golang * https://code.sololearn.com/cl7z37ih8DwJ * https://jdoodle.com/ia/uor * javascript * https://code.sololearn.com/cVHU56uf8Q3N `2022-11-14 新增` * lua * https://www.jdoodle.com/ia/zt0 --- ##### [2022-09-05] detect web spider(poor) ⠿ 分析 user agent,判斷是否為機器人。<br/> robot user agent參考 ( https://developers.whatismybrowser.com/useragents/explore/software_type_specific/crawler/1 )。<br/> 作答要求調整題目中 isWebSpider() 方法。 * c# * https://code.sololearn.com/cleg0ly59IKV `2022-11-11 新增` * https://www.jdoodle.com/ia/Dp4 `2023-02-06 新增` * golang * https://code.sololearn.com/cfKx7y1I6226 * https://jdoodle.com/ia/uKy * javascript * https://code.sololearn.com/c50wjcQux7vM `2022-11-14 新增` * lua * https://www.jdoodle.com/ia/zt1 --- ##### [2022-09-13] resolve file signatures(poor) ⠿ 解析檔案簽章,判斷檔案格式。<br/> 參考 ( https://en.wikipedia.org/wiki/List_of_file_signatures )。<br/> 作答要求調整題目中 resolveFileSignature() 方法。 * c# * https://code.sololearn.com/c9Z7L4DT3C1e `2022-11-11 新增` * https://www.jdoodle.com/ia/Dp5 `2023-02-06 新增` * golang * https://code.sololearn.com/ckFb1Hmk6Hg3 * https://jdoodle.com/ia/v8S * javascript * https://code.sololearn.com/cEBg35LRltb6 `2022-11-14 新增` * lua * https://www.jdoodle.com/ia/zt3 --- ##### [2022-09-19] sort the sequence(fair) ⠿ 實作比較器 (comparer)。作答要求調整題目中 sortSequence() 方法。 * c# * https://code.sololearn.com/cw6nag5k7FXO `2022-11-14 新增` * https://www.jdoodle.com/ia/Dp6 `2023-02-06 新增` * golang * https://code.sololearn.com/cGYiX4g3PSBM * https://www.jdoodle.com/ia/vuc * javascript * https://code.sololearn.com/cJUDD5YZGf3Q `2022-11-16 新增` * lua * https://www.jdoodle.com/ia/zt4 --- ##### [2022-10-11] fix the sort function(bad) ⠿ 實作 clone()。 * c# * https://code.sololearn.com/c2GQYgLl3nl2 `2022-11-14 新增` * https://www.jdoodle.com/ia/Dp7 `2023-02-06 新增` * golang * https://code.sololearn.com/cPkziLDQqGwb * https://www.jdoodle.com/ia/x8l * javascript * https://code.sololearn.com/c5IvM1bWxu9H `2022-11-16 新增` * lua * https://www.jdoodle.com/ia/zt6 --- ##### [2022-10-17] check object equal(poor) ⠿ 調整 isEqual()。 * c# * https://code.sololearn.com/ctLsUfiMDnec `2022-11-14 新增` * https://www.jdoodle.com/ia/Dp8 `2023-02-06 新增` * golang * https://code.sololearn.com/cvl9od513lP6 * https://www.jdoodle.com/ia/zgB * javascript * https://code.sololearn.com/cdj0Xcq1ebtj `2022-11-16 新增` * lua * https://www.jdoodle.com/ia/zt9 `2022-11-14 新增` --- ##### [2022-10-24] endless bonus pool(scenario) ⠿ 重構 BonusPool 讓帳戶可以在每隔一段時間後領取獎金。 >**情境**: > 1. 帳戶每隔5秒,可以隨時領取金額3的獎金。 > 2. 若與前一次領取間隔不足5秒,則無法領取任何獎金。 * c# * https://www.jdoodle.com/ia/zzb `2022-11-14 新增` * golang * https://www.jdoodle.com/ia/zz8 * javascript * https://www.jdoodle.com/ia/zza `2022-11-18 新增` * lua * https://www.jdoodle.com/ia/zzc --- ##### [2022-11-03] multiple log collectors(poor) ⠿ 用 Observer pattern 重構或實作標註的項目 >**情境**: > > main() 方法模擬一個帳戶註冊、登入、登出的情境。 > 在不同的操作下會有多個 log 紀錄需求。利用 Observer > pattern 實作並組織不同行為的 log 紀錄需求。 > >**參考**: > 1. Desigin Pattern: https://refactoring.guru/design-patterns/go * c# * https://code.sololearn.com/cNDmi9CeJsX1 `2022-11-16 新增` * golang * https://code.sololearn.com/c01wJBwHJFEA * https://www.jdoodle.com/ia/zyW * javascript * https://code.sololearn.com/cx495O617bhx `2022-11-18 新增` * lua * https://www.jdoodle.com/ia/ztd --- ##### [2022-11-14] optional arguments for query(scenario) ⠿ 編寫 sql 語法,滿足動態參數作為條件查詢。 * sql * https://www.jdoodle.com/ia/A3W `2022-11-25 更新` --- ##### [2022-11-28] update setting(scenario) ⠿ 編寫 sql 語法,依 json 輸入更新或新增紀錄。 > 輸入的資料已編寫到 new_setting 物件,其內如下: > ```json > { > "max_pool_size" : 300, > "refresh_interval": 900, > "locale" : ["en", "zh", "fr"] > } > ``` > 參考: https://www.sqlite.org/json1.html * sql * https://www.jdoodle.com/ia/zdz --- ##### [2022-12-05] latest transaction by currency(scenario) ⠿ 編寫 sql 語法,區分幣口、交易類型查詢最新的交易紀錄。 > 參考: https://www.sqlite.org/windowfunctions.html * sql * https://www.jdoodle.com/ia/zdA --- ##### [2022-12-12] formatting output data(poor) ⠿ 使用 IFormatter 重構 Render() 方法 > 參考: https://zh.wikipedia.org/zh-tw/%E5%A4%9A%E6%80%81_(%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A7%91%E5%AD%A6) * c# * https://code.sololearn.com/cW45BSb45rDp * golang * https://code.sololearn.com/c3XASWLE273O * https://www.jdoodle.com/ia/Bkp * javascript * https://code.sololearn.com/cFkJxT3fvK77 * lua * 缺 --- ##### [2022-12-19] process various payments(poor) ⠿ 使用 Template Pattern 重構現有的邏輯 > **情境**: > 原始碼實作買家(Buyer 型別)使用不同的付款方式實行付帳的處理,付款流程如下: > 1. 輸入密碼或安全碼來取得驗證碼。 > 2. 付款時驗證碼與支付金額同時送出驗證。(部份付款方式需支付手續費) > 3. 完成。 > > **參考**: https://refactoring.guru/design-patterns/template-method * c# * https://code.sololearn.com/cAoPUTms83o4 * golang * https://code.sololearn.com/cp4U8pYsmZ63 * https://www.jdoodle.com/ia/Blx * javascript * https://code.sololearn.com/c3Cl1S99O6rK * lua * 缺 --- ##### [2023-01-09] reveal account type(poor) ⠿ 在查詢語句中輸出帳戶類型到結果。 >**情境**: > 目前的 account 資料表依照欄位id的值分配到三種指定的類型 `robot`, `vip`, `guest`。這三種類型的範圍如下: > | type | range | > |:-----|:----------------| > |robot | 0x0000 ~ 0x00FF | > |vip | 0x0100 ~ 0x7FFF | > |guest | 0x8000 ~ 0xFFFF | * sql * https://www.jdoodle.com/ia/D5y --- ##### [??] rescue legacy query(scenario) ⠿ 解決既有資料表擴充欄位與變更資料內容後,不會影響到既有的查詢語法。 >**情境**: > 因應需求擴充,資料表 account 須進行下面調整: > 1. 新增 "name" 欄位。若此欄位沒有指派值,則使用 "username" 欄位的值。 > 2. 重新指派所有 "level" 欄位內的等級。原先的值將使用如下的表格內新等級的值表示。 > | 原等級 | 新等級 | > |:-------|:------| > | copper | L1 | > | silver | L3 | > | golden | L5 | > | diamon | L7 | > 3. 上面所有的調整將不會影響到既有的查詢語句。確保既有的語句能正常運作,而且不用修改。 * sql * https://www.jdoodle.com/ia/AfO