Windows Defender絡みでトラブル

Windows10の標準ウイルス対策ソフトのWindows Defenderで2点ほどトラブルがあった。

そもそもLenovoのThinkPadに開発環境を作っていたところトラブルが発生した。その原因が2つともWindows Defenderであった。

1.Docker for Windowsが「Removing Files」で止まってインストールできない。

「Removing Files」の表示したところのインストールの途中で止まってしまう。もちろんこれではDockerの起動で失敗してしまう。いろいろGoogleさんに尋ねたところ、Dockerのコミュニティサイトで見つけた。

Docker for Windows (CE Stable) hangs on installation step Installing Components and Removing Files

そのものズバリである。楽しようと思って日本語のサイトばかり探していたので時間がかかった。英語の本家のサイトも見ておきましょう。

一時的にWindows Defenderを無効にしたら、無事にインストールできた。

2.Phtoshopで「Web用に保存」で「指定されたパスは見つかりません」というエラーになる

最初は「Generator に問題があります」というエラーが出ていた。こちらは、PhotoshopのディレクトリにLogsを作成したら「クリック書き出し」は直った。どうしてPhotoshopをインストールしたときにLogsディレクトリを作成してくれないのかは不明である。

Generatorのエラーメッセージについて

しかし、今度は「Web用に保存」で「指定されたパスは見つかりません」というエラーが出てしまう。こちらはWindows DefenderをでPhotoshopのアクセスを許可したら直った。こちらは以下のサイトを参考にした。

【Photoshop】「指定されたパスが見つかりません」と表示された場合の対処方法 
(右クリックでテキストコピー禁止しているサイトなので注意)

今までウィルス対策はESET Securityを使っていたので、このようなトラブルはなかった。まだライセンスは余っているし、ESET Securityに戻そうか思案中である。

ThinkPadのトラブルが多くて、一度Windowsを再インストールしてやろうかと思ったが、やらないでよかった。まだWindows Updateが失敗するとかのトラブルが残っているが。

会社のホームページのサーバー移行を行う

会社のホームページを常時SSL化に伴い、サーバーの移行のついでにWordPressからbaserCMSに乗り換えてしまう。ページ数も少ないし手でコピペしてしまう。それにしてもアクセスの少ないサイトである。

周りにはSSLでアクセスさせたほうがいいよと言いながら、自分のところではやっていなかったという、ようやくやってみる。ほぼ会社のホームページは更新してないけど、ホームページがあったでセールス電話がかかってくるくらいなもの。でも、ホームページがなくなると、周りから会社が潰れたと思われるので、簡単なものでもいいから作っておく。

さくらインターネットのVPSにApacheを立てて名前ベースのバーチャルホストで動かしていたが、これを同じくさくらインターネットのレンタルサーバーに移してしまう。ドメインを設定して、/etc/hostsにIPアドレスを追加して、ドメイン名でさくらインターネットのレンタルサーバーにアクセスできるようにしておく。あとは、MySQLの設定やbaserCMSのインストールをごにょごにょやって、ページのコピペ、適当にテーマを変更、DNSを変更、SSLの設定して完了。

と思いきや、以下のさくらインターネットのサポートサイトに書いてあるように.htaccessを追加すると、HTTPにアクセスしたときリダイレクトループが発生する。SさくらインターネットのレンタルサーバーではSNI SSLとか普通のSSLではないようなので、普通にrewriteルールを書いたらダメだそうな。

ブラウザのキャッシュをクリアしたり、別のテーマにしたり、テーマの初期化データを再投入とか、.htaccessを元に戻したりしても、今度は元に戻らなくなった。なにかやってしもうた、感が大きい。

しかしながら、テーマの初期化データを再投入をやると、今まで作っていたページが来てしまったのは辛かった。これをやらないとテーマを変えたらブログ一覧が取得できないとか、原因不明な動きをする。こちらは今回ページ作成で追加されたデータがあるテーブルを、SQLで強引に入れ替えてしまうというこ手段で回避した。テーマの管理に初期データを出力する機能で一旦データを作成して、こちらを初期データとして再投入したけど、元に戻らなくなったのでやめた。

リダイレクトルールの原因は、私のbaserCMSのシステム設定の勘違いだった。WebサイトURLがSSLとなっていないものとSSLと明示されているURLの2つ設定しないといけないが、SSLなっていない方にHTTPを設定してしまっていた。こちらもHTTPSのURLを設定しないといけなかった。なんで2つURLを設定しないといけないかはソースを見てみないとわからない。

その下にSSLのチェックがあるけど、こちらは管理者画面でSSLでアクセスするかの設定だった。このチェックでSSLのURLを自動的にアクセスしてくれるのかと思い込んでいたの大きな間違いだった。

「管理者画面SSL設定」で「SSL通信を利用する」にチェックを入れると、HTTPSで管理者画面にログインできなくなったので外しておいた。これは原因不明。

以上、なんだかんだで当初の目標通り無事にSSL化ができた。しかし、HTTPからのリダイレクトに若干問題あるけど時間があったら対応する。

追記(2018年9月5日)

初期データを投入したからいろいろなところで元に戻ってしまっている。見つけたら直している最中。タイトルが初期データだったのはまずかったな。

ThinkPadの携帯ネットワークが不安定なので

まだまだThinkPadの携帯ネットワークが不安定である。これはThinkPadを買ったのが失敗したかと思った。わざわざWAN対応でカスタマイズしたのにな。

と、言ってられないので再度対応を考える。レノボのサポートサイトに行っても快活方法は見つからない。Q&Aのサイトはあるけど、サポートはユーザーコミュニティでやっているみたい。

ここから余談。

レノボにすればサポートは、「何かあったらユーザーコミュニティで質問しろよ。詳しいパワーユーザーが答えてくれるぜ。」って感じなのかな。しかし、パワーユーザーっていうのが曲者で、回答内容を見てみると、「あんたの質問内容じゃあ情報が足りない。」とか「あんたの質問は何を言っているかわからない」とか「そのそもこのコミュニティで質問するべきことではない。」とか、初心者からだと凹むような回答が多い。しかもこんな回答とするのが上位の回答数のユーザーと来たもんだから始末が悪い。

まあ、こんなユーザーコミュニティに頼らないで、自力で解決しなければいけないかと思ってしまったりする、これはレノボによる”ユーザースキルパワーアッププログラム”かもしれないな。

さて話しは戻るが。

結局、今のところの解決策として、最新のWANドライバをアップデートすること。2018年7月24日リリースのワイヤレスWANドライバにアップデートしておいた。とりあえずこれでまたまた様子を見ておく。

ドライバの置き場所とかは以下のレノボのサポートサイトで

https://support.lenovo.com/jp/ja/solutions/ht117260

自分のThinkPadの必要なドライバは、ここのリンクからダウンロードできるようだ。あらかじめレノボのユーザーアカウントを作成して、自分のThinkPadをマイプロダクトに登録すること。登録まで多少わかりにくくて手間取るかもしれないけど、がんばって登録してね。

ダウンロードサイトでドライバの自動更新ができるみたいだけど、あらかじめLenovo Service BridgeというThinkPadのシリアルナンバーとか中身をスキャンするソフトをインストールする必要がある。しかしながら、あらかじめインストールされていても、どういう訳かLenovo Service Bridgeが起動してくれない。そのときは、仕方ないので一度Lenovo Service Bridgeを削除してから再インストールしたら無事にスキャンが始まった。

ThinkPadは何かあったら解決が難しいと痛感した。まだまだ問題があるかもな。

追記(2018/07/31)

やはりWANでつながらない。つながっているけどスリープから復帰したときとか、明示的に携帯ネットワークをOFFにするとつながらなくなる。携帯ネットワークでつなぐためには、ThinkPadの再起動が必要になる。再起動すれば、二回に一回はつながるようになる。

さて、Lenovoのサポートをお願いしようかとサポートサイトに行ってみると、連絡先の電話番号が見つからない。自分のThinkPadを登録したマイプロダクトのぺーじには、ユーザーコミュニティと有償サポート、国際サポートのリンクしか出てこない。散々探してみると、どうやら購入後30日しかレノボからテクニカルサポートを受けられないようだ。30日以降は有償になる。とにかくレノボのサポートサイトはわかりにくい。Q&A情報からは必要な情報を取得できなかった。

どうやらレノボは技術的なユーザーサポートは、ユーザーコミュニティに任せてしまっているようだ。ユーザーコミュニティを覗いてみても、そんなに満足できるような回答をされていない。レノボもこのユーザーコミュニティはレノボが運営しておらず、レノボからの回答ではないと謳っている。これではThinkPadを買ってもあとでトラブルがあっても正常に戻すことは一般の人では難しいかもしれない。

追記(2018/08/31)

携帯ネットワークにつながらないときの対処方法の一番は、ThinkPadを再起動することしかなさそう。こんなバカなことがあるかは置いておいて、これはどこに相談するかが問題。Lenovoか? Lenovoのユーザーコミュニティか? それともSIMカードを出しているOCNか? いずれも知らないと言われそう。

最初からWAN対応なんてThinkPadを買わなければよかったと後悔している。そもそもThinkPadを買わなければよかったのかな。携帯ネットワークにつながらないこと以外は、ThinkPad Carbonを気に入っているのだけど。

デジサート社証明書再発行したけどIISにインストールできない件

お客さんから「さくらインターネットからSSLの証明書を再発行しろってメールが来たけどやっておいて。」と連絡があった。デジサート社(旧シマンテック社)が発行したSSLサーバー証明書を、Chromeで失効されてしまうので再発行しなければいけないそうだ。

デジサート社証明書再発行対応について

転送されてきたメールに書いてあったさくらインターネットの指示通りにサーバー証明書を取得の手続きを行う。しかし、発行ステータスが手続中のままで一日経っても進まない。さくらインターネットのサポートに問い合わせると、認証ファイルを再度アップしなければいけないそうだ。説明書をよく読んでいなかったし(どこかに書いてあるかわからない)のが大きな敗因だった。サポートからは「認証できていないから。」の一言だったのはやさしくないサポートだった。認証ファイルを設定しなけれいけないなんて、とんと忘れていたので(更新の一年に一回しか作業しないし)、認証ファイルをアップし直すということまで、たどり着くまで時間がかかった。最初はIPアドレスの許可かファイヤウォールの設定かと思った。

無事に認証されてサーバー証明書をダウンロードできるようなった。今度はWindows ServerのIISにイントールしようとしたらできなかった。IISの「証明書要求の完了」でインポートしようとしたところ、問題なくインポートできてサーバー証明書一覧に表示されるのがが、他のページに遷移したり更新をすると一覧から消えてしまい、バインド設定ができなかった。

再度、さくらインターネットに問い合わせたところ、自分のところのサーバーではないからサポートできないと回答されてしまう。その回答メールの中に

今回の証明書再発行はGoogle とデジサート社との不仲が原因であり、
ChromeやFirefoxなどで、ある期間にデジサート(シマンテック)から発行された
証明書をエラー扱いにするというものでございます

と書かれているので、何だか会社同士の勝手なふざけた理由で、こちらが作業しなければいけないようだった。これに関しては、さくらインターネットのサポートには、「ふざけんな。」と返送しておく。

このトラブルの件を調べたところ、同じ現象が報告されている。

IIS7でSSL証明書がインストールできない

このような現象が発生したら、そのままIISでは証明書を入れられない。OpenSSLのコマンドで.pfxファイルを作ってからインポートしてあげないといけないようだ。面倒くさそう。

今回のサイトはブラウザでアクセスするようなサイトではないしテストサイトみたいなものだから、これからどうしようか考える。他社のSSL証明書にしたほうが速いし安いかな。

新しくThinkPadを買った

ずっと前から買う買うと言っていたノートPCをようやく購入。買ったのはレノボのThinkPad X1 Carbon。ちょうどレノボの四半期の決算セールだったので、もう勢いで注文。セールといっても、その後も安くなっていたようなので、もうセールスメールは無視している。いまだにいろいろなところのサイトの広告バナーは、これでもかとThinkPadが表示されるけど・・。

注文してから10日で発送。ようやく届いた。とても時間がかかるのね。届くまでのモチベーションが下がるわ。まあ、少しばかりカスタマイズしたので仕方ないけど。

今回の注文は16GBとWQHDのモデルにカスタマイズ追加は、Window10 Proに替えてSIMで携帯ネットワークで接続できるようにWANを追加した。最初の目標の重量1Kgは、多少オーバーしてしまった。また持って歩くとMacBookのように腰が痛めるかな。あと、256GBのSSDが若干心許ないけど、程堀が醒めたら大きいものに交換するかな。

しかしながら、パッケージには相変わらずコストをかけているのね。こちらとしてはどうせ開封する最初の一回しか関係ないので(ないとは思うけど故障したときの返送くらいかな)、そんなにパッケージにコストをかけなくてもいいと思うわ。アクセサリーの入っている箱はおしゃれかもしれないけど、意外と薄くて取り出すときに破けたので、これは残念だと思った。

Windows10 Proのアップデートとアプリケーションをインストールしてようやく使えるまでに設定した。Windows10 の設定は、何もしない代わりに時間はかかる。

ThinkPad X1 Carbonの2018年バージョンから入るSIMカードはマイクロではなくnanoになっていたのは予定外だったので、SIMカードを追加購入する。今回は何も考えずに今使っているOCNモバイルONEのSIMカードを追加する。SIMカードのWANの設定が最初うまく行かなかったのは後で話そう。

初めて、レノボというかThinkPadを買ったけど、これからどうなることやら。今まで2台続けてパナソニックのレッツノートを買って、MacBook Proにしたけど、やはりWindowのほうが私は楽。

 

Fire HD 8 タブレットを工場出荷時の設定にリセット

Fire HD 8 タブレットはGoogle Playを入れて無理矢理Androidタブレットとして使ってきたけど、遅くて辛抱できなくなってきたので元に戻すことにした。やはり、このスペックでは無理あるのよね。値段は安くていいけどね。

戻すのは簡単。「設定」ー「端末オプション」ー「工場出荷時の設定にリセット」から実行するだけ。あとは何かソフトウエアを勝手に実行していってWi-FiとかAmazon IDを聞いてくるから設定すればOK。

戻してみたら何とか使える感じ。Kindleで本を読むには問題ない。まさにそれがFireタブレットの本来の目的だから。

Amazonのアプリストアから、アプリを再インストールしていく。今までGoogle Playからしかインストールできないと思い込んでいたけど、そんなことはないのよね。Evernote、Dropbox、Pocket、Facebook、Twitter、Skype・・・。主なよく使うだろうアプリは用意されているので問題ない。Google Playに対応しなくてよかったかもしれない。

ただ痛いのはデフォルトのキーボード入力はちょっと使いづらい。普段はATOKのパスポート版を入れているけど、こちらはインストールできないのね。でも、このタブレットのためにあらためてATOKを買うまではね。

GmailなどのGoogleのアプリはほぼないので、Gmailの代わりに既にインストールされているEメールアプリを代わりに使う。Gmailのメールは使えるけど、微妙に違う。アーカイブしていない受信トレイのメールだけを読むのはどうするの? Silkブラウザ経由でGmailをアクセスしたほうがいいのかな? Silkブラウザは、いまだにページのフォントサイズを小さくすることがわからないから別のブラウザを探したほうがいいのかな? Yahooブラウザはダメだし。

なんてやっていくと、本来のFireタブレットの目的をまた見失っていきそうです。別にタブレットを買えばと思うけど、今さらタブレットを買ってもね・・・。

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の設定を変更しておく。

やはりWindows10は4GBではキツいということ

以前使っていたPCにWindows10をインストールしましたが、しばらく放っておくとフリーズしてしまいます。このPCは、Intel Core2 Duo E8200 という8,7年近く前の古いPCです。デバイドライバー類をアップデートしても変わりませんでした。

気になっていたのはメモリの容量でした。4GBで動いていました。これを手元にあった4GBのメモリを追加してみました。これは昔のDDR2のメモリです。もう手に入らないと思ったら、アマゾンではまだ売っているのですね。

これがズバリ当たりでした。8GBにしたらフリーズしなくなりました。やはりWindows10は4GBではキツいということでしょうか。最低でも8GB必要なようです。

市販のメーカー製PCは4GBのPCを売っていますが大丈夫なのでしょうか?

RealVNCについて調べてみた

今まで義父のPCをリモートでメンテナンスするとかで、仕事以外でPCの面倒を見るとかでTeamViewerのフリー版を使ってきたが、やはり業務で利用可能なリモートディスクトップが欲しいなと思って調べてみた。たまたまRaspberry PIをリモートでアクセスするためにRealVNCを使ってみてよかったので、TeamViewerとの違いをまとめてみた。ただし、あくまでも自分へのまとめで、サイトからの情報からの理解だけなので正確ではないかもしれないことに注意、と文句を言われてもいいように責任回避しておく。

TeamViewerはパッケージの買い取りなので、バージョンアップするたびにライセンスを購入しなければならない。バージョンアップ料金はサイトに提示されていないので多少怖いところもある。TeamViewerのサポートに問い合わせてみたこともあるけど、一回のバージョンアップで5万近くかかることを言われた(ある時期でバージョンアップ無料のときがあるそうだけど)。TeamViewerはライセンス料金も為替のせいか知らないが値段も変わるし、最近はだんだんと高くなっている感じがしている。TeamViewerの一番の不満は価格で、8万円近く(以前は6万円台だった気がする)も出せない。

ただしTeamViewerのよいところもある。ソフトもサイトも日本語化されているので、PCに詳しくない人が導入するハードルが高くないところがよい。RealVNCといえば、まだ日本語化されていないので英語のままである。以前のRealVNCは日本語版があったそうだけど、最新版はどうなっているかはわからない。最初に接続してしまえば何とかなるし英語のままでも問題はないとも言えるが。

TeamViewerとRealVNCの大きな違いであると思ったのはライセンスの違いである。TeamViewerは前述の通りパッケージの買い取りで、RealVNCは1年契約(複数年契約で割引きもある)のライセンスとなる。RealVNCは1年契約であるのでバージョンアップでも追加料金は発生しない。TeamViewerは意外とメジャーバージョンアップが頻繁にやってくれるので(これはこれでいいことだけど)、リモートする側が古いバージョンのままでリモートされる側で最新のTeamViewerをダウンロードして接続しようとすると。接続できないと怒られることもあるから注意しなければいけない。これは常に最新版を購入させるTeamViewerの会社の手法かもしれない。

リモートアクセスの場合、接続元が決まっている場合(TeamViewerでは無人アクセス、RealVNCではdevice access)と、その都度接続先に簡単にアプリケーションをインストールして、なおかつワンタイムパスワードを入力させて認証して不特定のユーザーにリモートアクセスをする場合(TeamViewerでは通常のリモートコントロール、RealVNCではinstant support)がある。TeamViewerの場合はどちらも追加のライセンスを購入する必要はないが、RealVNCではそれぞれにライセンスの購入が必要で、接続先のdeviceごと(1台$40。1台、3台、5台、10台と1台ごとの契約ではない)、接続する人(Technicians)ごとにライセンス(1人$200で高め)が必要になる。ここでRealVNCのライセンスの疑問としては、インストールできるは1台のPCか、それとも1人のユーザーが複数のPCに同時にインストール可能かである。デバイスとTechniciansのライセンスが分けられているということは、ユーザーが複数のPCでインストールして使えそうなのだが確認はしていない。おそらくRealVNCはチームという単位があるので、チームでdeviceの接続数とTechniciansの数でいくらということで合っているかと思う。その他に同時アクセス数というライセンスもあるらしい。TeamViewerの場合はPremium(125,000円也)にするとライセンス料金が高くなるが、一つのライセンスでユーザーは50人まで利用可能であるが、同時に一人しかアクセスできないという、あまり意味がよくわからないライセンス形態となっている(これは理解不足かもしれない)。いずれにしてもライセンスの理解は難しい。

もう一つの違いとしては、ワンタイムパスワードの生成する側の違いである。TeamViewerの場合は接続される側で、RealVNCの場合は接続する側でワンタイムパスワードを生成している。TeamViewerの場合は問題はないが、RealVNCの場合はinstant supportのライセンスを購入しないとワンタイムパスワードを生成する機能がないので(これも不確かで間違えているかもしれない。ライアル版で試すことが可能かもしれない)無料版を使う限りは不特定のユーザーへのリモートアクセスはできないことになる。

肝心のリモートアクセスの機能としてはTeamViewerとRealVNCとも特に問題はない。特にゲームで利用なんてしない限りは、パフォーマンスはどちらでも変わらない。基本的なリモートアクセスは、どちらともNAT越えで接続できるのでもちろん問題はない。義父のところではインターネットがケーブルテレビの接続サービスなのでIPアドレスがグローバルではないローカルのIPアドレスが割り振られているけれど、TeamViewerで問題なく外部から接続できている。

TeamViewerのほうはビデオでミーティングができるとか、音声でチャットができるとかができるが、これは他のサービスで何とかなるので、RealVNCが不利であるということはなさそうである。ただし、TeamViewerのほうは二段階認証が用意されているので、多少は安心かもしれない。

今のところは、サーバーとか接続先がたくさん接続する必要がある場合や、導入コストが高くてもきちんと業務に必要で、PCが詳しくない不特定多数のエンドユーザー相手で、日本語のサポートが必要(一度TeamViewerのサポートに電話をしたら、日本語の怪しいサポート担当者とつながったけど)ならTeamViewer、接続先がそんなに多くなくて、常に最新版を使えてコストをかけずにサポートも必要とせずに、日本語化されていないソフトを使っても何とかなるのであればRealVNCということだろうか。自分のところではRealVNCでいいかもしれない。

 

Dreamweaverが遅くなったのでダウングレード

某病院サイトの更新でDreamweaverを使っています。Dreamweaverのテンプレートとかライブラリの機能を駆使していますので、Dreamweaver CCを月額契約しています。

さて、最近になってDreamweaverがとても遅くなりました。別のアプリケーションから戻ったときに、コードの編集をしようとすると10秒位待たせられます。その間は何もカーソルを受け付けません。キャッシュを再構築をしてもダメ。これではストレスを感じます。

アドビのサイトで何か情報がないかと探ってみても、それらしい情報は見つかりません。そこでユーザーコミュニティーで相談してみます。アドビのユーザーコミュニティーはとても用心深いようで、書き込んだりコメントをしたり、はたまたユーザー情報を変更するときには、偉い人の認証が必要です。書き込んだ内容が公開されるには時間がかかりますので、もし認証が手作業で行われているのであれば、とても偉い人の負担が大きそうなのですが、コミュニティーはそんなに活発に動いていなそうなので手作業でも大丈夫かもしれません。

コミュニティーに質問を上げてみますと、まずは詳しいPCのスペックを書け、というよくある洗礼をを受けます。ここはぐっと堪えてCPUだとかメモリの容量だとか、あまり今回と関係のない事柄を書き込んでおきました。まあ、ググれカスとか言われないだけマシです。この間にもコミュニティーの偉い人の認証が必要です。

さて返ってきた回答としては

  1. 他のアプリケーションを終了しろ
  2. セキュリティソフトを一時停止しろ
  3. ユーザー設定フォルダーを再作成する方法(Dreamweaver CC/CC2014)をやってみろ

ということでした。3番目は期待していたのでしたが、やってみても特に症状は変わりません。

別の人から

  1. CCの契約であればCC 2017バージョン以前もダウンロードして利用できるので試してみろ。

ということなのでやってみました。Dreamweaverは昔のバージョンも同時にインストールできるのですね。アドビのCreative Cloudから「他のバージョンをインストール」を右クリックで選んでインストールします。

一つ前のDreamweaver CC(2017)バージョン17.5.0では状況は変わりませんでしたが、そのもう一つ前のDreamweaver CC(2015) バージョン16.0.0でまともに入力できるようになりました。他のアプリケーションから移ってDreamweaverでコードを編集してもすぐにコード編集ができるようになりました。昔のバージョンを使わなくていけないのは残念ではありますが、しばらくこちらの2015を使っていきたいと思います。ただし、Dreamweaver CC(2015) はファイルのタブを切り替えるたびに若干1,2秒待たされるとい う現象もありますが、こちらは目をつぶって使っていきます。

そろそろDreamweaverとは別のHTMLエディタを探さないといけないのかなと思うこの頃です。Dreamweaverに慣れきっているから、さてどうしましょうか。ショートカットでテストサーバーへのファイルアップとかプレビューができるし、あとテーブル編集が楽チンですし。その辺りが実現できれば他のHTML編集環境に移ってもいいなと思ったりします。そんなエディタはあるのでしょうか?

追記

遅くなった原因は読み込むCSSファイルが大きいせいかと思ってきました。他の開発会社が作っているのでページを見てみると、スマフォ用のCSSもまとめて読み込んでいるので、100KB位のCSSファイルを最初に読み込んでいるようです。

しかしながら、この位で遅くなるようではDreamweaverは使いものにならないような気がします。最初の読み込みで時間がかかるのは我慢しますが、他のアプリケーションを行き来するたびにカーソルが止まるのは何とか改善してもらいのです。