본문 바로가기

개발관련/TIL

(46)
내배캠 11주 3일 차 오늘도 뭔가 많은 걸 하진 않았다. 과제도 딱히 진도가 나간 것도 없고 강의도 진도가 나간 거는 거이 없다. 그래도 오늘 배운것에 대해서 간략하게 적어보겠다. 배운 것은 JPA에 관해서 였는데 ORM은 무엇인지 영속성 컨텍스트정도이다. ORM은 무엇일까? Object Relational Mapping으로 객체지향 프로그래밍 언어를 사용하면서 이와 호환 되지 않는 시스템 간에 데이터를 변환하는 것이고 이 중 하나가 JPA(Java Persistence API)가 되겠다. 그럼 왜 JPA가 등장했을까? 스프링을 이용하면서 데이터를 유지하려고(영속성을 부여하려고) RDB(Relational Dababase)을 이용하게 됐다. RDB는 SQL(Structured Query Language)라는 문법이 따로 존재..
내배캠 11주 2일 차 오늘은 과제 진행과 강의 영상을 봤다. 뭔가 많은 것을 하진 않았는데 하루가 벌써 끝나간다. 뭔가 쓸 내용이 없는 거 같아서 과제는 뭘 했는지에 대한 것을 써보겠다.  과제는 게시물의 좋아요 추가, 삭제 기능과 계정 생성 시 비밀번호 암호화 하기를 했다. 그리고 QueryDsl을 사용해서 게시물 조회시 키워드 검색과 정렬하기를 구현했다. 그리고 게시물 조회할 때 사용자의 정보를 가지고 사용자가 좋아요를 누른 게시물인지에 대한 정보를 DTO(Data Transfer Object)에 담아서 반환했다. 이 과정에서 어려웠던 것은 좋아요를 눌렀는지 확인 후 반환하는 것이었다. 이 과정에 대해서 좀 써보겠다.  처음에는 게시물 조회한 목록을 반환할 때 사용자의 정보와 게시물의 정보를 갖고 좋아요 테이블에서 좋아요..
내배캠 11주 1일 차 오늘은 과제를 진행했다. 기본적인 crud는 대부분 했는데 문제는 사용자의 인증 및 인가처리였다. 스프링 시큐리티를 이용해서 인증, 인가를 처리하면 되지만 지금껏 과제를 하면서 전부 시큐리티를 활용했기 때문에 이번에는 시큐리티 없이 구현해보고 싶었다. 또한 마침 스프링 AOP(Aspect Oriented Programing)의 개념을 간단하게 배웠기 때문에 AOP를 이용해서 중복 로직을 한 번에 해결하고 싶었다. 내가 원했던 방식은 시큐리티에서 썼던 방식과 비슷하게 하는 것이었다. 그래서 먼저 시큐리티에서 했던 처리방법을 얘기하겠다.  시큐리티를 이용한 인증 인가 구현 시큐리티 필터@Componentclass JwtAuthenticationFilter( private val jwtPlugin: Jw..
내배캠 10주 5일 차 오늘은 뭐.. 과제하느라 딱히 공부한 것은 없다... 과제할 때 다른 분들이랑 모여서 서로 모르는 거나 안 되는 거를 도와주는 정도만 했는데 다른 분을 도와줄 때 코드를 보고서 충고를 하게 됐다. 물론 내가 충고를 할 정도로 남들보다 잘하는 것은 아니지만 그분은 아직 프로그래밍이 좀 약하기 때문에 남의 코드를 막 가져와서 구현을 한다. 이 방식은 잘못된 것이 아니라고 생각하지만 아무것도 모르고 그냥 가져와서 구현되니깐 넘어가야지라는 마인드였던 거 같아서 뭐라고 한 거 같다. 구현만 해놓고 테스트할 때 왜 안되지? 어디가 문제점인지 흐름조차 파악이 안 되었기 때문에 그러면 안 된다고 했다. 뭔가 말해놓고도 좀 미안하다는 생각이 들었다. 그러나 그렇게 계속해버리면 나중에 본인이 피해를 보기 때문에 더더욱 그..
내배캠 10주 4일차 또 오랜만에 돌아온다..매번 프로젝트하다가 TIL 쓰는 게 귀찮아서 안 쓰게 되는 거 같다. 이번에 쓸 내용은 자바 클래스의 접근제어지시자의 관해서이다.오잉? 뜬금없이 코틀린 하는데 자바라니 무슨 소린가 할 수 있다. 일단 왜 그런지 배경을 알아보자 Comment.kt의 일부@Entity@Table(name = "comment")class Comment{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) var id: Long? = null @Column(name = "content", nullable = false) var content: String? = null @Column(name = "created_at", nu..
내배캠 9주 2일 차 오늘부터 스프링 심화과정 프로젝트 시작이다. 일주일 동안 프로젝트를 진행하는데 주제는 백오피스 관련이다.내 팀은 JIRA 사이트처럼 팀 단위로 게시글을 작성하고 팀에 속한 사람만 그 게시글을 볼 수 있는 사이트를 만들기로 했다.일단 제일 힘들었던 것은 프로젝트 기획이랑 세부 내용을 정하는 것이 가장 어려웠다. 어떤 기능이 필요한지 그 기능을 만들면서 필요한 것들은 무엇인지를 정하고 협업을 하기 위한 준비를 하는데 오늘 하루를 다 썻다. 역시 팀 프로젝트는 시작부터 어려운 것 같다. 또한 사람마다 바탕과 지식이 다르니 팀원이 하는 말을 모르는 것들이 많았다. 이래서 역시 기초가 중요하다는 것을 다시 한번 깨닫게 됐다.   프로젝트는 이슈(게시글), 댓글, 멤버(유저), 팀의 4가지 기능?이 있어 이를 각자..
내배캠 9주 1일 차 오랜만에 글을 쓰는 거 같다. 그동안 프로젝트하랴 과제하랴 바쁘기도 했고 강의  들으면서 공부할 때 너무 어려워서 의욕이 안 났다. 일단 간단하게 그동안 있던 일을 얘기해 보면 뉴스피드 과제는 무난하게 완료했다. 그러나 좀 아쉬운 부분이 많긴 했다.뉴스피드 아쉬운 점1. 협업이 제대로 되지 않아서 진도가 많이 느림--> 각자 파트를 나눠서 하긴 했는데 스코프가 작다 보니 파트를 나누기도 애매해서 같은 역할을 여러 명이 맡아서 진행했다.     그러나 각자 하기에도 뭐해서 한 사람이 화면 공유를 통해서 코딩하고 나머지는 보면서 의견 공유를 했다.     따라서 진도가 느렸다.2. 개발 마감을 제대로 안 정함--> 개발할 때 언제까지 뭐를 끝내기를 안정했다 보니 대충 오늘은 어디까지 정도만 하죠라든지 프로젝..
내배캠 7주 2일 차 오늘은 뉴스피드 프로젝트의 기본 구현 기능인 게시글의 생성, 조회, 삭제, 수정과 게시글에 대한 댓글의 생성, 조회, 수정, 삭제를 구현했다. 이 과정에서 깃 연습을 하면서 커밋 메시지에 대한 컨벤션을 정하고 깃 전략을 이용해서 프로젝트를 진행했다. 문제점은 저 당시 구현할 기능 자체가 너무 적어서 오히려 작업할 때 더 힘들었던 거 같다. 함수 한, 두개 만들고 커밋하면서 Pull Request를 하고 깃 허브에서 Pull로 충돌 난 거 해결하고 다시 푸시하고의 반복이라 좀 더 어려웠다.  프로젝트의 기획을 큰 그림을 그려서 세부 내용을 만들 때 기획자가 없기 때문에 서로의 의견을 모으기 어려웠고 또한 기능을 구현하면서 중간에 계속 이 방향이 맞는지에 대한 의문이 있어 의견을 조율하는 게 가장 시간이 오..