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でも効くんでしょうか。