DATE : 2007/02/09 (Fri)
開発中の BREW アプレットのバグが取れました。
バグの発生元がなかなか分からず苦戦していたのですが、なんとかなりました。
(;´Д`)とても簡単なミスでしたが……。
開発していたのはファイルを読み込んで処理するアプレットです。レコードが50件ほどのファイルだと快調に動作します。しかし、レコードが10000件程度になると、起動してすぐにメモリの空き領域が急激になくなり、そのままアプレットが強制終了してしまいます。
BREW シミュレータにデバッガをアタッチして調べてみたところ、次の部分でアプレットが強制終了しました。(コードは分かりやすいように改変してあります)
void processData(Data& data) { ... this->add(data); if (this->isFull()) { return; } ... this->readData(); }
読み込まれたデータを add メンバ関数で追加するコードです。追加後、データを格納するバッファがいっぱいでなければ、さらにデータの読み込みを求めます(readData メンバ関数は BREW にデータの読み込みを要求するだけで終了します。その後、BREW がデータの読み込みを行う関数を呼び出します。BREW ではできるだけ早く実行環境側に処理を戻さないといけないので、ループは使っていません)。
どうも、バッファが溢れているのが原因のようです。そこで、まず add メンバ関数を調べてみます。
void add(Data& target) { this->data[this->dataCount] = target; this->dataCount++; }
あらかじめ一定数を確保しておいた配列にデータをコピーして、格納した個数を表すカウンタを増やしているだけです。
dataCount の初期値を調べてみましたが、特におかしいところはありません。dataCount の値を出力してみても、初期値は正常でした。ただ、想像したとおり、dataCount の値は配列の要素数を軽く超えていました。
すると、残るは isFull メンバ関数ということになります。しかし、isFull メンバ関数はとても簡単です。ただ単に dataCount が配列の要素数以上であれば true を返すだけです。例えば、配列の要素数が DATA_ARRAY_SIZE だとすると、次のようなコードになるはずです。
bool isFull() const { return (this->dataCount >= DATA_ARRAY_SIZE); }
( ^ω^)普通は間違えません。
しかし念のため、isFull メンバ関数を確かめてみると……。
bool isFull() const { return false; }
(゚Д゚)
(;´Д`)そういえば、前に起きたバクを直すときに、テスト用に isFull 関数の中身を消したことを忘れていました。
DATE : 2007/02/05 (Mon)
ごみを出しやすいようにするため、普段はごみ箱にごみ袋を敷いた状態でごみを入れるようにしています。
ところが、ある日ちょうどごみ袋の入れ替えが面倒臭くなり、袋を敷かないままごみを投入し続けました。
そして、ごみを出そうとごみ箱を逆さにすると……
(;´Д`)なにやら白い粉末がもわっと出てきました。
(;^ω^)その様子は、米村でんじろうの空気砲のようでした。
(;´Д`)ごみ箱の中にはみかんの皮がいっぱい入っていたので、カビが舞ったのかもしれません。
(;^ω^)これは恐ろしい生物兵器ですね。
DATE : 2007/02/02 (Fri)
(´Д⊂ヽいつもどおり猫と戯れていると、思いっきり顔を引っかかれてしまいました。
(;^ω^)初めは引っかかれたところがひりひりするぐらいで特に跡も残っていないような印象でした。しかし、後になって鏡を見てみると……
(;´Д`)頬に赤い縦筋が……
(;^ω^)まるでマンガの、顔に傷のあるキャラクターのようになってしまいました。
DATE : 2007/02/01 (Thu)
(;´Д`)昨日まであんなにもツンツンしていた冬将軍様が、今日はやけにデレデレです。
昨日とはうってかわって、朝起きたら一気に冬景色になっていました。
(;^ω^)幸い、電車は定刻どおりに運転していました。
それにしても、急に雪が降ったせいか、事故現場を見かけたりどこからともなく救急車の音が聞こえたりと、どことなく騒がしい一日でした。
(;^ω^)大雪にならなければ良いのですが……。
DATE : 2007/01/31 (Wed)
(;´Д`)冬将軍到来……暖冬と言いつつ今年も大雪が……
(;^ω^)と、思ったら、雪も降らない本当の暖冬でした。(気温は、朝・夜で冬らしく寒い日もありました)
(;^ω^)いよいよ、企画も大詰めの時期に入ってきました。これまで以上に気合を入れて完成させようと思います。