Proof of concept (POC), also known as proof of principle, is a realization of a certain method or idea in order to demonstrate its feasibility, or a demonstration in principle with the aim of verifying that some concept or theory has practical potential. A proof of concept is usually small and may or may not be complete.
A standard operating procedure (SOP) is a set of step-by-step instructions compiled by an organization to help workers carry out routine operations. SOPs aim to achieve efficiency, quality output and uniformity of performance, while reducing miscommunication and failure to comply with industry regulations.
The military (e.g. in the U.S. and UK) sometimes uses the term standing (rather than standard) operating procedure because a military SOP refers to a unit’s unique procedures, which are not necessarily standard to another unit. The word “standard” can imply that only one (standard) procedure is to be used across all units.
The term can also be used to refer facetiously to refer to practices that are unconstructive, yet the norm. In the Philippines, for instance, “SOP” is the term for pervasive corruption within the government and its institutions.
基础设施 SOP 设计原则
编写 SOP 的目的是指导和约束主动变更（例如``计划中的维护事件）或被动变更（例如收到告警之后的响应方式）。只要是变更就一定有风险，SOP 的设计原则不是完全避免风险，而是通过谨慎的设计，让风险可预见、可控制。
清晰、明确，减少操作者的主观能动空间，这是 SOP 应该尽可能去靠近的方向。如果在 SOP 的指导下，操作者还需要大量现场的“随机应变”，那么就没有起到让风险“可预见”的作用。
验证和回退方案对于 SOP 的设计非常重要。不验证，不变更；不可回退，不可变更。 即使是再不变更就要发生危险的情况下，SOP 的设计者也不应该允许例外，因为解决一个风险的过程中还可能引入更多的风险。没有验证和回退方案，SOP 就不满足风险“可控制”的要求。
有些变更的确是一次性、不可逆的，例如删除文件、销毁机器。这时候 SOP 的设计者就要加强灰度手段，尽可能让风险“可预见”，在不可挽回之前暴露回来。一个例子是销毁机器之前先停止机器上全部服务，静默观察三天；再关机，静默观察一周到一个月。这样一旦触发风险需要回退，启动服务比开机快，开机比恢复数据快，满足风险逐级控制、越是可能造成大损失的动作越投入更多的灰度成本的原则。
API vs ABI
Application Programming Interfaceis a compile time interface which can is used by developer to use non-project functionality like library, OS, core calls in source code
- In computer software, an application binary interface (ABI) is an interface between two binary program modules. Often, one of these modules is a library or operating system facility, and the other is a program that is being run by a user.
Definition of API :
An API defines the interfaces by which one piece of software communicates with another at the source level.
Definition of ABI :
Whereas an API defines a source interface, an ABI defines the low-level binary interface between two or more pieces of software on a particular architecture. It defines how an application interacts with itself, how an application interacts with the kernel, and how an application interacts with libraries.
Reviewer Parlance: LGTM/SGTM/PTAL
There are several terms code reviews may use that you should become familiar with.
LGTM— looks good to me
SGTM— sounds good to me
PTAL— please take a look
s/foo/bar/— please replace
bar; this is sed syntax
s/foo/bar/g— please replace
barthroughout your entire change
Resource Acquisition Is Initialization or RAII, is a C++ programming technique which binds the life cycle of a resource that must be acquired before use (allocated heap memory, thread of execution, open socket, open file, locked mutex, disk space, database connection—anything that exists in limited supply) to the lifetime of an object.
RAII guarantees that the resource is available to any function that may access the object (resource availability is a class invariant, eliminating redundant runtime tests). It also guarantees that all resources are released when the lifetime of their controlling object ends, in reverse order of acquisition. Likewise, if resource acquisition fails (the constructor exits with an exception), all resources acquired by every fully-constructed member and base subobject are released in reverse order of initialization. This leverages the core language features (object lifetime, scope exit, order of initialization and stack unwinding) to eliminate resource leaks and guarantee exception safety. Another name for this technique is Scope-Bound Resource Management (SBRM), after the basic use case where the lifetime of an RAII object ends due to scope exit.
RAII can be summarized as follows:
- encapsulate each resource into a class, where
- always use the resource via an instance of a RAII-class that either
The technique was developed for exception-safe resource management in C++ during 1984–89, primarily by Bjarne Stroustrup and Andrew Koenig, and the term itself was coined by Stroustrup. RAII is generally pronounced as an initialism, sometimes pronounced as “R, A, double I”.
SLA vs. SLO vs. SLI: What’s the difference?
- SLA: Service Level Agreements
- An SLA (service level agreement) is an agreement between provider and client about measurable metrics like uptime, responsiveness, and responsibilities.
- SLO: Service Level Objectives
- An SLO (service level objective) is an agreement within an SLA about a specific metric like uptime or response time.
- SLI: Service Level Indicator
- An SLI (service level indicator) measures compliance with an SLO (service level objective).