상수보다는 열거형을 사용하자 Enum Class 은 열거형이라고 불리며, 서로 연관된 상수들의 집합을 의미합니다. Enum Class 의 장점 Enum Class 는 완벽한 싱글톤이다 Thread-safety, Serialization 이 보장된다 기존 코드의 문제점 비즈니스 로직의 코드를 테스트도 만들어서 꼼꼼하게 점검했지만, 깔끔한 코드를 추구하는 스프링 사용자답게 만들어진 코드를 다시 한번 검토해보자. 코드에 중복된 부분은 없는가? 코드가 무엇을 하는 것인지 이해하기 불편하지 않은가? 코드가 자신이 있어야 할 자리에 있는가? 앞으로 변경이 일어난다면 어떤 것이 있을 수 있고, 그 변화에 쉽게 대응할 수 있게 작성되어 있는가? 트랜잭션 트랜잭션 경계설정 데이터베이스는 그 자체로 완벽한 트랜잭션을 지원..
초난감 예외처리 초난감 예외처리 1 try { ... } catch(SQLException e){ }예외를 잡고는 아무것도 하지 않는 코드이다. 예외 발생을 무시해버리고 정상적인 상황인 것처럼 다음 라인으로 넘어가겠다는 분명한 의도가 있는 게 아니라면 연습 중에도 절대 만들어서는 안 되는 코드다. 초난감 예외처리 2 } catch(SQLException e) { System.out.println(e); }초난감 예외처리 3 } catch(SQLException e) { e.printStackTrace(); }예외가 발생하면 화면에 출력해주는데 뭐가 문제일까? 운영서버로 올라가면 콘솔 로그를 누군가가 계속 모니터링하지 않는 한 이 예외 코드는 심각한 폭탄으로 남아 있을 것이다. 예외를 처리할 때 반드시 지..
확장에는 자유롭게 열려 있고 변경에는 굳게 닫혀 있다는 객체지향 설계 핵심 원칙인 개방 폐쇠 원칙 을 다시 한번 생각해보자. 이 원칙은 코드에서 어떤 부분은 변경을 통해 그 기능이 다양해지고 확장하려는 성질이 있고, 어떤 부분은 고정되어 있고 변하지 않으려는 성질이 있음을 말해준다. 다른 목적과 다른 이유에 의해 다른 시점에 독립적으로 변경될 수 있는 효율적인 구조를 만들어주는 것이 바로 개방 폐쇠 원칙 이다. 템플릿이란 바뀌는 성질이 다른 코드 중에서 변경이 거의 일어나지 않으며 일정한 패턴으로 유지되는 특성을 가진 부분을 자유롭괴 변경되는 성질을 가진 부분으로부터 독립시켜서 효과적으로 활용할 수 있도록 하는 기법이다. 템플릿 메소드 패턴의 적용 템플릿 메소드 패턴은 상속을 통해 기능을 확장해서 사용하..
애플리케이션은 계속 변하고 복잡해져 간다. 그 변화에 대응하는 첫번째 전략이 확장과 변화를 고려한 객체지향적 설계와 그것을 효과적으로 담아낼 수 있는 IoC/DI 같은 기술이라면, 두 번째 전략은 만들어진 코드를 확신하게 할 수 있게 해주고, 변화에 유연하게 대처할 수 있는 자신감을 주는 테스트 기술이다. 웹을 통한 DAO 테스트 방법의 문제점 보통 웹 프로그램에서 사용하는 DAO의 테스트 하는 방법은 웹 화면을 띄워 폼을 열고, 값을 입력한 뒤 버튼을 눌러 등록한다. 이렇게 웹 화면을 통해 값을 입력하고, 기능을 수행하고, 결과를 확인하는 방법은 가장 흔히 쓰이는 방법이지만, DAO에 대한 테스트로서는 단점이 너무 많다. 그렇다면 테스트를 어떻게 만들어야 이런 문제를 피할 수 있고, 효율적으로 활용할 ..
초난감 DAO @Getter @Setter public class User { String id; String name; String password; }JavaBean 규악을 따르고 사용자 정보를 저장하는 User 클래스를 생성한다. JavaBean 멤버 변수마다 별도의 getter/setter method 가 존재 getter method 는 매개변수가 존재하지 않는다 setter method 는 반드시 하나 이상의 매개변수가 존재한다 construct 는 매개변수가 존재하지 않는다 디폴트 생성자 javaBean 은 파라미터가 없는 default construct 를 갖고 있어야 한다. 프레임워크에서 리플렉션을 이용해 오브젝트를 생성하기 때문에 필요하다 Reflection API란? 마법처럼 클래스의..
사이드 프로젝트 기획은 어느정도 구색을 갖추었고, 기획을 토대로 기술적으로 구현이 가능한지 검토가 필요하다. 우선 필요한 기능을 먼저 나열해보았다. 기본 기능 (우선 순위) 인스타그램 데이터 수집 수집된 데이터를 기반으로 가공 가공된 정보를 사용자에게 전달 추가 기능 (후 순위) 회원가입 & 로그인 사용자마다 내가 응모 했던 매장을 체크할 수 있는 기능 커뮤니티 게시판 인스타그램 데이터 수집은 셀레니움 라이브러리를 사용할 생각이다. 한가지 문제점이 있다면 인스타그램에서 API를 제공해주지 않아 실시간으로 등록되는 게시글에 대한 수집 여부이다. 실시간 웹 애플리케이션 개발이 부족하여 조금 더 검토를 해야겠지만 리소스 낭비가 발생하더라도 정확한 정보를 사용자에게 전달해주는게 목적인만큼 주기적으로 업데이트 요..
개요 최근 몇 년 동안 패션업계에서 가장 핫이슈를 선정한다면 스니커즈 씬 일 것이다. 국내 한정판 스니커즈 리셀 플랫폼에 대기업까지 뛰어들어 사용자 점유율을 위해 일 년 넘게 사용자들에게 수수료를 받지 않고 무료로 제공하고 있다. 글쓴이는 고등학교 때 처음 사고 싶었던 신발 나이키 루나 글라이드 를 시작으로 지금까지 푹 빠져있다. 사이드 프로젝트 주제를 선정하면서 여러 가지를 구현해보고 싶었지만, 누구보다 내가 많은 경험과 정보가 있으며 도메인 지식이 뛰어나다고 생각하는 신발 을 주제로 선정하였다. 신발 하면 떠오르는 단어 바로 한정판 신발이다. 위에서 언급했듯이 리셀 플랫폼은 남녀노소 할 것 없이 누구나 쉽게 한정판 신발을 접할 수 있으며 간편하게 구매할 수 있다. 한정판 신발을 얻기 위해서는 응모에 ..
주석 어떤 프로그램이든 가장 기본적인 단위가 함수다. 이 장은 함수를 잘 만드는 법을 소개한다. 작게 만들어라 함수를 만드는 규칙은 '작게' 이다. 이 규칙은 근거를 대기가 곤란하다. 함수가 작을수록 더 좋다는 증거나 자료를 제시하기도 어렵지만,오랜 시행착오를 바탕으로 작은 함수가 좋다고 확신한다. 블록과 들여쓰기 if문 / else 문 / while 문 등에 들어가는 블록은 한 줄이어야 한다는 의미다. 그러면 바깥을 감싸는 함수가 작아질 뿐 아니라, 블록 안에서 호출하는 함수 이름을 적절히 짓는다면, 코드를 이해하기도 쉬워진다. 함수에서 들여쓰기 기준은 1단이나 2단을 넘어서면 안 된다. 그래야 함수는 읽고 이해하기 쉬워진다. 한 가지만 해라 함수는 한 가지를 해야 한다. 그 한가지를 잘 해야 한다. ..
네트워크 관리사 2급 필기 & 실기 후기 필기 준비기간 : 3일 실기 준비기간 : 2일 네트워크 관리사 2급 필기 필기 검정과목 네트워크일반 전자문제집 CBT 문제풀이&오답노트 반복 TCP/IP 전자문제집 CBT 문제풀이&오답노트 반복 NOS 전자문제집 CBT 문제풀이&오답노트 반복 네트워크 운용기기 전자문제집 CBT 문제풀이&오답노트 반복 필기시험은 다른 자격증 필기시험과 비슷하게 문제은행으로 출제됩니다. 실제로 필기시험의 경우 이전에 출제되었던 문제유형이 그대로 출제되는 경우가 많아 시간이 촉박하다면 최근 5년치 문제와 답을 암기하는 식으로 공부하면 되고, 시간이 여유롭다면 문제를 풀고 오답을 찾아 공부하는 방식으로 공부하는 것을 추천드립니다. 시험에서 자주 출제되고 강조하는 부분이 매년 중복되기 때..
소프트웨어에서 이름은 어디나 쓰인다. 우리는 변수에도 이름을 붙이고, 함수에도 이름을 붙이고, 인수와 클래스와 패키지에도 이름을 붙인다. 이렇듯 많이 사용하므로 이름을 잘 지으면 여러모로 편하다. 이 장에서는 이름을 잘 짓는 간단한 규칙 몇 가지 소개한다. 의도를 분명히 밝혀라 "의도가 분명하게 이름을 지으라"고 말하기는 쉽다. 여기서는 의도가 분명한 이름이 정말로 중요하다는 사실을 거듭 강조한다. 좋은 이름을 지으려면 시간이 걸리지만 좋은 이름으로 절약하는 시간이 훨씬 더 많다. 그러므로 이름을 주의깊게 살펴 더 나은 이름이 떠오르면 개선하기 바란다. 그럼 코드를 읽는 사람이 좀 더 행복해지리라. 의도가 드러나는 이름을 사용하면 코드 이해와 변경이 쉬워진다. 다음 코드는 무엇을 할까? public Li..