본문 바로가기

분류 전체보기465

[Swift] Memory Safety References https://docs.swift.org/swift-book/LanguageGuide/MemorySafety.html Contents Conflict Access 특징 Conflicting Access of In-Out Parameters Conflicting Access to self in Methods Conflicting Access to Properties 기본적으로 Swift는 코드에서 unsafe한 동작이 발생하지 않도록 방지합니다. 예를 들어, 변수가 사용되기 전에 초기화되도록 보장하며, 해제된 이후에는 메모리에 액세스할 수 없도록 보장합니다. 배열의 경우에는 경계 에러를 체크합니다. 또한 메모리의 어느 공간을 수정하는 코드가 그 메모리의 소유권을 가지도록 요구함으로써 동.. 2022. 3. 11.
[Swift] Automatic Reference Counting (ARC) References https://docs.swift.org/swift-book/LanguageGuide/AutomaticReferenceCounting.html Contents Automatic Reference Counting Strong References Strong Reference Cycles Weak References Unowned References Unowned Optional References Strong Reference Cycles for Closures Swift는 Automatic Reference Counting(자동참조카운팅, ARC)를 사용해서 앱의 메모리 사용을 추적하고 관리합니다. 대부분의 경우, Swift 내에서 메모리 관리는 알아서 동작하고, 우리는 메모리 관리에.. 2022. 3. 10.
[Swift] Opaque Types References https://docs.swift.org/swift-book/LanguageGuide/OpaqueTypes.html Contents Opaque Types (불분명한 타입) Opaque 리턴 타입을 갖는 함수나 메소드는 리턴 값의 타입 정보를 숨깁니다. 함수의 리턴 타입으로 구체적인 타입을 제공하는 대신, 리턴 타입은 프로토콜이 제공하는 것으로 묘사될 수 있습니다. 리턴 값의 내부 타입이 private으로 남아있을 수 있기 때문에 타입 정보를 숨기는 것은 모듈과 모듈을 호출하는 코드 사이의 경계(boundaries)에서 유용합니다. 타입이 프로토콜인 값을 리턴하는 것과는 달리, opaque 타입은 타입 identity를 유지합니다. 따라서 컴파일러는 타입 정보에 액세스할 수 있지만, .. 2022. 3. 9.
[Swift] Error Handling References https://docs.swift.org/swift-book/LanguageGuide/ErrorHandling.html Contents Representing and Throwing Erros Handling Errors Specifying Cleanup Actions Error Handling은 프로그램에서 에러 조건들에 대해 대응하고 회복하는 프로세스입니다. Swift는 런타임에서 에러가 발생한 경우 해당 에러를 처리하기 위해 throwing, catching, propagting, manipulating을 지원하는 일급 클래스(first-class)를 제공합니다. 어떠한 명령은 항상 실행을 완료하거나 유용한 결과를 생성한다고 보장하지 않습니다. 옵셔널은 값이 존재하지 않음을 표현.. 2022. 3. 8.
[Swift] Generics (제네릭) References https://docs.swift.org/swift-book/LanguageGuide/Generics.html Contents Generics Functions Type Parameter Associated Type Generic Where Clause Generic Subscripts Generic code(제네릭 코드)는 요구 사항에 따라 모든 타입에서 동작할 수 있는 더 유연하고 재사용 가능한 함수와 타입을 작성할 수 있도록 해줍니다. 제네릭 코드를 사용하면 중복을 피할 수 있으며 명확하고 추상적인 방법으로 그 의도를 표현할 수 있는 코드를 작성할 수 있습니다. 제네릭은 Swift에서 가장 강력한 기능 중 하나이며, 대부분의 Swift 표준 라이브러리는 제네릭 코드로 빌드됩니다... 2022. 3. 7.
[C++] Error Handling (2) References Professional C++ https://en.cppreference.com/w/ Contents Stack Unwinding and Cleanup (스택 풀기와 청소) Common Error-Handling Issue Function-Try-Blocks [C++] Error Handling (1) 지난 포스팅에 이어서 C++의 에러 핸들링에 대해 알아보도록 하겠습니다. 5. Stack Unwinding and Cleanup 어떤 코드가 익셉션을 던지면 이를 받아서 처리할 catch 핸들러를 스택에서 찾습니다. 이때 catch 핸들러는 현재 스택 프레임에 바로 있을 수도 있고, 몇 단계의 함수 호출 스택을 거슬러 올라가야 나타날 수도 있습니다. 어떻게든 catch 핸들러를 발견하면.. 2022. 3. 6.
[C++] Error Handling (1) References Professional C++ https://en.cppreference.com/w/ Contents Errors and Exceptions Exception Mechanics Exceptions and Polymorphism Rethrowing Exceptions 프로그래밍을 하다보면 파일을 열 수 없거나, 네트워크 연결이 끊기거나, 사용자가 잘못된 값을 입력하는 등의 에러가 발생하기 마련입니다. C++은 이렇게 예상치 못한 예외적인 상황에 대처하도록 Exception(익셉션, 예외)이라는 기능을 제공합니다. 이번 포스팅에서는 에러 처리를 반영한 개발 방법과 관련 문법, 기능에 대해서 알아보겠습니다. 1. Errors and Exceptions 완전히 독립적으로 실행되는 프로그램은 .. 2022. 3. 6.
[C++] 멀티스레딩 프로그래밍 (2) References Professional C++ https://en.cppreference.com/w/ Contents Mutual Exclusion Condition Variable Futures (std::promise, std::future) 멀티스레드 Logger 클래스 예제 [C++] 멀티스레딩 프로그래밍 (1) 지난 포스팅에 이어서 계속해서 C++에서의 멀티스레딩 프로그래밍에 대해 알아보겠습니다. 이전 포스팅과 마찬가지로 C++에서 제공하는 기능들에 대해 살펴보고, 이후에 사용하는 예제들을 살펴보겠습니다. 4. Mutual Exclusion 멀티스레드 프로그램을 작성할 때는 반드시 연산의 순서를 신중하게 결정해야 합니다. 스레드에서 공유 데이터를 읽거나 쓰면 문제가 발생할 수 있기 때문입니다.. 2022. 3. 3.
[C++] 멀티스레딩 프로그래밍 (1) References Professional C++ https://en.cppreference.com/w/ Contents 멀티스레드 프로그래밍 개념 Thread Atomic Operations Library 이번 포스팅에서는 C++의 멀티스레딩 프로그래밍에 대해서 알아보려고 합니다. [C++] thread [C++] mutex [C++] 생산자(Producer) / 소비자(Consumer) 패턴 [C++] 비동기(Asynchronous) 실행 예전에 위의 포스팅들을 통해서 살펴봤었는데, 이번 포스팅을 통해서 전체적으로 정리해보려고 합니다. 멀티스레딩 프로그래밍(multithreaded programming)은 프로세서 유닛이 여러 개 장착된 컴퓨터 시스템에서 중요한 기법이며, 이를 이용하여 시스템에 있는.. 2022. 3. 3.
[C++] 템플릿(Template) 심화편 (2) References Professional C++ https://en.cppreference.com/w/ Contents Template Recursion (템플릿 재귀) Variadic Templates (가변인수 템플릿) Fold Expression (폴드 표현식) MetaProgramming (메타프로그래밍) Type Traits [C++] 템플릿 (Templates) [C++] 템플릿(Template) 심화편 (1) 지난 포스팅에 이어서 계속해서 템플릿에 대해 알아보도록 하겠습니다. 4. Template Recursion C++의 템플릿은 단순히 클래스나 함수를 정의하는 것보다 더 많은 것들을 할 수 있습니다. 그중 하나가 바로 템플릿 재귀입니다. 구체적인 구현 방법을 살펴보기 전에 먼저 템플릿 .. 2022. 3. 1.