TIL(Today I Learned)

4월 29일(목)

학습내용

  • CI/CD
    • CI(Continuous Integration)
      • 테스트가 가능해야한다.
      • Build하고 Test 하는 것 까지가 CI이다.
    • CD(Continuous Deploy or Delivery)
      • CD가 되기 위해선 항상 CI가 선행되어야함.
      • 배포과정의 자동화
  • Testflight
    • 클로즈/퍼블릭 베타테스트를 위한 환경 제공.
    • App Store Connect에서 테스터 초대 가능.
    • 최대 1만명, 90일 동안 가능.
  • Crashlytics
    • 구글의 Firebase의 일부 기능.
    • 사용자의 행위 추적.
      • 앱 사용시간, 머무르는 화면 시간, 터치 이벤트 등…
    • 비정상 종료 로그 자동수집.
      • dSYM(Debugging Symbol)을 활용하여 덤프 분석을 통해 크래시 이유 분석 가능.
  • 퀴즈
    • 준스제이크 퀴즈
      • 구조체 내부에 2개의 Reference를 포함하고 있다면, Class 보다 많은 Reference Counting overhead가 발생한다.
      • Apple은 iOS 앱에서 사용할 수 있는 두가지 Type Families를 제공한다. (San Francisco, New York)
      • Dynamic Dispatch를 사용하는 이유 중 하나는 바로 Polymorphism, 다형성을 활용하기 위함이다.
      • 클래스는 기본적으로 메서드들을 Dinamically Dispatch한다. 클래스 앞에 final을 붙여서 메스드들을 Statically Dispatch하게 만들 수 있다.
        • final을 상속이 불가능하기 때문에 다른 형태일 수가 없으므로 static dispatch를 하게 된다. 상속이 가능하면 상속한 클래스가 override하여 함수를 구현할 수 있으므로 Dynamic Dispatch를 하게 된다.
      • HIG의 Tables를 보면 iOS에서는 3가지 스타일의 테이블을 제공한다. Plain, Grouped, Inset Grouped
      • Data(contentsOf: URL)에서 URL이 네트워크와 통신을 필요로 하는 URL이면 사용하지 않는 것이 좋다. (Sync방식이므로 데이터를 받는 동안 작동이 끊길 수 있다.)
    • 그린소대 퀴즈
      • MVC 단점을 보완하기 위해 나온 아키텍처 패턴은 MVVM이다.
      • 타입 캐스팅 및 디이니셜라이저는 클래스의 인스턴스만 가능하다.
      • LLDB의 breakpoint 명령어의 별칭인 b 명령어를 만드는 방법은 command alias b breakpoint이다.
      • TCP, UDP로 소켓통신이 가능하다.
      • macOS용 패키지 관리자로 스프트웨어의 쉬운 설치와 업데이트 및 삭제를 관리해주는 시스템은 Homebrew 이다.
      • 지역화를 나타내는 약어 표현은 l10n이다.
      • unowned은 참조하는 인스턴스가 메모리에서 해제되어도 참조값을 nil로 변경하지 않는다. weak은 nil로 변경한다.
      • 모든 프로세스가 공평하게 실행되는 스케쥴링 방식은 Round Robin이다.
      • 코어데이터는 앱에서 모델 계층을 관리하는데 사용하는 데이터베이스는 아니다. 데이터베이스를 다루는 프레임워크이다.
      • 타입을 다운캐스팅 해주는 키워드는 as이다.
      • Network 계층은 서로 다른 네트워크 간에 통신 경로 결정(라우팅)을 담당한다.
      • 객체지향 프로그래밍의 3요소는 상속, 다형성, 캡슐화이다.
      • HTTP는 TCP/IP위에서 동작한다.
      • UDP는 브로드캐스트를 사용하여 호스트가 속해 있는 네트워크 안에 1:N 통신이 가능하다.
      • Apple A14 Bionic 프로세서는 코어가 6개이다. Firestorm 2, Icestrom 4개 이다.
      • 웹서비스에서 공격자가 악의적인 스크립트를 삽입하여 해당 스크립트가 회생자 측에서 동작하도록 하여 악의적인 행위를 하도록 공격하는 기법은 XSS이다.

문제점/고민한점

  • Swift에서 Type Casting이란?

해결방법

  • Swift에서 Type Casting은 class의 인스턴스에 대한 형변환 방법이다.(같은 계층에 존재하는 다른 타입으로의 변환) 또한 protocol에 대한 준수 여부를 판정하기 as를 이용한 casting을 사용할 수 있다.

참고