0. 環境 [OS] Mac OS X 10.11.6 [IDE] Xcode 8.1 [Swift] 3.0 1. 問題 WCSession#sendMessage()を使ってAppleWatchからiPhoneアプリへメッセージを送っても、30秒ほどしないと通知されない。 AppleWatch側 @IBAction func tapButton() { let message = [ "fromChild": "AppleWatchからのメッセージ" ] WCSession.default().sendMessage( message , replyHandler: { reply in } , errorHandler: { error in } ) } iPhone側 func session(_ session: WCSession, didReceiveMessage message: [String: Any], replyHandler: @escaping ([String: Any]) -> Void) { if let watchMessage = message["fromChild"] as? String { print(watchMessage) } else{ print("error") } } 2. ...

Read more

0. 環境 [OS] Mac OS X 10.11.6 [IDE] Xcode 8.1 [Swift] 3.0 1. 問題 iPhone & AppleWatchアプリを作成中にSwiftを2.2から3へバージョンアップしたところ、iPhone側で下記のエラーが出るようになりました。 Type 'ViewController' does not conform to protocol 'WCSessionDelegate' 2. 解決 ViewControllerに下記メソッドを追加するとエラーが消えました。 public func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) { } func sessionDidBecomeInactive(_ session: WCSession) { } func sessionDidDeactivate(_ session: WCSession) { session.activate() } 下記の仕様書にもこれらのメソッドは必須と書かれています。 [API Reference] WCSessionDelegate 3. 参考ページ Migrating app from Swift 2. ...

Read more

0. 環境 [OS] Mac OS X 10.11.4 [Eclipse] Mars.2 Release (4.5.2) 1. 問題 久々にEclipseをさわっていたら、タブをスペースに変換する設定に手間取ったのでメモ。 (Windowsでもメニュー名を読み替えて頂くと使えます) プログラミングで使うインデントに関して、僕はタブ派ですが、職場や最近の流れからしてもスペースを使わざるを得ないでしょう。 2. 解決 Eclipseに標準でついている機能が動かなかったので、AnyEditToolsというプラグインを入れました。 メニューの [ヘルプ]-[Install new software] をクリック。 [作業対象]に下記を入力。(anyぐらいまで打つと補完されます) anyedit - http://andrei.gmxhome.de/eclipse/ とりあえず最新バージョンのAnyEditToolsにチェック。 [次へ]をクリック。 途中ライセンスへの同意やセキュリティ警告が出ますが、最後までいくと再起動を求められるのでそのままOKをクリックします。 起動後、Eclipse上で任意のファイルにタブを入力し、保存したタイミングでスペースに置換されます。 変わらない場合や細かい設定をしたい場合は下記の設定画面から行って下さい。 メニューの [Eclipse]-[環境設定] をクリック。 [一般]-[エディタ]-[AnyEdit Tools] Eclipseでマークダウンを書く人は[Remove trailing whitespace]のチェックを外しておいたほうがいいかもしれません。 ファイルフィルタ(上記の[Add Filter])で拡張子mdを除外したり、プロジェクトごとに設定(*1)を変えることもできます。 (*1)プロジェクトごとの設定 プロジェクト・エクスプローラーの該当プロジェクトを右クリック。 [プロパティ]-[AnyEdit Tools] をクリック。 [Enable project specific settings]にチェックを入れる。 ...

Read more

0. 環境 [OS] Mac OS X 10.11.4 [Java] 1.8.0 1. 問題 久々にJavaで実装する機会がありました。標準ライブラリのjava.net.URLクラスは、URLとして解釈できない文字列を渡すと例外が投げられるので扱いずらいですね。 // IllegalArgumentException が発生。 url = URL.create("不正なURL"); うーん、最初、RFCを見て「URLとして許可されている文字列だけ渡す」という処理を入れようか迷いました。 が、一から組むのも骨が折れるなあ~と思って、困った時のApache Commonsを探してみたら、しめしめApache Commons ValidatorにUrlValidatorクラスというのがありました。 早速このクラスをimportして使おうと思ったら、下記の警告が出てしまいました。 型 UrlValidator は使用すべきではありません 2. 解決 調べてみたところ、①のパッケージは非推奨で②に変えたら警告も消えました。 ①こっちは非推奨 import org.apache.commons.validator.UrlValidator; ②これを使って! import org.apache.commons.validator.routines.UrlValidator; 3. 参考 The type UrlValidator is deprecated ...

Read more

0. 環境 [git] 2.7.4 (Apple Git-66) 1. 問題 アプリのルートディレクトリに.gitignoreをおいたのですが、git status で見ても追加対象として出てきません。 2. 解決 最初(A)のように書いていたのですが、これだとダメで、[除外設定]→[例外] の順に書かないといけないようです。 (「. が先頭にあるファイルは除外してね」→「但し .gitignore は例外だよ」) (A) 修正前 (B) 修正後 ...

Read more

0. 環境 [OS] Mac OS X 10.11.4 [IDE] Xcode 7.3 [Swift] 2.1.1 1. 課題 AppleWatchのアプリ開発で「WatchKit App」を起動すると、iOSアプリのブレークポイントで停止しない。 2. 対策 XcodeのデバッガーにiOSアプリを手動で追加する必要があります。 「WatchKit App」を選択してアプリ実行。 iOSアプリのシュミレーターで、iOSアプリを起動。 Xcodeに戻って [Debug]-[Attach to Process] からiOSアプリを選択。 左のパネルで[Debug navigator]を選択し、下記①②でiOSアプリが選択されていることを確認。 ...

Read more

0. 環境 [OS] Windows 7 1. 課題 ファイル(①)に対してショートカット(②)を作った場合・・・ ① C:\tmp\test.txt ② C:\tmp2\test.txt - ショートカット エクスプローラーやスタートメニューの「ファイル名を指定して実行」から②を指定してもエラーになります。 これは下記のように ”.lnk” をつけると解決します。 C:\tmp2\test.txt - ショートカット.lnk OSの内部的にはこのパスになっているんだと思います・・・ ...

Read more

0. 環境 [Laravel] 5.1 1. 問題 composer update を実行すると下記エラーが発生しました。 Writing lock file Generating autoload files > php artisan clear-compiled [ErrorException] Undefined index: HTTP_HOST Script php artisan clear-compiled handling the post-update-cmd event returned with error code 1 2. 解決策 HTTP_HOST でソースをgrepし、 /app/Http/routes.php 内の下記箇所を修正しました。 (修正前) $_SERVER['HTTP_HOST'] (修正後) Request::server('HTTP_HOST') 3. 参考 Composer returning mysterious error ...

Read more

0. 環境 [CentOS] 6.4 (64bit版カーネル) [PHP] 5.4.17 1. XORでトグル処理 押すたびにON/OFFが切り替わるようなトグル処理を実装する場合はXORが便利です。 6行目、11行目 : 「XOR 1」するとビットが反転する性質を利用します。(下記) XOR 入力①0011 入力②0101 出力0110 ...

Read more

0. 環境 [CentOS] 6.4 (64bit版カーネル) [PHP] 5.4.17 1. ORとANDで状態管理 複数の状態や権限をまとめて管理したい場合、2進数が便利です。 2-5行目 : 2進数の定数(10進数表記)を用意します。 7行目 : ORでプログラミング言語を足していきます。 Aさんが使える言語の位にビットが立つイメージです。(下記) 0001 (PHP) 0010 (Ruby) OR) 1000 (Perl) ---------- 1011 (Aさんが使えるプログラミング言語) 11行目以降 : Aさんが使えるプログラミング言語は何か、ANDで問い合わせます。 右端の位にビットが立っていれば結果がtrueになり、PHPが使えることが分かります。(下記) 1011 (Aさんが使えるプログラミング言語) AND) 0001 (PHP) ---------- 0001 (PHPが使える) ...

Read more