Building Your First Application with Go [Video] 見た
読書記録はbooklogにしてるんですが、Videoコースは記録するところがないので、ブログにメモっておきます。
完全食 COMP Trial Pack試してみた
完全食 COMP 公式サイト
味
まだ1回試しただけですが、いわゆるドリップバッグのホットコーヒーと、1回分90gのCOMPを混ぜて飲んでみたというところです。
味は豆乳ラテですよね。ただ、スタバのソイラテと違って、味が薄いような。
混ぜるもの次第なのかなという気もしないではないですが、色々研究が必要みたいです。
値段
今回は3Pack(90g x 3)を300円+送料500円の800円ということだったんですが、まとめて買っても350円/1Packはするようです。1Pack=400kcalなので、ざっくり5Pack/日必要で、1,750円/日ってとこでしょうか。高いけど、食事を用意する手間暇とか材料費考えたら安いかも知れないですね。
カロリーメイトとの比較
カロリーメイト美味しいし、COMPいらなくねってことで、比較してみた。
カロリーメイト負けてないような気がしますが、どうでしょう。
ちなみにブロックの場合、400kcalあたり200円くらいです。
結論
ちょっと味が自分の好みじゃないのが致命的かも知れません。
COMP飲むくらいだったら、カロリーメイトでいいやという感じ。
まあでもそれも、時間がもったいないときの非常食で、普段はまともな食事した方がよさそうです。
参考書や問題集を電子書籍リーダーで読むのは無理がある
無理がある理由
なぜ、参考書や問題集を電子書籍リーダーで読むのは無理があるのかというと、やっぱりページを行ったり来たりするんですが、特に紙からスキャンした本や、固定レイアウト型(フィックス型)で売られている電子書籍を読むときに、スクロールの遅さが致命的過ぎます(特に後者)。Kindleはもしかしたら違うのかも知れませんが、Kobo Aura H2Oの場合、タップしても反応せずスクロールしないことが多々あります。これが大変なストレスなんですよね。これまで我慢して無理矢理読んでたわけですが、さすがにもう限界かなと。なんで今更こんなことに気づいたんだろう。。買った電子書籍リーダーの元を取ろうとしたからかな。
代替手段の検討
代替手段としては、モバイルOSを搭載したデバイスの利用でしょう。具体的には、
- iPad miniとかKindle Fireとかのタブレット
- いっそiPhone 7 Plusとかのファブレットに乗り換える
とかでしょうか。
iPad miniとかKindle Fireとかのタブレット
iPad mini端末としてはいいんでしょうけど、いかんせん高いですね。しかも、そろそろ新機種出るかもという時期なので、今チョイスするってのはないでしょう。
一方、Kindle Fire大変お安くてよいですね。ただ、Androidには良い思い出がないですし、Google Play非対応も気になります(ごにょごにょすればとかいうのはさておき)。Google Play対応になると、やっぱり値段が。。ということになりそうです。
なぜiPad miniじゃなくて電子書籍リーダーだったのか。昔のブログとか読んでると、どうも価格と重量がネックだったようです。
taka-2.hatenablog.jp
当時(2012年)と今では状況も違いますよね。
というわけで
今後自分がどれだけ勉強するかということと、それに見合うコストがかけられるか、ということに尽きるようです。
とりあえずITストラテジストの試験対策はほぼ終わりなので(来週試験なので)、また次の試験対策に取り組むときに考えてみようと思います。
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.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(折りたたみ傘)をリピート
2年ちょっと愛用してましたが、穴が開いたり結構ひどいことになったので、買い替えることにしました。それ以前に使っていたユニクロの折りたたみ傘などに比べると、かなりの長期間持ちこたえた印象です。もう少し丁寧に扱って、定期的に油を差すなどの対応をしていれば、さらに使えたかも知れません。
私のこだわり?として、天気に関わらず折りたたみ傘は常にカバンに入れておくことにしてます。とりわけスーツを大切にしているとか、そういうのじゃないんですが、常にカバンに一定の重量が増えるデメリットと引き換えに、突然の雨に立ち往生するリスクへの対策をしているということでしょう。
また色々比較検討してもよかったんですが、面倒だったのでまたおんなじのにしました。
またしばらく愛用していきたいと思います。
バッチでエラー発生時、クライアントに通知する仕組みをWebSocketで実現
■概要図
メール通知でよくないか?
というツッコミはさておき、考えてしまったものは仕方ない。といったところでしょうか。
■疑問点
・RestControllerとWebSocketHandlerをどうつなぐのか?
・.NETのWebSocketクライアントと、Java(spring boot)のWebSocketサーバはつながるのか?
といった疑問を解消すべく、動作検証してみました。
■参考URL
サーバサイド:
クライアントサイド:
[C#]System.Net.WebSocketsを試す。その1。ClientWebSocket編。 | Kimux.Net
この二つのサンプルを組み合わせれば完了です。
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
・websocket-sharp
・標準のSystem.Net.WebSockets
・WebSocket4Net
よさげだったのですが、うまくつながらず(Javaとの相性?)
・websocket-sharp
自分でビルドするか、買わないといけないらしく、あきらめた。
・標準のSystem.Net.WebSockets
うまく動作しました。ただし、Windows8以降しか対応していないようなので、実務では使えません。どうするか要検討です。
というわけで、課題はあるものの、仕組みとしては実現可能ということが分かりました。しかし、もっとシンプルな仕組みにできないものですかね。