Category Archives: Mac Tips

[번역] 애플 버그 리포트 완벽 가이드 – INNA

(원본) A Complete Guide to Filing Bugs with Apple – Posted by Inna

모든 소프트웨어는 버그가 있으며 코로나와 애플도 예외는 아닙니다. 코로나 팀원이며 독창적인 프로그래머인 에릭 윙은 전문 버그 리포터입니다. 그의 전 경력을 통해 그는 500개 이상의 애플 버그 리포트를 해왔습니다(일정량 이상 그가 리포트한 버그가 수정되었습니다). 에릭이 작성한 버그 리포트 작성 방법과 팁을 읽어보길 권합니다.

 

애플에 버그와 기능 리포트 하기

여러분은 앱스토어에 iOS 앱을 등록하고 있나요? 애플에 1년에 99달러의 등록비를 내고 있나요? 뭐든 개발하기 위해 Xcode를 사용하고 있나요? 일련의 물음에 한개라도 ‘예’라고 대답했다면 여러분은 애플 개발자입니다.

모든 소프트웨어는 버그를 갖고 있으며 애플도 예외는 아닙니다. 코로나 SDK로 우리는 지원하는 다양한 플랫폼의 버그로부터 개발자를 보호하기 위해 열심히 노력합니다. 그러나 때때로 이것이 불가능합니다. 유일한 해결책은 벤더가 문제를 해결하는 방법뿐입니다.

대부분의 사람들이 애플 개발자로서 절망스럽게 리포트를 작성하지만 애플은 실제로  버그 리포트를 읽고 이슈들을 수정한다는 사실을 주지하십시오. 이는 대부분의 대기업과는 좀 다릅니다. 큰 회사에 버그에 대해서 연락을 취하려고 노력하다 간신히 리포트 제출처를 찾았다해도 그 것이 수정되어 돌아오는 일은 없습니다. 최악의 예를 들자면 몇 년 전 필자는 사우스웨스트 항공에 성가신 버그를 리포트 했습니다. 그 당시 사우스웨스트는 온라인 연락 방법을 제공하지 않아서 편지를 써서 보냈습니다. 필자의 편지가 잘 도착했다는 연락을 받았습니다만 사우스웨스트 항공사는 오늘까지 그들은 그 버그를 수정하지 않고 있습니다.

애플은 독특합니다. 그들이 내부에서 사용하는 버그/기능 트래커 시스템에 대한 외부 개발자의 버그 리포팅 접근을 허가하고 있습니다. 이 시스템을 애플 레이더Apple Radar라고 부르며 애플 팀들의 작업이 리포트된 건에 따라 일정 관리됩니다. 작업이 레이더Radar에 등록되지 않으면 애플 엔지니어는 작업에 착수하지 않으며 버그는 수정되지 않습니다.

버그를 수정하기 위하서는 *여러분*이 버그 리포트를 해야합니다! (다른 사람이 아닌 여러분이…)

“누군가 버그 리포트 하겠지” 또는 “애플은 벌써 이것에 대해 알고 있을거야”라고 여러 개발자들이 자주 이야기합니다. 첫째, 이것은 완전한 오해입니다. 좀 더 자주벌어지는 일은 누구도 버그리포트를 하지 않고는 애플이 그것을 알지 못한다는 사실입니다.

그러나 이것이 사실이라도 상관없는 것은 레이더가 투표/가중치 시스템이기 때문입니다. 레이더는 몇 명의 사람들이 중복된 리포트를 하는지를 추적합니다. 중복이 많이 발생하면 할수록 애플은 해당 버그를 수정 작업의 가중치를 높이게됩니다. 이것이 애플이 알고 있는 버그라도 여러사람들이 버그 리포트를 해야하는 이유입니다.

베타 테스트와 버그 리포트

애플이 베타(시드)를 배포하는데는 이유가 있습니다. 애플은 뭔가가 고장나거나 제대로 작동하지 않는지를 알고 싶은 것입니다. 이것이 바로 재앙을 막는 최고의 기회인 것입니다.

중요한 케이스를 살펴보자면 잘 알려져있듯이 iOS 5.0이 소개될 때 OpenAL에 정말 심각한 버그가 있었습니다. 미연에 방지할 수 있었던 문제이기 때문에 정말 비극이 아닐 수 없습니다. 이 사건으로 우리 모두가 발이 묶였었습니다. iOS 5.0 베타 4에서 애플은 실수로 OpenAL API의 기저 부분의 오디오 코드에 손상을 줘서 오디오 전체가 오동작하고만 것이었습니다. 몇몇 개발자는 실제 이 문제를 베타 4에서 발견했고 애플이 이를 파악했거나 누군가가 버그리포트를 했던 것으로 알려져 있습니다. 하지만 이것은 완전 잘못된 사실입니다. 최종적으로 베터 7에서 우리는 해당 문제를 파악했으며 필자가 버그 리포트를 했습니다. 그러나 너무 늦은 나머지 애플은 이미 해당 코드를 잠궈버렸습니다. 애플은 치명적인 보안 이슈만 패치 릴리즈(예. 5.0.1)에 포함하여 배포했기에 오디오 이슈는 5.1버전까지 수정되지 못했습니다.

한편 우리는 코로나에서 오디오 문제에 대해서 몇 주동안 해결하려 노력했습니다. 우리가 해결 시도하는 동안 이 이슈가 나쁜 성능을 야기하였습니다. 우리는 시도할 방법이 거의 고갈상태였기에 스스로 행운이 따른 것이라 생각했습니다. 또한 우리는 기존에 수정되지 않은 iOS 버그를 막고자 노력하는 동안 또 다른 버그를 발견하게 됩니다.

애플은 이슈를 iOS 5.1에서 수정했으나 iOS 5.0에서 업그레이드 하지 않은 사용자는 여전히 버그에 영향을 받고 있었습니다. 이는 우리가 iOS 5.0이 사라질 때까지 꼼짝없이 갇혀버린다는 뜻이었습니다. (다행히 OTA 업데이트 기능 덕분에 2주 내에 5.1로 대부분의 사용자들이 업그레이드를 해서 우리도 5.0을 훨씬 빨리 포기할 수 있었습니다.)
이 교훈은 누군가 베타4에서 버그를 리포트 했더라면 iOS 5.0 배포 전에 수정이 되었을 것이라는 것입니다.

근사한 버그 리포트 작성하기

애플은 여기에 근사한 버그 리포트를 어떻게 작성하는 지 알려주고 있습니다.

다음은 필자가 제안하는 몇 가지입니다:

  • 가급적 상세한 정보를 담도록 하십시오. 누군가 이미 해당 버그를 신고했을 수도 있지만 여러분은 조금 다른 상황에서 버그가 발생하여 도움이 될 수 있습니다.
  • 문제를 재연할 수 있는 테스트 방법을 제공하십시오.
  • 애플에 가급적이면 어떤 버전에서 처음 문제를 발견했는지와 어떤 OS와 장비를 사용해서 테스트했는지를 알려주십시오.
  • 만약 관련된 버그를 알고 있다면 여러분의 버그 리포트에 해당 버그의 일련번호를 포함시키십시오. (버그 리포트 시 우리는 알고 있는 버그 일련번호를 포함시키려고 노력했는데 이를 여러분의 버그 리포트 내에 참조할 수 있을 것입니다.)
  • 코로나를 사용한다고 주저없이 말씀하셔도 좋고 따라서 어떻게 작동하는지에 대한 상세한 것을 모른다라고 말씀하셔도 좋습니다. 애플은 일정 부분은 여러분의 바이너리로 디버깅을 시도하므로 버그 리포트 시에 여러분의 프로젝트를 포함시키세요. 그리고 여러분이 우리를 애플과의 토론에 포함시켜도 좋습니다. 여러분이 애플에 버그를 보낼 때 또 같은 버그 리포트를 우리에게 보내주셔도 좋습니다. (버그 일련번호를 포함해서 말이죠.)
  • 애플은 더 많은 정보를 원한다면 여러분에게 연락할 것 입니다. 여러분이 그들의 주의를 이끌었으므로 이슈를 계속 따라잡도록 하세요. 만약 애플이 여러분에게 더 많은 정보를 원해서 연락해온 경우 어떻게 제공을 해야할지 잘 모른다면 우리에게 연락하세요. 애플이 원하는 정보를 우리가 제공하도록 노력하겠습니다. 일련의 버그들을 수정하는 것은 우리의 관심사이기 때문입니다.

 

친절하게

필자의 경험으로 애플 엔지니어는 여러분이 그들의 것을 사용할때 그들의 일에 자부심을 갖고 좋아합니다. 그들은 그들의 것들이 작동하길 원하며 근사한 버그 리포트를 받기를 좋아합니다. 용기를 내시되 비난이나 힐난은 삼가세요. 그들도 감정이 있으니까요.

 

버그의 형태 – 애플 혹은 코로나?

여러분은 어떻게 애플 버그인지 코로나 버그인지를 구분하시겠습니까? 때로는 매우 어려운 일이지만 다음에 몇가지 힌트를 드립니다.

퇴행: 여러분의 애플리케이션을 수정없이 동일한 장비에서 구동 하는 경우, 이전 버전의 iOS에서는 잘 동작하는데 새로운 버전의 iOS에서 갑자기 실행이 중단된다면 이를 퇴행 버그라고 부릅니다. 이것은 애플 버그이므로 리포트를 하세요. 최대한 빨리!

장비 관련: 가령 아이패드 1과 2와 같은 장비 사이에서 이상 동작을 한다면 때때로 이는 애플 버그일 수 있습니다. 여러분이 확신할 수 없다면 버그 리포트를 애플과 코로나 양쪽으로 하기를 권합니다.

코로나로 제작하지 않은 앱에 동일한 문제: 코로나를 사용하지 않은 다른 앱에서 동일한 버그를 발견했다면 이는 애플 버그인 경우가 많습니다.

코로나에서 알려드린 애플 버그: 우리는 어떤 이슈가 애플 버그인 경우 찾아낼 수 있습니다. 우리가 그것이 애플 버그라고 말씀드리면 애플에 버그 리포트를 해주십시오. (중요도를 높일 수 있습니다.)

기능 요구: 레이더는 기능을 요구할 때도 사용합니다. 여러분이 시리Siri API에 접근성을 원하는 경우 애플에 공개를 요구할 수 있습니다. 버그 리포트 형태로 말이죠.

개인적 성과

필자는 여러분에게 솔직히 말씀드립니다. 많은 버그들이 수정되지 않으며 여러분의 버그 리포트에 대하여 애플 엔지니어로 부터 상세한 정보를 요구받는 경우도 매우 드문일 입니다. 필자 생각에 놀라운 점은 가볍지 않은 상당한 버그들에 반응하고 수정된다는 것입니다. 필자의 경력을 통틀어 애플에 500개 여개의 버그 리포트를 했습니다. 추측컨데 약 25%의 버그가 수정되거나 해결되었습니다. 구글과 마이크로소프트의 버그 리포트는 전혀 수정되지 않은 것에 비하면 25%는 상당히 높은 비율이라고 생각합니다. 그들이 필자가 작성했던 버그 리포트를 읽기나 했는지 의심스럽습니다.

코로나 사용자들은 버그 리포트를 해야합니다.

여기에 여러분이 리포트할 세가지 버그를 안내해드립니다.

Xcode에서 루아 언어 지원:
Xcode 4에는 Lua 언어의 색상 표현이 지원되지 않습니다 (코드 자동 완성도 마찬가지고요). 필자가 장담하건데 모든 코로나 사용자가 버그 리포트(기능 요구) 한다면 여러분이 중요도를 충분히 높혔기 때문입니다. 오늘 바로 버그 리포트를 해보세요! 여러분의 버그 리포트에 필자의 버그 리포트 원본(rdar://9321859)을 참조하면 애플은 이슈가 중복임(일종의 투표)을 알 수 있을 것입니다.

맥 상에서 레이어를 포함하는 WebView가 깨짐:
맥 상에서 코로나 자연 객체는 애플의 코어애니메이션Core Animation 기술의 레이어 지원 뷰views로 정교하게 기술된 것입니다. 불행히도 웹뷰WebViews는 이런 경우와 2007년에 등장한 OpenGL기술에 있어서 심각한 문제를 내재하고 있습니다.(맞아요. 필자의 버그 원본은 좀 멀리 갔습니다.) 상당한 진전이 있었음에도 코로나 시뮬레이터가 깨지는 현상은 오늘까지도 여전히 존재합니다. 이것이 코로나 시뮬레이터를 사용하는 중에 발생하는 (가장) 성가신 문제의 해결은 가까운 미래에 웹뷰WebViews를 사용하여 맥용 앱을 출시하는 모든 사람이 숙원하는 박수갈채를 받을 일일 것입니다. 이 버그가 당장 해결되기를 기대합니다 (마운틴 라이언Mountain Lion 에서 해결 기대). 필자의 버그 번호(rdar://1326401)를 참조하여 여러분의 버그 리포트를 지금 작성하십시오.

녹음과 재생 전환 간에 순간 정지 현상:
불행히도 iOS 5에서는 한 개 이상의 심각한 오디오 버그가 있었습니다. 또 다른 버그는 녹음모드와 재생모드 사이의 전환 과정에서 앱을 순간적으로 정지시키는 현상을 야기합니다. 여러분이 예제 앱을 보시면 우리가 iOS 5를 위한 Lua 방어코드를 보실 수 있을 것입니다. 방어코드는 강제로 장비로 하여금 재생과 녹음 모드를 동시에 작동하게끔하여 녹음과 재생 모드 전환이 불필요하도록 한 것입니다. 하지만 이로써 부정적인 측면이 생겼습니다. 성능적인 고려를 하다보니 아이폰은 재생 스피커로 내장 스피커 대신 외부 이어폰을 사용하는 경우 전환이 일어나는데 추측컨데 피드백 잡음을 피하기 위해서 그랬을 것입니다. 여러분 중에 재생과 녹음을 동시에 사용하지 않는 분들은 이 방어코드에 대해서 불만을 토로하실 것입니다만 이어폰을 사용하는 것은 애플의 디자인이고 우리 방어코드는 동시 사용할 경우에만 적용됩니다. 본 이슈는 애플만이 수정할 수 있으므로 버그 리포트를 해주십시오. 버그 번호(rdar://1454403)를 참조하십시오.

필자는 일련의 버그를 개방형 레이더Open Radar에 미러링하여 공개해두었습니다.

http://openradar.appspot.com/9321859
http://openradar.appspot.com/radar?id=1326401
http://openradar.appspot.com/radar?id=1454403

개방형 레이더Open Radar

여러분의 선택입니다만 애플 개발자들은 버그 리포트를 발견된 버그와 싸우는 모든 이들과 공유하기 위한 공동체를 시작했습니다. 여러분의 버그 리포트를 개방형 레이더Open Radar에 공유해보는 것을 어떨까요.

무엇을 망설이시나요?

여러분은 개발자 인증을 위해 99달러를 냈습니다. 맥을 샀습니다. iOS 장비도 샀습니다. 버그는 개발 노력과 지원 비용에서 여러분의 시간과 돈을 낭비하게 합니다. 심지어 여러분의 고객을 잃게할 수도 있습니다. 때로는 미래에 부메랑처럼 돌아와 당신을 강타할 수도 있습니다. 여러분의 투자금을 지키고 미래의 두통꺼리를 예방하려면 버그 리포트하십시오!

애플 레이더Apple Radar

애플 레이더Apple Radar에서 버그 리포트 하십시오!

Mac Tips: 맥 오디오를 아이폰으로 보내기 (번역중)

영어원문 – TUAW Tips: Send Mac audio to your iPhone for cheap

by 에리카 새든 Erica Sadun

 

2009년 9월 23일 오후 8시 (Sep 23rd 2009 at 8:00PM)

이번달 초에 필자가 오래된 맥미니를 TV에 연결하는 글을 기고했다. 내 맥미니는 애플TV의 한계를 뛰어넘는 애플TV 스타일을 제공했다. 내 맥미니는 스노우레오파드로 구동되며 프론트로우, 아이TV, 퀵타임 등이 설치되어있어 실시간 방송을 즐길 수 있으며 보통 PC에서와 같이 메일, 웹서핑 등을 할 수 있다.

거실의 스피커는 정말 오래된 컴퓨터 모니터에서 사용하던 것이서 TV 앞에서 TV를 보거나 Wii(게임기 – 역자)를 할때는 그럭저럭 괜찮다. 방을 지나면서는 거실 스피커는 한계를 드러내고 런닝머신의 소음이 더해지면 소리는 아예 들리지 않는다.

자 그러면 런닝머신에서 걷거나 조깅하고 있을 때 어떻게 하면 멋진 TV쇼를 들을 수 있을까? 우선 몇가지 솔루션을 찾아서 헤매다가 필자에게 딱 맞는 솔루션을 찾았다. 집에 설치된 802.11g 와이파이 네트워크 상에서 스카이프(VoIP 인터넷 전화 – 역자)를 통해서 맥에서 아이폰으로 전화를 걸 수 있다는 점을 착안했다. 지연현상을 최소화하여 맥에서 플레이 중인 좋아하는 TV쇼의 라이브 오디오를 런닝머신 위의 내 아이폰으로 전송할 수 있었다.

다음에 필자가 어떻게 했는지를 읽어보라…!

참 아직 읽기 전에 시연 동영상을 한번 볼까요? ^_^

장치

필자의 미디어 플레이어 매킨토시에 대해 할말이 별로 없다. 오래된(필자생각에는 2006년 모델) 1.66GHz Intel Core Duo, 메모리 1GB 이다. 지난 1월에 오래된 하드드라이브가 고장난 이후 NewEgg에서 할인 구매한 80GB 하드드라이브가 장착되있다.

My media player Macintosh is nothing to write home about. It is an old (2006 model, I believe) 1.66 GHz Intel Core Duo with 1GB of RAM. It has an 80 GB hard drive, which I bought on sale from NewEgg after the old hard drive died in January. Any audio transmission solution needed to work within its limits, which I assure you are vast compared to the current generation mini, which is my primary work machine.

My home’s 802.11g Wi-Fi sees low use during the day when my kids are at school. On an uncluttered system (i.e. the kids aren’t all trying to watch YouTube videos at once) it’s capable of some decent throughput but it’s clearly not 802.11n. I record and convert all my video on a separate headless system in my office. My Wi-Fi connection needs to both feed my video to the player mini at the same time that it sends any audio via Skype.

Early investigation showed that I could read and play back video using QuickTime or iTunes while shipping out sound at the same time. EyeTV (my preferred video playback solution) plus Skype required too many system resources, producing video and audio hesitations during playback. Newer Macs with more RAM and better processors probably won’t exhibit these limitations.

Setting up the audio feed

It took just a few steps to set up my audio feed. I needed to redirect my Mac’s audio to Skype so I could listen to that audio from the iPhone or iPod touch. Here is a walkthrough of those steps for you. It shoudn’t take you more than a few minutes to set up your own solution.

Download and Install SoundFlower. I started by downloading and installing a copy of Soundflower version 1.5.1. The dmg offered at the Google Code site includes an installer package that adds the Soundflower system extension. You’ll need administrative privileges to install it.

Set Skype’s Audio In. Once Soudnflower is installed, you need to set up your audio in two places. In Skype, open Audio settings and set your Audio input choice to Soundflower (2ch). Skype will now read its audio from whatever the Soundflower extension delivers.

Set Audio MIDI’s Sound Output. Next, navigate to /Applications/Utilities and launch the Audio MIDI utility. Open the Audio Devices window. Choose Soundflower (2ch) and select Use this device for sound output from the action pop-up menu at the bottom of the pane. This choice sends normal system output that you’d normally hear through your speakers into Soundflower. A speaker icon appears to the right of Soundflower (2ch), indicating that it’s your current choice.

If you’re working on Leopard rather than Snow Leopard, use the Audio MIDI setup screen. Set the Default Output to Soundflower (2ch). It has the same effect of redirecting audio to Soundflower.

Create a second Skype account. You’ll need two accounts for this Mac-to-iPhone audio solution. Skype accounts are free. Sign into your normal Skype account on your Macintosh.

Install Skype on the iPhone. If you have not already done so, purchase Skype (it is free, iTunes link) at App Store. Sync it to your iPhone, or as I did, your iPod touch. Sign into the second Skype account.

Call the iPhone from your Mac. Add your new account to Skype as a buddy and call your mobile device from your Mac. Accept the call on your iPhone or iPod. If you are using an iPod (and I mostly do, so to preserve the batteries on my iPhone for when I need to leave the house), you may be warned that there’s no audio input on your end. Acknowledge the message and continue accepting the call.

Start playback. I’ve been using QuickTime X to play my video. Start playback and set it to full screen. (I hate that new always-on video controls overlay. Anyone know how to disable that display?) Front Row, iTunes, and QuickTime all seem to work well with this Skype-to-Skype playback solution on my older system.

Enjoy. Plug in your headphones, stick the iPhone in your pocket or into one of the cup holders on the treadmill, and watch as you exercise. I find it handy to keep a spare Apple remote around as well for starting and stopping the video. If you’re using Front Row, the remote also lets you navigate through the menu system to pick and play your media.

Conclusions

My Skype-to-Skype solution is, admittedly, a little on the clunky side. At the same time, I’ve found the audio transmission quality to be excellent. If my call starts with any significant audio lag, I’ve found that I can just disconnect and try again until I have a connection with better response time.

This approach definitely does have a battery hit. Although you can run Skype with the iPhone locked, a one-hour run can go through a quarter to half of a battery charge. Again, this is a great reason to use a second unit if you have one on-hand, or to tether your iPhone to power while using the remote audio. Most treadmills have to plug in anyway. Adding a long tether to your iPhone and an A/C adapter can work if the tether doesn’t trigger your iPhone to complain about unauthorized cables.

Remember to reset your Mac audio after your workout. You can leave the Skype setting be if you don’t normally use Skype for conversations on the TV-based Mac. You’ll want to switch the audio back to normal output in Audio MIDI until your next session.

Users on more modern Macintosh systems or on Windows may want to investigate Rogue Amoeba’s $25 Airfoil system, which allows you to redirect audio from any application to AirPort Express and to iPhones and iPods running their (free) Airfoil Speakers Touch application (iTunes link). TUAW took a first look at Airfoil and Airfoil Speakers Touch back in April. You can download Airfoil for free and test it for up to 10 minutes at a time.