[\x80-\xFF]{2}
를 이용한 영문 이외의 문자 검출방법에서힌트를 얻었다.

유니코드에서 한글은 u+1100(첫가끝영역), u+ac00(한글완성형영역), u+3130(한글자모영역) 이렇게 세가지 영역에 분포되어 있습니다...
http://www.unicode.org/charts/PDF/UAC00.pdf http://www.unicode.org/charts/PDF/U1100.pdf http://www.unicode.org/charts/PDF/U3130.pdf
라는 귀중한 정보를 바탕으로
([\uac00-\ud7af\u3130-\u318f\u1100-\u11FF])*식을 만들고
그리고 ASCII영역중 기호 숫자 알파벳 영역
([\x20-\x7e])*을 추가

다음은 일본어 검출

[\x20-\x7e]     //JISローマ字(ASCII)・文字コード表
[\uff61-\uff9f] //JISカナ(半角カナ)・文字コード表
확인결과
일본어 한자는 코드가 산재해있어 식으로 만드는것은 무리가 있어보인다. =.=

참고사이트
http://ash.jp/code/index.htm
http://kldp.org/node/63910

-----------------------------------------------------------------------------------------------------------------
라고 알고 있었는데..

IsCJKUnifiedIdeographs 라는 녀석이 있었다..
뭐 간단히 말하면 한자 영역..
여기에 히라가나 카다카나 영역등을 넣어서 버무리면 뭔가 만들어지겠지..

다음에 혹시 필요할까봐 첨부해둠 ㅋ

AND

이번에 영문문서대응 작업때문에 로마숫자의 점검용 코드를 줃었다.;;;(머리싸매서 하는것도 좋지만 시간대비 효용이..)

로마숫자에 대한 개요는 이걸 참조하고..

Roman Alternative Arabic Notes
없음 없음 0 0을 표시할 수 없음.
I 1  
II ⅠⅠ (or Ⅱ) 2  
III ⅠⅠⅠ (or Ⅲ) 3  
IV ⅠⅤ (or Ⅳ) 4 시계 문자판 등에서는 IIII (ⅠⅠⅠⅠ)이 쓰임.
V 5  
VI ⅤⅠ (or Ⅵ) 6  
VII ⅤⅠⅠ (or Ⅶ) 7  
VIII ⅤⅠⅠⅠ (or Ⅷ) 8  
IX ⅠⅩ (or Ⅸ) 9  
X 10  
XI ⅩⅠ (or Ⅺ) 11  
XII ⅩⅠⅠ (or Ⅻ) 12  
XIII ⅩⅠⅠⅠ 13  
XIV ⅩⅠⅤ 14  
XV ⅩⅤ 15  
XIX ⅩⅠⅩ 19  
XX ⅩⅩ 20  
XXX ⅩⅩⅩ 30  
XL ⅩⅬ 40  
L 50  
LX ⅬⅩ 60  
LXX ⅬⅩⅩ 70  
LXXX ⅬⅩⅩⅩ 80  
XC ⅩⅭ 90  
C 100 미국의 100달러 지폐를 "C-bill"이나 "C-note"라고 부르는 연유이다.
CC ⅭⅭ 200  
CD ⅭⅮ 400  
D 500 IↃ또는 1000 표기의 절반이란 의미에서 유래.
DCLXVI ⅮⅭⅬⅩⅤⅠ 666 짐승의 수에는 M 이외의 다른 모든 기본 부호가 한번씩 나타난다.
CM ⅭⅯ 900  
M 1000 예전엔 ↀ을 쓰기도 했다.
MCMXLV ⅯⅭⅯⅩⅬⅤ 1945  
MCMXCIX ⅯⅭⅯⅩⅭⅠⅩ 1999 IMM (ⅠⅯⅯ)이나 MIM (ⅯⅠⅯ)으로 줄여서 쓸 수 없다.
MM ⅯⅯ 2000  
MMM ⅯⅯⅯ 3000  
ⅠↃↃ 5000 I 뒤에 C를 두번 거꾸로 쓴 모양.

이 모든걸 점검할 수 있는 식이
^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$
이다.

위의 코드중 특수문자에서 대응되는 범위는 1-10까지이다.
ⅰ ⅱ ⅲ ⅳ ⅴ ⅵ ⅶ ⅷ ⅸ ⅹ Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ Ⅸ Ⅹ (일본어 비스타 폰트는 12까지 지원)
시간나면 컨버터도 만들어야겠다..

참고자료 :

http://ko.wikipedia.org/wiki/%EB%A1%9C%EB%A7%88_%EC%88%AB%EC%9E%90
http://diveintopython.org/regular_expressions/roman_numerals.html
http://stackoverflow.com/questions/267399/how-do-you-match-only-valid-roman-numerals-with-a-regular-expression
http://www.crowes-nest.com/CrowesNest/Library/RomanConv/roman.html
http://www.csharphelp.com/archives/archive144.html

AND

정규식의 [ア-ン]의 경우
アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモラリルレロヤユヨン
ァィゥェォャュョ
ガギグゲゴ
ザジズゼゾ
ダヂヅデド
バビブベボ

RangeValidator의 minValue:ア maxValue:ン 의 경우
アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモラリルレロヤユヨン
ガギグゲゴ
ザジズゼゾ
ダヂヅデド
バビブベボ

약간의 차이가 생긴다..

고로..
내가 써야할것은
[アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモラリルレロヤユヨン]

그나저나 CustomValidator는 ClientScript로 먹어주려나 모르겠군..
AND

쉬우면서도 찾기 힘들었던...

         private void fileSelector_DragDrop(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(DataFormats.FileDrop, false))
            {
                string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);

                FileInfo _fi = new FileInfo(files[0]);
                if (_fi.Exists)
                {
                    if (_fi.Extension.ToLower() == ".[ExtentionName]")
                    {
                        fi = _fi;
                        tbxFileName.Text = _fi.FullName;
                    }
                }
            }
        }

        private void fileSelector_DragEnter(object sender, DragEventArgs e)
        {
            e.Effect = DragDropEffects.All;
        }

AND

아이콘

DEVELOP/C# 2008. 5. 20. 14:52
큰아이콘과 작은아이콘..
난 이게 별개의 아이콘파일로 구성된줄 알았다... 30분전까지..

내가 이전에 쓰던 프로그램들은 멀티 아이콘을 지원 안했던거다..

괜시리 삽질만..

결국 검색해서 찾아낸넘..

http://www.gigafree.net/tool/encode/iconhenkan.html


16및 32 사이즈의 그림파일을 읽은후 멀티아이콘으로 저장

프로젝트에서 아이콘을 설정하면
아이콘크기가 자동으로 맞춰서 표현됨..
AND

http://www.thescripts.com/forum/thread256146.html
Process.Start (@"C:\Program Files\");
AND

메시징큐

DEVELOP/C# 2007. 7. 30. 21:35
AND

DataBound Control








^|

ASP.NET
(웹용)







DataSource Control<-
Client

HTTP
->
->
WebService

DB


DataSet
(DataTable)

SOAP
(XML)
<-
DataSet
DataTable
WebMethod()
{

}
WebMethod(DataSet)
{

}
->
<-
fill()














->
HTTP
->
->



변경/삽입/삭제
<->

SOAP
(XML)





AND

3 Teir

DEVELOP/C# 2007. 3. 5. 15:56
웹서비스의 세션을 웹페이지에서 이용하기

1 tier|
2 tier

HTTP

3 tier

Web Browser
->
IIS
->
(SOAP)
->
IIS
session["변수"]
=저장개체

<-
ASP.NET Runtime
<-
(XML)
<-
ASP.NET Runtime클래스명 변수명
=(클래스)session["변수"]

|
~.aspx ->Session(웹서비스의 프록시개체)

|

ShopService
SesstionApplication

|
<-

|

WebMethod1()
WebMethod2()
save->Cart
load<-

application 도 동일
AND

웹서비스 개요

DEVELOP/C# 2007. 2. 27. 15:25
웹서비스의 클라이언트  
인터넷  
웹 서비스(WebServices) |  
 
 
응용프로그램에서 HTTP 프로그래밍이 가능한
 컴포넌트(java/.NET)
| Java App 서버
EJB서버/RMI서버
컴포넌트들  
SOAP/XML  
 
|  
 
 
OS/Language 무관하게  
 
 
 
| Windws
VB,VC++
서버
COM++/리모팅


웹서비스 작성후
Client엔 웹 참조로 추가
->(프록시클래스 추가됨)

AND

※Remoting(원격작업)
1) 개념 : 원격서버에 있는 개체를 사용하는 기술
=> 분산개체기술 (DCOM(ms), RMI(java))
여러대의PC에서 존재하는 개체를 사용하는 기술
로컬                              개체의 메소드를 호출/ 개체의 데이터를 변경

2) Remoting(원격개체의 메소드 호출) 개발순서
(1) 서버채널생성

TcpChannel : TcpServerChannel(Binary)
HttpChannel : HttpServerChannel(http-soap)

TcpServerChannel channel = new TcpServerChannel(포트번호);

(2) 리모팅 시스템 구동 (=채널 서비스에 채널 등록)
ChannelServices.RegisterChannel(channel);

(3) 원격개체를 등록(여러개가 가능)
가.원격클래스 작성방법
public class 클래스명 : MarshalByRefObject
{
   public 반환형 메소드명(매개변수 리스트) {.....}
   //반환형과 매개변수 리스트는 [Serializable]이 가능해야함
}
나.원격개체를 등록
RemotingConfiguration.RegisterWellKnownServiceType(원격개체를 등록 (1 or 3개));
//1개의 경우 XML파일경로
//3개의 경우 Type, String, WellKnownObjectModel <- 열거형
Type개체 : 원격 클래스의 Type개체
String개체 : 클라이언트가 원격개체 참조를 얻기위한 URL
WellKnownObjectModel  : 원격개체수
ex) RemotingConfiguration.RegisterWellKnownServiceType(
           typeof(원격클래스명),
           "원격클래스명",
           WellKnownObjectModel.SingleTon);//공통으로 액세스 /SingleCall//개별엑세스
tcp://ServerIP:Port/원격클래스명  으로 접속

(4) 원격메소드를 호출하는 클라이언트 개발
가. 클라이언트용 채널 생성
TcpChannel : TcpClientChannel
HttpChannel : HttpClientChannel
//둘중 하나로 서버와 클라이언트가 같게
TcpClientChannel channel = new TcpClientChannel();
ChannelServices.RegisterChannel(channel,true);

나.원격개체 참조얻기
원격 클래스명 -> Calculator calcu = Activator.GetObject(typeof(Calculator),"tcp://localhost:50001/Calculator",)  //Calculator <-원격 클래스명

다. 원격 메소드 호출
double result = calcu.Minus(100,50);
AND

※컴퍼넌트
1) 컴퍼넌트란(component)
끼워서 사용할 수 있는 클래스(개체)를 뜻함 = 재사용 가능한 소프트 웨어

2) 컴퍼넌트들만 따로 만들어서 ~.DLL(어셈블리)파일로 만들어서
다른 소프트웨어에서 사용할 수 있도록 제작할 수 있다.
AND

23장 수업내용

DEVELOP/C# 2006. 10. 25. 15:15
TCP/IP를 이용한 네트워킹 개요



※MVC 패턴(Model - View - Control)//(전송용)데이터(두 프로세스간의 데이터를 전달하기 위한 개체)/보여줄부분(폼)/흐름제어(스트림을 통해서 요구되는 처리를 Action 개체에 전달하는 개체)
M
C



V



->LoginAction.CS
(개체사용)
->
클라이언트->콘트롤러(요청종류검사)
(요청을 처리할 Action개체)
->SendMsgAction.CS  ->
(개체사용)
->View(Form)



->~Action.CS
(개체사용)


AND

※프로세스(Process)
1개의 응용프로그램 실행 인스턴스()
쓰레드
쓰레드

※쓰레드(Thread)
1개의 프로세스내에서 실행되는 흐름(작업)
class MultiMediaPlayer
{
   public static void Main()
   {
       기본 쓰레드
           동영상실행
           소리실행
   }
}


※쓰레드의 실행원리
※쓰레드 생성
System.Threading 네임스페이스
   └→Thread 클래스
             └→┌Thread(Thread Start)*
                   └Thread(Parameterd Thread Start)*

delegate void ThreadStart(???);
ThreadStart ts = new ThreadStart(메소드명);//C#2.0
                    = new ThreadStart(new ThreadStart(메소드명));//C#1.0
                    = 메소드;

쓰레드 실행
Start(); : Thread Start 대리자를 통해 실행
Start(Object o); Parametered ThreadStart 대리자를 통해 실행

정리(시작->실행)
class MultiMediaPlayer
{
   public static void Main()
   {
       내용//그냥 실행시 여기서 대기하게됨
       Thread t1 = new Thread(mp3player);
       t1.Start();
       Thread t2 = new Thread(Animation);
       t2.Start();
   }
   public void mp3Player()//t1
   {
   }
   public void Animation()//t2
   {
   }
}

윈도우 프로그램에서 쓰레드 작업
   기본 쓰레드(=생성자 쓰레드)
       역할:(폼을 생성한다//컨트롤을 생성) + (이벤트를 처리)

   작업자 쓰레드
       역할컨트롤의 상태를 변경시키는 역할
정상적이지 않은 케이스
따라서 새로운 쓰레드는 메세지큐를 통해 처리
작업자는 Enqueue
기본은 Dequeue



Lock는 값형은 불가, 참조형만 가능
//값을 포함한 개체를 잠가서 처리
AND

16장 수업내용

DEVELOP/C# 2006. 10. 13. 15:53

※Stream(스트림)
개념
데이터의 흐름

스트림의 요소
출발지  ========>  목적지
(출력스트림)(입력스트림)
Write Stream|Read Stream

양방향 흐름
출발지  ========>  목적지
목적지  <========  출발지

스트림 클래스
StreamWriter : 출력스트림
StreamReader : 입력스트림

출발지  ========>  목적지
simpleNote -> document.txt
StreamWriter sw = new StreamWriter("저장경로");
sw.writer("저장할 내용");

목적지  <========  출발지
simpleNote <- document.txt
StreamReader sw = new StreamReader("읽기경로");
sw.ReadToEnd();

AND