테크
-
[네트워크] Application Layer테크 2024. 3. 21. 18:59
최상단 레이어인 application layer에 대해서 정리하겠습니다. Application Layer Application layer에서는 network application이 실행되고 있습니다. ※ Network Application: OS 위에서 실행되는 프로세스로, 다른 컴퓨터에 메시지를 주고 받을 수 있습니다. 사용자들은 보통 application layer에서 앱을 만드는데요. 예: 클라이언트/서버 클라이언트 프로세스(앱)와 서버 프로세스(앱) 간의 inter-process communication을 한다고 생각하면 됩니다. 생각할 내용: IP, port, socket IP: 컴퓨터 주소 port: 컴퓨터 내 실행되는 프로세스 번호 socket: OS가 제공하는 일종의 API로 socket을..
-
[네트워크] 네트워크 개요: 네트워크 구조 및 네트워크 딜레이 (Packet-Switching Delay)테크 2024. 3. 18. 19:02
학교에서 배웠던 네트워크 수업이 살짝 가물가물해서 정리를 해봤습니다. 요약하되 중요한 내용을 빠뜨리지 않고 다 포함했습니다. 네트워크를 완전히 모르는 사람들이 이 글을 읽는 것을 추천하지 않습니다. 네트워크를 어느 정도 알고 있는 상태에서 지식을 정리한다는 마음으로 읽으면 좋을 것 같습니다. 1. Network structure 네트워크 구조에는 크게 두 가지가 있습니다. Network edge Network core 1.1 Network edge End systems(hosts): Web, E-mail과 같은 app을 실행합니다. Client/Server model Peer-to-Peer model ※ 프로토콜 (Protocol): 커뮤니케이션 약속 host 간 데이터를 전송할 때 두 개의 프로토콜 (..
-
[Swift] SwiftUI 프로퍼티 래퍼 뿌시기 4: @EnvironmentObject테크 2024. 3. 7. 17:58
@Observable... 너에게 닿기가 너무나도 힘들구나... 조금만 파이팅해봅시다!!! @EnvironmentObject @frozen @propertyWrapper struct EnvironmentObject where ObjectType : ObservableObject 조상 뷰가 제공하는 ObservableObject를 관찰하는 프로퍼티 래퍼 조상 뷰에서 ObservableObject를 제공할 때 environmentObject(_:) modifier를 사용해야 함 @Observable 클래스를 관찰하려면, Environment를 사용하고 조상 뷰에서 environment modifier를 사용해야 함 무슨 말이냐? 조상 뷰가 제일 처음 ObservableObject를 하나 구독하고 있고 이를 ..
-
[Swift] SwiftUI 프로퍼티 래퍼 뿌시기 3: @ObservedObject와 @StateObject 차이 이해하기테크 2024. 3. 7. 17:18
이전 시간에 Combine의 Publisher와 Subscriber에 대해서 초간단 설명을 드렸는데요. 이것만 딱 기억하시면 됩니다! Publisher가 내보낸 값/이벤트만 Subscriber가 볼 수 있고 Subscriber만 Publisher가 내보낸 값/이벤트를 볼 수 있다 저번 시간에 ObservableObject에서는 이벤트를 방출할 수 있다고 했죠? 그렇다면 이 이벤트를 받아볼 수 있는 구독자 즉 Subscriber가 있어야 하는데 내가 바로 Subscriber다! 라고 선언해주는 것이 @ObservedObject라고 했습니다. @ObservedObject @propertyWrapper @frozen struct ObservedObject where ObjectType : ObservableO..
-
[Swift] SwiftUI 프로퍼티 래퍼 뿌시기 2: @Published 찍먹하기 (feat. ObservableObject)테크 2024. 3. 6. 21:28
하... 사실 앞의 @State랑 @Binding은 빌드업이었던 것임ㅠ Observ... 어쩌고저쩌고만 봐도 머릿 속에 물음표만 생겼던 나 자신 더 이상 미룰 수 없다. (왕진지) 일단 ObservableObject 이 친구가 무엇인지 알아야할 것 같은 느낌이 강하게 들어서 이 친구부터 먼저 도장깨보도록 하겠음!!! ※ Combine을 모르는 사람들을 위한 글입니다... (왜냐? 제가 모르기 때문에 ㅎㅋ) ObservableObject protocol ObservableObject : AnyObject Combine을 사용하는 것으로 이벤트 방출(emit)이 가능 (무슨 소린지 모르겠어도 포기하지 말고 계속 읽어주세요!) 클래스에서만 사용 가능 일반적으로 ViewModel 구현 시 사용 (ViewMode..
-
[Swift] SwiftUI 프로퍼티 래퍼 뿌시기 1: @State와 @Binding테크 2024. 3. 6. 19:25
후... 기본이 탄탄하지 않으니 코드 작성하는게 어렵다 어려워; @Observable이 뭐지?하고 보다가 그냥 제가 프로퍼티 래퍼를 잘 모르는 것 같아가지구요ㅠㅎ 기초부터 하나씩 하나씩 뜯어보도록 하겠습니다... 일단 프로퍼티 래퍼가 뭐냐? 프로퍼티 래퍼 (Property Wrapper) SwiftUI에서 @붙은 애들을 지칭함: @propertyWrapper, @State, @Binding, @Bindable, ... 속성(Property, 이하 프로퍼티)과 관련된 행동들을 캡슐화함 결과적으로 코드의 가독성을 높임 예를 들어서 아래와 같은 코드가 있다고 생각해 봅시다. import SwiftUI struct Car { private var _model = "" var model: String { get ..
-
[Swift] Foundation에서 제공하는 동기화를 위한 Lock에 대해서 알아보기 | NSLock | NSRecursiveLock | NSConditionLock | NSCondition | NSDistributedLock테크 2023. 10. 25. 01:56
아직까지도 thread-safe한 코드를 작성하는 것은 어렵다. 그래서 Swift에서 지원하는 동기화 도구(synchronization tool)에 대해서 알아보고 멀티쓰레드 프로그래밍(multithread programming)에 대한 자신감을 키워보도록 하겠다. 첫걸음으로 Foundation에서 제공하는 lock과 관련된 클래스들을 알아보도록 하겠다. ※ thread-safe 임계 영역(critical section)에 여러 쓰레드가 동시에 접근하더라도 실행 결과가 올바르게 나오는 것을 뜻한다. ※ 동기화(synchronization) 한 쓰레드가 특정 임계 영역을 실행하고 있을 때 다른 쓰레드가 해당 영역을 실행하지 못하도록 막는 것을 뜻한다. 100% 정확한 설명이라고 보기는 어렵지만 일단 이 정..
-
[OS101] 쓰레드테크 2023. 9. 14. 17:38
본 글은 2023.09.14에 새롭게 업데이트되었습니다. 서울대학교 평생 교육원에서 제공하는 운영체제의 기초 강의 내용을 중점으로 정리했다. 부족한 부분은 책을 참고하면서 채워 나갔다. 이해를 돕기 위한 그림들은 여기에서 가져왔다. 목차 쓰레드란 무엇인가 쓰레드가 필요한 이유 쓰레드 구현 형태 멀티쓰레딩 모델 쓰레드 라이브러리 - pthreads 쓰레드란 무엇인가 쓰레드(thread)는 CPU의 실행 단위이다. 쓰레드의 개념을 정확하게 알기 위해서는 반드시 프로세스 개념을 정확하게 알아야 한다. 프로세스에는 컨텍스트와와 실행 흐름(execution stream 또는 thread of control)이 있다. 이제 이 두 개를 분리시키자. thread of control, 즉 실행 흐름을 분리시킨 것이 쓰..