yamori

有給休暇計算を主目的とした簡易勤怠管理システム

Commits at 39a109647360a96d375a3f88163eb6d0747f3afe

  1. 39a10964 Web API 定義 ...をする基礎的な。そもそもの方向性に疑問が出てきたため中途半端な 状態となっている。 Shota FUJI authored at Shota FUJI comitted at
  2. 6873c07b Zig を使ったネイティブ ACL WASM 方式だと実行ごとにリニアメモリを確保してデータのコピーを行う という無駄な CPU 命令とメモリ消費が発生してしまう。そのため考え方 を変えて ACL を WASM に輸出するようにしてみた。 利用できる言語が一つに限定されるうえコンパイルなどが発生するが、 WASM でも現実的に利用できる言語は Zig と Rust くらいでどのみち コンパイルは必要になるためここはあまり変わらない。 フロントエンドにどうやってネイティブの構造体を渡して UI に落とし 込むかが懸念だったが、 Zig のコンパイルタイム実行で構造体定義を JSON で出力できたためこれに関しては問題ない。 構造体を丸ごと受け取ってアクセス可否を返す形だとフロントエンド側 でいい感じに UI 制御やエラーメッセージ表示ができないため、これも コンパイルタイム実行で struct -> union 変換を行い単一のフィールド (パッチ) とすることで個別にアクセス可否を読み取れるようになった。 HTTP サーバの処理とか書くとキリがないのでこのパッチは、 * ユーザ定義ネイティブ構造体・関数を使った ACL * ライブラリとしてサーバを提供 * フロントエンドに渡すカスタム属性の定義データ出力 に留めている。 カスタマイズ部分が WASM の場合は AGPL でも問題なかったが、 Zig のライブラリ (静的ライブラリ) だと諸にコピーレフトの影響を受けて しまうため MPL-2.0 に変更した。どうせだから配布に関係ないものも 全部 MPL-2.0 で統一した。 Shota FUJI authored at Shota FUJI comitted at
  3. bbad2c2e web: WASM アクセス制御プロトタイプ とりあえず呼び出しと fbs を渡すところが動くか確認したかった。 WASM メモリの #0 に直接書いているが、 TinyGo のようにランタイム をバリバリ入れるコンパイラや、 "allowzero" をつけていない Zig の ポインタのように #0 を神聖視している環境で UB を引きかねないので 実際のサーバでは malloc/free を WASM 側から公開する必要がある。 ただ、プロトタイプとしてはこれで充分。 Shota FUJI authored at Shota FUJI comitted at
  4. 8e3cfee5 auth: WASM + FlatBuffers を使ったアクセス制御 Shota FUJI authored at Shota FUJI comitted at
  5. 1377dc7c docs: リンクの書式ミスを修正 Asciidoc の書式は色々びみょい。 Markdown がいかにシンプルで堅牢かを痛感する。 Shota FUJI authored at Shota FUJI comitted at
  6. 8e052c37 docs: アーキテクチャを更新 現状の最新版の構想に更新した。 D2 のフォーマッタを設定していないが、これは意図的なもの。 "d2 fmt" 、というより D2 の CLI 自体が非常に低品質のため * stdin から読み込んで変更がない場合に出力がない * ファイルパスを指定して stdout に出力するフラグがない * そもそもサブコマンドごとのオプションがない * etc. と現状使い物にならない。 Shota FUJI authored at Shota FUJI comitted at
  7. e3e8304d flake-utils を使わない flake-utils はアンチパターンと言われている。実際 diff を見てわかる通り 素で書いても大したことはやっておらず、また何をやっているのかもこちらの ほうが圧倒的にわかりやすい。 Shota FUJI authored at Shota FUJI comitted at
  8. 54938d63 docs: 利用されなくなったコマンドを削除 Shota FUJI authored at Shota FUJI comitted at
  9. 88cfb5e8 nix fmt で使う Zig を v0.16 にアップグレード 単純にこっちのバージョンを上げ忘れただけ。 Shota FUJI authored at Shota FUJI comitted at
  10. bdd3206f zig2zon とその生成ファイルを削除 消し忘れ。 "zig.fetchDeps" を使う前に導入していたが、コミットする 際に残っているのに気づかずそのままになっていた。 Shota FUJI authored at Shota FUJI comitted at
  11. 8fdb081d 開発用ツールを devShell から apps に移動 devShell だと使うかどうかに関わらずダウンロードされるため。 apps なら使うときに必要な分だけダウンロードするため、時間や スペースの節約になる。 Shota FUJI authored at Shota FUJI comitted at
  12. cac9249d docs: Pandoc を使った構成にリニューアル mkdocs はウスノロポンコツ言語もとい Python を使い更にライブラリ もりもりのためセットアップからビルドから非常に遅い。また API デザイン、設定、サードパーティのテーマまで全体的に質が低い。 対して Pandoc は Haskell という敷居が天井に接しているような言語 で書かれており、クオリティが段違いで高い。というかカスタマイズ性 が天と地ほど違う。 内容に関しては単純に更新が放置されていたのを削除して、現状の プランをざっくりと記載した。方向性などが言語化されていないと 実装しているうちに少しずつずれていって一貫性がなくなったりする ので、ここを SSoT として開発を進める。 Shota FUJI authored at Shota FUJI comitted at
  13. 89935f03 demo: Zig を v0.16 アップグレード 変更が必要になると思って "nix flake update nixpkgs" のコミットとは 別にしていたが、マイグレーションなしでアップグレードできてしまった。 Shota FUJI authored at Shota FUJI comitted at
  14. 95486790 nixpkgs を最新版に更新 "nix flake update nixpkgs" Shota FUJI authored at Shota FUJI comitted at
  15. 1253a86e デプロイ & インフラを外部リポジトリに移行 デプロイやインフラはシークレットまみれであり、また利用者ごとに プラットフォームや設定などが変わってくるためソフトウェア本体に 同梱するメリットが非常に薄い。 このプロジェクトは Nix Flakes を採用しているため、デプロイ側の Flake でこのプロジェクトをインポートしからデプロイディレクトリ に "yamori.packages.${system}.demo" のようにすれば、ビルド設定 をデプロイ側で指定することなく "ビルドされたファイル" を直感的 に利用することができる。 Shota FUJI authored at Shota FUJI comitted at
  16. aa88eaf6 demo: 労働者一覧画面 現在の状況まで一覧で出すと大変なことになりそうなので、そこら辺は 詳細に遷移させて見させたほうがよさそう? GitHub のアクティビティ みたいな感じでコンパクトな表現があれば一覧に出してもいいかも。 あとは 5日未消化時みたいな要アクションのインジケータとか。 Shota FUJI authored at Shota FUJI comitted at
  17. dc7bd731 demo: 労働者の予定一覧画面 Shota FUJI authored at Shota FUJI comitted at
  18. 7b72854d demo: モデルデータを改善 ページを追加しようとしたが触りづらかったのでちゃんとモデリングした。 Shota FUJI authored at Shota FUJI comitted at
  19. 61e7d19d demo: 使用者側のホーム画面 とりあえず Lunacy で作成した WF の分だけ実装。 Shota FUJI authored at Shota FUJI comitted at
  20. 06101bb6 demo: 労働者ホームのモック とりあえず取っ掛かりというか、最初にイメージとして見せるものが 欲しかったので最小限。 Shota FUJI authored at Shota FUJI comitted at
  21. 88f322e4 demo: デプロイスクリプト Shota FUJI authored at Shota FUJI comitted at
  22. 66392c77 demo: 最小 Elm アプリケーション基礎 ワークフローの検証用のためスタイルとかは不要。 CSS ベタ書きや最悪 elm-css みたいなので十分。 Shota FUJI authored at Shota FUJI comitted at
  23. 2971f0a8 nix flake update ちょっと古くなってたので。 Shota FUJI authored at Shota FUJI comitted at
  24. 705a4d06 docs: デプロイ工程を刷新 AWS CLI は "s3 sync" 時に同じファイルサイズのものはタイムスタンプを参照 して新しい方で上書きする、というなんとも稚拙な仕様となっている。そのため Nix でビルドした、タイムスタンプが UNIX 0 秒となっている静的サイトは常に ファイルサイズのみでの更新判定となる。 rclone は S3 で使われているハッシュを使って変更判断を行う。AWS CLI でも 同じことができるはずだが怠慢により放置されている。 Go で書かれていると変更もソースコードの閲覧も面倒だったので bash に変え た。そこまで複雑なことをしているわけではないのでまあ大丈夫だろう。 Shota FUJI authored at Shota FUJI comitted at
  25. cfb8b677 docs: デプロイに .env を使わない リポジトリ内にファイルを置くことになるため。コンテナにプロジェクトの ディレクトリをバインドマウントする場合は開発用コンテナにシークレット を渡すことになる。環境変数は名前の通り "環境の" 変数であるため、それ ぞれの環境ごとに設定するべき。 Shota FUJI authored at Shota FUJI comitted at
  26. 0f5a9b41 "nix fmt" でフォーマットできるように設定 dprint-plugin-exec が FHS でしか動かないため。 Shota FUJI authored at Shota FUJI comitted at
  27. ad08276e docs: クイックスタートのガワを作成 とりあえずイメージを掴みたかったので。 Shota FUJI authored at Shota FUJI comitted at
  28. f25d3d77 docs: 文章校正 少し不自然というか、含みがあるような言い回しだったので。 Shota FUJI authored at Shota FUJI comitted at
  29. 04bbead1 docs: 仕様のファイル形式ページを削除 トップレベルのファイル形式以上の内容を含んでいないため。 というか圧倒的にそれ未満。 Shota FUJI authored at Shota FUJI comitted at
  30. 1f015888 docs: 概要ページを作成 仕様だと掴みづらすぎる。開発者でもなければ理解は難しい。 Shota FUJI authored at Shota FUJI comitted at