2014년 12월 11일 목요일

유료 개발자 계정 없이 OS X Pre-release 업데이트 하는 방법

아래 두가지 중에 필요한 것 골라서 터미널에서 실행한 뒤  AppStore에서 업데이트 탭을 가보면 업데이트가 뜬다.

퍼블릭 베타 (like the “YosemiteBetaAccessUtility”):
sudo defaults write /Library/Preferences/com.apple.SoftwareUpdate CatalogURL https://swscan.apple.com/content/catalogs/others/index-10.10beta-10.10-10.9-mountainlion-lion-snowleopard-leopard.merged-1.sucatalog.gz
개발자에게만 제공되는 seed:
sudo defaults write /Library/Preferences/com.apple.SoftwareUpdate CatalogURL https://swscan.apple.com/content/catalogs/others/index-10.10seed-10.10-10.9-mountainlion-lion-snowleopard-leopard.merged-1.sucatalog.gz

2014년 11월 27일 목요일

맥에서 특수문자 입력하는 가장 간단한 방법

⌃⌘ + Space
blogger.com 에서 글 편집창 내부 등 일부 Web 편집기 안에서는 동작 안하는 경우가 있다.

끝.

Xcode 에는 Delete Line 기능이 없다?

Windows에서 programming 하다 Mac에서 처음 Xcode로 programming을 할 때 굉장히 당혹스러웠던 것 중 하나가 있었다. 바로 Delete Line, 행 삭제 단축키가 없는 것이었다! 단축키는 없지만 기능은 있겠지 하고 Key Bindings 를 뒤져 봤는데 웬걸~ 없었다. Google search gogo~
역시 조금 복잡하지만 해답은 있었다.

1. Xcode를 종료하고 아래 File 을 연다. (혹시 Xcode의 위치가 다르면 Xcode 설치한 곳에서 아래 위치를 찾아가자)
/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist

2. Deletions 부분에 아래 항목을 추가한다.
        <key>Delete Line</key>
        <string>selectLine:, delete:</string> 

3. 이제 Xcode를 실행하고 설정의 Key Bindings 에서 Delete Line을 검색해보면 항목이 생긴 것을 볼 수 있다. 단축키를 지정하자.(난 원래 있던 Duplicate Line을 지우고 ⌘+D로 지정했다.)

4. 끝~! ⌘+D 마구마구 누르면 마구마구 지워진다.

그런데 Apple 은 왜 이걸 안넣어 놓은 거지? 걔네는 행 삭제 안하나?

※ 글쓰는 현 시점에 Xcode 6.1 에서 잘 동작한다. 

2014년 11월 24일 월요일

iOS 8에서 framework 사용시 dyld: Library not loaded: ... Reason: image not found 문제

천신만고 끝에 framework 을 app에 집어 넣어서 빌드가 됐다.
하지만 이게 웬걸 바로 crash~

구글링 하는데 이 방법 저 방법이 난무했다. 크게 build setting에서 bundle에 집어넣는 것과 framework build시 installation directory를 '@executable_path/../Frameworks'로 바꿔주는 것 두가지가 있었는데 전자는 소용없었고 후자는 이미 하라는 데로 되어 있었다.
삽질하다 app package 내용을 살펴봤는데 뭔가 묘한 느낌이 나서 저기 저 사이에 '..'을 없애 보았다.

잘 되네.

부라보~ 와 이런~ 썩을 것들! 을 동시에 외치며 stackoverflow에 다시 가서 글 좀 싸지르려고 하는데 reputation 부족으로 댓글은 못쓰고 유심히 보니 apple developer forum link가 달려있네. 가서 보니 내가 삽질하다 알아낸 얻어걸린 이 방법으로 다들 해결했다고 써 있구만.

그 문제의 stackoverflow link

대답은 위에서 말한 bundle에 집어넣는 방법을 써놓고 두번째 방법에 대한 언급 없이 link는 이걸 달아놓다니..

간단히 요약하면

(1) framework build 할땐 Build setting 에서 Installation directory 를 '@loader_path/Frameworks' (path와 Frameworks 사이에 ..이 없는것에 주의) 로 해주고
(2) General setting에서 Embedded binaries에 framework 넣어주면 끝.

p.s 처음 세팅이 loader_path 였고 구글링 결과는 executable_path 였는데 둘다 잘됨. 차이는 각자 연구해보시라.
loader_path 와 executable_path에 대한 reference

2014년 7월 17일 목요일

undefined reference to `std::__throw_bad_alloc()'

undefined reference to `std::__throw_bad_alloc()'
위와 같은 링크 에러가 날 때가 있다. 보통 하나만 나지 않고 저것을 비롯한 여러 표준 C++ 라이브러리 관련 링크 에러가 같이 난다.
원인은 표준 C++ 라이브러리가 링크 안되서이다. g++로 컴파일 하는 경우 몇몇 이 같은 링크를 자동으로 해줘서 링크 안해도 몰랐다가 gcc를 사용하거나 해서 자동으로 안되면서 에러가 발생하는 것이다.
해결은 간단하게 -lstdc++ 옵션을 추가해 주는 것이다.

알게 된 출처: Stack Overflow 링크

2014년 5월 10일 토요일

Xcode Plugin

1. Home키가 현재 라인의 첫 글자로 이동하도록 변경 (Xcode_beginning_of_line)
  해당 플러그인 Github에서 소스 다운로드 한 다음 Xcode에서 열고 빌드 하면 자동으로 설치.
  이후 Xcode 재시작.

2014년 4월 25일 금요일

GCC 4.8 + GDB 7.4 환경에서 QtCreator Debug 모드의 변수 값이 보이지 않을 때 해결방법

해결책 : cmake 인자에 다음을 추가하여 컴파일시 디버깅 정보 포멧을 dwarf-3를 사용하도록 설정 

-DCMAKE_CXX_FLAGS="-gdwarf-3" 

원인 : gcc 4.8 에서 사용하는 디버깅 정보 포멧과 gdb 7.4 이하에서 사용하는 포멧이 달라서 디버깅 정보를 인식하지 못함. gdb를 7.5 이상으로 쓰는 것도 하나의 방법임.