Storybookのストーリーファイルをtsxで記述しているが、TypeScriptをstrictモードにしているため、Decoratorを定義する際、引数に型を付けないとエラーになる。 // パラメーター 'Story' の型は暗黙的に 'any' になります。 const decorator = Story => ( <div style={{ maxWidth: '400px' }}> <Story /> </div>…
TypeScriptでの開発時、exportしているモジュールに対してはTSDocを書くようコーディング規約を定めたが、ヒアドキュメントを書く習慣のないメンバーが多く、書き漏れが頻発した。 都度コードレビューで指摘するのも面倒なので、ESLintで何とかならないかと…
TypeScriptのinterfaceやtypeで、関数やオブジェクトの型を定義する際、どんな書き方をすればいいかちょこちょこ迷うのでメモ。 関数 オブジェクト Union型をキーとしたオブジェクト 振り返り 関数 numberを引数に取り、stringを返す関数の場合、以下のよう…
Jestでパラメーター化テストする時の it.each のような、バッククォートで囲った中で ${value} を使う書き方について調べてみたところ、タグ付きテンプレートというらしい。 また、それを使ってJavaの String#format のような関数を作れたのでメモ。 タグ付…
ヘッダーやメニューで、ダブルクリックするとテキストが選択状態になるのを抑制したい。 簡単にできる方法はないかと調べると、CSSだけで選択を無効化できたのでメモ。 テキストの選択を無効にするCSS Tailwind CSSのクラス 振り返り テキストの選択を無効に…
小ネタ。 yarn create next-app したプロジェクトの設定ファイルなどを、 yarn create next-app --example with-jest したプロジェクトにコピーし、 yarn build したら Module not found: Can't resolve 'styles/globals.css' が発生。 TypeScriptプロジェク…
Next.js と AWS Amplify を使ったプロジェクトで、TypeScriptのファイルに対してJestのテストを書いたら、 SyntaxError: Unexpected token 'export' エラーが発生。 このエラー自体はよくあるやつだが、設定を大きくいじらず解決する方法を調べるのに結構時…
仕事で使っているPCが新しくなったので、WSL(Windows Subsystem for Linux)2を使えるようにしようと思ったら、以前に比べて格段に楽になっていたのでメモ。 WSLインストールコマンド コマンドを打つとwsl.exeの使用法が表示される場合 インストールするLinux…
以前の記事で、Violationsツールを使い、Javaプロジェクトの静的解析結果をGitLabのマージリクエストに連携した。 最近、Next.jsによる開発を行っており、エディタとして使用しているVSCode上ではリアルタイムでESLintによる解析をしているため、エラーがpus…
JavaやKotlinを長く書いてきて、importの並び順、ソートはフォーマッターにお任せだった。 Next.jsをTypeScriptで書いているプロジェクトでも、Javaと同様、importの順序を統一したいと思い、設定したのでメモ。 環境 ESLintプラグインの導入 .eslintrc の記…
前回の続き。 LambdaからSESによるメール送信を行う方法として、前回はIAMを作成し、アクセスキーを使ったが、今回はLambdaにロールを付与してみる。 環境 実装 Lambdaの作成 Lambdaへのロール付与 Lambdaの実装 GraphQL定義およびコードからの呼び出し 振り…
Amplifyで作成したアプリケーションでメール送信をしようと思い、Lambda経由でSESを呼んでみた。 メール送信用のIAMを作成してアクセスキーを使うパターンと、LambdaにSESでのメール送信権限を付与するパターン、両方試したが、まずはアクセスキーを用いるパ…
Google Apps Scriptで宣言した関数が、「実行する関数を選択」に一覧表示される。 privateとして扱いたい関数については非表示にしたいと思い、調べたのでメモ。 試行錯誤 非表示になるパターン 関数名の末尾にアンダースコア クラスにメソッドとして定義 II…
新規プロジェクトにて、バックエンドにAWS Amplifyを使うことにした。 Gitリポジトリと連携して、開発ブランチに変更があるたびにAWS側でビルドするように設定したが、いくつかの原因でビルドに失敗したのでメモ。 環境 問題1 問題1の対応 問題2 問題2の対応…
久しぶりにSikuliXを触ったが、IDEで画像をキャプチャしたときに、ファイル名を指定できたのでメモ。 環境 SikuliX IDE Version 2.0.5。 画像ファイル名について SikuliX IDEで画像キャプチャすると、通常は数値のみ(おそらくエポックミリ秒)をファイル名と…
タイトル通りだが、チーム内の誰もできるということを知らなかったのでメモ。 replaceAllでの後方参照 Groovyの場合 Kotlinの場合 振り返り replaceAllでの後方参照 タイトル通り、第1引数の検索文字列に ( ~ ) で囲んだグループを記述し、第2引数の置換文…
JPAの実装としてHibenateを使っている。 既存のテーブルに対して、新規にエンティティクラスを追加し、 @OneToOne で関連を追加したが、関連元のフィールドがnullを設定可能になっている。 その状態で関連元のエンティティを参照すると、該当のカラムがnull…
Java9で追加された List#of などのファクトリーメソッドや、Java10で追加された Collectors#toUnmodifiableList などのイミュータブルなコレクション生成をよく使っているが、nullを含んだ値を指定したら NullPointerException が発生した。 標準APIやGuava…
Spring DATAのJPA Repositoryを使っているが、戻り値をJPA Entity全体ではなく、任意のフィールドだけにしたいという話があった。 単純にSQLのように SELECT フィールド, フィールド... すると Object の配列になるが、それは避けて任意のDTOやインターフェ…
前回、DevToysについて書いた直後に、v1.0.2.0で日本語化されたりしたので、変更点をメモ。 devtoys.app 環境 変更点 多言語対応 新ツール GZip を利用した文字列の圧縮と展開 SQLフォーマッター、XMLフォーマッター チェックサム 画像フォーマット変換 Choc…
窓の杜の記事を見て気になり、DevToysのツール群をひととおり試してみた。 また、Windows以外での代替アプリも調べたのでメモ。 devtoys.app 2022/2/7追記: v1.0.2.0で日本語化されたが、この記事の記述時点では未翻訳のため、ツール名などは英語で記載して…
DBでは数値として持った値を、左0埋めして画面に表示していたが、そこを文字列として部分一致検索させることになった。 検索はSpringのSpecificationで、動的なJPQLをCriteriaBuilderで組み立てており、RDBMSの関数を使えないか調べたのでメモ。 やりたいこ…
SpringのSpecificationなどで、動的なJPQLをCriteriaBuilderで、Predicateを組み立てるときに使う conjunction と disjunction 、毎回どっちがどっちか忘れるのでメモ。 conjunction disjunction 振り返り conjunction AND条件の起点。SQLに解釈されると 1 =…
@OneToMany でリレーションを設定したJPA Entityに対し、Spring Data JPAのSpecificationで動的クエリを発行している。 N+1問題の回避のため、 JOIN FETCH して findAll(Specification) で検索していたが、ページングすることとなり、 findAll(Specification…
特定の値しか入らないテーブルのカラムに対応する列挙型を用意し、フィールドとして値を保持している。 ORMとしてはJPA Entityを使用しているが、かなり古いソースなのでEnumeratedやConvertによる列挙型のフィールドマッピングなどは行われず、単純な int …
Java8から java.time が標準APIに入ったが、それ以前に書かれたソースだったり、ライブラリとの兼ね合いで、まだまだ java.util.Date を扱う機会がある。 両方扱うときに困るのが変換方法で、だいたい検索すると LocalDateTime.ofInstant(date.toInstant(), …
Kotlinのコードレビューをしていて、java.io.File から InputStream に変換するとき、Javaっぽく Files#newInputStream を使っているコードがあった。 拡張関数で直接 File から変換できると指摘したら、知られていなかったのでメモ。 拡張関数の定義された…
Javaでの開発時、Intellij IDEAにSonarLintプラグインを入れてSonarQubeによる解析を行っているが、Intellijのキャッシュクリアをして再起動した後などは、解析完了までCPUを全部持っていかれ、プチフリーズ状態になってしまう。 ファイル単位で手動実行でき…
前回、アップロードされた画像の加工をJavaでやったところ、追加で「透過していない画像であれば、白背景を透過できないか」との要望が。 ちょっと試してみたところ、何とかなったのでメモ。 環境 実装 透過済みかの判定 特定の色を透過 実行サンプル 振り返…
アップロードされた画像を特定の高さに揃える、みたいな作業をすることになった。 サムネイル画像など、表示用であればCloudinaryやimgixのような、リサイズ機能付きCDNサービスを使えばいいが、サーバー側で別途画像処理する必要があったので使えず。 Java…