반응형


이전


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                                  정상 확장 정보 확인



반응형
반응형




NTP를 설치하고 ntpd를 아무리 재시작하고 기다려도 계속 새벽 시간에서 변경이 되지 않는다. 

ntp.conf에 다른 설정을 모두 지워도 시간이 변경되지 않아 ntpq -q로 query를 주어보아도 Pear List를 확인해봐도 bora.time.net으로 아래와 같이 설정이 잘 되어 있는 것을 확인했다.


     remote           refid      st t when poll reach   delay   offset  jitter

==============================================================================

*time.bora.net   90.1.14.51       2 u   66   64    1    4.468  -10.283   0.001


왜 이럴까 하다고 혹시 지역 설정이 제대로 안되면 다른 지역의 설정을 가져오는 거 아닐까 해서 시간으로 확인을 해보니 정확하게 뉴욕 워싱턴과 일치 했다. 한국으로 설정이 되어있지 않고 워싱턴으로 설정 되어있으니 얘는 제대로 동작했는데 나만 왜안되지 이러고 있었구나...


매번 지역은 GUI로 설치하면서 그냥 클릭하고 넘어가서 제대로 몰랐는데 이번엔 GUI를 사용하지 않았으니 이런 실수가 있었나보다. 제대로 서울로 설정해주자.


/etc/localtime을 backup으로 보관해두자.

# mv /etc/localtime /etc/localtime.bak


/usr/share/zoneinfo 위치에 지역별 폴더가 있고 그 지역 폴더 안에 도시 정보가 있다. 

서울로 설정하니 Seoul이 정상적으로 있는지 확인한 후 이 파일을 /etc/localtime으로 변경해준다.

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


재 적용하여 ntp를 다시 적용하기 위해 ntpd를 restart해준다.

# service ntpd restart


date 명령어로 제대로 현재 시간으로 설정되었는지 확인한다.

# date


반응형
반응형




아래와 같은 명령어로 dwarf 정보를 확인할 수 있다.


# readelf --debug-dump=info <binary> | grep -A 2 'Compilation Unit @'


실행 결과 :  


--

  Compilation Unit @ offset 0xccfed:

   Length:        0xc1fd (32-bit)

   Version:       4

--

  Compilation Unit @ offset 0xd91ee:

   Length:        0x43e (32-bit)

   Version:       4

--

  Compilation Unit @ offset 0xd9630:

   Length:        0x50a7 (32-bit)

   Version:       4

--

  Compilation Unit @ offset 0xde6db:

   Length:        0x348e (32-bit)

   Version:       4


반응형
반응형








출처 : http://packetlife.net/media/library/36/scapy.pdf

반응형
반응형





Linux에서 작업하다 보면 실수로 Ctrl+S가 눌리는 경우가 있다(보통 Ctrl+W를 누르려다 종종...)

그럴때면 아무것도 되지 않는데, 이게 무슨 버그나 아니면 터미널에 지원되지 않는 시그널이 전송되서 

세션에 문제가 생겼나 이런 생각도 들었었다(세션에 문제가 생기기엔 장시간 기다려도 안되더라..)


Unix계열 시스템에서 흔히 사용하는 제어 키 중에 하나로 아래와 같은 종류가 있다.

Ctrl + s : 현재의 모든 Output을 중지

Ctrl + q : Stop 되었던 모든 Output을 다시 동작

Ctrl + c : 현재 실행되는 Process를 Kill

Ctrl + d : 현재의 Shell 에서 Out ,"EOF(End Of File)" , 표준 입력에서 입력을 종료

Ctrl + l : Formfeed(shell clear)

Ctrl + z : 현재 실행 중인 프로세스를 Background로 Stop 시킴

Ctrl + b : 1 Character 커서를 뒤로 이동

Ctrl + f : 1 Character 커서를 앞으로 이동

Ctrl + p : 지난 1 Line을 붙여넣기함


이제 실수로 Ctrl + s로 화면을 멈추었다면 Ctrl + q로 다시 동작 시키자.






반응형

+ Recent posts