u-ryo's blog

various information for coding...

Recent Bookmarks

| Comments

最近の、といってももう数ヵ月も前のものですが、 bookmarkしかねてbrowserのtabを開きっぱなしなのを閉じる前に、 メモしておきます。

Vuzix M100

UML Modeling

| Comments

垣内さんから「折角豆蔵にいるんだから、割引が効くからこういうの受けてみれば」って勧められたのがUMLモデリング講座。 へー、こういうのあるんですね。 誤解しがちなモデリングの技 第8回:モデルの意味的な誤り(II)モデリング添削講座のご案内モデリング添削講座モデリング添削講座 L1,L2 サンプル

Javaアプリのクラス設計が上手くなりそうです。 って、全然受けてないんですけど... そもそも、勧められたのが最早1年前。 あぁぁ。ダメですね。

Kotlin KOTOHAJIME

| Comments

Kotlin事始め

最初、title間違えました。 タイプミスです。 Ergodox EZ(キー配列をカスタマイズ出来るキーボード)が必要かもしれません...

Android開発を、というかIoTに乗ってSmart Glass(Vuzix M100)の アプリ開発を任命付けれられています。 それはそれでありがたいのですが、 今更ながらAndroid開発を学んでいます。 素のAndroid Javaを使う、というのはあまりにもイケてなさそうなので、 いちいちon何々なんてやってられませんよ、ということで、 Kotlinを使ってイマドキのReactive Programmingを、 と思っています。 Kotlinやってると、Groovyでもいいんじゃないの? と思ってしまうのですが、 殊Androidについては、同梱libが大きくなってしまうなど、 やはり後発の強みもあってKotlinのようです。 ただ、Android開発者がJava loveだそうで、 今後のJava8の取り込みようによっては、 Javaだけでも行けるのでは? という気も少しします。 しかしそれは普及率を考えるとまだまだ遠いので、 今はやはりKotlinかと。

しっかし、Android開発って結構めんどいんですね。 IDEがないと開発できないって、 古いtypeの人間としてはそこから苦痛なんですが...

最初は、森洋之,基本からしっかり身につくAndroidアプリ開発入門 Android Studio 2.x対応 プロが本気で教えるアプリ作りの基本「技」 (ヤフー黒帯シリーズ),SBクリエイティブ,2016.7 を間違い直しながら写経することで Android開発を「Hello World」から卒業してから、 長澤太郎,Kotlinスタートブック,リックテレコム,2016.7 を写経しています。 そこでハマったことを。

  1. 実行しても、エラーメッセージを吐かずにemulatorが一瞬立ち上がった後終了 → Run対象をMainActivityTestにしていたから
  2. Dagger2でinjectionするようにしたらprofileImageUrlを取れなくなった → .dagger.ClientModule#provideRetrofit.addConverterFactory(GsonConverterFactory.create(gson))gsonを抜かしてしまっていた
  3. Dagger2でinjectionしたtestでCastがこけてうまく行かない → build.gradletestInstrumentationRunner 'sample.qiitaclient.MockTestRunner'に変更しないとならないのと、RunEdit ConfigurationsAndroid TestsMainActivityTestSpecific instrumentation runner (optional):〜.qiitaclient.MockTestRunner に変更しないとならない

IDEに慣れてないので、fileばっかり見比べてました。downloadしたお手本sampleではDagger2 Testがうまく行くのに、何で自分のはうまく行かないんだろう、ってずっと悩んでました。IDEでのproject settingに問題があったとは。 stackoverflowのTest running failed: Unable to find instrumentation info for: ComponentInfo{} — error trying to test in IntelliJ with Gradleで見付けました。 こんなところに設定があるなんて、知りませんよー。

Let's Encrypt Without Certbot-auto

| Comments

Let's Encrypt、素晴らしいんだけど、 とあるserverで、使っているのがUbuntu 11.04(Natty)、 package systemが何か壊れてて、 依存関係がおかしくて解消できなくて、 というcaseがありました。 基本的にどこを調べても、 Let's Encryptを使うには既存のpackaging systemをbaseにしたものばかりで、 Stackoverflowなんかでも「backportsを使って既存のpackaging依存関係を 修築してから」なんていう話しかなくて。 なんかこう、certobot-autoを使わないで、 っていう話って意外となくて途方に暮れていると、 こんなのがありました。

An ACME Shell script: acme.sh

要は、bashだけでLet's Encryptの証明書を使える、 というもので、 なーんだ最初から全部これでいーじゃん、 という感じです。

wget -O - https://get.acme.sh | shでも行けるというのですが、 何かserver certが違うらしく、--no-check-certificateを付けてもうまく行かず。 幸いgitはあってくれたので、cloneしてcd acme.sh ./acme.sh --installすると、 home直下に.acme.shというdirectoryを掘り、 その下にCSRやLet's Encryptからの証明書を自動で作ってくれる、 更に実行userでcron登録してくれる、 というものなので、実行だけならroot権限不要とはいえ、 証明書filesが一般user home directory以下というのもなんなので、 rootでやった方が良さげです。 というわけで、

1
2
3
4
5
6
7
8
9
10
11
# git clone https://github.com/Neilpang/acme.sh
# cd acme.sh
# ./acme.sh --install
# ./acme.sh --issue -d dev.locationsupporter.info -w /var/lib/tomcat7/webapps/ROOT/
# vi /etc/apache2/sites-enabled/default-ssl
=============================================
SSLCertificateFile /root/.acme.sh/dev.locationsupporter.info.cer
SSLCertificateKeyFile /root/.acme.sh/dev.locationsupporter.info.key
SSLCertificateChainFile /root/.acme.sh/fullchain.cer
=============================================
# crontab -l

これで、pytho2.7もpackage updateも不要だし、 更にお手軽にLet's Encryptを使えるというものでしょう。

Crosswalk

| Comments

Crosswalk という、WebViewを独自に持つことでAndroid間の動作性を統一するlibraryを使ってみました。最近のAPI levelに対応するだけなら、敢えてこんなの使わなくてもいいのかも。

わけあって、Crosswalk sample applicationの一つをcompileしてみました。

how to installは、official pageのまま。

ANDROID_HOMEは、Sdk directoryを指す模様。

それから、android commandを裏で動かすので、そこへのPATHが必要でした。

1
2
$ ANDROID_HOME=/home/u-ryo/Android/Sdk PATH=$PATH:/home/u-ryo/Android/SDK/tools crosswalk-app check android
$ ANDROID_HOME=/home/u-ryo/Android/Sdk PATH=$PATH:/home/u-ryo/Android/SDK/tools crosswalk-pkg -p android client

android commandはGUIを要求するので、Cloud9のconsoleでは動かせませんでした。

Android Video Calling with CrossWalk and PeerJS 見てやってみたんですが、ionic2からはionic browser listというのがなくなって、ionic plugin add cordova-plugin-crosswalk-webviewになったことと、その後ionic platform add androidすると、

1
2
3
4
5
6
Installing "cordova-plugin-crosswalk-webview" for android


        After much discussion and analysis of the market, we have decided to discontinue support for Android 4.0 (ICS) in Crosswalk starting with version 20.

        So the minSdkVersion of Cordova project is configured to 16 by default.

と言われてしまいました...

動かしたかったtargetは、Android 4.0.4なので、Crosswalkダメですね。 実際、「CPU Mismatch」と言われて、x86のものでもarmのでも動きませんでした。 あうー。