Learn or Die

生涯勉強。Macです。

npm installでnpm WARN deprecated

エラー

npm installを行うと下記の警告が表示される

$ npm install
npm WARN deprecated axios@0.19.2: Critical security vulnerability fixed in v0.21.1. For more information, see https://github.com/axios/axios/pull/3410
npm WARN deprecated popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1
npm WARN deprecated chokidar@2.1.8: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.
npm WARN deprecated fsevents@1.2.13: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.
npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated core-js@2.6.12: core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.

解決方法

依存関係の警告なので、それを解決する。

#①
$ npm install david -g
#②
$ david update

$david updateを実行すると下記のメッセージが出ました。

npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.3.2 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

    Finished. Please run Mix again.

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @ development: `cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --config=node_modules/laravel-mix/setup/webpack.config.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the @ development script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

Finished. Please run Mix again.とあるので、もう一度ビルドする。

$ npm run dev
.
.
.

   Laravel Mix v6.0.18


✔ Compiled Successfully in 9707ms
┌─────────────────────────────────────────────────────────────────────────────────────────────────┬──────────┐
│                                                                                            File │ Size     │
├─────────────────────────────────────────────────────────────────────────────────────────────────┼──────────┤
│                                                                                      /js/app.js │ 673 KiB  │
│                                                                                     css/app.css │ 3.95 MiB │
└─────────────────────────────────────────────────────────────────────────────────────────────────┴──────────┘

無事ビルドできました。

参考サイト

先人の知恵に感謝です。

qiita.com

Access denied for user 'localhost' (using password: NO)

エラー

マイグレーションを実行すると下記のエラーが発生しました。

$ php artisan migrate

  SQLSTATE[HY000] [1045] Access denied for user 'localhost' (using password: NO)

環境

  • docker環境
  • Laravel
  • MySQL

原因

.envファイルのDB_PASSWORDが間違っていた。

試したこと

mysqlにログインしてユーザ名とパスワードが間違っていないかチェックしました。

# rootユーザーでログイン
$ docker-compose exec db bash -c 'mysql -uroot -p'

これでパスワードが間違っていたことに気がついたので、.envのDB_PASSWORDを修正しました。

参考サイト

qiita.com

MacにSeleniumをインストールする

実現したいこと

外部サイトの入力フォームに、指定した入力値を自動入力し、検索ボタンを自動押下したい。

必要な技術

Selenium(セレニウム)。
Seleniumは、webブラウザの操作を自動化するために作られたフレームワーク
動かすにはPythonが必要。

環境構築

Chromeをインストールし、バージョンを確認する

https://www.google.co.jp/chrome/ インストールができたら、Chromeタブ>GoogleChromeについてをクリックし、バージョンを確認します。
当環境では89.0.4389.72でした。

pythonが入っていることを確認する

バージョンが表示されない場合は、pythonを入れてください。

$ python --version
Python 3.6.5

pipコマンドをインストールする

$ easy_install pip
Searching for pip
Best match: pip 20.0.2
Adding pip 20.0.2 to easy-install.pth file
Installing pip script to /Users/misaki.inoue/.pyenv/versions/3.6.5/bin
Installing pip3 script to /Users/misaki.inoue/.pyenv/versions/3.6.5/bin
Installing pip3.8 script to /Users/misaki.inoue/.pyenv/versions/3.6.5/bin

Using /Users/misaki.inoue/.pyenv/versions/3.6.5/lib/python3.6/site-packages
Processing dependencies for pip
Finished processing dependencies for pip

Seleniumをインストールする

$ pip install selenium
Collecting selenium
  Downloading selenium-3.141.0-py2.py3-none-any.whl (904 kB)
     |████████████████████████████████| 904 kB 5.6 MB/s
Collecting urllib3
  Downloading urllib3-1.26.3-py2.py3-none-any.whl (137 kB)
     |████████████████████████████████| 137 kB 8.9 MB/s
Installing collected packages: urllib3, selenium
Successfully installed selenium-3.141.0 urllib3-1.26.3

webdriverをインストールする

ブラウザを操作するには、各ブラウザに合わせてドライバーをインストールする必要があります。(今回はChromeDriver)
ダウンロードするバージョンは、ブラウザのバージョン上2桁と合致するものを選びます。

ダウンロードサイトhttps://sites.google.com/a/chromium.org/chromedriver/downloads
ChromeDriver:89.0.4389.23

「chromedriver_mac64.zip」をクリックして解凍したら準備完了です。

「"chromedriver"は開発元を検証できないため開けません。」と表示される場合

システム環境設定>セキュリティとプライバシーで「このまま許可」を選択すればOK

grepコマンド-特定の文字を含む行を抽出する

grepコマンドとは

ファイルの中で、指定した文字列が含まれている行を表示するコマンド。

例)projectディレクトリ配下で「customer」という文字を含むファイルを抽出する

$ grep customer project/*

実行結果をファイルに出力する

$ grep customer project/* > file1

便利なオプション

-n:検索結果に行番号を表示する

$ grep -n customer project/*

-r:ディレクトリ内も検索対象とする

$ grep -r customer project/*

-h:検索結果にファイル名を表示しない

$ grep -h customer project/*

-C:検索結果にファイル名を表示しない

#前後に1行ずつ表示する
$ grep -C 1 customer project/*

参考サイト

eng-entrance.com

www.atmarkit.co.jp

PHPのboolean型の値をJavaScriptの変数として定義する

やりたいこと

PHPのフラグ変数とJavaScriptのフラグ変数を連動させたい。

間違っている書き方

<script>
let test_flg = <?php echo $test_flg; ?>;
</script>

この場合、コンソールにsyntaxエラーが出てしまいました。

Uncaught SyntaxError: Unexpected token ';'

解決方法

var_export関数を使う。

<script>
let test_flg = <?php echo var_export($test_flg); ?>;
</script>

参考サイト

www.ninton.co.jp

git cherry-pickコマンド

cherry-pickコマンドとは

他のブランチの特定コミットを、反映させることができるコマンド。

使用方法

例:masterブランチのコミットをfeatureブランチにcherry-pickする

$ git checkout master
$git log
commit ce63lkjokh123ilkkjlll31a098098sdkje18f04d97656
    コメント修正

commit 8fb4b713eb6ec4lkjlkj2o3i45oijfiodijs32b8c32eda
    パラメータ付与

$git checkout feature
$git cherry-pick 8fb4b713eb6ec4lkjlkj2o3i45oijfiodijs32b8c32eda

コンフリクトが起きた場合

コンフリクトを解消後コミットし、再度cherry-pickする。

naiki.hatenablog.com

cherry-pickを中止する

$ git cherry-pick --abort