본문 바로가기

프로젝트30

[USports] Redis + Login [USports] Redis + Login Redis https://jejoonlee.tistory.com/376 스프링 캐시 스프링 캐시 캐시 임시로 데이터를 저장하는 공간이다 인메모리가 될 수 있고, 서버에 캐시를 만들 수 있다 빠른 처리 속도로 성능을 향상할 수 있다 이미 조회한 데이터를 임시로 저장하고, 다 jejoonlee.tistory.com 예전에 레디스에 관련해서 살짝 다뤘던게 기억이 난다. 레디스는 NoSQL로 Key-Value로 데이터를 저장하는 메모리 데이터 스토어다. 해당 기능을 사용했을 때에 Key와 Value를 넣으면서, 해당 메모리에 대한 만료 기간도 넣을 수 있었다. 로그인과 레디스? 로그인을 할 때에 access token을 클라이언트에 준다 access token은 해당 .. 2023. 12. 5.
[MovMag] WebClient [MovMag] WebClient 처음에는 외부 API를 통해서 JSON 파일로 파싱을 해서 데이터를 가지고 왔다 RestTemplate이라는 라이브러리를 추천 받았다 하지만, Spring 문서에서는 Spring 5.0에서부터는 RestTemplate보다는 WebClient를 사용하라고 권고하고 있다 NOTE: As of 5.0 this class is in maintenance mode, with only minor requests for changes and bugs to be accepted going forward. Please, consider using the org.springframework.web.reactive.client.WebClient which has a more modern A.. 2023. 11. 6.
[MovMag] ElasticSearch + MySQL [MovMag] ElasticSearch + MySQL 참고한 블로그!!! https://backtony.github.io/spring/elk/2022-03-02-spring-elasticsearch-2/ 해당 프로젝트에서는 영화 DB를 TMDB API에서 가지고 와서 MySQL에 저장을 해 놓은 상태다 ElasticSearch는 DB가 아닌 검색 엔진이기 때문에, MySQL에 저장되어 있는 포멧을, ElasticSearch 포멧으로 바꿔놔야 한다 스프링에서는 Entity를 통해서 DB와 연결을 했다면, ElasticSearch는 Document를 사용한다 한 프로젝트 안에 Entity와 Document 두 개를 정확해 어노테이션을 통해 명시를 해야 한다 하드 코딩으로 Document를 만들지 않고, E.. 2023. 11. 3.
[MovMag] ElasticSearch setup [MovMag] ElasticSearch setup 엘라스틱서치? 처음에는 query문을 통해서 원하는 내용을 출력하려고 했다 like 문을 사용할 수 있지만, 데이터가 너무 많을 때에는 찾는 속도가 느려질 수 있다 현재 만들고 있는 MovMag 이라는 영화 리뷰 API 자체에서, DB에 저장한 영화 개수만 10,000개가 넘고, 캐스트 수는 100,000명이 넘었다 엘라스틱서치는 DB는 아니지만, 방대한 양의 데이터를 신속하고 거의 실시간으로 저장, 검색, 분석할 수 있다 ELK (ElasticSearch / Logstatsh / Kibana) 단독으로 ElasticSearch를 사용하여 검색 기능을 구현할 수 있다 ElasticSearch : 분석 및 저장 기능을 담당 Logstatsh : 수집 기능.. 2023. 11. 2.
[MovMag] 20231031 오늘 배운 것 (@Asnyc) [MovMag] 20231031 오늘 배운 것 @Async TMDB 오픈 API를 가져올 때, 너무 많은 데이터를 가져오는 탓에 데이터를 수집하는 속도가 느렸다 500 페이지의 영화 (한 페이지 당 20개) => 10,000개 캐스트 정보 (한 영화를 만들기 위해 많은 사람들이 필요하다) : 163,404명 동기적으로 할 때에는 예측할 때에는 1시간에 약 120페이지의 데이터를 저장할 수 있었다 비동기를 사용하여 데이터를 가지고 왔을 때, 10분 안에 50페이지의 데이터를 저장했음 (1시간 안에 저장) AsnycConfig @EnableAsync @Configuration public class AsyncConfig implements AsyncConfigurer { @Override public Exe.. 2023. 10. 31.
[MovMag] 오늘 배운 것 - 20231030 [MovMag] 오늘 배운 것 JWT 토큰 @PostMapping("/login") public TokenDto login( @RequestBody @Valid MemberLogin.Request request ) { MemberLogin.Response loginInfo = memberServiceImpl.login(request); return "토큰이 생성되었습니다 : Bearer " + tokenProvider.generateToken(loginInfo.getEmail(), loginInfo.getRole()); } 토큰을 생성하고, 바로 리턴을 했다 이렇게 하면 나중에 유저가 API를 사용할 때에 토큰을 계속 복사, 붙여넣기를 해야하는 불편함이 있다 @PostMapping("/login") pu.. 2023. 10. 31.
Joontooling 프로젝트 [OAuth] Joontooling 프로젝트 업무 : 회원가입 모델링 OAuth란? Open Authorization 은 비밀번호 없이, 제 3자 웹사이트에 있는 정보를 현재 사용하려고 하는 웹사이트가 사용할 수 있도록 허용하는 것이다 네이버는 나의 웹사이트한테 accessToken을 전달 하면서, 나의 웹 사이트에서 필요한 기능들만 부분적으로 허용한다 accessToken을 통해서 네이버에 접근해서 데이터를 읽고, 생성하고, 삭제하고, 수정할 수 있다 나의 웹사이트에서 네이버의 ID, Password를 직접적으로 사용하는 것이 아니라서 보안적인 측면에서 안전하다 역할 Resource Server (Naver) : 사용하고자 하는 자원 (데이터)의 위치, 즉 Resource Server에 있다 나의 웹사이트에서 네이버.. 2023. 3. 27.
클래스 카드 - [UI설명] 카드 디테일 페이지 클래스 카드 - 카드 디테일 페이지 카드 디테일 페이지는 카드 데이터부터, 시각화까지 모든 것을 구현했다 카드 데이터 크롤링을 통해 카드 데이터를 가지고 왔다 카드 이름 / 카드사 혜택 등 페이지 구현 제일 중요하게 생각한 것이, 어떻게 하면 유저들에게 간단한 UI를 제공하고 싶었다 그래서 정말 중요한 카드 내용들은 페이지에서 보여주었다 그리고 주요 혜택 같이, 내용이 많은 것들은, 모달을 이용했다 주요 혜택의 제목 그리고 간단한 설명을 카드와 카드 호버 기능을 통해 구현을 했다 해당 카드를 누르면, 모달창이 뜨고, 주요 혜택에 대한 자세한 정보를 볼 수 있다 위와 같이 페이지를 만들어, 유저들이 한 눈에 카드에 대한 내용을 볼 수 있다 만약 주요 혜택이 궁금하면, 카드를 클릭하면 된다 주로 주요 혜택을.. 2023. 2. 26.
클래스 카드 - 카드 비교 클래스 카드 - 카드 비교 카드 비교 모델 (Model) class CompareCard(models.Model): card = models.ForeignKey(Card,on_delete=models.CASCADE) user = models.ForeignKey(get_user_model(),on_delete=models.CASCADE) 로그인을 해야 카드 비교 기능을 사용할 수 있다 그래서 유저 정보를 가지고 오고, card 정보를 통해서 카드를 카드 비교함에 넣는 것이다 여기서 user마다 카드는 최대 3개까지 카드 비교함에 넣을 수 있다 카드 비교함에 카드 넣기 (요청) # 카드를 비교하기 위해서 비교하기 바구니에 넣고 / 비교하기 페이지 path('bookmark//', views.b.. 2023. 2. 26.