メモの日々


2003年01月06日(月) 佐川急便、登記簿を京都府議に偽造される

[life] 休み

今日から仕事始めだが会社を休んだ。夕方警察署へ行き新しい免許証を受け取った。回りの人は皆免許証更新と同じ日に新免許証を貰えると言っているがそんなはずはないのだ。おれは毎回後日に取りに行っています。免許証はそんなにすぐには作れないのだ。

[life] 支払い

JavaWorld2月号を今頃購入。1490円。本屋には他にも色々本を売っていて欲しくなったがぐっと我慢。どうせ読む時間などないのだ。クリーニング屋へスーツの上下とセーター一枚を提出。500円の割引券を使って1223円。NHKの集金人が来たので支払い。2ヶ月分で2790円。

[life][退職] 今後の進路(2)

上席執行役員と人事部長へメイルをしたため送信。あまりうまく説明できなかったがしょうがない。半分やけくそなのだ。


2004年01月06日(火)

[unix][howto] カレントディレクトリから再帰的に辿って文字列の検索をする

定番だけれどすぐ忘れるのでメモしておく。find を覚えられないんだよな。

grep -r 文字列 .

が一番簡単。ただ、検索対象のファイルを絞り込めないのでカレント以下にファイルがたくさんある場合は不便。また、-r オプションがサポートされていない場合もある。

find . -name '*.c' -print | xargs grep 文字列

のようにすれば検索対象のファイルを絞り込める。find で検索対象を絞り込み、その結果を xargs を使って grep に渡している。手元の環境では「-print」を書かなくても動いた。

find . -name '*.c' -exec grep 文字列 {} \; -print

のようにすれば xargs がない場合でもOK。が、「{} \;」のようなおまじないが必要になるので覚えにくい。この場合は「-print」を書かないとだめ(ファイル名が表示されない。grepの実装に依存するのだろうが)。

[c] …

プログラムが動かなくて ずーーーーーーーーーーーーーーーーーーーーーっと調べていた。結局、

malloc(size);

とすべき所を

malloc(sizeof size);

と書き間違えていたのが原因だった。何度も何度も何度もソースを見直したのに何故に気付かないのだ。もーーー。

何を教訓とすればいいのだろうか。gdbでステップ実行しているときに気付いたので、はまったらステップ実行せよ、ということか。普通だ。

[c][howto] gdb

せっかくなのでこれまたすぐ忘れるgdbの使い方をメモ。

gdb 実行プログラム

でgdb起動。起動したら

(gdb) break 関数名

でブレイクポイントを設定。

(gdb) run 引数

でプログラム開始。ブレイクポイントを設定してあればそこで止まる。

(gdb) step

でステップ実行。これは関数の中に入っていく。関数の中に入りたくないときは

(gdb) next

とする。

(gdb) print 変数名

で変数の内容を表示できる。

(gdb) list

で周辺のソースを表示できる。

(gdb) continue

で次のブレークポイントまで一気に進む。

(gdb) quit

でgdb終了。

とりあえずこれくらいしか使わなかった。

生活

  • おや、Googleのデザインが変わっている。
本日のツッコミ(全2件) [ツッコミを入れる]

tito [「grep 文字列 aFile」 と 「grep -h 文字列 someFiles」 と 「grep 文字列 a..]

小川 [/dev/null を書く理由はファイル名を表示させるためなのですね。なるほど。]


2005年01月06日(木)

  • 5日から仕事している。コーディング中。
  • パケット内にゴミデータが入ってしまう問題を解決するのに莫大な時間を掛けてしまった。原因は、パケットを表す構造体のフォーマットに誤りがあったことだった。
  • 家のPCのFirefoxはタブを開くのに時間が掛かり過ぎイライラする。初めからこうだったのか最近なったのかがはっきりしない。TBEのせいかなあ。

[link] 「A.P.C.」

NDO::Weblogより。A.P.C.の服はウェブで買えるみたいなのでメモ。でも高いなあ。過去の服をサープラスとして安くして売っているようだ。

[javascript] 「Effective JavaScript」 (Dynamic Scripting)

勉強になりそう。

Effective JavaScript は JScript 、JavaScript 、ECMAScript による効果的なスクリプトの構築方法を解説するものです

オレンジニュースより。このサイト自体は去年もメモっていた。

[tdiary] ツッコミspam来た (3)

ムキー、久しぶりにやられた。とはいえ3件のみ。Anne、Sarah、Henryより。去年きた4件のうちの3件と同じ日付にツッコまれたので同一犯か。とりあえず当該ツッコミを隠した。

[java] Javaコントロールパネルが開かない

家のWindows XPにて開かない。WindowsのコントロールパネルにあるJavaのアイコンをダブルクリックしても何も起こらない。タスクマネージャを見ていると、javaw.exeが一瞬現れてすぐ消えてしまう。なんでや。J2SEのバージョンは

C:\>java -version
java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
Java HotSpot(TM) Client VM (build 1.5.0-b64, mixed mode, sharing)

だ。ちと古いか。

(追記)

環境変数JAVA_HOMEの値が誤っていた。PATHも古いJDKを指していたので、これらを修正したらコントロールパネル開いた。

やること

  • プリンタ処分
  • リンク元のスリム化
  • ナンバーアナウンス解約
  • tDiaryバージョンアップ
  • FSWikiバージョンアップ
  • 2004年分決算

2006年01月06日(金)

[security] 「 「Webシステム セキュリティ要求仕様(RFP)」編 β版」 (日本ネットワークセキュリティ協会)

ちょっとメモ。

本ドキュメントは、発注者(ユーザー)に対しては、RFP(提案依頼書)に盛り込むセキュリティ対策のサンプルとして参照していただけることを目指している。

受注者(ソフトウェアベンダー)にとっては、Webアプリケーションのセキュリティに関する要件を要件定義・基本設計の段階から盛り込んでいただくことにより、セキュリティに関する要件を「機能要件」として算出していただくことの裏付けの資料となるはずだ。

やること

  • 税務署
  • 歯科には保険証

2010年01月06日(水)

  • 今日からちゃんとした仕事の始まり。
  • メインの仕事は再びC++に。

[c++] Ubuntu 9.10 での Boost 1.34.1 のコンパイルエラーとその対処

訳あってBoost 1.34 を使う必要がある(今の最新は1.41.0)。今まではUbuntuのパッケージにBoostのバージョン1.34があってそれを使っていたのだけれど、今日Ubuntuを9.10にアップグレードしたらもはやサポート外ということで古いバージョンのBoostは削除されてしまった(削除に同意したのは自分の判断)。

仕方ないので、1.34.1のソースをダウンロードして自分でコンパイルしてみた。

コンパイル手順

ダウンロードした boost_1_34_1.tar.bz2 を展開するとconfigureスクリプトがあるので、これを使えばよさそう。全てをビルドする必要はなかったので、

% ./configure --prefix=/home/kenichi/boost1.34 --with-libraries=test,thread,program_options

のようにしてtest, thread, program_optionsの3つだけをビルドするようにした。これでMakefileが作られるので、

% make

を実行すればよい。が、コンパイルエラーがたくさん出た。

コンパイルエラーの内容

エラーはたくさんあったが、よく見ると2種類のエラーしかない模様。ひとつは

error: 'CHAR_BIT' was not declared in this scope

というもの。このエラーは boost/test/test_tools.hpp だけで起きている。

もうひとつのエラーは

error: missing binary operator before token "("

というもの。これは boost/mpl/ 配下で発生。当該個所のソースは全て

#elif BOOST_PP_ITERATION_DEPTH() == 1

といったマクロ絡みの所。

コンパイルエラーへの対処

検索すると、後者のエラーはBoostのバグのようで、次のチケットがヒットした。

このチケットにあるようにエラー個所の #elif 部分を修正したらコンパイルできるようになった。

前者のエラーは、boost/test/test_tools.hpp に <climits> をincludeする修正をしたら直った。

以下に自分で加えた差分をメモ。

diff -u -r boost/mpl/apply.hpp ../boost_1_34_1_kenichi/boost/mpl/apply.hpp
--- boost/mpl/apply.hpp 2004-09-03 00:40:41.000000000 +0900
+++ ../boost_1_34_1_kenichi/boost/mpl/apply.hpp 2010-01-06 17:37:27.000000000 +0900
@@ -135,7 +135,8 @@

 ///// iteration, depth == 1

-#elif BOOST_PP_ITERATION_DEPTH() == 1
+#else
+#if BOOST_PP_ITERATION_DEPTH() == 1

 #   define i_ BOOST_PP_FRAME_ITERATION(1)

@@ -222,4 +223,5 @@

 #   undef i_

+#endif
 #endif // BOOST_PP_IS_ITERATING
diff -u -r boost/mpl/apply_wrap.hpp ../boost_1_34_1_kenichi/boost/mpl/apply_wrap.hpp
--- boost/mpl/apply_wrap.hpp    2004-09-04 00:56:55.000000000 +0900
+++ ../boost_1_34_1_kenichi/boost/mpl/apply_wrap.hpp    2010-01-06 17:35:47.000000000 +0900
@@ -78,7 +78,8 @@

 ///// iteration, depth == 1

-#elif BOOST_PP_ITERATION_DEPTH() == 1
+#else
+#if BOOST_PP_ITERATION_DEPTH() == 1

 #   define i_ BOOST_PP_FRAME_ITERATION(1)

@@ -197,4 +198,5 @@

 #   undef j_

+#endif
 #endif // BOOST_PP_IS_ITERATING
diff -u -r boost/mpl/aux_/full_lambda.hpp ../boost_1_34_1_kenichi/boost/mpl/aux_/full_lambda.hpp
--- boost/mpl/aux_/full_lambda.hpp      2004-09-04 10:10:19.000000000 +0900
+++ ../boost_1_34_1_kenichi/boost/mpl/aux_/full_lambda.hpp      2010-01-06 17:37:02.000000000 +0900
@@ -227,7 +227,8 @@

 ///// iteration, depth == 1

-#elif BOOST_PP_ITERATION_DEPTH() == 1
+#else
+#if BOOST_PP_ITERATION_DEPTH() == 1
 #define i_ BOOST_PP_FRAME_ITERATION(1)

 #if i_ > 0
@@ -347,4 +348,5 @@
 };

 #undef i_
+#endif
 #endif // BOOST_PP_IS_ITERATING
diff -u -r boost/mpl/bind.hpp ../boost_1_34_1_kenichi/boost/mpl/bind.hpp
--- boost/mpl/bind.hpp  2004-10-26 23:51:04.000000000 +0900
+++ ../boost_1_34_1_kenichi/boost/mpl/bind.hpp  2010-01-06 17:36:26.000000000 +0900
@@ -361,7 +361,8 @@

 ///// iteration, depth == 1

-#elif BOOST_PP_ITERATION_DEPTH() == 1
+#else
+#if BOOST_PP_ITERATION_DEPTH() == 1

 #   define i_ BOOST_PP_FRAME_ITERATION(1)

@@ -544,4 +545,5 @@
 #   endif
 #   undef j_

+#endif
 #endif // BOOST_PP_IS_ITERATING
diff -u -r boost/test/test_tools.hpp ../boost_1_34_1_kenichi/boost/test/test_tools.hpp
--- boost/test/test_tools.hpp   2007-02-23 02:57:29.000000000 +0900
+++ ../boost_1_34_1_kenichi/boost/test/test_tools.hpp   2010-01-06 17:42:16.000000000 +0900
@@ -42,6 +42,7 @@
 #include <boost/mpl/or.hpp>

 // STL
+#include <climits>
 #include <cstddef>          // for std::size_t
 #include <iosfwd>

2011年01月06日(木)

[life] ドコモの卓上ホルダを購入

一昨日買えなかった卓上ホルダを、別のドコモショップに行ったら買えた。大きな店で、お茶を出してもらえた。

[unix][ruby] RubyのtrunkのコンパイルにはAutoconf 2.60以上が必要

CentOS 4.8のRubyは1.8.1で悲しいので、trunkをコンパイルしてみようと思った。

gitを使うことにして、レポジトリガイドからリンクされているNon-committer’s howto to join our developmentを参考にcloneを作成した。README.jaにある

  • コンパイル・インストール

以下の手順で行ってください.

  1. もしconfigureファイルが見つからない、もしくはconfigure.inより古いようなら、autoconfを実行して新しくconfigureを生成する

に従ってautoconfを実行したら、

% autoconf
configure.in:6: error: Autoconf version 2.60 or higher is required
configure.in:6: the top level
autom4te: /usr/bin/m4 failed with exit status: 63

というエラーになった。[ruby-dev:41858]によると

autoconfを実行する必要があるのは、svn(かgit)で最新を追いかける人だけです。そういう人は当然autoconfも最新を用意できることを前提にします。でなければsnapshotのtarballを使ってください。

というポリシーのようだ。

[unix] Autoconf 2.68のコンパイルにはM4 1.4.6以上が必要

仕方ないのでAutoconfの最新版2.68をダウンロードしてconfigureを実行したら、

checking for GNU M4 that supports accurate traces... configure: error: no acceptable m4 could be found in $PATH.
GNU M4 1.4.6 or later is required; 1.4.14 is recommended

というエラーになってしまった。M4 1.4.6以上が必要とのこと。CentOS 4.8だとM4のバージョンは1.4.1だった。

[ruby] RubyのtrunkのコンパイルにはRubyが必要

M4 1.4.15は簡単にコンパイルできた。それによりAutoconf 2.68もコンパイル完了。Rubyのディレクトリでautoconfを実行してconfigureスクリプトも生成でき、それを使ってMakefileも作れた。んが、makeを実行すると

executable host ruby is required. use --with-baseruby option.

というエラーに。[ruby-list:45420]によると

|> 具体的には、ruby 1.9では、ruby自体をビルドするためには、既に
|> 動作しているrubyがインストールされていることが必要です。
|これって、Ruby 1.9ではプラットフォームを問わずにそうなのですか?

svnからチェックアウトした状態からコンパイルするためには必要
です。リリースされたパッケージにはrubyを使って生成された必要
なファイルが同梱されますから、そちらを使う場合には不要です。

とのこと。

やること

  • 定期券