Java
Spring Boot 3.0でMicrometer対応が強化されたとか、トレース情報を収集するSpring Cloud SleuthがMicrometerに入ったと聞き、この辺りはしばらく追いかけてなかったので、この機会にまとめて学び直すことにしました。 今回作ったものはGitHubに置いてありま…
こんにちは、絶対にmvn installしたくないマンのcero_tです。しばらくブログはお休みです的なことを言ってたのに、今日も長文を書いてしまいました。 背景 Mavenで(Gradleでも)開発する時にはだいたいマルチモジュール構成にすると思うのですが、Spring Bo…
毎日のようにブログを書いていると、昨年の Dapr Advent Calendar を思い出しますね。とは言え、そろそろブログを毎日書くのもいったんキリがつきそうです。 やりたいこと 前回も書きましたが、ゴールを再確認しておきます。 Spring Data JDBCに機能追加して…
ここまでSpring Dataの自作を行ってきましたが、Spring DataやSpring Data JDBCの知識がついてきたおかげで、Spring Data JDBCそのものを拡張することもできそうだなと分かってきました。 元々あるものは再実装せずにそのまま使ったほうが良いに決まってるの…
前回のエントリーで、findAllは無事に実行できたので、次は独自拡張として任意のSQLを実行することを目指します。 やりたいこと 先にゴールを明確にしておきます。 @SqlFile アノテーションで指定したSQLファイルを読んで実行できること @Query アノテーショ…
前回のエントリーで自作Spring Dataの扉を開けましたので、今回は実際に全件検索、findAllが動くところまで進めてみます。 TL;DR このエントリーは長文すぎて誰も読まないと思うので、先にまとめておきます。 findAllだけ動く独自Spring Dataとサンプルアプ…
僕は約束を守る男なので、Spring Data SQLを作り始めたというお話です。 背景 これまでBootiful SQL TemplateというJdbcTemplateの薄いラッパーを(作って)使っていたのですが、INSERT文とかSELECT ALLくらいは自動生成して欲しいよなと思い、Spring Dataを…
試してみましたブログです。 背景 仕事で数秒おきにWebのリクエストをリトライするような機能が必要になり、数秒待つのにスレッドを消費させたくないのでどうしたもんかなと思ってたところ、SpringのWebClientが使っているReactorの機能にリトライがあり、こ…
年に一回くらい、突然Javaの話をブログに書き始めるJava Championの @cero_t です。 数年前、「Spring BootでもSQLファイルを使いたいな」と思って勢いで作った Bootiful SQL Template ですが、何気に仕事で使うことがたまにあるので細々とメンテナンスを続…
要約 技術的な話だけ教えて、という方のために先に結論だけ書いておきますと、PostgreSQLはクエリを実行した時点で全レコードの情報を一気に読んできてヒープを埋めてしまう場合がある、ということ話です。 たとえば、ResultSet#nextメソッドを使いながら処…
先日、MicrosoftがDaprというプロダクトをOSSで公開しました。 www.publickey1.jp Distributed Application Runtimeの略だそうで、なんかIstio的な感じなのかなーと思ったのですが「ステート管理」みたいな機能もある所が少し気になって、ドキュメントとかを…
仕事でAWS Lambdaを使う機会が増えてきたのですが、やはり書き慣れたJavaでLambdaを書きたいなと思うことが少なくありません。ただAWS LambdaでJavaアプリを動かすと、初回アクセスに十秒近く掛かるし、メモリ消費量も大きいしで、パフォーマンス的にも運用…
最近、格ゲーのツイートが増えてる [twitter:@cero_t] です。前のエントリーに書いた「18年ぶりに出る続編」のβテストがついに始まりまして、最近は夜な夜なコンボをやるなどしています。 シビアな反応が要求される格闘ゲームにおいて、継続して勝ち続けるた…
JMHを使って、JMX経由でMBeanの情報を取る際のパフォーマンスを測定してみた。 ベンチマークのソースコードはこちら。 https://github.com/cero-t/Benchmarks/blob/master/src/main/java/ninja/cero/benchmark/JmxBenchmark.java ベンチマーク環境はMacBook …
今日、会社のblogのほうにJMHのエントリーを書きました。 そう、今日のテーマはマイクロベンチマークです。 Javaのマイクロベンチマークツール「JMH」 - Taste of Tech Topics Javaのマイクロベンチマークに興味がある人は、 GoogleのCaliperというマイクロ…
定義的プログラミングっていう言葉を思いついたから、メモしとく。 イメージ的にはこんなん。 Before: 普通の処理コード public Dto process(Map<String, String> input) { Dto dto = new Dto(); dto.userName = input.get("ユーザ名"); dto.password = input.get("パスワー</string,>…
先日のJJUGナイトセミナーで 「from old Java to modern Java」という話をしてきました。 公式サイト : http://www.java-users.jp/?p=551 togetter : http://togetter.com/li/521481 Java以前のCライクな書き方から、J2SE 1.4、5.0・・・からJava SE 8まで …
このエントリーは Java Advent Calendar 2012 の10日目として書きました。 なんか色々あって、公開が2日ぐらい遅れてしまってごめんなさい(><) 前日は、Hideki Kishida (@quicy) さんの「Xtend の Lambda とストリーム処理」です。 http://legacy-style.…
会社の同僚が、リフレクションと普通のメソッド呼び出しについて、 簡単なベンチマークを取って比較していました。 で、結果は以下の通り。 reflection :time(ms)=19054 direct call:time(ms)=44 リフレクションって、どれくらい遅くなるの? - snuffkinの遊…
JJUG Night Seminar ~ Java VM<&納涼会 ~ http://kokucheese.com/event/index/48437/ に参加してきました。 「スタックマシンとしてのJavaVM」なんて言う 一見さんお断りみたいなタイトルに集まった人たちはもちろんレベルが高く 参加者のjavap経験率が20%…
自社の内々定者(来年、就職予定)がJavaOneに参加していたのですが その参加レポートが、なかなか良い感じの内容だったので紹介しておきます。 http://www.acroquest.co.jp/member/naitei2013/activities/ 等身大の学生として、分からない所は分からないと…
先日、7年ぶりに開催されたJavaOne Tokyo 2012で、 トラブルシューティングについて講演してきました。 「トラブルシューターの頭の中身 〜7年間のJavaトラブルシュートサービスから」 というタイトルで、 同期入社の江里口と掛け合い(漫才)風のセッション…
長らく更新の止まっている「いいから俺文字コード」シリーズですが、 このたび、Java Advent Calendarの一環として復活させました! Java Advent Calendarって? 本エントリーはJava Advent Calendarの5日目です。 Java Advent Calendarについては、以下のサ…
Glassfish 3.1でCDI(Weld)を使う時に、Interceptorを仕掛ける対象を アノテーションではなく命名規約で指定することはできませんか? Seasarで言うところのComponentAutoRegister + addClassPatterや、 GuiceのAbstract#bindInterceptorで実現していたこと…
JetBrainsのJVM言語「Kotlin」のドキュメントのFAQだけ翻訳してみました。 http://confluence.jetbrains.net/display/Kotlin/FAQ 多少意訳してたり、勝手に段落分けをしている所もあり原文ままとは言えませんが、 訳が漏れている箇所や誤訳などについて、ぜ…
7/19〜21にサンタクララのOracleオフィスで JVM Language Summitというイベントが開催されていました。 http://openjdk.java.net/projects/mlvm/jvmlangsummit/ そこで発表された、JetBrainsのKotlinというJVM言語が、かなりイイ感じです。 http://www.wiki.…
前回のエントリーでは「Java関係ないやん」的なツッコミも受けましたが、 今回からは、Javaを前提にしていきます。 Javaで文字から文字コードを作る 新人くん「Javaで文字から文字コードを作りたいんですが、どうすれば良いんですか?」 先輩社員「getBytes…
ちょっと久々のJavaネタですが、 前から書き溜めていた、文字コードやエンコードについてのノウハウを書きます。 今回は、詳細な説明に入る前に、前提になる知識や用語について説明しておきます。 文字コードとエンコードって違うの? 新人くん「では、HTML…
Apache Velocityで、テンプレートファイルを利用せずに、 Stringをテンプレートとして利用する方法を確認した。 方法1) Velocity#evaluateを使う。 Velocity.evaluate(new VelocityContext(map), writer, "test", templateString); 第四引数のtemplateString…
先週末は、「Javaクラウドミーティング2010関西」が開催され、 皆さん、主にGoogle App Engineなどについて話される中、 私は「今さら聞けないJavaとクラウド」という内容でお話をしました。 実はちょっと体調が悪かったので、自分のセッションが終わった後…