본문 바로가기

분류 전체보기147

책읽는게 느린 개발자 책읽는게 느린 개발자 공부에 있어서 나의 단점 중 하나는 책 읽는 게 너무 느리다 이다. 이건 중학교때부터 나의 발목을 잡아왔다. 남들보다 책 읽는 속도가 너무 느리다보니 자연스레 독서량이 줄어들었다. 아이러니하게도 책은 또 좋아해서 서점도 자주가고, 항상 책을 많이 읽고싶은 욕망이 있다. 어릴때는 이런 점이 너무 스트레스여서 속독법도 익혀보려하고 만화책, 판타지 소설책 등등 다양한 시도를 했었다. 이게 어떻게 해도 책이 빨리 읽혀지지가 않는다. 그렇다고 난독증인거 같지는 않다…. 지금도 만화책 한권을 보려면 한시간이 넘게 걸린다. 1시간에 1권이 가능한가... 그렇다고 무작정 속도가 느린건 아니다. 그냥 페이지나 문단을 쉽게 쉽게 못넘어가는 것 같다. 조금이라도 더 머릿속에 들어와야 직성이 풀려서 페이.. 2020. 4. 28.
스프링부트 JSON 응답처리와 예외처리 스프링부트 JSON 응답처리와 예외처리 저번 게시판 프로젝트를 하면서 느낀 부족한 점 중에서 예외처리 미흡 JSON Return 시에 공통된 포맷으로 리턴하지 못한점 이 있었습니다. 이 두문제에 대해 포스팅 해보겠습니다. 혹시 틀렸거나, 더 좋은 방법이 있다면 댓글 부탁드리겠습니다! 공통된 포맷으로 JSON 리턴하기. 요청에 대한 응답을 할 때, 요청마다 JSON 응답의 포맷이 달랐기때문에 클라이언트에서 요청마다 다른 처리를 했습니다. Return되는 JSON의 포맷이 통일되어있다면 api호출시 error처리에 대한 부분도 통일되게 할 수 있을 것 같습니다. 우선 return 하게될 JSON 포맷은 { data: { // 해당 요청의 결과가 들어가게 됩니다. } errors: { // 오류가 있다면 오류.. 2020. 4. 22.
1일 1커밋 100일 회고 1일 1커밋 100일 회고 1일 1커밋을 진행한지 어느덧 100일이 지났다. 그 동안의 느낀점, 부족한 점을 정리하기 위해 포스트를 작성한다. 현재 깃허브 커밋 상황이다. 1일 1커밋을 하고 한달째에 회고글 을 작성했었다. 시간이 참 빠르게 흘러간다는 걸 느꼈다. 어느덧 100일이라니…. 크게는 3가지의 활동이 있었다. 블로그 작성 계층형 게시판 만들기 인터넷 강의 시청 내가 생각한 1일 1커밋의 큰 장점은 내가 시작한 일에 마무리를 지을 수 있게 해주는 것 이라고 생각한다. 호기롭게 시작하기는 쉬워도 마무리를 한다는 건 정말 어려운 일인 것 같다. 출처(https://m.vingle.net/posts/2559756?shsrc=fb) 특히나 나는 마무리를 잘 하지 못한다는 단점이 있다. 그래서 학원 수강.. 2020. 4. 13.
이력서만들기 - GitHub Page 이력서 만들기 - GitHub Page 저는 그 동안 잡코리아, 사람인에 작성한 이력서를 이용해 구직 활동을 했습니다. 요즘 로켓펀치, 원티드 등 다양한 개발자 구직 / 구인 서비스가 늘어나면서 이력서 정리에 대한 필요성을 느꼈습니다. 저는 스펙이 낮은 편에 속하기 때문에… 좀 더 눈길을 끌만한 이력서가 없을까? 하는 생각을 하게되었고, GitHub Page 를 이용해 이력서를 작성하기로 했습니다. 이력서는 경력을 쌓아가면서 꾸준히 관리를 해야한다고 들었기 때문에 이번 기회에 포스트를 작성하면서 이력서를 만들어보기로 했습니다. 먼저 깃허브에 Repository를 생성합니다. 위 처럼 [내 아이디].github.io 라는 이름으로 저장소를 생성하면 깃허브 페이지 서비스를 이용할 수 있습니다. 이력서로 사용.. 2020. 4. 12.
고수의 발자취를 따라서 - 계층형 게시판 후기, 피드백 고수의 발자취를 따라서 - 계층형 게시판 후기, 피드백 2달 가량의 계층형 게시판이 마무리 되었습니다. 전체 코드는 Git Hub에 있습니다. 계층형 게시판 github 게시판 페이지 게시판 상세 페이지 게시판 삭제 후 페이지 허접하지만… 여차저차 마무리가 되었습니다. 그 전에 틈틈히 정리한 포스트는 게시판 조회에서 마무리했습니다. 점점 새로운 기술보다는 코드를 복붙하는 느낌이 강해졌기 때문입니다. 후기 정말 간단하게 구현해서 후기랑 피드백을 쓰기도 민망하지만 작은 일에도 스스로에게 피드백을 주고 개선하는게 중요하다 생각합니다. 사실 처음 시작했을때 마무리가 될지… 걱정이 앞섰는데 여자처차 마무리가 되어서 후련한 기분이 듭니다. 이것저것 기능을 더 붙일수도 있겠지만 초반에 완성 시키고자 한 기능에 대한 .. 2020. 4. 6.
고수의 발자취를 따라서 - 계층형 게시판(10) - 마무리 게시판 기능 구현 (4) 1. 프로젝트 생성 2. DB 연결 3. 로그인 Front Page 작성 4. 로그인 기능 구현 5. 게시판 Front Page 작성 6. 게시판 기능 구현 게시판 기능 구현 - 게시글 조회 이제 본격적으로 게시판의 기능을 구현해보도록 하겠습니다. 먼저 게시글을 조회하는 기능을 만들겠습니다. 현재 계층형 게시판을 만들고 있기 때문에 저번 포스트 에서 만들어 놓은 쿼리를 수정하여 적용하겠습니다. WITH RECURSIVE CTS AS ( SELECT id ,title ,content ,depth ,parent_id ,author_id ,created_date ,modified_date ,CAST(id as CHAR(255)) lvl ,id as groupno FROM boards .. 2020. 4. 5.
고수의 발자취를 따라서 - 계층형 게시판(9) 게시판 기능 구현 (3) 1. 프로젝트 생성 2. DB 연결 3. 로그인 Front Page 작성 4. 로그인 기능 구현 5. 게시판 Front Page 작성 6. 게시판 기능 구현 게시판 기능 구현 - 연관 관계 매핑 이제 본격적으로 게시판의 기능을 구현해보도록 하겠습니다. 기본적인 CRUD기능을 구현하기 전에 Entitiy의 연관 관계를 설정하겠습니다. CRUD란 Create Read Update Delete 의 앞 글자들을 따서 CRUD라고 부릅니다. domain 패키지 아래 위의 사진처럼 boards, images 패키지를 생성합니다. board 패키지 안에 Boards 클래스를 생성합니다. Boards (import 부분은 생략했습니다) 전체 코드는 Git Hub 에 있습니다. package c.. 2020. 4. 1.
신입 개발자가 느낀 공부와 실무의 차이점 신입 개발자가 느낀 공부와 실무의 차이점 아직 햇병아리 신입이지만… 신입으로 느낀 실무와 공부의 차이점을 정리하려고 한다. 물론 회사마다 차이점이 있고, 내가 지금 개발자로써 접하는 것은 정말 일부분이지만 새로운 것을 접해도 언젠가는 당연하게 느껴지기 때문에 글로써 정리를 하려고한다. 방대한 스케일(?) 처음 회사의 프로젝트 코드를 받았을 때 생각보다 스케일이 커서 놀랐었다. 당연히 혼자서 개인 프로젝트를 했을 때랑은 차원이 다른 양이었다. 프로젝트 안에 있는 폴더의 숫자부터 많았기 때문에 역시 실무는 다르긴 다르구나 라는 생각을 했었다. 사실 혼자서 공부를 했을 때는 폴더의 구조나, 코드의 구조 같은 설계에 대한 부분은 크게 신경쓰지 않고 개발을 했었다. 작성한 코드의 양이 늘어나고, 프로젝트의 구조가.. 2020. 3. 24.
고수의 발자취를 따라서 - 계층형 게시판(8) 게시판 기능 구현 (2) 1. 프로젝트 생성 2. DB 연결 3. 로그인 Front Page 작성 4. 로그인 기능 구현 5. 게시판 Front Page 작성 6. 게시판 기능 구현 게시판 Front Page 작성 기능을 구현하기 전에 화면을 먼저 만들겠습니다. 게시글을 보는 페이지를 만들겠습니다. boardDetail.html 을 추가하겠습니다. boardDetail.html 타이틀 작성자 님이 작성일 작성한 글입니다. 게시글 본문 원글보기 답글달기 삭제 이제 페이지를 만들었으니 Controller를 수정하겠습니다. WebController.java package com.board.webserivce.web; import java.security.Principal; import java.util.Opt.. 2020. 3. 14.
고수의 발자취를 따라서 - 계층형 게시판(7) 게시판 기능 구현 (1) 1. 프로젝트 생성 2. DB 연결 3. 로그인 Front Page 작성 4. 로그인 기능 구현 5. 게시판 Front Page 작성 6. 게시판 기능 구현 계층형 게시판 계층형 게시판이 생소할 수도 있겠지만 의외로 주변에서 흔히 볼수있는 형식입니다. 대표적으로 답글을 다는 기능이 계층형이라고 생각하시면 됩니다. 이렇게 답글을 다는 형식을 많이 보셨을 겁니다. 오라클DB를 사용하면 CONNECT BY 와 START WITH 문법을 사용하면 비교적 간단하게 구현할 수 있습니다. 하지만 MYSQL에는 그런 기능이 없습니다. 대신 구현하는 방법이 몇가지 있었습니다. 1. 함수를 정의하는 방법 함수를 정의하는 방법은 구현이 복잡하다는 단점이 있습니다. 2. 테이블 구조를 이용하는 방법 .. 2020. 3. 13.
고수의 발자취를 따라서 - 계층형 게시판(6) 로그인 기능 구현 (2) 1. 프로젝트 생성 2. DB 연결 3. 로그인 Front Page 작성 4. 로그인 기능 구현 5. 게시판 Front Page 작성 6. 게시판 기능 구현 Spring Security(스프링 시큐리티) 회원가입, 로그인 / 로그아웃에 대한 간단한 구현이 끝났습니다. 여기서는 회원 탈퇴, 유저 정보 변경을 진행하도록 하겠습니다. 유저 정보 변경은 JPA의 Dirty checking을 이용해 구현하겠습니다. Dirty checking 더티 체킹(Dirty checking) 이란 상태 변경 검사입니다. JPA에서는 트랜잭션이 끝나는 시점에 최초 조회 상태와 비교해 변화가 있는 모든 엔티티 객체를 DB에 자동으로 반영해줍니다. JPA에서는 엔티티를 조회했을 때 조회 상태 그대로를 스냅.. 2020. 3. 10.
고수의 발자취를 따라서 - 계층형 게시판(5) 로그인 기능 구현 (1) 1. 프로젝트 생성 2. DB 연결 3. 로그인 Front Page 작성 4. 로그인 기능 구현 5. 게시판 Front Page 작성 6. 게시판 기능 구현 Spring Security(스프링 시큐리티) 아무래도 로그인 / 로그아웃의 기능에 대해서 생각해야 할 것들이 많습니다. 대표적으로 접근 주체(Principal) : 보호된 대상에 접근하는 유저 인증 (Authenticate) : 현재 유저가 누구인지 확인 (로그인) 인가 (Authorize) : 현재 유저가 어떤 서비스에 접근할 수 있는지에 대한 권한 검사 권한 : 애플리케이션의 동작을 수행할 수 있도록 허락되어있는지를 결정 간단한 예로 사용자 라는 권한 을 가진 유저는 관리자 권한을 가진 사람이 접근할 수 있는 서비스에는.. 2020. 3. 9.