近期很火的一篇网文,名为《Apple有哪些黑科技》,其中的一篇看后挺有感触,摘抄下来:


某款产品的主板非常迷你,上面的元器件密度很高,因此用于主板测试的接口只有绿豆大小。proto期间需要设计一款测试软线(FPC)接到这个接口上测试板子状况,这是技术背景。

因为接口太小了,软线上的pin脚密密麻麻,设计公差只有+/-0.01毫米,也就是说尺寸大一点、小一点或者位置偏了0.01毫米,这根线就没法用,甚至会把板子直接短路烧掉。测试线一般都是由代工厂自己准备的。代工厂找了好多家FPC厂商来做这根测试线,每个厂家都反馈说做不了,精度没法控制这么高。

代工厂没办法,找Apple汇报这个情况,问能不能把测试端口做大一点,Apple说你别管了,这根线我们自己做吧。十多天后,两根合格的测试线送到了代工厂,在场的电子工程师们由衷赞叹苹果的黑科技。

至于是怎么做出来的,这事我清楚:苹果找了一家FPC厂商,一口气生产了2000根线,然后挨个在板子上试,最后挑出来好用的一共就这两根。当时的计划是如果挑不出,就再做2000根。

所谓真正的高科技都来自于简单粗暴。


有人会觉得这算哪门子的高科技啊,Apple也只会简单粗暴啊,但是我却看到了Apple解决问题的广阔思路。技术人员经常会陷入技术的死胡同,技术问题非要用技术去解决,往往撞得头破血流,或者花了太大的代价,是得不偿失的。俗话说黑猫白猫,抓住耗子就是好猫,同样的,管它黑科技还是简单粗暴,用最小代价解决问题就是好方法。很多厂商都说做不了的线,Apple十多天就给出了合格的样品,就算简单粗暴,电子工程师们也要由衷赞叹。


前一阵子遇到一个不同语言utf8编解码差异的问题,也是用了简单粗暴的方法解决的。简单描述一下就是移植一个算法,涉及一段随机的byte[]转为utf8 String再转回byte[],C#和Java的处理结果在某些情况下并不一致,要找出这个转换规律。一开始尝试向底层追核心代码,看看分别是如何实现的,但稍微深入一点就发现困难重重。后来直接穷举,把所有可能的值在两种语言里比对一遍,把差异找出来,再总结规律。其实也不算太多,几亿次比对而已,最终产生的规则只有21条,顺利解决了问题。