본문 바로가기

전체 글

(152)
[디자인 패턴] 3. 데코레이터 패턴(Decorator Pattern) 데코레이터 패턴(Decorator Pattern)실행 중에 객체를 직접 수정하지 않고 동적으로 기능을 확장시킬 수 있는 패턴이다.  커피 전문점인 스타버즈 커피는 주문 시스템을 가지고 있었는데, 주문 시스템의 클래스는 아래와 같이 구성되어 있었습니다.   그런데 점점 사업이 확장되면서 수많은 커피 종류와 더불어 휘핑 크림, 우유 등의 첨가물을 추가한 커피를 출시하게 되니, 같은 커피여도 첨가물 종류나 갯수마다 다른 가격을 책정해야 했고, 결국 커피마다, 첨가물에 따라 다르게 완성된 커피 클래스들을 별도로 만들게 되어 수많은 클래스들이 생겨나게 되어 클래스 관리가 너무 어렵게 되었습니다. 그래서 스타버즈는 상속을 사용해서 이 문제를 해결해보려 합니다.   이제 각 서브 클래스(HouseBlend, ...)..
[디자인 패턴] 2. 옵저버 패턴(Observer Pattern) 옵저버 패턴(Observer Pattern)한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용을 갱신해주는 패턴으로써, 일대다 의존성을 정의하는 패턴이다. 어느 한 객체가 다른 객체의 상태를 구독해야 하는 경우 효과적이다. 기상 스테이션 시스템 구축 프로젝트 Weather-O-Rama라는 업체로부터 날씨 정보를 표시하는 디스플레이 애플리케이션을 일을 수주하게 되었다.Weather-O-Rama에서 요구하는 기능은 아래와 같다. 실시간으로 변화하는 날씨 정보(상태, 온도, 습도, 기압 등)를 표시하는 기능이 있어야 함추후 이러한 디스플레이 기능을 다른 개발자들도 추가할 수 있어야 함 기본적으로 Weather-O-Rama는 WeatherData라는 클래스를 제공해주고 있으며,..
[디자인 패턴] 1. 전략 패턴(Strategy Pattern) 전략/정책 패턴(Strategy Pattern)객체의 행위를 전략 또는 정책, 즉 상황에 따라 바꿔 끼워서 사용할 수 있도록 행위를 캡슐화하는 설계 패턴이다. 객체의 행위가 추후 변경되거나 추가될 가능성이 많을 때 효과적이다.오리 시뮬레이션 게임, SimUduck   어느 한 게임 회사에서 오리를 시뮬레이션 하는 게임을 개발 중이었는데, 다른 게임 개발사와 차별화 시키기 위해서 기존 오리들 객체 행위에 날아다니는 행위를 추가하기로 결정했다.   MarllarDuck, RedheadDuck과 같은 모든 구상 클래스들에 fly()를 추가하는 건 효율적이지 않으니, 상속의 특징을 활용해서 부모 클래스인 Duck 클래스에 fly()를 추가하면, 아주 효율적으로 모든 오리 객체들이 날아다니는 행위를 할 수 있을 ..
프런트엔드 성능 최적화 가이드 React와 Vue를 사용해 프런트엔드를 개발하고 있지만, 코드를 어떻게 하면 잘 설계하고 개발할 수 있을까에만 집중해왔다. 하지만 사용자는 내가 작성한 코드를 볼 수 없을 뿐더러 관심도 없을 것이다.. 최근 B2C 서비스를 개발하면서 자연스레 사용자 경험에 대해 좀 더 고민해보게 되었는데, 웹 사이트의 페이지 로딩 시간을 단축시키거나 최대한 빨리 렌더링을 해서 사용자에게 보여주는 것이 개발자가 사용자에게 직접 와닿게 만족시킬 수 있는 방법이라고 생각이 들었고, 웹 사이트를 최적화하는 방법을 공부하려던 중 이 책을 알게 되었다. 그동안 미루고 지나쳐왔던 크롬 개발자 도구의 Lighthouse라던지 CSS 하드웨어 가속 프로퍼티 등 몰랐던 도구들과 스킬들을 자세히 알게 되었고, 프런트엔드 최적화 관련 인사..
WebRTC로 1:1 영상 통화 구현 배경서비스 요구사항에 영상 통화 기능이 추가되어 개발해야 했습니다. 별도의 라이브러리 없이 직접 구현할 수 있는 방법을 찾던 중 WebRTC라는 API를 알게 되었고, 추후 요구사항 변경이나 확장성을 고려한다면 WebRTC가 무엇인지, 그리고 관련 구성요소들이 어떤 게 있는지 정확히 알 필요가 있다고 생각해 공부한 내용을 기록하게 되었습니다.목차WebRTC란WebRTC로 결정한 이유WebRTC의 장단점WebRTC는 어떻게 동작할까Peer 연결Signaling ServerSDPICESTUN 서버TURN 서버무료 STUN / TURN 서버 URL 목록구현 WebRTC란WebRTC(Web Real-Time Commnication)는 Apple, Google, Microsoft, Mozila, Opera에서 지..
Push Notification 권한 허용 팝업이 뜨지 않을 때 개발 환경 Xcode 15 Target iOS: 12.1 테스트 기기: iOS 17 문제 앱을 빌드하고 실행하면 이전엔 푸시 허용 팝업이 잘 떴었으나, 어느 순간부터 안 뜨기 시작했고, device token을 가져오지 못함. Appdelegate.swfit func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { ... UNUserNotificationCenter.current().requestAuthorization(options:[.badge, .alert, .sound]){ (granted, error)..
CocoaPods 설치 및 설정 Cocoapods? CocoaPods 공식 문서에 따르면 아래와 같이 소개하고 있습니다. CocoaPods is a dependency manager for Swift and Objective-C Cocoa projects. It has over 97 thousand libraries and is used in over 3 million apps. CocoaPods can help you scale your projects elegantly. CocoaPods는 Swift와 Objective-C Cocoa 프로젝트를 위한 의존성 관리자입니다. CocoaPods는 97,000의 라이브러리를 보유하고 있으며, 300만이 넘는 앱들이 이를 사용하고 있습니다. CocoaPods는 당신의 프로젝트의 규모를 키우는..
2023 AWS Industry Week 날짜: 2023-10-11(수) 장소: 삼성동 코엑스 강연 세션들 강연 내용 1. 금융 및 핀테크: KB국민은행 클라우드 자원 / 비용 최적화 여정 2. 온프렘 -> 클라우드로 전환하기가 까다롭기 때문에 클라우드 전담팀 구성 1. 자격증 취득 2. 아키텍쳐를 변경하여 비용을 줄일 수 있었음 3. 마이데이터 등의 서비스 30개가 클라우드 사용 중 4. 비용이 증가하다가 하향 안정화됨, 어떻게? 1. 처음 클라우드로 구축할 때 오버사이징(규모를 너무 크게 잡음)하는 경향이 있음 1. 실제론 접속량이 많지 않음 2. 점진적으로 다운사이징 2. EKS 파드 축소 3. S3 1. 백업/불필요 파일 삭제 2. s3 종류 변경 4. 로그/모니터링 최소화 5. 동일 스펙 최신 세대 자원 사용 6. 요일별 가동 시간 조..