ITコンサルの日常

ITコンサル会社に勤務する普通のITエンジニアの日常です。

Java

HerokuにデプロイするSpring Bootアプリでプロファイルを切り替える(VM引数の渡し方)

Heroku環境で、このVM引数の渡し方はイマイチ分からなかったので、 ググったら見つかりました。 devcenter.heroku.com ルートにProcfileっていうファイルを配置して、そこにコマンド書いとけばよいということらしい。 デフォルトでは、 web: java -Dserver.p…

英語ディクテーション学習Webアプリ(8)

taka-2.hatenablog.jp 前回の続き。 プロファイルでの環境差異の吸収 ローカルはオンメモリデーターベース、Heroku上ではPostgreSQLとなり、環境差異を吸収する必要が出てくるので、Spring Bootのプロファイルを調べて導入しないといけません。 というわけで…

英語ディクテーション学習Webアプリ(7)

ユーザ認証の実装 学習記録をとれるようにするにあたり、ユーザを識別出来ないとダメだろうということで、認証を作ってました。 自前でユーザ・パスワード管理しても良いのですが、あんまりパスワード持ってたくないよねってのもあったので、Spring Social T…

英語ディクテーション学習Webアプリ(3)

キーボードでごりごり出来るようにしてみた。 TOEICのPart3(複数人による会話)をやってみたけど、とりあえずこのキーバインドでやれないことはないという感じ。 ただ、カンマのありなしとかの判定はゆるくしないと、一々どっちでもいいだろというところが…

Basic Data Analysis with Java [Video] 見た

教材 Mapt - Developer skills delivered Contents Data Pre-processing Basic Data Analysis Applying Basic Analysis Implementing Statistical Data Analysis Techniques Using Java APIs Using JDBC to Access SQL and MySQL Databases Working with NoS…

HornetQでクラスタ構成にしたとき、HQ212034が出続ける場合の対処法

事象 下記のように、HQ212034のワーニングメッセージが繰り返し表示される。下記の通り、1回だけ表示されるなら無視してよいが、繰り返し表示される場合は問題がある。 20:59:08,455 WARN [org.hornetq.core.client] HQ212034: There are more than one serv…

HornetQでクラスタプロパティを有効にしたとき、NumberFormatExceptionが出る場合の対処法

HornetQ 2.4.0Finalrun.batのCONFIG_DIRの"non-clustered"を"clustered"に変更して、CLUSTER_PROPSの行をコメントインする。 クラスタプロパティを有効にしたrun.bat @ echo off setlocal ENABLEDELAYEDEXPANSION set HORNETQ_HOME=.. IF "a%1"== "a" ( set …

spring bootでapplication.propertiesにオリジナルのプロパティを作ったときに"'xx' is an unknown property."が出るときの対処方法

spring bootで複数のDataSourceにアクセスするサンプルを書いていたのですが、 http://docs.spring.io/spring-boot/docs/1.2.0.BUILD-SNAPSHOT/reference/htmlsingle/#howto-two-datasources を参考にまあ普通に出来ました。しかしその際、application.prope…

Spring Dataを使って、自動的に監査証跡を保存する

業務アプリケーションを作っていると、監査証跡ということで、作成者、作成日時、更新者、更新日時を保存するということがあると思います。Spring Dataのアノテーションを使うと、自動でセットしてくれるので、アプリケーションで決まりきったコードを書かな…

gitやsvnで管理しているpom.xmlのproject.versionはいつどうやって上げるのか

https://github.com/Jasig/sass-maven-plugin/commits/master/pom.xml とか https://github.com/apache/maven-surefire/commits/master/pom.xml とか見ると、以下のようにするのが良いらしいです。 まず、始まりのproject.versionは0.0.1-SNAPSHOTとか。 pom…

テスト対象クラス内でnewで生成されている依存オブジェクトをモックする

テスト対象クラス(DateUtil.java) import java.text.SimpleDateFormat; import java.util.Date; public class DateUtil { public static String getCurrentDate() { Date d = new Date(); return new SimpleDateFormat("yyyy/MM/dd").format(d); } } テス…

Verifications/FullVerificationsの違い

FullVerifications モックオブジェクト/クラスのリプレイフェーズでの呼び出し全てを検証する Verifications モックオブジェクト/クラスのリプレイフェーズでの呼び出しについて、Verificationブロックで指定したもののみ検証する テスト対象クラス(Hello.j…

Expectations/Verificationsの違い

Expectations 記録フェーズで使う。モックの振る舞い記録と、リプレイが行われたことの検証に使われる。 Verifications 検証フェーズで使う。行われたリプレイの検証に使われる。Expectationsと違い、モックの振る舞い記録ができない。(result変数への代入…

Expectations/NonStrictExpectations/StrictExpectationsの違い

Expectations 最低一回は呼ばれる、順番は関係ない NonStrictExpectations 回数、順番関係なし StrictExpectations 呼び出し回数と順番がマッチしないとダメ ということですね。 テスト対象クラス(Hello.java) public class Hello { public static String …

@Mocked/@Injectableの違い

@Injectable 特定のインスタンスのみモックする @Mocked 全てのインスタンスをモックする テスト対象クラス(Hello.java) public class Hello { public static String helloStatic() { return "helloStatic()"; } public String helloInstance1() { return …

@Mocked/@Capturingの違い

@Capturing テスト実行の間にJVMによってロードされる追加のクラスについてもモックする @Mocked テスト実行の間にJVMによってロードされる追加のクラスはモックしない テスト対象クラス(Hello.java) import java.io.File; import java.io.FileFilter; pub…

JMockitでprivate static finalな定数を書き換える

設定ファイルにするまでもないものは定数で定義したりしますが、違う値でテストしたいときがあります。 jmockitを使うと(使わなくても)簡単にできるのですが、一点ワナがあったのでメモしておきます。 テスト対象クラス(Hello.java) public class Hello …

log4j(1.2.14以前)でRollingFileAppenderを使うと、ログ切替時にログが消失する場合がある。

log4jの問題というよりは、パーミッション設定の問題で、ログファイル自体には書き込み権限はあるが、ログファイルを出力するディレクトリに書き込み権限がない場合に起こります。 ■ログファイルには、書き込み権限がある taka@taka-VirtualBox:~/log4jtest$…

FindBugsで"static な java.text.DateFormat のメソッドを呼び出しています。"が警告される件

まあ、日本語を読んだだけでは意味が分からなくて、色々ググってたら以下を見つけた。 Call to method of static java.text.DateFormat not advisable? - Stack Overflow つまり、java.text.DateFormatはスレッドセーフじゃないのに、staticなメソッドから呼…

S2DaoでEDAO0024が出る場合

なんでS2Dao? 次に参加するプロジェクトで使うかも知れなかったから。 しかしドキュメントが分かりづらい。。 S2Dao - S2Dao-Tigerリファレンスを読みつつやってたわけですが、 まずは動くところまでのクイックスタートがあって、その上で、詳細の説明がある…

終了しないプロセス

以下が再現用のプログラム。 public class test { public static void main(String[] args) throws Exception { new Thread(new Runnable() { public void run() { while(true) { try { System.out.println("Hello!"); Thread.sleep(1000); } catch(Interrup…

switch文は、case式の書き方によって、lookupswitch命令か、tableswitch命令のいずれかにコンパイルされる模様。

確かにString.equalsは文字を1つずつ評価していてハッシュ値が使われてないですね。switchでは文字列をインターン化するかも? @taka_2 @ryoasai74 if文はif_icmpneなどの命令に、switch文はtableswitchという命令に置き換わる2011-09-22 23:45:20 via Tween…

Google Apps の OpenID 連携ログイン サービスを使ってみる(今度は成功)

GoogleアカウントのOpenID連携ログインに比べて、やることがいくつかあります。 1. ドメインを取得する 2. サーバを用意して、http://example.com/でアクセス可能にしておく。 3. Google Appsに登録する(無料版で(for Businessじゃなくても)OK) 4. OpenI…

Google Apps の OpenID 連携ログイン サービスを使ってみる(失敗)

前回の openid4javaを試すなど で、GoogleアカウントのOpenID連携をやったんですが、 今回は、Google Appsアカウントでやってみようという企画です。 結論から言うと、 Google AppsのアカウントでOpenID認証するためのURL - 森薫の日記 に書いてある、 https…

VB.NETでは、Returnの後の実行されない処理書いても、コンパイルエラーにならない。

VB.NETの場合 ソース Imports System Class Test Public Shared Sub Main Hoge() End Sub Public Shared Function Hoge As Integer Return 0 Console.WriteLine("abc") End Function End Class コンパイル結果 >vbc Test.vb Microsoft (R) Visual Basic Comp…

openid4javaを試すなど

openid4java openid4java - OpenID 2.0 Java Libraries - Google Project Hosting ファイルの配置 EclipseでTomcatプロジェクト作って、以下のように配置します。 OpenIDTest │ index.jsp │ index2.jsp │ ├─src │ LoginWithGoogle.java │ └─WEB-INF │ web.xm…

シンプルなJPDA(Java Platform Debugger Architecture)のサンプル

参考図書 Eclipse 3.6 完全攻略作者: 宮本信二出版社/メーカー: ソフトバンククリエイティブ発売日: 2010/11/24メディア: 大型本購入: 4人 クリック: 62回この商品を含むブログ (6件) を見る 準備 public class Main { public static void main(String[] arg…

if-elseの最適化(フラットなif-else if-elseを、二分木に展開)

テキスト ハイパフォーマンスJavaScript作者: Nicholas C. Zakas,水野貴明出版社/メーカー: オライリージャパン発売日: 2011/03/20メディア: 大型本購入: 9人 クリック: 1,176回この商品を含むブログ (34件) を見る お題 4.2.2 if-elseの最適化に載ってるの…

ダフズデバイスでループ回数を減らす

テキスト ハイパフォーマンスJavaScript作者: Nicholas C. Zakas,水野貴明出版社/メーカー: オライリージャパン発売日: 2011/03/20メディア: 大型本購入: 9人 クリック: 1,176回この商品を含むブログ (34件) を見る お題 4.1.2 ループのパフォーマンスよりル…

OmegaTでJavaソース(javadoc)を翻訳するときの設定(訳文ファイルを生成したときに改行コードが消える問題の対策)

1.OmegaTを起動し、メニューより、設定→ファイルフィルターを選択します。 2.テキストファイルを選択し、編集ボタンをクリックします。 3.追加ボタンをクリックします。 4.原文ファイル名の構成例に「*.java」を入力し、確定ボタンをクリックします…