2019년 3월 18일 월요일

CentOS Single Mode.

갑자기 비밀 번호가 기억나지 않는다면 ...

 

1. 재부팅.

 

   일단 머신을 재부팅하고, 다음 화면이 진행될 때 재빠르게 키입력을 해야 한다.

  

   그럼 다음과 같은 화면이 나오는데 첫 번째 아이템이 선택된 상태에서
   'e' 키를 눌러 에디트 모드로 진입한다.

  

   그럼 다음과 같은 화면이 나오는데 2 번째 줄 kernel이 선택된 상태에서 다시 한번
   'e' 키를 눌러 에디트 모드로 진입한다.


   그럼 이제 다음과 같은 화면이 나오는데 그 상태에서 'single' 을 입력한다.


< single을 입력하기 전 >


  

< single을 입력 >

   single을 입력한 뒤 Enter를 치고 나면 다시 이전 화면으로 돌아온다.

  

   이제 'b' 를 입력해서 부팅을 시도한다.


2. 비밀 번호 재 설정.


   이제 다음과 같이 부팅이 끝나면 root 계정으로 로그인 된 것을 확인할 수 있다.

  

   이제 비밀 번호를 다시 설정하고 사용할 수 있다.
   다만, 이 과정은 머신에 콘솔로 직접 연결되어 있는 경우에만 가능한 방법이다.

3. 결론.


   귀찮으니 비밀 번호는 잊지 않게 잘 관리하자.

2019년 3월 7일 목요일

CentOS 개발 환경 구축 #2.

6. ctags

   tagging할 루트 디렉토리에서 다음 명령어를 실행합니다.

  
1
ctags -R
cs


   그리고 vi editor와 연동하기 위해 .vimrc 파일에 다음 설정을 추가합니다.

  
1
set tags=/home/ships/project/IrisIrene/trunk/src/tags
cs


   tag database가 생성된 디렉토리 경로를 설정합니다.

7. cscope


   ctags와 cscope database 구축을 한번에 하기 위해 ~/mkcscope.sh 파일을 생성한다.

  
1
2
3
4
5
6
7
8
9
10
11
vi ~/mkcscope.sh
 
#########################################################
#!/bin/sh
rm tags
ctags -R
 
rm -rf cscope.files cscope.out
find . \( -name '*.c' -o -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.s' -o -name '*.S' -o -name '*.C' \) -print > cscope.files
cscope -i cscope.files
#########################################################
cs


   그리고 vi editor와 연동하기 위해 .vimrc 파일에 다음 설정을 추가합니다.

  
1
2
3
4
5
6
7
8
9
10
set cscopeprg=/usr/local/bin/cscope
set csto=0
set cst
set nocsverb
if filereadable("./cscope.out")
    cs add cscope.out
else
    cs add /usr/src/linux/cscope.out
endif
set csverb
cs


8. 자동 완성.


   첨부된 vim-autocomplpop.zip 파일을 다운로드 받아 구조에 맞게 ./.vim/ 경로
   아래에 풀어 놓으면 바로 동작한다.

9. SrcExpl (Source Explorer)


   첨부된 SrcExpl.zip 파일을 다운로드 받아 구조에 맞게 ./.vim/ 경로
   아래에 풀어 놓는다.

   그리고 .vimrc 파일에 다음 설정을 추가합니다.

  
1
2
" // The switch of the Source Explorer
nmap <F8> :SrcExplToggle<CR>
cs


   F8 단축키를 통해 사용가능하지만 소스 트리 구조에 따라서 잘 보이지 않는 듯 하다.

2019년 3월 6일 수요일

CentOS 개발 환경 구축 #1.

어쩌다가 한번씩 해야할 일이 있는데 기억이 나질 않아서 ...


1. CentOS (6.x) 설치.

  
   뭐 특별한게 없는데 minimal 기준으로 작성.
   서버나 개발용 workstation으로 설치하면 미리 설치되는 패키지가 있어 조금 다를 수는
   있지만 큰 차이는 없고, CLion 같은 GUI 개발 툴을 사용하는 경우 개발용 workstation
   으로 설치하는게 더 낫다.

2. 개발용 기본 패키지 설치.


  
1
yum groupinstall "Development Tools"
cs


   개발 도구를 설치하면 sshd daemon도 같이 설치되어 이후 터미널로 작업이 가능하다.
   ssh를 통해 터미널 접속을 하려면 방화벽 설정을 해야 하는데 그냥 과감히 중지하자.

  
1
2
chkconifg iptables off
service iptables stop
cs


3. 사용자 계정 추가 및 admin 권한 부여.


  
1
2
useradd ships
passwd ships
cs


   그리고, 일반 계정에 admin 그룹 권한 부여는 이전에 작성했던 다음
   CentOS에서 admin 그룹 유저에게 root 권한 부여하기 글을 참고.
   중간 이미지에 오타가 있으니 조심해야 한다.

4. 추가로 필요한 패키지 설치.


  
1
2
3
yum install vim-enhanced.x86_64
yum install ctags.x86_64
yum install cscope.x86_64
cs


   개발 도구 패키지 그룹에 기본 포함되어 있는 것도 있을 수 있다.

5. vi 설정 파일 수정.


  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
vi ~/.vimrc
 
##########################################
syntax on
set ts=4
set sw=4
set ai
set cindent
set smartindent
set hlsearch
filetype on
set fileencoding=korea
set fileencodings=ubs-bom,utf-8,korea
##########################################
cs


   Molokai color scheme 적용을 위해 첨부된 molokai.vim 파일을 다운로드 받은 뒤,
   계정 홈 디렉토리에 ./vim/colors/ 디렉토리를 생성 후 복사한다.

   그리고, .vimrc 설정에 다음 설정을 추가한다.

  
1
2
colorscheme molokai
let g:molokai_original=1
cs


   그리고, 현재 어떤 함수에 캐럿이 있는지 확인할 수 있는 스크립트 함수를
   다음처럼 추가한다.

  
1
2
3
4
5
6
7
8
9
fun! ShowFuncName()
  let lnum = line(".")
  let col = col(".")
  echohl ModeMsg
  echo getline(search("^[^ \t#/]\\{2}.*[^:]\s*$", 'bW'))
  echohl None
  call search("\\%" . lnum . "l" . "\\%" . col . "c")
endfun
map f :call ShowFuncName() <CR>
cs


   C++ header와 source 전환을 위한 플러그인 a.vim 파일을 다운로드 받은 뒤,
   계정 홈 디렉토리에 ./vim/plugin/ 디렉토리를 생성 후 복사한다.
   그리고 .vimrc 설정에 다음과 같이 확장자를 등록한다.

  
1
2
let g:alternateExtensions_h = "C"
let g:alternateExtensions_C = "h"
cs

2019년 1월 22일 화요일

UTF-8 문자열 바이트 기준으로 자르기.

어쩌다 해야 할 일이 있는데 기억력이 좋지 못해서 ...


 1. UTF-8


  • 0xxxxxxx - ASCII와 동일
  • 11(0-1)xxxxx 10xxxxxx (10xxxxxx) - 2, 3 바이트 문자의 경우 첫 번째 바이트는 110 또는 1110으로 시작
  • 4 바이트 표현도 존재하지만 자르는데 의미는 없으므로 생략.


2. 예제.

 
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import re
 
def cut_utf8_by_byte(text, length):
    """
    """
 
    if len(text) >= length:
        if re.match('[\xE0-\xFF]', text[length]) is not None:
            length -= 1
        elif re.match('[\x80-\xFF]', text[length]) is not None:
            while True:
                length -= 1
                if re.match('[\xDF-\xFF]', text[length]) is not None:
                    break
    return text[:length]
cs

3. 결과.


  
.

2018년 2월 14일 수요일

시간 정보가 포함된 history

기억력이 가물 가물해져서 마지막 빌드를 오늘 했는지 어제 했는지 ...


1. history

   /etc/profile file 마지막에 다음 2 줄을 추가.

   
1
2
HISTTIMEFORMAT="%F %T -- "
export HISTTIMEFORMAT
cs


   그리고 반영한다.

   
1
source /etc/profile
cs

2. 결과


 

2018년 2월 13일 화요일

CentOS 6.x 버전에 PostgreSQL 최신 버전 설치하기 - #02.

yum install postgresql-server 까지는 동일. 하지만,


1. Post-installation commands.

   공식 문서와 마찬가지로 이번엔 /var/lib/pgsql/9.3/data/ 경로로 directory가 
   생성되었습니다. 그리고 마찬가지로 초기화도 버전 정보가 포함된 상태로 
   진행합니다.

   
1
service postgresql-9.3 initdb
cs


2. Startup

   그리고 서비스를 실행합니다.

   
1
2
chkconfig postgresql-9.3 on
service postgresql-9.3 start
cs


   이 후 진행은 CentOS 7.0에서 PostgreSQL 외부 접속 허용하기 대로 진행한다.

2018년 2월 12일 월요일

CentOS 6.x 버전에 PostgreSQL 최신 버전 설치하기 - #01.

서비스 환경이 그러하다.


1. CentOS 6.5

   제목은 6.x라고 정했지만 우리는 6.5를 사용중이기 때문에 6.5를 사용합니다.


   보시다시피 8.4.x 버전 이외에 다른 버전은 없습니다.

2. 저장소 변경.

   최신 버전을 설치할 수 있도록 저장소를 변경합니다.

1
vi /etc/yum.repos.d/CentOS-Base.repo
cs

   그리고, [base]와 [updates] 항목에 postgresql 관련 항목을 무시하도록 추가합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
exclude=postgresql*
#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
exclude=postgresql*
cs


3. 저장소 설치.

  • 다운로드 후 설치
    • 1
      2
      curl -O http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-3.noarch.rpm
      rpm -ivh pgdg-centos93-9.3-3.noarch.rpm
      cs
  • 바로 설치
    • 1
      rpm -Uvh  https://download.postgresql.org/pub/repos/yum/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-3.noarch.rpm
      cs

4. PostgreSQL 설치.

   그리고 그 다음은 그냥 설치하면 된다.