| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- 파이썬
- 스레드
- 백준 10819
- Spring
- 백준 2302
- 후위 표기식
- CI/CD
- Spring Security
- 프로세스
- 백준 15686
- 백준
- 프로그래머스
- 백준 파이썬
- 네이버
- 자바스크립트
- docker
- 증가하는부분수열
- 운영체제
- 스프링
- CS
- 다익스트라
- 백준 2529
- 코테
- 락
- 백트래킹
- 도커
- 백준 14499
- 9465 스티커
- 백준 1120
- 코딩테스트
- Today
- Total
목록분류 전체보기 (25)
개발
안녕하세요, 이번에는 Spring MVC 기반의 애플리케이션에 동작하는 Spring Securtiy Architecure에 대해 정리를 해보려고 합니다. 본문은 https://docs.spring.io/spring-security/reference/servlet/architecture.html 을 기반으로 작성되었습니다.📌 Filter는 무엇인가?Spring Servlet에 대한 Spring Security의 지원은 Servlet Filter에 기반하고 있습니다. 따라서 Spring Security를 이해하기 위해서는 Spring MVC에서 필터가 어떻게 동작하는지 알고 있는 것이 중요합니다.클라이언트가 애플리케이션에 요청을 보내면, Container(Servlet Container)는 요청 URI경로..
도커(Docker)란 무엇일까요?도커(Docker)는 애플리케이션을 컨테이너라는 독립된 환경에 패키징하고 실행하여 개발, 배포 및 운영을 효율적으로 관리할 수 있도록 지원하는 플랫폼이며, 컨테이너 생성 및 관리 기술을 통칭하기도 합니다.컨테이너는 뭐죠?컨테이너(Container)는 애플리케이션 실행에 필요한 모든 것을(코드, 환경 설정, 종속성 등..) 패키징하여, 어떤 컴퓨팅 환경에서도 빠르고 신뢰성 있게 실행할 수 있도록 하는 소프트웨어의 표준 단위이자 애플리케이션 패키지라고 할 수 있습니다.그래서 왜 사용하는 건가요?컨테이너를 사용함으로써 얻는 이점은 다양하게 있으며 장점에 대해서는 후술하겠지만, 현 시점에서 우리에게 가장 와 닿는 장점은 어느 환경에서도 동일한 환경을 구축할 수 있다는 것이라고 생..
서론지금 진행중인 프로젝트에서 마이크로서비스 아키텍처를 도입하기로 결정했습니다. 핀테크를 주제로 하는 만큼 결제, 조회 등 서비스에 필요한 중요한 기능들이 매우 밀접하게 맞물려 있는데, 저에게 익숙한 기존의 모놀리식 아키텍처가 아닌 마이크로서비스 아키텍처를 준비하게 되면서 여러 가지 발생할 수 있는 문제들에 대해 학습할 수 있었습니다.그 중 동시성 제어 문제가 가장 관심이 갔는데요, 오늘의 주제는 이 부분에 대해서 다루고자 합니다.비관적 락 VS 낙관적 락 비관적 락(Pessimistic Locking) 개념과 특징비관적 락은 데이터 충돌이 빈번하게 발생하는 환경에서 데이터 일관성을 유지하기 위해 유용하게 사용할 수 있습니다. 데이터에 대해 Lock을 미리 걸어 트랜잭션이 종료되어 명시적으로 Lock이 ..
코딩 컨벤션이 중요한 이유일관된 형식과 스타일을 유지하게 해주어 가독성이 향상되고, 개발 생산성이 증가합니다.코드는 시간이 지남에 따라 변경되고 확장되기 마련입니다. 일관된 코드 스타일을 유지하면 다른 개발자가 코드를 수정하거나 업데이트 하는 경우 쉽게 접근 할 수 있습니다.어느 컨벤션에 따라야 할까?코딩 컨벤션은 사실 정답이 정해져 있는 것이 아니며, 기업마다 다르고 심지어 팀 단위로도 다르기도 한다. 따라서 사람들이 많이 사용하는 코딩 컨벤션인 구글의 코딩 컨벤션을 적용해보기로 하였으며,일관성을 유지하는 것이 중요합니다.자바에서 쉽게 코딩 컨벤션을 적용하는 방법대부분의 IDE에서는 Auto Formatting을 지원하고 있습니다.vscode에서 eslint와 prettier를 사용하듯 자바를 사용할 ..
서론우선 지금 진행중인 프로젝트에서 하나의 서비스에 두 개의 엔티티에 대해서 로그인을 진행해야 하는 상황이 생겼습니다.기존에 작성했던 회원 엔티티에 대해서는 로그인이 제대로 작동했지만 상담사 엔티티는 회원 엔티티가 다르게 작성되어 기존에 작성한 코드로는 상담사 로그인을 할 수 없었습니다.따라서 여러 방법을 시도하여 방법을 물색했고, 수 많은 에러를 본 후 결국 성공했던 방법을 공유하고자 합니다. 이러한 방법으로 해결은 할 수 있구나 하는 관점에서 봐주시면 감사하겠습니다.결론 (해결 방법)각각의 엔티티에 대한 @Configuration을 하나의 Security Config에 @Bean으로 등록한다. 이 과정에서 공통적으로 사용하는 PasswordEncoder 같은 bean들은 최상위에 한번만 정의합니다.@..
서론Spring JPA를 학습하면서 궁금하거나 잘 알지 못했던 부분들을 정리하려고 합니다.1편application.properties vs application.ymlSpring Boot는 크게 application.properties , application.yml 와 같은 파일 형식으로 환경 설정 파일을 구성할 수 있습니다. 결론application.properties는 Key-Value 형식으로 직관적이고 간단하기 때문에 간단한 설정에 용이하며application.yml은 YAML 형식으로 들여쓰기를 통해 계층적인 구조와 중복되는 속성을 표현하기에 용이하다는 특징이 있습니다. application.propertiesKey-Value 형식을 사용합니다.간단하고 직관적인 구조기 때문에 작성 문법을 배울..
처음에는 deque을 이용해서 움직일때마다 rotate를 하니 마니 뻘짓을 하고 있었는데 간단하게 정면, 바닥면, 오른쪽면에 초기 값을 부여하고 행동을 할때마다 이 값들을 업데이트 하는 방식으로 구현했다. 실제 주사위도 바닥면과 밑면의 합이 일정하기 때문에 이를 이용하였다. 아이디어를 떠올리기 매우 힘들었다.. import sys input = sys.stdin.readline row, col, x, y, k = map(int,input().split()) board = [list(map(int,input().split())) for _ in range(row)] dir = list(map(int,input().split())) move = [(0,1),(0,-1),(-1,0),(1,0)] dice = ..
전형적인 백트래킹 문제인데 처음 풀때 거리 계산을 굳이 bfs를 이용해서 풀려고 해서 시간을 많이 잡아 먹었다. 폐업하지 않는 치킨집을 선별할때 검색해서 나오는 많은 해답들은 조합을 이용해서 후보를 선정했다. 이러한 방법을 생각하지 못했는데 편한 방법이긴 한 것 같다. import sys input = sys.stdin.readline n, m = map(int,input().split()) board = [list(map(int,input().split())) for _ in range(n)] home, chick = [], [] for i in range(n): for j in range(n): if board[i][j] == 1: home.append((i,j)) elif board[i][j] ==..