- Human Interface Guidelines
- WWDC
- Keychain
- 애플
- 애플사이다
- Split View
- Apple
- Swift
- iPad
- UIKit
- HIG
- Accessibility
- 디자인패턴
- CollectionView
- GOF
- iTerm
- LanguageGuide
- lineBreakStrategy
- lineBreakMode
- 앱개발
- Combine+UIKit
- 스위프트
- IOS
- TOSS
- 야곰아카데미
- 전달인자 레이블
- orthogonalScrollingBehavior
- DiffableDataSource
- github
- UILabel
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Today
- Total
목록비전공자용 노력/개발 툴 (9)
애플사이다의 iOS 개발 일지
Swift 문법을 배우는 것과 RxSwift를 배우는 것은 큰 차이가 있었다. Swift는 처음부터 차근차근 배워야 하지만 RxSwift는 활용 방식이나 관련된 Operator가 너무 다양해서 필요한 것을 잘 추려서 써야한다. 그래서 Rx를 배우는 데 많은 시행착오가 있었다. ViewModel-ViewController를 binding 하는 기초 예제를 정리해보려고 한다. 언젠가는.. 겨우 Observable, BehaviorSubject, PublishSubject를 잘 쓰게 된 이후로는 이것만 썼다. 그런데 Rx의 기능을 충분히 활용하고 있지 못한 것 같아서 그 다음 단계로 UI를 안전하게 처리하기 위한 Bind, Driver, Relay를 배웠는데 매우 유용했다. 이 내용을 간단히 소개해보려고 한다..
맥북의 기본 화면녹화 기능을 사용하면, 소리가 포함되지 않는 문제가 있었다. iShowUInstatnt는 유료화됐고, SoundFlower는 M1/Big Sur 이후 비정상 작동해서 BlackHole을 사용하게 됐다. 다중출력기기 설정이 필요한데 매우 쉽다. 1. BlackHole 설치 Existential Audio에서 최상단의 BlackHole 2ch 버전을 다운받으면 된다. 이메일 인증만 하면 무료로 사용 가능하다. 이때 사운드 설정에서 출력을 BlackHole 2ch로 설정하면, 화면녹화 시 소리가 포함된다. 하지만 스피커 출력이 되지 않아서 화면녹화 도중에 소리를 들을 수 없다. 그래서 아래의 다중출력기기 설정이 필요하다. 2. 다중출력기기 설정 오디오 MIDI 설정에서 다중출력기기 설정을 해야..
주니어 개발자 면접을 보면서 이미지 처리에 대한 질문을 꽤 많이 받았다. 앱 출시 프로젝트 때는 서버에서 자체적으로 적당한 크기의 이미지를 저장하도록 수작업..했었기 때문에 대응이 어려웠다.. -> 현업에서도 이미지를 서버에서 일괄 관리하는 게 이상적이라고 한다. 즉, 서버가 특정 화면에 맞는 크기의 이미지를 미리 알아뒀다가 보내주는 방식이다. 클라이언트 단의 로직을 최소화할 수 있고, 서비스 운영 측면에서 보다 안정적이다. 현업에서는 대용량 이미지 처리, 특히 캐싱을 위해 Kingfisher 라이브러리를 쓴다고 한다. Kingfisher의 주요 기능은 URL을 넣으면 비동기로 이미지를 다운로드하고 캐싱 처리해주는 것이다. 이번 기회에 Kingfisher 소스코드를 뜯어보자. 공식문서로 Kingfishe..
개발자가 설정한 특정 상황이 발생하면 자동으로 실행할 동작을 미리 정해두는 기능이 있다. 예를 들어 특정 branch에 merge 또는 PR을 요청했을 때 테스트가 실행되도록 하는 것이다. Git Flow 기능과 함께 사용하면 더욱 유용하다. *Git Flow 설명은 지난 포스트 참고 - [Git] GitFlow로 브랜치 관리하기 이렇게 테스트 코드를 실행하거나, 새로운 버전을 release 하기 전에 TestFlight를 실행할 수 있는데 이러한 자동화 기능을 CI/CD라고 한다. CI/CD를 위한 툴은 Jenkins, fastlane, Buildkite 등 다양한데, 오늘은 GitHub Action을 알아보자. CI/CD란? CI : Continuous Integration (지속적 통합) CD :..
SwiftLint란? SwiftLint는 라이브러리이다. 이걸 설치하면 Xcode에서 코딩 컨벤션 관련 오류를 알아서 잡아내는 맞춤법 검사기 기능을 한다. SwiftLint 설치 방법은? SwiftLint를 설치하는 방법은 크게 CocoaPods를 사용할 건지, 사용하지 않을 건지로 나뉜다. 개인적으로 나는 최근 CocoaPods보다 SPM (Swift Package Manager)을 더 활발하게 사용하고 있다. 별도로 pod install을 할 필요가 없고, 코드리뷰를 할 때 리뷰어도 추가 작업 없이 코드를 확인할 수 있다는 장점이 너무 크기 때문이다. *그래도 CocoaPods으로 설치하고 싶다면 Zeddios님 링크를 참고 두 방법 모두 설치과정은 SwiftLint 공식문서에 다 나와있으므로 이걸 ..
부트캠프에서는 프로젝트를 진행할 때 STEP별 명세서를 받았다. 그래서 자연스레 브랜치 이름도 step1, step2... 등으로 네이밍했었다. 근데 직접 앱을 기획해보니 브랜치 이름을 어떻게 정할지 고민이 됐다. 'Git 브랜치 이름'을 키워드로 검색했더니, 온통 "Git Flow 전략"에 대한 자료만 나왔다. Git Flow가 뭘까? 브랜치 모델 (Branch Model)이란 브랜치 이름, 브랜치별 임무를 규정한 것이다. 이 브랜치 모델 중 가장 유명한 게 Vincent Driessen가 만든 Git Flow이다. 프로젝트를 효율적으로 관리하기 위해 master, develop, feature, release, hotfix 5개 종류로 브랜치를 구분한다. 당장 위의 구조도를 모두 이해할 필요는 없다...
안녕하세요. 애플 사이다입니다. 어떻게 하면 개발 프로젝트를 효율적으로 관리할 수 있을까요? 프로젝트 규모가 커질수록 진행 단계에 따라 Commit을 구분하고, 진행현황 및 Work flow를 파악하는 등 프로젝트 관리 툴이 필요해집니다. 이때 GitHub에서 만들어 둔 Issues/Milestones/Projects 기능을 사용하면 좋습니다. 별도의 프로젝트 관리 프로그램이 필요 없을 정도로 유용한 것 같아요. 각 기능과 활용 방법에 대해 알아보겠습니다. 본문의 예시 자료는 이 GitHub 링크를 참고해주세요. 요약 Issue : 작업단계별 task 및 sub-task를 관리함 (ex. STEP-1, STEP-2, STEP-2 Refactoring) Label : Issue에 Label을 추가하여 Is..
안녕하세요. 애플사이다입니다. Git commit message style guide에 대해 읽다가 "subject line (commit title)은 50자 이내, body는 72자 이내"라는 규칙을 배웠어요. *Karma Style을 흔히 사용합니다. 그런데 터미널에서 작성한 commit message가 몇 자 인지 매번 직접 세어봐야 할까요? ✅ "커밋 템플릿"을 통해 쉽게 확인이 가능합니다. 커밋 템플릿 설정 방법을 간단히 알아보겠습니다. 커밋 템플릿, 적용하면 어떻게 되나? 터미널에서 git commit을 입력하면, 템플릿 내용을 확인하면서 커밋 메시지를 작성할 수 있다. 글자 수도 확인하고, commit type 등 자주 쓰는 키워드도 참고할 수 있다. 커밋 메시지를 입력할 때는 i (ins..