분류 전체보기(603)
-
파스쿠치 쿠폰 정리에 대해 생각해보자
서론오늘 4년차 웹 노동자인 내 룸메와 함께 쿠폰 시스템에 대해 논의를 했다. 문제얼마전부터 파스쿠찌에서 쿠폰을 보관해주는 시스템을 적용했다.기존엔 사용자가 직접 쿠폰을 가지고 있으며 결제 시 쿠폰을 제시하는 시스템이었지만사용자 편의를 위해 보관과 검색을 지원해주는 것. but.문제가 있다.관리 자체는 성씨를 자음으로 분류하는 방식을 취한다.특히 'ㅇ' 성씨에 엄청나게 많은 쿠폰이.....................'ㅇ' 성씨를 쓰는 내 룸메가 오히려 내가 꺼내는 시간(내가 지갑에서 쿠폰을 꺼내는 탐색시간) 보다파스쿠찌에서 직접 찾는 시간(쿠폰 함에서 내 이름을 찾는 시간)이 더 걸리는 것이다.그러므로 오히려 고객은 해당 부분에서 만족도가 떨어질 수 있다. 생각해보기- 분류 중 많은 자음을 다시 세부 ..
2015.09.08 -
[C++11] 주요 기능들
auto컴파일 타임에 타입이 지정된다. iterator에 사용하면 좋다고 한다. 1234567891011void autoKeyword(){ int varInt = 0; double varDouble = 0.0f; auto i1 = varInt; auto i2 = varDouble; std::cout
2015.09.07 -
[effective STL] 항목 09 : 데이터를 삭제할 때에도 조심스럽게 선택
Erase VS Remove연속 메모리 컨테이너(vector, deque, string)- erase와 remove 합성문이 가장 좋은 방법이다. 양방향 반복자를 지원하는 list에도 통하지만, list는 remove를 사용하는 것이 좋다. 표준 연관 컨테이너일 때에는(set, multiset, map) remove라는 이름을 가진 어떤 것도 소용없다.remove 알고리즘을 사용하면 컨테이너 값을 덮어써서 컨테이너를 변형시킬 수 있다.하여간 안되고, 연관 컨테이너는 erase를 사용한다.(로그시간)*시퀀스 컨테이너에 사용하는 remove 방법은 선형 시간.연관 컨테이너의 erase는 상등성이 아닌 동등성에 기반하고 있다. remove_if조건을 이용하여 해당 요소를 삭제하고 싶을 때 사용한다. 벡터에서 ..
2015.09.07 -
D3D 기초
COM(Component Object Model)DX의 프로그래밍 언어 독립성과 하위 호환성을 가능하게 하는 기술COM의 세부 사항은 프로그래머에게 드러나지 않는다.프로그래머가 알아야 할 것은 필요한 COM 인터페이스로부터 함수 또는 다른 인터페이스를 이용하는 방법만 알면된다. - C++의 new로 생성하는 것이 아니다.- delete가 아닌 Release 메서드를 호출해 주어야 한다.- 모든 COM 인터페이스는 IUnknown이라는 COM 인터페이스의 기능을 상속받는다.(이 인터페이스가 Release 제공) 텍스처와 자료1차원 텍스처는 자료 원소들의 1차원 배열과 비슷하다.2차원 텍스처는 자료 원소들의 2차원 배열, 3차원 텍스처는 3차원 배열과 비슷하다. 자원D3D에서 자원은 파이프라인에 직접 묶이지..
2015.09.06 -
(작성중) 코드의 구린내
중복코드- 메서드 추출 기법을 적용해서 겹치는 코드를 빼내어 별도의 매서드로 만들어 호출할 수 있다.- 흔한 또 하나의 중복 코드 상황은 한 클래스의 두 하위 클래스에 같은 코드가 들어 있는 경우.(매서드 추출 기법 + 메서드 상향 기법)- 경우에 따라선 탬플릿 매서드 형성 기법을 적용할 수 있다.- 중복 코드가 메서드 가운데 있다면 주변 메서드 추철을 적용하면 된다.- 서로 상관없는 두 클래스 안에 중복 코드가 있을 때는 한 클래스 안의 중복 코드를 클래스 추출이나 모둘 추출한다. 장황한 메서드 방대한 클래스 과다한 매개변수 수정의 산발 기능의 산재 잘못된 소속 데이터 뭉치 강박적 기본 타입 사용 스위치 문 평행 상속 계층 직무유기 클래스 막연한 범용 코드 임시 필드 메시지 체인 과잉 중개 메서드 지나..
2015.09.06 -
리팩토링 개론
리팩토링이란?명사 - 겉으로 드러나는 기능은 그대로 둔 채, 알아보기 쉽고 수정하기 간편하게 소프트웨어 내부를 수정하는 작업.동사 - 리팩토링 기법을 연달아 적용해서 겉으로 드러나는 기능은 그대로 둔 채 소프트웨어 구조를 변경한다. 리팩토링의 목적은 소프트웨어를 더 이해하기 쉽고 수정하기 용이하게 한다.리팩토링은 겉으로 드러나는 소프트웨어 기능에 영향을 주지 않는다. 기능 추가와 리팩토링을 구분하자.기능 추가 - 코드를 추가하지 말고 기능만 추가.리팩토링 - 기능은 추가하지말고 코드 구조만 수정. 두 개의 작업을 할때 프로그래머가 무엇을 하고 있는지 인식하고 해당 작업에 대한 일관성을 유지해야한다. 리팩토링은 왜 하는가?소프트웨어 설계가 개선된다.- 중복 코드를 없앤다. 시스템 속도엔 영향이 미미하지만 ..
2015.09.06