重构代码就是隐藏细节

查看原文

重构代码最有效的手段就是给不断将实现细节隐藏到一个又一个方法。在用代码表达业务逻辑的时候,代码就会被这些方法叠出一层又一层来。我们期望的结果是,每一层的代码可以仅需读函数名就能理解它的大致功能。至于函数的具体实现,则是更底层的知识,不应该侵入到上层去。

read more

Zappa - 一款 AWS Lambda 部署的工具

查看原文

现代 Python 轻量级的 Web 程序部署可以选用 AWS Lambda。Zappa 是个蛮趁手的工具:配置好 aws 密钥以后便可以用一些简单的命令部署了。使用体验来说大约与十多年前用 ftp 命令快速丢 php 文件到服务器上立马生效别无二致。

read more

QUIC 协议简介

查看原文

QUIC 协议是 Google 制定的一个网络传输协议。它参考了 TCP+TLS+HTTP2 的优点,但是基于的底层协议是 UDP,旨在解决的问题是进一步降低延迟和网络拥塞。众所周知 TCP 有三次握手,开销不小;而 UDP 不用握手。QUIC 协议引入了一轮握手,客户端建立连接时发送 CHLO 包,服务器返回 REJ 包(包含了客户端的 token 和服务端的证书)。客户端的后续数据可带上服务器返回的验证信息。QUIC 的拥塞控制可插拔,它规定即使是重发的 packet 也需要带上新的序列号,这避免了服务端搞不清楚是直达的还是重发的。重发的 ACK 还有延迟信息方便计算。TCP 的特性导致了一包不达,后续就堵塞;QUIC 由于基于 UDP,丢包只影响对应的那个流,不会出现 HOL …

read more

SLA 简介2

查看原文

SLA 是一家公司设定的服务可用性的衡量标准,虽然每家公司的标准都不太一样。SLA 有时候像是在玩文字游戏,虽说有些能达到 100%,但是其实是伪的 100%。比如说维护时间算进去么?uptime 要怎么定义?机房挂了是谁的锅?不过不管怎么定,SLA 不达标时的赔偿费一定要算清楚。

read more

SSH 简介

查看原文

SSH 被广泛用于安全的远程访问。它的基本原理是 SSH 客户端向 SSH 服务端发起一个远程连接。一旦通过验证,SSH 协议会用强对称加密(AES)和哈希算法(SHA-2)来保证数据传输的安全和一致性。验证方式有很多中,最被广泛使用的是公钥验证。基本做法是客户端生成一个加密密钥对(公钥和私钥),并把公钥配置到服务端,只要有客户端能提供对应的私钥,那么就能登录服务端。大公司的 SSH Key 的管理也是一门学问。有好几个相关的 RFC 文档是和 SSH 协议相关: 4251, 4253, 4252, 4254, 4716.

read more

SLA 简介

查看原文

SLA 虽然不是公司营收的指标,但能衡量出技术部门的能力。有些小公司其实甚至给不出SLA的承诺。一些公司必须非常在意这个指标否则用户会抓狂,一些公司则是不是跳出一只蓝色鲸鱼用户也只是牢骚一下。如果一个技术团队能做到小数点后面4个9,即99.9999%的SLA,那整个网络设施,部署流程要非常谨慎和规范才行。

read more

traceroute v/s tracepath

查看原文

traceroute 和 tracepath 这两个工具都通过发包和收包来探测网络连接。最本质的不同点在于 traceroute 的数据来源是网卡的裸包,而 tracepath 则是一次普通的 socket 会话。这也决定了 traceroute 需要更大的权限 (root)来执行某些操作,能力也更大。绕过 socket 内建的安全屏障,是有一些风险的:具体来说你要访问的地方也是计算机上运行的所有网络程序接受发送数据包的地方,理论上你的数据可能外泄。

read more

Side Project 的一种观点

查看原文

不要将 side projects 看得太功利。有些人希望寄 side projects 来一波大的,但其实 side projects 带给人更多的作用是学习新知识新技术。上班时间做 side projects 可以分情况,如果 side projects 和工作同时都用到了一样的技术,那么完全可以在工作时间学习。毕竟公司也在投资你,希望你能精通公司使用到的技术好解决疑难杂症。

read more

SNAT 简介

查看原文

Source Network Address Translation (source-nat, SNAT) 一种允许私有网络里的网络流量到达外部网络的方法。也有将 SNAT 唤做 Secure NAT。具体做法是防火墙通过 SNAT 将流量 IP 包的包头 source IP 改成 SNAT 网关的 IP,同时不改变 destination IP 的地址。SNAT 涉及的组件是私有网络和路由设备。私有网络的节点产生流量;路由设备执行 SNAT。SNAT 的好处是私有网络里的众多网络设备可以对外表现为同一个 IP(对外隐藏内部网络结构),同时也节省了 IP 的使用量。

read more

观察者模式

查看原文

观察者模式是设计模式中一个比较好用的模式。在程序中将依赖树显式声明在同一处,然后在程序各个地方触发事件,事件带着数据被发送到特定事件的订阅者那里。

read more

« Page 50 / 54 »