Laravel デバッグTIPS

php側

web画面で、dump($arr)で配列やオブジェクトの中身をチェックする

dump($obj);

web画面でデバッグ表示できない場合はlogファイルに出力

Log::debug(__FILE__ . __LINE__ . $str);

storage/log/〜に出力される。

頭にスラッシュをつけると、use LogしなくてOKっぽい

use Log;
↓
\Log::info();
// ログに配列を展開して吐き出す
Log::debug(print_r($arr, true));

// オブジェクトも可能
Log::debug(print_r($object, true));

view上(blade)でデバッグ

{{dd($arr)}}

SQLの確認

$sql = DB::table('users')
            ->where('status', '<>', 1)
            ->toSql();
var_dump($sql);

chromeブラウザで、SSLに対応したページが急にエラーエラーになって見れなくなった。

接続は完全に保護されていません

少しまでまで問題なく見れていたhttpsのページが下記のように見れなくなった。

接続は完全に保護されていません

chromeの検証でエラーを見てみると。

The connection used to load resources from https://example.com used TLS 1.0 or TLS1.1, which are deprecated and will be disabled in the future. Once disabled, users will be prevented from loading these resources. The server sould enable TLS 1.2 or later. See https://www.chromestatus.com/feature/〜 for more information.

Google翻訳してみると

https://example.comからリソースをロードするために使用された接続はTLS 1.0またはTLS1.1を使用しました。これらは非推奨であり、将来的には無効になる予定です。無効にすると、ユーザーはこれらのリソースを読み込めなくなります。サーバーはTLS 1.2以降を有効にする必要があります。詳しくは、https://www.chromestatus.com/feature/〜をご覧ください。

TLS 1.2が有効になっていない…

nginxの設定を確認してみると見事に設定が抜けている。

設定例:/etc/nginx/conf.d/example.com.conf
〜
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
〜

TLSv1とv1.1も消した方がいいがしますが、一応これで
nginxをreloadしてみると、

# systemctl reload nginx

解決!

CentOS8で無料SSLに(Let’s Encrypt)

SSLの設定

# dnf install -y epel-release
# dnf install certbot python3-certbot-nginx

対話式でメアド等必要な情報を入力

# certbot --nginx

nginxのconfファイルに自動でsslの情報等が記入されるので、

nginxのconfファイルのチェック
# nginx -t
問題なければ sslの変更内容をnginxに反映
# systemctl reload nginx

あとはブラウザで確認すればOK

SSLの自動更新設定

echo "0 0,12 * * * root python3 -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew -q" | sudo tee -a /etc/crontab > /dev/null

参考サイト:
https://qiita.com/matsuyoro/items/65fb8de2e7197e2ed472
https://certbot.eff.org/lets-encrypt/centosrhel8-nginx

抹消したい記録を復活できてしまう魔法のウェイバックマシーン!

抹消したい記録を復活できてしまう魔法のツール

長く生きていると末梢してしまいたい記憶の1つや2つ、

そして4つや5つ、

はたまた、星の数・・・

消えたはずの過去の記事を見ることができてしまう

WayBack Machine

指定のURLを入力すれば、そのサイトの過去の情報がみれてしまう。

こんな感じ

ふつうに5年前とか、10年前まで、だいぶ昔の情報までも拾えてしまった。。

ただ、画像や装飾など、HTMLのタグなどは適宜変換されているので、
完全に過去の状態が見れるわけではないので、そこは注意

CentOS7 ターミナル上で、指定ディレクトリ以下、指定文字列一括置換

CentOS等で、大きいプロジェクトファイル内の文字を、
横断して一括で文字列置換したい時がある、
例えば、ハードコーディングしてしまった、定数や、ドメイン等。
指定文字列を一括置換したい時がある。

そんな時に使えるコマンド

下記はカレントディレクトリ配下のphpファイル全てを横断検索して指定文字列に置換している例


$ find ./ -type f -name "*.php" | xargs sed -i 's/置換対象文字列/置換後の文字列/g'

よく使うけど、よく忘れるのでメモ。

検索対象の確認だけなら、

指定ディレクトリ配下のファイルを横断して指定文字列を検索


$ find ./ -type f -name "*.php" -print | xargs grep '検索文字列'

以上

遅延に遅延を重ねたweb&アプリ開発プロダクトへ参加する際にぶつかる壁

チーム開発

遅延に遅延を重ねたweb&アプリ開発プロダクトへ後から参加する際にぶつかる壁

開発遅延する大きな原因は、

  • 把握できないシステム(他の人が作ったシステム)
  • 既にプロダクトがネガティブな空気になってしまっている
  • 自分のスキル不足&努力不足&工夫不足
  • 実際にコードを書く部分しか工数として把握していない
  • 本当に必要なものが何かわかっていない
  • 使っているベンダーシステムの影響
  • 要件がわかっていない
  • 何がわらないかわからない

既に負債を背負った、プロダクトにアサインする際の注意点

エンジニアが数名の場合は、全体を把握しているもしくは結合部分を知っているエンジニアに相談して動くべし

  • ようするにプログラミング部分の監督さんにお伺いをかけてから動く。監督が複数人いるとチームがうまくいくイメージがないですよね?(プランナーとは別)
     これを怠ると、素晴らしいコードを書いても逆に勝手に仕様決めてしまう事が多く怒られる、もしくは嫉妬される原因なるので注意!
    (僕の経験した先輩はみんな自分から教えてくれるような人が一人もいませんでしたので、ここは自分からお伺いを掛ける必要ある!)

  • 大きいシステムになればなるほど、見えない部分が多くなり後からジョインしたエンジニアは初期エンジニアよりどうしても工数がかかってします。
     仕様把握に99%、開発に1%の工数バランスもザラにある。
     その場合は引き受けるタスクを、しっかり選択する必要がある。

 ポイントは、独立して実装を完結できる機能か、結合しないと完了できない機能を見極める必要がある。
 結合してみないと読めないタスクはどうしても監督エンジニアの実装部分を考慮する事にパワーを割いてしまい、
 本来やった方がいいタスクに注力できない。

  • 監督エンジニアは、後から入ったエンジニアは仕様把握に大量の時間を取られる事を考慮してタスク配分を考えると良好な関係になるかも。
        

Redisのデータを画面で簡易的に操作できるphpRedisAdminをCentOS7+nginxにインストール

いままでphpスクリプトで、redisのデータをいじっていましたが、

さすがに大変なので、GUIで確認できるツールがないかと探したらありました。

phpMyAdminならぬ、phpRedisAdmin

簡易的にRedisのデータを確認・変更・削除したいなら便利かも!

で、早速インストール方法

こちらの環境で導入した際のメモ ..φ(..)メモメモ

  • CentOS7
  • nginx + php-fpm

おおもとのドキュメントはこちら(こっちみればええやん汗)

https://github.com/erikdubbelboer/phpRedisAdmin

1. ソースを落とす


git clone https://github.com/ErikDubbelboer/phpRedisAdmin.git cd phpRedisAdmin git clone https://github.com/nrk/predis.git vendor

当たり前かもだけど、vendorもcloneしてね

2. あとはドキュメンルートに設定して、ブラウザから見れるようにと、アクセス制限

下記は、/etc/nginx/conf.d/〜〜.conf等に設定


server { listen 80; server_name phpredisadmin.hogehoge.com; root /usr/share/nginx/hoge/; index index.html index.htm index.php; location /phpRedisAdmin { allow アクセス元IP; deny all; } }

CentOS7にag(the silver searcher)をyumでインストール

ボクの環境用に備忘録

昔ながらのよく標準で入っている、ファイルの横断検索grep

これはカレントの場所から横断検索している例


$ find ./ -type f -print | xargs grep -n '検索文字'

ただ、この方法だとファイル数が多いと検索結果がでるまで遅い。
もうこの方法を使っている人は少ないはず。

で、


$ ag '検索文字'

でgrepするためのag(the silver searcher)のインストール方法

CentOS7にyumでインストール


$ sudo yum install the_silver_searcher

MacのHomebrewでインストール


$ brew install the_silver_searcher

リファラスパムに遭遇しちゃいました。。。

久々古いサイトのGoogleAnalyticsを除いてみたら、
5年ぐらい、いやもっと前かな?相当昔に作ったサイトに急にアクセスが増え始めたなんだろうと思ったら、
リファラ(検索でない、参照元)つきでアクセスが増えている。
1日1アクセスもないようなサイトなのに、、!?

参照元のURLはこういうやつ、「slow-website.xyz」。※アクセスしないように。

スクリーンショット 2016-07-03 22.25.18

どっかで目にしたようなリファラスパムってやつかなとおもってアクセスはせず、
そのリファラでググッてみました。
危なくないように、URLはそのままコピペではなく、
“http://〜〜〜” と「”」でくくってください。アクセスしちゃうので。

そうすると同じようなドメインからのアクセスでリファラスパムに遭遇したって記事がちらほら。

http://tk-analytics.hatenablog.com/entry/2016/06/21/221300

新手のスパムらしいです②「free-share-buttons.com」を調べてみた


参考にさせていただきました。m(_ _)m

対処方法

http://www.yatani-pr.com/marketingblogs/1402/

php7にしたらphp7からRedisが呼び出せなくなった時のメモ

よくある下記からphpからredisを使えるようにする処理のところで、

$redis = new Redis();

こういうphpエラーがでる。

PHP message: PHP Fatal error:  Uncaught Error: Class 'Redis' not found in /usr/share/nginx〜

今回の環境構成は、

yumで、全てインストールできるようにこだわっていたのですが、
なぜかphp7からredisがよびだせず、ちなみに、コンソールで、
redis-cliなどでredisを動かすことはできている。。

php5系の時は普通に動いていたのですが、
php-redis等のモジュールを系を入れ替えしてためしてみると、

yum install --enablerepo=epel,remi-php70 php70-php-pecl-redis

ではだめでしたが、

yum install --enablerepo=epel,remi-php70 php-pecl-redis

で、無事php7からredisを呼び出せるようになった。。

依存関係ハマりやすい。