본문 바로가기

[ Program ]/C#88

[C#]Observer Pattern(옵저버 패턴) * Observer Pattern(옵저버 패턴) - 한 객체가 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 일대다 방식의 패턴 * Observer Pattern(옵저버 패턴)의 구성 - Subject Interface - Observer Interface - Display Interface 기본적으로 3개의 인터페이스로 나누어 구현된다. - Subject Interface 자료가 갱신되면 옵저버들에게 전송해주는 부분으로써 전송부분, 옵저버를 추가, 삭제 하는 총 3개의 메서드를 상속할 것이다. - Observer Interface 옵저버들이 상속할 인터페이스로써 Subject 에서 주는 데이타를 받는 부분(Updata())을 상속하여 구현할 것이다. - Disp.. 2012. 9. 17.
키 이벤트 발생 시키기 - keybd_event() 프로젝트 도중 키 이벤트를 강제로 발생시켜야 하는 상황이 생겼는데요;; SendMessage로 WM_KEYDOWN을 보내놓고, 키가 입력되지 않는다고 화내고 있었습니다'' keybd_event라는 키보드 메세지를 생성해주는 훌륭한 Win32 API함수가 있더군요 keybd_event 함수의 원형은 다음과 같습니다.(USER32.DLL) VOID keybd_event( BYTE bVk, // 가상 키코드 BYTE bScan, // 하드웨어 스캔 코드 DWORD dwFlags, // 동작 지정 Flag PTR dwExtraInfo // 추가 정보 ); bVK 가상키코드를 지정하는데 1~125 범위의 값이어야 합니다. 정수명 값 의미 VK_LBUTTON 01 마우스왼쪽 버튼 VK_RBUTTON 02 마우스 오.. 2012. 9. 17.
WebClient 클래스를 이용한 파일 다운로드 문제 Chul's blog time | Chuls http://blog.naver.com/silent1002/10069488503 서버에서 이미지를 연속적으로 받아와서 작업하는 부분이 있었습니다. 그래서 WebClient.DownloadFileAsync를 사용해서 이미지를 다운받았지요. 헌데, 첫번째 이미지는 제대로 가져오지 못하고, 두번째 이미지는 제대로 받아오는 것입니다. 도대체 어떻게 된 것인지.. 막막했습니다. 환경 및 조건을 바꾸어가며 갖가지 상황에서 테스트를 해보앗지만 결과는 동일했습니다. 한참을 찾아본 결과 MSDN 에 답이 있었네요. MSDN 내용 입니다. WebClient 인스턴스는 기본적으로 선택적 HTTP 헤더를 보내지 않습니다. 요청에 선택적 헤더가 필요한 경우에는 헤더를 Headers .. 2012. 9. 17.
[C#] Ping 패킷 송수신 방법 MJ Life Hack! :: http://lifehack.kr | MJ http://lifehack.kr/90015996165 Written by Youngil Kim, C#.NET Developer .NET Framework 2.0부터 새롭게 추가된 Ping클래스는 System.Net.NetworkInformation 네임스페이스에 추가되어 있습니다. Ping클래스를 사용하면, TCP/IP상의 특정 컴퓨터에 ICMP(Internet Control Message Protocol) 에코메세지를 송신하고 그 응답을 받을 수 있고 원격컴퓨터상에서 응답속도를 확인하는 것도 가능합니다. Ping클래스를 사용하여 ping 패킷 송수신방법은 다음과 같이 2가지가 존재합니다. - 동기통신(기본적으로 응답이 리턴될때까.. 2012. 9. 17.
[C#] string, char 배열을 byte 배열로 변환 예찬아빠 블로그 | 예찬아빠 http://blog.naver.com/cheongsik/30039217881 string test = "abcdefg"; UnicodeEncoding enc = new UnicodeEncoding(); byte [] buffer = enc.GetBytes(test); 2012. 9. 17.
[C#] Byte 배열을 String으로 변환 예찬아빠 블로그 | 예찬아빠 http://blog.naver.com/cheongsik/30039217673 Byte [] buff = new Byte[16]; serialPort1.Read(buff, 0, 16); string m_receive = System.Text.Encoding.Default.GetString(buff); 2012. 9. 17.
.NET 메모리관리 .NET 메모리관리 (첫번째 이야기) .NET이전에는 application에서 사용하는 메모리 관리에 대한 책임이 전적으로 application개발자에게 있었다. 그래서 사용한 메모리를 system에 돌려주지 않으면 system을 죽일 수 도 있는 굉장한(?) 프로그램을 만들 수도 있었다. .NET에서는 모두 다는 아니지만 메모리 관리에 대한 굉장히 큰 부분을 CLR(Common Language Runtime)이라고 불리는 .NET실행환경이 나누어 갖는다. 그래서 .NET 응용프로그램은 .NET의 버그가 아닌이상 Memory Leak을 경험할 수 없다. 하지만 여전히 Object를 현명하게 사용하지 않으면 잘 못된 메모리 소비(Memory Consumption)로 인해 성능이나 안정성에 문제가 생길 수 .. 2012. 9. 17.
C# 네트워크 clean code that works | 아메 http://blog.naver.com/pyrisind/60032485377 출처 : 영진닷컴, C# .NET 프로그래밍 실전프로젝트 // 데이터 전송 private void SendData(byte[] data) { try { int total = 0; int size = data.Length; int left_data = size ; int send_data = 0; // 전송할 실제 데이터의 크기 전달 byte [] data_size =new byte[4]; data_size = BitConverter.GetBytes(size); send_data = this.client.Send(data_size); // 실제 데이터 전송 while(total < .. 2012. 9. 17.
소켓을 이용한 이미지 송수신 및 비트맵 이미지와 바이트형간의 형변환 이번 포스팅에서는 소켓을 이용해서 이미지를 송수신하는 방법과 이때 필요한 데이터를 적절할 형식으로 형변환하는 과정에 대해 설명한다. 송수신될 이미지는 Bitmap 객체에 저장해서 사용하는데, 이 Bitmap 객체(=이미지 데이터)를 네트워크상에 보낼때는 바이트형으로 형변환을 한다. 이때 비트맵을 바이트형으로 형변환하는 이유는 네트워크상에서 이미지를 전송하는 방법이 여러가지가 있겠지만 간단하게 Socket 클래스의 Send(), Receive() 메소드를 사용한다면 이 메소드의 매개변수인 데이터버퍼가 byte[]형이기 때문이다. 우선 위의 데모프로그램을 설명하면 서버/클라이언트 구조로 작동을 하는데 Sender쪽에서 서버의 역할로 자신의 컴퓨터 전체화면을 캡쳐해서 이미지를 전송하고, Receiver쪽에서는.. 2012. 9. 17.
C#에서 DB에 이미지저장하고 불러오기 All In One | 영우 http://blog.naver.com/ychun2k/110005425235 re: C#에서 DB에 이미지저장하고 불러오기 kkijam (2006-06-17 14:53 작성) //사진등록 콤보(클릭이벤트) private void btnADD_Click(object sender, System.EventArgs e) { openFile.DefaultExt = "gif"; //다이얼로그 박스 확장자 gif만을 불러오기 openFile.Filter = "Graphics interchange Format (*.gif)|*.gif"; openFile.ShowDialog(); if( openFile.FileNames.Length > 0 ) { pictureBox1.Image = Image.. 2012. 9. 17.
DLL 파일을 별도 폴더에서 관리하자 요샌 프로그램 하나 만들려면 엄청난 dll들이 부가 되는데 이것들이 실행 파일과 혼재되어 정신 사납기 이를데 없다 이럴때 dll 파일만 따로 모아서 관리 할수 있으면 얼마나 좋을까?? 자~ 해봅시다~ 그림으로 보면 DLL폴더와 실행 화일이 따로 분리 된걸 볼 수 있다 DLL 폴더내에 따로 모아진 dll 파일들과 pdb 파일들을 볼수 있다 이렇게 하기 위해서는 먼저 DLL 폴더를 만들고 랩작업을 할때 다음 처럼 경로를 지정해서 랩을 한다 이렇게 하면 당연히 하위 DLL 폴더에서 해당 dll을 찾아 프로그램이 실행된다 하지만 그림처럼 참조 추가된 Cinch 같은 dll도 DLL 폴더로 넣을라면 어떻게 해야 할까? 이런 경우에는 Project에 프로퍼티에서 그림 처럼 설정 해준다 이렇게 해주면 참조 추가된 d.. 2012. 9. 17.
Event Handler를 활성화 하는 Feature 생성하기 (sharepoint 2007) Share Point의 문서 라이브러리, 양식 라이브러리, 리스트 등에서 이벤트를 잡아 이벤트 발생에 대한 작업을 처리하고자 할 경우 WSS v3에서 제공되는 Event Handling을 사용하면 유용하다. 예로, 리스트에서 사용자가 항목을 삭제하는 작업을 수행하지 못하는 Feature를 생성해보자.. 1. Visual Studio 실행 > C# 클래스 라이브러리 프로젝트 선택 > 프로젝트명을 EventhandlerExample로 설정 2. Microsoft.SharePoint.dll 참조 추가 (참조>추가>찾아보기>C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\ISAPI에 위치) 3. Class1.cs의 이름을 Cance.. 2012. 9. 17.
C# 싱글톤 패턴 예제 대다수의 패턴이 그런 것처럼 Singleton Pattern(이하 Singleton) 역시 언어에 독립적인 부분이 많기는 하지만 갑작스레 다소 익숙치 않은 C#으로 Singleton을 구현할 필요가 생겨 하나의 템플릿의 목적으로 작성해 놓는다. public class Singleton { private static Singleton instance; private Singleton() {} public static Singleton Instance { get { if (instance == null) { instance = new Singleton(); } return instance; } } } Singleton은 클라이언트 측에서 오직 하나의 Instance만을 생성하도록 제한해야 하므로 임으로 클라.. 2012. 9. 17.
[.NET Study 02] C#에서의 배열(Array) uxb님의 블로그 | uxb http://blog.naver.com/uxb/22741240 #. 들어가기 전에. C#에 대해 공부를 하고 설명하는데 있어서 설명의 레벨을 [프로그램을 처음 다뤄보신 분]으로 작성하자 하면 정말 자세한 설명이 될 것입니다. 그러한 레벨로써는 이미 많은 다른 사이트에서 양질의 설명을 갖고 있고, 제가 그 이상 더 멋지고 이해하기 쉽게 설명드릴 자신은 없습니다. 다른 글들과의 차별성을 갖기 위해, 그리고 저도 설명하는데 쉽게하기 위해서 설명대상의 레벨을 [약간이나마 자바를 다뤄보신 분]으로 설정하고 설명하도록 하겠습니다. 1. 배 열(Array) C#에서의 배열은 자바의 그것과 동일하다고 해도 과언이 아니라 생각합니다.(내부적으로는 다를 수도 있겠지만..) C부터 시작해서 이쪽.. 2012. 9. 17.
【 C# 】 컬렉션의 기본 인터페이스_# † 가끔은 구름이 되고 싶다_ † | 성숙꼬맹 http://blog.naver.com/phoogu/110013603765 1. 컬렉션류 인터페이스의 특징 2. IEnumerable과 IEnumerator 인터페이스 3. ICollection 인터페이스 4. IList 인터페이스 5.IDictionary 인터페이스 6. IDictionaryEnumerator 인터페이스 >더보기 1. 컬렉션류 인터페이스의 특징 - 인터페이스들은 컬렉션류 클래스들의 일관성과 사용상의 편리성을 제공한다. - 컬렉션 인터페이스들은 많은 컬렉션 클래스들 사이에 공통된 사용자 패턴을 제공한다. - System.Collections - 컬렉션류 인터페이스의 상속 구조 2. IEnumerable과 IEnumerator 인터페이스 - 특.. 2012. 9. 17.
IEnumerable 과 IEnumerator 인터페이스 개발자로 살아간다는건... ™ | 카푸치노 http://blog.naver.com/mssql2000/100035803920 특정 클래스가 IEnumerable 인터페이스를 구현했다면, Enumerator를 사용해서 내부의 데이터를 순방향으로만 접근할 수 있도록 지원한다는 것을 의미합니다. 즉, Enumerable이라는 영어 철자 그대로 나열할 수 있다는 뜻입니다. Enumerator형으로 얻은 객체는 읽기전용 커서(Cursor)를 제공하고 있으며 데이터의 집합에 대한 순방향용으로 검색할 수 있습니다. IEnumerable 인터페이스에는 GetEnumerator() 메서드를 사용하여 IEnumerator를 얻어서 작업을 합니다. 다음은 IEnumerable 인터페이스의 프로토타입입니다. ▣ IEnumera.. 2012. 9. 17.
IEnumerator, IEnumerable 해변의 카프카 | 카프카 http://blog.naver.com/cjy00xlove/120023431585 C#에는 C++, Java에서는 볼 수 없었던, 사실 그 이전이라고 볼 수 있는 Basic에서 자주(?) 애용하던, 사실 Basic을 아주 Basic하게만 한 수준이라, ASP에서 좀 더 친근한 foreach문이 다시 돌아왔다... 오호라.. 돌아왔다니.. 지금 C#이 나온지 얼마나 됐는데... -_- 쨌든... foreach가 먼지 모르고 아직도 나빠(Naver)형님을 찾는 이들을 위해 간단한 예제를 들어 보겠다.. 오홍~ string[] str = new string[4] { "jungun", "shiri", "kong", "eung" }; for (int i = 0; i < str.Length.. 2012. 9. 17.
vs2010 에서 WCF REST 프로젝트 무작정 만들기 새프로젝트를 만든다. --- Service1.cs 에 보면 [WebInvoke(UriTemplate = "", Method = "POST")] 이렇게 되어있는데 UriTemplate 부분에 매서드의 매개변수를 모두적어줘야한다(class형식이 아닌것만) 예를 들어 [WebGet(UriTemplate = "{id}")] public SampleItem Get(string id) { // TODO: Return the instance of SampleItem with the given id throw new NotImplementedException(); } 이경우 id 라는 매개변수가 있기대문에 UriTemplate 에 {id} 라고 적어 줬다. 매개변수가 여러개 있는경우는 다음과같이 해주면 된다. [Web.. 2012. 9. 17.
커스텀 열거자(IEnumerable, IEnumerator) 카페 > CPPWorld | 오호호 http://cafe.naver.com/cppworld/1060 오늘은 어떠한 상황에서 우리가 정의한 클래스를 Foreach 문에서 사용해야 할때가 있습니다. 이럴때 IEnumerable 과 IEnumerator를 활용할 수 있는데... 살짝만 봅니다. 2012. 9. 17.
스레드의 상태 개발자로 살아간다는건... ™ | 카푸치노 스레드의 상태를 아는 것은 스레드를 어떻게 제어하느냐와 관련이 있습니다. 스레드의 상태는 대표적으로 생성 직후의 상태(Unstarted), 실행 가능한 상태(Runnable), 대기상태(Suspended), 실행을 끝내고 죽는 상태(Stopped)로 나눌 수 있습니다. 일단, 스레드가 생성된 후 Start를 하면, 스레드는 3가지 상태로 전이(轉移)가 가능합니다. 이번 절에서는 스레드의 상태에 대해서 알아보도록 하겠습니다. qUnstarted 상태 스레드에 해당하는 메서드를 하나 디자인하고 이 메서드의 대리자인 ThreadStart 델리게이트를 생성합니다. 그리고, 생성된 ThreadStart 델리게이트를 매개변수로 하여 Thread를 생성하게 됩니다. Unst.. 2012. 9. 17.
C# 주의해야 할 문법 카페 > CPPWorld | 오호호 http://cafe.naver.com/cppworld/1067 이번 내용은 C# 주의해서 보아야 할 것들에 대한 정리 두번째 강좌로서 OOP 관련한 것들을 순서없이 정리한 것입니다. C#과 OOP C# 클래스는 메소드, 속성외에 인덱서, 프로퍼티, 생성자, 연산자, 델리게이트, 이벤트 등을 포함한다. [static과 instance] Static 키워드와 함께 선언된 필드는 정적 필드 혹은 정적 데이터로 불려진다. 그리고 static 으로 선언되지 않은 필드들은 인스턴스 필드 혹은 인스턴스 데이터로 불려진다. Static 키워드는 액세스 한정과는 아무런 상관이 없다.(private static/public static 모두 가능) 인스턴스 메소드도 정적 메소드와 같이.. 2012. 9. 17.
클래스객체정의 한섬 | 유향버들 http://blog.naver.com/shopin00/100010615214 ▣ 클래스의 정의 - 클래스와 객체는 비슷한 개념이다. 클래스는 설계도이고, 객체는 설계도를 만든 자동차라고 볼수 있다. - 설계도 한장이면 수백수천대의 자동차를 만들 수 있다. 설계도를 잘못 그리면, 생산된 자동차 역시 불량일 수밖에 없다. 1. 클래스의 구성요소 - C#에서 사용하는 클래스는 멤버변수(특성, 속성), 메소드(멤버를 접근하거나 멤버를 이용하는 작업)로 구성 - Main()메소드의 이해 => C#에서는 아무리 많은 클래스를 사용해도 Main()메소드는 오직 하나만 존재 Main메소드는 프로그램이 빌드되어 하나의 실행 파일(.exe확장자를 갖는 파일)로 만들어지고 나서 그 실행파일을 실행시켰을때.. 2012. 9. 17.
데이터베이스 연결 한섬 | 유향버들 http://blog.naver.com/shopin00/100011313954 using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.Data.SqlClient; namespace WebApplication15 { /// /// data2에 대한 요약 설명입니다. /// public .. 2012. 9. 17.
C# Random Class 사용하기 요즘 너무 오래간만에 포스팅이다. 블로그를 옮길까....도 생각하다보니...더 글 올리는 텀이 길어지는것 같기도 하다. 일단..지금 한참 바쁘니 거두절미하고..본론부터 써 내려 가도록 하자. 예전 C에서 rand() 함수를 사용할때는 seed값을 미리 주어서 사용하거나, 일정 범위내의 random값을 사용하는 경우에는 rand()%X를 사용하기도 했다. (단, seed값이 같다면 매번 같은 패턴으로 난수가 발생하고, 그래서 seed값을 시간을 사용한다고 해도 빠른 루프를 돌리거나 하면..같은 수가 나오는 치명적인 약점이 있긴 하다.) 하지만 C#은...정말 간단하면서도 강력한것 같다. (but, 난 C가 더 좋긴 하다...!!) Random rNum = new Random(); 제공하는 메서드... rN.. 2012. 9. 14.
WCF Configuration ( Appconfig 스키마 구성표) http://msdn.microsoft.com/ko-kr/library/ms731734.aspx http://msdn.microsoft.com/ko-kr/library/ms731734.aspx 클릭하시면 크게 보실수있습니다. 2012. 9. 14.
C#에서 log4net 사용하기 http://blog.naver.com/chcjswoda/126162822 http://blog.naver.com/chcjswoda/126162822 요즘 C#어플을 만들일이 있어서, 여기에도 log4net을 사용 할려고 하는데, 역시나 이놈의 로그는 설정이 여간 귀찮은게 아니다. 여기저기 정보를 찾아봐도 정확한 설정법은 없고 예전에 쓰던 방식인지 현재 쓰고 있는 VS2008이랑은 상이한 점들이 있는 듯 싶었다. log4net 사이트를 가 봤더니 예제 사이트들은 전부 404에러~~ㅋㅋ 어쩔수 없이 다시 인터넷을 뒤지고 뒤져도 원하는 답을 속시원히 얻지 못하던 중 설정파일로 쓰고 있던 log4net.xml이 자꾸 원래 파일로 돌아오길래, log4net.dll을 서비스 참조 시킬때 있던 log4net.xml.. 2012. 9. 11.
NET & C# 에서 log4net 사용하기 삽질했다 .. 2시간 동안 ... .NET에서 사용하는 방법은 따로 있었다.. 아무리 걍 app에서 사용하는 방법으로 하니 되나 .. ㅡㅡ 바보야 ;!! ㅠㅜ 구글링을 통해서 먼가하나를 찾았다. 그래서 기록한다.. 1. Global.asax.cs에 초기 설정 등록해주기. protected void Application_Start(Object sender, EventArgs e) { ,,,,,,,,,,,,,,,,,,,,,,,,,중략.................................... log4net.Config.XmlConfigurator.Configure(); } 2. web.config 에 등록해주기. 등록해준다. 3. xxxx.aspx.cs 파일에서 로깅하.. 2012. 9. 11.
Log4Net by 베노미 2011/06/28 18:25 www.venomi.pe.kr/3191513 덧글수 : 2 웹 Page 개발 또는 다른 응용프로그램 개발 시 Log을 남기는 형태가 대부분입니다. (Exception이라던지 Error에 대한 기록 등등... 아니면 PG Transaction에 대한 기록 등등...) 이전에 단순히 Log파일을 기록하고 남기기만 했었는데... 시간이 지나면 상당한 용량으로 Log파일에 대한 고민을 하게 됩니다. 이전 회사에 Daemon Server에 대한 Log 기록하는 기능이 있었는데... 일정 시간이 지나면 새로운 로그 파일이 생성된는게 기억이 나더군요. 그래서 .Net 기반에서 그런 기능이 있을까 하고~ 찾던 와전에 log4net을 알게 되었습니다. 더구나 무척 다양한 기능에.. 2012. 9. 11.