プログラミンGOO

プログラミングナレッジ、ワードプレス、広告収入等について、気づき・備忘録を残していきます。

A5SQL備忘録

テーブルを別のデータベースにコピーする

いろいろ調べたがテーブル定義(キー制約やカラムの属性等)を含めたインポートはできないよう。
そのため、テーブルごとに定義をインポートしてコピー先に取り込む。
レコードは複数テーブル一括インポートできる。

テーブル定義のエクスポート

コピー元のテーブルを開く>ソースタブ
ここにcreate文が自動作成されているのでコピー

テーブル定義のインポート

新規作成>SQL>送信先にコピー先のDBを指定>先ほどのSQL文を実行する
ここまでをテーブルの個数分繰り返す

レコードのエクスポート

コピー元のDBを右クリック>一括エクスポート
形式を選択してエクスポート(形式は何でもいい)

レコードのインポート

コピー先のDBを右クリック>連続インポート
先ほど作成したファイルをインポートする

コマンドプロンプト備忘録

コンソール系

画面クリア
cls

ファイル操作

robocopy

ファイルをコピーするが、起点となるディレクトリからのフォルダもすべてコピーしてくれる便利なコマンド

robocopy コピー元 コピー先 ファイル名

例)dirFromとその下位ディレクトリを検索し、sample.txtが見つかった場合はdirToにコピー

robocopy dirFrom dirTo sample.txt
robocopy dirFrom dirTo sample.txt /S ※ディレクトリの階層ごとコピー

※パスに含まれるディレクトリやファイル名にスペースがあると、複数の引数として認識され、エラーになるので注意する

フォルダコピー
xcopy フォルダ名 移動先パス
フォルダの一覧を表示
dir
フォルダ作成
mkdir フォルダ名

はてなブログで『公開する』ボタンが押せない

公開する・下書きとして保存などのボタンが押せなくなる

ボタン自体が非活性(グレーアウト)になっているケース

  • ネットにつながっていない
  • 何かのエラーが出ている
対処法
  • ネット状況を確認する
  • 編集画面にエラーメッセージが出ていないか確認する

ボタンは活性状態なのに押せない

  • ブラウザ、PCフッターメニューバーの表示領域がかみ合っていない
対処法
  • 画面表示の拡大倍率を思いっきり大きくしたり、小さくしたりする
  • ブラウザ(GoogleChrome、Edge、FireFox)を変えてみる

ワードプレスで記事一覧を取得・出力する

記事一覧の取得方法

  • ブラウザでsiteコマンドを使用する
  • プラグイン:Export All URLsを使用する

ブラウザでsiteコマンドを使用する

ブラウザの検索窓にsite:●URL●と入力すると、URLの記事一覧を表示することができる。
■注意点

  • あくまでブラウザの検索結果として表示されるため、結果を1つ1つ開いて内容を確認する必要がある。
  • 特定カテゴリに絞った検索はできない(カテゴリをURLに含む設定にしている場合は可能だが、ワードプレスではこの設定はデフォルトではない)
  • 特定ワードをタイトルに含む検索はできる
  • 細かいオプションを指定して検索ができる(参考:digitalidentity.co.jp

プラグイン:Export All URLsを使用する

■注意点

  • プラグインの導入が必要
  • CSVデータで出力が可能
  • カテゴリやタグなども出力できるためCSV上でフィルタリングが可能
  • 使用方法が簡単
Export All URLsの使用方法
  1. プラグインを有効化
  2. ワードプレス管理画面>TOOL>Export All URLs
  3. 出力条件を入力してエクスポート
  4. 上の方に『Data exported successfully! Click here to Download.』というメッセージが表示されるので、このテキストリンクをクリック

まとめ

プラグイン:Export All URLs の使用を推奨。
シンプルだし、プラグイン自体の信頼性もある。

シェルスクリプト基礎

基礎知識

シェルとは、ターミナルやバッチファイルから命令を受け取り、カーネルへ処理を伝える、デフォルトでインストールされているソフトウェア。
(ターミナルとは入力画面のこと。コマンドプロンプトやGitBashもターミナルの一種)
シェルスクリプトとは、シェルで使用できる記法で書かれたスクリプトのこと。

プログラムというより、コマンドを並べているだけ。

Windowsではコマンドプロンプトのコマンドが記載され、バッチファイルと呼ばれる。Windows即ちマイクロソフトの記法なので、VBと近しいものがある。拡張子は.bat。
UNIXではシェルの命令が書いてあり、そのままシェルスクリプトと呼ばれる。拡張子は.sh。

記法

  • スペースは開けずに記述することが多い
  • カウントは0始まり
  • すべてグローバル変数

ディレクトリ関連

ディレクトリの移動

CD
オプション

\ :ドライブ直下に移動
/D :ドライブ変更
%~dp0 :バッチファイルの位置をカレントディレクトリにする※
┗ %:引数参照。%1以降はバッチに渡される引数を示す。%0は特殊で、起動されたバッチファイルのフルパスが格納される。
┗~:実行されているファイルのパス?ホームディレクトリ?
┗d:ダブルクォートを除く
┗p:ドライブ文字だけに展開する
ディレクトリの確認
dir %homepath% :ホームディレクトリ
%CD% :カレントディレクトリ

変数

SET var=val ※変数varに値valを代入
%var% ※変数varを参照

オプション

/a ※演算可能にする
/p ※標準入力を求める
出力
echo "hello" ※予約語のエスケープは^
echo %var%

コメント

※複数行のコメントアプトはできない

rem comment
: comment
:: comment

Git基礎

基本的な考え方

  • ローカルとリモートが対になっている
  • originはリモートリポジトリのデフォルトの名前
  • 基本的に、gitで指示するのはリモートの場所、送信元は、自分の今いるブランチとなる

git push origin master
今いるブランチからorigin(リモート)のmasterブランチにpush

git diff

基本

git diff --name-only remoteName/branchName
※--name-only:ファイル名のみ

ローカルコミットとリモートのDiff

git diff remoteName/branchName..HEAD

ローカルとステージングのDiff

git diff

リモートとステージングのDiff

git diff --cached

直前のコミット

git diff HEAD^

リモートタグ比較

git diff origin/tag1 origin/tag2

リモートmasterとブランチ比較

git diff origin/master origin/branchName

ファイル単体

git diff origin/master origin/branchName -- [filePath]

git log

コミットの内容を確認
git log -p -1

  • p:変更点を表示
  • 1:最初のコミットのみ(2にすれば直近2コミット分)

git status

ローカルとステージングの状態を確認する

git revert

pushした変更を取り消す。修正の履歴を残し、HEADも修正前の位置に戻してくれるため、一番ベーシックな方法。

    • soft:変更をステージングに戻す
    • mixed:変更をローカルに戻す
    • hard:変更をローカル含めすべて取り消す
resetとの違い

resetはコミットそのものを消去する。revertはコミットを削除した、というコミットを作る。
ローカルでresetした資源をリモートにpushしようとすると、ローカルのHEADがremoteよりも過去となるため、HEADの位置が一致せず、pushできない。
また、コミット自体を削除するため取り消しの履歴が残らないため、resetよりもrevertが推奨されている。
ただし、git addの取り消しの場合はHEADの位置が移動しないため、resetでもOK。
git reset HEAD:HEADの位置にリセット

git clone

git clone [remotePath]

タグ指定

git clone [remotePath] -b tagName
※ブランチ指定の場合はtagNameをbranchNameに変えればOK

cherry-pick

特定のコミットのみを取り出す
git cherry-pick commitId

git config

gitのユーザ名やパスワードなどを表示する

Appendix

History一覧抽出

※GitBashを使用する。コマンドプロンプトだとフリーズすることがある。
git log master --date=short --reverse --no-merges --pretty=format:"%cd%x09%an%x09%s" --[filePath] > ../output.txt
※ > ../output.txt:今いるディレクトリ直下にoutput.txtという名前で出力

    • no-merges:マージのコミット履歴を出力しない(変更履歴には不要な情報のため)

用語集

  • インデックス:ステージングのこと。昔はキャッシュとも呼ばれており、git logでステージングとの差分を比較するオプションのchachedはこの名残
  • ワークツリー:ローカルの作業ディレクトリ

インシデント

git diffで文字化け

日本語が以下のように文字化けする
<81><82>

$ git config --global core.pager "LESSCHARSET=utf-8 less"

git addでステージングしたファイルをローカルで削除してしまった

git checkout 引数なし でステージングの修正をローカルに復元できる。

git checkoutエラー

error: The branch 'branchName' is not fully merged.
対象のブランチにプッシュされていないコミットが残っている。
>HEADまで巻き戻して、変更を破棄すればよい。

git pullエラー

error: Your local changes to the following files would be overwritten by merge
ローカルに修正があり、pullしたい資源とコンフリクトするのでpullできない。
ローカルの修正をstush(退避)する

SSL証明書エラー
SSL certificate problem: self signed certificate in certificate chain
リモートの自己証明書に問題がある
リモート先(GitHabやGitLab)にアクセスし、ブラウザから証明書を取得する。
git config --list
で証明書の格納されている場所を確認し、証明書の内容を、新規で取得したものに書き換える

Stripe決済でサブスクリプションのクレジットカードを変更したい

機能は豊富だが何かと使い方が複雑なStripe。
今回はすでにクレジットカードでサブスクリプション契約を開始している顧客に『サブスクリプションに使用している決済情報(クレジットカード)を変更したい』と言われた場合の対処方法。
主な流れは以下の通り。

  1. サブスクリプションの支払い方法を一度手動決済(インボイスメールを送付し、メールから決済情報を入力してもらう)に切り替える
  2. 顧客がメールから決済を行い、新しい決済情報が登録される
  3. サブスクリプションの支払い方法を新しい決済(クレジットカード)に変更する

1.サブスクリプションの支払い方法を一度手動決済に切り替える

すでに登録されているクレジットカードではなく、一度手動決済に切り替える。
手動決済とは、インボイスメールを送付し、メールから決済情報を入力してもらう方法のこと。※顧客が一番初めにクレジット登録をする際に対応しているはず

まずは顧客タブに移動して該当の顧客を選択。
顧客選択

顧客ページに移動したら、サブスクリプションのセクションから今回決済情報を変更するサブスクリプションを選択する。
サブスクリプションの選択

サブスクリプションのページに移動したら、右上のアクションボタンから、『サブスクリプションの更新』をクリック。
※これはサブスクリプションの設定を更新するというもので、これを選択しただけでは何も更新されないのでご安心を
サブスクリプションを更新

サブスクリプションの更新ページに移動したら、支払い方法セクションまでスクロールする。
現在使用されている決済(クレジットカード)を、『手動支払い用の請求書を顧客にメールで送付する』に変更する
支払い方法の変更

あとは右上の『サブスクリプションの更新』ボタンで変更を確定して完了。

これで次回のインボイス(請求)は自動引き落としではなく、請求メールが送付される。

2.顧客がメールから決済を行い、新しい決済情報が登録される

顧客が請求メールから新しいクレジットカードで決済を行うと、その決済情報がStripeに登録されるまで、それまで待機する。
決済が行われたら、またStripeから、支払い情報を変更する必要があるため。
普段インボイスが送られている日付を確認するなどして、顧客が決済を行うであろうタイミングを把握しておく。

3.サブスクリプションの支払い方法を新しい決済(クレジットカード)に変更する

顧客がメールから新しいクレジットカードで決済を行ったら、今度はこの決済情報から自動引き落としを行うように設定を変更する。
手順は、1.の逆をやればよい。

ただし、ここで1つ注意点がある。
顧客の支払い情報は、デフォルト設定という設定がされており、これを旧クレジットカードから、今回登録された新規クレジットカードに変更しないと、サブスクリプションの情報を変更するときに登録済みの決済情報に出てこない。
この設定を変更する。
顧客タブ>該当の顧客を選択
顧客選択

顧客のページに移動したら、支払い方法セクションまでスクロールする。
新しいクレジットカード情報が登録されているはずなので、この項目の右側にある三点リーダをクリックし、『デフォルトとして設定』。
デフォルトとして設定

あとは手順1で紹介した方法で決済情報を新しいクレジットカードに変更すれば、次回からは新しいクレジットカードから自動引き落としされるようになる。