ツレのPCのトラブル

ツレのPCがしばらく放っておくと何だかフリーズするようになった。

再起動してみるとBIOSの起動でエラーが出ている。CPUが熱くなっているとからしい。まだ涼しいのにね。

とりあえず中を開けてみるとホコリがものすごく積もっている。エヤーコンプレッサーで吹き飛ばす。

それとケースファンが一つおかしな音がしているので交換する。最近のトラブルはCPUも含めファンのトラブルが多い。

Windowsのアップデートとしたし、常駐プログラムも外したりとやってみたけど変わらない。

試しに起動のSSDだけにしてハードディスクを外してみると、しばらくしてもフリーズしなくなった。このハードディスクはSSDに換装したときに念のためにとバックアップ元として残したもの。結局はハードディスクが原因。このハードディスクを外してチェックしてみると、全く認識しなくなっていた。

これで対応完了。一家に一人、自分のような人がいると便利なのでした。

In album 2018/03/31

Googleアプリがおかしいの?

Googleアプリが最近おかしな表示なってしまっている。

これはこちらのスマートフォンのせいか? それとも新しいGoogleアプリの仕様か?

スマートフォンを再起動してもなおらないし、キャッシュを削除してもなおらないし・・・。

マキタのコードレス掃除機が吸わなくなったら

何だかマキタのコードレス掃除機が吸わなくなったなと思ったら、中のプレートがなくなっていた。

最後に掃除機を使ったツレにLine経由で聞いたら、紙パックを交換したときに何だかそんなのあったような? だと言われた。ゴミ箱にあるかもだって。

しっかりゴミ箱に捨ててあった。今日は燃えるゴミの日だから焦ったわ。たまたま、このゴミ箱のゴミは捨ててなかった

しっかりこの部品を捨てないでと書いてあるのにね。もし、捨てられてもこのプレートは手に入る。みんな捨ててしまうのね・・。

In album 2018/03/23

可哀想な通販サイト

ツレのThunderbirdに注文確認のメールが入ったけど、最近たくさんネット通販で買い物をしているけど、この注文は買った覚えがないという。

それで気になって、そのショップに電話したみたけど、話し中でつながらなかったそうだ。メール内の電話番号に無闇に電話するのは危ないけど、楽天のサイトからそのショップを探したら、載っていた番号とメール内の番号が一緒だったとのこと。

自分もところにも、Gmailの迷惑メールのフォルダーに同じメールがあった。この辺はGmailは優秀である。メール内のリンクを見ると、楽天サイトではない怪しいドメインにリンクされていた。しかも自分は楽天のアカウントなんて持っていないし。これは完全なスパムメール。

しかしながら、載っている電話番号は本物だから、電話をかけれれまくられて、そのショップはもう仕事にならないだろうな。かわいそうに。

くれぐれもこんなメールが来ても、みなさんは電話をかけてくださるな。電話番号を載せられた店舗は迷惑だから。

でもさ。続けて3通同じものを送るのはやめろよな。バレバレじゃないの。

雪降ってきた。それでも出かけようとする少年・・・。

雪降ってきた。それでも出かけようとする少年・・・。

Laradockを使ってCakePHP3+Xdebug+VS Codeの開発環境を構築する。

CakePHP3で作りたいものがあったので、CakePHP3の開発環境を簡単にDockerを使って構築しようと思い立った。最初は自分でdocker-compose.ymlを作成してコンテナを起動してみたけど、どうしてもXdebugでデバッグができなかった。

たまたまLaradockという本来はLaravelフレームワーク用のDockerコンテナキットを見つけた。最後にcomposerでLaravelの代わりにCakePHPをインストールできるらしいからLaradockを使ってみた。LAMP関連(今回はAではなくnginxだけど)のコンテナが全部入りだから(MySQLだけではなくて、PostgreSQLやSQL Serverもある)、自分でdocker-compose.ymlを書くよりはいいだろうと思った。

参考までにこれから構築していく自分の環境は以下の通りである。ここにLaradockを使ってCakePHP3+Xdebug+VS Codeの開発環境を構築する。。

Windows 10 Pro 64 bit
Docker version 17.12.0-ce, build c97c6d6
docker-compose version 1.18.0, build 8dd22a96

以下はいろいろと参考にしたサイトからつまみ食いしなから設定を行った部分を抜き出してまとめていく。

Laradockの設定は、こちらのサイトを途中まで参考にした。

PHPフレームワーク「Laradock」で、手軽にLaravel+Dockerな開発環境を構築する

gitのcloneでLaradockをインストールしている。次にLaradockでCakePHP3に関する設定を行うには、こちらのサイトを参考にした。

LaradockでPHPフレームワーク(Laravel・CakePHP)とCMS(WordPress・Drupal・baserCMS)の開発環境(nginx・php-fpm・mysql)を構築する

.envをコピーして設定して、これでインストール完了ですと言えないのは、コピー&ペーストインストールのいつものこと。このままではphpMyAdminからMySQLコンテナに接続できないとか、細かい問題があった。そしてXdebugでPHPのデバッグをやりたかったので、いろいろ設定を追加していく。

まずは、上記の2つのサイトを参考にしてLaradockをインストールする。自分のところでは、今までの作業でディレクトリはこのようになっている。

 /laradock-test
 ├── laradock
 └── src

.envの設定だが、設定の一番のポイントはポート番号を重ならないこと。既にローカルでPHP+Xdebugが動いていたようなので、ポート番号の指定で嵌まった。使っていないポート番号を設定しておく。以下に今回設定した.envのnginx, MySQL, phpMyAdminの設定を上げておく。

 ### NGINX
 NGINX_HOST_HTTP_PORT=8082
 NGINX_HOST_HTTPS_PORT=443
 NGINX_HOST_LOG_PATH=./logs/nginx/
 NGINX_SITES_PATH=./nginx/sites/
 NGINX_PHP_UPSTREAM_CONTAINER=php-fpm
 NGINX_PHP_UPSTREAM_PORT=9000

## MYSQL
 MYSQL_VERSION=5.7
 MYSQL_DATABASE=default
 MYSQL_USER=default
 MYSQL_PASSWORD=secret
 MYSQL_PORT=3333
 MYSQL_ROOT_PASSWORD=root
 MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d

### PHP MY ADMIN
 # Accepted values: mariadb - mysql
 PMA_DB_ENGINE=mysql
 # Credentials/Port:
 PMA_USER=default
 PMA_PASSWORD=secret
 PMA_ROOT_PASSWORD=secret
 PMA_PORT=8083

使っていない別のポート番号に設定し直しておく。MYSQL_VERSIONは元の設定の8.0だと認証で失敗してしまったので、8.0ではく5.7に設定したら認証ができた。こちらは何か別のよい方法があるかもしれない。

WORKSPACEとPHP_FPM の設定は以下の通り。修正した箇所だけを上げておく。

 ### WORKSPACE
 WORKSPACE_INSTALL_XDEBUG=true

 ### PHP_FPM
 PHP_FPM_INSTALL_XDEBUG=true
 PHP_FPM_INSTALL_INTL=true

Xdebugを使うのでWORKSPACE_INSTALL_XDEBUGとPHP_FPM_INSTALL_XDEBUGをtrueにして(PHP_FPM_INSTALL_XDEBUGだけでもいいかも?)、PHP_FPM_INSTALL_INTLはCakePHP3で必要なのでtrueにしておく。

.envの設定の最後として、CakePHP3のインストール先のディレクトリも設定しておく。

# Point to your code, will be available at `/var/www`.
APPLICATION=../src/

nginxのドキュメントルートを修正する。設定するファイルは以下のファイルである。

.\laradock\nginx\sites\default.conf

こちらのrootの設定を、CakePHP3のリモート側のドキュメントルートのディレクトリに設定する。今回のプロジェクト名をmycakephpとしておく。

root /var/www/mycakephp/webroot;
ここで一度Docker composeを実行してコンテナを起動しておく。
docker-compose up -d nginx mysql phpmyadmin

workspaceコンテナにログインして、composerを使ってCakePHP3をインストールしておく。こちらは参考サイトの通り。

LaradockでCakePHPの開発環境(nginx・php-fpm・mysql)を構築する

ここではサイトに書いてある通り、以下のコマンドでプロジェクトmycakephpでCakePHP3をインストールした。

 $ composer self-update && composer create-project --prefer-dist cakephp/app mycakephp

nginxからCakePHP3のサイトを参照できるかチェックする。OKならCakePHP3の初期画面が見えるはず。

データベースの接続の設定を.\src\mycakephp\config\app.phpにしておく。

'Datasources' => [

    'default' => [
       :
    'host' => 'mysql',
       :
    'username' => 'default',
    'password' => 'secret',
    'database' => 'default',
       :

このような感じで.envのMySQLの設定に合わせておけば、データベースに接続が成功はずである。

phpMyAdminも確認しておく。こちらも.envのMySQLの設定通りにすればログインできてMySQLの中を参照できるはずである。もちろん、MySQLのパスワードは適当なものに変えること。

サーバ:mysql
ユーザ名: root
パスワード: root

MySQL Workbenchからも接続を確認できた。以下の接続情報でWindowsローカルで接続できた。

Hostname:localhost
Port: 3333
Username: root
password: root

最後にXdebugの設定である。Xdebugのコンテナ側の設定ファイルは次の2つである。同じ内容でコピーすれば大丈夫だった。

.\laradock\php-fpm\xdebug.ini
.\laradock\workspace\xdebug.ini

自分が設定した内容は以下の通りである。とりあえずプロフィラの設定も含めて設定しておく。

 xdebug.remote_host=172.27.7.81
 xdebug.remote_port=9002
 xdebug.idekey=Listen for XDebug

 xdebug.remote_autostart=1
 xdebug.remote_enable=1
 xdebug.remote_connect_back=0
 xdebug.cli_color=1
 xdebug.profiler_enable=1
 xdebug.profiler_output_dir="/var/www/mycakephp/tmp"

 xdebug.remote_handler=dbgp
 xdebug.remote_mode=req

 xdebug.var_display_max_children=-1
 xdebug.var_display_max_data=-1
 xdebug.var_display_max_depth=-1

ここでわからなかったのはxdebug.remote_hostの値だった。結論としてはこちらはWindowsの場合、

ipconfig

で表示されるDocker側の仮想スイッチのアドレスの値を設定しておく。Googleさんに「xdebug リモートデバッグ」で検索して、よく出てくるサイトに書かれている$_SERVER[‘HTTP_X_REAL_IP’]とか$_SERVER[‘REMOTE_ADDR’]の値ではないので注意すること

xdebug.remote_host = host.docker.internal
xdebug.remote_connect_back=1
xdebug.remote_port=9002
xdebug.idekey=Listen for XDebug

xdebug.remote_autostart=1
xdebug.remote_enable=1
xdebug.remote_connect_back=0
xdebug.cli_color=1
xdebug.profiler_enable=1
xdebug.profiler_output_dir="/tmp"

xdebug.remote_handler=dbgp
xdebug.remote_mode=req

xdebug.var_display_max_children=-1
xdebug.var_display_max_data=-1
xdebug.var_display_max_depth=-1

xdebug.remote_hostの設定は、最近新しくDockerのための設定が追加されたようなので、こちらは難しいことをせずにhost.docker.internalを指定しておく。これでうまくデバッグができるようになった。

docker-compose stop
docker-compose build php-fpm workspace

でphp-fpmとworkspaceのイメージをビルドしなおす。ビルドできたら、

docker-compose up -d nginx mysql phpmyadmin

をDocker Composeを再度実行する。nginxのドキュメントルートにphpinfo()を書いたファイルを置いてアクセスしてみて、正しくxdebugが設定されているかを確認しておく。

クライアント側の開発環境はマイクロソフトのVisual Studio Code(VS Code)を使っている。あらかじめVS Codeの拡張機能であるPHP Debugをインストールしておく。次にVS Codeのデバッグの構成ファイル(launch.json)を修正する。launch.jsonは以下のように設定した。

{
  "version": "0.2.0",
  "configurations": [

   {
    "name": "Listen for XDebug",
    "type": "php",
    "request": "launch",
    "port": 9002,
    "pathMappings": {
      "/var/www":"${workspaceRoot}/src"
     },
    "ignore": [
      "**/vendor/**/*.php"
    ]
   },
   {
    "name": "Launch currently open script",
    "type": "php",
    "request": "launch",
    "program": "${file}",
    "cwd": "${fileDirname}",
    "port": 9002
   }
  ]
 }

portは、xdebug.iniのxdebug.remote_portと同じ値にする。以下のように設定するように言っているサイトもあるが、

      "serverSourceRoot": "/var/www",
      "localSourceRoot": "${workspaceRoot}/src"

serverSourceRoot、localSourceRootとも今後推奨されない設定のようなので、pathMappingsにしておく。pathMappingsの設定は、

"pathMappings": {
    "リモートディレクトリ":"ローカルディレクトリ" 
    },

のようにリモートとローカルのパスをマッピングする設定である。ドキュメントをよく読まずにリモートとローカルを反対にしてしまったので動かなくて悩んだ。こちらはnginxのドキュメントルートのディレクトリではないことに注意する。ドキュメントルートディレクトリ外のファイル(例えば、.\src\mycakephp\src\Controller\AppController.php)をデバックしようとしたときに、pathMappingsにルートディレクトリに設定してしまうとソースファイルが見つからないと言ってくる。そこでソースファイルを格納しているディレクトリを設定しておく。

ignoreの設定をしておかないと、以下のような例外が途中で発生する。どうしてかは不明である。

例外が発生しました

Aura\Intl\Exception: Package 'default' with locale 'ja-JP' is not registered.

.\src\mycakephp\webroot\index.php とかに適当にブレークポイントを設定して、Listen for XDebug”の構成でデバッグを行う。ブレークポイントを設定したところで止まるかとチェックする。後はステップオーバーでプログラムが進むか、ステップインで別のソースを参照できるか、または変数の中身を参照できるかをチェックして完了。

以上でLaradock+CakePHP3+XdebugでVS Codeを使って快適にデバッグができるようになった。以上、再度開発環境を構築する際に忘れないようにメモを残しておく。

追記

同じ設定をMacでやってみたら、niginxコンテナが起動できなかった。原因不明・・

.\laradock\nginx\sites\default.conf にゴミが入っていたのが原因だった。dockerのログを見たら原因がわかった。

無事にMacでCakePHP3のトップページを参照できた。ただしデバッグできない。

Macでもデバッグができるようなった。ただし、xdebug.ini に

xdebug.remote_host=docker.for.mac.localhost

を設定すればOKのようだ。情報はこちらのサイトから。

PHP on Laradock w/ Visual Studio Code(VS Code)でデバッグ環境 (特にon Mac)

ただし、MacでDockerはとても遅い。ブラウザが表示し終わるのに時間がかかる。こちらは問題になっているようで、将来改善されるのかな?

追記2

VS CodeのターミナルからDocker Composeすると、IO Errorが出る。普通にPower Shellで実行するとうまく行く。これは、issuesに上がっているから周知の問題なのかな?

追記3

MySQLのコンテナが起動できなかったので、解決策はこちらから

LaradockでMySQLがどうしても立ち上がらない人あつまれー!

追記4(2018年9月14日)

xdebug.remote_hostの設定を変更しておく。

アラジンブルーフレームストーブの芯交換

アラジンブルーフレームストーブの芯を目一杯上げてもしばらく経つと、きれいなブルーの炎ではなくオレンジの炎になってしまいますので芯を交換してしまいます。おそらく芯が焼けていっていることと、毎週メンテナンスで芯を削っていますので、短くなっているのでしょう。そろそろストーブがいらなくなりそうな季節ですが、急に寒くなったりとしますので今シーズンで交換です。

アラジンストーブを今年出したときに念のために芯を買っておきました。そのときはアマゾンでも芯の在庫がなくて3週間ほど待ちでしたので、アラジンストーブを持っているのであれば念のために交換用の芯を確保しておいたほうがよさそうです。交換が必要なときに芯が手に入らないというのも問題ですので。

さて交換するのですが、芯に付いてくる交換手順の説明書は一見詳しく書いていると思われますが、読んでみると曖昧な箇所があって理解できないところがあります。この説明書を熟読するよりも、以下のYouTubeの映像を見た方がよく理解できます。クラッチハンドルって何って? というのはこの映像でわかりました。

対震自動消火装置が正常に動作しているかを特に確認して作業完了です。芯の交換は一回やれば次回の作業は迷わないでしょう。