AWS EC2 SSH 접속 불가 & CPU 100% 사용 문제 해결 가이드
·
AWS/EC2
AWS Free Tier에서 EC2 인스턴스를 운영하다 보면, CPU 사용률이 100%로 고정되면서 SSH 접속이 불가능한 문제가 발생할 수 있습니다. 이 문제는 주로 다음과 같은 원인으로 발생합니다.특정 프로세스가 CPU를 과부하시키는 경우 (예: 무한 루프, 폭주하는 패키지 업데이트 등)AWS Free Tier의 t2.micro / t3.micro 인스턴스에서 CPU 크레딧 부족으로 인해 성능 제한이 걸린 경우네트워크 문제, 보안 그룹 설정 오류, 또는 VPC 라우팅 문제제 경우는 htop command를 설치하기 위해 여러가지 패키지를 설치하는 과정에서 과부하가 온 것으로 추정하고 있습니다. 이 글에서는 SSH 접속이 멈추거나 불가능할 때 제가 이 문제를 해결한 단계별 가이드를 알려드리려고 합니다...
Linux 파일 권한과 chmod 명령정리
·
Linux
Linux에서 파일과 디렉토리를 다루다 보면 파일의 속성과 권한을 이해하는 것이 중요합니다. 특히, ls -l 명령어를 실행하면 파일이나 디렉토리 앞에 나타나는 문자들이 무엇을 의미하는지, 그리고 chmod 명령어를 통해 파일 권한을 어떻게 변경할 수 있는지 알아보겠습니다.파일 타입 체계Linux에서는 파일을 유형별로 구분하며, ls -l 명령어를 사용하면 해당 파일의 속성을 확인할 수 있습니다. 아래는 ls -l 실행 결과의 예시입니다. 출력 결과에서 가장 왼쪽의 문자는 파일의 타입을 나타냅니다.문자파일 타입설명-일반 파일텍스트 파일 등 일반적인 파일d디렉토리 (Directory)폴더l심볼릭 링크 (Symbolic Link)다른 파일을 가리키는 링크b블록 장치 (Block Device)하드디스크, US..
AWS EC2에서 Linux Red Hat 설치 방법 / 리포지토리 설정 방법 / 등록 오류 해결
·
Linux
Linux OS 환경을 구축하기 위해서는 디바이스에 Linux OS를 직접 설치하거나, Virtual Machine을 통한 가상 환경 내에서 Linux OS를 구축하는 방법이 있습니다. 만약 현재 이용하고 있는 PC가 Windows OS인 경우 Virtual Box나 VMWare 등의 프로그램을 통해 가상 환경 구축이 용이합니다. 하지만 Mac OS의 경우, Windows에 비해 가상 환경 셋팅을 위한 범용적인 프로그램이 수가 적고 퀄리티가 좋은 경우 일부 비용이 발생할 수 있습니다. 현재 제가 사용하고 있는 MacBook의 경우, M1 칩이 내장되어 있어 Oracle VM VirtualBox를 이용할 수 없는 상황입니다. VirtualBox는 x86 기반 가상화를 사용하지만, M1(M2) 칩은 ARM ..
Swift의 고차함수
·
App Development/Swift
고차함수란? 고차함수는 다른 함수를 인자로 받거나, 함수는 반환하는 함수입니다. Swift에서는 이런 고차함수를 활용하면 보다 더 간결하고 유연한 코드를 작성할 수 있습니다. 예를 들어, 특정 배열을 나타내는 데이터를 다룰 때 반복문 대시 고차함수를 쓰면 코드를 더 직관적이고 짧게 작성할 수 있습니다. 이를 통해 가독성을 높이고 실수를 줄일 수 있습니다. "배열의 모든 값을 2배로 만들고 싶다면?" 고차함수를 사용하지 않았을 때,let numbers = [1, 2, 3, 4, 5]var doubleNumbers : [Int] = []for number in numbers { doubleNumbers.append(number * 2)}print(doubleNumbers) 고차함수 map를 사용하였을 때,l..
Swift의 에러 처리 (Error handling)
·
App Development/Swift
일부 작업이 항상 실행이 완료되거나 올바른 출력을 보장하지 않습니다. 따라서 특정 상황에서 에러가 발생할 경우 Swift에서는 이를 처리할 수 있는 방법을 제시합니다.에러 표현과 던지기Swift의 열거형을 통해 에러 조건의 그룹을 모델링하여 에러 특성에 대한 추가 정보를 전달할 수 있습니다.enum VendingMachineError: Error { case invalidSelection case insufficientFunds(coinsNeeded: Int) case outOfStock} 에러가 발생하면 구문을 정상적인 흐름으로 실행하기 어렵습니다. 따라서 throw 구문을 활용하여 에러를 발생하여, 어떤 지점에서 에러가 발생하였는지 파악할 수 있습니다.throw VendingMachineE..
SKAdNetwork란?
·
Marketing Tool/Mobile Measurement Platform
IDFA의 시대는 저물고 SKAdNetwork의 시대가 왔다기존의 MMP(Mobile Measurement Platform)은 IDFA라는 Device ID를 통해 유저를 특정할 수 있었습니다. 그리고 유저를 특정하는 것은 곧 매체의 기여를 측정할 수 있는 중요한 방법 중 하나로 자리매김합니다.기여를 측정한다는 것은 "유저가 매체의 광고를 통해 앱을 설치하였다"는 것을 정당하게 입증할 수 있는 것입니다. IDFA는 iOS 기기 당 부여되는 고유값이므로 (1) 광고 클릭 및 조회를 통해 수집된 IDFA와 (2) 설치 후 실행 시 SDK를 통해 전송되는 IDFA를 대조하여 동일한 경우 광고를 통해 앱을 설치한 유저로 간주하는 것이지요.  하지만 2021년 4월 iOS 14 버전부터 시장에는 큰 시련이 닥칩니..
Swift에서 동기와 비동기의 차이
·
App Development/Swift
동기 (Synchronous)동기는 작업이 순차적으로 실행되는 방식으로, 하나의 작업이 완료될 때까지 다음 작업이 대기합니다.코드가 작성된 순서대로 실행됩니다.작업이 완료될 때까지 호출한 스레드가 차단됩니다.실행 흐름이 직관적이나 시간이 오래 걸리는 작업이 있다면 성능에 영향을 줄 수 있습니다.동기 예제 코드print("start")Thread.sleep(forTimeInterval: 2) // 2초 대기print("end")// 출력// start// (2초 후)// end 비동기 (Asynchronous)비동기는 작업을 시작한 뒤 다른 작업을 동시에 실행할 수 있는 방식입니다. 작업이 완료되면 나중에 결과를 반환합니다.호출한 스레드가 차단되지 않고, 다음 작업이 바로 실행됩니다.주로 콜백(closur..
Swift의 매개변수(parameter) 정리하기
·
App Development/Swift
Swift 함수 내 매개변수의 기본 이해Swift에서는 매개변수의 타입을 명시적으로 선언해야 합니다. 이를 통해 함수의 입력 데이터 타입을 관리할 수 있습니다.func greet(name: String){ print("hello, \(name)!")}greet(name: "Jin")  In-out 매개변수만약 함수 내에서 외수 변수의 값 변경이 필요한 경우, inout 키워드를 사용해야 합니다.func doubleValue(value: inout Int){ value *= 2}var number = 10doubleValue(value: &number) //inout 매개변수임을 나타내기 위해 변수 앞에 &를 달아서 알려줌print(number) //20 기본값 매개변수 (Default parameters..
Swift에서의 completion
·
App Development/Swift
Swift에서 completion은 주로 비동기 작업을 처리할 때 사용되는 클로저를 의미합니다. 비동기 작업이 완료된 후 특정 작업을 수행하기 위해 호출되는 코드를 포함하는 매개변수입니다. Completion의 목적Completion은 작업이 완료된 시점에 결과를 처리하거나 후속 작업을 실행하도록 설계되었습니다. 예를 들어, 네트워크 요청, 파일 읽기/쓰기, 애니메이션 완료 등 시간이 걸리는 작업에서 사용됩니다. 사용 방식Completion은 함수의 매개변수로 전달되는 클로저 형태입니다. 작업이 끝난 뒤 호출하여 결과를 반환하거나, 작업 완료 후 추가 동작을 실행합니다.  예시 코드기본적인 Completion 사용 예시func fetchData(completion: @escaping (String) ->..
Swift의 Closure 란?
·
App Development/Swift
Swift official document에서는 Closure를 named function을 생성하지 않고 같이 실행하는 Grouped code라고 정의합니다. 클로저 (Closures) | Swift명명된 함수 생성없이 실행되는 코드 그룹입니다. 클로저 (Closures) 는 코드에서 주변에 전달과 사용할 수 있는 자체 포함된 기능 블럭입니다. Swift의 클로저는 다른 프로그래밍 언어에서 클로저,bbiguduk.gitbook.io 기본 syntax는 아래와 같습니다.{ (#parameters#) -> in } 전달받은 매개 변수를 변환 타입에 맞춰 반환 후 실행 코드를 반환합니다. Closure의 유형기본 형태let greeting = { (name: String) -> String in retur..
Swift의 ARC (Automatic Reference Counting)
·
App Development/Swift
ARC는 Automatic Reference Counting의 약자로, Swift에서 메모리를 효율적으로 관리하기 위해 사용되는 메모리 관리 기법입니다. 이는 Objective-C의 메모리 관리 방식을 자동화한 형태로, 프로그래머가 명시적으로 메모리를 해제하지 않아도 메모리 누수를 방지할 수 있도록 설계되었습니다. ARC의 동작 원리ARC는 Class instance의 참조 횟수(Reference count)를 추적합니다.각 class instance는 메모리에서 할당될 때 참조 카운터를 가지고 있습니다.다른 객체나 변수가 해당 instance를 참조할 때 참조 카운터가 증가합니다.참조가 해제될 때(예: 변수가 scope를 벗어날 때) 참조 카운터가 감소합니다.참조 카운터가 0이 되면 ARC는 해당 메모..
Swift에서의 Class
·
App Development/Swift
Class란?Class는 Swift에서 참조 타입으로 객체의 상태와 동작을 정의하는 설계 도구입니다.동일한 객체를 여러 변수에서 참조할 수 있음.상위 클래스를 확장하여 새로운 클래스 설계가 가능.참조 횟수를 추적하여 메모리 해제를 자동으로 관리(ARC를 통한 메모리 관리).상속이 필요하거나 다형성을 구현해야 하는 경우에 사용함.간단한 데이터 구조에서는 struct가 더 적합함.Class와 Struct 한 눈에 비교하기특성ClassStruct참조 타입 vs 값 타입참조 타입 (Reference Type): 동기화됨값 타입 (Value Type)상속 가능 여부상속 가능상속 불가능deinit 지원 여부지원미지원변경 가능 여부var로 선언 시 변경 가능모든 프로퍼티가 기본적으로 불변(let) 상속(inherit..