工程师相处指南

2014年4月15日 没有评论

本文转载自:http://blog.xdite.net/

原文摘自我的 FB。很多人问要怎样「正确」跟工程师相处,以下是我的回答:

  1. 不要把工程师当「麦当劳」,随便点餐。

工程师正确的用法要这样用:

今天如果你有一个问题,你就直接跟他讲你有什么问题,有没有办法设计一个方案解决。工程师强的不是你以为的写代码能力(这个另外讨论)。而是他比你强的「工程角度」解决问题的能力。

你跟他讲你有什么问题,有一定能力以上的人可以很快就帮你想想出正确的 workround。甚至还亲手帮你做好。

切忌逼他写你心目中想要的程式,他只会觉得你智障然后继续回去打 diablo。

  2. 不要没把解决手段想清楚就把问题扔给他

有的时候,那个问题不是纯工程角度 workround 可以解的。而是必须从实体角度去切入,程式去辅助自动化。你必须先想清楚,实体你打算怎麽做。

「我想上网开店赚大钱」这种 request 你丢给他。他会直接永久静音你的 FB 对话。

不要以为他是蠢。工程师在问题出现前 8 个小时前就可以看到问题,三秒钟就可以判断到底要不要做。人家聪明的很。后知后觉的是你。

  3. 不要跟他讲什么「应该很简单」

「应该很简单」只有「Senior Developer」才可以跟 「Developer」讲的。其他人没资格讲。

你应该要跟 Developer 说,这个问题有一点挑战,你不知道找谁。

你跟他讲「应该很简单」,他内心会直接跟你这个人绝交。

  4. 请他吃高级烧肉

我还没遇过工程师不喜欢吃烧肉的。吃烧肉友谊点数大概可以灌 3 倍速度。

***

以上是工程师相处指南。

我要回去打 diablo 了。

分类: 杂谈 标签:

Axis2客户端问题

2013年10月21日 没有评论

在使用RPCServiceClient方式写一个webservice客户端程序时,出现了org.apache.axis2.AxisFault: chunked stream ended unexpectedly异常。

这是因为服务器端开启了chunked方式传输,而客户端没法获知。

这时不妨设置下options参数。
options.setProperty(HTTPConstants.CHUNKED, Boolean.FALSE);

分类: 技术 标签:

4.11

2013年4月11日 没有评论

也许你并不是最好的一个,也并不是最适合我的那一个。可是当我遇见你,我一直便不想再遇见任何人了。

分类: 心情 标签:

Android DDMS给2.3版虚拟机发送经纬度出错

2013年3月20日 没有评论

如题,最近在研究Android的定位,在DDMS里给模拟器上运行的2.3版的虚拟机发送经纬度信息时,虚拟机重启。

在DDMS里观察到经纬度信息发送出去后,虚拟机的所有进程都被kill掉,直接导致了虚拟机重启,重启后一直停留在启动界面。

我在Google Code上的Android Project里找到了国外开发者反馈的问题描述。

https://code.google.com/p/android/issues/detail?id=13015

里面提到用DDMS发送给虚拟机时,操作系统接收到SIGSEGV系统信号,此信号直接导致了所有进程被kill掉。

此问题在2011年10月已被解决,后续发布的版本应该不会再存在此问题。

受影响的版本有2.3到2.3.3版。

亲身测试过2.2版的不存在此问题。

目前的解决方法。。。就是避开这几个版本。。。

分类: 技术 标签: , ,

Pro*C调用内储ORA-01458

2012年6月29日 没有评论

最近在监控一个程序的运行日志时发现有很多ORA-01458错误,该错误由Pro*C调用PL/SQL块时产生。

奇怪的是该错误有时有、有时没有,随机性很大。

该存储过程定义如下:
  DoReport(:id,:state,:errorcode,:ora_int_ret,:ora_mess);
其中id,state,errorcode为输入参数,ora_int_ret,ora_mess为输出参数。

相关的声明如下:
EXEC SQL BEGIN DECLARE SECTION;
varchar id[30];
int state;
int errorcode;
int ora_int_ret;
varchar ora_mess[120];
EXEC SQL END DECLARE SECTION;

经百度谷歌了一把,最后在Oracle官方论坛上找到了答案。

https://forums.oracle.com/forums/thread.jspa?threadID=1068115

http://docs.oracle.com/cd/B19306_01/appdev.102/b14407/pc_07pls.htm#i2336

Note:
To use VARCHAR, CHARZ, or STRING types as output host variables in PL/SQL blocks, you must initialize the length before entering the block. Set the length to the declared (maximum) length of the VARCHAR, CHARZ, or STRING.

在用到VARCHAR, CHARZ, or STRING三种类型的输出参数时,要先初始化它们的长度。
初始化的反法很简单
ora_mess.len=120;

修改过后程序就正常了。

分类: 技术 标签:

万恶的UC浏览器

2012年5月23日 2 条评论

最近公司安排做wap开发,在UC浏览器7.9安卓版上做测试。

发现了一个UC浏览器传递参数的奇怪问题,不管页面中采用了GBK,gb2312还是何种编码,Tomcat中是否设置URIEncoding,传递参数时都会出现乱码,只有在UTF-8下是正常的。

为了验证,写了两段代码。
阅读全文…

分类: 技术 标签: ,

浅谈程序运行超时控制

2012年3月20日 1 条评论

通用的程序运行超时控制只能使用多线程的方式,由一个线程作为守护线程进行计时(线程A),而另一个线程则负责处理业务逻辑(线程B),当线程A发现线程B超时时,终止线程B的运行。
守护线程内包含一个计时器,在超时的情况下抛出个timeoutException的异常,捕获该异常后终止业务线程。

关于建立守护线程:
从JDK 1.5开始新增了java.net.concurrent包,其中的Future和ExecutorService可作为守护线程类进行计时,使用该类可以很方便的进行多线程的运行控制。
至于JDK1.4版,也可以用多线程的方式来实现,不过守护线程需要自己写。

阅读全文…

分类: 技术 标签: ,

祝各位新年快乐

2012年1月1日 2 条评论

祝各位在新的一年里都顺顺利利,早点买到船票。

分类: 生活 标签: