groovyshでgrapeを使ってlibraryを使いたい時がありました。
1 2 3 4 5 6 7 |
|
versionも文字列でないとならないのに気を付けます。 いつもの'mysql:mysql-connector-java:8.0.11'
の形式はダメでした。
@GrabConfig(systemClassLoader=true)
はどうやってもダメっぽいので、 結局groovyshからのMySQL accessは諦めましたが。
groovyshでgrapeを使ってlibraryを使いたい時がありました。
1 2 3 4 5 6 7 |
|
versionも文字列でないとならないのに気を付けます。 いつもの'mysql:mysql-connector-java:8.0.11'
の形式はダメでした。
@GrabConfig(systemClassLoader=true)
はどうやってもダメっぽいので、 結局groovyshからのMySQL accessは諦めましたが。
今まで、「画像を読み込んで線や図形を描く」というのはGroovyFXでやってたんですが、 JavaFXってheadlessで出来ないんですね!? びっくりポンです。 java.awt.headless=true
もそういやAWTなんですね。 うーむ、流石は廃止されるJavaFX、と思ったんですが、 どうせim4java
使ってるなら、なんだImageMagickだけで出来るじゃーん、 ということに遅ればせながら気付きました。 ImageMagickってdrawも出来るんですね。
大体、以下の要領です。
import org.im4java.core.*
op = new IMOperation()
op.addImage(...)
で画像fileを読み込むop.fill('rgba(255,100,0,0.5)')
等と塗り潰す色を指定op.stroke('white')
等と線の色を指定op.draw('rectangle 0,10,30,30')
で長方形を描画op.draw('text 0,10 ABCD')
で文字を描画op.quality(80)
で圧縮率(品質)指定op.addImage(...)
で出力画像の名前と形式を指定new ConvertCmd().run(op)
で実行公式pageにありますけどね。
groovyでcommand executionの結果を拾った('command args'.execute().text
)ところ改行がついてたので、除去しようと.replace('\n', '')
としてたんですが、そっか、.trim()
でいいんですね。勿論目的にもよりますが。
某ubuntu起動diskをmountして/etc/passwd
のpasswordを潰して、 console login出来るようにはなったんですけれども、 sshでは入れません。 あーそっか、と思って、いい機会だからと後輩氏に課題として与えてみました。
新規user作って乗り越えてくれまして、それはそれで良い解だと思いますが、 /etc/ssh/sshd_config
のPermitEmptyPasswords yes
でも行けるよー (このhostを繋ぐのは内部networkだし)、 と垂れて、試したところ、ものの見事に失敗。
あれー、なんでー?!
更に調べてみると、もう一つ施策が必要でした。
公開鍵なし/パスワードなしでSSHログインする設定にあるようにUsePAM no
にするか、 PAMを使っているということなのでならばPAMでempty passwordを許容するように /etc/pam.d/common-auth
の auth [success=1 default=ignore] pam_unix.so nullok_secure
の nullok_secure
を消す(Re: nullok_secure option)か、 ですがPAMいじるのは怖いですよねぇ。
Robolectricでtestを書いていて、 どうも上手く行かないところがありました。 「上手く行かない」というのは「Test class内で(RxJava1系なので)RxJavaHooks.setOnIOScheduler(s -> Schedulers.immediate());
しているにも関わらず、 test対象classでsubscriber
が動いてしまう」というものです。
どうしてかなぁ、.subscribe(...)
の中で.subscribe(...)
してるからかなぁ、 RxJava のテスト(1): TestSubscriber, test(), TestSchedulerを見て、 じゃぁっていうんでTestScheduler scheduler = Schedulers.test();
して何度かscheduler.triggerActions();
しても現象変わらずでした。
悩んだ末、わかったのは、 test対象classでは.subscribeOn(Schedulers.newThread())
していた、 ということでした。 なぁんだ。
そういえばちょっと前に書いたところだったので、 まだSchedulers.newThread()
にしちゃってたんですね。 今回Schedulers.io()
に変えました。 Androidでも効くんでしょうか。