436

(0개의 댓글, 어플리케이션 글에 작성됨)

혹시 모르신다면, 프로그램이 서운해 할 겁니다. 왜냐하면, Mac OS X를 깔면 기본적으로 설치되는 도구이니까요.

/Applications/Utilities/ 폴더 안을 살펴보면, 다양한 도구들이 많지만 무심코 그냥 흘려버리게 되는데, 가만히 하나씩 살펴보면 쓸모있는 기능들을 가지고 있는 놈들이 많습니다. 그 중에 하나가 바로 DigitalColor Meter입니다.

DigitalColor Meter는 이름 그대로 화면에 보이는 색깔의 RGB, CIE 혹은 Tristimulus 변환 값을 표시해 줍니다.

http://appletree.or.kr/forum/files/DigitalColor_Meter.png

비슷한 기능들을 가진 도구들이 이미 다양하게 많이 배포되어 있지만, DigitalColor Meter만의 간편한 기능으로는, 그냥 마우스를 화면에 보이는 원하는 색깔 위에 올려놓으면 실시간으로 변환 값을 보여주게 되는데, 이 값은 Shift+Apple+C 키를 눌러서 글자 형태로 바로 복사해서 사용할 수 있답니다. HTML 작업시에는, 색깔 변환 값을 RGB As Hex Value, 8-bit으로 선택해서 사용하면 되겠습니다.

437

(0개의 댓글, Mac OS 글에 작성됨)

Tiger 시스템 아이콘들을 자신의 구미에 맞게 바꾸고 싶으세요?
이럴 때 가장 손쉽게 사용할 수 있는 도구인 Candybar를 사용하면 몇 번의 클릭만으로도 가능합니다.
물론, 고전적인 방식을 택한다면, 시스템에 여기저기 흩어져 있는 아이콘들을 찾아서 직접 하나하나 바꿔주는 것도 가능합니다.
문제는 이렇게 흩어져 있는 아이콘들을 어떻게 모두 찾아내느냐 하는 건데, 터미널의 locate 명령을 사용하면 모든 아이콘들의 위치 목록을 손쉽게 뽑아 볼 수 있습니다:

locate .icns
locate .png
locate .tiff

이렇게 해서, 뽑은 목록들을 복사해서 따로 저장해 놓으면 원하는 아이콘들의 위치를 추적하는데 참고가 되실 겁니다. 사용의 편의를 위해 위치 목록들을 항목별로 분류해서 따로 저장해 놓은 것은 여기에서 받으실 수 있습니다.

아래는, 주요 시스템 아이콘들이 위치하고 있는 곳들입니다.

CoreTypes.bundle에는 폴더 아이콘들과 함께 Finder, Toolbar, floating palettes 그리고 경고 상자에 보여지는 아이콘들을 포함하고 있습니다.
/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/

Dock.app에는 Finder의 .png 파일들과, 휴지통, Dashboard 관련 이아콘들이 들어 있습니다.
/System/Library/CoreServices/Dock.app/Contents/Resources/

시스템의 Extentions 폴더에는 다양한 미디어, 내장/외장 드라이브들 그리고 RAID 디스크들의 아이콘들이 위치하고 있습니다.
/System/Library/Extensions/

Finder.app에도 자주 보여지는 아이콘들이 있답니다.
/System/Library/CoreServices/Finder.app/Contents/Resources/

메뉴막대 아이콘들을 바꾸고 싶으세요? 그럼, Menu Extras 폴더를 살펴보세요.
/System/Library/CoreServices/Menu Extras/

또, 몇몇 시스템 상층부 아이콘들은 SystemUIServer.app에 있습니다.
/System/Library/CoreServices/SystemUIServer.app/Contents/Resources/

여기에 설명되어 있는 아이콘들의 위치로 파고들 때는, Finder의 "폴더로 가기..." 명령으로 손쉽게 접근하실 수 있으며, 만약을 대비해서 수정하기 전에 원본들은 따로 보관해 놓으시기 바랍니다. 그리고, 아이콘을 변경한 후에는, Disk Utility를 사용해서 권한 복구를 실행하는 것도 잊지 마십시오. 아이콘 수정 후 변경된 효과는 Finder를 강제로 다시 실행시키거나, 다시 로그인하면 보실 수 있습니다.

438

(0개의 댓글, Mac OS 글에 작성됨)

Darwin이란 무엇인가 (그리고 Mac OS X에서는 어떤 힘을 발휘하는가)

따온 글 -What Is Darwin (and How It Powers Mac OS X)
by Matthew Russell
09/27/2005
http://www.opendarwin.org/images/hexley-2.png

Darwin

Darwin은 Unix에서 파생된 핵심 요체로 Mac OS X의 기저를 받치고 있으면서 OS 운영의 기반이 되는 기능들을 제공하고 있습니다. Darwin의 핵심은 XNU kernel이며, 성능상의 이유로 FreeBSD의 일부분을 추가하면서 수정된 Mach 3.0 기반의 microkernel로 구성되어 있습니다. Darwin에는 장치 드라이버들을 생성해 주는 기능, 확장된 Virtual File System (VFS) 설계를 바탕으로 한 다중 파일 시스템 지원, 그리고 무설정 네트워킹 기술인 Bonjour와 같은 고급 네트워킹 기능들을 포함하고 있습니다. Apple은 현재 Darwin을 Apple Public Source License (APSL) 2.0 형태로 무료 배포하고 있으며, OpenDarwin.org 그리고 GNU-Darwin과 같은 단체들에서는 일반 사용자들의 참여를 유도하기 위해 이 소스를 사용해서 주기적으로 그들만의 수정본을 배포하고 있습니다.

Mac OS X가 소개된 이후로, 내재한 Objective-C 기반 Cocoa framework 덕분에 개발자들은 비교적 아주 짧은 시간을 투자해서 몇몇 훌륭한 소프트웨어들을 개발할 수 있었습니다. 시장 안의 이런 모든 획기적인 결과물로, 화면 위 눈에 보이는 것들에만 관심이 집중된 이유로, 정작 이 모든 것들을 가능하게 만든 뒤에 숨어 있는 경이로운 기술들은 잊게 하였습니다. 이제, OS X의 핵심(Darwin)으로 파고들어서 우리에게 세상에서 가장 훌륭한 컴퓨터 환경을 제공해주는 그 알맹이 속을 들여다보겠습니다.

Darwin의 진화

Mac OS X의 개발은 과거 1996년으로 돌아가서 Apple이 NeXT를 인수한 직후부터 시작되었습니다. 인수 후에, Mac OS X가 공식적으로 발표된 2001년 이전까지, Mac OS X의 전신이 되는 이 개발 프로젝트는 Rhapshody라는 코드명 갖게 됩니다.

Rhapsody의 개발 동안, 코드는 따로 떨어져 나와서 오늘날 Darwin으로 알려진 공개 소스로 배포됩니다. 결국, 2000년 4월경, Apple의 개발자들은 첫 1.0 버전의 개발을 완료하게 됩니다. 이미 Darwin의 소스 코드를 배포한 후였지만, 완성된 1.0 버전은 오늘날 XNU로 알려진 새로운 hybrid core에 기초한 것이었기 때문에 특별하게 중요한 것이라 하겠습니다. XNU는 Free Software Foundation의 반복 두문자어 형태인 GNU와도 비슷하게 "XNU is Not Unix"를 뜻합니다.

대략적인 OS X의 구조

이제 Darwin의 과거를 대략적으로나마 아셨으니, 자세한 내용에 들어가기 전에 먼저 Darwin이 전체 OS X 구조에서 어떠한 부분을 차지하고 있는지 살펴보겠습니다. 일반적으로 말해서, 대부분의 Darwin은 핵심 OS라고 불리는 하드웨어 바로 위에 맞닿아 있으면서 kernel, 장치 드라이버, 그리고 기타 OS의 기초적 수준의 자원들을 구성/관리하고 있습니다. 그리고 핵심 서비스, 애플리케이션 서비스, 그래픽, 멀티미디어를 포함하는 기타 구성 층들은 핵심 OS와 Aqua로 정의된 사용자 환경 사이에 있습니다. (여기서 Aqua란 사용자 인터페이스의 전체적인 모양과 Mac OS X 애플리케이션들의 동작을 정의하는 표준을 말합니다.) 이것과 관련하여 어떻게 모든 OS X 기술들이 서로 짜져 있는지에 관한 세세하고 완전한 정보는 Mac OS X Technology Overview 문서를 읽어 보시기 바랍니다. 비 오는 날 시간 보내기에는 꼭 안성맞춤이랍니다.

http://www.macdevcenter.com/mac/2005/09/27/graphics/layers.jpg http://www.macdevcenter.com/mac/2005/09/27/graphics/architecture.jpg
OS X System 구조를 나타내는 두 가지 다른 관점의 그림들. "Core OS" 안 대부분의 기술은 Darwin에 속합니다.

XNU--Darwin의 Kernel

OS를 논할 때 가장 좋은 출발점은 바로 kernel입니다: 여기서 kernel은 밑에 깔린 활용 가능한 모든 하드웨어로의 접근과 관리를 지원하는 OS의 핵심 요소라 할 수 있습니다. Darwin을 완전하게 이해하려 한다면, 성능상의 이유로 kernel 공간 안에 FreeBSD의 일부분을 추가해서 Mach 3.0 microkernel로 융합한 Darwin의 kernel(XNU)에 대한 정체를 짚고 넘어가야 합니다. Mach의 기초는 Pittsburgh에 있는 Carnegie Mellon University에서 시작되었으며, FreeBSD는 BSD(Berkeley Software Distribution)의 자손격으로 BSD의 태생은 짐작하셨겠지만, Berkeley에 잇는 University of California에서 시작되었습니다.

XNU는 kernel 설계에서 서로 다른 두 접근 방식(monolithic 그리고 microkernel 방식)들의 장점들만을 합치려는 노력의 결과로 볼 수 있습니다. 이미 여기서 쓰인 용어가 복잡하게 들릴 수도 있겠지만, 두 가지 방식의 주요 차이점은 아주 단순해서, 기본적으로 어떤 프로그램이 kernel 자체 안에서만 돌아가게 되고, 또 어떠한 프로그램이 kernel 밖에 있는 userland에서 돌아가느냐의 차이입니다. 일반적으로 monolithic kernel은 같은 주소 공간 안에서 모든 하드웨어를 제어하는 비교적 완전한 형태의 풍부한 요체들로 정의되어 있지만, microkernel의 경우에는 kernel 안에는 비교적 최소한의 핵심 서비스들을 제공하면서 다른 주요 서비스들은 userland에서 실행되는 daemon(server)형태의 서비스들을 사용하는 경향이 있습니다.

http://www.macdevcenter.com/mac/2005/09/27/graphics/monolithic.jpg http://www.macdevcenter.com/mac/2005/09/27/graphics/microkernel.jpg
monolithic kernel(왼쪽)과 microkernel(오른쪽) 설계의 개념도

이 두 접근 방식들 사이에는 아직도 자주 논쟁이 되는 장단점들이 있지만, 이 모든 논쟁의 중심이 되는 것은 결국은 효율성에 관한 주제로 돌아오게 됩니다. 하드웨어와 아주 밀착된 성질을 가진 monolithic kernel은 시스템 기반의 하드웨어들을 아주 효율적으로 사용할 수 있도록 해주지만, 한편으로는 monolithic kernel은 작성하기가 매우 어려우며, kernel 코드 안의 단 한 가지의 실수로 말미암아 시스템 전체를 멈추게 할 수도 있습니다.

반면에, microkernel은 더 많은 핵심 작업들을 userland에서 실행시키며, 이 때문에 다른 한편으로는 실제 kernel 설계를 단순화시켜서 전체 시스템의 안전성을 향상하는데 큰 보탬을 줄 수도 있습니다. 하지만, 불행히도 이 방식은 microkernel이 많은 정보를 kernel 공간으로 보내고 받아야 하는 context switch로 알려진 작업을 통해야만 하는 단점이 있습니다. Context switch는 심각한 작업 하중을 불러일으키며, 이것은 결국 성능을 저하하는 결과를 가져오게 됩니다.

이쯤 와서, 여러분은 두 kernel 설계 중에서 하나를 선택해야 한다면 풀어야만 하는, 논쟁을 떠받치고 있는 문제의 요점을 이해하기 시작하셨을 겁니다. 이런 모든 논쟁 중에서도 아마도 가장 유명한 것은 Linus Torvalds씨와 Andrew Tanenbaum씨 사이에 있었던 것일 겁니다. Torvalds씨는 monolithic kernel 방식을 선호했고, 반면에 Tanenbaum씨는 microkernel 접근법을 옹호했었습니다. 여러분은 1992년 당시, 세계적으로도 유명한 불꽃 같은 논쟁의 한 부분이었던 두 사람 간의 원래 서신을 이 곳에서 읽으실 수 있습니다. (이것을 보면 Darwin kernel을 위한 결정은 이미 끝났다는 것이 얼마나 다행스러운지 모르겠습니다.)

Darwin 이외의 것들

이제까지 XNU의 대략적인 내용을 살펴보았습니다만, kernel을 제쳐놓고라도 Darwin에 관해서는 아직도 많은 이야깃거리가 남아 있습니다. 몇 가지 언급할 만할 가장 주요한 것들로는 I/O Kit을 통해 제공되는 기능들, Virtual File System (VFS), 그리고 네트워킹 지원에 관한 것들이 있습니다.

I/O Kit

Darwin의 I/O Kit(Input/Output Kit)은 Mach 기반 장치 드라이버 framework로 이루어져 있습니다. 이것은 독립적이고, 확장 가능하며, 또한 실제 환경에서 유동적인 장치 관리를 위해 쉽게 변용해서 적용될 수 있습니다. Objectiv-C로 쓰인 Cocoa와는 달리, I/O Kit은 C++의 아류라고 볼 수 있는 Embedded C++로 쓰였습니다. I/O Kit을 위한 언어로 C++가 선택된 이유 중에는 대부분 C++의 검증된 compiler와 오랫동안 시스템 프로그래밍을 지원해 왔다는 점에 기초한다고 볼 수 있습니다.

Mach 기반 kernel 방식에 맞추기 위해, I/O Kit에서 가져온 장치 드라이버들은 특정 장치 혹은 동 종류 장치들 전체를 다루는 데 필요한 정보를 제공하는 특별한 형식의 kernel 확장자들로 이루어져 있습니다. 장치 드라이버를 직접 만들거나 혹은 하드웨어의 가장 밑부분을 제어해야 할 경우가 아니라면, I/O Kit을 신경 쓰실 필요가 없을 겁니다. 하지만 혹시라도 작업하는 데 필요한 정보를 얻으시려면, I/O Kit Fundamentals를 보시면 좋은 안내서가 될 수 있을 겁니다.

파일 시스템과 네트웍 지원

Darwin의 파일 시스템과 네트워크 지원은 풍부한 BSD 재산을 물려받았습니다. VFS 설계로 긴 파일 이름의 지원과 같은 기능 등을 가능하게 했으며, URL 기반 볼륨 마운팅, 그리고 journaling 기능이 도입될 수 있었습니다. Darwin의 파일 시스템은 Mac OS 확장/표준, UFS, UDF, NTFS, 그리고 FAT와 같이 현재 사용되는 거의 모든 파일 시스템들을 다룰 수 있습니다. 웹이 점차 실생활에 근접해 지면서, 파일 시스템 지원을 보충하기 위한 네트워킹 지원 또한 필수 요소이며, 이 점에 관해서는 실망하지 않으실 겁니다.

전에 Windows 상자의 네트워킹을 설정해 본 경험이 있으시다면, 종종 악몽과도 같은 경험이 될 수도 있다는 것을 눈치채셨을 겁니다. 어떤 때는, 여러 개의 tab 속에 있는 갖가지 설정들을 변경한 후에도, 각 tab을 누르면 또다시 새로 열리는 창 속의 여러 tab과 함께 딸려오는 여러 설정 항목들, 그리고 형편없는 도움말 시스템들과 맞닥뜨리게 될 겁니다. 하지만 Darwin에는, 그런 일은 없습니다. Darwin의 BSD 기반 확장 가능한 네트워킹 프로토콜 층은 일반 네트워킹과 관련된 거의 모든 혼란을 없애주는 무설정 네트워킹 수단인 Bonjour와 같은 OS X의 여러 기능에 힘을 실어주는 요인이 되고 있습니다. 이 점에서는 정말로 이보다 더 간편한 방법은 없을 겁니다. 물론 이런 기능들은 당연시 여겨질 수도 있겠지만, 이런 것들이야말로 전체 Darwin 설계에서 자랑거리라 할 수 있습니다.

Darwin과 Open Source

Apple에서는 새로운 버전의 Darwin을 OS X의 주요 갱신 때마다 그들의 오픈 소스 사이트에 배포하고 있으며, Apple의 배포 직후 얼마 안 있어 OpenDarwin.org 진영에서도 그에 대응하는 버전을 내놓고 있습니다. OpenDarwin은 간단하게 Apple의 최근 배포 버전에 Apple에서는 제공하지 않는 약간의 추가 기능들을 첨가한 것이라고 볼 수 있습니다. 이러한 추가 기능들에는 보통 X11 GUI 지원, 장치 드라이버, 여러 도구들, 그리고 여러 하드웨어 지원 등 통상 Mac OS X에서는 직접적으로 지원하지 않는 기능들이 있습니다.

비록 2.0 버전 이전의 APSL(Apple Public Source License)에 의해 배포된 Darwin은 FSF에 의해 비판받기도 했지만, 2.0 버전의 APSL은 무료 소프트웨어 라이센스로 인정받았으며, 대부분의 Darwin은 이 라이센스 하에서 배포되고 있습니다. 하지만, FSF는 아직도 APSL 2.0이 두 가지의 허점들을 가지고 있는 것으로 여기고 있습니다: 완전한 소유권 하에 있는 다른 파일들과의 연결을 유지하고 있으며, 일반적으로 GPL과는 호환되지 않습니다. 제 생각에는 앞으로 QuickTime, Spotlight, 혹은 Cocoa 프레임워크들과 같은 것들이 오픈 소스화 되는 어떠한 비밀 협약이 있을 거라고는 생각하지 않습니다. 그러므로 이 점에 관해서는 불안해하지 않으셔도 됩니다.

만약 Mac OS X의 내부를 파헤쳐 보고 싶으시다면 Apple 버전의 Darwin 혹은 OpenDarwin의 것을 내려받으실 수 있습니다. 그리고 또, 약간의 추가 기능들과 소프트웨어 수정본들로 무장된 또 다른 가능성에 관심이 있으시다면, 가장 자유로운 버전의 Darwin을 목표로 한 프로젝트인 GNU-Darwin을 살펴보시기 바랍니다.

Intel로의 전환

스티브 잡스가 Intel로의 전환을 발표했을 때, 많은 사람은 어떻게 전체 OS가 그렇게 짧은 시간 안에 완전히 다른 구조에서 실행되도록 옮겨갈 수 있을지 놀라워하면서도 또 한편 궁금해하였습니다. 하지만 많은 사람은 OS X가 처음 구상되기 시작한 후로 Mac OS X의 진화와 더불어서 Darwin도 x86에서 컴파일링 되어 왔다는 사실은 아마 몰랐을 겁니다 - 의심의 여지를 없애려면 돌다리도 두드려 보라는 가르침을 염두에 두었을 겁니다. 실제, Darwin의 1.0 버전 개발 과정에 관한 내용은 옛 Advogato씨의 일지 중, 바로 이곳에서 읽어 보실 수 있습니다. 여기에는 심지어 과거 NeXT 시절에서부터 시작해서 최근에도 여러 번 듣게 되는 기술인 fat binaries(universal bianries)에 관한 언급도 보실 수 있습니다.

잠깐의 재밋거리로, 다음 글도 한번 읽어 보시기 바랍니다: 나는 스티브가 절대 그런 짓은 안 하겠다고 말하는 것을 직접 들었다 - 2000년도의 옛 Wired 뉴스 기사에 관한 소감을 weblog에 올린 글로, 여기에는 오늘날 우리가 알고 있는 Intel로의 전환 사실에 비추어 보면 재미있는 몇 가지 인용구들이 소개되어 있습니다.

이젠 아시겠죠

이제는 터미널을 열 때마다 보이는 "Welcome to Darwin!"이라는 작은 문구가 어떤 의미를 가졌는지를 다시는 궁금해하실 필요가 없을 겁니다. 아무쪼록 이것으로 Mac OS X가 어떻게 동작하고, 어디에서 왔으며, 그리고 OS X에게 어떤 힘을 실어주는지 더 깊은 이해를 구하는 데 도움이 되었으면 하는 바람입니다. 자, 이제 어서 Darwin 소스를 내려받고, OS X 내부가 어떻게 작동하는지를 한번 살펴보시기 바랍니다.

439

(0개의 댓글, Mac OS 글에 작성됨)

Mac OS X의 디스크 이미지 생성/변환 도구인 Disk Utility는 일반 사용자가 사용하기에 쉽고 간편하지만, 기본적으로 제공되는 기능들은 상황에 따라 부족한 면이 있을 수도 있습니다. 하지만, Disk Utility와 상응하는 Mac OS X 터미널 도구인 hdiutil을 사용하면 hybrid 형식을 포함한 다양한 이미지 형식들의 생성/변환이 가능하고, 또 이미지 관련 세밀하고 다양한 작업들을 수행할 수 있습니다.
그래서, 주로 사용되는 이미지 작업들의 간단한 hdiutil의 사용법을 소개해 드리겠습니다.

hdiutil 용법:
hdiutil verb [options]

hdiutil은 디스크 이미지 작업에 DiskImages framework를 사용합니다. 주로 사용되는 verb들에는 help, attach, detach, verify, create, convert, burn, makehybrid, compact, 그리고 segment가 있습니다.

주요 VERB들의 용법:

help
각각의 verb를 위한 최소한의 용례 관련 정보 표시. hdiutil verb -help 명령을 주면 해당 verb를 위한 모든 용례 관련 정보를 제공하게 됩니다.

attach image [options]
디스크 이미지를 시스템 디바이스로 화면 위에 올려놓습니다(예전의 mount 명령과 같음).

detach dev_name [-force]
디스크 이미지를 내려놓고(추출하고) 관련 hdid 작업을 중단합니다. dav_name은 /dev note 경로의 한 부분입니다 (예, "disk1"). OS X 10.4에서는 dev_name에 mount point가 사용될 수도 있습니다.
선택사항인 -force를 사용하면 이미지에서 열려 있는 파일에 관계없이 파일시스템을 내리고 이미지를 분리합니다.

verify image [options]
읽기 전용 (압축된) 이미지의 checksum을 계산해서, 이미지에 저장되어 있는 값과 일치하는지 검사합니다.

create size_spec image
제공된 데이타 혹은 주어진 크기의 새로운 이미지를 생성. 만약 이미지가 이미 존재한다면, -ov 변수를 지정해야 합니다. 시스템 간 호환되는 CD 혹은 DVD 이미지를 생성하려면,  makehybrid 명령을 사용하십시오.

convert image -format format -o outfile
이미지format 형식으로 변환한 후에, 결과를 outfile에 저장합니다. 파일 이름의 올바른 확장자는 제공된 이름 중에 포함되어 있지 않을 경우에만 추가됩니다. 사용 가능한 format들은 다음과 같습니다:

  • UDRW - UDIF read/write image: dmg

  • UDRO - UDIF read-only image: dmg

  • UDCO - UDIF ADC-compressed image: dmg-Mac OS X 10.0

  • UDZO - UDIF zlib-compressed image: dmg-Mac OS X 10.1(기본적으로 선택되는 형식)

  • UDBZ - UDIF bzip2-compressed image: dmg-Mac OS X 10.4 이상에서만 지원

  • UFBI - UDIF entire image with MD5 checksum: dmg

  • UDRo - UDIF read-only: dmg (한물간 형식)

  • UDCo - UDIF compressed: dmg (한물간 형식)

  • UDTO - DVD/CD-R master for export: cdr

  • UDxx - UDIF stub image: dmg

  • UDSP - SPARSE: sparse-내용에 따라 용량 증가

  • RdWr - NDIF read/write image: img (더 이상 지원되지 않음)

  • Rdxx - NDIF read-only image: img-Disk Copy 6.3.3 형식

  • ROCo - NDIF compressed image: img-classic Mac OS (더 이상 지원되지 않음)

  • Rken - NDIF compressed: smi-self mounting (한물간 형식)

  • DC42 - Disk Copy 4.2 image: diskcopy42

몇몇 형식들에서 제공하는 압축 방숙에 추가해서, UDIF와 NDIF의 읽기 전용 형식들은 HFS 그리고 UFS 파일시스템안의 사용되지 않은 공간들을 완전하게 지우게 됩니다. 그리고 UDZO 형식의 경우, imagekey zlib-level=value 명령을 사용하면 gzip(1)에 지정되어 있는 zlib 압축 수준을 지정해 줄 수도 있습니다. 기본 압축 수준은 1 (가장 빠른)입니다.

burn image
image를 장착되어 있는 굽기 장비 속의 디스크에 굽습니다.

makehybrid -o image source
DiscRecording framework의 자료 생성 시스템을 이용해서 잠재적인 hybrid 파일시스템 형식의 읽기 전용 디스크 이미지를 생성합니다.
source는 디렉토리 혹은 디스크 이미지 모두가 가능합니다. 이렇게 해서 생성된 이미지는 burn 명령을 이용해서 굽거나, 혹은 convert 명령으로 다른 형식의 읽기 전용 이미지로 변환할 수 있습니다. 기본적으로, hybrid 이미지의 파일시스템은 다른 대부분의 플랫폼들에서도 읽혀질 수 있습니다.

사용 가능한 파일시스템들:
-hfs -- HFS+ 파일시스템 생성. 이 파일시스템은 ISO9660, Joliet 혹은 UDF 파일시스템들과 함께 이미지에 존재할 수 있습니다. Mac에서 권장되는 파일시스템.
-iso -- Rock Ridge 화장의 ISO9660 Level 2 파일시스템 생성.
-joliet -- Joliet 확장의 ISO9600 파일시스템 생성. Joliet은 Unicode 파일 이름을 지원하나, 몇몇 운영 체계들에서만 지원됩니다. 만약 디스크 이미지나 CD에 HFS+를 제외한 ISO9660 그리고 Joliet 파일시스템이 모두 존재한다면, Mac OS X는 Joliet 파일시스템을 보여주게 됩니다.
-udf -- UDF 파일시스템 생성. UDF는 DVD를 위한 표준 호환 형식입니다만, 운영 체계 지원은 OS 버전과 UDF 버전에 따라 달라집니다.

기본적으로, 특정 파일시스템이 지정되지 않으면, 이미지느 네 가지 모두의 파일시스템을 포함하는 hybrid 이미지를 생성합니다. 그리고, 다중 파일시스템이 선택되면, 이미지의 데이타 부분은 모든 파일시스템들 사이에서 공유되고, 각 파일시스템에만 해당하는 디렉토리 정보와 볼륨 메타-데이타들만이 따로 있게 됩니다.

compact image
HFS 파일시스템으로 된 SPARSE 형식의 디스크 이미지를 검사해서, 더 이상 파일시스템의 의해 사용되지 않는 부분을 삭제합니다. 파일시스템 안의 파일 구조에 따라, compact 명령으로 이미지 파일의 크기를 줄여줄 수도 있습니다.

segment -o firstSegname -segmentCount #segs image [opts]
segment -o firstSegname -segmentSize size image [opts]
NDIF 혹은 UDIF 디스크 이미지를 분할합니다. 읽기/쓰기 (UDRW) 이미지의 분할은 아직 지원되지 않습니다. (OS X 10.3)

hdiutil 사용 예

검사:

hdiutil verify myimage.img

분할:

hdiutil segment -segmentSize 10m -o /tmp/aseg 30m.dmg

aseg.dmg, aseg.002.dmgpart, and aseg.003.dmgpart 생성.

변환:

hdiutil convert CDmaster.dmg -format UDTO -o CDmaster.cdr

CDmaster.dmg 이미지를 DVD/CD-R master 형식의 CDmaster.cdr 이미지로 변환.

hdiutil convert /dev/disk1 -format UDRW -o devimage

/dev/disk1 디스크를 읽기/쓰기 형식의 디바이스 이미지로 변환.

굽기:

hdiutil burn myRawImage.cdr -noverifyburn -noeject

이미지를 굽기 검사 혹은 굽기 후 디스크 추출을 하지 않고 구움. 굽기 후에는 불륨이 화면 위에 올려지게 됩니다.

50 MB짜리 암호화된 이미지 생성:

hdiutil create -encryption -size 50m e.dmg -fs HFS+J

"1 GB" 용량의 sparse 이미지 생성:

hdiutil create -type SPARSE -size 1g -fs HFS+

1 GB까지 용량이 커질 수 있음.

makehybrid를 사용해서 다음과 같은 파일들 굽기:
albumlist.txt  song2.wma  song4.m4a  song6.mp3  song8.mp3
song1.wma  song3.m4a  song5.mp3  song7.mp3

hdiutil makehybrid -o MusicBackup.iso Music -hfs -iso -joliet \
           -hide-hfs 'Music/*.wma' -hide-joliet 'Music/{*.m4a,*.mp3}' \
           -hide-iso 'Music/*.{wma,m4a}'

위의 명령은 파일시스템들 간의 몇몇 공통 자료 자료들을 포함하는 HFS+/ISO9660/Joliet 형식의 hybrid MusicBackup.iso 이미지를 생성합니다. HFS+ 파일시스템은 일반적으로 Macintosh 시스템에서만 보이게 되며, .wma 파일들을 제외한 .m4a 그리고 .mp3 파일들만을 보여주게 합니다. Joliet 파일시스템은 .m4a 그리고 .mp3 파일들은 감추지만, .wma 파일들은 보이게 합니다. ISO9660 파일시스템은 많은 플랫폼들에서 사용되는 옵티컬 미디어의 기본 파일시스템이며, .mp3 파일들만 보여주게 만듭니다. 그리고, 세 가지의 모든 파일시스템들은 'albumlist.txt" 파일을 포함합니다.

디렉토리에서 이미지 생성 (새로운 형식):

hdiutil create -srcfolder mydir mydir.dmg

440

(6개의 댓글, 어플리케이션 글에 작성됨)

Mac OS X의 시스템 환경 설정 항목들은 ~/Library/Preferences 폴더에 집약되어 있으며, 특정 어플리케이션들을 위한 몇몇 설정 사항들은 감추어져 있습니다. 어떤 것들은 아주 유용하고, 흥미롭기도 하지만, 한편으로는 성가실 수도 있습니다. 여기서 소개될 이러한 설정사항들은 Safari와 WebKit의 기반을 이루는 것들과 관련한 것들입니다.
먼저, 주의 사항부터 말씀드린다면, 여기에 소개된 어떠한 설정 항목들도 이 글이 쓰여진 이후에 적용될 수 있을 것이라고는 장담할 수 없습니다. 실험 목적으로 사용해 보더라도, 차후 Apple에서 제공될 Safari/WebKit의 갱신 내용을 주의 깊게 살펴보시기 바랍니다.
여기서 소개된 모든 설정 항목들은 com.apple.Safari.plist 파일에만 적용되어야 하며, 설정 항목 변경은 터미널의 defaults 명령을 사용하거나, 개발 도구들과 함께 딸려오는 Property List Editor로 쉽게 추가/변경할 수 있습니다.

참고 - defaults 명령의 기본 사용법:

defaults [-currentHost | -host hostname] write domain { 'plist' | key 'value' }
defaults [-currentHost | -host hostname] delete [domain [key]]

CustomUserAgent를 제외하고 Safari의 Debug 메뉴(터미널에서 defaults write com.apple.safari IncludeDebugMenu -bool YES 명령으로 추가할 수 있습니다)에서 설정할 수 있는 것들은 소개되어 있지 않습니다. 또한, 기본 AppKit 관련 설정 사항들(NSNavLastRootDirectory와 같은 NS로 시작되는 것들)도 생략되어 있음을 알려드립니다.

WebKit 설정 항목들

WebKit 설정 항목들은 기타 WebKit 기반 어플리케이션들에게 영향을 끼치지 않기 위해 Safari의 설정 항목에서도 설정될 수 있습니다. 필요하다면 관련 어플리케이션의 설정 항목을 수정하거나, 혹은 전체 시스템에 적용할 수도 있습니다.
안전을 위해서 우선 Safari의 설정 항목들을 시작으로 수정, 실험해 보시기 바랍니다. 아울러, WebKit 전반에 걸친 정보들을 포함한 WebKit 설정 항목들에 관한 자세한 내용은 WebKit Open Source Project를 방문하시기 바랍니다.

- WebKitHistoryItemLimit (number)
이 항목(기본 1000)은 과거에 방문했던 페이지들의 기록을 얼마나 많이 기억하고 있어야 하는지를 결정합니다.

- WebKitHistoryAgeInDaysLimit (number)
과거 방문 기록에 한 항목이 몇 일 동안 저장되어 있고나서 삭제될지를 결정(기본 7 일).

- WebIconDatabaseEnabled (boolean)
웹 싸이트 아이콘을(favicon.ico) 저장할 것인지 결정(기본 YES).

- WebIconDatabaseDirectoryDefaultsKey (string)
웹 싸이트 아이콘을 저장한다면, 어디에 저장할지를 결정. WebKit의 설정은 ~/Library/Icons로 되어 있으나, Safari는 ~/Library/Safari/Icons로 변경해서 설정되어 있습니다.

- BufferTextDrawing (boolean)
일종의 글자 표시 버퍼링 기능을 제공하나, 아직까지는 완전하게 구현되지 않음 (기본 NO).

- WebKitOmitPDFSupport (boolean)
WebKit 안에서 PDF 표시를 꺼줄 때 사용 (기본 NO, 그래서 PDF 지원). 만약 WebKit에 의해 PDF를 다루게 된다면, HTML이 보여지는 공간에 PDF를 표시해 줌. 꺼져 있으면, Safari는 그냥 PDF를 내려받게 됩니다.

- WebKitLogLevel (string)
이것은 숨겨진 값이며, Safari에서는 사용될 수 없음.

- WebKitPageCacheSizePreferenceKey (number)
페이지 캐쉬 크기를 지정; 먼저 한 가지 주지해야 할 것은, 이 값은 컴퓨터에 설치되어 있는 메모리 양에 따라 달라집니다 (1G 혹은 그 이상일 경우, 같은 값이 사용되며; 0.5G에서 1G 사이는, 하나 작은 값이; 0.5G 이하일 경우에는, 두 개가 작은 값이 사용됨). 이 값은 디스크에 저장되는 공간이 아니고 페이지 캐쉬 값이라서 아주 작습니다 (기본 3).

- WebKitObjectCacheSizePreferenceKey (number)
오브젝트 캐쉬 크기를 지정; WebKitPageCacheSizePreferenceKey처럼, 이 값은 시스템 메모리에 따라 달라집니다 (1G 혹은 그 이상은 곱하기 4, 0.5G 아하는 두 배, 그 이하는 그대로). 기본은 8388608 (8M).

- WebKitShouldPrintBackgroundsPreferenceKey (boolean)
YES 값을 주면 (기본 NO), 배경 그림을 사용하는 모든 페이지들은, 인쇄될 때 그림까지 함께 인쇄됨.

- WebKitTextAreasAreResizable (boolean)
아직은 사용 안됨 (기본 NO).

- WebKitAllowAnimatedImagesPreferenceKey (boolean)
아직은 사용 안됨 (기본 YES).

- WebKitAllowAnimatedImageLoopingPreferenceKey (boolean)
아직은 사용 안됨 (기본 YES).

- WebKitBackForwardCacheExpirationIntervalKey (number)
얼마나 오래 동안 캐쉬에 저장된 열람 기록을 통해 페이지 이동을 할지 결정 (기본 1800 초).

- WebKitRespectStandardStyleKeyEquivalents (boolean)
YES일 경우, 특정 자판 단축키들을 사용해서 특정 형태들(bold 그리고 italic과 같은)을 키고/끌 수 있게 허용. WebKit의 기본은 NO이나, Safari는 YES로 설정되어 있음.

- WebKitShowsURLsInToolTips (boolean)
YES로 설정되면, 링크의 URL을 tooltip에서 보여줌; 기본은 NO.

- WebKitPDFDisplayMode (number)
PDF를 표시하는 데 사용되는 모양을 나타내나, 아직은 아무런 효과를 보여주지 않는 듯 함.

- WebKitPDFScaleFactor (number)
PDF를 표시할 때 사용되는 크기 조절 값이지만, 그냥 무시되는 듯 함.


Safari 설정 항목들

이 것은 Safari 만을 위한 것이라서, 다른 WebKit 기반 어플리케이션들에게는 아무런 영향도 주지 않습니다.

- IncludeDebugMenu (boolean)
YES로 설정되면, Debug 메뉴가 추가되어서 Safari의 특정 설정값들을 변경할 수 있음. 기본은 NO.

- Log (boolean)
YES로 설정되면, 실행 로그가 stderr (consol log)에 기록됨. 기본은 NO.

- Log.SPI (boolean)
YES로 설정되면, 더욱 자세한 실행 로그가 stderr (consol log)에 기록됨. 기본은 NO.

- CacheDirectory (string)
Safari가 캐쉬 파일들을 저장하는 곳. 기본은 ~/Library/Caches/Safari. 주의할 것은, 만약 이 값을 변경하면, Safari는 캐쉬 파일을 새로운 지정 위치와 기본 위치 모두에 기록하게 되나, 실제로는 두 곳 어디에도 기록되지 않음.

- DebugShowBuildNumberInWindowTitles (boolean)
YES 값을 주면, 창 제목에 현재 빌드 번호 (예, 'v412.5')를 표시.

- CustomUserAgent (string)
Safari가 자신의 user agent 값을 웹 서버에 무엇으로 전달할지 변경할 수 있도록 함; 기본은 Safari 2.0.1/412.5에서는 "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/412.7 (KHTML, like Gecko) Safari/412.5". 이 값은 Debug 메뉴에서도 설정할 수 있으나, 이 설정 항목에서 변경하면 원하는 어떠한 값도 사용할 수 있습니다.

- BackForwardListSizeLimit (number)
방문 기록 항목들의 크기를 조절; 기본은 100. 이 값을 100 이하로 하면 Safari가 오류를 일으킬 수도 있으나, 0 값을 주면 "뒤로" 단추의 기능까지 모두 끄게 됩니다. 100 이상의 값은 사용 가능.

따옴 - MacTechNotes

441

(10개의 댓글, Mac OS 글에 작성됨)

fs_usage -- report system calls and page faults related to filesystem activity in real-time

fs_usage 명령을 실행하는 동안, 모든 filesystem 접근 상황을 실시간으로 표시해 준다고 합니다.
그런데, 무엇에 쓰일고...:?:

사용 예:

sudo fs_usage -f filesys

442

(2개의 댓글, Mac OS 글에 작성됨)

launchd와는 관련이 없는 내용이지만, Tiger로 업그레이드를 했을 경우에 추가로 정리해 주어야 할 작업이라서 여기에 같이 덧붙입니다.

Tiger 이전에서는 사용자의 Console log가 /Library/Logs/Console/<사용자의_짧은_이름>/에 저장되었지만, Tiger의 Console log는 /Library/Logs/Console/501/ 디렉토리에 쓰여지게 되었답니다.(이곳의 501은 OS가 처음으로 생성한 계정을 위한 사용자 ID를 나타냅니다.)
그래서, Tiger로 업그레이드 설치를 하였을 경우, 쓸모가 없게 된 /Library/Logs/Console/<사용자의_짧은_이름>/ 디렉토리를 지워주면, 약간의 공간이라도 절약할 수 있답니다.
참고로, 터미널에서 다음과 같이 입력하면, consol.log 파일을 생성한 Mac OS 버전을 확인하실 수 있습니다:

head -1 /Library/Logs/Console/501/console.log

443

(4개의 댓글, 어플리케이션 글에 작성됨)

GeekTool을 애용하게 되면서, 이곳저곳에서 정보들을 끌어다가 화면 위에 뿌려주는 맛에, 이제는 화면 위에 남아 있는 마지막 자투리 공간마저도 채워넣을 요량으로 이리저리 궁리한 끝에, 결국 기상청 웹 사이트에서 제공하고 있는 한반도 상공에서 관측된 여러 가지 위성 영상 중에서 하나를 가져오기로 했습니다. (여러 Dashboard widget들 중에서,  Radar In Motion도 비슷한 기상 위성 동영상을 제공하고 있습니다만, Weather.com에서 제공하는 영상을 가져오는 관계로 한반도 상공 영상의 갱신 주기는 비교적 더 긴 편인 것 같습니다.)
지금부터 설명해 드릴 요령은, GeekTool을 이용해서 MTSAT-1R 위성의 최신 한반도 위성 영상들최신 레이더 영상을 화면 위에 뿌려 주는 방법을 소개해 드리겠습니다.

우선, 최신 위성 영상들을 저장해 놓을 디렉토리를 생성합니다. (아래 보기에서는 ~/Pictures/satellite_images/)
그리고 나서, GeekTool을 열고 "New entry" 단추를 눌러서 새 항목을 추가합니다.
새로 추가된 항목의 설정 부분에서 화면 위에 표시될 형태로 "Picture"를 선택하고 "Source"는 조금 전 만들어 두었던 디렉토리에 위치할 (아직은 없는) 해당 위성 영상 파일의 주소를 입력합니다.

사용 예:
[uli]적외선 영상의 경우 - file:///Users/<사용자_이름>/Pictures/satellite_images/infrared_image.gif (이 곳의 <사용자_이름> 대신에 실제 자신의 짧은 계정 이름을 입력합니다)[/uli]
[uli]가시 영상 - file:///Users/<사용자_이름>/Pictures/satellite_images/visible_image.gif[/uli]
[uli]수증기 영상 - file:///Users/<사용자_이름>/Pictures/satellite_images/water_vapor_image.gif[/uli]
[uli]합성 영상 - file:///Users/<사용자_이름>/Pictures/satellite_images/composite_image.gif[/uli]

새로 그림을 읽어오는 주기(Refresh:)는 기상청의 위성 영상이 약 1시간 단위로 갱신되므로, 3600(초)을 입력합니다.
"Location" 칸에는 영상이 표시될 위치와 크기를 조정해 주실 수 있습니다. (원래 적외선 영상의 크기는 512x512 픽셀)
"Style" 항목에서는 표시될 영상과 관련해서 투명도 등 여러 가지 설정들을 해 주실 수도 있습니다.

이제, 매시간 마다 기상청의 위성 영상을 가져오는 shell 스크립트를 입력해 줄 차례입니다.
GeekTool에 또 하나의 항목을 추가하고, 설정 내용을 "Shell"로 선택합니다.
다음에 Command: 입력 칸에 다음과 같은 해당 영상의 shell 스크립트를 입력합니다:

- 적외선 영상
site=http://www.kma.go.kr;
img=$(curl -s www.kma.go.kr/kor/weather/picture/picture_01.jsp | \
grep 'src="/kma_sat/DATA/MTSAT/GPL/' | \
awk {'print $2'} | sed 's/src="//g' | sed 's/"//g');
url="$site$img";
curl -o ~/Pictures/satellite_images/infrared_image.gif $url;
date "+Updated: %y/%m/%d %H:%M:%S"

- 가시 영상
site=http://www.kma.go.kr;
img=$(curl -s www.kma.go.kr/kor/weather/picture/picture_01.jsp | \
grep 'src="/kma_sat/DATA/MTSAT/GPL/' | \
awk {'print $2'} | sed 's/src="//g' | sed 's/"//g' | sed 's/wli/wlv/g');
url="$site$img";
curl -o ~/Pictures/satellite_images/visible_image.gif $url;
date "+Updated: %y/%m/%d %H:%M:%S"

- 수증기 영상
site=http://www.kma.go.kr;
img=$(curl -s www.kma.go.kr/kor/weather/picture/picture_01.jsp | \
grep 'src="/kma_sat/DATA/MTSAT/GPL/' | \
awk {'print $2'} | sed 's/src="//g' | sed 's/"//g' | sed 's/wli/wlw/g');
url="$site$img";
curl -o ~/Pictures/satellite_images/water_vapor_image.gif $url;
date "+Updated: %y/%m/%d %H:%M:%S"

- 합성 영상
site=http://www.kma.go.kr;
img=$(curl -s www.kma.go.kr/kor/weather/picture/picture_01.jsp | \
grep 'src="/kma_sat/DATA/MTSAT/GPL/' | \
awk {'print $2'} | sed 's/src="//g' | sed 's/"//g' | sed 's/wli/wld/g');
url="$site$img";
curl -o ~/Pictures/satellite_images/composite_image.gif $url;
date "+Updated: %y/%m/%d %H:%M:%S"

마지막으로, 갱신 주기 3600을 입력하고, "Location" 값을 영상 위에 있도록 조정해서 영상을 가져온 시각이 영상에 의해 가려지지 않도록 합니다.

최신 레이더 영상을 가져오기 위한 설정은, 기상청 레이더 영상의 주소가 고정된 관계로 간단하게 GeekTool이 해당 주소에 있는 그림을 표시해 주도록 하기만 하면 됩니다.
먼저, 최신 레이더 영상을 가져오기 위한 새로운 항목을 추가하고, 설정 내용을 "Picture"로 선택합니다.
Source 항목의 URL: 칸에는 간단하게 다음과 같은 레이더 영상의 그림 주소를 입력합니다:
http://www.kma.go.kr/kma_radar/DATA/BAS … latest.png
갱신 주기에는 기상청 레이더 영상의 갱신 주기인 600 (10분)을 입력하고, 적당한 위치와 그림 크기를 지정합니다. (원래 적외선 영상의 크기는 646x576 픽셀)

이렇게 해서, 매시간 갱신되는 최신 한반도 위성 영상들과 레이더 영상을 화면에서 바로 확인하실 수 있습니다. cool

444

(0개의 댓글, 어플리케이션 글에 작성됨)

방화벽 설정 명령인 ipfw에는 대역폭 조절을 위한 dummynet 기능을 지원합니다.

dummynet은 다양한 네트웍 인터페이스들을 통과하는 통신들의 대역폭과 대기 용량(queue size)을 제한해서 별도의 설정 사항들을 관리하고 운용할 수 있도록 도와줍니다.
dummynet은 ipfw 프로그램 안에서 실행/설정되기 때문에 자세한 설명과 사용법은 터미널에서 man ipfw로 ipfw 설명서를 불러 내서 TRAFFIC SHAPER (DUMMYNET) CONFIGURATION 부분을 살펴 보시기 바랍니다.

다음은 대략적인, dummynet 설정 예들입니다:

ipfw add pipe 1 tcp from my_ip port 80 to any
ipfw pipe 1 config bw 128KByte/s

위 설정은 포트 번호 80을 통해 들어오고 나가는 모든(any) tcp 통신 속도(bw)를 128KByte/s로 제한합니다.

ipfw add pipe 2 ip from any to any out
ipfw pipe 2 config bw 256Kbit/s queue 10

밖으로 나가는(out) 모든 통신 속도를 256Kbit/s으로 제한하며 대기 통로(queue slot)도 10 개로 제한합니다. (대기 통로의 기본값은 50)

앞에서 설정된 pipe들은 ipfw pipe NN delete로 특정 번호(NN)의 pipe를 지워주거나,
ipfw pipe flush로 모든 pipe들을 지워줄 수 있습니다.

445

(1개의 댓글, Mac OS 글에 작성됨)

미국 NSA(National Security Agency)에서는 'Apple Mac OS X v10.3.x "Panther" Security Configuration Guide'와 'Apple Mac OS X Server v10.3.x "Panther" Security Configuration Guide'라는 이름의 pdf 파일로 된 안내 지침서를 새로 공개 배포하고 있습니다.
각각 약 100 여장에 이르는 이 지침서에는 Mac OS X 10.3 Panther의 보안 기능들과 각 기능들에 대한 권장 설정 내용들을 비교적 자세하게 다루고 있습니다.

시스템 보안과 관련된 자문을 얻고자 할 때, 좋은 참고 자료가 될 수 있을 것으로 생각됩니다.

Tiger에 새로 추가된 이미지 형식(UDBZ: UDIF bzip2-compressed image-압축률 향상)을 포함한 숨겨딘 디스크 이미지 형식들을 사용하려면, 간단히 터미널에서 다음과 같이 입력합니다:

defaults write com.apple.DiskUtility advanced-image-options 1

이제, Disk Utility를 실행시키고 폴더로부터 디스크 이미지를 생성하거나, 이미 존재하는 이미지를 변환할 때 (새로 보여지는 이미지 형식들은 새로운 이미지를 생성할 때는 사용할 수 없습니다), 저장 대화 상자에 보이는 이미지 형식(Image Format) 메뉴를 선택하면 UDBZ 형식을 포함한 여러가지 추가된 이미지 형식들을 보실 수 있습니다.

http://appletree.or.kr/forum/files/Disk_Utility_Additional_Formats.png

- 참고로, 아래는 Mac OS X의 디스크 이미지 생성/변환 도구인 hdiutil에서 생성/변환이 가능한 디스크 이미지 형식들과 그 이름들입니다.

[uli]UDRW - UDIF read/write image: dmg[/uli]
[uli]UDRO - UDIF read-only image: dmg[/uli]
[uli]UDCO - UDIF ADC-compressed image: dmg-Mac OS X 10.0[/uli]
[uli]UDZO - UDIF zlib-compressed image: dmg-Mac OS X 10.1(기본적으로 선택되는 형식)[/uli]
[uli]UDBZ - UDIF bzip2-compressed image: dmg-Mac OS X 10.4 이상에서만 지원[/uli]
[uli]UFBI - UDIF entire image with MD5 checksum: dmg[/uli]
[uli]UDRo - UDIF read-only: dmg (한물간 형식)[/uli]
[uli]UDCo - UDIF compressed: dmg (한물간 형식)[/uli]
[uli]UDTO - DVD/CD-R master for export: cdr[/uli]
[uli]UDxx - UDIF stub image: dmg[/uli]
[uli]UDSP - SPARSE: sparse-내용에 따라 용량 증가[/uli]
[uli]RdWr - NDIF read/write image: img (더 이상 지원되지 않음)[/uli]
[uli]Rdxx - NDIF read-only image: img-Disk Copy 6.3.3 형식[/uli]
[uli]ROCo - NDIF compressed image: img-classic Mac OS (더 이상 지원되지 않음)[/uli]
[uli]Rken - NDIF compressed: smi-self mounting (한물간 형식)[/uli]
[uli]DC42 - Disk Copy 4.2 image: diskcopy42[/uli]

추가된 이미지 형식들의 자세한 정보는 터미널에서 man hdiutil로 확인하세요.
(그런데, 그림에서 보여지는 iPod image란 놈은 뭐지? roll )

447

(0개의 댓글, 맥 개발 글에 작성됨)

http://homepage.mac.com/aglee/downloads/icon-48.gif AppKiDo는 Objective-C 개발자들에게는 방대한 Cocoa 개발문서들을 열람하는데 무척이나 도움이 되는 편리한 도구랍니다. Cocoa 기술 문서에서 찾고자 하는 것을 쉽게 찾게 해주는 도구죠.

주요 기능들을 살펴보면, AppKiDo의 창은 아래의 그림처럼 계층적 class 구조를 쉽게 열람할 수 있도록 되어 있습니다.

http://homepage.mac.com/aglee/downloads/browser.gif

그리고, "Quicklist"라는 항목이 있는데, 이것으로 자주 사용되는 class들에 대한 상세 검색도 무척이나 간편합니다.

http://homepage.mac.com/aglee/downloads/quicklists.gif

AppKiDo는 또한 통합된 항목 메뉴를 통해, class에서 사용되는 inherited method들과 protocol을 충족시키는 method들을 포함하는 모든 method들을 보여줍니다. 그래서 class의 superclass들 혹은 protocol들을 일일이 살펴 볼 필요가 없습니다.

http://homepage.mac.com/aglee/downloads/consolidated.gif

448

(4개의 댓글, 어플리케이션 글에 작성됨)

GeekTool은 preference pane으로 책상 위의 화면에 정보들을 전달해서 뿌려주는 기능이 있는데, 이것은 아무래도 Mac OS X의 Dashboard와 그 성격이 닮았습니다.
다음은 GeektTool에서 표시될 수 있는 세 가지 종류의 정보 형태들입니다:

* Log 파일 - log 파일을 선택해서 (보통 /var/log 디렉토리에 위치합니다.) 해당 파일의 내용을 화면 위에 실시간으로 뿌려 줍니다. 보통 여기에 사용되는 파일들로는 /var/log/system.log, /Library/Logs/501/console.log, 그리고 /var/log/httpd/* 등이 있습니다.

* 명령어 - 실행될 Unix의 shell 명령어를 지정해 주면, 그 결과를 화면 위에 표시해 줍니다. 또한, 여기에는 재실행 시간(초)도 함께 입력해 주어야 합니다.  자주 쓰이는 명령들로는 uptime(컴퓨터 가동 시간과 사용 부하 표시), df(디스크 빈 용량 표시), netstat(네트웍 상태 표시), vm_stat(Mach 커널의 가상 메모리 사용 현황), ifconfig(네크웍 인터페이스의 현재 설정 상태 표시) 등이 사용될 수 있겠으며 sed 혹은 awk 스크립트 명령을 사용해 그 결과를 간추려서 보이게 할 수도 있습니다.

shell 명령어 사용 예:

- CPU 사용량
top -cd -l2 | grep 'CPU usage' | cut -c 33-88 | tail -1

- 가장 많이 CPU를 소모하고 있는 작업
top=$(ps -acx -o %cpu,command | sort -rin | head -n1);
echo "CPU-intensive: $top"

- 시스템 메모리 사용량과 가상 메모리 크기
sm=$(top -ocpu -Otime -R -l1 | grep 'PhysMem' | cut -c 11-75);
vm=$(top -ocpu -Otime -R -l1 | grep 'VM' | cut -c 5-9);
echo "SM Usage: $sm VM Size: $vm"

- Swap 파일들의 전체 크기
size=$(/usr/bin/du -hc /var/vm/swap* | grep 'total' | awk {'print $1'});
echo "Total size of swap files: $size"

- Page out된 메모리 용량
po=$(vm_stat | grep 'Pageouts' | awk '{print $2"*4096/1048576"}' | bc);
echo "Size of Page outs: $po MB"

- 현재 네트웍 접속 상태
netstat -na -f inet | grep -i established | sort +4

- (loopback 주소들을 제외한) 모든 내부 IP 주소들
ifconfig | grep netmask | grep -v 127.0.0.1 | awk {'print $2'}

- 외부 인터넷 IP 주소 (3가지 방법)
ip=$(curl -s whatsmyip.islayer.net | awk {'print $0'});
echo "External IP: $ip"

ip=$(curl -s http://www.whatismyip.com/automation/n09230945.asp);
echo "External IP: $ip"

echo External IP: `curl -s http://checkip.dyndns.org/ | sed 's/[a-zA-Z<>/ :]//g'`

- 내부적으로 마운트 된 디스크들의 빈 공간
df -hl

- 달력
echo `date "+%d %B %Y"` | awk \
'{ print substr("          ",1,(21-length($0))/2) $0; }'; \
cal | awk '{ getline; print " Mo Tu We Th Fr Sa Su"; getline; \
if (substr($0,1,2) == " 1")  print "                    1 "; \
do { prevline=$0; if (getline == 0) exit; print " "\
substr(prevline,4,17) " " substr($0,1,2) " "; } while (1) }' | \
awk -v cday=`date "+%d"` '{ fill=(int(cday)>9?"":" ");    \
a=$0; sub(" "fill int(cday)" ","["fill int(cday)"]",a); print  a }'
netstat -na -f inet | grep -i established | sort +4

- 과거 오늘의 사건
grep -h "^$(date '+%m/%d')" /usr/share/calendar/calendar.{holiday,history,computer}|cut -f2

- Mail에 등록된 계정들 중에서 아직 읽지 않은 전자우편들의 갯수
echo 'tell application "Mail" to return unread count of mailboxes of accounts' | \
osascript | perl -e "@a=split ',',<STDIN>; foreach (@a) {\$n += \$_}; \
print \"Unread Mails: \$n\n\";"

* 그림 - 인터넷 위에 떠 있는 그림들을 URL, 그림틀 형태, 투명도 등의 설정들과 함께 화면 위에 띄울 수도 있답니다.

이것들과 더불어서, 표시 정보 창을 다른 화면들보다 항상 앞에 표시해 주게끔 할 수도 있고, 이 창은 마우스 클릭을 방해하지도 않습니다.

참고로, 표시 정보들은 설정 내용과 사용 목적에 따라 따로 묶어서 분류 관리할 수도 있으며, 메뉴 막대에 올려놓고 묶음별 표시 전환이 가능합니다. (이 메뉴 기능 사용 시, 프로그램을 삭제할 때는 꼭 따라오는 uninstaller를 사용해야 깨끗하게 지우실 수 있답니다.)

http://www.macosxhints.com/images/geekpic_small.jpg
GeekTool 사용 그림. (그림을 누르면 더 큰 그림을 보실 수 있습니다)

현재 GeekTool의 최신 버전은 2.1이지만 갱신된 지도 오래되었고, Tiger에선 다음과 같은 오류를 나타내는 log를 보여주며, 결과적으로 시스템의 성능을 저하시키는 부작용 보이고 있습니다:

GeekTool: The function ..... is obsolete and will be removed in a Tiger update. Unfortunately, this app, or a library it uses, is using this obsolete function, and is thereby contributing to an overall degradation of system performance.

이 문제는 아직 정식적으로는 고쳐지질 않았으나, 다른 사용자가 공개된 GeekTool의 소스 코드를 수정한 GeekTool 2.1jaw1(DB)를 배포하고 있답니다. 이것은 위에 나타났던, Tiger에서 더는 지원하지 않는 함수를 사용하면서 시스템에 부하를 주었던 문제를 수정했으며, 또한 log 창 표시 속도와 CPU 사용량을 절약하는 기능의 개선이 있었다고 합니다. 차기 정식 버전이 발표되기 전까지는 안심하고 쓰실 수 있을듯 합니다.

449

(0개의 댓글, 어플리케이션 글에 작성됨)

웹 항해중 앞의 시야를 완전히 가리면서 진로를 가로막는 flash 광고들로 짜증이 날 때가 종종 생깁니다. (여기에는 주로 한국 웹싸이트들이 한 건 하죠. sad )

이럴 경우, 광고 차단막인 SafariBlock을 처서 한 번만 걸러주면 다음부터는 순조로운 항해를 즐기실 수 있답니다.

설치는 사용자나 혹은 시스템의 Library 폴더를 열고 그 안의 InputManagers 폴더 속으로 SafariBlock 폴더 전체를 옮겨 놓습니다. 그리고, Safari를 재실행하면 그 때부터 사용할 수 있게 됩니다.

사용법으로는, 마우스를 그림 광고나 혹은 frame 위에 올려 놓고 마우스의 오른쪽 단추를 누르면 생기는 SafariBlock Image/Frame 메뉴를 선택해서 해당 광고를 차단막에 등록시킬 수가 있게 됩니다. 더불어, Flash 동영상까지 차단시키려면, Safari 메뉴에 있는 "Right-click Flash" 메뉴를 선택해 주어야 합니다.

보다 효과적인 차단을 위한 한 가지 요령으로, 차단막 설정 시 차단되는 도메인 주소의 바로 하위 디렉토리를 부분 일치를 나타내는 * 글자를 사용해서 모두 막아주면 편합니다. (예: http://광고 도메인 주소/*)

SafariBlock 기능을 잠시 꺼놓거나, 혹은 차단막들의 설정들을 살펴보기 위해서는 Safari의 환경설정을 여시면 보이는 SafariBlock 항목에서 가능합니다.

참고로, 차단막 설정 사항들은 ~/Library/Preferences/SafariBlockFilters.plist에 저장이 됩니다.

450

(10개의 댓글, Mac OS 글에 작성됨)

터미널에서 한글 쓰기

AppleForum에서 hwank1980님이 쓰신 글을 옮깁니다.

기본적으로 Mac OS X의 터미널에서는 한글과 같은 2 Byte 문자 언어를 제대로 표시해 주거나 사용할 수 없습니다만, 약간의 편법으로 한글을 입력하고 제대로 표시해주는 방법이 있답니다.

우선, 터미널에서 nano를 사용해서 사용자의 홈(Home) 폴더에 .inputrc 파일을 생성합니다:

nano .inputrc

그리고 다음과 같은 환경 변수들을 입력합니다:

set convert-meta off
set meta-flag on
set input-meta on
set output-meta on

Control+O(Write Out) 입력후 리턴키로 저장하고, Control+X로 빠져 나옵니다. 터미널을 재시동하면 터미널 환경 설정에서 인코딩 방식이 UTF-8으로 되어 있다면, 한글이 깨지지 않고 제대로 입력됩니다.

이제, 남은 문제는 한글 표시인데 이것은 .profile에 다음과 같은 환경 변수를 추가해 주면 됩니다:

alias ls='ls -v'

저장후, 다음과 같은 명령으로 변경된 터미널의 환경 설정을 다시 불러오면 바로 효과를 보실 수 있습니다.

source .profile

약간은 번거롭지만 완벽하게 한글을 지원해 줄 때까지는 그럭저럭 쓸 만 하군요. :thumbup:

덧붙여서, 터미널 환경의 언어 변수를 바꾸는 방법은 우선 터미널에서 locale -a 명령으로 설치되어 있는 모든 사용 가능한 언어들을 확인하고, 원하는 언어 변수를 다음과 같이 터미널 환경 설정 파일(~/.profile)에 추가해서 저장해 놓습니다.

export LC_ALL=ko_KR.UTF-8

그런데, Mac OS X 10.4에 포함된 bash 버전에는 이상한 버그가 있어서 .profile 파일의 export 지시자에 설정되어 있는 LC_CTYPE 환경 변수를 올바로 읽어오지 못한답니다. 그래서 잘 알려져 있지 않은 environment.plist 파일을 사용해서 이것을 고쳐주어야 합니다.

방법은, ~/.MacOSX/environment.plist 파일에다 LC_CTYPE의 키와 함께 ko_KR.UTF-8 값을 추가해 주면 됩니다. 만약 이 파일이 존재하지 않는다면, 터미널에서 다음과 같은 명령을 실행해 줍니다:

mkdir ~/.MacOSX
echo "{ LC_CTYPE = \"ko_KR.UTF-8\"; }" > ~/.MacOSX/environment.plist

혹은 개발자 도구와 함께 설치되는 Property List Editor.app을 사용하실 수도 있습니다. 이렇게 해서 다시 로그인하면 바뀐 설정을 적용할 수 있습니다.
이렇게 하면, 한글 이름의 파일들도 터미널에서 복사가 잘 되는군요. smile

Mac OS X Hints의 터미널 UTF-8 설정 관련 글