kokoe blog

技術メモブログ

今日の日記

新型Macを買いました。 Apple M1 CPUの型を購入したのですが、まだ安定板のソフトがでていないものがちらちら。

  • Docker→プレビュー版
  • Homebrewがインストールできない→ターミナルからRosetta経由でいけた
  • Adobe→(いれてないけど)Rosetta経由になるっぽい。

アプリが対応してるか調べるの大事ですね。

今日やったことメモ

パフォーマンスチューニングの知見に乏しいので情報を集めてた。 きっかけはこの辺。

speakerdeck.com

next.rikunabi.com

で、主にCDNについて調べてみることにした。
CDN、使ったことがあるものの、仕組みを理解してなかったんで。。

そして見つけた分かりやすい記事!

knowledge.sakura.ad.jp

連載分全部読んだら、副産物として、DNS、キャッシュの対象とすべき範囲、キャッシュの種類などなど、色々分かってためになった。

DNSの理解というところで、この記事も役にたった(権威DNSとキャッシュDNSがどういう関係なのか調べてたとこで発見した)

www.nic.ad.jp

DNS変更した時に、このDNSチェッカーが便利そうだったのでメモがてらURLはっとく。

www.whatsmydns.net

明日は、Lazy loadとかprefetchの手法について調べよう。
時間があったら、MemcachedとRedisについても。

今日やったことメモ

デジタル署名・デジタル証明書

これがわかりやすかった。

youtu.be

これも。

youtu.be

youtu.be

ルート証明書とか、中間証明書が何なのかがやっとわかった。はずかしいぃぃ

www.infraexpert.com

www.itra.co.jp

Let's Encryptなる、無料SSLがあることを知ったたた

letsencrypt.org

ロジカルシンキング

めっちゃためになった〜

youtu.be

Docker入門したい私がDockerとお友達になるためのメモ

Dockerの勉強メモ。 WordPressの開発があるんで、Dockerでイメージ作れるようになりたいなーってことで。。

入門動画

www.youtube.com 概念の説明、入門で抑えておくべきところが端的にまとまっててよかった。

www.youtube.com こちらもポイントが端的にまとまっててよかった。

WordPressのDockerイメージ

クィックスタート: Compose と WordPress — Docker-docs-ja 19.03 ドキュメント
Docker公式に解説があるのですよね。(DockerHubにも公式のイメージがあるし)

ですが、docker-composeも上記サイトからわざわざコピペしなくても、ソースを用意してくれてる素敵な方がいらっしゃいました。 github.com

んじゃ、これで開発するかー。となったのですが

Linux User Permission問題

マウントしたボリュームのディレクトリ、Linuxだとroot権限で作られるので、ファイルの読み書きするたびにsudoしたりするのは面倒。 同様の問題にあたっている方が多かったので、Dockerの勉強を兼ねて調べてみた。

ひとまず、先程のwordpress-docker-composeリポジトリをフォークして、この辺を記事を参考にさせていただきつつ、 qiita.com qiita.com blog.amedama.jp tech-blog.rakus.co.jp

実装進めてみたものの動かない。

# docker-compose.yml
# 必要な構成だけ ※注意:動かないよ
version: "3"

services:
  wp:
    image: wordpress-custom
    build:
      context: .
      args:
        image: wordpress:latest
    environment:
      USER_ID: ${USER_ID}
      GROUP_ID: ${GROUP_ID}
  db:
    image: mysql-custom
    build:
      context: .
      args:
        image: mysql:latest
    environment:
      USER_ID: ${USER_ID}
      GROUP_ID: ${GROUP_ID}
# Dockerfile
# ※注意:動かないよ

ARG image

FROM ${image}

RUN apt-get update \
    && apt-get -y install gosu

COPY entrypoint.sh /usr/local/bin/entrypoint.sh
RUN chmod +x /usr/local/bin/entrypoint.sh
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
# entrypoint.sh
# ※注意:動かないよ

USER_NAME=user
USER_ID=$USER_ID
GROUP_ID=$GROUP_ID

# グループを作成する
if [ x"$GROUP_ID" != x"0" ]; then
    groupadd -g $GROUP_ID $USER_NAME
    echo "Add group: $GROUP_ID"
fi

# ユーザを作成する
if [ x"$USER_ID" != x"0" ]; then
    useradd -d /home/$USER_NAME -m -s /bin/bash -u $USER_ID -g $GROUP_ID $USER_NAME
    export HOME=/home/$USER_NAME
    echo "Add user: $USER_NAME"
fi

# TODO こいつが動かない。ユーザー変更と認識してるが違うのかな。。
# ログ見ると、 Usage: ./gosu user-spec command [args]... って出てる
/usr/sbin/gosu user

# 使用イメージのdocker-entrypoint.sh の呼び出しも、これってどうなのかなって感じ。。
# wordpressにいたっては、パラメータ(CMD)が必要そうだし。。
# https://github.com/docker-library/wordpress/blob/master/Dockerfile.template#L260-L265
exec /bin/bash /usr/local/bin/docker-entrypoint.sh $@
USER_ID=$(id -u) GROUP_ID=$(id -g) sudo -E docker-compose up -d

Best practices for writing Dockerfiles | Docker Documentation
この辺も参考にしてみたけども、gosuのコマンドの使い方まちがってるのかなぁうーん。。

結局どうした

結局解決にいたらなかったが、コマンドでホストマシン側のマウントディレクトリ(てか直下全部)をchownで、ログインユーザーのアカウントの所有に変更しちゃうという無理やりな方法をとりましたとさ。

できあがったブツ。 github.com

今月中に、このリポジトリにGulp / Webpack / HMRとか、よく使う系の環境を追加していきたいなぁ〜(自分がよく使うやつw)

memo: MySQLコマンド チートシート

# mysqlログイン
$ mysql -u ${user_name} -p

# dump
$ mysqldump -u ${user_name} -p ${db_name} > /path/to/${output_file_name}
# データベース一覧
SHOW DATABASES;

# ユーザー一覧
SELECT Host, User FROM mysql.user;

# 権限表示
SHOW GRANTS for '${user_name}'@'${host}';

# DB文字コード確認(DB作成時の情報)
show create database ${db_name};

# テーブル文字コード確認
show variables like "chara%";

# データベース作成
CREATE DATABASE ${db_name} CHARACTER SET utf8;
CREATE DATABASE ${db_name} CHARACTER SET utf8 COLLATE utf8_general_ci;

# データベース削除
DROP DATABASE ${db_name};

# データベース選択
USE ${db_name}

# ユーザー作成(データベース固有)
# GRANT [権限] ON [適用対象のデータベース].[適用対象のテーブル] TO 'ユーザ名'@'ホスト名' IDENTIFIED BY 'パスワード';
GRANT ALL PRIVILEGES ON ${db_name}.* TO "${user_name}"@"localhost" IDENTIFIED BY "${passwrod}";

# ユーザー一覧
SELECT user, host FROM mysql.user;
SHOW COLUMNS FROM ${db_name}.user;

# DBリストア(ファイルから)
mysql -h ${host_name} -u ${user_name} -p -D ${db_na,e} < /path/to/dump_data_file

# 権限反映
FLUSH PRIVILEGES;

参考 https://qiita.com/pinohara/items/481c95dc4c8c2568bf8d https://proengineer.internous.co.jp/content/columnfeature/6638

memo: find/grepチートシート

# 同ディレクトリ以下(再帰)の拡張子htmlファイルで、ファイル内にhogeがあるファイルを検索
$ find ./ -name "*.html" | xargs grep "hoge"

# 同ディレクトリ以下(再帰)のファイル(notディレクトリ)で、ファイル内にhogeがあるファイルのフルパスを表示
$ find ./ -type f | xargs grep -ril "hoge"

# 同ディレクトリ以下(再帰)の拡張子cssファイルで、各ファイルにimportantが何個出現するかresult.txtに出力する
$ find ./ -name "*.css" | xargs grep -c "important" > result.txt

# node_modulesディレクトリをfindの対象外にする
$ find ./ -type f -not -path "./node_modules/*" | xargs grep "axios"

memo: docker/docker-composeコマンド チートシートメモ

# イメージからの一括起動(-d:バックグランド)
$ docker-compose up -d

# コンテナの一括起動
$ docker-compose start

# コンテナの一括停止
$ docker-compose stop

# コンテナの一括削除
$ docker-compose rm

# コンテナとイメージの一括削除
$ docker-compose down --rmi all -v

# 全て削除
$ docker-compose down --rmi all --volumes --remove-orphans

# ビルドし直し
$ docker-compose up -d --build

# コンテナに入る
$ docker exec -it [container] bash

memo: phpMyAdmin

phpMyAdmin 設定ファイル

phpMyAdmin/config.inc.php

ログイン、ログアウト(cookie

$cfg['Servers'][$i]['auth_type'] = 'cookie'; //config, http, cookie
$cfg['Servers'][$i]['user'] = '';
$cfg['Servers'][$i]['password'] = '';

自動認証(config)

$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = 'rootPass';

参考:https://docs.phpmyadmin.net/ja/latest/config.html