「プログラミング」に関する日記(11)

プログラミング関係の話題。プログラミングコーナーを更新したとか、プログラミングの内容に踏み込んだ話とか。

<前 次>

ドラゴンクエスト10とSmarty

ドラゴンクエスト10

ルイーダの酒場
ゾーマのイベントの全キャラで制覇。

あと、バトエンのイベントをちょっと進めました。
ほとんど運任せなのに拘束時間が長めなのがちょっとね…。
この辺りは次期バージョンでテンポよくなるそうなので、その点に期待。

Smarty

動作確認ができたのでバージョンアップ。
今まで出ていたうるさいエラーも沈黙しました。
自動テストをもっとしっかりできていればこの辺も遠慮なくできるはずなんだけどなぁ…。

Smarty

今使っているバージョンのSmartyが最新のPHPではWarning出すようなので、ちょっとバージョンアップとか、別のテンプレートエンジンへの切り替えとかを検討してみました。
今どきの流れで、SmartyもComposer対応とかしているようです。
ただ、テンプレート不要な場所でも問答無用で読み込む設定になっているようなので、Smartyは従来通り手動でrequireしようかと思います。
他のテンプレートエンジンと言えば、Twigが有名で、Skinnyとかいう日本初の軽量なエンジンもあったり、そもそも生のPHPでいいんじゃないかって意見もあったりしますね。
ひとまず、今のところは、アンパンマンDBみたいに比較的規模のある場所ではSmarty、ゲーム記みたいに生のHTML主体の場所ではテンプレートエンジンを使わないという方向でいこうと思います。
Smartyは最新バージョンに上げるという前提でね。

無題

新しいものだけに自動テスト導入すればいいと思っていたけど、古いものを新しいものに差し替えるときにも、動作が変わっていないか確かめるテストが必要なのか…。

Composer

ローカル環境で作ったComposer環境をそのままサーバーにアップするのはやめて、ローカルはローカル、サーバーはサーバーで別個にComposer環境を作ることにしました。
ローカルはPHPUnitつきで、サーバーは--no-devで。

プロフィールとGitHub

プロフィール

新規投稿後は新規投稿一覧に飛ぶようにしました。
既にリリース済みですが、見るだけの人には関係ないし、新機能やバグ修正というほどでもないので、更新履歴での告知はしていません。

GitHub

欲しい情報を取得するGraphQLを構築できました。
しかし、GraphQLを呼び出すプログラムの作り方がまだよくわかっていないので、もう少し調べる必要もありそうです。

PHPUnitとドラゴンクエスト10

PHPUnit

今更ながら、導入してみました。
ちゃんとしたテストはまだ作っていないですが、お試しでちょっとしたサンプルコード的なものを仮に作っておきました。
サイト全体に適用するのはさすがに無理があるので、これから作る部分から順次作っていくことになりそうです。

ドラゴンクエスト10

テンの日。
あと、ァォィョッュもバトエンのクエストをクリアして、全員バトエンできるようになりました。

GitHub

GraphQLについて調べもの。
旧来のREST APIを使えばたぶん手っ取り早いんだけど、せっかく新しいのが出たんだから使ってみたい。
何度もリクエスト投げなくてもいいとか、必要なデータだけ取ってこられるとか、REST APIより有利な部分があるようですし。

VPS for Windows ServerとUWPとアンパンマンDB

VPS for Windows Server

申し込めるようになっていたので、お試しで始めてみました。
とりあえず、自作のUWPアプリが動くところまで確認。
この時点で、VPSに今回期待していたことができないことが分かったので、今のところは、無料期間だけで撤退するつもりです。

UWP

で、ついでに、UWPでのタイマー処理もいくつか試してみました。
ThreadPoolTimerと比べてDispatcherTimerがいまひとつな印象。

アンパンマンDB

管理メモのAmazon最新情報を更新。
AmazonのAPIで指定できるサーチインデックスは一通り試してみました。
その中で、意味のある結果が返ってきたものを全部出すようにしてみました。

アンパンマン日替わり紹介botといっしょにチョキッとスニッパーズとNeoMupl

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

日別画像アップロード実装完了。
画像をそのままアップするのと、放送日当日用の切り抜きを行うパターンができています。
それ以外のパターンは、今のところは、アップロード前に加工してからそのままアップですね。

いっしょにチョキッとスニッパーズ


ユニークな形でもぼちぼち攻略中。
写真は昨日の分ですが。

サルベージのステージがユニークな形ではかなり高難度でした。

NeoMupl

プロセス分離がまだ時間がかかりそうなので、暫定対応として、エラーで落ちる前に自主的に再起動できるように、再起動メニューを作ってみました。
暫定対応なので最終的になくせればいいなと思うのですが、とりあえずは再起動メニュー自体に問題がないかどうか確かめてから、いったんリリースしようと思っています。

地味ーに再起動処理と二重起動防止がかち合うという現象が発生したので、これをネタにプログラミングコーナーを更新してみるというのもいいかもしれませんね。

VPSと日記とQiitaとドラゴンクエスト10&11

VPS for Windows Server

試してみよっかなーとか思ってさくらのVPS覗いたら、売り切れでした。
自前でサーバー機持とうとすると、Windowsって、特にWindows Serverって、まともに買うとすごく高いし、ハードウェアだって、保守が結構大変になってくるしで、物理サーバーは持ちたくないのですな。
うーん、しかし、売り切れなら仕方ないか…。

日記

記事中のカテゴリの並びを修正しました。
ドラクエ11→ドラクエみたいに50音順にしては不自然な流れだったのを、ドラクエ→ドラクエ11みたいに並べるようにしました。
元々は区切り文字ごと自然順ソートしていて、数字と区切り文字を比較しようとして、数字が先に来てしまったということなのですね。
あくまで自然順で比較したかったので、区切り文字を含まないようにして比較するようにしました。

あと、カテゴリ提案のため、ちょっとした統計を作っています。
ちょっとどころじゃないメモリを食うのですがね…。

Qiita

プログラミングコーナーにない記事を作成。
Form.Showをusingで囲んじゃだめだよ - Qiita

TGWSAdminでやらかしていた失敗を記事にしました。

ドラゴンクエスト10と11

10で11とのコラボアイテム取得。
…なのですが、なにか1個足りない…。
時間に追われてゲームを無理やり進めるのはもう嫌なので、コラボアイテムはさっさと他人の呪文で手に入れて、11はゆっくり好きなペースで残りを片付けていこうと思います。

Qiitaとアンパンマン関連

Qiita

昨日のことですが、Qiitaに登録してみました。
mifumi323 - Qiita

単にプログラミングの知識を置いておく場所としては、自分のサイトで事足りていたのですが、細かい単発ネタとかをぼちぼち投稿していこうかなと。

アンパンマンDB

コメントの重複チェックを入れました。
今まではあとから管理画面で処理していたのですが、今回からは投稿前に止めます。
ただ、コメントが重複するシチュエーションを考えると、エラーで止まるのはよくないんじゃないかな、という気もしています。

アンパンマン紹介bot

管理側ですが、スケジュール表を任意を日付で出せるようにしました。
1年先の投稿をあらかじめ作っておくこともあるので、これまでの向こう1か月間の表示では足りなかったのです。

Anpanator

似ているキャラ似てないキャラ(または質問)を判定するのは勝手な基準で計算した類似度より、相関係数のほうがいいんじゃないか。
1に近ければよく似ていて、-1に近ければほぼ反対、0に近ければ無関係となるわけです。

1に近すぎるキャラは、同じキャラかもしれない、または差別化できておらず見分けがつかないことを意味します。
-1に近すぎるキャラは、どちらかが不適切な回答結果かもしれないことを意味します(本来は「いいえ」が多くなるのでみんな多少は正の相関を持つはず)。
質問についても極端な相関関係は問題がある可能性がありますが、逆に0に近いものは、独立性が高く良質な質問と言えます。

TGWSDQX

httpsの自己署名で詰まった。
デスクトップで使えていた方法が軒並み使えず、.NET Standardのやり方も、サポートされていないと言われ、結局自己署名でどうにかするのは諦め、公開用サーバーをテストモードで動かすことにしました。

爆ボンバーマンとBOMとドラゴンクエスト10

すすすすすすぷりがんがががががががおもってたいじょうにつつつよくくくくくくく…

爆ボンバーマン

というわけで、レッドマウンテンの攻略ページ、実際に攻略しつつ、ボスまで書き終わりました。
もろもろの都合により、全ステージ最弱状態からスタートしていたので、敵の攻撃が激しいこのワールドはかなり苦戦しました。
不慣れなWiiUでの操作とはいえ…ボス戦であんなに死ぬとは思わなかった…。

とにかく、攻略ページは作れたので、近々更新します。

BOM

昨日言っていたBOMのページ、更新しました。
新デザインの適用と、初期ディレクトリの変更と、あとついでにいろいろ修正しました。

ドラゴンクエスト10

ディバイン装備お試し。

BOM

爆ボンのページの編集をしていたら、久々にBOM付きPHPを見つけたので、他にも余計なBOMがないか探していました。
ついでに、プログラミングコーナーのBOMの記事も書き直したので、明日にでもアップしようかと思います。

TGWSAdmin

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

PHPとドラクエ10

PHP

PHPプログラムをテストなどしやすくするため、環境変数への依存を減らしています。
クッキーみたいに外部から来る変数ありきのページもありますが、ドキュメントルートなど、本当は環境変数に頼らなくてもわかる項目も多いんですね。

ドラクエ10

スタジアム装備の試着など。
海のイベントも始まったそうですが、そちらは未着手です。

DataGridViewとSukeru

DataGridView

プログラミングコーナー更新しました。
どっかで見かけて不思議だったコードの話です。素直に書いたら普通に速かったという、しょうもない話です。

Sukeru

色選択を実装しました。凝ったカラーピッカーとかではなく、Colors構造体にあるプリセットの中から選ぶ方式にしました。
特に問題がなければ、また来週にでもリリースしようかと思います。

<前 次>