Search
Duplicate

2021년 9월 5주차 회고록 - 과욕

Facts

코드숨 미션 7주차 미션 진행
h2-console 접근 차단 문제 해결
HTTP Status 403 학습
알고리즘 스터디 1주차 미션 진행

Feelings

코드숨 미션 7주차 미션 진행

7주차에서는 드디어 스프링 시큐리티를 사용해보는 시간을 가졌다.
현재 내 블로그에서 가장 많은 조회수를 가져가는 부분이 스프링 시큐리티 포스팅이였는데, 사실 글을 쓸 때 이후로 회사에서도 비용문제로 사용 할 일이 없어지니 지금은 나도 다시 초기화되어 다시 공부를 해야하는데, 이번 미션을 진행하며 도움이 되었다.
최근 네트워크 공부를하며 기본적인 백엔드 개발자에게 필요한 네트워크 지식들은 어느정도 쌓았다고 생각을 했는데, 403 Forbidden 을 정확하게 이해하진 못해서 헷갈려 했는데, 리뷰어분과의 대화가 아니였다면 계속 모른채로 지나가다 실수했을꺼라 생각하니 다행이였다.

알고리즘 스터디 1주차 미션 진행

드디어 알고리즘 스터디 1주차가 시작을 했다.
지금까지 코테준비라는것을 아예 한 번도 한적이 없었고 코테를 보더라도 그냥 아는 지식으로 되는대로 풀었었기에 생소했지만, 코드를 구현하고 리뷰를 받으면서 코드를 리팩토링 해 나가는 과정 자체가 즐거운 시간이였다.
그래서 첫 날을 제외하고는 하루에 3~4문제씩 풀면서 제출하고 Request Change 되면 바로 동시에 리팩토링을 진행하면서 Pull Request를 했다. 그 덕에 1주차 미션을 목요일~금요일쯤 모두 Resolve 할 수 있었고, 참고할만한 코드라는 라벨도 얻을 수 있었다. 현재는 내 PR에만 붙어있다는 점이 자랑아닌 자랑이다.
기존에도 회사 일을 하면서 일정을 밀리거나 한 적도 없고 사고를 일으킨적도 없기에 어느정도 자신감이 있는 편이였고 코드도 클린코드를 학습하고 여러 스터디를 하면서 많이 나아졌다고 생각했다.
그런데 알고리즘에서는 좀 더 효율적인 로직으로의 변경으로 구조 자체를 바꿔버리니 지금까지 했던 모듈화와 분리 및 다형성 적용과는 다른 개념으로 코드라 간결해져서 좋은 인사이트였다.
지금까진 사실 이 쪽에 대해서는 별 메리트를 못느끼고 그냥 취직때문에 해야하는 하기싫은 것... 정도였다면 이제는 조금 재미를 붙힌 것 같다.

과욕

현재 진행중인 스터디를 간단하게 리스트업해보면 다음과 같다.
코드숨 스프링 3기 미션 과제형 스터디
프로그래머스 자바기반 알고리즘 스터디
우아한 테크캠프 3기 프리코스 진행중
마켓컬리 클론코딩 스터디(DDD) 참가
블랙커피 블로그 스터디 참가
참가중인 스터디만 5개에 진행 도중이던 책들까지 포함하면 이펙티브자바, IT입문자를 위한 네트워크, MVC 2편
등등이 있다(물론 책들은 내가 관리가 가능하기에 모두 보류상태)
원래는.. 회사가 10월 중순쯤 그만두게 되면서 풀타임 학습 진행으로 소화해낼 생각이였다.
하지만, 몇가지 이유로 11월 말까지 다니기로 하게되면서 일과 스터디를 병행하게 되면서 많은게 꼬여버렸다.
(폐를 끼치기 싫다는 이유로 지금 진행중인 개발, 인수인계등 시간을 넉넉히 잡다보니 11월까지 다닌다고 했는데... 실수였을까...?)
게다가 백신을 맞은지 얼마 안되었을 때 3차 신경통으로 치통이 심하게 와서 말도 못할 정도였고, 그밖에도 컨디션난조로 몸상태가 좋지 않았다. 그러니 안그래도 타이트한 일정들이 더 쪼여오기 시작했다.
그와중에 퇴사가 두 달쯤 남은 상황에서 한달정도짜리 신규 프로젝트에 투입을 한다는 이야기를 들었다. ㅎㅎ
말은 한달이라는데 과연.. 지금 진행중인 업무만 2개인데 시간이 될련지 모르겠다.
10월은 정말 불타는 한 달이 될 것 같다..

Finding

코드숨 미션 7주차 미션 진행

스프링 시큐리티에서 H2-Console에 대한 접근 권한 설정

그동안 프로젝트를 하면서 여러번 H2-Console을 통해 테이블 생성여부와 데이터 확인을 하곤했다.
프로젝트만 구동되어있으면 편하게 웹을 통해 확인할 수 있었기에 유용했다.
그런데 스프링 시큐리티 미션을 진행하면서 데이터를 확인하려니 다음과 같은 창이 떠버린다.
처음에는 아주 당황했고, 뭐가 문제인지 파악을 제대로 못 했는데, 스프링 시큐리티를 적용하지 않은 지나내 프로젝트에서는 모두 잘 동작하는걸 보고 시큐리티의 문제라고 생각했다.
역시나, 스프링 시큐리티에서 /h2-console 도 인증처리를 하게되면서 로그인되지 않은 유저가 h2-console에 접근하는것을 막아준 것인다.
이를 해결하기위해서는 다음과 같은 설정을 해 주면 된다.
@Configuration @EnableGlobalMethodSecurity(prePostEnabled = true) @RequiredArgsConstructor public class SecurityConfig extends WebSecurityConfigurerAdapter { //... @Override public void configure(WebSecurity web) throws Exception { web.ignoring().antMatchers("/h2-console/**"); } //... }
Java
복사
h2-console 리소스의 모든 페이지를 인증에서 제외하는 설정
이렇게 설정한 뒤 다시 서버를 구동해서 접속을 시도하면...
이제 정상적으로 페이지가 뜨고 이용할 수 있게 된다.

HTTP 403 Forbidden 학습

이전에 학습을 했던 내용이지만 다시 한 번 리마인드해본다.
4XX 에러 코드는 클라이언트 오류로 클라이언트의 요청에 문제가 있었음을 나타내는 상태코드로, 정리하면 서버와 클라이언트간의 통신에서 문제가 클라이언트에 있음을 알리는 코드이다.
이 중 인증및 인가와 관련된 상태코드는 401, 403 이 있다. 나는 인증과 인가를 모두 Unauthorized(401)으로 처리를 해버렸었는데, 그러면 안되었다.
이 중 403 코드는 서버가 요청을 이해는 했지만 승인을 거부하는 경우로 접근 권한이 부족한 경우를 의미하는 것으로 즉, 인증은 됐을지라도 인가되지 않았다는 의미이다.
또한, 이러한 403 상태코드는 또 여러개의 하부 상태코드를 포함한다.
403.1 - 실행 접근 금지.
403.2 - 읽기 접근 금지.
403.3 - 쓰기 접근 금지.
403.4 - SSL 필요.
403.5 - SSL 128 필요.
403.6 - IP 주소 거부.
403.7 - 클라이언트 인증서 필요.
403.8 - 사이트 접근 거부.
403.9 - 너무 많은 사용자.
403.10 - 잘못된 구성.
403.11 - 암호 변경.
403.12 - 매퍼가 접근을 거부함.
403.13 - 클라이언트 인증 철회(무효).
403.14 - 디렉터리 나열 거부.
403.15 - 클라이언트 접근 라이선스 수 초과.
403.16 - 클라이언트 인증서를 신뢰할 수 없거나 유효하지 않음.
403.17 - 클라이언트 인증서의 기간이 초과되었거나 아직 유효하지 않음.
403.18 - 해당 응용 프로그램 풀로부터 요청을 실행할 수 없음.

알고리즘 스터디

꼬리 재귀

나는 로직이 아주 복잡해서 그냥 구현하기도 어려운 경우가 아니라면 재귀함수를 즐겨쓰는 편이다.
코드가 간결해진다는 장점이 아주 매력적이기 때문이다. 하지만, 그렇게 욕심을 부리다가 스택오버플로 문제를 겪은적도 자주있는데, 그래도 포기할 수 없는 매력이 있다.
이번에도 자연스럽게 재귀를 통해 문제 해결을 했는데, 이런 재귀가 어떤 단점을 가지고 있는지는 대략 알고 있었지만, 해결책이 존재하는지에 대해선 모르고 있었는데, 이렇게 확인을 하게되는 기회가 되어 포스팅을 해보았다.

Affirmation

스프링 프로젝트 문서화 학습하기
Docker로 Maria DB 실행시켜서 학습해보기
Dockerfile 파일 학습및 만들어보기
알고리즘 스터디 2주차 모든 문제 Merged 되기
우테캠 프리코스 미션 제출