JJUG CCC 2024 Spring の発表資料です

要約 技術的な話だけ教えて、という方のために先に結論だけ書いておきますと、PostgreSQLはクエリを実行した時点で全レコードの情報を一気に読んできてヒープを埋めてしまう場合がある、ということ話です。 たとえば、ResultSet#nextメソッドを使いながら処理を回すようなコードを書いて、少ないヒープでも処理できるようにするのは常套手段だと思いますが、そういうコードを書いていても一気にヒープを消費してしまうことがあるのです。詳しくはこのドキュメントを見てください。 https://jdbc.postgresql.org/documentation/head/query.html#query-with-cursor ことの発端 ちょっと仕事でJava + jOOQ + PostgreSQLで、DBのデータを集計するようなバッチ処理を書いてまして、もちろん俺様の書いたコードにバグなんてある
何度か教えていただいているので、今度こそしっかり覚えておきたくて、まきさんからのコメントを記録。 ## メモリサイズの考え方 SpringBootのアプリをコンテナとして動かす場合には768MB以上必要で、1GBくらいは割り当てる必要があるのではないかという僕のコメントに対していただいたコメント。 それは不正確..Tomcatを使う場合は最大コネクション(スレッド)がデフォルト200で+50スレッドくらい余裕を見ると250M (-Xss1M)でデフォルトのReservervedCodeCacheSize 240MとDirectMemorySize 10M加えた上にMaxMetaSpaceSizeがざっくり50Mくらい足すと550Mくらい使ってこれHeapを足すとコンテナサイズ— Toshiaki Maki (@making) November 16, 2019 その前提であればHeap 2
ドメイン駆動設計、どこまでやるべき? 開発現場の“問題”を乗り越えるためにできること ゲーム開発におけるドメイン駆動設計とサーバレスアーキテクチャ #1/2 2019年2月7日、『神姫PROJECT』などソーシャルゲームの企画・開発を手がける株式会社テクロスが主催するイベント「TECH x GAME COLLEGE」が開催されました。渋谷発エンジニア勉強会「ヒカ☆ラボ」とコラボレーションした今回のテーマは「ゲーム開発におけるドメイン駆動設計とサーバレスアーキテクチャ」。過去にTECH x GAME COLLEGEにて講演を行ったギルドワークス株式会社取締役の増田亨氏と、Game Server Services株式会社代表取締役社長CEOの丹羽一智氏をゲストに招き、参加者から事前に募った質問に解答していただきました。前半の本パートでは、ドメイン駆動設計(DDD)やFaaSの未来、チームビルデ
ご存知の方も多いかと思いますが、SendGridは2/1に正式にTwilioの中に入りました。 Ahoy, Twilio SendGrid! 🎉 We're excited to share that @SendGrid officially becomes Twilio SendGrid today, creating the unquestioned and most trusted customer engagement platform for developers and companies! ☎️ ✉️ ♥️ https://t.co/RuQyoybsuM— twilio (@twilio) 2019年2月1日 せっかくなのでTwilioを触ってみようと思って、早速Javaを使って遊んでみました。びっくりするぐらい簡単に自分の携帯へ電話をかけて、音声を流すことができたのでまと
All slide content and descriptions are owned by their creators.
Spring Framework Advent Calendar の 7 日目です。今日はふたたび Spring Security の話です。小出しにしているような感もありますが、気にせずいきましょう。 以前 Spring Security でアカウントロック機構を実現する - 倖せの迷う森 にて、Spring Security では認証の成功や失敗に対応するイベントハンドラがあり、それらのイベントに対応する Listener を書いて Bean 登録しておけば自動的にそれが呼び出される、という話をしました。 さて、あなたが現在作成中の Web システムにこのような認証に関する要件が与えられたとします。 認証はIDとパスワードで行う パスワードには有効期限がある 有効期限を過ぎたパスワードでログインした場合、パスワード強制変更画面に飛ばす 以前紹介した ApplicationListene
JJUG CCC 2016 Spring で発表した時の資料です。
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Apache Camelに関して ダウンロード http://camel.apache.org/download.html 軽量なEIPフレームワーク(メッセージ処理フレームワーク)。 http://www.eaipatterns.com/toc.html 色々な処理に関して考慮されたフレームワーク。 MVCが画面系の表なフレームワークで、EIPフレームワークは裏方のフレームワーク。 画面処理がないのに頑張ってMVCフレームワークで裏方なプログラムを書いている? (逆にCamelはViewという概念が無いので画面系は弱い) SAP HA
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる(四則演算するだけだけど) #ccc_c5 このセッションでは、四則演算するだけの簡単なJVM言語の作り方を紹介します。 言語はCode -(Lexer)-> Tokens -(Parser)-> AST -(Compiler)-> JVM bytecodeと変換して、JVMで実行します。今回Lexer/Parserの部分にANTLRを、それ以降の部分にTruffleを使います。とくにANTLRやTruffleについての事前知識は必要ありません。BNFを定義してANTLRを使ってASTを構築し、それをTruffleのASTに変換して渡すという実装部分について、各ライブラリの概要やAPIを紹介しながら説明します。すべてを丁寧に説明する時間はありませんので、このセッションで出たキーワードを各自あとで調べて学びを深めていただくこ
非常に面白い話題ですね!ちょっと簡単にまとめてみました。参考になれば幸いです。 話は若干逸れますが、そもそも相互参照がつらいって話があるので、その話から。DDD二部 関連の章を読んでいたら理解できると思いますが、双方向の関連は仕様を満たしているか検証する実装コストが高いと思います。 Line line = new Line(id); Point point = new Point(id); point.setLineId(line.getId()); // --- (A) line.addPoint(point); // --- (B) この場合、(A), (B)は両方の状態が正しく設定されていないといけません。しかし、実際は(A)もしくは(B)の参照の設定を忘れてしまうと、どちらが正しい状態を示しているか見分けがつかなくなります。 まぁ、それだけ参照が増えるというのは設計や実装が複雑にな
LINE Developer Meetup in Fukuoka #9で発表したスライドです http://connpass.com/event/10470/
より詳細なCQRSに関する資料はこちら https://little-hands.hatenablog.com/entry/2019/12/02/cqrs 参考資料:http://little-hands.hatenablog.com/entry/jjug2017fall 社内新規プロダクトでDDD, CQRSの思想をベースとしたアーキテクチャを構築し、コマンド(更新系処理)ではSpring Data JPA(Hibernate)を、クエリ(参照系処理)ではjOOQを採用しました。 結果としてそれぞれのORMの良いところを生かした組み合わせのアーキテクチャが構築できたので、その経緯と得られた知見についてお話ししたいと思います。 以下のようなトピックを考えています。 ・CQRSの定義とメリットデメリット ・DDD,CQRSを検討するにあたってのORMの選定ポイント ・構築したアーキテクチャ
ポリモーフィズム(サブクラスによる切り替え、抽象化) ここに分類されるのは、オブジェクト指向の第3原則、ポリモーフィズムを使用したパターンです。ポリモーフィズムを使用すると、動的に使用するクラスを切り替えることができます。<参照> 他に分類されているものでも、ポリモーフィズムが重要な位置を占めているものもありますが、ここではそれしか使われていないものを扱います。 ただデザインパターン全体を通して強調されているのは、インターフェースでプログラミングするということです。実装への依存をなくし、そうすることによって設計の骨組みを明らかにするのです。 Template 次のようなメソッドがあった場合に、処理Bのところを条件によって変えたい場合があるとします。 class Hogehoge { void doit() { ... 処理A ... ... 処理B ... ... 処理C ... } }
去年Androidソースコードレビューで指摘する事が多い項目まとめという記事を書いた時はアプリ全体を一度に見るような機会が多かったため、内容も大きめのものばかり書いていましたが、最近はプルリクエスト単位でレビューする機会が増えたので細かい項目についてまとめてみようと思います。 ミリ秒で時間を指定する時に自前で計算している 1000L * 60L * 60L * 24Lのようなコード。 TimeUnitを使いましょう。 24時間の場合は以下のように書けます。 TimeUnit.DAYS.toMillis(1L) ある文字列がhttp/httpsで始まるかチェック URLUtil.isNetworkUrl()を使いましょう。 ただしequalsIgnoreCaseで判定してます。 ベースURLにパラメータを付与していってURLを生成したい StringBuilder#append("&key=
結論からいうと、Play Frameworkがちょっと思ったより独自色+カジュアルな感じだったので、今回はSpring使う方向で考えています。 なのでフェアな比較記事路線ではなく、実際に使う上での懸念事項などをまとめたメモになります。 概要 当初はDIコンテナだったが、併用が想定されていたStrutsの出来が悪いため独自のMVCフレームワークも作られ、結果的にフルスタックになっている。ただしプロジェクトごとに使いたい機能を一部分だけ使うことができる。 メリット Spring Bootによって導入が簡単になった。 一部分だけを使えるので、一度学習するといろんなプロジェクトで利用/応用できる。 ネット上の情報は非常に多い。Spring MVCも海外ではStruts以上に使われている。 デメリット Java EEなみに大きなプロジェクトで、全容を把握しづらい。 学習コストはそこそこ高い。 メリッ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く