- 12/02 Information!!
- 07/07 【グラブル】バハムートを最終上限解放
- 07/06 【グラブル】光有利の古戦場
- 06/14 【動物園】愛媛県立とべ動物園
- 05/31 【グラブル】開放したシスとエッセルの使用感
This is new entry
とんでもねぇバグがいたもんだ
どうもシュクレールです。
アウトプットの機能としては現在3つの機能があります。
1.注目ギルトおよび自ギルドの落城監視(1分サイクル)
2.注目ギルドの現在の取得砦のリストアップ(コマンド)
3.不落砦のリストアップ(コマンド)New!!
前回のバグ修正でnull抜けしたときにカウンタを1つ戻すっていうのをやったのですが、
まずこれが悪さをした。
簡略しますが以下のようなテーブルの時に
最新取得ギルドと時刻を得る関数を回したときに、
V1についてはギルド=null、時刻=8:02:00がはいるのですが
V2についてギルド=A、時刻=8:03:00がはいってしまっているのです。
ようは、全部に対して時刻カウンタを1つ戻してしまっていたんスね。
これについては、null抜けした時だけカウンタを1つ戻すという処理で解決
無事に解決。
で、問題は機能2と3の方
双方とも「書き込み済み」のエクセルに対して読みだす処理を行います。
まっさらな何もデータのないエクセルに対して読み込みを掛けたときには回避行動が取れるようにプログラムしています。
具体的には、時刻セルを覗いてnullの場合には「これデータ無いよ」って返します。
が、
以下のような状況が起こりうるのです
例えばGV前の19時58分とかにモニタ機能をONにしてデータ収拾に備えます。
2PC目も立てて、savechatログがALT+番号に登録されているのを実際にセーブしてみて確認してみます。
で、まっさらなエクセルに対してモニタ機能の命令にしたがって、その最新のsavechatログファイルを読み込んで書きこもうとします。
しかし、当然ながら砦の情報は含まれていないログファイルなので、V1~N5までのすべての砦にはnullが書きこまれ、時刻19:58:00が時刻セルに書きこまれます。
すると読み込み処理の中で次のようなことが起こります。
時刻セルにはデータが書き込まれているので「何かしらデータは入っているな」と判断し、処理をそのまま進めます。
そのなかで当然null抜けするのですが、この時のカウンタの戻り値を間違って2にしていたので1行目のtimeという文字列をいれてしまっていたので、処理でやっぱり躓いたってのがありました。
まぁ、バグ処理がうまく行ってなかったってのもあるんですけどね。
これ以降はカウンタ戻しても時刻が入っているので正常に処理が行われるので、本当にこの時刻が1つはいっている状態でnull抜けすると陥るという局所的なバグでした。
あと細かいバグを処理
・機能2、3のときにエクセルチェック行なっているんですが、そこでエクセルが立ち上がっていないときにエラー処理を行なっているんですが、それでも不落砦と注目ギルドの処理に入ってしまうってのがあったので、フラグ立てて、エラー処理が実行されたときは処理に入らないようにしました。
・機能2、3のときにデータがないときもエラーを出すようにしているんですが、結局処理に入ってしまうので、同じようにフラグを立てて処理に入らないようにしました。
というわけで新しく実装した「不落砦のリストアップ」機能についてすこし。
いつだかの記事で結構処理がメンドクサイって書きましたが、思ったよりは楽に出来ました。
(バグ取りと被ったのでなんか一瞬迷路に入り込みましたが・・・)
機能1~3はすべて通常処理関数をつくってそれを用いています。
その関数で以下のような情報が返ってきます。
outputarray[30]:全砦の現在の城主(null抜けした際はNO_INFOが返ってくる)
timearray[30]:現在の城主が落城させた時刻(24h表記)
disptime[30]:現在の城主が落城させた時刻と現在の時刻の差(分表記)
flagnavi[30]:最新ログで自ギルドが落城させたらフラグが立つ
checktarget[30]:最新ログで注目ギルドが落城させたらフラグが立つ
機能1については、flagnaviとchecktargetのフラグを見て、配列の番号が0ならV1、1ならV2と言った風に読み替えてsendでチャンネルに送信しています。
機能2についてはoutputarrayと注目ギルドをifで比較して、trueなら、同じく配列の番号から読み替えてsendでチャンネルに送信しています。あわせてdisptimeもくっつけることによって、何分前にその砦を取得したのかも表示させています。
機能3については
8時2分から何分経過しているのかをまず取得します。
それとdisptimeを比較して、disptimeが大きい場合に、不落と判断します。
(SEが開始から2分で落ちないという信頼のもとの機能)
この機能を使うために以下の制限を設けました。
outputarrayにNO_INFOがあった場合は開始時の一斉ログが取得出来なかったと判断しこの機能は使えませんと警告。
また、8時2分からの経過値がマイナス(つまり8時2分より前でこの機能をコールした場合)のときに同じくこの機能はまだ使えませんと警告。
おそらくこれで行数を削減できたと思われます。
バグ取りに追われて、20時頃からこの機能をつくり始めたのに、終わったのが23時。
ニーズヘッグに行かなきゃと思いながらも眠すぎて仮眠してそのまま。
いやまぁ仮眠で済むとは思ってなかったのですけどね。
今夜ニーズヘッグに行って、週末はGv後の24時頃に行くハメになるかなぁ・・・。
あ、私的メモ
クロシェットの通販が20日から受注開始だとおもったので忘れないように。
コミケで諦めた分です。
まぁ、これがあるから諦めたんですけどね。
どうもシュクレールです。
アウトプットの機能としては現在3つの機能があります。
1.注目ギルトおよび自ギルドの落城監視(1分サイクル)
2.注目ギルドの現在の取得砦のリストアップ(コマンド)
3.不落砦のリストアップ(コマンド)New!!
前回のバグ修正でnull抜けしたときにカウンタを1つ戻すっていうのをやったのですが、
まずこれが悪さをした。
簡略しますが以下のようなテーブルの時に
time | V1 | V2 |
8:03:00 |   | |
8:02:00 | A |
最新取得ギルドと時刻を得る関数を回したときに、
V1についてはギルド=null、時刻=8:02:00がはいるのですが
V2についてギルド=A、時刻=8:03:00がはいってしまっているのです。
ようは、全部に対して時刻カウンタを1つ戻してしまっていたんスね。
これについては、null抜けした時だけカウンタを1つ戻すという処理で解決
無事に解決。
で、問題は機能2と3の方
双方とも「書き込み済み」のエクセルに対して読みだす処理を行います。
まっさらな何もデータのないエクセルに対して読み込みを掛けたときには回避行動が取れるようにプログラムしています。
具体的には、時刻セルを覗いてnullの場合には「これデータ無いよ」って返します。
が、
以下のような状況が起こりうるのです
time | V1 | V2 |
19:58:00 |   | |
例えばGV前の19時58分とかにモニタ機能をONにしてデータ収拾に備えます。
2PC目も立てて、savechatログがALT+番号に登録されているのを実際にセーブしてみて確認してみます。
で、まっさらなエクセルに対してモニタ機能の命令にしたがって、その最新のsavechatログファイルを読み込んで書きこもうとします。
しかし、当然ながら砦の情報は含まれていないログファイルなので、V1~N5までのすべての砦にはnullが書きこまれ、時刻19:58:00が時刻セルに書きこまれます。
すると読み込み処理の中で次のようなことが起こります。
時刻セルにはデータが書き込まれているので「何かしらデータは入っているな」と判断し、処理をそのまま進めます。
そのなかで当然null抜けするのですが、この時のカウンタの戻り値を間違って2にしていたので1行目のtimeという文字列をいれてしまっていたので、処理でやっぱり躓いたってのがありました。
まぁ、バグ処理がうまく行ってなかったってのもあるんですけどね。
これ以降はカウンタ戻しても時刻が入っているので正常に処理が行われるので、本当にこの時刻が1つはいっている状態でnull抜けすると陥るという局所的なバグでした。
あと細かいバグを処理
・機能2、3のときにエクセルチェック行なっているんですが、そこでエクセルが立ち上がっていないときにエラー処理を行なっているんですが、それでも不落砦と注目ギルドの処理に入ってしまうってのがあったので、フラグ立てて、エラー処理が実行されたときは処理に入らないようにしました。
・機能2、3のときにデータがないときもエラーを出すようにしているんですが、結局処理に入ってしまうので、同じようにフラグを立てて処理に入らないようにしました。
というわけで新しく実装した「不落砦のリストアップ」機能についてすこし。
いつだかの記事で結構処理がメンドクサイって書きましたが、思ったよりは楽に出来ました。
(バグ取りと被ったのでなんか一瞬迷路に入り込みましたが・・・)
機能1~3はすべて通常処理関数をつくってそれを用いています。
その関数で以下のような情報が返ってきます。
outputarray[30]:全砦の現在の城主(null抜けした際はNO_INFOが返ってくる)
timearray[30]:現在の城主が落城させた時刻(24h表記)
disptime[30]:現在の城主が落城させた時刻と現在の時刻の差(分表記)
flagnavi[30]:最新ログで自ギルドが落城させたらフラグが立つ
checktarget[30]:最新ログで注目ギルドが落城させたらフラグが立つ
機能1については、flagnaviとchecktargetのフラグを見て、配列の番号が0ならV1、1ならV2と言った風に読み替えてsendでチャンネルに送信しています。
機能2についてはoutputarrayと注目ギルドをifで比較して、trueなら、同じく配列の番号から読み替えてsendでチャンネルに送信しています。あわせてdisptimeもくっつけることによって、何分前にその砦を取得したのかも表示させています。
機能3については
8時2分から何分経過しているのかをまず取得します。
それとdisptimeを比較して、disptimeが大きい場合に、不落と判断します。
(SEが開始から2分で落ちないという信頼のもとの機能)
この機能を使うために以下の制限を設けました。
outputarrayにNO_INFOがあった場合は開始時の一斉ログが取得出来なかったと判断しこの機能は使えませんと警告。
また、8時2分からの経過値がマイナス(つまり8時2分より前でこの機能をコールした場合)のときに同じくこの機能はまだ使えませんと警告。
おそらくこれで行数を削減できたと思われます。
バグ取りに追われて、20時頃からこの機能をつくり始めたのに、終わったのが23時。
ニーズヘッグに行かなきゃと思いながらも眠すぎて仮眠してそのまま。
いやまぁ仮眠で済むとは思ってなかったのですけどね。
今夜ニーズヘッグに行って、週末はGv後の24時頃に行くハメになるかなぁ・・・。
あ、私的メモ
クロシェットの通販が20日から受注開始だとおもったので忘れないように。
コミケで諦めた分です。
まぁ、これがあるから諦めたんですけどね。
PR
COMMENT
プロフィール
HN:
komyu/シュクレール/修造
性別:
非公開
自己紹介:
こうぶつはけものみみとのーびす(♀)とエリーン
主にROとTERAとラノベと雑多なkomyuの日記帳です。
主にROとTERAとラノベと雑多なkomyuの日記帳です。
TERAキャラ紹介
シュクレール(バサ)
syuzo(エレ)
サケマス(アチャ)
その他サブ
ウリエルキゥィス(スレLv54)
Vermillion(サラLv56)
パズドラ
157,318,362
フレンド募集中
枠なきゃ増やす
最終プレイ3日以上になったら消す
カレンダー
12 | 2025/01 | 02 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
最新記事
(12/02)
(07/07)
(07/06)
(06/14)
(05/31)
ブログ内検索
最新コメント