Latest Publications

WordPressで問い合わせページのURLをを変える

WordPressで稼働しているサイトへの
問い合わせページからの営業メールが後を絶たない。もう嫌になるくらい届く。
ということで対策。

Captchaは乗り越えてくるため、
問い合わせページのURLをリスト化されたものが出回っていて
そこにコピペするバイトの人間が送り続けているんだと思う。

URLを変更し、404エラーになればバイト君はマニュアルに書いてあるとおり
諦めて次のリストに行くのではないかと予想。

ということで、問い合わせページのURLを変えた上で、リダイレクトさせないという処理を行った。

URLを変えるのは、問い合わせページのスラッグを変更して終わり。
ただ、このままだと旧URLにアクセスするとリダイレクトされてしまうので
今回の目的には沿わない。

リダイレクトの仕組みを調べたら
wp_postmetaテーブルのmeta_key=_wp_old_slugにあるとのことだったが
該当するものが見つからない。

更に調べると、似たURLが入力されたら自動でそのページに飛ばす機能があるらしく
それが適用されているよう。

それはfunctions.phpにて
add_filter( 'do_redirect_guess_404_permalink', '__return_false' );
を書けばオフになる。

これで旧URLは404エラーになるようにしたので、
不要な営業メールが減ってくれることを願う。

なお、しばらくするとまたリストに追加されてしまうだろうから
定期的にこの作業は行う必要がある。

CircleCiでphpstanを動かしたときのエラー

./vendor/bin/phpstan analyse
Note: Using configuration file /home/circleci/repo/laravel/phpstan.neon.

Received “killed” signal

とエラーが出るようになった。
phpstanのバージョンを新しくしたことが原因っぽい。

CircleCIにsshで入って試すも

killed

だけ出る。

どうやらCircleCIのメモリが足りなくなって消されているよう。
有料プランならメモリを増やす方法もあるようだが
無料プランなのでそれ以外の方法を探る。

phpstanは実行メモリの指定があるので

./vendor/bin/phpstan analyse –memory-limit 1G

とやってみると、今度は

Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 1073741832 bytes) in phar:///home/circleci/repo/laravel/vendor/phpstan/phpstan/phpstan.phar/vendor/nette/di/src/DI/DependencyChecker.php on line 47

と実行時のメモリ不足のエラーが出る。

6Gまで増やしてみてもエラーが出て、7Gになるとkilledになるのでこの間がCirleCIでkillされる区切りなのかも。
それにしてもメモリ的には十分に思えるが、こんなにかかるのがちょっとおかしい。
対象ファイルを1つだけにしても状況は同じ。

ローカルでは普通に動き、メモリ制限を1Gにしても動く。

とりあえず、一旦CircleCIでのチェックは諦めて処理を外すことにした。

Xiaomi Mi Band4 をAndroid (Xperia)に接続

ずっとiPhoneで使っていたMi Bnad4 をAndroidで接続しようとするもペアリングができずに困っていた。

Androidを再起動しても、Mi Band4を再起動してもダメ。

結果、iPhoneで接続し直した後、SettingのFactory ResetをしたらAndroidでもつながるようになった。

Laravel Duskで日付枠に入力する時の注意点

Laravel本体のバージョンをあげたあとブラウザテストを走らせると
今まで通っていたところがエラーで止まるようになっていた。
バージョンをあげたせいかと思って調べてみるとそうではなく、年が変わって1月になっていたことが原因だった。

元々日付枠への入力は下記のようにしていた。

->keys("#from", $dtFrom->year, '{tab}', $dtFrom->month, $dtFrom->day)

ブラウザテストを確認すると、2023年1月20日を入力したつもりのものが
「2023/12/日」とおかしくなっていた。
実際に手入力で試してみると、月に「1」を入力した場合は確かにカーソルが次にいかない。

1月かもしれないが、10月、11月、12月かもしれないので入力を待っている状態なのだ。
システム的には2桁の月は確定なのでカーソルは次にいくし、2月以降の1桁の月も確定なので次にいく。
1月の場合のみ、カーソルが次にいかないので入力を待った状態で次の日付用の数字が入ってしまい、おかしくなっていた。

そこで修正。
月は0詰めで渡すようにした。

->keys("#from", $dtFrom->year, '{tab}', $dtFrom->format('m'), $dtFrom->day)

Microsoft Office 2021 for Macのライセンス認証エラーに対応

ある日突然、Macで使っていたOfficeがライセンス認証してください、と出るようになった。

ライセンス認証のボタンやメニューを選んでも何も起きず、認証することもできない。

色々とやった結果、下記URLでライセンス削除ツールをダウンロードして実行し、改めて起動することで戻った。

Mac で Office のライセンス ファイルを削除する方法

波ダッシュと全角チルダ

コンバート処理を作っていて、見た目は同じなのにシステム側が同じと判断しない場面に遭遇した。

08:00~12:00
08:00〜12:00

上記は違う文字として認識される。

ASCIIコードを調べると
~はff5e
〜は301c
となっている。

~(ff5e)は全角チルダ、〜(301c)は波ダッシュということで、
上記のような範囲に使うケースでは波ダッシュが正しいようだ。

波ダッシュ – Wikipedia

VS CodeでのPHP8.1コードの文法エラー解消

プロジェクトでPHP8.1にしたものがあり、8.1から実装されたEnumのコードを書いてたらVS Codeでは赤色になり、文法エラーとして出るようになってしまった。

dockerではちゃんとPHP8.1に設定しているしコードも動いているので文法チェックだけのエラーであり、設定を探したが見当たらず、setting.jsonに書けばいい、という記事も見つけたがやってみても設定そのものがグレーで反映されておらず、何も効かない。

しかし、設定の中でPHPのパスを指定するという項目があり、ローカルのPHPを使って文法チェックしているのかと思いあたってローカルがPHP8.0だったものをPHP8.1に変更したら文法エラーも解消された。

dockerを使っていてローカル環境とは切り離されているという認識だったが、ローカル環境のPHPが必要な部分が残っていた。

Synology Drive Clientでうまく同期できない問題を解消

2つのMacで使っていて、特定条件だけ同期できなかった。
既存ファイルを両方のMacが持っている時はちゃんと同期できるが、
片方で新規にファイルを作った場合、そのファイルはもう片方に入らないという状況。

原因判明までかなり時間がかかったが、
クライアントソフトのコンピューター名が原因だった。

このMac2台は元々同じ内容のもので、新しくMacを買った方にデータを移行したものだった。
移行後に旧Macはすぐにコンピューター名は変更していたのだが、
クライアントソフトには最初のコンピューター名が残っていて、同じコンピューター名なので同期不要と判断されたものがあったよう。

クライアントソフトの設定で、「接続を編集」を選ぶと登録されているコンピューター名が表示されるので
それを編集し、パスワード欄もちゃんと入れて再設定をするとできた。

なぜか設定していない方のクライアントで「認証エラー」など表示されたが、
一時停止してつなぎ直したりしてたら正常に動いた。

プリンターDCP-J557Nが無線LANにつながらなくなったのを解決

数日前にルーターの電源を一度落としたからか、プリンターがつながらなくなった。
確認すると、WiFiに接続できていない。
タッチパネルから設定するも、パスワードは合っているはずなのに接続に失敗する。

いろいろ試した結果、
・蓋を開けた中にある差込口にUSBを指して、パソコンにつなぐ
(その状態のままだとWiFi接続中になるが、ケーブルを抜くとまた切れる)
・その状態のまま、本体のタッチパネルでWiFi接続する

これで再接続できた。
なんでこうなるのかはさっぱりわからない。

Office購入時の60日間サポート

Officeを購入したあとで、どうしても不具合がなおらず困っていた。

購入した商品ページを見ると、「60日間のサポート付き」とあった。
とはいえサポート先がわからず、サポート用のフリーダイヤルを見つけたので電話してみると
「それとは別」と言われてしまった。

ただ、サポート先は教えてくれて

aka.ms/csjp

とのこと。アクセスしたら別URLに転送されたので、
電話で伝えるための短い転送用URLを準備しているのかなと思った。

ちなみにサポートを受ける前にこのサイトからのリンクで
不具合解決のヒントを発見して自己解決したので、結局サポートは受けなかった。