전체 글

TCPTCP(Transmission Control Protocol)은 데이터를 통신하는 약속이라고 할 수 있다. 자세한 문서는 아래에 있지만... 다 읽어보기가 너무 겁난다... RFC 9293: Transmission Control Protocol (TCP)This document specifies the Transmission Control Protocol (TCP). TCP is an important transport-layer protocol in the Internet protocol stack, and it has continuously evolved over decades of use and growth of the Internet. Over this time, a number of cha..
💊 소켓이란?소켓은 네트워크 상의 두 장치 간에 데이터 전송 통로를 마련하는 인터페이스이다. 이렇게 말하면 ?? 가 떠오를 수 있는데 소켓을 단순하게 말하면 문자열 데이터(패킷)을 주고받는 것이다. 소켓은 통신에 필요한 데이터를 보관하는 곳(파일)이라고도 볼 수 있다.  하지만 마구잡이로 보낼수 없으니 어떠한 구조로 보낼지 약속을 한다. 이것을 프로토콜이라고 하는데 소켓은 네트워크 통신에서 TCP와 UDP라는 두 가지 주요 프로토콜을 사용한다. TCP, UDP에 대해서 간단히 요약을 하자면... 연결, 비연결이라고 볼 수 있을 것 같다.TCP (Transmission Control Protocol)데이터 전송을 보장하는 연결 기반 프로토콜이다. 데이터의 순서를 보장하고 패킷 손실이 없기 때문에 데이터가..
· → Taster
📝 공식 문서1. Defining data relationships with enumerations and model classes Defining data relationships with enumerations and model classes | Apple Developer DocumentationCreate relationships for static and dynamic data stored in your app.developer.apple.com2. Filtering and sorting persistent data Filtering and sorting persistent data | Apple Developer DocumentationManage data store presentation ..
WWDC24 영상아래의 영상에 아주 잘 설명이 나와있으므로 참고하면 좋을 것 같다. SwiftUI essentials - WWDC24 - Videos - Apple DeveloperJoin us on a tour of SwiftUI, Apple's declarative user interface framework. Learn essential concepts for building apps in SwiftUI, like...developer.apple.comSwiftUI의 특징SwiftUI는 다음과 같은 세가지 특징이 있다. 선언적, 구성적, 상태 중심의 특징을 가지고 있다. 아래와 같이 원하는 뷰를 행을 추가하거나 제거하는 작업 없이 UI를 만들 수 있다. pets가 업데이트 된다면 자동으로 행이 변경..
갑자기?SwiftUI의 기본중에 기본이라고 할 수 있는 @State, @Binding에 대해서 다시한번 짚어보고 싶어서 포스팅을 남긴다.기본 설명아래와 같이 초 간단한 뷰를 만들어봤다.조금 특이한(?) 점은 아래와 같이 상위 뷰에서 하위 뷰에 count를 전달할 수 있다.struct ContentView: View { @State private var count = 0 var body: some View { List { Section("Content View") { Stepper("\(count)", value: $count) } Section("Counter View..
· → Taster
🤔 문제 상황가장 먼저 수정해야할 것은 모델이라고 느꼈다. 우선 모델이 중복되는 프로퍼티가 너무 많다고 느꼈고, 각 Type이나 Flavor, Color의 경우 저장하는 형식이 너무 비효율적이라고 생각했다.Migration 문제SwiftData를 사용한 앱이었기 때문에 custom Migration이 먼저 잘 되는지 테스트하기 위해서 코드를 작성했다.enum MigrationPlan: SchemaMigrationPlan { static var schemas: [any VersionedSchema.Type] { [SchemaV1.self, SchemaV2.self] } static var stages: [MigrationStage] { [migrateV1t..
· → Taster
현재 앱 구조는 아래와 같다. 이번 변경 목표는 다음과 같다.├── Taster│   ├── Preview Content│   │   └── PreviewContainer.swift│   ├── Resource│   └── Source│   ├── Model│   │   ├── Local│   │   └── SwiftData│   ├── Observable│   ├── Utility│   └── View│   ├── Component│   │   ├── Alert│   │   ├── Button│   │   ├── Confetti│   │   ├── RadarChart│   │..
· → Taster
생각보다 앱을 이용해주시는 분들이 좀 있었고, 정성스럽게 요구사항을 남겨주셨는데... 반영해야지 반영해야지 하면서 벌써 3달이 훌쩍 지나버렸다 🥹 마음에 여유가 없다보니... 라는 핑계를 뒤로하고 이제 진짜 앱을 개선해봐야 겠다는 생각이 들었다.요구사항들요구사항들을 정리하여 기능별로 정리해보면 아래와 같다.별점 평가 세분화 하기데이터 항목 추가하기 (알콜 도수, 피니쉬)검색 기능 추가하기필터 세분화 하기개발 계획기능 추가위의 것들을 추가하려다보니 결국 기본 컴포넌트들이 떠올랐다. 지금 앱이 최대한 기본 컴포넌트를 지키면서 개발했는데 아무래도 커스텀을 디테일하게 하려다보니 기본 컴포넌트들을 활용하지 않았는데 위의 기능들을 부드럽게 추가하려면 결국 기본컴포넌트로 개발하는 것이 최선이라는 생각이 들어 기본 ..
Swift librarian
Swift Library