2008年9月12日金曜日

スタイルが崩れていたので修正しました。
回り込み解除のために<span style="clear:both;"></span>と入れたつもりが閉じタグのスラッシュが抜けていました(汗)

デザインパターンを使ってみる。

先日読み終えたデザインパターンの復習を兼ねてサンプルアプリを作ってみました。

作成にあたって

1.デザインパターンを使ってみる。
2.単体テスト用のINSERT文を発行するようなアプリを作る。
3.単体テストもせっかくだからおさらいしてみる。

ということを考えて作ってみました。



DACの単体テストなどを行う時に発行するINSERT文。
先にDBもしくはExcelなどでデータパターンを作っておいてそれをINSERT文またはCSV(未実装)にします。

画面を見てわかると思いますが、現在Oracleは未実装。
理由はOracleをインストールしたくなかったから。どうやらOracleもExpress Editionなるものが出ていて試すことができそうでしたが、Virtual PCにインストールしてループバック環境作ってODP.NET入れて…と考えているうちに後回しに。

でもいいんです。Oracleのロジックは追加できるように作ったから♪

ただ、途中まで作ってみたのですがやはりデザインパターンを上手く使えていない気がする。。。
このブログのページビューが少ない甘えと、記事を追加して早くトップページから見えないようにする決意をもとにだめなコードダイアグラムを載せてみます。




あぁ、汚くてすみません。ダメ出しがあればコメント頂けるとうれしいです。

問題点として認識していること。
1.クラスの命名がひどい。
2.BCにConnectionStringを持っている。他、DA周りがBCに入っている。
3.BCFactoryはAbstractFactoryのつもりですが、そもそもここで使う必要がない。(Factoryを使えばいいのかなぁなんて思っています。)

うぅぅ。人が作ってるのを見るのと自分で考えるとでは違いますね。。。
死ねばいいのに。

ここで考えたのはデータベースの種類によってクラスを分けることと出力方法によってクラスを分けることでした。なのでOracle処理用のクラスを追加すればOracleの処理が追加できるし、CSV処理用のクラスを追加すればCSV出力処理も追加できるようになります。

DA周りがBCに入ってしまったのはADO.NET2.0で追加されたSystem.Data.Common名前空間のクラスを使っているうちに"あっ"という間にこんなんなってました。


思ったこと。
1.デザインパターンを理解すればきっとコーディングのスピードも上がるだろう。
 >空間で把握できるようになるからそうかなと。だからもっと勉強する。いや、もっと実装する。
2.赤間本Vol.4と"アプリケーションアーキテクチャ"を読もう。
 >デザインパターンだけだと局所的な視点でしか理解できないと思ったため。幸い2つともあるし。
3.WebテストのDataSourceを紐づけるXMLが出力対象にできたらWebテスト楽かもなぁ。
 >過去、DataSourceの紐づけがすごく面倒だったため。

2008年9月10日水曜日

ClickOnceサンプルを作る。

ClickOnceについて言葉は知っていたものの実際にやったことがなかったのでやってみることに。

手順
1.Windowsアプリケーションを作成する。
2.プロジェクトの発行を行う。
3.ローカルPCにWebサイトからインストールする。
4.実行できることを確認する。
5.Windowsアプリケーションを更新する。
6.プロジェクトを再度発行する。
7.ローカルPCのWindowsアプリケーションを起動して更新が確認されるかを確認する。
8.ローカルPCのWindowsアプリケーションが更新されたか確認する。

こんなものでしょうか。

↓すぐに洗礼を受けるw。

2番目の「プロジェクトの発行を行う」ですぐつまづく。
プロジェクトの発行を行うとIISコンポーネントが足りないというメッセージ。足りないものは以下の2つ。

・IISメタベースおよびIIS6構成互換性
・Windows認証

VISTAのそれっぽい所(Windows機能の有効無効オプション?)からメッセージ通り追加インストールをする。



あとはVS2008を右クリックして「管理者として実行」から起動して再度トライ。

すると発行できました。


↓でもやっぱり挫折w
3番目の「ローカルPCにWebサイトからインストールする。」でつまづく。







詳細を見てみるとエラーの概要にこのような記述

エラーの概要 以下はエラーの概要です。これらのエラーの詳細はログに一覧表示されています。 * http://localhost/ClickOnceSample.application のライセンス認証により例外が発生しました。 次の失敗メッセージが検出されました: + http://xxxxxxxx/ClickOnceTest/ClickOnceSample.application のダウンロードに失敗しました。 + リモート サーバーがエラーを返しました: (404) 見つかりません

あ、発行先間違えてるなと気づく。
「ClickOnceTest」が必要なさそう。
もう一度発行。URLの指定を変える。


と。。。
できましたー。あ、まだか。。

インストールするとアプリケーションが起動されました。そして、アプリケーションを閉じても発行者のフォルダがスタートメニューの中にできてアプリケーションが起動できることを確認。

今回はデフォルトのまま発行したのでオフラインでも起動できるようになっています。オンラインでないと起動できないように発行時に指定するとスタートメニューには登録されないとありました。


ちなみにサンプルアプリケーションはこんな感じです。



クリックすると・・・・。


クリック詐欺ww

もちろん表面だけで、内部的にはbutton1のクリックイベントでlabel1に文字列を表示するだけです。


プロジェクトの発行で自動的に作成されるpublish.htmは便利ですが、インストール時に対話型のインストールはできないとのこと。現時点では特に問題なし。

-----------5番目以降-----------

Windowsアプリケーションを更新する。button2を追加しました。

再度アプリケーションを発行する。
発行時にできるpublish.htmを表示して「インストール」をクリックすると勝手にUpdateされました。
おぉ便利。

元に戻したい(ロールバックしたい)時はプログラムの機能から対象アプリケーションの「変更とアンインストール」で「アプリケーションを以前の状態に復元します。」にチェックをしてOKでできる。

スタートメニューから実行すると確かに前のバージョンが表示される。
既に起動していたボタンが追加されたバージョンと並べてみる。


うむうむ。



ちなみにbutton2をクリックするとnotopad.exeが起動して不安をあおる効果があります。
でも、まず「インストール」を押すはずがないか(笑)

--------------完了--------------

気になったメモ

1.インストール用のhtmの発行先。

 今はLocalhost直下にあるが、これは嫌だ。

2.トランザクションについて。
 DBにデータを登録するアプリケーションを作ろうと思うとWebサービスなどを経由してデータ登録をするが、Webメソッドごとのトランザクションになるんだろうなぁ。WCFを勉強するのでこの辺を調べてみよう。

3.オフライン時のデータの整合性

 オフライン時のデータキャッシュはどうすればいいのか全く無知。あとはオフライン時に更新されたデータは接続時に自動更新しにいくなど。さらに、データが競合する可能性があるがどう処理するかなどオフラインに対する知識が無防備。Windowsアプリを作ってこなかった”つけ”でしょうか。






参考にしたWebサイト

ClickOnce と Windows インストーラの使い分け
http://www.microsoft.com/japan/msdn/net/general/clickoncevsinstaller.aspx
ClickOnceの真実
http://www.atmarkit.co.jp/fdotnet/clickonce/clickonce01/clickonce01_01.html
ClickOnceのファイル構成を理解する
http://vsug.jp/tabid/121/Default.aspx

まだ、全部読めていませんが。これを読めば気になったメモは解決するかなぁ。

2008年9月3日水曜日

Tech・Ed2008

こないだTech・Ed2008に行った時のこと。

本などが売ってある所のとなりでXNAプログラミングの説明をされている人がいた。
実際に作ったXBOXで動くゲームとおもちゃをゲームコントローラで動かすデモを見せてもらった。
というよりのぞいてみたら、おもちゃとPCをつなぐ間に自作の小さい基盤があってPICがつながっていた。

PICというのは小さなマイコン(マイクロコントローラ)だが、PCとケーブルで繋がっていた。
PCから出したシリアルデータをPICで読み取っておもちゃにON/OFFを送っているとのこと。
で、少し話をしていたら.NET Frameworkが乗っかるモジュール(基盤)があると!
なんて興味深い。C#で基盤が動作するプログラムが書けるのか!?
でも現在は使い物にならないらしく、年末?来年?あたりにでるモジュールを
楽しみにしてるんですよ~なんて話をされていた。

でもこれってXNAじゃなくってRobotics なんちゃらっていう開発環境の話だったんだろうなぁ
まぁともあれ、無線で基盤を動かすプログラムをいつか作りたいな。何年後になるかは分かりませんが。知識もないしw

基盤ができたらPC上から無線で接続されたラジコンが動く。いいなぁ。

ちなみに有線ではPICNICというものが既にあり、マイコン上にWebサーバがたっててそこのページ表示するとPORTのON/OFF制御ができる。6年前位に実証済み。最近は追ってないのでわかりませんが。当時秋月電子通商で7800円位だったはず。

ブログのガジェット

ブログのガジェットでカテゴリ別に表示するものが欲しい。
だけど追加ダイアログが文字化けして何が何やらわからず
変なフラッシュゲームだけ追加してみる。
体格が違いすぎww
つい少年を勝たせてみると、歓喜します。

不評なら削除します。

Entity Framework

Visual Studio 2008 SP1からEntity Frameworkというものが
使えるようになったらしく。使ってみようと思った。

http://www.atmarkit.co.jp/fdotnet/special/vs2008sp1/vs2008sp1_03.html
SP1をインストールしてこの記事を読んでとにかくさわってみることに。

「ADO.NET Entity Data Model」テンプレートを追加すればいいのかぁ。
ふむふむ・・・。?ない。ないよ?EDM作れないです。

ということで掲示板に書き込んでみるものの現在回答なし(泣) 二等兵レベルではだめなのか・・・
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=46248&forum=7
明日会社の人に聞いてみよう。


【2008/09/04】
解決しましたーー!。原因はあまりにもださいので掲示板では平謝りです。。
ごめんなさい。

2008年9月2日火曜日

SQL Server 2008 新機能 試してみるリスト

データ型
・日付、時刻(date型,datetimeoffset型)
・階層型
・ユーザー定義テーブル型?
・空間データ型

SQLステートメント
・MERGE
・GROUPING SETS

FILESTREAMとFTS(Full Text Index)

2008年9月1日月曜日

Reverse IP lookupを使ってIPアドレスから地図を表示してみる。

Virtual EarthでIPアドレスから地図を表示してみる。
やってみて分かったのはIPアドレスで位置情報が正しく表示されるとは限らないということ。
(どうも地図がシアトルに飛んでしまうが、リンク先のHTMLを置いたサーバーがシアトルにあるってこと?それともこのWebサービスがNG?いや、参考サイトでは東京あたりがでているって書いてあるしなぁ)
まぁ参考までにというレベル。
サーバーがビジーの時は東京駅がでるようにしています。

http://vhmvka.bay.livefilestore.com/y1pY1n49Sy7l0R9hfgJkMCFaSFF0CgvO9YeeyZ83dFttEBP553Bk9vixGvU1knmZZZLeWcu-o4r6gqbIosbUJp-bQ/virtualearth.html


こちらのサイトを参考にしました。
http://blogs.wankuma.com/katamari/archive/2008/04/08/132277.aspx

2008年8月31日日曜日

ブログ開設

ブログ開設しましたー。

PassJにユーザー登録済

SQL Serverについてとりあえずいろいろと試してみる。