メモの日々


2001年03月12日(月) totoはずれ

全然だめ。まあ気長にやりましょう。

セレス小林がガメスにKO勝ち。

マラソンは松尾さんが優勝。3戦3勝だそうです。

[dev] C++のリファレンス

テンプレートはなんとなく分かった。リファレンスが馴染みなくて不安。今見てるソースがこうなってるのだけど、これってちゃんと動くのか?dmをreturnした後ですぐにdmが消えてしまうように思うが。

m_dbl& sqrt(m_dbl& A)
{
  m_dbl dm(A.rows, A.cols, 0.0);
   …
  return dm;
}

上のソースは予想通りおかしいようだ。修正した。

perlも使った。謎だらけ。

[link] 私家版fj.soc.law外伝

fjでよく見る佐々木将人@函館さんによる法学講座


2002年03月12日(火) 一番乗り

会社

  • 7:30 昨日は23時に就寝。早く寝ると早く起きれる。早起き生活。
  • なんだおれ昨日はメイル読まなかったみたい。すごいたまってる。まいったなあ。
  • 折りたたみ式CLIE。Sonyはすごいなあ。
  • 17:10 各リソースの件数をDBヘッダではなくリソースとして持つことで、名前リソースの分離はできたように思える。バイナリのサイズは10KBくらいだけ小さくなった。今全体のサイズは50KBくらい。

[FYI] Super BOF at Sun Tech Days

豪華な面子だ。JavaHouse Brewersより。3/13か...

テレビ/本

  • 日経コンピュータ続き。
  • 少年ジャンプ立ち読み。サスケの攻撃効いてた。で、やっと本筋始まりそう。
  • スピリッツ立ち読み。打ち合いの続き。時雄ダウンか?

2003年03月12日(水) タマちゃんのことを想う会による捕獲作戦失敗

会社

  • (12:00)出社。一週間ぶり。工事中のJR渋谷駅が明るく綺麗になっていた。
  • 日経コンピュータ3.10号を読む。MSKKがピンチらしい。ほんまかいな。
  • なんと!今日はベルトをし忘れていることに気付いた。こんなこと初めて。朝(と言っても11時頃だが)慌てていたためだ。ズボンがずり落ちてくる。困った。
  • 皆で兒玉くんの誕生日祝いシフォンケーキを食す。
  • 兒玉くんのためにWineのプログラムが動くようにしてあげた。わざわざビルドまでしてあげたぞ。
  • PC内のデータをCDROMに焼く。これで思い残すことはないかしら。
  • 浅海さんから200円残っているSuicaを500円で買った。使いこなせるか不安だ。
  • 要る物を持ち帰り要らない物を捨てているが全然はかどらない。
  • (19:50)退出。

[book] ソフトウェア職人気質(ピート・マクブリーン)

ソフトウェア職人気質―人を育て、システム開発を成功へと導くための重要キーワード (Professional Computing Series)(ピート マクブリーン/McBreen Pete/村上 雅章) 読了。でも後半は超斜め読み。ソフトウェア開発には工学というメタファより職人気質というメタファの方がマッチするという主張には同意するが、同じ内容が繰り返されているだけな気がして後半飽きてしまった。こういう本を最後までちゃんと読めないのはおれの駄目なところだ。

[life] ゲームしたい

PC買ってからほとんどゲームしていないのだけれど、ゲームレビューのウェブサイトを見ていたらゲームしたくなってきてしまった。ドラゴンクエスト4とファイナルファンタジー4が面白そうでやりたい。やりたいやりたいやりたい。旅より断然ゲームに惹かれる。

[book] 趣味は読書。(斎藤美奈子)

趣味は読書。(斎藤 美奈子) 読んでいないが読みたくなったのでメモ。梅田望夫さんのblogより(リンクうまく繋がっていないかも)

[link] ホワイトデーのためのプロトコル(個人的観察日記)

プロトコルの勉強になります。お笑いパソコン日誌より。

[link] コンピュータ偉人伝

偉人達の解説がある。ASIPの徒然なるままにより。しかしもう更新されていないようだ。

[link] プログラマの心の健康(結城浩さん)

読んだ。プログラマ以外にもお勧め。自分が「むしょうに腹が立つあいつ」にそっくりだとは思わないけど...。そっくりなのか?

[web] MakeWeb

ついでにメモ。「テキストをXHTMLに変換するPerlスクリプト」だそうです。

SOCKS string format vulnerability in Ethereal 0.9.9(セキュリティホールmemo)

Etherealにセキュリティホール。なんだよ、3日前にインストールしたばかりなのに。次回起動時の直前にバージョンアップすることにしよ。

[windows] コラム:アプリケーションのインストール時に何が起きているか?(@IT)

インストーラの説明ってあまり無い気がするのでメモ。

やること

  • tDiary1.5.3インストール
  • 携帯&PHS&ThinkPadを返す
  • 退職後の手続きをまとめる
  • アントレを返す
  • シンナーを買う→ドアの横の落書きを消す

2004年03月12日(金)

[web][javascript] Scripts (MetaGraphic Cell)

ECMAScriptやDOMのドキュメントの翻訳がある。羊堂本舗より。

[dev] XUL Applications (outsider reflex)

ちとXUL使ってみたくなったのでメモ。Tipsとかある。

[java] JDK1.4.2の正規表現おかしいみたい (2)

1.4.2_04がリリースされている。以前書いた正規表現処理のおかしい所をチェックしてみたが、ちゃんと直っているようだ。

[fs] 神奈川のエントリーリーグで時価総額6億2140万からはじまり

やっとメンバー決まった。柏とFC東京は勝つだろうと考えた。偏りすぎかもなあ。

GK南 雄太2300万大分は点取れないはず
DF鈴木 秀人磐田5000万好きな選手なので
DF金沢 浄F東京4000万昨シーズンの勢いを買った
DF永田 充1000万期待の若手
DFジャーンF東京4000万思っていたより若かった
MF藤田 俊哉(C)磐田8000万高いけど、獲得したい欲望が勝った
MF森島 寛晃C大阪5200万点をとってくれそうだから
MF宮沢 正史F東京1700万FC東京の選手使っておかないと後悔すると思ったから
MFドゥドゥ4000万前評判を信じて
FW玉田 圭司1300万もっと更に成長しろー
FWルーカスF東京3600万ちょっとギャンブルかも

やること

  • 未処理分の経理処理をする
  • 経理書類の印刷

2006年03月12日(日)

[dev] 「機能外要求とISO9126 機能外要求抽出のための Tips とパターン」 (オブジェクトの広場)

ISO9126を機能外要求抽出に利用するという話みたい。oosquare-mlより。

ISO9126 は、ソフトウェアの品質を表す特性を定めた国際規格です。品質を表す特性を品質特性と呼び、6 つの品質特性に分類され、品質特性はさらに 27 の副特性に分類されています(図 3 )。 ISO9126 は作成されたソフトウェアの品質を評価する目的だけでなく、作成前にソフトウェアの機能要求や機能外要求を定義するのにも使えます (ISO9126-1 の序文にも記されています)。この ISO9126 の分類を使って、ソフトウェアに要求されている機能外要求がないか照らし合わせていくと、漠然と探し当てるよりも格段に楽に機能外要求を網羅的に確認できる便利なものです。

[dev][c] 「いろいろなプロファイラ。」 (更新履歴兼雑記)

前に見たときはメモしなかったんだけどやっぱりメモ。

gprof、google-perftools、sysprof、OProfileというのが簡単に紹介されている。

[life][service] USEN光が来る(2)

光ファイバが来たらADSLは使えなくなるのだと思っていたのだが、説明を聞くとUSENと契約しない人は今のADSLを使い続けられるとのこと。

USENは確かに安いんだけど(多分500円/月くらい安くなる)、ADSL解約したりプロバイダのコースを変えたりルータ買ったり、諸々の作業が面倒なので契約しなかった。

[service] Asahiネットのネットニュースサービスがずっと使えなかった

去年の年末くらいから。ニュースサーバには接続できるんだけど、新着記事が1つもない状態がずっと続いていた。

が、今日試したら新着記事がガーっとダウンロードされた。会員サポートのページ

発生日時復旧日時障害内容
12/192/28 20:35news2ならびにnews3.asahi-net.or.jpに新規記事が投稿されない場合がありました

のような告知があったのでこれかな。「新規記事が投稿されない場合がありました」ってのは少し違うと思うけど。復旧に随分時間かかってるな。

[windows] エラー10005 (2)

イベントビューアを見ると5分おきにID10005のエラーが記録されていた。なんだろうと思って検索してみたら2年前の自分の日記がヒットした。2年以上の間、5分間隔でエラーが出続けていたようだ。

イベントログの説明欄にあるリンクをクリックするとこのエラーの説明ページが表示され、そこにCDOSYS Tries to Start the IIS Admin Serviceというサポート技術情報へのリンクがあった(日本語訳はCDOSYS は、 IIS Admin サービスを起動しようとします。)。このサポート技術情報に、

IIS Admin service が停止、または IIS Admin service オフなのを持っているコンピュータで CDOSYS を使用すると、このサービスを開始する試行が確認できます。 サービスが停止する場合、 CDOSYS コードが実行されると、サービスが開始されます。 サービスがオフな場合、エラーがアプリケーション イベント ログに出力されています。

(略)

どちらの場合もメールは、正常に送信されます。

とあった。

「正常に送信されます」ですと?エラーになっているのだからとあまり気にしないできたが、エラーログが出ても処理が失敗しているとは限らないらしい。

試しにこのサポート技術情報にあるサンプルスクリプトを実行してみたら、確かにエラーログが残るがメイルは送信できた。

もしやおれのPCから5分間隔でメイルが送信され続けているのでは、と心配になり、Etherealをインストールしてパケットを監視してみた。結果、不審な送信パケットは観測されなかった。一安心。

いったい何が起こっているのか。結局2年前と同じ結論しか出せない。「誰かが5分おきにIISの起動を試みているようだが誰だ?」

で、IISなんか使っていないので、アンインストールすることにした。これでエラーログは記録されなくなった。

やること

  • カレンダーを買う
  • ブラシ
  • トイレットペーパー

2011年03月12日(土)

  • 福島第1原発1号機で爆発。爆発の映像は日本テレビでしか流れない。日テレは視聴率稼ぎそう。
  • 爆発の原因などは不明。情報が出てこなくなっている。
  • 18時半頃セブンイレブンに行ったら食料はほぼ売り切れ。1つだけ残っていた冷凍餃子などを買って帰る。明日には回復してくれるのだろうか。
  • テレビはどのチャンネルも報道番組を続けているが、TOKYO MXだけは通常番組を放送しているようだ。

2012年03月12日(月)

[java] JenkinsにNetBeansのbuild.xml用のJUnitのjarファイルを指定する

NetBeansがプロジェクト用に生成するbuild.xmlのtestターゲットをJenkinsで実行しようとしたら、JUnitのクラスを見つけられなくてエラーになってしまった。NetBeansのバージョンは7.0.1(ちょっと古い)だけど、build.xmlを生成したのはもっと前のバージョンかもしれない。

検索すると ANT_HOME/lib にjunit.jarを置けばうまくいきそうなんだけど、手元ではこうしても結果は変わらなかった。

build.xmlがimportしているbuild-impl.xmlを一生懸命読んだ所、nbproject/project.properties ファイル内で libs.junit_4.classpath というプロパティをテスト時のクラスパスに設定していることが分かった。

なので、Jenkinsのジョブの設定画面の「ビルド」の「Antの呼び出し」の「高度な設定」の「プロパティ」欄に「libs.junit_4.classpath=junit.jarのフルパス」のように書いたらうまくいくようになった。

[java] NetBeansのbuild.xmlを使うとテスト失敗時にJenkinsの結果が赤になる

Jenkins上でJUnitが動くようになったけど、テストが1つでも失敗すると結果がfailed(赤)になってしまう。このケースではunstable(黄)になって欲しい。再びbuild-impl.xmlを読む。やれやれ。

testターゲットでは、j2seproject3:junit というタスクが使われていていた。このタスクの実体は、同ファイルの-init-macrodef-junitターゲットに定義されている。該当箇所の最初だけ引用:

    <target name="-init-macrodef-junit">
        <macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
            <attribute default="${includes}" name="includes"/>
            <attribute default="${excludes}" name="excludes"/>
            <attribute default="**" name="testincludes"/>
            <sequential>
                <property name="junit.forkmode" value="perTest"/>
                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">

最後の行の「errorproperty="tests.failed" failureproperty="tests.failed" 」で、テストがエラーまたは失敗するとtests.failedというプロパティがtrueになるようにしているようだ。エラーと失敗を区別しないのか。

そして、別の箇所に

    <target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run">
        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
    </target>

とあって、tests.faildがtrueだとfailタスクでAntをエラー終了させていた。この部分を見ると、ignore.failing.testsというプロパティがtrueの場合はfailタスクが動かないようなので、上のlibs.junit_4.classpathと同じようにしてJenkinsの設定に

ignore.failing.tests=true

を追記したら、テストが失敗したときに赤ではなく黄色になるようにできた。


2013年03月12日(火)

  • 日曜日の14時頃、関東地方は突然黄色い塵のようなもので覆われた。煙霧なる気象現象とのこと。黄色かったので黄砂が疑われたが、そうではないとの報道。よくわからない。

[c][c++] constとポインタ

基本的なことだけど、constとポインタの関係はすぐ忘れるのでメモしておく。

例えば、

const int* const** const a = 0;

と宣言された変数aは何がconstで何がconstでないのか。

重要なのは、ポインタ自体がconstになるのは*の直後にconstがある場合のみ、ということかなあ。C++ランゲージクイックリファレンスの「2.6.2 宣言子」の節に次のようにある。

ポインタは、先頭のアスタリスク(*)、オプションのcv修飾子、オブジェクト名、オプションの初期化子の順で宣言される。

で、上の例の場合だけれど、右から見ていくのだろうなあ。まず一番右の*の直前で分けて、

(const int* const*)(* const a = 0;)

と考える。aは(const int* const*)へのconstポインタである、となる。つまり、

  • aはconst。(aの値自体は変更できない。)
  • (*a)の型は (const int* const*)。

同じことを繰り返すと、次は

(const int* const)(*)

だから、

  • (*a)はconstではない。
  • (**a)の型は (const int* const)。

となって、更に、

  • (**a)はconst。
  • (***a)の型は (const int)。

となる。(***a)はconstね。これでおしまい。


2016年03月12日(土)

[c++] C++で非復元抽出

集合からN個の要素をランダムに取り出して部分集合を作りたい。現状ではC++の標準ライブラリにはそのような関数が無いみたい。Boostにも見当たらない。

<experimental/algorithm>というヘッダがあればstd::experimental::sample()が使え、GCC 5やClangだと使えそう。が、我が環境のGCC 4.8では使えない。

で、GNUのlibstdc++にはSGI Extensionsというライブラリが含まれていて、<ext/algorithm>をインクルードすると __gnu_cxx::random_sample(), __gnu_cxx::random_sample_n() という関数を使えるようになる。使い方はSGIのサイトのマニュアルで分かる。

random_sample()は抽出元コンテナ内での順番を維持しないが、random_sample_n()は維持する。それぞれ、Knuthの"Algorithm R"、"Algorithm S"というアルゴリズムを使っているみたい。

#include <iostream>
#include <numeric>
#include <vector>
#include <ext/algorithm>

int main() {
  std::vector<int> src(20);
  std::iota(src.begin(), src.end(), 0);

  std::vector<int> dst1(10);
  __gnu_cxx::random_sample(src.begin(), src.end(), dst1.begin(), dst1.end());

  std::vector<int> dst2(10);
  __gnu_cxx::random_sample_n(src.begin(), src.end(), dst2.begin(), dst2.size());

  for (auto v : dst1) std::cout << v << " ";
  std::cout << std::endl;
  for (auto v : dst2) std::cout << v << " ";
  std::cout << std::endl;
}
0 19 18 16 4 13 10 7 14 9
0 3 4 5 8 9 10 13 15 19

ライブラリを使わず自分で実装する場合は

が参考になる。