분류 전체보기

· Vue
Vue를 사용하는데 데이터 관리가 너무 어려웠다. 프로젝트가 엄청 큰 것이 아니라서 도입하진 않았었는데, 이제 슬 도입해서 데이터 관리하는 게 나중에 가서도 편할 것 같다는 생각이 들어서 기록해보려고 한다. 아래 명령어로 Vuex 설치 npm install vuex@next 이지하게 설치 완료. 이제 Vuex로 데이터를 관리하기 위해 store.js를 생성해 준다. 이제 Vuex의 개념을 다시 살펴봐야 한다. Vue의 상태를 관리하는 패턴이자 라이브러리. 모든 컴포넌트들의 중앙 저장소 역할을 담당 하나의 저장소에 데이터를 관리하고, 컴포넌트에서 사용하니 유연하고 편리하게 데이터 공유가 가능하다. 이 개념을 이해해야 한다. State data를 관리한다.(데이터 저장소) State에서 컴포넌트에 올리는 과..
· 오류해결
현재 유저가 가진 역할을 담아놓은 테이블이다. 로그인을 진행하면 JWT필터에서 유저 쿼리가 2번 찍히는 문제가 발생해서 해결해보려고 했다. 분명 데이터에는 2번 유저에게 유저Role이 하나만 있는 상태인데 왜 2번이 찍힐까? 이렇게 찍어봤는데 2번이 찍힌다. 그 말은 jwt 필터를 2번 타는 상황이 발생한다는 것인데 왜지? 그냥 내가 로직을 잘못 작성해서 그랬었다. chat 페이지로 가면 유저의 토큰 조회 메서드, 쿠폰 조회 메서드가 실행되는데 이게 따로따로 실행돼서 2번이 발생하는 것. 그냥 하나의 api로 묶어서 관리하면 더 좋지 않을까? 생각이 들었다. 도메인별로 관리하면 유지보수면에서 물론 좋겠지만, 새로고침할 때마다 매번 실행되는 건데 하나로 묶으면 더 효율이 좋을 것이라고 생각이 들었다. 1...
현재 restful api 서비스에서는 매일 토큰이 2개보다 적을 경우, 2개로 초기화를 진행해 준다. 여기에 매일 5개씩 선착순 토큰을 발행해서 가져가게 구성하려고 한다. public class Coupon { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false) private Integer remainingQuantity; @Column(nullable = false) private Integer totalQuantity; @Column(nullable = false) @CreatedDate private LocalDateTime createDate; 쿠폰 자체는 선착순으로 가져..
· 기타
이번 주제도 cs 공부를 하다가 나온 주제다. 일반적으로 한 트랜잭션에 하나의 영속성 컨텍스트가 할당된다. 즉 A라는 트랜잭션 서비스에서 user를 찾으면 user를 영속성 컨텍스트에 저장. 그런데 여기서 나온 궁금증이 "만약 A서비스에서 B트랜잭션 서비스를 호출하고 user를 조회하면, A의 영속성 컨텍스트를 이용하나?" 이게 물음이었다. 테스트를 위해 간단한 서비스를 만들었다. @Override @Transactional public void findUser(Long id) { // 첫번째 트랜잭션에서 유저 조회 log.info("서비스1"); User user = userRepository.findById(id).get(); emailService.findUserUser(id); } ㅡㅡㅡㅡㅡㅡㅡㅡ..
· 기타
CS 준비를 하면서 팀원들이랑 얘기하는데 나왔던 주제였다. 보통 JPA는 쓰기 지연을 사용한다. 그래서 쓰기 지연 SQL 저장소에 쿼리를 모아두었다가, flush를 하면 그 순간 쿼리를 날려서 반영시키는 것이 보통. 근데 이전에도 한번 다뤘던 주제인데 @BeforeEach void setUp(){ User user = User.builder() .email("test@test.com") .profileImage("ex") .nickname("ex") .isOnline(false) .type("kakao").build(); User save = userRepository.save(user); System.out.println(save.getId()); } 여기서 save를 하면 분명 저장소에 모아둬야 하는..
RESTFUL API 서비스를 제작하면서 가장 고민하고 있는 부분이다.chat gpt로 추천을 받기 위해서는 1번의 request가 필요.jmeter로 100번 요청 보냈더니 벌써 gpt가 toManyRequest를 뱉으며 뻗어버렸다. 너무 많은 요청을 받게 하면 안 되는데... 그래서 생각했던 방법들 Synchronize그래서 싱크로나이즈를 쓸까 생각을 했다. 그러나 Synchronize를 쓰면 임계영역에 하나의 스레드만 가능하다.(즉 100개의 요청이 들어오면 하나씩 처리해야 해서 너무 오래 걸린다) 응답 시간을 측정했을 때, RestTemplate 기준 하나의 처리에 3초가 걸렸다. 이게 100명의 유저한테 온다면 마지막 유저는 300초는 기다려야 한다.(이게 말인가?)결국 탈락 WebClientG..
프로젝트하다가 매일 api 경로를 고민한 지 벌써 10만 번째....그냥 프롬프트 하나 만들어서 추천서비스 간단하게 만들면 좋지 않을까?라는 생각이 들었다. 제작 이유1. chat gpt한테 직접 물어보자니 다 설명하기 귀찮기도 하고 얘가 또 말이 얼마나 많던지2. 간단한 토이 프로젝트로 사용하기 위해3. 동료들이 불편했던 모습을 자주 목격, 해결해주고 싶었다. 그래서 만들어보았습니다. 기능1. 회원가입2. 소셜로그인3. chat gpt에게 추천받기  프로젝트는 Vue3와 SpringBoot 3.2.4를 이용했습니다.주 기능은 3번입니다. 프롬프트사용자에게 model, method, resource, content를 받아서 추천 3개의 restful api를 뽑아내는 것이 목표. 사실 따지고 들어가면 관..
· CS지식
HTTP : 하이퍼 텍스트 전송 프로토콜 (여기서는 HTTPS를 위해 간단하게 넘어가겠습니다.) HTTP -> 데이터가 평문으로 전송된다. 즉 패킷 도청으로 데이터 유출 가능성이 생김(보안상으로 매우 위험) 그래서 우리는 Security가 추가된 HTTPS를 사용하게 됩니다. HTTPS 데이터 전송의 보안을 강화하기 위해 사용 SSL/TSL 프로토콜을 통해 데이터 암호화 간단 정리 HTTP의 보안 문제를 해결하기 위해 SSL/TLS를 추가한 HTTPS를 사용한다. 그러면 HTTPS를 설정하는 과정, 데이터를 암호화해서 주고받는 과정에 대해 정리를 해보려고 합니다. SSL의 개념 Secure sockets layer의 약어(보안 소켓 계층) 전송되는 데이터를 암호화하는 표준 기술 TLS의 개념 Transp..
indeep
'분류 전체보기' 카테고리의 글 목록 (12 Page)