ORDER BY 뒤에 숫자의 의미와 더 강력한 정렬을 위한 CASE WHEN 사용하기
ORDER BY 뒤에 숫자의 의미 ORDER BY 1,2,3은 단순히 숫자를 나열한 것이 아니라, select에서 선택한 컬럼의 순서를 의미한다. 예를 들어, 아래와 같이 이벤트 테이블이 있다고 가정해보자. CREATE TABLE `events` ( `id` int(11) NOT NULL AUTO_INCREMENT, `event_name...
ORDER BY 뒤에 숫자의 의미 ORDER BY 1,2,3은 단순히 숫자를 나열한 것이 아니라, select에서 선택한 컬럼의 순서를 의미한다. 예를 들어, 아래와 같이 이벤트 테이블이 있다고 가정해보자. CREATE TABLE `events` ( `id` int(11) NOT NULL AUTO_INCREMENT, `event_name...
기능 구현형 개발자 vs 문제 해결형 개발자 기능 구현형 개발자는 자신의 일을 단순히 주어진 스펙에 제한한다. 이런 유형은 어떤 불가능한 기능 요청을 받았을 때 “이 기능은 안 된다”고만 말한다. 이에 비해 문제 해결형 개발자는 단순히 맡겨진 일만 하는 것이 아니라 비즈니스 문제를 능동적으로 해결하려 한다. 이 유형은 어떤 기능이 구현 가능한지 불...
방문자 패턴 (Visitor Pattern) 객체 구조를 변경하지 않고도 새로운 동작을 추가할 수 있게 해주는 패턴이다. 방문자 패턴은 객체의 구조와 동작을 분리하여 객체 구조를 변경하지 않고 새로운 동작을 추가할 수 있다. 주로 객체 구조는 안정적이지만 동작 부분에서 변경점이 많은 상황에 사용하면 유용하다. 패턴 구조 Visitor...
템플릿 메소드 패턴 (Template Method Pattern) 이름에서 알 수 있듯이 상위 클래스에서 템플릿 메서드로 알고리즘의 구조를 정의하고 그 중 일부 단계의 알고리즘은 서브 클래스에서 구현을 위임하는 패턴이다. 공통되거나 변경이 없는 로직은 슈퍼 클래스에서 구현하고 변경이 필요한 로직은 서브 클래스에서 구현한다. 추가적으로 Hook 메...
전략 패턴 (Strategy Pattern) 다양한 알고리듬을 캡슐화해 런타임에 교체할 수 있도록 하는 패턴이다. 이 패턴을 사용하면 알고리즘을 사용하는 클라이언트 코드와 알고리즘 자체를 분리할 수 있어 코드의 유연성과 확장성이 높아진다. 패턴 구조 Strategy : 공통 알고리즘을 정의하는 인터페이스 ConcreteStrateg...
상태 패턴 (State Pattern) 객체 내부 상태 변경에 따라 객체의 행동이 달라지는 패턴이다. 상태에 특화된 행동을 분리할 수 있고, 새로운 행동을 추가하더라도 다른 행동에 영향을 주지 않는다. 패턴 구조 State : 컨텍스트가 변경될 수 있는 여러 상태들에 대한 인터페이스를 정의한다. Context : 상태 객체를 가지고...
옵저버 패턴 (Observer Pattern) 옵저버 패턴은 특정 객체 상태 변화를 관찰하고 알림 받는 패턴이다. 객체의 상태가 변화하면 이를 관찰하는 객체에게 알려주어 상태 변화에 대한 처리를 할 수 있도록 한다. 패턴 구조 Subject : 관찰 대상이 되는 객체이다. 상태가 변화하면 옵저버에게 알린다. 여러 옵저버들을 가지고 있을 ...
메멘토 패턴 (Mediator Pattern) 캡슐화를 유지하면서 객체 내부 상태를 외부에 저장하는 패턴이다. 객체의 상태를 저장하고 복구하는 데 사용된다. 패턴 구조 Originator: 현재 상태를 저장하고 다시 상태를 복구하는 가장 중요한 역할을 함. 메멘토를 만드는 함수와 다시 메멘토를 통해 상태를 복구하는 함수를 갖고 있다. ...
중재자 패턴 (Mediator Pattern) 여러 객체들 간의 의사소통하는 방법을 추상화 시켜 의존성간의 결합도를 낮추는 패턴이다. 객체 지향 프로그래밍에서 점점 비즈니스 로직이 복잡해지면 객체간의 상호작용하는 부분이 많아지고 복잡해진다. 이때 객체간의 상호작용을 중재자 객체를 통해 처리하면 객체간의 결합도를 낮출 수 있다. 패턴 구조 ...
이터프리터 패턴 (Iterator Pattern) 집합 객체 내부 구조를 노출시키지 않고 순회 하는 방법을 제공 하는 패턴이다. 집합 객체를 순회하는 클라이언트 코드를 변경하지 않고도 다양한 방식으로 순회할 수 있다. 패턴 구조 Iterator: 순회하는 인터페이스를 정의하는 클래스 ConcreteIterator: Iterator ...