Java
UTで現在時刻を扱う際の課題 現在時刻を取得するためにSystem.currentTimeMills()やLocalDateTime.now()などのstatic methodを呼び出して利用することが多いが、static methodを利用して現在時刻を取得するとテストで利用する際の時刻のスタブを用意しずらく…
実装 思想 改修の場合、既存仕様や全体統一感に囚われ過ぎない。シンプル化、保守性向上を意識する 不要項目を含んだオブジェクトパラメータの是正 変数名が設定値と異なる名称であれば是正(影響範囲が広くなりすぎないかは判断) クラス構成 継承よりも移譲…
jenvのインストール brewでインストール brew install jenv 設定 Bashを使っている場合 echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile echo 'eval "$(jenv init -)"' >> ~/.bash_profile Zshを使っている場合 echo 'export PATH="$HOME/.j…
関数型インターフェースとは? 単一メソッドを持つインターフェース群 ラムダ 式で利用するのに都合がいい SE8からjava.util.functionパッケージに追加された ラムダ式を引数として取る場合に、関数型インターフェースを指定して受け取る。 ラムダ式の種類毎…
テストコード内でprivateメソッドを呼ぶことができず、publicにしたくなります。 そんなときはリフレクションを使って、privateメソッド呼び出すことでテストを書くとよいかも getDeclaredMethodはprivateメソッドでも取得可。getMethodでは、pravateメソッ…
ループ内更新による性能劣化を改善するために、S2Daoのバッチ更新で IO回数を減らしたかったので調査しました。 今回は、手動作成SQLファイルの実行を前提としています。 S2Daoのバッチ更新が使える条件 そもそも、手動作成SQLファイルの実行では、バッチ更…
メモリ設定方法 以下の設定を元に考えてみます。 -XX:MaxMetaspaceSize=128m -Xms256m -Xmx256m -Xss1m -XX:NewSize=100m -XX:MaxNewSize=100m |オプション|説明|設定値目安| |:-|:-|:-| |MetaSpace|libの読み込み、JSPのコンパイル結果つむ|64~256程度| |X…
Spring Boot内のLogbackを用いて、ログローテートを行う際の設定について以下にまとめます。 ログローテする場合のLogback設定 以下前提で設定しました。 ローテ―トタイミング:日別 最大保存ファイル数:3 保存形式:gz (ローテ―ト時に圧縮) <configuration> <springProfile name="develop"> <include resource="org/springframework/boot/logging/logback/defaults.xml" /> </include></springprofile></configuration>
マーシャリングとは? マーシャリング、アンマーシャリングという言葉がたまに出てくるが、 これは、オブジェクトをファイル、DBなどに保存できる形式に変換、または変換を戻すことを指す。 同義の用語としては以下がある。 ※マーシャリングは、シリアル化と…
BetwixtはJavaBeansを簡単にXMLに書き出すためのAPIです。 詳細は以下の参考URLを参照。 公式Doc http://commons.apache.org/dormant/commons-betwixt/ http://commons.apache.org/dormant/commons-betwixt/apidocs/index.html はじめてのJakarta Commons Be…
既存ソース修正後の保存時に修正していない箇所がフォーマットされて、本当に修正した箇所が分かりづらくなりレビュー時に怒られたことはないでしょうか。 フォーマット設定は2つあって、片方を修正したのにやっぱりフォーマットされる。。なぜだーと私はな…
今となってはもっとモダンな書き方があるのかもしれませんが、 開発時に使った書き方について備忘録として残しておきます。 プロパティファイル読み込み クラスパスの通ったresources以下にあるlog4jのプロパティを読み込む場合の記述方法です。 ClassLoader…
背景 まだ、SAstrutsから移行できずにいるプロジェクトが残っており、 そのプロジェクトがビルドできない。きれいな空プロジェクトをMavenを使って作成して、 ビルドできる状態にしようと考え、空プロジェクトを生成してみる。 環境 Mac OSX High Sierra Mav…
テンプレートを使った補完って便利ですよね。 あまり使っていなかったけど、便利なテンプレートを紹介してみます。 また、よく書く記述はテンプレート化して、入力量と記述ミスを減らしていくと無用なデバッグが減って 仕様確認、設計など大事なことに時間を…
Mavenで取得したJarのソースコードが参照できなかったので、 ソースコードのダウンロードを行う設定をMavenのEclipseプラグインで設定しました。 pom.xmlへの設定 buildタグ内に「maven-eclipse-plugin」の設定を追記。 <build> ・ ・ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>ma</artifactid></plugin></build>…
Javaで作られたシステムでドキュメントがない場合、システム理解を効率的に進めるためには、 DB設計書、ER図、クラス図の自動生成して、インプット情報とするのが良いです。 WindowsでEclipseを使って開発する環境をイメージしています。 自動生成ツールの導…
昔、RubyでHerokuにアプリを上げたりしてましたが、 Javaアプリをデプロイするやり方がわからなかったので、作業メモとして、残します。 Herokuのアカウント作成していない方は、作成して下さい。 クレジットカード番号は、不要で、メールアドレスのみ登録が…
1.Tomcatサーバー 設定ファイル server.xml Tomcatサーバー動作を定義する設定ファイルです。 配置パスは、/usr/local/tomcat/conf/以下や/opt/tomcat/conf以下に配置。 $CATALINA_HOME\confディレクトリ配下に配置するのが一般的。 設定イメージ <Engine -----> <Loggerタグの設定 ログX> <Host name="localhostA" > <Loggerタグの設定 ログY> </Host> <Host name="localhostB" >…</host></loggerタグの設定></engine>
Javaの例外クラスの基本についての要点を簡単に記載しておきます。 継承関係 -Throwable --Error --Exception ---RuntimeException -の数が、継承関係を示します。 各種例外の意味するところ 例外クラス 説明 Throwable throw文に指定できるかどうかを表すク…
Java8のLocalDateTimeからDateへの変換は思いのほか、骨が折れる。。 DBfluteのJava8対応で日時項目が、LocalDateTime型としてentity生成されているので、調べたがそもそも使わないというのもありかもしれない。。 LocalDateTimeからDateへの変換 その1 Loca…
システム日付のDate型を文字列に変換 SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String date_String = ft.format(new Date()); 日付の比較 compareToを使わないDate型の比較 Date型のcompareTo()の比較もあるが、戻り値が-1,0,1…
Seasarプロジェクト発のJSFをベースとしたフレームワーク Teeda 概要 機能 JSFの標準機能に加え, DIとAOPの機能を保持 POJO中心の開発スタイルを提供 モジュール構成 Teeda Core:JSFにおけるUIコンポーネント管理にSeasar2を利用する。 Teeda Extension:Tee…
DBアクセスを行うO/Rマッパー (DBFlute Runtime) DB周りの便利な各種ツール (DBFlute Client) DBFlueteの特徴 ORマッパー DBのメタ情報を元にコードを自動生成してくれ、SQL発行をタイプセーフに行うことができる。 JDBC APIのみに依存 DBのテーブル構造のま…
ページ駆動開発 ページ駆動開発の手順 3. Doltengを用い、EntityとDaoを作成 4. HTMLの入出力項目のタグのidにテーブル名のカラムを記述 5. HTMLのボタンのタグのidに処理メソッド名を記述 6. Doltengを用い、JavaのPageクラスを自動生成 ユーザー要件に合わ…
Seasar2によるスーパーアジャイルなWeb開発のChapter1の内容をピックアップ、自分の知見を少し追記してまとめました。詳細は書籍で確認してみてください。 プラットフォームの問題 再デプロイの問題 Searsar2の特徴 サクサク感のある開発 設定ファイルいらず…
下記、書籍における勉強したまとめをドンドン追記していきます! ちょっと古めな技術ですが、必要に迫られたので。Seasar2におけるAgile FamilyのTeeda、S2Daoの基礎知識を身につけていきます。 Seasar2によるスーパーアジャイルなWeb開発 (WEB+DB PRESS plu…
Eclipseの導入において、よく設定する内容を記載します。 下記のEclipse IDE for Java EE Developersをインストール https://eclipse.org/downloads/ 日本語化 eclipseの「新規ソフトウェアのインストール」を使う方法 http://www.shinbo.org/archives/7264 …
特徴 J2SE 5.0 で導入された ConcurrentHashMap クラスは、安全性に関する Hashtable の特長と、性能に 関する HashMap の利点を兼ね備えて 機能仕様は Hashtable と同じでありながら、アクセスのたびにロック するようなことがありません。通常は複数のスレ…
スレッドセーフを意識する必要がある処理 アンスレッドセーフなコード リード・モディファイ・ライト操作 チェック・ゼン・アクト操作 スレッドセーフな実装 参考URL スレッドセーフを意識する必要がある処理 同時アクセス処理 スレッド処理 アンスレッドセ…
1.eclipse.iniファイルの設定値(vmパラメータのみ) メモリ設定方法 vmargs server Dosgi.requiredJavaVersion=1.5 Dhelp.lucene.tokenizer=standard Xms1024m Xmx1024m XX:PermSize=256m XX:MaxPermSize=256m XX:NewRatio=2 XX:SurvivorRatio=8 XX:+UseParNe…