기본 콘텐츠로 건너뛰기

5월, 2013의 게시물 표시

Cygwin에서 홈 디렉토리의 위치

이상한 일이다. 어제 내 PC의 Cygwin bash shell에서 개발서버에 좀 더 편하게 접속하기 위하여 암호를 입력하지 않는 방식으로 ssh를 사용하여 서버에 로그인할 수 있도록 설정하였다. 그런데 오늘 출근해서 다시 서버에 로그인하려고 하니 암호를 입력하라고 묻는다. 그래서 혹시 서버에서 public key를 저장해 놓는 authorized_keys 파일에 어떤 변경이 가해졌는지 살펴 보았더니 이상이 없다. 이번에는 내 PC에 저장해 놓은 key pair가 정상인지 확인해 보기 위하여 아래와 같은 명령을 실행해 보았다.   $ cd .ssh   $ ls -l 어라! 어제 ssh-keygen으로 생성해 놓았던 key pair가 보이지 않는다. 이게 어찌된 일인가? 정상이라면 다음 두 개의 파일이 있어야 한다.   id_rsa   id_rsa.pub 나중에 발견하게 된 일이지만, 특이하게도 Cygwin bash shell을 실행할 때 사용자의 홈 디렉토리 위치가 일정하지 않았다. 이를 확인해 보기 위하여 다음과 같은 순서로 bash shell을 실행해 보자. 참고로 내 PC의 환경은 아래와 같다.   Cygwin 설치 디렉토리 - C:\Apps\cygwin   Windows 사용자 홈 디렉토리 - D:\Profiles\myid 1) 시스템에서 첫번째 bash 프로세스가 실행될 때에는 아래 위치를 사용자의 홈 디렉토리로 사용한다.   C:\Apps\cygwin\home\myid 2) 이번에는 다른 DOS창을 열어서 bash shell을 실행해 보았다. 이것은 두 번째의 bash 프로세스를 생성하는 것이다. 이 bash shell은 아래 디렉토리를 홈 디렉토리로 사용한다.   D:\Profiles\myid 3) 계속해서 bash shell을 실행하고 홈 디렉토리를 확인해 보면 2)번의 결과와 같음을 알 수 있다. 4) 현재 실행중인 모든 bash...

[BLE] 저전력 블루투스 이해 - 프러파일, 서비스, 특성, 속성

1. 들어가기 저전력 블루투스를 응용하여 애플리케이션을 개발하고자 한다면 소프트웨어 개발자 입장에서 꼭 이해해야 할 용어들이 있다. 그 중에 네 가지를 꼽으라면 아래와 같다.     1) 프러파일 (profile)     2) 서비스 (service)     3) 특성 (characteristic)     4) 속성 (attribute) 특성과 속성은 영문이나 우리말로 번역한 것이나 어감이 다소 어색하고 의미가 모호하게 느껴지지만, 자주 사용하다 보면 익숙해질 것이다. 이해를 돕기 위하여 정확히 일치하지는 않지만 명절 때 주고 받는 종합선물세트에 비유해 보았다.     1) 프러파일 명세서는 상품 목록과 소개서이다. 주문을 통해서 받는 대상이 아니라 잠재적인 구매자에게 제공하는 정보이다.     2) 서비스 명세서는 종합선물세트의 내용물을 규정한다. 서비스는 종합선물세트이다.     3) 특성은 종합선물세트에 담긴 물품이고, 구매자가 실제로 이용하는 것이다.     4) 속성은 각각의 물품을 놓을 수 있는 틀이다. 이제 건강 온도 프러파일(Health Thermometer Profile)을 가지고 각각의 용어들이 구체적으로 무엇을 의미하는지, 그리고 서로 어떤 관계를 가지는지 설명해 보고자 한다. 2. 프러파일 (profile) 프러파일 명세서는 어떤 서비스들을 제공할 것인지를 규정하는 문서이다. 건강 온도 프러파일은 아래 두 가지 서비스를 제공하도록 규정하고 있다.     Health Thermometer Service     Device Information Service 여기서 주목할 것은 프러파일은 실제로 제공되는 것이 아니기 때문에 연결하는 상대편 장치의 입장에서 보면 프러파일이란 실체는 없는 것이다. 3. 서...

[XMPP] Openfire 플러그인 개발하기

1. 들어가기     Openfire는 XMPP 프로토콜을 지원하는 메시징 서버이다. 그리고 새로운 기능을 추가하고 Admin Console에 UI를 추가할 수 있도록 플러그인 방식을 지원하고 있다. 이 문서는 Openfire를 리눅스 서버에 설치해서 실행하고 윈도우 환경에서 플러그인을 개발하는 과정을 간략히 정리한 것이다. 2. 개발 및 운영 환경     2.1 개발 환경         Windows 7 (64-bit)         JDK 1.6.0_45 (64-bit)         Ant 1.7.1         Openfire 3.8.1 소스     2.2 운영 환경         Ubuntu 12.04 LTS (64-bit)         JDK 1.6.0_45 (64-bit)         Openfire 3.8.1 3. Openfire 설치 및 실행     3.1 다운로드         아래의 위치에서 Openfire 3.8.1을 다운로드한다.             http://www.igniterealtime.org/downloads/download-landing.jsp?file=openfire/openfire_3_8_1.tar.gz     3.2 설치         아래와 같이 압축을 풀고 원하는 위치로 옮긴다.             $ tar -xzvf openfire_3_8_...

[BLE] TI CC2540 Mini DK 사용하기 - JavaSimplePeripheral 프로그램

1. 들어가기     USB 동글과 KeyFob이 서로 연결되어 있는 상태에서 PC 프로그램인 JavaSimplePeripheral을 사용하여 다음 두 가지를 테스트해 보았다.           1) KeyFob의 단추 누름 상태를 Notification 방식으로 전송하도록 JavaSimplePeripheral이 KeyFob의 설정을 변경한다.         2) JavaSimplePeripheral은 KeyFob의 단추 누름 상태를 전송받아서 화면에 표시한다. 2. 이미지 다운로드     USB 동글에는 HostTestRelease 이미지, 그리고 KeyFob에는 SimpleBLEPeripheral 이미지를 SmartRF Flash Programmer 프로그램을 이용하여 각각 다운로드한다. HostTestRelease는 외부 장치로부터 HCI 명령을 전달받아서 실행하고, 이벤트나 응답을 외부 장치로 전달하는 역할을 수행한다. SimpleBLEPeripheral은 Simple Keys Service를 구현하고 있다.     2.1 USB 동글용 프로젝트 및 이미지 위치           프로젝트:                       BLE-CC254x-1.3\Projects\ble\HostTestApp\CC2540\HostTestRelease.eww                   이미지:                   BLE-CC254x-1.3\Accessories\HexFiles\CC...

[Java] 자바 직렬 통신 개발 환경

1. 들어가기     64비트 Windows 7 운영체제에서 자바로 직렬 통신을 할 수 있는 환경에 대하여 조사해 보았다.  Java Communications API 2.0에 대한 오라클 구현과 gnu.io.*을 패키지명으로 사용하는 RXTX 구현을 비교해 보았는데, 다음과 같은 이유로 오라클 구현보다 RXTX 구현을 사용하는 것이 바람직 하다.              오라클 구현은 OS 지원 대상이 제한적이고, 64비트 바이너리를 제공하지 않으며, 무엇보다도 업데이트가 멎은 듯하다.          2. Oracle 구현 사용 방법              Java Communications API 3.0에 대한 오라클 구현이 지원하는 OS는 아래와 같은데, Windows 버전을 제공하지 않으므로 2.0버전을 사용해야 한다.              Solaris SPARC         Solaris x86         Linux x86     2.1 JDK 설치              64비트 JDK에서는 오라클 구현이 제공하는 win32com.dll을 사용하지 못하므로 32비트 JDK를 설치해야 한다.                      설치 파일: Windows x86를 위한 jdk-7-windows-i586.exe     2.2 환경 변수 설정     ...

[BLE] TI CC2540 Mini DK 사용하기 - Notifications

1. 들어가기     KeyFob과 USB 동글이 서로 연결을 맺고 있다. KeyFob이 어떤 상태를 감지하고 나서 USB 동글 쪽으로 데이터를 보내는 방법에는 두 가지가 있다.           Notifications         Indications     Notification은 보내고 나서 수신 확인을 하지 않는 것이고, Indication은 보내고 나서 수신자로부터 확인을 받는 것이다. KeyFob에서 가속도의 변화를 감지할 때마다 USB 동글 쪽으로 가속도 값을 보내는 상황에서는 어느 방식이 더 적합할까? 대개의 경우 시간에 따른 가속도 값의 변화 추이를 살펴 보는 것이 완벽한 수신율을 보장하는 것보다 더 중요하기 때문에 수신 확인을 받을 필요가 없는 Notification이 Indication을 사용하는 것보다 적합할 것이다.       그렇다면 KeyFob이 제공하는 characteristic 중에서 Notification 방식으로 보내는 것이 무엇인지 어떻게 알 수 있는가? 그리고 그 값을 Notification 방식으로 보내도록 하려면 어떻게 해야 하는가? KeyFob은 현재 KeyFobDemo 애플리케이션을 실행하고 있는 중이다. 2. 가속도 측정 및 전송     KeyFobDemo 애플리케이션이 제공하고 있는 가속도계 서비스는 블루투스 SIG 표준이 아니라 TI에서 예제로 구현한 것이다. 아래 문서의 Figure 27에서 가속도계 서비스에 대한 attribute 테이블을 찾을 수 있다.         Bluetooth Low Energy CC2540/41 Mini Development Kit User's Guide (http://www.ti.com/litv/pdf/swru270c)     2....

[BLE] TI CC2540 Mini DK 사용하기 - Advertising Data 형식

1. 들어가기     USB 동글에서 KeyFob을 찾을 때 BTool의 로그창을 보면 아래와 같은 Rx 데이터를 발견할 수 있다.         [3] : <Rx> - 09:58:23.157         -Type : 0x04 (Event)         -EventCode : 0xFF (HCI_LE_ExtEvent)         -Data Length : 0x18 (24) bytes(s)          Event : 0x060D (GAP_DeviceInformation)          Status : 0x00 (Success)           EventType : 0x00 (Connectable Undirect Advertisement)          AddrType : 0x00 (Public)          Addr : 78:C5:E5:A0:0D:4C          Rssi : 0xDB (219)          DataLength : 0x0B (11)           Data : 02:01:05:07:02:03:18:02:18:04:18         [4] : <Rx> - 09:58:23.183         -Type : 0x04 (Event)    ...