썸네일 [Github] OAuth 앱 권한 부여 방법 Github Docs https://docs.github.com/ko/apps/oauth-apps/building-oauth-apps/creating-an-oauth-app OAuth 앱 만들기 - GitHub Docs 개인 계정에서 또는 관리자 액세스 권한이 있는 조직에서 OAuth app을(를) 만들고 등록할 수 있습니다. OAuth app을(를) 만드는 동안 퍼블릭으로 간주되는 정보만 사용하여 개인 정보를 보호해야 합니 docs.github.com 1) 우측 상단 프로필 클릭 > Settings 2) Developer settings 3) OAuth Apps 4) New OAuth application 아래 이미지와 같이 입력 (* Authorization callback URL은 인가를 끝낸 후..
썸네일 [SonarQube] Webhook Additional parameters (소나큐브 비동기 호출 사용자 정의 파라미터 추가) OS : Window SonarQube Ver : sonarqube-8.9.10.6 플로우를 간단하게 설명하면 다음과 같다. 1.BE 서버에서 소나스캐너를 실행함 2. 소나스캐너 호출이 완료되면 소나스캐너가 소나큐브 서버로 데이터를 보냄 3. 소나큐브는 Webhook에서 설정한 BE 서버를 비동기 호출한다. 4. 호출받은 BE 서버는 소나큐브 Payload를 가지고 이후 로직 처리 진행 내가 하고 싶었던 것 - 4번 절차에서 소나큐브의 응답받은 데이터를 DB 적재하고 싶음 - 응답 데이터마다 각기 다른 컬럼에 적재되어야 하기 때문에 서비스단에서 분기 처리가 필요함 그래서 어떻게 했는가 결론 : 소나스캐너 파라미터를 이고지고 BE서버까지 가지고 오면 된다. 즉, 1번 절차에서 소나스캐너를 실행하는 시점에 ..
썸네일 [Mybatis] foreach insert duplicate update 처리(Upsert) Upsert란 UPDATE + INSERT를 합친 단어이다. 중복되는 값이 있으면 UPDATE, 없으면 INSERT 하는 쿼리라고 생각하면 된다. Mybatis에서 다중 INSERT 하는 방법은 다음과 같다. INSERT 테이블명 ( name, age ) VALUES ( #{alias.name} , #{alias.age}) 만약, INSERT 시 PK(=name)가 중복된 경우에 특정 칼럼만 UPDATE 하고 싶다면 ON DUPLICATE KEY UPDATE를 사용하면 된다. INSERT 테이블명 ( name, age ) VALUES ( #{alias.name} , #{alias.age} ) ON DUPLICATE KEY UPDATE age = VALUES (age) ON DUPLICATE KEY UPD..
썸네일 [SonarQube] SonarQube 내장 DB (H2) 접속방법 OS : Window SonarQube Ver : sonarqube-8.9.10.6 소나큐브는 Default 로 H2를 사용하고 있다. 이걸 디비 접속 툴을 사용하지 않고 cli 명령어를 통해 접속하고 싶었다. 접속 방법 1. cmd창으로 SonarQube의 H2 경로로 이동 cd {소나큐브 설치경로}\sonarqube-8.9.10.61524\sonarqube-8.9.10.61524\lib\jdbc\h2 2. 아래 명령어 실행 java -cp h2-1.4.199.jar org.h2.tools.Server -web -webAllowOthers -tcp -tcpAllowOthers -ifNotExists (*h2-1.4.199.jar는 각자 버전에 맞게 수정) 3.아래 URL로 접속 4. 다음과 같이 설정 ..
썸네일 [SonarQube] Window cmd에서 소나큐브 프로젝트 바인딩 명령어 입력 윈도우에서 아래 명령어 실행하려면 \가 아닌 ^를 사용하면 된다. (\ 사용하면 단일 명령어로 인식됨) mvn sonar:sonar ^ -Dsonar.projectKey=test ^ -Dsonar.host.url=http://localhost:9000 ^ -Dsonar.login=사용자토큰
썸네일 [SonarQube] Local 환경에서 정적분석 돌려보기 (SonarQube 설치 및 구동) 로컬 환경에서 사이드 프로젝트 소스코드를 검증하고 싶어서 SonarQube를 사용해 봤다. 개발 환경 및 프로그램 버전 OS : M1 Java : openjdk 11.0.11 Apache Maven 3.9.3 SonarQube : 10.0 (build 68432) VSCode :1.79.2 SonarLint : 3.19.2 1. 로컬 PC에서 sonarqube 설치 및 실행 https://formulae.brew.sh/formula/sonarqube sonarqube Homebrew’s package index formulae.brew.sh 실행 관련 명령어 brew services homebrew service 목록 조회 brew services start sonarqube sonarqube start..
썸네일 [MariaDB] 에폭 타임 형태의 TEXT 데이터를 date 타입으로 변환 에폭 타임 화면 MySQL 타임존 확인 SELECT @@GLOBAL.time_zone, @@SESSION.time_zone, @@system_time_zone; UTC로 되어있어서 여기에 +9를 해줘야 한다. 데이터 형식 확인 데이터는 다음과 같은 형식으로 들어온다. (1684891804137) date 타입으로 변환 쿼리 나는 시간만 필요하고 분, 초까지는 필요 없어서 SUBSTR로 잘라줬다. SUBSTR(CREATE,1,10) FROM_UNIXTIME() 함수를 사용해 DATE 타입으로 바꾸면 다음과 같다. SELECT FROM_UNIXTIME(SUBSTR(CREATE_DATE,1,10)) FROM 테이블명; FROM_UNIXTIME()은 UTC 기준이기 때문에 +9해야 한국 시간으로 변경된다. SE..
[SQL] 시간대별 가장 최근 데이터 조회 쿼리 MariaDB를 기준으로 작성되었습니다. 내가 원한 데이터는 다음과 같다. 11 서비스 1 데이터 1 11 서비스 2 데이터 2 11 서비스 3 데이터 3 12 서비스 1 데이터 1 12 서비스 2 데이터 2 12 서비스 3 데이터 3 이렇게 시간대별로 서비스의 데이터를 조회하고 싶었다. 해당 테이블은 log성으로 5분마다 데이터가 적재된다. 그러니까 각 시간대별 가장 최근 데이터를 뽑아야 한다. 그래서 쿼리는 다음과 같다. SELECT TIME, SERVICE_NAME, IFNULL(CPU_USAGE,0) AS CPU_USAGE, IFNULL(MEMORY_TOTAL,0) AS MEMORY_TOTAL, IFNULL(MEMORY_USAGE,0) AS MEMORY_USAGE FROM ( SELECT @N :..
썸네일 Dump Data insert(=import) 덤프 데이터를 maria DB 서버로 insert 해야 할 일이 있었다. 전에는 DB 접속 툴로 스크립트를 실행해서 데이터를 insert 했었는데, 이번에는 dump 데이터 파일을 DB 서버에서 실행시켜 데이터를 insert 하였다. 1. 데이터 베이스 생성 CREATE DATABASE ECP_USER; CREATE DATABASE ECP_ADMIN; 2. dump 데이터 파일을 mariadb가 있는 서버로 옮기기 # 로컬 터미널에서 아래 명령어 실행 scp -P [원격지바인딩포트] 파일명.jar [원격지계정명]@[원격지IP]:/[경로] e.g) scp -P xxxd22 xxx.jar root@100.0.0.xxx:/home 2-1) ECP_USER 2-2) ECP_ADMIN 3. dump 데이터 ins..
썸네일 Host '192.xxx.xx.xx' is not allowed to connect to this MariaDB server - Maria DB 원격접속 불가 maria DB서버를 외부에서 접근하려고 하는데 다음과 같은 에러가 발생했다. 보안상 root 계정에 아무나 접근 할 수 없어서 허용할 IP를 지정해줘야 한다. 1. DB 접속 1. mysql 접속 mysql -u root -p 2. 비밀번호 입력 2. 현재 설정 확인 select Host,User,plugin,authentication_string FROM mysql.user; 3. 모든 IP 허용 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '패스워드'; 4. 재확인 5. DB 접속 툴로 연결 root@% 이렇게 되어 있어야 외부에서도 접근 가능함 Ref. https://java119.tistory.com/61 [MySQL || MariaDB] ..
썸네일 [ElasticSearch] org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root SonarQube가 실행될 때, 내부적으로 EleasticSearch를 사용하게 되는데, root 계정으로는 EleasticSearch를 실행할 수 없어서 발생한 에러이다. 환경 구성 Ubuntu : 18.04 SonarQube : 8.9.10.x 결론 : 해결 방법 sonarqube 실행할 새로운 사용자 생성 소유권 변경 권한 변경 sonarqube 디렉터리 경로 변경 기존 경로 : /root/app/sonarqube[버전] 변경 경로: /opt/sonarqube 에러 로그 확인 로그 생성되는 경로 /root/app/sonarqube-8.9.10.61524/logs 2023.03.20 07:02:17 INFO app[][o.s.a.SchedulerImpl] Waiting for Elasticsearch..
썸네일 [Server] 배포 후 서버에서 websocket connection to failed 에러 화면 로컬에서는 에러가 안 나는데 서버에 올리니까 이런 에러가 난다. websocket connection to failed npm run serve하면 해당 에러는 발생하지 않지만, api 서버를 찾을 수 없다. 나의 추측으로는 npm run serve 했을 때 development를 바라보는 것 같다. devServer: { //proxy: 'http://localhost:8081' // api 서버 포트 번호로 지정 proxy : process.env.VUE_API_URL || 'http://192.168.50.101:8080' }, 그래서. env.development를 다음과 같이 변경했다. 혹시 몰라 VUE_API_URL= 부분을 주석처리 했는데도 동일하게 에러 발생했다. 아니 근데 또 ..