2017의 게시물 표시

Ubuntu 에 tightVNC Server 설치

이미지
일반적으로 Ubuntu Server 는 CUI 를 사용해서 관리를 한다.
(반드시 그래야 하는건 아니지만)

일반적으로 Ubuntu Desktop 은 GUI 를 사용해서 관리를 한다.
(반드시 그래야 하는건 아니지만)

Ubuntu 에 원격 컴퓨터에 설치되어 있는 경우,
ssh 를 통해 CUI 로 control 하면 된다.

문제는 원격으로 어떻게 GUI 를 control 하냐는 것이다.

Windows 에는 "윈도우 원격데스크탑" 이라는 control 프로그램이 있어서,
아주 편리하게 GUI 를 control 할 수 있다.

Ubuntu 에서는 VNC 라는 원격 control 프로그램이 있어서, 이것을 사용하면 된다.

※ 물론 예전에 포스팅한 것처럼 vcxsrv 를 사용하는 방법도 있다.
http://kimchki.blogspot.kr/2017/11/x-x-window-system-vcxsrv-windows-x.html

윈도우에서 리눅스로 접속을 할 것이므로,
일단 윈도우 버전을 다운로드 하고 설치 하자.
https://www.tightvnc.com


리눅스에서도 다운로드 하고 설치 하자
% sudo apt-get install tightvncserver

패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
제안하는 패키지:
  tightvnc-java
다음 새 패키지를 설치할 것입니다:
  tightvncserver
0개 업그레이드, 1개 새로 설치, 0개 제거 및 0개 업그레이드 안 함.
633 k바이트 아카이브를 받아야 합니다.
이 작업 후 1,795 k바이트의 디스크 공간을 더 사용하게 됩니다.
받기:1 http://kr.archive.ubuntu.com/ubuntu xenial/universe amd64 tightvncserver amd64 1.3.10-0ubuntu3 [633 kB]
내려받기 633 k바이트, 소요시간 2초 (255 k바이트/초)
Selecting previously unse…

PostgreSQL 소스에서 EXEC_BACKEND 의 의미

PostgreSQL 소스를 분석하다 보면,
아래와 같이 분기 되어 있는 부분들의 꽤 존재한다.

#ifdef EXEC_BACKEND
.....
#endif
이 부분은 windows os 에 port 할때 필요한 부분으로,
만약 windows os 일 경우~ 라는 의미이다.

그러므로, windows os 이외일 경우에는 신경쓰지 않아도 된다.
configure 에 정의되어 있다.

if test "$PORTNAME" = "win32"; then
  CPPFLAGS="$CPPFLAGS -I$srcdir/src/include/port/win32 -DEXEC_BACKEND" fi

PostgreSQL 여러개를 하나의 컴퓨터(machine) 에서 사용하기

종종 하나의 machine 에서 여러개의 PostgreSQL 을 사용해야 할 때가 있다.

machine 을 여러 사용자가 사용할 수도 있고,
혹은~
개인적으로 여러개의 PostgreSQL 을 띄우고 이것저것 작업을 할 수도 있기 때문이다.

아래 2가지 조건만 만족하면 N개의 PostgreSQL 을 실행 시킬 수 있다.
1. data 가 달라야 한다.
2. port 가 달라야 한다.

data 가 달라야 한다는 말은,
"pg_ctl start -D" 옵션에 넣는 경로가 달라야 한다는 말이다.
당연히, 하나의 data 에 여러개의 process 가 작업을 하면 안될테니 말이다.

port 가 달라야 한다는 말은,
tcp listen port 가 달라야 한다는 말이다.
당연히, 하나의 port 를 여러개의 process 가 listen 할 수는 없을테니 말이다.

기존에 있던 data 말고, 새로운 data 를 생성한다.
% initdb -D [NEW_DIRECTORY]

새로운 data 로 이동한다.
% cd [NEW_DIRECTORY]

port 를 변경한다.
% vi postgresql.conf

앞에 주석 # 을 삭제한 후, 5432 말고 다른 port 를 입력한다.
#port = 5432

서버를 시작한다.
% pg_ctl start -D [NEW_DIRECTORY] -l logfile

새로운 서버로 접속한다.
% psql -p [NEW_PORT]

위와 같은 방식을 사용하면, N개의 PostgreSQL 을 실행 시킬 수 있다.





참고
https://www.postgresql.org/docs/9.6/static/app-postgres.html

PostgreSQL 환경 변수

PostgreSQL 을 사용하다 보면, 매번 입력해야 하는 매개변수가 있다.
그것은 바로 database directory path 이다.

처음 database 를 생성할때,

% initdb -D postgresql/data

database 를 실행할때,

% pg_ctl start -D postgresql/data -l logfile

매번 입력을 해줘야 한다.

결론은?
번거롭다는거다.

다행히, PostgreSQL 은 이런 번거로움을 해결할 수 있는 방법이 있다.
environment 를 설정하면 된다.

% export PGDATA=postgresql/data

이런식으로 PGDATA 환경변수를 설정해 놓으면 -D 옵션을 주지 않아도 된다.

% initdb

% pg_ctl start -l logfile

음. 한결 편해졌군.

주의할 점은 PGDATA 에는 절대경로를 넣어 줘야 한다.
상대경로를 넣어주면? 당연히 실행하는 위치마다 될수도 안될수도 있다.

또 하나 더. psql 을 실행할때 매번 database 를 입력해 줘야한다.
% psql postgres
기본적으로 계속 postgres database 를 사용할 예정이라면, 이것도 환경변수에 넣어주면 매번 입력하지 않아도 된다.
% export PGDATABASE=postgres
% psql
개인적으로 그냥 편하게 .bashrc 에 PGDATA, PGDATABASE 를 넣어둔다. 그러면 다음에 로그인할때 신경쓰지 않고 사용할 수 있다.

PostgreSQL 메뉴얼을 살펴보면, 그 외에도 많은 환경변수들이 존재한다.
적당히 적절히 사용하면 큰 도움이 될거 같다.





출처
https://www.postgresql.org/docs/9.6/static/libpq-envars.html

PostgreSQL 외부에서 접속 하기

PostgreSQL 은 다중 사용자를 위한 Database 이다.
당연히, Server-Client 구조를 가지고 있다.
그러므로, PostgreSQL 을 설치한 machine 외에 다른 machine 에서
접속이 가능하다.

하지만 보안 때문에, 어느 Database 든지,
기본적으로 외부 접속을 disable 해 놓는다.
물론 PostgreSQL 도 외부 접속이 기본적으로 disable 되어 있다.

환경변수를 수정해서, 외부 접속이 가능하도록 해 보자.

% vi postgresql/data/pg_hba.conf

파일의 맨 끝으로 이동하면,
아래와 같은 구문이 나타난다.
접속을 허용하는 ip 주소를 입력하면 된다.

하나의 ip 를 입력할 수도 있고,
netmask 를 사용해서 ip 대역대를 입력할 수도 있다.

0.0.0.0/0 을 입력하면 모든 ip 접속을 허용하겠다는 의미이다.

# IPv4 local connections:
host    all             all             0.0.0.0/0            trust
% vi postgresql/data/postgresql.conf

listen 하는 ip 를 입력하는 곳이다.
기본적으로 localhost 로 되어 있을텐데,
모든 ip 를 listen 한다는 의미로 * 를 입력하면 된다.

listen_addresses = '*'
이제 서버를 재시작 해보자.

% psql -h [ip_address]

psql (9.6.5)
Type "help" for help.

postgres=# 
해당 ip 주소로 접속이 잘되는걸 확인할 수 있다.

만약 공유기에 물려있다면, 포트포워딩을 해줘야 한다. (port 5432)





출처
http://justckh.blogspot.kr/2013/10/postgresql-ip.html
http://moomini.tistory.com/91

C언어 문자열에 대한 sizeof 의 결과

C언어에서 sizeof 라는 연산자가 있다.
자료형의 크기를 얻을 때 사용한다.

sizeof(자료형);
이렇게 함수 사용하듯이 사용하면 된다.

생김새는 함수처럼 생겼지만,
특이하게도 sizeof 는 "연산자" 이다.

또 다른 특이한 점은,
sizeof 는 런타임시가 아닌,
컴파일시에 계산된다는 것이다.

아... 별종이구먼.
간단한 테스트를 해보기로 했다.

#include <stdio.h>

int main() {
    char *p="ABC";
    char a[]="ABC";

    printf("%lu\n", sizeof(p));
    printf("%lu\n", sizeof(*p));
    printf("%lu\n", sizeof(a));
    printf("%lu\n", sizeof("ABC"));

    return 0;
}
결과

8
1
4
4
8 이 나오는건, 포인터 변수이기 때문이다.
포인터 변수는 64bit machine 에서 8바이트이기 때문이다.
요즘 웬만한 컴퓨터는 64bit 이므로 아마 대부분 8 이라고 나올것이다.
당연한 이야기겠지만, 32bit machine 에서는 4 가 나올 것이다.

1 이 나온건, char 의 size 가 1 이기 때문이다.
*p 는 p 포인터의 내용물을 의미하기 때문이다.
그 내용물은 char 이므로 1 이 나온 것이다.
만약, p가 int *p 였다면, 4 가 나왔을 것이다.

4 가 나온건, a[] 배열의 크기가 4 이기 때문이다.
"ABC" 문자열을 저장하기 위해서는, 맨 마지막에 NULL 이 추가되어야 한다.
a[] 라고 정의하면, [] 안에 숫자는 컴파일러가 자동으로 채워준다.
그러므로 a[4] 라고 컴파일러가 자동으로 채워줬을 것이다.
그러므로 4 가 나온다.

마지막으로 4가 나온건, 문자열이 배열로 처리 되었기 때문이다.
컴파일…

Ubuntu 로그인 할때 시스템 정보 출력

Ubuntu 에 로그인을 하면, 단순하게 Welcome 문구만 출력되는게 일반적일 것이다.

Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.10.0-38-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

Last login: Tue Nov 28 17:55:46 2017 from 121.133.176.6
하지만, 좀 더 많은 정보를 제공해 줄 수도 있다.

Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.10.0-38-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Tue Nov 28 22:39:25 KST 2017

  System load:     0.46                    Processes:                 119
  Usage of /:       13.7% of 38.26GB   Users logged in:         1
  Memory usage: 29%                     IP address for eth0:     172.30.1.104
  Swap usage:     4%                      IP address for docker0: 172.17.0.1

  Graph this data and manage this system at:
    https://landscape.canonical.com/

Last login: Tu…

Ubuntu 에서 diff (차이점) 보여주는 프로그램

이미지
작업을 하다 보면, 파일의 diff(차이점) 을 봐야할 때가 있다.

그것이
소스 파일의 변경 내용일 수도 있고,
환경 설정 파일의 차이 일수도 있고,
의외로 꽤 자주 필요하다.

diff 를 보여주는 훌륭한 무료 프로그램들이 많이 있다.
잘 사용하면 큰 도움이 될 것이다.

tkdiff
예전에 svn 을 주로 이용할 때는, tkdiff 를 많이 이용했었다.

설치
% sudo apt-get install tkdiff wish

사용
% tkdiff 1.txt 2.txt

diffuse
tkdiff 를 사용하기 힘든 환경일 때, 대안으로 사용했던 프로그램이었다.

설치
% sudo apt-get install diffuse

사용
% diffuse 1.txt 2.txt

meld
사용은 거의 안 해봤지만, 종종 사용해봤던 프로그램이었다.

설치
% sudo apt-get install meld

사용
% meld 1.txt 2.txt


각 프로그램 마다 인터페이스와 기능이 다르다는건 당연한 이야기이고,
셋 다 골고루 사용해 보고,
더 마음에 드는걸 사용하면 된다.

늘 그랬듯이 선택은 자신의 몫.


PostgreSQL 소스 설치 (Ubuntu Server 16.04)

PostgreSQL 를 Ubuntu Server 16.04 에 설치할 때,
에러 없이 한번에 주루룩 설치하면 좋겠지만,
현실은 에러 메세지를 몇번 해결해 줘야 한다.

설치 진행 중에 나타나는 에러와 해결 방법을 적어보았다.

PostgreSQL 을 다운로드 하자.
% wget https://ftp.postgresql.org/pub/source/v9.6.5/postgresql-9.6.5.tar.gz

압축을 해제 하자.
% tar vxzf postgresql-9.6.5.tar.gz

디렉토리로 이동 하자.
% cd postgresql-9.6.5

설정을 진행 하자.
% ./configure --prefix=$HOME/postgresql --enable-debug

checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking which template to use... linux
checking whether to build with 64-bit integer date/time support... yes
checking whether NLS is wanted... no
checking for default port number... 5432
checking for block size... 8kB
checking for segment size... 1GB
checking for WAL block size... 8kB
checking for WAL segment size... 16MB
checking for gcc... no
checking for cc... no
configure: error: in `/home/ck0911/postgresql-9.6.5_3':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
컴파일러…

X 윈도 시스템 (X Window System) 그리고 VcXsrv (Windows X Server)

이미지
X 윈도 시스템 (X Window System)은 주로 유닉스 계열 운영체제에서 사용되는 윈도 시스템이다.
.
.
.
라고 정의되어 있다.

정의만으로는 그것이 무엇인지 알기 어렵다.
그래서 인터넷 이곳 저곳 찾아보고, 사용도 해보면서 개인적으로 내린 결론은,
쉽게 말해서 리눅스(유닉스 그 외)에서 사용 가능한 GUI 이다.

빌게이츠 횽이 만든 Windows OS 에서 볼 수 있는 그래픽 인터페이스를,
리눅스에서도 사용할 수 있게 만든것이 X Windows System 이다.

응? GUI 사용 가능하다는게 무슨 말이여?
리눅스는 원래 command(CUI) 로 동작하는 OS 아닌가?

맞다. 리눅스는 원래 CUI 로 동작하는 OS 이다.
당연한 얘기겠지만, CUI 방식을 불편해 하는 사용자가 있을것이고,
GUI 에 대한 요청이 있었을 것이다.
그래서 만들어진 것이다.

우리가 리눅스 서버 버전 말고, 리눅스 데스크탑 버전을 다운 받아서 설치하면,
마치 윈도우와 비슷하게 바탕화면도 있고 아이콘도 있고 GUI 환경에서 리눅스를 사용할 수 있다.

출처 : https://ko.wikipedia.org/wiki/X_윈도_시스템
이곳에서 그래픽 유틸리티를 사용할 수 있고, 마우스를 사용해서 리눅스를 컨트롤 할 수 있다.
그래서 일반 사용자들도 손쉽게(아마도) 리눅스를 사용할 수 있게 되었을 것이다.

사실 윈도우가 더 편하긴 하겠지만.....아무튼,
X Window 에는 아주 아주 중요한 기능이 있다.
그것은 바로, X Window 가 Server-Client 구조로 동작한다는 것이다.
그래픽 화면을 뿌려줄때 Server-Client 구조로 뿌려준다는 말이다.

무슨 말인고 하니,
Server 는 리눅스 본체라고 생각하면 되고
Client 는 그래픽 화면이라고 생각하면 된다.

그래서....?

그래서~ 저 Client 를 다른 컴퓨터에 나타나게 할 수 있다는 말이다.
아직까지도 아리송 할 수 있으니, 직접 눈으로 보는게 나을거 같다.

아래 링크에 들어가서 vcXsrv 를 다운로드 …

VcXsrv Windows X Server 한글 깨짐

이미지
개인적으로 회사에서든 집에서든, ubuntu 를 자주 사용하는 편이다.

ubuntu 를 데탑처럼 사용할 때도 있지만,
주로 원격으로 사용을 많이 한다.
원격이라는건 뭐~ 흔히들 사용하는 ssh 를 주로 사용하는 편이다.

콘솔(CUI) 작업만으로는 한계가 있는 경우가 있어서,
그래픽(GUI) 작업을 병행할 때가 점점 많아지고 있다.

ssh 를 사용하면 그래픽 인터페이스를 직접 사용할 수 없으니,
당연히 x-windows 를 끌어와서 사용한다.

그래픽을 끌어오는 프로그램은 여러 종류가 있다.
그 중에서 VcXsrv 를 사용중인데, 그래픽을 끌어올때 한글이 깨져나온다.
VcXsrv 에 대해 더 자세한 내용은 아래 링크에서 얻을 수 있다.
http://kimchki.blogspot.kr/2017/11/x-x-window-system-vcxsrv-windows-x.html


한글 폰트가 없어서 깨져나오는 현상이었다.
물론 나는 ubuntu server 를 설치해서 사용중이라서,
한글 폰트가 설치되어 있지 않았다.
한글 폰트를 설치해 보자.

$ sudo apt-get install fonts-nanum-coding

다른 폰트를 원한다면, 물론 다른걸 설치해도 된다.

그리고 다시 실행해보면,
한글이 정상적으로 잘 나온다.






출처
http://clien-achive.blogspot.kr/2016/08/bash-on-ubuntu-on-windows-1.html

윈도우10 업데이트 강제 재부팅 막기

이미지
개인적으로 윈도우를 사용해서 서버를 돌리고 있다.

거창하게 뭔가 대단한 그런 서버를 돌리는건 아니고,
지극히 개인 용도로 사용하기 위해 돌리고 있는 수준이다.

그렇기 때문에, 서버용 윈도우를 사용해서 돌리는게 아니라
그냥 가정용 윈도우7을 사용하고 있다.

그렇게 지금까지 윈도우7을 잘 사용해오다가,
이제는 흐름에 맞춰서 윈도우10으로 갈아탔다.

그런데 어느날 보니, 서버가 재부팅이 되어 있었다.
어라? 뭐여?

순간 엄청 놀랬다.
공격당한건지, 잠깐 정전이 된건지, 부품이 노후화 된건지,,,,

윈도우 알림 tray 에 업데이트 되었다는 알림이 뜬걸 보고,
어라? 자동업데이트 하고 재부팅 했나보네....

구글링을 해보니, 역시나~
나 처럼 빌게이츠 횽한테 한방 먹은 사람들의 불만과 조치 방법들이 많이 검색되었다.


자동 업데이트? 그렇지. 좋지. 업데이트는 항상 하는게 좋지.
그런데 사용자 계정이 로그인 되어 있는데도 불구하고 자동 재부팅?
그건 좀 아니지 않나?

그래서 아래와 같이 하면 자동 재부팅을 막을 수 있다.

"로컬 그룹 정책 편집기" 를 실행시킨다.
"시작 - 실행 - gpedit.msc"

여러가지 셋팅들이 tree 형식으로 구성되어 있다.
업데이트와 관련된 곳으로 이동하자.
"컴퓨터 구성 - 관리 템플릿 - Windows 구성 요소 - Windows 업데이트"


오른쪽에 업데이트 관련 설정 항목들이 보인다.
"자동 업데이트 구성" 항목을 더블클릭한다.
어떤 블로그들을 보면, "사용 안 함" 으로 설정하면 된다고 설명하고 있다.
물론 그렇게 하고, 수동으로 업데이트를 실행해도 된다.

그 방법만 있는건 아니고, "자동으로 다운로드하고 설치할때 알림" 으로 설정해도 된다.


"예약된 자동 업데이트 설치 시 로그온한 사용자가 있을 경우 자동 다시 시작 사용 안 함"
항목을 "사용" 으로 설정한다.
이렇게 하면 자동으로 재…

우분투(Ubuntu) 컴퓨터 이름 변경

이미지
우분투(ubuntu) 에서 컴퓨터 이름을 변경하고 싶을 때가 있다.

기본적으로 ubuntu 라고 되어 있다.

그래서 프롬프트에도 ubuntu 라고 표기되고, 네트워크에도 ubuntu 라고 표기된다.

ID@ubuntu:~$
아래 2개의 파일을 수정하면 컴퓨터 이름을 변경할 수 있다.

sudo vi /etc/hosts
sudo vi /etc/hostname

"ubuntu" 문자열을 다른 문자열로 수정하면 된다.



수정 후 서비스를 다시 시작해주면 적용이 된다.

sudo service hostname restart
물론 재부팅 해도 된다.
개인적으로 그냥 재부팅을 한다.

sudo reboot


출처
http://radiation.tistory.com/entry/Ubuntu-설치-후-컴퓨터host-이름-바꾸기

PostgreSQL psql 접속시, query 자동으로 실행시키는 방법

이미지
PostgreSQL 에 psql 을 통해 접속할때, 원하는 쿼리(혹은 명령어) query(or command) 를 자동으로 실행시킬 수 있다.

~/.psqlrc 파일에 query(or command) 를 추가하면 된다.
(만약 존재하지 않다면, 새로 생성해 주면 된다.)

개인적으로 timing 이라는 옵션을 즐겨 사용한다.
timing 은 query 수행에 시간이 얼마나 걸리는지 출력해 주는 명령어이다.

그런데 session 을 연결할때마다 \timing 을 입력하는것이 번거롭기도 해서,
psql 을 사용해서 session 에 연결할때 자동으로 실행하도록 하고 싶었다.

% vi ~/.psqlrc

이 텍스트 파일에 실행하고 싶은 query(or command) 를 기록하면 된다.
그러면, psql 이 실행되면서 위 파일내 query(or command) 를 실행해준다.
이제 힘들게 매번 타이핑 하지 않아도 된다.




출처
https://serverfault.com/questions/282046/how-can-i-have-timing-default-to-on-with-postgresql

PostgreSQL query 실행 시간 표시

이미지
PostgreSQL 에서 query(or command) 실행 시간을 알고 싶을 때가 있다.
timing 를 사용하면 수행시간을 출력해 준다.

postgres=# \timing
Timing is on.
이제부터 모든 query 에 대해 수행시간이 출력된다.

postgres=# select * from pg_class;
                 relname                 | relnamespace | reltype | reloftype | relowner | relam | relfilenode | reltablespace | relpages | reltuples | relallvisible | reltoastrelid |
relhasindex | relisshared | relpersistence | relkind | relnatts | relchecks | relhasoids | relhaspkey | relhasrules | relhastriggers | relhassubclass | relrowsecurity | relforcerowsecu
rity | relispopulated | relreplident | relfrozenxid | relminmxid |                relacl                 |       reloptions
-----------------------------------------+--------------+---------+-----------+----------+-------+-------------+---------------+----------+-----------+---------------+---------------+-
------------+-------------+----------------+---------+----------+-----------+------------+------------+-------------+----------------+----------…

Windows 10, Windows Server 2016 정보

이미지
Windows 10, Windows Server 2016 에 어떠한 변화가 있는지 가끔 궁금할때가 있다.

물론 구글에서 검색하면 다양한 정보를 얻을 수 있다.

가끔 생각날 때는 아래 사이트에 접속하기도 한다.

http://jsb000.tistory.com/category

Windows 10, Windows Server 2016 에 대해 정리를 해 놓은 곳이다.

어떤이에게는 별 도움이 되지 않은 내용일 수도 있겠고,
어떤이에게는 소소하게 도움이 되기도 할거 같다.

그래서 결론은? 도움이 된다는겨? 안된다는겨?
케바케.


쉘 프롬프트 혹은 출력에 컬러 변경

이미지
평소에 우리가 사용하는 터미널(쉘)은 검은 바탕화면에 흰 글자이다.

종종 다른색으로 출력하고 싶을 때가 있다.
쉘은 화면에 출력을 할 때, 컬러를 변경할 수 있다.

% echo -e "\033[31m 글자색:빨강 \033[0m"
 글자색:빨강
출력하고 싶은 글자에 옵션을 주면 원하는 컬러로 출력 가능하다.

옵션은 쉘에서 적용을 받기 때문에,
프로그램을 만들때도 사용 가능하다.

#include <stdio.h>

int main() {
    printf("\033[34m 글자색:파랑 \033[0m\n");
    return 0;
}

글자색:파랑
칼러 값 변환 테이블이 있으니, 원하는 값으로 설정하면 된다.

출처 : https://en.wikipedia.org/wiki/ANSI_escape_code#Colors
위 테이블에 나와있는 컬러로 출력해보자.

#include <stdio.h>

int main() {
    printf("\x1b[30m"   " Black"          "\x1b[0m" "\n");
    printf("\x1b[31m"   " Red"            "\x1b[0m" "\n");
    printf("\x1b[32m"   " Green"          "\x1b[0m" "\n");
    printf("\x1b[33m"   " Yellow"         "\x1b[0m" "\n");
    printf("\x1b[34m"   " Blue"           "\x1b[0m" "\n");
    printf("\x1b…

PostgreSQL OID 확인 방법

종종 oid 를 확인하고 싶을 때가 있다.
(oid 는 tuple 를 구분하는 unique value 이다.)

postgres=# create table t1 (c1 char(20));
CREATE TABLE
postgres=# insert into t1 values ('aaa');
INSERT 0 1
postgres=# insert into t1 values ('bbb');
INSERT 0 1
postgres=# select * from t1;
          c1
----------------------
 aaa
 bbb
(2 rows)

postgres=# select oid,* from t1;
ERROR:  column "oid" does not exist
LINE 1: select oid, * from t1;
               ^
postgres=#
어라? 에러가 뜨네?
분명히 본거 같은데....

postgres=# select oid,relname from pg_class where relname='t1';
  oid  | relname
-------+---------
 24646 | t1
(1 row)
잘 나오는데.... 왜 t1 은 안 나올까....

구글링을 해봤다.
table 을 만들 때, 옵션을 줘야 된단다.

postgres=# create table t2 (c1 char(20)) with oids;
CREATE TABLE
postgres=# insert into t2 values ('aaa');
INSERT 24652 1
postgres=# insert into t2 values ('bbb');
INSERT 24653 1
postgres=# select * from t2;
          c1
----------------------
 aaa
 bbb
(2 rows)

postgres=# select oid,* from t2;
  oid  |   …

Ubuntu 기부

이미지
사람들이 가장 많이 사용하는 OS 는 아무래도 Windows 일것이다.
물론 나도 Windows 를 사용하고 있다.
그렇지만 개인적으로, Windows 못지 않게 Ubuntu 도 많이 사용하고 있다. 회사에서도.... 집에서도....
몇년간 그렇게 사용하다가 어느날 문득, 너무 신세만 지고 살아온게 아닌가 라는 생각이 들었다.
Ubuntu 는 나에게 많은 것을 아낌없이 주었는데, 나는 해준것도 없이 받기만 한거 같았다. 그래서, 기부를 하기로 했다.
기부 하는 방법은 간단하다. http://www.ubuntu.com - Downloads - Desktop 으로 이동한다.

기부 화면은 Download 하기 전에 나온다. Download 를 클릭한다.


어디에 얼마를 기부할지를 조절할 수 있다.
기본으로 $3 씩 되어 있어서, 나는 그대로 냅뒀다.

유명한 결제 시스템 PayPal 을 통해서 기부하도록 되어 있다.
"Pay with PayPal" 을 클릭한다.


금액이 맞는지 확인하고, "바로 결제" 를 클릭한다.


https://www.paypal.com 에서 거래가 정상적으로 이루어진 것을 확인할 수 있다.

기부를 하니, 뿌듯하다.

뭔가 감사의 표시를 한거 같아서 좋다.
많은 사람들을 위해, Ubuntu 가 계속 잘 발전했으면 좋겠다.

무료 Hex 에디터 - HxD Hex Editor

이미지
컴퓨터에서 이런~ 저런~ 작업을 하다보면, hex editor 가 필요할 때가 있다.
도스 시절에는 he.com 을 엄청 유용하게 사용했던 기억이 있다.

출처 : http://xcoolcat7.tistory.com/489
지금은 윈도우 시대이므로, 당연 윈도우용을 사용해야 한다.
예전에 집에서는 WinHex 를 주로 사용했었다.
편리하기도 하고, 기능도 많고, 유용하긴 한데, 유료라는 큰 문제가 있다.
그래서 구글에서 무료 hex editor 를 찾았다.


HxD 라는 프로그램인데, 무료다.


왼쪽에는 hex 값들이 나오고, 오른쪽에는 문자들이 나온다.


제작자에게 감사해 하며 사용해야 겠다.

프로그램은 아래 홈페이지에서 다운로드 받을 수 있다.
https://mh-nexus.de/en/hxd