분류 전체보기
-
[Spring] Spring에서 Selenium(셀레니움) 사용해 크롤링하기Backend/Spring 2023. 6. 14. 01:03
시작 Spring 프로젝트에서 크롤링을 하기위해 라이브러리를 찾던 중 JSoup과 Selenium을 발견했다. 나의 크롤링의 경우 단순히 긁어오는 것이 아니라 페이지 이동, 동작이 필요했는데 JSoup은 동적 웹페이지가 안되는 것 같았다. 그래서 Selenium으로 결정했다. 크롬을 가장 많이 사용하는 것 같아 크롬브라우저를 사용할 것이다. 크롬 브라우저 버전 확인 크롬 브라우저에 접속하여 메뉴 → 설정 → Chrome정보 에서 크롬 버전을 확인할 수 있다. 크롬 드라이버 설치 다음 링크에서 크롬 브라우저 버전에 맞는 드라이버를 설치한다. ChromeDriver - WebDriver for Chrome - Downloads Current Releases If you are using Chrome vers..
-
[Spring] 우분투 서버에서 Docker로 Selenium 환경 구축하기Backend/Spring 2023. 6. 14. 00:39
시작 Spring 프로젝트에서 Selenium을 사용해 크롤링을 구현했다. 로컬에서 잘 돌아가던 코드가 서버에서 안돌아가는 경우가 많지만 Selenium은 정말정말 에러도 많고 구축하기 어려웠다. 그 과정을 정리해보려고 한다! ⚙ 개발환경 GCP 인스턴스 리눅스 우분투 18.04 JDK 17 Gradle Spring Boot 구조 Selenium을 사용하기 위해선 크롬과 크롬드라이버가 필요하다. 특히 이 둘의 버전을 맞춰서 설치해주어야 한다. Command Line으로 서버에 설치하는 방법도 있겠지만 Dockerfile에 명령어를 작성해두는 것을 선택했다. Dockerfile을 통해 크롬과 크롬드라이버를 설치하고 컨테이너에 설치된 드라이버를 selenium에서 사용할 수 있도록 할 것이다. 📌과정 Doc..
-
[Docker] Docker Compose를 사용하여 Spring 컨테이너와 로컬 MySQL 연결하기Backend/Docker 2023. 6. 13. 20:30
시작 Spring 프로젝트를 진행하면서 초기에는 도커없이 서버에서 로컬로 mysql과 스프링을 연결했다. 하지만 이후 도커 적용이 필요해지면서 dockerfile과 docker-compose.yml 파일을 작성했다. 이때 대부분 MySQL도 컨테이너로 생성해 스프링 컨테이너와 연결하는데, 나의 경우 로컬에서 사용하던 DB를 계속사용해야 했기 때문에 스프링 컨테이너와 로컬 MySQL을 연결해야했다. Spring Dockerfile Dockerfile의 경우 프로젝트에서 사용하는 jdk를 지정하고 gradle을 통해 build된 jar 파일을 컨테이너에 포함시켜 jar파일을 실행시킨다. 여기서 중요한 점은 대부분 파일 경로 상 docker-compose.yml 밑에 Dockerfile이 존재하게 되는데 Do..
-
[Spring Error] Java로 Selenium(셀레니움)을 사용해 크롤링 시 Unable to establish websocket connection to 에러Backend/Spring 2023. 6. 13. 20:06
문제 스프링부트 프로젝트에서 크롤링을 하기 위해서 셀레니움 라이브러리를 사용했다. 동작 시 다음과 같이 웹소켓과 연결할 수 없다는 에러가 발생했다. 더보기 org.openqa.selenium.remote.http.ConnectionFailedException: Unable to establish websocket connection to 해결 방법 chromedriver 생성시에 ChromeOption을 포함할 수 있는데 다음 코드를 포함하면 된다. ChromeOptions chromeOptions = new ChromeOptions(); chromeOptions.addArguments("--remote-allow-origins=*"); ChromeDriver driver = new ChromeDrive..
-
[리눅스] 우분투 서버에서 jar 파일 실행 시 java.sql.SQLException: Incorrect string value: 에러Backend/리눅스 2023. 5. 31. 22:04
문제 swagger나 postman을 사용해 api 요청을 해봤었는데 로컬에서는 잘 작동하던 코드가 다음과 같은 에러를 냈다. 갑자기 SQL 예외라니,,, 테스트 해봤을 때 string value의 인코딩이 잘못된 듯 보였다. 해결 DB, Table, Column의 인코딩을 맞춰주면 되는데 utf8mb4로 맞춰주었다. ALTER DATABASE db명 DEFAULT CHARACTER SET utf8mb4; ALTER TABLE db명.테이블명 CONVERT TO CHARACTER SET utf8mb4; 첫번째 문은 DB의 character를 변경 두번째 문은 Table과 Column의 character를 변경
-
[리눅스] 우분투 서버에서 spring boot jar 파일 실행 시 java.lang.IllegalArgumentException: URI is not hierarchical, java.io.FileNotFoundException 에러Backend/리눅스 2023. 5. 31. 21:26
문제 엑셀파일에서 데이터를 가져오기 위해 resources 안에 엑셀 파일을 넣어두고 이를 읽어오는 코드를 작성했었다. 문제가 됐던 코드는 다음과 같다. URL url = this.getClass().getClassLoader().getResource("test.xlxs"); File f = new File(url.toURI()); FileInputStream file = new FileInputStream(f); XSSFWorkbook workbook = new XSSFWorkbook(file); resources 경로 상에서 file을 url을 가져와 File 객체를 생성하고 여기서 inputstream을 얻어오는 코드이다. 엑셀 파일 파싱을 위해 XSSFWorkbook을 사용했다. 그 결과 java..
-
[리눅스] Spring Boot 3.0 build 시 java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java 에러Backend/리눅스 2023. 5. 31. 15:37
문제 GCP 우분투 인스턴스에 MySQL을 실행하고 MySQL과 연결한 SpringBoot 3.0을 서버에서 ./gradlew build를 시켰을 때 다음과 같은 에러가 발생했다. java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java 에러가 시작된 곳은 hibernate 예외였다. org.hibernate.hibernateexception at dialectfactoryimpl.javadelegate.java 해결 해당 에러는 Spring Boot에 설정한 DB에 연결할 수 없을 때 발생한다. 보통 이유는 두가지 이다. DB를 실행시키지 않음 datasource 정보를 잘못적음 DB를 실행시키지 않았다면 실행시키면 되..
-
[리눅스] 우분투 MySQL에 Workbench로 접속 시 unknown authentication type 에러Backend/리눅스 2023. 5. 31. 15:17
시작 우분투에 설치된 MySQL에 접속하기 위해 MySQL Workbench로 접속을 시도했지만 계속해서 unknown authentication type 에러가 발생했다. 권한을 준 user로 접속하려고 했음에도 실패했는데 그 이유가 조금 허무해서 적어보려고 한다. 연결과정은 여기 포스팅했다. [리눅스] 우분투 서버 mysql에 MySQL Workbench로 접속하기 (feat. GCP 인스턴스) 시작 분명 간단한 작업인데 난 애를 엄청 먹었다. 이정도면 모든 오류는 다 나에게 오는 듯... mysql 설치는 아래 블로그에서~ [리눅스] 우분투 서버에 MySQL8 설치 MySQL 설치 우분투 서버 업데이트 sud miraekwak.tistory.com 문제 MySQL Workbench Connectio..