Language/C# 41

Garbage Collection

Garbage Collection은 직역하면 쓰레기 수집으로 메모리 관리 기법 중 하나로, 동적 할당 된 메모리 영역 가운데 더이상 사용할 수 없게 된 영역을 탐지하여 자동으로 해제하는 기법이다. 여기서 더 이상 사용할 수 없게 된 영역이란, 어떤 변수도 가르키지 않게 된 영역을 의미한다. 장점 Gargabe Collection이 지원되는 환경에서는 프로그래머가 동적으로 할당된 메모리 영역의 전체를 완벽하게 관리할 필요가 없어진다. 가비지 컬렉션은 다음과 같은 버그를 줄이거나, 완전히 막을 수 있다. 유효하지 않은 포인터 접근 : 이미 해제된 메모리에 접근하는 버그 이중 해제 : 이미 해제된 메모리를 또 다시 해제하는 버그 메모리 누수 : 더 이상 필요하지 않은 메모리가 해제되지 않고 남아있는 버그 단점..

Language/C# 2022.12.22

Cache 파일 캐시 시스템

Cache ? - 데이터를 저장하고 꺼내쓰기 위해서 사용하는데, 데이터를 읽기 위해서 매번 저장소에서 꺼내오는 것이 아니라 저장소에서 읽어서 캐쉬에 저장을 해놓고 캐쉬에서 꺼내쓴다면 속도향상과 저장소에 대한 트래픽을 줄일 수 있어서 효율적으로 사용이 가능하다. 자료읽기 요청 1. 캐쉬에서 자료읽기 만약 데이터가 없으면, 저장소에서 읽어온 후 캐쉬에 자료를 저장한다 2. 자료 쓰기 요청 저장소에 자료를 쓰고 캐쉬를 삭제한다 이 때, 저장소는 외부에서 변경되지 않는 다는 보장이 되어야하며 외부에서 변경된다면, 캐쉬데이터와 저장데이터간으 ㅣ차이가 발생하게 된다. 캐쉬를 저장하는 SetCache 캐쉬를 조회하는 GetCache 캐쉬를 삭제하는 RemoveCache 캐쉬 종류는 1. Absolute Expirat..

Language/C# 2022.10.31

[ 벤치마크 ] 부하분산 체크

BenchmarkDotNet 누겟 - 내가 만든 함수나 로직이 어느정도 부하를 발생시키는지 알고 싶을 때 사용 https://afsdzvcx123.tistory.com/entry/C-C-%EB%B6%80%ED%95%98-%EC%B8%A1%EC%A0%95-%EB%B2%A4%EC%B9%98%EB%A7%88%ED%81%AC-%EB%8B%B7%EB%84%B7-%EC%82%AC%EC%9A%A9%EB%B0%A9%EB%B2%95 [C#] C# 부하 측정 - 벤치마크 닷넷 사용방법 참조 https://github.com/dotnet/BenchmarkDotNet https://gall.dcinside.com/mgallery/board/view/?id=game_dev&no=41692 소개 안녕하세요. C# 을 이용해서 프..

Language/C# 2022.10.26

모달 / 모달리스

모달 새 모달 창이 열렸을 때 기존의 창을 사용하지 못하게 하는 방식이다. 예를 들어 어떠한 응용프로그램에서 에러 메시지가 뜬다고 가정하면, 그 메시지를 확인 또는 취소와 같은 사용자 이벤트 후에 다음으로 진행이 가능하고, 그 메시지가 떠있는 상태라면 뒤의 창을 선택할 수 없다. 어느 다이얼로그 창이 프로그램의 제어권을 독점해서 이 창이 종료되기 전까지는 다른 작업을 할 수 없는 것으로 다른 작업을 할 수 없다는 말은 현재 발생한 모달 다이얼로그의 부모창을 의미하며 다른 윈도우 창은 별개로 작업이 가능하다. 중요한 메시지를 표시하는 다이얼로그는 거의 모달로 나타낸다. 모달리스 모달리스는 어느 다이얼로그 창이 있어도 프로그램 제어권을 독점하지 않으므로 다른 작업을 할 수 있는 것이다. 모달리스는 사용자가 ..

Language/C# 2022.10.24

[TDD]

TDD란 ? Test Driven Development 의 약자로 테스트 주도 개발이라고 함 테스트 주도 개발은 설계 이후 코드 개발 및 테스트케이스를 작성하는 기존의 개발 프로세스와 다르게 테스트 케이스를 작성한 후, 실제 코드를 개발하여 리팩토링 하는 절차를 따른다. TDD를 해야하는 상황 1. 처음 해보는 프로그램 주제 2. 고객의 요구 조건이 바뀔 수 있는 프로젝트 - 외부의 불확실성이 높은 경우 - (현재 진행하고 있는 프로젝트의 경우 계속해서 추가적인 피드백과 개발 요구사항들이 생기기 때문에 이에 해당한다) 3. 개발하는 중에 코드를 많이 바꿔야한다고 생각하는 경우 4. 개발한 코드를 다른 누군가가 유지보수를 해야할지 모르는 경우 즉 , 외부적인 불확실성이 높은 경우에 TDD를 주로사용한다. ..

Language/C# 2022.10.18

이슈 해결 과정

**10 14 주요 이슈 내용 특정 Lot의 경우 패널 형태로 표현되어야 하며 WaferSize 가 기존 400과 다르게 600으로 나타내야함 [ 수정 내용 ] 4개의 패널을 이어 붙인 형태이기 때문에 구분을 위하여 패널간 여백 설정을 해줘야함 [ 해결 방법 ] Wafer를 Draw해주는 부분에 해당 패널의 가운데 부분에 해당하는 영역에 마진을 주어 그려줘야함 ( Issue 1 ) Wafer ToolTip으로 Row COl 표시가 되었던 것이 좌표가 맞지 않음 ( Issue2 ) Mouse Click, Mouse Move, Mouse Down 각각의 이벤트에 해당하는 동작에서 좌표값을 또한 사용하기 때문에 모든 경우에 대해서 좌표 처리를 해주어야함. → 이때의 조건은 WaferMapSize 를 Globa..

Language/C# 2022.10.14