「PHP」に関する日記(5)

<前 次>

PHP8.1

開発用サーバーが動くようになったので、本格的にPHP8.1移行を始めました。
バージョンアップでもひとまず動作は変わらないように、些細なエラーでも修正していきます。
ちょっと数が多すぎてCI自体が落ちている状況ですが…。

PHP8.1

勢いに任せて開発環境をPHP8.1にアップデート。
しかしかなりエラーが起こっているのです。
動作が変わってしまっている部分もあったので、しっかり直してから本番環境に反映せねば。

TwitterLibとアンパンマン日替わり紹介bot

TwitterLib

mifumi323/twitter-lib - Packagist
うちのサイトで自作して使っている薄いラッパー、2年ぶりぐらいにアップデートしました。
サイト内ではちょくちょく機能追加してたんですが、一般公開用は全然だったので。

アンパンマン日替わり紹介bot

Twitter API v2が使えるようになった関係で、引用リツイート数もわかるようになったので、注目のツイートの計算方法を変えてみました。
Twitter公式で見えるリツイート数は公式RT+引用数なので、それに合わせた形です。
TwitterLibのアップデートは今回のことを見越してのことでしたが、諸々の都合で、結局TwitterLibの方は過去の更新だけを公開しました。

PHPUnit

カバレッジの変遷を自動で記録する仕組み作成中。
カバレッジが高いと、ある程度網羅的にテストができている証拠なので、高めておきたいのですが、何も考えずに開発していくとどんどん下がるんですよね。
下がっているのに気付いて対策を講じたり、上がっていくのを見て喜んだりなど、変遷を残しておくと、何かと使えると思うのです。

PHP7.4

PHP8にする前に、PHP7.4でもまだ動いていない部分がありました。
自動クロールで検出できない管理画面です。
PHPはバージョンが上がるにつれてセキュリティも向上していくのですが、そうすると当然、今はもうあてにできなくなった古いセキュリティ規格は打ち切られていくわけです。
そうはいっても他との兼ね合いで上げられないものは上げられないので、代替手段を探しています。
セキュリティ下げる形の話なので、これ以上詳しくは言いませんが。

PHP8とドラゴンクエスト10

PHP8

最終的には8.1まで上げてしまいたいので、もう8の動作チェックを始めています。
NULLチェックが7の頃よりさらに厳しくなって、NOTICEやらWARNINGが出ています。
ただ、ERRORやExceptionレベルのはなかったようで、その点は一安心です。

ドラゴンクエスト10

キング・ツリー
第10回アストルティア・クイーン総選挙!
毎年恒例バレンタインイベント開始です。
ひとまず、全員分クエストは終わらせました。
毎日投票に行くかどうかは気分次第。
こういうイベントで余計なネタバレ踏まないためにも、メインストーリーは進めておきたいんですがねぇ…。

セラフィ・リナーシェ・ナンナの像
景品の像も3キャラで全種類網羅しました。
衣装はダルメシアンモチーフで、特にバレンタインとは関係なさそうです。

PHP7.4

自動テストで見つかるエラーは完全対処。

PHP7.4とドラゴンクエスト10(ァォィョッュ)

PHP7.4

自動テストをちゃんとやりきるために、本番環境向けにやっている独自のエラーログ機能を、テスト環境では無効化して本来のエラー検知をおこなうようにしてみました。
アンパンマンDBのテストがNOTICEレベルのエラーで落ちるようになりました。
NOTICEレベルというと、それ自身ではダメージはないけど、怪しい動きをしている部分で報告されるエラーです。
現状の実運用では直ちに対策する必要はないものの、何かしらのバグの副作用で起きることが多く、将来のPHPでは本当のエラーになることもあるので、今のうちに見つけて潰しておいた方がいいのです。
実は本当に修正が必要ないNOTICEエラーもあるのですが、それも「バグの副作用で起きたNOTICE」を覆い隠すノイズになるので、修正が必要ない部分は、NOTICE回避するだけの修正をすることになります。

ドラゴンクエスト10(ァォィョッュ)

フェスタ・インフェルノ会場
昨日途中まで進めていたクエスト、クリアしてきました。
ちなみに、写真はクエストとは特に関係のない、フェスタ・インフェルノです。
ァォィョッュはソロ志向なので、パーティ同盟となるフェスタ・インフェルノとは今後も無縁の予定です。

PHP7.4とドラゴンクエスト10(ァォィョッュ)

PHP7.4

テストが通らなくなっていた部分を修正。
細かい警告とかはまだ残っているので、そこらへんも修正したら、8.0に上げる準備に取り掛かろうと思います。
謎のエラーが起きることもあるから、レンタルサーバーからVPSに逃げるのもありかなぁ…。

ドラゴンクエスト10(ァォィョッュ)

魔法の迷宮ボスモンスター「アンドレアル」登場!
…なんですが、どうせ私ではまだ勝てないと思うので、ほったらかしてァォィョッュのお使い系のクエストを進めていました。
クリアしたのは「はじめてのおつかい」、本当に比喩とか抜きに文字通り「おつかい」のクエストですね。
ついてクンのチュートリアル兼しぐさ習得にもなっているのです。
それ以外のクエストも、受注したりアイテムを集めたり、クリアしてないけどちょっとずつ進んでます。

PHP7.4

一部仕様の変わってしまった部分で、警告が出たりテストが通らなくなった部分を直したりしていました。
謎のエラーは頻度は下がったけどまだ起きるには起きるみたい…。

NeoMuplとPHP7.4

NeoMupl

バージョン0.34.1公開しました。

PHP7.4

むしろ7.3の頃より安定した気がしたので、7.4にバージョンアップしました。
ただ、一部動作が変わっているように見える部分があるので、一応慎重に確認しておきます。

PHP7.4

別ドメインでPHPバージョンアップの実験中。
これで大丈夫なら、本当にバージョンアップします。

スーパーマリオギャラクシーとComposer

スーパーマリオギャラクシー


ぼちぼち進めてます。
星船の最後の部屋と思われるロフトも開放。
現在スター53枚。

Composer

Twitter APIの件でライブラリをアップデートしまくっていたら、結構大きくバージョンが上がって、使いたくても使えなかった機能が実装されていたりしたので、他のも様子を見つつ上限を外してアップデートしています。
こういう時、ライブラリが自分の期待通りに動くかどうかの自動テストを作っておくと安心ですね。
個人的ツールのコメリストの新機能が作れそうです。

PHPとドラゴンクエスト10

PHP

PHPのバージョンを上げたらSQLiteが使えない件ですが、サーバー会社に問い合わせたら、すでに対応が予定されていました。
とりあえずは待つだけで良さそうです。
ただ、SQLiteのための対応ではなくて、サーバー自体を根本的に新調するとのことで、メンテナンス時間はそこそこ長くなるようです。
その時が来たら、またお知らせします。

ドラゴンクエスト10

テリーとプーちゃん
テンの日。
バージョン6前夜祭だか何だか知りませんが、サーバー会社とのやり取りやVS2022で遊ぶのに忙しかったので、ドラクエ10の方は最低限の回収のみ。
この写真、右側にいるプーちゃんはテンの日にだけ出てきて、ボスカードをくれます。
左奥にいるテリーはランダムに表れて、ボスカードを渡すと倒してくれます。
つまり、このプーちゃんとテリーの組み合わせで登場すると、実質何もしなくてもボス討伐報酬がもらえます。
強敵は自分で倒してこそ、とは思うものの、ネトゲのボスは周回前提で正直だれるし、時間もないのでこういうのはありがたいのです。

PHP

そもそも!
うちのサーバーが!!
PHPのバージョン上げると!!!
SQLite対応が省かれる!!!!
アンパンマンDBも動かない!!!!!

PHPのcurl(Today I Learned)

先日のFlaky Testの件、本来安定しているはずの状況でも環境問題で不安定化してしまうものがありました。
開発環境でも本番環境でも引けるのに、テスト環境(CircleCI)でだけ何故かDNSを引けないことがあったのです。
それを解決するには、自前でDNSを解決するしか、ってことで、これ。

【php】curl関数でresolveオプションを指定して名前解決を操作する at softelメモ

curl_setopt($ch, CURLOPT_RESOLVE, array('ホスト名:ポート番号:宛先のIPアドレス'));
の形式でIPアドレスを指定できるというやつです。

その前に、本当にDNSのせいなのかも確認しておきたいところですが、何せ不安定なもので、「失敗の様子を確認したい時に限って失敗してくれない」ということもありうるんですよね…。

PHP8

うちのサーバーもすでにPHP8に対応しているのですが、サーバーは対応していてもプログラムが正常に動かなかったため、移行できていませんでした。
そろそろどうにかしたいので、デバッグ可能な検証環境を用意したいなと考えています。
当初、Dockerがちょうどいいかなと思っていたのですが、PHPだけでなく、サーバーやドメインも関わってくるので、仮想マシンまるごと用意した方がいいのではないかと考えています。

Haxe

Haxe - The Cross-platform Toolkit
Haxeについて調べてました。
複数のプログラミング言語のソースコードにコンパイルする言語です。
以前から興味出していたんですが、日記の方には書いてませんでした。
私はC#とPHPを中心的に使っているんですが、Webのフロントエンド向けにはJavaScriptがいいとか、やりたいことに対して使うべき言語がてんでバラバラなんですね。
Windows向けとWeb向けに同じものを取り扱う別のシステムを作ろうとしたら、同じものを違う方法で書き直すことになるわけで、二度手間になるわけです。
この共通ロジックをHaxeで書けば、C#とPHP、そしてJavaScriptにコンパイルして、同じものをいろんな場所で使えるようになるはずなのです。

<前 次>