[Genie95] #0. Windows95 테마 포트폴리오 웹사이트 만들기
·
Projects
태초에 MS-DOS라는 것이 있었다. 우리 엄마는 개발자는 아니지만 컴퓨터를 잘 다뤘다. 그래서 아주 갓난쟁이일 때부터 처음 본 컴퓨터가 CLI 기반이었고, 지금까지도 컴퓨터하면 아주 투박한 모니터에 코드가 빼곡한 쉘이 떠오른다. 30살에 개발을 처음 시작하면서 내가 생각하는 개발자의 stereotype은 MS-DOS에서 쉘에 명령어를 입력하는 투박한 모습으로 남아있는듯 하다. 그래서 나의 첫 개발 포트폴리오는 내가 생각하는 컴퓨터의 모습을 그리면 어떨까 생각했다. 내가 처음으로 컴퓨터를 배울 때 사용한 Windows 95 테마를 차용하여 포트폴리오 웹사이트 페이지를 만들어보려 한다. 관련 내용을 검색하면서 React95라는 github repo를 발견하였고, 여기서 여러 영감을 얻을 수 있는 웹사이트를..
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는 해당 메모..