Chonaso's Commentary

InternetやIT技術などについて知ったこと、試したこと、考えたことを書いていきます。

Java

RundeckのSlack通知テンプレート更新

Rundeckはシンプルなジョブコントローラーですがプラグインによる機能拡張が可能です。 Rundeckのジョブ実行に関する通知をSlackへ飛ばすには公式GitHubにあるslack-incoming-webhook-pluginというプラグインを使用します。 インストール自体はJARファイルを…

【Java8】実録 緊急JVMチューニング

発端 メモリ設定の確認 メモリ使用状況の確認 必要メモリを決める Native領域 Heap領域 ヒープが足りているかの判断 Full GC頻度/時間 Old使用量の増加トレンド メモリリークしていないか その後 追記 発端 Amazon EC2でTomcat/Java8を運用していたとあるサ…

JJUG CCC 2018 Fallに行ってきました #jjug_ccc

ここのところ、仕事の大半がPHPなのでJavaの話題に触れたい&刺激をもらいにJJUG CCC 2018 Fallに足を運びました。 所用があったので後半からでしたが非常に興味深い内容ばかりでした。 Deep dive into instanceof #ccc_a5 Deep dive into instanceof 広告配…

JJUG CCC 2017 Spring #jjug_ccc に行ってきました

ここ1年、業務へのモチベーションが全く上がらず、それにつられて業務外での情報収集も怠っておりました。 環境も変わる兆しが見えてきたところで少しはモチベーション上げていかないとなぁ、ということで刺激を求めてJJUG CCC 2017 Springへ参加してきまし…

Doma勉強会 in 東京に行ってきました #doma_tokyo #eventdots

Doma は Java のDBアクセスフレームワークです。(Welcome to Doma — Doma 2.0 ドキュメントより) 私が仕切る案件では基本的にDomaを使っています。 部門的にはSeasar2+S2JDBCがスタンダードでしたが、Seasar2が公式アップデートはぼちぼち終了になるので、 …

Domaで複数データベースを扱う

きちんと探せばサンプルありそうな気がするんですが、こんな感じで解決しました、という一例として残しておきます。 Domaを使い始めて2年以上経ってるはずなんですが、振り返ると複数データソースは初めてでした。 daoやentityのパッケージングはどうしたも…

S2DBCPのコネクションプール状態の取得

今さらSeasar2関連です。 HikariCPのデバッグログではコネクションプールの状況を逐一ログに出してくれるのですが、 S2DBCPはそういう機能が見つからなかったので作ってみました。 SAStrutsのアクションとして実装しています。 一つのアプリで複数のプールを…

AngularJS & Jerseyでファイルアップロード&JSONでパラメータ連携

Jerseyでのファイルアップロードって、よく見かけるサンプルではファイルもパラメータもmultipart/form-dataで一緒くたにされてしまいますが、実際にはパラメータ内に配列やオブジェクトが含まれていることが多いので、やっぱりいつも通りJSON経由で一撃でバ…

mavenデプロイで軽くハマった件

初期開発ベンダーの秘伝のタレのようなbuild.xmlから脱却して、コモディティ化されたビルド・依存性管理とビルド成果物の管理をきちんとやらなきゃダメ、ってアジし続けて最近になってようやく許しが出たのでSonatype Nexusをセットアップして既存プロジェク…

Seasar2使いがこの先生きのこるには

(手前ツイートですが) ひが氏「Seasar2から卒業して欲しい&Seasar2サポートは2016.9.26で打ち切る 」#seasarcon— ちょなそ (@chonaso) 2015, 9月 26 当初、色んな考え方を書こうと箇条書きにしてみたらかなり発散しちゃったので、あの場で自分が思ったこと…

Seasar Conference 2015 Not 同窓会 But 卒業式 #seasarcon

というわけで行ってきました。 個人的には技術云々のセッションにはほとんど参加せずいわゆる"エモい"セッションに多く参加しました。 ていうかずっとS405に居ました。

メモリが少ない環境でのJava8使用の注意点

諸般の都合でどうしてもメモリが潤沢ではない環境でのテストを行わなければならない場合があるかと思います。 また、Java7もすでにEOLということでJava8の開発も多くなっているかと思いますが、Java8になって初めて遭遇した問題がありました。 そんなわけでJ…

Seasarに思いを馳せる

思いを馳せるどころか今でも普通に使ってるわけですが。 それどころか、Javaメインで数社・3桁近いプロジェクトに携わってきたのになぜか仕事でSpringやGuiceを使ったコードに全く関わることがありませんでした。(なのでプライベートで書き始めることにしま…

第九回 #渋谷Java RaspberryPi+Javaを試してみる

第九回 #渋谷java (2014/12/13 14:00〜) 元々LTの予定になかったのですが「空きが出ましたので」ということで 手元にあったちょいネタをその場で枚数増やして急遽参戦させてもらいました。 第九回渋谷Java RaspberryPi+Javaを試してみる from chonaso ラズパ…

JerseyTestでHttpServletRequestを使いたい

Jerseyのテストフレームワークは小気味よく動くけどフィルタとかちょっと凝ったことしても通るんだろうか、と不安に思っていたらやっぱりテストが通りませんでした。 どうもHttpServletRequestなどServletエンジンに依存するオブジェクトが取れない(nullにな…

mavenのローカルキャッシュがおかしくなっててハマった件

こういうレベルでハマると運が悪いとずっとハマりそう、という話です。

DBFluteフェス2014に行ってきました

昨年に続き「DBFluteフェス2014」に行ってきました。 以前、渋谷Java*1でDomaの@nakamura_toさんが参加されていた際に@jfluteさんがDBFluteフェスへの参加を呼び掛けるというプロレスのような展開があり、往年のSeasarファン垂涎のDBFluteフェスが実現しまし…

不作法なWebAPIにハマる

プロダクトコードなので詳細は非公開ですが、とあるパブリックじゃないWebAPIへのアクセスで激ハマりしたのでその記録などひとつ。 そのWebAPIの仕様書(のようなもの)にはレスポンス内の文字コードについての言及がなく、「メッセージは英語なのかな」って勝…

twitter4jでハマったこと

社内のハッカソンでTwitter(twitter4j)を使ったアプリを作りましたが、時間内に解決できなかった問題があって、調査の時間も取れずになかなか解決できずにいました。 問題というのはすぐにAPI制限がかかってしまうというものです。 429:Returned in API v1.1…

nullを許容する2Way-SQL

別に意図したわけじゃないんですが、長い文章の記事しか書いてないせいで記事を書くハードルがやたら上がってしまっているので短い記事を増やしてハードルを下げようかと思います。 というわけで、最近Domaを使ったアプリのコーディングにちょっとだけ参加し…

第7回 渋谷Java Apache Shiroを使ってみた

渋谷JavaでLTさせていただきました。 第七回 #渋谷java - connpass 小規模な開発でApache Shiroを使ったので紹介と感想などを発表しました。 やっぱり駆け足になってしまった・・・。 第七回 渋谷Java - Apache Shiroを使ってみた from chonaso

Hinemosを導入する上で気を付けること

訳あってHinemosをジョブコントローラとして利用しているシステムがあります。 ジョブコントローラは以前にとある商用プロダクトを導入したことがあったためか「Hinemosでよろしく」といきなり導入を無茶振りされました。 導入は1年半ほど前ですが、なんかも…

第六回#渋谷Java Java8のJVM監視を考える

第六回 #渋谷java - connpass 第二回以来2回目のLTをさせていただきました。 (参考) 第二回LT Javaアプリケーションサーバの監視 - Chonaso's Commentary@hatenablog 第二回 #渋谷Java まとめ - Togetterまとめ 第六回渋谷Java Java8のJVM監視を考える from …

Javaアプリケーションサーバの監視

渋谷Java第二回で発表した内容のもう少し掘り下げた内容です。 主にUNIX系OSでのJavaアプリケーションサーバ運用を想定しています。 なおJava7以前のVMを取り扱っていますが、Java8においてもPermanent以外はほぼ同様かと思います。 運用フェーズのリソース…