仕事

2020年10月20日 (火)

【Excel】セル編集でフリーズ

Windows10アップグレード後にエクセルのセル編集で固まる。そんな時は↓

デスクトップ右下のIMEアイコンを右クリック → 設定 → 全般 → [互換性]「以前のバージョンのMicrosoft IMEを使う」をオンに変更。

| | コメント (0)

2020年10月13日 (火)

【Eclipse】 'Java ビルダー' の実行中にエラーが発生しました。

Eclipseで掲題のダイアログが連続で出て壊れた。そしてAST must not be nullとかなんとか・・・。javaエディタでインポートがいきなり失敗してこんな状態に。再インストールはめんどいし・・・、と思いながら色々試していると、解決法はインポートの失敗するソースのエラー箇所をコメントアウトすればダイアログ続出は治まる。またはimport文を手書きすれば直る。
その他試した事↓

・mavenプロジェクト更新
・/.m2/repository/org/codehaus を削除
・eclipseの-clean起動

1時間無駄にした、は~疲れた。

※参考:【エラー解決方法】Maven プロジェクト・ビルダー の実行中にエラーが発生

| | コメント (0)

2020年8月 1日 (土)

【mockito/JMockit】ネスト&staticメソッドテスト

Mocked、Injectableを使い分け。バージョンによっては使えたり使えなかったり。

1. ネストメソッドmock化(例:RestAPIのテスト)
----------------------------------------------------------------------
Client client = mock(Client.class, RETURNS_DEEP_STUBS);

// Clientをメンバに持つテスト対象クラス
TestTarget target = new TestTarget();

// メンバ変数に入れる
Whitebox.setInternalState(target, "client", client);
when(client.target(anyString()).request().post((Entity<String>)any(), any(Class.class))).thenReturn("");
t.do("url", "json");

// 呼び出し確認
Entity<String> entity = Entity.entity("json", MediaType.APPLICATION_JSON);
verify(client.target("url").request(), times(1)).post(entity, String.class)

2. staticクラス内で呼び出すネストメソッドmock化
----------------------------------------------------------------------
@Mocked
Test test;
---
new Expectation(test) {{
    // Expectationの中ではRETURNS_DEEP_STUBSは使わない
    t.get((XXX)any).getA().getB().getC();
    result = "ok";
}}

java.lang.reflect.Field field = XXX.class.getDeclaredField("test");
field.setAccessible(true);
field.set(null, test);

3. Propertiesのテスト(staticメソッドmock化)
----------------------------------------------------------------------
@Injectable
ResourceBundle resourceBundle;
---
// プロパティファイル切り替え
ResourceBundle p1 = ResourceBundle.getBundle("p1");
ResourceBundle p1 = ResourceBundle.getBundle("p2");
ResourceBundle p1 = ResourceBundle.getBundle("p3");

new Expectation() {{
    // テスト対象を呼び出すたびにプロパティファイルを変える
    ResourceBundle.getBundle(anyString);
    returns(p1, p2, p3);
}}

-------------------------------------------------------------------
staticネストメソッドはInjectableを使って2の方法でテスト。その他、Expectationで動かない場合はNonStrictExpectationで動くかも(この辺はバージョンによって異なる。)。以下、格闘したエラー。

・Misplaced argument matcher detected here. You cannot use argument matchers outside of verification or stubbing in Mockito.
・invaliduseofmatchersexception
・ClassCastException

| | コメント (0)

2020年6月 5日 (金)

【Mockito/JMokit】staticメソッド、static変数Mock化

ResourceBundle Mock化(プロパティファイル切り替え)
-----------------------------------------------------------------
@Injectable
Private ResourceBundle bundle;

@test
public void test() {

    // propertiesファイル 3回切り替え
    ResourceBundle bundle1 = ResourceBundle .getBundle("application_test1");
    ResourceBundle bundle2 = ResourceBundle .getBundle("application_test2");
    ResourceBundle bundle3 = ResourceBundle .getBundle("application_test3");

    expectations(bundle) {
        ResourceBundle.getBundle(anyString);
        returns(bundle1, bundle2, bundle3);
    }

    // Test内でResourceBundle.getBundleを呼び出す
    Test test = new Test();
    String result = test.do();
    assert...

    result = test.do();
    assert...

    result = test.do();
    assert...
}

java.nio.Files Mock化
-----------------------------------------------------------------
@Injectable
Private Files files;

@test
public void test() {

    // 例外のテスト等で使用
    expectations(files) {
        Files.delete((Path)any);
        result = new IOException();
    }

    Test test = new Test();
    String result = test.do();
    assert...
}

| | コメント (0)

2020年4月27日 (月)

【Angular】RESTAPIでJavaサーブレットからダウンロード

AngularのページからREST-APIでJavaのサーブレットと通信してファイルを取得し、ダウンロードしたい。

Masahiro's tech note:Angular ファイルダウンロード機能作成方法
↑この通りやったら本当にできた、感謝!

Java側は以下
stack overflow :what's the correct way to send a file from REST web service to client?

POSTしたいなら以下
備忘録:Angular FetchAPIを使ってGET/POSTする方法

最近までPlayFrameworkやらSpringが最強フレームワークかと思っていたが、気付いたら時代はJavascriptの時代になっていた。世の中一体何が何やら。

| | コメント (3)

2020年3月26日 (木)

【Java】Checkstyle execution failed due to an internal error.

Please check the error log for details...
!MESSAGE Checkstyle-Plugin: cannot initialize module TreeWalker.

eclipseのCheckstyleエラー。設定 → checkstyle → 使用中のcheckstyle → 構成からTreeWalkerのチェックを外して保存 → チェックを入れて保存、で直った。

| | コメント (0)

2019年7月29日 (月)

【Oracle】ORA-20000: Insufficient privileges for an object in this schema

テーブルが無いとか言われたが、指定したユーザが誤っていた。

| | コメント (0)

2019年2月25日 (月)

【Eclipse】FindBugsの実行方法【Java】

プロジェクトを右クリック → 「バグを検索」

CheckStyleのメニューはあるのにFindBugsというメニューが無く、ご丁寧に日本語化された「バグを検索」というメニューが存在。

やられた・・・。

| | コメント (0) | トラックバック (0)

2019年2月10日 (日)

【超高速開発】OutSystems評判

※開発者視点

◆メリット
 ・VBのようにwebアプリの画面を作成でき、感覚的に作れる。モックも手早く作成可能。
 ・コードの記述が詳細設計のフロー図のような仕上がりとなり、処理が見やすくなる。よって、詳細設計書が不要。
 ・エンティティの組み合わせでSQLを丸々書かなくてもクエリができあがる。勿論SQLも記述可。

◆デメリット
 ・ローカル環境で動作確認ができない(サーバが障害で止まると詰む、ローカルでのコーディングは可)
 ・上記の理由で常にサーバに最新を置かねばならず、常にSVNでいうコミット(Publish)作業が発生する。Publishが集中すると他の人と競合してMerge&Commitを何度も行わなければならず、これで1時間近くかかる事も。大人数での開発は工夫が必要。
 ・omlと呼ばれるローカル環境がたまに壊れてコード書き直し発生。予期せぬエラー的なメッセージが出るが、原因不明。※OSP9
 ・エンティティのカラムをnullでinsert/updateすると半角スペースに自動変換となる等(独自のクセがある)

◇結論
 便利だけど"超"高速と言われる程早く作れるようには思えないが、メンテの面ではその可読性によりちょっと早く改修作業が行えるような気はする。
 操作性は良く、1年以上プログラミングを経験した者なら感覚的に操作できるだろう。競合?のGenexusとOutSystemsでどのように違いがあるのかは分からないが、今度触る機会があれば比べてみたいと思う。

◇その他
 イベント駆動関数のScreenActionからScreenActionを直接呼べないのが辛かった。なのでJavascriptのonloadから呼び直したり、そういった小細工が開発時に時々必要。

| | コメント (0) | トラックバック (0)

2019年1月26日 (土)

【Eclipse】SVNインポート失敗時の対処

SVN:0x0040010b プロジェクト名を取得できませんでした
org.tmatesoft.svn.core.SVNErrorMessage.initCause(Ljava/lang/Throwable;)V


Eclipse起動時、eclipse.exeのショートカットを作り、そのリンク先をc\eclipse\eclipse.exe -clean.cmd というようにcleanを追加編集して
起動すると解消した。Eclipseの設定でSVNコネクターであるSVNKitがサーバーと合っていない場合もエラーとなる。

Java開発時にサーバーにあったeclipseフォルダを丸々ローカルにコピーして実行時に発生してしまった。

| | コメント (0) | トラックバック (0)