forget for get

覚えるために忘れる

dockerコンテナが起動しない

WARNING: Host is already in use by another container
ERROR: for api  Cannot start service api: driver failed programming external connectivity on endpoint docker_api_1 (e819fe...): Error starting userland proxy: listen tcp4 0.0.0.0:80: bind: address already in use
ERROR: Encountered errors while bringing up the project.

 

80番ポートが既に使われているっぽい

 

lsof -i:80
COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
apache2 4666     root    4u  IPv6  38177      0t0  TCP *:http (LISTEN)

 

apache2がいた!

 

apache2を停止する。
自動起動も無効にする。

 

service apache2 stop
systemctl disable apache2
docker-compose up
Starting docker_api_1         ... done

起動できた!

.vimrcでエラー E254: Cannot allocate color 7

いつものように~/.vimrcを編集してvimを起動したらエラーが出た

E254: Cannot allocate color 7

バージョンによっては7なんて色はないらしい。
LightGrayに変更して解決。

~/.vimrc

highlight SpecialKey cterm=NONE ctermfg=7 guifg=7
highlight JpSpace cterm=underline ctermfg=7 guifg=7
↓
highlight SpecialKey cterm=NONE ctermfg=LightGray guifg=LightGray
highlight JpSpace cterm=underline ctermfg=LightGray guifg=LightGray

foreachで参照渡しで値を変更するとバグる

foreachで参照渡しで値を変更するとバグる

$vals = [1,2,3];
foreach ($vals as &$val) {
  $val *= 2;
}
echo json_encode($vals);
//[2,4,6]

foreach ($vals as $val) {
  echo $val . ',';
}
//2,4,4,

何が起こっているか

$vals = [1,2,3];
foreach ($vals as &$val) {
//$valに$vals[0],$vals[1],$vals[2]への参照が入っていきます
  $val *= 2;
}
echo json_encode($vals);
//[2,4,6]

//$valに$vals[2]への参照が残ったままです

foreach ($vals as $val) {
//$vals[2]へ$vals[0],$vals[1]の値が入っていき、
//$vals[2]には$vals[1]の値が残ります
  echo $val . ',';
}
//2,4,4,

unsetして解決

$vals = [1,2,3];
foreach ($vals as &$val) {
  $val *= 2;
}
echo json_encode($vals);
//[2,4,6]

unset($val); //$vals[2]への参照を解除します

foreach ($vals as $val) {
  echo $val . ',';
}
//2,4,6,

Dockerまとめ

公式ドキュメント

https://docs.docker.com/

https://docs.docker.jp/ (日本語版)

 

インストール

CentOS8 Docker/Docker Composeインストール

https://qiita.com/chenglin/items/8e13e7ad45cc9bae264a

 

記事リスト

docker-composeでLaravel環境構築(PHP/nginx/MySQL) - forget for get

Dockerチュートリアル - forget for get

DockerでPHPからMySQLに接続してみる - forget for get

WinMergeでワード、エクセル、パワーポイントの差分を見る

WinMergeでOfficeファイルのテキスト差分を見る

gitやsvnでWord, Excel, PowerPointなどのOfficeファイルを管理していると、
変更があっても、どこが変更されたのかわからず、確認が面倒。

WinMergeプラグインを使うと、Word, Excel, PowerPointなどからテキストを抽出し、
その差分を表示することができます。

プラグインプラグインの設定で
「CompareMSExcelFiles.sct」「CompareMSPowerPointFiles.sct」「CompareMSWordFiles.sct」
があるので、チェックを入れて有効にする。(デフォルトで有効になってるかも)
プラグイン→自動展開

この状態でWinMergeでOfficeファイルの比較をすると、テキスト差分を見ることができる。

TortoiseSVNやGitExtensionsでもOfficeファイルのテキスト差分が見れる

TortoiseSVNやGitExtensionsでもWinMerge連携をしておくと、Officeファイルの差分を見ることができる。

TortoiseSVNのShow logから該当ファイルのShow Changes
GitExtensionsの差分ツールを用いて開く

Apache Tikaを使う方法よりこっちの方が簡単。

よく使うLinuxコマンドまとめ

pwd

cd

cd /var/www/html
cd ../../Models

ls
-l: 詳細 -a: 隠しファイルも表示 -t: 更新時間で並べ替え

ls -alt

mkdir

mkdir new_dir

cp
-a: 所有者、パーミッション、更新時刻などなるべくそのままコピー

cp -a aaa.php bbb.php

mv

mv aaa.php bbb.php
mv aaa.php ../

rm
-r: ディレクトリ削除 -f: 強制削除

rm aaa.php
rm -r dir
rm -f logs/*.log

chmod
-R: ディレクトリ配下を再帰的に

chmod -R 644 public

chown
-R: ディレクトリ配下を再帰的に

chown -R apache:apache public

ln
-s: シンボリックリンク

ln -s target/origin link

find
-name: ファイル名指定

find app/Models -name "*.php"

grep
-R: ディレクトリ配下を再帰的に -v: 除外 -l: ファイル名のみ
-B: 前の行も表示 -A: 後の行も表示

grep -R battle_start app/Models
grep -R battle_start app/Models | grep -v function
grep -R battle_start app/Models -A 3

GitExtensionsで削除されたリモートブランチが消えずに残ってる

結論:GitExtensionsの設定で「フェッチと共にリモートブランチをプルーン」を適用すると解決。(設定>Git>高度な設定)

 

GitExtensionsでブランチ切り替えするとき、リモートブランチ一覧に削除されたリモートブランチが消えずに残ってる。
JIRAでブランチを作成した後、ローカルでブランチを切り替えるときに選びづらくてしょうがなかった。

 

そもそも、普通にフェッチしただけだと、削除されたリモートブランチはローカルからは消えてくれないらしい。
削除したい場合はプルーンというオプションをつける必要がある。

git fetch --prune

参考:Gitのリモートブランチを削除するまとめ - Qiita

 

GitExtensionsで「フェッチと共にリモートブランチをプルーン」という設定を適用すると、削除されたリモートブランチが消えてくれた。