728x90 전체 글387 Swift에서 extension을 사용하는 이유와 실무 활용 방법 1. extension이란 무엇인가?Swift에서 extension(확장)은 기존 클래스, 구조체, 열거형, 또는 프로토콜에 새로운 기능을 추가할 수 있게 해주는 기능입니다. 기존의 소스 코드를 변경하지 않고도 타입을 확장할 수 있어 코드의 재사용성을 높이고 유지보수를 용이하게 해줍니다. 중요한 점은 extension을 사용해 추가할 수 있는 것은 새로운 메서드, 계산 속성, 서브스크립트, 초기화 메서드 등이며, 기존의 속성이나 메서드를 재정의할 수는 없습니다.2. extension을 사용하는 주요 이유기존 타입의 기능 확장:기존의 타입(예: String, Int, 사용자 정의 클래스 등)에 새로운 기능을 추가하고 싶을 때 사용합니다. 이는 특히 프레임워크나 라이브러리의 코드를 수정할 수 없을 때 유용합.. 프로그래밍공부(Programming Study)/IOS 개발 2024. 10. 24. SwiftUI에서 다양한 접근자 종류와 실무 사용 방법 1. Swift의 접근 제어자 종류 개요Swift에서 접근 제어자는 코드 내에서 특정 요소(클래스, 구조체, 함수, 변수 등)의 접근 범위를 제한하는 역할을 합니다. 이를 통해 개발자는 불필요한 접근을 제한하고, 코드의 안전성과 일관성을 유지할 수 있습니다. Swift는 5가지 주요 접근 제어자를 제공합니다: open, public, internal, fileprivate, private.2. 접근 제어자의 종류 및 사용 사례open특징: Swift에서 가장 개방적인 접근 제어자입니다. open으로 정의된 클래스는 모듈 외부에서도 상속이 가능하고, 오버라이드가 가능합니다.사용 예: 오픈소스 라이브러리에서 주로 사용됩니다.open class OpenClass { open func openMethod(.. 프로그래밍공부(Programming Study)/IOS 개발 2024. 10. 24. SwiftUI에서 Hashable 프로토콜과 ObservableObject, StateObject, EnvironmentObject, Published, State, Binding 어노테이션의 역할 1. Hashable 프로토콜의 역할개념:Hashable 프로토콜은 Swift에서 객체를 해시할 수 있도록 하는 프로토콜입니다. 이는 객체가 집합(Set)이나 딕셔너리(Dictionary)의 키로 사용될 수 있게 해줍니다. Hashable을 구현하면 객체의 고유성을 정의하고 데이터 구조에서 쉽게 관리할 수 있습니다.특징:Hashable은 Equatable을 상속받습니다.hash(into:) 메서드를 구현하여 객체의 해시 값을 생성합니다.struct Person: Hashable { let id: Int let name: String func hash(into hasher: inout Hasher) { hasher.combine(id) hasher.combine(n.. 프로그래밍공부(Programming Study)/IOS 개발 2024. 10. 20. Swift에서 View, ViewModel, Service에 대한 개념과 역할 1. View, ViewModel, Service란?View, ViewModel, 그리고 Service는 iOS 앱 개발에서 흔히 사용되는 MVVM 패턴(Model-View-ViewModel)에서 중요한 요소입니다. 이 패턴은 코드의 재사용성과 유지보수성을 높이기 위해 고안되었습니다.View: 사용자에게 보여지는 UI를 담당하며, 사용자 입력을 받습니다.ViewModel: 비즈니스 로직을 포함하며, View와 Model 사이의 중재 역할을 합니다. View에서 발생한 이벤트를 처리하고, Model의 데이터를 가공하여 View에 전달합니다.Service: 외부 서비스(예: API 호출, 데이터베이스 처리)를 관리하는 계층으로, 데이터를 ViewModel에 제공합니다.2. MVVM 패턴에서의 View, Vi.. 프로그래밍공부(Programming Study)/IOS 개발 2024. 10. 17. Spring 애플리케이션 부팅 속도 최적화 방안 Spring 애플리케이션의 부팅 속도를 줄이기 위한 다양한 최적화 방법들이 있습니다. 이 최적화는 주로 애플리케이션의 구조와 설정, 의존성 관리 및 리소스 할당을 효율화하는 작업으로 나눌 수 있습니다. 아래에서 부팅 속도를 최적화하는 방법을 설정 최적화, 의존성 및 빈 관리, 메모리 최적화, 빌드 최적화와 같은 여러 측면에서 살펴보겠습니다.1. Lazy Initialization(지연 초기화)Spring Boot 2.2부터는 지연 초기화(Lazy Initialization)를 활성화하여 필요할 때 빈을 초기화할 수 있습니다. 기본적으로는 애플리케이션 부팅 시 모든 빈이 즉시 생성되지만, 지연 초기화를 사용하면 필요한 빈만 생성되므로 부팅 시간이 줄어듭니다.방법:application.properties 또.. 프로그래밍공부(Programming Study)/스프링(Spring Framework) 2024. 9. 23. CPU와 메모리 기본 개념 CPU와 메모리는 컴퓨터 시스템에서 매우 밀접하게 연결되어 있지만, 각각의 역할은 다릅니다. 프로그램이 실행되는 동안 CPU와 메모리는 서로 협력하여 작업을 처리합니다. CPU는 연산을 담당하는 장치이며, 메모리는 데이터와 명령어를 저장하고 관리하는 장치입니다. 각 상황에서 언제 CPU를 사용하고 언제 메모리를 사용하는지 명확히 설명해드리겠습니다.1. CPU는 언제 사용되는가?CPU는 프로그램이 실행될 때 연산과 명령어 처리를 담당합니다. 즉, 프로세서가 실제로 일을 하는 순간에는 CPU가 사용됩니다. CPU는 프로그램의 논리적 흐름을 처리하고, 다양한 명령을 빠르게 수행합니다.CPU 사용 시점:연산을 수행할 때: 덧셈, 뺄셈, 곱셈, 나눗셈 같은 산술 연산과 비교, 조건문 처리 등의 논리 연산을 처리할.. 프로그래밍공부(Programming Study)/운영체제(OS) 2024. 9. 23. Spring 애플리케이션에서 메모리 할당 기준과 사용 시점 Spring 애플리케이션에서 메모리 할당 기준과 사용 시점Spring 애플리케이션이 실행될 때 메모리 관리가 중요한 역할을 합니다. 메모리 할당은 애플리케이션이 어떤 작업을 수행하고 있는지와 애플리케이션의 크기에 따라 결정됩니다. Spring 애플리케이션에서 메모리를 어떻게 할당하고 사용하는지 이해하려면, JVM의 메모리 구조와 Spring 프레임워크에서 메모리를 사용하는 방식을 함께 살펴보아야 합니다.1. Spring 애플리케이션의 메모리 할당 기준Spring 애플리케이션이 실행될 때, 메모리는 주로 JVM(자바 가상 머신)에 의해 관리됩니다. JVM은 애플리케이션이 필요로 하는 메모리를 자동으로 할당하며, 메모리 할당은 주로 다음과 같은 세 가지 요소에 의해 결정됩니다.1.1. JVM 메모리 구조JV.. 프로그래밍공부(Programming Study)/스프링(Spring Framework) 2024. 9. 22. Spring 애플리케이션 부팅 과정, 부팅속도와 CPU 할당량과의 관계 1. Spring 애플리케이션 부팅 과정 개요Spring 애플리케이션은 부팅 시 여러 단계의 초기화 작업을 거칩니다. 이 부팅 과정에는 빈 초기화, 애플리케이션 컨텍스트 생성, 설정 파일 로드 등이 포함됩니다. 이를 좀 더 구체적으로 살펴보면 다음과 같습니다.빈 스캐닝 및 등록: 클래스패스에서 빈(Bean)을 찾아내고, 이를 스프링 컨테이너에 등록합니다.의존성 주입: 빈 간의 의존성을 분석하고, 필요한 의존성을 주입합니다.설정 파일 로드: application.properties 또는 application.yml 파일에서 설정 값을 읽고 이를 애플리케이션에 적용합니다.애플리케이션 컨텍스트(ApplicationContext) 초기화: 컨텍스트가 완전히 구성된 후, 모든 빈이 준비되면 애플리케이션이 실제로 .. 프로그래밍공부(Programming Study)/스프링(Spring Framework) 2024. 9. 22. CPU, Dispatcher, Scheduler, Run Queue, Task: 개념과 동작 원리 1. CPU 개념CPU(중앙처리장치, Central Processing Unit)는 컴퓨터 시스템의 핵심 구성 요소로, 모든 연산 작업을 처리하는 장치입니다. CPU는 주로 명령어 처리, 데이터 연산, 제어 신호 생성의 역할을 합니다.명령어 처리: 메모리에서 프로그램 명령어를 가져와 이를 해석하고 실행.데이터 연산: 산술 및 논리 연산을 수행.제어 신호: 시스템의 각 부품과 장치를 제어.2. Dispatcher의 역할Dispatcher는 운영체제에서 중요한 모듈 중 하나로, CPU 스케줄러가 선택한 작업(프로세스나 스레드)을 실제로 CPU에서 실행할 수 있도록 합니다. Dispatcher는 문맥 교환(Context Switching), 모드 변경(User Mode ↔ Kernel Mode), 프로세스 실.. 프로그래밍공부(Programming Study)/운영체제(OS) 2024. 9. 22. Kernel에서 시스템 콜이란? DevOps Engineer가 꼭 알아야 할 시스템 콜 정리 1. 시스템 콜이란?시스템 콜(System Call)은 응용 프로그램이 운영 체제의 커널에 직접 접근하여 시스템 자원(파일, 프로세스, 네트워크 등)을 사용할 수 있도록 하는 인터페이스입니다. 일반적으로 사용자 수준에서 실행되는 프로그램은 하드웨어 자원에 직접 접근할 수 없기 때문에, 운영 체제 커널을 통해 이러한 작업을 처리해야 합니다. 시스템 콜은 이러한 작업을 중재하는 역할을 합니다.예를 들어, 파일을 읽거나 쓰는 작업, 새로운 프로세스를 생성하는 작업, 네트워크 연결을 설정하는 작업은 모두 시스템 콜을 통해 이루어집니다.2. 시스템 콜의 특징보안성: 시스템 자원은 커널에 의해 보호되며, 시스템 콜을 통해서만 접근 가능합니다.추상화: 시스템 콜은 하드웨어 자원에 대한 추상화를 제공하여 응용 프로그램.. 프로그래밍공부(Programming Study) 2024. 9. 21. Argo Rollout과 AWS Spot Termination Event 대응: Pod 하나일 경우 순단 방지 및 Pod Drain 후 즉시 재배치하는 방법 1. Argo Rollout이란?Argo Rollout은 Kubernetes의 고급 배포 전략 도구로, 무중단 배포를 지원합니다. 카나리 배포나 블루-그린 배포 등 다양한 배포 방식을 쉽게 구현할 수 있으며, 실시간 모니터링 및 트래픽 제어 기능도 제공합니다.2. AWS Spot Termination Event란?AWS Spot Termination Event는 AWS에서 Spot Instance가 종료되기 2분 전에 발생하는 이벤트로, 이를 활용해 Pod를 안전하게 drain하고 다른 노드로 재배치할 수 있습니다. 하지만, Pod 하나만 존재하는 경우에는 순단(서비스 중단)이 발생할 수 있습니다.3. Pod 하나일 경우 순단 발생 문제Pod가 하나만 있는 경우, Spot Instance 종료 시 해당 .. 프로그래밍공부(Programming Study)/DevOps 2024. 9. 20. Kubernetes에서 QoS와 Resource Request 및 Limit의 개념: CPU와 Memory의 의미 1. QoS란 무엇인가?QoS(Quality of Service)는 Kubernetes에서 파드를 실행할 때, 그 파드에 대한 자원 할당의 우선순위를 관리하는 메커니즘입니다. Kubernetes 클러스터는 여러 파드를 동시에 실행하기 때문에, 각 파드에 적절한 자원 할당 및 제한을 설정해야 효율적으로 리소스를 사용할 수 있습니다.Kubernetes는 파드의 QoS 클래스를 세 가지로 나눕니다:Guaranteed: 요청된 자원과 제한이 일치하는 경우. 이 클래스는 가장 높은 우선순위를 갖습니다.Burstable: 요청된 자원이 제한보다 작을 때. 유연한 사용이 가능하지만, 자원이 부족할 경우 제한이 있을 수 있습니다.BestEffort: 자원 요청이 전혀 설정되지 않은 경우. 우선순위가 가장 낮고, 자원이.. 프로그래밍공부(Programming Study)/DevOps 2024. 9. 20. 이전 1 2 3 4 5 6 7 8 ··· 33 다음 728x90