[Swift-30-Projects] 01. IOS 클론코딩 GoodAsOldPhones

이미지
[Swift-30-Projects] IOS 클론코딩 GoodAsOldPhones Good As Old Phones 앱을 구조 살피기 앱 레이아웃 구성 Products Details Contact Us 앱을 구조 살피기 화면은 크게 2개의 Tab Bar로 구성되어있다. Products 와 Contact Us. 상품의 목록을 나열하는 Products는 테이블 뷰로 이루어져있다. 각각의 상품을 입력하면, 상세페이지로 넘어간다. 상세페이지에는 카트에 추가할 수 있는 버튼이 있다. Contact Us 페이지는 하나의 UIView이며, 연락처가 적혀있다. 앱 레이아웃 구성 앱 동선은 Storyboard를 이용해서 구성해준다. 먼저 크게 Tab Bar 컨트롤러로 두 화면을 갈라준다. 그리고 각각의 Tab Bar의 Item의 이름을 Products와 Contact Us로 변경해준다. 간단한 Contact Us 페이지에는 UIView를 넣어준다. Products 페이지에는 Navigation Controller와 TableView를 추가해준다. TableView의 Cell 선택시에는 UIView로 이동할 수 있도록 해준다. Contact Us 간단한 페이지 부터 구현한다.(개인취향이기 때문이다.) Custom Class로 ContactUsViewController를 추가해주고 하나 생성해준다. override func viewDidLoad() { super.viewDidLoad() setupScrollView() setupContents() } ContactUsViewController를 만들어준다. Storyboard에서 해당 UIView를 컨트롤 할 컨트롤러로 UIViewController를 지정해준다. 뷰가 로드되는 시점에 스크롤 뷰를 하나 생성하고, 뷰를 하나 생성한다. 뷰에 스크롤뷰를 추가하고, 스크롤 뷰에 뷰를 서브뷰로 추가한다. func set

데이터야 난 떠난다!

이미지
데이터야 난 떠난다! 선생님 서비스 개발이 하고 싶어요! 와디즈에 데이터 분석가로 입사를 하고 2년이 지난 시점 새로운 제안이 들어왔다. IOS개발을 해보면 어떻냐는 제안이었다. IOS 개발 인력이 부족하다는 사실 이외에 앞, 뒤로 아무 개연성 없이받은 제안이었다. 당시 담당하고 있었던 업무는 크게 두 가지였다. 하나는 새로운 데이터 파이프라인을 만드는 업무였고, 또 하나는 GA(GoogleAnalytics)와 관련된 전반적인 관리와 개선작업 이었다. 물론 담당하고 있는 업무에 불만은 없었다. 하지만 계속 누군가를 위해 일하는 느낌으로 하던 업무를 하고 있었던 것도 사실이다. 데이터 기반의 의사결정을 위한 데이터를 만드는 것은 나지만 의사결정권은 1도없는 일들을 예로들 수 있다. 요청을 받으면 요청을 처리해주고, 또 더 문제가 생기면 해결해주는 일이었다. 이런 상황에서 서비스 개발직무로의 변경 제안은 솔깃했고, 직접 서비스를 개발하고 싶다는 생각을 심어주었다. IOS개발자로 전향 한 후 어려웠던 점 태어나서 처음 하는 모바일, IOS개발을 시작해야 했기 때문에 알아야 할 것들이 너무 많았다. 애플에서 지원하는 인증서의 개념부터 시작해서 언어, 라이프 싸이클까지 모르는 것 투성이였다. 또한 개발자로서의 기본기가 전혀 갖춰져 있지 않았다. 지식만 있었고 경험이 없었다. 피쳐 브랜치는 어떤 이름으로 따서 어디에 PR을 날려야 하는지 몰랐고, 처음보는 종류의 에러메시지는 이유를 알 수가 없었다. 공부만 하는 것은 현실적으로 불가능 한 부분이라, 아무것도 모르는 상태로 실제 코드를 수정하면서 작업을 해야하는 두려움도 있었다. 프로젝트 중간에 들어가서 진행 과정을 보고 개발을 했던 것은 엄청난 스트레스를 가져다 주었다. 재미있던 점 서비스의 한 부분을 만드는 느낌을 많이 받았다. 버튼을 추가하더라도 와디즈의 색상코드로, 안내문구와 이모지도 와디즈스럽게 만들어야 했다. 누군가 꼭 이렇게 해야한다라고 해서 만든

[book] 용의자 x의 헌신

이미지
[book] 용의자 x의 헌신 탐정 갈릴레오 시리즈의 세 번째 작품. 사실상 첫 히가시노 게이고 작품을 입문하게된 책. 초기에 살인사건의 과정과 범인이 드러나고 시작하는 특이한 구성. 갈릴레오 탐정이라 불리는 주인공의 라이벌이 등장한다. 물리학자 대 수학자의 두뇌싸움이라는 구성이 마음에 들었다. 풀 수 없는 문제를 만드는 것과 그 문제를 푸는것 중 어떤게 더 어려울까라는 문제를 던져주었다. 그리고 이어서 그 문제는 사랑과 관련있음을 알려준다. 논리적인 것에 사랑이라는 더해지면 더 이상 설명하기가 힘들어진다. 왜 이런 행동을 했을까? 하지만 그 이유는 간단하다 사랑하기 때문이다. 극한의 논리로 이루어져 있는 사람이 논리적으로 사랑을 풀어가는 모습이 정말 기이하다. 어떻게 보면 논리 적이지만 그 논리 자체가 모순이다. 그 모순속에서 진정한 사랑을 볼 수 있다. 차가운 이성과 따듯한 감성이 적절하게 어우러져있는 드라마가 참 좋다.

[book] 탐정 갈릴레오

이미지
[book] 탐정 갈릴레오 탐정 갈릴레오 시리즈의 첫 번째 작품. 등장 인물에 대한 설명도 묘사도 적었다. 하지만 흥미로운건 사건의 개연성과 방법이 너무나 논리적이었기 때문에 퍼즐이 맞춰지는 쾌감이 있었다. 옴니버스로 진행되는 스토리에는 속도감이 있다. 매 스토리마다 살인사건을 해결하는데 필요한 지식들이 정말 놀라울 정도로 과학에 기반되어 보는 내내 신기했다. 또한 과학이 만들어낸 정밀한 살인사건임에도 그 스토리가 주는 오싹함 또한 좋았다. 죽은 치기공이 벼락과 합판을 이용해 자신이 죽었음을 알려 결국 범인을 잡게만든 일. 혹은 정말 유체일탈인 것 처럼 보인 빛의 굴절이 만들어낸 현상까지. 모든 현상의 원리를 정확히 알고 있기에 응용해서 글을 쓸 수 있었을 것이다. 나도 어떤 현상의 원리를 정확하게 알고있으면 이렇게 스토리와 잘 엮어서 글을 쓸 수 있을까? 추리소설이 아니더라도, 다른 사람들에게 정보를 전달하고 메세지를 주는 연습을 해야겠다. 추리소설 특성상 내용에 대한 리뷰자체가 스포일테니 기억이 나지 않으면 다시 책을 읽어보자. 다만 내용을 한 단어로 요약한 제목은 다시 제목을 보는 것 만으로 책 내용을 떠올리게 해줘 좋았다.

[book] 히가시노 게이고

이미지
[book] 히가시노 게이고 - D표시는 Drama. 연속드라마로 영상화된 작품 - SP표시는 Special Drama. 단편드라마로 영상화된 작품 - M표시는 Movie. 영화로 영상화된 작품 시리즈 가가 쿄이치로 시리즈 졸업 : 설월화 살인 게임 - 시리즈 첫작품 잠자는 숲 (SP) 둘 중 누군가 그녀를 죽였다 악의 (D) 내가 그를 죽였다 거짓말, 딱 한 개만 더(SP)[10] 붉은 손가락 (SP) 신참자 (D) 기린의 날개 (M) 기도의 막이 내릴 때 (M) 탐정 갈릴레오 시리즈 탐정 갈릴레오 (D) 예지몽(소설) (D) 용의자 X의 헌신 (M): 제6회 본격 미스테리 대상 소설부문 및 제134회 나오키 상 수상작. 성녀의 구제 (D) 갈릴레오의 고뇌 (D) 한여름의 방정식 (M) 허상의 도화사 (D): 국내 미출간 금단의 마술 (D): 국내 미출간 침묵의 퍼레이드: 국내 미출간. 갈릴레오 시리즈 20주년 작품 닛타 고스케 시리즈 매스커레이드 호텔 (M) 매스커레이드 이브 : 매스커레이드 호텔의 프리퀄 매스커레이드 나이트 명탐정 덴카이치 시리즈 명탐정의 규칙 (D) 명탐정의 저주 설산 시리즈[11] 백은의 잭 (SP) 질풍론도 (M): 2016년 11월 26일 아베 히로시 주연 영화 개봉. 눈보라 체이스: 국내 소미미디어로 출간. 연애의 행방: 원제는 <사랑의 곤돌라>. 시노부 선생 시리즈 오사카 소년탐정단 (D) 시노부 선생님, 안녕! 라플라스의 마녀 시리즈 라플라스의 마녀 (M) 마력의 태동: 라플라스의 마녀의 프리퀄 소설. 장편 방과 후 11문자 살인사건 (SP) 가면산장 살인사건: 반전소설계의 대명사로 알려진 대표작 중 하나. 직접 보기를 권한다. 게임의 이름은 유괴 (M): 영화명은 g@me. 공허한 십자가 나미야 잡화점의 기적 (M): 제7회 일본 중앙공론문예상 수상작, 201

[IOS] AppDelegate는 뭐하는 녀석이지?

이미지
[IOS] AppDelegate AppDelegate.swift 는 swift로 IOS 개발을 시작하면서 부터 보였고, 계속 궁금해서 이 기회에 정리해놓으려한다. 공식문서 참고 UIApplicationDelegate AppDelegate.swift 크게 두가지 기능을 한다. AppDelegate 클래스를 정의 어플리케이션이 그려질 window를 생성하고, 상태가 변할 때 반응 할 수 있게 한다. 또한 AppDelegate 클래스는 UIApplicationDelegate 프로토콜을 채택해야한다. 앱에 대한 진입 점과 입력 이벤트를 앱에 전달하는 실행 루프를 생성 이 작업은 파일 상단에 나타나는 UIApplicationMain 의 특성이다. (@UIApplicationMain)에 의해 수행된다. 하지만 IOS13부터는 AppDelegate.swift , SceneDelegate.swift 두 파일로 나뉘어 생긴다. 그렇기 때문에 여러 소스를 보았을 때 혼란을 야기했다. 이전에는 (~ IOS12) 아래와 같은 구조였다. AppDelegate Process Lifecycle App Launched App Terminated UI Lifecycle Entered Foreground Become active 하지만 지금은 (IOS13) 아래와 같다. Session Lifecycle에 대한 역할이 추가되었다. AppDelegate Process Lifecycle Session Lifecycle Session Created Session Discarded SceneDelegate UI Lifecycle Entered Foreground Become active AppDelegate 클래스에 있던 프로퍼티인 window가 SceneDelegate로 옮겨졌다. 하지만 하나의 화면에서 여러개의 다중 화면을 지원하면서 scene 개념이 추가

[book] 소프트웨어 장인이 되기 위한 길

이미지
[book] 소프트웨어 장인이 되기 위한 길 개발을 하면서 꾸준히 새로운 것을 배워야 한다는 것에 동의하지 않는 사람은 없을 것이다. 그럼에도 나는 꾸준히 나아지고 있는지, 나아지려면 어떻게 해야하는지, 무엇이 나아지는 것인지에 대한 궁금증이 이 책을 읽게 했다. 이 중에서 내가 직면한 문제와 관련된 부분을 직어 놓는다 카타 펫프로젝트 오픈소스 페어프로그래밍 컨퍼런스 내가 저 5가지를 할 수 있는 방법에 대해 고민해보아야 한다. 카타 프로그래밍, 알고리즘을 공부할 때 쓰는 방법으로 계속 갈고닦아야 한다. 문법적으로 부족하거나, 자료구조에 대해 공부할 때 쓰면 좋을 방법이다. 매일매일 하면 좋기에 아주 짧은 시간이라도 매일 하는 시간을 만들어야겠다. 주로 집중이 잘 안돼는 오전이른 시간에 하겠다. 펫프로젝트 실력을 늘리기에 가장 좋은 방법이다. 만들고 싶은 것을 만들고, 이 때 필요한 지식들을 익히고 정리한다. 테스트 코드 작성도, TDD도 여기에서 연습하면 좋아보인다. 다만 시간이 많이 필요한데 언제 이 프로젝트에 투자할지를 정하는 것이 힘들어보인다. 오픈소스 사실상 펫프로젝트와 같은 맥락과 같은 부분이다. 다만 남이 짠 코드를 볼 수 있다는 메리트가 있다. 프로젝트 하나를 붙잡고 시간을 들여 소스코드 분석을 해 보는 것도 많은 것을 배울 수 있어보인다. 페이즈를 잡고 펫프로젝트와 다른 기간에 진행해보자. 페어프로그래밍 이건 어디서 어떻게 해야할지 감이 안온다. 일단 페어프로그래밍을 할 수 있는 멤버를 구해보자. 하고 꼭 후기를 남겨야겠다. 컨퍼런스 어딘가에서 발표를 하기위한 준비를 항상 해 놓자. 내가 발표할 수 있는 주제를 발표자료로 만들어서 공유하자. 또한 밋업이나 스터디가 있다면 찾아서 적극적으로 참여하자. 내가 만날 수 있는 사람의 유형이다. 어떻게 대해야 하는지 알아보며, 나는 이 중 어디에 속하는지 알아야한다. 무지 : 잘 모르기 때문에 사용하지 않는다. 대중 : 더