【WordPress】お手軽なデバッグ方法メモ

スポンサードリンク

お手軽デバッグコードのポイント

echo '<pre>'; var_dump($arg); echo '</pre>';

var_dump 前後を echo を使って pre タグで囲むのがポイントですわね。

“【WordPress】お手軽なデバッグ方法メモ”の続きを読む

【Git】cherry pick を理解する。そして各コミットを別々のブランチに振り分ける実践例

やりたいこと

  • ブランチ A のいくつかのコミットを、ブランチ B、ブランチ C に分けたい。
  • 具体的に言うと、ブランチ A に含まれるコミット A1 をブランチ B に、ブランチ A に含まれるコミット A2 をブランチ C に分けたい。
  • 誤解語弊を恐れず直感的にに言えば、マージの逆の操作をしたい。

cherry pick コマンドと使い方まとめ

# commit1、commit2、commit3 があるとする。
# commit3 を適用したい (commit2 から commit3 の変更を取り込みたい)
git cherry-pick commit3

# 次に紹介する使い方をよりよく理解するために。
# git cherry-pick commit3 は始点と終点のうち、始点を省略した形となる。
# commit3 の適用は、次のコマンドでも全く同じ結果となる。
git cherry-pick commit2..commit3

# コミット範囲を複数して cherry pick する時
# git cherry-pick <古いコミット>..<新しいコミット>
# commit2 および commit3 を適用したい。
# (commit1 から commit2 および commit2 から commit3 の変更を取り込みたい)
git cherry-pick commit2..commit3

具体的に、実践

$ # やりたいこと
$ # import-another ブランチに e34b043 コミットを適用したい
$ # testing ブランチに f72bf5b と 0e27219 コミットを適用したい
$
$ # 作業前の状態を確認
$ git log --all --decorate --graph --online
* 0e27219 (origin/feature11) デフォルト表示を変更
* f72bf5b test 画面の追加
* e34b043 インポート機能追加 問い合わせのため未完成
* 38fe6f1 (HEAD -> master, import-another, testing) feature10 リリース
... 略 ...
$ # これより、作業開始!
$
$
$
$ # import-another ブランチに e34b043 コミットを適用したい
$ # 適用したいブランチ import-another にチェックアウト
$ git checkout import-another
Switched to branch 'import-another'
$ # cherry pick で 38fe6f1 から e34b043 の差分を適用
$ git cherry-pick e34b043
[import-another 806b3c9] インポート機能追加 問い合わせのため未完成
Author user1 <user1@example.com>
Date: Wed Dec 7 19:39:00 2016 +0900
7 files changed, 1477 insertions(+)
create mode 100644 application/controllers/imp.php
... 略 ...
$ # 適用を確認し、OK!
$ git log --all --decorate --graph --online
* 806b3c9 (HEAD -> import-another) インポート機能追加 問い合わせのため未完成
| * 0e27219 (origin/feature11) デフォルト表示を変更
| * f72bf5b test 画面の追加
| * e34b043 インポート機能追加 問い合わせのため未完成
|/
* 38fe6f1 (master, testing) feature10 リリース
... 略 ...
$
$
$
$ # testing ブランチに f72bf5b と 0e27219 コミットを適用したい
$ # 適用したいブランチ testing にチェックアウト
$ git checkout testing
Switched to 'testing'
$ # cherry pick で e34b043 から f72bf5b および f72bf5b から 0e27219 の差分を適用
$ # git cherry-pick <古いコミット>..<新しいコミット> を使用するが、
$ # 次は誤り: git cherry-pick f72bf5b..0e27219
$ # 次が正しい: git cherry-pick e34b043..0e27219
$ git cherry-pick e34b043..0e27219
[testing dacd843] test 画面の追加
Author user1 <user1@example.com>
Date: Wed Dec 7 20:39:00 2016 +0900
11 files changed, 75 insertions(+), 5 deletions(-)
[testing 545fda4] デフォルト表示を変更
Author user1 <user1@example.com>
Date: Wed Dec 8 18:39:00 2016 +0900
5 files changed, 14 insertions(+), 14 deletions(-)
$ # 適用を確認し、OK!
$ git log --all --decorate --graph --online
* 545fda4 (HEAD -> testing) デフォルト表示を変更
* dacd843 test 画面の追加
| * 806b3c9 (import-another) インポート機能追加 問い合わせのため未完成
|/
| * 0e27219 (origin/feature11) デフォルト表示を変更
| * f72bf5b test 画面の追加
| * e34b043 インポート機能追加 問い合わせのため未完成
|/
* 38fe6f1 (master, testing) feature10 リリース
... 略 ...

おわりに

次のページが参考になりました。ありがとう存じます!

以上です。


スポンサードリンク

CentOS 5 に Git をインストールしたときのバージョンは 1.8.2.3-1.el5

環境

  • CentOS release 5.11 (Final)

CentOS 5 への Git インストールコマンド

yum --enablerepo=epel install git

EPEL リポジトリを指定しませんと、簡単気軽にはインストールできませんの><。

“CentOS 5 に Git をインストールしたときのバージョンは 1.8.2.3-1.el5″の続きを読む

【sed】特定の文字列を含む行頭または行末に指定文字列を追加するやり方

行末に追加するコマンド

# 特定の文字列を (正規表現可能) を含む行に対してのみ置換
# sed '/検索対象文字列/s/置換前文字列/置換後文字列を/g'
# 行末に文字列を追加
# sed '$ 追加文字列'
# 以上から
# 特定の文字列を含む行の行末に文字列を追加
sed '/検索対象文字列/s/$/行末追加文字列/' ファイルパス

行頭に追加する場合

行末を示すのは $ でした。これを行頭を示す ^ に変更するだけですの♪

# 特定の文字列を含む行の先頭に文字列を追加
sed '/検索対象文字列/s/^/行頭追加文字列/' ファイルパス

“【sed】特定の文字列を含む行頭または行末に指定文字列を追加するやり方”の続きを読む

【CentOS 6】pip install ply==3.4 すると yum での python-pip インストールが失敗する

失敗した手順

  1. yum -y --enablerepo=peel install python-pip
  2. pip install ply==3.4
  3. yum -y --enablerepo=peel install python-ply
  4. 失敗

“【CentOS 6】pip install ply==3.4 すると yum での python-pip インストールが失敗する”の続きを読む

CentOS 7 に PostgreSQL 9.2 をインストール、設定のノート

インストール

yum -y install postgresql-devel postgresql-server

特にリポジトリの追加等は行っておりません。

次のバージョンがインストールされました。

# psql --version
psql (PostgreSQL) 9.2.15
#

初期設定

CentOS 6 では、initdb は postgresql-setup ではなく、service postgresql initdb でした。

CentOS 7 となり、サービスの起動等以外にも変更となり、この点がとくに分かり辛く、調べるのに時間を使ってしまいました><。

# 初期化
postgresql-setup initdb
# 自動起動を有効
systemctl enable postgresql.service
# 起動
systemctl start postgresql.service

設定ファイル編集 1. パスワード認証へ変更

# バックアップ
cp -a /var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/data/pg_hba.conf.org
# パスワード認証へ変更
sed -i -i 's|local   all             all                                     peer|local   all             all                                     md5|' /var/lib/pgsql/data/pg_hba.conf
sed -i -i 's|host    all             all             127.0.0.1/32            ident|host    all             all             127.0.0.1/32            md5|' /var/lib/pgsql/data/pg_hba.conf
sed -i -i 's|host    all             all             ::1/128                 ident|host    all             all             ::1/128                 md5|' /var/lib/pgsql/data/pg_hba.conf

次のように変更されました♪

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

設定ファイル編集 2. パスワード暗号化 (設定変更せず)

password_encryption (boolean)
ENCRYPTEDもしくはUNENCRYPTEDの指定なしで、CREATE USER もしくはALTER USERにてパスワードが指定されている場合、このパラメータはパスワードを暗号化するか否かを決定します。 デフォルトはon(パスワードを暗号化)です。

デフォルトでオンのため、次の修正は行いませんでした。

# バックアップ
cp -a /var/lib/pgsql/data/postgresql.conf /var/lib/pgsql/data/postgresql.conf.org
# パスワード暗号化
sed -i -e 's/#password_encryption = on/password_encryption = on/' /var/lib/pgsql/data/postgresql.conf

設定ファイル編集 3. スーパーユーザに (postgres) にパスワード設定

ヒアドキュメントを使って、シェルから実行しました。

su - postgres <<EOT
psql -U postgres
ALTER USER postgres encrypted password 'vagrant';
\q
exit
EOT

確認は、次の SQL で行うことができました。

SELECT * FROM pg_shadow;

設定変更の反映

PostgreSQL を再起動して、変更した設定を反映させています。

# 再起動して設定反映
systemctl restart postgresql.service

おわりに

次の Vagrant のテンプレート作成のために、久しぶりに PostgreSQL のインストールを行いました。

調べる中で覚えておきたいこともございましたので、Github にコードを反映させる以外にノートいたしました。

以上です。

【phpmig】【MySQL】マイグレーション時に文字化けする時の修正方法

ポイント

  • PDO をインスタンス化する際に、文字コードを指定する。
  • PHP バージョンによって指定方法が異なることに注意

環境

  • PHP 5.3.3 (cli) (built: Aug 11 2016 20:33:53)
  • mysql Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) using readline 5.1

“【phpmig】【MySQL】マイグレーション時に文字化けする時の修正方法”の続きを読む

【Vagrant】EC-CUBE 3 環境を Mac で構築した時の共有フォルダ mount_options 設定ポイント

EC-CUBE 3 を Vagrant にインストールするとき、次の問題に遭遇しました><。

  • インストールシェルファイルが実行できない。
  • インストールできても、パーミッションの問題で、どんなページでも表示すらできない。

これを解決しましたので、ノートいたします♪

解決できたコードとそのポイント

  • 共有フォルダ・ファイルのパーミッション設定を、ディレクトリは 777、ファイルは 766 とする。
config.vm.synced_folder "synced_folder/ec-cube/", "/var/www/ec-cube",
  create: true, mount_options: ['dmode=777', 'fmode=766']

“【Vagrant】EC-CUBE 3 環境を Mac で構築した時の共有フォルダ mount_options 設定ポイント”の続きを読む

インストール済みのパッケージを rpm で再度インストールしようとした時、if 無しでもシェルを止めない方法

Vagrant のプロビジョニング時、シェルファイルを幾つか組み合わせます。

シェルには set -eux を書いていますので、エラーが発生したタイミングで停止させております。

汎用性を高めるために、何度か同じパッケージを rpm でインストールするコマンドを書いています。

そうしますと、2 回目の rpm インストールでエラーと扱われてしまい、シェルが止まってしまいました。

この状況を打開すべく、検討し、結果が出ましたのでメモいたします。

ポイント

  • >/dev/null 2>&1 で無視しようとしたが、エラー扱いとなり、シェルは止まってしまった。
  • rpm インストール前後で、シェルのデバッグモードのオンオフを切り替えることで対処した。
  • 具体的には、コマンド前に set +e し、コマンド実行し、最後に set -e する。

“インストール済みのパッケージを rpm で再度インストールしようとした時、if 無しでもシェルを止めない方法”の続きを読む

【Vagrant】最小限の CentOS 7 から Web サーバ環境の整った Vagrant Box の Provisioning シェルファイルを作る

方針

進め方

  1. 最小限の CentOS 7 の Vagrant Box を立てる。
  2. Web サーバを構築していくコマンドをシェルファイルに記録していく。
  3. vagrant up 時にシェルファイルがプロビジョニングされるようにする。

構築内容

次と同様とする。

“【Vagrant】最小限の CentOS 7 から Web サーバ環境の整った Vagrant Box の Provisioning シェルファイルを作る”の続きを読む