flyingbirdのiPhoneアプリ開発記録

- PolyRhythmの中の人がiPhoneアプリ開発中に思ったことを記録するブログです -

【Swift4】@objc絡みのワーニング

また出た良くわからないワーニング

The use of Swift 3 @objc inference in Swift 4 mode is deprecated. Please address deprecated @objc inference warnings, test your code with “Use of deprecated Swift 3 @objc inference” logging enabled, and then disable inference by changing the "Swift 3 @objc Inference" build setting to "Default" for the "AppName" target.


消し方

  • TargetsのBuild Settingsで「inference」で検索する。
    Swift 3 @objc Inferenceの項目が表示されるので、
    Targetsの設定を「Default」に変更する
  • 以下のサイトを参考に・・・

stackoverflow.com

その先

  • Objective-CからSwiftのメソッドが見えなくなる。"AppName-Swift.h"にObjective-Cから呼び出したいSwiftメソッドが出力されなくなってしまった。
    どうも参照したい各メソッドに@objcを書かなければならないらしい。面倒くさい。人をハメようとしてるとしか思えない

qiita.com

ubuntuにopenjdk9をインストール

ubuntu16.04にopenjdk9をインストールしてみた

  • 以下のコマンドでインストール
# sudo aptitude install openjdk-9-jdk


インストール時にエラー発生

  • なんだかヘッダファイルの上書きが出来ないっぽい
The following NEW packages will be installed:
  openjdk-9-jdk openjdk-9-jdk-headless{a} 
0 packages upgraded, 2 newly installed, 0 to remove and 1 not upgraded.
Need to get 0 B/345 kB of archives. After unpacking 831 kB will be used.
Do you want to continue? [Y/n/?] Y
Selecting previously unselected package openjdk-9-jdk-headless:amd64.
(Reading database ... 916479 files and directories currently installed.)
Preparing to unpack .../openjdk-9-jdk-headless_9~b114-0ubuntu1_amd64.deb ...
Unpacking openjdk-9-jdk-headless:amd64 (9~b114-0ubuntu1) ...
Selecting previously unselected package openjdk-9-jdk:amd64.
Preparing to unpack .../openjdk-9-jdk_9~b114-0ubuntu1_amd64.deb ...
Unpacking openjdk-9-jdk:amd64 (9~b114-0ubuntu1) ...
dpkg: error processing archive /var/cache/apt/archives/openjdk-9-jdk_9~b114-0ubuntu1_amd64.deb (--unpack):
 trying to overwrite '/usr/lib/jvm/java-9-openjdk-amd64/include/linux/jawt_md.h', which is also in package openjdk-9-jdk-headless:amd64 9~b114-0ubuntu1
Errors were encountered while processing:
 /var/cache/apt/archives/openjdk-9-jdk_9~b114-0ubuntu1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
Failed to perform requested operation on package.  Trying to recover:


強制上書きでインストール

  • 参考サイトを参考に以下のコマンドでインストール出来た。
    てか、aptitudeで強制上書きってどうやるんだろう・・・
# sudo apt -o Dpkg::Options::="--force-overwrite" install openjdk-9-jdk


デフォルトのjavaを変更

  • まずはインストールされてるjavaを確認
# update-java-alternatives -l
java-1.8.0-openjdk-amd64       1081       /usr/lib/jvm/java-1.8.0-openjdk-amd64
java-1.9.0-openjdk-amd64       1091       /usr/lib/jvm/java-1.9.0-openjdk-amd64


  • デフォルトのjavaを変更
# sudo update-java-alternatives --jre-headless --jre -s java-1.9.0-openjdk-amd64


参考サイト

askubuntu.com

ChinaPostの追跡

  • 最近Amazonで買い物をすると、中国から送られてくることがある。
    物も安くて配送料も無料・・・
    おいおい、スゲーな。
    でもね〜、ちょっと遅いんすよ。

    なかなか届かないので、心配になるわけですが、以下のサイトで追跡出来る。
    いろんな配送業者に対応してるとの事。
    便利じゃん

www.aftership.com

herokuコマンド

  • 時々しか触らないからすぐ忘れちゃうんですよね・・・

herokuへログインする

  • Terminalを開いてどこでも実行可
    メールアドレスとパスワードを入力
# heroku login
Enter your Heroku credentials:
Email: xxx@yyy.zzz
Password: ***


herokuからログアウトする

# heroku logout
Local credentials cleared


無料分の残時間?を表示する

# heroku ps
Free dyno hours quota remaining this month: xxxh yym (zz%)


修正したアプリをherokuへデプロイ

  • デプロイしたアプリのディレクトリで実行
    ビルドが成功すればOK
# git push heroku master
.
.
.
remote:        BUILD SUCCESSFUL
.
.


heroku上でコマンド実行

  • デプロイしたアプリのディレクトリで実行
    ダブルクォートの中に実行したいコマンドを打つ
    "ls -aFl"とか・・・
# heroku run "xxx"


アプリのログを見る

# heroku logs


herokuのヘルプを見る

# heroku help


RASPBERRY PI ZERO W でLチカ

用意した物

  • ピンヘッダを取り付けたラズパイは既にあります。 Amazonで購入。
    どれもこれもたくさん入っていて、単純なLチカだと余ります
    とは言え、Lチカセットみたいのを購入するより割安。皆で分けても良さそう
    • ブレッドボード
    • ジャンパワイア
    • LED
    • 抵抗


ラズパイ側

  • GPIOの手前側、左から3番目のピンがGND
  • 同じく手前の、左から8番目のピンがGPIO(23)


LED側

  • 以下の組み合わせで繋げていく
    1. GPIO(23) ⇔ LEDアノード(プラス極) ※足の長い方
    2. LEDカソード(マイナス極) ※足の短い方 ⇔ 抵抗(330Ω)
    3. 抵抗(330Ω) ⇔ GND


Lピカ

  • まず、お試しで、Lピカを・・・
    奥側の一番右のピンが3.3v(常時通電)のピンなので、GPIO(23)に繋げたジャンパワイアをそこに差し替えてLEDが発光するかお試し。
    うん、光りました。OKそう。



Lチカ

  • 差し替えたピンを元に戻して・・・

  • 以下のソースを記載したpyファイルを作成し、
    sudo python xxx.py で実行する
import RPi.GPIO as GPIO
import time

pin_no = 16
GPIO.setmode(GPIO.BOARD)
GPIO.setup(pin_no, GPIO.OUT)

try:
        while True:
                GPIO.output(pin_no, True)
                time.sleep(0.05)
                GPIO.output(pin_no, False)
                time.sleep(0.05)
                GPIO.output(pin_no, True)
                time.sleep(0.05)
                GPIO.output(pin_no, False)
                time.sleep(0.75)

except KeyboardInterrupt:
        pass

GPIO.cleanup()


結果

  • チカチカした〜〜!!
    はてブロは動画貼れないのか・・・


参考にしたサイト

  • ありがとうございました

deviceplus.jp
akimacho.hatenablog.com
developersnote.jp