The median JavaScript project on GitHub has 755 transitive dependencies
这一数据点极具洞察力,指明了现代软件架构的根本性脆弱点:真正的防线不再是你的业务代码,而是你从未审查过的传递依赖网络。开发者往往只关注直接引入的包,却忽略了依赖树深处的暗箱,这正是供应链攻击能够“顺藤摸瓜”造成大面积杀伤的底层逻辑。
The median JavaScript project on GitHub has 755 transitive dependencies
这一数据点极具洞察力,指明了现代软件架构的根本性脆弱点:真正的防线不再是你的业务代码,而是你从未审查过的传递依赖网络。开发者往往只关注直接引入的包,却忽略了依赖树深处的暗箱,这正是供应链攻击能够“顺藤摸瓜”造成大面积杀伤的底层逻辑。
It's also common to want to compute the transitive closure of these relations, for instance, in listing all the issues that are, transitively, duped to the current one to hunt for information about how to reproduce them.
The parent/child relation is obviously a transitive, but "duplicate of" may be transitive too, but other relations like "related to" may not be transitive.
some of its properties needs to be specified, like whether the relation is transitive, so filtering can include or exclude issues related to related issues. For example when I want to see issues blocked by given issue, a filter needs to calculate transitive closure (recursively expand the relation on related issues until all reachable issues are found). On the other side, issue may be related to a second issue, but not to the third issue to which the second issue is related to.
R is transitive iff ∀∀\forall x ∀∀\forall y ∀∀\forall z [xRy ∧ yRz → xRz].
For any x, y, and z in a set, if x is related to y and y is related to z, then z must also be related to z for the relation to be transitive.
Example:
We have the set [1 2 3].
For a relation to be transitive, if we have (1 2) and (2 3), we must have (1 3). Likewise, any reflexive pair is transitive.
Additionally, if we do not have xRy and yRz (even if x, y, or z are the same element), the relation is vacuously transitive.
Image Credit: Detail from "The School of Athens" by Raffaello Sanzio da Urbino (c. 1509–1511).
Euclid's common notions appear to be grounds for many of Marx's arguments in Ch. 1, but also throughout the book.
Near the beginning of Ch. 1 of the Elements Euclid lists them [PDF]:
Regarding the fifth, also see Aristotle, Metaphysics 8.6 [=1045a]; Topics 6.13 (=150a15-16);
On the concept of the "whole-before-the-parts" (along with the "whole of the parts" and the "whole in the part"), also see Proclus, El. Theol., prop. 67.
You have another function g that takes a B and returns a C. You can compose them by passing the result of f to g. You have just defined a new function that takes an A and returns a C.
That clears that. Arrow A->B and arrow B->C are not necessarily the same arrow (function).
Okay, so what are we doing here? Category is a set (?) of objects with arbitrary functions between them. The only property that this needs to satisfy is one of transitivity.