GitHub+PDTでPUSH/PULLする時にログインできない

そもそもGitHubにgitコマンドからログインするには「Personal access tokens」が必要で、Web上でログインするパスワードの代わりにこのTokenを利用する。

Tokenの作り方

  1. GitHubにログインする
  2. https://github.com/settings/tokensにアクセスする
  3. 「Generate new token」ボタン
  4. 「Note」に識別名を記載
  5. 「Expiration」でTokenの有効期間を指定
  6. 「Select scopes」で権限を付与
    ※よくわからない場合は「repo」にチェック
  7. 「Generate token」でTokenが作成される
  8. 遷移した先でトークンが表示されるので別のファイル等に書き残す!!
    ※表示が消えると確認手段がないので再作成することになる。
カテゴリー: git

LaravelでSMTP経由で複数の送信元メールアカウントを切り替える

こんなよくあるシチュエーションが上手くいかずに苦悩したので備忘も兼ねて

Configオブジェクトの設定を書き換えて送信すればいいよね。
って思ったので


//foo@example.comアカウントで送信
Config::set('mail.username', 'foo@example.com');
Config::set('mail.password', 'barpass');
Mail::raw($body, function($message) {
  $message->to('dest@example.com');
  $message->subject("test");
});

//bar@example.comアカウントで送信
Config::set('mail.username', 'bar@example.com');
Config::set('mail.password', 'barpass');
Mail::raw($body, function($message) {
  $message->to('dest@example.com');
  $message->subject("test");
});

こんな感じに書いた。
ちなみに.envでは
MAIL_USERNAME=hoge@example.com
MAIL_PASSWORD=hogepass
としていた。

このコードを動かしてみると
1回目のメール送信はfoo@example.comアカウントでプログラムした通りに送信してくれる。
ところが、
2回目のメール送信もfoo@example.comアカウントでメール送信してしまう。

原因

この現象を御幣を恐れず簡単に説明すると。
Mailがstaticなので1回目の処理で作られたメールアカウント(transport)を持っていて
2回目はインスタンスがある為に新規にメールアカウント(transport)のインスタンスを作らずに
1回目のメールアカウント(transport)を引き継いで処理してしまう。

回避方法

何かメールアカウントをクリアする方法があるのかと調べましたが見つからず、
どうやらTransportのインスタンスを個別に作らないとだめらしい。

やり方を書いてくださっているページがあったのでリンクさせていただきます。
LaravelのMailで、機能ごとに送信元アドレスを切り替えたい(Gmailなど)時にめっちゃ詰まった話

PHP::PDOでMySQLに接続するときのスニペット

ちょっとしたサンプル書くときにPDO接続するときのオプションなんだったっけ?みたいになるので書き残します。
最近のフレームワークはこの辺の基礎構文書かないから忘れるw

charsetを指定していることで「set names」しなくてよくなる。
PDO::ATTR_ERRMODEでSQLの実行エラーを例外処理
PDO::ATTR_DEFAULT_FETCH_MODEでselect文の実行結果を連想配列(PDO::FETCH_ASSOC)を指定することでfetch()の時にパラメータを省略できる。

$dsn = 'mysql:dbname=placktis;host=127.0.0.1;charset=utf8';
$user = 'root';
$password = '';

try {
    $dbh = new PDO($dsn, $user, $password,[
	    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
	    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    ]);

} catch (PDOException $e) {
    echo "接続失敗: " . $e->getMessage() . "\n";
    exit();
}
カテゴリー: PHP

Thunderbirdのプロファイル変更(切替)

Windowsの再インストールなどでThanderbirdを入れなおしたときにバックアップしたプロファイルなどに切り替える方法がうまくいかなかったので整理して手順を残します

  1. Thunderbirdをダウンロード&インストール
  2. Thunderbirdのプロファイル選択用ショートカットを作成
  3. Thunderbirdのプロファイル選択
  4. Thunderbirdの起動確認
  5. プロファイル選択用ショートカットを削除

Thunderbirdをダウンロード&インストール

ダウンロードしてインストールすればいOK。
インストール後に起動しない。してしまっても問題はない

Thunderbirdのプロファイル選択用ショートカットを作成

デスクトップに作成されたThunderbirdのショートカットのコピー作成。
プロパティを開いて「リンク先」の末尾に「 -p」(スペース・ハイホン・ピー)を追加して「OK」。
(例

"C:\Program Files\Mozilla Thunderbird\thunderbird.exe" -p

Thunderbirdのプロファイル選択

プロファイル選択用ショートカットを実行すると次のような画面が表示される。

任意の操作でプロファイルを追加したり削除したり整理しつつセットアップ。

Thunderbirdの起動確認

起動してバックアップしていたプロファイルが復元されていればOK。
もしうまくいかなかかった場合はプロファイルの選択をやり直す。
それでもダメな場合は何か壊れてるかも?

プロファイル選択用ショートカットを削除

削除するのをお忘れなく!

wordpressとLine公式アカウントの連携をLineAutoPostを使ってカスタム投稿タイプにも反映させてみた

WordPressで特定の情報を登録した際に、Line公式アカウントと連携して通知を送信したかったので、Line Auto Postを使わせてもらいました。
使い方はコチラを参考にさせていただきました。

ただ、今回は「投稿(post)」ではなくて、カスタム投稿タイプ(custom post type)で作成した記事の投稿で通知したかったのでfunction.phpを次のようにカスタマイズしてみました。

/* =======================================
 * カスタムポストタイプでLineAutoPostを使えるようにカスタマイズ
 */
function init_lineAutoPost_ex(){
$objLineAutoPost = new LineAutoPost();
$postTypeList = array('job-apply');	//カスタムポストタイプの一覧
foreach($postTypeList as $postType  )
add_meta_box(
	    // チェックボックスのID
	    LineAutoPost::PARAMETER__SEND_CHECKBOX,
	    // チェックボックスのラベル名
	    'LINEメッセージ送信',
	    // チェックボックスを表示するコールバック関数
	    [$objLineAutoPost, 'show_send_checkbox'],
	    // 投稿画面に表示
	    $postType,
	    // 投稿画面の右サイドに表示
	    'advanced',
	    // 優先度(最優先)
	    'high'
	);
}
add_action('add_meta_boxes', 'init_lineAutoPost_ex' );

laravel artisanコマンド

分類 コマンド 説明
php artisan list コマンドの一覧を表示する
php artisan make:controller -h コマンドのヘルプを表示する
php artisan key:generate encryption key を設定する
php artisan route:list route(経路)の状態を表示する
model php artisan make:model User app/モデルクラスをひな形から生成する
model php artisan make:model User –migration クラスのほかにmigrationファイルも生成する
migration php artisan make:migration create_users_table resource
migration php artisan migrate 未実行のmigrateファイルを実行する
migration php artisan migrate:refresh 追加済みのテーブルを削除して再構築する
migration php artisan migrate:refresh –seed refleshに加え、seederを実行する(databaseSeederに依存)
migration php artisan migrate:rollback 1つ前の状態に戻す
seeder php artisan make:seeder UsersTableSeeder seederファイルを作成
seeder php artisan db:seed seederを実行する
seeder php artisan db:seed –class=UsersTableSeeder 特定のseederを実行する
controller php artisan make:controller HogeController コントローラのひな形を生成する
server php artisan serve
request php artisan make:request UserRegistPost リクエストクラスを生成
provider php artisan make:provider RiakServiceProvider プロバイダクラスを生成
cashe php artisan config:clear キャッシュをクリアする
php artisan make:middleware CheckAge ミドルウェアクラスを生成する
auth php artisan make:auth ユーザ認証のひな形を生成する

composerの概要

composerはPHPにおけるパッケージ管理ツールです。

類似のツールとして
LinuxのYum
PHPのpear
NodeJSのnpm
があげられます。

リポジトリと呼ばれるパッケージが登録されたサーバから、パッケージのダウンロード・インストールを行ってくれます。
また、ダウンロードしたパッケージに必要な依存パッケージも一緒に落としてくれるなど環境作成を楽にしてくれるツールです。

◆composerのインストール(Windows+Xampp環境)
PHPへのpathが通っているコマンドプロンプト(PowerShell)で次のコマンドを実行します。
※composer.pharがphp.exeに依存しているので「xampp\php」で操作するとpathを通しやすくて良いんじゃないかと。

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e5325b19b381bfd88ce90a5ddb7823406b2a38cff6bb704b0acc289a09c8128d4a8ce2bbafcd1fcbdc38666422fe2806') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

正常に終了すると
カレントにcomposer.pharが作成されます。

composer.pharはcomposer本体で、PHPプログラムをphar圧縮したものです。
使用する際は

php composer.phar [コマンド]

のように使います

◆composer-setup.phpやcomposer.pharについて
composer-setup.phpがやってることはcomposer.pharをダウンロードしてるだけ。
そしてcomposer.pharは独立したPHPプログラムなのでコピペして好きなところに置いていいっぽい。

もっと言えば、composer.pharがあればわざわざインストールしなくてもcomposer.pharをコピペして使って問題なさそうですね

◆composer.pharを使いやすく(linuxっぽく)
composer.pharをダウンロードして設置しただけだと、composerを実行する際に

php composer.phar [コマンド]

のように書く必要があります。

Linux環境では

composer [コマンド]

で実行できるため、いろいろなサイトで学習するにあたって読み替えが必要になったりしますし、このほうが入力が少なくて便利ですよね。

これを実現する設定をしていきたいと思います。
composer.pharを設置したディレクトリに
composer.batを作成し、次の内容をコピーしてください。

@ECHO OFF
php "%~dp0composer.phar" %*

以上です。

動作確認のために次のコマンドを実行してみてください。

composer -V

composerのバージョンが表示されればOKです。

◆composer.batを理解する

composer.batを準備すると、なぜ

composer [コマンド]

とすることができるのか?を解説してきます。

まず、コマンドプロンプトの挙動として
実行可能ファイルの拡張子(.exe,.com,.batなど)は省略できる。
っという性質があります。

なので、コマンドプロンプトに記述する「composer」とは「composer.bat」を意味します。

composer.batの中の意味は
「%~dp0composer.phar」とはcomposer.batがあるディレクトリのcomposer.phar
「%*」は、composer.batに渡されたパラメータを意味します。

php.exeでcomposer.pharを実行し、comoper.batに渡された引数を丸投げしてます。

composer -V
を実行すると次のように変換されるわけですね
php c:\xampp\php\composer.phar -V