Home avatar

Lixp 的 Blog

Rime输入法安装

使用雾凇拼音方案(Rime-ICE), Rime-ICE 是社区维护的 Rime 配置, 项目地址为 https://github.com/iDvel/rime-ice , 集成了很多常用功能, 支持双拼和全拼, 由于会经常更新, 所以用户自己对配置文件直接修改会在更新时被覆盖掉, 所以推荐用 Rime 中对配置文件 Patch 的机制来嵌入自己的配置内容, Rime 官方文档的配置规则为以下内容:

Git 基本配置

Windows 可以在 https://git-scm.com/ 下载安装, Linux 一般发行版都自带 Git .

使用 ssh-keygen 命令可以生成 ssh-key , 在 Windows 和 Linux 一般都是自带的, 终端运行后可以交互式生成, 没有特殊需求直接按三次回车即可.

ArchLinux 安装配置

这里选择 EndeavourOS , 它是一个 Arch Linux 的发行版, 安装更加方便, 初始安装自带桌面, 方便进行后续操作, 同时接近上游, 不像 Manjaro 一样对 Arch Linux 有很多改动.

安装时注意选择 Btrfs + Grub . 推荐离线安装直接可以安装 KDE 版本.

Rust交叉编译和静态链接

如果依赖不包含C/C++依赖, Rust的交叉编译非常简单, 例如需要编译aarch64平台的静态链接产物, 只需要:

  1. rustup target add aarch64-unknown-linux-musl, 添加相关工具链 (*-musl为静态链接版本, 而aarch64-unknown-linux-gnu一般为编译动态链接的目标, 具体差异可以查询"gcc vs musl")
  2. cargo build --release --target aarch64-unknown-linux-musl, 编译产物
  3. 传输到目标平台后, 使用ldd <filename>即可检查是否有动态依赖, 输出statically linked即为成功静态链接

例如Rust中比较流行的HTTP客户端reqwest, 可以指定替换底层的OpenSSLrustls-tls, 规避C代码依赖, 在Cargo.toml中添加如下features:

不使用中间变量交换值

如有 a,b 两个变量, 思路是先某种运算使 a 储存 a,b 的全部信息, 然后用 b 与 a 进行逆运算使 b 得到 a 的初始值, 然后用 a 与 b 逆运算赋值给 a.

用群论的说法是: 或运算的集合 G_or({1,0},or) , 与运算的集合G_and({1,0},and)

Quine程序

Quine 程序是指自生成程序, 它不接受输入, 运行它会输出程序源代码.

思路(以C语言为例):

  1. 先在代码任意位置定义一个字符串 s 与一个 printf 函数.
  2. 先构建字符串 s 的内容, 使其为程序源代码, 把其中 s 赋值部分留一个 s=%c%s%c, 在吧其中的转义字符修改为%c 并记录.
  3. 修改两个 printf 的部分, 把%s 位置输入为字符串 s, 其它位置输入应该的转义字符 ASCII 码.

如果使用 python, 其中有 repr()可以输出字符串对象本身, 或者使用%r 来调用, 如: