SVN에 새로운 Repository 생성하기

CentOS v7을 기준으로 먼저 해당 OS에 연결하여..

svnadmin create ./documents

생성된 디렉토리로 이동하여, 다시 conf 서브 디렉토리로 이동

vi passwd

아래와 같이 계정과 암호를 입력하고 저장한다.

MyId = PASSWORD

아래처럼 입력하고

vi authz

아래와 같이 계정에 대한 권한을 지정한다.

[/]
MyID = rw

Repository에 대한 환경 설정을 위해서..

vi svnserve.conf

아래처럼 익명 로그인은 막고, 계정에 의한 암호를 입력받아 접근하도록 설정한다.

anon-access = none
auth-access = write
password-db = passwd

[Go] 슬라이스의 정렬(Slice Sort)

나는 중학교 시절, 마이컴이라는 컴퓨터 잡지에서 동일한 기능을 수행하는 코드를 Basic, Pascal, C, Fortran, Cobol이란 프로그래밍 언어를 통해 비교해서 보여주는 글을 본적이 있다. 수십년전의 기억이지만, 나는 그때 그 짧은 소스코드를 보고 느꼈던 설레임을 아직도 기억한다. (노래 가사가 맞구요;) Go라는 언어가 생생했던 그 설레임을 다시 생동감있게 되살려 준다.

Go에서 대표적인 자료 구조로써 배열과 매우 유사하지만, 그 길이를 동적으로 변경할 수 있다는 이점을 갖는 Slice라는 타입이 있다. 이 슬라이스를 통해 여러개의 데이터를 담아둘 수 있고, 담아둔 데이터들을 목적에 맞게 활용하는데.. 담아둔 여러개의 데이터를 어떤 기준에 맞게 정렬을 해야 할 때가 있다. 이때를 위한 예제 코드를 정리해 본다.

package main

import (
    "fmt"
    "sort"
)

type myDataType struct {
    name string
    age  int
}

func main() {
    mySlice := make([]myDataType, 0)
    mySlice = append(mySlice, myDataType{"김형준", 42})
    mySlice = append(mySlice, myDataType{"홍길동", 28})
    mySlice = append(mySlice, myDataType{"임꺽정", 38})

    fmt.Println(mySlice)

    sort.Slice(mySlice, func(i, j int) bool {
        return mySlice[i].age < mySlice[j].age
    })

    fmt.Println(mySlice)
}

결과는 아래와 같다.

C:/Go/bin/go.exe build [D:/__Working__/tstGo]
Success: process exited with code 0.
D:/__Working__/tstGo/tstGo.exe [D:/__Working__/tstGo]
[{김형준 42} {홍길동 28} {임꺽정 38}]
[{홍길동 28} {임꺽정 38} {김형준 42}]
Success: process exited with code 0.

복합 데이터의 묶음 타입인 구조체를 정의하고 구조체를 정의하는 필드값을 기준으로, 여기서는 나이를 의미하는 age를 통해 오름차순으로 정의하기 위해 익명함수를 사용했다. 코드는 짧지만 곰곰히 코드를 되짚어 볼만한 예제이다.

PostgreSQL의 Tablespace와 Database 정보 얻기

PostgreSQL의 콘솔 프로그램인 psql을 통해 Tablespace와 Database 정보를 얻기 위한 명령을 기록해 둡니다.

먼저 데이터베이스의 물리적인 저장 공간을 의미하는 테이블 스페이스의 정보를 얻는 명령은 아래와 같습니다.

\db+

다음은 테이블의 논리적 저장 공간을 의미하는 데이터베이스의 정보를 얻는 명령은 아래와 같습니다.

\l+

PostgreSQL의 데이터 백업 및 복원

# 백업

아래의 명령은 데이터베이스 명이 gis이며 테이블 중 ctprvn, sig, emd, road, li를 디렉토리 형식(–foramt=d)로 하여 gis_db_dump라는 파일로 백업하는 명령입니다.

pg_dump --dbname=gis --host=localhost --port=5432 --table=ctprvn --table=sig --table=emd --table=road --table=li --username=postgres --password --format=d --file=./gis_db_dump

참고로 –table 옵션을 지정하지 않으면 지정된 데이터베이스 전체 테이블을 백업합니다.

Windows에서 일반 text(sql 형식)으로 백업 받는 경우의 명령으로 관리자 권한으로 cmd를 실행한다. 아래의 명령에 의해 gis 데이터베이스의 모든 테이블의 데이터를 db.sql 파일이 생성되어 백업된다.

pg_dump --dbname=gis --username=postgres --file=d:/__Temp__/db.sql

# 복구

또한 아래는 위에서 백업한 내용을 gis_20181022 데이터 베이스로 복원시키는 명령입니다.

pg_restore --dbname=gis_20181022 --host=localhost --port=5432 --username=postgres --password --format=d ./gis_db_dump

리눅스에서 실행하기 위해서는 su – postgres 를 실행하여 권한을 얻을 필요가 있습니다. pg_dump 실행 시 –format을 지정하지 않으면 텍스트 형식으로 덤프 파일이 만들어지는데 이 덤프 파일은 pg_restore를 통해 복원하지 않고 psql을 통해 복원합니다. 즉, psql를 실행하여 데이터베이스에 연결하고(\c) 덤프 파일을 실행(\i) 합니다.