2011년 10월 24일 월요일

Mac OS X Lion(10.7)에서 USB-to-Serial 사용

맥 OS가 라이언으로 올라오면서 가장 크게 바뀐 부분이 커널이 64비트로 가면서 Snow Leopard까지 문제없이 동작하던 드라이버들이 호환이 되지 않는 것들이 생긴 것이다.

대부분의 문제는 32-bit용 드라이버라 64-bit 커널에 로드가 되지 않아서 문제가 발생한다.
Arduino 역시 보드에 FTDI 칩을 사용하고 있어 아뒤노가 인식되지 않는다.

USB-to-Serial 컨버터를 맥에 연결하면 System Information에서 디바이스가 연결된 걸 확인할 수 있다.

디바이스 드라이버가 정상적으로 로드되었으면 /dev 디렉토리에 그에 해당하는 디바이스파일이 생성된다.

만일 System Information에서 장치가 연결된 건 확인되었는데 /dev 디렉토리에 디바이스파일이 생성되지 않았다면 드라이버가 제대로 로드되지 않은 것이다.

현재 대부분의 쉽고 저렴하게 구할 수 있는 USB-to-Serial 컨버터는 FTDI의 FT232x 또는 Prolific의 PL-2303를 사용하고 있다.

이 둘 다 라이언으로 올라가면 드라이버가 로드되지 않기 때문에 디바이스를 억세스 할 수가 없다.

다행히 FTDI는 올 2월에 나온 드라이버 팩에 64비트 드라이버(http://www.ftdichip.com/Drivers/VCP/MacOSX/FTDIUSBSerialDriver_v2_2_16.dmg)를 가지고 있다. 다운 받아보면 10.3용과 10.4~10.6용 드라이버가 있는데 이 중 10.4~10.6용 64-bit 드라이버를 설치해주면 라이언에서도 아무 문제 없이 동작한다.

Prolific의 경우는 공식적으로 나온 드라이버는 없고 failberg가 만든 드라이버(https://github.com/failberg/osx-pl2303)를 설치해주면 된다. 비공식 드라이버이긴 해도 설치해 본 결과 아무 문제 없이 사용할 수 있었다.

2011년 8월 12일 금요일

어학학습에 유용한 앱 Robick


Robick은 딕테이션이나 어학공부에 매우 유용한 아이폰/아이팟 터치용 앱이다.
$2.99로 앱스토어에서 구입하면 된다.


플레이 범위 설정 모드이다. 빨간색 범위가 플레이를 원하는 부분이고 오렌지색이 현재 플레이 될 부분이다. 다만 Repeat mode가 위와 같이 비활성화 되어 있을때는 빨간색 범위는 아무 의미가 없다.


Repeat mode를 위와 같이 변경해 주면 빨간색 범위만 재생이 된다. 재생이 끝나면 다시 빨간색 앞부분으로 돌아가 반복적으로 재생된다.


조작법을 잘 모를때는 화면 우측 아래의 'i' 버튼을 누르면 화면에 각 버튼의 동작이 오버레이로 표시된다.


Change mode 버튼을 누를때마다 곡에서 플레이 할 범위 및 반복설정 -> 키/피치/톤 설정 -> 이퀄라이져 -> 플레이 할 범위 및 반복설정 .... 순으로 모드가 바뀐다.
위의 화면은 키/피치/톤 설정 모드이다. 현재 조작할 컨트롤이 원의 가장 바깥쪽 띠가 되고 그에 해당하는 색으로 바뀐다. 위에서는 현재 피치 변경 모드이고 피치에 해당하는 색의 띠가 원의 가장 바깥쪽에 나와 있는걸 볼 수 있다.


이퀄라이져 모드이다.


 오른쪽 맨 아래 두개의 버튼은 각각 플레이리스트 수정과 옵션설정이다.


 옵션 설정 모드이다. 다양한 옵션을 바꿔줄 수 있고 Reverse Playback을 On으로 해 주면 곡을 꺼꾸로 플레이 할 수도 있다.


플레이리스트 수정 모드이다. 아이폰/아이팟 터치에 들어있는 곡들을 플레이 리스트에 추가하거나 플레이 리스트에서 곡을 삭제할 수 있다.

동작 동영상이다.





2011년 7월 31일 일요일

오토메이터로 여러개의 이미지를 한번에 리사이즈 하기(Resize multiple images automatically using Automator)

Mac OS에 기본으로 들어 있지만 사람들이 잘 몰라서 안쓰는 보석같은 어플중에 하나가 바로 automator이다.


물론 쉘 스크립트만큼 강력하지는 않아도 프로그래밍을 모르는 사람들도 GUI로 손쉽게 자기가 원하는 동작들을 하도록 프로그램으로 만들어 줄 수 있는 막강한 툴이다.
특히 여러 이미지를 동일한 크기로 변환한다던가, 여러 파일의 확장자를 변경하는등의 동일한 작업을 반복적으로 해야 하는 경우 매우 유용하게 사용할 수 있다.

여기서는 폴더 안에 들어있는 여러 이미지를 전부 동일한 크기로 리사이즈 하는걸 예로 들어보겠다.


먼저 오토메이터를 실행하면 위와 같은 화면이 나온다. 여기서는 바로 실행할 수 있는 프로그램을 원하니까 Applicaiton을 선택해준다.


화면에 위와 같이 사용할 수 있는 액션들이 나타난다.


맨 왼쪽 페인에서 photos를 선택하면 바로 옆쪽 페인에 사진들에 대해 수행할 수 있는 액션 목록들만 필터링 되어 보이게 된다.


그리고 어떤 액 션을 선택하면 아래쪽에 그 액션에 대한 간단한 설명이 나타난다.


원하는 액션을 찾았으면 오른쪽 페인으로 드래그 해 주면 된다. 여기선 폴더 안에 들어있는 모든 이미지 파일들의 크기를 일괄 변경할 것이기 때문에 Get folder contents를 선택했다.


그 다음 이미지 크기 변경을 위해 Scale images 액션을 드래그하면 위와 같은 경고가 나온다. Scale images액션은 현재 이미지 파일의 크기를 바꿔 버리기 때문에 원본 파일이 없어지게 되니까 원본파일을 보존하고 싶으면 파일을 복사해야 한다. 그렇게 하길 원하느냐고 묻는 것이다.
만일 원본파일은 더 이상 필요 없으면 그냥 Don't add를 선택하면 되고 원본도 보존되길 원하면 Add를 선택해준다. 이 예제에서는 Add를 선택했다.


위에서 Add를 선택했기 때문에 Copy finder items라는 액션이 자동으로 추가되었다. 이미지 크기는 픽셀, 또는 퍼센트로 지정해 줄 수 있다. 픽셀로 지정하는 경우 가로 기준으로 크기를 지정하고 세로 크기는 그에 비례해 자동으로 맞춰진다.


원하는 액션을 다 추가했으면 File -> Save...로 저장해주면 된다.


원하는 이름을 지정해주면 그 이름의 어플리케이션이 만들어 진다.


img_resize.app라는 이름의 어플리케이션이 생겼다. 위의 화면에서 test src라는 폴더에 원본 이미지 파일들이 들어있다. tmp라는 폴더는 리사이즈 된 이미지 파일들이 들어갈 폴더로 현재 비어있다.
test src 폴더를 드래그해서 img_resize.app 아이콘 위로 드래그 해 주면 바로 어플리케이션이 실행되어 리사이즈 된 이미지들이 tmp 폴더에 저장되게 된다. 


원본 폴더에 들어있는 이미지 정보이다.



실행된 후 tmp 폴더에 생성된 이미지 정보이다. 여기서는 scale images 액션에 이미지 크기를 1024로 해 놓은 결과이다.

2011년 7월 19일 화요일

아이폰에서 시리얼 포트 사용하기 (Use iPhone Serial Port without Jailbreak)

아이폰에서 시리얼 포트를 사용하는 몇가지 방법이 있는데 그 동안의 방법은 탈옥을 해야만 하거나 탈옥을 하지 않으면 헤드폰 잭을 사용해서 상대적으로 저속으로 통신하는 방법(HiJack)밖에 없었는데 이제 탈옥을 하지 않은 아이폰/아이패드/아이팟터치에서 독커넥터를 통해 시리얼 통신이 가능해 졌다.

RedPark에서 나온 애플 인증을 받은 아이폰/아이패드/아이팟용 시리얼 케이블로 이 제품을 사용하면 탈옥하지 않은 순정 디바이스에서 직접 시리얼 포트를 사용할 수 있다.

시리얼 터미널 앱을 사용할 수도 있고 직접 자신의 앱에서 시리얼 포트를 제어할 수 있는 SDK는 RedPark 웹 사이트에서 다운받을 수 있다. SDK는 따로 MFi 프로그램에 가입할 필요는 없고 이메일 주소만 넣어주면 된다.


http://makeprojects.com/Project/Connect-an-iPhone-iPad-or-iPod-touch-to-Arduino-with-the-Redpark-Serial-Cable/1130/1

이 주소에 가보면 이 케이블을 사용해 아이폰과 아뒤노를 연결하고 SDK를 사용해 아뒤노와 통신을 하는 앱을 만드는 법이 각 단계별로 상세히 설명이 되어 있다.

2011년 7월 16일 토요일

Snow Leopard에서 ssh 활성화 시키기 (how to enable ssh on the Snow Leopard)

Snow Leopard에는 ssh가 기본으로 들어있지만 sshd는 기본적으로 비활성화 되어 있어서 외부에서 ssh로 로그인을 할 수 없다.
이 경우 먼저 sshd를 활성화시켜줘야만 한다.

1. System Preferences에서 Sharing을 선택한다.


2. Remote Login항목을 보면 체크가 되어 있지 않은걸 볼 수 있다.


3. 이 항목을 체크하면 오른쪽의 Remote Login: 이 On으로 바뀐다. 이제부터 sshd가 활성화 된 것이다. 


Allow access for: 를 보면 'All users'로 되어있으면 모든 계정에 대해 ssh를 사용할 수 있는 것이고 특정 유저 어카운트에 대해서만 ssh를 허용하고 싶으면 Only these users를 선택한 다음 아래쪽의 '+' 버튼을 눌러 원하는 사용자 어카운트를 목록에 추가해 주면 된다.

그리고 ssh는 기본적으로 22번 포트를 사용한다. 만일 이 포트를 다른 포트넘버로 바꾸고 싶으면 launchd.plist 파일을 수정해 주면 된다.

    <key>Sockets</key>
    <dict>
            <key>Listeners</key>
            <dict>
                    <key>SockServiceName</key>
                    <string>22022</string>
                    <key>SockFamily</key>
                    <string>IPv4</string>
                    <key>Bonjour</key>
                    <array>
                            <string>22022</string>
                            <string>sftp-ssh</string>
                    </array>
            </dict>
    </dict>
launchd.plist 파일을 위와 같이 수정해 주면 sshd는 22022번 포트를 사용하게 된다.

launchd에 대한 자세한 설명은 아래 포스트를 참조하면 된다.

Mac에서 정해진 시간에 자동으로 프로그램 실행하는 법

2011년 7월 6일 수요일

블루투스 기기를 맥의 RFID 스마트키로 사용하기 (Use bluetooth device like iPhone or Android phone as a RFID smart key for Mac)

맥에서 proximity (http://code.google.com/p/reduxcomputing-proximity/)를 사용하면 블루투스 디바이스를 맥의 스마트 키로 사용할 수가 있다.
디바이스의 블루투스 MAC ID를 기준으로 동작하기 때문에 블루투스 디바이스는 아이폰이나 안드로이드 스마트폰 또는 일반 피쳐폰도 상관 없다.

 

다운 받아 설치한 다음 실행시키면 화면 위에 아이콘이 나타난다.
현재 등록된 블루투스 디바이스가 통신가능 범위 내에 들어와 있기 때문에 아이콘 아래쪽에 조그마한 글씨로 'IN'이라고 써 있다. 처음 실행해서 아직 블루투스 디바이스를 등록하지 않았거나 등록된 디바이스가 통신가능 범위 외에 있으면 'OUT'이라고 나오게 된다.



설정을 위해 아이콘을 클릭하면 메뉴가 나오고 그 메뉴에서 'Preferences'를 선택하면 된다.


설정 화면은 간단하고 각각에 대해 위에 설명을 달아 놓았다.

여기서 핵심은 자신이 원하는 동작을 애플스크립트로 만들어 주는 것이다.
예를 들어 사용자가 컴퓨터에 가까이 오면 스크린 세이버를 풀어준다던가 원하는 음악을 플레이 하게 해 줄수도 있다. 반대로 컴퓨터에서 멀어지면 자동으로 화면이 락이 걸리게 하는 식의 동작을 할 수 있다.

예를 들어 in range script와 out range script에 각각 아래의 이름으로 파일을 저장한 다음 Preferences 화면에서 해당 스크립트 파일을 지정해주면 멀어지면 스크린 세이버가 켜지고 가까이 오면 자동으로 스크린 세이버가 꺼지게 된다.

InScript.scpt


-- Disable the screen Saver Password
     do shell script "defaults -currentHost write com.apple.screensaver askForPassword -int 0"
     do shell script "notif"
     -- Turn OFF the screen saver
     tell application "ScreenSaverEngine" to quit
     tell application "Address Book"
          if not unsaved then
               try
                    quit
                    delay 1
               end try
          end if
     end tell

OutScript.scpt

-- Turn on the screen saver password
     do shell script "defaults -currentHost write com.apple.screensaver askForPassword -int 1"
     do shell script "notif"
     -- Activate the screen saver
     tell application "ScreenSaverEngine" to activate
 
다른 예제로 LockScreen 2를 사용하는 경우에는 다음 스크립트를 사용하면 된다.


In.scpt

tell application "System Events" 
          keystroke "l" using {command down}
end tell 

Out.scpt


tell application "System Events" 
          keystroke "asdfghjkl"  
end tell 
 
만일 시스템 이벤트가 아니고 특정 어플리케이션을 실행한 다음 그 어플리케이션에 키 이벤트를 보내고 싶으면 아래와 같이 하면 된다.


tell application "TextEdit"
activate
tell application "System Events" 
               keystroke "f" using {command down}
end tell 
end tell 
 

LockScreen 2를 사용하는 스크립트의 사용 예제이다.


 먼저 아이패드의 블루투스를 켜고 등록을 시켜 주었다. 맥에서 아이패드가 등록되어 현재 통신가능 범위 내에 있는걸 확인할 수 있다.


통신가능 범위 바깥으로 나간걸 시뮬레이션 하기 위해 아이패드의 블루투스를 꺼 주었다. 그러면 몇초 후 스크립트가 실행되어 LockScreen 2가 실행된 화면을 볼 수 있다.


여기서 다시 통신가능 거리로 들어온걸 시뮬레이션 하기 위해 아이패드의 블루투스를 켜 주었다. 역시 몇초 후 proximity가 등록된 블루투스 디바이스가 통신가능 거리로 들어온 걸 인식하면 바로 스크립트를 실행해 주기 때문에 LockScreen 2가 풀려 데스크탑 화면으로 돌아온다.



애플스크립트에 관해서는 인터넷을 찾아보면 공개되어 있는 자료들을 쉽게 찾을 수 있다.

http://www.computer-books.us/applescript_1.php

2011년 5월 12일 목요일

안드로이드 오픈 악세서리 개발킷 (Android Open Accessory Development Kit)

안드로이드 3.1에서부터 공식적으로 USB HOST기능으로 외부 악세서리를 개발할 수 있게 되었다.
이번 Google IO에서 공개된 보드는 RT-ADK/RT-ADS이다.


이 보드는 기본적으로 Arduino Mega에 USB Host Shield를 합쳐 놓은 것이다. 다만 문제는 가격이 좀 비싸다. 31500엔으로 대략 40만원 정도이다.
좀 더 저렴하게 하고 싶으면 Arduino Mega에 USB Host Shield를 따로 구입할수도 있다.

그리고 또 다른 방법으로는 Microchip에서도 PIC24F 를 사용한 Accessory Development Starter Kit for Android 가 있다.


$79.99로 6월 초에 판매가 시작된다고 한다.


가격적인 측면에서는 Microchip 제품이 저렴한데 임베디드 프로그래밍에 익숙하지 않은 사람들에게는 Arduino 기반의 제품이 접근하기에 훨씬 쉽다.
Arduino는 개발툴부터 모든것이 다 무료로 구할 수 있고 오픈되어 있다.

실제 안드로이드에서 프로그래밍 하는 방법이나 실행하는 방법은 구글 사이트에 잘 정리되어 있다.

다음 기회에 실제 안드로이드에서 프로그래밍 하는 방법부터 상세히 설명을 해 보도록 하겠다.

2011년 4월 15일 금요일

DROPitTOme - Dropbox를 사용한 파일 교환 (Upload file into Dropbox using DROPitTOme)

다른 사람한테서 파일을 받아야 할 때 dropbox를 사용할 수도 있다.

http://www.dropitto.me 로 접속하면 아래와 같은 화면이 나온다. 먼저 dropittome 계정을 만들어 줘야 한다.


이 서비스는 dropbox에 파일을 올려줘야 하기 때문에 이 서비스가 dropbox에 억세스 할 수 있도록 허가를 해 줘야 한다. dropbox를 사용하지 않던 사람은 Get Dropbox를 눌러 dropbox 계정을 만들어 주고 이미 사용중인 사람은 Register를 눌러 dropbox에서 이 서비스를 허용해주면 된다.


Register를 누르면 dropbox 로그인 화면으로 넘어오게 된다. 여기서 자신의 아이디로 로그인하면 된다.


로그인 하면 DROPitTOme 가 dropbox에 억세스 할 수 있도록 허가할 것인지 물어본다. 여기서 Allow 버튼을 눌러준다.


dropbox에서 허가를 하면 다시 DROPitTOme로 돌아와서 이 서비스의 계정을 만들어 준다. 여기서 username이 나중에 다른 사람이 나한테 파일을 업로드 할 때 사용할 URL의 일부가 된다.
즉 username을 test 라고 해 주면 나중에 다른 사람이 나한테 파일을 보내기 위한 URL은 http://www.dropitto.me/test 가 된다.


 정상적으로 계정이 만들어졌으면 아래와 같은 화면이 나오게 된다. 이걸로 모든 설정은 끝난것이다.


 * 다른 사람이 파일을 보내는 방법

 웹 브라우져에서 파일 업로드를 위한 주소(http://www.dropitto.me/[id]) 로 접속하면 아래와 같은 화면이 나온다. 여기에 먼저 upload password를 넣어줘야 한다. 즉 다른 사람한테 파일을 업로드 하도록 할 때는 URL과 upload password를 같이 알려줘야 한다.


암호를 넣으면 파일을 업로드 할 수 있게 된다.


Dropbox에는 DROPitTOme라는 폴더가 생성되고 업로드 된 파일은 이 폴더에 들어가게 된다. 그리고 계정을 만들 때 지정한 이메일 주소로 파일이 업로드 되었다는 메일이 날라가게 된다.

2011년 2월 28일 월요일

구글 2단계 인증 사용하기 (Using Google 2-step verification)

구글에서 새로 시작한 서비스이다.
비밀번호 유출이 걱정되거나 계정이 해킹당한거 같다고 걱정하는 사람들은 이 서비스를 이용하면 구글을 훨씬 안심하고 사용할 수 있게 된다.


사용하려면 먼저 구글 어카운트 설정으로 가서 Using 2-step verification을 선택한다.
 

아래와 같이 2-step verification 설정이 시작된다.

먼저 어떤 스마트폰을 사용할건지 선택한다.


플랫폼을 선택하면 해당 플랫폼에 필요한 앱을 설정하는 법이 나온다. 그대로 따라해서 폰에 필요한 앱을 설치해준다.


 설치가 완료된 다음 next를 누르면 아래와 같이 화면에 QR코드가 나타난다.


폰에 설치한 앱을 실행한다. 여기서는 안드로이드에 설치된 경우이다.


Scan account barcode를 선택한 다음 컴퓨터 화면의 QR코드를 인식시킨다.

정상적으로 QR 코드가 인식되면 화면에 위와 같은 확인 코드가 나오게 된다.
PC에 위의 확인코드를 넣어주면 된다.


모든게 정상적으로 되었다면 아래와 같은 화면이 나오게 된다.
여기까지 오면 일단 설정은 끝난건데 문제는 암호를 잊어버리고 폰도 없어지거나 분실되는 경우 사용할 수 있는 수단이 필요하게 된다. 

은행의 보안카드같이 화면에 아래와 같은 코드들이 나타나게 된다. 이 코드들은 별도로 잘 보관해 두어야 한다. 만일 암호도 기억이 나지 않고 스마트폰도 없는 경우는 이 코드를 알고 있어야만 자신을 확인시켜줄 수 있게 된다.

꼼꼼하게 확인하기 위해 저 표를 인쇄하건 어딘가에 잘 보관해 두었다는걸 체크해 주지 않으면 next버튼이 활성화 되지 않는다.


다음으로 넘어가면 마지막 수단으로 문자메시지나 음성으로 확인할 수 있도록 하기 위해 휴대폰 번호를 등록한다.

여기까지 왔으면 이제 설정이 끝난것이다. 아래와 같은 최종 확인 화면이 나오게 되고 여기서 Turn on 2-step verification 버튼을 눌러주면 이 기능이 활성화되어 바로 적용된다.


 자동으로 로그아웃되고 다시 로그인하도록 암호를 물어본다.

암호를 넣으면 이전과 다르게 바로 로그인이 되는게 아니고 아래와 같은 화면이 나와 인증코드를 물어보게 된다. 자신의 폰에 설치한 앱을 실행하면 화면에 나오는 인증코드를 넣어주면 된다.

 
 정상적으로 로그인이 되면 다음과 같은 화면을 볼 수 있다.

여기서 모든 설정은 끝난 셈이지만 남은 문제는 웹 브라우져로 로그인 할 때는 인증코드를 물어볼 수 있지만 전용 클라이언트(구글계정에 연동되는 메일이나 웹 서비스 클라이언트들) 은 인증코드를 물어볼 수 없기 때문에 제대로 동작을 하지 않게 된다. 그 경우를 위해 Application-specific passwords 기능을 제공한다. 아래에서 Manage application-specific passwords를 선택한다.


여러 클라이언트마다 별도로 관리할 수도 있다. 그걸 위해 각 application-specific passwords마다 이름을 붙여준다. 아래에 원하는 이름을 정해주고 Generate password버튼을 누르면 된다.


그럼 아래 노란색 박스에 암호가 만들어진다. 클라이언트에 자신의 원래 암호 대신 저 암호를 넣어주면 클라이언트들도 정상적으로 동작하게 된다. 이 암호는 랜덤하게 생성된 길고 복잡한 암호이기 때문에 brute-force 방식의 password cracker들에게는 거의 깨질일이 없는 안전한 암호이다. 이 암호는 클라이언트에 한번만 넣어주면 되고 따로 암기할 필요는 없는 암호이다.

이렇게 하면 스마튼 폰을 통해 구글의 2단계 인증 기능을 사용할 수 있고 훨씬 더 안전하게 구글을 사용할 수 있게 된다. 특히 PC방이나 공공장소에서 구글에 로그인 할 때 혹시라도 키로깅을 당하더라도 OTP 코드는 계속 바뀌기 때문에 설사 암호가 로깅되어도 계정이 뚤릴까봐 걱정할 필요가 없어진다.