やっぱり何本と数えるのか?

http://www.atmarkit.co.jp/news/200901/16/migration.html

移行で最も苦労したのは既存のCOBOLプログラムの総数が分からなかったことだ。開発計画時は5366本と見積もっていたが、実際は6573本のプログラムがあった。

前見た記事とも書いている人違うし、Cの世界では聞いたことないし、やっぱCOBOL用語なのかなぁ。

refactoring to patterns.

パターン指向リファクタリング入門~ソフトウエア設計を改善する27の作法

パターン指向リファクタリング入門~ソフトウエア設計を改善する27の作法

デザインパターンへのリファクタリングの過程を丁寧に書いている本で、同時にデザインパターンを使わない方向へのリファクタリングも書いてある。デザインパターンが絡まないよりシンプルなリファクタリングについては、マーチン・ファウラーのリファクタリングを参照することとなるので、そっちも合わせて必要となる。

UMLは素人を騙すくらいにしか役に立たないらしい。

よーするに、日常的にUML使って設計している私は、素人の自分を自分で騙してると言う結論に至る。
ちょっとは反論してみようと思わなくもないのだが、多勢に無勢で勝てそうもないので特に何もせず。こーゆーところはふつーのソフト会社と変わらないんだよなぁ(前の会社で40代50代の人々を相手にグダグダやってたのを思い出す…思い出したくないけど)。他の事では優秀な人々なので、人間得手不得があるという手当り前の話ではあるが、私的にとてもやる気が削がれる瞬間でもある。
こういう事を言う人は、まともにオブジェクト指向プログラミング出来る人が回りにいなくて、ネットとか本で出来の悪い情報を見聞きしただけとか、OOPを口にするだけの偽者にしかあった事ないんだろうな(と、憶測でものを言ってみる)。id:minekoa先生と一時期一緒に仕事させていただいていた事は、本当にラッキーだったと痛感。
とりあえず、UML批判を吹聴するなら、マーチン・ファウラー氏あたりを倒してからにしていただきたい。

メモリ差し直した

Phenom機がかなりの確率でブートしなかったので、何となくメモリを順番変えて差し直したら直った。接触不良だったのかな?でも一度起動すれば普通に動いてたし、memtestも通ってたので何か謎。起動で失敗するだけだから電源の立ち上がりとかかな。

対角線上

なんか使いずらいきがしなくもなかったが、ちょうど対角線上に手を置くといい感じ。ボタンとボタンの間に薬指置けるのとか、もしかして狙った設計なのかな?

Boost C++ Libraryのお勉強その11

Boost.Integer

C99でstdint.hが追加になってるけど、現行のC++にはないのでboostにありますよとか、互換性の為のもの。

Boost.Interprocess

UN*Xの世界でIPCとか言ってるもの。プロセス生成自体が色々面倒なので飛ばす。

Boost.Interval

数値の範囲同士を計算するクラス。

#include <iostream>
#include <boost/numeric/interval.hpp>

int main(void)
{
    boost::numeric::interval < int > a(1, 2);
    boost::numeric::interval < int > b(3, 4);
    boost::numeric::interval < int > c = a + b;
    std::cout << c.lower() << ", " << c.upper() << std::endl;
    return 0;
}
4, 6

Boost.Intrusive

要素側がコンテナのデータを保持するもの。
リストのデストラクタが何かするらしく、要素とリストを同じスコープに入れてるとダメ。

#include <iostream>
#include <algorithm>
#include <boost/intrusive/list.hpp>

class Dummy : public boost::intrusive::list_base_hook <>
{
    private:
        int data;

    public:
        Dummy(int d) : data(d) {}
        void view(void)
        {
            std::cout << data << std::endl;
        }
};

int main(void)
{
    Dummy a(1);
    Dummy b(2);

    {
        boost::intrusive::list < Dummy > list;
        list.push_back(a);
        list.push_back(b);

        list.front().view();
        list.back().view();
    }

    return 0;
}
1
2