2020년 3월 25일 수요일

CentOS 7 - Subversion 설치.

Subversion 설치하기.


7.x 버전에서 달라진 systemctl 및 firewall 때문에 정리.


1. Subversion 설치



  
yum install subversion
cs


2. Repository root 생성.


   Repository root로 사용할 경로를 생성한다.
  
  
mkdir -/var/opt/svn/repositories/
cs


3. svnserve 설정 파일 수정.


  
vi /etc/sysconfig/svnserve
cs


  
# OPTIONS is used to pass command-line arguments to svnserve.
#
# Specify the repository location in -r parameter:
OPTIONS="--threads -r /var/opt/svn/repositories"
cs


4. Repository 설정.


   실제 프로젝트에 사용할 repository 설정은 똑같아서 생략합니다.
   authz, passwd, svnserve.conf 파일을 수정합니다.

5. Firewall 등록.


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


6. 서비스 등록 및 시작.


  
systemctl enable svnserve.service
systemctl start svnserve.service
cs


7. 하지만, 


   기대한 것과 다르게 정상적으로 repository에 접근할 수 없습니다.
   SELinux 관련 에러가 발생하고 로그를 확인해 보면 문제가 있음을 확인 가능합니다.


8. SELinux


   repositories 경로 권한 문제로 파일의 security context를 변경해야 합니다.


  
chcon --t svnserve_content_t /var/opt/svn/repositories
cs


  

2020년 3월 16일 월요일

Unity Google Sign In ...

Google Sign-In Unity Plugin

 

하란대로 하면 안되서 정리한다 ㅠㅠ.

 

1. Plugin download.


   Google Sign-In Unity Plugin release에서 최신 버전을 다운로드 받는다.
   google-signin-plugin-1.0.4.unitypackage 및 GoogleSignIn-sample.unitypackage 파일을
   다운로드 받는다.

2. Unity 프로젝트 생성 및 패키지 임포트.

 


   작업에 사용한 Unity 버전은 2019.3.0f6 버전으로 다음 위치에서 패키지를 임포트합니다.


   하지만, 기대와 다르게 임포트하자마자 에러를 만나게 됩니다.


   에러 내용은 다음과 같습니다.

Library\PackageCache\com.unity.textmeshpro@2.0.1\Scripts\Editor\TMP_PackageUtilities.cs(310,17): error CS0433: The type 'Task' exists in both 'Unity.Tasks, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' and 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'

   해결 방법은 다음 링크에 나와있는대로 패키지의 parse 폴더를 제외합니다.
   error CS0433: The type 'Task' exists in both Unity.Tasks,....


   그리고 나면 또 다른 에러가 엄청나게 나옵니다.


   해당 에러에 대한 힌트는 다음 링크에서 확인 가능합니다.
   ArgumentException: Requested value 'x86' was not found

   간단하게 요약하면 unity-jar-resolver 패키지를 설치하면 됩니다.
   최신 버전은 v1.2.137 이고 zip 파일을 다운로드 하고 압축을 푼 뒤에
   play-services-resolver-1.2.137.0 패키지를  설치해주면 됩니다.

   다음 그림과 같이 버전이 낮은 파일이 이미 사용중일 수 있지만
   최신 버전으로 업데이트 합니다.


   그리고 나면 더이상 쓸모없는 파일을 삭제할 지 묻는 다이얼로그 윈도우가 뜨게 되는데,
   삭제하겠다고 선택하면 됩니다.


   그럼 더 이상 에러는 발생하지 않습니다.
   마지막으로 제일 처음 다운로드 받았던 샘플 패키지를 임포트하면 준비는 끝났습니다.

3. Keystore 생성.


   먼저 File - Build Settings - Platform을 Android로 변경한 뒤,
   App signing을 위해 키를 생성합니다.



   키 분실의 우려가 있으므로 프로젝트 아래 적당한 경로에 저장하고
   버전 관리 시스템을 사용할 수 있도록 합니다.

   구글 앱 서명 방식이 변경되어 앱 서명 인증서와  업로드 인증서로 나뉘고 구글에서 
   관리하도록 변경되어 분실을 하게 되더라도 복구할 방법이 현재는 존재합니다.


   위 그림과 같이 키스토어에 키를 하나 생성합니다.
   그리고 나면 최종적으로 다음과 같이 설정됩니다.


   그리고 Player - Other Settings에서 사용할 Package Name을 설정해 주면 됩니다.


4. Google APIs.


   Google Sign-In api 사용을 위해 사용자 인증 정보를 생성합니다.
   Google API console에서 사용자 인증 정보 - 사용자 인증 정보 만들기를 선택한 뒤,
   OAuth 클라이언트 ID를 선택하고 마지막으로 Android 선택 후 내용을 채워주면 됩니다.


   생성한 뒤 Unity에서 Web Client Id를 설정합니다.
   Canvas를 선택하고 Signin Sample Script 컴포넌트에 설정합니다.


   그리고 빌드한 뒤 apk 배포 후 테스트 해보면 역시나 안된다.


   이름도 거룩하다, DeveloperError ...

5. Google Sign-In for Android.


   Google Sign-In for Android 페이지에서 아래로 스크롤 하다 보면
   Configure a project 버튼을 찾을 수 있습니다.





   최종적으로 Web client (Auto-created for Google Sign-in) 이름으로 생성된
   OAuth 2.0 클라이언트 ID가 생기고 이 아이디를 사용해야 로그인이 됩니다.

   참고로, Google API console에서 클라이언트 ID를 생성할 때 Android가 아니라 
   웹 애플리케이션을 선택해서 만들어도 됩니다.

   이제 만들어진 클라이언트 ID로 빌드하게 되면 로그인이 드디어 됩니다.


2020년 1월 7일 화요일

Grafana & graphite 그리고 모니터링 #06.

CentOS 7.x 버전에 설치하기.

 

이전에 기록했던 CentOS 6.x 버전에 설치하기대로 설치가 안된다.

 

1. Docker 설치

 

  
1
yum install docker
cs


2. pip upgrade

 

  
1
pip install --upgrade pip
cs


3. Docker 설정 변경

 

   /etc/sysconfig/docker 파일에서 다음 그림과 같이 설정을 수정


4. Docker 시작하기.


  
1
2
3
systemctl enable docker.service
systemctl start docker.service
systemctl status docker.service
cs



5. Docker image build.

 

  
1
docker build -f ./Dockerfile --tag graphite:1.0 ./
cs



6. Rpmdb checksum is invalid: dCDPT(pkg checksums): libXext.x86_64 0:1.3.3-3.el7 - u


   하지만, 실패 ㅠㅠ



   여러가지 해결 방법이 존재한다.

7. 해결 방법

 

   제일 처음에 다음과 같이 Docker overlay fs 추가하거나,

  
1
RUN yum -y install yum-plugin-ovl
cs


   다른 방법으로

  
1
RUN yum install -y graphite-web;yum clean all
cs


   혹은

  
1
RUN rpm --rebuilddb && yum install -y graphite-web
cs



  

2019년 6월 4일 화요일

Python, Windows, Console, print ...

윈도우즈 환경에서 ❕ 이런 문자를 콘솔 화면에 출력하고 싶다면 ...


1. 안되는 경우.


   윈도우 환경의 경우 UTF-8 사용에 제한이 많다.



2. win-unicode-console.


   모듈을 설치하고 활성화한 뒤 그냥 출력한다.




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' --name '*.cpp' --name '*.cc' --name '*.h' --name '*.s' --name '*.S' --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