## 発生した事象と対応
### 事象
dockerコマンドを実行時、Error response from daemon: Get https://registry-1.docker.io/v2/: Service Unavailable.エラーが出力されdocker imageのダウンロードが行えなかった。
```language-bash
% docker run...
テック系の記事一覧
[vagrant] .vagrant.d\tmpフォルダに残ったファイルを消したい
2020年8月22日
| カテゴリ: Vagrant
Vagrantを使用していると、.vagrant.d\tmpフォルダの下に大きなサイズのファイルが残っていることがあります。これはvagrantがboxのイメージファイルをダウンロードするときに使う一時フォルダです。
通常はtmpの下は空になるのですが、ダウンロードを...
[書籍自炊]ImageMagickで複数jpgファイルの余白をまとめてカット
2020年7月26日
| カテゴリ: PHP
|
書籍を裁断し、自宅のスキャナ([Canon MF249](https://www.amazon.co.jp/dp/B01LVYW3K1))でスキャンした画像(ファイル名連番のjpgファイル)からスキャンした画像の余白を取り除く作業をしたので、その時のメモです。
## 書籍の裁断
書籍の裁断近くに...
Laravel6のプロジェクトを`composer update`コマンドでLaravel7にアップデートする機会があったので手順を書いておきます。
## composer.jsonの編集
composer.jsonを更新するのですが、Laravel7のアップグレードに関するガイドをみると下記の記載が...

[Laravel] Mailクラスによるメール送信の結果をファイル出力させる
2020年3月29日
| カテゴリ: Laravel
|
LaravelではMailクラスによってメール送信処理を簡単に作ることができます。
ローカル開発やPHPUnitでは、実際にメールを送信させるのではなくファイルに出力させるなど、メールの送信メソッドがコールされた時の振る舞いを差し替えたい場合があります...

LaravelのAuth::routes()は、なぜ1行書くだけでルーティングが設定できるの?
2020年3月29日
| カテゴリ: Laravel
|
Laravelではauthパッケージのセットアップを行うと、routes/web.phpに下記の1行を書くだけでルーティングが自動設定されます。
```language-php
Auth::routes();
```
どうして1行書くだけでルーティングを設定できるのでしょうか? Auth::routes()...

[Laravel]jwt-tokenに関する記事
2020年3月29日
| カテゴリ: Laravel
|
メモ。
- [jwt-auth + Laravel6 アクセストークンとリフレッシュトークン](https://www.yuulinux.tokyo/15384/)
[VSCode] インストール済みエクステンション一覧をファイル書き出して別PCで反映する
2020年3月29日
| カテゴリ: VSCode
VSCodeにインストールしたエクステンションの一覧をテキストファイルに出力し、別PCでインストールし直す方法です。
事前にcliで`code`コマンドを使用できるようにする必要がある。macOSの場合VSCode上で`Cmd+Shit+P`を入力し`shell`とタイプしてEnte...
LaravelでVue.jsを使用したSPAサイトを作成していて、Basic認証とjwtトークン認証の組み合わせが必要だったのでメモ。
## 作ったもの
Vue.jsによるhtmlと、WebAPIによる非同期データ取得によるサイト構築を行った。
- WebAPIエンドポイント
...
LaravelでWebAPIサーバを作成する時、クロスドメインアクセスを行うためにCORSの処理を作成する場合があります。技術検証などでどこからでもアクセスできるCORSの処理をてっとり作ることが何度か発生したので手順をメモしておきます。
## middlewareを...

[Laravel] barryvdh/laravel-corsパッケージでCORS対応する
2020年3月29日
| カテゴリ: Laravel
LaravelでCORS処理を行いたい場合、barryvdh/laravel-corsパッケージを使うと便利です。
## 作業手順
### パッケージのインストール
```language-bash
composer require barryvdh/laravel-cors
```
### middlewareの有効化
```language...
[Axios] APIリクエストの応答ヘッダが一部しか取れない
2020年3月29日
| カテゴリ: axios
## 発生した事象
下記のコードを実行したところ、サーバが渡した応答ヘッダをクライアントが受け取れなかった。
サンプルコード
```language-js
await this.$axios.post('http://localhost:8000/user/', {
id: this.id,
p...

[Laravel]リソースコントローラーを使ってREST APIのルーティングを定義する
2020年3月29日
| カテゴリ: Laravel
Laravelではリソースコントラーを使うことで、CRUD処理でよく使われるルーティングを簡単に登録することができる。
## 作業手順
artisanコマンドでコントローラを追加。リソースコントローラは`artisan make:controller`にオプション`--resource`...

[Laravel].envを書き換えた内容が反映されない時
2020年3月29日
| カテゴリ: Laravel
Laravelで.envを書き換えた内容が反映されない時は、artisan config:clearする。cache:clearではクリアできないので注意。
```language-php
php artisan config:clear
```
ファイルを直接消す場合は以下のコマンドを実行する。
```language-bas...

[Laravel7] Laravel標準の(Auth)で行っていることを調査する
2020年3月29日
| カテゴリ: Laravel
Laravel7が標準で用意しているAuthでログインした時で行われていることを確認する。
(何度も同じことを調べるので、調べた結果をメモしておく)
## GET /login
ログイン画面が表示される。
id/passを入力してLoginボタンをクリックすると`P...
## 発生したエラー
Deployerで`./dep deploy`コマンドでデプロイしようとしたところ、`package:discover`のステップでエラーが発生した。
```language-php
$ ./dep deploy xxxx
In Client.php line 103:
[Deployer\Exception\RuntimeExceptio...
[Laravel, Vue.js] npm run hotでEADDRINUSE/ELIFECYCLEエラー
2020年3月29日
| カテゴリ: Laravel
## 発生した事象
Laravel7 + Vue.jsの開発で、`npm run hot`を実行したところ、EADDRINUSE / ELIFECYCLEエラーが発生し、ビルドが出来なかった。
```language-bash
$ npm run hot
> @ hot /.../project
> cross-env NODE_ENV=development node_...
[HTML5,CSS]テーブルの特定列のみ右寄せにする方法(nth-of-type)
2020年3月29日
| カテゴリ: css
下記のCSSで、テーブルの1,4,5カラム目を右寄せにできる。一番右の列は`(0)`ではなく`(1)`であることに注意。
```language-css
td:nth-of-type(1),
td:nth-of-type(4),
td:nth-of-type(5) {
text-align:right;
}
```
Ansibleのgeerlingguy.phpロールを使っていて、PHPのバージョンを指定したい場合は`geerlingguy.php-versions`を使うと良いです。
下記の例ではPHP7.4.xのインストールを指示しています。
```language-yml
# playbook.yml
- role: geerlingguy...
Ansibleでnginxがインストールされた環境に対してgeerlingguy.phpのロールを実行するとwebサーバの再起動で下記のエラーが発生します。
```language-bash
$ ansible-playbook playbook.yml
...
RUNNING HANDLER [geerlingguy.php : restart webser...
PHPのデプロイツールであるdeployerでサーバにデプロイしようとした時`deploy:update_code`のタスクで下記のエラーが出ることがあります。
```language-bash
$ ./dep deploy local
...
➤ Executing task deploy:update_code
@@@@@@@@@@@@@@@@@@@@@@...

[VSCode]vimプラグインをいれている時に複数行とまとめて編集する方法
2020年3月18日
| カテゴリ: VSCode
VSCodeでvimのプラグインを使っている時に時に、キーボードだけで複数行まとめて編集を行う方法です。例えば複数の行頭に"#"をいれてコメントアウトする必要がある時などに重宝します。
### 作業手順
1. `Ctrl + v`で矩形選択モードにする
1. `j`や...

[mac]cliからwifiの接続をリセット(off->on)する [DNS_PROBE_FINISHED_NXDOMAINエラー]
2020年3月16日
| カテゴリ: Mac
macOSで作業していて、chromeを使っていると時々DNS_PROBE_FINISHED_NXDOMAINエラーが発生します。
wifiの再起動で治るのですが、毎回GUIで操作するのが煩雑なのでcliからコマンド1つで再起動できるようにしました。
~/.bash_profileに下記のaliasを...
composer.jsonにdockerコマンドを書いておくことで、laravelのプロジェクトを(PHPのビルトインサーバではなく)php-fpmを使ってコマンド1つで起動させることができます。
## 作業手順
まず`composer.json`に下記の行を追加します。
```language-j...
DockerでPHP7.4のコンテナを使ってhello worldを出力する最低限のコードです。
php-fpmの設定などでハマって問題の切り分けが難しい時などに覚えておくと便利です。
## プログラムを用意
```language-bash
mkdir -p src/public
echo '
## 発生するエラー
ansible-playbookを実行すると、下記のエラーが出る。
```language-bash
$ ansible-playbook playbook.yml
/usr/local/Cellar/ansible/2.9.6_1/libexec/lib/python3.8/site-packages/netaddr/strategy/__init__.py:189: Synta...
Ansibleで、vagrantで作成したVMに対して`ansible`コマンドを実行するための設定例です。
## Vagrantfile
まずは、vagrant側の設定ファイルである`Vagrantfile`を作成します。
今回の例ではCentOS8.0を指定していますが別のOSでも問題ありませ...
## 発生したエラー
手元のmacOSからCentOS8.0をセットアップしようとansibleコマンドを実行しようとしたところ、下記のエラーが発生した。
```language-bash
$ ansible server-centos8 -m ping
192.168.33.10 | FAILED! => {
"changed": fals...
Laravelプロジェクト作成時のテンプレート作成時に実行するコマンド
```language-bash
composer global require laravel/installer
#--------------------------------------------------------
# create prject
#------------------------------...
Laravelのメール送信で、AWSのSES(Simple Mail Service)を利用する場合、Laravelが提供しているsesドライバを使うと簡単にメール送信処理が実装できます。
本記事では、Laravelのsesドライバを使用して上手くメール送信ができない時に、ありがちな問題...
LaravelのEloquentでsum()やavg()の集計関数を使うと、結果が数字でなく文字列で返ってきます。
```language-php
$totalScore = UserScore::where('team_id', $teamId)->sum('get_point');
\Log::info(json_encode($totalScore)); // "10" (10では...

[PHPStorm]ウィンドウのサイドに出てくるメニュー(sidebar)を常に表示させる
2020年3月9日
| カテゴリ: PHPStorm
PHPStormなど、IntelliJの製品で、IDEのウィンドウ端に出てくるサイドバーメニューの表示/非表示を切り替える方法です。
サイドバーというのは、下の画像の"Project"ボタンが出ているエリアのことです。
## 手順
メニューより`View -> appearanc...
関連ドキュメント
- [Qiita: Laravel tymon/jwt-auth による JWT 認証](https://qiita.com/yh1224/items/3c52dd9df3c4b5be95f2)
- [JSON Web Token Authentication for Laravel & Lumen](https://jwt-auth.readthedocs.io/en/develop/)
- [jwt.io](ht...
Laravelは、`artisan make:request`コマンドで入力パラメータをvalidtionできるFormRequestクラスを作成できます。
artisanコマンドで作成したFormRequestを編集せずに使用すると`This action is unauthorized.`が出るので注意が必要です。
## エラ...
PHPにはユニットテストを行う仕組みとしてPHPUnitがあります。
PHPのパッケージphpunit-watcherを使うことで、プログラムのソースが変更(Ctrl-Sで保存)されるたびに自動でPHPUnitを実行させることができます。
## インストール
phpunit-watcherの...
vagrant upコマンドを実行するだけで、CentOS8.1でMySQL8.0がすぐに利用できるようになるVagrantfileです。(macOSで動作確認しています)
```language-ruby
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config....
macOSでhomebrewを使って、php7.3をインストールする方法です
## 作業手順
macに入っているphpのバージョンを確認します。手元の環境では7.1でした。
```language-bash
$ php -v
PHP 7.1.19 (cli) (built: Aug 17 2018 18:03:17) ( NTS )
Copy...

[Alpine Linux]apkコマンドのオプション
2019年6月30日
| カテゴリ: Docker
Alpine Linuxのパッケージマネージャであるapkコマンドのオプションです。
- apk update
ローカルにあるdpkのインデックスキャッシュを更新する
- apk search
パッケージを検索する
- apk add
パッケージをインストールする
オプション`--n...
Dockerfileの公式phpコンテナを使っていて、標準で入っていないextensionを追加したい時があります。
このような場合に備えて、公式コンテナではdocker-php-ext-installコマンドを用意してくれています。
以下のようにRUNコマンドを記述することで希...

[Linux]パイプを含むコマンドをwatchコマンドで監視する方法
2019年6月28日
| カテゴリ: Linux
Linuxのwatchコマンドでは指定したコマンドを定期実行し、その結果を表示することができます。
watchで監視したコマンドがパイプを含む場合、そのまま書くとwatchコマンドの結果をパイプ処理してしまい、想定通り動作しません。
```language-bash
# ...

[PHP]コンストラクタの括弧は省略したほうが良いのか?
2019年6月28日
| カテゴリ: PHP
PHPでクラスのコンストラクタは、引数がない場合はカッコを省略することができます。
```language-php
// どちらも書き方もOK
$a = new SomeClass();
$a = new SomeClass;
```
どちらの書き方でも同じ動作をするのですが、どちらの表記法にした...

[PHP]連想配列の内容を特定のキー値でGroupByしたい
2019年6月28日
| カテゴリ: PHP
PHPでハッシュの配列(DBの検索結果など)を、特定のキーでグループかする方法です。
## Laravelの場合
Laravelの場合はcollectオブジェクトにgroupBy()メソッドがあるため、これを利用できます。
```language-php
$collection = collect([
...

vagrant upで"vboxsf" is not availableエラーが出るときにする事
2019年6月28日
| カテゴリ: Vagrant
## 発生したエラー
vagrantでCentOS7.4を起動したところ、下記の"vboxsf" is not availableエラーが出る。
```language-bash
$ vagran init bento/centos-7.4
$ vagrant up
...
Vagrant was unable to mount VirtualBox shared folders. This is...
circleciコマンドのlocal実行でsshキーをコンテナに渡す
2019年3月17日
| カテゴリ: CircleCI
CircleCIではcircleciコマンドをインストールすることで、ローカルのPCから`.circleci/config.yml`ファイルの定義に基づいたジョブの実行を行うことができます。
ローカルでのテスト中でターゲットのサーバへログインするために、sshのキーファイルをdock...

CentOS 7.xで空いているポートを調べる
2019年3月16日
| カテゴリ: Linux
|
CentOS7で空いているポートはssコマンド(socket statistics)で確認できます。
TCPポートを確認したい場合は以下のようにコマンドを実行すれば良いです。
この例ではPort80, 22, 25, 3031, 3032がオープンしています
```language-bash
$ ss -nat
State ...
docker buildで何のファイルが書き換えられたかをチェックする
2019年3月3日
| カテゴリ: Docker
Dockerファイルの作業前後でgit commitすることで変更がかかったファイルを記録し、
buildが終わった後から`git log`すれば、差分を取得することができます。
```language-bash
FROM python:3.6-alpine
# gitをインストールして最初の状態を記録す...
[docker]centos7.5にnginxをインストースして起動/停止する
2019年3月3日
| カテゴリ: Docker
## systemd経由でnginxを起動する
### Dockerfile
```language-docker
FROM centos:7.5.1804
RUN yum install -y epel-release; \
yum install -y nginx iproute; \
systemctl enable nginx
```
### 実行するコマンド
```language...
dockerコンテナのIPアドレスを取得する
2019年3月3日
| カテゴリ: Docker
下記のスクリプトで、dockerコンテナ内でipコマンドを実行してIPアドレスを取得し、取得結果をbash変数に代入できます。
```language-bash
$ CONTAINER_NAME=nginx01
$ IP_ADDRESS=$(docker container exec -it $CONTAINER_NAME ip a s eth0 | grep i...
CentOS7でdocker使用時に、一般ユーザでdockerコマンドを実行しようとしたところ、下記のエラーが発生しました。
```language-bash
$ docker ps
Got permission denied while trying to connect to the Docker daemon
socket at unix:///var/run/dock...
dockerでAlpine Linuxベースで、python3.6+mecabの環境をしたのですが、python-mecab3のpipパッケージをインストール時に、エラー`unable to execute 'swig'`が発生しました。
```language-bash
$ docker build .
...
unable to execute 'swig': No ...
dockerでpython:3.6-alpineイメージを利用してへuwsgiのインストールしようとしたところ、エラー"Exception: you need a C compiler to build uWSGI"が発生しました。
```language-bash
$pip install uwsgi
...
Failed to build uwsgi
Running ...
[CentOS7]サーバのIPをコマンドラインで取得する
2019年3月2日
| カテゴリ: Linux
CentOS7でサーバ自身のIPアドレスを取得して変数に格納する方法です。
下記のコマンドではeth0インターフェースに割り当てられたアドレスを取得しています。
```language-bash
HOST_IP_ADDR=$(ip addr show eth0 | sed -nE -e 's/ *inet ([0-9.]*).*/\1...
## 発生した問題
mac上でmakeコマンドを実行すると下記のように`error: invalid active developer path`エラーが出力された
```language-bash
$ make
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools),
miss...

portainerはdockerコンテナの稼働状況をブラウザからGUIで確認する方法を提供する
2019年2月25日
| カテゴリ: Docker
portainerを使うと、ブラウザからGUIでdockerコンテナの稼働状況を確認できます。
## 作業手順
下記のコマンドでportainerのサーバを起動します。 portainerサーバ自体もコンテナになっています。
```language-bash
sudo sudo docker run \
--r...
python3.xの環境で、wikipediaのページを読み込み、htmlの内容を文字化けせずに画面に出力させる方法です。
今回はcchardetという文字コードの自動認識を行えるpipパッケージを使ってみます。
## パッケージのインストール
```language-bash
php3 ...
Dockerでpython3.6のアプリケーションを作って全て削除するまでの流れ
2019年2月24日
| カテゴリ: Docker
Dockerでalpineのpython3.6コンテナを利用して、pythonのスクリプトを実行し、作成したコンテナ/イメージを全て削除するための手順です。
## dockerで動くアプリケーションの準備
まずは、Dockerfileへ定義を書く
- Dockerfile
```language-xxx...
Dockerで使い捨てのMySQL5.7サーバを起動する
2019年2月23日
| カテゴリ: MySQL
Dockerを使って、使い捨てのMySQL5.7サーバを起動する方法です
## MySQLの起動
rootのパスワードはランダム生成し、アプリケーション用のユーザ名とパスワードは起動時に指定します。
```language-bash
$ docker run \
--name mysql \
-p 13...
[ansible]CentoOS7にgeerlingguy.dockerでdockerがインストールできない
2019年2月23日
| カテゴリ: Ansible
Ansibleを使ってCento OS7にgeerlingguy.dockerを使ってdockerがインストール使用したら下記のエラーが出た
```language-yaml
$ ansible-playbook --check playbook.yml
...
TASK [geerlingguy.docker : Install Docker.] ***********************...
macからiTerm2を使ってlinuxサーバにログインするとき、下記のLC_TYPE環境変数に関するエラーが出る場合があります。
```language-bash
mac$ ssh linux_server
Last login:...
-bash: warning: setlocale:
LC_CTYPE: cannot change locale (UTF-8)...
apache/nginxのアクセスログをtsv形式に変換する
2019年2月17日
| カテゴリ: PHP
apacheやnginxなど、webサーバのアクセスログ(access.log)をtsv形式に変更するphpスクリプトです。
### スクリプト
```language-php