導入の方法については、図解詳細付きで説明していらっしゃる方のページを参考にしました。
さてテストを書こう!という段階で詰まった時のメモを残します。
○テストケースを実行するメソッド名は「test~」
冷静に考えれば当たり前かもですが。。
最初、testで始まらない名前のメソッド名で、テストケース書いて実行していて
「何で実行されない??」
しばらく悩みました。。
名前がtest~で始まらない、tearDownとかでもないメソッドは、テスト対象にならないのですね。
○NSLogはちょっと隠されたところに出ている
実行されてるはずなのに、いつものウィンドウにログが出てこない…!!
と思っていたら、出てました。いつもとは違う場所に。
海外サイトですが、図解付きで大変助かりました。
http://agilewarrior.wordpress.com/2012/02/28/where-is-nslog-output-for-ocunit-tests/
吹き出しのアイコン、初めて押しました…!
ログを見たくて毎回辿るのですが、ちょっと面倒です。。
(つぶやき)
テスト実行したくないメソッドは、どうすればよいのでしょう。
メソッド名変えればよいんですかね…
2012年6月30日土曜日
2012年3月2日金曜日
DirectX GetBackBuffer
DirectX9です
バックバッファの絵をテクスチャに貼ろうとしています。
フルスクリーン化した時のみ、
GetBackBuffer()でバックバッファを取ると
Pitchがなぜか少しだけ多くなります。
(フルスクリーンではない時は、問題ありません)
device->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, &src);
src->GetDesc(&desc);
src->LockRect( &rSrc, &srcRect, 0);
rSrc.Pitchは、desc.Width*4バイトになってくれるはず・・なのですが
自分の場合は、フルスクリーン時のみ、
desc.Width*4 + 96バイトになっています。
うーん・・なぜでしょう
256で割り切れる数に合わせたいとか、何かあるんでしょうか。。
調べてみないとなぁ・・
バックバッファの絵をテクスチャに貼ろうとしています。
フルスクリーン化した時のみ、
GetBackBuffer()でバックバッファを取ると
Pitchがなぜか少しだけ多くなります。
(フルスクリーンではない時は、問題ありません)
device->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, &src);
src->GetDesc(&desc);
src->LockRect( &rSrc, &srcRect, 0);
rSrc.Pitchは、desc.Width*4バイトになってくれるはず・・なのですが
自分の場合は、フルスクリーン時のみ、
desc.Width*4 + 96バイトになっています。
うーん・・なぜでしょう
256で割り切れる数に合わせたいとか、何かあるんでしょうか。。
調べてみないとなぁ・・
2011年12月20日火曜日
insert文の勉強
既に登録されているデータならばinsertを行わないSQL文
selectで登録済みかどうかをチェックしてからinsertする・・という発想になり
2つのSQL文を発行していました
いつも、これを1度にまとめられないものかと思いながら・・
今回は1つのSQL文で上記のことを行うようにしました
DBはPostgreSQLです
例)
テーブル:table1
カラム:value1, value2
insert into table1 (value1, value2)
select 'value1', 'value2' from table1
where not exists (
select * from table1 where value1 = 'value1'
) limit 1
(空で書いたので実行できないかもしれません)
複数のテーブルが関連するような複雑なものではなく、
1つのテーブルに、単純にレコードを挿入する際に、
重複登録を避けたいための文です
limitがいけてない気もします・・
not existsだけでは複数行該当する→複数回挿入してしまう→そうだlimitだ
という発想です・・
ど、どうなのでしょうか
よりよい手段を見つけたいです
selectで登録済みかどうかをチェックしてからinsertする・・という発想になり
2つのSQL文を発行していました
いつも、これを1度にまとめられないものかと思いながら・・
今回は1つのSQL文で上記のことを行うようにしました
DBはPostgreSQLです
例)
テーブル:table1
カラム:value1, value2
insert into table1 (value1, value2)
select 'value1', 'value2' from table1
where not exists (
select * from table1 where value1 = 'value1'
) limit 1
(空で書いたので実行できないかもしれません)
複数のテーブルが関連するような複雑なものではなく、
1つのテーブルに、単純にレコードを挿入する際に、
重複登録を避けたいための文です
limitがいけてない気もします・・
not existsだけでは複数行該当する→複数回挿入してしまう→そうだlimitだ
という発想です・・
ど、どうなのでしょうか
よりよい手段を見つけたいです
2011年12月14日水曜日
Butterfly Persistenceのboolean型
Butterfly Persistenceを利用する機会があり、
booleanのテーブルの値が取れていない事に気付きました。
ソースコードをDLして調べてみました
Booleanをマッピングするところの型チェックが不足しているようです
PostgreSQLでは(←ポスグレだけなのかはよくわかりませんが・・)
boolean型はjava.sql.Types.BIT型を返しているようでした。
なので、if文を
(java.sql.Types.BOOLEANまたはBIT) ならば〜
という条件にしてみると、無事booleanのテーブル値が取れました。
jarにする時は、JDKは1.5でビルドしないと通りませんでした。
(最初1.6にしてしまって、エラーの嵐に・・)
booleanのテーブルの値が取れていない事に気付きました。
ソースコードをDLして調べてみました
Booleanをマッピングするところの型チェックが不足しているようです
PostgreSQLでは(←ポスグレだけなのかはよくわかりませんが・・)
boolean型はjava.sql.Types.BIT型を返しているようでした。
なので、if文を
(java.sql.Types.BOOLEANまたはBIT) ならば〜
という条件にしてみると、無事booleanのテーブル値が取れました。
jarにする時は、JDKは1.5でビルドしないと通りませんでした。
(最初1.6にしてしまって、エラーの嵐に・・)
2011年11月26日土曜日
SQLiteをVisualStudioで使う
文字列が化けてハマりました。。
VS2010, SQLite3, c++
「マルチバイト文字」を使用するプロジェクト環境です
・DBはUTF-8で作成
sqlite3_open_v2を使ってオープン。
・文字列の書き込みはUTF-16
SJIS -> UTF-16に変換したLPBYTEの文字列をsqlite3_bind_text16で書き込み。
MultiByteToWideChar(CP_ACP, ... )で変換します
・文字列の読み出しもUTF-16
sqlite3_column_text16で読み出したものをLPBYTEにキャスト、
UTF-16 -> SJISに変換して文字列を取得。
WideCharToMultiByte(CP_ACP, ... )で変換します
何故かわかりませんが、
DBと文字列を共にUTF-8で扱うと化けたので、
文字列の方を16で扱っています・・何でだろう。。
更に、DBと文字列を共にUTF-16で扱うと、これもまた化けてしまいました
どこかで何か間違えたのだろうか。うーん。。
もう少し試してみる必要がありそうです。
ついでにハマった(引っかかった)ことは、
bind〜が「1」originなのに、
column〜が「0」originだということ。
絶妙なる引っかけ・・。初心者にはキビシイっす
VS2010, SQLite3, c++
「マルチバイト文字」を使用するプロジェクト環境です
・DBはUTF-8で作成
sqlite3_open_v2を使ってオープン。
・文字列の書き込みはUTF-16
SJIS -> UTF-16に変換したLPBYTEの文字列をsqlite3_bind_text16で書き込み。
MultiByteToWideChar(CP_ACP, ... )で変換します
・文字列の読み出しもUTF-16
sqlite3_column_text16で読み出したものをLPBYTEにキャスト、
UTF-16 -> SJISに変換して文字列を取得。
WideCharToMultiByte(CP_ACP, ... )で変換します
何故かわかりませんが、
DBと文字列を共にUTF-8で扱うと化けたので、
文字列の方を16で扱っています・・何でだろう。。
更に、DBと文字列を共にUTF-16で扱うと、これもまた化けてしまいました
どこかで何か間違えたのだろうか。うーん。。
もう少し試してみる必要がありそうです。
ついでにハマった(引っかかった)ことは、
bind〜が「1」originなのに、
column〜が「0」originだということ。
絶妙なる引っかけ・・。初心者にはキビシイっす
2011年10月21日金曜日
PostgreSQL interval
PreparedStatementでintervalを使う時にはまったのでメモ。
例えば、
now() + interval '10 days'
というようなことをしたい時、
「interval '10 days'」の部分を
1)
「?」にする。
PGInterval a = new PGInterval();
a.setDays(10);
PreparedStatementでsetObject(n, a);
2)
「cast (? as interval)」にする。
PreparedStatementでsetString(n, "10 days");
1か2のどちらかで出来ました。
例えば、
now() + interval '10 days'
というようなことをしたい時、
「interval '10 days'」の部分を
1)
「?」にする。
PGInterval a = new PGInterval();
a.setDays(10);
PreparedStatementでsetObject(n, a);
2)
「cast (? as interval)」にする。
PreparedStatementでsetString(n, "10 days");
1か2のどちらかで出来ました。
2011年8月6日土曜日
Lucene(環境構築)
超初心者がひとまずJavaで動かせれば充分、の段階まで書いています。
まずは環境の整備です。
・eclipse
HeliosのIDE Developers for Javaを入れます。
日本語化は、Pleiadesの本体のみをダウンロードのコーナーから落としました。
features, pluginsフォルダの中身をコピーします。
Macってフォルダが置き換わるのが怖いですね。
コピーのつもりがうっかり置き換えたことが何度もあります・・!
注意してフォルダの中身をコピーです。。
・Luceneを入れる
Apache Lucene Core 3.3をダウンロードします。
解凍してできたluceneのフォルダは、お好きな場所へ配置します。
・lucene-core-3.3.0.jar
これプロジェクトのjarに追加すると、
luceneのあれこれを利用できるようになります。
・日本語の形態素解析
今回は、「日本語の形態素解析をせよ」というお題を課せられておりますので、
日本語に対応した形態素解析ができるライブラリを追加します。
lucene-coreには、上記のようなものは含まれておりませんでした。
そこで「sen」というライブラリを使用する記事を多く見受けたのですが、
2011年真夏の今となっては、senは活動休止のようです。なんたる。
と思ったら、lucene-gosenというライブラリがありました。
http://code.google.com/p/lucene-gosen/
lucene-gosen-1.1.1-naist-chasen.jarをダウンロードしました。
ipadicの方と、naistの方とは、どちらがどう違うのか、まだ調べておりません。
そのうち調べましょう。。
上記のjarをプロジェクトに追加しました。
これでJapaneseAnalyzerが使えます
・N-Gram解析
形態素解析だけでなく、NGram解析も試してみます。
N-Gram解析をするためには、NGramTokenizerを使うらしい…のですが、
lucene-coreを追加しただけでは、見えていません。
lucene-3.3.0/contrib/analyzers/common/lucene-analyzers-3.3.0.jar
これを追加すると、ngram関係が使えるようになりました
環境の整備はここまでです。
ソースコードは、そのうち・・
まずは環境の整備です。
・eclipse
HeliosのIDE Developers for Javaを入れます。
日本語化は、Pleiadesの本体のみをダウンロードのコーナーから落としました。
features, pluginsフォルダの中身をコピーします。
Macってフォルダが置き換わるのが怖いですね。
コピーのつもりがうっかり置き換えたことが何度もあります・・!
注意してフォルダの中身をコピーです。。
・Luceneを入れる
Apache Lucene Core 3.3をダウンロードします。
解凍してできたluceneのフォルダは、お好きな場所へ配置します。
・lucene-core-3.3.0.jar
これプロジェクトのjarに追加すると、
luceneのあれこれを利用できるようになります。
・日本語の形態素解析
今回は、「日本語の形態素解析をせよ」というお題を課せられておりますので、
日本語に対応した形態素解析ができるライブラリを追加します。
lucene-coreには、上記のようなものは含まれておりませんでした。
そこで「sen」というライブラリを使用する記事を多く見受けたのですが、
2011年真夏の今となっては、senは活動休止のようです。なんたる。
と思ったら、lucene-gosenというライブラリがありました。
http://code.google.com/p/lucene-gosen/
lucene-gosen-1.1.1-naist-chasen.jarをダウンロードしました。
ipadicの方と、naistの方とは、どちらがどう違うのか、まだ調べておりません。
そのうち調べましょう。。
上記のjarをプロジェクトに追加しました。
これでJapaneseAnalyzerが使えます
・N-Gram解析
形態素解析だけでなく、NGram解析も試してみます。
N-Gram解析をするためには、NGramTokenizerを使うらしい…のですが、
lucene-coreを追加しただけでは、見えていません。
lucene-3.3.0/contrib/analyzers/common/lucene-analyzers-3.3.0.jar
これを追加すると、ngram関係が使えるようになりました
環境の整備はここまでです。
ソースコードは、そのうち・・
登録:
投稿 (Atom)