Composer
以前、サーバーとローカルマシンで別々にComposer環境を構築すると言いましたが、実はローカルで動いていたプログラムがサーバーで動かなかったんですね。
原因わかりました。
Windowsのローカルマシンでは大文字小文字を区別せず、Linuxのサーバーマシンでは区別していて、ファイルを見つけられなかったのでした。
Mifuminatorも全部ファイル名小文字にしちゃってたので、修正の必要がありそうです。
以前、サーバーとローカルマシンで別々にComposer環境を構築すると言いましたが、実はローカルで動いていたプログラムがサーバーで動かなかったんですね。
原因わかりました。
Windowsのローカルマシンでは大文字小文字を区別せず、Linuxのサーバーマシンでは区別していて、ファイルを見つけられなかったのでした。
Mifuminatorも全部ファイル名小文字にしちゃってたので、修正の必要がありそうです。
新しいものだけに自動テスト導入すればいいと思っていたけど、古いものを新しいものに差し替えるときにも、動作が変わっていないか確かめるテストが必要なのか…。
ローカル環境で作ったComposer環境をそのままサーバーにアップするのはやめて、ローカルはローカル、サーバーはサーバーで別個にComposer環境を作ることにしました。
ローカルはPHPUnitつきで、サーバーは--no-devで。
QiitaにGraphQLの記事投稿。
今更ながら、導入してみました。
ちゃんとしたテストはまだ作っていないですが、お試しでちょっとしたサンプルコード的なものを仮に作っておきました。
サイト全体に適用するのはさすがに無理があるので、これから作る部分から順次作っていくことになりそうです。
テンの日。
あと、ァォィョッュもバトエンのクエストをクリアして、全員バトエンできるようになりました。
すすすすすすぷりがんがががががががおもってたいじょうにつつつよくくくくくくく…
というわけで、レッドマウンテンの攻略ページ、実際に攻略しつつ、ボスまで書き終わりました。
もろもろの都合により、全ステージ最弱状態からスタートしていたので、敵の攻撃が激しいこのワールドはかなり苦戦しました。
不慣れなWiiUでの操作とはいえ…ボス戦であんなに死ぬとは思わなかった…。
とにかく、攻略ページは作れたので、近々更新します。
昨日言っていたBOMのページ、更新しました。
新デザインの適用と、初期ディレクトリの変更と、あとついでにいろいろ修正しました。
ディバイン装備お試し。
爆ボンのページの編集をしていたら、久々にBOM付きPHPを見つけたので、他にも余計なBOMがないか探していました。
ついでに、プログラミングコーナーのBOMの記事も書き直したので、明日にでもアップしようかと思います。
生まれ変わったカジノのバニーさんとイチャイチャ。
Composerでクラスが見つからなかったときは、従来式のオートロードで読むようにしました。
すでにTGWSに反映済みです。
ローカルとサーバーで挙動が違うのにはまいってしまいましたが。
TGWS本体にもComposer適用中…。
しかし、もともとあったクラスをうまく参照できない…!
PHPプログラムをテストなどしやすくするため、環境変数への依存を減らしています。
クッキーみたいに外部から来る変数ありきのページもありますが、ドキュメントルートなど、本当は環境変数に頼らなくてもわかる項目も多いんですね。
スタジアム装備の試着など。
海のイベントも始まったそうですが、そちらは未着手です。
ァォィョッュのストーリー進行。
アズランのメインストーリーと、ガタラのメインストーリーをクリアしました。
アストルティア★ラリーに参加したくて進めていたんですが、キーエンブレム全部は時間までに間に合いそうにないし、たとえ間に合ったとしてもラリー最後の強ボス戦にァォィョッュのレベル&しばりで耐えられる気もしなかったので、ラリーは諦めてキーエンブレムも今回の2つを加えた計3つで妥協。
第3回アストルティア★ラリーまでには全キーエンブレムを手に入れて、強ボスにも耐えられる力をつけたいですね。
先日の爆ボンの画像を自動で作るプログラムを作るときにちょっと気になったので、調べてみました。
pathinfo関数で得られるディレクトリが、ディレクトリなしのパスを渡されたときに何を返すのか、です。
結論は今日更新したページに書いてあるのですが、ここにも書いておくと、ドット「.」でした。
Sukeruに使ったWPFのコンテキストメニューのことを、プログラミングのページに記載しました。
結論としては「マニュアル読め」ってことなんですが、難しくないですよと言う紹介程度で。
ポケモンピクロスのページも準備中。
リリースから期間が経ってるし私も完全クリア済みだし、あまり多くは語らず、軽い紹介と自分の記録程度にしようと思います。
で、上記2つの更新をするときにはPHPファイルを触っているわけですが、Visual Studio Code上で編集するようになって、PHP-CS-Fixerで整形するようにしたので、TGWSWebAdminと同じく、.php_csファイルで整形のルールを指定することにしました。
今の.php_csファイルはこんな感じ。
厳しめなSymfonyルールを基本として、配列を省略表記して、PHPDoc関連は若干緩めています。
タスクリストの読み込みまで開発。
と言っても、読み込むデータがないのでまだ張りぼて。インターフェースをどうしようかと思案しながらなので、具体的な動作はまともにできていないのです。
そんなことより、TGWSWebAdminを開発しながらVisual Studio Codeの環境整備。
PHP-CS-Fixerの公式サイトを見ながらコード整形のルールを自分好みに整備しています。おおむねいたれりつくせりなSymforyのルールで、お節介すぎると感じたところは順次Offにしています。
PHP DocBlockerも入れて、ドキュメントコメントも入れやすくしました。
そして何より、PHP IntelliSenseを入れたので、関数の定義を参照できたり、コードの自動補完が利いたり、圧倒的に便利になったのです。
有料ソフトのPhpStormにはきっと遠く及ばないのでしょうが、ここまでやっただけでも、かなり快適になりました。
やっぱりどう考えても一覧に出てくる情報量が少な過ぎなのです。ほとんどの質問に対する回答は短く簡潔なのに、それすら削っているから、すごく読みにくいのです。
情報量を削っているのは、「読みに行く」というアクションを取らせて、回答を読んだ時の印象を強めようというのと、アクセス数の統計を取りたいという狙いがあったからなのですが、一言二言の回答まで削ってしまうのは、さすがにやり過ぎというものなのです。
ミフミンもモンスターバトルロードランクAに到達。
しろいコキンのときもそうでしたが、自分の操作キャラの強みを理解し、意識的に活かしていくようにするとぐっと楽になりますね。何も考えずぶん殴りまくるだけだと苦戦します。
いつの間にかPHPバージョン7.1が出ていましたね。
PHP7以上じゃないと動かないWebアプリやライブラリも増えてくると思うので、ちょっと自分の環境にインストールして試してみようと思います。
TGWSAdmin、今はWindows10の個人PCを使って運用しています。
しかし、アップデートで勝手に再起動したり、そうでなくてもうっかり何かやらかして落ちたりということがたびたびあったわけです。で、遠隔地の安定したデータセンターに安価でサーバー機を仮想的に作れるVPSというものに興味を持っているという話を先月しました。
あのときは、Linuxに不慣れなまま時間が過ぎていって、いったんVPSを解約することになりましたが、そろそろまた具体的な行動を始めようかなと。
いきなりVPSを再契約するわけではありません。
プログラム自体は動く段階まで手元で持っていって、充分動くことが確認できたら、そのとき初めてVPSを契約し、プログラムを稼働させるのです。
VPSはLinuxで運用するつもりなので、まず、WindowsでもLinuxでも動くものを作らなければいけません。
当初、TGWSAdminが.NETでできていたので、Linuxでも動く.NET、.NET Coreを検討していました。実際、.NET Coreを両方の環境で動かす段階まではこぎつけました。
しかし、さらに検討を進めていくと、それは必ずしも得策ではありませんでした。
いくつか理由はあったのですが、大きかったのは2つ。
1つ目、同じ言語を使えるだけで、結局大改修が必要になってしまうということ。元のプログラムがWindowsフォームアプリケーションなので、ライブラリも動き方も、環境自体が大きく変化してしまうんですね。そうなれば、当然、プログラムも大きな変化が必要になるのです。
2つ目、ホットスワップ的なことをしたいこと。つまり、プログラムが動き続けている間に、プログラムの一部を差し替えてしまえるようにするのです。.NETアプリケーションは、基本的に、いったんシステムを全部止めてから、完成したものに全部差し替えるという作業が必要になります。タスクAが動いている間にタスクBを最新版に更新なんてことは、無理ではないにしても大変なのです。
そこで、目を付けたのが、PHPです。
元々サーバー上で動かすことを前提としていて、WindowsでもLinuxでも同じように動かすことができて、私自身、.NETに負けないぐらい使い慣れています。主にWebサーバーで動かすものなので、ユーザーインターフェースもWebアプリとして作れば済みます。
プログラムは大改修どころかフルスクラッチになってしまいますが、これを機に元のプログラムで良くないと思っていた設計も見直すつもりです。動作中のプログラムの一部差し換えは、PHPファイルをただ上書きするだけで済みますね。
と、いうことで、VPS版のTGWSAdminは、PHPで実装されたWebアプリとして提供され、各タスクはPHPファイルを適時呼び出すことで実現される、という形で実現しようと思います。
TGWS内のPHPコードをphp-cs-fixerで整形してみました。
管理の都合でイレギュラーな書き方にしている部分も多々あるので全部とはいきませんでしたが、だいぶすっきりしました。true/false/nullの大文字小文字の不統一や、publicの付け忘れなどが解消したのが特に有益でした。
で、同じのをPHPCRSSにも使ってみました。
動作内容が何も変わっていないのでダウンロードコーナーは更新していませんが、GitHubで今のURLにて修正版を公開しています。
https://github.com/mifumi323/PHPCRSS
以前も言ったように、PHPCRSSそのものに対する開発モチベーションはすでにありません。
アーカイブ形式をLZHからZIPにするぐらいはしてもいいかなって思ったりもしますが、それをする価値もあるかどうか…。
最新版公開しました。
PHPの整形は、いろいろある中で、php cs fixer(小文字のほう)がうまく使えました。
PSR-2に従って整形してくれるらしいのですが、命名規則までは直してはくれないようです。
コーディング規則の最終確認にはSideCIを使っているのですが、ここでチェックすると、警告はある程度までは減っても、ある程度は残ってしまうんですね。
SideCIは本当に最終確認で、気軽にここで調整というわけにはいかないので、できるだけ手元でさっと確かめたいのですが、そのあたりの環境はまだ構築できていません。
マストドンをちょっとやってみたくてVPS始めたんですが、うまくいかなかったので、もう一個やりたかったこと、.NETのWebアプリケーションをLinux上のサーバーで動かすというのに挑戦しています。
今あるサイトをここのサーバーに置き換えるのではなく、新しいことを始めたい、というところです。
もちろん、軌道に乗ればサーバー移転も考えますが。
先日学習していたdotnetコマンドの件は、これの準備段階ということで、とりあえずハローワールドですが成果が出ました。
例えば、C#で作っているfunyakのステージデータが正当なものであるかどうかを検証するには、同じC#で作ったプログラムを使うほうが簡単だったり仕様の不一致が防げたりして都合がいいわけです。
まだFTPを入れていなくて、手元で作ったWebアプリケーションを向こうで試せないので、ちょっとFTPも入れておこうと思います。
SearchPhraseParserの実用的なサンプルを作りました。
思えば、仕様を確認するためのサンプルしか用意していなくて、ちゃんと使えるサンプルは実質ないままでした。
SearchPhraseParserのバージョン1.1.0を公開しました。
今回は大文字小文字の区別をするオプションをつけました。
Googleなどでは「OR」などの演算子は大文字でないと反応しないので、それに合わせるためのオプションです。
アンパンマンDB3のデータベース管理クラスを検索機能のクラスと編集機能のクラスに分割しました。
現状のアンパンマンDB2のように何でもかんでも1箇所に集約しすぎてソースがごちゃごちゃしてきたのと、ユーザー側のページでも呼び出していないだけで編集機能そのものは動く状態で存在していたのが理由としてあります。
編集機能は結構大きいので、ユーザー側のページでは絶対使わない編集機能を読み込むのも無駄な話だし、もし万が一間違えて編集機能を呼び出すコードなんて書いてしまったら大変です。実際紛らわしい内容のメソッドもありますし。
あと、SearchPhraseParserを微妙に更新しました。
本体の動作が変わらないほど本当に微妙な変更ですが。
ただ、オプション項目を追加する程度のことはできたかなーって気がします。