gson은 json 파일의 내용을 읽어서 java 객체로 만들어주는 라이브러리다. implementation 'com.google.code.gson:gson:2.8.9' 위와 같이 build.gradle에 의존성을 추가하면 사용 가능하다. 그러나 해당 라이브러리를 참조하는 과정에서 오류가 생길 때가 있었다. intellij등의 IDE를 통해 자바 프로젝트를 실행하면 라이브러리를 잘 참조했으나, jar 파일로 만들어 실행하면 다음과 같은 에러가 뜨는 것이었다. Exception in thread "main" java.lang.NoClassDefFoundError: com/google/gson/Gson at Potatonet.PortScan.application.APICaller.getIpListWithPo..
Spring Boot로 외부 메인 서버에 서버를 띄웠을 때, 분명 서버도 잘 올라가 있고 내부망에서는 API 송수신이 되는데, 간혹 외부 접속은 아예 불가능 한 경우가 있었다. 그때의 해결 방법들을 모아보자. 다음 먼저 개발 환경은 다음과 같다. Spring Boot 버전 3 이상 Linux Ubuntu 20.04 스프링 설정에서 외부 접근 권한이 막혔을때 application.properties에 다음 내용을 추가한다. server.port=8080 server.address=0.0.0.0 server.port 설정은 내가 서버를 열 포트를 지정한다. (default는 8080) server.address=0.0.0.0 는 모든 IP에서의 접근을 허용한다. 스프링 부트의 port가 외부 접근이 막혔을 ..
크롬 deb 파일이 있는 경우, 다음 명령어로 크롬을 설치해준다. sudo dpkg -i google-chrome-stable_current_amd64.deb 그리고 리눅스의 경우 보통 /usr/bin 하위에 크롬이 위치하므로, 다음 옵션을 추가해 크롬의 위치를 지정해준다. options.binary_location= "/usr/bin/google-chrome" 그리고 Selenium과 관련된 대부분의 문제는 버전 문제일 확률이 높다. 버전과 관련된 스택오버플로 글들을 찾아보자. 필자는 4.4.3 버전만을 사용한다. (버전이 높을 수록 지원하지 않는 문법이 많다) reference https://jo-coder.tistory.com/45
프로젝트를 하다보면 종종 SSH로 연결된 서버에 파일 혹은 폴더를 전송해야 하는 경우가 있다. 이때는 SCP를 활용한다. 로컬 ➡️ 원격 서버 scp -P 포트번호 -r {전송할 폴더 위치} {전송한IP의 ID}@{전송할IP}:{도착주소} 원격 서버 ➡️ 로컬 scp -P {원격서버포트} -r {원격서버ID}@{원격서버 IP or DDNS}:{전송하려는 파일 절대경로} {전송받는 로컬 폴더 절대경로} -r 옵션은 폴더를 전송할 때 사용한다. 파일을 전송한다면 생략해도 된다. 만약 원격 서버 ➡️ 로컬을 진행할때, ssh 키 등록이 안되어있어 에러가 난다면, 로컬의 ssh public 키를 원격 서버의 ~/.ssh/authorized_keys 에 등록해준다.
크롤링을 할때 사용하던 크롬 드라이버가 작동하지 않는 오류 chromedriver가 업데이트되면서 DevToolsActivePort를 찾을 수 없다고 한다. 이때는 웹 드라이버에 다음과 같이 옵션들을 추가해준다. options = Options() options.add_argument('--headless') # headless 모드 활성화 options.add_argument('--no-sandbox') options.add_argument('--disable-gpu') options.add_argument("--single-process") options.add_argument("--disable-dev-shm-usage") 위 세가지 옵션은 기존에 존재하던 옵션들이고, 아래 두개 옵션이 이번에 새롭..
해당 자료형을 java.util.Date 로 변경해주면 해결된다. reference https://coderanch.com/t/515027/databases/SerializationException-deserialize
리눅스 환경에서 프로그램을 돌리다보면 에러 메시지가 뜨지 않고 killed라는 글자만 쓰여있는 경우가 있다. 이 때는 다음과 같이 커맨드에 입력해주면 process가 강제종료된 원인을 알 수 있다. 대부분은 out of memory문제이다. dmesg | grep -E -i -B100 'killed process'
Ubuntu에 설치할 수 있는 PostgreSQL 버전 확인하기 apt show postgresql 위 명령어를 통해 설치할 수 있는 postgreSQL 버전을 확인할 수 있다. 현재 테스트 환경은 ubuntu18.04이고, 설치 가능한 버전은 10버전이다. $ sudo apt install postgresql postgresql-contrib 위 명령어를 통해 바로 설치가 가능하다. 설치 후 버전 확인 설치 후 버전 확인 방법은 여러가지가 있다. psql --version 가장 간단하게 위 명령어로 확인이 가능하고, pg_config --version 위 명령어로도 확인이 가능하다. 다만 해당 명령어 사용시 다음과 같은 에러메세지가 날 때가 있다. "You need to install postgresq..