2015년 3월 11일 수요일

리눅스 초기 설정

  • change repository & update
$ sudo sed -i 's/[^/]*.ubuntu.com/ftp.daumkakao.net/g' /etc/apt/sources.list
$ sudo apt-get update

  • Update packages
$ sudo apt-get --purge remove vim-tiny
$ sudo apt-get install vim

  • 디폴트 에디터 바꾸기
$ sudo update-alternatives --config editor
    vim or vim.basic 선택 

  • 패스워드 묻지 않고 sudo 를 실행하기 위한 설정
# visudo
username ALL=(ALL:ALL) NOPASSWD: ALL
<사용자> <호스트>=(유저권한) 명령
* 주의: 파일의 마지막에 추가

  • 사용자 추가
# adduser user

2015년 3월 1일 일요일

Building gnu netcat with mingw on cygwin

1. Download
$ wget http://sourceforge.net/projects/netcat/files/netcat/0.7.1/netcat-0.7.1.tar.bz2

2. Extract
$ tar jxf netcat-0.7.1.tar.bz2 

3. Patch
$ wget http://sourceforge.net/p/netcat/bugs/_discuss/thread/f8b0bf92/7d08/attachment/netcat-cygwin.patch
$ cd netcat-0.7.1
$ patch -p2 < ../netcat-0.7.1

4. Configure
$ ./configure --build=i686-pc-mingw32

5. Make
$ make
$ cp src/netcat.exe ~/bin/nc.exe

2015년 1월 18일 일요일

동영상 구간 자르기 및 합치기

구간 자르기

MP4Box
MP4Box -info original.mp4
MP4Box -out output.mp4 -splitx <start secs>:<end secs> original.mp4
ex) MP4Box -out output.mp4 -splitx 77:137 original.mp4

mkvtoolnix
mkvinfo original.mkv
mkvmerge -o output.mkv --split parts:<start time>-<end time> original.mkv
ex) mkvmerge -o output.mkv --split parts:1:17-2:17 original.mkv

합치기
MP4Box
MP4Box -cat input1.mp4 -cat input2.mp4 ouput.mp4

비디오, 오디오 합치기
MP4Box
MP4Box -add video.mp4 -add audio.m4a ouput.mp4

자막 합치기
MP4Box -add 자막.srt:hdlr=sbtl:lang=kor input.mp4 -out output.mp4
https://gist.github.com/wmanth/d08fb9fcc87dcf84ee5fd4a1d8b9d91c

2014년 10월 30일 목요일

bash 스크립트 작성할 때 주의점

http://mywiki.wooledge.org/BashPitfalls

프로세스 치환
http://mywiki.wooledge.org/ProcessSubstitution

2014년 8월 28일 목요일

vi 로 바이너리 편집

잊지 말자. vi 로 바이너리 편집하기

0.  실수를 대비해 파일 복사
$ cp <바이너리 파일> <바이너리파일>.mod

1. 파일을 바이너리 모드로 오픈
$ vi -b <바이너리 파일>.mod

2. hex dump로 변환 
:%!xxd -g1

3. 편집

4. binary 로 변환
:%!xxd -r

5. 저장
:wq

2014년 8월 25일 월요일

bash 에서 변수가 숫자인지 확인하기

방법 1.
http://stackoverflow.com/questions/806906/how-do-i-test-if-a-variable-is-a-number-in-bash

re='^[0-9]+$'
if ! [[ $yournumber =~ $re ]] ; then
   echo "error: Not a number" >&2; exit 1
fi

방법 2.
http://grzechu.blogspot.kr/2006/06/bash-scripting-checking-if-variable-is.html

if [ $VARIABLE -eq $VARIABLE 2> /dev/null ]; then
   echo $VARIABLE is a number
else
   echo $VARIABLE isn't a number
fi

2014년 6월 16일 월요일

-Wdeprecated-declarations 경고 없애기

gcc -Wall 로 컴파일 할 때 -Wdeprecated-declarations 경고가 발생하는 경우

1. 경고가 생기지 않는 함수를 사용

2. 경고를 표시하지 않도록 함
2-1. 커맨드 라인에서 지정(모든 함수에 적용)
-Wno-deprecated-declarations 옵션 추가

2-2. #pragma 사용(이후의 모든 함수에 적용)
소스나 헤더에 다음을 추가
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"

2-3 #pragma 사용2(해당 함수 사용 부분에만 적용)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
warning_function();
#pragma GCC diagnostic pop

2-4 매크로에 끼워 넣기
#define LOG(level, ...) \
    do { \
        _Pragma("GCC diagnostic push") \
        _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") \
        LogPrint(level, __VA_ARGS__); \
        _Pragma("GCC diagnostic pop") \
    } while (0)

참고
deprecated 는 사용 가능하지만 다른 함수의 사용을 권장하는 경우
obsolete 는 사용할 수 없게 된 함수인 경우