- Swift
- iTerm
- IOS
- 앱개발
- LanguageGuide
- Keychain
- UILabel
- iPad
- Split View
- DiffableDataSource
- orthogonalScrollingBehavior
- github
- UIKit
- Accessibility
- Combine+UIKit
- 애플사이다
- 전달인자 레이블
- GOF
- 야곰아카데미
- 디자인패턴
- 애플
- Apple
- CollectionView
- WWDC
- Human Interface Guidelines
- HIG
- lineBreakMode
- TOSS
- 스위프트
- lineBreakStrategy
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Today
- Total
목록프로그래밍 철학 (11)
애플사이다의 iOS 개발 일지
GoF 디자인 패턴 중 하나인 Prototype 패턴을 정리했다. - Ref : 도서 , Alexander Shvets 저 문제 상황 객체 A가 있고, 해당 객체의 복사본을 만들고 싶은 상황이다. 이때 새로운 객체 인스턴스를 생성하고, 원본 (객체 A)의 프로퍼티 값들을 새 객체에 모두 복사하는 방법이 있다. 문제점 : 객체의 프로퍼티 중 일부가 비공개라면 외부에서 접근할 수 없다. 또한 복사하려면 원본을 알아야 하므로 해당 객체에 대한 의존성이 생긴다. 패턴 설명 요약 : 의존성 없이 객체를 복사하는 생성 패턴이다. Prototype = 시제품, 시험용으로 만들어 본 샘플 제품 실제 산업의 프로토타입 : 대량 생산 이전에 테스트용으로 만드는 샘플 제품 프로그래밍의 프로토타입 : 세포 분열과 비슷함. ‘..
GoF 디자인 패턴 중 하나인 Command 패턴을 정리했다. - Ref : 도서 , Alexander Shvets 저 문제 상황 Text Editor 프로그램을 개발하는 중이며, 텍스트를 저장할 Save Button을 만들었다. Button을 상속받아 자식클래스로 Save Button을 구현한 뒤, save 기능을 추가했다. 그런데 Save Button 뿐만 아니라 Ctrl+C 단축키로도 복사를 하고 싶고, 텍스트와 서식을 동시에 복사할 Super Save Button을 추가하고 싶어졌다. 기존 방식으로 하면 버튼/단축키에 중복 코드가 생기고, 자식클래스 종류가 너무 많아질 수 있다는 문제점이 있다. 패턴 설명 Command의 사전적 정의는 “명령, 명령어”이다. Command 패턴에서는 실행할 작업을..
toss의 디자인 컨퍼런스 SIMPLICITY23에 이어 개발자 컨퍼런스 SLASH23가 진행됐다. SLASH23은 토스 개발자들의 기술적 고민과 성취를 공유하는 자리이며, 총 24개 세션으로 구성되어 있다. 그중 클라이언트 개발자가 눈여겨 봐야 할 세션은 3가지가 있다. 1. Rally로 3분 만에 애니메이션 완성하기 2. 레고처럼 조립하는 토스 앱 3. 누구나 쓸 수 있는 접근성 높은 토스 만들기 하나씩 간단히 정리해 봤다. 나중에 언젠가... 시간이 나면 다른 세션도 정리해보고 싶다. 🙄 1. Rally로 3분 만에 애니메이션 완성하기 저번에 포스팅했던 SIMPLICITY23 리뷰에서 첫 번째로 다뤘던 인터렉션, 꼭 넣어야 해요? 세션과 연결되는 내용이다. 사실 대부분의 내용을 SIMPLICITY2..
toss SIMPLICITY23의 세션을 온라인으로 구경하고 재밌었던 4개 세션을 가져와 봤다. SIMPLICITY23은 토스의 2023년 디자인 컨퍼런스이다. 토스가 UX 기획에 가장 중요하게 생각하는 원칙인 단순함 (Simplicity)을 따서 네이밍했다고 한다. 크게 5개 카테고리, 총 23개 세션으로 구성되어 있다. 개발자가 디자인 컨퍼런스에 왜 참여해야 할까? 디자인팀의 경험과 노하우를 공유하는 자리인데, 개발자가 참여할 필요가 있을까? 개인적으로 개발자는 디자이너와 긴밀하게 협업하는 위치이므로 디자이너가 마주하는 어려움과 고민을 이해하는 것이 중요하다고 생각한다. 그리고 주로 프로덕트 디자이너에 대한 이야기지만 개발자에게도 도움되는 내용도 많다. 장애물을 만났을 때 어떤 마인드셋을 가졌는지, ..
문제 상황 현재 로그인한 사용자의 id, nickname, email 등의 User Data는 어떻게 관리하는 게 좋을까? 앱을 사용하는 동안 로그인 상태가 수시로 변경될 수 있으므로 여러 화면에서 접근할 수 있어야 한다. 예를 들어 앱을 최초실행 했을 때 로그인화면에서 sign in 할 수 있고, 로그아웃 화면에서 sign out 할 수 있고, 다시 비로그인 상태에서 좋아요 버튼을 눌렀을 때 modal로 띄워지는 로그인 화면에서 sign in 할 수도 있다. 이때 여러 화면에서 어떠한 시점에 접근하더라도 로그인 상태는 동일해야 한다. 따라서 공유 리소스 형태로 관리하고 싶다. 위 상황에서 Singleton 패턴이 해결책이 될 수 있다. 패턴 설명 클래스의 인스턴스를 1개만 만들고, 이 인스턴스에 대해 ..
문제 상황 여러 개의 프로퍼티, 중첩 타입 등을 지정해야 하므로 초기화 과정이 복잡한 객체가 존재한다. 이때 모든 가능한 매개변수를 포함하는 거대한 생성자를 만들게 되는데, 가독성이 떨어지고, 사용하지 않는 매개변수가 존재하므로 비효율적이라는 문제가 있다. 패턴 설명 복잡한 객체를 단계별로 생성하는 패턴이다. 객체를 생성하는 과정에서 해당 객체에 접근 불가하도록 막는다. Builder를 통해 객체를 초기화하고, 외부에서 프로퍼티값을 메서드 주입받아 객체를 완성한다. Director를 선택적으로 활용할 수 있다. Build 관련 메서드들의 실행 순서를 정의하는 역할을 담당한다. 객체를 종류별로 구분하여 생성 과정을 분기처리하고자 할 때 활용하면 좋다. 장점 복잡한 객체를 단계적으로 생성하거나, 생성 단계를..
GoF 디자인 패턴 중 하나인 Abstract Factory 패턴을 정리했다. 이 패턴은 예시코드부터 보는 것을 추천한다. - Ref : 도서 , Alexander Shvets 저 문제 상황 가구 판매 앱 개발과정에서 세트 제품군 (a family of reloated products)이 있다. (ex. 의자, 소파, 커피테이블) 또한 해당 세트 제품군에는 여러 스타일의 변형 (variants)이 있다. (ex. 아르데코, 빅토리안, 현대식) 고객이 가구를 주문하면, 동일한 스타일로 가구세트를 통일해야 하는 상황이다. 또한 새로운 제품 (새로운 스타일)이 자주 추가되므로 매번 기존 코드를 수정하는 번거로움을 피하고 싶다. 패턴 설명 이 패턴은 말로 설명하면 복잡한데, 예시를 보면 매우 쉽다. 😞 요약 :..
GoF 디자인 패턴 중 하나인 Factory Method 패턴을 정리했다. - Ref : 도서 , Alexander Shvets 저 문제 상황 물류관리 앱을 개발하는 과정에서 먼저 Truck (트럭) 운송 처리 로직을 만들었는데, 얼마 뒤 Ship (선박) 등 추가적인 운송수단 처리가 필요하게 됐다. 대부분의 코드가 기존의 Truck 클래스에 결합되어 있어 코드 재사용성이 떨어지는 문제가 있는 상황이다. 패턴 설명 요약 : 부모클래스에서 객체 생성 인터페이스를 제공하며, 동시에 자식클래스가 객체의 유형을 변경하여 생성 가능하도록 하는 패턴이다. Product, Creator 역할이 필요하다. 1. Product 일반적인 객체 생성 코드를 부모클래스의 팩토리 메서드 내부에 배치한다. 팩토리 메서드는 생성한..