[Git] 직전 commit 내용 수정 (커밋 합치기) 이미 커밋된 내용에 철자 오류 같이 자잘한 실수 가 있을 경우 새로운 커밋을 하기보단 이전 커밋 내용을 변경하는 것이 낫다 (정확히는 새로운 변경을 커밋 후 직전의 커밋과 합치는 것이다). 위의 그림처럼 typo miss 라는 철자 오류가 작성된 Add feature-C라는 커밋이 있다고 가정하자. 우선 이 typo miss 철자 오류를 수정하고 Fix typo 라는 커밋을 합니다. 이제 git rebase 명령어를 통해 Fix typo 커밋과 Add feature-C 커밋을 합치겠습니다 (Fix typo 커밋을 Add feature-C 커밋으로). $ git rebase -i HEAD~2 위의 명령어를 입력하면 최신 브런치(HEAD)를 포함한 두 ..
직전에 작성했던 commit 메시지 수정 직전에 작성했던 커밋 메시지를 수정하고 싶을 때는 git commit --amend 명령어를 사용 $ git commit --ammend 해당 명령어를 실행하면 에이터가 실행되고 방금 입력했던 commit 메시지가 나옵니다. 이를 수정하고 저장, 종료를 해주시면 됩니다. (에디터에 따라 저장 종료 방법은 다릅니다.)(git 에디터를 설정하고 싶으면 git config --global core.editor "vim" 와 같이 설정해주시면 됩니다.) git log --graph 명령어로 확인해보면 정상적으로 commit 메시지가 변경되었음을 확인할 수 있습니다.
라즈베리파이에서 V4L2기반의 OpenCV를 설치하는 내용을 다루겠습니다. 우선 V4L2(Video4Linux2)에 대해서 설명하자면, 리눅스에서 카메라 입력을 받기 위한 표준 디바이스로서 V4L2를 설치 후 활성화 시에 사용자 프로그램이 커널을 통해 I/O요청을 확인하고 장치 드라이버로 전송이 이루어지는 것이 가능해집니다. 이러한 것처럼 사용자 프로크램이 커널을 통해 시스템 하드웨어에 접근 할 수 있도록 /dev/video0 라는 파일이 생성됩니다. 사용자는 /dev/video0 을 통해 자료을 읽거나 기타 장치로 자료를 전송이 가능합니다. (/dev/video0 의 숫자 0은 인덱스 번호입니다.) V4L2 는 OpenCV를 포함한 여러 소프트웨어들을 지원합니다. 우선 라즈베리파이에 접속을 합니다. 직..
Window 운영체제에서의 OpenCV 2.4.9 설치와 Visual Studio 2012 기준으로 작성하였습니다.버전별 변경 방법도 내용에 기재되어있습니다. 1. OpenCV 윈도우 버전용 다운로드 및 설치 OpenCV 2.4.9 다운로드 http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.9/opencv-2.4.9.exe/download 그 외 버전 다운로드http://opencv.org/downloads.html exe 파일을 다운받아 실행을 시키면 아래 그림과 같이 설치경로를 지정할 수 있습니다.(파일 오른쪽 클릭하여 관리자 권한으로 실행해주세요) 원하시는 곳에 설치를 해주시면 됩니다. 보통 C드라이버나 C:\Program Fil..
이전글 - 해슁(Hashing) / 해쉬 알고리즘 / 해쉬 함수 충동 해결(Collision Resolution)에는 크게 두 가지 방법이 있다. 첫 번째는 체이닝(Chaining)으로 해쉬 테이블의 각 주소가 연결 리스트의 헤더 역활을 하고, 여기에 해당 주소로 들어오는 원소들이 연결 리스트(Linked List)로 매달린다. 두 번째는 개방 주소 방법인데, 체이닝처럼 추가 공간을 사용하지 않고 해쉬 테이블 안에서 충돌을 해결한다. 원래 들어갈 자리가 아니더라도 테이블의 다른 자리를 찾아 들어가게 된다. ① 체이닝(Chaining) 체이닝에서는 같은 주소로 해슁되는 원소를 모두 하나의 연결 리스트에 매달아 관리한다. 위 의 그림처럼 h(39) = h(13) = 0 인 경우 해쉬테이블의 0 인덱스는 39..
해쉬 테이블(Hash Tables) 일반적인 검색트리는 원소 하나를 저장하고 검색하는 데 평균적으로 의 시간이 걸리고, 최악의 경우 의 시간이 걸린다. 저장된 자료의 양에 상관없이 원소 하나를 저장·검색하는 데 항상 상수 시간에 가능하게 할 수 없는지 사람들은 요구하게 되었고, 이 꿈을 실현한 것이 해시 테이블이다. 해시 테이블은 자료의 저장·검색에 있어 극단적인 효율에 다다른 자료구조이다. 해시(Hash) 테이블은 원소의 값에 의해 결정되는 자료구조이다. 즉, 저장된 자료와의 비교를 통해 자리를 찾지 않고 단 한번의 계산으로 자리를 찾는다. 해쉬 함수 임의의 원소를 해시 테이블에 저장하려면 먼저 해당 원소의 해시값을 계산한다. 해시값은 해시 함수에 의해 계산된다. 해시 함수는 키값을 입력으로 받아 해시..
힙정렬(Heap Sort)은 힙(Heap)이라는 특수한 자료구조를 사용하는 정렬 알고리즘이다. 힙은 최소힙(Minimum Heap)과 최대힙(Maximum Heap)이 있는데 값이 저장되는 방향만 반대일 뿐 성질은 똑같다. 우선 힙(heap)에 대해서 설명하면, 힙은 이진트리(Binary Tree)로서 맨 아래 층을 제외하고는 완전히 채워져 있고 맨 아래층은 왼쪽부터 꽉 채워져 있다(nearly complete binary tree). 힙은 최소힙, 최대힙에 따라 다음의 성질을 가지고 있다. 최소힙(minimum heap)의 성질각 노드의 값은 자신의 자식의 값보다 작다. 최대힙(maximum heap)의 성질각 노드의 값은 자신의 자식의 값보다 크다. 위의 그림은 최대힙(maximum heap)의 예를..
퀵정렬(Quick Sort)는 평균적으로 좋은 성능을 가져 현장에서 가장 많이 쓰이는 정렬 알고리즘이다. 최악의 경우(Worst-Case) Θ(n^2)의 시간복잡도를 가져 Θ(nlogn)의 시간복잡도를 가지는 병합정렬, 힙정렬보다 성능이 안좋아보일 수 있으나 평균적인 성능은 어떤 정렬에도 뒤떨어지지 않는다. 퀵정렬(Quick Sort)는 배열의 한 원소를 기준(피봇, pivot)으로 삼아 피봇보다 작은 수들은 피봇의 앞으로, 피봇보다 큰 수들은 피봇의 뒤로 보낸다. 정렬되지 않은 피봇의 좌우는 재귀적으로 문제를 해결하여 배열 전체가 정렬이 되도록 한다. 예를 들어 설명하면 다음과 같다. 이 예는 배열의 젤 뒷원소를 피봇으로 삼아 퀵정렬(Quick Sort)를 수행하는 경우이다. 피봇인 15보다 작은 수들..
