제임스딘딘의
Tech & Life

개발자의 기록 노트 138

[GPS 이야기] NMEA-0183 형식, NMEA Sentence Format

만약 당신이 GNSS와 직접적으로 관련된 일을 한다면. 혹은 간접적으로 GPS등과 같은 것을 통해 얻은 위치정보등을 다뤄야 할 일이 있다면. 조만간 'NMEA' 라는 것을 마주하게 될 수도 있다. 위치정보라는것은 어떤 목적으로 활용하느냐에 따라 다뤄야 하는 데이터는 달라진다. 현재 위치에 기반하여 날씨정보를 보여주는 어플리케이션처럼 간단히 위도, 경도만 알면 되는 경우가 있는가 하면, 목적지까지 경로를 알려주는 내비게이션 어플리케이션처럼 때로는 위도, 경도 뿐만아니라 속도, 위치정확도 오차값, 방향.. 등을 알아야 하는 경우도 존재 한다. 또한 종종 등산 트래커 어플리케이션처럼 고도를 활용하는 경우도 있다. 사실 고가의 GPS가 아닌 이상, 스마트폰과 같은 저렴한 GPS칩이 주는 고도값은 부정확하다고 알..

[우분투] 우분투 16.04 런처(Launcher) 위치 바꾸기

개요우분투에는 '런처(Launcher)'라 불리는 것이 있다.MS의 윈도우 운영체제와 비교하자면, '작업표시줄' 과 비슷한 것 쯤으로 이해하면 쉽다. 그동안의 우분투 LTS 버전들에서는 이 런처의 위치가 왼쪽에 세로로 고정되어 있었다.아래 그림과 같이 말이다. 런처 위치 변경 명령어우분투 16.04 에서는 드디어 런처의 위치를 변경할 수 있게 되었다.방법은 간단하다. shell에서 명령어 한줄이면 된다. /* 런처를 왼쪽에 위치함 */ $ gsettings set com.canonical.Unity.Launcher launcher-position Left /* 런처를 아래쪽에 위치함 */ $ gsettings set com.canonical.Unity.Launcher launcher-position Bo..

jQueryScript.net - jQuery Script Plugin 예제 제공 사이트

jQuery Script Plugin 예제를 찾다 보니, 굉장히 퀄리티 높은 예제들을 제공하는 사이트인 jQueryScript.net 을 찾게 되었다. 연결 : http://www.jqueryscript.net/ 나는 ... 의 헤더 태그를 이용해서 자동으로 포스팅의 목차를 만들어주는 기능을 구현해보려고 하던 참이었다.이미 이러한 류의 javascript플러그인들이 상당 수 존재 했다. 직접 구현하기보다는, 잘 구현된 플러그인을 가져다 사용하는 방향을 택하기로 했다.이런 류의 플러그인들은 'TOC (Table Of Contents)' 플러그인 으로 통칭되고 있는것 같다. 그리고, 'TOC javascript plugin' 키워드로 검색을 하다보니, 지금 소개하는 jQuery Script.net을 찾게 되..

[리눅스/Vi] vi editor 문자열 치환(replace) 방법

개요 리눅스 환경에서 코드를 작성하다 보면, 종종 vi editor 혹은 vim editor를 사용해서 코드의 특정 단어를 다른 단어로 교체(replace) 해야 하는 상황이 종종 있다. 즉, 특정 문자열을 치환해야 하는 경우이다. 예를들면, 현재 소스코드 파일에서 'apple_result' 이라는 변수를 모두 'melon_result' 라는 변수로 바꾸어야 하는 상황 같은 것 말이다. 상황에 따라 아래와 같은 몇가지 방법이 있다.우선 ex모드로 진입해야 한다. 1. 현재 문서를 편집중인 '편집모드'라면, 키보드의 ESC 키를 눌러 편집모드에서 명령모드로 나온다.2. 콜론(:)을 눌러 ex모드로 진입한다.3. ex모드에서 아래와 같은 방법들 중, 자신의 상황에 맞는 방법을 선택해 수행하면 된다. 혹시, ..

[네트워크/C] addrinfo 구조체

이 포스팅은 POSIX/리눅스에서 C 언어를 사용한 네트워크 소켓 프로그래밍과 관련된 글이다. addrinfo 구조체는 네트워크 주소정보(인터넷 주소)와 호스트이름을 표현하는데 사용되며, 이 정보는 bind( ), connect( )호출 시 입력 파라미터에 사용될 수 있다.또한 getaddrinfo( ) 함수 호출 시, hint 정보를 알리는 입력 파라미터로 사용할 수 있으며, getaddrinfo( ) 함수의 결과값을 전달하는 출력 파라미터로도 사용된다. 관련 헤더struct addrinfo를 코드에서 사용하기 위해서는 아래 헤더파일을 포함시키면 된다. #include 구조체 원형 struct addrinfo { int ai_flags; /* 추가적인 옵션을 정의 할 때 사용함. 여러 flag를 bit..

[네트워크/C] getaddrinfo 함수

개요 getaddrinfo는 domain address를 받아서 네트워크 주소 정보(IP address)를 가져오는 함수이다. 예를들면, http://www.google.co.kr라는 domain address가 있는데, 이 주소는 사람이 알아보기 쉬운 주고이긴 하지만, 컴퓨터는 이 주소를 가지고 해당되는 구글의 서버를 찾아가지 못한다. 그래서 이 domain address와 대응되는 IP주소가 무엇인지를 알아 낸 뒤에 그 IP주소로 연결을 해야한다. 즉, Domain address -> IP address 변환을 하고 싶을 때 사용하는 함수라는 뜻이다.이걸 전문용어로 DNS (Domain Name System/Service) resolving 이라고 한다. getaddrinfo 함수는 총 4개의 매개변..

[네트워크/C] sockaddr, sockaddr_in, sockaddr_un 구조체 - 소켓 주소 정보를 나타낸다

기본 지식'Socket Address Structures' 에 관해서 설명하는 글이다. 리눅스/유닉스 시스템에서는 소켓(socket)의 통신 대상을 지정하기 위해 '주소(address)'를 사용한다. 이 '주소' 라는 것을 저장하거나 표현하는데 사용하는 구조체가 바로, 본 포스팅에서 설명하고자 하는 'struct sockaddr' 이다. bind( ), connect( ) 와 같은 함수들이 2번째 매개변수로써 바로 이 'struct sockaddr' 을 받는다. 이 struct sockaddr은 기본 형태이고, 주소체계(Address family)값에 따라서 구조체를 형변환 해서 사용하면 편리하다. 즉, 일반적으로 개발을 하다보면 struct sockaddr_in, struct sockaddr_un, s..

[네트워크/C] ifreq 구조체 (struct ifreq)

관련 헤더 #include #include 설명linux에서 네트워크 장치의 설정과 관련된 대부분의 ioctl( ) 호출에 세번째 인자로 사용하는 구조체이다.참고로, linux의 ioctl( ) 호출시 첫번째 인자는 file descriptor인데, family나 type과 관계없이 어떠한 소켓 file descriptor라도 사용할 수 있다.구조체의 멤버변수는 아래와 같다. struct ifreq { char ifr_name[IFNAMSIZ]; /* Interface name */ union { struct sockaddr ifr_addr; struct sockaddr ifr_dstaddr; struct sockaddr ifr_broadaddr; struct sockaddr ifr_netmask; st..

[우분투] Ubuntu 16.04 삼바(Samba) 설치 및 사용하기

윈도우 PC와 리눅스 PC 두대를 사용해서 개발등을 하다 보면, 두 PC간에 파일을 빈번하게 이동할 일이 발생한다.이럴때 선택할 수 있는 방법은 여러가지가 될 수 있다. 우선 USB메모리나, 외장 하드디스크와 같은 저장장치를 이용할 수도 있다.혹은 이메일이나 메신저의 파일전송 기능, 혹은 인터넷 게시판에 업로드 하는 방법 등으로 전달할 수도 있다.좀더 우아한 방법으로는 one drive나 google drive 혹은 dropbox와 같은 클라우드 저장소를 활용할 수 도 있다. 그러나 이 방법도 한번 고려해 보자.'Samba' 라는 프로그램을 활용해서 우분투의 디렉토리를 공유 디렉토리로 만들고, 윈도우에서 접근 할 수 있는 방법이다. Samba 설치하기 우분투 shell에서 apt 커맨드로 간단히 설치할 ..

[우분투] Ubuntu 16.04 화면 캡쳐 방법

우분투를 사용하면서 화면을 캡쳐해야 할 경우가 종종 있다.우분투 16.04 사용하기 시작한지 2일째인데, 의외로 유용한 기능이 많은 것 같다.그것 중 하나가, 다양한 방식의 화면 캡쳐 기능을 제공하는 것이다. 참고로 우분투 16.04 에서는 화면 캡쳐를 스크린샷(Screenshot) 이라는 용어로 표현하고 있었다. 우분투는 다음과 같이 총 6가지의 스크린샷 찍기 방법을 제공하고 있다. 스크린샷 찍기 / 활성화 된 창의 스크린샷 찍기 / 영역의 스크린샷 찍기클립보드로 스크린샷 복사 / 활성화 된 창의 스크린샷을 클립보드로 복사 / 영역의 스크린샷을 클립보드로 복사 각 방법에 대해 단축키를 살펴보자.당신이 설정을 변경하지 않았다면, 이 글에서 소개하는 기본 단축키가 동작할 것 이다. 스크린샷 찍기 단축키 :..