# 研究目的
- アプリケーションの信頼性を向上させたい
- その為には土台となる OS 自体の信頼性が重要である
- OSそのものも巨大なプログラムである
- 並列並行処理などに起因するバグや、そもそもOSを構成する処理が巨大
- テストコードを用いた方法で信頼性を確保することが困難
- テストではなく定理証明とモデル検査でOSの信頼性を高めたい
# 今週の進捗
- growiのdockerのvolumeと戦っていた
- Gearsのスクリプトの修正と機能追加
- 作っているプロジェクトは今日ビルドが通ったが、セグフォした…
# docker-composeのvolume
-
dockerではデータ永続化の為などでホストのディレクトリなどをマウントできる
- volumeと呼ばれる
-
docker-composeの場合は次のように書く
|
|
- 最後の
volumes
にパスを書いていない- その場合は
/var/lib/docker/volumes
のコンテナに対応したディレクトリに保存される - この方法だと
docker prune
とかした時に間違って消える可能性があるらしい - ホームディレクトリとかにおいて自前で管理したい
- その場合は
# データベース関連のバックアップ
-
mongodbのバックアップ
docker exec -d growi_mongo_1 mongodump --gzip --archive=mongodb.gz
docker cp growi_mongo_1:/mongodb.gz .
-
mysqlのバックアップ
docker exec -it growi_mariadb_1 mysqldump -u hackmd -panatofuz_hackmd_pass hackmd > dump.archive
-
mongodbのバックアップからのリストア -`` docker cp mongodb.gz growi_mongo_1:/`
docker exec -it growi_mongo_1 mongorestore --gzip --drop --archive=mongodb.gz
-
mysqlのリストア
- 微妙に
docker exec
ではできなかったので、bashを立ち上げて内部でやる docker exec -it growi_mariadb_1 bash
- 微妙に
# Gears関連
- interfaceの定義時などで呼び出した自前のヘッダファイルをcontextに含める機能を実装
|
|
- こういうふうに書いておくと
|
|
-
こんな感じで読み込まれる
-
enum
がgenerate_stubで上手く回収できなかったので修正したenum TokenKind tk = Gearef(context, token)->TokenKind;
みたいになる問題
|
|
- とりあえず生成されるようになった
|
|
# やること
- GearsのTaskManager周りを理解していないことがわかった
- par goto含めて修正していく
- Gearsのコンパイラ作成
- スクリプト作ろうとしてましたが、コンパイラを目指す方針で
- Cコンパイラ?