-
[C#] Observer Pattern프로그래밍/Design Pattern 2020. 10. 30. 10:45
옵저버 패턴이란 한 객체의 상태 변화에 따라 다른 객체의 상태도 연동되도록 일대다 객체 의존 관계를 구성하는 패턴. 그림으로 보겠습니다. 옵저버 패턴은 크게 Subject 하나와 다수의 Observer 로 구성되어 있습니다. 쉬운 예시를 들자면 Subject 는 유투브 채널 Observer 는 구독자가 되겠습니다. 요러한 일대다의 관계를 표현하고자 할때 유용한 패턴이 옵저버 패턴입니다. 코드 설계도를 봅시다. 위에 있는 Subject 와 Observer 는 인터페이스를 의미합니다. Abstract 클래스를 의미하죠. 아래에 있는 Concreate 함수는 필수 인터페이스를 상속받는 파생 클래스로 보시면 되겠습니다. 우리는 Concreate 클래스로 주제와 옵저버를 각각 생성하고 구독, 취소, 전파 하는 과..
-
[C#] Strategy Pattern프로그래밍/Design Pattern 2020. 10. 23. 15:12
전략 패턴 ( Strategy Pattern ) 최대한 간략하게 설명하자면 대부분의 메서드와 클래스를 모듈화 해서 실제로 사용할 때는 마치 부품을 조립해서 사용할 수 있도록 만드는 것이 전략패턴이 되겠습니다. Worst 와 Best 의 경우를 살펴보면 이해가 편합니다. 자동차 공정을 예시로 들어봅시다. 고객1은 모든 옵션에서 1번 옵션을 선택하고 고객2는 2번 옵션을 선택했습니다. 이 경우 하드 코딩을 한다고 가정했을때 아래와 같은 구조가 나옵니다. 고객 마다 클래스를 만들고 클래스안에 모든 메서드를 새로 작성하여 때려박는 방식이죠. 이러한 하드코딩의 장단점은 분명합니다. 장점 : 구현이 쉽고 빠르다. 단점 : 유지보수가 어렵다. 그래서 우리는 이러한 경우전략패턴을 사용합니다. 모든 모듈을 모듈화 하고 ..
-
[DRAM] Pseudo Open Drain I/O InterfaceDRAM 2020. 10. 12. 11:31
PODL(Pseudo Open Drain Logic) 한국말로 수도 오픈 드레인이라고 부르는 PODL 인터페이스를 간단하게 이해해 봅시다. 우선 PODL은 DDR 4 에서 처음으로 적용된 로직으로 전력 소모를 낮추는데 큰 기여를 했습니다. 지금부터는 어떠한 방식으로 DRAM 의 전력 소모를 낮출 수 있었는지 이해하는 것이 핵심입니다. SSTL(Stub Series Terminated Logic) 위에 보이는 SSTL(Stub Series Terminated Logic) 인터페이스는 DDR 1세대부터 3세대까지 사용된 로직입니다. 전송선로 왼쪽에 있는 트랜지스터 두 개는 Input Data를 받는 소자들로 위에 있는 Tr 이 On 이면 데이터 1이 들어온 것이고 밑에 있는 Tr 이 켜지면 데이터 0이 들어..
-
[C#] Delegate 를 이용해 폼 간 데이터 전송하기프로그래밍/C# 2020. 10. 8. 15:18
델리게이트(Delegate) 해석하면 '대리인' 이라는 뜻으로 메서드를 참조하는 변수입니다. 델리게이트의 매개변수에 특정 메서드를 추가시켜주면 해당 델리게이트는 그 메서드를 실행시킬 수 있게 됩니다. 말로는 복잡하니 예제를 보면서 이해하시기 바랍니다. Delegate 를 이용해 폼 간 데이터 전송하기 자식 폼의 TextBox 내용을 부모 폼으로 전달하는 간단한 예제를 구현해볼 겁니다. 우선이게 두 개의 폼의 소스코드입니다. 여기서 우리는 델리게이트가 어떤 식으로 사용되었는지를 파악해볼 겁니다. 번호 순서대로 화살표를 따라가면서 설명을 읽어주세요. 1번 : 델리게이트를 원하는 반환형과 참조형을 사용하여 생성해주었습니다. 이거는 우리가 델리게이트 변수를 인스턴스 할 수 있도록 틀을 만든 것과 같습니다. 마치..
-
[C#] TextBox 에 찾기바꾸기 기능 활용프로그래밍/C# 2020. 9. 29. 15:48
ScintillaNET_FindReplaceDialog NuGet 패키지 활용하기 NuGet 패키지 관리에서 ScintillaNET_FindReplaceDialog 패키지를 다운로드해주세요. 이 패키지의 주요 기능은 다음과 같습니다. 또한 이미 구현된 Dialog 를 사용하기 때문에 코드 몇 줄이면 사용이 가능합니다. 1. 검색 2. 바꾸기 3. 검색 단어 강조 4. 검색 단어를 포함하는 줄 강조 5. 특정 라인으로 이동 코드 적용하기 간단한 인스턴스만 하나 해주시면 바로 사용이 가능합니다. using ScintillaNET_FindReplaceDialog; // FindReplace Declare private FindReplace MyFindReplace; KeyDown 이벤트를 통해 단축기를 만들 ..
-
[C#] Column editing function in TextBox프로그래밍/C# 2020. 9. 29. 09:45
열 편집 기능 (Column editing function) 현재 Notepad++, 비주얼 스튜디오 등등 편집기에서 대부분 사용 가능한 기능입니다. 보통 Alt + 마우스 드래그 또는 Shift + Alt + 방향키 조합을 통해서 사용하는데요. 저희가 자연스럽게 사용하던 기능들은 사실 복잡한 구현이 필요합니다. C# 에서 사용하는 TextBox 또는 RichTextBox 에서는 이러한 기능을 사용할 수 없기 때문이죠. Currently, it is a feature that is mostly available in editors such as Notepad++ and Visual Studio. Usually, it is used through the combination of Alt + mouse dr..
-
[C#] NuGet 패키지 활용하기카테고리 없음 2020. 9. 25. 22:26
NuGet 패키지란 ? NuGet 패키지는 다른 개발자가 제작한 라이브러리 파일정도로 생각하시면 됩니다. 배경 지식은 NuGet을 참조하세요. 아무래도 복잡한 기능을 설계하는데 있어 기반이 되는 강력한 라이브러리를 사용하는 것은 큰 도움이 되기 때문에 NuGet 패키지를 활용할 줄 아시면 좋을 겁니다. 그럼 강력한 Text Editor 패키지인 Scintillanet NuGet 패키지를 다운로드 해봅시다. 패키지 적용해보기 1. 도구에서 솔루션용 NuGet 패키지 관리 클릭 2. 찾아보기에 원하는 패키지명 검색 3. 알맞은 패키지 선택 후 빈칸 체크 후 설치하면 끄읕 ~
-
[C#] Scintillanet 이란 ?프로그래밍/C# 2020. 9. 25. 21:56
Scintillanet 이란 ? Scintillanet 은 다양한 Text Editor 기능을 사용할 수 있게 해주는 NuGet 패키지입니다. 아마 NuGet 패키지도 처음 사용해보시는 분들이 많으실거라 생각합니다. 저도 클라이언트의 요청으로 자료조사중에 새롭게 알게된 기능이기도 한데요. 쉽게 말해서 사람들이 만들어놓은 라이브러리 패키지들을 사용할 수 있는 기능이라고 생각하면 좋을 것 같습니다. 이 패키지 관련 정보는 아래 링크에 표시해두었습니다. jacobslusser/ScintillaNET A Windows Forms control, wrapper, and bindings for the Scintilla text editor. - jacobslusser/ScintillaNET github.com 주요..