프로그래밍
-
[C#] Strategy Pattern프로그래밍/Design Pattern 2020. 10. 23. 15:12
전략 패턴 ( Strategy Pattern ) 최대한 간략하게 설명하자면 대부분의 메서드와 클래스를 모듈화 해서 실제로 사용할 때는 마치 부품을 조립해서 사용할 수 있도록 만드는 것이 전략패턴이 되겠습니다. Worst 와 Best 의 경우를 살펴보면 이해가 편합니다. 자동차 공정을 예시로 들어봅시다. 고객1은 모든 옵션에서 1번 옵션을 선택하고 고객2는 2번 옵션을 선택했습니다. 이 경우 하드 코딩을 한다고 가정했을때 아래와 같은 구조가 나옵니다. 고객 마다 클래스를 만들고 클래스안에 모든 메서드를 새로 작성하여 때려박는 방식이죠. 이러한 하드코딩의 장단점은 분명합니다. 장점 : 구현이 쉽고 빠르다. 단점 : 유지보수가 어렵다. 그래서 우리는 이러한 경우전략패턴을 사용합니다. 모든 모듈을 모듈화 하고 ..
-
[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#] 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 주요..
-
[C#] StreamReader : 대용량 텍스트 파일 읽기프로그래밍/C# 2020. 9. 22. 07:20
StreamReader 생성자 우선 StreamReader는 간편하게 파일을 읽어오고 싶을 때 사용하는 클래스입니다. 아래와 같이 생성하셔서 사용하시면 됩니다. 또한, 한글을 사용하자 하실 때는 인코딩 UTF8을 설정해주세요. StreamReader sr = new StreamReader(FilePath, Encoding.UTF8); StreamReader 속성 1. EndOfStream : 현재 스트림 위치가 스트림의 끝에 있으면 true이고, 없으면 false입니다. 보통 속성은 " () " 를 사용하지 않고 메서드는 " () " 를 사용합니다. StreamReader 주요 메서드 1. Read() : 입력 스트림에서 다음 문자를 읽고 문자 위치를 한 문자씩 앞으로 이동합니다. 매개변수 없이 Read..
-
TestDome 에서 코딩테스트를 ???프로그래밍/알고리즘 2020. 7. 13. 13:11
TestDome 은 뭐하는 곳인가... 간단하게 말하면 우리나라에서 자주 사용하는 프로그래머스, 백준 사이트와 굉장히 유사하다고 보시면 됩니다. 기업에서 직원들을 채용할 때, 코딩 테스트를 보기 위해 이용하는 사이트인 거죠. 보통 외국계 기업, 스타트업 등에서 종종 사용하고 특히 리눅스 환경에서 개발을 하는 회사에서 사용하는 것 같습니다. 프로그래머스와 다른 점이 있나 ? 우선 문제 유형이 좀 다릅니다. 프로그래머스와 백준 사이트의 경우 보통 BFS, DFS, BRUTE FORCE 등의 알고리즘 문제들이 나옵니다. 하지만 TestDome을 통해 입사시험도 보고 무료로 제공되는 테스트들을 몇 가지 해봤을 때, 자료구조의 구현 문제가 대부분이었습니다. 그리고 정말 쉬운 문제로는 이 개발언어를 사용할 줄 아는..
-
Deadlock 이란 무엇인가프로그래밍/운영체제 2020. 6. 25. 16:48
Deadlock 두 줄 설명 우리 컴퓨터 안에 있는 exe 파일들을 운영체제에서는 JOB이라고 부릅니다. 이러한 JOB이 일을 처리하기 위해 메모리를 할당받으면 프로세스(Process)가 되는 겁니다. 그리고 이러한 프로세스는 다시 프로세서(CPU)를 할당받으면서 비로소 작업을 처리하기 시작합니다. 일을 처리하는 과정에서 프로세스는 수많은 자원을 필요로 합니다. 그중에서도 데드락은 공유자원을 필요로 할 때 발생합니다. 예를 들어, P1(프로세스 1) 이 R1(공유자원 1)을 선점한 상태에서 R2(공유자원 2)를 필요로 하고 P2 가 R2를 선점한 상태에서 R1을 필요로 할 때 우리는 데드락 상태라고 합니다. 따라서 데드락은 자원(Resource)에 큰 영향을 받고 멀티프로세스인 경우에 발생합니다. Dea..