サーバー管理者のためのChef超入門 – @IT
https://www.atmarkit.co.jp/ait/series/1766/
2015年2月10日
サーバー設定ツール「Chef」の概要と基礎的な使い方 | さくらのナレッジ
https://knowledge.sakura.ad.jp/867/
2013.08.26
最近はウェブ系アプリ中心、あとWindowsアプリちょっと
サーバー管理者のためのChef超入門 – @IT
https://www.atmarkit.co.jp/ait/series/1766/
2015年2月10日
サーバー設定ツール「Chef」の概要と基礎的な使い方 | さくらのナレッジ
https://knowledge.sakura.ad.jp/867/
2013.08.26
レガシーコード満載のプロジェクトに参加することになり、どうしたものかとヒントになりそうな記事を読み漁る。
【資料公開】レガシーコードからの脱却 | Ryuzee.com
https://www.ryuzee.com/contents/blog/7149
翻訳書「レガシーコード改善ガイド」の注目トピック連載一覧:CodeZine(コードジン)
https://codezine.jp/article/corner/308
読んだ: レガシーコード改善ガイド – ひだまりソケットは壊れない
https://vividcode.hatenablog.com/entry/book/working-effectively-with-legacy-code
レガシーコードのメンテナンス担当になったら新人はどうすればいい – Qiita
https://qiita.com/oubakiou/items/300c3e0ab0bd170cb5bc
レガシーコードのテストを書いていくテクニック
https://qiita.com/okapon_pon/items/056c65a69cc5fa182fde
[Laravel] スーパーレガシーな商品発注システムをAngularとLaravelで作り直した話 | Kurashicom Engineers’ Blog
https://www.wantedly.com/companies/kurashicom/post_articles/110326
「書き直した方が早い」は9割のケースで間違いだった – 怠惰を求めて勤勉に行き着く
http://fushiroyama.hatenablog.com/entry/2017/12/01/183453
「書き直したい」 をグッと抑えて小さな改善を積み重ねよう – PSYENCE:MEDIA
https://tech.recruit-mp.co.jp/project-management/14775/
レガシープロジェクトを引き継いだ時、最初にするべき7つのこと – Qiita
https://qiita.com/tonluqclml/items/a7ed2f94225ef8a37b8b
レガシー開発環境を今風の開発に近づけるために一年やってきたこと – Qiita
https://qiita.com/pugiemonn/items/7dc03a0eeeb56a27f992
レガシーコード改善のススメ
https://www.slideshare.net/ahirasawa/ss-39610745
レガシーなプロダクトにテストで向き合う話 | GREE Engineers’ Blog
http://labs.gree.jp/blog/2014/02/10584/
きれいなコードとは? リファクタリングできれいなコードを書く方法 – Qiita
https://qiita.com/kyntk/items/d60fdbc51df4f1d4c3c7
コードを書く際の指針として見返すサイトまとめ – Qiita
https://qiita.com/kenichi_cc/items/c3ecca7b7d5fc5c6bf2e
1000万行のコードと向き合う3つのステップ――富士ゼロックスはリファクタリングにどう取り組んでいるのか (1/2) – @IT
https://www.atmarkit.co.jp/ait/articles/1507/06/news009.html
VS 2005「リファクタリング支援機能」徹底レビュー(1/5) – @IT
https://www.atmarkit.co.jp/fdotnet/special/vsrefact/vsrefact_01.html
技術的負債 – Qiita
https://qiita.com/erukiti/items/9cc7850250268582dde7
技術的負債とどうやって戦うか – Qiita
https://qiita.com/kamykn/items/ad687e772da454e3f614
GMOペパボ柴田博志が教える。経営者も理解しておくべき「技術的負債」 | flexy(フレキシー)
https://flxy.jp/article/7533
技術的負債への後悔と返済|timakin (ちまきん)|note
https://note.mu/timakin/n/nf7e2a70905d4
組織で技術的負債に立ち向かうための取り組み – Qiita
https://qiita.com/cawpea/items/fd0c6633cd2b0c919d7a
【 sed 】コマンド(基礎編)――テキストファイルを編集する:Linux基本コマンドTips(53) – @IT
https://www.atmarkit.co.jp/ait/articles/1610/06/news021.html
sedでこういう時はどう書く? – Qiita
https://qiita.com/hirohiro77/items/7fe2f68781c41777e507
【 awk 】コマンド(基本編)――テキストの加工とパターン処理を行う:Linux基本コマンドTips(115) – @IT
https://www.atmarkit.co.jp/ait/articles/1706/02/news017.html
テキストファイルの特定文字列の行から特定文字列の行までを抽出したい – Qiita
https://qiita.com/usamik26/items/9a2ca29ec30b6baf5280
【 tr 】コマンド――テキストファイルの文字を置換する/削除する:Linux基本コマンドTips(52) – @IT
https://www.atmarkit.co.jp/ait/articles/1610/03/news017.html
linuxでファイルを複数行を一行にする方法 – Qiita
https://qiita.com/zhangxianghong/items/17cbb7ba8cd00337043a
【 wget 】コマンド――URLを指定してファイルをダウンロードする:Linux基本コマンドTips(24) – @IT
https://www.atmarkit.co.jp/ait/articles/1606/20/news024.html
wget の出力をパイプで処理する: rootdown 情報セキュリティブログ
http://rootdown.cocolog-nifty.com/memo/2007/12/wget_6080.html
ハイフンを使った便利な標準入出力指定でのコマンドライン – Qiita
https://qiita.com/bami3/items/d67152d19aa8ac2d47de
前回のエントリで、アプリのテストのためにゲスト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
ホストOSの時刻をいじってテストしたいことがある。例えばECサイト開発で注文をいくつか作成しておいて、システム時刻を翌月1日に変更してから月末集計を実行するといった場合。だけど、VagrantのゲストOSでスーパーバイザー権限でdateコマンドを使って時刻を変更するも、瞬時に現在の時刻に戻ってしまう。調べてみると、VagrantではゲストOSとホストOSで時刻を同期する機能が動作しているらしい。
この同期機能を解除しなければテストができない。ネットを検索すると同じことを試みた事例が多く見つかるが、紹介されている手順に倣っても自分の環境ではうまくいかない(ホストOSとの時刻同期が無効にならない)。
いろんな記事を頼りに試行錯誤した結果、Windowsマシンで成功する手順を導けたので覚書き。
WindowsのCommand Promptから
1 2 3 |
> cd C:\Program Files\Oracle\VirtualBox > VBoxManage setextradata homestead "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1 > VBoxManage setextradata homestead "VBoxInternal/TM/TSCTiedToExecution" 1 |
Bashから
1 2 |
$ vagrant up $ vagrant ssh |
1 2 3 |
$ sudo service vboxadd-service stop $ sudo /usr/sbin/VBoxService --disable-timesync $ sudo service vboxadd-service start |
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/
HTTPのプロトコルを指定してウェブサイトにアクセスしたければcurlが役立つ。
1 |
curl [options] URL... |
-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/
PHP 7.3の環境でPhanを動くようにしたんだけど、
1 2 3 |
$ php73 $ ./vendor/bin/phan -v Phan 2.2.3 |
PHPのバージョンを変えたらPhanが動かなくなる。
1 2 3 |
$ php71 $ ./vendor/bin/phan -v PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/20160303/ast.so' - /usr/lib/php/20160303/ast.so: cannot open shared object file: No such file or directory in Unknown on line 0 |
その理由はastがPHPの特定バージョン用にインストールされているため。astをインストールし直せば解決する。
1 2 3 4 |
$ sudo pecl uninstall ast $ sudo pecl install ast $ ./vendor/bin/phan -v Phan 2.2.3 |
たまにしか書かないので、必要な時にはいつも書き方忘れてる。なので、よく使いそうな書き方を参考サイトから拾って覚書き。
1 2 3 4 5 6 7 8 |
# index.phpなら何もしないで完了 RewriteRule ^index\.php$ - [L] # ファイルが存在しない RewriteCond %{REQUEST_FILENAME} !-f # かつ、ディレクトリが存在しない RewriteCond %{REQUEST_FILENAME} !-d # どんなリクエストでも/hoge/index.phpへ置換して完了 RewriteRule . /hoge/index.php [L] |
1 2 3 4 |
# httpsじゃなくて RewriteCond %{HTTPS} off # foo.htmlへのアクセスならば404 RewriteRule ^foo\.html$ - [R=404,L] |
1 2 3 4 5 6 7 8 |
# aaa/bbb/index.htmlの形式の場合 # %1=aaa # %2=bbb RewriteCond %{REQUEST_FILENAME} ^(.*)/(.*)/index.html$ # $1=bbb # $2=index.html # aaaがexならば/bbb/ex/index.htmlに置換される RewriteRule ^/ex/(.*)/(.*)$ /$1/%1/$2 |
1 2 3 4 5 6 7 8 9 |
# *.amazonaws.comからのアクセス # [NC] 大小文字区別なし RewriteCond %{REMOTE_HOST} "^.*\.amazonaws\.com" [NC] # リファラが無い RewriteCond %{HTTP_REFERER} ^$ # Accept-Languageがen-us RewriteCond %{HTTP:Accept-Language} "^en-us" [NC] # [F] 403(Fobidden)を返す RewriteRule ^.*$ - [F,L] |
[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/
HomesteadではSSL証明書を自由に作成することができるが、自己証明書ゆえにブラウザからERR_CERT_AUTHORITY_INVALIDの警告(というより、もはやエラーか)が発せられる。自分で作った証明書だもの信頼できるのはわかっているので、警告が出ないように開発環境をセットアップしてみる。
証明書の情報を見ると、発行元がHomestead homestead Root CAとなっている。開発環境において、これを信頼されたルート証明機関に含めてやれば良さそうだ。ネットを探したら分かりやすく手順を説明した参考サイトがあったので、その手順に倣って進める。
まずはHomestead仮想環境を立ち上げて、以下のルート証明書をホストOS(Windows)側にコピーしてくる。
1 |
/etc/nginx/ssl/ca.homestead.homestead.crt |
コピーしたファイルを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
Homesteadには開発者向けのメールのテストツールが含まれている。Mailhogを使うと、送信メールを簡単にキャッチして、実際にそれを受信者宛てに送信することなく内容を精査することができる。
Laravel Homestead – Laravel – The PHP Framework For Web Artisans
https://laravel.com/docs/5.8/homestead#configuring-mailhog
Mailhogを利用するには.envに以下のメール設定を記述する。
1 2 3 4 5 6 |
MAIL_DRIVER=smtp MAIL_HOST=localhost MAIL_PORT=1025 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_ENCRYPTION=null |
以下のURLにアクセスすれば、Mailhogダッシュボードで送信メールをチェックすることができる。
1 |
http://localhost:8025/ |