개발지식저장소

  • Swift iOS 기본 인터뷰 질문에 대한 정리글

    웹서핑을 하다가 우연히, 어떤 회사의 어떤 면접관이 올려놓은 기술 인터뷰 질문 목록을 보았다. 음.. 아무리 기본에 대한 거라지만 기술면접질문을 공개하다니.. 실제 면접은 아무래도 여기서부터 물고 들어가는 심층 면접이려나? 어떤식으로 하려는지 궁금하긴 하다. ㅎㅎ 기본적이지만, 막상 대답하려면 막히는 부분들이 있을 수도 있으니, 면접 질문들 중에서 GIT, Testing 항목을 제외한 부분들에 대해서 간단히 정리해보았다. ARC(Automatic Reference Counting)는 어느 시점에 작동하나요? 컴파일 시점에 동작. 코드를 빌드(컴파일) 할때 특정 객체의 레퍼런스 카운트를 추적하여 0 가 되는 시점에 자동으로 release 코드를 넣어주는것을 말한다.

    Read more…
  • RxSwift retain self

    RxSwift 의 클로저에서의 self retain 에 대해 정리해보고자 한다. RxSwift 다음과 같은 코드를 살펴보자. class TestViewController : UIViewController { private let disposeBag = DisposeBag() func viewDidLoad() { super.viewDidLoad() Observable.just(0) .delay(5, scheduler: MainScheduler.asyncInstance) .subscribe(onNext: { value in self.test(value) }, onDisposed: { self.test() }) .disposed(by: disposeBag) } func test(_ value: Int = -1) { print(value) } } TestViewController 화면이 로드가 되면, 5초의 딜레이 후에 0 이라는 value 를 내뱉는 Observable 을 정의하고, subscribe 해두었다.

    Read more…
  • iOS10+ 노티피케이션 정리

    UserNotifications Framework iOS10 부터는 UserNotifications 라는 새로운 사용자 노티피케이션 프레임워크가 제공된다. 사용자 노티피케이션.. 그렇다면 우리가 컴포넌트간 메시지를 보낼 때 쓰는 NotificationCenter 는 시스템 노티피케이션이(사용자에게 보여지는 UI가 없는 알림이니?)라고 하면 될까..? 아무튼.. UNUserNotificationCenterDelegate 프로토콜에는 다음과 같은 메서드들이 제공된다. optional func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) optional func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) UNUserNotificationCenter.current() 객체의 delegate 프로퍼티를 사용하여 위 프로토콜의 구현체를 지정할 수 있다.

    Read more…
  • iOS_Adhoc_아카이브와 크래시리틱스, 그리고 Bitcode

    오랫만의 포스팅! 회사를 옮기고 나서 어찌어찌 하다보니 iOS 개발을 맡게 되었다. 현 팀에서는 사내에 별도록 구축된 앱 빌드 & 배포 서비스를 이용하고 있었고, 앱 크래시 관리용으로는 Fabric crashlytics 를 사용중이었다. 그리고 얼마전 업데이트 작업을 마치고 앱스토어에 릴리즈할때 무심코 본 옵션.. Bitcode!! 예전 회사에서는 저 옵션을 끈 채로 배포를 했던것 같은데.. 아무튼, 저게 문제가 되는 상황이 생겼다. 차근히 썰을 풀어가보겠다. 참고로.. Xcode 7부터는 Bitcode가 기본적으로 enabled 되어있다. (빌드 속성화면에서 아무리 뒤져봐야 나오지 않는다.

    Read more…
  • 안드로이드 앱 실행 시의 세가지 상태

    안드로이드 앱이 실행이 될때, 세가지의 다른 실행 상태가 존재한다. Cold start (차가운 시작) Hot start (따듯한 시작) Warm Start (미지근한 시작) 앱 실행 성능을 개선하기 위해서는 각각의 시작 실행 상태들이 의미하는게 무엇인지 이해하는게 중요하다. Cold start Cold start 는 안드로이드 시스템 프로세스가 아직 앱 프로세스를 만들지 않은 상태에서 앱을 실행하는 것을 말한다. 기기가 부팅 된 이후 최초로 앱을 실행할 때나, 앱 프로세스를 완전히 종료시켰을 경우 등이 해당된다. 이 실행 상태는 다른 실행 상태들에 비해 앱을 실행하기 위해 더욱 많은 작업을 처리해야 하기 때문에 느릴 수 밖에 없다.

    Read more…
  • Emacs, Mac osx 클립보드 공유

    가끔 Mac 에서 Emacs 를 쓸 때, OS 의 clipboard 가 Emacs 의 clipboard(?) 가 별도의 공간이어서 불편함을 느꼈던 적이 많았다. 붙여넣기야… Cmd + V 를 이용하면 된다지만, Emacs 상의 텍스트 블록을 복사해서 다른 Mac 어플리케이션에 붙여넣기를 하려면 마우스를 이용해서 드래깅하여 영역을 지정하고 Cmd + C 키를 이용하여 복사하여야만 했고, Emacs 의 창이 분할이 되어있는 경우라면(가로분할), 먼저 해당 창을 닫지 않으면 마우스로 여러줄을 복사해야 할때, 다른창의 글자까지 복사가 되어버린다. (실제 OS 의 ‘창’ 이 아니기 때문)

    Read more…
  • Emacs Keybinding for Mac osx

    시작은.. Xcode 에 Emacs keybinding 적용해보기! Xcode 는 기본적으로 Emacs 키바인딩을 지원하지 않는다. Option 메타키를 사용하는것을 쉽사리 허용하지 않는데.. 이리저리 찾아보고 하다가 최종 적용한 방법이 있어 정리해본다. 맥에서 실행되는 모든 Cocoa 어플리케이션들의 키바인딩을 오버라이딩 하는 개념으로 이해하면 된다. 따라서 Xcode 뿐 아니라 맥의 모든 프로그램(Notes, TextEdit 같은 편집기도 마찬가지!) 에서도 설정된 키바인딩으로 사용 가능하다. 다만 아래 바인딩 된 단축키셋은 기존 설정이 오버라이드 되어버리므로, 기존 Option 키를 이용한 특수기호를 입력하는게 불가능해진다는 단점이 있다… (그런기능이었는지도 몰랐…)

    Read more…
  • Presenter First

    Presenter First: TDD for Large, Complex Applications with Graphical User Interfaces Michael Marsiglia, Brian Harleton, Carl Erickson 번역: Brann Park 원문: https://atomicobject.com/uploadedImages/archive/files/PF_March2005.pdf Motivation GUI를 다루는것은 힘들다. 처음에는 매우 단순했던 것들이 어떻게 이리도 빠르게 거대해지고 복잡해지는걸까? 디자인에 작은 변화를 가하는 것이 왜 어려운걸까? 우리는 어쩌다가 구현할 기능도 확정되지 않은 순간에 개발공수가 큰 코드를 계속해서 작성하는 함정에 빠지게 된 걸까? 어쩌다가 기능 중심의 개발이라는 애초의 목표에서 어긋나게 된걸까? 스트레스와 고통을 덜어줄 유닛 테스트들을 만드는것이 어째서 어려운걸까?

    Read more…
  • 안드로이드 앱 개발 시 주의사항

    이 포스팅은 앞으로 쓰게 될 안드로이드 앱 개발 관련 주의사항 포스트들에 대한 게이트웨이 정도가 되겠다. 보통.. 이렇게 하면 좋다, 저렇게 하면 좋다라는 글들은 많고, 의견도 분분하고.. 하면 좋다 이지 안하면 안된다는것도 아니고. 그런데 이렇게 제발 쫌 하지 말라는 흘려버리기엔 너무 치명적이지 않을까? 왜 하지말라는지 꼭 알아봐야 한다고 생각한다. 그렇다고 누군가의 이야기를 그냥 맹신하는것은 위험! 과거엔 맞는 이야기가 현재에는 맞지 않을 수도 있으니… 간략하게 주제별로 리스팅을 하고, 원문 링크과 간략한 설명으로 작성해 나갈예정이다.

    Read more…
  • OSX El Capitan 개발환경 세팅

    Kenny님이 작성하신 OSX El Capitan 개발환경 세팅 포스트 공유합니다. http://herblover.github.io/environments/mac/El-Capitan-Setup