728x90
300x250

[C#.NET] openFileDialog를 이용한 파일 첨부 기반 예제

이번 예제는 openFileDialog를 활용하여 파일 첨부 기반을 만드는 방법을 소개하도록 하겠습니다.
이 강좌는 파일 처리 기능은 구현하지 않았습니다. 이유는 openFileDialog를 활용하는 것이 핵심 키워드이기 때문입니다.
이 점을 인지하고 읽어주시기 바랍니다.
한 가지 더 말씀드리자면, openFileDialog를 활용하는 예제이기에 파일 제약 조건에 관하여 언급하였습니다.


1. 폼 인터페이스 디자인



TextBox, Button, openFileDialog를 적절히 배치해주시기 바랍니다.

 

 


2. 소스 코드

Button을 더블 클릭하시어 소스코드를 불러오시고 입력하시기 바랍니다.


        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFile = new OpenFileDialog();
            openFile.DefaultExt = "jpg";
            openFile.Filter = "Images Files(*.jpg; *.jpeg; *.gif; *.bmp; *.png)|*.jpg;*.jpeg;*.gif;*.bmp;*.png";
            openFile.ShowDialog();
            if (openFile.FileNames.Length > 0)
            {
                foreach (string filename in openFile.FileNames)
                {
                    this.textBox1.Text = filename;
                }
            }
        }


openFile.DefaultExt = "기본확장자";
openFile.Filter = "항목이름정의1|확장자1;확장자2;  … 확장자n;|   … 항목이름정의n|확장자1;확장자2;  … 확장자n;";
openFile.ShowDialog();  -> 파일 열기 창 호출



3. 동작 과정




첨부(Attachment)
101222_c#_Example.zip

 

반응형
728x90
300x250
[C#.NET] Base64

Base64는?

컴퓨터 분야에서 쓰이는 Base 64 (베이스 육십사)란 8비트 이진 데이터(예를 들어 실행 파일이나, ZIP 파일 등)를 문자 코드에 영향을 받지 않는 공통 ASCII 영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식을 가리키는 개념이다.

원래 Base 64를 글자 그대로 번역하여 보면 64진법이란 뜻이다. 특별히 64진법이 컴퓨터에서 흥미로운 것은, 64가 2의 제곱수(64 = 26)이며, 2의 제곱수들에 기반한 진법들 중에서 화면에 표시되는 ASCII 문자들을 써서 표현할 수 있는 가장 큰 진법이기 때문이다. 즉, 다음 제곱수인 128진법에는 128개의 기호가 필요한데 화면에 표시되는 ASCII 문자들은 128개가 되지 않는다.

그런 까닭에 이 인코딩은 전자 메일을 통한 이진 데이터 전송 등에 많이 쓰이고 있다. Base 64에는 어떤 문자와 기호를 쓰느냐에 따라 여러 변종이 있지만, 잘 알려진 것은 모두 처음 62개는 알파벳 A-Z, a-z와 0-9를 사용하고 있으며 마지막 두 개를 어떤 기호를 쓰느냐의 차이만 있다.


출처 : Wikipedia

Base64는 이메일이나 SMS와 같은 데에서 많이 사용되고 있다고 합니다.



1. 소스 코드


        static void Main()
        {
            string str = "도도";
            str = EncodeTo64(str);
            Console.WriteLine(str);
            str = DecodeFrom64(str);
            Console.WriteLine(str);
        }
        public static string EncodeTo64(string toEncode)
        {
            byte[] toEncodeAsBytes = System.Text.Encoding.Unicode.GetBytes(toEncode);
            string returnValue = System.Convert.ToBase64String(toEncodeAsBytes);
            return returnValue;
        }
        public static string DecodeFrom64(string encodedData)
        {
            byte[] encodedDataAsBytes = System.Convert.FromBase64String(encodedData);
            string returnValue = System.Text.Encoding.Unicode.GetString(encodedDataAsBytes);
            return returnValue;
        }
}

출력 결과


[첨부(Attachment)]

101223_C#_Base64_example.7z

 

반응형
728x90
300x250

Windows 2008 - Active Directory 도메인 서비스 (마스터 구성)

Windows NT 서버의 핵심이라 볼수도 있는 Active Directory 서비스에 대해 먼저 개념정리를 하겠습니다.
한글 순화 용어는 '능동 디렉토리 도메인 서비스'라고 부를 수 있습니다. Active Directory 서비스의 사전적 의미는 아래처럼 정의할 수 있습니다.

분산 컴퓨팅 환경에 있는 다른 네트워크 공급자의 디렉터리 서비스 기능에 접근하여 네트워크 자원을 관리할 수 있도록 단일 디렉터리 서비스를 제공하는 인터페이스. 마이크로소프트(MS)사 제품으로 ADSI 서비스를 사용하여 자원이 포함된 네트워크 환경에 관계 없이 디렉터리 서비스에서 자원을 열거하고 관리할 수 있다. 즉, 능동 디렉터리를 사용하여 분산 컴퓨팅 환경에서 자원을 찾는 것과 같은 일반적인 관리 작업을 수행한다.



1. 환경 구성하기

서버 관리자에서 역할 추가에서 Active Directory 도메인 서비스를 추가할 수 있습니다.


2. Adpromo.exe 실행

이전의 운영체제와 달리 도메인 컨트롤러를 사용하기 위해선 먼저 역할 추가를 통해 Active Directory 도메인 서비스를 구성해야만 합니다.
그리고 역할에서 Adpromo 실행을 클릭합니다.



다음을 클릭합니다.



다음을 클릭합니다.



아직 귀하의 컴퓨터에 도메인 환경이 없다고 가정하고 '새 포리스트에 새 도메인 만들기'를 클릭한 후에 다음을 클릭합니다.



포리스트 이름에 대해 중복 여부를 확인합니다.



Windows Server 군에 따라 호환성을 결정할 수 있습니다.
상위버전이면 하위버전에서 인식할 수 없으므로 접근이 불가능합니다.
자세한 내용은 도움말을 참조하시기 바랍니다.
다음을 클릭합니다.



도메인 컨트롤러이기에 DNS서버가 필요합니다.
상식 선에서 이해하시기 바랍니다. 더 자세한 내용은 MSDN 홈페이지를 참조하시기 바랍니다.



글로벌 카달로그는 말 그대로 Branch Office 개념을 생각하시면 될 것입니다.
예를 들자면, 삼성 그룹의 본사는 서울에 있습니다.
해외에 다양한 사업부가 존재합니다.
본사 그룹에서는 자료처리를 종합하는 컨트롤 타워의 기능을 수행하기에 외부에 간섭을 받지 않아야 합니다.
그러므로 글로벌 카달로그는 성립할 수 없습니다.

다음을 클릭합니다.

DNS서버를 구성하기 위한 고정 IP 설정을 하신 후 확인을 누릅니다.



'예'를 누릅니다.



Active Directory 도메인 서비스의 파일 경로를 입력합니다.
다음을 클릭합니다.



디렉토리 서비스 복원 관리자 암호를 설정합니다.



지금까지 설정한 환경 설정의 정보입니다.
확인하신 후 다음을 클릭합니다.



설치 과정 창 입니다.



마침을 클릭합니다.



Active Directory 도메인 서비스 설치 마법사가 마무리되었으므로 다시 시작해야 합니다.
지금 다시 시작을 누릅니다.

반응형
728x90
300x250

[C#.NET] 클래스 - Overriding 개념

C# Overriding은 불필요한 공통 변수 선언을 최소화하여 효율성을 높이는 개념입니다.
이전의 글 Override에서 언급한 부모와 자녀의 관계처럼 선언에 대해 관계를 형성하는 것으로 생각하시면 됩니다.


1. 코드

 

 


using System;
class Book
{
    public string title;
    public string editor;
    public string publisher;
    public decimal price;
    public int page;
    public Book(string intitle)
    {
        title = intitle;
    }
    public Book(string intitle, string ineditor)
    {
        title = intitle;
        editor = ineditor;
    }
    public Book(string intitle, string ineditor, string inpublisher, decimal inprice, int inpage)
    {
        title = intitle;
        editor = ineditor;
        publisher = inpublisher;
        price = inprice;
        page = inpage;
    }
    public void showfields()
    {
        Console.WriteLine("제목:" + title + "\n저자:" + editor + "\n출판사:"
            + publisher + "\n가격:" + price + "\n페이지:" + page + "\n");
    }
}
class Program
{
    static void Main()
    {
        Book ba = new Book("부의미래");
        Book bb = new Book("국화와 칼", "루스 베네딕트");
        Book bc = new Book("회계원리", "유관희", "흥문사", 23000, 549);
        ba.showfields();
        bb.showfields();
        bc.showfields();
    }
}
반응형
728x90
300x250

[C#.NET] 클래스 - 부모와 자녀의 파라메터 값을 중복 허용

만약 부모와 자녀가 갖고 있는 공통의 값이 예를 들자면 핸드폰이 있다고 칩시다.
cel이라는 파라메터가 둘 다 필요하게 될 것입니다.
자녀는 부모 없이 존재가능한가요?
즉 다시말하면 부모와 자녀와의 관계에서 공통적으로 갖는 특색이 중복되어야만 할 상황이 생길 때 해결하는 방법입니다.


1. 기본 클래스 방법(New 클래스를 이용)

이 예제에서 기본 클래스 BaseC 및 파생 클래스 DerivedC는 동일한 필드 이름 x를 사용하므로 상속된 필드의 값이 숨겨집니다.
이 예제는 new 한정자의 사용법을 보여 줍니다. 또한 정규화된 이름을 사용하여 기본 클래스의 숨겨진 멤버에 액세스하는 방법을 보여 줍니다.

using System;
public class BaseC
{
    public static int x = 55;
    public static int y = 22;
}
public class DerivedC : BaseC
{
    new public static int x = 100;
    static void Main()
    {
        Console.WriteLine(x);
        Console.WriteLine(BaseC.x);
        Console.WriteLine(y);
    }
}

100
55
22

이 예제에서 중첩 클래스는 기본 클래스에서 이름이 동일한 클래스를 숨깁니다. 이 예제에서는 new 한정자를 사용하여 경고 메시지를 제거하고 정규화된 이름을 사용하여 숨겨진 클래스 멤버에 액세스하는 방법을 보여 줍니다.


using System;
public class BaseC
{
    public class NestedC
    {
        public int x = 200;
        public int y;
    }
}
public class DerivedC : BaseC
{
    new public class NestedC
    {
        public int x = 100;
        public int y;
    }
    static void Main()
    {
        NestedC c1 = new NestedC();
        BaseC.NestedC c2 = new BaseC.NestedC();
        Console.WriteLine(c1.x);
        Console.WriteLine(c2.x);
    }
}

출력 : 100
         200



2. Virtual 선언과 Overide 이용


using System;

class Player
{
    virtual public void showMessage()
    {
        Console.WriteLine("Player 클래스의 메시지");
    }
}

class StarcraftPlayer : Player
{
    public override void showMessage()
    {
        Console.WriteLine("StarcraftPlayer");
    }
}

class Program
{
    static void Main()
    {
        StarcraftPlayer sp = new StarcraftPlayer();
        sp.showMessage();
        Player p = new Player();
        p.showMessage();
    }
}


반응형

'소프트웨어(SW) > MS - Visual C#.NET' 카테고리의 다른 글

[C#.NET] Base64  (8) 2010.12.22
[C#.NET] 클래스 - Overriding 개념  (9) 2010.11.24
[C#.NET] Out과 Ref의 차이점  (6) 2010.11.19
[C#.NET] foreach 문  (6) 2010.11.17
[C#.NET] 구조체 설명  (6) 2010.11.17
728x90
300x250

[Win2003] IIS 6 - FTP Passive 설정

FTP Passive 설정에 앞서 정규화 포트와 비정규화 포트에 대해서 알아보겠습니다.
정규화 포트는 21포트를 의미합니다. 정규화 포트는 Active Mode 대역이 20~21입니다.
비정규화 포트는 포트 단위의 연산을 통해 대역을 정하게 됩니다. (계산 과정 생략)
더불어 비정규화 포트는 21포트를 제외한 나머지 포트 대역을 의미합니다.
Passive Mode를 통해 FTP를 개방하는 방법에 대해서 글을 올려볼까 합니다.

1. Metabase 허용

IIS 6에서 Passive 모드를 사용하기 위해선 먼저 Metabase 파일을 허용해야 합니다.
참고) C:\Windows\System32\Inetsrv에 있는 MetaBase.XML 파일에 Metabase 설정 파일이 있습니다.




컴퓨터 관리에서 IIS를 클릭 후 환경설정을 실행합니다.



Metabase Edit 허용을 체크합니다.

2. Passive 포트 대역 설정

Passive 설정에는 IIS의 Adminscripts(Cscript) 를 이용하는 방법과 수동으로 하는 방법이 있습니다.
1번에서 언급한 Metabase.xml 파일을 수정하기를 이용하는 방법을 먼저 설명하겠습니다.



찾기에서 /LM/MSFTP를 검색합니다.
PassivePortRange에서 범위를 정하면 됩니다.

두번째 방법은 Adminscripts(Cscript)를 이용하는 방법입니다.



실행에서 cmd를 호출 후 Inetpub의 Adminscripts 폴더로 이동합니다.
>cd c:\inetpub\admin*
그리고 아래와 같이 입력합니다.
(포트 범위는 임의 대역을 사용할 수 있습니다. (단, 0<X<65535)
cscript.exe adsutil.vbs set /MSFTPSVC/PassivePortRange "5003-5111"

3. 방화벽 허용
포트 범위에 따른 방화벽을 허용해야 합니다.
윈도우 방화벽에 수동으로 입력하면 시간이 오래걸리므로 반복문을 호출하여 입력하겠습니다.
>FOR /L %I IN (5003,1,5111) DO netsh firewall add portopening TCP %I "Passive FTP"%I

참고) 방화벽 제거
>FOR /L %I IN (5003,1,5111) DO netsh firewall delete portopening TCP %I
portopening 방법과 allowedprogram 방법이 있습니다.
자세한 내용은 ?를 통해서 확인하시면 됩니다.

4. 격리시킨 계정의 폴더에 권한 설정



사용자계정의 위치 : 드라이브위치\격리된 폴더\LocalUser\사용자 계정
Everyone의 권한을 전체로 부여합니다.

5. FTP Publishing Service 재시작



FTP 서비스를 재시작합니다.

6. 상태 확인

FTP 프로그램을 이용하여 환경설정을 입력합니다.



설정 후 Passive Mode를 선택하시고 접속하시면 됩니다.

반응형
728x90
300x250

[Win2003] IIS 6 - ASP.NET CS0016 : Could not write to output file 에러 해결 방안

Compiler Error Message: CS0016: Could not write to output file ‘c:\WINDOWS\Microsoft.NET\Framework\버전\Temporary ASP.NET Files\myapp\xxxxx\xxxxx\App_GlobalResources.xxxxxxx.dll’ — ‘Access is denied.’

IIS6에 ASP.NET을 초기 설치 시 발생할 확률이 높은 오류입니다.
주로 컴파일러에 파일을 출력할 수 없을 때 발생하는 오류입니다.


1. 해결방안

32bit일 때 Framework 경로
C:\Windows\Microsoft.NET\Framework\버전\Temporary ASP.NET Files\
64bit일 때 Framework 경로
C:\Windows\Microsoft.NET\Framework64\버전\Temporary ASP.NET Files\

공통사항 임시 폴더
C:\Windows\Temp


Everyone과 Network Service의 권한을 전체 허용으로 해줍니다.
반응형
728x90
300x250

[Win2003] IIS 6 - ASP.NET 사용하기

Windows 2003에서 NET Framework의 ASP.NET을 사용하기 위해서는 별도로 환경설정을 설치를 해주어야 합니다.
먼저 IIS에서 ASP.NET을 사용하도록 허용한 뒤에 그것을 감지할 수 있는 환경설정 설치 프로그램을 통해 사용가능한 상태로 변경해주어야 합니다.

1. NET Framework ASP.NET의 Application 상태 허용



2. IIS WebSite의 Net Framework 버전을 선택하여 환경설정 하기



버전에 맞도록 설정한 내용을 통해 설치가 이루어집니다.
각 설정에 맞도록 별도의 디렉터리에 설치가 이루어집니다.

3. CMD(명령프롬프트)를 통한 환경설정 설치


C:\Windows\Microsoft.NET\Framework\버전\aspnet_regiis.exe -i

버전 별로 컴파일을 할 수 있으니 사용자의 환경에 맞게 찾아 컴파일하시면 됩니다.

반응형

+ Recent posts