1번 챕터

Maps / Mobile 손원영
1) 네이버 지도 개선

  • 플로우 개선(지도를 중심으로 기능을 넘어갈 있도록 변경)

2) 문제점

  • 변동폭이 UI/UX 변화

3) NaverMap Mobile SDK

  1. 오픈소스 활용 전략
    1. 오픈소스 & 오픈 스탠다드를 사용하여 개발
    2. 포크 & 재개발
  2. 퀄리티 향상
    1. 벡터로 변경하여 그렸고 심볼들도 렌더링 함으로 성능이 향상됨
    2. 용량 348KB => 19KB 변경
    3. 여러 레이어로 나누어서 사용
    4. Profiling 툴을 사용해서 병목현상을 제거함
    5. 멀티스레딩 copy on write, messagequeue 사용
    6. 설명이 많이 필요한 경우 잘못된 api 판단하고 다시 만듦

2번 챕터

들숨에 협업 날숨에 클린코드 / 뱅크샐러드 / 박보영 / 2년차 개발자

  1. 선호 스타일
    1. Guard
    2. Init
  2. 코드의 컨벤션이 중요하다.
    1. 여러 개발자가 모여서 개발을 하기 때문에 맞춰서 생산성을 극대화하기 위해서 필요하다
    2. SwiftLint - 기본적인 코드 컨벤션을 맞춰주고 알려준다.
  3. MVC 탈출기
    1. 종속성을 느슨하게 만들어준다.
    2. 이것을 사용하기 위해 RxSwift 사용
    3. 적절한 시점에 종속성을 부여
    4. View = 예쁜 껍데기
      layout(), attribute() 그리고 viewModel과의 binding
    5. ViewBindable
      protocol이며 이벤트를 통한 bind
    6. ViewModel
      View 분신
      ViewBindable 구현체
      View 액션과 이벤트를 모두 정의하는
    7. Model
      Network 연결
      Business Logic만을 전담
    8. 각자가 일만 있도록 제한 하는
    1. Business Logic 단위의 테스트
    2. 네트워크 부분을 빌드하느냐 아니면 실제냐에 따라 더미를 것인지 실제 네트워크를 사용할 결정
    3. 테스트가 우선순위가 뒤로 밀리는 경우가 많지만 func단위로 테스트해 것을 추천
    1. 5.0에서 추가된 Result
      1. Error-handling 방식, 
    1. 경쟁에서 최고의 무기는 협업이다
    2. 협업을 위해 클린 코드는 필수이다
    3. 대체가능한 코드를 개발하는 개발자가 대체 불가능한 개발자가 것이다.
    1. MVC => MVP => MVVM
    2. Cocoa MVC View Controller 연계성이 너무 많음
    3. MVVM
    4. TDD
    5. Swift 버전업
    6. 클린코드란

3번 챕터

쉽고 재미있는 IOS 디버깅(LLDB 함께 놀아요) / 안정민 / 한국카카오은행

 

  1. LLDB
    1. Xcode 기본 컴파일러인 LLVM에서 지원하는 디버거
    2. Thread 각각이 프레임
    3. thread list / thread select 2 / thread backtrace (alias = bt) / bt all/ thread backtrace -c 5 ( 0 ~ 5 frame ) / frame select 3 / frame info / up 3 / down 3
      / thread jump —line 19 / thread jump —by -2 / 마우스로도 사용 가능
    4. 애플에서 po 대신 v 사용하기를 권장 (코드를 만들어서 실행하고 기반으로 코드를 만들고 다시 코드를 만들기 때문에 너무 느려서)
    5. expr 상요하면 중간에 객체의 상태를 변경할 있음
  2. Chisel
    1. Facebook에서 만든 디버깅
    2. 파이썬으로 작성됨

 

 

4번 챕터

Naver WebToon 노수진 / 김희재

 

    1. AVMetadataFaceObject
    2. MLKit
    3. Convert Coordinate
      1. UIKit Core Graphics 간의 좌표가 다름(좌상단시작 좌하단시작)
    4. Overheating
      1. ProcessInfo.thermalStateDidChangeNotification (발열 체크)
    5. Anchoring with ScenKit
    6. ARAnchor 
    7. SCNNode
    8. 성장
      1. 사이드 프로젝트를 해라

 

 

Turi Create 으로 Style Transfer 모델 트레이닝 하기 / 김희재

  1. 지폐 안에 있는 얼굴을 매칭하는 것뿐이 아닌 질감도 카피해보자에서 시작
  2. TensorFlow PyTorch 사용(메모리 사용량의 한계)
  3. Create ML Turi Create 사용
    1. 데이터만 있다면 미리 준비된 Task 적용
    2. Create ML
      1. Swift / OSX / Mac + eGPU
      2. Full GUI Tool
  4. Python
    1. Osx, linux, win10 지원
    2. Linux + Nvidia GPU
    3. Style Transfer 모델
  5. 작업 순서
    1. 셀카 이미지를 가져와서 데이터를 학습
    2. 기본 값으로만 했을 원하는 결과를 얻기 어렵다
    3. 최적의 하이퍼 파라미터 찾기
      1. Style_loss_mult : 레이어별 스타일 피쳐 coefficient
      2. finetune_all_params: 콘텐트 특징 추출기 또한 함께 학습시키기
      3. use_augmentation: 콘텐트 이미지 데이터 뻥튀기
      4. input_shape: 콘텐트 & 스타일 이미지 입력 사이즈
    4. 데이터 학습을 위한 파라미터를 자동으로 여러 셋을 해주는 프로그램을 사용
    5. 이미지에 대부분이 배경이기 때문에 배경 데이터로 매칭됨
      1. 해상도를 키워서 얼굴만 나오게 해서 사용
  6. 사용 선택
    1. ML 모르는데 스타일 트랜스퍼 모델을 사용하고 싶다 => Turi Create
      1. 필요 모델이 Create ML에서 제공되는 모델이다 => Create ML 가장 쉬움
    2. 스타일 트랜스퍼 모델은 퍼포먼스 척도로는 훈련결과를 평가하기 힘들다
      1. 눈으로 직접 결과물을 봐야한다.
      2. 하이퍼 파라미터 튜닝을 훈련결과를 비교할 있는 방법이 필요

5번 챕터

애니메이션 만들기 / 김기범 / Naver Apollo CIC

  • 제품 디자이너 => nhn 개발과정 => ios 개발자가
  1. 애니메이션이 필요한 이유
    1. 굳이 애니메이션까지? 
      1. 형태는 기능을 따른다 - Louis Sullivan
      2. Human Interface Guidelines
    2. 애니메이션의 기능
      1. 중요한 컨텐츠 강조
        1. 뱃찌, 통통 튀는 움직임
      2. 컨텐츠의 맥락 유지
        1. 다른 페이지로 이동시에 애니메이션이 동작해서 어떤 맥락으로 이동 되는지 인지가 쉬워짐
        2. UIViewControllerAnimatedTransitioning
        3. UIViewControllerTransitioningDelegate
        4. Fire-and-forget 방식이 대부분
      3. 유저 입력에 대한 컨텐츠의 반응
        1. 사용자 제스처에 따라 점진적으로 재생됨
        2. Fire-and-forget 방식과 반대가
        3. touchesMoved => 터치 위치가 나옴
        4. scrollViewDidScroll => 스크롤 정도에 따라 효과를 있음
        5. Gesture Recognizer 사용하면 자세한 제스처를 구분하여 사용 가능
  2. 애니메이션 구현이 어려운 이유
    1. 시간 요소가 들어가서 복잡함
    2. 디버깅의 어려움
    3. API 어려움과 생소한 개념
    4. 스펙 분석의 어려움

 

  1. 애니메이션의 기본 이론
    1. 애니메이션이란?
      1. 특정 이벤트가 일어났을 시간에 따라 변화시키는
    2. 3요소
      1. 어떻게 시작하는가(트리거)
        1. 단발성
          1. Fire-and-forget
        2. 연속성
          1. 사용자의 제스처나 데이터의 변화에 의해 점진적으로 실행됨
          2. 데이터 변화 트래킹적인 면에 의해 Rx 어울린다
          3. UIViewPropertyAnimator fractionComplete 사용하면 정도에 따른 이벤트를 구현할 있다(Rx 궁합이 좋음)
      2. 무엇을 변화시키는가(타겟)
        1. API
          1. UIView 사용하면 만들어져있는 효과를 사용 가능
          2. CALAyer 세밀한 컨텐츠 요소들의 애니메이션 API
          3. NSLayout Contraint Auto Layout 관련된 애니메이션
          4. UIBezierPath 벡터 기반의 선을 그리는 애니메이션
      3. 어떤 빠르기로 얼마나 지속되는가(타임)
        1. Duration
          1. 키보드가 0.3초이기 때문에 기준으로 참고해서 값을 설정
        2. Curve
          1. 애니메이션의 완급을 조절 있음
          2. https://cubic-bezier.com 에서 커브를 있음
  2. 애니메이션 연습
    1. https://dribbble.com 에서 참고하면서 만들어보면 많은 도움이
    2. 가능한 기본 API 활용해서 구현해보기
    3. 좋은 애니메이션을 발견하면 Trigger, Target, Time 분석해보기

 

  1. 정리
    1. 앵프라맹스
      1. 눈으로 식별하기 어려운만큼의 차이지만 쌓이다 보면 결과를 이루어 낼것이다.

 

6번 챕터

개발자 성장 루트

  1. 김창기 / 네이버 / 지도서비스 / ios 개발자 / 사내 개발자의 성장에 관심이 많은 
    1. 취업, 창업, 자영업?
  2. 윤민섭 / 네이버 웹툰 / 시리즈온 / ios 개발 / 주니어 개발자의 성장에 관심이 많음
  3. 강경구 / 웍스 모바일 / Nine WOKRS / iOS 개발 /  
  4. 권문법 / 네이버 
  5. 최완복 / 라인 비즈 플러스 
    1. 개인 개발자 ( 창업 )
    2. 절박한 상황에서 Ruby on Rails 완료함 => 이것 저것 여러가지 일을 맡아서 처리하게  
    3. 스트레스가 일을 맡아서 성장에 도움이 되었음

 

취업? 창업? 자영업?

  1. 어떻게 하면 내가 원하는 회사를 선택할 있을까?
    1. 중소기업 6 => android, iOS 많은 것들 배울 있었음 => SI에서 배울 있었던 경험
    2. 많은 사람들을 만남(대기업 중소기업 … ) => 회사의 지원이 충분한 회사에 가면 성장할 있음
  2. 스스로 있는 사람이라면
    1. 어떤 회사에 가더라도 스스로 있으면 상관없다.
  3. 가고 싶은 곳에 취직을 있는 방법
    1. 공부를 해라
    2. 핵데이
      1. 네이버 개발자 분들과 개발자 분들이 함께 팀을 이루어서 밤을 새서 개발을 해보는 기회
      2. iPhone 화면 만들기 ㄷ미리 모든 과정을 혼자서 해봄
    3. 부스트캠프
      1. 부스트캠프와 연계되어 좋은 회사에 분들이 많음
      2. 기업들에서 필요한 요구사항들을 반영하여 교육을 받기 때문에 취업률이 높음
    4. 이력서
      1. 떨어진 이유에 대해서 물어라
        1. 이유를 피드백하려고 노력함
        2. 독특하고 평범했기에 뽑을 이유가 없었다.
      2. 포맷을 많이 모아서 성공 사례와 실패 사례를 분석해서 수정해나감
      3. 자신이 것을 흔적으로 남겨라
    5. 면접
      1. 면접을 많이 봐야 실력이 는다.

 

공부를 어떻게 할까?

  1. 공부를 하는 방법을 공부하라
    1. 나의 스타일에 맞는 공부방법을 찾아라
  2. 일단 만들어보라
    1. 언어를 공부하고 바로 프로젝트를 해봐라
    2. 지식의 순서가 없이 배우게 되기 때문에 다시 공부하는 과정이 필요
  3. 스스로가 안된다면 일을 시작해라
    1. 계약관계로 묶여버려서 하지 않을 없도록 몰아갔다.
  4. 구글에게 물어라
    1. 샘플코드, Doc 찾아볼 있지만
    2. 검색해서 가져오고 코드를 이해하고 사용해라
    3. 내부적으로 어떻게 돌아가는 확인해라
  5. 스터디 & 커뮤니티
    1. 피해할
      1. 고만고만한 사람들끼리 모이면 제대로 되지 않을 경우가 많음
    2. 추천해할
      1. 내가 개발하는 영역만 공부할 필요는 없다
        1. 여러 언어간의 연결고리를 있게 되고 새로운 시각이 열린다.
  6. 책을 봐라
    1. 책에서 배울 있는 점이 많다
      1. 언어 => 구매/도서관 책을 읽어라 => 출판사에서 리뷰어를 신청하라
      2. 책을 읽다보면 알지 못하는 점을 발견 => 원서를 참고해서 읽어봄
  7. 공식 문서
    1. 공식문서를 통해 배우는 것이 확실한 방법이다
    2. 인터넷에서 확인한 정보들은 애플에서 적어둔 것과 다른 내용들이 많다.

 

Q&A

  1. 크로스 플랫폼의 미래는 어떻게 될까요?
    1. 내가 편한 언어를 사용하려면 좋다.
    2. 네이티브를 알지 못해서 오류가 발생하여 효율이 나오지 않을 있다. 
  2. iOS 개발자의 미래는?
    1. 모바일과 Desktop에서 만들 있는 개발자가 있다.
    2. 시장
      1. Ios 개발자를 뽑기가 쉽지않다.
    3. 하나의 개발에만 목을 매는 것이 아니라 이것저것 있는 개발자가 되어야한다.
    4. 개발에 대한 전문성을 가지는 사람이 되는 것이 좋을 같다.
  3. 화면 전환 방식 ( Programmically vs GUI )
    1. 스토리 보드는 화면의 흐름이 보인다
    2. 코드가 오류가 낮다
  4. 면접시 주니어에게 주는 질문사항
    1. 엄청난 능력을 기대하지 않는다
    2. 자기 자신을 알고 자기 자신이 공부할 있는 방법을 알고 있는 사람
    3. 지금 알고 있는 보다 6개월 뒤에 있을 지에 대해 알게 된다
  5. 신입 시기에 말해주고 싶은 내용
    1. 어디든 가서 발표를 해봐라
      1. 일을 따서 하더라도 잊혀지지만 발표를 하다보면 기억에 남는다(블로그라도)
    2. 영어공부
    3. 선배 개발자 중에 외부활동을 하시는 분이 있다면 함께 따라가기
  6. 완복님 RxSwift 만들어주세ㅐ요
    1. !
  7. 주니어때 성장하기 위해
    1. 누군가를 알려주는 것이 도움이 된다.
  8. 어떤 개발자가 성장할 같은 느낌을 받는지 궁금합니다.
    1. 작은 것도 놓치지 않고 끝까지 파면서 공부하는 사람
      1. 뭔가에 대해 알게되면 관련된 것들을 끝까지 파면서 공부하는 사람
  9. Solid원칙을 최근에 알게 대학생
    1. 창기님 유튜브를 확인
    2. 최근에 WWDC 다녀왔다고
  10. 연차에 맞는 역량이 무엇이라고 생각하나요
    1. 연차가 실력과 연관되지만은 않는다.

 

 

+ Recent posts