「TGWSAdmin」に関する日記(4)

ここTGWSの管理のために作ったツール。当然ながら非公開だよ。

<前 次>

TGWSAdmin

ツイートに添付する画像のプレビュー画面を作成。
ついでに動画の投稿もできないか試してみたのですが、それは無理でした。
動画を自動投稿する意味はなさそうなので、動画の件は、まあ保留かな。

TGWSAdmin

ファイルの扱いを共通化。
画像をさらにもっと簡単な操作で取り扱えるようにしたいところです。

TGWSAdmin

ツイート系タスクのデータの持ち方を変更。
画像のコピーを保持するようになったので、元データを一定の場所に保持しておく必要がなくなりました。
あと、ちょっとずつ自動テストを入れていっています。

TGWSAdmin

ウィルス扱いされてデータ消えてしまいました…。
週次バックアップの25日未明分があったのでそれとログデータから何とか復旧できましたが、勝手アプリでやっていく以上、ウィルス誤認識などによる不意のデータ損失にはもっとしっかり対策しないといけないですね…。

Magical CircleとTGWSAdmin

Magical Circle

雑多のコーナー更新しました。
魔法陣グルグルのエンディング曲『Magical Circle』の記事です。
あと、今回の更新に合わせて、ブログテーマも変更しました。

TGWSAdmin

プロパティダイアログに型名を書くようにして何のプロパティを編集しているかわかるように。
あと、AccessAnalyzerのテストケースをCSVデータとして外部に出しました。

予言者育成学園とTGWSAdminとWindows UpdateとVPSとアンパンマンDBとプロフィール

予言者育成学園

大アルカナ破界で、かなり馬鹿にされた感じで戦闘続行不能になるバグに遭遇したので、問い合わせしてきました。

TGWSAdmin

リファラの記録表記改善。
一覧でも可否がわかりやすいように○×を付けました。

Windows Update

ちょっと重いなー再起動すっかーとか思ってたらFall Creators Update!
何が良くなったのかわかんないけど、とにかくアップデートしたということで。

VPS for Windows Server

やりたかったことはできなかったし、これ以上特に試したいこともなかったので、早めに解約しておきました。
Linux系のVPSは、一応やりたいことがあるので、準備ができたら契約しようかなと思っています。

アンパンマンDB

トップページのリンク集の部分を微妙に変更しました。
公式とそれ以外を分けたってとこですね。

プロフィール

ウィンドウタイトルが意味不明だったので、質問内容を出すように修正しました。

before>質問[qckw]
after>何かコレクションしてる物アル? | 美文のプロフィール

アンパンマンDBとTGWSAdminと予言者育成学園

アンパンマンDB

一部のページしか対応していませんが、コメント記入ページで、コメント先のページタイトルを表示するようにしました。
システム自体は出来上がってしまっているので、各ページにページタイトルだけ取得の処理を作れば、順次対応していけます。

TGWSAdmin

リファラを必要以上に見に行かない仕組みを構築。
前回の結果を記憶しておいて、連続で同じ結果だった場合は、徐々にチェック頻度を減らしていきます。
結果が変わったら、チェック頻度は元に戻ります。

予言者育成学園

破戒のバグ。

TGWSAdminとアンパンマンDB

TGWSAdmin

「バックアップを自動化したい」と「テストデータは自分でコントロールしたい」を両立させるには、やはり最も常識的な方法「バックアップとテストデータは別々に持つ」がよかろう。
ということで、テストデータの置き場所とバックアップの置き場所をずらすだけで済ますことにしました。

あと、更新情報のツイート時に更新情報の詳細も出すようにしました。
せっかくRSSにタイトル以外に詳細も入れているんですからね。

アンパンマンDB

それに伴い、アンパンマンDBのRSSにも詳細を入れるようにしました。
差分検出が一昨日のまま変わっていないので一部の項目が検出できないのですが、めったに更新しない部分なので、目をつぶることにします。
先日からやっている細かい更新情報ページも、このやり方の延長で作ってしまえそうです。

あと、コメントページに元のページのタイトルを出す仕組みを作成中。
こちらは、作りかけで、全く使える状態ではありません。

ゲーム記とTGWSAdmin

ゲーム記

トップページの更新履歴に、更新したページへのリンクを付けました。

TGWSAdmin

FTPダウンロード機能作成。
TGWSのデータのバックアップの自動化です。
ただ、テストデータをローカル環境に入れていることがあるので、何でもかんでもダウンロードすればいいってものでもないのですが…。

ふわふわふにゃとTGWSAdmin

ふわふわふにゃ

問題、ありました。
0点のときも、ランキングへのリンクが作られるのですが、0点なのでエラーになるのでした。
0点はそもそもランキング対象としてづ適切なので、0点だとスコア送信リンクを作らないようにしました。
特に、全部0点の場合は、スコア送信HTMLファイル自体の生成をしないようにしました。

TGWSAdmin

ログ画面が開けなかったのを直したり、タスクごとのログをタスクのサブメニューから直接開けるようにしたり。

ゲーム記

昨日までのアクセス解析結果を使って、ゲーム記のゲームソフトごとのアクセス数ランキングを作成。
自分で言うのもなんですが、ゲーム記って、ほとんどのページが、内容の薄いカスみたいなページです。だから、意味のあるページ、みんなが興味あるページを素早くたどれるようにしたかったのです。
で、その客観的評価がアクセス数ではないかと思い、アクセス数ランキングを作成するに至ったわけです。
レイアウトが今一つなのでまだ公開はしていませんが、また適当なタイミングで出そうと思います。

TGWSAdmin

自動アクセス解析のアクセス数統計のデータ形式をXMLから単純なTSV形式に変更。
私、一時期XML万能説を信じていて、何でもかんでもXML形式にしようとしていたんですね。
確かにXMLは柔軟性や拡張性が高いのですが、表現はかなり冗長です。XMLの柔軟性・拡張性が必要ないときには、適材適所で選んでいくべきだったんですね。
TGWSAdminで使う場合、TGWSサイトと通信を行うので、通信に適したコンパクトなデータが適切だったというわけです。
TSVに似たCSVという手もあったんですが、解析内容にはコンマを含む可能性が高く、タブが含まれる可能性は低かったため、エスケープ処理を少なくできるTSVを選びました。

TGWSAdmin

自動アクセス解析を好きなパターンでできるような仕組みを作成。
集計項目と集計条件を指定できます。集計条件はナマライザの機能を使っており、かなり細かく指定できます。集計項目はログの中の一項目を加工無しでただ出すだけですが、この辺の加工はサーバー側でやればいいので、TGWSAdminでは手を出しません。

ドラゴンクエスト11とTGWSAdmin

ドラゴンクエスト11

サマディー攻略中。
ボウガンの人はPS4版だけみたいですね。

TGWSAdmin

自動アクセス解析を好きなパターンでできるような仕組みを引き続き作成中。
アクセス解析のコードはナマライザと共通しているので、ナマライザ側にもじわじわ影響が出てきています。
まあ、共通部の修正は表面化してこない場所なので、影響が出たからと言ってナマライザがバージョンアップするわけじゃないですが。

TGWSAdmin

自動アクセス解析を好きなパターンでできるような仕組みを作成中。

TGWSWebAdmin

TGWSAdminは平均して2分に1回動いているので、今のWebサーバー上で動かすようにするのはやっぱり非現実的かなーと思います。
ということで、結局VPSでTGWSWebAdminを心置きなく常時運転するのがいいのかなーというところに舞い戻ってきました。
とりあえず、テスト用タスクだけですが、生成できるようになりました。

TGWSWebAdmin

別にTGWSWebAdmin用のサーバーを別途立てなくてもよくね?という気がしてきました。
現状でも、TGWSAdminの機能の一部はWeb側に丸投げしている部分があります。だったらスケジューリングも含めて全部丸投げでいいんじゃないかなって。
その場合、自動的にスケジュール通りに動かす仕組みが必要になりますが…。

TGWSWebAdmin

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ファイルを適時呼び出すことで実現される、という形で実現しようと思います。

カービィハンターズZとUri.EscapeDataString

ゲーム記の新方式への移行が完了。
そしてカービィハンターズZのページを公開。
ゲーム記のほうは管理画面がまだまだできていませんが、管理画面で頑張らなくてもあんまり問題ない設計にはなっているので、そのへんは急がずぼちぼちやっていこうかと思います。

ゲーム記の件が落ち着いたので、以前TGWSAdminで問題になっていたデータ送信の問題の対処についての話を書き始めました。
実はサンプルコードはとっくの昔に作ってGitHubにアップしてるんですけどね。
mifumi323/EscapeLongDataStringSample
ただ、これに関しては、ちょっと言いたいことがあるので、プログラムだけでなく、解説とかも入れていこうかと思います。

VPSについて。
一応OSをインストールして、セキュリティの設定をするところまではしたけど…うーん、ここから先、サーバー構築とかしなきゃいけないのよね…。
そこらのやっすい共有レンタルサーバー並みの環境を構築するだけでも、不慣れな私には結構な作業ですし、じゃあそこまでしてその先に求めるものは何なの?って話で。
共有じゃLet's Encrypt使えねーなめんどくせーなVPSならできんじゃねぐらいの気持ちで始めてみたのですが、ちょっと、手間の天秤計算すると割に合わなさそう…。
当初は、今のこのサイトを移転するのを視野に入れて考えていたのですが、今は、TGWSAdminの自宅PC以上の安定稼働のためにVPSを使うのがいいんじゃないかという気がしてきています。

TGWSAdmin

直りました。
これを機に送信プログラムそのものをモダンなやり方で作り替えようと思ったのですが、内部処理で同じことをやっていたらしく、作り変えても結果は同じでした。
そこで、送信データをぶつ切りにして、エラーが起こらないように送信用に変換したら、うまくいきました。
結局送信プログラムそのものは古い方式のままです。
気が向いたら、このエラーの原因と対処をプログラミングコーナーにでも書いてみようかと思います。

<前 次>