2021-01-01から1年間の記事一覧

Dataloaderの元になったHaskellのHaxlというライブラリがおもしろい

GraphQL APIを作るとき、素朴に実装するとN+1問題が発生しがちなので、これを解消するためにDataloaderという仕組みも実装するのが一般的です。少し前にHaskell Dayというイベントの発表資料をレビューする機会があり*1、Dataloader的な設計はGraphQL以前か…

Stylelintで無効化したいルールにはnullを指定する

タイトルでほぼ全部説明しましたが、Stylelintを使う時、既存のconfigで指定されているルールを完全にオフにするには null を使います。例えば、stylelint-config-sass-guidelinesとstylelint-config-property-sort-order-smacssを組み合わせて使いたい時、…

BuildKitがオンの時 docker build 中の標準出力をそのままホストに出力したい場合は --progress=plain オプションを使う

タイトルで全て説明していますが、BuildKitがオンの環境で、docker build 中の標準出力の内容をビルドする側で全部確認したい場合は --progress=plain オプションが使えます。 $ docker build --progress=plain . docker build するとき、BuildKitが有効化さ…

golang-migrateを使っている環境でRailsのdb/structure.sql相当のファイルを作成する方法

仕事で携わっているウェブアプリケーションでは、DBのマイグレーションにgolang-migrateを使っています。DBをマイグレーションするだけのツールとしてはこれで十分なのですが、現在のスキーマダンプ、Railsでいうところのdb/structure.sqlをダンプする機能が…

git diffにまだ一度もコミットされていないファイルを含めるにはgit add --intent-to-add

まだ一度もコミットしていないファイルを git diff で表示したい場合は、git add の --intent-to-add オプションを使うと、コミットせずとも git diff に表示できます。 $ echo 'Hello' > example.txt $ git add --intent-to-add . $ git diff diff --git a/…

Goで手軽にコード生成したいときはgomplateを使うと楽

仕事でGo言語をよく書くのですが、Goは言語機能が多くはないためボイラープレートやコピペが増えがちです。特に他の言語でいうところのgenericsがあれば解決するのに、と思うことがよくあるのですが、現在のGoにはそのような機能は存在しない*1ため、go gene…

Node.jsアプリケーションのDockerイメージのサイズを削減する方法について調べた

Next.jsアプリケーションのDockerイメージのサイズが大きくて困っていたので調べていたところ、Next.jsの公式ドキュメントにDocker Imageというセクションがあり、おすすめ設定が記載されているのを見つけました。以前はここまで詳細な記述はなかったのです…

ランダムな英単語を組み合わせた文字列が欲しいときのワンライナー

Githubのリポジトリ名サジェスト機能のように、ランダムな英単語をふたつ組み合わせて出力したくなったので、シェルスクリプトでワンライナーを書きました(macOS以外では動かないかも)。 $ cat /usr/share/dict/words | sort -R | head -2 | tr '[:upper:]…

Github Actionsでyesコマンドを使いたい時は代わりにecho yするといい

こんばんは、id:maku693です。タイトルでほぼ全部説明しましたが、Github Actionsでちょっとハマりました。Github Actionsのワークフローでは工夫しないとyesコマンドを使えないので、代わりにecho yを使うと手っ取り早いです。これに気づいたのは、[y/N]ど…