夜の歌

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

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の解説と選び方まとめ|ジオトラスト



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

SSLについて勉強中

SSLについて勉強中。
http通信は暗号化されないから、他の人が通信内容を傍受した場合に内容を見られてしまう。 通信の内容を見られたくない場合は、SSLを設定して通信内容を暗号化する必要がある。

設定の内容を前に、仕組みを書きたい。
明日書こう。

『図解! 江戸時代』 「歴史ミステリー」倶楽部

図解!江戸時代: 意外と住みたい?この町と、この時代! (知的生きかた文庫)

図解!江戸時代: 意外と住みたい?この町と、この時代! (知的生きかた文庫)

丸善本店の江戸特集コーナーで発見し購入。江戸の開発、江戸での暮らし方、しくみ、江戸の支配者、一般庶民について1ページずつ図解を使いながら説明してくれている。

江戸時代のかけそばの値段は、現在の価値で約400円、納豆は100円だったらしい。今とあまり変わらない。ゆで卵400円は高いと思うけど、他の物はそうでもない。著者によると、現在と江戸では社会や経済の仕組みが異なっているので、参考までにとのこと。

JavaScriptで実装したプログラムを実行したら『Uncaught RangeError: Maximum call stack size exceeded』と出た

JavaScriptで実装したプログラムを実行したら『Uncaught RangeError: Maximum call stack size exceeded』がConsoleに出力された。下記が実際に実行したプログラム。

function aho() {
  aho();
  console.log(100);
}
aho();


まず、aho関数を再起的に呼び出して無限ループに陥る。そしてブラウザの処理が追いつかず、上記のエラーが出力されたという理解。
再起的という言葉の使い方が、正しいのか気になるところ。

Vagrantの設定理解メモ

Vagrantの設定の流れを理解していなかったので、メモする。

まず、Vagrantを環境構築する際に、VirtualBoxをDLする。ちなみに、仮想マシン作成ツールはVirtualBox以外も使える。
Oracle VM VirtualBox

続いて、BoxをDLしてくるか自作する。Boxとは仮想マシンのテンプレートとのこと。
Vagrant by HashiCorp

BoxのDLが完了したら、開発フォルダでvagrant initを行う。

vagrant init Box名

実行後、Boxの内容の仮想マシンが作成される。

うーん、もっと仕組みを理解したい。

●参考サイト
今から始めるVagrant入門 #1|vagrant|クラウド関連技術ブログ|クラウドデザインのFL.OPS

MySQLの既存のtableのcreate文を表示する方法

ローカル環境が壊れたのか上手く動かなくなり、再度環境を作り直してDBの内容を以降する必要が出てきた。既存のtableのcreate文を表示する方法を調査。下記の内容のサイトが出てきた。

mitsuakikawamorita.com

blog.usoinfo.info

試したら上手くいった。

『東芝解体 電機メーカーが消える日』 大西康之

東芝解体 電機メーカーが消える日 (講談社現代新書)

東芝解体 電機メーカーが消える日 (講談社現代新書)

日本の電機メーカーの凋落を書いた一冊。日本の電機メーカーは「電電ファミリー」、「電力ファミリー」、「独立系」の3つに分類される。「電電ファミリー」と「電力ファミリー」は、電力会社や電力会社などから安定した仕事をもらい稼げた時代が終わり、東芝などは倒産の危機に瀕している。

「独立系」と取り上げられたソニーも、最近の商品の売り上げは芳しくなかったようだけど、PlayStation4の売り上げが好調みたい。著者が言うように、テレビなどのエレクトロニクスは捨てて、PlayStationが持つネットワークを活用していく未来の方が良いように思う。他の会社で、PlayStationと同規模のネットワークを持っている会社はいないからね。