CrossBridge Lab

技術ネタ、デバイスネタを...

go get でリポジトリをダウンロードする際にSSHを利用する

 Go言語で開発を行うときに外部ライブラリを導入するにはgo getコマンドを使うのが便利ですがデフォルトではhttps通信になっています。

これをsshに変更する場合には.gitconfigに下記を追記します。

[url "git@github.com:"]
    insteadOf = https://github.com/

~/.ssh/configに使う鍵を記述していなければ下記を追記します。

Host github
  HostName github.com
  IdentityFile ~/.ssh/id_rsa
  User git




【Swift3】Swift3でプッシュ通知のデバイストークンを文字列にする

 iOSのPUSH通知のDeviceTokenを文字列(NSString / String)に変換するには単純に以下のようにはいきませんでした。

var token: String = NSString(data:deviceToken, encoding:NSUTF8StringEncoding)

 なのでSwift2.3までは以下のように受け取ったDatadescriptionを取得して<>と空白を取り除くというアクロバティックな方法を取っていました。

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    var characterSet: NSCharacterSet = NSCharacterSet( charactersInString: "<>" )  
    var token: String = ( deviceToken.description as NSString )
        .stringByTrimmingCharactersInSet( characterSet )
        .stringByReplacingOccurrencesOfString( " ", withString: "" ) as String
        print(token)
}

 が!Swift3で同じように変換しようとすると32 bytesという素敵な文字列になってしまいます。descriptionで帰ってくる文字列が変わったってことですね。そもそも変則的な方法でしたがSwift3では以下の方法でに文字列に変換することができます。

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    let token = deviceToken.map { String(format: "%.2hhx", $0) }.joined()
    print(token)
}


Xcodeのビルドを並列にして高速化する

ビルド完了時にかかった時間を表示する

ターミナルで以下のコマンドを実行する

defaults write com.apple.dt.Xcode ShowBuildOperationDuration YES

ビルドを並列に実行する

ターミナルで以下のコマンドを実行する。以下は同時実行数を4と指定している。

defaults write com.apple.dt.Xcode IDEBuildOperationMaxNumberOfConcurrentCompileTasks 4