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

<前 次>

ミフミンのDQ10メモとドラゴンクエスト10

ミフミンのDQ10メモ

直しました。
文字列連結の「.」を使うべきところ、間違えて除算の「/」を使ってしまい、文字列は数値じゃないから0扱いされて、0除算が発生し、NaNが生まれて、NaN相手に文字列操作はできないから、結果はNULLになって、NULLをデータベースの非NULL列に入れようとしたために、エラーになっていました。
最後のエラーだけ見てて原因の特定に時間がかかってしまいましたが、0除算の時点でWARNINGが発生するのでそこで気付くべきでした。
動的型付けのPHPだから型が合わなくても進んでしまったというのも厄介なところでした。

ドラゴンクエスト10

ミフミンのバージョン3.2ストーリー進行。
ちょっとムービー見ただけ。

PHPUnit

アンパンマンDB4やらなんやらで、ページを目視確認しながらもりもり開発していった結果、自動テストのカバレッジが著しく下がってしまいました。
カバレッジが高いからいいコード、なんて都合のいいことはないのだけれど、自動テストをもれなく書いていると、予期せぬデグレとか、外部サービスの仕様変更とか、確認したつもりでできていなかった部分とか、結構見つかるものなのです。
で、外部サービスの仕様変更で使えなくなった機能の削除とか、目視ではいい感じに動いているように見える機能のちゃんとしたテストとか、やってました。
そして、ちゃんとテストした機能なら、当初考えていた意外にも使い道がありそう…ということで、何か考えています。

Composerとドラゴンクエスト10

Composer

バージョン2が出ていたようなので、アップデートしてみました。
速度が速くなっているらしいですね。

ドラゴンクエスト10

ァォィョッュもハロウィンイベントクリア。
ムービーをスキップしたらずいぶん早く終わりました。
しかし、クリア後が結構だるそう。

ミスタードリラーアンコールと日記とComposer

ミスタードリラーアンコール


もう少しだったのに…無念。
アクション面に不安があるからなるべく動かさずに確殺する方向で進めているのですが、真っ向勝負不可避になると厳しいですね。
ここも、動き出すのを防げないからせめて動いた次の瞬間に壊れるように仕向けて、自分は安全地帯に逃げ込む算段だったのですが、予想より早く壊されて安全地帯の確保が間に合わなかった形です。

日記

管理用の活動記録画面に、ゲーム記の一部のページにある進行状況と、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使うときは利用を検討したい。
引数アンパックは便利そう。

日記のにぎやかしにもなるし、一度見てなるほどと思った情報をすぐ忘れてしまわないようにもできるし、習慣化したいね。

マジッククォート

古のPHPの負の遺産、magic quotes。
昔作ったページにいくつか残っていたので滅ぼしました。
一応動作テストはしておきたいので、後日アップすることになるかと。

ユーザー管理

new staticに罪はなかった。
一応、内部動作刷新しました。
その影響で一つ重大な機能が消えているので、ユーザーページ自体のリニューアルも兼ねて、しっくりくる形で作り直します。

Change Risk Anti-Patterns (CRAP) Index

またPHPUnitの話題だけれども、CRAPインデックス。
コードの複雑性を評価したもので、でかいほどヤバい(悪い意味で)。
で、これの大きいメソッドをコードカバレッジのダッシュボードから見ることができるんだけれども、実際見てみたら、触れたくないカオスなコードが…。
気合いのあるときになんとかしよう。

PHP

無名関数のアロー表記が将来のバージョンで出るとか何とか…。
うちは今PHP7.3への移行途中なんでまだ関係はないのですが、微妙に長ったらしくて面倒だった部分が改善しそうです。
$f = function($x) { return $x * $x; } // 古い表記
$f = fn($x) => $x * $x; // 新しい表記
$y = $f(10); // 関数が実行されて100という結果が得られる

<前 次>