-
[GIT] Merge vs Rebase 차이
GIT을 프로젝트를 하며 다들 자주 사용하시는데, 혹시 브랜치를 병합할 때, Merge와 Rebase을 사용해본 경험이 있으신가요⁉️ 저는 주로 Rebase fork해온 프로젝트를 upstream에 맞게 동기화하고 싶을 때 사용했는데요. 정보를 fetch upstream을 통해 가져오고 rebase을 통해서 병합을 했었어요. Merge 얘는 upstream이 없고 origin만 있는 상태에서 Git을 관리할 때 사용했었던 방법이에요. 사용하면서 어떤 상황에 사용하는지 형태만 보고 사용했었지, '왜 이걸 사용하지'는 생각을 해보지 않았던 것 같아요. 그래서 이번 기회에 동작 원리를 알아보고 정리해보려고해요~~ 기회가 된다면 다음 GIT 포스팅은 오픈소스를 관리하는 방식인 fokr한 저장소를 관리하는 방법을..
-
[SWIFT] URL encoding (URL nil이 될 때 - addingPercentEncoding)
URL에 한국어를 넣거나 다른 특수문자들을 넣어야 될 때가 있는데요. 이럴 때, URL(string: someStr)을 이용하면 nil 값으로 변형되는 때가 있습니다. 저도 예전에 카카오 오픈 API를 이용해서 장소를 검색할 때, 분명 request에 해당하는 모든 정보를 넣었는데도 요청이 실패해서 삽질을 했던 적이 있는데요 😂 그 때, 정확한 URL은 기억나지 않는데 아마 이런 방식이었습니다. www.naver.com/search?location=명동 이렇게 URL로 get 요청을 보내면 분명 response가 와야했는데, 오지 않는 상황이었습니다. (404 에러가 났죠 ㅠㅠ) 그래서 URL로 바꾸는 부분에서 찍어보니 nil 값이 나왔습니다. (그러니깐 404가 나올 수 밖에..) let url = U..
-
[2023년 회고] 3년차 iOS 개발자
2022년도 회고를 하고 넘어갔어야 하는데, 하지못했고 2023년은 여러가지로 변하고 또 신년에는 마음가짐을 새롭게하고 정비하자는 의미에서 올해를 돌아보고 2024년을 계획해보려고 3년차 개발자의 회고를 작성해보려고 합니다 👊🏻 회사원으로서 2024년 1월 25일부로 네이버제트에 입사해서 근무를 한지 만으로 3년이 흐르게 되었다. 그래도 나름 한 회사에 오래 있었고 그동안 많은 변화들이 있었는데 2023년은 가장 많은 변화가 있었던 해였던 것 같다. 조직개편 우선 가장 큰 변화는 아무래도 조직개편이었던 것 같다. 처음에 조직개편을 한다는 소문이 있을 때, iOS 개발자임은 변화가 없으니 나에게는 크게 변화가 없을 것 같다고 느꼈다. 하지만 조직개편이 1년에 2번정도 있었는데 생각과는 달랐다. 나의 업무에..
-
[Design Pattern] VIPER Pattern - iOS Architecture
iOS의 Design Pattern에는 많은 것들이 있죠...? MVC, MVVM, VIPER, RIBs, MVP등이 있는 것으로 알고있습니다. 제가 여기서 사용해본 것은 MVC, MVVM 정도입니다.. 아직 참 갈길이 먼 것 같네요 😢 오늘은 이 중에서 VIPER Pattern에 대해 공부할 기회가 생겨 VIPER Pattern으로 간단한 앱을 구현해봤는데 정리를 해보겠습니다. VIPER Pattern이란? View, Interactor, Presenter, Entity, Router의 약자를 따와서 VIPER Pattern이라는 이름이 명명되었다. 아무래도 각각의 구분이 많은 만큼 역할 단위의 구분이 명확하다. VIPER Pattern의 아키텍쳐 모식도는 다음과 같다. View : 어떤 패턴이든 사용..
-
[iOS] Xcode Target이란?
이번에 새로운 프로젝트를 보고 "어..? 이 프로젝트는 왜 이렇게 타겟이 많이 분리되어 있지..?"라고 느낌이 들었고, 지금까지 iOS 개발을 해오면서 Xcode 프로젝트에 대한 원론적인 이해(?)가 부족했다고 느끼면서 새롭게 공부를 해보았어요.. Target이라고 하면 여러분들이 알게모르게 다들 이런 화면 보셨죠..? 저는 지금 하나의 Target만 있는데, 프로젝트를 생성할 때 UI Test, Unit Test를 포함하셨으면 이 또한 Target이 될 수 있고 또한 빌드를 할 때 각자가 빌드하는 Target이 설정이 되어 있었을거에요.. 근데 그렇다면 Target이란 무엇일까요? 한번 지금부터 제가 공부한 내용을 바탕으로 설명을 해보겠습니다‼️ Xcode Target Target이란 빌드할 프로덕트를..
-
[iOS] QR Code Scanner 만들기 - AvFoundation 이용
최근데 카메라를 이용하는 프로젝트가 있었는데 여기서 활용했던 QR Code 스캔 기능에 대해 포스팅을 해보려고 합니다. 기본적으로 만들기 위해서 iOS Architecture에서 Media 영역에 속하는 AvFoundation을 이용하였습니다. 간단하게 AvFoundation을 이용하는 경우를 공식문서에서 찾아보면, iPhone의 카메라, 오디오 등을 이용하는 경우에 사용하면 된다고 명시되어 있습니다. 즉, 여러분들은 카메라를 이용해 사진, 동영상 촬영 + 오디오 녹음이 필요할 때 가장 먼저 AvFoundation을 생각하시면 될 것 같습니다. 그럼 AvFoundation을 이용해서 QR Code Scanner을 만들기 전에 사전 준비 작업 먼저 해주겠습니다. 위의 그림과 같이 QR Code가 인식되면 ..
-
[SWIFT] KVC (Key - Value - Coding)
오늘은 KVC에 대해 포스팅을 해보려고 합니다. 그 동안 iOS 개발을 하면서 많이 사용했던 기억은 없는데요. 그래도 더욱 깊게 알아가려면 알아야하는 필수 지식인 것 같아서 공부를 해보았습니다. KVC란? KVC란 우선 Key-Value-Coding의 약자입니다. 그렇다면 Key-Value-Coding이 뭐냐? 일반적으로 객체의 프로퍼티에 대해 접근할 때 직접 접근하는 방법이 아닌 간접적으로 접근을 해서 값을 설정하거나 가져올 수 있는 방식입니다. 이렇게만 설명하면 '간접적이 뭐고 직접적 방법이 뭔데..?'라고 생각할 수도 있습니다. 한번, 간단한 예제를 통해서 알아볼게요~ 우선, 이렇게 설정되어있는 People이라는 객체가 있습니다. 여기에 NSObject, @objc dynamic이라는 키워드에 대해..
-
[SWIFT] XML Parser 사용하기
보통 서버와 통신을 하여 데이터를 받아올 때, JSON 타입을 많이 사용하지만, 아직 공공 데이터의 경우에는 XML의 형식도 있다고해요...‼️ 저도 이번에 프로젝트를 진행하면서 한국 관광 공사의 데이터를 받아와야 했어요....😭 XML Parsing은 처음해보지만 JSON 형식과 크게 다른 건 없는 것 같더라구요. 그럼 XML Parsing을 알아볼까요. XML이란? XML(eXtensible Markup Language) 이렇게 약자를 따와서 XML이라고 한대요..‼️ 뭔가 이름의 뉘앙스만 봤을 때, 마크업 언어를 확대한다(?) 그런 의미인 것 같죠. 그렇다면 마크업 언어는 무엇일까요? 가장 대표적으로 여러분들이 가장 자주 봤을 HTML 언어가 있어요. 이 둘의 공통점은 무엇일까요? 바로 "마크(Ma..
-
[Swift] Macro (1)
이전에 Macros라는 Swift 언어의 기능이 나왔다고 알고있었는데, 느낌만 알고있다 이번에 SwiftUI + TCA 스터디를 진행하다보니 TCA에서 Macros를 활용하는 경우가 보여서 어떤 기능인지 자세히 알아보려고합니다 🙂 만든 이유우선 Macros의 개발자문서 설명을 보면 '컴파일 타임에 코드를 발생시킨다'고 되어있는데요. 뭐 여기 본문만 보면은 어떤 느낌인지 감이 잘안오는데, 한번 알아보면서 살살 잡아가보자구요Use macros to generate code at compile time좀더 자세한 설명을 보면 개발자들이 코드의 반복을 피하기위해 우리의 코드를 컴파일 타임에 전환해준다고하는데요. 그림을 보면 우리가 작성한 코드가 'Expanded code source'로 확장되는 모습을 볼수있..
-
[iOS] Dynamic Framework & Static Framework
요즘 회사 프로젝트의 크기가 커지다보니 각 모듈간의 의존도도 커지고 빌드 시간도 오래 걸리게 되면서, Framework 단위로 분리해서 관리하는 방법에 관심을 가지게 되었습니다. 그러다보니 모르는 부분들도 있어서 이전에는 가볍게 알고 있던 Static Framework & Dynamic Framework에 대해 좀 더 깊게 알아보려고 합니다 🙃 Dynamic Framework 우선 Dynamic Framework는 Xcode에서 Framework를 생성하게 되면 기본적으로 Dynamic Framework로 생성됩니다. Dynamic Framework는 그림에서처럼 Static Linker를 통해 Dynamic Library Reference가 Application Code로 들어가고 사용시에는 해당 참조..