2017년 11월 29일 수요일

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: Tue Nov 28 22:33:49 2017 from 172.30.1.107

아래 명령어를 실행하면 위와 같은 정보가 표시된다.
% landscape-sysinfo

만약 설치되어 있지 않다면 설치를 해주면 된다.
% sudo apt-get install landscape-common

설치하고 나면, 다음 로그인 시 자동으로 출력되므로,
따로 설정할 것은 없다.





출처

2017년 11월 27일 월요일

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


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

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


2017년 11월 26일 일요일

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

컴파일러를 못 찾겠다는 에러다.
컴파일러를 설치 하자.
% sudo apt-get install gcc

configure: error: readline library not found
If you have readline already installed, see config.log for details on the
failure.  It is possible the compiler isn't looking in the proper directory.
Use --without-readline to disable readline support.

readline 라이브러리를 못 찾겠다는 에러다.
readline 라이브러리를 설치 하자.
% sudo apt-get install libreadline-dev

configure: error: zlib library not found
If you have zlib already installed, see config.log for details on the
failure.  It is possible the compiler isn't looking in the proper directory.
Use --without-zlib to disable zlib support.

zlib 라이브러리를 못 찾겠다는 에러다.
zlib 라이브러리를 설치 하자.
% sudo apt-get install zlib1g-dev

configure: using CFLAGS=-Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -g -O2
configure: using CPPFLAGS= -D_GNU_SOURCE
configure: using LDFLAGS=  -Wl,--as-needed
configure: creating ./config.status
config.status: creating GNUmakefile
config.status: creating src/Makefile.global
config.status: creating src/include/pg_config.h
config.status: creating src/include/pg_config_ext.h
config.status: creating src/interfaces/ecpg/include/ecpg_config.h
config.status: linking src/backend/port/tas/dummy.s to src/backend/port/tas.s
config.status: linking src/backend/port/dynloader/linux.c to src/backend/port/dynloader.c
config.status: linking src/backend/port/sysv_sema.c to src/backend/port/pg_sema.c
config.status: linking src/backend/port/sysv_shmem.c to src/backend/port/pg_shmem.c
config.status: linking src/backend/port/dynloader/linux.h to src/include/dynloader.h
config.status: linking src/include/port/linux.h to src/include/pg_config_os.h
config.status: linking src/makefiles/Makefile.linux to src/Makefile.port

설정이 완료 되었다.
컴파일을 해보자.
% make

The program 'make' can be found in the following packages:
 * make
 * make-guile
Try: sudo apt install <selected package>

make 를 못 찾겠다는 에러다.
make 를 설치 하자.
% sudo apt-get install make

ERROR: `bison' is missing on your system. It is needed to create the
file `gram.c'. You can either get bison from a GNU mirror site
or download an official distribution of PostgreSQL, which contains
pre-packaged bison output.

bison 을 못 찾겠다는 에러다.
bison 을 설치 하자.
% sudo apt-get install bison

ERROR: `flex' is missing on your system. It is needed to create the
file `bootscanner.c'. You can either get flex from a GNU mirror site
or download an official distribution of PostgreSQL, which contains
pre-packaged flex output.

flex 를 못 찾겠다는 에러다.
flex 를 설치 하자.
% sudo apt-get install flex

All of PostgreSQL successfully made. Ready to install.

컴파일이 완료 되었다.
install 을 하자.
% make install

PostgreSQL installation complete.

설치가 완료 되었다.
initdb 를 실행시켜서 DB 가 잘 생성되는지 확인한다.
% initdb

The files belonging to this database system will be owned by user "ck0911".
This user must also own the server process.

The database cluster will be initialized with locale "ko_KR.UTF-8".
The default database encoding has accordingly been set to "UTF8".
initdb: could not find suitable text search configuration for locale "ko_KR.UTF-8"
The default text search configuration will be set to "simple".

Data page checksums are disabled.

creating directory /home/ck0911/postgresql/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok

WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.

Success. You can now start the database server using:

    pg_ctl -D /home/ck0911/postgresql/data -l logfile start

db 가 잘 생성되었다. 이제 PostgreSQL 을 사용하면 된다.

※ 한꺼번에 설치하고자 할 때는
% sudo apt-get install gcc libreadline-dev zlib1g-dev make bison flex

※ xml library 도 설치해 주는것이 좋다.
% sudo apt-get install libxml2-dev





출처
https://askubuntu.com/questions/89389/how-to-solve-configure-error-readline-library-not-found
https://askubuntu.com/questions/508934/how-to-install-libpng-and-zlib

2017년 11월 25일 토요일

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

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

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

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

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

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

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


이곳에서 그래픽 유틸리티를 사용할 수 있고, 마우스를 사용해서 리눅스를 컨트롤 할 수 있다.
그래서 일반 사용자들도 손쉽게(아마도) 리눅스를 사용할 수 있게 되었을 것이다.

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

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

그래서....?

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

아래 링크에 들어가서 vcXsrv 를 다운로드 하고 설치 하자.
https://sourceforge.net/projects/vcxsrv
무슨 프로그램인지는 나중에 설명하겠다.

Next 클릭

Install 클릭

Close 클릭

바탕화면의 VcXsrv 더블클릭


윈도우 트레이(tray)에 아이콘이 추가된 것을 확인할 수 있다.
정상적으로 실행이 된 것이다.

ubuntu 에 접속을 해 보자.
개인적으로 putty 라는 프로그램을 즐겨 사용한다.
putty 로 ubuntu 에 접속하기 전에,
추가적으로 설정해 줘야 하는것이 있다.


"Enable X11 forwarding" 을 체크해 줘야 한다.
나머지 설정은 자신의 취향대로 하면 된다.

자, 이제 리눅스에 접속한 후에, 그래픽 유틸리티 아무거나 실행시켜 보자.
딱히 떠오르는게 없으면, firefox 를 실행시켜 보자.
짠~ 하고 현재 접속한 컴퓨터에 그래픽 유틸리티가 나타날 것이다.

우와 신기하다 @.@

만약 firefox 가 설치되어 있지 않다면 apt-get 을 이용해서 설치해 주면 된다.
% sudo apt-get install firefox

개인적으로 firefox 보다는 chromium 을 사용한다.
% sudo apt-get install chromium-browser


chromium-browser 를 실행시키면,
짠~ 하고 현재 접속한 컴퓨터에 그래픽 유틸리티가 나타날 것이다.

만약 한글이 깨져서 나온다면, 아래 링크에서 해결방법을 구할 수 있다.
http://kimchki.blogspot.kr/2017/11/vcxsrv-windows-x-server.html

윈도우에 메모장이 있다면, 리눅스에는 gedit 가 있다.
간단한 편집 기능을 제공해 주는 유틸리티 이다.
% sudo apt-get install gedit
설치하고 실행해보자.


이것 역시 그래픽 화면을 끌어서 사용할 수 있다.
위와 같은 방식으로 리눅스의 GUI 를 사용할 수 있다.

여기까지 왔으면 얼추 눈치를 챘을 것이다.
리눅스는 GUI 를 X Window 라는 것으로 표현하고 있는데,
X Window 는 Server-Client 구조로 동작한다는 것이다.
Server 는 리눅스가 되는 것이고,
Client 는 리눅스에 접속한 내 컴퓨터가 된 것이다.
Client 에도 당연히 Server 에 응답해 줘야 하는 프로그램이 필요한데,
그것이 바로 VcXsrv 이다.
그래서 GUI 를 위해 리눅스가 설치된 컴퓨터에,
모니터를 굳이 직접 연결할 필요는 없다.

물론 VNC 같은 원격 연결 프로그램을 사용할 수도 있다.
개인의 취향따라 선택해서 사용하면 된다.
당연한 이야기이지만, 이게 좋다 저게 좋다 장단점이 있기 때문이다.


그리고 XLaunch 는 GUI 에 대한 환경 설정 변경을 도와준다.


GUI 가 화면에 나타나는 형태를 고를 수 있다.


처음 실행할때 자동으로 실행되는 프로그램을 선택할 수 있다.


Clipboard 내용을 공유할 수 있다.


자신만의 셋팅 값을 저장할 수 있고, 다음에 재사용할 수 있다.





출처
https://ko.wikipedia.org/wiki/X_윈도_시스템
https://www.x.org/wiki
https://sourceforge.net/projects/vcxsrv
https://blog.iwanhae.ga/x11-forwarding

2017년 11월 17일 금요일

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

2017년 11월 15일 수요일

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

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

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

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

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

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

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

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

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


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

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

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

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


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

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


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


이런 문제 때문에 사람들의 불만이 쏟아져서, 이 글을 쓰고 있는 시점에는 MS 에서 옵션을 추가해 놓았다.
"시작 - 설정 - 업데이트 및 복구"


"사용 시간 변경" 이라는 옵션이 추가되었다.


아래와 같이 사용 시간을 설정하면, 그 시간 동안에는 재부팅을 안하는 기능이다.
컴퓨터 사용 시간이 불규칙 하거나, 이것만으로도 만족할 수 없다면,
위에 설명한것 처럼 재부팅을 막는게 최선인듯 하다.






출처
http://withoutwax.tistory.com/293
http://www.cnet.co.kr/view/100154469
http://lanian.tistory.com/entry/윈도우-10-업데이트-재부팅-중지-Windows10
http://igotit.tistory.com/entry/윈도우-10-자동업데이트-자동재부팅-방지-설정하기
http://mainia.tistory.com/4120
http://withoutwax.tistory.com/293
http://rette.iruis.net/2016/08/윈도-10-업데이트-자동-재부팅-막기

2017년 11월 10일 금요일

우분투(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-이름-바꾸기

2017년 11월 8일 수요일

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

2017년 11월 6일 월요일

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
-----------------------------------------+--------------+---------+-----------+----------+-------+-------------+---------------+----------+-----------+---------------+---------------+-
------------+-------------+----------------+---------+----------+-----------+------------+------------+-------------+----------------+----------------+----------------+----------------
-----+----------------+--------------+--------------+------------+---------------------------------------+-------------------------
......
......
......

(316 rows)

Time: 0.076 s

단위는 ms (millisecond) 로 표시된다.

"어? second 인데??"

아~~ 원래 millisecond 인데, millisecond 보다는 second 가 보기 편할거 같아서 소스를 수정해서 사용하고 있다.

만약 변경하고 싶다면, 아래처럼 소스를 수정하면 된다.


소스를 수정했으니 당연히 make, make install 도 해줘야 된다.

시간 표기를 안 하게 해주려면 timing 을 한번 더 실행해주면 된다.

postgres=# \timing
Timing is off.



출처
https://dba.stackexchange.com/questions/3148/how-can-i-time-sql-queries-using-psql

화곡 어쩌라고, 굴사냥

석화찜(굴찜)을 먹으러 여의도로 갔다 그런데 재료가 모두 소진되었다고 마감이라고 한다 응? 다들 굴에 미쳤나? 굴을 찾아 헤매다 보니, 화곡까지 가게 되었다. 화곡은 처음 가본다. 첫인상은 "술집 겁네 많네" 피똥쌀때까지 마실 수 있...