Visual Studio Express 2008 日本語版 ダウンロード

2008. 1. 18. 10:58

by artis

【.NET】 Webサービスを作成する

2007. 11. 21. 15:55

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃          Webサービスを作成する                    ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛


●Webサービスを作成する
Webサービスの作成法については、MSDNの「ASP.NET を使用した
XML Web サービス」などで説明されている。

[URL]ASP.NET を使用した XML Web サービス
http://msdn2.microsoft.com/ja-jp/library/ba0z6a33.aspx

★Visual StudioでWebサービスを作成する

まずはVisual Studio 2005を使ってWebサービスを作成する方法を順
を追って説明するが、Visual Studio .NETでもほぼ同様です。

1.メニューの[ファイル]-[新規作成]-[Webサイト]などにより、「新
しいWebサイト」ダイアログを表示する。

2.「新しいWebサイト」ダイアログで「ASP.NET Webサービス」を選択
し、OKボタンをクリックする。

3.作成されたWebサイトには、「Service.asmx」と「App_Code/
Service.cs」(VB.NETの場合は、「App_Code/Service.vb」)と「web
.config」(VB.NETの場合のみ)が作成されている。

「Service.asmx」の中身は、次のようになっている。

<%@ WebService Language="vb" CodeBehind="~/App_Code/Service.vb" Class="Service" %>

つまり、コードビハインドとなっており、本体のコードはApp_Codeデ
ィレクトリの「Service.cs」や「Service.vb」に記述する。これら
のファイルの中身は、初期状態で次のようになっている。

‥‥▽ここから▽‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols

<WebService(Namespace:="http://tempuri.org/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Public Class Service
     Inherits System.Web.Services.WebService

    <WebMethod()> _
    Public Function HelloWorld() As String
        Return "Hello World"
    End Function

End Class
‥‥△ここまで△‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥

注意:.NET Framework 1.1以下ではWebServiceBindingAttributeと
DesignerGeneratedAttributeはサポートされてない。

補足:「別のファイルにコードを書き込む」をオフにしてWebサービ
スを作成したときは、作成されたクラスに
DesignerGeneratedAttribute属性は適用されない。

4.これですでに立派なWebサービスが作成されている。現時点では、
http://tempuri.org/」という名前空間の「Service」という名前の
Webサービスに、「HelloWorld」というWebサービスメソッドが一つあ
るだけ。。。

5.これに独自のWebサービスメソッドを追加してみよう。ここで
は送信された文字列を大文字に変換して返す「ToUpper」というWebサ
ービスメソッドを追加する。HelloWorldメソッドと同様に、
Serviceクラスにプロパティメソッドを追加し、WebMethodAttribute
属性を適用する。

追加するメソッドのコードは次のようなもの。

‥‥ここから▽‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
<WebMethod()> _
Public Function ToUpper(ByVal str As String) As String
    Return str.ToUpper()
End Function
‥‥ここまで△‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥

6.さらにXML名前空間を独自のものに変更する。ここでは、XML名前
空間を「
http://dobon.net/services/」に変更する。XML名前空間
はWebServiceAttribute属性のNamespaceプロパティで変更できる。
Namespaceプロパティを指定しなかった場合は、「
http://tempuri.
org/」となる。

このようにして変更された「Service.cs」や「Service.vb」は次のよ
うになる。

‥‥▽ここから▽‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols

<WebService(Namespace:="http://dobon.net/services/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Public Class Service
    Inherits System.Web.Services.WebService

    <WebMethod()> _
    Public Function HelloWorld() As String
        Return "Hello World"
    End Function

    <WebMethod()> _
    Public Function ToUpper(ByVal str As String) As String
        Return str.ToUpper()
    End Function
End Class
‥‥△ここまで△‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥

7.Webブラウザで「Service.asmx」のURLを開くと、「サービスヘルプ
ページ」と呼ばれるHTMLページが表示される。このページには、
Webサービスに関する様々な情報が表示される。

Visual Studioでこのページを表示させるには、F5キーや、ツールバ
ーの「デバッグの開始」ボタンを押してデバッグを開始するか、ソリ
ューションエクスプローラで「Service.asmx」を右クリックして、コ
ンテキストメニューから「ブラウザで表示」を選択する。

サービスヘルプページでは、サポートされているWebサービスメソッ
ドの一覧や、それぞれのメソッドの使用可能なプロトコル別の要求と
その反応の例を見ることができる。さらに、送信する値を入力して、
HTTP POSTを使用したテストを行うこともできる。

8.このように作成されたWebサービスは、SOAPに対応している。こ
のWebサービスのWSDLは、次のようなURLで取得できる。

http://localhost/Service/Service.asmx?WSDL

つまり、ASMXのURLの末尾に「?WSDL」を付加したものとなる。こ
のURLへのリンクは、サービスヘルプページの「サービスの説明」の
箇所にある。

★Visual Studioを使わずにWebサービスを作成する

Visual Studioを使わない場合も、上記で紹介したようなファイルを
自分で用意すれば、全く問題ない。

前と全く同じでは面白くないから、コードビハインドとしない
で、ASMXファイルにコードも書いてしまう例を示する。以下の内容
を拡張子が".asmx"のテキストファイルとして保存する。

‥‥▽ここから▽‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
<%@ WebService Language="VB" Class="WebService" %>

Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols

<WebService(Namespace:="http://dobon.net/services/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
Public Class WebService
    Inherits System.Web.Services.WebService
   
    <WebMethod()> _
    Public Function ToUpper(ByVal str As String) As String
        Return str.ToUpper()
    End Function
End Class
‥‥△ここまで△‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥

基本的な事柄の説明は以上です。ここからは上記で示したコードに登
場した属性などについて、簡単に説明する。

★WebServiceAttribute属性

Webサービスを実装したクラスには、WebServiceAttribute属性を適用
する。

WebServiceAttributeのNamespaceプロパティには、XML名前空間を指
定します。省略した場合は、「
http://tempuri.org/」となる。
XML名前空間が「
http://tempuri.org/」のままだと、サービスヘルプ
ページで詳しい説明と共に、名前空間を変更するように勧められる。

WebServiceAttribute.Nameプロパティには、Webサービスの名前を指
定します。省略すると、クラスの名前と同じになる。

WebServiceAttribute.Descriptionプロパティには、Webサービスの説
明を指定することができる。

★WebServiceBindingAttribute属性

Visual Studio 2005からは、始めに作成されるWebサービスクラスに
WebServiceBindingAttribute属性が適用される。
WebServiceBindingAttributeのConformsToプロパティにWsiProfiles.
BasicProfile1_1を指定することにより、WebサービスがWSI Basic
Profileバージョン 1.1に準拠していることを示する。

[URL]ASP.NET 2.0 を使用した WS-I Basic Profile 準拠 Web サービ
スの構築
http://msdn2.microsoft.com/ja-jp/library/ms230196.aspx

★WebMethodAttribute属性

XML Webサービスメソッドとするメソッドは、パブリックとして、
WebMethodAttribute属性を適用する。

Descriptionプロパティには、メソッドの説明を指定する。

MessageNameプロパティには、Webサービスメソッドに使用される名前
を指定する。このプロパティを使って、Webサービスクラスに同じ
メソッド名の複数のオーバーロードが存在する時に、メソッドの名前
を変えることなく、Webサービスメソッドの名前がダブることを防ぐ
ことができる。

☆キャッシュを有効にする

WebMethodAttribute.CacheDurationプロパティを使用することにより、
応答のキャッシュを有効にできる。CacheDurationプロパティには、
応答をキャッシュ内に保持する秒数を指定する。キャッシュの保持
期間中は、要求が同じならば、同じ結果を返する。

MSDNには、キャッシュ機能を使う際の注意事項が幾つか示されている。
まず、キャッシュを有効にすると、要求と応答のデータはメモリ
に保存されるため、要求や応答のデータが巨大であったり、要求の変
更幅が大きい場合は、注意が必要。また、HTTP POSTでは、通常、
キャッシュは行われない。.NET Framework 2.0のサービスヘルプペ
ージのテストでは、通常、HTTP POSTが使われているため、キャッシ
ュの効果は確認できない。

補足:サービスヘルプページのテストでHTTP GETが使われるようにす
るには、Windowsディレクトリの「Microsoft.NET」ディレクトリ以下
にある「CONFIG」ディレクトリ内の「DefaultWsdlHelpGenerator.
aspx」ファイルをエディタで開き、

bool showPost = true;

bool showPost = false;

に変更する。

さらに、"Cache-Control"が"no-cache"となっているHTTPヘッダが見
つかった場合はキャッシュは無効となる。

☆セッション状態を保存する

Webサービスでも、WebService.Sessionプロパティを使ってセッショ
ン状態の保存と取得を行うことができる。ただし、
WebMethodAttribute.EnableSessionプロパティをtrueとしたメソッド
でしかセッションは使用できない。

これとは別に、アプリケーション状態の保存と取得を行うWebService
.Applicationプロパティも使用できる。これは、EnableSessionプ
ロパティに関係なく、使用できる。

★HTTP GETを有効にする

デフォルトでは、作成されたWebサービスは、HTTP SOAPと、要求元が
ローカルコンピュータのHTTP POSTのみサポートしている(.NET
Framework 1.0では、HTTP GETとPOSTもサポートされている)。

HTTP GETやPOSTをサポートするには、Machine.configまたはWeb.
configファイルに<protocols>の<add>要素を追加する。

<configuration>
  <system.web>
    <webServices>
      <protocols>
        <add name="HttpPost"/>
        <add name="HttpGet"/>
      </protocols>
    </webServices>
  </system.web>
</configuration>

逆にプロトコルのサポートを無効にするには、<remove>要素を使用する。

add要素とremove要素のname属性には次のようなオプションがある。

HttpSoap:HTTP SOAPのサポートを制御する。デフォルトで有効。
HttpGet:HTTP GETのサポートを制御する。.NET Framework 1.1以上で
はデフォルトで無効。
HttpPost:HTTP POSTのサポートを制御する。.NET Framework 1.1以上
ではデフォルトで無効。
HttpPostLocalhost:要求元がローカルコンピュータのHTTP POSTのサ
ポートを制御する。デフォルトで有効。
Documentation:サービスヘルプページを表示するか。デフォルトで有
効。

このようにしてHTTP GETを有効にしたWebサービスにアクセスするに
は、ASMXファイルのURLの後に「/(メソッド名)」を付けたものを要求
先の基本的なURLとして、この後に「?」とクエリーパラメータを続け
る。クエリーパラメータは「(パラメータ名)=(値)」の形式で、複
数のパラメータは「&」で区切り。パラメータ名と値は必要に応
じてURLエンコードする。

例えば、Service.asmxのToUpperメソッドをパラメータ値を「abcde」
として呼び出すには、次のようにする。

http://localhost/Service/Service.asmx/ToUpper?str=abcde

HTTP POSTの場合も同様に、ASMXファイルのURLの後に「/(メソッド名
)」を付けたものを要求先のURLとして、パラメータを送信する。

★サービスヘルプページが表示されないようにする

ASMXファイルをWebブラウザで開くとサービスヘルプページが表示さ
れるが、これを表示されないようにするには、上記と同じように、
<protocols>の<remove>要素をMachine.configまたはWeb.configファ
イルに追加する。

<configuration>
  <system.web>
    <webServices>
      <protocols>
        <remove name="Documentation" />
      </protocols>
    </webServices>
  </system.web>
</configuration>

しかしこれでは、WSDLの生成も無効になる。WSDLを有効にしたま
まサービスヘルプページの表示を無効にするには、<
wsdlHelpGenerator>要素を使って、ASMXファイルに直接アクセスした
時に別のページが表示されるようにする。

次の例では、デフォルトのサービスヘルプページの代わりにblank.
htmlを表示するようにしている。

<configuration>
  <system.web>
    <webServices>
      <wsdlHelpGenerator href="blank.html"/>
    </webServices>
  </system.web>
</configuration>

★複数のデータを返すWebサービスメソッドを作成する

複数のデータを返すWebサービスメソッドが必要な場合は、それらの
データを格納できるクラスや構造体を作成して、メソッドの戻り値の
型として使用するようにする。

★例外をスローする

Webサービスメソッドから例外をスローする場合は、SoapExceptionを
スローし、Webサービスメソッドを呼び出したクライアントでも、
SoapExceptionをキャッチする。Webサービスメソッドから
SoapException以外の例外がスローされた場合は、SoapExceptionに変
換されて、クライアントにスローされる。

SoapExceptionでは、次のようなプロパティを設定できる。Message
プロパティには、例外の説明をするメッセージを指定する。Codeプ
ロパティには、SOAP違反コードの種類を指定する。クライアントの
呼び出し方に問題があれば、SoapException.ClientFaultCodeを指定
する。SoapException以外の例外がスローされた場合は、Codeに
SoapException.ServerFaultCodeが設定される。Actorプロパティに
は、通常、WebサービスメソッドのURLを指定する。Detailプロパテ
ィには、エラーの詳細を設定する。

Webサービスメソッドから例外をスローする例を以下に示する。

‥‥▽ここから▽‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
<WebMethod()> _
Public Function ToUpper(ByVal str As String) As String
    If str.Length = 0 Then
        Throw New SoapException("パラメータが空です。", _
            SoapException.ClientFaultCode, _
            Context.Request.Url.AbsoluteUri)
    End If

    Return str.ToUpper()
End Function
‥‥△ここまで△‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥

上記の例では、Message、Code、Actorプロパティを設定している。
Detailも設定してスローする方法は、MSDNの「XML Web サービスでの
例外の処理およびスロー」等をみて。

[URL]XML Web サービスでの例外の処理およびスロー
http://msdn2.microsoft.com/ja-jp/library/ds492xtk.aspx

★サンプル

上記のようにして作成したWebサービスのサンプルを下記のURLにおい
ておく。どのように表示されるか等を確認し、
このWebサービスは2週間ほどで削除される。(サーバーの環境が英語の
ため、英語で表示される。)

[URL]Webサービスのサンプル
http://aspspider.net/dobon/WebService.asmx

===============================
■ここで示したコードの多くはまずC#で書き、それを「C# to VB.NET
Translator」でVB.NETのコードに変換し、修正を加えたもの。

[URL]C# to VB.NET Translator
http://authors.aspalliance.com/aldotnet/examples/translate.aspx

■このマガジンの購読、購読中止、バックナンバー、説明に関しては
 次のページを参照。
 
http://www.mag2.com/m/0000104516.htm

===============================


by artis

Visual Source Safe를 이용하여 프로젝트 관리하기

2007. 9. 10. 11:53

= Check Out / Check In - Visual Source Safe를 이용하여 프로젝트 관리하기 =

1. 우선 새로운 프로젝트를 비주얼 베이직에서 만듭니다.

2. 생성된 프로젝트에 모듈과 클래스 모듈을   추가하고, 프로젝트를 저장하게 되면,
  "Add this project to SourceSafe?" 라고 묻는 메시지 박스가 나타납니다.
  이 메시지 박스는 현재 저장하는 프로젝트를 SourceSafe에 등록할지를 물어보는 것입니다.
  "Yes"를 선택하여 현재 프로젝트를 SourceSafe에 등록합니다.

3. 그러면 등록될 프로젝트의 이름을 물어보는 화면이 나옵니다.
  원하는 이름을 Project에 기입한 후 하단에 있는 디렉토리 구조에서 $/ 를 선택하고 "Ok"를 누릅니다.
  만일 현재 등록하려는 프로젝트가 다른 프로젝트의 하위 프로젝트라면 $/ 대신에
  해당 프로젝트의 디렉토리를 기본 디렉토리로 지정할 수도 있습니다.

4. 새로운 프로젝트 이름을 지정한 후에는 SourceSafe에 등록하기를 원하는 파일을 선택하는 화면이 나타납니다.
  모든 파일을 선택하기를 원하면 File Type에서 All을 선택하면 됩니다.
  Comment란에는 현재 등록하는 프로젝트에 대하여 간단히 설명하는 내용을 기입합니다.
  "Ok" 버튼을 선택하면 모든 과정이 완료되고 SourceSafe에 프로젝트가 등록됩니다.

5. 등록이 완료된 후 프로젝트 구조를 보면 등록된 모든 파일에 대하여 자물쇠 표시가 보입니다.
  이것은 해당 파일이 SourceSafe에 등록되어 있으며, 현재는 수정할 수 없다는 것을 나타내고 있는 것입니다.
  실제로 모듈에 코드를 추가하려고 해도 현재는 코드를 작성할 수가 없습니다.

6. 모듈에 대한 팝업 메뉴를 살펴보면
  Get Latest Version
  Check Out
  Check In...
  Undo Check Out
  이 메뉴들을 이용하여 해당 소스 코드를 관리합니다.

7. 프로그램 코드를 변경하고자 한다면 우선 해당 파일에 대하여 " Check Out " 을 해주어야 합니다.
  호텔에서 숙박을 마치고 나오는 경우에 Check Out이라고 하는 용어를 사용하듯이
  SourceSafe에서도 코드를 데이터베이스에서 나오게 하여 로컬에서 작업 가능하게 하는 경우에 Check Out을 사용합니다.

8. Check Out하기 위해서는 해당 파일에 대한 팝업 메뉴에서 Check Out을 선택해 주면 됩니다.
  Check Out하게 되면 프로젝트 탐색기에 해당 파일에 대하여 체크 표시가 됩니다.
  그러면 이 파일에 대해서는 수정할 수 있게 됩니다.

9. 원하는 코드를 추가한 후 수정 작업을 마치려면 팝업 메뉴에서 "Check In"을 선택합니다.
  Check In을 하면 Check Out한 상태에서 수정한 것을 SourceSafe 데이터베이스에 등록한 후 해당 파일을 다시 수정 불가한 상태로 만들게 됩니다.
  Check In을 할 때는 해당 파일에 대한 간단한 정보를 함께 입력할 수 있게 됩니다.
  Check In을 한 파일은 이제 다른 개발자에   의해 사용될 수 있게 됩니다.

10. 이와 같이 Check Out과 Check In이라는 간단한 동작으로 코드에 대한 관리를 해결하게 됩니다.
    즉, Check Out을 한 상태에서만 수정할 수 있으며
    하나의 파일에 대해서는 단 한 개발자만이 Check Out을 하여 파일을 수정할 수 있습니다.  수정을 완료하면 Check In을 하여 변경된 내용을 데이터베이스에 저장합니다.

by artis

Visual Source Safe(VSS)에 대해서

2007. 9. 10. 11:29

Visual Source Safe(VSS)에 대해서 아하 그렇구나!

追加参照 

2004/09/13 15:28

http://blog.naver.com/4eyer/140005789883

Check Out과 Check In이라는 간단한 동작으로 코드에 대한 관리를 해결하게 됩니다.


즉, Check Out을 한 상태에서만 소스를 수정할 수 있으며  하나의 파일에 대해서는 단 한 개발자만이 Check Out을 하여 파일을 수정할 수 있습니다.  수정을 완료하면 Check In을 하여 변경된 내용을 데이터베이스에 저장합니다. 중요한 것은, 반드시 Refresh를 하고 Check Out / Check In 해야한다는 것이다.


Check Out - 소스를 수정할 때
Undo Check Out - Check In을 안하고, 소스를 원상복귀하고 싶을 때

Check In - 수정된 소스를 DB에 저장할 때


[참고] Check Out을 안하고 수정하고 싶을 때는 파일을 Writable만으로 변경해서 바꾼다.

          이것을 등록할 때에는 나중에 Check Out을 통해 받은 후 변경한 파일과 Merge를 한 후

          다시 Check In 해 준다.


좀 더 자세히 알고 싶으면 아래를 참고한다.

http://kr.ks.yahoo.com/service/ques_reply/ques_view.html?dnum=JAI&qnum=131157



더 자세하게 나온 홈페이지도 있다.

http://canday.pe.kr/wiki/wiki.pl?SourceSafe

------------------------------------------------------------------

소스세이프(MS Visual SourceSafe)에 대해 관심있는 분들이 있어서 간략하게 끄적여보겠습니다. 설명서 등을 읽어보면 구체적인 사용법이 나와있죠, 하지만, 제 주변에서만 그런지는 모르겠지만, 프로그램을 보통 혼자서 만들어온 사람들 뿐이라, 소스세이프가 왜 필요한지, 어떻게 사용되는지, 이게 무슨 목적에서 쓰이는지 등에 대한 이해를 쉽게 못하는 것 같더군요. (물론 저라고 다른 사람들과는 다르게 한것도 아니죠.. 저도 처음엔 이해를 못했죠.) 그래서, 이 짧은 강좌에서는, 그런 궁금증을 조금이나마 긁어드리고자 합니다. 그리고, 기본적인 사용법을 적어보겠습니다.(구체적인 사용법은 소스세이프에 딸려있는 설명서를 읽어보고 알아내세요. 여기서는 간략한 것만 설명합니다.)

우선,저랑 같이 작업하는 프로그래머 아저씨들의 소스세이프에 대한 감정을 적어보죠.

강 모씨. "머 이런게 다있노 쓸데없다."
조 모씨. "열라 짜증나네 귀찮다 귀찮아."
이 모씨. "머 이런 거지같은게 다 있냐 갖다버려라."
김 모씨. "소스세이프를 이렇게 쓰는 사람도 다 있구나."
장 모씨. "머 이미 쓰는거니까 써 주지 머."
과반수가 나쁜 식의 평입니다! 민주사회에서 투표가 빠지면 콩고물 없는 시루떡이죠. 하지만, 중대한 문제가 있으면 거부권을 과감이 행사하는 법. 2년 넘게 잘만 쓰고 있죠. (내 짬밥에 누가 개기리. 엉? 다 개긴다고? 꺠갱..)저런 말을 한마디씩 했어도, "그래도 저거를 쓸수밖에 없다"정도 한마디는 합니다. 이 모씨 아저씨는 다른데 가서 저한테 어떻게 소스세이프 깔아 쓰는지를 물어봤습니다.네,맞습니다. 소스세이프는 불편한 놈입니다. 이중 삼중 작업 하는 기분이 들게 만듭니다. 속도도 느려집니다. 왠지는 모르겠지만, 버그 때문인지 비주얼씨를 먹통을 만드는 경우가 있기도 합니다! 소스세이프라는 이름 자체가 과장인 것 같기도 합니다.즉, 소스세이프는 필요없는데도 쓰는건 오히려 작업 환경을 불편하게 만듭니다. 하지만,필요할때는 무척 유용하게 쓰입니다.

그래서, 소스세이프가 우선 꼭 필요한지부터 검토를 해보세요. 보통 필요한 상황이라면,다음 상황을 가급적 많이 만족해야 합니다.

-정확하면서도 잦은 백업이 필요하다.
-실험작 프로그램을 만드는게 아니다.
-프로그램 디자인이 잘 되어 있다.
-프로그램 제작 기간이 다소 길다
-여러명 프로그래머가(보통 서너명 이상) 같이 동시에 작업한다.
-작업하는 컴퓨터들이 랜 등으로 연결되어 있다.
-복잡한 버전 관리를 해야 한다.
-어느 정도의 보안 관리가 필요하다.
-비주얼씨,비주얼베이직,비주얼인터데브(웹사이트만들때 이걸 쓰죠)를 쓴다.

이정도입니다. 복잡한가요? 쉽게 말하자면.. 보통 프로그래머 한둘이서 한두달 정도에 끝나는 작업이라면, 소스세이프를 안쓰는게 차라리 편할겁니다. 하지만, 프로젝트의 크기가 어느 정도 커지면, 쓰는게 좋다고 봅니다.

이쯤에서,"나는 소스세이프가 필요없다"고 생각하시는 분은 그만 읽으셔도 됩니다. 자자..그럼 어떻게 소스세이프를 깔아서 쓰는지를 설명해보죠.

소스세이프는 서버와 클라이언트로 나뉘어집니다. 서버는 모든 소스를 데이터베이스에 저장합니다. 클라이언트는 프로그래머가 쓰는 컴퓨터에 하나씩 깔려있는 소프트웨어인데, 이것은 서버와 네트워크로 통신하면서 소스를 관리할 수 있게 해줍니다. 그러니까, 만약 동시에 작업하는 프로그래머가 5명이라면, -서버 1개
-클라이언트 5개
이렇게 되겠죠. 그런데, 서버와 클라이언트는 한 개의 컴퓨터에 같이 쓰일 수 있습니다. 그러니까, 컴퓨터는 네트워크가 되는 5대가 필요하겠죠.우선,서버를 깔아야겠죠. 비주얼 스튜디오 또는 비주얼 소스세이프 소프트웨어를 우선 갖고 있어야겠죠? 제가 비주얼스튜디오6를 쓰기 때문에,그걸 기준으로 설명하겠습니다. 따로 갖고 계신 분은 알아서 찾으시길..우선,서버가 될 컴퓨터에 비주얼씨등을 깔고 나서,나중에 서버컴퍼넌트를 선택할 수 있습니다. 거기서 Sourcesafe server를 선택해서 설치하면 됩니다. 특별한 옵션은 없습니다. 그냥 full option으로 깔아도 됩니다. 그렇게 용량이 큰것도 아니니까요.
(이후부터는 여러가지 방법으로 설치할 수 있지만,간단한 방법을 제시해보겠습니다. 더 간단한 방법이나,더 안전한 방법 등이 있으면
귀뜸해주세요. 참고로,소스인사이트나 비주얼인터셉트같은 소프트웨어를 덤으로 깔아서 소스세이프를 강화할 수도 있습니다. 그런건 저도 써본적이 없기 때문에 잘 모르겠네요.)
다음에, 소스세이프가 깔려있는 폴더를 다른 컴퓨터에서 쓸수 있도록 공유를 해야 합니다. 읽기 쓰기 권한을 모두 주고요.
소스세이프는,정해진 사용자를 제외하고는 건들지 못합니다. 보안 중 하나죠. 그러니까,누가 그걸 쓸수 있는가를 정해야 합니다. 그러니까,시작 버튼을 눌러서 source safe를 선택하면.. source safe admin이라는게 있습니다. administrator라고 하죠. 소스세이프 서버를 관리하는 사용자를 말합니다. 기본 암호는 없거나 admin입니다. 이제 들어가고 나면, 썰렁한 윈도우 하나 나옵니다. 거기서 메뉴를 선택해서 사용자를 추가합니다. 각 사용자들의 암호도 당연히 필요하죠. 그리고, 당연하겠지만,admin의 암호도 뭔가를 집어넣어야겠죠? 만약,네트워크가 NT 도메인이라면,NT 도메인에 등록된 각 사용자의 암호와 사용자명을 그대로 쓰면 편합니다.(왜인지는 아래에 적어놓겠습니다.) 각 사용자에 대해서는 프로젝트 읽기,쓰기 등의 권한이 있습니다. 일단은 여러가지 실험을 해봐야겠죠? 그러니까,가급적 모든 권한을 할당하세요.서버는 이정도면 쫑입니다.

클라이언트를 이제 깔아야죠. 역시 비주얼씨등을 깝니다. 단,소스세이프 서버는 깔 필요가 없죠. 이제,서버에 공유시켰던 폴더를 그 컴퓨터에서 엽니다. 그리고, 그 안에 있는 netsetup.exe를 찾아보세요. (가끔 win32폴더 등에 그게 있기도 합니다. 상관없으니 일단 찾아보시길.) 찾았으면 실행! 역시 별다른 옵션이 없죠. 설치가 다 되었으면..비주얼씨를 실행해보세요.(비주얼베이직도 소스세이프와 연동되어 돌아가긴 하지만,여기서 비베를 쓰는 사람은 거의 없는것 같더군요.)위에서 NT도메인 궁시렁 한거 있죠? 그대로 한사람은 그냥 뜰겁니다. 하지만, 그렇지 않다면, 아마도 사용자명과 비밀번호를 묻는 박스가 나타날겁니다. 거기서 클라이언트 사용자의 이름과 비밀번호를 넣으세요.다 떴으면,오른쪽 버튼을 툴바에서 눌러보세요. 그러면, source control이라는 새로운 툴바가 있을겁니다. 그걸 켜두세요. 유용하게 쓰입니다.이제 소스세이프에 들어갈 프로젝트 하나를 만듭시다. appwizard등을 써서 프로젝트를 하나 만들거나,이미 있는 프로젝트를 여세요. 그다음에,project view(왼쪽에 길쭉한 트리)에서 파일뷰 탭을 누른 다음에 프로젝트 파일이 있는데다가 오른쪽 버튼을 누르면..

add to source control

이라는 항목이 있습니다. 그걸 선택하면,소스세이프의 데이터베이스 트리가 나옵니다. 소스세이프의 데이터베이스는 마치 디렉토리 구조와 같습니다. 프로젝트 1개는 한개의 폴더에 해당하고,폴더 안에는 또 다른 폴더가 들어갈 수 있습니다. 루트 폴더의 이름은 $/입니다. 그러니까, 일단은 $/의 서브 프로젝트로 추가를 해야겠죠.추가를 한 다음에,프로젝트뷰를 보면.. 원래 아이콘은 흰색이었죠? 근데 그게 회색으로 바뀌면서 옆에 빨간 v표시가 있을겁니다. 징그럽죠.. 여기서, 그게 뭔지를 설명하겠습니다.

마이크로소프트에서도 그렇게 하는지는 모르겠지만,프로그램을 만들때, 부득이한 경우가 아니면,소스 파일은 동시에 두명이 건드리지 않습니다. 그리고,각자가 맡은 파일 외에는 웬만하면 직접 건들지 않습니다. 만약 건드려야 한다면 버그레포팅이나 꾸지람(!) 등을 해서 그걸 건드리는 사람이 대신 건들게 합니다. 소스세이프에서는 이러한 기능을 소프트웨어 수준에서 처리하게 합니다. 그걸 어떻게 하느냐? 어떤 파일을 건들기 위해서는,그 파일은 "나만 쓸수 있다"는 독점권과 파일을 가져와야 합니다. 그리고, 그 파일을 작성하고 나서는 "이 파일은 다른 사람에게 전파되어야 한다"는 의미로 다시 파일을 갖다놔야 합니다. 파일을 소스세이프 서버로부터 가져오는것을 체크아웃(check out)이라고 하고,갖다 놓는것을 체크인(check in)이라고 합니다. 어떤 사람이 어떤 파일을 체크아웃하면,다른 사람은 자동으로 그 파일을 만질 수 없게 됩니다. 만지려고 소스에다가 글자 하나라도 입력하려고 하면 삥삥 소리나면서 글자가 안들어갑니다.

소스세이프가 연동된 비주얼씨에서는 그런 파일들을 아이콘으로 구별합니다. 하얀 파일 아이콘은 소스세이프에 묶이지 않은 파일이고,회색 아이콘은 묶인 아이콘입니다. 회색 아이콘 옆에 빨간 v표시가 있으면 그건 check out된 것이고,그렇지 않으면 check in된 것입니다. 우선은 모든 파일을 check in 하죠. check in 하는 방법은,프로젝트 뷰에서 파일을 선택한다음 아까 툴바의 check in버튼을 누르거나,소스세이프 익스플로러(소스세이프 클라이언트의 이름입니다.)에서 프로젝트를 선택한 다음 통째로 체크인할수있습니다. 하지만,일단은 프로젝트뷰에서 파일을 하나하나 다 선택한다음 체크인을 하세요.

다음에, 소스세이프가 깔려있는 폴더를 다른 컴퓨터에서 쓸수 있도록 공유를 해야 합니다. 읽기 쓰기 권한을 모두 주고요.
소스세이프는,정해진 사용자를 제외하고는 건들지 못합니다. 보안 중 하나죠. 그러니까,누가 그걸 쓸수 있는가를 정해야 합니다. 그러니까,시작 버튼을 눌러서 source safe를 선택하면.. source safe admin이라는게 있습니다. administrator라고 하죠. 소스세이프 서버를 관리하는 사용자를 말합니다. 기본 암호는 없거나 admin입니다. 이제 들어가고 나면, 썰렁한 윈도우 하나 나옵니다. 거기서 메뉴를 선택해서 사용자를 추가합니다. 각 사용자들의 암호도 당연히 필요하죠. 그리고, 당연하겠지만,admin의 암호도 뭔가를 집어넣어야겠죠? 만약,네트워크가 NT 도메인이라면,NT 도메인에 등록된 각 사용자의 암호와 사용자명을 그대로 쓰면 편합니다.(왜인지는 아래에 적어놓겠습니다.) 각 사용자에 대해서는 프로젝트 읽기,쓰기 등의 권한이 있습니다. 일단은 여러가지 실험을 해봐야겠죠? 그러니까,가급적 모든 권한을 할당하세요.서버는 이정도면 쫑입니다.

클라이언트를 이제 깔아야죠. 역시 비주얼씨등을 깝니다. 단,소스세이프 서버는 깔 필요가 없죠. 이제,서버에 공유시켰던 폴더를 그 컴퓨터에서 엽니다. 그리고, 그 안에 있는 netsetup.exe를 찾아보세요. (가끔 win32폴더 등에 그게 있기도 합니다. 상관없으니 일단 찾아보시길.) 찾았으면 실행! 역시 별다른 옵션이 없죠. 설치가 다 되었으면..비주얼씨를 실행해보세요.(비주얼베이직도 소스세이프와 연동되어 돌아가긴 하지만,여기서 비베를 쓰는 사람은 거의 없는것 같더군요.)위에서 NT도메인 궁시렁 한거 있죠? 그대로 한사람은 그냥 뜰겁니다. 하지만, 그렇지 않다면, 아마도 사용자명과 비밀번호를 묻는 박스가 나타날겁니다. 거기서 클라이언트 사용자의 이름과 비밀번호를 넣으세요.다 떴으면,오른쪽 버튼을 툴바에서 눌러보세요. 그러면, source control이라는 새로운 툴바가 있을겁니다. 그걸 켜두세요. 유용하게 쓰입니다.이제 소스세이프에 들어갈 프로젝트 하나를 만듭시다. appwizard등을 써서 프로젝트를 하나 만들거나,이미 있는 프로젝트를 여세요. 그다음에,project view(왼쪽에 길쭉한 트리)에서 파일뷰 탭을 누른 다음에 프로젝트 파일이 있는데다가 오른쪽 버튼을 누르면..

add to source control

이라는 항목이 있습니다. 그걸 선택하면,소스세이프의 데이터베이스 트리가 나옵니다. 소스세이프의 데이터베이스는 마치 디렉토리 구조와 같습니다. 프로젝트 1개는 한개의 폴더에 해당하고,폴더 안에는 또 다른 폴더가 들어갈 수 있습니다. 루트 폴더의 이름은 $/입니다. 그러니까, 일단은 $/의 서브 프로젝트로 추가를 해야겠죠.추가를 한 다음에,프로젝트뷰를 보면.. 원래 아이콘은 흰색이었죠? 근데 그게 회색으로 바뀌면서 옆에 빨간 v표시가 있을겁니다. 징그럽죠.. 여기서, 그게 뭔지를 설명하겠습니다.

마이크로소프트에서도 그렇게 하는지는 모르겠지만,프로그램을 만들때, 부득이한 경우가 아니면,소스 파일은 동시에 두명이 건드리지 않습니다. 그리고,각자가 맡은 파일 외에는 웬만하면 직접 건들지 않습니다. 만약 건드려야 한다면 버그레포팅이나 꾸지람(!) 등을 해서 그걸 건드리는 사람이 대신 건들게 합니다. 소스세이프에서는 이러한 기능을 소프트웨어 수준에서 처리하게 합니다. 그걸 어떻게 하느냐? 어떤 파일을 건들기 위해서는,그 파일은 "나만 쓸수 있다"는 독점권과 파일을 가져와야 합니다. 그리고, 그 파일을 작성하고 나서는 "이 파일은 다른 사람에게 전파되어야 한다"는 의미로 다시 파일을 갖다놔야 합니다. 파일을 소스세이프 서버로부터 가져오는것을 체크아웃(check out)이라고 하고,갖다 놓는것을 체크인(check in)이라고 합니다. 어떤 사람이 어떤 파일을 체크아웃하면,다른 사람은 자동으로 그 파일을 만질 수 없게 됩니다. 만지려고 소스에다가 글자 하나라도 입력하려고 하면 삥삥 소리나면서 글자가 안들어갑니다.

소스세이프가 연동된 비주얼씨에서는 그런 파일들을 아이콘으로 구별합니다. 하얀 파일 아이콘은 소스세이프에 묶이지 않은 파일이고,회색 아이콘은 묶인 아이콘입니다. 회색 아이콘 옆에 빨간 v표시가 있으면 그건 check out된 것이고,그렇지 않으면 check in된 것입니다. 우선은 모든 파일을 check in 하죠. check in 하는 방법은,프로젝트 뷰에서 파일을 선택한다음 아까 툴바의 check in버튼을 누르거나,소스세이프 익스플로러(소스세이프 클라이언트의 이름입니다.)에서 프로젝트를 선택한 다음 통째로 체크인할수있습니다. 하지만,일단은 프로젝트뷰에서 파일을 하나하나 다 선택한다음 체크인을 하세요.

옆의 빨간 v가 없어졌을겁니다. 이제,그 파일들의 방금 체크인된 것들은 서버에 저장되었고,다른사람들은 그것들을 가져다가 쓸수 있습니다.

이제,그 소스 파일 중 하나를 열어서,글자를 입력하려고 해보세요. 박스가 튀어나옵니다. "이 파일을 체크아웃해서 쓸거냐?"는 질문이죠. "예"를 선택하면 체크아웃을 합니다. 일단은 그냥 냅두세요. 편의상 이 클라이언트는 컴1이라 부르죠.

이제,다른 컴퓨터(편이상 컴2라 부르죠.)에도 아까 언급했던 식으로 클라이언트를 설치하세요. 거기서는 아까 서버에 넣은 소스를 가져와서 작업해야겠죠. 소스세이프익스플로러를 띄우세요. 그러면,아까 넣어둔 프로젝트 폴더가 있을겁니다. 그걸 선택한다음,set working folder버튼을 누르세요. 서버에 있는 폴더는 파일 폴더가 아닙니다. 그렇기 때문에, 그것에 대칭되는 폴더를 각자의 컴퓨터에 마련을 해야 합니다. 그게 working folder입니다. 웬만하면 working folder의 이름과 프로젝트의 이름을 같게 하는게 좋습니다. 안그러면 중간에 짜증나는 일이 생기죠.

만들면,서브폴더를 만들건지를 묻습니다. 만드는게 좋습니다. 이제, 서버에서 파일들을 가져와야겠죠. 그렇지만,당장 편집할건 아니고,서버에 저장되어 있는 것들만 가져올 뿐입니다. 그걸 하기 위해서는 get latest version이라는것을 선택하면 됩니다. 그러면,파일들이 클라이언트에 복사가 됩니다. 그걸 비주얼씨에서 프로젝트째로 열면,회색 아이콘으로 나올겁니다. v표시는 없죠?

아까 아까 클라이언트에서 체크아웃 하신거 아시죠? 그 파일을 열고 뭔가를 입력해보세요. 삥삥 소리나면서 글자가 안들어갈겁니다. 다른 사람이 이미 그 파일을 체크아웃했기 때문입니다. 그걸 쓰기 위해서는 그걸 체크아웃한 사람이 다시 체크인을 하거나 체크아웃을 취소해야 합니다.(만약,체크아웃했는데,필요가 없어서 취소하는걸 undo check out이라고 합니다.그러면,소스가 원상복구되죠.) 일단은 체크인을 합시다. 이제,컴2에서 그 파일을 체크아웃하세요. 여전히 삥삥대죠? 비주얼스튜디오의 번거로운 점 하나입니다. 비주얼스튜디오와 소스세이프의 연동관계까지는 좋지만,자기 컴퓨터 바깥에서 일어나는 일에 대해서는 연동되지 않습니다. 그렇기 때문에, 비록 체크인이 된 파일이더라도,그런 상황을 자동으로 알아내지 않습니다. 소스컨트롤 툴바에 보면 느낌표 아이콘이 있습니다. refresh라는 버튼이죠.. 그걸 눌러줘야 외부에서 일어난 다시 검사합니다. 자, refresh버튼을 누른 다음에 다시 소스에다가 입력을 해보세요. 아까 체크아웃할거냐는 질문을 던지죠? 체크아웃을 해보세요. 컴1에서 바꿨던 부분이 역시 튀어나오죠? 왜냐하면 컴1에서 체크인을 했기 때문에,데이터베이스에 있는 그 파일은 컴1에서 변경한 것이 있기 때문입니다. 그런데, 만약 그 파일을 체크아웃하지 않고 그냥 최근판으로 가져오고 싶을 때가 있습니다. 그럴때는 체크아웃대신에 get latest version을 선택하면 됩니다.

소스세이프의 장점 중 하나는,소스 파일의 변경 상황을 모조리 저장한다는겁니다. 그러니까,어떤 파일을 100번 정도 체크인했다면,그 100번 체크인한 소스가 모조리 저장됩니다. 용량 엄청 먹을것 같다고요? 소스세이프는 나름대로의 소스 저장 방식을 갖고 있습니다. 그렇기 때문에,예상보다는 훨씬 적은 양의 하드 디스크를 차지합니다. 예를 들어,제가 쓰고 있는 소스세이프 서버의 데이터베이스는 약 2년간 써왔는데, 전체 용량이 20메가입니다. 어카이빙이라고 해서,소스를 한개 파일로 압축해주는 기능이 있는데,그걸 쓰면 4메가가 됩니다. 소스 전체 합치면 1메가 좀 넘으니까,소스 크기가 일정 속도로 늘었다는 가정하게 계산해보면, 0.5메가(일정 속도로 늘었다고 가정했으니까)*365(하루 한번 체크인했다고 가정)*2하면.. 365메가죠? 그렇지만 실제로는 20메가..(정확하게 몇번 체크인했는지 등을 뽑아내는 방법은 모르기에,이렇게 어림짐작해봅니다.)그게 어떻게 나오는지 해봅시다. 소스세이프익스플로러에서 프로젝트 폴터를 선택한다음 view history를 선택해보세요. 그러면,지금까지,언제 누가 어떤 소스 파일을 어떻게 했다는게 좍 나옵니다. 물론, 옛날 소스 파일을 가져올 수도 있습니다.

이게 소스세이프의 기본적인 기능입니다. 이 외에도, 소스세이프의 기능에는..
branching/merging(한개 이상의 소스 파일 버전을 여러 갈래로 나눠서 여러 사람이 작업하다가 나중에 한꺼번에 합치는 방법)
back up,roll back(어느 날짜 이전의 소스를 가져오거나 그 날짜로 소스를 되돌리는 방법.. 심각한 문제가 발생했을때 이렇게 소스를 복구할 수 있죠.)

command line 사용(소스 파일이 한두개가 아니면,배치파일 등을 만들어서 어느 정도 자동화할 수 있습니다.)
difference(두 개 이상의 소스 파일이나, 한개 소스 파일의 지나간 버전간의 소스 내용의 차이를 구별할 수 있습니다.)
label(체크인할때 넣는 주석과는 달리,프로젝트 통째로 메이저 버전을 넣어서 엮는 방법. 버전 1.1,버전 1.2등 릴리즈가 작성되었을때 이걸 해두면 편합니다.)
report(윗사람한테 어떤 작업하고 있었는지 보고 정도는 해야겠죠?)
share(한개의 파일이 변하면,그게 다른 프로젝트에도 복사되게하는 기능)
webdeploy(웹페이지소스를 웹서버에 올릴때 쓰는 기능. 안써봐서 모르겠네요.)
가 있습니다. 이건 제 강좌를 이해하시면,소스세이프 설명서만 읽어도 충분히 이해갈 수 있는 것들이니까,굳이 어떻게 쓰는건진 설명하지 않겠습니다.

가급적 짧게 쓰려고 했는데,이상하게 길어졌군요. 고삘때 팰콘3.0강좌쓴 이후로 거의 강좌라곤 써본적이 없는지라,좀 어색하네요. 그렇지만,아무쪼록 도움이 되면 좋겠네요.

그럼 이상.

1999년 여름..

--------------------------------------------------------------------------



by artis

【Access】 myAccess手順

2007. 8. 22. 13:44

 【Access】 myAccess手順
by artis

【家計簿ならエクセルで】 エクセルの家計簿ソフト大百科

2007. 8. 19. 23:59

by artis

【Excel, VB】 電卓を作ろう

2007. 8. 15. 11:24

ユーザー挿入画像













ユーザー挿入画像










ソースの内容

---==---==---==---==---==---==---==---==---==---==---==---
------------------------------------------------ UserForm1

Dim btn(1 To 15) As New Class1

Private Sub UserForm_Initialize()
Dim ctlButton As Control
Dim i As Long
    For i = 1 To 15
      'コマンドボタン 1~15クラスモジュールに渡す
      Set btn(i).myButton = Controls("CommandButton" & i)
    Next i
End Sub

Private Sub CommandButton16_Click()
    blnChk = True
    TextBox1.Text = 0
End Sub

Private Sub CommandButton17_Click()
    On Error GoTo er:
    blnChk = True
    TextBox1.Value = Application.Evaluate(TextBox1.Value)
    Exit Sub
er:
    TextBox1.Value = "エラー:" & Err
End Sub


---==---==---==---==---==---==---==---==---==---==---==---
---------------------------------------------------- Class1

Public WithEvents myButton As msforms.CommandButton

Private Sub myButton_Click()
    If blnChk Then
      blnChk = False
      UserForm1.TextBox1.Text = vbNullString
    End If
    UserForm1.TextBox1.Text = UserForm1.TextBox1.Text & myButton.Caption
End Sub


---==---==---==---==---==---==---==---==---==---==---==---
--------------------------------------------------- Module1

Public blnChk As Boolean

Sub showUserform()
    blnChk = True
    UserForm1.TextBox1.Text = 0
    UserForm1.Show
End Sub


---==---==---==---==---==---==---==---==---==---==---==---

by artis

【Excel】 Excel VBA 入門講座

2007. 8. 1. 15:53

by artis