夜の歌

プログラミング、音楽、本について緩く書いていきます。

お客さんから注文を処理するプログラム

お客さんから注文を処理するプログラム。注文内容は汁物。何故、このプログラムを実装しようと思ったのか。正規表現をやろうと思い、色々考えてこうなった。。無駄かもしれない。でも、まあいいや。
[味噌汁]、[豚汁]、[ソーキ汁]が入力値として送られてきたら、正規表現でチェックしメニューにある場合に商品の金額を表示する。入力値がメニューにない場合、注意文言を表示するプログラム。

<?php
const ERROR_MESSAGE = 'お客様が注文した商品はありません。';

// 注文を受ける
$order = $_GET['order'] ?? '商品はない';

// メニューと値段リスト
$menu_list = array("/\[味噌汁\]/", "/\[豚汁\]/","/\[ソーキ汁\]/");
$price_list = array("100", "110", "200");

$menu_num = count($menu_list);
for($i=0;$i < $menu_num;$i++){
    // 注文された品がある場合、値段を表示する
    if(preg_match($menu_list[$i], $order)){
        $order = preg_replace("$menu_list[$i]", $price_list[$i], $order);
        echo $order . "";
        exit();
    }
}
echo ERROR_MESSAGE;
exit();



改良を加えていこう。

yumとrpmについて

Red Hat系のLinuxTurbolinuxでは、プログラムの配布形式としてRPMRedhat Package Manager)を採用している。

引用:RPMパッケージとは

だから、CentOSで必要なソフトウォアをインストールする際、RPMコマンドを使用すればインストールできるということか。 ただ、パッケージには依存関係があり、RPMコマンドを使ってパッケージをインストールをしても動かない場合がある。そこで、yumというrpmを依存関係を管理するマネージャーを使って、パッケージをインストールする。

引用:【初心者にもわかる】rpmとyumの違いと使い分け一通り



明日さらにまとめよう。

『小泉進次郎と福田達夫』 田崎史郎

小泉進次郎と福田達夫 (文春新書)

小泉進次郎と福田達夫 (文春新書)

文藝春秋2月号の塩野さんと小泉さんの対談を読んで、著書が言及されていたので購入。田崎さんが司会で、小泉さんと福田さんの対談をまとめた一冊。小泉さんと福田さんの農政時代の話や、二人ともの親の話が大半を占める。

農政に関わる団体が農林、農中など複数あり、組織がややこしい印象を持った。国民に分かりやすく説明するのが難しそう。政治家と官僚の仕事の中身が知れる本だった。

『パパは脳研究者 子どもを育てる脳科学』 池谷裕二

パパは脳研究者 子どもを育てる脳科学

パパは脳研究者 子どもを育てる脳科学

今年の3月頃に子供が産まれるので読んでみた。躾についてのコラムが面白かった。

著者によると子供を躾る時に、極力強制ではなく諭す方がいいとのこと。例えば、子供が勉強せずにゲームばかりやっているケース。子供に勉強をさせようと強制的な言葉を使うのではなく、「そろそろ勉強したらどう?」と優しく諭すのがいいらしい。優しく諭されてゲームをやめた場合、子供は「続けられたのに、やめてしまった」と思い、行動と感情の不一致を感じる。この場合、自分の「ゲーム」をやめた決断を自分の内面心理から説明しないといけない。やめた理由として、「ゲームが楽しくなかったから、やめたんだ」となる。また、親が辛抱強く優しく諭していると、ゲームへの興味がなくなっていくことが、実験で証明されているらしいのだ。

うーん、元日に奥様の実家に行って、親戚夫婦の子育てを見たけど、なかなか辛抱強く諭すのは難しそう。まあ、でも、やってみるのもありか。とりあえず、奥さんと話しをしてみよう。

CentOS7導入

やっとCentOS7をVagrantを使って導入した。

qiita.com

apacheをインストールするまではyumで出来るけど、起動とかのコマンドとか違って面白い。 明日もやろう。

Pythonで「10までの整数で、2の倍数を3乗し表示する」プログラムを書いてみた

ていうことで。

# 引数を3乗し表示する
def threePower(input_number):
    output = input_number ** 3
    print(output)

# 10までの整数で、2の倍数を3乗する
multiple_of_two = []
for i in range(1, 11):
    if i % 2 == 0:
        multiple_of_two.append(i)
for x in multiple_of_two:
    threePower(x)


はい、次やりましょう。

PHPのクラスのコンストラクタ

PHPのクラスのコンストラクタについて、挙動が謎だったので調査。
そのメモを記載する。

何故かPHPでクラスを作る時は、クラス内にコンストラクタを作成しないといけないと認識していた。
しかし実際には不要

PHPのコンストラクタの機能として、クラスから新たなオブジェクトを作る時に、コンストラクタメソッドを実行する。

サンプルコード
class firstClass{
    public function __construct(){
        echo 'first class construct' . "<br>";
    }
}

//  親クラスにコンストラクタメソッドが設定されている
class secondClass extends firstClass{
}

// 子クラス、親クラスともにコンストラクタメソッドが設定されている
class thirdClass extends firstClass{
    public function __construct()
    {
        echo 'third class construct' . "<br>";
    }
}

$first = new firstClass();
$second = new secondClass();
$third = new thirdClass();


表示内容
first class construct
first class construct
third class construct




ちなみに、親クラスのコンストラクタメソッドがprivateメソッドだった場合、子クラスが新たにオブジェクトを作ったても、親クラスのコンストラクタメソッドは実行されない。

PHP: コンストラクタとデストラクタ - Manual

ローカル環境のサーバの設定

ローカルの仮装環境にCentOSをインストールして色々と設定している。
SSLの設定をしようとして、色々と詰まったり理解できたりしたので記録として書く。

1、.htaccessをDocumentRootに置いても動かない

http.confで設定していたDocumentRootと認識していたDocumentRootが違っていただけだった。。
終了。

2、/etc/httpd/conf.d配下のファイルの設定が反映される

/etc/httpd/conf.d配下に、vhost.confを新規作成。その設定内容が反映されている
理由を知りたくて調査。 etc/httpd/conf/http.conf内に下記記載を発見。

Include conf.d/*.conf

納得。

SSLのついて自分なりにまとめた

ネットでSSLについて調べて、実行順をまとめた。

1、クライアントから、SSLを設定しているサーバへアクセス
2、サーバが証明書をクライアントへ送る
3、証明書が送られてきたクライアントは、証明書に含まれている公開鍵を取得する
4、公開鍵から暗号化されて共通鍵を作り、2で証明書を送られてきたサーバへ共通鍵を送る
5、4で共通鍵を送られてきたサーバは、共通鍵の暗号化を秘密鍵で複合する

●参考サイト
SSL/TLSの解説と選び方まとめ|ジオトラスト



さて、実際にローカルで設定してみよう。