Apple🍎
-
SwiftUI 데이터 모델에 actor를 사용하면 안되는 이유Apple🍎/SwiftUI 2025. 2. 19. 22:44
Swift Actor 기본 개념Actor는 독립적인 실행 컨텍스트를 가지고 있으며, 이 컨텍스트 안의 데이터는 자동으로 동기화되어 안전하게 관리됩니다. 여러 작업(Task)이 동시에 Actor에 접근하려고 할때, 시스템은 이를 알아서 순차적으로 처리합니다. 마치 줄을 서서 차례를 기다리듯이, 한 번에 하나의 작업(Task)만 Actor의 데이터에 접근할 수 있게 되어 데이터 경장상태(race condition)을 효과적으로 예방할 수 있습니다. actor ChatRepository { private var messages: [Message] = [] func addMessage(_ message: Message) { messages.append(message) } ..
-
일급객체가 뭔데?Apple🍎/Swift 2025. 2. 18. 23:03
프로그래밍을 하다 보면 '일급 객체'라는 단어를 접하곤 하는데요. 이 '일급'이라는 어감과 실제 설명하는 내용 사이에 간극이 있습니다. 그래서 오늘은 어원부터 출발해서 일급객체가 실질적으로 의미하는 것이 뭔지 알아보려고 합니다. 역사적 배경 옛날 옛적 영국에 '크리스토퍼 스트레이치'라는 아저씨가 살고 있었어요. 그 당시 영국에는 본토 출신과 식민지 출신 사이에 차별이 있었고 1등 시민, 2등 시민으로 나누어 법적, 사회적으로 권리를 제한했어요. 일등시민은 투표권, 재산권등의 모든 권리를 가진 사람들이었고, 이등시민은 제한된 권리만 가진 사람들이었지요. 우리 프로그래밍 언어 설계에 푹 빠져 있던 크리스토퍼 아저씨는 프로그래밍 언어에도 이와 같은 차별이 있다는 것을 발견했어요. // 숫자는 변수에 저장할 수..
-
Scene과 Window의 관계Apple🍎/UIKit 2025. 2. 8. 23:20
시각적 요소와 상태 관리 시각적 요소 관리란 화면상에 보이는 모든 UI 컴포넌트들의 레이아웃, 크기, 위치, 계층 구조를 다루는 것을 의미합니다. 예를 들어 버튼의 위치, 텍스트 필드의 크기, 뷰의 계층 구조 등이 여기에 포함됩니다. 상태 관리란 UI의 현재 상황과 관련된 모든 데이터를 다루는 것을 의미합니다. 예를 들어 현재 선택된 탭, 스크롤 위치, 입력중인 텍스트, 네비게이션 스택의 상태 등이 이에 해당됩니다. 또한 UI의 생명주기 또한 상태관리의 일부입니다. UIKit과 SwiftUI의 생명주기 관리앱 생명주기어플리케이션 생명주기란 앱이 실행부터 종료까지의 과정 속에서 상태 변화를 다루는 개념이다. Not Running (실행되지 않음): 앱이 아직 시작되지 않았거나 완전히 종료된 상태를 의..
-
테스크는 뭘까?Apple🍎/Cocurrency 2025. 2. 7. 21:06
카페 체인점을 차려보자프로그램 ( Program ) 가장 먼저, 프로그램은 카페 체인점의 운영 메뉴얼이라고 생각할 수 있습니다. 실제로 점포를 내고 운영중인 상태는 아니지만 새로운 체인점을 차리게 된다면 필요한 목록과 밟아야하는 절차에 대해서 명시해놓은 책자입니다. 아직 실행되지 않아 메모리 위에 올라오지 않고 디스크에만 저장된 정적인 상태입니다. 메뉴얼에는 다음과 같은 내용이 있을 수 있습니다. 카페를 어떻게 운영할지에 대한 전체 계획 ( = 시스템 아키텍쳐 )필요한 장비와 재료 목록 ( = 하드웨어 자원 , 데이터 )직원들이 따라야할 절차와 규칙 ( = 비즈니스 로직 )메뉴 레시피 및 제조 방법 ( = 함수, 메서드 )프로세스 ( Process ) 프로세스는 위 메뉴얼을 바탕으로 실제로 오픈한 ..
-
부동 소수점이란?Apple🍎/Metal 2025. 1. 28. 16:24
컴퓨터가 실수를 표현하는 방식 10진법 우리가 일상적으로 수를 사용할 때는 10진수 체계를 사용합니다. 0부터 9까지 총 10개의 숫자를 사용하며 각 자릿수는 10의 제곱의 형태로 표현합니다. 예를 들어 "2025"라는 숫자는 다음과 같이 이해할 수 있습니다. 2 × 10^3 = 20000 × 10^2 = 02 × 10^1 = 205 × 10^0 = 52000 + 0 + 20 + 5 = 20252진법위와 달리 2진법은 0과 1 단 두개의 숫자를 사용하며 각 자릿수는 2의 제곱의 형태로 표현합니다. 예를 들어 "1101"라는 숫자는 다음과 같이 계산됩니다. 1 × 2^3 = 81 × 2^2 = 40 × 2^1 = 0 1 × 2^0 = 18 + 4 + 0 + 1 = 132진법으로 실수를 표현하는 방법정수..
-
쓰레드는 뭘까?Apple🍎/Cocurrency 2025. 1. 27. 21:36
프로세스의 도입으로 하나의 CPU 코어를 여러 프로그램이 시분할(time-sharing) 방식으로 공유할 수 있게 되었습니다. 운영체제는 각 프로세스에 CPU 시간을 조금씩 할당하여 마치 여러 프로그램이 동시에 실행되는 것처럼 보이게 합니다. 메모장, 웹브라우저, 유튜브를 동시에 실행하는 상황을 예로 들어보겠습니다. 메모장에서 파일 저장과 같은 I/O 작업이 발생하면, 해당 프로세스는 I/O 작업이 완료되기를 기다리는 'blocked' 상태로 전환됩니다. 이때 운영체제는 CPU 자원을 웹브라우저나 유튜브와 같은 다른 실행 가능한('ready') 상태의 프로세스들에게만 할당합니다. 그렇지만 메모장 프로그램이 파일을 디스크에 저장하는 동안에도 사용자는 계속해서 텍스트를 입력하거나, 맞춤법 검사 결과를 확인하..
-
프로세스는 뭘까?Apple🍎/Cocurrency 2025. 1. 27. 00:15
프로그램은 컴퓨터가 특정 작업을 수행하기 위해 작성된 명령어들의 집합입니다. 쉽게 말해 우리가 하드디스크에 저장해둔 실행 파일이라고 할 수 있죠. 예를 들어 워드나 크롬 브라우저 같은 응용프로그램 파일들이 이에 해당합니다. 프로그램은 실행되기 전까지는 그저 디스크에 저장된 정적인 상태로 존재합니다. 반면 프로세스는 실행 중인 프로그램을 의미합니다. 프로그램이 실행되면 운영체제는 해당 프로그램을 메모리에 로드하고, CPU 시간과 같은 시스템 자원을 할당합니다. 이렇게 실행되어 메모리에서 동작하는 상태가 바로 프로세스입니다. 초기 컴퓨터 시스템에서는 한번에 하나의 프로그램만 실행할 수 있었습니다. 프로그램은 CPU, 메모리와 같은 컴퓨터의 모든 자원을 독점적으로 사용했기 때문에 자원 관리는 비교적 단순했습..
-
동시성 이해를 위한 컴퓨터 기본 구조Apple🍎/Cocurrency 2025. 1. 26. 20:01
컴퓨터란 데이터들을 정해진 규칙에 따라 연산을 수행하는 장치 입니다. 요리에 한번 비유를 해볼까요? 데이터: 요리의 재료들이 데이터에 해당합니다. 예를 들어 계란, 설탕, 밀가루와 같은 실제 재료들은 컴퓨터가 처리하는 원시 데이터와 같습니다.재료들은 그 자체로는 아무 의미가 없지만, 정해진 규칙에 따라 처리되면 의미 있는 결과물이 됩니다. 정해진 규칙: 레시피가 바로 정해진 규칙에 해당합니다. 레시피는 "계란을 3개 넣고, 설탕 2스푼을 넣은 뒤 섞는다"와 같이 재료를 어떤 순서로, 어떻게 처리해야 하는지 정확히 명시합니다. 이는 컴퓨터 프로그램이 데이터를 어떻게 처리할지 정의하는 것과 같습니다. 연산: 실제 요리 과정이 연산에 해당합니다.재료를 섞고, 반죽하고, 굽는 등의 물리적 행위들은 컴퓨터가 수행..