作者laechan (小太保)
看板mud_sanc
标题[闲聊] 近况
时间Sat Mar 17 19:31:41 2012
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
1F:→ laechan :第二支程式刚刚也证明了有用,而且理论上可进行超细微 03/19 16:29
2F:→ laechan :比对,不过..改天吧.总之,现在还有支程式可以写,有空 03/19 16:31
3F:→ laechan :再来写写看,然後再来研究 quest 如何写答题 03/19 16:32
4F:→ laechan :本周五下班前新目标:两支程式的更完善化(被指名了XD) 03/21 08:56
5F:→ laechan :离星期五还有一天,今天刚好有时间,又写了一支新程式 03/22 14:05
6F:→ laechan :目前正在 try, 如果失败就要用迂回做法, 今天内搞定 03/22 14:05
7F:→ laechan :明天再做资料完善化,这样第一阶段的工作就完全结束 03/22 14:06
8F:→ laechan :程式写好了可是在公司没测完..只好回家测(正在run) 03/22 21:03
9F:→ laechan :时间有限,这礼拜只好专心写公司的程式 03/22 21:03