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のせいなのかも確認しておきたいところですが、何せ不安定なもので、「失敗の様子を確認したい時に限って失敗してくれない」ということもありうるんですよね…。
twitter-text-php
Twitterに投稿する文字列をカウントするいい感じのPHPライブラリ「twitter-text-php」を見つけました。
アンパンマン日替わり紹介botに使う分を中心に、素朴な文字カウントから切り替えてみようと思います。
PHP8
うちのサーバーもすでにPHP8に対応しているのですが、サーバーは対応していてもプログラムが正常に動かなかったため、移行できていませんでした。
そろそろどうにかしたいので、デバッグ可能な検証環境を用意したいなと考えています。
当初、Dockerがちょうどいいかなと思っていたのですが、PHPだけでなく、サーバーやドメインも関わってくるので、仮想マシンまるごと用意した方がいいのではないかと考えています。
Haxe
Haxe - The Cross-platform Toolkit
Haxeについて調べてました。
複数のプログラミング言語のソースコードにコンパイルする言語です。
以前から興味出していたんですが、日記の方には書いてませんでした。
私はC#とPHPを中心的に使っているんですが、Webのフロントエンド向けにはJavaScriptがいいとか、やりたいことに対して使うべき言語がてんでバラバラなんですね。
Windows向けとWeb向けに同じものを取り扱う別のシステムを作ろうとしたら、同じものを違う方法で書き直すことになるわけで、二度手間になるわけです。
この共通ロジックをHaxeで書けば、C#とPHP、そしてJavaScriptにコンパイルして、同じものをいろんな場所で使えるようになるはずなのです。
ミフミンのDQ10メモとドラゴンクエスト10
ミフミンのDQ10メモ
直しました。
文字列連結の「.」を使うべきところ、間違えて除算の「/」を使ってしまい、文字列は数値じゃないから0扱いされて、0除算が発生し、NaNが生まれて、NaN相手に文字列操作はできないから、結果はNULLになって、NULLをデータベースの非NULL列に入れようとしたために、エラーになっていました。
最後のエラーだけ見てて原因の特定に時間がかかってしまいましたが、0除算の時点でWARNINGが発生するのでそこで気付くべきでした。
動的型付けのPHPだから型が合わなくても進んでしまったというのも厄介なところでした。
ドラゴンクエスト10
ミフミンのバージョン3.2ストーリー進行。
ちょっとムービー見ただけ。
PHPUnit
アンパンマンDB4やらなんやらで、ページを目視確認しながらもりもり開発していった結果、自動テストのカバレッジが著しく下がってしまいました。
カバレッジが高いからいいコード、なんて都合のいいことはないのだけれど、自動テストをもれなく書いていると、予期せぬデグレとか、外部サービスの仕様変更とか、確認したつもりでできていなかった部分とか、結構見つかるものなのです。
で、外部サービスの仕様変更で使えなくなった機能の削除とか、目視ではいい感じに動いているように見える機能のちゃんとしたテストとか、やってました。
そして、ちゃんとテストした機能なら、当初考えていた意外にも使い道がありそう…ということで、何か考えています。
Composerとドラゴンクエスト10
Composer
バージョン2が出ていたようなので、アップデートしてみました。
速度が速くなっているらしいですね。
ドラゴンクエスト10
ァォィョッュもハロウィンイベントクリア。
ムービーをスキップしたらずいぶん早く終わりました。
しかし、クリア後が結構だるそう。
ミスタードリラーアンコールと日記とComposer
ミスタードリラーアンコール
岩を後一回で壊れる状態にして右側に籠城する作戦だったが、支えになるはずだった赤ブロックが早々に壊れてしまった。 #ミスタードリラー #NintendoSwitch pic.twitter.com/7qScz5Ea5o
— 📛松田美文 (@matsuda323) July 8, 2020
もう少しだったのに…無念。
アクション面に不安があるからなるべく動かさずに確殺する方向で進めているのですが、真っ向勝負不可避になると厳しいですね。
ここも、動き出すのを防げないからせめて動いた次の瞬間に壊れるように仕向けて、自分は安全地帯に逃げ込む算段だったのですが、予想より早く壊されて安全地帯の確保が間に合わなかった形です。
日記
管理用の活動記録画面に、ゲーム記の一部のページにある進行状況と、Qiitaの投稿情報と、最近コミットしたGitHubの情報を出せるようにしました。
APIは便利ですね。
Today I Learned
日記の賑やかし用と言えば、これもあったんでした。
PHPのComposerに、fundというのがあったんですよ。
「composer fund」というコマンドで、支援を求めているパッケージを調べることができるというものです。
Composerを使っている人が直接的に得をする機能ではないので日本語情報は少ないですが、ライブラリ開発者だって金がないと暮らしていけないし、優秀なライブラリを作れないわけですからね。
無料の物にあえて金を払うというのも、様々なものが無料で手に入る今、考えるべきことなのかもしれません。
error_reporting
数の多いところはおおむねやっつけた。
ログが無茶苦茶肥大化することもなくなったので、後は余裕があるときにリスクの高そうなところから対応していけば良さそう。
error_reporting
候補になる箇所が多すぎて大変なので、特に必要な場所に絞って対応できるように、エラーログの統計を取ってそれを参考に修正していくことにしました。
影響の大きいところを優先的に。
表面化しにくいバグも見つけたので、効果は上がっています。
error_reporting
アンパンマンDBを中心に、引き続きNotice修正中。
error_reporting
ちょっとエラーログの出し方を厳しくして、潜在的にバグの原因となりうるコードの修正を始めました。
アンパンマンDBとか、場所によってはかなりカオスなコードなんで、仕様の見直しも含めて、修正中です。
TwitterLibとfunyak
TwitterLib
Packagistで公開しました。
composer require mifumi323/twitter-lib
でインストールできます。
他のPHPライブラリも、自動更新の設定などを行いました。
funyak
ちょっと細かい修正を行ったのと、開発フローの見直しを行いました。
SearchPhraseParser
かっこの片割れだけしかない文字列を渡すとエラーになるバグがあったので直しました。
それはそうと、Packagistに登録はしているけど、ちゃんとした登録にはなっていないようですね。
一応、自分で使う分には困らないし、私以外もどうやら使っていないようですが、せっかくだからちゃんとした登録をしておきたいですね。
ドラゴンクエスト10とミフミンのDQ10メモとPHP
ドラゴンクエスト10

以前から作ろうとしていたけど期間限定イベントの都合で完成できなかった、アンパンマンのバニラ姫コスプレ装備が完成しました。
デザートスプーンがバトルロード限定で、不定期開催だったんですよね。
ミフミンのDQ10メモ
写真置き場にもっと楽にたくさん写真を置けるように、アップロード・重複判定周りを賢くしていました。
その副産物で、写真置き場の検索結果を拡張子「.json」を付けることでJSON表示できるようになりました。
私以外、使う人はいないと思われます。
PHP(Today I Learned)
ファイルのアップロード数の上限は設定項目max_file_uploadsで変更できるけど、プログラム内のini_setやディレクトリの.htaccessでは変更できない。
これを爆増させることができれば、写真置き場に全部の写真をまとめてぶち込めるようになるはずだったんですけどね。
レンタルサーバーの悲しい宿命です。
まあ、この件に限っていえば、もしかしたらもしかするかもだけど、原則はアップロード作業を楽にしてこまめにアップできるようにする方が運用としては良さそう。
Magic Quotes
ちまちま挙動を見て少しずつアップ中。
いちいち更新通知なんてしませんよ。機能は何も変わっていないんですから。
TIL
パーミッションはpermission。
permittionでは断じてない!
サイト内にあった誤字なので探して滅ぼしていかねば。
Today I Learned
TILが案の定三日坊主になってしまっていたので久々に。
https://qiita.com/rana_kualu/items/50f9f5735321fe995ff5
PHP7.4の新機能。うちはまだしばらくは7.3にとどまるけど。
??=あたりはPHP3あたりで入っていればもっと喜ばれただろうなという印象。今時なら初期値はフレームワークがどうにかしてくれるしイミュータブルを好む風潮もある。
プリローディングはauto_prepend_fileの親玉みたいなやつかな。auto_prepend_fileはPHPだけで完結できないのが嫌でやめたんだけど、VPSでPHP使うときは利用を検討したい。
引数アンパックは便利そう。
日記のにぎやかしにもなるし、一度見てなるほどと思った情報をすぐ忘れてしまわないようにもできるし、習慣化したいね。
