분류 전체보기
-
SOLID한 코드를 써보자Apple🍎/Architecture pattern 2024. 7. 25. 22:36
단일 책임 원칙 (SRP)class AccountManager { func createAccount(for user: User) -> Account { /* ... */ } func closeAccount(_ account: Account) { /* ... */ }}class TransactionProcessor { func deposit(amount: Decimal, to account: Account) { /* ... */ } func withdraw(amount: Decimal, from account: Account) throws { /* ... */ }}class AuthenticationService { func login(username: String, passwo..
-
SwiftUI가 선언형이라는게 무슨말일까?Apple🍎/SwiftUI 2024. 6. 11. 11:30
명령형 프로그래밍과 선언형 프로그래밍명령형 프로그래밍 (Imperative Programming)명령형 프로그래밍은 컴퓨터 프로그램을 상태와 상태 변화를 통해 기술하는 방식입니다. 프로그래머는 프로그램이 수행할 작업들을 순서대로 명령어로 기술하며, 각 명령어는 프로그램의 상태를 변경합니다. 대부분의 전통적인 프로그래밍 언어(C, C++, Java, Python 등)는 명령형 패러다임을 따릅니다.특징절차 지향적: 작업을 수행하는 구체적인 절차를 명시합니다.상태 관리: 프로그램의 상태를 변경하는 명령어를 통해 작업을 수행합니다.제어 구조: 반복문, 조건문, 함수 호출 등을 사용하여 프로그램의 흐름을 제어합니다.직관적 이해: 프로그램의 흐름을 직접 기술하므로 이해하기 쉽습니다.예제: Python으로 리스트의 ..
-
UIKit과 SwiftUI의 생명주기 관리Apple🍎 2024. 6. 7. 14:18
앱 생명주기어플리케이션 생명주기란 앱이 실행부터 종료까지의 과정 속에서 상태 변화를 다루는 개념이다. Not Running (실행되지 않음): 앱이 아직 시작되지 않았거나 완전히 종료된 상태를 의미Inactive (비활성 상태): 앱이 실행중이지만 이벤트를 받지 않는 상태(사용자와의 상호작용이 없는 상태)Launch Screen이 보여지는 상태 (앱이 실행되고 있지만 아직 어떤 상호작용도 불가능한 상태)걸려온 전화를 눌러 전체화면으로 바꾼 상태 잠금화면을 내린 상태제어 센터를 열었을 때Active (활성 상태): 앱이 실행중이며 이벤트를 받는 상태 (사용자와의 상호작용이 가능한 상태)전화가 왔지만 아직 배너 상태에서는 앱과의 상호작용이 가능한 상태임Background ( 백그라운드 상태): 앱이 화면에 ..
-
차근 차근 살펴보는 GitProgramming🧑💻/Git & Github 2024. 4. 28. 16:41
변경사항을 추적하자프로젝트를 진행해 나가며 코드의 양이 점점 많아 지면어느 순간 내가 무언가를 바꿨는데 뭘 바꿨는지 기억이 나지 않는 상황이 벌어집니다. 이와 관련된 상황들을 예방하기 위해서는 버전 관리를 해야합니다.그리고 git은 각 ‘커밋’(코드 덩어리)을 세이브 포인트로 하여 , 이들을 비교하며 무엇이 추가되었고 빠졌는지 변경점을 쉽게 알 수 있도록 도와주는 친구 입니다. 예를 들어 첫번째 커밋(코드 덩어리)에서는 파란색으로 보이는 사과 아이콘을 빨간색으로 바꾼다면 Git은 이 변경사항을 인지하고 이 변경점들을 바탕으로 새로운 커밋(코드덩어리)를 만들 수 있게 해줍니다. 개인이나 팀 내부에서 가지고 있는 룰에 따라 기준에 충족하는 코드의 변경사항이 생기는 경우 이를 커밋(별도의 커밋으로 만들어 놓으..
-
질문 방향의 전환Apple Developer Academy @ POSTECH🍍 2024. 4. 13. 23:52
낯선 바람과의 조우애플 디벨로퍼 아카데미 덕분에 처음 발을 들이민 도시, 포항 호미곶에서 마주한 바람은 '남쪽이니까 더 따뜻하지 않을 까?'라는 생각을 단박에 날려버렸다. 군청색의 파도가 밀려들어 올 때마다 피어오르는 하얀색 기포들낯선 두려움에 뭍은 작은 설렘들과 같이 터져 나왔다. 전주곡: 슬며시 열어젖힌 귀 아카데미 첫날, 학창 시절 새 학기, 친구들과 처음 얼굴을 주고받은 날과는 사뭇 다른 느낌이었다. 같은 나이, 같은 머리, 같은 교복으로 만든 필름이 묶어 주었던 색과 달리 어색한 공기가 모두를 짓 누르는 가운데에서도 새어 나온 각자의 색들은 모두 빛깔이 달랐다. 살면서 이렇게 다양한 사람들을 이렇게 많이 만난 것은 처음이었다. 관성이 짙은 나에게 조금 힘에 부치기도 했지만 정말 좋은 기회이..
-
CS50 - SearchAI🤖/CS50 2024. 3. 3. 15:58
찾다. 인간은 살아가면서 다양한 문제 상황을 마주하고 이를 해결하기 위한 방법들을 ‘찾는’ 과정들로 삶은 채워진다. 게임속 미로에서 출구를 ‘찾을’ 수도 있고 현실 세계에서 목적지까지 가는 길을 ‘찾을’ 수도 있다. Search ‘찾다’ 라는 행위를 분석해보자. 첫번째로 일단은 어떤 행동을 하고자 하는 주체가 존재해야한다. 게임속에서는 게임 캐릭터가 현실에서는 사람이 될것이다. 두번째 주체는 어떠한 목적을 가지고 있어야한다. 게임속에서는 미로를 통과하자, 현실에서는 목적지에 도착하자 라는 목적이 있을 것이다. 세번째 주체를 둘러싸고 있는 환경은 목적 달성을 방해하는 장애요소가 된다. 게임속에서는 이리저리 가로막고 있는 벽들이, 현실에서는 수많은 도로와 교통신호등이 될 것이다. 네번째 주체는 환경 속에서 ..
-
Core Data Context 이해와 활용 - 심화Apple🍎/CoreData 2024. 1. 15. 16:54
그냥 Store에 저장하지 뭐하러 Context에다가 임시로 저장을 하냐? 데이터를 저장하거나 변경할 때 Store에 바로 하지 않고 Context에 먼저 임시로 해본 뒤에 save를 호출해야 해당 내용들이 Store에 반영된다. 뭐하러 Context를 Scratch Pad로 사용을 할까? 그냥 바로 Store에다가 꽂아버리면 안되는 이유가 뭘까? Core Data는 그냥 데이터만 저장하는 게 아니다. 앱의 로직과 맞물려서 돌아가다가 의도한 로직에 맞지 않으면 해당 내용은 Store에 반영하면 안된다. 따라서 앱이 돌아가면서 데이터의 변경이 일어날 때 이것들을 Context에 임시로 저장해 놓았다가 모든 로직에 오류가 없는 것을 확인한 이후에서야 Store에 반영한다. Multiple Main Cont..