Rustでmockするならmockallで決まり!・・・でよろしいでしょうか?

Rustで DI (Dependency Injection)、してますか?
今日話題にするのはドメイン層でインターフェイスを定義してインフラ層でその実装を書くやつです。
例えばドメイン層で trait UserRepository を書いて、インフラ層で struct UserRepositoryImpl するやつです。

テストを書くとき、 struct UserRepositoryImpl はDBアクセスなどしてしまうので取り回しが悪いから、mock を作って fixture を入出力したいことありますよね。
Rustでそういうことやるなら mockall がオススメだよという記事です。

そんなに不満はないのですが、もしベターなやり方があったら記事末尾のコメントやTwitterやらもらえたら嬉しいです。

前職のFOLIO時代の同僚で現CADDiの むらみんさんの記事

外部通信のような比較的大きい副作用が絡むテストに於いて テストダブルを差し込むことは可能なのですが、かなりの労力が必要になる印象を持っています。

と書いていたのを今更ながら発見して、自分はこうしてるけど皆はどうしてるんだろ?と思って筆(キーボード)を取りました。

続きを読む


Rustの2種類の 'static

2種類の 'static

Rustの 'static 、難しいですよね。

「プログラム中ずっと生き残るライフタイムでしょ?簡単簡単」

なるほど。では次の2つの 'static の違いがわかるでしょうか?

1つめ
1
let x: &'static str = "Hello, world.";
2つめ
1
2
3
/// Returns some reference to the boxed value if it is of type `T`, or
/// `None` if it isn't.
pub fn downcast_ref<T: Error + 'static>(&self) -> Option<&T> { ... }

「・・・2つめのなんだっけ?」
という人はぜひ読んでみてください🦀

この記事では、Rustの2種類の 'static

  • 'static ライフタイム
  • 'static ライフタイム 境界

を解説します。

続きを読む


ぼくのかんがえたさいきょうの CircleCI 設定 for Rust

あまり見ない気がするので書きました。特徴は、

  • lint, testなどの各ジョブが並列に動く(ジョブ実行数を多くしてないとdocker containerの立ち上げ分むしろ全体時間はロスになることもあるが…)。
  • Travis CI のマトリクスビルド に近いことを、 parameters: を使ってやっている。
    • rust-toolchain ファイル に書かれたバージョンと、 .circleci/config.yml に書かれた MSRV (Minimum Supported Rust Version) の2つでビルドしている。
  • cargo-readme を使ってrustdocとREADMEを比較し、どちらかがメンテされていない場合にエラーにする(お好みで)。
  • キャッシュ使う。

あたりです。見慣れなさそうなところはインラインコメント付けましたので参考にしてください 💁‍♀️

続きを読む


自作CPU & 自作OSをやっていく (4) - macOSでPapilio Pro LX9のFPGAにBitstreamファイルを書き込む

Papilio Pro LX9

2020年1月から、趣味エンジニアリング活動として自作CPUと自作OSをやっていく。

最終的にはFPGAに自作のCPUを書き込んでいくのだが、筆者はFPGAを使った経験がほとんどない。
CPUの回路設計はまだ手もつけていないが、不確実性を下げるために、先にFPGAを購入して普段遣いのmacOSからFPGA開発ができるように整えておく。

最終的には、macOSから papilio-prog コマンドでBitstreamファイル (.bit) を Papilio Pro LX9 評価ボードに書き込むことに成功したので、その記録を備忘として残しておく。

自作CPU & 自作OS タグで、この前後の進捗とか目指しているもの(初回記事)とかを追えるようにしている。

続きを読む


自作CPU & 自作OSをやっていく (3) - riscv/riscv-tests の挙動を追う

2020年1月から、趣味エンジニアリング活動として自作CPUと自作OSをやっていく。

今回は、自作CPUのパフォーマンスベンチマークとして利用するつもりの riscv-tests の挙動を追ってみる。
関心があるのは、命令セットやOSの機能をどこまで用意してあげればベンチマークが実行できるのかという点。とりわけ、以下の観点をチェックしていく。

  • ISA (命令セット)
    • RV64F (単精度浮動小数点演算), RV64D (倍精度浮動小数点演算) を利用しているベンチマークはあるか。あるとしたらどれか。
    • RV64V (ベクトル演算) を利用しているベンチマークはあるか。あるとしたらどれか。
    • RV64A (アトミック命令) を利用しているベンチマークはあるか。あるとしたらどれか。
  • OS機能
    • ヒープ領域は必要か(スタック領域のみで十分か)。
    • スレッドをCPUコアに割り当てるスケジューラは必要か。

自作CPU & 自作OS タグで、この前後の進捗とか目指しているもの(初回記事)とかを追えるようにしている。

続きを読む


自作CPU & 自作OSをやっていく (2) - 64ビットRISC-Vの "Hello World" をRustで作った

2020年1月から、趣味エンジニアリング活動として自作CPUと自作OSをやっていく。

今回は、64ビットRISC-V (RV64I) の “Hello World” をRustで作ったので、そのリポジトリの紹介。

自作CPU & 自作OS タグで、この前後の進捗とか目指しているもの(初回記事)とかを追えるようにしている。

続きを読む


自作CPU & 自作OSをやっていく (1) - 全体像(随時更新)

2020年1月から、趣味エンジニアリング活動として自作CPUと自作OSをやっていく。

第一回のこの記事では、目指してることとか、作りたい成果物とか、ロードマップとか、進捗とかを記録していく。インプットが増えたり手を動かしていくと色々と軌道修正があるだろうから、この記事は随時更新されていく。ChangeLogをご参考。
進捗報告は 自作CPU & 自作OS タグで追えるようにしておく。

続きを読む


『コンピュータの構成と設計 第5版』演習問題解答集 第4章

“パタヘネ本” でおなじみの『コンピュータの構成と設計 第5版』の解答集です。読者は書籍を保有していることを前提として解答・解説を記載します。
訂正案などありましたら本ブログ記事のリポジトリ へPull-Requestくだされば幸いです😊

この記事4章の内容は、プロセッサを実現するハードウェアユニット・パイプライン処理・命令レベル並列化など、CPUに関する中核です。

各章の解答集

  1. 『コンピュータの構成と設計 第5版』演習問題解答集 第1章 (執筆中)
  2. 『コンピュータの構成と設計 第5版』演習問題解答集 第2章
  3. 『コンピュータの構成と設計 第5版』演習問題解答集 第3章
  4. 『コンピュータの構成と設計 第5版』演習問題解答集 第4章 (この記事)
  5. 『コンピュータの構成と設計 第5版』演習問題解答集 第5章 (執筆中)
  6. 『コンピュータの構成と設計 第5版』演習問題解答集 第6章 (執筆中)

続きを読む


『コンピュータの構成と設計 第5版』演習問題解答集 第3章

“パタヘネ本” でおなじみの『コンピュータの構成と設計 第5版』の解答集です。読者は書籍を保有していることを前提として解答・解説を記載します。
訂正案などありましたら本ブログ記事のリポジトリ へPull-Requestくだされば幸いです😊

この記事3章の内容は、

  • 加算と減算
  • 乗算器
  • 除算器
  • 浮動小数点数
  • SIMD

です。

各章の解答集

  1. 『コンピュータの構成と設計 第5版』演習問題解答集 第1章 (執筆中)
  2. 『コンピュータの構成と設計 第5版』演習問題解答集 第2章
  3. 『コンピュータの構成と設計 第5版』演習問題解答集 第3章 (この記事)
  4. 『コンピュータの構成と設計 第5版』演習問題解答集 第4章
  5. 『コンピュータの構成と設計 第5版』演習問題解答集 第5章 (執筆中)
  6. 『コンピュータの構成と設計 第5版』演習問題解答集 第6章 (執筆中)

続きを読む


『コンピュータの構成と設計 第5版』演習問題解答集 第2章

“パタヘネ本” でおなじみの『コンピュータの構成と設計 第5版』の解答集です。読者は書籍を保有していることを前提として解答・解説を記載します。
訂正案などありましたら本ブログ記事のリポジトリ へPull-Requestくだされば幸いです😊

この記事2章では、ひたすらMIPSアセンブリと戯れます。

各章の解答集

  1. 『コンピュータの構成と設計 第5版』演習問題解答集 第1章 (執筆中)
  2. 『コンピュータの構成と設計 第5版』演習問題解答集 第2章 (この記事)
  3. 『コンピュータの構成と設計 第5版』演習問題解答集 第3章
  4. 『コンピュータの構成と設計 第5版』演習問題解答集 第4章
  5. 『コンピュータの構成と設計 第5版』演習問題解答集 第5章 (執筆中)
  6. 『コンピュータの構成と設計 第5版』演習問題解答集 第6章 (執筆中)

続きを読む