阅读周记(第一期)


Save Some Bandwidth By Turning Off TCP Timestamps

想法: tcp timestamp选项会引入额外的12字节的包头开销,因此关闭tcp timestamp选项理论上能够少量的提高有效数据的吞吐率
评测: 使用qperf benchmark评测关闭tcp timestamp后,能提升大约1%的吞吐率
      对于10GE NIC,关闭timestamp能将下载速度从9370Mbits/s提升至9460Mbits/s
点评: 关闭timestamp正常情况下确实能提高有效数据的吞吐率,但在某些情况下可能就不那么理想了。
      比如timestamp提出的初衷之一就是解决RTT测量不准,导致spurious retransmission的情况。如果关闭timestamp导致了更多的RTO,则肯定是划不来的。  
      正如文中建议的:
        Results show that it is reasonable to turn off timestamps on 10GE interfaces, 
        but keep in mind that it should be performed only in low latency networks.
      使用10GE网卡是为了1%的提升效果更明显,强调低延迟是因为RTO有系统最小值200ms限制。低延迟下更难出现spurious retransmission

相关阅读:
Is it fine to turn off tcp window scaling and tcp timestamps on server?
What benefit is conferred by TCP timestamp?


优秀管理者需要具备的气质

摘要:
    1. 管理者需要懂得妥协,越是困难的事,管理者就越要协调更多资源参与。管理者需要做的就是在冲突域妥协中找到平衡点。  
    2. 基层是操作层,中层是执行层,高层是创造层和领导层,这是分工标准。  
    3. 提到工作本身,管理者的条件(处理问题的能力)一定要胜过下属,才是第一保障。  
点评:
    了解公司管理者需要具备的素质与气质,在职业生涯初期能有助于辨别出(不)好的领导。
    正所谓良禽择木而栖,跟对一个优秀的领导对于职业发展是有重大帮助的。  

The Best DevOps Tools on OSX

点评:一个推荐工具的blog,质量确实不错。另外为什么要关注DevOps的工具呢?毕竟想通往Full-Stack啊^_^  

How to make your code self-documenting

摘要:
    1. There are three basic methods for self-documenting code:
        Nameing things: Use names to explain the purpose of variables, functions, ect.
        Extracting function: Move code into functions to clarify purpose
        Introduce a variable: Move expressions into dedicated variables to clarify them
    2. addition methods:
        Class and module interfaces: What functions your classes and modules expose effect the clarity of the code
        Code grouping: You can indicate relatinships between different pieces of code with grouping
点评:
    1. 这篇文章提出了一些增强代码self-documentating的技巧,那为什么需要代码self-documenting呢?
    尽管可以通过添加注释来解释代码,但实践中往往还是可读性更好的代码更易维护,更易理解。
    那么可读性好是什么?我的定义:一个相同领域的工程师,在不需要额外的文档、注释的情况下,
    就是很快的理解代码的逻辑和功能。
    2. 关于Extracing function之前我的理解还只是一个函数负责单一的一个逻辑。
    没有意识到,这样做还能帮助减少duplicate code,甚至能优化设计(improve your architecture)。
    更没意识到的是,下例所展示出的一个作用:

        优化前: 
            var width = (value - 0.5) *16;
        优化后: 
            var width = emToPixel(value);

            function emToPixels(ems) {
                return (ems - 0.5) * 16;
            }

    优化前,如果不额外添加注释,时间长了很难记着这一行到底在干嘛。
    优化后,尽管没有注释,不管过了多久,一看代码就会知道完成的作用就是单位转换。
    同理文章还有一个将复杂的判断逻辑放到一个函数中去的例子,出发点是相同的。这里就不罗列了。  
    在这一点上,还需要在以后的实践中多多注意和体会。  

相关阅读:
强烈推荐之前读过的:The Art of Readable Code


KCon 2015 黑客安全大会

看看视频,了解了解KCon.