2020년 4월 30일 목요일

[PostgreSQL] 계층형 쿼리 구현(스타크래프트 테란 건물)

1. 테이블 생성

CREATE TABLE building (
b_no serial NOT NULL,
b_cd varchar(30) NOT NULL,
b_en_nm varchar(100) NOT NULL,
b_kr_nm varchar(100) NULL,
mineral int4 NULL,
gas int4 NULL,
lv int4 NULL,
p_no int4 NULL,
species bpchar(1) NULL,
"TYPE" varchar(30) NULL,
del_yn bpchar(1) NULL DEFAULT 'N'::bpchar,
use_yn bpchar(1) NULL DEFAULT 'Y'::bpchar,
CONSTRAINT pk_building PRIMARY KEY (b_no),
CONSTRAINT uq_building UNIQUE (b_cd)
);


테이블 구조



2. 데이터 INSERT
INSERT INTO building (b_no,b_cd,b_en_nm,b_kr_nm,mineral,gas,lv,p_no,species,"TYPE",del_yn,use_yn) VALUES 
(5,'REFINERY','Refinery','가스채집장',NULL,NULL,1,NULL,'T',NULL,'N','Y')
,(2,'BARRACKS','Barracks','배럭',NULL,NULL,2,1,'T',NULL,'N','Y')
,(1,'COMMAND_CENTER','Command Center','커맨드 센터',NULL,NULL,1,NULL,'T',NULL,'N','Y')
,(13,'SUPPLY_DEPOT','Supply Depot','밥집',NULL,NULL,1,NULL,'T',NULL,'N','Y')
,(14,'ENGINEERING_BAY','Enginerring Bay','엔베',NULL,NULL,2,1,'T',NULL,'N','Y')
,(8,'ACADEMY','Academy','아카데미',NULL,NULL,2,2,'T',NULL,'N','Y')
,(6,'FACTORY','Factory','팩토리',NULL,NULL,2,2,'T',NULL,'N','Y')
,(7,'BUNKER','Bunker','벙커',NULL,NULL,2,2,'T',NULL,'N','Y')
,(12,'COMSAT_SATION','Comsat Station',NULL,NULL,NULL,3,8,'T',NULL,'N','Y')
,(15,'MISSILE_TURRET','Missile Turret',NULL,NULL,NULL,3,14,'T',NULL,'N','Y')
;
INSERT INTO building (b_no,b_cd,b_en_nm,b_kr_nm,mineral,gas,lv,p_no,species,"TYPE",del_yn,use_yn) VALUES 
(16,'SCIENCE_FACILITY','Science Facility',NULL,NULL,NULL,4,10,'T',NULL,'N','Y')
,(17,'CONTROL_TOWER','Control Tower',NULL,NULL,NULL,4,10,'T',NULL,'N','Y')
,(18,'PHYSICS_LAB','Physics Lab',NULL,NULL,NULL,5,16,'T',NULL,'N','Y')
,(19,'COVERT_OPS','Covert Ops',NULL,NULL,NULL,5,16,'T',NULL,'N','Y')
,(20,'NUCLEAR_SILO','Nuclear Silo',NULL,NULL,NULL,6,19,'T',NULL,'N','Y')
,(10,'STAR_PORT','Starport','',NULL,NULL,3,6,'T',NULL,'N','Y')
,(9,'ARMORY','Armory',NULL,NULL,NULL,3,6,'T',NULL,'N','Y')
,(11,'MACHINE_SHOP','Machine Shop',NULL,NULL,NULL,3,6,'T',NULL,'N','Y')
;



테이블 데이터

3. 쿼리 작성 및 수행
with recursive TECH_TREE as (
select B_NO,
       B_CD,
       P_NO,
       LV
from building
-- where B_NO = 1     -- 최상위 트리 지정
union 
select B.B_NO,
   B.B_CD,
   B.P_NO,
   B.LV
from building b 
inner join TECH_TREE T
on T.B_NO = B.P_NO
)
select T.B_NO as CHILD_NO,
       T.B_CD as CHILD_CD,
       T.LV   as CHILD_LV,
       T.P_NO as PARENT_NO,
       B.B_CD as PARENT_CD
from TECH_TREE T
LEFT join building B
on B.B_NO = T.P_NO
order by T.LV, T.P_NO;

쿼리 결과

4. TODO
 - LV 값에 따라 화면에 들여쓰기,, 접기, 펼치기 등 구현



※ 참고 사이트
https://www.postgresqltutorial.com/postgresql-recursive-query/
https://liquipedia.net/starcraft/Technology_tree
https://kugancity.tistory.com/entry/postgresql-%EC%9D%98-%EA%B8%B0%EB%B3%B8%ED%82%A4-%EC%9E%90%EB%8F%99-%EC%A6%9D%EA%B0%80


2020년 4월 5일 일요일

[Vue] Spring Boot Runnable Jar 사용

0. 실행환경에 JDK 설치
 참조 : https://zetawiki.com/wiki/CentOS_JDK_%EC%84%A4%EC%B9%98

1. 실행가능한 JAR 생성
 이클립스 Gradle Tasks > 프로젝트 선택 > build > BootJar 더블클릭
   => build > libs 폴더에 JAR파일 생성됨
  참조 : https://gigas-blog.tistory.com/114

2. 서버에 올리기(WinSCP등 사용)

3. [bong@bong ~]$ nohup java -jar bvs-0.0.1-SNAPSHOT.jar &
 ※ 방화벽에서 포트 열어놔야 함
참조 : nohup - 터미널을 종료해도 꺼지지 않는 프로세스 실행
https://sosal.kr/905

4. 접속 : http://34.82.207.18:7070/vue/intro
   Moved to AWS Lightsail : http://13.125.58.118:7070/bvs/
  ※ VueMastery
      : https://www.vuemastery.com/courses/intro-to-vue-js/event-handling


2020년 4월 4일 토요일

[Firebird] 설치 & 접속

centoOS7 (GCP)
1. 설치



2. 접속 

3. 샘플DB 쿼리

4. firebird에 db파일 생성할 디렉토리 소유자 지정
[root@bong data]# chown -R firebird:firebird /var/lib/firebird/data

5. 3번 참조하여 DB, 사용자 생성
 => 주의 : db 생성시 입력하는 사용자가 해당 db 소유자가 됨

6. DBeaver 접속 설정


7. firebird 끄기
 가. ps -eaf
  나. kill -9로 guard부터 끄고, firebird 종료
  참조 : http://www.firebirdfaq.org/faq256/ 하단




2020년 3월 19일 목요일

[PostgreSQL] 설정 & 학습

◼️ 가이드
 => https://www.postgresqltutorial.com/

◼️ ENCODING 설정
 => https://blog.naver.com/PostView.nhn?blogId=mbk82&logNo=110122648507

◼️ JDBC CONNECTION
 => https://kentakang.com/118


◼️ CentOS7에 PostgreSql 설치
 => https://www.hostinger.com/tutorials/how-to-install-postgresql-on-centos-7/

◼️ DB, 사용자 생성
 => https://medium.com/coding-blocks/creating-user-database-and-adding-access-on-postgresql-8bfcd2f4a91e

◼️ 외부접속 허용
  o conf파일 설정 변경
 => http://justckh.blogspot.com/2013/10/postgresql-ip.html
   ※  GCP 방화벽 포트 열어줘야 함
   ※  설정파일 위치 :  /var/lib/pgsql/data

[Vue] learning

실습환경 구축

1. 이클립스 dynamic web project로 생성
2. vue dev tool 설치
 배움터 : https://www.vuemastery.com/courses/intro-to-vue-js/vue-instance/
 ※ ENG CC AVAILABLE


2020년 3월 14일 토요일

[Spring] Eclipse + Spring Boot + Gradle + JSP + War배포

0. Spring Boot Gradle 환경  구축
 참조 : https://cyh0214.tistory.com/entry/Spring-Boot-Gradle-with-Eclipse

1. Spring boot에서 Jar 배포시 jsp 사용불가
  => wart로 만들기

2. Oracle connection 세팅

3. Spring Boot와 JSP 연동

4. 빌드 & 실행
   가.  gradle 설치 및 환경변수 세팅
   나.  build.gralde 있는 폴더에서  > gradle build
   다.  java -jar 대상.war

5. centos7 on azure 에서 실행
  가. 빌드된 war파일을 azure에 올리기
  나. [iyabong@blvm ~]$ java -jar bs-0.0.1-SNAPSHOT.war
  다. 주소창에서 http://52.231.102.12:3333/hello 로 접근


TODO :
 ORACLE XE 연동

2020년 3월 8일 일요일

[Azure] CentOS 77에 JSP 서비스환경 구축

▣ 순서

 1) Azure 포털

 2) VM 인스턴스 만들기 (CentOS 7.7 64비트)

 3) putty로 SSH 접속

 4) JDK 설치

5) 톰캣 설치
    ※ 추가조치 :  톰캣 포트 (ex: 8080) 허용 설정

6) Oracle  18c XE 설치
    ※  wget으로 받기

7) 리스너 포트 열고 접속
8) 별도 사용자 생성 후 접속
 alter session set "_ORACLE_SCRIPT"=true;
 CREATE USER 'USER_NAME' IDENTIFIED BY 'PASSWORD'
 GRANT CONNECT, RESOURCE TO 'USER_NAME' 
 ※ 참조 : https://meaownworld.tistory.com/6