ぶろぐめんどくさい

技術系の記事と漫画レビューが入り混じった混沌

購入早々パスコードを忘れてiPad Proが文鎮化した話

まえがき

iPad Pro買いました。いやあ、便利ですねえ。今まで7インチのタブレットを使っていたのですが、それに比べて画面が大きく、とりわけApple Pencileの使い心地が最高です。約9万円の出費の価値がありました。いつかレビューでも書こうかと思うのですが、その前に。iPadProが文鎮化した話をしましょう。

文鎮化の経緯

iPad Proが文鎮化したのは今朝の出来事です。 今朝は、大学(院)生の夏休み特有の長時間睡眠からほとんど昼近くに起床しました。就寝前に弄っていたため手近にあったiPad Proで時間を確認しようとホームボタンを押したところ充電が切れていました。iPadがなければ生活できない」と思ったような思わなかったようなでもどっちでもいいのですが、とにかくすぐにiPadにケーブルを繋いで充電しました。そろそろバッテリーも溜まった頃だろうとiPadの電源を入れます。『スライドしてください』と書かれたロック画面が表示されます。Touch Idというホームボタンに指を置くだけでロックが解除されるという素晴らしい機能、要は指紋認証なのですが、それを利用する便利さの虜になっていた私は、ボタンを押せばバナナが出てくることを知った猿のようにホームボタンに指をおきます。するとパスコード入力画面が現れました。

『再起動後にはパスコードを入力してください』なるほどなるほど、そういう仕組みになっているのか、はーん。私の記憶はあやふやでした。パスコードってなんだったっけ。そもそも、パスコードの設定とかしたっけ? とりあえず、おそらくこれだろうといった文字列を入力してみました。テキストエリアが「それは違うよ!」と左右に揺れます。入力ミスかな? もう一度入力してみます。「それは違うよ!」彼は左右に首を振ります。これは違う、じゃあこっちだろう! と今度は別の文字列を入力してみます。これでどうだ「それは違うよ!」

詰んだ、と思いました。他に思いつくパスコードがなかったからです。それでも諦める訳にはいきませんでしたから、入力ミスであることに希望を託し何度かそれらの文字列を試してみます。ついに、『1分間、ご使用のiPadは使えません。』という表示が出ました。一分後、もう一度ロック解除を試みます。『5分間、ご使用のiPadは使えません』駄目です。解除できません。5分後、もう一度挑戦します。『15分間』もう駄目だぁ…おしまいだあ…。

パスコードの入力を諦めた私は、どうすればロック画面の解除ができるのか探し始めました。まず、パスコードを確認する方法や変更する方法がないことがわかりました。次に、iPadを出荷状態に初期化する方法にたどり着きます。これをしてしまうとiPadに入っていたデータは消えてしまいますが、ロック画面をパスコード無しで突破するには他に方法はないようです。アプリを入れ直さないと行けないといったことは面倒に思いましたが、幸い、購入して1週間も経過していないので、iPadには消えて困るようなデータはなく、iPadを初期化することにしました。

iPadの初期化

iPadを初期化する方法は2つありました。一つ目はiCloudからインターネット経由でiPadを初期化する方法。二つ目はPCにケーブルを繋いでiTunesを使用してiPadを初期化する方法。iCloudを利用する利点はPCがなくてもどうにかなることと、Webで操作できるため面倒な手順を踏まなくても良いことです。私ははじめiCloudを使う方法を行うつもりでした。結果を言うとこの方法は今回の場合には使えませんでした。iPadがネットにつながっていなかったからです。機能まではWifiの設定もしてネットを使っていたのですが、どうやら再起動後のiPadはロックを解除しない限りWifiが使えないようです。なんだ、じゃあiTunes使うか。ということになりました。

そもそもですが、私のPCにはiTunesが入っていませんでしたので、iTunesのインストールから始めました。インストールが終了、iTunesを開きます。iPadを初期化する項目が何処かにあるだろうと画面上を探してみます。あれ、どこにもない。もう一度よく調べてみると、どうやらiPadの初期化のためには、まず、iPad側から手順を踏む必要があるようです。iPadiPhoneに搭載されているiOSには初期化のためのリカバリーモードというものがあって、音量を下げるボタンと電源ボタンを押しながら再起動をすることでそれに入れるそうな。試しに再起動してみます。いつものロック画面が表示されました。もう一度よく調べます。iPhoneの場合だと先程の手順でリカバリーモードに入れるそうですが、iPadの場合は違うようです。iPadにおいてのリカバリーモードに入る方法は、電源ボタンを押しながらホームボタンを押し続ける、だそうです。これか、と思いながら試してみます。お、画面が違うぞ! 無事、リカバリーモードに入ることができました。

iPadリカバリーモードに入ったことで、iTunesiPadの復元を促すダイアログが表示されます。何も考えず、復元を選択し、規約に同意しました。すると復元のためのデータをダウンロードといった画面に切り替わりました。これで安心、と思いきや、すぐに不明なエラー(-31)が発生したといったダイアログが表示されました。やばい。これはやばい。ネットで調べます。それっぽい解決策を書いたページはどこにもありません。これはやばい。やばい。語彙が少なくなってきましたが、困ったときは、とりあえず、再起動。これで解決するかどうかは不安でしたがそれ以外に方法がありませんでした。迅速かつちょっぱやな再起動。SSDの恩恵を感じました。ここであることに気づきます。あ、そういえば、XAMPP、起動したまんまだった。iTunesを開きます。iPadのケーブルを繋ぎ直し、復元のダイアログが表示されます。復元押して、同意して、…今度はエラーがでません。やったー! 原因、明らかにこいつでした。

というわけで無事ダウンロードまで行き着き、77分というダウンロード時間に驚きながらもiPadの初期化はなんとか終えることができました。ここまで長かった…。 一度は寝たきりだったiPad Proも今では元気にお庭を走り回っています。めでたし、めでたし。

<<今回、思ったこと>>

パスコード、ちゃんと設定してたなぁ…

深く追求しないローカルorグローバル for PHP

問題です。

以下のコードに示す$hogeはローカル変数か、それともグルーバル変数か。

if($flg) {
  $hoge = 1;
}

正解はローカル変数。 C++と同じですね。

では次の問題です。

以下のコードに示す$hogeはローカル変数か、それともグルーバル変数か。

$hoge = 0;
if($flg) {
  $hoge = 1;
}

正解はグローバル変数

if文の外で定義しているからですね。

では最後の問題です。 以下のコードに示す$hogeはローカル変数か、それともグルーバル変数か。

try {
  $hoge = 1;
} catch(Exception $e) {
  echo $e->getMessage();
}

ローカル変数? 違います。

正解はグローバル変数$hogeはtryの外でも使えます。

だけどまあ、 グローバル変数になるかどうかはスコープによりけりなので、 そこらへんは深く追求しないで。

自分用sqlまとめ(ちょっとずつ更新予定)

ここを参考にまとめます。

qiita.com

基本

データ(テーブル)の取得
  • *はすべてのカラムを示す
SELECT columnx, columny, ...
FROM table
データの追加
INSERT INTO table 
(column1, column2, column3) 
VALUES(value1, value2, value3)
データの更新
UPDATE table
SET columnx = valuex, columny = valuey, ... 
WHERE columnz = valuez
データ削除
DELETE FROM table 
WHERE columnx = valuex
文字列検索
  • % 1文字以上の任意の文字列
  • _ 一文字の任意の文字列
WHERE columny like "_mojiretsu%"
条件式の拡張(ANDとOR)
WHERE columnx = valuex
AND columny = valuey 
OR columnz = valuez
日付指定
WHERE date 
BETWEEN '2001-01-01' AND '2020-02-22'

ちょっと面倒

テーブルの結合
  • table1 a テーブル名の省略
  • JOIN 結合
  • USING 共通項の指定
SELECT a.value1, b.value2, b.value3
FROM   table1 a JOIN table2 b
USING (value2)
テーブルの結合
和集合
SELECT x, y. z
FROM table1
UNION
SELECT x, y, z
FROM table2
ORDER BY 2, 3, 1
差集合

前者のテーブルのみに存在する項目を抽出

SELECT column FROM table1
EXCEPT
SELECT column FROM table2
積集合

両方のテーブルに存在する項目を抽出

SELECT column FROM table1
INTERSECT
SELECT column FROM table2
複数候補から絞り込む
SELECT * 
FROM table 
WHERE column IN(value1, value2)
他のテーブルの項目を条件に絞り込む(IN)
SELECT x.*
FROM tablex x
WHERE x.key IN
(
  SELECT y.key 
  FROM tabley y
)
他のテーブルの項目を条件に絞り込む(EXISTS)
SELECT x.*
FROM tablex x
WHERE EXISTS
(
 SELECT column 
 FROM tabley y
 WHERE x.key = y.key
)
IDでソートして先頭行だけ抽出
SELECT *
FROM table
ORDER BY id DESC
LIMIT 1

特殊

妖怪1増やす
UPDATE table 
SET hoge = hoge + 1 
WHERE key = 1;

gitで作業中のファイルを作業前に戻したい(直前のコミットに戻りたい)ときのなんちゃら

編集したファイルを破棄したい、編集前の状態に戻したいってときには、 何も考えず、次のコマンドを実行しましょう。

git reset --hard HEAD

git resetの良い解説はこちら。

qiita.com

この記事によると、 git resetはコミットの状態を戻すためのコマンドで、 --hardはファイルの変更自体に影響をあたえますよって意思表示で、 HEADは最新コミットの状態を表しているそうです。 つまり最後にコミットした時点にファイルの状態を戻そう、っていうことですね。

くじ引き

ソースコード

<p id="text" style="font-size: 200%;color: #ff0000"></p>

<script type="text/javascript">
window.onload = function() {
  var elm = document.getElementById("text");
  roulette(elm);
};

function roulette(elm) {
 var r = Math.floor(Math.random()*10);
  if (r < 5) {
  elm.innerHTML = "アタリ";
 } else {
    elm.innerHTML = "ハズレ";
  }
}
</script>

ブロガーは憤怒した

ブロガーは憤怒した。 更新すべき記事がないからだ。 ブロガーは憤怒した。 誰もが見惚れる鮮烈な経験を覚えていないからだ。 ブロガーは憤怒した。 経験も、体験も、知見も、先見もブロガーはなにも持ちあわせていないのだから。 ブロガーの頬を涙が伝う。 ただ、他人の尻馬に乗るしか脳がないことを知っていた。

数学の冒険。導出への道を彼女達と丁寧に辿る。『数学ガール』

夏休み。数学を軽く勉強しようかと『数学ガール』を読みました。

f:id:be116:20160907181646j:plain:w200

初めは、中学高校レベルの簡単な数学を感覚的に理解させてくれる読み物だと思ってたのですが、本当はちょっと違いました。『数学ガール』はかわいい女の子たちとちょっと難しい数学を丁寧に辿って理解していく読み物です。

本書のヒロイン、『数学ガール』は二人います。 『僕』に数学の驚きを教えてくれる才女ミルカさん。 『僕』の教え子、目がクリクリの小動物みたいな女の子テトラちゃん。

数学の驚き、 答えに辿り着く旅の地図、 地図にないシンプルな解法、 振動の本質、 微分の力。

これまでに学んだことが数珠繋ぎに答えを導いてくれる感覚。

ここまでわかりやすく刺激的にまとまっていると、 数学に対しての苦手が消えていくようにさえ思います。 最後の冒険は僕にとっては壮大過ぎて、 理解したとは言いがたいのですが。

そして、『僕』と『数学ガール』の物語。 図書室で2人だけでいい感じに数学に励んでいた『僕』とミルカさん。 その間に割って入るテトラちゃん。 テトラちゃんはわかりやすいくらい明らかに『僕』が好き。 ミルカさんと踊る『僕』。 テトラちゃんをプラネタリウムに連れて行く『僕』。 『僕』の気持ちはミルカさんに惹かれながらも、 テトラちゃんを意識し始めるし… ってなんだこのラブコメは!

エピローグが特にずるい。 結局『僕』はどっちの『数学ガール』を選んだのか。 肝心なところは想像で補わせる演出がにくい。

数学ガール』の感想をもっとかいつまんで言いましょう。 これは頭の運動をしながら、かわいい女の子にハスハスする読み物だ。