2018년 4월 5일 목요일

gradle proguard 예제

** proguard 사이트에서 proguard6.0.2.zip 다운로드 압축을 풀고

** build.gradle 파일 수정

buildscript {
  repositories {
    jcenter()
    flatDir dirs: 'E:/prog/proguard6.0.2/lib'
  }
  dependencies {
    classpath ':proguard:'
  }
}

(...)

task proguard(type: proguard.gradle.ProGuardTask, dependsOn: 'jar') {
  configuration 'proguard.txt'

  injars 'build/libs/java1.jar'
  outjars 'build/libs/lhbidc.jar'

  libraryjars 'dist/lib'
  libraryjars 'C:/Java/jdk1.7.0_80/jre/lib/rt.jar'
}

** 플젝톨더에 proguard.txt 파일을 아래 내용으로 생성

-keep public class java75.LhBidMain1 {
      public static void main(java.lang.String[]);
}

** cmd 열어서 플젝 폴더에서
> gradlew.bat proguard 하면 lhbidc.jar 파일 생성된다.

** 해설
  injars 'build/libs/java1.jar' <-- 오리지널 jar
  outjars 'build/libs/lhbidc.jar' <-- 암호화된 jar

  libraryjars 'dist/lib' <-- 나머지 필요한 jar 파일들 있는 폴더
  libraryjars 'C:/Java/jdk1.7.0_80/jre/lib/rt.jar' <-- 이것도 필요하네...

main 클래스 함수는 암호화 되면 안되므로 keep
-keep public class java75.LhBidMain1 {
      public static void main(java.lang.String[]);
}

lhbidc.jar 파일 내의 클래스 파일을 디컴파일해보면 각 변수명들이 바뀌어 있다.

2018년 3월 28일 수요일

ANSI LEFT JOIN

** 참고
http://ultteky.egloos.com/10411192

**
테이블 EMP(사원), DEPT(부서) 가 있다고 하자.
사원 중 DEPT_CD 가 A01, A02 인 사원 중에
부서와 연결하여 EMP.EMP_NM(사원명), DEPT.DEPT_NM(부서명)을 가져오고 싶다.
단 부서 중에 유효한(VALID_YN = 'Y') 것만 연결을 하고 싶다.
부서와 연결 안된 사원도 모두 가져오고 싶다.

이럴때 아래와 같이 사용해야 한다.

SELECT EMP.EMP_NM, DEPT.DEPT_NM
FROM EMP
     LEFT JOIN DEPT
     ON(1=1
      AND DEPT.DEPT_CD = EMP.DEPT_CD
      AND DEPT.VALID_YN = 'Y'
     )
WHERE 1=1
  AND EMP.DEPT_CD IN ('A01', 'A02')

간단히 말하면
중요 테이블을 EMP 라고 하고 안중요 테이블은 DEPT 이라 했을 때
(DEPT 와 연결 안된 EMP 도 가져와야 하므로)

중요 테이블의 FILTER 는 WHERE 에 걸고(ON 에 걸면 안됨)
->
WHERE 1=1
  AND EMP.DEPT_CD IN ('A01', 'A02')

안중요 테이블의 FILTER 는 ON 에 걸어야 된다.(WHERE 에 걸면 안됨)
->
AND DEPT.VALID_YN = 'Y'

당연히 JOIN 조건(연결 조건)은 ON 에 걸어야 한다.(WHERE 에 걸면 안됨)
->
AND DEPT.DEPT_CD = EMP.DEPT_CD

**
OUTER 조인 말고 INNER JOIN 은
연결조건, 필터조건 모두 ON 에 걸든 WHERE 에 걸든 상관없다.

**
테스트 해봐야지...

2018년 3월 12일 월요일

오라클 sqlplus

** SQLPLUS 실행

오라클 설치 머신에서 sqlplus 할 경우 아래 같이 하면 되네...
비밀번호 아무렇게나 넣어도 되네...

# sqlplus "sys/비밀번호아무거나@서비스이름 as sysdba"

또는

# sqlplus "sys@서비스이름 as sysdba"
하고 비밀번호 입력하라고 나오면 그냥 엔터 해도 되네...

비밀번호에 특수문자 있는 경우 비밀번호를 \"\" 로 감싸고
각 특수문자마다 역슬래시 붙여야 한다.

# sqlplus abcdef/\"abcdef\_plus123456\!1\"@ORCL

# sqlplus <계정>/<비밀번호>@<IP>/<SID>

** 파일 실행하기. @ 사용. " 사용

(utf-8 파일을 sqlplus 에서 실행할 경우 아래 넣고 sqlplus 실행)
CMD> SET NLS_LANG=.AL32UTF8

(NLS_LANG 확인)
SQL> @.[%NLS_LANG%]

(파일 실행)
SQL> @"실행할 파일 경로"
SQL> @"/xxx/yyy/execute.sql"
(파일명만 넣을 경우 현재 경로에 있는 파일 실행)

** 실행 결과 파일로 저장하기

SQL> SPOOL /xxx/yyy/result_001.txt
...sql 실행
SQL> SPOOL OFF

** 종료

SQL> exit

** SQL 문 실행하기

맨 끝에 ;(세미콜론) 넣고 엔터. DML 실행 후에는 commit; 실행
SQL>실행할 sql 문;

** 테이블 스키마 조회

SQL>desc 테이블명;

** 시스템 권한 부여.

PUBLIC 은 모든 사용자.
WITH ADMIN OPTION 은 부여받은 SYSTEM 권한을 다른 사용쟈에게 양도 가능.
GRANT 시스템권한 TO 사용자또는PUBLIC;
GRANT 시스템권한 TO 사용자또는PUBLIC WITH ADMIN OPTION;


** 시스템 권한 회수

REVOKE 시스템권한, ... FROM 사용자또는PUBLIC;

** 객체 권한 부여

GRANT 객체권한(컬럼명, 컬럼명, ...) ON 객체명 TO 사용자또는PUBLIC WITH ADMIN OPTION;

객체권한종류

  • SELECT
  • UPDATE
  • INSERT
  • ALTER
  • DELETE
  • EXECUTE
  • INDEX : CREATE INDEX ON 테이블... 실행할 수 있는 권한
  • REFERENCES : 외래 키 정의할 수 있는 권한

** 객체 권한 취소

REVOKE 객체권한 ON 객체명 FROM 사용자또는PUBLIC CASCADE CONSTRAINTS;
CASCADE CONSTRAINTS 는 REFERENCES 권한으로 정의된 제약 조건 함께 삭제해준다.

** 슬래시

SQLPLUS 에서 슬래시는 이전 문장을 재실행한다.

슬래시는 주로 PL/SQL 블럭 같은 embedded ; 된 명령문을 실행하기 위해 필요하다.
슬래시는 type, procedure, a package or a package body 정의할 때 사용한다.
BEGIN .. END 또는 CREATE OR REPLACE 사용할 수있는 곳에서 슬래시를 사용한다고 생각하면 된다.

오라클 datapump (expdp impdp) 사용법

http://dinggur.tistory.com/167

http://gyh214.tistory.com/110

http://hayleyfish.tistory.com/99

** 특징

  • 10g 이상
  • 시간 예측 가능
  • 고속
  • exp 호환 안됨
  • 일시 정지 가능
  • 명령어 expdp impdp
  • full 모드, shema 모드, tablespace 모드, table 모드
  • ddl 문장만 추출가능


** 사전작업

  • datapump 쓰기 위한 디렉토리 생성
    • (만들기)
      • create directory datapump1 as '/home/oracle';
    • (권한주기)
      • grant read, write on directory datapump1 to public(또는 특정스키마);
    • (디렉토리확인)
      • select * from dba_directories;
    • (작업확인)
      • select owner_name, job_name, operation, job_mode, state from dba_datapump_jobs ;

** expdp 예제

(export 하는 디비 서버에서 실행. by sysdba)
# expdp \"SYS/XXX@ORCL AS SYSDBA\" schemas=AAAA \
directory=DATA_PUMP_DIR \
dumpfile=dp_AAAA_20180313.dmp \
logfile=dp_AAAA_20180313.log


(export 하는 디비 서버에서 실행. export 하는 계정으로 ...)
SQL> grant read, write on directory DATA_PUMP_DIR to BBBB_PLUS;

# expdp \"BBBB/비밀번호@PGMIS\" schemas=BBBB \
directory=DATA_PUMP_DIR \
dumpfile=140_dp_BBBB_20180313.dmp \
logfile=140_dp_BBBB_20180313.log

-- schemas: 덤프 받을 계정
-- directory: 덤프 받을 디렉토리명. 실제 디렉토리 경로 아님. create directory 으로 생성함
-- dumpfile: directory 에 exp 받을 파일
-- logfile: directory 에 로그

** impdp 예제

(import 하는 디비에서 실행. by sysdba)
# impdp \"/ as sysdba\" schemas=AAAA \
directory=DATA_PUMP_DIR \
dumpfile=DP_AAAA_20180313.DMP logfile=140_DP_AAAA_20180313.DMP.log \
remap_tablespace=TSD_AAAA_01:TSD_AAAA_PLUS_01,TSI_CMIS_01:TSI_AAAA_PLUS_01 \
remap_schema=AAAA:AAAA_PLUS


(import 하는 디비에서 실행. by import 받을 계정)
SQL> grant read, write on directory DATA_PUMP_DIR to BBBB_PLUS;

# impdp BBBB_PLUS/비밀번호@ORCL schemas=BBBB \
directory=DATA_PUMP_DIR \
dumpfile=140_DP_BBBB_20180313.DMP logfile=140_DP_BBBB_20180313.DMP.log \
remap_tablespace=TSD_BBBB_01:TSD_BBBB_PLUS_01,TSI_BBBB_01:TSI_BBBB_PLUS_01 \
remap_schema=PGMIS:PGMIS_PLUS

-- schemas: 덤프 받을 계정
-- directory: dump 파일 디렉토리명. 실제 경로 아님.
-- dumpfile: directory 내에 있는 import 할 파일
-- logfile: import 로그
-- remap_tablespace: 테이블스페이스 변경. OLD_A:NEW_A,OLD_B:NEW_B 형식
-- remap_schema: 계정 변경. OLD_A:NEW_A,OLD_B:NEW_B 형식



2018년 3월 7일 수요일

리눅스 centos7 DNS 서버 구축

일단 centos7 을 dns 서버로 설치하였다.
dns 서버로 설치하였으므로 이미 bind* 패키지가 설치되어 있다.

** 가정
dns서버는 ns1.aaaa.com 111.111.111.111 이라하고
이 dns서버에서 처리할 도메인(zone)은 aaaa.com bbbb.co.kr 이라고 가정한다.

** bind 패키지 설치

** hostname 영구 설정
hostnamectl set-hostname ns1.aaaa.com

이 파일 수정하면 /etc/resolv.conf 가 바뀌더라.

hostname ns1.aaaa.com 이렇게만 해버리면 다음 부팅 때 원복된다 그랬나?


** /etc/named.conf 수정

listen-on port 53 { any; };
allow-query { any; };

자세한 내용은 인터넷에서

** /etc/named.rfc1912.zones 수정. 도메인(zone) 설정
이 파일은 /etc/named.conf 하단에 보면 include 설정이 되어 있다.
이 파일의 맨 마지막에 설정하고자 하는 zone 을 설정한다.

zone 파일(forward. 도메인으로 ip 찾아가기)만 설정하고
rev 파일(reverse. ip 로 도메인 찾아가기)은 설정할 필요가 없단다.

zone "aaaa.com" IN {
     type master;
     file "aaaa.com.zone";
     allow-update { none; };
};

zone "bbbb.co.kr" IN {
     type master;
     file "bbbb.co.kr.zone";
     allow-update { none; };
};


** vi /var/named/aaaa.com.zone
$TTL 값을 짧게 설정해서 당분간은 변경내용이 바로바로 등록되도록 한다.
$TTL 10M; default 1D
한국통신 dns 보관 기간. 너무 작으면 dns 서버 과부하 나므로 주의하란다.

https://www.linux.co.kr/home/lecture/?leccode=374

@       IN SOA  ns1.aaaa.com.        webmaster.mailserver1.com. (
                                        2018030801       ; serial
                                        10M     ; refresh
                                        1H      ; retry (default 1D)
                                        1W      ; expire
                                        3H )    ; minimum
                IN NS ns1.aaaa.com.
                IN MX 10 mail.mailserver1.com.
                IN A 222.222.222.111
        mail    IN A 222.222.222.111
        blog    IN A 222.222.222.111
        music   IN A 222.222.222.333
        www     IN A 222.222.222.333
        ftp     IN A 222.222.222.333

** vi /var/named/bbbb.co.kr.zone

@       IN SOA  ns1.aaaa.com.        webmaster.mailserver1.com. (
                                        2018030801       ; serial
                                        10M     ; refresh
                                        1H      ; retry (default 1D)
                                        1W      ; expire
                                        3H )    ; minimum
        IN NS ns1.aaaa.com.
        IN NS ns2.aaaa.com.
        IN MX 10 mail.mailserver1.com.
        IN A 333.333.333.111
ftp     IN A 444.444.444.333
aaa     IN A 444.444.444.333
bbb     IN A 444.444.444.333


** zone 파일 설명
소유자.그룹이 root.named 이어야 한다.
chown root.named /var/named/aaaa.com.zone
;(세미콜론은 주석)
@ 은 /etc/named.rfc1912.zones 파일에서 설정했던
zone "aaaa.com" IN {
 "aaaa.com" 요부분이다. 실제로는 aaaa.com. 이다. 마지막 .(점) 주의

예를 들어

** zone 파일 설명(SOA 파트)
@       IN SOA  ns1.aaaa.com.        webmaster.mailserver1.com. (
에서
@ 는 도메인명(zone) 이고 
SOA 는 이 zone 의 시작 소유권이며
ns1.aaaa.com. (마지막 점 주의)는 primary nameserver 를 적고
webmaster.mailserver1.com. 는 관리자 이메일이다. webmaster@mailserver1.com 이지만 @ 는 다른 용도로 쓰이므로 . 으로 데체

SOA 나머지 부분은 인터넷에서 찾아보세요

** zone 파일 설명(NS 파트)
        IN NS ns1.aaaa.com.
        IN NS ns2.aaaa.com.

이 zone(도메인, bbbb.co.kr)의 1차 2차 nameserver 설정

** zone 파일 설명(MX 파트)
        IN MX 10 mail.mailserver1.com.
인터넷에서 찾아보세요

** zone 파일 설명(A 파트)
        IN A 333.333.333.111 ;bbbb.co.kr 로 접속하면 333.333.333.111 로 가라
ftp     IN A 444.444.444.333 ;ftp.bbbb.co.kr 로 접속하면 444.444.444.333 로 가라
aaa     IN A 444.444.444.333 ;aaa.bbbb.co.kr 로 접속하면 444.444.444.333 로 가라
bbb     IN A 444.444.444.333 ;bbb.bbbb.co.kr 로 접속하면 444.444.444.333 로 가라



** zone 파일 자세한 설명

https://www.linux.co.kr/home/lecture/?leccode=374



** 파일 검증
named-checkconf /etc/named.conf
named-checkconf -z /etc/named.conf
named-checkzone aaa.bbbb.co.kr /var/named/bbbb.co.kr.zone

** named (dns 데몬) 재시작
service named restart
service named start
service named stop
service named status -l


** dns 서버는 53 포트를 사용하므로 아래와 같이 53 포트를 tcp udp 모두 열어주어야 한다.
# firewall-cmd --permanent --zone=public --add-port=53/tcp
# firewall-cmd --permanent --zone=public --add-port=53/udp
또는
# firewall-cmd --permanent --zone=public --add-service=dns


# firewall-cmd --reload

** 내 로컬 윈도우에서 테스트하기
제어판 network 설정 ip4 속성에서 dns 를 111.111.111.111(예제) 로 바꾸고
브라우저 새로 열어 http://aaa.bbbb.co.kr 접속해보기

nlslookup - 111.111.111.111


2018년 3월 5일 월요일

centos oracle 설치

http://cubenuri.tistory.com/190

http://puttico.tistory.com/121?category=601216






  • centos 7 설치
    • centos7 minimal iso 파일을 rufus 프로그램을 이용하여 usb 에 설치
    • usb 부트로 설치
    • 파티션 세부 설치

  • 필요 라이브러리 설치
    • yum -y install compat-libgcc-296 compat-libstdc++-29 compat-libstdc++-33 gcc gcc-c++ glibc-deve ...
  • 시스템 파라미터 수정
    • sudo vi /usr/lib/sysctl.d/00-system.conf
    • # Disable netfilter on bridges.
    • #net.bridge.bridge-nf-call-ip6tables = 0
    • #net.bridge.bridge-nf-call-iptables = 0
    • #net.bridge.bridge-nf-call-arptables = 0
    • vi /etc/sysctl.conf
  • 시스템 파라미터 적용
    • sysctl -p
  • 파일 핸들러 수 조정
    • vi /etc/security/limits.conf
  • 64bit 리눅스 설정
    • vi /etc/pam.d/login
  • GUI 라이브러리 설치
    • yum install tigervnc-server.x86_64
    • yum install pixman pixman-devel libXfont
    • (???) yum -y groupinstall "Server with GUI"
  • java 설치
    • (설치가능 확인)yum list java*jdk-devel
    • (설치)yum install java-1.8.0-openjdk-devel.x86_64
    • (설치 확인)rpm -qa java*jdk-devel
    • vi /etc/profile...export JAVA_HOME=...
  • dba 그룹 oracle 유저 생성

    • visudo -f /etc/sudoers
    • oracle ALL=(ALL:ALL) NOPASSWD:ALL
  • .bash_profile 설정
    • ...
    • export LANG=C

  • 기타
    • vi .../product/11.2.0/db_1/ctx/lib/ins_ctx.mk
      •     -static $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK) /usr/lib64/stdc.a
    • vi .../product/11.2.0/db_1/sysman/lib/ins_emagent.mk
      •     $(MK_EMAGENT_NMECTL) -lnnz11
  • xming putty, putty registry 변경하여 cp949
  • unzip
    • unzip ./linux.x64_11gR2_database_1of2.zip
    • unzip ./linux.x64_11gR2_database_2of2.zip
  • .../runInstaller
    • Install database software only
    • product languages 는 english 만 하자
    • installation location 은 product/11.2.0/db_1
    • (root 로 실행).../orainventory/orainstRoot.sh
    • (root 로 실행).../db_1/root.sh
  • (리스너 설정)
    • netca
  • (데이터베이스 설정)
    • dbca
  • (자동실행 설정)
    • vi /etc/oratab
    • ...

----------------------------------------------
(현재 locale 확인)

  • echo $LANG
(설정 가능한 locale 확인)
  • locale -a
(locale 변경)
  • vi /etc/sysconfig/i18n
  • export LANG="ko_KR.euckr"
(한국어 로케일 설정 서버에서 콘솔 작업시 한글 출력 깨지면
  • export LANG=C
(기타)
  • vi /usr/share/locale/locale.alias
  • 그러므로 export LANG="ko_KR" 해도 됨...

2018년 2월 27일 화요일

오라클 팁

** 오라클 버전 정보 확인

SELECT * FROM v$version WHERE banner LIKE 'Oracle%';

SELECT * FROM v$version;

SELECT * FROM PRODUCT_COMPONENT_VERSION;

워드 팁

** 워드 종료시 아래 메시지 나올때 조치 방법
"실행하려는 기능에 매크로 또는 매크로 언어 지원이 필요한 내용이 들어 있습니다."

제어판 > 프로그램 및 기능 > Microsoft Office Professional Plus 2007 > 오른 마우스 클릭 > 변경 선택 > 설치 옵션 > Office 공유 기능 > Visual Basic for Applications  내 컴퓨터에서 실행 선택하고 설치

하면 된다.

2018년 2월 22일 목요일

리눅스 명령어 모음



** 계정 생성
(우분투, SUSE의 경우, -m 홈디렉토리 생성, -s /bin/bash 쉘 환경설정)

  • useradd 계정명 -m -s /bin/bash

(CentOS 등 레드햇 계열)

  • useradd 계정명

(그룹 지정하여 만들기)
  • useradd 계정명 -G 그룹명
** 비밀번호 변경

  • echo '패스워드' | passwd --stdin 계정명
** 그룹 지정
  • usermod -G 그룹명 계정명
** 그룹 보기
  • groups
  • cat /etc/group
** 파일, 디렉토리 소유권 변경(change owner)
-R 옵션은 하위 포함하여 변경

  • chown 사용자명 대상
  • chown :그룹 대상
  • chown 사용자명:그룹 대상
  • chown -R 사용자명:그룹 대상

** 파일, 디렉토리 권한 변경(change mod)

  • chmod a+x 대상
  • chmod +x 대상
  • chmod a-wx 대상
  • chmod -wx 대상
  • chmod u+rw,g-r 대상
  • chmod ug=r 대상
  • chmod 755 대상

** 사용자 변환(- 주면 환경변수까지 적용, switch user)
  • su 사용자명
  • su - 사용자명
  • whoami
  • logout
  • exit
** 현재 계정에서 root 권한으로 명령어 실행(sudo, superuser do)
/etc/sudoers 파일에 지정된 사용자만 sudo 명령 사용 할 수 있다.
visudo -f /etc/sudoers 로 편집해야 한다.
아래와 같이 계정이나 그룹 추가하면 해당 계정, 그룹에서 sudo 명령 사용가능

user01 ALL=(ALL:ALL) NOPASSWD:ALL
%group01 ALL=(ALL:ALL) ALL

(비번 없이 사용하기)
사용자명 ALL=NOPASSWD: ALL
(비번 없이 특정명령만 사용하기)
사용자명 ALL=NOPASSWD: 명령어1, 명령어2

** sudo, su, su - 차이점
sudo 현재 계정에서 다른 계정의 권한만 빌린다.
sudo -i 다른 계정으로 로그인
su 다른 계정으로 전환
su - 다른 계정으로 전환 + ㄱ그 계정의 환경변수 적용

(su를 sudo처럼 사용)
su -c 'command'

(sudo를 su처럼 사용)
sudo -i


** 리눅스 버전 확인
  • grep . /etc/*-release
  • cat /etc/*-release | uniq
(레드헷 계열)
  • rpm -qa *-release
** 환경변수 설정
vi ~/.bash_profile
export
export 변수명=변수값
echo $변수명
export 변수명=$변수명:변수값

** 디렉토리 용량 확인(du)


** 기타

nmap localhost
netstat -tnlp
find / -name '검색어'
ps -ef | grep java
hostname
cat /etc/hosts
ifconfig
ping localhost
curl 'http://xxx.xxx.xxx.xxx'
cd ~
vi ~/.bash_profile
echo $HOME
export(설정 출력할 수 있다.)
1024 하위 포트는 root 이외 권한으로 사용불가

** cpu 사용율
mpstat | tail -1 | awk '{print 100-$11}'

** 디스크 용량
df -h
df -P

** 메모리 사용율
sar -r 1
free
free -m
free -g
top -n1 | grep Mem:
cat /proc/meminfo | grep Mem

** service systemctl 비교

https://unix.stackexchange.com/questions/170068/service-vs-systemctl-scripts-which-to-use





2018년 2월 20일 화요일

SQL 팁 - ALL

** CJ_IF0050 테이블에서 NTCENO 별로 UNTYCNTRCTNO 이 가장 작은 건 한건씩 조회하는 쿼리. ALL 사용.

SELECT A.*
  FROM CJ_IF0050 A
 WHERE 1=1
   AND A.NTCENO IS NOT NULL
   AND A.UNTYCNTRCTNO <=
       ALL(SELECT AA.UNTYCNTRCTNO
             FROM CJ_IF0050 AA
            WHERE 1=1
              AND AA.NTCENO = A.NTCENO)

2018년 2월 12일 월요일

springboot web.xml

https://stackoverflow.com/questions/18875356/using-tomcat-basic-auth-with-new-webapplicationinitializer

web.xml 의 login-config 같은 것들은 springboot 의 ServletContainerInitializer, or ServletContext 로 제어하기 힘들다.

web.xml 을 metadata-complete="false" 로 하면(어딘선가 default 가 false 라고 본거 같은데) springboot 에서 web.xml 설정을 갖다 쓴다고 하는데 정말일까? 테스트 해봐야겠다.

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    metadata-complete="false" version="3.0">

2018년 2월 6일 화요일

jboss eap 주의사항

** springboot 에서 아래 처럼해야 한다.
  servlet-path: /*

** ews permission error 나면 httpd.conf 파일의 User 가 내 계정으로 되있는지 확인
** ews eap mod_jk 연동 안되면 standalone.xml 의 <connector ajp 되있는지 확인

eclipse error

**
CHKJ3000E: WAR Validation Failed: java.lang.NullPointerException
web.xml 에서 <error-page> 삭제하고 Project clean 하면 되는데...
그냥 이클립스 Validation > Web Validator auto uncheck 하면 되더라
또는 project 속성 project facets 에서 Dynamic Web Module 을 3.0 으로 하면 됨

2018년 2월 1일 목요일

java zip 압축

import net.lingala.zip4j.core.ZipFile;
import net.lingala.zip4j.model.ZipParameters;
import net.lingala.zip4j.util.Zip4jConstants;

...

ZipFile zipFile1 = new ZipFile(tempZipFile);
ZipParameters zp1 = new ZipParameters();
zp1.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
zp1.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
zp1.setSourceExternalStream(true);// 이걸 해줘야 setFileNameInZip 이게 먹는다.

for(...){
  zp1.setFileNameInZip((String)fileVO.ATCH_FILE_NM);
  zipFile1.addFile(file1, zp1);
}

...

mssql sqlserver 2012 다운로드 하기

https://www.microsoft.com/ko-kr/download/details.aspx?id=29062


링크에서 [자세한 내용] 을 클릭하면 아래 내용이 있다.

  • LocalDB(MSI 설치 관리자)
    • Express 제품군의 새로운 버전인 LocalDB는 모든 프로그래밍 기능을 포함하지만 사용자 모드에서 실행되며 구성이 필요 없는 빠른 설치가 가능하고 필수 구성 요소가 적은 새로운 경량 버전의 Express입니다. 이 제품을 사용하면 코드를 통해 쉽게 데이터베이스를 만들고 데이터베이스에 대한 작업을 수행할 수 있습니다. 이 제품은 Visual Studio와 같은 데이터베이스 개발 도구 및 응용 프로그램과 함께 제공되거나 로컬 데이터베이스가 필요한 응용 프로그램에 포함될 수 있습니다.
  • Express(데이터베이스 엔진만 포함)
    • 핵심 Express 데이터베이스 서버입니다. 원격 연결을 수락해야 하거나 원격으로 관리해야 하는 경우 이를 사용하십시오.
  • Express with Tools(LocalDB 포함)에는 데이터베이스 엔진과 SQL Server Management Studio Express가 포함되어 있습니다.
    • 이 패키지에는 SQL Server를 데이터베이스 서버로 설치 및 구성하는 데 필요한 모든 항목이 포함되어 있습니다. 위의 필요에 따라 LocalDB 또는 Express를 선택하십시오.
  • SQL Server Management Studio Express(Tools only)
    • 여기에는 데이터베이스가 포함되어 있지 않으며 LocalDB, SQL Express, SQL Azure 등 SQL Server 인스턴스를 관리하는 도구만 포함되어 있습니다. 이미 데이터베이스가 있고 관리 도구만 필요한 경우 이를 사용하십시오. 이 패키지에는 LocalDB가 포함되어 있습니다.
  • Express with Advanced Services(데이터베이스 엔진, Express Tools, Reporting Services및 전체 텍스트 검색 기능 포함)
    • 이 패키지에는 SQL Express의 모든 구성 요소가 포함되어 있습니다. 이 패키지는 전체 텍스트 검색 기능과 Reporting Services도 포함하고 있으므로 “with Tools”보다 다운로드 크기가 큽니다.

jquery deferred 지연

 var dfd = $.Deferred(); function randomPromise(){ console.log('p', arguments); var dfd = $.Deferred(); var sec1 = Math.trunc(Math.random() * 10); setTimeout(function(){ console.log(sec1); if(sec1 % 4 == 0){ dfd.reject(sec1); }else{ dfd.resolve(sec1); } }, sec1 * 1000); return dfd.promise(); } dfd.resolve() .promise() .then(randomPromise) .then(randomPromise) .then(randomPromise) .then(randomPromise) .done(function(){ console.log('done', arguments); }) .fail(function(){ console.log('fail', arguments); }) .always(function(){ console.log('always', arguments); }) ;

2018년 1월 31일 수요일

javascript array push unshift pop shift slice

javascript 배열

var array1 = [0, 1, 2, 3, 4, 5];
array1.push(1111);// 마지막에 추가
array1.unshift(2222);// 처음에 추가
var first1 = array1.pop();// 마지막 원소 제거
var last1 = array1.shift();// 처음 원소 제거

...

// slice 는 원본 배열을 훼손하지 않는다.
array1.slice(2);// index 2 원소부터 마지막까지의 sublist 반환
array1.slice(2, 5);// index 2 원소부터 index 4(5 - 1) 원소까지의 sublist 반환

array1.slice(2, 5); 는 아래와 같이 바꿔 쓸 수 있다.

Array.prototype.slice.apply(array1, [2, 5]);
Array.prototype.slice.call(array1, 2, 5);

===== 테스트 코드 =====
var array1 = [0, 1, 2, 3, 4, 5];
console.log(array1);//(6) [0, 1, 2, 3, 4, 5]
array1.unshift(1111);// 처음에 추가
console.log(array1);//(7) [1111, 0, 1, 2, 3, 4, 5]
array1.push(2222);// 마지막에 추가
console.log(array1);//(8) [1111, 0, 1, 2, 3, 4, 5, 2222]
console.log('pop', array1.pop());//pop 2222
console.log(array1);//(7) [1111, 0, 1, 2, 3, 4, 5]// 마지막 원소가 제거되었다.
console.log('shift', array1.shift());//shift 1111
console.log(array1);//(6) [0, 1, 2, 3, 4, 5]// 처음 원소가 제거되었다.
console.log(array1.slice(3));//(3) [3, 4, 5]
console.log(array1.slice(2, 5));//(3) [2, 3, 4]
console.log(array1);//(6) [0, 1, 2, 3, 4, 5]
console.log(Array.prototype.slice.apply(array1, [2, 5]));//(6) [0, 1, 2, 3, 4, 5]
console.log(Array.prototype.slice.call(array1, 2, 5));//(6) [0, 1, 2, 3, 4, 5]

apply 사용법
  • 함수객체.apply(this대체객체, arguments배열);
call 사용법
  • 함수객체.call(this대체객체, arg0, arg1, ..., argN);
this대체객체란 함수객체안에서 사용중인 this 를 대체한다는 말이다.

종심제 종평제 입찰내역서 지원 사이트

www.idea-platform.net





(주)아이디어정보기술 에서는


조달청
한국가스공사
한국도로공사
한국산업단지공단
한국수자원공사
서울주택도시공사(SH공사)
한국철도시설공단
국방과학연구원

공공기관 및 공사공단의 종합심사낙찰제, 적격심사의 입찰내역서를 제공하고 있다.

서비스 상품

  • 종심제 입찰내역서 파일 생성
  • 종평제 입찰내역서 파일 생성
  • 적격 입찰내역서 파일 생성(2만원)
  • 낙찰정보 조회(기업회원가입시 무료)


primavera eppm 17.12 설치(프리마베라 eppm)

java 설치
  • JAVA_HOME=C:\Java\jdk1.8.0_152
  • Path 에도 등록
weblogic 12.2.1.3 다운로드.
  • oracle.com.
  • middleware download
  • fmw_12.2.1.3.0_wls_Disk1_1of1.zip
weblogic 12.2.1.3 설치.
  • fmw_12.2.1.3.0_wls_Disk1_1of1.zip 압축 풀고
  • 압축 푼 디렉토리에서 cmd 관리자권한으로 실행. 아래 명령어 실행
  • java -jar fmw_12.2.1.3.0_wls.jar
  • GUI 창 뜨고 진행
  • oracle home 을 D:/wls12 로 지정
eppm 8.3 database 설치(업그레이드 테스트용)
  • 기존 테스트용 PMDB 삭제
  • SQL Server Management Studio 실행. sa 로그인
  • 데이터베이스/PMDB 삭제
  • 보안/로그인/privuser pubuser pxrptuser 삭제
  • D:\P6EPPM-83130\database\dbsetup.bat 실행
  • (database\migrate.bat 로 디비 이관도 할 수 있다)
  • GUI 떠서 Install new ... 선택. SQL Server 선택
eppm 17.12 설치

  • https://edelivery.oracle.com 에서 로그인하여 다운로드 가능
  • ...\Primavera P6 Enterprise Project Portfolio Management 17.12(x64)\V974520-01\P6_R1712\Disk1\install
  • setup.exe 실행
  • GUI 실행
  • (나중에 D:\eppm1712\p6\eppmconfig.cmd 로도 eppm weblogic 연결가능)
  • eppm weblogic 시작 및 종료는
  • eppm1712/scripts/start_Primavera.bat
  • eppm1712/scripts/stop_Primavera.bat
  • sqlsever 인 경우 filestream 을 enable 해야함
    • SQL Server Configuration Manager > SQL Server Services > Properties > Enable FILESTREAM for Transact-SQL access
    • EXEC sp_configure filestream_access_level, 2
      RECONFIGURE
==================================================

웹로직 다운로드


웹로직 설치







설치위치 지정












사실 이단계에서 도메인 생성은 필요가 없다.
eppm 설치후 weblogic 연동할 때 도메인을 새로 생성할 수 있다.































eppm 8.3 database 생성(8.3 에서 17 로 업그레이드 테스트 할려고)






















eppm 설치




설치 위치 지정















eppm db 웹로직 설정





























































인기글

추천 게시물

윈도우에서 오라클 11g 삭제하기

* 참조 및 출처 https://wickedmagic.tistory.com/407 https://wookoa.tistory.com/304 * 윈도우에서 오라클 11g 삭제하기 > 서비스에서 오라클 관련 서비스 모두 종료 > Un...