ちょっと大袈裟ですが、3層アーキテクチャの意味がやっと腑に落ちました。Delphiが初めて触った言語だっただけに、RADの経験・2層クラサバの経験がちょっと邪魔しました。
アプリケーション層は、それ自体独立に機能するアプリケーションをオブジェクト指向で作成するということです。極端な話、Databaseがなくてもアプリケーション(層)は動作するわけです。この場合、サーバーが落ちればデータも失われるわけで実用性はありませんが、論理的にはそういうことです。また、GUIがなくてもアプリケーション(層)は動作するわけです。この場合、人間が触れないので実用性はないですが、論理的にはそういうことです。
今まで工数を見積もるときに、画面数から演繹して計算していましたが、これは2層クラサバの発想かなと。オブジェクト指向でアプリケーション層が出来ていれば、GUIやストレージはその機能を付け加えるだけですからね。そう考えると、今までずいぶん無駄なコードを書いていた気がします。アプリケーション層にオブジェクト指向を駆使していれば、もっと早く・よく・安く開発できたでしょう。
これに関連して、JUnit(単体テスト)を使うと工数が倍になるという意見もちょっと違いますね。アプリケーション層が出来上がってGUIを作るときは、そのイベントハンドラに単体テストで書いたコードを書く(写す)だけだから、コードが倍になるということはないわけです。
SQLと密接に結びついた2層クラサバの破壊力は素晴らしいものなので、これはこれで通用すると思います。ただ、今の私は、そういう意味での3層の経験が少ないので、なるべく実戦経験を積んで経験したいわけです。世界中がこちらに動いている(というか、既に世界はそっちに行ってしまっ「た」と私は感じますけどね)のですから遅れないためにも。でも、なかなか社内の賛同が得られないんだなぁ。
まず、手元のマシンで、鍵を作成します。
$ ssh-keygen -t dsa
.ssh/id_dsaが秘密鍵、.ssh/id_dsa.pubが公開鍵です。
公開鍵を、接続先にコピーします(scpや直接)。
接続先にて、id_dsa.pubをauthorized_keys2に入れます。
$ cd ~/.ssh
$ cat ../id_dsa.pub >> authorized_keys2
以上で暗号鍵の設定は終わりです。
フレーズをメモリ上に保持し、接続ごとにフレーズを入力する必要がなくなります。
$ exec ssh-agent $SHELL
execはしなくてもOK。
$ ssh-add
で、フレーズを蓄えます。
$ ssh-agent -k
で、終了です。
ssh-copy-idを使ってはいかが?
そんな便利なコマンドがあったのですか。目から鱗です。こういうコマンドを用意しくれるLinuxが好きです。<br>でも、手元のX on Widowsにssh-copy-idがないのです。最新にはあるかなぁ。
どう腑に落ちたのかもっと詳しく教えてください。<br><br>賛同が得られないのは「3層アーキテクチャ」ではなく,<br>「EJBが唯一体現している」と言わんばかりの,<br>はんばあぐさんの考え方だと,ハタから見ている私は<br>とらえましたが。そうでないのであれば,もう少しうまく<br>伝えてくれるとありがたいです。<br>2層と3層の違いは単純に中間層がクライアントサイドか<br>サーバーサイドにあるかの違いだけで,Webブラウザを使う<br>現在主流のシステムは意識しなくても最初から3層ですよ?<br>それと言語とアーキテクチャは別物ですので,何も邪魔にも<br>ならないと思いますが?JAVAで2層しか作ったことがない人が<br>いたら理解に苦しむし,Delphiで3層作っている人には<br>何の影響もありませんし。3層の実現の最大の貢献者は,<br>EJBではなく,Webブラウザであることは明白です。<br>それとも,ここで指している「3層アーキテクチャ」以外に<br>全然意味の違う別物のアーキテクチャでもあるのでしょうか?