TIL
19 posts
TIL) 보안은 어려워😯

📝 오늘의 내용정리 알고리즘 스터디 8일차 인증과 인가 🔚 오늘의 마무리 이번주는 강의듣는 주! 스프링 시큐리티 들어가기 전 인증과 인가, JWT에 대해서 배웠는데 내용이 머리에 쉽게 들어오지 않아 글로 따로 정리를 했다. 인증과 인가는 항상 헷갈렸는데, 오늘 내용을 정리하면서 인증은 보안 프로세스의 첫 단계라는걸 알게되어서 이제 명확하게 구분이 가기 시작했다. 인가는 내 마음대로 ‘관리자인가..? 아닌가..?’ 로 외우기로 했다😊 예전에 JWT를 구현하려다가 포기했던 적이 있었는데 이번에는 확실하게 이해해서 프로젝트에 적용하고싶다!!! 📝 오늘의 내용정리 🔚 오늘의 마무리

November 08, 2023
TIL
TIL) 공통 응답 모듈 만들기와 삽질😇

📝 오늘의 내용정리 알고리즘 스터디 7일차 공통 응답 모듈 만들기 계기 Exception이 발생했을 때 응답값을 위 이미지처럼 전달해주고 있었다. 게시글 등록/수정/삭제에 성공했을 때는 위 이미지처럼 성공한 데이터들을 전달해주고 있었다. 성공했을때도 Exception이 발생했을 때와 같은 형태로 전달해주고 싶어졌다. 그래서 공통 응답 모듈을 만들기로 결심했다! CommonApiResponse.java 상태코드와 데이터 메시지를 가지고 있는 CommonApiResponse 클래스를 생성하고 컨트롤러에서 사용을 했다. 작성을 하고보니 굳이 이렇게까지 한번 더 감싸서 값을 전달하는게 맞나..? 라는 생각이 엄청나게 들었다. 뭔가 이상해서 바로 튜터님을 찾아갔다. 튜터님의 피드백은 클라이언트와 협의 후 상황에 따라 전달되는 응답값은 언제든지 달라질 수 있다. status는 ResponseEntity를 통해서 전달되고 있으니 한번 더 감싸서 전달되는게 의미가 없다. 메시지는 주로 모호…

November 07, 2023
TIL
TIL) ResponseEntity와 Custom Exception

📝 오늘의 내용정리 알고리즘 스터디 6일차 ResponseEntity ResponseEntity는 스프링에서 제공하는 HttpEntity를 상속받아 구현한 클래스이다. 응답을 나타내는 클래스로, 응답 본문, 상태코드, 헤더를 포함하고 있다. ResponseEntity를 사용하면 응답을 상세하게 제어할 수 있어서 클라이언트와 서버간의 통신을 유연하게 처리할 수 있다. Custom Exception 현재 코드에서는 게시글이 존재하지 않을 때와 비밀번호가 일치하지 않을 때 예외상황을 처리하고 있는데, 모두 500으로 클라이언트에게 전달된다. 의미없는 데이터도 같이 전달되는 상황이다. 발생한 예외를 적절하게 전달하기 위해서 커스텀 예외를 만들어 보자! 1. ErrorCode enum 생성 2. Exception, ExceptionHandler 추가 @ControllerAdvice 여러 컨트롤러에서 발생할 수 있는 예외를 일괄처리 한다. @ExceptionHandler @Controlle…

November 06, 2023
TIL
TIL) Github Label 커스텀하기

📝 오늘의 내용정리 Github Label 커스텀하기 🤪 오늘 만난 오류 Postman으로 테스트를 진행하는데 아래와 같은 오류가 발생했다. 첫번째 오류 엔드포인트에 습관적으로 https를 입력하여 문제가 발생했다. http로 변경하니 오류가 사라졌다! 두번째 오류 Postman에서 자동 생성해주는 헤더의 Content-Type값이 text/plain으로 설정되어 있어서 발생한 문제였다. application/json으로 변경해주니 오류가 사라졌다! 🔚 오늘의 마무리 오늘은 게시판 CURD API를 만드는 스프링 개인과제가 시작되었다. 사용자도 없는 CRUD라서 시간이 오래걸리지는 않았다. 기본적인 틀은 만들어 놨으니 주말에 추가적인 부분만 조금 더 수정하고 월요일에 제출해야겠다! 📝 오늘의 내용정리 🤪 오늘 만난 오류 첫번째 오류 두번째 오류 🔚 오늘의 마무리

November 03, 2023
TIL
TIL) 이진탐색(Binary Search)

📝 오늘의 내용정리 이진탐색(Binary Search) 찾고자 하는 정답이 포함된 범위 중 가운데 요소와 정답을 비교하여 절반의 범위를 제외하면서 요소를 찾아가는 방법 이진탐색을 사용하려면 배일이나 리스트가 정렬되어 있어야 한다. 분할정복 탐색 공간을 특정 기준에 따라 나누고, 나누어진 탐색공간에서 탐색을 이어나가는 것 이진 탐색은 업다운 게임처럼 남아있는 범위의 가운데 숫자를 부르고 범위를 계속해서 반으로 나누어 간다. 이진 탐색은 한쪽 범위를 아예 제외하기 때문에 분할 정복을 이용한 효율 높은 탐색 알고리즘이다. 범위찾기 배열의 인덱스 범위인 0부터 arr.length-1이 탐색 범위가 된다. 검사 진행하기 범위 내의 속한 원소 개수는 end - start이다. 탐색 공간이 남아 있지 않을 때 까지 탐색하려면 end - start가 양수일 때 탐색을 계속 반복해야 한다. end - start > 0 은 end > start 이므로 조건으로 설정해준다. 중간 값 비교하기 중…

November 02, 2023
TIL
TIL) 다양한 의존관계 주입 방법

📝 오늘의 내용정리 알고리즘 스터디 4일차 Math.sqrt() 제곱근을 구하는 함수 ex) sqrt(9) = 3 Math.pow() 거듭제곱을 계산하는 함수 ex) pow(2, 3) = 8 BeanFactory 스프링 컨테이너의 최상위 인터페이스이며 스프링 빈을 관리하고 조회하는 역할을 담당한다. ApplicationContext BeanFactory의 모든 기능을 상속 받아서 제공하며 부가기능이 더해진 컨테이너 다양한 의존관계 주입 방법 생성자 주입 생성자를 통해서 의존 관계를 주입 받는 방식 생성자 호출 시점에서 딱 한번만 호출되는 것이 보장되어 불변이나 필수 의존관계에 사용한다. 클래스에 생성자가 한개라면 를 생략해도 자동 주입이 된다. 수정자 주입(setter 주입) 수정자 메소드를 통해서 의존관계를 주입하는 방법이며 선택이나 변경 가능성이 있는 의존관계에 사용한다. 필드 주입 필드에 바로 주입하는 방법으로 외부에서 변경이 불가능하기 때문에 테스트하기 힘들다는 치명적인 단…

November 01, 2023
TIL
TIL) parseInt()와 valueOf()의 차이

📝 오늘의 내용정리 알고리즘 스터디 3일차 코딩테스트 문제를 풀다가 parseInt()와 valueOf() 차이가 궁금해졌다. 겉으로 보기엔 같은 값을 반환하는데 왜 굳이 두 메소드가 따로 존재하는걸까? parseInt()와 valueOf()의 차이 두 메소드 모두 문자열을 정수로 변환하고 숫자로 변환할 수 없는 문자열이 입력되었을 때는 NumberFormatException이 발생한다. 두 메소드의 차이점은 반환값의 타입이다. 첫번째 valueOf()를 보면 인자에 parseInt()가 사용된 것을 확인할 수 있다. 마지막 valueOf()를 보면 반환값으로 새로운 Integer 객체를 생성한다. 결론 valueOf()는 parseInt()를 호출해서 문자열을 정수값으로 변환시키고 Integer로 박싱해서 값을 반환한다. 두 메소드 모두 반환타입만 다를 뿐 같은 기능이기 때문에 상황에 맞는 메소드를 잘 선택해서 사용하면 된다. 🔚 오늘의 마무리 스프링 주차가 시작된 오늘! 새로운…

October 31, 2023
TIL
TIL) 팀 프로젝트 마무리, 알고리즘 스터디 시작!

📝 오늘의 내용정리 알고리즘 스터디 1일차 알고리즘 스터디 2일차 팀 프로젝트 회고 🔚 오늘의 마무리 내배캠에서 처음으로 만난 팀과 함께 알고리즘 스터디를 진행하기로 했다! 오늘부터 시작해서 아주 간단한 문제들이지만 이것들이 쌓이고 쌓여서 3단계도 쉽게 풀 수 있는 날이 왔으면 좋겠다! 나는 이전에 풀었던 문제들이라서 for문을 사용하여 구현했던 것들을 stream으로 변경하는 작업을 해봤다. 그런데 아주 간단한 풀이들이라서 그런지 stream으로 사용하는데 더 시간이 오래걸렸다. 그래도 지금은 간단한 문제들로 stream에 익숙해지는게 중요하니까 꾸준히 해봐야겠다. 오늘 자바 팀 프로젝트 제출이 완료되었다. 처음으로 팀장을 맡아봤는데, 의미있는 경험이였다. 다음팀에서 모두들 팀장을 하기 꺼려한다면 팀장을 할 의향은 있지만, 누군가 나서서 팀장을 한다면 팀장을 응원하는 팀원이 되어야겠다😂

October 30, 2023
TIL
TIL) 키오스크 프로그램 구현하기5

📝 오늘의 내용정리 키오스크 만들기 5차 🔚 오늘의 마무리 팀 과제가 거의 마무리 되어 간다. 무사히 마무리하고 스프링 주차로 들어가고 싶다!

October 27, 2023
TIL
TIL) 인터페이스는 객체 생성이 불가능할까?

📝 오늘의 내용정리 인터페이스는 객체 생성이 불가능할까? 🔚 오늘의 마무리 자바8에 추가된 기능에 대해서 알고싶어서 모던 자바 인 액션을 읽기 시작했다. 책을 너무 여러권 읽는 것 같지만.. 병렬독서가 적성에 맞는 나는 어쩔수없다. 그리고 지금 당장 람다와 스트림에 얼른 익숙해지고 싶기 때문에 다른 책을 펼쳐버렸다. 모던 자바 인 액션은 예전에 읽으려고 시도했다가 포기한 책이다. 번역 어투가 적응이 잘 되지 않았고 어려웠다. 오늘도 많은 부분을 읽지는 못했다. 하지만 이대로 또 포기할 수는 없기때문에 천천히 한글자 한글자 읽어내려갔다. 중간에 이해가 안가는 부분은 구글에 검색하며, 코드를 직접 쳐가며 머리에 넣으려고 노력했다. 코드를 치면서 읽다보니 평소에는 지나쳤을 지식도 새롭게 알게되었다. 얼른 익숙해져서 스트림 잘 쓰고 싶다!

October 26, 2023
TIL
TIL) 키오스크 프로젝트 구현하기4

📝 오늘의 내용정리 키오스크 만들기 4차 🔚 오늘의 마무리 오늘은 튜터면담으로 하루를 시작했다. 짧은 시간의 면담이였지만 이 캠프를 진행하면서 어떤 방향으로 나가야 할지 감이 잡혔다. 객체지향에 계속 집중해야지! 본격적인 팀 과제 구현이 시작됐다. 난 주문 부분을 맡아서 간단한 기능을 구현하게 됐다. 간단한 구현이라 빨리 끝나서 남은 시간에는 어제 읽었던 책을 마저 읽었다. 내일도 시간이 남는다면 자바에 대해서 더 알아가야겠다.

October 25, 2023
TIL
TIL) 키오스크 프로젝트 구현하기3

📝 오늘의 내용정리 키오스크 만들기 3차 🔚 오늘의 마무리 자바 팀 프로젝트 시작의 날! 팀 프로젝트는 두가지를 선택할 수 있었다. 팀원들을 어느것을 해도 상관이 없다는 의견이 대부분이였다. 그래서 세가지 이유를 들면서 키오스크 프로젝트를 해야 한다고 내 의견을 말했다. 우리가 개인 과제로 진행했던 코드를 서로 리뷰할 수 있다. 새로운 프로젝트를 하면 키오스크 프로젝트와 비슷한 내용을 구현해야 하지만, 이미 구현 되어있는 것을 개선 하는거라면 코드 리팩토링을 경험해 볼 수도 있다. 주말 제외 3.5일이라는 시간내에 구현이 가능할 것 같다. 다행히 팀원들은 내 의견을 수용해 주었다! 하지만 코드 리뷰와 이미 작성되어 있는 코드들을 병합하는 것은 해본적이 없기에, 튜터님의 도움을 받았다. 튜터님께서는 모든 팀원들의 코드를 병합하기에는 코드 스타일이 다르기 때문에, 각자의 코드를 설명하고 이 프로젝트를 주도적으로 이끌어갈 사람의 코드를 개선하는 방법을 제시해주셨다. 각자 코드 설명을 마…

October 24, 2023
TIL
TIL) 스프링 입문을 위한 자바 객체 지향의 원리와 이해

📝 오늘의 내용정리 자바의 메모리 영역 static 영역 : 클래스들의 놀이터 stack 영역 : 메소드들의 놀이터 heap 영역 : 객체들의 놀이터 객체지향의 4대 특성 캡슐화 : 정보은닉 상속 : 재사용 추상화 : 모델링 다형성 : 사용 편의 🔚 오늘의 마무리 개인과제를 마무리하고 시간이 남아서 스프링 입문을 위한 자바 객체 지향의 원리와 이해의 챕터 2, 3를 읽었다. 이 책은 객체지향을 편안한 어투와 자세한 그림 예시로 친절하게 설명해줘서 좋다. 조금만 집중해서 읽으면 객체지향에 한발짝 더 다가갈 수 있다. 내가 생성한 객체가 어떻게 소멸되는지, 객체지향이 코드에 어떻게 사용되면서 우리에게 편리함을 주는지 쉽게 알 수 있다. 객체지향에 대한 개념이 내 머릿속에서 흐릿해지면 다시 이 책을 꺼내야겠다. (그리고 매번 이 부분만 읽다가 마는데 이번에는 꼭 끝까지 읽어봐야겠다😜) 개인과제 제출시간이 지나서 해설영상이 공개됐다. 해설영상을 보면서 내 코드에서 고칠 수 있는 부분이 뭐…

October 23, 2023
TIL
TIL) 키오스크 프로그램 구현하기2

📝 오늘의 내용정리 키오스크 만들기 2차 🔚 오늘의 마무리 키오스크 프로젝트를 수정하여 제출을 완료했다. 썩 마음에 들지는 않지만 계속 내가 보고 손에 쥐고 있는다고 답이 나오는것도 아니다. 피드백을 받아서 고치는게 더 좋은 방향이라는 생각이 든다. 주문 리스트에 동일한 상품이 담겨있다면 화면에 개수도 같이 출력해줘야 하는 선택 요구사항이 있었다. 나는 아래와 같이 구현을 진행했다. 주문 리스트에 동일한 상품이 담기지 않았다면 화면에 개수는 출력되지 않는다. 주문 리스트에 동일한 상품이 담겼다면 화면에 개수가 출력된다. 주문리스트를 Map으로 구현하여 상품을 키로, 갯수를 값으로 담았다. Map에 담긴 value가 모두 1이라면 동일한 상품이 없다는 뜻이고, 1 이상이라면 동일한 상품이 담겼다는 뜻이다. 위 조건을 구현하기 위해서 Map에 담긴 최대값을 구해와야 했다. 평소에 나라면 for문으로 Map을 순회하여 Math 클래스를 통해 최대값을 구했겠지만, 강의를 통해 스트림을 배…

October 20, 2023
TIL
TIL) 키오스크 프로그램 구현하기1

📝 오늘의 내용정리 키오스크 만들기 🔚 오늘의 마무리 키오스크 앱의 기능 구현을 마무리 했다. 단순히 기능 구현에만 초점을 맞추느라 예외 상황에 대한 처리가 부족하다. 객체지향적으로 코드를 구현했는지 스스로에게 물어봤을때 음..?! 이라는 생각이 바로 들고 확신이 없었다. 그렇다면 수정을 해야할 부분이 많다는 뜻이겠지😂 ✅내일의 할 일 선택 요구사항 구현하기 코드 객체지향적으로 리팩토링하기 모르겠으면 튜터님에게 조언 얻기! 예외 상황 처리하기

October 19, 2023
TIL
TIL) 키오스크 프로그램 구현하기

✅ 오늘 한 일 키오스크 프로그램 구현 🔚 오늘의 마무리 오늘부터 자바 개인 프로젝트가 시작되었다. 키오스크 프로그램을 만드는 것이다. 화면없이 Scanner로 입력받아서 콘솔에 출력하는 형태로 제작하면 된다. 요구사항에 맞게 클래스들을 생성했다. 공통으로 동작하는 기능들은 메소드로 분리하려고 노력했다. 아직 초반이라 큰 오류나 알게된 점은 없지만, 오랜만에 자바의 개념에 집중하면서 코드를 짜다보니 시간이 훌쩍갔다. 내일 이어서 마저 해야지!

October 18, 2023
TIL
TIL) 예외처리

📝 오늘의 내용정리 예외처리 체크예외 : 프로그램 외적인 요인에서 발생할 수 있는 예외로 언제든지 발생할 수 있기때문에 컴파일 과정에서 에러처리를 강제함 언체크예외 : 개발자의 실수로 발생한 예외로 코드에서 적절한 처리가 가능하여 예외처리가 강제되지 않음 이렇게 이해했는데 맞을까..?! 🔚 오늘의 마무리 오늘 드디어 자바 강의를 완강했다! 쓰레드, 람다, 스트림등 한번 들어서 머리에 들어오지 않는 내용들이 많았지만 천천히 이해하기로 했다😅 예외처리에 대해서 정리를 했는데 아직 사용에 익숙하지 않아서 와닿지 않는다. 앞으로 코드 짜면서 익숙해져야겠다!

October 17, 2023
TIL
TIL) Collections

📝 오늘의 내용정리 Collections 🔚 오늘의 마무리 내일까지 자바 강의를 마무리하는걸 목표로 하고 있기 때문에, 오늘도 역시나 자바 강의를 들었다. 오늘 들었던 강의들은 예전에 블로그에 내용정리해 놓은 이론위주라 강의에 집중하면서 알고있던 내용들을 한번 더 상기시켰다. 컬렉션 프레임워크를 내용정리하면서 Map은 List, Set과 같은 인터페이스에 속하지 않는다는것도 알게되었다. 코드를 짜는데 큰 영향을 끼치는 이론은 아니지만,, 난 이런점을 알면서 코드를 짜면 더 재미있다. 오늘은 시간이 많지 않아서 컬렉션 프레임워크의 간단한 내용만 정리했지만, 추후 시간이 난다면 메소드들도 정리해야겠다😁

October 16, 2023
TIL
TIL) Arrays에 대해 공부하기!

📝 오늘의 내용정리 배열의 얕은복사와 깊은복사 Arrays class 🔚 오늘의 마무리 오랜만에 자바 기초 인강을 들으니까 새롭다. 배열을 공부하던 중 얕은복사와 깊은복사의 이해가 필요해서 내용을 정리했다. 코테를 풀면서 배열을 사용할 때 Arrays클래스를 자주 이용했는데 어떤 메소드가 있는지 정확히 이해하지 못하고 그냥 사용했다. 조금 더 알면서 사용하고 싶어서 내용정리를 했다. 내일도 강의 열심히 들어야지! 📝 오늘의 내용정리 🔚 오늘의 마무리

October 13, 2023
TIL