PostgreSQL의 문자열 암호화

PostgreSQL 자체 기능 만으로 어떤 문자열을 암호화해서 저장하거나 암호화된 데이터를 다시 원래의 문자열로 복호화 하기 위해서는 pgcrypto라는 확장 기능을 활용하면 됩니다.

먼저 PostgreSQL에서 다음 명령을 통해 확장 기능을 설치할 수 있습니다. 저 같은 경우 PostgreSQL v10을 사용하였습니다.

CREATE EXTENSION pgcrypto;

이제 어떤 문자열을 암호화하는 방법은 다음과 같습니다.

SELECT 
    encode(
        encrypt(
            convert_to('GIS 개발자, 김형준', 'utf8'),
                'encoding_key',
                'aes'
            ),
        'hex'
    );

위의 쿼리는 “GIS 개발자, 김형준” 문자열을 “encoding_key”를 암호화 키로 사용하여 AES 알고리즘으로 암호화하는 것입니다. 결과는 다음과 같습니다.

이제 다시 암호화된 데이터를 원래의 문자열로 복호화 하는 방법은 아래와 같습니다.

SELECT 
    convert_from(
        decrypt(
            decode('12773b7766896ab35aed6b0b5be174d3b4c57c4bde2fc88a982b12946b500943','hex'),
            'decoding_key',
            'aes'
        ),
        'utf8'
    );

결과는 다음과 같습니다.

Linux 활용 Command 정리

이 글은 리눅스 계열의 시스템 관리를 위해 사용한 명령어를 추후에 다시 빠르게 참조하기 위한 목적으로 정리한 글입니다.

# 파일명을 가진 파일 찾기

find / -name "java"

# 현재 디렉토리의 파일 용량 확인하기

du -ah

# ssh 접속 [MacOS]

ssh root@127.0.0.1 -p 1234

# 파일의 내용 중 특정 단어 출현 회수 세기 [CentOS]

cat filename.log | grep 'SUCCESS' | wc -w

# 프로세스 이름에 특정 문자열을 포함하는 프로세스 출력하기 [CentOS]

ps -ef | grep 'java'

# 파일의 마지막 구성 내용 표시하기(변경시 업데이트) [CentOS]

 tail 2019-11-06.log -f

# firewalld 서비스 시작 [CentOS]

sudo systemctl start firewalld

# firewalld 서비스 상태 확인 [CentOS]

sudo firewall-cmd --state

# 부팅 시 firewalld 서비스 자동 실행 설정 [CentOS]

sudo systemctl enable firewalld

# 특정 포트(예: 8629)에 대한 방화벽 열기 [CentOS]

firewall-cmd --zone=public --permanent --add-port=8629/tcp
firewall-cmd --reload

# 방화벽에 대해 열린 포트(예: 8629)를 제거 [CentOS]

firewall-cmd --permanent --zone=public --remove-port=8629/tcp
firewall-cmd --reload

# 방화벽에 대해 열린 포트 확인 [CentOS]

firewall-cmd --zone=public --list-all

# 포트를 사용하는 프로세스 확인 [CentOS]

netstat -tulpn | grep

# 계정 ID 확인 [CentOS]

cut -f1 -d: /etc/passwd

# 서버에서 다른 호스트로 연결 가능한지 여부 확인

nc -z smtp.gmail.com 465

openssl s_client -connect smtp.gmail.com:465

[THREE.JS-EX] Shader





이 글의 예제 코드는 THREE.JS 공식 사이트의 EXAMPLES에서 제공되는 코드를 이해하고 제 나름대로의 코드로 재구성한 것입니다.

Javascript의 디스트럭처링(Destructuring)

자바스크립트의 디스트럭처링은 객체와 배열에 적용이 가능한데요. 디스트럭처링은 객체와 배열을 구성하는 개별 요소를 독립적인 상수나 변수에 저장하는 방법입니다.

먼저 객체에 대한 디스트럭처링 예제는 다음과 같습니다.

const Dip2K = {
    name: "김형준",
    company: {
        name: "GEOSERVICE",
        contacts: {
            address: "에이펙센터 208",
            telephone: "02-525-0421"
        }
    }
}

const { name } = Dip2K
console.log(name) // 김형준

const { address, telephone } = Dip2K.company.contacts
console.log(address, telephone) // 에이펙센터 208 02-525-0421

const { name: companyName} = Dip2K.company
console.log(companyName) // GEOSERVICE

const { alias = "닌자" } = Dip2K.company
console.log(alias) // 닌자

다음은 배열에 대한 디스트럭처링 예제입니다.

const Dip2K = [ "김형준", "지오서비스", "hjkim@geoservice.co.kr" ]

const [name, company, email] = Dip2K
//console.log(name, company, email) // 김형준 지오서비스 hjkim@geoservice.co.kr

const [name2, company2 ] = Dip2K
//console.log(name2, company2) // 김형준 지오서비스

const [name3, ...others] = Dip2K 
console.log(name3, others) // 김형준 (2) ['지오서비스', 'hjkim@geoservice.co.kr']

[THREE.JS-EX] 재질(Material)







이 글의 예제 코드는 THREE.JS 공식 사이트의 EXAMPLES에서 제공되는 코드를 이해하고 제 나름대로의 코드로 재구성한 것입니다.