composerのautoloadについて

ちょっとしたときにcomposerでライブラリをDLして、そのライブラリだけ使おうと思ったらRequireができなくてハマった。

結論:composer使うならちゃんと使おうw
次のファイルにautoloadするための情報が書かれている。

全部を手でコピーするのは逆に面倒。っというのが結論。

以前からcomposerのautoloadの仕組みが不可解だったので、いい勉強になった。

さくらインターネットのrewriteで謎の挙動

さくらインターネットに設置していたPHPのプログラムで、
リライトを書いても意図した動きをせず404エラーが帰ってくる謎の減少に見舞われました。

例えば

RewriteRule ^tes$ hogehoge.html [QSA]

は意図した通りhogehoge.htmlにリダイレクトされるのに対し、

RewriteRule ^test$ hogehoge.html [QSA]

では404になるという謎現象でした。

結果としては、MultiViewsオプションが有効になっていて、類似するファイルが存在した際にリライトが適応されずに404を返すんだそう。
対策としては.htaccessに

Options -MultiViews

を追加して対処した

Windows11から10に戻した理由

タスクバーやエクスプローラが使いにくくなりましたね。。。

OSってアプリを動かすプラットフォームであると同時に、ファイルを操作する基本機能であるはずなのに
その基本機能が使いにくくなってとても残念

一方で11で良かったなと思うところも書いてみます。

■クリティカルだったこと
・タスクバーがメインモニタの下部固定になってしまったこと
・タスクバーにツールバーを設置できなくなったこと
・エクスプローラのPCの下にいらないショートカットがいっぱい表示されて使いにくい
 ※ホームにも同じのあるんだからPCの下はなくしてほしかった。。。
 →一応レジストリを編集して消すことができるらしぃ
・エクスプローラが見にくくなった
 ※慣れなんだろうけど、文字やアイコンのバランスなど全体的に見にくく感じてしまった

■よかったこと
・マルチモニタ環境で、モニタをまたいでウインドウを動かすときに変なクリップをしなくなった
・[田]+[カーソル]でウインドウを動かしたときににゅるにゅる動くの意外と好きかも

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' );