2001年03月15日(木) 暑い
■ [web] ApacheでCGI
何を調べたかを書いておかねば日々のメモの意味がないではないか。思い出してメモっておくのだ。
Apacheでcgi-binではない場所でCGIプログラムを起動できるようにしようとしていたのだ。そのためにすることは、
- まず「AddHandler cgi-script .cgi」を有効にするのだ。
- そしてDocumentRootの<Directory>の中で「AllowOverride Options」とするのだ。
- で、CGIスクリプトを置きたいディレクトリに「Options ExecCGI」と書いた.htaccessファイルを作っておくのだ。
以上。とりあえずこれでできた。
■ [java] Netscape Navigator4.7 のアプレットでHTTPのPOSTメソッドを使う方法
Javaは何を調べていたのか思い出せない。でも、今日分かったことがあるのだ。
それはNetscape Navigator4.7 のアプレットでHTTPのPOSTメソッドを使う方法なのだ。どーいう事かと言うと、
- 普通はhttp://…なるURLオブジェクトのopenConnection()でJava.net.HttpURLConnectionオブジェクトが返ってくるはずなのだ。
- でもNetscape4.7だとcom.netscape.URLConnection(違うかも)が返ってきてしまうのだ。そーするとsetRequestMethod()が呼べないのでPOSTメソッドを使うのにどうしたらいいのか困ってしまうのだ。
- で、どーすればいいかというと、setDoOutput()を使うのだ。これで書き込みを行うことを宣言して、OutputStreamに書き込んでInputStreamから読み込みを行えばPOSTメッソドを送信してくれるのだ。
http://java-house.etl.go.jp/ml/archive/j-h-b/004322.html#body が参考になる。
■ HotDocumentの印刷
HotDocumentで作成したエクセルファイルを印刷したのだ。章の扉の紙をいちいち手で挟み込まねばならなくてとても面倒なのだ。あーそれより何にもしないときちんと印刷されないのが酷いのだ。調節しないといけない。
2002年03月15日(金) 暑くなる日
■ 会社
- 10:40 30分遅刻。でもまあ元気。
- 17:20 SFA見積もりの打合せ、SFA移行、大黒さんたちと打合せ、グレムリンによるテスト、ときた。グレムリンは字を書いてばかりであまりテストにならない気がするぞ。
- 19:10 グレムリンでテストしてたら一時間半後に落ちた。原因は謎。今日はグレムリンかけながら帰るかなあ。
■ [mobile][service] J-スカイアクセス セキュアドネットワークサービス
Jフォン端末との通信をセキュアに保つサービス。サイボウズ ケータイ4の説明ページより。
■ [mobile] Mobile Technology Gateway
ドコモのモバイル製品紹介のページ。
■ テレビ/本
- JavaWorld。マルチスレッドの特集とか。
2004年03月15日(月)
■ [javascript] JavaScript関連
XP-jp MLで紹介されていたウェブページをメモ。
- JavaScriptによるオブジェクト指向プログラミング (リンク切れ)--> http://www.morijp.com/masarl/homepage3.nifty.com/masarl/article/js-oop.html
- オブジェクト指向プログラム言語としてのJavaScript
あとここではJavaScriptのリファレンスやスクリプトエディタ「Alpha」が公開されておりいい感じ。
■ [ims] 7 運動
運動不足である。解消のために、手ぶらで外を移動する際は必ず走る、ということを実践するとよいのではないか。荷物を持っていると走るの億劫だけれど、手ぶらなら走れるはず。移動時間も短縮でき一石二鳥だ。
■ やること
- 未処理分の経理処理をする
- 経理書類の印刷
2011年03月15日(火)
- 出掛けよう/寝ようというときに原発の調子が悪くなるので困る。
- うお、新たな地震きた。静岡で震度6強。関西も油断できないよ。
- 日曜日はセブンイレブンでお弁当、おにぎり、サンドイッチ、牛乳などを売っていた。数は少なかったけれど。でも、月曜日、火曜日は再び食料売っていない。
- トイレットペーパーも売ってない。節約しないと。職場のトイレットペーパーが補充できているのか心配。職場のを失敬する不届き者が現れるかもな。
2018年03月15日(木)
■ [c++] Boost.Testのデータドリブンテストケース
Boost.Testのdata-driven test casesを使ってみたのでメモ。Boost 1.65.1 と g++ 6.3 を使用。
ドキュメントの辿り方が分かりにくいのだけれど、上でリンクしたページの先頭にある次のリンクの先に詳しい説明がある。
- Datasets
- Declaring and registering test cases with datasets
- Operations on dataset
- Datasets generators
簡単なサンプル
#define BOOST_TEST_MODULE data driven test #include <boost/test/included/unit_test.hpp> #include <cmath> #include <boost/test/data/test_case.hpp> namespace bu = boost::unit_test; BOOST_AUTO_TEST_SUITE(suite, * bu::tolerance(1e-16)) BOOST_DATA_TEST_CASE( sqrt_test, bu::data::xrange(0.0, 1.0, 0.1), a) { const auto root = std::sqrt(a); BOOST_TEST(root * root == a); } BOOST_AUTO_TEST_SUITE_END()
- std::sqrt(a)の2乗がaに等しくなるかをテストしている。
- BOOST_DATA_TEST_CASE()の2番目の引数に「dataset」を与える。上ではxrange()を使って0.0~0.9までの10個の小数からなるdatasetを与えている。これにより、このテストケースは10回呼び出されることになる。
- datasetの各要素の値はBOOST_DATA_TEST_CASE()の3番目の引数に代入される。
上のプログラムを実行すると次のように出力される。
Running 10 test cases... data_test.cpp(17): error: in "suite/sqrt_test/_2": check root * root == a has failed [0.44721359549995793 * 0.44721359549995793 != 0.20000000000000001]. Relative difference exceeds tolerance [1.38778e-16 > 1e-16] Failure occurred in a following context: a = 0.20000000000000001; data_test.cpp(17): error: in "suite/sqrt_test/_3": check root * root == a has failed [0.54772255750516619 * 0.54772255750516619 != 0.30000000000000004]. Relative difference exceeds tolerance [1.85037e-16 > 1e-16] Failure occurred in a following context: a = 0.30000000000000004; data_test.cpp(17): error: in "suite/sqrt_test/_5": check root * root == a has failed [0.70710678118654757 * 0.70710678118654757 != 0.5]. Relative difference exceeds tolerance [2.22045e-16 > 1e-16] Failure occurred in a following context: a = 0.5; data_test.cpp(17): error: in "suite/sqrt_test/_6": check root * root == a has failed [0.7745966692414834 * 0.7745966692414834 != 0.59999999999999998]. Relative difference exceeds tolerance [1.85037e-16 > 1e-16] Failure occurred in a following context: a = 0.59999999999999998; data_test.cpp(17): error: in "suite/sqrt_test/_7": check root * root == a has failed [0.83666002653407556 * 0.83666002653407556 != 0.69999999999999996]. Relative difference exceeds tolerance [1.58603e-16 > 1e-16] Failure occurred in a following context: a = 0.69999999999999996; *** 5 failures are detected in the test module "data driven test"
誤差が生じるのでいくつかのテストは失敗している。
datasetを組み合わせる
datasetの組に対してjoinとzipとgridという操作をして新しいdatasetを生成できるようになっている。zipを使ったサンプルを示す。
#define BOOST_TEST_MODULE data driven test #include <boost/test/included/unit_test.hpp> #include <cmath> #include <boost/test/data/test_case.hpp> namespace bu = boost::unit_test; BOOST_AUTO_TEST_SUITE(suite, * bu::tolerance(1e-16)) BOOST_DATA_TEST_CASE( sqrt_test2, bu::data::xrange(0.0, 1.0, 0.1) ^ bu::data::make(2), a, b) { const auto root = std::sqrt(a); BOOST_TEST((root + b) * (root - b) == a - 4); } BOOST_AUTO_TEST_SUITE_END()
- BOOST_DATA_TEST_CASE()の2番目の引数で使っている演算子「^」がzip操作を表す。これにより { {0.0, 2}, {0.1, 2}, {0.2, 2}, ..., {0.9, 2} } というdatasetが作られる。
- datasetの各要素の1番目と2番目の値はそれぞれBOOST_DATA_TEST_CASE()の3番目と4番目の引数(aとb)に代入される。
datasetの組み合わせの組み合わせ
datasetに対する操作はネストさせることができるのだと思うけれど、少なくともzipした結果同士をjoinすると正しく動かないようで、チケットがあがっている。
手元の環境でチケットにあるコードを試すとsegmentation faultが発生してしまう。このチケットは現状で2か月放置されている。