0%

这篇译文印象中于2017年9月底10月初保研之后所写,最初发布在西电开源社区社区的wiki上面。
这是一篇来自 GNU GCC 关于预处理部分宏相关的文档的总结,原文参考底部Reference。

宏(macro)可以说是一种模式替换,它根据一系列预定义的规则替换一定的文本。有两种宏:对象式宏(Object-like macros),函数式宏(function-like macros)。前者使用的时候就像数据对象一样,后者类似函数调用。

宏的标识符可以是任何字符,甚至是C的关键字(这点比较有用,可以用它来隐藏C语言的关键字,比如const关键字在老的编译器中并不支持,可以用此特性实现编译器之间的兼容。但一些预处理的操作符并不可以被定义成宏,参见这里,同样一些C++ Name Operators也不可以。

Read more »

Overview

Credentials在Linux中用于访问控制(Access Control),基于uidgidsid,是Linux几种安全措施的一部分。同时,仅用于进程(task)中的Capabilities提供了更细化的权限控制机制。1

Note2

Read more »

引子

今年4月,在家的时候意外看到了ss-redir 透明代理,对其中的详细说明持有怀疑态度:

由于笔者才疏学浅,刚开始居然以为 TCP 透明代理和 UDP 透明代理是一样的,只要无脑 REDIRECT 到 ss-redir 监听端口就可以了。

但是,上面这种情况只针对 TCP;对于 UDP,如果你做了 DNAT,就无法再获取数据包的原目的地址和目的端口了。

Read more »

引子

2017年末,在SUSE实习的时候man ip link,看到了这种奇奇怪怪的东西:

1
2
3
TYPE := [ bridge | bond | can | dummy | hsr | ifb | ipoib | macvlan | macvtap | vcan | veth | vlan | vxlan |
ip6tnl | ipip | sit | gre | gretap | ip6gre | ip6gretap | vti | nlmon | ipvlan | lowpan | geneve | vrf
| macsec ]
Read more »

Module std::option

可选的值。

Option类型代表了一种可选的值:每个Option要么是包含了值的Some类型,或者什么都不是的NoneOption类型在Rust代码中很常见,有着大量的使用:

Read more »

Module std::ffi

与FFI绑定的有关utilities。

这个模块提供了一些utilities,用于帮助操作非Rust接口的数据,比如不同的编程语言或者操作系统底层接口。它主要用于FFI(Foreign Function Interface)bindings或代码中需要与其他类C语言的字符串进行数据交换的地方。

Read more »

rust version

Rust维护三个【发行频道(release channels)】:稳定版(stable),测试版(beta),开发版(nightly)。稳定版和测试版每六周更新一次,而在那时的开发版会变成新的测试版,测试版变为新的稳定版。标记为不稳定(unstable)或者隐藏在特性门控(feature gates)后的语言和标准库特性只能再开发版上使用,新特性最初会被标记为不稳定,一旦呗核心团队和相关的自团队批准的话就变成【通过门控的(ungated)】,这种方法允许实验性变更,并同时为稳定频道提供强有力的向后兼容保证。

并不能在测试或稳定频道上使用不稳定的功能。不稳定的特性意味着不能提供这种特性保证,不希望开发者依赖它。

Read more »