[閒聊] 近況

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間12年前 (2012/03/17 19:31), 編輯推噓0(009)
留言9則, 1人參與, 最新討論串152/249 (看更多)
3/1 到新單位報到後,我主要做底下幾件事.. 1."稍微"瞭解一下新設備的元件架構 2."稍微"知道一下那個機房有哪些東西 3."稍微"分擔一些那邊同事所做的工作 4."稍微"瞭解能怎麼運用廠商提供的 xml API 摸索了幾天之後,到這個禮拜才開始寫真正可用的程式, 這是因為另外兩位同事也很會寫程式,所以初期我主攻「 他們還沒寫的功能」,而且完全以土法煉鋼的方式、愚公 移山的精神,加上 coding 聖殿的歷練,把程式寫出來。 第一支程式是 compare。先前有提過,要建立一筆資料, 必須進好幾個 page 去做非常多細項、子細項的設定,但 是建好資料後,是可以透過廠商提供的 xml api 去撈出來 的,每一筆 response 回來的資料,包含了固定資料以及 變動資料,同事A有寫出撈用戶資料的網頁,但是她只撈 特定的幾筆,而且針對變動資料的部份,她的做法是.. foreach(每一種可能 in 所有可能出現的東西) // 必須預先知道有哪幾種可能 if(該種可能 有在 該筆資料中存在) write 出來; 所以我的第一支程式就是資料比對,我不只是撈資料而已 ,我還可以進行多筆資料間的細項比對,其顯示就是類似 compare 那樣,逐筆比對,而且假設資料如下.. 資料a 資料b 資料c 細項設定群1 有 有 細項設定群2 有 有 有 細項設定群3 細項設定群4 有 有 細項設定群5 有 有 細項設定群6 有 . . 我不會去預設「總共有幾筆細項設定群」,我只去看這三 筆資料「總共有哪幾項設定群」,像他們有 12456,沒有 3 ,那我就不會去比對它們「細項設定群3」的資料結果. 不然假設細項多達一百筆,但是三筆資料實際上總共只有 七八個,那其它細項的比對就沒意義了。 然後,不只將資料顯示出來,而且加上了資料的特定組合 跟翻譯,使呈現出來的結果具有「容易閱讀性」。 (就類似我在 sanc 寫的 compare 指令) 而資料比對的最重要目的之一,就是「除錯」,因為資料 的設定過程很複雜,假設某筆資料出問題,單純把資料撈 出來呈現,有時不一定能發現問題,但是把一筆正常資料 跟一筆不正常資料「同時進行比對」,它們的不同之處馬 上一目瞭然,例如資料a細項m的 Assign 跟 Activated 都是Yes,但資料b細項m的 Assign 是 Yes、Activated 卻是No,一比就知道了,不同之處我設定用紅色顯示.. ┌─────┬───┬───┐ │欄位   │資料a│資料b│ ├─────┴───┴───┤      │    細項設定群m    │      ├─────┬───┬───┤      │是否指派 │Yes │Yes  │      ├─────┼───┼───┤      │是否啟動 │Yes │No │ ├─────┼───┼───┤ . . 這支程式在禮拜四時被證實「有用」。 第二支程式則是大量資料的「特定細項比對」。 同事B寫了一支大量資料的「特定細項匯入」,例如說資 料表格如下... 資料0001 F1 F3 F5 F7 資料0002 F6 F2 F3 資料0003 F3 F1 資料0004 F7 F9 F6 F8 F5 . . 資料9999 F1 F2 Fn 代表這筆資料要建立的細項資料,資料0001要建立第 1 3 5 7 種細項,資料0003要建立 1 3 種細項這樣,而 且其匯入用的資料表並沒有經過特定的排序。 同事B將程式寫好後進行了實測,確定程式可執行,可是 執行完後,上頭便問了他一個問題.. 問:「你要怎麼驗證匯入的結果是否正確?」 答:「這個 laechan 兄正在想辦法。」 我覺得這其實蠻可怕的,有時只是稍微答應人家,馬上 「責任就變成我扛」,如果沒寫出來不就慘了? 這支程式我在禮拜五下午起寫,在當天晚上八點寫完大 部份的比對項目,並初步進行了約 500 筆資料的比對, 確定程式是可 work 的,我才下班。 我預定下星期一上班時將功能補完並實測。 在寫這支程式前其實我已經先寫了另一支類似的程式, 有了經驗,所以當天我才會跟同事說「大概寫的出來」 ,還好有寫出來,不然會很麻煩。 這是一個很重要的職場經驗─別輕易許諾。 我的程式寫法如下... contents = explode(read_file("資料.txt"),"\n"); foreach(tmp in contents) { // 取出 "資料xxxx" 這個欄位 data_name = tmp[0..7]; // 取出 "F1 F2 F3 ..." 這個欄位 func_tmp = tmp[9..strlen(tmp)-1]; // 取出 " F1 F2 F3 ..." 這個欄位, 多一個空格 data_fun = tmp[8..strlen(tmp)-1]; // 用空格分隔取出 funcs = explode(func_tmp," "); // 這樣就可以逐項進行比對 real_fun=""; foreach(fun in funcs) { switch(fun) { case "F1": 如果實際撈資料比對後發現有F1 real_fun = real_fun +" "+fun; break; case "F2": . . break; . . } } // 最後進行 data_func 跟 real_func 兩個字串的比對 if(data_func == real_func) write(data_name + data_func + " 比對ok!\n"); } 用聖殿的語法(或java, c#, etc....)很簡單,用VBScript 就很複雜,不過我還是硬寫出來,星期一就會進行驗證。 最近差不多就是在寫這些東西。 等工作穩定後,有空我就會把我在公司寫的東西,反饋到 聖殿。(例如玩家資料全比對) 我估大概四月中旬之後才有心力去忙我真正想做的事情。 Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.26.188.94

03/19 16:29, , 1F
第二支程式剛剛也證明了有用,而且理論上可進行超細微
03/19 16:29, 1F

03/19 16:31, , 2F
比對,不過..改天吧.總之,現在還有支程式可以寫,有空
03/19 16:31, 2F

03/19 16:32, , 3F
再來寫寫看,然後再來研究 quest 如何寫答題
03/19 16:32, 3F

03/21 08:56, , 4F
本週五下班前新目標:兩支程式的更完善化(被指名了XD)
03/21 08:56, 4F

03/22 14:05, , 5F
離星期五還有一天,今天剛好有時間,又寫了一支新程式
03/22 14:05, 5F

03/22 14:05, , 6F
目前正在 try, 如果失敗就要用迂迴做法, 今天內搞定
03/22 14:05, 6F

03/22 14:06, , 7F
明天再做資料完善化,這樣第一階段的工作就完全結束
03/22 14:06, 7F

03/22 21:03, , 8F
程式寫好了可是在公司沒測完..只好回家測(正在run)
03/22 21:03, 8F

03/22 21:03, , 9F
時間有限,這禮拜只好專心寫公司的程式
03/22 21:03, 9F
文章代碼(AID): #1FP7OWJ5 (mud_sanc)
討論串 (同標題文章)
完整討論串 (本文為第 152 之 249 篇):
1
1
17年前, 06/27
17年前, 07/13
1
1
17年前, 08/06
1
1
17年前, 09/08
4
5
17年前, 10/15
17年前, 10/19
17年前, 01/08
1
4
1
1
11
15
17年前, 01/21
文章代碼(AID): #1FP7OWJ5 (mud_sanc)