본문 바로가기

분류 전체보기299

[aws] Spring Boot AWS UBUNTU 배포 먼저 간단하게 새로운 인스턴스를 만들어준다. 그리고 보안그룹, 인바운드 규칙에서 Spring에서 사용하는 포트를 추가해준다 나같은 경우에는 8090 으로 추가해주었다. 그리고 jar파일로 배포를 해주어야 한다. Gradle에서 build 안에있는 톱니바퀴를 더블 클릭 해주면 jar 파일이 생긴다. build를 성공하면 libs 파일에 .jar파일이 생긴다 이것을 AWS에 넣는 작업을 해야한다. git bash를 사용할 수도 있는데 나는 xShell을 사용하였다. xShell 설치 후 새 새션을 등록해준다. 호스트 번호는 EC2, 퍼블릭 IPv4 주소를 넣어주면 된다 그리고 pem 키로 접속해주면 된다 참고로 접속 아이디는 ubuntu가 디폴드 값이다 ( 비밀번호는 없음) 그리고 FileZilla를 사용해.. 2022. 5. 21.
[T.I.L]DAY93 ------------------------------------------------------------ [T.I.L] ------------------------------------------------------------ 2022.05.17 - [개발 개념] - [개발 개념] HTTP, WebSocket 이란? 2022.05.19 - [서버/aws] - [aws] xShell, ec2 aws 18.04 version, RedisDB 설치 2022.05.19 - [오류노트] - [오류노트] ==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units === [오류노트] ==== AUTHENTICATING FOR org.freedesktop.sys.. 2022. 5. 19.
[오류노트] ==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units === 개발하다보면 여러 부문에서 발견되는 오류이다 생각보다 간단하게 해결할 수 있다 관리자 권한이 없다는 것인데 su - root 를 통해서 관리자 권한 변경을 하던지 명령어 앞에 sudo ---- 를 붙여주면 된다. 2022. 5. 19.
[aws] xShell, ec2 aws 18.04 version, RedisDB 설치 먼저 aws 가입 후 ec2 인스턴스를 생성해준다 이때 Ubuntu 18.04 버전으로 설정해준다. Xshell을 사용해서 서버 연결을 해줄 예정이다 호스트를 입력하는 곳에 퍼블릭 IPv4 주소를 입력해준다 그 후 연결을 눌러준 뒤 사용자 이름 입력칸에 ubuntu를 입력해준다 그 후 public Key에 미리 받아두었던 사용자 키를 넣어준다 암호는 설정하지 않았기 때문에 비워 두고 확인 버튼을 눌러준다 CentOs에서는 Yum을 사용하는데 Ubuntu에서는 apt-get을 사용해서 설치해준다 관리가 편해서 Yum을 강제로 설치하는 경우가 있는데 그냥 apt-get을 사용해주자 sudo apt-get update sudo apt-get upgrade sudo apt-get install redis-ser.. 2022. 5. 19.
[개발 개념] HTTP, WebSocket 이란? 채팅 기능을 만들기 위해서 필요한 개념들을 공부해 보았다 HTTP 먼저 HTTP 프로토콜에 대한 공부를 했다. HTTP는 클라이언트가 요청을 보내고 서버가 응답을 보내는 단반향 통신이다. 사용자가 서버에 요청을 보낼 때 이 요청은 HTTP 또는 HTTPS의 형태로 진행된다. 요청을 받은 후 서버가 클라이언트에 응답을 보내고, 각 요청은 해당 응답과 연결되고, 응답을 보낸 후 연결이 닫히면 각 HTTP 또는 HTTPS 요청이 매번 서버에 대한 새 연결을 설정하고 응답을 받은 후 연결이 자체적으로 종료된다 이 동작을 HTTP 3-way handshaking 라고 부르는데 데이터 패킷 전송의 전달을 보장하고 손실된 패킷을 재전송하는 연결 지향 프로토콜인 TCP 위에서 실행되는 stateless 프로토콜이다 H.. 2022. 5. 17.
[T.I.L] DAY92 ------------------------------------------------------------ [T.I.L] ------------------------------------------------------------ 2022.05.16 - [프레임워크/JPA] - [JPA] QueryDSL의 특징, 사용방법 [JPA] QueryDSL의 특징, 사용방법 QueryDSL의 특징 쿼리를 문자가 아닌 코드로 작성해도, 쉽고 간결하고 모양이 쿼리와 비슷하게 개발할 수 있는 프로젝트 데이터를 조회하는데 기능이 특화되어 있다 QueryDSL 사용방법 EntityManager를 yikanghee2.tistory.com 2022.05.16 - [프레임워크/스프링] - [Spring] TMDB API 영화.. 2022. 5. 16.
[JPA] QueryDSL의 특징, 사용방법 QueryDSL의 특징 쿼리를 문자가 아닌 코드로 작성해도, 쉽고 간결하고 모양이 쿼리와 비슷하게 개발할 수 있는 프로젝트 데이터를 조회하는데 기능이 특화되어 있다 QueryDSL 사용방법 EntityManager를 생성 JPAQuery 객체 생성 사용할 쿼리 타입(Q)를 생성하는데 생성자에는 별칭을 줌 QueryDSL 예제 public static void queryDSL() { EntityManager em = emf.createEntityManager(); //EntityManager 생성 JPAQuery query = new JPAQuery(em); QMember qMember = new QMember("m"); // 생성되는 JPQL의 별칭이 m List members = query .from(.. 2022. 5. 16.
[Spring] TMDB API 영화 데이터 DB 저장 (4) 이번에 해준 것은 paging을 해주었다. 페이지 처리와 한 페이지에 얼마 만큼의 데이터가 들어가는에 대한 코드이다 먼저 Controller를 작성해 주었다 @GetMapping("/api/movies") public Page getAllMovies( @RequestParam("page") int page, // 요청페이지 @RequestParam("size") int size, // 요청 사이즈 (게시글에 몇개씩 보여줄지) @RequestParam("sort") int sort, ) { Pageable pageable = PageRequest.of(page-1, size); Page movies = movieRepository.findAllByOrderByCreatedAtDesc(pageable); r.. 2022. 5. 16.
[T.I.L] DAY91 ------------------------------------------------------------ [T.I.L] ------------------------------------------------------------ 2022.05.13 - [오류노트] - [오류노트] SQL Error: 1366, SQLState: 22007, (conn=1160) Incorrect string value: JPA, AWS RDS, DATAGRIP 2022.05.14 - [프레임워크/스프링] - [Spring] TMDB API 영화 데이터 DB 저장 (2) 2022.05.14 - [프레임워크/스프링] - [Spring] TMDB API 영화 데이터 DB 저장 (3) [Spring] TMDB API 영화 데.. 2022. 5. 14.
[Spring] TMDB API 영화 데이터 DB 저장 (3) 데이터를 저장한 뒤 처음으로 한 것이 PostMan으로 값을 꺼내오는 작업을 했다 @GetMapping("/api/movies/{movie_id}") public Movie getMovieById(@PathVariable Long movie_id) { Movie movie = movieRepository.findById(movie_id).orElse(null); return movie; } @PathVariable을 사용해서 movie_id를 받아올 수 있게 했다 그리고 JPA에서 기본으로 제공하는 find 기능을 사용해서 값을 불러왔다 orElse 문은 값이 없을 경우 null을 반환해준다 https://www.baeldung.com/java-optional-or-else-vs-or-else-get J.. 2022. 5. 14.
[Spring] TMDB API 영화 데이터 DB 저장 (2) Controller에서 값을 전달한 뒤 Service에서 처리하는 로직을 작성해 보겠다 @RequiredArgsConstructor @Service @Slf4j public class ApiService { private final MovieRepository movieRepository; LocalDateTime dateTime = LocalDateTime.now(); public String getInfo(String result) { JsonArray list = null; log.info("서비스 시작" ); JsonParser jsonParser = new JsonParser(); JsonObject jsonObject = (JsonObject) jsonParser.parse(result); l.. 2022. 5. 14.
[오류노트] SQL Error: 1366, SQLState: 22007, (conn=1160) Incorrect string value: JPA, AWS RDS, DATAGRIP 다음과 같은 오류가 발생하여 해결하는데 꽤 많은 시간이 걸렸다 [ 해결 방법 ] 1. RDS에서 파라미터 매니저 수정하기 나 같은 경우 이모지가 포함되어 있어서 CHARACTER_SET 을 모두 utf8mb4로 수정해주었다 2. 그리고 두번째로 DATAGRIP CONSOLE 창에서 ​ 성공! 2022. 5. 13.
[T.I.L] 90 ------------------------------------------------------------ [T.I.L] ------------------------------------------------------------ 2022.05.10 - [개발 개념] - [개발 개념] 기본 데이터 베이스 JOIN 2022.05.10 - [프레임워크/스프링] - [Spring] TMDB API 영화 데이터 DB 저장 (1) [Spring] TMDB API 영화 데이터 DB 저장 (1) TMDB API를 활용하여 DB에 데이터에 넣는 작업이 생각보다 너무 오래 걸렸다 파이썬으로 해보고 크롤링으로 해봤는데 API를 사용하는게 제일 깔끔하겠다는 생각이 들었다 그래서 DB에 데이터를 넣 yikanghee2.ti.. 2022. 5. 10.
[Spring] TMDB API 영화 데이터 DB 저장 (1) TMDB API를 활용하여 DB에 데이터에 넣는 작업이 생각보다 너무 오래 걸렸다 파이썬으로 해보고 크롤링으로 해봤는데 API를 사용하는게 제일 깔끔하겠다는 생각이 들었다 그래서 DB에 데이터를 넣고 REACT에 띄우는 과정이 2주 정도 소요되었다 먼저 API를 받아오는 방법을 생각해 보았다 처음하는 거라 내가 하는 방법이 맞는 방법인지 모르겠지만, 나름 현직자의 조언대로 Controller - Service - Repository (JPA) - DB 순서로 진행하였다 처음에는 Controller에서 Service를 거치지 않고 바로 보내줬는데 Controller에 throws Exception이 생겨서 다시 로직을 수정해 줬다 먼저 api 정보를 받아오기 위한 TMDB 회원가입을 먼저 하고 API 사용.. 2022. 5. 10.
[개발 개념] 기본 데이터 베이스 JOIN 조인 데이터베이스 테이블 간의 결합을 의미 여러 곳에 흩어져 있는 데이터를 하나의 테이블로 보고 싶을 때 조인 연산을 사용함 INNER JOIN INNER JOIN, 내부 조인이라고 한다 A 테이블과 B 테이블이 있다면 두 테이블의 교집합을 말한다 내부 조인은 기준 테이블, 조인 테이블에 조인 컬럼에 해당하는 값이 모두 존재하는 경우에만 데이터가 조회된다 SELECT COLUMN FROM A INNER JOIN B ON A.KEY = B.KEY OUTER JOIN OUTER JOIN은 외부 조인이라고 한다 A 테이블과 B 테이블이 있다면 두 테이블의 합집합을 말한다 OUTER JOIN은 조인 테이블에 데이터가 없어도 기준 테이블의 모든 데이터가 조회된다 SELECT COLUMN FROM A OUTER J.. 2022. 5. 10.
[T.I.L]DAY89 ------------------------------------------------------------ [T.I.L] ------------------------------------------------------------ 2022.05.08 - [프레임워크/스프링] - [Redis] MongoDB와 Redis를 사용하여 Molon차트 저장하기 (2) 2022.05.08 - [프레임워크/스프링] - [Redis] MongoDB와 Redis를 사용하여 Molon차트 저장하기 (1) [Redis] MongoDB와 Redis를 사용하여 Molon차트 저장하기 (1) 캐시 DB는 데이터의 빠른 출력을 위해 메모리에 저장하는 데이터베이스로 RedisDB를 많이 활용한다 오늘 해본것은 멜론 차트 100을 .. 2022. 5. 8.
[Redis] MongoDB와 Redis를 사용하여 Molon차트 저장하기 (2) melonService Interface를 생성해준다 /** * 멜론 노래 리스트 저장하기 */ int collectMelonSong() throws Exception; /** * 오늘 수집된 멜론 노래리스트 가져오기 */ List getSongList() throws Exception; /** * 멜론 가수별 노래 수 가져오기 */ List getSingerSongCnt() throws Exception; Service를 생성해준다. 이 로직의 핵심은 MongoDB와 Redis를 함께 사용하여 만약 Redis에 데이터가 존재한다면, Redis에서 조회하고 Redis에 존재하지 않는다면 Mongodb에서 조회하는 특징을 가지고 있다 @Slf4j @Service("MelonService") public c.. 2022. 5. 8.
[Redis] MongoDB와 Redis를 사용하여 Molon차트 저장하기 (1) 캐시 DB는 데이터의 빠른 출력을 위해 메모리에 저장하는 데이터베이스로 RedisDB를 많이 활용한다 오늘 해본것은 멜론 차트 100을 수집한 내용을 RedisDB에 일정시간동안 저장하고, 조회 요청이 발생하면 RedisDB에서 데이터를 가져오고, 만약 RedisDB에 데이터가 없다면, MongoDB에서 가져온다 우선 Interface Mapper 부터 생성해준다 주석에 설명을 적어놔서 설명은 생략하겠다 /** * 멜론 노래 리스트 저장하기 * * @param pList 저장할 데이터 * @return 저장 결과 */ int insertSong(List pList, String redisKey) throws Exception; /** * 멜론 노래 키 정보 존재여부 체크하기 * * @param key 저.. 2022. 5. 8.
[T.I.L]DAY88 ------------------------------------------------------------ [T.I.L] ------------------------------------------------------------ 2022.05.06 - [프레임워크/스프링] - [Redis] Spring Boot Redis JSON 데이터 다루기​ [Redis] Spring Boot Redis JSON 데이터 다루기 실시간 채팅 프로그램을 만들기 이전에 Redis로 JSON 데이터 다루기를 해보았다 @JsonInclude(JsonInclude.Include.NON_DEFAULT) @Data public class RedisDTO { private String name = ""; // 이름 private.. 2022. 5. 6.
[Redis] Spring Boot Redis JSON 데이터 다루기 실시간 채팅 프로그램을 만들기 이전에 Redis로 JSON 데이터 다루기를 해보았다 @JsonInclude(JsonInclude.Include.NON_DEFAULT) @Data public class RedisDTO { private String name = ""; // 이름 private String email = ""; // 이메일 private String addr = ""; // 주소 private String test_text = ""; // 테스트 문구 } 먼저 Redis 정보를 다룰 DTO를 생성해준다 int saveRedisZSetJSON(String redisKey, List pList) throws Exception; IRedisMapper에 int형으로된 인터페이스를 생성해준다 int.. 2022. 5. 6.
[MOBEE] 개발 진행 상황 및 진행 계획 처음 하는 프로젝트인 만큼 고민을 굉장히 많이 했고, 많은 공부가 필요했다 일단 오늘까지 고민한것은 영화정보를 DB로 받아와야 하는데 받아올만한 정보가 없다는 것이었다 그래서 크롤링은 다 해봤고, 내가 원하는 만큼의 데이터를 얻을 수 없었다 그래서 찾고 찾던중 TMDB API 라는 것을 알게되었다 그래서 일단 영화 데이터는 해결이 됐고, 검색은 네이버 API, 도로 API는 다음 API가 짱이다.. 그리고 영화에 리뷰를 남길 수 있게 할 예정인데 기본 리뷰 형태는 물론이고 좋아요도 넣어보려고 한다 그리고 기회가 된다면 Redis를 사용한 채팅도 구현해볼 생각이다... 너무 욕심인가? 아무튼 일단 Reat와 Spring 연동과 로그인 회원가입, React 디자인 기본 틀은 잡았으니 이제 데이터 전처리와 A.. 2022. 5. 6.