오늘 한일

- JSON API 및 AJAX 실습

  • ModelAndView 클래스를 구현(View를 갖고 반환한기만 가능한 상태) 하여 Controller 인터페이스의 반환타입을 String에서 ModelAndView로 변경

  • View 인터페이스 및 해당 인터페이스를 구현한 JspView, JsonView 클래스 구현

  • ModelAndView 클래스 구현 완료 및 적용

- 포비와의 상담


오늘 느낀점

  • MVC 프레임워크 2단계(ModelAndView)는 가능하면 힌트를 안보고 만들어보고 싶었는데 실패. 이럴땐 아쉽다. 그래도 힌트를 참조하고서 만들고서 고칠곳이 있나 보다가
    @Override
    public ModelAndView execute(HttpServletRequest request, HttpServletResponse response) throws Exception {
      Long answerId = Long.parseLong(request.getParameter("answerId"));
      answerDao.delete(answerId);
      ModelAndView mav = new ModelAndView(new JsonView());
      mav.setAttribute("result", Result.ok());
      return mav;
    }
    

    이 코드를 마주하고서는 순간 화이트코스의 첫주에 포비를 따라 작성했던 코드들이 떠올랐다. 생애처음 작성해본 백엔드 작업이 그날의 코드들이라 현재 내가 차근차근 진행해온 작업들의 결과로 컨트롤러 단의 메소드 내부가 그 당시와 같은 형태로 작성 되는걸 발견하고 오묘한 기분이 들어서 순간 멍하니 이삼분 쳐다본거 같다.
    당시에도 추후엔 String을 리턴타입으로 하는 방법도 있었지만 나한텐 ModelAndView가 헬로월드 마냥 백엔드의 시작이였던 친구였던지라 더욱 그 느낌이 강했던거 같다. 주소를 넣어 생성하고 데이터를 넣으면 뿅하고 페이지가 연결되니 얼마나 신기했겠는가? 게다가 ModelAndView에 익숙해지려고 노력하던 시기라 차후에 배운 String으로 리턴하는 방식은 익숙치 못했다. 당시엔 정상적으로 동작 하기위해서 “이렇게 해야한다”였는데 오늘에서야 “이렇게 되어 있겠구나” 싶다.
    그래서 ModelAndView를 봤을때부터 반가워서 힌트를 안보고 하고 싶었는데 실패…힌트를 조금 보고 하려고 했는데 또 실패…결국 힌트를 많이 보고 구현하게 되서 아쉽다. 만약 힌트없이 성공했었으면 엄청 보람찼었을거 같다.

  • 그런면에서 스프링이 장고에 비해서 세세한 세팅들도 해야하는 등 진입 장벽에 어려움이 있다고 생각했던 부분이 스프링 덕에 얼마나 편히 웹개발이 가능해졌는지에 대한 놀라움을 처음으로 깨달았다. 스프링이 상대적으로 다른 프레임웍에 비해 불편한건 사실이지만 다른 프레임웍들이 더 편한거지 스프링 자체도 절대적으로는 웹개발을 편하게 만들어주는 도구라고 생각된다.

  • 불행한 천국 (창천향로)이란 글을 보게 됐다. 코드스쿼드내 다른 분들처럼 엽서를 적어야지 하다가 안적었는데 적고 싶은 말은 대강 “5년, 10년 더 지나도 공부하고 싶은 것들이 있는 개발자가 되자” 이런 멘트였다. 그런 차원에서 스스로 더 생각해 볼 수있는 좋은 글이였다. 나도 지금은 내 상황을 더 좋게 하기 위해 노력 하는 측면도 있지만 상황을 위해서만이 아니라 내 스스로를 위해서 혹은 그냥 하고 싶으니까 꾸준히 노력 하는 사람이 되도록 그것 또한 노력해보자.(스스로를 위한다는 말이 자신의 상황도 내포하지만 어떠한 의미를 내포하고 있는진 대략 알것이라 생각된다..)
    조금은 다르지만 비슷한 이유로 당장은 slipp스터디가 관심은 가지만 지원은 안하고 싶은 이유가 아직은 코드스쿼드라는 과정을 따라 공부하다보니 조금은 끌려다니는 느낌이 있다. 그러다보니 스스로 부족하다고 느끼는 부분 혹은 내가 관심이 가는 주제(현재는 크게 없지만)들을 찾아 그것들을 공부할 여유와 실력은 가지고 있지 않다. 그리고 지금 당장은 스스로가 과정의 내용들을 공부하는게 더 중요하다고 생각하고 있다. 그래서 과정 이후 한동안은 시간대비 지식을 쌓을수 있는 양은 적어 비효율적이라도 온전히 나만의 공부 시간을 가져보고 싶다.(취직 까지 한 후의 이야기라 회사 업무를 위한 공부를 하다보면 얼마나 시간이 날지는 궁금하지만 말이다)

  • 1~2년전까지만 해도 어머니가 형은 욕심이 너무 많아 탈이고 나는 욕심이 없어 탈이라고 했는데 스스로도 욕심이 많아진걸 느낀다.

내일 할일

  • RESTful API 설계 내용 보기

  • 뭔가 더 할 생각은 있는데 뭘 할지 모르겠으니 찾아보자

오늘 한일

- JSON API 및 AJAX 실습

  • 질문 상세페이지(show.jsp)에서 하드 코딩된 답변들 대신 질문에 실제 추가된 답변들 표시되게 구현

  • 답변 작성 기능 구현

  • AJAX로 답변 작성 변경

  • redirect를 통한 답변 삭제 구현

  • AJAX로 답변 삭제 구현

  • 남은 사항 :

    • AJAX로 작성한 답변들 또한 삭제버튼 동작하게 구현

- jQuery

  • serialize() : 데이터를 보내기 위해 폼 요소 집합을 문자열로 인코딩

  • parents(selector) : parents 인자값으로 잡히는 모든 상위 요소를 반환

  • closest(selector) : parents 함수와 달리 셀렉터로 잡히는 상위 요소중 가장 근접한 하나를 반환


오늘 느낀점

  • jQuery는 살짝 헷갈렸지만 이전 js를 공부했던 기간때문에 큰 어려움 없이 진행을 했다. 당시 공부좀 해두길 잘한거 같다.
    그러나 답변 작성 리퀘스트를 두번 요청하는 기현상이 발생하여 막혔었는데 프론트단 작업은 욕심 안내고 가려고 했지만 아무리 봐도 삭제 구현시 문제가 될거 같아 해결하려다 해당 부분에서 한시간 넘게 시간을 쓰다 이건 아닌거 같아서 프론트분한테 sos를 쳐서 같이 코드를 보며 해결을 했다. 사소한 문제였는데 같이 보니 확실히 금방 보였다.

  • 일부 있는 프론트단 작업이 손에 덜 잡혀서 삭제 구현 부분에서 집중이 덜 됐는데 현재 안돼고 있는 부분이 이벤트 등록이 제대로 안된 문제란걸 알고 있으니 조금 집중해서 후딱 해결해야 겠다.


내일 할일

  • JSON API 및 AJAX 실습 :

    • AJAX로 추가한 답변이 제대로 삭제 안돼는 부분 수정

    • pr은 아래 실습까지 끝나고 진행 예정

  • MVC 프레임워크 2단계 실습 :

    • JSON을 응답하는 컨트롤러에서 불필요하게 null을 반환하는 부분 리팩토링

12월 12일 한일

- JDBC 라이브러리를 통한 질문(Question) 기능 구현

  • 질문 작성, 조회, 수정, 삭제 기능 구현 완료

- 제4회 마스터즈 오픈세미나 참석

  • 브라이언(봄이네집)님의 발표 : 봄이네집님은 확실히 자신만의 길을 잘 가고 계신거 같다. 나도 봄이네집님처럼 자신만의 색을 가지고 나만의 길을 찾아가자.

  • 포비님의 발표 : 포비의 TDD 강의를 들으며 TDD에 대해 다시한번 생각해 볼 기회를 가졌다. 테스트코드도 리팩토링의 대상이 될 수 있다고 생각을 못했는데 덕분에 테스트코드를 어떻게 짤까 고민하던 시간들을 단축 할 수 있을거 같다.(일단 만들고 나중에 고치자) 확실히 TDD를 떠나서 테스트 코드가 있으면 리팩토링을 할때 시간이 엄청 절약되고, 불안감 없이 진행 할 수 있는거 같다.

  • JK님의 발표 : 철학적인 내용들을 다뤘는데 어려울 수도 있는 내용들을 흥미롭게 설명 해주셨던것 같다. 뜬금 없지만 최근 읽다 멈췄던 칼럼책이 있었는데 책에 “절대와 상대” 파트가 있어서 다시 봤는데 이전엔 이해가 덜 됐던 부분들도 더 흥미를 가지고 보니 좀더 이해가 되는 느낌이였다. 결론은 철학은 어렵다.


12월 12일 느낀점

  • 질문 기능을 구현하면서 특별한 요구 사항 없이 필요한 부분들을 직접 찾아서 구현 하다 보니 즐거웠다. 작업을 하면서 “어떻게 시작을 할까”와 “questionId” 부분에서 살짝 고생을 하고 그 외적으로는 수월하게 진행을 했다. 해당 작업을 통해서 JDBC에 대한 복습이 된거 같다. 사실 JDBC, ORM이 뭔지 몰라서 고민이였는데 이번 실습을 통해서 JDBC가 뭔지 알게 됐다. 덕분에 JDBC와 ORM을 사용하는게 어떻게 다른지 이제는 구분이 된다.
    당시엔 너무 무지했던지라 화이트과정때 사용한게 ORM인줄 몰랐다가 어제 알게됐다. 당시 강의자료를 보니 그땐 단순히 필요한 부분만 찾아 봤던 내용들이 지금은 어떠한 내용들을 설명하는지 이해가 된다. 이럴때보면 확실히 화이트 과정때보다도 성장 했다는걸 느낀다. 당연히 그래야 하지만 시험 점수처럼 측정치가 있는 것도 아니므로 그걸 느끼는건 쉽지 않다.

  • 확실히 DB쪽은 6월에 정보처리기사를 공부 하면서 웹쪽으로 공부하기로 생각하던 시기라 데이터베이스는 공부를 좀 제대로 봐야 할 것 같아서 생활코딩의 강의를 보면서 공부해서 그런지 다행히도 간단한 쿼리문은 작성 및 해석이 가능하다. 덕분에 화이트 과정때도 포함해서 DB파트에서 아예 기초적인 부분에서 멘붕에 빠지진 않아서 잘한 선택이였던 것 같다.(정작 실기 시험에서 테이블 지우는걸 DROP이 아닌 DELETE로 작성해서 틀렸다) 당시엔 테이블, 레코드, 컬럼 이 개념들을 억지로 외우느나 엄청 고생했는데 해당 내용들을 직접적으로 공부하고 있진 않지만 DB를 다루다보니 이제는 확실히 구분 되는거 같다.
    조금은 늦었지만 다행히도 JDBC를 마무리하면서 단순히 사용법에 급급하는 정도가 아닌 DB를 다루는 법에 대해서 조금은 알게 된거 같아 다행이다.

  • 오픈세미나 이후 화이트 코스때 분들도 오셔서 시간 되시는 분들과 간단히 회식(?)을 했는데 오랜만에 잘 논거 같다.


12월 13일 한일

- JDBC 라이브러리를 통한 질문(Question) 기능 구현

  • 테스트 코드 수정

- JSON API 및 AJAX 시작

  • insert 부분 구현

- 경기 창조 혁신센터서 공부

  • 경기도 VR/AR 컨퍼런스 참석(vr 면접 발표)

  • 스마일쿡 식사


12월 13일 느낀점

  • 솔직히 판교에 있을땐 스마일쿡이 그렇게 좋은지 몰랐는데 지금 뱅뱅사거리엔 스마일쿡 같은 식당이 없다는게 진짜진짜 아쉽다.

  • 어제 저녁엔 오픈세미나 이후 회식까지 하고 오늘은 갓마일쿡, 피아노&바이올린 공연, 컨퍼런스까지 해서 어쩌다 보니 오늘까지 편히 잘 논거 같다.(공부하러 갔던 혁신센터도 컨퍼런스 구경가다 보니 별로 못했다) 그게 가능했던 이유 중 하나는 어제 Question 구현을 목표대로 당일 다 끝내서 심적으로 편했다.
    원래는 더 푹 쉴려고 했는데 새로운 과제가 시작될때 시작 부분을 헤매는 경향이 있어 해당 부분을 조금은 작업 해뒀다. 이후 작업들은 무엇을 해야 할지 알겠으니 푹 쉬었으니 내일 부터 다시 집중해서 하자


내일 할일

  • JSON API 및 AJAX 실습

    • 질문 상세보기 페이지에서 질문에 추가되어 있는 답변(댓글, answer)을 보여주게 구현

    • 웹 페이지에서 댓글 작성시 질문에 추가되고, 보여주게 구현

    • AJAX로 답변 추가 구현

    • 답변 삭제 구현

오늘 한일

- MVC 프레임워크, JDBC 라이브러리 : JDBC 라이브러리 실습 완료

  • pr 이후 받은 피드백 해결 : 일부 메소드들의 중복 제거

- JSON API 및 AJAX 시작

  • XHR과 Ajax에 대한 크롱의 강의 시청

  • JSON API 및 AJAX 실습에 앞서 최신의 java-framework와 안 맞는 부분 수정
    • qna 구현을 위한 sql, 기본 코드 추가

    • UserDao를 실제 컨트롤러 단에 적용

  • AJAX 구현에 앞서 Question 부분 구현 시작

오늘 느낀점

  • JDBC 라이브러리 실습을 완료 했는데 마지막 리팩토링 부분을 이전에 잠시 참조했던 트램의 코드를 활용해서 구현했다. 당시 괜찮은 구현법이라고 생각을 했던지라 기억에 남아있어서 가능하면 나만의 방식으로 구현을 고민하다 생각이 안나서 결국 해당 방법을 적용 했다. 직접 생각 해내지 못한 부분은 아쉽다.

  • 막히는 부분이 있으면 같은 단계를 진행하고 있는 사람이 있었다면 서로 논의를 하면서 진행을 할 수 있었을텐데 혼자 진행하고 있다 보니 그게 안돼서 살짝 아쉽다. 학습을 하는 기간이라 가야할 길을 찾아가면서 능동적으로 문제를 해결 해 나가고 싶은데 이미 구현을 한 분들한테 물어보거나 코드를 살짝 보다보면 그게 기억에 남거나 단순히 문제를 해결하는 방법만 터득하는 느낌이 든다. 방법을 익히는 것도 좋은 학습이지만 아쉬움이 남는건 별 수 없는거 같다.

  • 예외적인 상황 처리에 약한 느낌이 든다. 특히 null 부분, 이전 optional을 학습할 때 js를 한다고 제대로 안봐서 optional에 대해서는 약한데 이번주 수요일에 해당 파트를 꼭 봐둬야겠다.

  • JSON API 및 AJAX 시작하면서 느낀점은 확실히 새로운 단계를 진행 할 때 무엇을 어떻게 시작 해야 하는지에 대해서 시간이 좀 걸리는 편인거 같다. 답변 기능을 구현 하려고 보니 질문 관련 구현이 안되어 있는 걸 발견했다. JSON API 및 AJAX 실습 요구사항에는 없지만 실습을 진행하기 위해선 꼭 필요한 부분이다. 그런 의미에서 일단은 요구사항에 없는 부분을 구현 하게 되서 오랜만에 과정을 따르는게 아니라 개인적인 구현을 하는 기분이 나서 급 의욕이 난다. 늦게까지 구현을 하려고 했지만 주말동안 수면패턴이 깨져서(많이 자고, 적게 자고) 오늘은 그만 손대기로 했다. 내일 후딱 구현해보자!


내일 할일

  • JSON API 및 AJAX 실습에 앞서 Question 관련 구현 완료

    • index 페이지에서 질문 목록 표시

    • show 페이지에서 질문 상세 내용 표시

    • form 페이지에서 질문 작성

    • 위 사항들을 위한 CRUD 구현

  • JSON API 및 AJAX 실습 전반부 시작

  • 제4회 마스터즈 오픈세미나

12월 08일(금요일)

- MVC 프레임워크, JDBC 라이브러리 : JDBC 라이브러리 실습

  • 실습 완료

  • 기능적으로는 완료 되었으나 추가적으로 리팩토링 해야 할 부분들이 보임


12월 09일(토요일)

- 피곤해서 하루 종일 잤다.

  • 피곤하기도 했지만 최근 날씨가 급격히 추워지면서 몸살로 고생했던 분들도 있고 해서 몸 관리 차원으로 무리하지 않고 아예 푹쉬었다.

12월 10일(일요일)

- MVC 프레임워크, JDBC 라이브러리 : JDBC 라이브러리 재작업

  • 새로운 브런치를 만들어서 처음부터 구현

느낀점

  • 이번주 작업이 생각보다 길어졌었다. 행사를 다녀서 집중이 분산된 점도 있지만 결정적으로 현재 상태에 안주한 감이 없잖아 있는거 같다. 예전보다 즐기면서 하고 있지만, 프로그래밍을 공부하면서 품었던 독기가 옅어진 느낌이다. 다시 정신 바짝 차리자.

  • 푹 쉬고서 일요일에 JDBC 라이브러리를 마저 리팩토링 하려다가 작업하려고 앉자마자 생각이 바껴서 이전 머지된 상태서 새로 브런치를 만들어서 처음부터 구현을 했다. 한번에 최종적인 상태로 구현을 해 보려고 했는데 그렇게까진 안돼서 다시 순차적으로 진행을 해보았다. 새로 작업을 안했으면 좀더 오래 걸렸을것 같은 작업이 생각 외로 빨리, 그것도 이전보다 나은 상태로 끝났다. 이후 피드백 파트를 확인해보니 상속(inheritance, is-a)조합(composition, has-a)을 통한 중복 제거 부분이 추가로 더 있어서 마저 작업을 해봐야겠다.

  • 이번에 포비가 제시해준대로 순차적으로 리팩토링을 진행하면서 최종 형태에 도달하면서 단순히 코드가 깔끔해졌는 느낌보단 디자인 패턴이란게 이런식으로 좀 더 나은 코드를 위한 선배 개발자들의 고뇌의 산물이지 않을까란 생각이 들었다. 이전까지는 디자인패턴이라고 하면 어려운 무언가라고 막연히 생각했다. 근데 이번 실습을 통해서 디자인 패턴이 왜, 어떻게 나왔는지 알 것 같다. 그러고나니까 디자인 패턴이 아름답게도 보이고 이전과 달리 관심이 가게 됐다. 그래도 지금 당장은 다른 봐야 할 것들이 많아서 디자인 패턴들을 따로 공부 할 생각은 없지만 공부를 하다가 마주치는 디자인 패턴들에 대해 관심을 가지고 보게 될 것 같다.


내일 할일

  • MVC 코드 리뷰 및 JDBC 실습 마무리