谷本 心 in せろ部屋

はてなダイアリーから引っ越してきました

Java

Dapr + JavaでHello worldしました。

先日、MicrosoftがDaprというプロダクトをOSSで公開しました。 www.publickey1.jp Distributed Application Runtimeの略だそうで、なんかIstio的な感じなのかなーと思ったのですが「ステート管理」みたいな機能もある所が少し気になって、ドキュメントとかを…

GraalVM + Javaで作ったバイナリをAWS Lambdaで動かす時にハマった所

仕事でAWS Lambdaを使う機会が増えてきたのですが、やはり書き慣れたJavaでLambdaを書きたいなと思うことが少なくありません。ただAWS LambdaでJavaアプリを動かすと、初回アクセスに十秒近く掛かるし、メモリ消費量も大きいしで、パフォーマンス的にも運用…

ReactorでN+1問題な処理を実装してみた話

最近、格ゲーのツイートが増えてる [twitter:@cero_t] です。前のエントリーに書いた「18年ぶりに出る続編」のβテストがついに始まりまして、最近は夜な夜なコンボをやるなどしています。 シビアな反応が要求される格闘ゲームにおいて、継続して勝ち続けるた…

JMXで情報を取得する時のベンチマーク

JMHを使って、JMX経由でMBeanの情報を取る際のパフォーマンスを測定してみた。 ベンチマークのソースコードはこちら。 https://github.com/cero-t/Benchmarks/blob/master/src/main/java/ninja/cero/benchmark/JmxBenchmark.java ベンチマーク環境はMacBook …

なぜ僕はCaliperではなくJMHを選んだのか。

今日、会社の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」

先日の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コード

このエントリーは Java Advent Calendar 2012 の10日目として書きました。 なんか色々あって、公開が2日ぐらい遅れてしまってごめんなさい(><) 前日は、Hideki Kishida (@quicy) さんの「Xtend の Lambda とストリーム処理」です。 http://legacy-style.…

Indyが早くないので、教えてください!

会社の同僚が、リフレクションと普通のメソッド呼び出しについて、 簡単なベンチマークを取って比較していました。 で、結果は以下の通り。 reflection :time(ms)=19054 direct call:time(ms)=44 リフレクションって、どれくらい遅くなるの? - snuffkinの遊…

volatileとか使うなと怒られた話

JJUG Night Seminar ~ Java VM&LT&納涼会 ~ http://kokucheese.com/event/index/48437/ に参加してきました。 「スタックマシンとしてのJavaVM」なんて言う 一見さんお断りみたいなタイトルに集まった人たちはもちろんレベルが高く 参加者のjavap経験率が20%…

自社の内々定者が書いたJavaOneレポートがなかなか・・・

自社の内々定者(来年、就職予定)がJavaOneに参加していたのですが その参加レポートが、なかなか良い感じの内容だったので紹介しておきます。 http://www.acroquest.co.jp/member/naitei2013/activities/ 等身大の学生として、分からない所は分からないと…

JavaOne Tokyo 2012でトラシューについて話してきました。

先日、7年ぶりに開催されたJavaOne Tokyo 2012で、 トラブルシューティングについて講演してきました。 「トラブルシューターの頭の中身 〜7年間のJavaトラブルシュートサービスから」 というタイトルで、 同期入社の江里口と掛け合い(漫才)風のセッション…

いいから聞け! 俺が文字コードについて教えてやるよ Advent Calendar 特別編

長らく更新の止まっている「いいから俺文字コード」シリーズですが、 このたび、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で実現していたこと…

KotlinのFAQだけ翻訳してみた。

JetBrainsのJVM言語「Kotlin」のドキュメントのFAQだけ翻訳してみました。 http://confluence.jetbrains.net/display/Kotlin/FAQ 多少意訳してたり、勝手に段落分けをしている所もあり原文ままとは言えませんが、 訳が漏れている箇所や誤訳などについて、ぜ…

Kotlinかわいいよ、Kotlin。NBJLになるんじゃない?

7/19〜21にサンタクララのOracleオフィスで JVM Language Summitというイベントが開催されていました。 http://openjdk.java.net/projects/mlvm/jvmlangsummit/ そこで発表された、JetBrainsのKotlinというJVM言語が、かなりイイ感じです。 http://www.wiki.…

いいから聞け! 俺が文字コードについて教えてやるよ その2(Javaの文字コード編)

前回のエントリーでは「Java関係ないやん」的なツッコミも受けましたが、 今回からは、Javaを前提にしていきます。 Javaで文字から文字コードを作る 新人くん「Javaで文字から文字コードを作りたいんですが、どうすれば良いんですか?」 先輩社員「getBytes…

いいから聞け! 俺が文字コードについて教えてやるよ その1(前提知識編)

ちょっと久々のJavaネタですが、 前から書き溜めていた、文字コードやエンコードについてのノウハウを書きます。 今回は、詳細な説明に入る前に、前提になる知識や用語について説明しておきます。 文字コードとエンコードって違うの? 新人くん「では、HTML…

VelocityでStringをテンプレートとして読む時のパフォーマンス。

Apache Velocityで、テンプレートファイルを利用せずに、 Stringをテンプレートとして利用する方法を確認した。 方法1) Velocity#evaluateを使う。 Velocity.evaluate(new VelocityContext(map), writer, "test", templateString); 第四引数のtemplateString…

ピッチャーでコーラ。

先週末は、「Javaクラウドミーティング2010関西」が開催され、 皆さん、主にGoogle App Engineなどについて話される中、 私は「今さら聞けないJavaとクラウド」という内容でお話をしました。 実はちょっと体調が悪かったので、自分のセッションが終わった後…

DevoxxのJava Puzzlersが見られます

JavaOneでは残念ながらキャンセルになったJavaPuzzlersですが、 Devoxxで行われたJavaPuzzlersを、InfoQのサイトで見ることができます。 Java Puzzlers: Scraping the Bottom of the Barrel http://www.infoq.com/presentations/Java-Puzzlers Java Puzzlers…

11/20(土)はJavaクラウドミーティング関西2010!!

直前の告知になってしまいましたが、 11/20(土)にJavaクラウドミーティングを、初めて大阪で開催します! セッション一覧はこちら。かなりGAE/J分の多い内容になっています。 http://event.seasarfoundation.org/jcmk2010/?page_id=11 私も関ジャバ枠(?)…

java.util.loggingってWebアプリで使い物にならなくない?

やる気がなかったのか、仕方がないのか、 今一つきちんと作られなかった感のある、 Java標準ロガー(java.util.logging)を触ってみました。 いきなり「設定ファイルの読み込み方」が分からなくて軽く凹み、 チュートリアルサイトには「設定ファイルは-Dオプ…

ところでみんなboolean変数名ってどうしてる?

上に書いた エスエムジーのJavaコーディング規約 の中で、気になる所が一つ。 boolean型を表す属性は、true/falseの状態がわかる名称にする。 違反サンプル private boolean open; 修正サンプル private boolean isOpen; 昔は私もこういう命名規則で書いてい…

SMGのコーディング規約とEclipse設定ファイルが公開された模様

弊社の公式Twitterアカウント (@smg_tw) のTLに、こんなの発見。 そこで、当社では、社内で2000年より作成・改版を行ってきたJavaコーディング規約を 公開することにしました。 このコーディング規約は、開発者自身の経験、および、最近のJavaの動向を踏まえ…

2waySQLなO/Rマッパ。

それこそ数年前から何度も何度も何度も何度も話題になってた シンプルな依存性の少ない2waySQLなO/Rマッパですが 竹添さんが開発し始めたそうです。 というわけで、S2JDBCの2WaySQLが使えるDBUtils的なコンパクトなデータベースアクセスライブラリを作り始め…

Vaadinとか言う怪しいフレームワーク。

会社の先輩である村田さんが、何やらまた怪しいフレームワークに手を出し始めたようです。 Javaで軽快に使える「軽量フレームワーク」特集 ?リッチなGUIを構築する「Vaadin」(1)(1/6):CodeZine まずはこちらの記事を写経?してみました。Swing感覚です…

デコンパイルツール「Java Decompiler」を試してみた。

Jadが大好きなんだけど、Java5以降の文法に対応してないから 若干やきもきしつつもガッカリしている皆さん、こんばんは。 名前そのまま、Java Decompilerというツールがありました。 http://java.decompiler.free.fr/ Java6まで対応しており、 Eclipseプラグ…

Java DecompilerがNorton先生に怒られる話の続き。

エラーメッセージでちょっとググってみたら、 他のアプリケーションでも、同じ問題にぶつかってる人がたくさんいました。 何と「真っ白なウインドウを表示するだけ」のチュートリアルのようなソフトまでもが「疑わしい動作」として削除されてしまいました。 …

Oracle×Sunのまとめ記事。

OracleによるSun買収後の動きについて、 公式な発表と、blogなどでの反応がまとめられています。 僕としては、Sun Java(Hotspot)と、BEA Java(JRockit)の統合が一番興味深いですね。 It sounds to me like they want to take some of the cool parts of BEA'…