UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

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

【Java】オフセット付きの日時

Postgresqlに日時のデータを保存する場合、全ての時間帯付きの日付と時刻は UTC で内部的に保存される そこで、データベースとアプリケーション間の日時の整合性を保つために、Javaアプリで扱う日時も UTC で固定したい Javaでオフセット(時差)付きの日時…

【VSCode】Vimのキーバインディング設定

これまでIntelliJ IDEAを使っていたのだが、VSCodeも使えるようになろうと思いまずはVimのキーバインディング設定から始めた 取り急ぎ必要な設定は以下 vimでの記述 " インサートモードでの「jj」を「Ecs」とする inoremap jj <ESC> "ビジュアルモードでの「v」で</esc>…

【Elasticsearch】Reindexを止めたい

Reindex実行後、Reindexのスクリプトが間違っていたことに気づいたので止めたい まずはReindexのタスクIDを確認する 確認方法は以下 【Elasticsearch】Reindexの進捗が知りたい - UGA Boxxx タスクIDがわかったら以下のコマンドを実行するだけ POST _tasks/…

【MyBatis】複数の引数を取るときは@Paramをつける

MyBatisを利用していて、XML内の記述にstartDateTimeとendDateTimeの変数を指定しているところがある ... where INSERT_TIME between #{startDateTime} and #{endDateTime} ... Mapperのインターフェースは以下のように定義した @Mapper @Component interfac…

【MyBatis】spring-bootで2つのデータソースを利用する

spring-bootでMyBatisを使っていて、MyBatisを利用する時だけ別のデータソースを利用したい場合にどうやるのかわかったのでメモ 元々1つのデータソースを利用する場合は以下のようにapplication.yamlでプロパティの定義をしていたのだが、 spring: datasour…

【Java】@PostConstructをつけてBean構築後にクラスで1度だけ実行される事前処理を行う

コンポーネントスキャンしてDIコンテナにBeanを登録する際、Bean構築後にクラスで1度だけ実行される事前処理を行いたい この時、@PostConstructをつけるとよいことを知った docs.oracle.com 以下のように該当メソッドに@PostConstructをつければ良い @Compo…

【Elasticsearch】複数indexがひもづくaliasへの更新はできない

複数のindexをまとめてaliasを定義している この時、一斉にこの複数のindexに対して更新をかけたい時に、aliasを指定すれば更新できるのかと考えたが以下のエラーが出てできなかった index [my-index-alias], type [_doc], id [12345], message [Elasticsear…

【Spring Boot】 JSONでのリクエストを受け取れるようにする

Spring BootでJSONでのリクエストを受け取れるようにしたい やり方は以下で、 @PostMapping(path = "/save", consumes = MediaType.APPLICATION_JSON_VALUE) HttpStatus save(@RequestBody RequestDto dto) { @PostMapping("/save")としていたところを、上記…

【Elasticsearch】価格の近い順にソートする

Elasticsearchでドキュメントを指定した価格に近い順にソートしたい 昇順でも降順でもないので、これは_scriptセクションを使用してカスタムソートを定義するしかなさそう ロジックは各ドキュメントの価格と目標価格(params.target_price)との絶対値差を計…

【CSS】Subgridを使ってみる

結構前にState of CSSで知ったSubgridが全ブラウザ対応になった uga-box.hatenablog.com これまで使うアテがなかったのだが、使うのに相応しいUIを実装することになったので使ってみる 詳細は鹿野さんのこちらの記事が参考になった zenn.dev 要するにSubgrid…

【CSS】grid周りのプロパティを毎回忘れてしまうのでまとめる

CSSのgrid周りのプロパティを毎回忘れてしまうので、自分なりに見返せるようにまとめる grid-template-columns 行の数と幅を定義 // 左から200px、auto、100pxの幅を持つ grid-template-columns: 200px auto 100px; //1frの幅を3回繰り返す grid-template-c…

【Mac】Mac OS Sonomaにアップデートしたらgitが動かなくなった

Mac

Mac OSをSonomaにアップデート後、gitで操作をしようとしたら以下のエラーが出た xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun 調べたらアプ…

【CSS】dialogの showModal() と show()

CSS

dialogのshowModal()とshow()の違いがわからなかったので調べた developer.mozilla.org showModal()とshow()は、JavaScriptでダイアログボックスやモーダルウィンドウを表示するための関数 違いをざっと書き出す showModal() モーダルダイアログを表示するた…

【CSS】view-transitionでスムーズなモーダル表現

CSS

view-transitionを使うとスムーズなモーダル表現ができることを知って調査した developer.mozilla.org 詳細は以下の記事が参考になる ics.media 具体的には一覧のサムネイルをクリックすると、そのサムネイル画像が拡大し、モーダルの要素になるというものを…

【Fastly】VCLの正規表現

FastlyのVCLの正規表現は何度も調べてしまうのでまとめておく VCL 正規表現早見表 | Fastly ヘルプガイド req.url == "/phrase" 完全一致 req.url ~ "phrase" 部分一致 req.http.host ~ "^www" 前方一致 req.url ~ "\.jpg$" 後方一致 req.url ~ "\.(png|jpg|…

【Fastly】GoogleBotを判定したい

FastlyでGoogleBotを判定する方法を調べた やり方はドキュメントになっていて以下をみると良い developer.fastly.com 例えば、GoogleBot以外のユーザーの国コードを取得したい場合は以下のように設定する if (client.bot.name != "Googlebot" && !req.http.c…

【Fastly】サブドメインへのリダイレクト

すでにあるサイトのコンテンツの一部をサブドメインに移行したい すでにパスが公開されているのでリダイレクトなのでFastlyでどうやるのかを調べた まずは、DNSにてサブドメインを作成し、Fastlyではサービスとドメインを新たに作成する ドメインの設定 | Fa…

【Fastly】Set-Cookieの値の取得方法

beresp.http.Set-Cookie または resp.http.Set-Cookieの値は正規表現を使って取得していたが、安全に取り出せる関数があることを知ったのでメモ docs.fastly.com よく問題になるのが以下のようなSet-Cookieが複数あるレスポンスの場合 HTTP/1.1 200 OK Cache…

【Elasticsearch】3台構成にしたローカルのES dockerコンテナが起動しない

ローカルのdockerで3台のElasticsearchのクラスターを構成したい 必要な設定をdocker-compose.ymlに書いて起動したところ2つのノードで以下のエラーが発生した elasticsearch ERROR: Elasticsearch exited unexpectedly, with exit code 137 エラーコード13…

【GAS】スクリプトの処理時間が長すぎてタイムアウトエラーになってしまう

GAS

GASで作ったスクリプトの処理時間が長すぎてタイムアウトエラーになってしまうので対応する GASの無償版のスクリプトの実行時間は6分以内収めないといけないらしい Google サービスの割り当て | Apps Script | Google for Developers 今回はある配列をループ…

【Figma】StylesをVariablesに変換するプラグイン

最近のFigma Config 2023で紹介されたVariablesの機能はデザイントークンを管理する機能であるが、デザイントークンの管理はStylesという別の機能を使っている 2つの機能はどちらもFigmaの標準機能であるが、比較するとデザイントークンのmode切り替えなど…

【Jest】バージョンを上げたらtestEnvironment: 'jsdom'でエラーになった

Jestをv29に上げたら以下のエラーが発生した ● Validation Error: Test environment jest-environment-jsdom cannot be found. Make sure the testEnvironment configuration option points to an existing node module. Configuration Documentation: https…

【Java】Lombokの@SneakyThrows を使用した場合、lombok.jarはクラスパスに必要になるかどうか

Lombokの@SneakyThrows はチェック例外を非チェック例外にして投げ直してくれる機能 projectlombok.org チェック例外は try - catch で捕獲する必要がありコードが若干冗長になってしまう、そこで@SneakyThrowsを使うとチェック例外を非チェック例外のように…

【reg-suit】GitHub Actions から Google Cloud に認証できるようにする

@takepepeさんの歯車本を見ながらGitHub Actionsにreg-suitを連携してみる この時、本ではStorycapの保存先をS3にしているが、今回はGCPのCloud Storageを使う点が異なるのでつまった点などをメモ フロントエンド開発のためのテスト入門 今からでも知ってお…

【Accessibility】ヘッダーのアイコンをどうするべきか

アクセシビリティ対応で、クリックするとトップページへ戻るヘッダーのアイコンの代替テキストをどうするべきか悩んだ これに対して、ドンピシャな記事があったのでメモ note.com いろいろな角度から考察がされていて面白い 記事の結論は よほどの理由がなり…

【GCS】バケット内のリストを取得する

GCS

cloud.google.com GCSのバケット内にあるオブジェクトのリストを作成するにはStorage.listを使う Page<Blob> list = storage.list(<bucket-name>); List<String> fileNameList = new ArrayList<>(); for (Blob file : list.iterateAll()) { fileNameList.add(file.getName()); } ただ、</string></bucket-name></blob>…

【Java】Path.resolveを使ってパスを結合する

2つのパスを結合したい時にはPath.resolveを使えば良いことを知った docs.oracle.com Path.resolveの簡単な使い方 Path path1 = Paths.get("/Users/user/Documents"); Path path2 = Paths.get("file.txt"); Path resolvedPath = path1.resolve(path2); Syst…

【JavaScript】ディープクローンにはstructuredCloneを使う

こちらのブログを読んで、オブジェクトのディープクローンにはstructuredCloneを使うと良いことを知った www.builder.io JavaScriptはコピーしたオブジェクトとコピー元のオブジェクトでプロパティにおいて同じ参照を共有するコピー(シャローコピー)と参照…

【Java】リストを指定の数で分割したい

最大で1,000要素になる可能性があるリストで、もし800要素以上ある場合は800要素以下のリストと残りの要素のリストに分けたい これはJavaでどうするんだっけ?と思ったので調べた List.subList を使う List.subListというのがあったので、普通にこれを使うの…

【Github】masterブランチがないリポジトリだとrelease-drafterが動かない

以前からrelease-drafterを使っていて、新しく作ったリポジトリにも導入したいと考えて導入したところ以下のエラーが発生した ERROR: Validation Failed: {"resource":"Release","code":"invalid","field":"target_commitish"} 調べると以下のissueを発見し…