/home/by-natures/dev*

ソフトウェア開発者としての技術的なメモと、たまに普通の日記。

java

2019/06/18 AWS ELB 配下の tomcat が X-Forwarded-For を取得できない? -> 解決しました

ロードバランサー配下のWebサーバは、ロードバランサーがもともとのクライアントのリクエスト情報を保持するために X-Forwarded- というHTTPヘッダを追加します。このリクエスト元の情報を保存するヘッダはただのデファクトスタンダードでしたが、今は RFC …

2019/04/09 Java でのメモリチューニング

メモリチューニングを久々に。前回は OOM でアプリケーションが落ちる問題に対して調査したのですが、今回はマイナーGCが多発していました。 簡単な処理を大量にさばくアプリケーションなので基本的には Eden からすぐにメモリ解放されるオブジェクトばかり…

2019/03/28 Tomcat リリース備忘録

古いシステムのメンテナンスをする場面があり、Tomcat へ WAR ファイルをデプロイすることになりました。概念はなんとなく理解していたのですが Tomcat への実作業は初めてだったのでメモ。小さいシステムだったのでよかったですが、大きなシステムでドキュ…

2018/11/27 Maven, Spring のプロファイル設定

渋谷でお気に入りの居酒屋ランチがあって、今日同僚を連れて行ったのですが、食べログで非常に点数が高いお店だったようです。ランチはぶらぶら歩きながら決めることが多いので、評価はおろか店の名前すら知らなかったです(今も忘れました。。)。焼き魚も…

2018/11/19 Oracle Code One 2018 報告会 ボランティアしてきました

先週末より部署異動がありまして、新しい部署での勤務が始まりました。家からちょっと遠くなったのと、乗り換えがどうも上手くいかないルートばかりで最適ルートが見つかっていないので、しばらく試行錯誤しながら通勤します。 先日土曜日、こちらのイベント…

JMockit で File クラスをモックする

業務では JMockit(公式ページ)を利用してテストを書いているのですが、ファイル入出力を利用したクラスの単体テストが書きたいと思い、JMockit で File クラスをモックできないかを調べました。 JMockit とは Java の単体テスト向けフレームワークの1つで…

SpringFramework で OutputStream を扱う

大きなファイルを API を通じて返したい処理があり、そのままだとヒープ領域を圧迫して OOM エラーとなってしまうため、ストリーム処理で逐次データをクライアントへ返却するようにしました。 調べている最中に、まさに質問したかったことを Stackoverflow …

ヒープダンプやプロファイルを見るのに jvisualvm が便利

以前の記事で JMX へ接続するためのクライアントとして、jconsole を紹介しました: dev.bynatures.net この後作業していて、jvisualvm というコマンドでもヒープダンプを見ることができると知り、そちらの方が便利だったので紹介します。 詳しい紹介記事 ww…

MemoryAnalyzer で巨大なヒープダンプファイルを扱う

ヒープダンプを扱った際のメモです。 メモリを多く使うアプリケーションが OOM エラーで落ちる際に、ヒープダンプを出力すると後々に調査が可能だと知りました。アプリケーション起動時に XX:+HeapDumpOnOutOfMemoryError オプションを設定するか、JMX 経由…

JMX を jconsole/SpringBoot で使う

JMX を業務で触れたため、改めて調べたのでメモ。 とりあえず SpringBoot で動かす JMX に接続するためのクライアントに jconsole というツールがあります。Stackoverflow で "What is the best or most commonly used JMX Console" という質問を見ても jcon…

Jackson パッケージは fasterxml が新しい

少し前に、Jackson パッケージを使おうとしてハマったことがありました。 Jackson には com.fasterxml.jackson グループのモノと org.codehaus.jackson のモノがあります。Jackson は 2.0.0 以降からネーミングスペースが前者の com.fasterxml.jackson に移…

PermGen 領域に OOM エラー

OOM エラーに出くわしたのですが、よく発生する Heap 領域のものとは違うエラーが発生しました: java.lang.OutOfMemoryError: PermGen space Hive 関係のアプリケーションで発生していて、temporary function を大量に利用する処理を入れたばかりだったので…

アカデメイア ソフトウェア勉強会 #1 を実施しました

前職の方や異業種交流会で知り合った方と機械学習勉強会を運営していたのですが、今回はソフトウェア開発に特化させた勉強会を実施しました。 というのも、機械学習勉強会の参加者で「プログラミング自体を教えて欲しい」という方が多くいて、それならソフト…

「Hadoop 徹底入門 第2版」第2部まとめ(Java での開発)

「Hadoop 徹底入門 第2版」を有志で読み進めているので、そのメモを貼ります。 今回は第2部、8章〜10章、Java での開発方法と Tips です。 [toc]

Integer と Long を equals で比較すると false になる

タイトルを見れば Java に携わっている方ならすぐに察しが付くかと思うのですが、実際に動いているコードでこの問題が発生すると中々気付かなかったのでメモとして共有します。 数値型のオブジェクト同士を == で比較してはいけない Java において、オブジェ…

DevLove 「オブジェクト指向でコードが書けるようになろう。」に参加しました

DevLove「オブジェクト指向でコードが書けるようになろう。」に参加してきました。 講師の方は、有限会社システム設計の増田さんです。2012年に参加した Heroku Junior Camp でもお世話になりました。(「Heroku Junior Camp に参加しました」も合わせてどう…

Java Day Tokyo 2013 に参加しました

秋葉原 UDX で行われた Java Day Tokyo 2013 に参加してきました。(参加者も多く、何にせよ Java のイベントだということで、自分の備忘録的なエントリーになります。) 会場はメインホール1つ+サブルームが3つほどあり、午前の基調講演と夜の Java The Ni…

【読了】基礎からのサーブレット/JSP 第3版

ゴールデンウィーク後半は友人と会ったり家にいたのですが、せっかくまとまった時間が出来たので少し勉強でもしようかということで、「基礎からのサーブレット/JSP(第3版)」(Amazonへ) を読みました。 この本は2年ほど前に出版されてからすぐ買ったので…

Heroku Junior Campに参加してきました

社会人になってから初投稿なのですが、会社の先輩に教えてもらった勉強会に参加してきたので、今日はその感想を書きたいと思います。 イベント概要 (Heroku Junior Camp イベントページ) このイベントは、自分で選択した言語を用いて、これからソフトウェ…