본문 바로가기

Programming Practice

log file backup log file을 server 내에 보관할 때 생성된 지 일정시간이 지난 log file은 원본 상태로 가지고 잇을 필요가 없다. 왜냐하면, 장애 혹은 장애 징후가 있을 때만 열어보기 때문이다.따라서, 저장 공간의 효율적 사용을 위해서 평소에는 gzip으로 압축해서 보관한다. 방식은 크게 2가지이다. 1. 생성일시 기준 특정 범위(ex. 생성일자)의 log 파일들 → (개별로) gzip1) shell 코드#!/bin/sh for I in `find log파일위치 -type f -name "*log*"` do /bin/gzip -f $I done 2) 장단점 장점 1) 개별 파일 개별 작업을 통해 gzip으로 압축하기 때문에 CPU 부하가 적다.2) 생성일시가 변경되지 않는다. (나중에 gzip으로 압축된.. 더보기
조건문 1. 조건문1) if 로 시작해서 fi로 끝남2) java에서 else if 는 shell 에서 elif 로 설정3) 기본적인 조건과 그에 따른 명령은 아래와 같이 설정함if [ 조건1 ]; then명령1;elif [ 조건2 ]; then명령2;else명령3;fi ex) #!/bin/sh a=0; #조건의 첫번째 대괄호와 $a 사이는 하나의 space가 들어가야 함 if [ $a -eq 1 ]; then echo 'if'; elif [ $a -gt 1 ]; then echo 'elif'; else echo 'else'; fi #!/bin/sh a="c"; #문자열의 비교는 등호는 java 와 달리 = (등호 1개)이며, 같지 않음은 != 이다. if [ $a = "a" ]; then echo 'if'; .. 더보기
변수 기본 1. 변수 선언과 사용1) 변수 선언 : 변수=값;2) 사용 : $변수 혹은 ${변수}ex) #!/bin/sh a=1; echo $a; echo ${a}; 2. single quotes vs. double quotessingle quotes : 안에 있는 내용을 그대로 표시double quotes : 안에 있는 내용을 계산해서 표시ex) #!/bin/sh a=1; echo '$a'; echo "$a"; 3. 특정 명령어의 결과를 특정 변수에 담을 때변수=`명령어`* single quotes가 아님ex) CLOSE_CNT=`egrep "($ONE_MINUTE_AGO|$TWO_MINUTE_AGO|$THREE_MINUTE_AGO|$FOUR_MINUTE_AGO|$FIVE_MINUTE_AGO)" ioExcepti.. 더보기
개념 1. Foreign key (FK)1) 정의A FOREIGN KEY in 1 table point to a PRIMARY/UNIQUE key in another tableex) EMPLOYEE / DEPARTMENT table 이 있고, DEPARTMENT table 의 Primary Key(PK) 가 department_id 일 때, EMPLOYEE table 의 department_id 는 foreign key가 된다.EMPLOYEE table은 DEPARTMENT table을 참조(reference)한다고 한다. DEPARTMENT table에 데이터가 먼저 들어가야 하므로, DEPARTMENT table은 부모 테이블, EMPLOYEE table은 자식 테이블이 된다. DEPARTMENT tabl.. 더보기
prototype 1. instance 생성과 prototype1) 객체 인스턴스ㄱ. 객체 청사진으로서의 prototype: 객체에서는 프로토타입 객체의 변수와 메서드를 사용할 수 있다.ㄴ. 생성자 함수의 프로퍼티가 프로토타입의 프로퍼티에 우선한다.ㄷ. 생성자 함수의 prototype 프로퍼티는 prototype 객체를 참조 → 실시간 update 가능 (다른 언어에서는 찾기 어려움)2) 상속과 prototype chain상속을 하려면 override가 가능해야 한다. SubClass.prototype = new SuperClass(); SubClass 의 prototype 객체를 SuperClass 객체로 설정한다는 의미. SubClass 는 SuperClass의 생성자 함수와 prototype에 지정된 property.. 더보기
즉시실행함수(Immediate function) 1. 기본1) 형식(function() {statement -1;statement -2;statement -3;})();2) 작동 원리 (3 step) 함수 인스턴스 생성 → 함수 실행 → 함수 폐기3) closure closure 내 외부 변수와 함수에 접근 가능 2. 사용1) 임시 유효 범위와 private 변수- 기본적으로 변수의 유효범위는 변수가 속한 closure- 즉시실행함수를 사용할 경우, 변수의 유효 범위를 블록이나 하위 블록 수준으로 지정 가능 더보기
find 한 결과를 배열에 담아서 사용하기 1) find 한 결과를 tmpfile 에 담기 find ~~ > tmpfile2) tmpfile을 읽어서 배열에 담기FIND_RESULT=()while IFS=read;do FIND_RESULT+=("$REPLY")done < tmpfile3) tmpfile 삭제 rm -f tmpfile4) 배열에 대해 처리 FIND_RESULT_LENGTH=${#FIND_RESULT[@]} for ((i=0; i 더보기
Socket File transfer Client 에서 Server로 파일을 전송한다. 파일 이외 다른 데이터는 전송하지 않기 때문에 DataInputStream/DataOutputStream 이 아닌 기본적인 InputStream/OutputStream을 사용한다. 1. client 소스 import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import java.net.Socket; public class ClientExample { public static void main(String[] args) { OutputStream os = null; FileInputStream fis = null; .. 더보기
DataInputStream/DataOutputStream 1. FillterStream: data 변환 - 암축, 암호화, 다른 format으로 변환: DataInputStream/DataOutputStream 은 FilterStream 으로 다른 format으로 변환한다. DataInputStream inputstream → byte[] → Java primitive data type inputstream → 기존 byte[] 를 자르기 DataOutputStream Java primitive data type → byte[] → outputstream 기존 byte[] 를 자르기 → outputstream 2. DataInputStream1) 생성자 DataInputStream(InputStream in)Java primitive data type 을 re.. 더보기
특정 로그 파일에서 체크 시점 이전 5분 동안 특정 문구 개수 조회 1. 로직 1) 체크할 시간 조회해서 변수에 설정 2) 조회할 로그 파일명 설정 3) 로그 파일에서 체크 시간 이전 5분 동안의 특정 문구 개수 세기 4) 특정 문구 개수가 특정 개수를 넘어서는 경우에 특정 문구 개수 표시 2. 예시 shell #!/bin/sh LOG_ROOT="/engn001/TCPProgram/log/" #(로그 기록 형식) 로그 파일에 로그를 기록할 때, yyyy-MM-dd HH:mm 가 붙는다. #체크할 시간 조회해서 변수에 설정 CURRENT_HOUR=$(perl -e 'use POSIX;print strftime "%H", localtime;') CURRENT_MIN=$(perl -e 'use POSIX;print strftime "%M", localtime;') ONE_MI.. 더보기