목록2018/12 (7)
임베디드에서 서버까지
디자인패턴에 대해서 정리하자. 1) 생성 패턴 - 추상 팩토리 패턴 (Abstract Factory Pattern) - 빌더 패턴 (Builder Pattern) - 팩토리 메서드 패턴 (Factory Method Pattern) - 싱글톤 패턴 (Singleton Pattern) - 원형 패턴 (Prototype Pattern) 2) 구조 패턴 - 어댑터 패턴 - 브리지 패턴 - 컴포지트 패턴 - 데코레이터 패턴 - 파사드 패턴 - 프록시 패턴 - 플라이웨이트 패턴 3) 행위패턴 - 책임 연쇄 패턴 - 커맨드 패턴 - 해석자 패턴 - 반복자 패턴 - 중재자 패턴 - 메멘토 패턴 - 옵저버 패턴 - 상태 패턴 - 전략 패턴 - 템플릿 메소드 패턴 - 방문자 패턴
GOF 디자인패턴에 대해 하나씩 살펴보자. 생성패턴 중 Factory Method Pattern 은 간단하면서도 이해하기 쉬운 패턴이다. 대부분 전략패턴(Strategy Pattern)과 같이 쓰이게 되고, 같은 인터페이스를 상속하는 객체들의 생성을 담당하는 클래스를 Factory 클래스로 관리한다. 장점 : 생성과 관련된 내용을 Factory 클래스에서 관리할 수 있다.스타크래프트에서 빨간색 마린과 파란색 마린을 생산하는 예제를 살펴보자. 팩토리 메소드 패턴에서는 추상 팩토리 패턴에서와 다르게 Factory의 인스턴스가 꼭 필요하지 않다. FactoryMarine 클래스의 CreateMarine 메소드를 static 으로 선언하여 인스턴스가 아닌 클래스가 IMarine 객체들을 생성하도록 설계하였다. ..
머신러닝에서 모델을 검증할 때, Accuracy, Recall, Precision, F1 Score 등의 방법을 사용한다.예제를 통해 알아보자. # 예제 : 암 진단키트 개발 예제 배경 설명> 우리는 통계적으로 암 발생확률이 0.1% 라고 알려져 있는 가상세계에 살고있다. 이에 암 진단키트를 개발하여 10,000명을 대상으로 임상시험을 하였으며, 실제 암환자 10명 중 8명이 양성반응을 보이는 것을 확인하여 80%의 검출 성능이 있다고 판단했다. 하지만 암이 없는 환자 999명 또한 암으로 진단되어 혼란스러워 했다. 이에 정확도를 계산해보니 전체 표본 10,000명 중 8,999명(암진단 8명 + 암 없음 8,991명)을 제대로 진단했으므로, 암 진단키트는 약 90%의 정확도를 가진다고 결론을 내렸다. ..
추상 팩토리 패턴은 팩토리 패턴과 비슷한듯 하지만 약간의 차이가 있다. 비슷한 특성을 가진 객체를 생성하려 할 때는 팩토리 메소드 패턴을 사용해도 되지만 생성할 객체들이 몇가지 그룹으로 그룹화되는 특성이 있다면 이는 추상 팩토리 패턴을 사용하는 것이 좋다. 단점 : 인터페이스 설계부터 제대로 하지 않았을 경우, 인터페이스가 변경되면 코드에 많은 부분이 변경된다. 대부분의 디자인패턴이 이런 특성을 가진다. 스타크래프트에서 빨간색팀의 마린, 메딕, 탱크를 생성해야 하고, 다시 파란색팀의 마린, 메딕, 탱크를 생성해야 하는 예제에 적용한 것을 살펴보자. # 예제
지난번 포스팅에서는 조건부 확률을 이용해 베이즈 정리를 유도해 보았다.http://smwgood.tistory.com/14 우선 수식의 의미는 아래와 같으며, 베이즈 정리가 어떻게 쓰이는지는 예제를 통해 알아보자.(본 예제를 precision, recall의 관점에서도 포스팅한 글이 있음 http://smwgood.tistory.com/17) # 예제 : 암 진단키트 개발 예제 배경 설명> 우리는 통계적으로 암 발생확률이 0.1% 라고 알려져 있는 가상세계에 살고 있다. 우리가 개발한 암 진단키트를 테스트했고, 다음과 같이 성능이 평가되었다. (암환자 중 암환자로 진단할 확률 P(B|A) : 80%. 암환자가 아닌 사람을 암환자로 잘못 진단할 확률 P(B|not A) : 10%) 암으로 진단된 사람 중 ..
베이즈 정리는 다음과 같다. 베이즈 정리를 증명해보자. 조건부 확률 P(A|B) 라는 뜻은 P(B) 중 P(A∩B) 이다. 이를 수식로 표현하면 다음과 같다. 이번엔 반대로 P(B|A) 를 살펴보자. 위 두 식에서 분모를 이항하면 아래와 같은 식을 유도할 수 있으며, P(A∩B) 와 P(B∩A) 는 같음으로 연두색처럼 식을 쓸 수 있다. 위 식에서 P(B)를 우변으로 이항하면 베이즈 정리가 증명된다. 다음 포스팅에서는 베이즈 정리의 의미에 대해서 좀 더 자세히 알아볼 예정이다.
C#은 윈도우 내부 동작에 대한 정확한 이해가 없어도 필요한 기능들을 구현하는데 무리가 없을 만큼 강력한 언어이다. 하지만 가끔 C#에서 공식 지원하지 않는 기능들(Digital forensic, Low level device 제어 등)을 구현할 때, 마샬링을 통해 WinAPI를 사용할 때가 종종 있다. 이 경우, Google, GitHub 등에서 참고할 정보를 잘 찾는다면 원하는 기능을 구현할 순 있긴 하다. 하지만 윈도우 프로그램이 동작하는 기본 구조에 대해서 이해를 하고 있다면, 직접 만든 프로그램이 어떻게 동작하는지 좀 더 명확하게 알 수 있다. Window OS는 application에 메세지 형태로 데이터를 전달한다. 키보드/마우스 입력이 어떻게 Application까지 전달되는지 Window..