본문 바로가기

데스크탑21

싱글턴 패턴 VS Static 클래스 in C# 몇일에 걸쳐 이 두가지 방법 중 정확히 어떤 걸 어떤 용도로 써야 하는지 이해를 하려고 노력했습니다. 이해한 내용 중 큰 특징들만 간단히 정리하자면, 공통점: Static 클래스/멤버는 특수한 메모리 영역인 High-Frequency Heap 에 저장되고 이 영역은 Garbage Collector(이하 GC) 의 청소 대상이 아니다. 싱글턴 패턴을 구현한 클래스(이하 싱글턴 클래스) 역시 static 멤버를 가지고 있으므로 GC 의 청소 대상이 아니다. 따라서, 해당 프로세스나 AppDomain 이 종료될 때 해제된다. 둘 다 객체를 생성할 수 없고 하나의 레퍼런스만을 앱 전체에서 공유한다. 차이점: Static 클래스는 인터페이스 구현 및 클래스 상속이 안 된다. 싱글턴 클래스는 된다. 싱글턴 클래스는.. 2023. 3. 21.
액세스 수준 정리 [C#] 1. 네임스페이스 내부에 선언된 클래스의 기본 액세스 수준은 internal 이며 internal/public 만 가능하다. 2. 클래스에 포함된 멤버, 중첩된 클래스의 액세스 수준은 기본적으로 private 이며, public, private, protected, internal, protected internal 모두 사용 가능하다. [VB] C# 과 동일하며 internal 대신 friends 키워드 사용 2017. 1. 3.
Data Access Layer 로 Enterprise Library 5.0 의 Data Access Application Block(DAAB) 사용하기 Version 1.0 문서 이력 2013-05-18 최초 작성 Ver 1.0 보통 프로젝트를 시작할 때 N-Tier 로 구성하여 사용을 합니다. Tier 는 Layer 라고도 할 수 있으며 보통 그 중 하나의 Layer 는 Data Access Layer 로 하여 데이터 접근하는 부분은 따로 구성하는 경우가 많습니다. 이 Layer 는 순수하게 ADO.Net 을 사용하여 DataReader, SqlConnection, SqlCommand 같은 기본 Sql 클래스들로 직접 구현하여 사용할 수도 있지만 Microsoft 에서는 엔터프라이즈 환경에서 보안, 트랜잭션, DB 접근 등의 기능을 손쉽게 사용할 수 있도록 Enterprise Library 를 제공합니다. 이는 patterns & practices 라.. 2013. 5. 18.
웹서비스 SOAPFault 에서 Faultstring 에 디버깅 정보 없애기 Version 1.0 문서 이력 2013-04-05 최초 작성 Ver 1.0 웹서비스 개발 중에 발생 시 faultstring 에 디버깅 정보가 포함되어 나타나는 경우 이 디버깅 정보가 나타나지 않게 하는 방법입니다. 일단, 디버깅 정보가 포함된 faultstring 을 가진 응답 SOAP 메시지입니다. soap:Server System.Web.Services.Protocols.SoapException: 서버에서 요청을 처리할 수 없습니다. ---> System.Exception: ORA-01008: 일부 변수가 바인드되지 않았습니다. 위치: NineBear.Dac.gettInfo(String pInput) 파일 C:\Users\Administrator\Documents\Visual Studio 2008.. 2013. 4. 30.
[2.0] WSDL 문서로 웹서비스 제공 클래스 만들기 Version 1.1 문서 이력 2013-04-05 최초 작성 Ver 1.0 2013-05-24 wsdl.exe 설명 중 스키마 include / import 부분 수정 Ver 1.1 웹서비스 클래스 생성하여 자동 WSDL 문서 생성이 아닌 WSDL 문서를 작성한 후 웹서비스 제공클래스를 만드는 방법입니다. 이 방법은 찾아보니 잘 나와있지는 않더군요. 우선, 작성된 WSDL 문서를 준비합니다. 그리고 C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin 폴더로 가서 wsdl.exe 가 있는지확인합니다. (저는 Visual Studio 2008 이 설치되어 있어 v6.0A 가 있으나 이는 버전에 따라 틀릴 수 있습니다.) 있다면, 편의를 위해 wsdl.exe 가 있는 경.. 2013. 4. 30.
Visual Studio 2008 / 2010 에 WSE 3.0 설치하기 Version 1.0 문서 이력 2013-04-05 최초 작성 Ver 1.0 웹서비스 작업 시 WS-Security, WS-Addressing, WS-Attachment 와 같은 WS 보안 사양을 손쉽게 적용할 수 있게 해주는 WSE(Web Services Enhancements) 를 Add-In 하여 사용합니다. 물론, SOAP Header 에 수동으로 저런 부분을 넣어줄 수도 있겠지만 WSE 를 사용하면 마법사를 이용하여 간편하게 작업이 가능합니다. WSE 3.0 을 설치하고 Visual Studio 2008 / 2010 에 Add-In 하는 방법을 Diganta Kumar 님이 잘 설명해 놓은 글이 있어 아래 링크 걸어 놓습니다. Diganta Kumar 님 글 링크 : http://digantak.. 2013. 4. 30.
Windows 7 에서 ODP.NET 설치하기 Version 1.0 문서 이력 2013-04-05 최초 작성 Ver 1.0 Windows 7 에서 Oracle10g 용 ODP.NET 을 설치하기 위해 ODAC1020221 을 다운받아 압축을 풀면 install 과 stage 두 폴더가 있습니다. 이 중 install 폴더 내의 setup.exe 를 실행하면 아래와 같은 에러가 발생합니다. 이 경우는 Oracle10g Client 설치 시와 동일하게 setup.exe 와 같은 폴더 내의 oraparam.ini 파일을 아래와 같이 빨간 부분을 추가해줘야 합니다. [Certified Versions] #You can customise error message shown for failure, provide value for CERTIFIED_VERSION.. 2013. 4. 30.
[C#] 날짜형식 검사하기 Version 1.0 문서 이력 2013-04-05 최초 작성 Ver 1.0 날짜 문자열의 형식이 원하는 형식인지 유효성을 검사하는 함수입니다. Regex 클래스로 패턴검사를 이용하여 형식을 검사합니다. using System; using System.Text.RegularExpressions; namespace KGDotNetLib { public class Common { /*--------------------------------------------------------------------- * 작성자 : NineBear™ * 함수명 : isYYYYMMDD * 입력값 : date : 검사할 날짜 문자열 * 출력값 : 검사 성공 여부 * 설명 : 날짜 문자열이 YYYYMMDD 형식인지 검사한다... 2013. 4. 30.
run-time error '380' invalid property value 프로그램 개발 중 ComboBox 돌리다가 Run-time error '380' Invalid property value 라는 에러를 접하게 되었는데요. 디버깅해보니 DB에서 값을 읽어와 ComboBox 에 넣어주고 마지막에 ListIndex를 0으로 잡아주는 곳에서 멈추더군요. 예전에도 이런 일이 있었는데 왜 그런지를 몰랐는데 이번에 이유를 찾았습니다. 근데.. 그 이유가 너무 간단하더군요 ㅡㅡ;; 그 이유는 ComboBox에 아무 값도 들어가지 않았기 때문에 ListIndex로 초기 Index를 잡아줄때 인식을 못하는 것이었습니다. 이런 낭패가;;; 혹시나 저같이 몰라서 헤매시는 분이 있으시면(없으시겠지만..) 참고하세요~ 2013. 3. 25.
Form_Resize 이벤트 사용하여 Form 의 컨트롤 위치 조정하기. 최근 나오는 왠만한 개발 툴이나 Visual Studio .NET 에서는 Form 의 control 들의 위치가 동적으로 바뀔수 있도록 지원이 됩니다. 예를 들어 한 폼에 버튼이나 메시지박스같은 컨트롤들이 있을 때 폼의 크기를 사용자가 임의로 늘리거나 줄일 수 있는데 이때 컨트롤들도 폼 크기에 맞춰서 움직이는 경우죠. Visual Basic 6 에서는 따로 이런 기능들을 제공해 주지는 않지만 Form_Resize 이벤트를 제공하므로 이 이벤트에 해당 컨트롤들의 위치를 조정해주어야 합니다. 아래의 예제는 각각의 컨트롤들의 너비와 높이들을 현재 폼의 너비와 높이에 맞추어 조정해주고 있습니다. 계산식에 쓰여진 숫자값들은 각자 실행해보면서 맞추어 나가면 됩니다. 예제 소스) Private Sub Form_Res.. 2009. 1. 17.
CDO 객체를 이용하여 Mail 보내기. CDO 라는 객체를 코드상에서 이용하면 별도의 메일서버 로그온이 필요없이 메일 보낼수 있습니다. CDO는 Collaboration Data Objects 의 약자로 MS Exchange Server 버전과 NT Server 버전으로 나눌 수 있고 여기서는 NTS용 CDO 를 사용하겠습니다. CDO 객체를 사용하기 위해서는 cdonts.dll 이라는 파일이 필요하며 IIS 설치하면 기본적으로 설치되고 Windows\System32\ 폴더에 해당 파일이 존재해야 합니다. 아래는 기본적으로 사용되는 CDO 객체의 속성과 메서드에 대한 설명입니다. 더 있을 수 있는데 여기서는 기본적인 것만 나타냈고 추가했으면 하는게 있으면 알려주세요. 속성 From 보내는 사람 메일 주소 To 받는 사람 “;” 로 구분하여 여.. 2009. 1. 17.
Install shield 7.0 사용하여 setup package 만들기 Visual Basic6 에서 제공하는 setup package 를 가지고 만들때, 파일이 여러개가 생성되고 또 툭하면 에러나고 안되고 암튼..이래저래 깔끔하지가 못했는데, Install shield 를 사용하니 깔끔하게 하나의 파일로 생성되더군요. 그럼 setup package 를 만드는 절차입니다. 처음에 프로젝트를 생성합니다. 그러고나면.. 와 같이.. 세팅을 해주고 Next 머..언어는 각자 다를지도..암튼 Next 여기서 컴포넌트를 설정합니다. 적당한 크기의 프로그램이라면 Main App 만 있어도 될테고 위와 같이 default 로 딸려오는 Tutorial 이나 Examples 가 필요하다면 추가해야겠죠. 필요없으면 제거.그런다음 Next 여기선 필요한 파일 그룹을 등록해줍니다. 실행파일그룹,.. 2009. 1. 16.
Zebra S4M Printer ZPL 로 되 있는 것을 EPL 로 바꾸기 Zebra S4M 프린터의 경우 EPL 과 ZPL 을 지원해주는 프린터이긴 하나.. 두 가지를 모두 한꺼번에 지원하지는 못하는거 같네요. EPL1 이나 EPL2 를 사용하기 위해서는 firmware 를 업데이트 해줘야 합니다. firmware 는 zebra 홈페이지에서 다운받을 수 있고 다운받을 special firmware 에 있는 e로 시작하는 것을 다운받아야 합니다. 그리고 설명에 EPL 지원하는지를 확인하시고 다운받으시구요. 다운받으면.. 압축파일안에 .zpl 이라는 파일과 readme.txt 이 있는데 readme.txt 에는 다운받은 firmware 를 어떻게 프린터에다가 업데이트 시키는지에 대한 설명입니다. 네트워크, LPT1, COM 포트를 사용하는 방법이 설명되어있는데 일반적으로 사용하는.. 2009. 1. 16.
[2.0] visual studio 2005 에서 debug 할 때 break 가 안먹히는 문제 Pocket PC 5.0 용으로 mobile application 을 만들다가 디버깅할 때 break 가 안먹히는 문제가 있었는데요. 다음과 같은 에러 메시지가 뜨더군요. Error Message :: The breakpoint will not currently be hit. The specified module has not been loaded. 프로그램 상에 문제인가 싶어 찾아봐도 없길래 msdn 을 찾아봤습니다. Mobile application 의 경우 Compact .NET framework 라는 축소된 framework 를 사용하는데 이 에러는 compact .NET framework 2.0 의 버그때문에 발생하는 것이었습니다. ㅡㅡ;; 그래서 compact .NET framework 2.0.. 2009. 1. 16.
[2.0] 바코드 프로그램 실행 시 바코드 에러. 바코드 리더를 사용하는 모바일 프로그램을 만들어서 PDA 에 복사하여 배포한 적이 있습니다. Visual studio 2005 를 통해 배포하지 않고 배포하는 방법을 찾지 못해 그냥 exe 파일을 PDA를 컴퓨터에 연결해서 복사해 넣었는데요. 그러다 보니 관련 dll 파일들이 PDA 에 존재하지 않아서 에러가 뜨는 경우가 생겼습니다. 다행히 PDA 에 .NET 2.0 은 깔려 있었고 기본적인 것들은 존재했지만 바코드 리더 관련 dll 파일은 없었던지 프로그램을 실행하니 에러가 뜨더군요. 제가 사용한 바코드 툴은 symbol 바코드 리더 툴이었습니다. 모토로라에서 제공하는 것 같은데.. 암튼 에러 메시지에 unexpected error 라면서 장황한 에러 메시지와 함께 아랫 부분에 Symbol.Barcod.. 2009. 1. 16.