Madogiwa Blog

主に技術系の学習メモに使っていきます。

eslint/stylelintの実行結果をcacheして実行時間を削減するメモ

eslint、stylelintにもcache用のオプションがあって差分のあったファイルだけ実行して時間を削減できることを知らなかったのでやり方とかをmemo eslintでcacheを利用する CIでeslintのcacheを利用する stylelintでcacheを利用する CIでstylelintのcacheを利…

`@vue/tsconfig`を使ってVue.jsを使用するプロジェクトのTypeScriptの設定をいい感じに行うMEMO📝

TypeScriptを設定周り毎回新しいプロジェクトを作成するときに迷うので以下のようなコミュニティが提供しているような設定を使いたいなぁという気持ちになるのですが、 github.com Vue.jsのものは無さそうで(Nuxt用のはある)、いい感じのものが無いかなと思…

Vue.js: Transitionでコンポーネントにanimationを設定するMEMO

最近、Vue.jsのTransitionを使う機会があったので使い方とかをMEMO Transitionとは サンプルコード Transitionのイベントを取得する おわりに 参考 Transitionとは Vue.jsのコンポーネントで簡単にアニメーションを設定できる仕組み。 vuejs.org transition…

webpack v5で追加されたpersistent cachingでbuild結果をcacheして高速化するメモ

webpackのbuildのキャッシュ、checksumを保存して一致してたら実行しないといった仕組みを用意しないといけないのかなと思っていたのですが、webpack v5からはpersistent cachingの機能が追加されていて簡単にキャッシュして高速化できたのでメモ ↓公式ドキ…

esbuild-loaderを使ってwebpackの一部loaderをesbuildに差し替えて高速化するメモ📝

webpackの移行先として、下記の図の通り速度を重視しesbuildが検討されることも多いかと思いますが、 esbuild - An extremely fast JavaScript bundler webpackを使いつつ一部のbuildをesbuildに置き換えるようなことができるesbuild-loaderというライブラリ…

`eslint-plugin-vue`を使って指定行以上のVue SFC(.vue)をエラーにして肥大化を防ぐメモ

追記(2023/09/24) Vue SFC(.vue)を使ってコンポーネントに分割し疎結合にすることでコードの見通しを良くし負債化を抑制できますが、適切なタイミングで分割できずコンポーネントが大きくなりすぎると見通しが悪くなり負債になってしまうので行数とかでエラ…

特定ディレクトリ以下の全ファイルのchecksum(MD5)を取得する方法MEMO

バージョンアップによるbuild結果の差分を見るときなど特定のディレクトリ内の全ファイルを md5でchecksumを取得して差分が出てるファイルを特定できると便利なのでやり方をメモ mac ubuntu 参考 mac ls -Fd $(find $FIND_PATH)で特定ディレクトリ以下のファ…

モジュラモノリスの概要とRuby on Railsにおける実装パターンについてのMEMO

Railsを活用したWebサービスが大規模になってきた場合に、最近モジュラモノリスが採用されるのを良く耳にする気がしますが、現状その概要やRailsにおいてどのように実装されているのか、あまり分かっていなかったのでメモ モジュラモノリスとは? モジュラー…

GitHub Actionの`on: pull_request`と`on: pull_request_target`の違いMEMO

最近GitHub Actionを触っていて、タイトル通りon: pull_requestとon: pull_requestの実行コンテキスト等の違いによって、 大分ハマったので、それぞれの違いとかを調べてみたのでMEMOしておきます。 https://github.com/features/actions on: pull_requestと…

Ruby: Bundlerを使って1つのRubyのファイルだけでgemをinstallして利用する方法

bundler/inlineを使うとGemのバグ報告やlogger系のGemを使った調査などでGemfileを使わずに1つのRubyファイルだけで完結できると便利だったのでMEMO bundler.io 例えば調査のために以下のpretty print系のGemを使いたいとします。 github.com 普通だと以下の…

Vue.js: `vue-tsc`でSFC内のtemplateも含めてTypeScriptの型チェックを行うMEMO

vue-tscなるものを使うとSFC内のtemplate部分も含めて型チェックを行えて便利っぽいようなので使い方とかをメモ www.npmjs.com vue-tscとは? vue-tscとはVeturの後継であるVolar内で管理されているライブラリです。 github.com vue-tsc Type-check and dts …

TypeScript: ESLintで`_`を変数に含めた時に`no-unused-vars`のルールを無効化する方法MEMO

Vue.jsのsetupのprops等、引数を使わないけど型定義だけ設定しときたい場合等、no-unused-varsを無効化したいケースがあります。 github.com 毎回eslint-disable-lineを使うのも手間なので、他の静的解析のツールの慣習に従って_始まりの場合は許容したかっ…

フロントエンドのテストフレームワークをJestからVitestに移行するメモ

テストフレームワークをJestからVitestに移行するのを試してみたので手順とか躓いたところとかをメモ Vitestとは? JestからVitestに移行する Vitestのインストール Vitestの構成ファイルを作成する テストコードの修正 テストを実行する おわりに Vitestと…

viteを軽く触ってみたのでメモ

Viteを軽く触ってみて分かった使い方とかメモ ja.vitejs.dev 色々試してるリポジトリ github.com Viteのinstall/設定ファイルの作成 ドキュメント通りにnpm create vite@latestで自分の作りたい環境からテンプレートを作って、そこからカスタマイズしてくの…

lockファイル内のライブラリがどのライブラリによってinstallされているか調べる方法MEMO

間接的に依存しているライブラリに脆弱性がある場合等、自身のpackgae.jsonのどのpackageを更新すれば解消できるか等を調べたい場合、lockファイルを頑張って確認するのは大変です。 package manager(yarn, npm)の機能を使うと割と簡単に調べられたのでメモ …

Ruby on Rails: `strict_loading!`をしたPolymorphicなModelからassociationを辿ると`ArgumentError`が発生する

タイトル通り、かなりハマったので事象をメモしておく。 事象 タイトル通りですが、strict_loading!をしてeager_loadingを強制しているPolymorphic関連を持つモデルから、 関連を辿ると本来であればActiveRecord::StrictLoadingViolationErrorが発生すると思…

exporse-loaderを使ってwebpackでimportしたライブラリをGlobal Objectに展開する。

jQueryなど一定Global Objectに展開したいライブラリをwebpackで扱う場合に単純に以下のように書いてしまうと、Global Objectに展開されずReferenceErrorが発生してしまいます。 import "jquery"; // Uncaught ReferenceError: $ is not defined $(document)…

GitHub上のPRがクローズされるまでの時間を計測するMEMO

開発チームの健全性とかを定量的に計測する指標としてFour Keysがあると思うのですが、この辺の変更のリードタイムを表す数値として厳密では無いですが、PRが作成されてからクローズされるまでの時間を簡単に計測できないかなと思い調べてみたら結構すぐ取れ…

package.jsonで複数バージョンの同じライブラリを管理する方法MEMO

既存のコンポーネントはVue2を使いつつ、新規のコンポーネントはVu3を使いたいみたいなケースがあると思うんですが、そういう時にaliasを使用するといい感じに実現できそうだったのでメモ やり方 各種パッケージマネージャーのalias機能を使用します。 alias…

Ruby on Rails: AikotobaというEmail/Passwordによるシンプルな認証ライブラリを作成しました

認証周りの勉強がてらAikotobaというEmail/Passwordによるシンプルな認証ライブラリを作成しましたので使い方とかをメモしておきます。 rubygems.org Aikotobaとは? Rails engineを使ったEmail/Passwordによるシンプルな認証ライブラリを作成できるライブラ…

Ruby on Rails: Rollbarに連携する時に属性値等々をマスキングするMEMO

エラー通知サービスにRollbarを使っているのですが、ActiveRecord::RecordInvalid等の例外が発生したりするとActiveRecordのインスタンスの属性等が表示されてしまいものによっては連携したくない情報がRollbarに連携されてしまう可能性があります。 Rollar…

Terraform Provider Herokuをv4系からv5系にアップグレードするMEMO🗒

Terraform v1系に対応したTerraform Provider Heroku v5がリリースされていたので個人のサービスをアップグレードしてみたので、その辺りの手順とかをメモ github.com Terraform v1系、Terraform Provider Heroku v5系にアップグレード Terraform Provider H…

Ruby on Rails: Active Record Encryptionを使って属性値を暗号化するメモ

Ruby on Rails 7から導入されたActive Record Encryptionを使ってみたところ大分良さそうだったので使い方とかをメモしてきます Active Record Encryptionとは? Active Record Encryptionを使ってみる Active Record Encryptionの初期設定 Active Record En…

Ruby on Rails: Request specでresponse bodyのBOM付きCSVを検証する。

BOM付きのCSVダウンロード系の機能の検証をRequest specでresponse bodyのBOM付きCSVを検証する時に若干ハマったのでやり方をメモ BOM付きのCSVを検証する時の注意点 当たり前といえば当たり前ですが、encoding: 'bom|utf-8'を指定しないとパース時にエラー(…

Ruby on Rails: 開発環境をVS CodeのRemote Containersで立ち上げるMEMO

既存もDockerで開発環境を作っていたのですが、VS CodeのRemote Containersを使うとディレクトリを開いた時にサジェストしてくれたり、拡張とかもデフォルトでインストールしてくれたりと何かと便利だったのでメモ VS CodeのRemote Containersとは? The Vis…

GitHub ActionをRubyとRailsのバージョンのマトリクスで実行するメモ

Gemとかを作るときにRailsのバージョンとサポートしているRubyのバージョンのメトリクスでGitHub ActionでCIを回すときのメモ まず現時点(2022/01/22)のStableのRailsバージョンである7系をインストールするGemfileを用意します。 source "https://rubygems.…

Ruby: よりセキュアなArgon2でパスワードをハッシュ化するメモ

パスワードのハッシュ化といえば、RailsのActiveModel::SecurePasswordでもBcryptが使われているので今まで自分で作るときもBcryptを使っていたのですが、Bcryptには以下のような仕様があり、多少気になりArgon2を使ってみたので使い方とかをメモ bcryptは、…

M1 MacBook Pro を買ってある程度Dockerまわりとかセットアップしたのでメモ

M1 MacBook Pro 14インチ買ったのでセットアップしたこととかメモ www.apple.com 開発用のツールまわり ターミナル デフォルトのzshでテーマはpreztoを使って、powerlevel10kにした。 github.com github.com prezto使ったことなかったけど、結構すっと設定で…

2021年振り返り

今年も一年が終わるということで今年も振り返ってみる。 今年の振り返り アウトプット BLOG BLOGは、今年1年で51記事書いていて、1週間に1記事ぐらい書いてるので、そこそこ書いてた✍ (月間PV数は4300弱くらい) なぜか以下の記事が、ホットエントリーに取り…

Ruby on Rails: 個人のサービスをRails7にアップグレードしたのでやったこととかメモ📝

2021/12/15 Rails 7がリリースされました rubyonrails.org さっそく個人のサービスをRails 6.1.4.4 -> Rails 7にアップグレードしたのでやったこととかメモ Rails 7の主要な対応 Rails 7へのアップグレード手順 Rails以外のgemのバージョンアップ Railsのバ…