본문 바로가기

분류 전체보기

(95)
아웃소싱 프로젝트 1일차 지금껏 배운 내용으로 팀 프로젝트를 시작하기로 했다.주제는 위 사진에 있다.api 명세서이다. 프로젝트에 사용할 깃허브 규칙이다. 이번 조원들이 깃허브 사용에 어려움을 느낀건지 issue와 pr의 개념과 해야하는 이유를 잘 이해하지 못한 것 같았다. 이걸 해야하는 이유까진 설명하기 어려웠지만 issue와 pr을 하는 방법을 천천히, 상세히 보여주면서 최대한 알아듣기 쉽게 설명하려고 노력해봤지만 쉽지 않았다. 필자는 회원 프로필 조회, 수정, 비밀번호 초기화를 구현하기로 했지만 현재 회원가입과 로그인이 아직 구현되지 않았기 때문에 회원가입과 로그인을 맡은 팀원을 도와 같이 구현중에 있다. 다음날이면 회원관련 기능들은 전부 완성되고 본격적으로 작업을 할 수 있을것 같다.
Spring 심화주차 Part3 1. Spring AOPSpring AOP는 특정 기능들이 실행되기 전, 후로 미리 정해진 기능이 수행되는 부가기능을 모듈화한 것을 뜻한다.사진처럼 핵심기능이 실행되기 전, 후로 실행되는 부가기능을 Spring AOP라고 할 수 있다. Spring AOP에는 실제 실행되는 기능인 어드바이스와 기능이 실행되는 위치에 대한 정보인 포인트컷 두 가지 내용물로 이루어져 있다. 부가기능에 해당하는 클래스에는 @Aspect 어노테이션을 붙여야 한다. 어드바이스는 메소드 위에 어드바이스를 의미하는 어노테이션을 붙여서 표현한다. 어드바이스임을 표시하는 어노테이션에는 여러 종류가 있다.@Around: '핵심기능' 수행 전과 후 (@Before + @After)@Before: '핵심기능' 호출 전 (ex. Client 의..
Spring 심화주차 Part2 1. 단위 테스트단위 테스트는 소프트웨어의 가장 작은 부분인 개별 함수, 메소드, 클래스 같은 가장 작은 단위인 모듈 단위로 테스트를 하는 기법이다. 단위 테스트는 특정 코드가 잘 동작하는지 확인하기 위해 모듈 각각 개별 단위로 테스트 하며 다른 모듈이나 시스템과의 상호작용 없이 테스트 한다. java에서는 쉽게 테스트할 수 있도록 JUnit5라는 테스트용 프레임워크를 제공한다.testImplementation 'org.springframework.boot:spring-boot-starter-test'junit5 프레임워크를 사용하려면 다음과 같은 의존성 추가가 필요하다.소스 코드의 테스트하고자 하는 클래스를 오른쪽 마우스클릭을 하고 Generate -> Test를 누르면 사진과 같은 테스트 생성 화면이..
gradle의 clean기능 실습하던 도중 원인을 알 수 없는 오류를 발견했다.에러 설명만 보면 PasswordEncoder라는 빈을 찾을 수 없다는 에러였다.하지만 bean은 멀쩡히 잘 등록되어 있는 상태였다. 아무리 코드를 살펴봐도 논리적으로 문제를 찾을 수 없어 git을 이용해 실습하기 전으로 commit을 reset시켰다. 그랬더니 한가지 눈에 들어오는 부분이 있었다.패키지 이름이 잘못되어 있었다. 그런데 웃긴 건 이 상태에서는 문제없이 돌아가는데 저 패키지 이름을 config로 바꾸기만 하면 에러가 났다. 전혀 상관없는 이름으로 바꿔도 문제없이 돌아가는데 저 패키지 이름과 소스코드의 패키지 이름을 config로 맞추기만 하면 에러가 났다. 그러던 도중 한 포스트를 구글링하다 발견했다.https://marklee1117.ti..
Spring 심화주차 Part1 1. OAuth(소셜 로그인) OAuth("Open Authorization")는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다.(출처: https://ko.wikipedia.org/wiki/OAuth)요즘 웹 서비스에서 지원하는 카카오, 구글, 네이버 로그인 같은 것들을 쉽게 얘기해서 OAuth라고 한다. 2. 카카오로그인 카카오로그인 api를 사용하기 위해서는 카카오디벨로퍼스(https://developers.kakao.com/)에서 회원가입을 하고 api 사용신청을 해야한다.Web 플랫폼 등록을 하고 아래에 Redirect URI를 등록하라는 글..
뉴스피드 프로젝트 5일차 오늘부로 뉴스피드 프로젝트는 종료되었다. 온라인 강의를 통해 배운 지식과 구글링하면서 얻은 새로운 지식을 활용해서 다양한 시도를 해볼 수 있는 알찬 프로젝트 였지만 그만큼 내가 원하는 수준의 개발을 하지 못해서 아쉬움도 많은 프로젝트 였다. 원래 필자가 맡은 역할은 로그인, 로그아웃 구현, aws s3를 이용한 파일 업로드 구현이었다. 파일 업로드를 적용할 부분은 회원 정보의 프로필 사진과 게시글의 사진 혹은 동영상이었다. 게시글의 사진과 동영상은 예상보다 개발시간이 길어져서 미처 다 구현 못하고 프로필 사진만 반영했다. 원래는 저장된 사진중 하나를 지정해서 그 사진을 교체하는 로직을 만들려고 했다. 그런데 아무리 고민을 해보고 구글링을 해봐도 어떻게 구현해야 할 지 전혀 감이 잡히지 않았다. 결국 사진..
뉴스피드 프로젝트 4일차 AWS S3를 활용해서 회원의 프로필 사진을 구현할 것이다. Amazon Simple Storage Service(Amazon S3)는 업계 최고 수준의 확장성, 데이터 가용성, 보안 및 성능을 제공하는 객체 스토리지 서비스입니다. 고객은 규모와 업종에 관계없이 원히는 양의 데이터를 저장하고 보호하여 데이터 레이크, 클라우드 네이티브 애플리케이션 및 모바일 앱과 같은 거의 모든 사용 사례를 지원할 수 있습니다. 비용 효율적인 스토리지 클래스와 사용이 쉬운 관리 기능을 통해 비용을 최적화하고, 데이터를 정리하고, 세분화된 액세스 제어를 구성하여 특정 비즈니스, 조직 및 규정 준수 요구 사항을 충족할 수 있습니다.(출처:https://aws.amazon.com/ko/s3/)쉽게 얘기해 AWS S3는 파일 입..
뉴스피드 프로젝트 3일차 개발을 어느정도 진행하고 난 뒤 테스트하면서 발견된 문제점 들이다. 필자가 맡은 api인 /auth 관련 api들은 대부분 요구사항을 제대로 숙지하지 않아서 생긴 문제점들이었다. 우선 1번 문제는 사용자 인증할 때 사용자 검색을 담당하는 UserDetailsService 클래스에서 사용자의 역할이 "withdraw"이면 예외를 발생시켜서 api접근을 거부하는 방법으로 해결했다. 이 부분은 다른 팀원이 이미 해결해 놓은 상태였다.@Service@RequiredArgsConstructorpublic class UserDetailsServiceImpl implements UserDetailsService { private final UserRepository userRepository; @Overr..