予定があれば朝起きできるのかも

昨晩はなかなか疲労困憊した感じでしたが、今日も朝から仕事のお手伝いをするために 8 時過ぎに会社に向かわなければいけない状況でした。

こういうときって案外サクッと早めに目が覚めることが多い気がします。やはり仕事関連に対する緊張感、責任感が、意識の覚醒しやすさに一役買っているのでしょうか。

紙か、PCか。

アナログ(=紙とペン)とデジタル(=PC)を比較すると、ちょっとした思いつきをメモしたり、考えを深めたり広げたりする場合はアナログが適していると思います。一方でデジタルの方は、長文の記録や、情報の更新・修正・複製などの編集が高速にできるという利点がありますね。

なので「情報を管理する」という目的で考えるとデジタルをメインにして、必要に応じてアナログも使い分ける、というスタンスになりました。

他にも、ペンと紙のメリットとしては、バッテリー切れを心配する必要がなく何時間でも使用し続けることができますし、PC 使用時と比べると目が疲れる度合いも大きく下がります。

いまは A4 サイズのノート、ほぼ日手帳、モレスキンのメモ帳(ポケットサイズ)をカバンに入れて持ち歩いています。ただ、ほぼ日手帳以外の 2 つはそこまで使用頻度が高くないため、もっと意識して使っていきたいところです。

PHP の学習 (25) 簡単なエラー処理 (3)

今日の学習

昨日の続きです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
if (isset($_POST["uranai"])) {
  $age = mb_convert_kana($_POST["age"],"a","EUC-JP");
  $error_msg = array();
  if (is_numeric($age) == false) {
    $error_msg[] = "please type numeric.";
  } elseif ($age < 1 || $age > 120) {
    $error_msg[] = "please input 1< and >120";
  }

  if (!count($error_msg)) {
  $sorry_msg = "ng";
  $uranai_msg[1] = "you are 10-19.";
  $uranai_msg[2] = "you are 20-29.";
  $uranai_msg[3] = "you are 30-39.";
  $uranai_msg[4] = "you are 40-49.";

  $sedai = floor($age / 10);

  if (isset($uranai_msg[$sedai])) {
    print($uranai_msg[$sedai]);
  } else {
    print($sorry_msg);
  }
  }
} else {
  $age = 25;
}
?>
<html>
<body>
<?php
if (count($error_msg)) {
  foreach($error_msg as $msg) {
    print($msg);
  }
}
?>

<form action = "sample_uranai2.php" method = "POST">
  年齢を教えてください:
<input type = "text" name = "age"
 value = "<?php print(htmlspecialchars($age, ENT_QUOTES));?>">
<input type = "submit" name = "uranai" value = "submit">
</form>
</body>
</html>

if (!count($error_msg)) のところで $error_msg が空だった場合に、変数 $sorry_msg 、$uranai_msg にそれぞれ表示させるメッセージを代入します。

次に、入力された年齢 $age を 10 で割り、その商を floor() で端数切り捨てにしたものを $sedai に代入しています。

1
2
3
4
5
  if (isset($uranai_msg[$sedai])) {
    print($uranai_msg[$sedai]);
  } else {
    print($sorry_msg);
  }

↑ 次の if 節ではまず isset() で $uranai_msg のインデックスに $sedai を入れた場合の中身の有無を判定します。$uranai_msg には [1] から [4] まではメッセージを入れていますね。

$sedai が 1~4 の場合はそれぞれに対応したメッセージを表示し、それ以外の場合は $sorry_msg を表示します。

1
2
3
} else {
  $age = 25;
}

↑ 最後の else 節は一番最初の if (isset($_POST["uranai"])) { にかかっています。$_POST["uranai"] が空の場合ということは、つまりこのフォームが最初に表示されたときですね。要するに初期値として $age に 25 を代入していると。なるほど。

PHP の学習 (2) フィボナッチ数列

今日の学習

昨日の続きですが、とりあえず正しく動くコードを見てみることにしました。
参照したのは下記エントリ。

初期値の設定について、僕もよくわからなかったのでもう一度考えてみます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
function fib($n) {
    $a = 1;
    $b = 0;
 
    while (($a+$b) < $n) {
        $r = $a + $b;
        print $r . "<br>";
        $a = $b;
        $b = $r;
    }
}
print fib(200);
?>

Python だとこうなります。

1
2
3
4
5
6
7
def fib(n):
    a,b = 0,1
    while b < n:
        print b
        a,b = b,a+b

print fib(200),

Python のほうは値を一括で代入できているから短く書けるのかと思われます。こういうのは PHP でも配列 array() とかで実現できるのかな?まだよくわかっていないので要調査です。

今日の復習 宿題

PHP も Python でいう IDLE のように対話形式で実行できる環境が欲しいです。
先日軽く調べたときの情報では PHP をコンパイルするときにオプションを設定しなければいけない、という感じだったと思いますので少々難しそうな印象がありますが、が学習効率のことを考えると必須に思えてきました。
(そもそも、自分でソースからコンパイルするのが普通、という世界に向かっているのですし)

あがりを回避する方法 キュー・ワード法 (Cue Word 法)

The 2009 Bobby Martin Memorial Golf Outing
(Original Update by AuthenticEccentric’s Photostream)

これも COURRIER JAPON 10 月号からです。
「あがり症」のメカニズムというのは、「自分の動作に神経質になる」→「意識過剰になり、どんなミスも犯すまいと考えてしまう」→「自然でスムーズな動きができなくなる」→「持ち前の能力・才能を発揮できない」というものらしいです。

これを回避する方法について、ウェスタン・オーストラリア大学の心理学教授が次のような調査をしたそうです。

熟練ゴルファーを対象に 3 つの状況でプレーしてもらい比較する

  1. スイングのある部分的な要素にこだわって(腰の動き、手首をまっすぐ伸ばす、など)プレーする
  2. ゴルフと無関係な言葉(「青」とか「白」とか)だけを考えてプレーする
  3. 説明的な形容詞(「スムーズに」とか「バランスよく」など)を頭の中で唱えてプレーする

だいたい想像がつきそうですが、1 番のように細かい部分だけを気にしていると「あがり」状態になり冴えないショットを打ってしまい、逆に 3 番のように漠然として曖昧な形容詞を意識しているとプレーが乱れることがなかったとのこと。
(2 番はどうだったんでしょうか…)

この、陳腐でありきたりな言葉を一心に考えるという、 3 番目のやり方をキュー・ワード法というそうです。あのタイガー・ウッズも

「精神的に強いと人は言うけど、実際には『あきらめてはだめだ』『負けるな』『自分が持っている最高のものを引き出す以外ない』といったことを考えているだけなんだ」

と話していたというので、トッププロも実践している手法のようですね。漠然とした目標に意識を集中させることで、考えすぎを防いで「あがる」ことなく力を発揮できる、というのはなるほどそうなのかなと納得できる気がします。

ちなみにキュー・ワード法の Cue Word というのは放送業界の用語でアナウンサーや出演者とスタッフの間で決めておく暗号のことだそうです。

例えば、プロ野球のナイター中継などでCMへ入る前に「アナウンサーが『この放送は××球場からお送りしております。』というと5秒後にCMへ行くんですよ。」とか、「このマークが右下に出たら5秒後にCMへ行くんだよ」といった取り決めをしておくこと。
か行|放送用語辞典|群馬テレビ

「目標を達成するには具体的に、詳細にイメージすることが大切」という話もよく聞きますが、それとは別に、いざというときにあがってしまわぬようにこういった方法もある、というのは覚えておいてもよいかもしれません。

COURRiER Japon (クーリエ ジャポン) 2010年 10月号 [雑誌]
COURRiER Japon (クーリエ ジャポン) 2010年 10月号 [雑誌]