IT관련 지식들 2017. 3. 8. 09:54

스마트 카드에서 데이터를 읽어서 출력할 일이 생겨서 알아보던 중 libusb를 이용하여 통신하는 방법을 찾았다.


1. 준비물

  - 스마트카드 리더기 : HID omnikey 

      - lsusb로 리더기 확인

      

      - 스마트카드 리더기 드라이버 : 링크 클릭

        - 32bits, 64bits 에 따라 링크가 다를 수 있으니 참고할 것.


  - libusb 설치

    - sudo apt-get install libusb-1.0-0-dev

    - 설치 전

      

    - 설치 후

        


2. 헤더

  - #include <libusb-1.0/libusb.h>

      

3. makefile

  - 동적 할당 라이브러리 추가.

  - CC main.c -lusb-1.0 -o main

      



테스트

- 아래와 같이 파일을 작성하여 libusb_init()함수의 동작을 확인함.

- 추후 함수 사용법에 대해서 추가 블로그 작성 예정.


  1 #include <libusb-1.0/libusb.h>

  2 #include <stdio.h>

  3 #include <sys/types.h>

  4

  5 int main(int argc, char *argv[])

  6 {

  7   int r = 0;

  8   int rv = 0;

  9   int cnt = 0;

 10   libusb_device *dev;

 11   struct libusb_device_handle *dev_handle;

 12   libusb_context *ctx = NULL;

 13

 14   r = libusb_init(&ctx);

 15   printf("init : %d \n", r);

 29   return 0;

 30 }



posted by 동글동글82
:
IT관련 지식들 2017. 2. 23. 14:31

우분투에서 계정을 추가, 삭제하고 그룹에 더하고 빼는 등 계정을 관리하는 명령어에 대해서 알아본다.


1. adduser [계정이름]

- 계정 생성시 비밀번호까지 입력 받음.


2. useradd [옵션] [계정이름]

- 순수하게 계정만 추가.

- 사용해본 옵션

  -m : 계정이름으로 홈 디렉토리 생성 및 지정.

  -g [GROUP_NAME] : 그룹 추가.


3. passwd [계정이름]

- 계정의 비밀번호 변경.

- useradd로 생성한 경우, 비밀번호가 설정되지 않기 때문에 꼭 필요.


4. deluser [계정이름]

- 계정 삭제. (홈 디렉토리는 삭제되지 않음)


5. /etc/passwd 파일 확인

- 생성한 계정에 대한 정보를 볼 수 있음.

계정명 : 암호 : 사용자ID : 그룹ID : 코멘트 : 홈디렉토리 : 시작 쉘


6. usermod [옵션] [계정이름]

- 계정에 대한 변경.

  -G [그룹명] : 그룹에 계정 추가.

* cat /etc/group

* sudo usermod -G test01 test02

* cat /etc/group


7. gpasswd [옵션] [그룹이름]

- 그룹을 관리하는 명령어

  -a [계정이름] [그룹이름] : 계정을 그룹에 추가.

    ex) $sudo gpasswd -a test01 group01







posted by 동글동글82
:
IT관련 지식들 2017. 2. 13. 10:52

gettimeofday함수가 posix표준에서 빠지고 새로 생신 함수 clock_gettime함수를 사용하여 디버그에서 시간을 출력해보았다.


예제


#include <stdio.h>

#include <time.h>


//------------------------------------------------------------------------------

// 설명 : 디버그 프린트

//------------------------------------------------------------------------------

int debug_printf( const char *fmt, ... )

{

va_list ap;

int len;


struct timespec time;

struct tm *ptm;


if ( 0 == clock_gettime( CLOCK_REALTIME, &time)) {

ptm = localtime(&time.tv_sec);

printf("%02d%02d%02d%02d%02d%02d]",(ptm->tm_year%100), ptm->tm_mon+1, ptm->tm_mday

, ptm->tm_hour, ptm->tm_min, ptm->tm_sec);

}


va_start(ap, fmt);

len = vprintf(fmt, ap);

va_end(ap);

return len;

}


아래는 각 함수의 선언부분을 찾아봤다. clock_gettime함수는 second, ms에 ns까지 구할 수 있다.

#include <time.h>
int clock_gettime(clockid_t clock_id, struct timespec *tp);
    struct timespec {
            time_t   tv_sec;        /* seconds */
            long     tv_nsec;       /* nanoseconds */
    };
--------------------------------------------------------------
#include <sys/time.h>
int gettimeofday(struct timeval *restrict tp, void *restrict tzp);
    struct timeval {
            time_t      tv_sec;     /* seconds */
            suseconds_t tv_usec;    /* microseconds */
    };



출처: http://sunyzero.tistory.com/161 [IT 지식 창고]

posted by 동글동글82
:
IT관련 지식들 2017. 1. 17. 10:51

문제 상황

- apt-get 명령어로 업그레이드, 업데이트, 패키지 설치를 하는데 아래와 같은 에러메시지가 나오는 경우.


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

오류 http://kr.archive.ubuntu.com/ubuntu/ trusty-backports/main libcgmanager0 i386 0.39-2ubuntu2~ubuntu14.04.1

  'kr.archive.ubuntu.com'의 주소를 알아낼 수 없습니다

...

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


다들 미러서버 문제라고 하여 아래와 같은 해결책을 제시한다.


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

kr.archive.ubuntu.com으로 잡혀있을 경우

CODE: SELECT ALL

sudo vi /etc/apt/sources.list

:%s/kr.archive.ubuntu.com/ftp.neowiz.com/g

:wq



다음 서버로 잡혀있을 경우

CODE: SELECT ALL

sudo vi /etc/apt/sources.list

:%s/ftp.daum.net/ftp.neowiz.com/g

:wq

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


하지만 내 경우는 DHCP 유동 아이피를 고정아이피로 변경을 했더니 나오는 문제였다.


ip설정에 DNS 서버를 추가하면 문제가 해결된다.






'IT관련 지식들' 카테고리의 다른 글

우분투 계정 관리  (0) 2017.02.23
clock_gettime함수  (0) 2017.02.13
윈도우즈 git 설치 및 사용.  (0) 2016.11.18
python 에서 v4l2 모듈이 없다고 나올 때.  (0) 2016.11.04
ccollaborator 설치(코드리뷰)  (0) 2016.10.31
posted by 동글동글82
:
IT관련 지식들 2016. 11. 18. 17:27

1. 설치

  - git 프로그램과 tortoiseGit을 둘 다 설치하는 것이 편리합니다.

  - git 프로그램 다운로드

https://git-scm.com/downloads


  - tortoiseGit & 언어팩 다운로드

https://tortoisegit.org/download/


32bit, 64bit를 잘 확인하고 파일을 실행합니다.


특별히 변경하는 사항 없이 "다음"을 누르면 문제없이 설치 됩니다.


2. 사용 방법.

  2.1 계정 등록.

  - 윈도우 탐색기에서 우클릭 -> 설정


   - git -> 사용자 정보와 이메일 주소 입력.

posted by 동글동글82
:
IT관련 지식들 2016. 11. 4. 11:03

인터넷 검색 결과 python-pip란 패키지를 찾았다.

설치를 하고 사용방법을 확인했다.

v4l2 모듈을 설치

모듈이 없다는 에러는 사라졌다. 다만 프로그램 버그만 남았다.



posted by 동글동글82
:
IT관련 지식들 2016. 10. 31. 14:36


코드리뷰 툴을 찾던 중 설치가 간편한 툴이 있어서 설치해보았다.


스마트베어 다운로드 페이지 에서 툴을 다운 받는다.


윈도우용과 리눅스 용 중에 리눅스 서버용 프로그램을 받았다. 설치 가이드 pdf파일도 같이 받으며 설치가 편리하다.


SmartBear-Collaborator-Admin-Guide.pdf


ssh 접속으로 파일을 실행시켰더니, UI가 필요하니 다시 실행하라는 문구가 나온다. 어쩔 수 없시 리눅스용 본체에 키보드와 마우스를 연결하여 실행하였다.


pdf파일에 나온 화면들이 나오면서 셋팅을 도와준다.


설치가 완료되면 정해진 port로 접속하면 사용이 가능하다.



'IT관련 지식들' 카테고리의 다른 글

윈도우즈 git 설치 및 사용.  (0) 2016.11.18
python 에서 v4l2 모듈이 없다고 나올 때.  (0) 2016.11.04
Git 사용.  (0) 2016.10.26
우분투에서 잡히지 않은 하드 설정.  (0) 2016.10.26
strdup 함수  (0) 2016.09.07
posted by 동글동글82
:
IT관련 지식들 2016. 10. 26. 16:22

1. 상황

  - odroid 보드와의 samba 연결이 용이하지 않아서 아래와 같은 그림으로 구성하여 프로그램을 편집, 실행하고자 한다.



2. 내용

  - git 설치 및 등록은 연결된 페이지를 참고한다.

  2.1. 저장소


    - 초기화

~/gitrepository/projectNo1$ git init


  2.2 편집소

    - 초기화

      ~/project/projectNo1$ git clone ~/gitrepository/projectNo1


    - 프로그램 복사

      ~/project/projectNo1$ cp ../projecttemp/* .


    - 프로그램 저장

      ~/project/projectNo1$ git add *

      ~/project/projectNo1$ git commit -m "first release"


* error 발생. 

  - 원인 : empty 폴더를 clone하는 경우 bare false설정으로 commit이 불가능해짐

  - 해결방법

    - 저장소(save)에서 아래 명령어를 입력하여 bare 가 가능하도록 수정.

    ~/gitrepository/projectNo1$ git config --bool core.bare true


    - 이후 commit명령어를 다시 입력하면 저장한 자료를 저장소로 전송.


  2.3. 실행


    - 초기화

형식 : "git clone 사용자명@호스트:/원격/저장소/경로"

~/project/projectNo1$ git clone kangmin@192.168.128.7:~/gitrepository/projectNo1


   - 이후 수정된 사항이 있는 경우.

~/project/projectNo1$ git pull

posted by 동글동글82
:
IT관련 지식들 2016. 10. 26. 11:17

1. 증상 

  - Odroid보드를 사용하면서 32GByte SD메로리를 사용하였는데, 아래와 같이 32GB전체를 사용하지 못함.



2. 해결방법

  - fdisk명령어로 새로 파티션 설정.

  - 디스크 접근

  

    - add a new partition : n

      - 파티션 타입은 extended로 잡음.

      - 파티션 타입을 extended로 잡으면 이후 mkfs가 진행되지 않음. 따라서, primary로 포맷필요.

      - 파티션 번호는 기본값이 3으로 잡음.(1,2가 이미 잡혀서 3으로 잡힙)

      - 시작 섹터 : part2의 마지막 값보다 1 큰 값을 지정(10751999+1)

      - 끝 섹터 : 기본값, 최대값을 사용.

<아래 명령어 참고.>


    - check(print) the partitions : p


  - 파티션이 생겨서 저장하고 나가면 무슨 말을 함.

  - 이렇게 나옴


  - 파일시스템에 맞춰서 포맷


  - 리부팅을 하면 아래와 같이 마운트 된 것을 확인할 수 있습니다.



 - /media/odroid/ad1d2906-4962-4cf0-b5a2-4fc9d936dd43 에 마운트 되었습니다.


 - mount 위치 변경


  - 리부팅 혹은 재 마운트

or


- 확인



끝!!!








'IT관련 지식들' 카테고리의 다른 글

ccollaborator 설치(코드리뷰)  (0) 2016.10.31
Git 사용.  (0) 2016.10.26
strdup 함수  (0) 2016.09.07
리눅스 파일 전송 명령어(scp)  (0) 2016.09.01
ubuntu mount 명령어.  (0) 2016.08.18
posted by 동글동글82
:
IT관련 지식들 2016. 9. 7. 15:57

strdup 함수

- 복사할 문자열 메모리에 맞는 메모리를 확보한 후 문자열을 복사, 확보한 메모리 포인터를 반환한다.


format : char *strdup(const char *str);

parameter : char *str 복사할 문자열

return : 확보한 문자열 메모리의 첫 주소를 반환.


예제)

#include <stdio.h>
#include <string.h>

int main( void)
{
   char *ptr;
  
   ptr = strdup( "forum.falinux.com");
   printf( "%s\n", ptr);

   return 0;
}


'IT관련 지식들' 카테고리의 다른 글

Git 사용.  (0) 2016.10.26
우분투에서 잡히지 않은 하드 설정.  (0) 2016.10.26
리눅스 파일 전송 명령어(scp)  (0) 2016.09.01
ubuntu mount 명령어.  (0) 2016.08.18
DateX-ASN.1  (0) 2016.08.12
posted by 동글동글82
: