偷吃了苹果
最近工作怎一个累字了得,连续上班3个礼拜,包括端午节三天也没得休息,直到昨天才换来一天休息,今天下午早早的下班了,明天白天还可以休息一个白天,之后转战夜班,晚8点到早8点,暂定计划是连续8天天天夜班,其中有几天半夜stand by。 呵呵, 这样的工作方式可以和我读研时候的状态有得一比了。 公司做事真疯狂。
一道面试题,我的第三种解决方案:
int FindNextJumper(int * Array, int * ArraySize, int *CurrentPos, int JumpInterval);
int _tmain(int argc, _TCHAR* argv[])
{
//init data
int ArraySize = 500;
int JumpInterval = 100;
int JumpBeginIndex = 50;
int * array = new int[ArraySize];
for(int i=0;i<ArraySize;++i)
array[i] = i;
//process
int CurrentArraySize = ArraySize;
int CurrentPos = JumpBeginIndex;
while(FindNextJumper(array, &CurrentArraySize, &CurrentPos, JumpInterval));
//disp all jump out sequence
for(int i = ArraySize-1; i>=0; --i)
printf("%d\t", array[i]);
delete []array;
return 0;
}
int FindNextJumper(int * Array, int *ArraySize, int *CurrentPos, int JumpInterval)
{
int nextPos = ((*CurrentPos) + JumpInterval ) % (*ArraySize);
int temp = *(Array + nextPos);
*(Array + nextPos) = *(Array + (*ArraySize) - 1);
*(Array + (*ArraySize) - 1) = temp;
*ArraySize -= 1;
*CurrentPos = nextPos;
return *ArraySize - 1;
}
事故还是不可避免的发生了,这是第二次在M测试前天晚上发生事故的事件了。L先生开玩笑的说,下次可以写个程序,
if( b_tomorrow_T_test )
{
ASSERT(0);
//accident happen tonight
}
教 训是惨痛的,给我们soft man提出了更高要求,由于EMO按下,power被当即cut down,log也不是很完整,分析了整晚的断续不完整的日志,发现事故发生可能是由于user操作不当造成的。当然了归根到底还是我们写得soft考虑 的情况不是很全面,在界面操作时没有做好足够的protection,在exec部分也没有做好足够的interlock,而hardware也是同样有 问题的,按照design应有的interlock也没有make effection。
如果当时操作晚1秒钟或许accident就不会发生,如果把comminication不发生错误或许也就么事了,或许,, 一切操作的巧合, 或许没有也许,最终的结果是我们的程序有bug。 时间紧张, 问题多多 :(
话说今天meeting讨论给我们部门2天时间作测试,实际上下午很晚些时候才把机器从别的部门移交到我们soft手上。 和蔼的Manager T陪伴着我们一起饿着肚子,debug程序到9点多才回去。
与T下午的讨论中得到几点共识,关于Wafer Transfer System设计,之前他遇到过和我相同的问题,大部分时间、场合算法work是ok的,但是偏偏有那么很小很小的情况会有那么点点小小错误,关键看你下不下的了决心去更正,甚至于去重新书写。 T曾经犹豫过,我现在也同样犹豫过,不过自从上周五debug得到了很不好的结果后,我就告诉自己如果在一开始改版的设计架构不能满足要求的时候,我要果断的把过去一个礼拜作出来的东西throw away,不要为扔掉一个花费很多时间的感到可惜,应该为得到一个最终的设计方案感到开心。T先生说一个做soft的人最怕的就是没有动力、没有勇气去推翻以前写的代码,产品越往后你去改动code的勇气就会变得越少。 所以趁现在,如果觉得能够在极短的时间内handle重新书写代码带来的risk,just do it.
我选择了后者,这就是上周六,周日,昨天周一连续3晚挑灯夜战的原因。 我想prove自己我有勇气把原先已经“成熟”的东西推翻,做出一个更好的东西来。
晚上debug的结果暂时看来可以接受,在我回来之后,machine still running,希望明天过去的时候everything still running ok。 很累了一天,这件事件得出的结论,刚一开始的时候设计一个好的实现结构是多么的重要。