일반적으로 많이 쓰이지는 않아도 라우터등의 장비 펌웨어 업그레이드라던지 임베디드 보드 개발할 때 유용한 도구중에 하나가 tftp(trivial ftp)이다.
Mac OS X에도 역시 기본으로 포함되어 있지만 다른 daemon들과는 다르게 자동으로 실행하게 되어있지 않다. 그리고 실행하려면 직접 하면 안되고 꼭 launchd와 /System/Library/LaunchDaemon/tftp.plist를 사용해서 실행해야 한다.



실행하는 방법은 다음과 같다.

$ sudo launchctl
Password:
launchd% load -F /System/Library/LaunchDaemons/tftp.plist
launchd%

이제 아무 문제가 없으면 launchd가 tftp 포트를 listen하고 있다가 connection이 들어오면 tftp를 실행해주게 된다.

그 리고 linux/unix의 경우 일반적으로 tftp 디렉토리는 /tftpboot 를 사용하지만 맥에서는 tftp.plist 파일에서 지정하게 되어 있고 디폴트로는 /private/tftpboot 디렉토리이다.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Disabled</key>
<true/>
<key>Label</key>
<string>com.apple.tftpd</string>
<key>ProgramArguments</key>
<array>
<string>/usr/libexec/tftpd</string>
<string>-i</string>
<string>-s</string>
<string>/private/tftpboot</string>
</array>
<key>Sockets</key>
<dict>
<key>Listeners</key>
<dict>
<key>SockServiceName</key>
<string>tftp</string>
<key>SockType</key>
<string>dgram</string>
</dict>
</dict>
<key>inetdCompatibility</key>
<dict>
<key>Wait</key>
<true/>
</dict>
</dict>
</plist>

 
텍 스트 에디터로 tftp.plist파일을 열어보면 내용은 위와 같다. 그 중 bold체로 된 부분을 변경해 주면 tftp 디렉토리를 원하는대로 바꿔줄 수 있다.

사용이 끝나 실행을 중단시키고 싶으면 실행할 때와 마찬가지로 launchctl에서 명령을 내려주면 된다.

launchd% unload /System/Library/LaunchDaemons/tftp.plist

만일 tftp를 부팅할 때 부터 계속 실행하도록 해 주고 싶으면 launchctl에서 다음의 명령을 사용한다.

launchd% load -w  /System/Library/LaunchDaemons/tftp.plist

또한 반대로 부팅할 때 부터 계속 실행되는걸 멈추고 싶으면 아래 명령을 사용하면 된다.

launchd% unload -w /System/Library/LaunchDaemons/tftp.plist
Posted by nautes

먼저 Mac OS X에서 Mail을 실행한다. (여기서는 Mac OS X 10.6 Snow Leopard에서 Mail 4.2를 기준으로 한다.)


메뉴바에서 Mail을 선택한다.


풀다운 메뉴에서 Preferences...를 선택한다.


Preferences 창에서 Accounts 탭을 선택한다.


화면 아래쪽의 '+' 버튼을 눌러준다.


Add Account 창이 열리면 이름, gmail 주소, gmail 암호를 넣어주고 Create버튼을 누른다.


Create버튼을 누르면 프로그램이 자동으로 gmail과 연결하여 필요한 정보를 수집하고 암호가 맞는지 확인해서 위와 같이 정보가 자동으로 입력된다.



만일 gmail 계정의 imap이 활성화 되어 있지 않은 상태면 위와 같은 화면이 나오게 된다.
이 경우 먼저 gmail로 가서 imap을 활성화 시켜 줘야 한다.


gmail 우측 상단의 Settings를 눌러준다.


Settings 화면에서 Forwarding and POP/IMAP 을 선택해 준다.


화면 아래쪽 IMAP Access에 보면 IMAP is disabled 를 확인할 수 있을 것이다. 먼저 Enable IMAP을 선택해주고 아래쪽의 Save Changes를 눌러 변경된 설정을 저장해주면 된다.
이제 다시 mail에서 계정을 추가해주면 이번에는 문제없이 될 것이다.
Posted by nautes




현재 순정 아이폰에서는 AV케이블을 연결해도 항상 아이폰 화면이 출력되는게 아니고 동영상 플레이나 사진 보기 정도만 화면이 외부 출력이 가능하다.
하지만 탈옥한 경우 ScreenSplitr이라는 app을 사용하면 AV케이블로 화면 출력을 토글(on/off) 해 줄 수 있다. 이 app은 무료이고 오픈소스라 코드도 공개되어 있다.
이 앱을 사용하면 항상 화면을 외부로 출력할 수 있어 프로젝터에 연결하면 큰 화면으로 여러 사람들에게 프리젠테이션 할 때 유용하게 사용할 수 있다.






또한 ScreenSplitr 개발자가 거기서 한 발자국 더 나가 DemoGod이라는 맥용 어플리케이션도 제공하고 있다.
DemoGod을 사용하려면 아이폰에 ScreenSplitr가 설치되어 있어야 한다.
맥에서 이 프로그램을 사용하면 아이폰 화면을 무선랜을 통해 미러링 할 수 있게 된다.



위의 동영상에서 볼 수 있는것처럼 맥의 모니터에 아이폰의 화면이 무선랜을 통해 전달되어 똑같이 나타나게 된다. (미러링) 무선랜을 통해 화면을 전달하기 때문에 동영상 플레이는 별로 유용하지 않겠지만 강연이나 프리젠테이션 등에서 아이폰 화면을 여러 사람들에게 보여줘야 하는 경우 유용하게 사용할 수 있을 것이다.

* 단 iPhone 3GS부터는 AV케이블에 인증칩이 들어간것만 사용할 수 있게 되어 3G에서 잘 사용하던 AV케이블이라 해도 3GS에 연결하면 동작하지 않는다. AV케이블을 구입하는 경우 3GS에서 사용할 수 있는 제품인지 꼭 확인하길 바란다.

ScreenSplitr는 cydia에서 구할 수 있고 DemoGod는 http://screensplitr.com/ 에서 다운받을 수 있다.
Posted by nautes




네트웍을 조금 깊이 공부하다 보면 필요한 툴 중에 하나가 패킷 스니핑(packet sniffing) 소프트웨어이다. 패킷 스니핑이란 네트웍 상에 오가는 모든 패킷들의 내용을 보는걸 말한다. (평상시에는 자신에게 오는 패킷만 받아 처리한다) 예전 텍스트 환경에서 많이 사용되던 프로그램으로는 snoop (SunOS에서 사용)과 지금도 거의 표준적으로 사용되고 있는 tcpdump가 있다.

GUI 환경의 툴로는 보통 tcpdump/pcap을 사용하고 거기에 graphic back-end를 붙여준 형태가 많다.


Ethereal 에서 이름이 바뀐 Wireshark이다. 현재 패킷 스니핑 툴에서는 거의 de-facto standard의 지위를 차지하고 있다. 물론 Windows/Linux/Mac OS X 모두 지원한다. 다만 아래 화면에서 볼 수 있는것처럼 Linux/X Windows를 맥에 포팅한 형태이기 때문에 맥 고유의 UI를 사용하지 않아서 맥 어플리케이션의 깔끔한 느낌이 없다.

그에 비해 Cocoa Packet Analyzer는 처음부터 네이티브 맥 OS X와 코코아 환경에서 구현한 패킷 스니핑 툴이라 맥 UI가 깔끔하게 적용되어 있다. 산업표준인 pcap 패킷 캡춰 포맷을 지원하기 때문에 다른 패킷 스니핑 툴과도 트레이스 파일이 호환된다. 또한 libpcap/tcpdump 의 packet filter expression을 사용할 수 있기 때문에 tcpdump에 익숙한 사람은 별도로 공부할 필요가 없다.
그리고 cocoa bundle technology를 지원하기 때문에 애널라이져 플러그인을 만들어 붙일 수도 있다. 현재 SIP 프로토콜은 3rd party의 플러그인으로 구현되어 있다.

* 예전에는 보통 libpcap/tcpdump를 먼저 깔아준 다음 프로그램을 설치하는 형태가 많았는데 Cocoa Packet Analyzer도 최근 다른 프로그램들과 마찮가지로 필요한 모든걸 한꺼번에 설치해주기 때문에 편리하다.








L2TP 패킷의 내용을 보는 화면이다.

IP v6도 당연히 지원한다.

컬럼에 어떤 필드를 보여줄 지 선택할 수 있다.


캡춰된 패킷을 쉽게 검색할 수 있도록 되어있다.


지원하는 프로토콜 타입은 다음과 같다.
  • Ethertype ARP
  • Ethertype IP (v4/ v6)
  • Ethertype PPP
  • Ethertype PPPoED/S
  • Ethertype 802.1Q VLAN
  • Linktype Loopback
  • Linktype PPP
  • IP-Protocol IP
  • IP-Protocol TCP
  • IP-Protocol UDP
  • IP-Protocol ICMP
  • IP-Protocol IGMP
  • IP-Protocol L2TP
  • PPPoE Discovery and Sessionstages
  • PPP-Protocols: IP, LCP, IPCP, CCP, PAP, CHAP
  • L2TP-Protocol (port based detection)
  • RADIUS-Protocol (port based detection)
  • SIP-Protocol (third party analyzer plugin)
현재 버젼은 0.60.1이다.
Posted by nautes

이전 포스트인 Mac OS X에서 시리얼 터미널 프로그램 (Serial Terminal Emulator in Mac OS X에서 이야기했던것처럼 Mac OS X에는 GUI 인터페이스를 사용하는 쓸만한 무료 시리얼 터미널 프로그램이 없었다. (물론 telnet 터미널 프로그램은 상당히 다양하다.)
일반적인 경우는 시리얼 터미널 소프트웨어가 없어도 불편이 없지만 네트웍, 텔레컴 장비를 다루거나 임베디드 환경에서 작업하는 사람들에게 있어서는 시리얼 터미널은 가장 기본적이고 필수불가결한 툴이다.
그런 의미에서 얼마전에 발표된 CoolTerm은 Mac OS X에 있어 가뭄의 단비(?)와 같은 소프트웨어이다.

프 로그램 설명에도 써 있는것처럼 터미널 에뮬레이션 기능은 빠진 간단한 시리얼 포트 터미널 소프트웨어로 시리얼포트로 데이터를 주고 받는걸 주 목적으로 하는 임베디드 환경에서 작업하는 사람들을 주 타켓으로 하고 있다. (사실 임베디드 환경에서 작업하는 사람들에게는 터미널 에뮬레이션 기능(vt100, xterm 등등)은 없어도 관계없다.) 그렇기 때문에 데이터를 텍스트 포맷 뿐 아니고 헥사값으로도 볼 수 있고 시리얼 포트가 여러개 있는 경우 동시에 복수개의 커넥션 연결, 헥사값으로 데이터 전송 등등 임베디드 작업에 유용한 여러가지 기능들을 가지고 있다.

RTS/CTS, DTR/DSR, DCD, RI 등의 핸드쉐이크 핀의 상태를 볼 수 있다.

Options에서 통신 환경을 설정할 수 있다.

Send String에서 텍스트로 뿐 아니고 헥사값을 보낼 수도 있다.


현재 (Version 1.0) Preferences에서는 Viewer의 폰트설정만 변경할 수 있다.
Posted by nautes

Mac OS X는 OS에서 기본적으로 정해진 시간에 컴퓨터를 키거나 끄기 (또는 잠자기 및 깨어나기) 기능을 가지고 있다.

독에서 System Preferences를 선택한다.

System Preferences 화면에서 Energy Saver를 선택한다.

Energy Saver 화면의 오른쪽 아래부분에 있는 Schedule... 을 선택한다.


Schedule... 화면으로 들어오면 아래와 같이 시작 또는 깨어나기, 잠자기 또는 끄기 시간을 지정할 수 있다.


아래쪽에서는 잠자기, 재시동, 끄기중에 선택할 수 있다.

또한 시간 뿐 아니고 매일, 주중에만, 주말에만, 아니면 특정 요일에만 꺼지거나 재시동 하도록 선택해 줄 수도 있다.

이나마도 귀찮은 경우 shutdown 이라는 유틸리티를 이용하면 30, 60, 90 분 후에 컴퓨터가 꺼지게 할 수도 있다.


Shutdown은 대쉬보드 위젯으로 설치한 다음 대쉬보드에서 위젯 버튼을 눌러주면 30분 후 꺼짐->60분 후 꺼짐->90분 후 꺼짐->기능 사용 안함->... 순으로 바뀌게 된다.


Posted by nautes

calllog2ical(or iphonelogd)는 아이폰의 통화내역을 iCal로 옮겨주는 역할을 하는 루비 스크립트이다.

아이폰은 내부적으로 sqlite3를 DB로 사용하고 있고 통화목록은 CallHistory라는 이름의 DB로 관리된다.

이 DB는 /private/var/root/Library/CallHistory/call_history.db 에 위치하고 있고 구조는 다음과 같다.

[View DB structure] &lt;- click here


Jail-broken 된 아이폰에 terminal 같은 콘솔 프로그램이 깔려 있으면 아이폰 콘솔에서 다음 명령으로 db를 직접 억세스 할 수도 있다.

% sqlite3 /private/var/mobile/Library/CallHistory/call_history.db

SQLite version 3.5.9

Enter ".help" for instructions

sqlite> SELECT * FROM call;

아이튠에서 sync를 하면 아이폰의 데이터가 백업되면서 이 정보 역시 맥에 저장되게 된다. calllog2ical.rb 스크립트는 이 백업된 내용에서 통화 목록을 읽어 그 내용을 iCal에 개별 이벤트로 집어넣어 준다.


먼저 http://code.google.com/p/iphonelogd/ 에서 프로그램을 다운받는다. 맥에서만 동작하고 현재 버전은 calllog2ical.0.10.pkg  이다.

다운받은 패키지를 실행하면 인스톨러가 실행되어 프로그램이 설치되게 된다. 설치되는 위치는 /usr/local/bin 이다.

설치가 완료되면 먼저 아이폰을 맥에 연결하고 아이튠에서 아이폰을 sync하도록 한다.

싱크가 끝나면 터미널 창을 열고 쉘 프롬프트에서 다음의 명령어를 실행해주면 된다.

% calllog2ical.rb

그러면 백업된 파일에서 통화목록 db를 읽어 각 통화를 위의 화면과 같이 iCal에 이벤트로 넣어준다. 전화번호가 Address Book에 등록되어 있으면 자동으로 이름으로 변환해서 보여주고, 등록되어 있지 않은 번호인 경우 unidentified 로 표시되지만 그래도 url필드에 전화번호는 기록된다.

* 이 스크립트는 디폴트로 'Call Log' 캘린더에 통화목록을 넣어준다. 스크립트를 실행하기 전에 iCal에 'Call Log' 캘린더가 만들어 져 있어야만 한다. 만일 없으면 실행 중 에러를 발생하고 멈춘다.

* 다른 이름의 캘린더를 사용하려면 calllog2ical.rb 뒤에 캘린더 이름을 넣어주면 된다.

Posted by nautes

Scilab1.jpg

이번 2월 12일에 Scilab v5.1을 발표하며 드디어 맥에서도 native 환경을 지원하기 시작하였다. 그 동안은 맥에서는 X11을 띄운 상태에서만 사용할 수 있어서 맥 환경의 장점을 살릴수가 없었었다.

scilab4.jpg

이전 X11환경에서 사용하던 Scilab 4.1.2

scilab5.1.jpg

Mac OS X native 환경에서 실행되는 Scilab 5.1

Scilab은 홈페이지의 설명대로 'The open source platform for numerical computation'이다. 조금 더 쉽게 설명하자면 오픈소스 matlab이라고 생각하면 된다.

문법은 matlab과 약간 다른 부분이 있지만 기능에서는 거의 차이가 없다. Scilab은 프랑스 INRIA에서 개발되기 시작하여서 주로 유럽쪽에서 더 많이 사용되고 있다. Matlab과 마찮가지로 Scilab Toolbox가 있어 다양한 기능을 추가할 수도 있고 Scilab-LavVIEW gateway, Scicos라는 block diagram modeller/simulator까지 있어 실제 현장에서 바로 사용하는데 문제가 없다.

200902171755.jpg

Scicos: Block diagram modeller/simulator

또한 scilab 으로 개발한 알고리즘/코드를 DSP나 마이크로컨트롤러에서 사용할 수 있도록 자동으로 코드를 생성해주는 FLEX toolbox가 있으며 scilab/scicos를 ARM프로세서를 사용하는 임베디드PC에 직접 집어넣을 수 있도록 최적화 된 Scilab-EMB도 제공되고 있다.


* 앞으로 몇번으로 나눠 기본 문법과 matlab과의 차이에 대해 설명하겠다.

Posted by nautes

Mac OS X에서는 FAT, FAT32 파티션은 읽기/쓰기가 모두 가능하지만 NTFS 파티션은 마운트를 해도 읽기 전용(read-only)으로밖에 사용할 수 없다.

예전에는 FAT32를 사용해도 큰 불편이 없었지만 최근들어 HD해상도 동영상 파일등은 파일크기가 4G를 넘어가는 경우가 많아 외장하드나 Bootcamp파티션에 FAT32를 사용하면 상당히 곤란한 경우가 발생하기 쉽다.

현재 가능한 솔루션으로는 Paragon 에서 나온 NTFS for Mac OS X와 Mac FUSE가 있다.

Paragon의 솔루션은 무료가 아니므로 여기서는 오픈소스인 Mac FUSE를 사용하는 방법을 설명하겠다.


macfuse.jpg

MacFUSE의 홈페이지에 가면 다음의 화면을 볼 수 있다. 화면 오른쪽에서 최신의 MacFUSE를 다운받는다.


macfuse1-1.jpg

다운받은 DMG파일을 더블클릭으로 오픈하면 아래와 같은 MacFUSE이미지가 마운트된다. 여기서 MacFUSE.pkg를 더블클릭해서 MacFUSE를 설치해준다.


MacFUSE3-1.jpg

MacFUSE 자체는 NTFS를 지원하는게 아니고 Mac OS X에서 다른 파일시스템을 사용할 수 있게 해 주는 일종의 프레임웍이기 때문에 NTFS 파일시스템을 사용하기 위해 MacFUSE를 설치한 다음에 NTFS-3G를 설치해 줘야 한다.


NTFS3g1.jpg

http://macntfs-3g.blogspot.com/ 로 가서 최신 버젼의 NTFS-3G를 다운받는다. 두가지 버젼이 있는데 위에것(ublio)은 내부 메모리 캐슁을 사용해서 고속으로 동작하지만 대신 시스템이 크래쉬되는 경우 최근의 작업내용을 잃어버리거나 파일시스템이 손상을 받을 가능성이 커진다.

아래쪽의 버젼(stable)은 성능은 약간 떨어져도 시스템 크래쉬같은 경우에도 파일시스템의 손상을 최소화하도록 되어 있다.

NTFS3g2.jpg

다운받은 DMG 파일을 더블클릭해서 열어주면 NTFS-3G 이미지가 마운트된다. 여기서도 NTFS-3G.pkg를 더블클릭해서 설치해준다. 설치가 끝나면 재시동을 하게 된다.

ntfs3g4.jpg

재시동을 한 다음 윈도우 파티션 디스크의 정보를 보면 Format이 NTFS-3g (MacFUSE)로, Sharing & Permission이 You have custom access로 바뀐걸 확인할 수 있다. 이제 NTFS 파티션도 일단 맥 디스크와 동일하게 읽고 쓰기가 모두 가능하다.

Posted by nautes



맥에 전원을 넣고 부팅할 때 다음의 키들을 사용해 옵션을 선택할 수 있다.

Option+CMD+shift+Del : Primary boot 방법을 건너뛰고 다른 부팅 방법을 찾음

C
: CD에서 부팅

N
: 네트웍 부팅

T
: Firewire Target Disk mode 부팅 (이 경우 맥이 다른 컴퓨터에 Firewire 외장하드로 인식됨)

Shift
: Safe Boot mode

CMD+V
: Verbose mode

CMD+S
: Single user mode

Option
: 부트 매니져를 실행. Bootcamp를 사용해서 윈도우를 설치한 경우 부트매니져에서 어느 OS로 부팅할 것인가 선택할 수 있음

Posted by nautes

이전버튼 1 2 3 이전버튼