no image
[Spring ] 24.01.24 - TIL
2024.01.22 - [항해99/[항해99] WIL] - [항해99] WIL(7) - Spring Project [항해99] WIL(7) - Spring Project 이번 주에 한 일 Redis의 redisson을 이용한 락 구현 redisson의 락은 기본적으로 분산락이다. 처음에 락을 구현했을 때는 락을 구분하는 키인 LockKey의 값을 모두 같은 값으로 주고 만들었는데, 서비스 mingtian-chan.tistory.com 오늘은 저번 WIL 에서 하고자 했던 내용을 구현해보았으니, 저번 WIL이 궁금하다면 위 링크로! 오늘 한 일 Lock의 구현을 좀 더 다듬었다. 지난 주까지는 "같은 엔티티 끼리" 같은 락을 소지했는데, 그렇게 된다면, A보드에 있는 컬럼을 수정하는 중에 A보드가 삭제된다..
2024.01.24
[항해99] WIL(7) - Spring Project
이번 주에 한 일 Redis의 redisson을 이용한 락 구현 redisson의 락은 기본적으로 분산락이다. 처음에 락을 구현했을 때는 락을 구분하는 키인 LockKey의 값을 모두 같은 값으로 주고 만들었는데, 서비스에서 락이 가지는 의미를 생각하니 기능마다 다른 값을 주어야 할까? 라는 고민이 되었다. @Service @RequiredArgsConstructor public class ColService { public final ColRepository colRepository; public final BoardRepository boardRepository; public final RedissonClient redissonClient; public final BoardService boardSe..
2024.01.22
no image
[Spring] 24.01.18 TIL
오늘 한 것 요약 Redis를 이용해서 분산락 구현 락 이란? 서비스를 구현 할 때 짧은 시간 내에 많은 요청이 들어오는 경우가 있다. 회원가입을 예로 들자면 public UserResponseDto createUser(UserRequestDto requestDto) { String name = requestDto.getName(); String email = requestDto.getEmail(); String password = requestDto.getPassword(); String phone = requestDto.getPhone(); String encodedPassword = passwordEncoder.encode(password); User user = userRepository.save..
2024.01.19
[Spring] 24.01.15 - TIL
오늘 한 일 트렐로 게시판 칼럼부분 CRUD구현 ( in Process ) UserController 에서 GetMapping 으로 loginPage함수를 불러오면 login.html 불러오도록 구현 오늘 겪었던 힘들었던 점 Error: Exceeded maxRedirects. Probably stuck in a redirect loop http://localhost:8080/api/user/login-page Exceeded maxRedirects 라고 에러가 떠서 한참 고생했다. 구글링해서 나와 비슷한 케이스로 고생한 사람들이 있는 지 확인해봤는데, 보통은 스프링 시큐리티에 권한이 없어서 생기는 오류라고 했는데, 시큐리티에 권한을 .requestMatchers("/login").permitAll() ..
2024.01.16
[BOJ] 9012 괄호 파이썬
https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 스택을 이용한 괄호문제. 스택의 종류가 하나라서 개수만 확인하면 돼서 꽤 쉽다. ( 일 경우, 스택에 추가하고, )의 경우에 스택에서 pop하는 형식으로 짜고, 0개일때 pop하는경우랑, 마지막 문자까지 읽었는데 스택에 남아있는 경우에는 NO를, 마지막까지 읽었고 스택이 0인 경우엔 YES를 출력한다. 해답코드 T = int(input()) for _ in range..
2024.01.15
[BOJ]1002 터렛 파이썬
https://www.acmicpc.net/problem/1002 1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 $-1$ 출력한다. www.acmicpc.net x1, y1,.r1이 나오면 원이라고 생각하자. 두 원의 거리에 따른 원의 관계를 코드로 구현하는 문제였다. 틀린 코드 import math T = int(input()) for _ in range(T): x1, y1, r1, x2, y2, r2 = map(int, input().split()) # dist1 = 두 점의 직선 거리 (두 원의 중심간 거리) dist1 = math.sqrt((x1-x2)**2 + (y1-y2)**2) # dist2 ..
2024.01.15
no image
[항해99] WIL(6) - Spring Project
이번주에 한 일 이번 주 부터는 지금까지 배운 Spring 기술을 가지고 팀 프로젝트를 만든다. 프로젝트 주제는 트렐로 만들기! 저런 게시판을 만드는 프로젝트인데, 기능 구현과 더불어 "기능 개선"을 위주로 프로젝트를 진행한다. 사용자 관리 기능 [ ] 로그인 / 회원가입 기능 [ ] 사용자 정보 수정 및 삭제 기능 보드 관리 기능 [ ] 보드 생성 [ ] 보드 수정 보드 이름 배경 색상 설명 [ ] 보드 삭제 생성한 사용자만 삭제를 할 수 있습니다. [ ] 보드 초대 특정 사용자들을 해당 보드에 초대시켜 협업을 할 수 있어야 합니다. 컬럼 관리 기능 [ ] 컬럼 생성 보드 내부에 컬럼을 생성할 수 있어야 합니다. 컬럼이란 위 사진에서 Backlog, In Progress와 같은 것을 의미해요. [ ] ..
2024.01.15
[항해99] WIL (5) - Spring 개발 시작
이번 주에 배운 것 Spring initializr 을 이용해서 Spring 프로젝트를 시작 스프링에서 제공하는 기능을 이용해 간단한 CRUD 게시판 만들기 Jdbc template를 이용해서 쿼리문을 이용해 MySQL에 데이터 저장 및 불러오기 Jpa를 이용해 간단한 메서드나 애너테이션으로 엔티티 생성 및 데이터 저장, 불러오기 jwt를 이용한 로그인 기능 구현 이번 주에 느낀 것 이번 주차부터는 스프링에 대한 본격적인 공부가 시작되었는데, 강의에서 배운 내용을 응용해서 API설계부터 프로그램을 짜기까지의 과정을 반복했다. 모든 내용이 처음 배운 내용에서 조금씩 어떤 부분에서 개선되었고 바뀌는 것이 있었다. 예를들어 jdbc template에서는 직접 쿼리문을 사용해서 데이터 베이스에 접근했다면, Jp..
2024.01.07
[알고리즘] 백준 19637 IF문 좀 대신 써줘
https://www.acmicpc.net/problem/19637 19637번: IF문 좀 대신 써줘 첫 번째 줄에는 칭호의 개수 N (1 ≤ N ≤ 105)과 칭호를 출력해야 하는 캐릭터들의 개수 M (1 ≤ M ≤ 105)이 빈칸을 사이에 두고 주어진다. (1 ≤ N, M ≤ 105) 두 번째 줄부터 N개의 줄에 각 칭 www.acmicpc.net 이진 탐색 문제다. 주어지는 N과 M이 둘 다 10^5 까지의 범위기 때문에, if문으로 전부 비교하게 되면 10^10으로 1초의 시간제한을 벗어나게 된다. 처음에 문제에 접근할 때는, 이진탐색으로 칭호를 기준으로 이진탐색하면서 ~칭호 이하의 개수만큼 ~칭호를 출력, 그 초과, 다음 이하의 개수만큼 ~칭호를 출력 하려고 생각했는데, 거꾸로 생각하면 더 편..
2024.01.04