[VirtualBox] ゲストOSのクロックを倍速にできるかも?

前回のエントリで、アプリのテストのためにゲストOSに未来の時刻を設定する方法を記した。

テストのための別の方法として、ゲストOSのクロックを速めることができないか模索した。例えばクロックを60倍にできれば、実世界で1秒経過したらシステム上は60秒経過したことになる。その環境なら、60分毎に実行されるクローンジョブは1分毎に実行できる。本当に60分待ったり、システム時刻を手動で進めたりする必要が無い。このアイデアは、以前に携わった組み込み案件でクロックから時刻を生成する処理をいじって、経過テストの時間短縮をした経験からきている。

調べたところ、どうやらVirtualBoxでは時間経過を速めることができるらしい。今回は実際には自分で試すところまでいかなかったが、また必要になったときに役立ちそうなリンクがあったので覚書リンク。

Time Warp in VirtualBox
https://esmithy.net/2016/03/05/time-warp-in-virtualbox/

virtualbox.org • View topic – Speed up System-Clock for Realtime-Simulation
https://forums.virtualbox.org/viewtopic.php?f=1&t=28949

virtualbox.org • View topic – Hardware/system clock speed.
https://forums.virtualbox.org/viewtopic.php?f=6&t=46843

How to Speed Up VirtualBox | Chron.com
https://smallbusiness.chron.com/speed-up-virtualbox-69519.html

[Vagrant] ホストOSとの時刻同期を解除してゲストOSの時刻を変更する

ホストOSの時刻をいじってテストしたいことがある。例えばECサイト開発で注文をいくつか作成しておいて、システム時刻を翌月1日に変更してから月末集計を実行するといった場合。だけど、VagrantのゲストOSでスーパーバイザー権限でdateコマンドを使って時刻を変更するも、瞬時に現在の時刻に戻ってしまう。調べてみると、VagrantではゲストOSとホストOSで時刻を同期する機能が動作しているらしい。

この同期機能を解除しなければテストができない。ネットを検索すると同じことを試みた事例が多く見つかるが、紹介されている手順に倣っても自分の環境ではうまくいかない(ホストOSとの時刻同期が無効にならない)。

いろんな記事を頼りに試行錯誤した結果、Windowsマシンで成功する手順を導けたので覚書き。

WindowsのCommand Promptから

Bashから

参考サイト

VirtualBox – VirtualBoxでの設定変更によるLaravel homesteadでの時刻変更|teratail
https://teratail.com/questions/170918

virtual machine – Is it possible to get a Virtualbox VM always start from same time, if so how? – Super User
https://superuser.com/questions/742924/is-it-possible-to-get-a-virtualbox-vm-always-start-from-same-time-if-so-how

VirtualBox のホストとゲストの時刻同期をする・しない | digitalbox
https://digitalbox.jp/virtualbox-guest-sync-time-host/

[Unix] curlでHTTPのプロトコルを指定する

HTTPのプロトコルを指定してウェブサイトにアクセスしたければcurlが役立つ。

-0
–http1.0
HTTP 1.0でリクエストする。

–http1.1
HTTP 1.1でリクエストする。(デフォルト)

–http2
HTTP 2でリクエストする。

参考サイト

curl – さまざまな通信プロトコルでデータを転送するコマンドラインツール
http://itref.fc2web.com/unix/command/curl.html

[Unix] curlコマンドの使い方 – 端くれプログラマの備忘録
https://www.84kure.com/blog/2015/06/19/unix-curl%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89%e3%81%ae%e4%bd%bf%e3%81%84%e6%96%b9/

[Laravel] HomesteadでPHPのバージョンを変えてPhanを動かす

PHP 7.3の環境でPhanを動くようにしたんだけど、

PHPのバージョンを変えたらPhanが動かなくなる。

その理由はastがPHPの特定バージョン用にインストールされているため。astをインストールし直せば解決する。

[Apache] mod_rewiteの書き方の例

たまにしか書かないので、必要な時にはいつも書き方忘れてる。なので、よく使いそうな書き方を参考サイトから拾って覚書き。

参考サイト

[Apache] mod_rewriteの使い方・.htaccessでリダイレクトする | Ago Hack
https://agohack.com/mod_rewrite_rule_cond_base/

mod_rewriteで特定のアクセスを拒否する+mod_rewriteの再整理 – Qiita
https://qiita.com/kite_999/items/a169484c3134b91d37e9

Apacheのmod_rewriteモジュールの使い方を徹底的に解説 | OXY NOTES
https://oxynotes.com/?p=7392

全てのWeb担に捧げるRewrite設定集 | TECHSCORE BLOG
https://www.techscore.com/blog/2014/12/16/%E5%85%A8%E3%81%A6%E3%81%AEweb%E6%8B%85%E3%81%AB%E6%8D%A7%E3%81%92%E3%82%8Bwrite%E8%A8%AD%E5%AE%9A%E9%9B%86/

Mod_Rewrite Variables Cheatsheet
https://www.askapache.com/htaccess/mod_rewrite-variables-cheatsheet/

[Laravel] Homesteadの自己証明書を信頼する

HomesteadではSSL証明書を自由に作成することができるが、自己証明書ゆえにブラウザからERR_CERT_AUTHORITY_INVALIDの警告(というより、もはやエラーか)が発せられる。自分で作った証明書だもの信頼できるのはわかっているので、警告が出ないように開発環境をセットアップしてみる。

証明書の情報を見ると、発行元がHomestead homestead Root CAとなっている。開発環境において、これを信頼されたルート証明機関に含めてやれば良さそうだ。ネットを探したら分かりやすく手順を説明した参考サイトがあったので、その手順に倣って進める。

まずはHomestead仮想環境を立ち上げて、以下のルート証明書をホストOS(Windows)側にコピーしてくる。

コピーしたファイルをWindows上でダブルクリックすると証明書が開くので、[Import Certificate…]ボタンをクリックする。

すると、Certificate Import Wizardが起動されるので、[Current User]を選んで[Next]ボタンをクリックする。

[Place all certificates in the following store]を選択し、[Browse…]ボタンをクリックする。

[Select Certificate Store]ダイアログで、[Trusted Root Certification Authorities]を選択して[OK]ボタンをクリックする。

[Certificate store:]に[Trusted Root Certification Authorities]が選ばれていることを確認して[Next]ボタンをクリックする。

確認画面を確認して[Finish]ボタンをクリックする。

セキュリティ警告が表示されたら[Yes]ボタンをクリックする。

完了すると以下のメッセージボックスが表示される。完了したらHomesteadからコピーしてきた証明書ファイルは削除しておく。

参考サイト

2019版 Laravel Homestead セットアップからhttpsによるアクセス手順まで – hrendoh’s tech memo
https://blog.hrendoh.com/setup-laravel-homestead-2019/#hosts

ssl – How to get https certificate working on local Laravel Homestead site – Stack Overflow
https://stackoverflow.com/questions/48969083/how-to-get-https-certificate-working-on-local-laravel-homestead-site/49612084#49612084

[Laravel] HomesteadでMailhogを使う

Homesteadには開発者向けのメールのテストツールが含まれている。Mailhogを使うと、送信メールを簡単にキャッチして、実際にそれを受信者宛てに送信することなく内容を精査することができる。

Laravel Homestead – Laravel – The PHP Framework For Web Artisans
https://laravel.com/docs/5.8/homestead#configuring-mailhog

Mailhogを利用するには.envに以下のメール設定を記述する。

以下のURLにアクセスすれば、Mailhogダッシュボードで送信メールをチェックすることができる。