エンジニアのひよこ_level10

毎日更新してた人。たまに記事書きます。

【PHP】相対パスでincludeした後のファイルで、さらにincludeすると読み込めない【194日目】

こんなファイル作りました

public/index.php

include ../xxx/yyy/temp.php

xxx/yyy/temp.php

include ../../zzz/item.php

zzz/item.php

echo 'hello';

これ、動かないです。

どこが問題か

xxx/yyy/temp.php

include ../../zzz/item.php

これ。単体で見たら問題なさそう。
でも、このファイルをincludeすると話は別。

includeは、ファイルの中身を、自分にコピーするイメージ

includeはファイルの中身をコピーするイメージ。

だから、最初のincludeでこんな風になる。

public/index.php

// include ../xxx/yyy/temp.phpで呼び出した
include ../../zzz/item.php

そう、public/index.phpから相対パス../../zzz/item.phpを呼び出してしまうのだ。

だから、publicより下のディレクトリを読み出そうとするし、目的のディレクトリなんて存在しない。

反省

ということで、ファイルをincludeするなら、基本的に絶対パス使おう。

【Laravel】モデルが更新した時に、関数を動かす【193日目】

こんなとき使える

ユーザー情報を更新する時に、イベントを発行する。

User::updated(function($user) {
    if ($user->isDirty('email')) {
        Mail::to($user)->send(new UserMailChanged($user));
    }
});

これで、ユーザー情報を変更して(updatedイベント)、
かつ、emailが変更された時に( if ($user->isDirty('email')))、 メールを送る。

みたいな使い方が出来る。

何してるの

User::updated( function() {} );

これで、Userモデルがupdateされた時に、functionが動く

updatedはアップデート後

updatingはアップデート前

deletedは削除後みたいなことが出来ます。

nginx+phpで、index.phpが2度リクエストされる【192日目】

一度ページを見ると、2度アクセスされたことになる

DBの書き換えをしたら、2度アクセスされる。なんでだ。

nginxの設定は・・・

location / {
try_files $uri $uri/ /index.php$is_args$args;
}

dockerのログ見てみた

php_1    | あいぴー -  23/Apr/2018:11:01:13 +0000 "GET /index.php" 200
nginx_1  | /index.php -  うんたらかんたら
nginx_1  | /favicon.ico -  うんたらかんたら
php_1    | あいぴー -  23/Apr/2018:11:02:49 +0000 "GET /index.php" 200

あっ。

ページ見ると、htmlのmetaタグで明示してなくても勝手にfavicon.icoをgetしようとするのね。

解決

てきとーな画像を、favicon.icoという名前でindex.phpの置かれているディレクトリに置く

なんで?

favicon.icoがないから、nginxのtry_filesが失敗して、代わりにindex.phpがリクエストされると・・・

try_filesの内容の意味はここ参照

willow710kut.hatenablog.com

【GTM】Googleタグマネージャーで本番環境で計測出来ない問題【191日目】

プレビューは動いてる

  1. タグ設定した
  2. トリガー設定した
  3. プレビューで見たら動いてる
  4. 自分がプレビューで見た結果をGAで見ても動いてる

☓. 自分以外の人が見ても計測出来ない

解決

■公開忘れてた

ということで、Googleタグマネージャの右上で、公開ボタンを押す。

公開をすれば、他の人が見ても計測される。

プレビューは自分で試すところ

ということで、プレビューはあくまで自分が試すために、自分だけが一時的に使えるやつ。

公開するまで他の人は使えない。

■プレビューは開発環境、下書き
■公開ボタン押して、本番環境に適応しないと動かないよ

はい、初歩的なミスでした、気をつけます。

【GTM】Googleタグマネージャで記事の読了率測ってみる【190日目】

参考元。

昨日行ったイベントと、この記事を参考にしてみました。

blog.hatenablog.com

今回設定したこと

  1. ユーザーが1記事に対して何%読んだか(スクロールしたか)
  2. ユーザーが記事を最後まで読んだか(ユーザー名を表示したか)

f:id:willow710kut:20180421222854p:plain

言いたいこと

めっちゃ簡単!!!とりあえずやってみよう。

はてなブログならHTMLとかの知識なくてもいける。
はてなブログじゃなくても、classがわかってたらあっという間に作れる!

設定した後の、イベントのプレビュー

プレビュー機能で、どんな感じに取得出来ているかわかる

f:id:willow710kut:20180421232329g:plain

Googleアナリティクスで結果が出るのはまた明日

一応、リアルタイムのデータは取れるけど、
統計データとして見やすい状態になるのは、また明日以降ですね。

今後

『faas』や『laravel 名前付きルート』で検索すると、わりと上位に表示されるので、
その記事は本当にいい状態なのか?
それを分析したいなと思っています(`・ω・´)ゞ

また分析結果とかは、facebookとかでシェアしますね。
気が向いたら記事にもします。

最後に

下の勉強会行ったことで、これをやってみようと思って行動しました。湊川あいさんに感謝です。

willow710kut.hatenablog.com

twitter.com

【イベント】マンガでわかるGoogleアナリティクスの勉強会行きました【189日目】

ってことで勉強会のツイートまとめ

 

 

おまけ

作者さんの生態?

 

最後に

素敵な勉強会ありがとうございます!

ということで宣伝貢献。

 

あと今度ちゃんとタグマネ入れます

【Laravel】直前にアクセスしたページのURLを取得する【188日目】

引数を入れた時どうなるかも書きました

取得失敗した時の動作が書かれているよ。

willow710kut.hatenablog.com

直前にアクセスしたURL、ページに来るためのリクエスト元のURL

こうかく

url()->previous();

結果

"http://blog.hatena.ne.jp/willow710kut" みたいにStringで取得出来る。

余談、 /willow710kutの部分を取得するならPHPparse_url()使って

parse_url(url()->previous();, PHP_URL_PASS);

こんな感じ。

公式ドキュメント

ヘルパ関数 5.3 Laravel

PHP: parse_url - Manual

【git】一度revertしたブランチを修正して再mergeすると、変更が保存されない【187日目】

こんな場面

  1. xxx_branchで作業したぜ! masterにmergeするで!

  2. あ、 xxx_branchまだ修正点あるわ。 masterにmergeしたのをrevertして元通りに戻すっと。

  3. さあ、 xxx_branchをもう一度mergeするで!

  4. あれ・・・? xxx_branchの変更が masterに反映されてない・・・

何が起こるのか

commit-1 commit-2 commit-3が最初のmergeであったとして、

2で commit-1 commit-2 commit-3を打ち消します。

3で commit-4を追加して、マージすると、

4には commit-4しか残らない・・・

なぜか

2の時点で、masterにはcommit-1 commit-2 commit-3 revert-1-2-3が入っています。

3の時点で、commit-1 commit-2 commit-3 revert-1-2-3 commit-4なので、そりゃ1-2-3はないですよね・・・

どうしたらいいか

  1. revertをrevertする

  2. commit-1 commit-2 commit-3と同じ変更を再度行ったブランチをmergeする

revertって難しいね

revertするとこんな問題が発生しますね・・・ 2の時点で、前のcommitに戻してフォースプッシュするという手もありますが、記録がなくなるし出来れば避けたいところ。

何が最善かはわからないので、おすすめの対処方とかありましたら、是非教えてください。

まあ、2のようなことが起こらないのが一番ですね!注意しましょう!←ちなみにやらかしたのは私