본문 바로가기

Programing

(392)
[Winform] 단축키(Accelerator) System.Windows.Forms의 ProcessCmdKey 메서드가 있다.namespace System.Windows.Forms{public class Form : ContainerControl{// ...protected override bool ProcessCmdKey(ref Message msg, Keys keyData); // ...}}이것을 오버라이드 한다. (예)protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if (keyData == (Keys.Control | Keys.F)) { MessageBox.Show("What the Ctrl+F?"); return true; } return base.ProcessC..
[C#] 환경변수 - 시스템폴더 C:\Windows\system32
[주석] 한 일보다는 이유를... 회사 팀장은 소스코드에 주석이 많으면 잘 짠 코드라고 생각하고 주석을 권장한다. (오늘 회의 시간에도 변수마다 일일이 주석을 달라고 한다. 차라리 'int i = ... // 사용자 ID' 를 'int userID = ...' 과 같이 의미있는 이름을 부여해주는 게 나은데..)하지만 소프트웨어공학 관련 도서를 읽어보면 주석 보다는 코드를 통해 프로그램을 설명하는 프로그래밍을 하라고 조언한다. 이런 것은 프로그래밍 코드 내의 주석 뿐만 아니라 소스코드저장소의 commit log, 에러코드 등에도 적용할 수 있음을 알게 되었다. 지문 장치에 대한 삭제를 만들고 있는데, 특정 사용자가 없을 경우는 에러가 나도록 요구사항에 되어 있었다.그런데 에러코드가 어떻게 들어오나 확인을 하고 있었는데 통합테스트가 실패했다..
Enum에 Description 확장메소드 추가하기 NUnit 테스트 쪽using NUnit.Framework; [TestFixture] class EnumExtsTests { [Test] public void TestGetDescription_Description문자열가져오기() { Assert.AreEqual("The operation completed successfully.", Windows.ErrorCodes.ERROR_SUCCESS.GetDescription()); } [Test] public void TestGetDescription_Description속성은빈문자열획득() { Assert.AreEqual("", Windows.ErrorCodes.ERROR_INVALID_FUNCTION.GetDescription()); } } public c..
[JVM] PermGen? 자바로 프로그램을 짜다 운영(장시간)하다 보면 PermGen에 OutOfMemory라는 예외를 경험하게 된다.보통 흔히 하는 대처로는 JVM 가동시에 XX:MaxPermSize=256m 같은 옵션을 주어 실행을 한다. PermGenPermGen은 Permanent Generation의 약자이다. 여기에 대해서는 jonthecollector가 2006년(!)에 작성한 글을 읽어보면 된다.=> https://blogs.oracle.com/jonthecollector/entry/presenting_the_permanent_generation요약하면 '클래스의 정의들과 연관된 메타데이터를 위해 사용되는 메모리 공간'정도가 될 것이다. permgen은 힙(young generation 과 tenured gener..
Live Webinar Series - Introduction to Spring Framework 4.0 라이브 웨비나 시리즈 - 스프링 프레임워크 4.0 소개 스프링 프레임워크의 공동 창립자이자 프로젝트를 진두 지휘하는 유겐 할러(Juergen Hoeller)가 발표를 한다! 아래는 위의 영문을 나모가 번역라이브 웨비나 시리즈스프링 프레임워크 4.0 소개발표자: Juergen Hoeller스프링 프레임워크는 지난 세기 동안에 엔터프라이즈 자바를 재-발명하였습니다. 곧 발표할 Spring IO 마이크로 플랫폼의 나머지와 함께, 새로운 스프링 프레임워크의 시대가 JVM 기반의 다음 세기의 새 기틀의 원동력이 될 것입니다.Juergen Hoeller와 스프링 팀에 참여하여, 어노테이션 기반의 컴포넌트와 환경설정 모델, 그리고 자바 8과 엔터프라이즈 자바 7와 어떻게 동작하는지, 그루비, 웹소켓, 스프링 부트와 ..
[콜백] System.Action<T>로 함수인자 구현하기 (AsyncWorker) Node.js 때문에 자바스크립트 프로그램을 하고 났더니, 비동기 함수에 익숙해졌다. 혹시 비동기함수에 대해 이해가 안된단다면, 아래의 코드를 실행을 해보면 이해가 빠르겠다.function foo() { console.log('before'); setTimeout(function() { console.log('Something doing'); }, 1000); console.log('after'); } foo(); 실행결과는 아래와 같다. 'Something doing'이 'after'가 찍히고 난 후에 찍힘을 알 수 있다. 사실 초첨은 코드의 굵은 글씨로 표시된 부분이다. C에서는 함수포인터라고 하고, 자바스크립트에서는 함수도 객체이기 때문에 자유자재로 인자로 넘기는 것이 자유롭니다. C#에서는 어떻게..
DeviceMock - Func<T> 델리게이터 테스트 주도 개발을 하다보면 데스트 더블(스텁, 목, 스파이...)을 사용하게 된다.TDD가 오래되다 보니 Mock 프레임워크가 있다. 그런데 구미에 맞는 것을 수행하기 어려운게 있다. 예를 들면 네트워크 통신 등이 있다.장치와 교신하는 서버를 만들일이 있는데 Socket 클래스를 래핑을 하는 방법을 사용해서 실제 통신과 가짜 객체를 바꾸도록 하였다. 인터페이스야 Receive와 Send 메소드만 있으면 되었는데 문제는 Send호출이 제대로 되었는지, Receive할 데이터를 테스트 마다 설정을 해줘야 할 필요가 있었다. C#에 있는 함수 델리게이터를 이용해서 구현을 하였다. 결국은 ByteArrayDevice를 써서 이 Mock은 deprecate 되었지만 나중을 위해 기록을 한다. public cla..