命叔瞎扯
Posts
  • Flutter 和 GNU gettext 的 App 国际化翻译最佳实践

    为什么不用 Flutter 官方的国际化解决方案

    我最近学着用 Flutter 搓一个国际范儿的手机 App,需要能够根据用户的手机区域和语言设置自动显示不同语言的界面。

    由于这是我第一个 Flutter 项目,我自然先找了下谷歌官方给出的解决方案,这不看不要紧,一看笑死个人。

  • 用 QEMU 执行 Rust 交叉编译的单元测试

    TL;DR

    本文介绍一种在 Linux 下通过 qemu-user-static 工具对交叉编译的 Rust 程序执行单元测试的方法。

    为何有此需求?

    最近用 Rust 做嵌入式 Linux 开发的时候,交叉编译完程序以后,为了保证质量,还需要对目标平台执行单元测试。问题来了,“qemu-user-static”只能转译执行单个可执行文件,而一般 Rust 程序的单元测试是通过 cargo test 来执行的。解决这个问题的思路我们需要把单元测试编译成一个或者多个可执行文件让 QEMU 来执行,通过观察普通 cargo test 的执行过程,我发现它本身就是把单元测试编译成一个可执行程序来执行的,只是该可执行文件的名称会在后面加上源码的哈希值,所以在持续集成等环境下,我们需要确定输出的可执行文件名。

  • 使用 GCC 语句表达式模仿异常,简化错误处理

    嵌入式开发里,90% 情况下用的是 GCC,这里介绍一个 GCC 的 C 语言语法扩展,叫“语句表达式”(Statement Expression)。语句表达式,允许在表达式中包含多个语句,并返回最后一个表达式语句的值,比如:

  • Hello World

    整个测试下