동동이

동동이

  • 분류 전체보기 (84)
    • iOS (34)
    • SWIFT (23)
    • Design Pattern (3)
    • Combine (2)
    • RxSwift (3)
    • Algorithm (12)
    • Git (5)
    • 회고 (2)
  • 홈
  • 태그
  • 방명록
RSS 피드
로그인
로그아웃 글쓰기 관리

동동이

컨텐츠 검색

태그

Algorithm IOS uicollectionview 백준 RxSwift dp iOS Unit Test SWIFT CAShapeLayer iOS Dev 프로그래머스 CABasicAnimation iOS Developer UICollectionViewFlowLayout BFS Git Core Animation 알고리즘 UIBezierPath RxSwift Observable

최근글

댓글

공지사항

아카이브

[Swift] Macro (1)

이전에 Macros라는 Swift 언어의 기능이 나왔다고 알고있었는데, 느낌만 알고있다 이번에 SwiftUI + TCA 스터디를 진행하다보니 TCA에서 Macros를 활용하는 경우가 보여서 어떤 기능인지 자세히 알아보려고합니다 🙂 만든 이유우선 Macros의 개발자문서 설명을 보면 '컴파일 타임에 코드를 발생시킨다'고 되어있는데요. 뭐 여기 본문만 보면은 어떤 느낌인지 감이 잘안오는데, 한번 알아보면서 살살 잡아가보자구요Use macros to generate code at compile time좀더 자세한 설명을 보면 개발자들이 코드의 반복을 피하기위해 우리의 코드를 컴파일 타임에 전환해준다고하는데요. 그림을 보면 우리가 작성한 코드가 'Expanded code source'로 확장되는 모습을 볼수있..

자세히보기
[2023년 회고] 3년차 iOS 개발자

2022년도 회고를 하고 넘어갔어야 하는데, 하지못했고 2023년은 여러가지로 변하고 또 신년에는 마음가짐을 새롭게하고 정비하자는 의미에서 올해를 돌아보고 2024년을 계획해보려고 3년차 개발자의 회고를 작성해보려고 합니다 👊🏻 회사원으로서 2024년 1월 25일부로 네이버제트에 입사해서 근무를 한지 만으로 3년이 흐르게 되었다. 그래도 나름 한 회사에 오래 있었고 그동안 많은 변화들이 있었는데 2023년은 가장 많은 변화가 있었던 해였던 것 같다. 조직개편 우선 가장 큰 변화는 아무래도 조직개편이었던 것 같다. 처음에 조직개편을 한다는 소문이 있을 때, iOS 개발자임은 변화가 없으니 나에게는 크게 변화가 없을 것 같다고 느꼈다. 하지만 조직개편이 1년에 2번정도 있었는데 생각과는 달랐다. 나의 업무에..

자세히보기
[iOS] UICollectionViewCompositionalLayout (1)

우선 이번 글에서는 UICollectionView의 Layout을 지정하는 새로운 방법을 알아보려고합니다 구성을 위한 가장 기본적인 컴포넌트와 어떤 구조를 가지고 있는지 정도만 알아보고 다음 글에서 좀 더 구체적인 사용법들을 포스팅해보겠습니다 :) UICollectionViewCompositionalLayout 우선 애플에서는 해당 레이아웃에 대해 유연하고 적응력 있게 우리가 기존에 사용하던 CollectionView의 레이아웃을 구성할 수 있다고 설명하고 있습니다 A layout object that lets you combine items in highly adaptive and flexible visual arrangements. UICollectionViewCompositionalLayout은 한..

자세히보기
[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로 들어가고 사용시에는 해당 참조..

자세히보기
[iOS] RunLoop란

이번에 기능 개발중에 Timer를 받는 RunLoop로 인해 이슈가 있었던 경험이 있어서 다시금 RunLoop를 좀 더 자세히 알아보고자 블로그를 써보려고 합니다 🥲 RunLoop란? RunLoop란 쓰레드와 관련되어있는 인프라의 일부인데, 입력 이벤트(키보드, 터치)들을 처리하기 위한 루프입니다. 그렇다면 RunLoop의 목적은 무엇일까요? 쓰레드가 필요할 때는 일을하게 하고 필요가 없을 때는 쉬게하기 위한 목적이라고 합니다! 아무래도 리소스를 효율적으로 사용하기 위한 기능(?)인 것 같습니다. 해당 RunLoop내에서 들어오는 이벤트들을 처리하고 이후에는 쉬게할 수 있으니 그런 것 같아요. 단, 주의할 점은 RunLoop는 자동으로 관리되는 것이 아니고 우리가 개발할 때, 적절한 RunLoop 내에서..

자세히보기
[Swift] Codable (2)

저번 Codable (1) 글에 이어서 이번에는 좀 더 심화된 사용법에 대해 알아보려고 합니다. [Swift] Codable (1) 블로그에 너무 소홀했는데, 오랜만에 정신을 차리고 다시 포스팅을 진행해보려고 합니다 🥲 오늘은 그동안 스터디를 진행하면서 이 부분은 꼭 따로 공부해서 써봐야지 했던 부분인 Codable에 관 dongminyoon.tistory.com 평소에는 이렇게까지 사용할 수 없을 수 있는데, 분명 알아두면 언젠가는 꼭 쓸일이 있을 것 같아요 🙃 Container란? Container는 우리가 디코딩 & 인코딩을 하기 위한 Context라고 생각하면 될 것 같습니다. 각 기능을 위한 데이터의 구조(?) 정도로 저는 크게 이해했는데, 여기서 저희가 사용할 수 있게 크게 3가지 흐름으로 ..

자세히보기

  • [GIT] Merge vs Rebase 차이

    GIT을 프로젝트를 하며 다들 자주 사용하시는데, 혹시 브랜치를 병합할 때, Merge와 Rebase을 사용해본 경험이 있으신가요⁉️ 저는 주로 Rebase fork해온 프로젝트를 upstream에 맞게 동기화하고 싶을 때 사용했는데요. 정보를 fetch upstream을 통해 가져오고 rebase을 통해서 병합을 했었어요. Merge 얘는 upstream이 없고 origin만 있는 상태에서 Git을 관리할 때 사용했었던 방법이에요. 사용하면서 어떤 상황에 사용하는지 형태만 보고 사용했었지, '왜 이걸 사용하지'는 생각을 해보지 않았던 것 같아요. 그래서 이번 기회에 동작 원리를 알아보고 정리해보려고해요~~ 기회가 된다면 다음 GIT 포스팅은 오픈소스를 관리하는 방식인 fokr한 저장소를 관리하는 방법을..

  • [iOS] 커스텀 UIView - xib이용하기 (2가지 방법)

    iOS 개발을 하다보면 UIView를 커스텀으로 제작해야하는 상황이 많이 생기죠? 그때 다들 어떻게 개발하셨나요. 오늘은 다른 방법들도 존재하겠지만 재사용을 하기 좋고 더욱 직관적으로 뷰를 알아볼 수 있는 방법인 xib를 이용해서 커스텀 뷰를 제작하는 방법을 알아보려고 합니다. 그리고 xib를 이용하는 방법에는 2가지의 방법이 있는데 간단하게 차이도 보도록 하겠습니다 🙃 File Owner에 Custom Class를 적용하는 방법 UIView에 Custom Class를 적용하는 방법 우선 두 가지를 적용하기 전에 동일한 작업을 먼저하겠습니다!! 여기까지는 두 방법 모두 같이 해야하기 때문에, 따라해주세요. 먼저 UIView를 상속받은 sub class를 하나 생성해주세요. 그리고 xib 파일을 하나 선택..

  • [iOS] Version + Build 이용 프로젝트 관리

    공모전에 나가면서 앱을 App Store에 등록하게 되었다. 그 때, 현재 빌드한 프로젝트를 기준으로 Archive하여 App Connect에 제출하고 앱의 버전을 주고 출시하게 된다. 그렇다며 여기서 버전은 무엇이고 Build 번호는 무엇일까요..⁉️ 이렇듯 Xcode의 프로젝트에서 General을 클릭하게 되면 위의 그림과 같이 현재 앱의 버전과 Build가 확인이 가능합니다. Version 일단 버전의 경우에는 현재 앱의 단계..? 정도라고 생각하면 될 것 같습니다. 즉, App Store에서 앱을 다운받을 때, 앱의 버전을 확인할 수 있죠? 얼마나 그 앱이 업데이트 되었는지 척도로 알 수 있습니다. 저 같은 경우에는 이 앱의 버전 관리에서 1.2.2로 현재 측정되어 있죠? 일단 첫번째 자리의 1의..

  • [iOS] Xcode Target이란?

    이번에 새로운 프로젝트를 보고 "어..? 이 프로젝트는 왜 이렇게 타겟이 많이 분리되어 있지..?"라고 느낌이 들었고, 지금까지 iOS 개발을 해오면서 Xcode 프로젝트에 대한 원론적인 이해(?)가 부족했다고 느끼면서 새롭게 공부를 해보았어요.. Target이라고 하면 여러분들이 알게모르게 다들 이런 화면 보셨죠..? 저는 지금 하나의 Target만 있는데, 프로젝트를 생성할 때 UI Test, Unit Test를 포함하셨으면 이 또한 Target이 될 수 있고 또한 빌드를 할 때 각자가 빌드하는 Target이 설정이 되어 있었을거에요.. 근데 그렇다면 Target이란 무엇일까요? 한번 지금부터 제가 공부한 내용을 바탕으로 설명을 해보겠습니다‼️ Xcode Target Target이란 빌드할 프로덕트를..

  • [SWIFT] XML Parser 사용하기

    보통 서버와 통신을 하여 데이터를 받아올 때, JSON 타입을 많이 사용하지만, 아직 공공 데이터의 경우에는 XML의 형식도 있다고해요...‼️ 저도 이번에 프로젝트를 진행하면서 한국 관광 공사의 데이터를 받아와야 했어요....😭 XML Parsing은 처음해보지만 JSON 형식과 크게 다른 건 없는 것 같더라구요. 그럼 XML Parsing을 알아볼까요. XML이란? XML(eXtensible Markup Language) 이렇게 약자를 따와서 XML이라고 한대요..‼️ 뭔가 이름의 뉘앙스만 봤을 때, 마크업 언어를 확대한다(?) 그런 의미인 것 같죠. 그렇다면 마크업 언어는 무엇일까요? 가장 대표적으로 여러분들이 가장 자주 봤을 HTML 언어가 있어요. 이 둘의 공통점은 무엇일까요? 바로 "마크(Ma..

  • [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로 들어가고 사용시에는 해당 참조..

  • [iOS] Custom Framework 만들기

    오늘은 iOS에서 Custom Framework를 만드는 방법에 대해 작성을 해보려고 합니다. 사실 예전에 피드백(?)을 받을 때, Framework 단위로 코드를 작성을 하는 연습을 하면 좋다는 얘기를 들었는데 아..(?) 느낌정도만 왜 좋은지 이해했었는데 몸으로 느끼기 위해서 직접해보겠습니다. 아마 Framewokr 단위로 작성하면 코드 자체가 모듈 단위로 작성되기 때문에, 아무래도 다른 코드와의 Coupling(결합도)가 줄어들고 Cohesion(응집성)은 높아지기 때문이겠죠~ 또한, 코드의 퀄리티 외에도 공부를 해보니 장점이 있는 것 같은데, 이건 다음 포스팅에서 작성해보겠습니다. 오늘은 먼저 어떻게 Custom Framework를 만들 수 있는지 알아보겠습니다 ㅎㅎ Custom Framework..

  • [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..

  • [2021년 회고] 입사 1년차 주니어 개발자

    정말 많은 성장을 할 수 있었던 한 해였고 동시에 아쉬운 부분이 있었기에 이를 기록하고 내년에는 더 성장하기 위해 2021년을 돌아보며 입사 1년차 개발자의 회고를 작성해보려고 합니다 👊 회사생활 2021년 1월 25일 짧다면 짧고 길다면 길었던 취준 생화을 끝내고 개발자로서 취업을해서 회사에 입사하게 되었다. 학생이었던 그 동안의 생활과는 달리 회사에 입사하며 환경이 바뀌었기 때문에, 많은 것들이 바뀌었고 많은 일들이 있었다. 어느 회사가 안바쁠까 싶긴 하지만 신입으로서 많은 업무를 맡아서 진행하고 경험해 볼 수 있는 회사였기에 규모가 큰 프로젝트부터 많은 신규 피쳐들을 개발하는 값진 경험을 하며 많은 성장을 할 수 있었다. 1분기 (1 ~ 3월) 특히 신입으로 처음 입사를 했을 때를 돌아보면 가장 막..

  • [Design Pattern] ReactorKit이란?

    그동안 개발을 하면서 MVVM + RxSwift의 Architecture을 사용해왔었는데요. '또 새로운 것을 해봐야겠지~'하면서 ReactorKit이라는 프레임워크를 접하고 공부해보려고 합니다 ㅎㅎ 그래서 오늘은 ReactorKit을 간단하게 사용해보면서 느낀점과 어떤 Architecture인지를 포스팅해보겠습니다~ ReactorKit이란? 우선 ReactorKit은 제가 느끼기엔 어떤 Design Pattern이라 말하기는 조금 애매한 것 같구요. RxSwift + MVVM을 프레임워크화해서 앱의 Architecture를 통일화해준 프레임워크 인 것 같습니다(?) 이건 제가 생각한 느낌이구요 정확히는 단방향 앱을 위한 프레임워크라고 정의하고 있습니다. 여기서 단방향이라는 키워드가 ReactorKit의..

티스토리
© 2018 TISTORY. All rights reserved.

티스토리툴바