분류 전체보기 105

외부로부터 의존하지 않는 테스트 ... OAuth 로그인 테스트도 할 수 있다! (WireMock)

안녕하세요. 저는 개인 프로젝트에서 OAuth를 이용해 로그인을 구현하고 있습니다. OAuth를 구현하고 테스트를 통해 OAuth 로그인의 동작을 확인하고자 했는데, 이때 OAuth API 서버와의 테스트를 어떻게 해야 하나 고민이었습니다. 고민한 결과 OAuth API 서버와 통신하여 테스트하거나, 해당 API 서버를 목으로 대체하여 데이터를 확인하는 방법이 있겠다는 생각을 했고, 또한 Postman과 같은 API 도구를 이용하여 테스트해 볼 수도 있었습니다. 하지만 OAuth 로그인을 테스트하기 위해 매번 Spring 서버를 띄워서 Postman에서 확인하는 건 비효율적이며 실제 OAuth API 서버와 통신하여 테스트하고자 한다면 API 서버는 제가 제어할 수 있는 대상이 아니기에 외부적인 요인으로..

테스트코드 2023.03.07

정규화의 종류

데이터베이스 개론 2판 내용을 참고하여 작성하였습니다. 지난 글에서 데이터베이스 정규화와 정규화가가 필요한 이유에 대해 알아보았습니다. 정규형 간의 관계를 그림으로 표현하면 다음과 같습니다. 정규형 중 가장 바깥쪽에 위치하는 제1정규형부터 알아보겠습니다. 제1정규형 (1NF, First Normal Form) 릴레이션에 속한 모든 속성의 도메인이 원자 값(atomic value)으로만 구성되어 있는 것 릴레이션이 제1정규형에 속하려면 릴레이션에 속한 모든 속성이 더는 분해되지 않는 원자 값만 가져야 합니다. 이벤트 참여 릴레이션에서 이벤트 번호 속성과 당첨 여부 속성은 하나의 고객 아이디에 해당하는 값이 여러 개입니다. 한 명의 고객이 여러 이벤트에 참여할 수 있어 이벤트 번호와 당첨 여부와 같이 다중 ..

데이터베이스 2022.11.04

정규화와 정규화가 필요한 이유

데이터베이스 개론 2판 내용을 참고하여 작성하였습니다. 정규화 관련 없는 속성을 하나의 릴레이션에 모아두면 문제가 발생할 수 있습니다. 데이터베이스에서 싫어하는 데이터 중복이 많이 나타나고, 예기치 못한 일들이 발생할 수 있습니다. 싫어하는 음식을 먹지 않는 것처럼 릴레이션에 관련 없는 속성이 들어가지 않게 하고, 친한 속성끼리 릴레이션을 구성해주면 됩니다. 속성들의 친밀도를 판단하고, 이 기준에 따라 릴레이션을 구성하는 방법이 정규화입니다. 또한 데이터베이스를 설계한 후 설계 결과물을 검증하기 위해 사용하기도 합니다. 데이터베이스를 잘못 설계하면 불필요한 데이터 중복이 발생하여 릴레이션에 대한 데이터의 삽입, 수정, 삭제 연산을 수행할 때 부작용이 발생할 수 있습니다. 이러한 부작용을 이상(anomal..

데이터베이스 2022.11.02

20221024 - 1030

이번주 한 일 알고리즘 학회 알바 좋았던 점 알고리즘 난이도를 비교적 쉬운 난이도의 문제를 풀면서 흥미를 되찾을 수 있었다 개선할 점 이번 주는 학회 일을 하느라 중간 중간 알고리즘을 푸는 것 외에 개인 학습을 하지 못했다. 소감 이번 주 SSG 인턴 서류 발표가 있을 예정이었는데 다시 미루어졌다. 기초조형학회에 가끔 나가서 일을 도와주고 있었다. 이번 주는 학회에 큰 행사가 있어 한 주 대부분을 학회 일로 보냈다. 나도 돈을 벌어야 하는 상황이었기에 한 주를 포기하고 일을 했다. 행사에서 에어팟 프로 2도 받고 기초조형학회 대학원생과 교수님들의 논문 발표도 들어보는 경험을 할 수 있어 좋았다.

회고 2022.10.31

20221017 - 1023

이번주 한 일 그림으로 배우는 HTTP 네트워크 2장 백기선 자바 스터디 12주차 라이브 영상 시청 nextstep 7장 UserDao 단계별 리팩토링 알고리즘 좋았던 점 추상 클래스와 익명 클래스를 사용해서 리팩토링을 해보았다. 아직까지 방법이 익숙하지 않아 바르게 한건지 잘 모르겠다. 추상 클래스와 익명 클래스에 대해 학습하고 고민해볼 수 있어서 좋았다 백기선 자바 스터디를 하면서 라이브 영상은 처음 시청해봤는데 유익한 부분이 많았다. 혼자 찾아보는 것도 중요하지만 다른 사람들은 어떻게 했는지 보는 것도 중요하다는 걸 느꼈다 개선할 점 알고리즘 풀이에 게을렀다 소감 알고리즘에 또 게을러졌다. 요즘 알고리즘 문제가 잘 안 풀리다보니 의욕이 많이 꺾인듯 하다. 피할 수 없기 때문에 방법을 연구해봐야겠다...

회고 2022.10.25

프로토콜 HTTP

그림으로 배우는 HTTP & Network의 2장을 보고 정리한 글입니다. HTTP는 클라이언트와 서버 간 통신을 한다 텍스트와 이미지 등과 같은 리소스를 필요하다고 요구하는 쪽은 클라이언트, 이러한 리소스를 제공하는 쪽은 서버가 됩니다. HTTP를 사용하여 2대의 컴퓨터 간에 통신을 하는 경우, 통신을 할 때마다 반드시 한쪽은 클라이언트가 되고 다른 한쪽은 서버가 됩니다. Request와 Response를 교환하여 성립 HTTP는 클라이언트로부터 요청(Request)이 송신되며, 그 결과가 서버로부터 응답(Response)하여 되돌아옵니다. 통신은 클라이언트로부터 시작됩니다. 서버는 요청을 수신하지 않으면 응답을 발생시키는 경우는 없습니다. 요청의 예시입니다. GET /index.html HTTP /1..

네트워크 2022.10.20

20221010 - 1016

이번주 한 일 next step 6장 Servlet의 Load on startup Servlet Filter Dispatcher Servlet 알고리즘 좋았던 점 MVC 프레임워크를 구현해보았다. 클라이언트의 요청을 처리하는 DispatcherSerlvet을 두고, 요청 URL에 따라 해당 컨트롤러에 작업을 위임하는 RequestMapping을 두었다. RequestMapping에는 요청 URL에 따라 컨트롤러를 매핑해놓았다. 특별한 로직 없이 뷰만 띄워주기 위해 컨트롤러를 생성하는 것은 불필요하기에 ForwardController를 두었다. MVC 프레임워크 기반으로 구현으로 클라이언트 요청에서 응답까지의 흐름을 더 이해할 수 있는 시간이었다. 개선할 점 계획을 세운 것 중 절반도 끝내지 못했다. 계획..

회고 2022.10.17

20221003 - 1009

이번주 한 일 SSG 인턴 지원 알고리즘 백기선 자바 스터디 11주차 enum next step was HttpResponse 객체 분리 다형성을 활용한 코드 리팩토링 좋았던 점 SSG 인턴 제출 마감이 목요일 여섯시까지였는데 지난주부터 쓰다가 결국 마감 당일 네시간 동안 3-4천자를 몰아쓰게됐다. 역시나 좀 닥쳐야 하는걸까? 제출 직전 앋어에게 피드백을 받고 제출할 수 있었는데 잘 썼다고 해주어서 기분이 좋았다. 이런 저런 일로 was 코드를 오랜만에 짰다. 책의 힌트만 참고하여 코드를 짜는게 원래 규칙이지만 많이 밀려있어서 책을 참고했다. 리팩토링 과정을 통해 서블릿 / 서블릿 컨테이너의 동작에 대해 자연스럽게 이해할 수 있게 된 것 같다. Java enum에 대해 대충 알고 있었는데 글로 정리하면서..

회고 2022.10.10

enum

백기선 자바 스터디 11주차 enum에 대해 학습하며 정리한 내용입니다. 열거형(enum)은 서로 연관된 상수들의 집합입니다. 열거형 상수인 enum은 자바 1.5버전부터 새롭게 추가되었습니다. enum이란? 관련이 있는 상수들의 집합입니다. 자바에서는 final로 String과 같은 문자열이나 숫자들을 나타내는 기본 자료형의 값을 고정할 수 있습니다. 이렇게 고정된 값을 상수라고 합니다. 영어로는 constant입니다. 어떤 클래스가 상수만으로 작성되어 있다면 반드시 class로 선언할 필요는 없습니다. 이럴 때 class로 선언된 부분에 enum이라고 선언하면 이 객체는 상수의 집합이다라는 것을 명시적으로 나타냅니다. enum은 enumeration이라는 셈, 계산, 열거, 목록이라는 영어 단어의 앞..

Java 2022.10.07

20220926 - 1002

이번주 한 일 Java 스터디 10주차 멀티스레드 프로그래밍 그림으로 배우는 HTTP & NETWORK 1장 포트폴리오 수정 프로그래머스, 리트코드 sql 문제 풀기 데브매칭 코딩테스트 좋았던 점 피드백을 받으며 포트폴리오가 어떤 게 부족한지 알 수 있었다. 그걸 바탕으로 수정할 수 있는 부분은 수정하였다 토요일에 있을 데브매칭 코딩테스트를 대비하여 SQL 문제를 풀었다. 이전에 한 번 깔짝댄 이후로 처음 문제를 풀게 되었다. 프로그래머스에서 풀고 리트코드로 넘어가서 조금 풀어보았다. 그 덕에 데브매칭 SQL 문제를 풀 수 있어서 뿌듯했다 이번 데브매칭 코테에서 나의 코테 역사상 처음 솔브를 맛보았다. 이전까지 제출만 하면 통과가 되지 않아 결국 포기하곤 했다. 이번에는 1번 문제라도 풀 수 있길 기도했..

회고 2022.10.03