번호 : 005, 작성일자: 2025-02-10

2025.02.03 ~ 2025.02.09

🤝 협업 관련 용어


처음 들어본 협업 관련 용어에 대해서 정리해봤다.

점유인증 vs 본인인증

출처 - 본인인증과 점유인증, 두 가지 방식의 특징과 차이

ICE 평가

의사결정 프레임 중 하나이고 빠르고 효과적인 것이 특징이다.

ICE (Impact Confidence Ease)

출처 - 겁나 빠른 의사 결정 - ICE 평가

🌏 Design Pattern In Swift


Design-Patterns-In-Swift라는 Swift 언어를 활용하여 디자인패턴을 설명해주는 오픈소스가 있다.

책임연쇄패턴 기존 예제

protocol Withdrawing {
    func withdraw(amount: Int) -> Bool
}

final class MoneyPile: Withdrawing {

    let value: Int
    var quantity: Int
    var next: Withdrawing?

    init(value: Int, quantity: Int, next: Withdrawing?) {
        self.value = value
        self.quantity = quantity
        self.next = next
    }

    func withdraw(amount: Int) -> Bool {

        var amount = amount

        func canTakeSomeBill(want: Int) -> Bool {
            return (want / self.value) > 0
        }

        var quantity = self.quantity

        while canTakeSomeBill(want: amount) {

            if quantity == 0 {
                break
            }

            amount -= self.value
            quantity -= 1
        }

        guard amount > 0 else {
            return true
        }

        if let next {
            return next.withdraw(amount: amount)
        }

        return false
    }
}

final class ATM: Withdrawing {

    private var hundred: Withdrawing
    private var fifty: Withdrawing
    private var twenty: Withdrawing
    private var ten: Withdrawing

    private var startPile: Withdrawing {
        return self.hundred
    }

    init(hundred: Withdrawing,
           fifty: Withdrawing,
          twenty: Withdrawing,
             ten: Withdrawing) {

        self.hundred = hundred
        self.fifty = fifty
        self.twenty = twenty
        self.ten = ten
    }

    func withdraw(amount: Int) -> Bool {
        return startPile.withdraw(amount: amount)
    }
}

디자인패턴을 다시 확인해보기 위해 오랜만에 보는데 책임 연쇄(Chain of Responsibility) 예제에서 ATM이라는 객체가 확장성측면에서 부족하다고 느껴 프로퍼티를 배열로 받도록 수정했다.

바꾸고 나서 장점은 ATM 객체가 확장성이 훨씬 올라갔다고 생각한다.

ATM 객체가 크게 책임연쇄패턴의 목적과는 관계가 없지만 책임연쇄패턴의 장점 중 하나인 확장성이 있으므로 사용하는 객체도 확장성이 있다면 좋을 것 같아서 기여를 했다.

추가적으로, 과거 프로토타입패턴 기여한 내역이 있는데 현재 이메일과 달라서 오픈소스에서도 커밋내역을 변경하는 방법들을 찾아봤는데 git rebase, git-filter-repo, cherry-pick, format-path 모두 시도해보았지만 git rebase, git-filter-repo는 과거에 커밋에 영향을 줘서 오픈소스에는 적합하지 않은 것 같고 cherry-pick, format-path는 충돌파일이 많았다.

호기심에 여러 방법을 시도해보았지만 오픈소스에서는 변경하지 않는 것이 가장 적합한 것 같다.

🙋🏻‍♂️ 기타 사항


  1. Kite 라는 Code Assistant 서비스가 있었는데 실패한 이유에 대해 작성한 글이 있었는데 인상적이였다.
  2. Xcode 16에서 Playground를 실행할 때 LLDB RPC Server Crash Playground 에러가 발생한다면 Swift Version이 6로 되어있는지 확인하면 된다.
  3. KavSoft라는 SwiftUI 강의 채널을 보며 깃허브에 저장소를 만들었고 21~28강까지 정주행했다.
  4. 안드로이드 관련 꿀팁
    1. 앱에서 강제로 볼륨이 올라가서 소리가 날 때 방해모드를 설정하면 소리가 나지 않는다.
    2. 안드로이드 스튜디오에서 Cmd + Shift + F 를 사용하면 전체검색이 가능하다.
  5. 실서비스 앱에서 오류가 발생했는데 Elastic Search를 이용하여 로그를 파악하면 오류 경로를 파악하여 수정했다.
  6. Flutter REST API 통신도 하는 회원가입, 로그인 단계를 개발해보고 있다.