Mac OS X IntelliJ IDEA 12에 Ruby on Rails 세팅하기

요즘 Back-End 쪽에 관심이 가던 차에 node.js는 뭔가 좀 부족한 듯 하여 다시금 보게 된 것이 Ruby on Rails. 요거 좀 배워서 작은 서비스 하나 만들어볼려는 욕심에 미리 구입해둔 책과 새로 구입한 책을 찬찬히 살펴보고 있다. 그러던 중에 IDE 쓸만한거 없을까 서팅하고 있던 차에 모두들 Intellij가 좋다는 말을 듣고 199$ 거금을 들여 구입을 했으나… Ruby와 Rails 세팅은 어떻게 하나 고민에 빠져들었고 삽질을 시작했다. 우선 Mac OS X 10.8.2 (Mountain Lion)에는 기본적으로 Ruby 1.8.7 framework가 존재한다. 하지만 이 버전은 오래되어도 너무 오래된거 아닌가? 하지만, 자체 framework를 업데이트할 방법은 없다는 것이 검색해 본 결론! 결국 rvm을 설치하고 ruby와 rails를 아래 URL을 참고하여 다시 설치하였다. http://xyzpub.com/en/ruby-on-rails/3.2/rails3-install-osx.html rvm, ruby 1.9.3, rails 3.2.11 을 설치한 후 IntelliJ 실행. 상단 메뉴에서 IntelliJ IDEA -> Preferences.. 를 선택하여 왼쪽 메뉴 중 Plugins를 선택하여 Ruby 가 설치되어 있는지 확인 만약 설치되어 있지 않다면 Browse repositories…를 선택하여 Ruby를 install 한다. install을 한 후 Apply나 OK 버튼을 누르면 IntelliJ IDEA를 재실행…

UIStatusBar에 현재 앱 상황 보여주기 (트위터 앱처럼..)

트위터 공식 앱에서 트윗 작성을 하면 화면 상단의 UIStatusBar이 가려지면서 “트윗 전송 중”, “전송 완료”라는 글자가 나타났다가 사라진다. 이 부분 처리가 궁금했는데 github에서 관련 코드를 찾았다. https://github.com/brunow/BWStatusBarOverlay 위 경로에서 받은 코드를 분석하며 구조를 살펴보았는데, 이전에 내가 해보았던 방법과 달랐다… (역시… ㅠㅠ) 일단 위 코드에서 중요한 부분은 UIWindow를 상속받은 클래스이며, window의 level을 UIWindowLevelStatusBar에서 + 1(above)하는 것. 또한 보여주길 원하는 시점에서 window에 올린 UIView를 보여줄 때는 self.hidden = NO로 해야한다는 것이다. 그 외 부수적으로 눈여겨 봐야할 부분은 클래스가 singleton 모델로 구현이 되어 있다는 것 (개인적으로 singleton 모델을 반기지는 않지만 위 코드는 당근 singleton이 맞음!) 이 부분만 염두한다면 코드 보기가 수월할 것이다. 위에서 언급한 부분으로 클래스를 살짝 구현해봤는데 이전에 내가 했던 방법에서 문제가 되었던 부분이 말끔히 해결되었다. (이전에 구현한 코드의 문제점은 메시지가 나타난 후 push/pop 했을 때 view가 깨지는 문제였다.) 배웠다면 써먹어야지~! 구현한 것 돌아가는 것 살짝 동영상으로 찍어봤습니다. YouTube capture 앱 테스트도 해볼 겸.. 영상에서는 상단 Status Bar 변화를 잘 보면 이해하실거라…

웹 페이지에 iOS6의 Smart App Banner 적용하기

iOS6의 새로운 기능 중 하나가 Smart App Banner입니다. 이 기능은 쉽게 말해서 아래와 같이 iOS에 내장된 Safari로 특정 웹페이지를 호출했을 때 화면 상단에 App 배너가 나타나게 하는 기능입니다. 적용을 위해서는 웹 페이지에 간단한 메타태그 한 줄만 넣어주면 됩니다. 참 간단하죠.   자 그럼 위 태그에 입력해야할 값들에 대해서 알아보겠습니다. 1. name 이 부분은 그냥 위와 같이 적어주시면 됩니다. itunes에 적용된 앱이라는 것을 명시하기 위함입니다. 2. content 2.1. app-id (필수) 앱스토어에 등록된 앱이 부여받은 ID값입니다. 이 값을 알기 위해서는 http://itunes.apple.com/linkmaker/ 에서 검색을 합니다. 저는 아래와 같이 아임리얼맛집을 검색했습니다. 하단에 결과가 나왔죠?  그럼 하단 오른쪽에 있는 “iPhone App Link”를 살포시 눌러줍니다. 아래와 같이 검색된 앱의 상세정보가 나타납니다. 여기에서 중요한 부분은 주소 중 “/idXXXXXXXXX?mt=” 의 XXXXXXXXX에 위치한 숫자입니다. 이 숫자가 app-id에 들어갈 ID값입니다. 2.2. affilidate-data (선택) 이 부분은 관련된 컨텐츠를 등록하기 위한 필드이며, http://www.apple.com/itunes/affiliates/ 에서 등록을 해야 사용이 가능합니다. 따로 테스트해 볼 방법은 없는 상황이라 자세한 사항은 위에 명시한 사이트에서 얻으셔야 합니다. 검색을 하다보니 잘…

개발자들이 자신의 작품으로 재밌게 놀 수 있는 공간의 부재..

스마트폰 단말기가 보급됨에 따라 App Store와 Google Play 등 글로벌 시장에 대한 관심이 높아졌습니다. 물론 이런 상황 덕분에 스타 개발자 혹은 개발사도 여럿 나오고 있습니다만 극히 일부죠. 소비자 입장에서는 필요한 기능을 가진 앱을 스토어나 마켓에서 검색을 통해 쉽게 얻을 수 있게 되었습니다. 그야말로 앱은 필요에 따라 골라 쓰는 앱의 인스턴트화 시대입니다. 하지만 사용자 입장에서는 단순히 몇 장의 사진만 보고 결제하기도 뭣하고 개발자 입장에서는 너무 많은 앱들에 묻혀 내 앱을 어필할 수 있는 방법이 참 애매한 것도 사실입니다 그러다보니 이를 위해 앱을 홍보해주기 위한 서비스들이 많이 생겼습니다. 돈을 주면 일정기간동안 해당 서비스에서 앱을 홍보해주며 리딤을 맡기면 리딤까지 배포해주는 참 고마운 서비스들이죠. 귀찮은 마케팅을 대신해주니.. (역시 돈만 있으면 뭐든 다되는 세상이네요.) 근데 생각만큼 효과가 있던가요? 이제는 필수가 되어버린 일시 무료라는 마케팅도 사용자들에게 큰 메리트를 줄 수 없는 지경이 되었습니다. 개인 개발자분들이 자신의 필요에 의해 정성들여 만든 앱이나 영세 개발사가 야심차게 준비한 앱은 스토어의 순위에 올라보고자 없는 돈을 들여 홍보해보지만 그 때 뿐입니다. 휴대폰을 열어…

iOS6에서 특정 View Controller에서의 화면 회전(Auto rotation) 제어하기

h3 앱을 구현하면서 릴리즈 후 modal 된 view controller 들이 회전이 되어버리는 문제가 생겨서 이 부분을 수정하였다. 수정한 것을 설명하기 이전에 알아두어야 할 것은 auto rotation에 관련된 base method가 변경되었다는 것이다. UIViewController를 들여다보면 이전에 사용하던 – (BOOL)shouldAutorotateToInterfaceOrientation: 메소드가 deprecated되고, 대신 -(BOOL)shouldAutorate 메소드와 -(NSUInteger)supportedInterfaceOrientations,  -(UIInterfaceOrientation)preferredInterfaceOrientationForPresentations 가 추가된 것을 볼 수 있다. 즉, iOS6에서는 기존에 사용하던 메소드가 동작하지 않는다는 것이며, 새로운 메소드를 이용해야 한다는 것을 볼 수 있다. Deployment target이 5.x 일 경우에는 기존 메소드를 정의해놓는 것은 잊지 말고… 처음에 언급했던 이슈에 대해서는 사실 메뉴와 컨텐츠가 위치한 main view controller에서 미리 적용하여 문제가 없었으나, 로그인/회원가입, 사전등록 페이지에서는 화면이 돌아가버리는 문제점이 생겼다. 위의 메소드가 적용되었음에도 말이다. 이 문제 해결을 위해 애플 공식 문서를 비롯해 여러 자료를 참고하다보니 언뜻 떠오른 방법이 생각나 이를 적용했더니 깔끔하게 해결되었다. 문제는 view controller가 modal 할 때 UINavigationController를 품고 modal 되니 auto rotation의 주체는 view controller가 아닌 UINavigationController였다. 따라서, UINavigationController를 상속받는 custom view controller를 정의하여 여기에 -(BOOL)shouldAuotorate와 – (NSUInteger)supportedInterfaceOrientations를 아래와…