読者です 読者をやめる 読者になる 読者になる

プログラマとプロマネのあいだ

プログラマもやるし、プロマネもやるし、たまに似非アーキとか営業っぽいこともやる

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

Java

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

しかしその際、application.propertiesに標準には存在しないプロパティを設定したため、STSのapplication.propertiesの編集画面で、

"'datasource.primary.url' is an unknown property."

という警告が表示されました。
書いたapplication.propertiesは下記の通りです。

datasource.primary.url = jdbc:h2:~/test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
datasource.primary.username = sa
datasource.primary.password =

datasource.secondary.url = jdbc:h2:~/test2;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
datasource.secondary.username = sa
datasource.secondary.password =

これを回避するには、META-INF/spring-configuration-metadata.json
というファイルを作成します。実際のファイルは下記の通りです。

{
	"groups": [
		{
			"name": "datasource.primary",
			"type": "org.springframework.boot.autoconfigure.jdbc.DataSourceProperties",
			"sourceType": "org.springframework.boot.autoconfigure.jdbc.DataSourceProperties"
		},
		{
			"name": "datasource.secondary",
			"type": "org.springframework.boot.autoconfigure.jdbc.DataSourceProperties",
			"sourceType": "org.springframework.boot.autoconfigure.jdbc.DataSourceProperties"
		}
	],
	"properties": [
		{
			"name": "datasource.primary.url",
			"type": "java.lang.String",
			"description": "JDBC url of the database.",
			"sourceType": "org.springframework.boot.autoconfigure.jdbc.DataSourceProperties"
		},
		{
			"name": "datasource.primary.username",
			"type": "java.lang.String",
			"description": "Login user of the database.",
			"sourceType": "org.springframework.boot.autoconfigure.jdbc.DataSourceProperties"
		},
		{
			"name": "datasource.primary.password",
			"type": "java.lang.String",
			"description": "Login password of the database.",
			"sourceType": "org.springframework.boot.autoconfigure.jdbc.DataSourceProperties"
		},
		{
			"name": "datasource.secondary.url",
			"type": "java.lang.String",
			"description": "JDBC url of the database.",
			"sourceType": "org.springframework.boot.autoconfigure.jdbc.DataSourceProperties"
		},
		{
			"name": "datasource.secondary.username",
			"type": "java.lang.String",
			"description": "Login user of the database.",
			"sourceType": "org.springframework.boot.autoconfigure.jdbc.DataSourceProperties"
		},
		{
			"name": "datasource.secondary.password",
			"type": "java.lang.String",
			"description": "Login password of the database.",
			"sourceType": "org.springframework.boot.autoconfigure.jdbc.DataSourceProperties"
		}
	]
}

これらのプロパティは、標準プロパティのspring.datasource.xxと同じですが、どこかに定義されているはず、ということで色々漁って見つけました。
spring-boot-autoconfigure-x.y.z.RELEASE.jarのMETA-INF/spring-configuration-metadata.jsonにあります。

実際設定できるプロパティは、url, username, passwordだけではありませんので、他のプロパティも必要に応じてspring-configuration-metadata.jsonに定義してあげると良いかも知れませんね。

totes A254 AUTOMATIC OPEN&CLOSE TITANIUM NAV(折りたたみ傘)をリピート

taka-2.hatenablog.jp

2年ちょっと愛用してましたが、穴が開いたり結構ひどいことになったので、買い替えることにしました。それ以前に使っていたユニクロの折りたたみ傘などに比べると、かなりの長期間持ちこたえた印象です。もう少し丁寧に扱って、定期的に油を差すなどの対応をしていれば、さらに使えたかも知れません。

私のこだわり?として、天気に関わらず折りたたみ傘は常にカバンに入れておくことにしてます。とりわけスーツを大切にしているとか、そういうのじゃないんですが、常にカバンに一定の重量が増えるデメリットと引き換えに、突然の雨に立ち往生するリスクへの対策をしているということでしょう。

また色々比較検討してもよかったんですが、面倒だったのでまたおんなじのにしました。

www.amazon.co.jp

 またしばらく愛用していきたいと思います。

バッチでエラー発生時、クライアントに通知する仕組みをWebSocketで実現

■概要図

f:id:taka_2:20160903192047p:plain

 

メール通知でよくないか?

というツッコミはさておき、考えてしまったものは仕方ない。といったところでしょうか。

 

■疑問点

・RestControllerとWebSocketHandlerをどうつなぐのか?

・.NETのWebSocketクライアントと、Java(spring boot)のWebSocketサーバはつながるのか?

 といった疑問を解消すべく、動作検証してみました。

 

■参考URL

サーバサイド:

pgcolony.com

クライアントサイド:

 [C#]System.Net.WebSocketsを試す。その1。ClientWebSocket編。 | Kimux.Net

 

 この二つのサンプルを組み合わせれば完了です。

一応自分のgithubリポジトリにも作ってみました。

https://github.com/taka2/spring-boot-websocket-sample

https://github.com/taka2/web-socket-client-sample-dotnet

 

 ■疑問点の解消

・RestControllerとWebSocketHandlerをどうつなぐのか?

→RestController側に、WebSocketHandlerを@Autowiredすれば普通に呼べる

 

・.NETのWebSocketクライアントと、Java(spring boot)のWebSocketサーバはつながるのか?

→.NETで使えるWebSocketクライアントはいくつかあるようです。

・WebSocket4Net

websocket4net.codeplex.com

・websocket-sharp

github.com

・標準のSystem.Net.WebSockets

 

・WebSocket4Net

よさげだったのですが、うまくつながらず(Javaとの相性?)

websocket-sharp

自分でビルドするか、買わないといけないらしく、あきらめた。

・標準のSystem.Net.WebSockets

うまく動作しました。ただし、Windows8以降しか対応していないようなので、実務では使えません。どうするか要検討です。

 

というわけで、課題はあるものの、仕組みとしては実現可能ということが分かりました。しかし、もっとシンプルな仕組みにできないものですかね。

プレミアム会員にならなくてもヤフオクに出品できた

以前、ヤフオク!と楽オクを比較したんですが、

taka-2.hatenablog.jp

楽天オークション終了のお知らせだそうですね。

auction.rakuten.co.jp

やっぱり時代はネットフリマかーと思い、色々ググってたんですが、なんかヤフオク!がフリマアプリとして出てくるんですよね。で、iOSヤフオク!アプリの出品ボタン押してみたら、即決価格での出品はプレミアム会員にならなくてもできるようになってるみたいです。

新出品機能「ワンプライス出品」リリースのお知らせ -お知らせ - ヤフオク!

この記事にはプレミアム会員じゃなくもよいっていう重要なことが書いてないですけどね・・

 

というわけで、早速いらなくなった初代iPadを出してみたら、一瞬で売れてびっくり。ヤフオク!はすごいですね。プレミアム会員じゃないと、10%の手数料を取られるそうですが(プレミアム会員は8.64%)、便利なのでちょくちょく利用させてもらおうと思います。

パソコンを交換

IT

電源ボタンの接触部が物理的に壊れてしまい、やむなく交換となりました。
たまたま義母が最近パソコンを買ったので、使わなくなったものをもらいました。
まあ、これは自分が選んだやつなので、スペックもそこそこで普通に使えそうです。


■マシンのスペック比較

- 壊れたやつ 交換したやつ
CPU Core i5-2400 Core i5-3470
メモリ 8GB 4GB→8GB(メモリを入れ替え)
ディスク SSD120GB+HDD500GB SSD120GB+HDD500GB
OS Windows10 Pro Windows10 Pro(ライセンスをコピー)


若干立ち上がりが遅いような気がしますが、気のせいでしょうか。
あと、壊れたPCについてたSSD+HDDのデータは、すぐには使わないのですが、
一応読み出せるよう、ハードディスクケースってのを買ってみました。



最近動画編集とか、ハイスペックを要求する作業をしていないので、
またこれで2〜3年は使えそうです。


ちなみにWindows7からWindows10に無償アップグレードしたクチなんですが、
Windows 10 のダウンロード
からツールを入手して、ISOイメージを作ると、クリーンインストールするDVDが作れます。
無線LANつないで、Chromeインストールしたら、大体普段のことは出来ちゃいますから、
クリーンインストールでも問題なかったです。

さくらのクラウド使ってみた

IT

昨日、
【eLV勉強会】 Dockerを触ってみよう ~初心者向けDockerハンズオン~ - ~ITエンジニア勉強会~ engineer's Learning・Vesper | Doorkeeper
の勉強会にお伺いした際、さくらのクラウドの2万円分のクーポンをいただきましたので、上のsshの検証するのにお試しで使ってみました。


EC2と比較しての感想は、、

  1. コンソールのGUIが見やすい気がする
  2. マシン止めてもディスクに課金されていることがわかりやすい
  3. 公開鍵認証必須じゃないので、敷居は低いと思う
  4. サーバの起動が遅いと思う
  5. REST APIの表示いらんでしょ
  6. マシンの起動・停止するのに3クリックはいまいち
  7. ちょっとお高いのでは(まだ無料で使えてるので、文句言う筋合いではないが)
  8. 課金情報がリアルタイムに表示されないようですが

というところでした。
もっと色々複雑なことをやると違いが見えてくるのかも知れませんが、しょせんコマンドの検証レベルだと、わりとプリミティブなところに目が行きますね。そしてやっぱりAmazonはすごいなということかと思います。

ProxyCommandによるsftpの多段接続をコマンドライン引数でやる

IT

これはここのサイトに載ってました。
linux - Must I sftp to an intermediate server? - Super User

実行結果


[user@host01 ~]$ sftp -i .ssh/id_rsa_host03 -o "ProxyCommand=ssh -e none hoge@host02 exec /usr/bin/nc %h %p 2>/dev/null" moge@host03
Connected to host03.
sftp> ls
aaa bbb
sftp> bye
[user@host01 ~]$

これを、ssh -Wでやりたいのですが、、