2022-08-20
同じビルドやテストを何度も実行しない方法 コンポツさん
元記事
- GitHub Actions で同じビルドやテストを何度も実行しない方法
- 紹介されている一例では 3 分のジョブをスキップして 5 秒で終了している
- CI で影響がないことが自明な場合はジョブをスキップしたい
- どうやってジョブの再現性を確かめるか
- 単純に git のツリーオブジェクトのハッシュ値では無駄なジョブが走ってしまう
- 環境やソースコードを元にハッシュ値を計算しラベルを付けて artifact として保存しておくことで同じジョブをスキップする
- artifact の保存期限は最長 90 日なので長期間保存するなら S3 などを使う
- Bazel と比べてビルドツールやハッシュ値をどう使うかが自由
- 裏を返せば自前で頑張らないといけない
- ジョブに使うファイルのリストを洗い出してハッシュ値を計算する
- sver なら簡略化できる
- 読み方はえすばー
- どのファイルがどのファイルに依存していてハッシュ値計算すればいいか sver で解決する
- ディレクトリごとに sver.toml を置いて依存関係を定義する
- 循環参照の解決や矛盾がないかのチェックが可能
超お手軽モーションパス!SVG アニメーションを簡単に作成できる「SVGator」を使ってみた! - paiza 開発日誌
元記事
- 高度な SVG アニメーションを直感的に誰でも作成できる Web サービス
- 無料のユーザー登録が必要
- スクラッチから svg を作ったり既存の svg を利用するのも可能
- ファイル、プレビュー、プロパティ、タイムラインの 4 つエリアがある
- ペンツールや図形ツールなどで svg を作成できる
- キーフレームで角度や大きさなどを変更してアニメーション
- モーションパスを使うとペンで書いた線の通りオブジェクトを移動させることができる
爆速のアイコン検索サイトを作った
元記事
- 120+ のアイコンセットと、130,000+ のアイコンをサポート
- アイコンは検索が面倒なので知名度の高いものだけを使いがち
- 無料で運用できるアーキテクチャを模索
- sql.js-httpvfs などでフロントエンドに DB を置く案は、バイナリデータのため転送量などがネックになる
- 今回のケースはクエリパターンがせいぜい 2 万なので JSON を DB として使う
- ファイルサイズは 1MB 以内で計算量も効率がいい
- 高速化のため svg を複数まとめた JSON ファイルを作る
- JSON ファイルは 1MB くらいあるので ReadableStream を使って逐次レンダリングしている
- SVG はレンダリングするとメモリをたくさん消費する
- SVG を string にして Pagination で展開しながら表示する
- Web Worker で SVG の文字列を DOMParser でパースする
- メインスレッドで SVG にレンダリングする
- Accept-Ranges で fetch の上限サイズを指定
- ただし gzip 圧縮が使えなくなるため、どの JSON ファイルで Accept-Ranges 取得するかリスト化している
個人開発したサービスのバックエンドを Python から Rust に書き換えてみた
元記事
- Cloud Run と Cloud Scheduler で動いているクローラー
- SQLite を gcsfuse で Cloud Storage に保存
- pyhon -> rust の対応ライブラリの表
- docker の image サイズが半分になった
- Scratch などの image を使えばもっと削減できそう
- ビルドの時間が伸びたので Cloud build のタイムアウトを伸ばした