반응형





출처 : https://services.github.com/on-demand/downloads/subversion-migration/

반응형
반응형




1. SVN Repository Clone 


# git svn clone <Svn Repository Base URI> --trunk=<Trunk Path> --branches=<Branches Path> --tags=<Tags Path>

 

 실제 동작은 SVN respotiroy에 대하여 "git svn init"과 "git svn fetch"를 순서대로 실행함.


 User Information에 대한 적용을 같이 할 경우 1.3 참고 


 주의 : git-svn은 external은 supporting하지 않음. 


 1.1 <SVN Repository URI> 

     Base SVN Respository 경로

 1.2 -T<Trunk Path> -b<Branches Path> -t<Tags Path>(or --trunk=<trunk path> --branches=<branch path> --tags=<tags path>)

     Base Respository에서 각 Clone할 경로 지정, 필요한 경로를 선택 및 지정하면 되며 "

-s(--stdlaylout)"를 옵션을 이용할 경우 표준 형식을 이용할 경우 사용할 수 있음.

ex) git svn clone <SVN Repository Base URI> -svn

  주의) Trunk, Branch, Tag 지정 없이 Standard Layout이 아닌 Repository를 Clone할 경우 오랜 시간동안 Log들만 가져오고 실제 Repository는 Empty가 되는 경우가 있음.


 1.3 User 파일 적용 

 SVN의 user ID와 git에서 사용되는 user information을 matching하기 위해 user파일을 생성하고 이를 clone시 history에 적용할 수 있다. 

 # svn log ^/ --xml | grep -P "^<author" | sort -u | \ perl -pe 's/<author>(.*?)<\/author>/$1 = $1<$1\@compant\.com>/' > users.txt


 아래와 같이 하여 history의 "user"라는 user ID를 "user = user <user@company.com>" 형식으로 일괄 변경 시켜 clone시 적용 할 수 있다.

# git svn clone <Svn Repository Base URI> -T <Trunk Path>-b <Branches Path> -t <Tags Path> --authors-file=user.txt


2. git에서 Repository 확인

# git branch -a

 

  

3. Git에서 SVN Repository로 Commit 수행하기


  3.1 Git Local Commit

# git commit -am <Description>


  3.2 SVN Server로 Push(여러개의 Local Commit을 서버로 Push)

# git svn dcommit


 

4. Git에서 SVN Repository의 변경사항 받아오기

# git svn rebase


  


출처 : https://git-scm.com/book/ko/v1/Git%EC%9C%BC%EB%A1%9C-%EC%9D%B4%EC%A0%84%ED%95%98%EA%B8%B0-Git%EA%B3%BC-Subversion

  

반응형
반응형



1. Vuldle

call vundle#begin()

Plugin 'VundleVim/Vundle.vim'

Plugin 'The-NERD-tree'

Plugin 'ctrlpvim/ctrlp.vim'

call vundle#end()



2. Function Mapping
map <F2> :ToggleBufExplorer<CR>
map <F7> :NERDTreeToggle<CR>


3. Tab and Space Optimize 

highlight ExtraWhiteSpace ctermbg=red guibg=red    "Extra White Space 빨간색 표시

match ExtraWhiteSpace /\s\+$/                            

set list listchars=tab:→\                                        "Tab 문자 화살표 표시


4. CtrlP 옵션

let g:ctrlp_custom_ignore = {

  \ 'dir':  '\v[\/](\.(git|hg|svn)|\_site)$',

  \ 'file': '\v\.(exe|so|dll|class|png|jpg|jpeg|o)$',

\}


let g:ctrlp_by_filename = 1

let g:ctrlp_regexp = 1

let g:ctrlp_match_window = 'bottom,order:btt,min:1,max:100,results:100'

let g:ctrlp_max_files = 0


let g:ctrlp_working_path_mode = ''


let g:ctrlp_max_files = 0


let g:ctrlp_working_path_mode = 0


set wildignore+=*/tags


5. ETC...
set nu
set softtabstop=4
set tabstop=4
set shiftwidth=4
set expandtab
set hls
syntax on





VIM이 젤조음


반응형
반응형

find를 이용한 방법

filename을 찾아서 "Before String"을 "After String"으로 일괄 치환.

  # find . -name "<Filename>" | xargs sed -i 's/<Before String>/<After String>/g'

 

rename을 이용한 방법

파일명 맨 앞에 statement라는 문제 붙이기

  # rename -v 's/^/statement/g' *

 

파일명 맨 뒤에 statement라는 문제 붙이기

  # rename -v 's/$/statement/g' *

반응형
반응형


이전


date -d 'yesterday' # 어제

date -d '1 day ago' # 1일전

date -d '2 day ago' # 2일전

date -d '1 week ago' # 1주일전

date -d '2 month ago' # 1달전

date -d '3 year ago' # 3년전

date -d '10 second ago' # 10초전

date -d '20 minute ago' # 20분전

date -d '30 hour ago' # 30시간전

date -d '3 year 7 month ago' # 3년 7개월전


이후


date -d 'tomorrow' # 내일

date -d '1 day' # 1일후

date -d '2 day' # 2일후

date -d '1 week'         # 1주일후

date -d '2 month'         # 1달후

date -d '3 year'         # 3년후

date -d '10 second' # 10초후

date -d '20 minute' # 20분후

date -d '30 hour'         # 30시간후

date -d '3 year 5 month' # 3년 5개월후


기타


date -d 'this friday' # 이번주 금요일

date -d 'last monday' # 지난 월요일

date -d 'next tuesday' # 다음 화요일

date -d '2010-01-03 07:32:10 + 2 day 5 hours 17 minute' # 2010년 1월 3일 7시 32분 10초를 기준 2일 5시간 17분후

date --date='2 month'

date '+%Y-%m-%d %H:%M:%S' -d '2 day ago'






반응형
반응형



 C++에서 2D Array를 Double Pointer로 받아서 Array형식같이 쓰려고 하니 에러가 났다. 

 Vector로 이용하여 2D Array같이 사용할 수 있다 해서 아래와 같이 테스트 코드를 작성해봤다.


#include <iostream>

#include <stdio.h>

#include <string.h>

#include <vector>


using namespace std;


typedef vector< vector<int> > DoubleVector;


class TestClass

{

public:

    int return_test(void);

    int set_test(int i, int j, int val);

    DoubleVector get_test(void);

    int show_test(void);


private:

    DoubleVector test;


public:

    TestClass() : test(3, vector<int>(3))

    {

    }

    ~TestClass() 

    {

    }


};


int TestClass::set_test(int i, int j, int val)

{

    test[i][j]=val;

}


DoubleVector TestClass::get_test(void)

{

    return test;

}


int TestClass::show_test(void)

{

    for ( int i=0; i<3; i++ )

    {

        for ( int j=0; j<3;j++ )

        {

            printf("test[%d][%d] : %d\n",i,j,  test[i][j]);

        }

    }

}


int main()

{

    TestClass Test;

    DoubleVector tmp;


    printf("============= SET =================\n");

    for ( int i=0; i<3; i++ )

    {

        for ( int j=0; j<3;j++ )

        {

            Test.set_test(i, j, (i*3)+j);

        }

    }


    printf("============= SHOW ================\n");

    Test.show_test();


    printf("============= GET ================\n");

    tmp.clear();

    tmp = Test.get_test();


    printf("============= SHOW2 ================\n");

    for ( int i=0; i<3; i++ )

    {

        for ( int j=0; j<3;j++ )

        {

            printf("tmp[%d][%d] : %d\n", i, j, tmp[i][j]);

        }

    }

}



반응형
반응형



현재(2016년 09월)에는 minidlna의 rpm이 smi이 지원되는 버전의 패키지가 없어서 설치가 안된다(1.1.3).


현재 코드의 최신버전인 minidlna인 1.1.5를 설치해보았다.




압축 해제

tar xvf ./minidlna-1.1.5.tar.gz



필요 rpm 설치

# sudo apt-get install libavformat-dev libavutil-dev libavcodec-dev libflac-dev libvorbis-dev libid3tag0-dev libexif-dev libjpeg-dev libsqlite3-dev libogg-dev autopoint automake autoconf gettext checkinstall


컴파일

# ./configure

# ./autogen.sh

# make

# checkinstall



아래와 같은 구문이 나올경우 설치가 정상적으로 완료됨.


**********************************************************************


 Done. The new package has been installed and saved to


 /<path>/minidlna_src/minidlna-1.1.5/minidlna_1.1.5-1_armhf.deb


 You can remove it from your system anytime using:


      dpkg -r minidlna


**********************************************************************



버전 확인

# minidlnad -V


출력

Version 1.1.5



만약 service가 정상적으로 실행되지 않을 경우 src/linux에 있는 minidlna.init.d.script.tmpl 파일을 /etc/init.d/minidlna로 이동시킨 후 실행권한을 주고 아래와 같이 실행한다.

# cp ./src//linux/minidlna.init.d.script.tmpl /etc/init.d/minidlna

# chmod +x /etc/init.d/minidlna

# systemctl enable minidlna

# systemctl start minidlna


참조 출처 : http://xenolife.tistory.com/

반응형
반응형


아래의 방법은 라즈비안 기준입니다. 

centos rpi 3에서는 코드를 직접 다운받아서 설치하셔야 하며, 모든 dependency를 직접 설치하셔야 하고,

centos rpi 3의 repository에 없는 패키지는 직접 소스를 다운받아 설치하셔야 합니다.



패키지 리스트 업데이트 후 패키지 업그레이드

# sudo apt-get update

# sudo apt-get upgrade


minidlna 설치

# sudo apt-get install minidlna



dlna으로 접근할 경로 생성 및 전체 권한설정

# mkdir -p /media/Video

# mkdir -p /media/Music

# mkdir -p /media/Image

# chmod -R 777 /media


설정(/etc/minidlna.conf)에 미디어 경로 설정(format. media_dir=<V|A|P>,<Path>)

....

media_dir=V,/media/Video

media_dir=A,/media/Music

media_dir=P,/media/Image

...


설정(/etc/minidlna.conf)에 dlna server 이름 설정

...

friendly_name=MINIDLNA_SERVER

...


dlna 서비스 등록 및 서비스 재시작

# systemctl enable minidlna

# systemctl restart minidlna


LG TV에서 "외부 입력"에서 위에 설정한 friendly_name의 이름이 보여야 한다.

주의사항 : 다른 TV도 그런지 모르겠지만 LG TV에서는 같은 대역대에 있어야 제 기능을 하는 것 같다.

              (예. TV IP : 192.168.0.2/24일 경우 192.168.0.X IP만 검색이 되어진다)



반응형
반응형




ntp 패키지 설치

# yum search ntp

# yum install -y ntp


ntp.conf에 time.bora.net 추가

# vi /etc/ntp.conf


#server 0.centos.pool.ntp.org 

#server 1.centos.pool.ntp.org 

#server 2.centos.pool.ntp.org 

server -4 time.bora.net


zone 파일 교체

# cp /usr/share/zoneinfo/Asia/Seoul /etc/localtime


systemctl 에 ntp 활성화 및 시작

# systemctl enable ntpd

# systemctl start ntpd


시간 확인

# date




반응형
반응형




기본 Redhat 계열을 선호하는 지극히 개인적인 이유로 CentOS를 설치했다.

64GB SD카드를 꽂았으니 그에 맞게 Resize를 할 필요가 있는데 CentOS를 설치할 경우 "/root/' 경로에 "README"파일이 있는데아래와 같이 할 경우 automatically resize partition을 한다고 나와잇다.


touch /.rootfs-repartition

systemctl reboot



systemctl reboot을 하는 순간 이미지를 새로 설치를 해야 하는 상황이 오는데 

예전같았으면 이거 왜이래 하고 성질을 내겠지만 일을 하다보니 "automatic"이란 단어를 지원하기 위한것이 얼마나 어려운지 알게 된다. 저 파일을 바라보는 놈이 어떤놈인지 나중에 한번 뒤져봐야겠다.


parted를 통해 마지막 파티션을 삭제하고 남은 용량을 사용하게 하여 다시 64GB를 모두 인식하도록 수정하였다.


# parted /dev/mmcblk0

# p                                         확인

# rm 3                                     마지막 파티션 삭제

# p                                        확인

# mkpart primary 852 61.9G            파티션 2부터 남은 용량으로 새 파티션 생성

# p                                        확인

# quit                                     종료



# reboot                                  시스템 재시작



# df -h                                  확장 안됨 확인

# fdisk -l /dev/mmcblk0               fdisk로 변경한 파티션 생성 확인

# resize2fs /dev/mmcblk0p3          resize2fs로 파일시스템 확장

# df -h                                  정상 확장 정보 확인



반응형

+ Recent posts