목록분류 전체보기 (89)
빠에야는 개발중
Model1 아키텍처로 게시판 개발 스프링 MVC를 사용하기 전에 어떤 식으로 아키텍처가 발전해왔는지를 알아보기 위해 구식 아키텍처부터 사용해보기로 했다. 이런 작업은 이전에도 한적이 있었는데 도중에 어떤 이유로 실패했기 때문에 다시 해보는 것이다. (무슨 이유였는지는 잊어버렸다…) 우선 model1부터 시작해보겠다. Model1은 jsp에서 컨트롤러와 뷰를 모두 담당하는 것이다. 사실 컨트롤러라는 개념이 나중에 나왔으므로 반대로 말한 것이지만 이해하기 편하니까 이렇게 말하겠다. 요청을 받고 데이터를 조작하여 렌더링하는 것까지 모두 jsp에서 이루어지는 모델인데 굉장히, 굉장히 보기 불편하고 짜기도 귀찮게 생겼다. 책을 보고 그대로 옮겨서 타이핑하는 작업임에도 재미없고 지루함을 느꼈다. 그리고 구조 자체..
모 회사 입사 코딩 테스트에도 나왔던 문제이다. 기본적인 자료구조 활용이라 심플하고도 중요하고, 또 재미있는 문제라고 생각한다. 아이디어 기본 아이디어는 스택 두 개를 하나는 enqueue 전용, 하나는 dequeue 전용으로 두는 것이다. enqueue 되는 값은 무조건 1번 스택에 push 한다. dequeue를 할 때는 2번 스택이 비었는지 체크하여 1. 비지 않았다면 그대로 2번 스택에서 pop 한다. 2. 비어있다면 1번 스택의 모든 요소를 pop하여 2번 스택에 차례로 push한다. 이렇게 하면 1번 스택에 있었던 요소들이 역순으로 2번 스택에 들어간다. 그 후에 pop 하면 된다. 코드스택을 직접 구현하는 것도 좋지만, 좋은 라이브러리가 있기 때문에 감사히 사용했다. 1234567891011..
Spring JDBC 이번에는 스프링 JDBC를 사용해서 DB와 연동해보자. 기존 JDBC에서는 개발자가 연결을 모두 담당하여 번거롭고 긴 코드를 짜고 관리해야만 했다. 이를 해결하기 위해서 스프링 JDBC를 적용하면 개발자는 연결에 대해 알 필요가 없어지고 쿼리에만 집중할 수 있게 된다. 먼저 JDBCTemplate 클래스 설정을 해주자. 우선 dataSource를 설정해야한다. xml 코드들과 properties 파일 정보 빈 등록을 해주었기 때문에 Autowired 어노테이션으로 의존성을 주입하여 사용하기만 하면 된다.이전에 사용하던 JDBC 코드보다 훨씬 깔끔한 것을 알 수 있다. 이번에 사용한 jdbcTemplate은 RowMapper를 사용하여 객체 매핑을 해줘야한다. 이전에 사용해보았던 sq..
스프링 AOP 이번에는 AOP를 적용하여 관심사를 분리해보고자 한다. 이전에 한번 써볼 기회가 있었는데 컨벤션 문제로 롤백 되었던 기억이 있다. 그래서 정확한 사용법을 모르기 때문에 차근차근 짚어보았다.AOP 이해하기 관점 지향 프로그래밍(Aspect Oriented Programming)은 객체 지향 프로그래밍과는 조금 다른 방식의 패러다임이다. 기존의 OOP에서는 공통 코드를 독립된 모듈로 분리해내기가 어려웠는데, AOP를 사용하면 쉽게 해결할 수 있다. 우선 용어를 알아보자. 핵심 관심 주요한 비즈니스 로직을 의미한다. 횡단 관심 로깅, 트랜잭션 처리, 예외 처리 등의 다수의 핵심 관심에 걸친 공통 관심을 의미한다. 조인포인트(Joinoint) 조인포인트는 호출되는 모든 비즈니스 메소드를 의미한다...
이번에는 기존에 xml 설정을 통하여 의존성 주입을 해주던 방법과는 다르게, 어노테이션을 이용하도록 코드를 수정했다. 또한 이전에 작성했던 tv 프로그램을 삭제하고, 본격적으로 많이 사용되는 Service(Impl), DAO, VO 컴포넌트들을 추가하여 db와 연동시켰다. 전체적인 구조는 아래와 같다. 이전에 진행했던 프로젝트들은 DAO와 ServiceImpl을 각각의 패키지에 분리해서 넣어줬었는데, 이 프로그램은 크기가 작아서 그런지는 모르겠지만 한 패키지에 집어넣었다. impl이라는 이름의 패키지에 서로 다른 역할을 하는 두 클래스가 같이 들어가있으니 굉장히 찝찝하다. 아마 발전 단계에 있는 미완성작이기 때문인 듯 하다. 자세한 소스 및 변경 사항은 [여기]에서 볼 수 있다.
우선 기본 설정들을 진행했다. 이클립스, STS, 톰캣(아직은 사용하지 않지만)을 설치하고 소스트리를 이용하여 github에 푸시 하였다. 앞으로도 코드가 업데이트 되면 github을 갱신할 것이다. 또 이전에는 데이터베이스를 mysql만 사용했었는데, 본 책에서는 h2 데이터베이스를 사용한다. 이전부터 사용해보고 싶기도 했고 실제로 세팅해보니 매우 가볍고 간편했다. 프레임워크 소개 프레임워크는 개발자에게 간편하게 개발할 수 있도록 그 틀을 제공한다. 이렇게 함으로써 개발 컨벤션을 어느 정도 통일시켜 다른 개발자들간의 혼동을 줄이고, 전체적으로 유지보수 비용을 줄일 수 있다. 스프링에서는 스프링 컨테이너가 IoC를 담당하여 객체 생명주기 관리 등 번거로운 작업들을 대신 해주어(대신 해주는 것 뿐만 아니라..
4학년 여름방학 이후, 2학기 내내도록 개발을 하지 못했다. 아니 안 했다고 하는 게 솔직한 표현이다. 머리 속으로는 나름대로 잊지 않겠다고 구조를 되뇌이곤 했지만 코딩은 역시 직접 해보는 것이 최고 아니겠는가? 그리하여 본격적인 토이프로젝트를 진행하기 전에 “무작정 따라해보는” 책을 통하여 감을 되찾고 더 나아가 H2, JPA 등 써보지 못했던 기술들을 추가하고, 스프링 부트로의 진행을 고려해보고자 한다. 그래서 무슨 책을 볼건데? 내가 사용할 책은 네이버 인턴 생활을 할 때 받았던 [스프링 퀵 스타트] (채규태, 루비 페이퍼)이다. 이 책은 하루 7시간을 투자하여 5일동안 간단한 프로젝트를 완성 해보는 “무작정 따라하기” 책이다. 물론 코드만 줄줄 읊어져있는 건 아니고 프레임워크에 대한 소개와 도입하..
클린코드 리뷰 책 제목 : 클린 코드 저자 : 코버트 C. 마틴 출판사 : 인사이트 네이버 인턴을 할 때 UGC 플랫폼 측에서 인턴 교육용으로 책 세 권을 선물해주었다. 인턴이 끝난 이후에도 집에 가져와서 읽을 수 있어 매우 좋다. 오늘은 그 중 하나인 “클린 코드”를 리뷰해보고자 한다. 늘 끼고 다녀야 할 책 이 책은 전 내용에 걸쳐 깔끔한 코드, 말 그대로 클린 코드를 짜는 방법에 대해 이야기하고 있다. 이는 코딩하는 습관에 대해 말하고 있는 것과 동일하다. 책 한 번 읽고 그 핵심을 바로 체득할 수 있다면 얼마나 좋겠냐마는, 현실은 그렇지 못하기 때문에 항상 옆에 끼고 참고해가며 읽어야 하는 책이 되겠다. 빨리 읽히는 책 처음 이 책을 받았을 때 앞서 말한 것처럼 그때 그때 꺼내읽는 “가이드북”처럼..
새해가 밝았다. 보름 남짓을 생각만 하다가 드디어 회고를 한 번 해보고자 한다. 2017년은 어땠나 그냥 학부생 대학교에 입학하고 5년이 지나 어느덧 4학년이 된 2017년, 취업은 생각 뿐, 가진거라곤 4점 조금 안되는 학점과 친구들이랑 진행하고 있는 NAVER D2 CAMPUS FEST 출전 프로젝트 하나… 이런 걸로 내가 능력을 보여줄 수 있을까? 아니 애초에 내가 능력이 있긴 한건가? 그런 고민들로 가득한 채로 있었다. 결국 캠퍼스 페스트는 예선 탈락의 고배를 마셨고 그렇게 내 겨울방학은 끝나는 것 같았다. 우연한 기회, 그리고 도전 1월 말, 친구의 소개로 다음세대재단에서 후원하는 소셜이노베이션캠프36 해커톤(이하 소캠)에 나가게 되었다. 그전까지 정보올림피아드 등 프로그래밍 관련 대회와는 연이..