Tuesday, March 28, 2006

認証方式

LDAP認証
OpenLdapが使えるか?
Windows認証
当然、Windowsしか使えない。

覚書です。

Sunday, March 26, 2006

VCによるDAO接続サンプル

DBAccessにアクセス
1)アプリケーションの開始時にCOMを初期化します
CoInitialize();

2)cppファイルでタイプライブラリをインポート
// EOFが名前衝突してしまうのでrenameします
#import "~\dao360.dll" rename("EOF", "DAOEOF")

3)DBアクセスするソース
using namespace DAO;

void function() {
_DBEnginePtr dbEngine;
HRESULT hr = dbEngine.CreateInstance("DAO.DBEngine.36");

DatabasePtr database =
dbEngine->OpenDatabase(_bstr_t("test.mdb"));

// レコード処理
RecordsetPtr recordset = ...;

database->Close();
}

4)アプリケーションの終了時にCOMを片付けます
CoUninitialize();

※一度コンパイルすると、dao360.tlhというヘッダーファイルができます。

Thursday, March 23, 2006

Windows�R�}���h�W�F�isubst�j

そういえば、SUBSTなんてコマンドも有ったね。

以下
COMMANDのHELPより
SUBST [ドライブ1: [ドライブ2:]パス]SUBST ドライブ1: /D
ドライブ1: パスを割り当てる仮想ドライブを指定します。 [ドライブ2:]パス 仮想ドライブに割り当てる物理ドライブとパスを指定します。 /D 置換した (仮想) ドライブを削除します。
現在の仮想ドライブ一覧を表示するときは、パラメータを指定せずに SUBST と入力してださい。
パスをドライブ名に関連付けます。

Wednesday, March 22, 2006

アクティビティ図

要求定義に関して、アクティビティ図でデータフローを書こうと思ったが、自分なりに、要素の定義をしてみた. (やはり殴り書き)


  • 初期状態

スタート地点。たとえば、顧客からの注文が発生したなど、これからシステムに対して働きかけを行おうとする際の基点。

  • 制御フロー(実線矢印)

流れ(そのまんま)。ガード条件を付与して、その流れに移行する条件を記述する。ガード条件はオブジェクト制約言語OCLや擬似コード、文章などで記述する。「ガード」条件といっておきながら、実は分岐する条件。

  • 動作状態

アクション。働きかけ。これから伸びる制御フローは常に1本となる。

  • 状態

現在の状態。イベント待ち。あるいは、何らかの動作を行っている状態。複数の制御フローが指定可能。

  • 判断

条件判断。ガード条件を付与した「2つ以上」の制御フローが伸びる。

  • 最終状態

制御の終わり。

Tuesday, March 21, 2006

�I���W�� Dual-Core PC �� WindowsXP 64bit �����L�I | Firefox for Windows x64

�I���W�� Dual-Core PC �� WindowsXP 64bit �����L�I Firefox for Windows x64

ユースケース図の考察

今仕事で、既存システムの分析と理解を深める為に、ユースケース図なんぞを書いている.
ユースケースに含まれる要素ごとに、自分なりの考察をしてみる.(殴り書き)


  • アクター

人とは限らない.何らかの動作を行おうとする人や物。

  • ユースケース

振る舞い。動詞。だから、~データとか、~ファイルとかは、ありえない。それは、DFDなど他の図の仕事。トランザクションの流れでもない。別名イベント。

そもそも、ユースケースの定義とは、ユーザーが要望する『機能』を定義するもので、内部のデータ、処理の流れを規定するものではないし、これらについても記述してはならない。常に顧客に見せるイメージを維持する。だから、システム内部要素が出てきてはならない。

  • 関連

アクターとどういう関係かを規定する。別名通信関係。ユースケースどうしで結ばれる事はありえない。

  • システム境界

システムが行う事。ここからが、システムの領分。アクターが、システム領域内のユースケースにどう関与するかを、システム領域から飛び出した『関連』が示す形になる。

  • Uses汎化

ユースケース同士で結ぶ。あるユースケースについて、共通に呼び出されるユースケースを示す関係。ユースケースの使いまわしをする時の関係。使用汎化関連(関係)。なぜ、汎化と呼ぶかは不明(歴史的背景があると見られる)。UML1.1の古い要素。新しいバージョンでは、<<include>>に置き換えられる。

  • Extends汎化

バリエーション。例外な用法。とあるユースケースの例外的な用法を示すユースケースと、一般的なユースケースとを結ぶ。UML1.1の古い要素。新しいバージョンでは、<<Extend>>に置き換えられる。

http://www.ogis-ri.co.jp/otc/hiroba/technical/Jouhoushori-UML/UML10-2.html

ロイ・ブキャナン

Amazon.co.jp�FWhen a Guitar Plays the Blues: ���y
昨日たまたまInterFMで耳にした。なんか知らんエラいギターを弾く。
覚えておこう。

祝64ビット化

つい思いつきで、64ビットパソコンを自作してしまった。
Athlon64のデュアルコアにM/B、メモリ、HDはすべて新規ご購入し、ついでにVGAもそろえて、しめて約12万円なり。
少し使っただけで、いくつか問題が発見されたが、まぁ取りあえずは動いている様子。
でも、さすがに今のパソコンはすごいわ。なにが違うって、まず、起動の早いこと早いこと。
いままで3分はかかっていた起動が、POSTとあわせて、30秒以下になった。
それにグラフィック性能。あのGoogleEarthが、目を疑うほど滑らかに動作する様を見て、思わずのけぞってしまった。
おまけに、旧パソコンでは1フレームあたり約1分で動作していたNASAのWorldWindが、なんとサクサク動くではないか。
まさに、地獄から使者と見紛うほどの超速パソコンを作り上げてしまった。
でも殆どの用途は、VisualStudioかEclipse、その他もろもろ無償系開発環境と、メールとインターネットぐらい。
いいのか、こんなんで。

Thursday, March 16, 2006

本日もミス

やるべき事の一つが、作業見積もりのなかにふくまれていなかった。
見積もりも当然、確認が必要。
なんでこんなにヌケているのか・・・。

マクロでページ設定

Sub ページ設定()
Dim sheet As Worksheet

For Each sheet In ActiveWorkbook.sheets
With sheet.PageSetup
.HeaderMargin = Application.CentimetersToPoints(1)
.TopMargin = Application.CentimetersToPoints(1.8)
.BottomMargin = Application.CentimetersToPoints(0.9)
.FooterMargin = Application.CentimetersToPoints(0.4)
.LeftMargin = Application.CentimetersToPoints(1)
.RightMargin = Application.CentimetersToPoints(1)
.CenterHeader = vbNullString
.RightHeader = vbNullString
.LeftHeader = vbNullString
.Zoom = 95
.RightFooter = "&9<%会社名とか%>"
.CenterFooter = "&9P.&P/&N"
.LeftFooter = "&9&A"
End With
Next

End Sub

Wednesday, March 15, 2006

Monday, March 13, 2006

対処プラン

どうやら、SendMessageで強引に落とそうとしていることと、クローズのメッセージを受け取るApplicationが、ダイアログメッセージを表示している事が原因のようだ。
なぜか、ダイアログメッセージを表示していない場合だと、正常に終了する。
いろいろ調べているうちに、SendMessageとNotifiyMessageが、それぞれ、次の実行を待つという事と、待たないことという違いがある事をはじめて知った。
時にはハマリる事も無駄ではないということか。

さて、対処はどうしようかと考えて、SendMessage(WM_CLOSE)とする強引な終了方法ではなく、終了処理を2段階に分けて、それぞれをユーザー定義メッセージを新設して対処するという案で(明日)いこうと思う。
ユーザー定義を浮けとる箇所はフレームクラスのOnWndMsgとし、ここに、段階終了処理を書いてみよう。
あとは、親Applicationを2つメッセージを送るように変更する。
うまくいけば良いが・・・。

Sunday, March 12, 2006

SendMessageEx(WM_CLOSE)で無限ループ

結局、MFC:CHtmlView内に表示されるWEBページで、サブ画面を表示する事になってしまったようだ。
なんと恐ろしいことを・・・

挙動を確認してみると、早速不都合が発覚した。
このMFC:CHtmlViewを組みこんだApplicationは、親画面よりShellExecuteで呼び出される代物だが、この親画面は、自身のApplicationが落ちる時、そこから起動したアプリケーションも、SendMessageEX(WM_CLOSE)でもろとも落とす仕様になっている。
又、親画面から呼び出されるCHtmlViewを使ったApplicationは、CLOSEメッセージを受けてHTTPサーバーへのデータ受信要求を発行し、データをダウンロードして処理を終了する仕組みであり、その際にプログレスバー付きのダウンロードダイアログを表示する。
そして、今回の不都合は、WEBページがサブ画面を出したあと、SendMessageEX(WM_CLOSE)を実行すると、CHtmlViewを使ったApplicationが無限ループに陥ってしまうという、なんとも致命的なもの。

CHtmlViewで表示されるページが、JavaScriptでAssertダイアログを出そうが、動的にHTMLを生成しOpenDocument(そんな技があったとは知らなかった)しようが、Application上では関知しない。
ただ、後者のOpenDocumetを行った時だけが、今回の不都合を引き起こす原因となっているようだ。
HTMLの生成とOpenDocumetを行っている共通JaveScriptをみる限り、不信なところは見当たらない。
担当者からは調査の必要は無いといわれているけど、やはり少し気になるな。

水面下で継続調査ということで。

Friday, March 10, 2006

本日のミス①

勤務表の曜日を空白のまま提出してしまった。
あれだけ確認したのに・・・。