2021-01-01から1年間の記事一覧
mybatis の一般的なSQL Mapper の指定は、Mapper インターフェースクラスのパッケージと 同じ階層に、SQLMap XML を配置するか、Configuration のXMLで、 <mappers> <mapper resource="sql/sqlmap.xml"/> </mappers> で書くであろう。 Configuration のXMLを書かずに、さらに、SQLMap XML の PATH をMapper イ…
1年以上前、mybatis config 設定 = 接続情報等のXMLを使わないケースで 以下を書いた。 【再興】mybatis XML設定を使わない場合 - Oboe吹きプログラマの黙示録1つの Mapper に限らず、複数 Mapper を使用することもあるのだから、以下が良い。 public sta…
以前からJUnit には、あまり執着することがなかった。 カバレッジ率の為に無駄に近い労力をかけたくもなく、動いて当たり前のテストケースを 書くセンスの無さが厭だったからである。 今日は、今更の JUnit のことを書いてみたくなった。static メソッドのモ…
任意オブジェクト生成→属性設定済みを取得するのに、簡潔を目指していた。 例) import lombok.Data; @Data public class Member{ private String memberId; private String firstName; private String lastName; private int limitDays; public void setNam…
先日、Jackson を使用した JSONシリアライズ/デシリアライズで、snake Case と camel Case の 予め存在する方法のことを書いた。。。 oboe2uran.hatenablog.com大文字の snake Case の場合、どうするのだ!? とレアなケースで少し頭をかかえた。小文字の s…
リモートのGIT に存在するはずのブランチが、リモート origin をフェッチしても 表示されないことが、SourceTree であった。他のアプリ、Eclipse GIT でプルしたのを後からSourceTreeで開いたせいだろうか? 原因がよくわからないが対処は、 .git フォルダに…
ByteArrayOutputStream を使い回すコードを書きそうでいて、 めったに書かないコーディングである。 reset() を呼ばずに使い回すと前回の出力内容が残っていて思わぬ結果になる。reset() は、ByteArrayOutputStream 内部で持つ byte配列の書き込みカウンタを…
AWSコンソールから Lambdaを設定する作業で、 環境変数に、AWS_REGION というのをキーに、使用 Region をセットしようとしら、、Lambda was unable to configure your environment variables because the environment variables you have provided contains …
サンプル public interface Agent extends AutoCloseable{ public void execute(); } public class AgentImpl implements Agent{ @Override public void execute(){ System.out.println("AgentImpl::execute"); } @Override public void close() throws Exce…
Amazon S3 サービスのクライアント、 com.amazonaws.service.s3.AmazonS3 で、InputStream から S3 にアップロードする時、 com.amazonaws.service.s3.model.ObjectMetadata にセットする 長さ=content Length をわからない時に、どうやって調べて指定すれ…
既に生成済の SqlSession に対して後から SQL mapper を追加する方法 (設計として悪いので勧められない)セッションが持っている マッパーレジストリにマッパークラスを追加する。 import org.apache.ibatis.binding.MapperRegistry; import org.apache.iba…
Jackson で、次のような JSON をデシリアライズすると UnrecognizedPropertyException が発生 { "firstName": "太郎", "lastName" : "山田", "uId": "A001" } import lombok.Data; @Data public class UserInfo{ private String firstName; private String l…
設定コンフィグXML がある前提で、、 org.apache.ibatis.io.Resources を使用して、 import java.io.IOException; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFacto…
環境変数の取得は、System.getEnv(String) でも、setEnv など System には存在しない。 Java コード上から環境変数をセットしなければならないケースなんて、そうそうないのだけれど。。。参考は、How do I set environment variables from Java? - Stack Ov…
過去にこんな投稿をしていた。。。 Maven ファイルのコピー - Oboe吹きプログラマの黙示録 そして、gradle 使用では、、、 gradle の copy タスク活用 - Oboe吹きプログラマの黙示録Maven の方、、ビルド前、package や install タスクの前に実行したいとい…
Google guice は、通常のインジェクションの方法では、static 変数へのインジェクトはされない。ただし、Module の configure で、インジェクトしたい static 変数をもつクラスを以下のように指定すれば、requestStaticInjection(Class);可能ではある。Googl…
Google guice インターセプターでメソッドに付与されたアノテーションの状況を取得する。例えば、javax.inject.Named により、@Named("ABC") とメソッドに付与された場合で インターセプター側でこの Named で付与した文字列を受け取る。import org.aopallia…
Google guice の AOP インターセプターバインド定義で使用される Matchers には、 OR で一致を判定するものを提供していません。 com.google.inject.matcher.Matchers の static メソッドの一覧 any() 全て無条件に一致 only(Object) 指定するObjectに限定eq…
@Named 付与の判定は、Google guice の Module 定義をする時に、 Names.named スタティックメソッドを良く使います。 guice AOP でインターセプターを定義するときも、クラスやメソッドの Matcher には、 Matchers という マッチ検証をする static メソッド…
親になるpom で定義したMavenプロジェクトに子のMaven モジュールを作成するのは、 通常の方法では、親になるMavenプロジェクトを選択して右クリック [Maven]→「新規 Mavenモジュール・プロジェクト」を選択して作成していく。 既にある Mavenプロジェクトを…
Google guice の @ImplementedBy に対して、筆者は使用を避けてきた。 なぜなら、インターフェース宣言でこの @ImplementedBy( 実装クラス名.class ) は、 Injector (com.google.inject.Injector) で、約束する Module(com.google.inject.Module)で、 @Imp…
Python Python で JSON をマージするのに誰でも思いつく簡単な方法は、 JSON を辞書(dict)として読みこんで、dict(dict1, **dict2) の方法でマージする方法である。 簡単なサンプル import json j1 = ''' { "a": 1, "ary": [ 10, 11 ], "b":{ "b1": 20 } }…
先日、投稿したPython で書くシングルトンに続いて、 synchronized メソッド threading の Lock を使って書く。シングルトンのメソッドを synchronized にするモデルが適していると思う。 utility.py import threading def singleton(cls): instances = {} d…
Java だったら、private コンストラクタにした final クラスで synchronized の static メソッドでインスタンス取得する お決まりの実装だけど、Python はいくつか方法がある。getInstance() というメソッドでインスタンス取得させる方法 # -*- coding: utf-…
サンプル、 DELIMITER // DROP TABLE IF EXISTS sakila.t_item // CREATE TABLE t_item( id INT NOT NULL AUTO_INCREMENT , name VARCHAR(40) NOT NULL , message JSON DEFAULT NULL , PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_…
ObjectMapper の writeValue で、ByteArrayOutputStream に出力して byte[] → StringJSONテキストして整形して出力したいので、DefaultIndenter でインデント詳細を指定して ObjectMapper の writer で、DefaultPrettyPrinter を指定したうえで、writeValue …
MySQL バージョン 5.7.8 以降で使える JSON型に対する mybatis のハンドラ実装のサンプルです。 JSON型のデータが、単純な key-value だけでなくネストしたオブジェクトが入ったJSONでも、 Java のクラスのネストと対応できることを示すためのサンプルです。…
paramiko で対話式を処理するにはどうしたら良いのか? paramiko-pexpect とかを使えば良いのかもしれないが、invoke_shell() 、シェルとして実行する方法で 踏み台の先の telnet 接続してコマンドを流す方法を考えた。以下の例は最初のSSH接続の後、もう1…
文字列フォーマットのキー名による置換はよく以下のように書くであろう。 dburl="{dialect}+{driver}://{username}:{password}@{host}:{port}/{database}?charset={charset_type}"\ .format(dialect='mysql', driver='pymysql', username='admin', password=…
Handsontable は、DataSchema を定義しておけば 行挿入(row_above)で生成される行の初期値が定義した値になる。 DataSchema での定義は、Handsontable インスタンス生成のタイミングで決まる。 後からこれを変更するなんてナンセンスである。 また、DataSc…