SpringBootでapplication.yaml以外の外部リソースファイルを読み込む

エキサイト株式会社エンジニアの佐々木です。アプリケーションを開発していると設定が増えてくると思いますが、増えてくるとファイルが増えて大変です。また、モジュラーモノリスのような構成にすると設定を別々に管理した方が都合がいいことがでてきます。S…

「第一回テクデザ総会」を開催しました!

こんにちは。 エキサイト株式会社の三浦です。 2021年10月8日、第一回目となる「テクデザ総会」を開催しました! 第一回テクデザ総会 テクデザ総会 テクデザ総会は、コミュニケーションの活性化を主目的としたエキサイト・iXITの技術者の総会となります。 総…

axios通信時にNuxt.jsのローディングアニメーションを実装する

Nuxt.jsでaxios通信時にローディングアニメーションを表示する方法をご紹介します。

SQLServerのWHERE句は大文字小文字でもヒットしてしまう問題

エキサイトしばたにえんです。 早速ですが、 WITH hogefuga_table AS ( SELECT 'hogefuga' AS word ) SELECT * FROM hogefuga_table WHERE word = 'HOGEFUGA'; こちらhogefugaがヒットされてしまいます。 WHERE句の大文字小文字を判別してくれません。 SQLSe…

git branchの結果を時間順に表示

エキサイトのしばたにえんです。 時間順にソートするgit branchのoptionの紹介です 「さっき作ったブランチが見つからない」、 「ターミナルのタブも消してしまってhistoryでも見つからない」 って時に便利です。 新しい順の表示 git branch --sort=-authord…

LocalDateTime型をrequestから受け取るカスタムアノテーションを作る

エキサイトのしばたにえんです。 早速ですが カスタムアノテーションの作成をしていきます。 リクエストからLocalDateTimeを受け取る時に@JsonFormatを使って受け取ると思いますが、この時にpatternを書く必要があります。 @JsonFormat(pattern = "yyyy-MM-d…

SpringBootで設定ファイル(application.yaml)を一括で読み込む

エキサイト株式会社エンジニアの佐々木です。SpringBootでの設定ファイル(application.yaml)を一括で読む方法のメモになります。 前提 SpringBoot2.4以上で検証しています。 起動クラスの設定 ソースコードは下記になります。 起動クラスに@ConfigurationPro…

Javaで1日の始まりと終わりの時刻を簡単に取得する

はじめに エキサイト株式会社 21卒 バックエンドエンジニアの山縣です。 既存サービスのリビルドをするにあたり、日付まわりの処理を記述することが多くなってきました。 日付まわりの処理を誤ると、未公開のデータを取得できてしまうこともあるため慎重にコ…

SpringBootでスネークケースのリクエストパラメータを受け取る方法

エキサイト株式会社エンジニアの佐々木です。古いシステムをSpringBootリビルドしており、リクエストパラメータの命名が統一されていないというのがあったので、対応方法の一例を紹介します。 @RequestParamで解決する @RequestParamのname属性で指定できま…

AWS上でElasticSearch7.10ドメインをOpenSearch1.0ドメインに移行した話

こんにちは。 エキサイト株式会社のAです。 今回ElasticSearchドメインの移行を行い、さらにElasticSearch7.10からOpenSearch1.0にバージョンを上げました。 Amzon OpenSearch Serviceとは Amzon OpenSearchとは、Amazon Elasticsearch Service の後継サービ…

Javaで、JSONのタイムゾーン込みの日付文字列をDateTime型に変換する際の注意点

こんにちは。 エキサイト株式会社の三浦です。 JSON上の日付文字列をDateTime型に変換するのはJavaではよくあると思いますが、その際の注意点について書いていきます。 JSONの日付文字列の変換方法 まずは、通常の変換方法について見ていきます。 例えば、 {…

Nim言語でダイクストラ法を書いてみる

はじめに ダイクストラ法というものをご存知でしょうか? ざっくりいうと、目的地までの最短コースを探すときに使うアルゴリズムの一つです。 それを性懲りもなくNimで実装してみましょう。 ダイクストラ法 以下のサイト様がわかりやすいかと思います。 http…

DMSを使ってDBのAWS移行をする

エキサイト株式会社の武藤です。 オンプレのDBをAWSのRDSに移行する際に、AWSのDatabase Migration Service (DMS) を利用しました。 サービスの特性上読み込みが多く、書き込みが少なかったので、無停止での切り替えができました。 その手順について説明しま…

エキサイトは「PHP Conference2021」に協賛・登壇します

エキサイトは「PHP Conference2021」にシルバースポンサーとして協賛します。 今回は、弊社社員がRegular session、スポンサーツアーセッションに登壇いたします。 登壇情報については、以下をご覧ください。 Regular sessionについて 登壇者: おおしげ 日…

「Booost」ハッカソン型インターンを開催しました。

エキサイト株式会社では、9月9日(木)〜13日(月)に「Booost」ハッカソン型インターンを開催しました。 学生向けの長期インターンは以前から実施していますが、ハッカソン型のインターンは初開催でした。 「学生生活をエキサイトさせるサービス」というテーマ…

JavaとPythonとGoのHTTPステータスコードの実装を調査した

はじめに エキサイト株式会社 21卒 バックエンドエンジニアの山縣です。 Spring Boot / Javaで既存システムのリビルドを進めてHTTPステータスコードの実装を調べている途中に、ふと他の言語の実装が気になり、普段趣味で使用しているPythonとGoのソースコー…

Javaでクエリパラメータの日時データを受け取る方法

こんにちは。 エキサイト株式会社の三浦です。 APIで、日付情報をクエリパラメータとして受け取るという場面はそう珍しいものではありません。 ただし日付情報の問題点として、様々なフォーマットが存在しうるというものがあります。 今回は、渡されるフォー…

もうキャッシュの実装は怖くない!

はじめに こんにちは。エキサイト株式会社で長期インターンをさせていただいている岡崎です。 今回は私が学んだキャッシュについての記事を書かせていただきます。 「もう分かっているんだが?」というエンジニアの皆さん向けではなく、Spring Bootでキャッ…

PHPDoc の @uses を使って、可変関数の未使用警告を抑制する

エキサイト株式会社の武藤です。 PHP の可変関数 PHP には可変関数という機能があります。 www.php.net 関数名を変数にすることで、動的に呼び出したい関数を変更できます。 $functionName(); 使い方によっては有用な機能かもしれません。 しかし、intelliJ …

Spring Bootでクエリパラメータの順序が異なるURIを比較する

はじめに エキサイト株式会社 21卒 バックエンドエンジニアの山縣です。 UriComponentsのreplaceQueryParam()を使用してクエリパラメータの値を書き換えたときに、書き換える前と書き換えた後とでクエリパラメータの順序が異なってしまい、 単体テストで落ち…

mysqlslap で MySQL の負荷エミュレーションをしてみる

エキサイト株式会社の武藤です。 オンプレにあるDBを稼働中のRDSに統合する際に、mysqlslapを使った負荷エミュレーションをしたので、使い方を紹介します。 mysqlslapとは mysqlslapとは、負荷エミュレーションをするコマンドです。クライアントの接続数やク…

第4回定期勉強会「Flutter勉強会」

こんにちは。 エキサイトの三浦です。 毎月恒例の定期勉強会が今月も開催されました。 今回は「Flutter勉強会」ということで、エキサイトでも使われ始めたFlutterの話になります。 なお過去開催分は以下になりますので、よければ御覧ください。 tech.excite.…

Spring Bootでコンポーネント名が重複してエラーになったときの解決策

はじめに エキサイト株式会社 21卒 バックエンドエンジニアの山縣です。 Spring Bootでコンポーネント名が重複したときに、ConflictingBeanDefinitionExceptionが発生してエラーとなってしまいました。 その原因と解決策についてまとめました。 別のパッケー…

どこまでアプリケーションを「完璧」にすべきか

こんにちは。 エキサイト株式会社の三浦です。 アプリケーションを作るときや改修するとき、すべてのエンジニアが「完璧なアプリケーションを作ろう」と一度は思うはずです。 しかし、シンプルなコードで済むアプリケーションならともかく、複雑になればなる…

はじめてのFlutter

iXIT株式会社の堀です。 新しい事をはじめたいと思い、グループ会社でも採用が決まったFlutterの勉強をはじめました。 2018年末にGoogleからFlutterがリリースされ、2年以上も経つのでネット上にも情報がたくさん載っています。 同じようにこれから始める人…

エキサイトは「iOSDC Japan 2021」に協賛します!

今週金曜日から開催される「iOSDC Japan 2021」に、エキサイトはシルバースポンサー、Tシャツスポンサーとして協賛します。 イベント概要については、以下をご覧ください。 iOSDC Japan 2021 開催日時 : 2021年9月17日(金)〜 9月19日(日) 開催場所 : オ…

DefaultErrorAttributesについて

エキサイト株式会社の中尾です。 RestControllerAdviceで拾えない例外処理を拾う方法を記載します。 よくある方法は、ExceptionHandlerで全てcatchする方法だと思います。 @ExceptionHandler @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) public Stri…

RestControllerAdviceについて

エキサイト株式会社の中尾です。 SpringBootでexceptionが発生したとき、特定のエラーレスポンスで返す方法を記載します。 以下、コードになります。 @RestControllerAdvice @Slf4j public class ExceptionController { @ExceptionHandler({BadRequestExcept…

GitHub上でVisual Studio Codeを起動してコードレビューをする

はじめに エキサイト株式会社 21卒 バックエンドエンジニアの山縣です。 少し前にGitHub上でVisual Studio Codeを起動してコードレビューをすることができるようになりました。 実際に試してみたので共有します! Visual Studio Codeを起動する プルリクエス…

監視とアラートとTwilio

概要 エキサイトの川崎です。 弊社の一部のサービスには通話機能があり、 その通話機能(以降 call systemと呼びます)をTwilioを使って作っています。 call systemを作成運用する上で、困ったこと/悩んだこと はいろいろあるのですが、 今回はcall systemのア…