7/18/2011

読書について

どうもJudaです。
つらつらと

読書をしながら線を引いたり、
ノートを取ったり、
最近は読むという行為から一歩踏み込んで、
能動的に取り組んでいる。
しかしこの行為をすればするほど、
まとめるという行為が如何に難しいのかが、
明瞭になってくる。

まとめるために能動的に取り組んでいるのではないが、
ノートの分量は増えるし、書き込みも増えてくる。
そうなるとやはり視認性が落ちるし、網羅性も悪くなる。
だんだん頭の中が混線しているような感覚に囚われる。
そういう感覚を契機にして、ふっと、まとめようと思う。
しかし此処に至って、自分が如何に濃度の低い読書をしているのか
突きつけられる。うまくまとめられないのだ。

まとめようにもそれらをまとめていくための柱がうまく決められない。
作者の考えをなぞりながらも、自分の言葉で補足と訂正をおこなうのだが、
事柄をまとめていくための柱と道筋がうまくまとめられない。
なかなかままならぬのだ。

高等教育を受けさせてもらってはいたのだが、
この程度のことも満足できないことに情け無さを感じるが、
しかしやらねばならぬから、じりじり道を登るしかないのである。

Mac OS X+XCode4+Boost

どうもJudaです。
今日はMacOSXでXCode4を使って、Boostライブラリを利用するときの話。
一般的にはMacPortをつかうみたいですが、i386のアーキテクチャ部分がうまく噛み合わなくて、ライブラリがビルドできなかったりするので、直に使う方法をとります。
基本的にはMacOSXと云えども、Unix系なので、Boostをビルドしたりはできます。
BoostをサイトからDownloadして、展開しておきます。
この段階でstatic libraryを使わないものは利用可能な状態になっています。

XCodeにインクルードパスを追加するときには、VisualStudioとでは考え方がちょっと違って、「ヘッダーを検索するためのパス」を登録しなければいけません。そのため、項目の名前がSearch Header Pathsになってます。User〜というものあるのですが、違いがわかりません。ライブラリに関しても追加ライブラリパスは「ライブラリを検索するためのパス」を登録ということになります。

とりあえずstatic libraryのいらないものはこれでなんとかなります。
次にstatic libraryとかですが、BoostをDarwinでビルドする事になります。なんだかわかんないですけど、BoostのGet Start 〜で書かれているStepにしたがって行います。この時に bootstrap.sh --Prefix=/Path/to/installっていうのがあります。
Unixに慣れている方は普通なのかもしれませんが、WindowsのVisualStudioから来た人にはわかりにくいので、
./b2 というビルドコマンドを発行するだけだと、ビルドをするだけで、./Build installだとさっきの--Prefixで指定したパスへ生成物と必要なものをコピーします。Defaultだと/usr/localになってます。このディレクトリはアクセス制御されていて、読み込みのみの許可になっているので、sudo ./b2 install という風にしてやらないとうまくコピーが出来なくて悩むことになります。

あとはDarwinがGCC4.2のコンパイラを使っているので、XCodeのDefaultのコンパイラ LLVMとは生成物の形式が違うので、dynamic link をさせたときにエラーで落ちる原因になります。要注意です。


んで、実はProgram_Optionsを使ってみようと思っていて、組んで、ビルドはできるけど、うまく実行できず。
CommandLineOptionがうまく機能していないくて大変悲しい目にあってます。

XCodeでCommandLineOptionを指定するときにはXCodeのメニューバーのProductに該当するItemの下の方のEditSchemeで表示されるDialogのRun Argumentみたいな内容の奴にCommnad Line Optionが云々というのがあります。そこを設定すれば一応起動時の引数にはなるようです。

2/10/2011

CppCheckの雑感

どうもJudaです。
CppCheckを利用してみました。
とりあえず日本語の動作がクサイので、setlocale(LC_ALL, "");でビルドをする。
動作的には問題がなさげ。
検出件数とかは、よくわからないけど、未初期化の指摘をしてくれるのが、個人的に嬉しい。
現在わかっている困った点はQtで作成されているGUIで日本語が読めないのか、そもそも日本語パスの扱いがおかしいのか、不明だが、利用できない。
これによって、日本語パス以下にあるファイルの解析がままならない。
手っ取り早く、.NET FrameworkでFork用のGUIだけ準備すればいいのではないかと思う。あとは、Includeディレクトリを常に覚えるのが困るので、とりあえずそこもなんか変えたいと思う。
そんな感じ。

2/08/2011

C++における様々なツールについて

どうもJudaです。
最近CIについて、かなり興味が湧いてきました。また、それ以上に体系的なテストの重要性を痛感している今日この頃ですが。
CIを調べながら、いくつかのツールによる自動化も調査しています。現状ではまだ列挙段階ですが、いくつかのジャンルで情報をまとめておこうと思います。
インスペクションツール
CheckStyle
Uncrustify
Artistic Style
(追記:02/2011/09)Simian
静的解析ツール
CppCheck
ドキュメント化ツール(+可視化)
Doxygen+Graphviz
OpenSource で利用可能なものはこんな感じですかねぇ。
とりあえず多くの人々がこれらを公開してくれていることに頭が下がります。
Doxygen+Graphvizは導入済みですが、これを自動化して、
Commit毎にドキュメント化するようにするところから初めてみたいですね。
あとはインスペクションツールでリファクタリングの目標を絞ること。
『パターン指向リファクタリング』、
『デザインパターン』、
『実装パターン』、
『リファクタリング』
と開発に関する良い指針となるような書籍を読み進めています。