2005-09-01から1ヶ月間の記事一覧

今の生き方を見つけたきっかけ

以前、収入の7割を本代につぎ込んだという人の話を読んだ。http://www.president.co.jp/pre/20050704/001.htmlこれを読んだのは、仕事とやりたいこととのギャップに苦しんでいたときだった。僕の所属する研究所は、「会社の利益への貢献」、「イノベーション…

最近の学生

社員10万人のでかい会社に出張。作業は少しトラぶってしまったのだが、担当者(ネットワーク管理者)の人柄・雰囲気にだいぶ助けられたところがある。言っていることが面白くて、裏がなさそうな人柄。技術者の理想系の一つだな。彼はなぜかJavaに興味がある…

constポインタとC++の必勝形

先週作成したプログラムの点検をしているときに、一つ発見があった。あるオブジェクトが、ポインタ型の変数をメンバ変数としてもつ場合を考える。ポインタ領域が解放された後に、その変数へのアクセスが行われると致命的なエラーとなる。したがって、ポイン…

C++9冊目

プログラミング言語C++ (アスキーアジソンウェスレイシリーズ―Ascii Addison Wesley programming series)作者: Bjarne Stroustrup,長尾高弘出版社/メーカー: アジソンウェスレイパブリッシャーズジャパン発売日: 1998/12/01メディア: 単行本購入: 9人 クリッ…

C++のconstについて

値クラスにおけるconst、インタフェースクラスのポインタをconstで保持するというのは分かってきた。今は、インタフェースクラスの中の関数について悩んでいる。これらがconstになる条件とは何だろうか?以前プログラムを作ったときは、とりあえず、get系の…

イノベーションへの憧れ

最近、職場で、「不機嫌の伝播」というのを感じる。と言いつつ、自分も伝播させているのだが。というわけで、人、とくに技術者が読んで、元気付けられるような本を探していた。逆風野郎 ダイソン成功物語作者: ジェームズ・ダイソン,樫村志保出版社/メーカー…

勉強中。勉強中。

「Unixネットワークプログラミング」を読み進める。この本は、各所に勉強になることが書いてある。読まざるを得ない。pthreadを、今まで少し間違えて使っていたのを発見。joinが前提となっていないスレッドは、detachした状態で開始しないといけないらしい(…

オブジェクト所有者の概念とポインタの寿命

通常のスマートポインタは、参照回数に基づくもので、参照がなくなったら勝手にメモリ領域が回収されるというものだ。これは、使う側にとっては非常に楽だ。しかし、僕は、このようなスマートポインタは、新しい苦痛を生み出す原因になるかもしれないと思っ…

スマートポインタの必要性

あるオブジェクトが、他のオブジェクトのポインタを保持するという関係は良くある形だ。しかし、こういう形には、けっこう厄介な問題が潜んでいることが多い。以下のクラスを考えてみる。 class A { public: A(): b1(new B), b2(new B) { } ~A() { delete b1…

不変な値クラス

8/31の日記で書いてあるように、僕は、Javaでは、なるべくポインタを不変にするように心がけていた。C++でも同じように、ほとんどすべてのポインタをconstにすることにしている。8/31の日記では、「値」タイプのクラスの=を禁止するといことについても書い…

値クラスとインタフェースクラス

9/1,2の日記の中で書いたように、僕は、ヒープ上の変数(ポインタ)を使うべきか、スタック上の変数を使うべきかで悩んでいた。結局のところ、両方必要なようだ。ある「インタフェース」のオブジェクトを別のオブジェクトに渡すときなどの場合、値渡しで渡す…

C++[言語の中へのプログラミング]:クラスの分類

C++での仕事が一段落した。一ヶ月仕事で使ってみて、分かってきたことがある。

TCP Hole Punching

UDP Hole Punchingの仕組みを見て、なぜTCPではできないのかとふと疑問に思った。調べてみたら、やはりできるようだ。仕組みもほとんど同じ。http://www.brynosaurus.com/pub/net/p2pnat/しかし、今、実験できる環境は、Webプロキシ経由でインターネットに出…

http over UDP

Unixネットワークプログラミングの本を勉強中。これまで、UDPで動くプログラムを作ったことがなかったので、何か作ってみたくなった。UDP Hole Punchingを使って、P2Pでバリバリ動くアプリケーションを一回作ってみたかった。例えば、http over UDPって可能…

自分のささやかな明日のために

移動中に「人月の神話」を読んだ。セカンドシステム症候群の話は耳が痛いな。あと、「プロジェクトは1日ずつ遅れる」という話も怖すぎる。というか、僕の仕事は、今日の出張で確実に1日遅れている。気分的には、この1日を後で取り戻せる気になってしまうんだ…

技術の話で人を魅了できる技術者

出張で奈良から埼玉へ。うちで作ったシステムの保守作業。作業としては簡単に終わったので、後は、お客さんの話を聞かせてもらっていた。お客さんは技術系の人で、いろいろ面白い話を聞かせてくれた。半分くらいは分からない話しだったのだが、熱意を感じる…

ssh

今更ながら、sshの機能に関心している。暗号化シェルとポートフォワーディング。一見すると、無関係な組み合わせにも見えるが、これほど相性良く組み合わさっている機能はない。この二つでありとあらゆることができる。そして安全。これを考えた奴は、天才だ…

C++を見限るところだった

C++のベクタって、「=が定義されていないオブジェクト」って入れられないんだね。仕方がないので、「=が定義されていないオブジェクトを格納できるベクタ」を新たに作った。実際には、普通のベクタに、スマートポインタを格納するだけ。しかし、この決断に…

ネットワークプログラミング

また良い本を見つけた。学生の頃、図書館で見たことがあるのだが、分厚くて怖いイメージがあった本。しかし、今になって読んでみると、非常に読みやすい。やばい。リチャード スティーヴンスの本、全部読みたくなってきた(無理)。最初の100ページくらい読…

休日出勤

おまけに出張。移動中、暇なので、昨日気づいた問題について考えていた。今更なのだが、C++ってstatic constな配列を初期化できなくない?Javaでクラスとかインタフェースの中で定数を定義することが多いが、僕は、定数の配列もけっこう使う。例えば、インタ…

努力

新しいことをやりたかったら、とりあえず100冊の本を読む。それか、三年間は地道に苦労する。これは最近僕が思うことだ。今の職場は、企業の研究所なんだけれど、毎年、みんなの言っていることが違うような気がする。(2〜3冊の本を読んだくらいの知識で、新…

スコープの落とし穴

Javaのスレッドのようなスレッド操作のヘルパークラスを作った。こんな感じで使う。 Thread *thread = new Thread(Runnable *target, Logger *logger); thread->start(); 別スレッドで target->Run() が実行されて、それが終了しだいthreadもメモリから解放…

ジェネリックプログラミング

C++八冊目。Modern C++ Design―ジェネリック・プログラミングおよびデザイン・パターンを利用するための究極のテンプレート活用術 (C++ In‐Depth Series)作者: アンドレイアレキサンドレスク,Andrei Alexandrescu,村上雅章出版社/メーカー: ピアソンエデュケ…

スタック

今日は昔の職場に出張。移動中、暇なのでC++プログラミングスタイルについて考えた。昨日の日記でも書いたように、最近、関数の引数をconstオブジェクトのリファレンスで渡すのに慣れてきた。慣れてきただけでなく、何だか心地よくなってきた。思うに「スタ…

変数をすべてポインタにするという案

最近C++の引数渡し方式に慣れてきた(関数はとにかくconstリファレンスで受ける。。。)。オブジェクトがどこでどう作られ、どのように変数に代入されるかを把握できたら、これはこれで自然にも思う。ただ、Javaプログラミングに比べて、プログラミング中に…