이 포스팅은 6개월 iOS 개발자 챌린지 시리즈 60 편 중 3 번째 글 입니다.

  • Part 1 - 01: 210612
  • Part 2 - 02: 210613
  • Part 3 - This Post
  • Part 4 - 04: 210615
  • Part 5 - 05: 210616
  • Part 6 - 06: 210617
  • Part 7 - 07: 210617
  • Part 8 - 08: 210619
  • Part 9 - 09: 210620
  • Part 10 - 10: 210621
  • Part 11 - 11: 210622
  • Part 12 - 12: 210623
  • Part 13 - 13: 210624
  • Part 14 - 14: 210625
  • Part 15 - 15: 210626
  • Part 16 - 16: 210627
  • Part 17 - 17: 210628
  • Part 18 - 18: 210629
  • Part 19 - 19: 210630
  • Part 20 - 20: 210701
  • Part 21 - 21: 210702
  • Part 22 - 22: 210703
  • Part 23 - 23: 210704
  • Part 24 - 24: 210705
  • Part 25 - 25: 210706
  • Part 26 - 26: 210707
  • Part 27 - 27: 210708
  • Part 28 - 27: 210709
  • Part 29 - 29: 210710
  • Part 30 - 30: 210711
  • Part 31 - 31: 210712
  • Part 32 - 31: 210712
  • Part 33 - 33: 210714
  • Part 34 - 34: 210715
  • Part 35 - 35: 210716
  • Part 36 - 36: 210717
  • Part 37 - 37: 210718
  • Part 38 - 38: 210719
  • Part 39 - 39: 210720
  • Part 40 - 40: 210721
  • Part 41 - 41: 210721
  • Part 42 - 42: 210723
  • Part 43 - 43: 210724
  • Part 44 - 44: 210725
  • Part 45 - 45: 210726
  • Part 46 - 46: 210727
  • Part 47 - 47: 210728
  • Part 48 - 48: 210729
  • Part 49 - 49: 210730
  • Part 50 - 50: 210731
  • Part 51 - 51: 210801
  • Part 52 - 52: 210802
  • Part 53 - 53: 210803
  • Part 54 - 54: 210808
  • Part 55 - 55: 210809
  • Part 56 - 56: 210817
  • Part 57 - 57: 210818
  • Part 58 - 58: 210819
  • Part 59 - 59: 210820
  • Part 60 - 60: 210823
▼ 목록 보기

목표

  • ~시험 보기~
  • ~정규표현식 연습~
  • ~글쓰기 수업~
  • ~알고리즘 3강의 10, 11~
  • ~소개방 4강의 8~11~
  • iOS 강의 1강 계속해서 듣기 -> ~대신 Swift 문법 강의 듣기~
  • ~log 작성, 배운 내용 글로 작성~
  • ~1일 1 commit~

모르는 점

  • 없음

배운점

  1. unittest, mock에 대해 배웠다.
    • unit test는 필요한 함수에 대해 요구사항을 만족하는 테스트 함수를 만들고 이를 시험하는 것
    • mock은 어떤 프로그램 혹은, 객체 등의 작동을 시험하기 위해 필요한 다른 함수, 혹은 모듈에 대해 가짜 객체를 만들어 리를 테스트할 수 있도록 하는 것
  2. TDD에 대해 배웠다.
    • 확실히 요구사항에 대해서 코드를 작성하는 것이 역할이라는 것
      • 그리고 알고리즘이 이를 대변한다는 것
      • 그래서 열심히 할 동기가 생겼다는 것
    • Agile하고 잘 맞아서 scrum 방식으로 돌아간다는 것
    • sprint 단위로 작업이 된다는 것
    • 테스트팀, production팀이 있다는 것
    • refactoring을 하는 단계에 대해서 알았다는 것
    • 너무 과한 욕심은 오히려 화를 부르고 하라는 대로 하는 것이 좋은 것
    • 알고리즘도 그렇게 풀 것
  3. 프로파일링에 대해 배웠다.
    • 코드에 대해 분석하는 것
    • 성능, 콜 횟수,cpu 점유시간 등등
    • 파이썬이 이미 있다는 것에 충격
    • 코드를 효율적으로, 즉 이해하고 짜지 않으면 이러한 것에서 다들키게 된다.
  4. Git에 대해 제대로 배웠다.
    • 각각의 개념과 branch 전략 등, 어떤 식으로 사용이되는지에 대해서 안 것 같다.
    • cli 기반으로도 동작해보아서 편했다.
    • 결과론적으로 이게 그림이 있어야 편하겠다는 생각을 했다. 그래서 github desktop에서 source tree로 변경했다.
    • PR에 대해서만 실질적으로 해보면 될 것 같다.
    • 이해했기 때문에 무조건 작업할 때, master, develop 브랜치를 따서 작업을 하는게 맞는 것 같다.
    • source tree는 오류가 생기니 기본 repo는 웹에서 파고, 이를 연결해주는 방법으로 해결해야 할 듯 하다.
  5. Swift 문법
    • Guard는 스코프 밖에서도 해당 변수가 값이 들어갔다면 사용이 가능하다.
    • if같은 경우는 if let a = b { code } 이런식으로 쓴다면, 스코프 밖에서 동작하지 않는다.
    • optional은 값이 없는 경우 app이 런타임에서 죽는 것을 방지하기 위해 컴파일 타임에서 이를 검증하여 안전한 코딩을 하기 위해 존재한다.
    • 이를 풀어주는 방법이 있는데, 이게 옵셔널 바인딩이다.
    • 옵셔널 바인딩에는 if, Guard가 있다.
      • Guard
        • else와 함께 붙어다닌다.
        • else안에 들어올 경우 return해야 한다. 안그러면 컴파일러가 지적한다.
        • 그렇기 때문에 실행을 종료시켜버릴 수 있다는 장점이 있다.
        • 스코프 밖에서 값을 사용할 수 있다.
    • nil coalescing
      • 이건 값이 nil일 경우 default 값을 먹일 수 있게 하는 스위프트 고유 연산자이다.
    • 요까지 들었다. 일단.
  6. Pull Request!!
    • 야호! 드디어 알아냈다 후후..
      1. organization 만들기
      2. 팀원 초대
      3. 레포 만들기
      4. 해당 레포 fork
      5. clone해서 가져오기
      6. repository setting에서 remote origin 별명을 upstream으로 변경
      7. clone한 repo 주소 입력
      8. branch 따기
      9. 내 레포에 commit
      10. 원본 repo에 반영됨!! 야호!
  7. 알고리즘
    • knapsack 문제
      • 동적 계획법
      • 백트레이킹
    • N Queen
    • 부분집합의 합 문제

개선할 점

  1. 아침에 좀더 빨리 일어나보기.
  2. 일단 학교에 집중. 이거하면서 배우는게 또 있다.
  3. 글쓰기 수업은 라이브로 치운다.
  4. 다음주까지 스위프트 문법, 알고리즘에 집중하는 것이 좋아보인다.
  5. 알고리즘은 유성장에 있는 것을 푼다. PS 레포따로 만들어서 계속 올린다.

잡담

  1. 피곤하군..