torutkのブログ

ソフトウェア・エンジニアのブログ

2008-01-01から1年間の記事一覧

Linux上でSubversionをGUIで扱う

ファイル操作はコマンドラインでも十分ですが、差分/マージ作業はやはりGUI上で実施したいところです。 めぼしいLinux用のSubversionクライアント(GUI版) ざっと探すと出てきたのが以下のツールです。 No. ツール名称 最新バージョン 最新リリース日 ライ…

ツールばっかりでどうなっているんだ

バージョン管理ツール(CVSやらSubversionやら)に始まって、ビルドツール(ant, maven)、バグ管理ツール(bugzilla, mantisやら)、プロジェクト管理ツール(trac, redmineやら)など多種多様なソフトウェア開発用の管理ツールが出ています。さらに、テス…

テスト管理ツールTestlink

CppUnitを使用したC++のユニットテストコードに決まった書式でコメントを書いておき、あとでツールでテストの手順書や実施結果を起こせないかと、Doxygenあたりから調べていたときに見つけたテスト管理ツールTestlinkです。目的とは違っていますが、テスト作…

今年の夏以降に買った技術書籍のメモ

この夏以降に買った本を思い出せるものをリストアップします。インターネットショッピングのものは記録があるので後から見返すときは便利ですね。直接書店で買った本は何月だったかは思い出せません。職場に持っていって置きっぱなしにしている本がこのほか…

GCCで、__attribute__ にconstructor指定した関数内から他のライブラリを呼び出すとき

C++

Binary Hack本で記載されていたGCCの__attribute__を使ってconstructor指定した関数は、その実体を持つ動的リンクライブラリファイルをロードしたときに実行されます(main関数が呼ばれる前)。 namespace charlie { void init() __attribute__((constructor…

Java読書会(Effective Java第2版)

11/29(土)はJava読書会の日です。通算115回目、丸10周年です。洋書で読み始めたEffective Java 2nd Editionが、今週日本語訳の出版となり、今回から日本語で読むことになります。当日参加も歓迎です。 http://www.javareading.com/bof/また、訳者の柴田さ…

C++プログラマとしてのスキルを測る質問

C++

C++プログラマ採用試験で聞くとよい質問だそうです。 The Best Questions for Would-be C++ Programmers,Part 1 The Best Questions for Would-be C++ Programmers,Part 2 Part 1の10の質問をざっと日本語訳 クラスとは何ですか? C言語の構造体とC++言語の…

GCCの標準インクルードパス

C++

/usr/local/include 知らなかった。てっきり/usr/includeだとばかり。GNUコーディング規約によると、以下である。 includedir Cプリプロセッサ制御行 #include によりプログラムからインクルードされるヘッダファイルを置くディレクトリ. これは通常 /usr/lo…

yumの更新サイト複数アクセス時、同じ名前のパッケージは隠蔽される?

RHEL5/CentOS 5には標準でdoxygen-1.4.7が提供されています。しかし、UTF-8環境で使うには、UTF-8対応したdoxygen-1.5.2以降が欲しくなります。 そこで、doxygenソースをダウンロードし、RPMパッケージを作成して自分用yum更新サイトに置いたのですが、yumで…

Doxygenプラグイン

Eclipse上からDoxygenを使用するプラグイン eclox があります。Eclipse 3.3以上対応で、本日現在 ver.0.8.0が最新です。オンライン更新サイトおよびパッケージアーカイブのダウンロードの2つが用意されています。 雑感 Eclipse上からDoxygen設定ファイルをGU…

Boost 1.37.0のRPMパッケージ作成メモ

C++

11/3付けでBoost 1.37.0がリリースされました。今年に入って頻繁なバージョンアップが行われています。(1.35, 1.36, 1.37といずれも2008年)1.37.0のRPMパッケージ作成を行いました。CentOS 5ですが、GCC 4.x系の環境なら同じように出来るかと思います。RPM…

契約による設計(Design by Contract)の実装〜事後条件判定をBoost.Lambdaの遅延評価で実現

C++

d:id:torutk:20081013で検討したC++事後条件コードを、クロージャの概念が利用できるBoost.Lambdaライブラリを使って実装します。 実装イメージ 事後条件のイメージとしては、以下のコードのようにメソッドの最初(でなくてもよいが)にアサート文を記述して…

Eclipse CDTの日本語化言語パック(サードパーティ版)、うむむ

Eclipse 日本語化言語パック(サードパーティ版)が正式リリースされたようです。 http://sourceforge.jp/projects/nttdatagroup-oss-square/wiki/blanco_Framework%2Fnlpack.eclipse.ganymede インストール方法は書いてないのかな・・・。NTTデータはじめ大…

Java読書会BOF有志でWeb+DB Press誌Vol.47特集記事執筆

10月24日に発売予定のWeb+DB Press誌 Vol.47号の特集記事1「ネットワークプログラミングの基礎」の記事をJava読書会BOF有志で執筆しました。 ちょうど夏季連休と盆休みに調査・執筆していました。

Eclipse CDTでCppUnitプラグイン

CppUnitのプラグインがありました。既に作成したクラスに対してテストケースクラスの雛形を生成する機能があります。 ECUT(Eclipse C++ Unit Testing)プラグイン インストールメモ 上記URLからファイルをダウンロード(ECUT_M2.zip) ファイル(ECUT_M2.zip…

契約による設計(Design by Contract)の実装〜事後条件判定の改善

C++

d:id:torutk:20080914で契約による設計をC++言語で実装してみました。しかし、事後条件については、簡潔に書くのが難しいです。 事後条件のコード検討 ちょっとした名簿を例にコードを見ていきます。PersonListクラスとPersonクラスがあり、PersonListのadd…

cmakeツール最初の一歩

C++

UNIXでは、C/C++のソースコードをビルドするにはMakefileを書いてmakeツールを使うのが一般的です。しかし、Makefileを書くのは大変なので*1、もっと楽なツールを探すと出てくるものの一つがcmakeです*2。 cmakeのインストール(CentOS 5.2) # yum install …

契約による設計(Design by Contract)の実装

C++

契約による設計(Design by Contract)の実装を検討 - torutkのブログで契約による設計の実装を検討しました。今回は、検討に従って実際にC++でプログラムコードに表してみます。 事前条件 C言語標準マクロ assert を用いた実装 C言語の標準マクロassertを使…

契約による設計(Design by Contract)の実装を検討

C++

契約による設計では、責務を遂行する関数に対して事前条件、事後条件を定義し、クラスに対してクラス不変条件を定義します。これら条件を実行時に検証して違反が検出されればエラーを通知(伝播)することで関数の仕様と実行結果が明確になります。しかし、…

基底クラスのメンバ関数のオーバーロードを派生クラスで定義すると‥

C++

C++言語における名前隠ぺいは、関数の場合引き数に関係なく名前の一致のみで発生するため、派生クラスの定義に基底クラスのメンバー関数のオーバーロードを記述すると、基底クラスの同名関数が見つからないコンパイルエラーが発生します。(「Effective C++…

GCCの関数名展開マクロ__PRETTY_FUNCTION__

C++

GCCで提供される、関数名に展開されるマクロなのですが、__FUNCTION__と違い、引き数、戻り値、そしてネームスペースまで含めて展開されます。優れもの! logbook::Person::Person(std::string) しかし引き数にvectorがあるとものすごい展開がなされ‥。ログ…

Eclipse C++ 3.4がLinux(CentOS 5.2)で起動せず

CentOS 5.2でEclipse C++ 3.4を起動し、新しいワークスペースを指定すると、ウィンドウがでなかったり小さな無地のダイアログが表示されました。Eclipseのログは、workspace/.metadata/.logに吐かれます。中を見ると、 !MESSAGE アプリケーション・エラー !S…

マルチホームでのUDP送信口

JavaでUDPマルチキャストプログラムの送信を行ったところ、LAN上の別PCで受信できず、WiresharkでのパケットキャプチャでもUDPパケットが確認できませんでした。このPC、VMware Playerをインストールしていたため、仮想的にLANインタフェースが複数存在する…

CentOS 4から5へのアップデートメモ

CentOS 4.5が動いているマシンを、CentOS 5.2にアップデートしました。yumでのupgradeではうまくいかないとの記述をインターネット上で目にしていたので、CD-Rからアップデート・インストールしました。 SELinuxとSamba アップデート後、SELinuxが有効になっ…

先月CodeGear DevCamp#9でC++ネタでしゃべってきました

C++

ちょっと古いですが、先月CodeGear DevCamp(第9回)でC++テクニカルセッション「暴れん坊のC ++をどう押さえて使いこなすのか」のスピーカをしました。以下URLで資料公開されています。 http://dn.codegear.com/jp/article/38299Q&Aで質問あがらなかったの…

7月のJava読書会はハンズオンJavaネットワークプログラミング

Java読書会活動のご案内です。 http://www.javareading.com/bof/ 今年で10周年を迎えるJava読書会では、10周年記念イベントをいくつか計画・実行しています。7月のJava読書会では10周年記念イベント第2弾として、現在読んでいる本にちなんでIPv6マルチキャス…

RubyでIPv6トライ

挫折しました。障壁高し。 障壁1)RubyはIPv6に対応しているのか ドキュメント化されている箇所を見出せないでいます。 Ruby開発者MLのアーカイブらしきところの議論で、Windows版については普通に入手できるRubyバイナリパッケージはIPv6非対応らしいことが…

Tracのインストール(Linux編)

EclipseのMylynを使うと、コードに対してレビュー結果などのメモが付けられそうだなと調べてみると、複数人で共有するためにはTracなどのバグ管理システム(Bug Tracking System)を使う必要があるようです。そこで、情報も多そうなTracを使おうと、まずはLi…

Eclipseの日本語化事情

昨日CodeGearのDevCampでいがぴょんこと伊賀敏樹さんがEclipse日本語化についてのお話しをしていました。Eclipse 3.3での日本語化の状況は混乱状態であったので、セッションを聞いて状況について整理することができました。以下に、利用者側の観点でEclipse…

Linux版Eclipse CDTと日本語化

日本語化パック、日本語化プラグイン Eclipse 3.3(Europa)は日本語化の言語パックがリリースされず、Pleiadesプラグインによる日本語化の手段を取っていました。PleiadesはAOPによるオン・ザ・フライ翻訳を行っているらしく、起動に時間がかかるほか動作が…