頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


iPhone故障で確認コード受信できずApple IDでサインインできない!

妻のiPhone 7 Plusの調子が悪くなった。ディスプレイ右側に太い縦線が2本入りタッチによる操作もうまくできないことが多い。
ソフト的な原因かもということで再起動、および強制的な再起動をするも効果なし。
次に工場出荷状態に戻して(つまりリセット)iCloudにあるバックアップから復元させようとした。
リセットはできたのだが、最新のiOSをダウンロードしてから、とのことで夜間にダウンロード。
翌朝、無事ダウンロード終了して復元作業をしようとしたが、

故障したiPhone 7 Plus

↑縦線以外にも何やらおかしくなっており、もはやディスプレイが入力をほとんど受け付けず、さわってもないのにキー入力しているような状態になってしまってた。もうAppleに修理に出すしかないと決断した。

修理に出している間、携帯がないのも不便ということで使っていなかったiPhone 5sを代わりに使おうとしたのだが、、、
5sを妻のiCloudにあるバックアップから復元させる手順の途中で、Apple IDが2ファクター認証になってるので確認コード入力を求められる。
本来なら確認コードは妻のiPhone 7 Plusに送信されている。
しかしすでに壊れてリセットまでしているので当然受信することはできない。

Apple ID を使って 2 ステップ確認でサインインできない場合 - Apple サポート

↑サポートページの説明には
Apple ID で 2 ステップ確認をお使いの場合、サインインの際に下記のうち 2 つ以上が必要となります。
・Apple ID のパスワード
・信頼できるデバイス
・復旧キー

↑このような記述が。
パスワードはあるんだが、妻にとって「信頼できるデバイス」は壊れた7 Plus以外にはない。復旧キーなんて聞いたこともないとのこと。
つまり、3つのうちパスワード1つしか持っていない、、、詰んだ、、、?
知らんかったわ、、、これ、7 Plusを修理したとしても、前のアカウントにはアクセスできないってことじゃ?
うかつにリセットせずに修理してればなんとかなったのかもしれなかった。あああ、やってもうた、、、旅行の写真があぁ、、、


と思ってたんだが、確認コードをメッセージではなく電話番号でも受信できそうだったので、試しに、7 Plusのsimを息子のiPhone 6に差してみたところ、6で確認コードを受信することができた!
ということで無事5sは復元に成功し妻の代替機となり、7 PlusはAppleに修理に出した。見積額は税込42,984円、、、痛いっ!


なお、壊れたiPhone 7 Plusも6も5sも全てsimフリー機、simのサイズは同じ。
スポンサーサイト



申請時にXcodeでアップロードしたはずのファイルがApp Store Connectで反映されない

久々に新規アプリ(iOS)の申請を行った。
XcodeでArchiveし、Validateも通過しアップロード。
App Store Connectのビルドってところでアップしたファイルを選択しないと申請できない。
そしてアップロードしてApp Store Connectで見えるようになるまでにいくらかラグがあってそれこそメシでも食べてたらいいんじゃね?くらいに思ってたらいいことも経験上知っている。

ところが今回はそれが異様に長い。メシどころか筋トレして風呂に入ってたくさんのポケモンの個体値を調べててもまだ反映されないほどだった。

ここまで時間がかかるのは何か間違ってた、、、?

今回のアプリで何かやらかしてるとすれば初めての日本語のみのアプリ、ということだ。今までは大抵英語がメインで、ローカライズで日本語、というパターンが多かったのだが。
このあたりでまずいことになってんのかな?と思い調べ、、、
【Xcode】アプリのデフォルト言語を日本語に設定する方法 – 株式会社シーポイントラボ | 浜松のシステム開発会社
↑こちらなどを参考にして修正。
まだ申請してもいないのでver1.0は変えず、ビルド番号だけ1.0.0.1として再度アーカイブ、Validationも通してアップロード。

するとこれがすぐにApp Store Connectで反映された!

アップロード完了が21:50で
App Store Connectで見えたのが21:53だった。

あー、そのあたりがまずかったのかなあ?だったらビルド時なりvalidationで教えてくれればいいのに、とか思いつつとりあえず無事に申請。

App Store Connectで反映されたファイル

↑ところが翌日に確認すると最初にアップロードしたver1.0(1)が日付が変わった頃に到着してた。
アップロード完了時刻は17:19となっている。
17:19 → 翌日0:45に到着、、、

じゃあやっぱりアップロードが完了したファイルはラグがあるけど届くようになってんのかな?
つまり、App Store Connectで反映されない場合は、ただ待て!ということか。それもメシ食うだけじゃなくお風呂入って歯を磨いて寝てしまえ、というくらいで。


半年以上前に設定してたIFTTTが動作した

IFTTTでボールルームへようこそのツイート更新を通知で得る
↑これを書いたのが昨年の9月。半年以上前か。

昨日の夜、ついに竹内友氏から復活宣言ツイートが!



いやあ、よかった、よかった。どういう状況かさっぱりわからないのが続いてたからなあ。

IFTTTの通知

↑ちなみに設定してた通りiPhoneにIFTTTからの通知が来てたんだけど、それより前にTwitterのタイムラインを眺めて時に先ほどのツイートを発見してたのでした。


PythonのOpenCVでデータセット内の重複画像をチェックする

CreateMLで人の顔を見分けたい
↑この続き。
機械学習(CreateML)で顔を見分けるために”良質な”データセットを作成しようと試みている。

画像検索で得た画像を使うとどうしても、これ持ってるよな?持ってたっけ?となってしまう。
なるべく避けようとするのだが、そうすると判断につかれるとかチェックに時間がかかってしまったりする。
そして実際どうしても重複してしまう。

なら重複覚悟でサクサク画像を得てから、後で重複をチェックすることにした。


(その1)顔の中にある目の相対位置で評価する

OpenCVで顔検出

↑PythonのOpenCVで顔や目の位置を得ることができる(※1)。
これを使って得た顔部分基準で目の相対位置なんかで評価すればいいんじゃね?というアイデアで実装を進めた。

ところがどうもよい結果がでない。調べてみたところ以下のようなことが原因だった。


サンプル画像1
サンプル画像2

↑例えばこの2枚の画像。単に1枚をクロップ(トリミング)したのがもう1枚の画像。この2枚の画像に対して顔の位置を検出した結果がこちら↓

OpenCVで顔検出結果1
OpenCVで顔検出結果2

同じ位置に顔を検出するものかと思っていたが微妙に違う。
そういうものなら仕方ない、とあきらめ別な方法を試してみた。



(その2)顔のランドマークを使う

OpenCVでランドマーク検出1

↑顔の輪郭や目の位置などを細かく取得できるのを利用してみた(※2)。
これだと顔のいろんな位置の座標を取得できる。

OpenCVでランドマーク検出2

↑ある点からある点へのベクトルを作成して、x軸との傾き(単位ベクトルにして内積から)などを評価、比較すればいいのでは?という考えで実装してみた。

類似画像検出結果1

↑これだと使えそうな程度にはなり、サクサクと重複している可能性のある画像を表示することができるようになった。

類似画像検出結果2

↑単に向きを数値化しているようなものなので似たような角度で撮影された画像は全く違っていても似ている、と判断するので完全自動化まではいかないが、自分の用途にはOKだ。



※1 参考サイト
Python, OpenCVで顔検出と瞳検出(顔認識、瞳認識) | note.nkmk.me

※2 参考サイト
顔のランドマークを検出 Python + OpenCV + dlib を使う | 404 Motivation Not Found



コードの表示方法を変更

このブログ内のコード部分にはずっとsyntaxhihglighterを使ってたんだけど、正しく表示されなくなってるので最新バージョンにしようとした。

syntaxhighlighter/syntaxhighlighter: SyntaxHighlighter is a fully functional self-contained code syntax highlighter developed in JavaScript.
↑こちらが現時点で最新のversion4。

いろいろ調べたんだが、、、挫折した。
Failed to load external module @babel/register
ってエラーがどうしても発生する。

じゃあもういいや、と、単純にCSSで背景色だけ変えておくことにした。

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
return YES;
}

↑こんな感じ。

<pre class=“mycode”>
// code
</pre>
↑codeタグではさむだけ。




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.