【福岡オフライン開催】JJUG CCC 2023 Spring報告会 に参加してきました

こんばんは、中尾です。 【福岡オフライン開催】JJUG CCC 2023 Spring報告会に参加してきました。 javaq.connpass.com 場所はエンジニアカフェです。 時間 内容 登壇者 18:40 ~ 19:00 開場・受付開始 19:00 ~ 19:05 開始挨拶 19:05 ~ 19:25 JJUGについて、Ja…

neuet × LINE Fukuoka Engineer Meetupに参加してきました

こんばんは、最近登壇芸人になっている中尾です。 エキサイトブログの刷新の話しかしてないですが。 neuet × LINE Fukuoka Engineer Meetupに参加してきました。 場所はFGN(Fukuoka Growth Next)です。スタートアップ企業を支援する福岡市の施設です。有名な…

Embulkを使って、アクセスログを集計してデータベースに挿入する

エキサイト株式会社の中尾です。 Embulkを使って、S3のアクセスログを集計してデータベースに挿入する方法を説明します。 例えばアクセスログから時間帯別のアクセスログの結果をDBに保存したりすることがあると思います。 前提条件は以下の通りです。 AWS A…

JJUG CCC 2023 Spring に登壇してきました!

エキサイト株式会社の中尾です。 JJUG CCC 2023 Spring に登壇してきました。 エキサイトブログのリビルドの詳細はブログに記載されている通りです。 tech.excite.co.jp JJUG では リビルドの話を中心にしましたが、質問でデータ移行の話が多かったので、ブ…

Optionalを使ってnull判定のif分岐を極力減らす

こんばんは。 エキサイト株式会社の中尾です。 JavaのOptionalを使ってnull判定のif分岐を極力減らす方法をご紹介します。 if分岐を減らす一つの方法として、 mapを使う (戻り値有り) ifPresentOrElseを使う (戻り値なし) の2種類があります。 以下、コード…

MyBatis Generatorで出力されるMapper&Modelにsuffixをつけてみる

お久しぶりです。中尾です。 長いことブログを書いていませんでしたが、少しずつ書こうと思います。 今回は MyBatis Generatorで出力されるドメインオブジェクト名にsuffixをつけてみます。 MyBatis GeneratorはTableからドメインオブジェクトを作成する機能…

apacheの.htaccessで複数の環境をまとめる

こんばんは、エキサイトの中尾です。 apacheの.htaccessで複数の環境をまとめる方法をご紹介します。 現在はnginxが人気ですが、まだまだapacheを使っているところもあると思います。よかったら参考にしてください。 といっても設定は簡単で、たとえば環境ご…

nginxで特定のURLのアクセスログを出さない

こんばんは、エキサイト中尾です。 nginxで特定のURLのアクセスログを出さない方法を説明します。 遷移先がキャンペーン終了などで導線がなくなったのに、botなどでアクセスされ続けてしまった場合に有効です。 導線がなくなったURLのアクセスログが貯まると…

guzzleの並列処理

こんばんは、エキサイト中尾です。 PHPのguzzleを使った並列処理を簡単に説明します。 単純に並列処理するシンプルな実装だと思います。 "https://google.com", 'yahoo' => "https://yahoo.co.jp", 'excite' => "https://excite.co.jp", 'hogehoge' => "htt…

MemcachedからRedisに移行した話

はじめまして、エキサイト株式会社の中尾です。 今回はMemcachedからRedisに移行した話をします。 半年ほどかかりましたが、、、なんとかやりました。。(時間かかりすぎなのは申し訳ございません) はじめに まずはcacheの中身を精査する。 apiサーバーのcach…

intellijのショートカット、pvsmとsouXXについて

おはようございます。エキサイト株式会社の中尾です。 intellijの便利なショートカット、pvsmとsouXXについて紹介します。 psvm とエディター上で打つと、、、なんと 一発で、以下が補完されます。 ちょっと動かしてみたいとかで、いちいち以下をタイピング…

laravelで複数のwebサービスを1リポジトリに載せる

こんばんは。エキサイト株式会社の中尾です。 laravelで複数のwebサービスを1リポジトリに載せる方法があります。 apacheで例を記載します。 laravelの配下には public/index.php がありますが、それは一つじゃなくても良いのです。それさえ増やせば良いので…

redisで一度に保存するキャッシュサイズ(value)は100kb以下にしましょう

こんばんは、エキサイト株式会社の中尾です。 今回は表題の通り、redisで一度に保存するキャッシュサイズ(value)は100kb以下が良い点について説明します。 っと言っても、memcacheでも同じです。 詳しく説明はこちらのリンクを参考にしてください。 docs.mic…

Alternative Architecture DOJO #7 に行ってきました

こんばんは、中尾です。 今回は技術的な話じゃなくて、オルターブースさんのイベントで登壇したお話を記載します。 alterbooth.connpass.com G's ACADEMY Fukuoka はプログラミングスクールなので、スクールでは教えてくれないような内容で発表をしました。 …

M1 MacBookを使って、Azure SQL Databaseを動かす方法

こんばんは、エキサイト株式会社の中尾です。 今回は、M1 MacBookを使って、Azure SQL Databaseを動かす方法を説明します。 まず、前提条件として、M1 MacBookでAzure SQL Serverのdocker image( mcr.microsoft.com/mssql/server )は使えません。よって、Azu…

福岡のエンジニアカフェに行ってきました!

エキサイト株式会社の中尾です。 最近福岡のエンジニアカフェで2回LTと、1回スタッフ(ボランティア)として参加したのでその時のことを記載します!そんな大したLTではないのですが、、、 参加したLTは以下です engineercafe.connpass.com engineercafe.connp…

Thymeleafを使ってheaderとheadとfooterの共通化

こんばんは、エキサイト株式会社の中尾です。 今回はThymeleafを使ったheaderとheadの共通化を説明します。 公式documentに書いている通りですが、記載します。 www.thymeleaf.org まず、gradleに以下をimplementationします。 implementation 'org.springfr…

quarkusを使う(コンパイル編) - buildに成功?

こんばんは、エキサイト株式会社の中尾です。 quarkusを使う(コンパイル編) - エキサイト TechBlog. でcompileできなかったところがなんとcompileできるようになっていました! どうやらissueを見るとGraalVM 22.1 を使うようになったのでそもそもできるみた…

IntelliJで例外ブレークポイントを発生させる

こんばんは、エキサイト株式会社の中尾です。 eclipseで例外ブレークポイントが便利だったので、inteljでできないかと探したら意外にすぐに出てきました。 普通にブレークポイントを仕込み、ブレークポイントで右クリックすると以下のメニューが出てきます。…

Controllerでもinterfaceをimplementsすることができる

こんばんは。エキサイト株式会社の中尾です。 あまり需要がないかもしれないですが、Controllerでもinterfaceをimplementsすることができます。 ただ普通にimplementsすることは、どんなクラスでもできますが、@RequestMappingや@GetMapping()や@RequestPara…

quarkusを使う(ログ出力編)

夜遅くからこんばんは。エキサイト株式会社中尾です。 quarkusの開発に慣れてきたのですが、いまいちdebug周りが見えなかったので、debugログを全部出すことにしました。 https://quarkus.io/guides/logging 詳しい設定はこちらに記載しているのですが、簡単…

quarkusを使う(テンプレートエンジン編)

こんばんは、エキサイト株式会社中尾です。 今回はテンプレートエンジンについて説明します。 quarkusにはQUTEがあります。 ja.quarkus.io 特徴として ネイティブビルドに対応(間違っているかもしれない) テンプレートファイルを変えたら、リロードすれば反…

quarkusを使う(ExceptionMapper編)

こんばんは お久しぶりです。エキサイト株式会社 中尾です。 最近は趣味でQuarkusを使っています。 本記事ではQuarkusの例外処理について紹介します。 Red Hatの皆様、コメントください、DM待っています。 今回はエラーのハンドリングということで、exceptio…

quarkusを使う(コンパイル編)

こんばんは、エキサイト株式会社の中尾です。 quarkusといえば、native compileでしょう。 まずはjvmで。 shogo.nakao@localhost:(main*) $ docker build -f src/main/docker/Dockerfile.jvm -t quarkus/hobby-jvm . [+] Building 100.3s (11/11) FINISHED =…

TABLE定義を設計する時、カラム名に半角数値を入れるのはやめよう

こんにちは、エキサイト株式会社の中尾です。 出落ちみたいなタイトルなのですが、みなさんはテーブル設計の時、カラム名はどのようにしていますか? 基本は - 半角英字のみ - 極力正式名称をカラム名に、妙な省略はしない - package、classなど特定の言語の…

quarkusを使う(mybatis編)

こんばんは、エキサイト株式会社の中尾です。 前回の続きです。 mybatisを入れていきます。 mybatisにはserviceと同様@Singletonをつけて、@Injectで呼び出します。 その際、repositoryを間に挟みます。 まず、必要なextentionをgradleに追加します。 implem…

quarkusを使う(inject編)

こんばんは、エキサイト株式会社の中尾です。 前回の続きです。 serviceを入れていきます。 serviceには@Singletonをつけて、@Injectで呼び出します。 ※サンプルです。 interface package org.my.hobby.service; import org.my.hobby.core.Book; public inte…

quarkusを使う(バリデーション編)

こんばんは、エキサイト株式会社の中尾です。 前回の続きです。 必要そうなツールを入れていきます。 まず、バリデーションを追加します。 gradleに以下を追加 implementation 'io.quarkus:quarkus-hibernate-validator' アノテーション でバリデーション設…

quarkusを使う(環境構築編)

初めまして、Red Hat大好きエキサイト株式会社の中尾です。 趣味でquarkusを使っていこうと思うので、その記録を残そうと思います。 quarkus cliは使いません。 まずは環境作りです。 quarkusでbuildツールgradleを使おうと思います。 mvnよりもgradleのほう…

DefaultErrorAttributesについて

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