Monthly Archives: 二月 2017

You are browsing the site archives by month.

上篇博客写到这周 commit 了 9 个 issue,结果压力山大。

由于什么叫解决了一个 issue 定义比较模糊,所以我也没有好好统计,只是知道自己差的不少……

既周六晚上在公司搞到快十一点吧,发现还有段距离,只好周日一整天投入进来了。

然而上午醒来就不早了,收拾卫生打扫家务,一上午就过去了…… 话说小田蒸汽拖把真的很好用,还便宜才不到两百块钱,相比之下戴森的吸尘器性价比低到令人发指,而且所谓的真空集尘效果并没有想象的那么好,除了体积上比集尘袋有优势以外,真的不如集尘袋来的干净好用。

下午拿了一双鞋出去洗,回的时候顺便买了点第二天早餐回来,路上看到小孩们在广场玩,可惜相机 70mm 焦距能拍但中规中矩没有特点,所以也就懒得传上来了。

DSC00235

回来继续奋斗,到晚上不小心又花了好多时间解了个假 Bug,心塞!原因是因为我直接写了段代码测试,可不小心测试代码写错了,后面的结论跟着就都错了。

算上零和博弈以及冤假错案总算“解决”够了9个,睡觉。 Read More →

今天晚上和朋友吃完饭默默的回了公司打算继续写 Bug。

结果居然还有三个同事在,于是欢乐的玩起了四人桌上足球……

有一个 Bug 据 report 说是偶现的,于是写了测试循环 1000 遍让它跑着就回家了,看到公司群里在讨论吃的就聊了起来……

WechatIMG127

——之所以有剃头这个梗,是因为之前一个同事说 Bug 修不完就像老板一样剃光头!我勒个擦,刚和别人调侃完这个发型,怎么就应验到我身上了!

前面的的博客提过,我这周任务压力山大啊! Read More →

昨天郁闷 Bug 没有搞定,仿佛是立了一个 Flag,今天还真就搞定了,开心。

是这样的,周一开会,老板甩给我三十多个 Bug,要求下个月中旬前完成,不能耽误几个重要的时间点。确实下个月比较重要,所以我也就当鞭策了。老板问这周搞定几个,随口说 9 个。

会后找了两个看着就觉得不像 Bug 的假 Bug 分析了下,本周进度完成 20%。

周二挑 Bug 处理,看到一个发现百分百必现,复现步骤还非常简单,心中窃喜,觉得总算又找到一个简单的,搞起来。

谁知一晃三天过去了…

万万没想到这个调用流程这么复杂,Java 代码这么反人类…

我当然知道没有搞不定的 Bug,但是我的时间有限啊,偏偏这个 Bug 还蛮有意思,而且总觉得离胜利不远了,想先把它搞定。

中间还插了给客户讲解东西用了些时间,重配一个更顺手的环境花了些时间,总之周四晚上我已经很绝望了。

今天早上拿出纸笔决定对照日志和代码再过一遍,画了一整页 A4 纸总算大概理解了代码运行过程,对于这种动态和灵活到飞起的代码,单步跟踪作用实在有限,不如静态分析加思考有效。

了解了几个框架的基础设施后总算明白了问题所在,是一个很坑的死锁问题,还好请教了几次老板和同事,不然估计还得拖不知多久…

找到问题就比较好修了,写代码也就十几分钟的事顺手还修复了原有代码的另一个隐患。

回家路上反思,找到问题后感觉其实并不难,花这么多时间一方面是框架文档真的很少,基本上代码是硬看下来的,里边还是有大量动态生成、匿名、异步、注入,实在难为我这个 Java 苦手;另一方面,没有趁业余时间把框架代码好好看看,计划写的文档躺在草稿将近一个月了,遇到问题只好现看,自然掉坑里一时出不来。

我比较喜欢智力 Puzzle,这大概就是为什么解 Bug 之于我还是蛮有意思的吧。 Read More →

最近碰到一个换工作以来最棘手的问题,两三天过去没有明显进展,感觉试用期要挂。

单纯 code 多日后,终于又接了些其他活,和一个客户交流,可惜谈下来发现 slide 白写了– slide 上写的东西对方好像都知道,好在老板也过来一起聊了下方案,听到老板说这也简单那也简单,可这部分实现的工作都是我的活啊~

周六还要工作,顺便见人,想想这周还有 N 个 Bug 要解,果然感觉试用期要挂。 Read More →

最近就这个问题调查了蛮久,其实原因比较显然,在看到 strace 的结果就已经明白了大半,但是本着求(xia)知(zhe)探(teng)索的想法,仔细验证了代码逻辑和时间(新技能 get!给 C++、Perl 混合代码调试性能),攒出了这篇文章。

ZStack 是一个开源的 IaaS 软件,架构和性能都很优秀,可以在 103 秒内并发创建 1000 台虚拟机,可惜这个数据是在扁平网络下测试得到的,一旦用上云路由网络,单个虚拟机的启动时间会延长到七秒左右。

我们现看下看下实际的占用时间,我在 vyatta 的代码里添加了日志(Repo 是 https://github.com/vyos/vyatta-cfg),综合 zstack、zstack-vyos、vyos 的日志可以看到大概是这样的(注意 zstack 的日志时间精度只提供到秒,没有毫秒):

2017-02-13 13:22:08 start executing flow[NetworkServiceManagerImpl.java:apply-network-service-DHCP]

2017-02-13 13:22:08 DEBUG [RECV] /setsnat
2017-02-13 13:22:09 DEBUG [HTTP POST][ASYNC REPLY TO /setsnat]

2017-02-13 13:22:09 DEBUG [RECV] /adddhcp

# 以下为 vyos 日志
2017-02-13 13:22:09:458 Entered cli_bin::doCommit
2017-02-13 13:22:10:216 Entered commit::doCommit
2017-02-13 13:22:10:901 notify other users in config mode
2017-02-13 13:22:12:260 cs.commitConfig complete
2017-02-13 13:22:12:557 Exit commit::doCommit
2017-02-13 13:22:12:557 Normal exit cli_bin::doCommit
# 退出 vyos 日志

2017-02-13 13:22:12 DEBUG [HTTP POST][ASYNC REPLY TO /adddhcp]

2017-02-13 13:22:12 DEBUG [RESPONSE] to /setdns
2017-02-13 13:22:12 DEBUG [HTTP POST][ASYNC REPLY TO /setdns]

2017-02-13 13:22:12 DEBUG [SimpleFlowChain] (zs-thread-81) [FlowChain: apply-network-service-to-vm-13d1359b8bd34a05a91f61dedb112e96] successfully executed flow[NetworkServiceManagerImpl.java:apply-network-service-DHCP]

可以把时间与调用关系结合起来做成一张图:

VyOS_Commit
Read More →