[閒聊] 近況
看板mud_sanc (Sanctuary - 聖殿)作者laechan (小太保)時間12年前 (2012/03/17 19:31)推噓0(0推 0噓 9→)留言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
03/19 16:32, 3F
→
03/21 08:56, , 4F
03/21 08:56, 4F
→
03/22 14:05, , 5F
03/22 14:05, 5F
→
03/22 14:05, , 6F
03/22 14:05, 6F
→
03/22 14:06, , 7F
03/22 14:06, 7F
→
03/22 21:03, , 8F
03/22 21:03, 8F
→
03/22 21:03, , 9F
03/22 21:03, 9F
討論串 (同標題文章)
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
49
81