본문 바로가기

분류 전체보기198

운영체제 참고면접을 위한 CS 전공지식 노트 https://www.gilbut.co.kr/book/view?bookcode=BN003386 운영체제, OS, Operating System사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스 운영체제와 컴퓨터운영체제의 역할CPU 스케줄링 및 프로세스 관리, 메모리 관리, 디스크 파일 관리, I/O 디바이스 관리 CPU 스케줄링 및 프로세스 관리: CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성 및 삭제, 자원 할당 및 반환 관리메모리 관리: 메로리를 어떤 프로세스에 얼마나 할당할지 관리디스크 파일 관리: 디스크 파일을 어떠한 방법으로 보관할지 관리I/O 디바이스 관리: 마우스, 키보드와 같은 컴퓨터 간 데이터를 주고받는 것 관리 운영체제의 구조유저 프로그램 -.. 2025. 5. 2.
네트워크 참고면접을 위한 CS 전공지식 노트 https://www.gilbut.co.kr/book/view?bookcode=BN003386 네트워크컴퓨터 등의 장치들이 통신 기술을 이용하여 구축하는 연결망을 지칭하는 용어 네트워크 기초네트워크란 노드와 링크가 서로 연결되어 있으며, 리소스를 공유하는 집합노드란 네트워크 장치, 링크란 유무선 연결 처리량, 지연 시간처리량(throughput)은 링크 내에서 성공적으로 전달된 데이터의 양. 보통 얼마큼의 트래픽을 처리했는지를 나타냄bps(bits per second)를 단위로 사용.트래픽은 특정 시점에 링크 내에 흐르는 데이터의 양지연 시간(latency)은 요청이 처리되는 시간 네트워크 토폴로지네트워크 토폴로지(network topology)란 노드와 링크가 배치되.. 2025. 4. 29.
디자인 패턴, 프로그래밍 패러다임 참고면접을 위한 CS 전공지식 노트: https://www.gilbut.co.kr/book/view?bookcode=BN003386 디자인 패턴, Design Pattern프로그램을 설계할 때 발생하는 특정 문제점을 해결하기 위한 특정 패턴 싱글톤 패턴, Singleton Pattern하나의 클래스는 하나의 인스턴스만 가지는 패턴하나의 클래스를 기반으로 단 하나의 인스턴스를 만들어 이를 기반한 로직을 만들 때 사용하나의 인스턴스를 다른 모듈들이 공유해 사용하기 때문에 인스턴스 생성 비용이 줄어들지만 의존성이 높아짐 싱글톤 패턴 단점TDD에서 사용하기 어려움TDD는 단위 테스트를 진행하는 데, 단위 테스트는 각자 독립적이어야 한다.하지만 싱글톤 패턴은 하나의 인스턴스를 가지므로 각 테스트마다 독립적인 인스.. 2025. 4. 27.
주니어 iOS 개발자 Swift 면접 질문 1. Swift에서 옵셔널이란 무엇인가? 옵셔널을 안전하게 다루려면 어떻게 해야 하는가?옵셔널이란 변수가 값을 가지거나, 아무런 값(nil)도 가지지 않는 Swift의 기능 var name: String? = "John" // 옵셔널 스트링name = nil // name은 nil 안전하게 다루기 위한 방법: 옵셔널 바인딩(Optional Binding), 가드문(Guard Statement), Nil-결합 연산자(Nil-Coalescing) // 옵셔널 바인딩(Optional Binding)if let unwrappedName = name { print(unwrappedName)}// 가드문(Guard Statement)func greet(_ name: String?) { guard let.. 2025. 4. 23.
파이썬 알고리즘 문법 컴파일 타임에 변수 이름 잘못 넣어도 추론 안됨elif last_four_words == "infl": print("Orthopedics")elif last_for_words == "skin":  주석# 123asdasd 연산# 반올림round(0.7) # 1round(123.456, 2) # 123.46# 나누기2 / 3 # 0.6666666666666666# 나머지2 % 3 # 2# 몫2 // 3 # 0# 제곱2 ** 3 # 8# 삼항 연산True if x % 2 == 0 else False# or, 하나라도 True면 Trueany([True, False, False]) # True# and, 모두 True여야 Trueall([False, False, False]) # False 함수 정의de.. 2025. 3. 30.
Swift: add, adds, append, appends 속도 비교 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]을 배열에 더하는 연산을 다중 add, adds, 다중 append, appends로 각각 수행할 때의 속도 비교다중 add를 제외하면 평이하며, 다중 add의 경우 n이 100000000 일 때, 다른 API에 비해 3배의 속도 차이가 발생  import SwiftUIfunc measure(label: String, repeatCount: Int, function: () -> ()) { let time = ContinuousClock().measure { for _ in 1...repeatCount { function() } } print(label, ":", time)}struct ContentView: View { @State .. 2025. 3. 30.
Swift: add, append 속도 비교 n이 커질 수록 append가 속도 면에서 더 빨라지는 추세  import SwiftUIstruct ContentView: View { @State var count = 1 var body: some View { VStack { Button("count up") { count *= 10 } Button("act") { print("count:", count) DispatchQueue.global(qos: .default).async { var array1: [Int] = [] .. 2025. 3. 30.
Swift: if let, guard let 속도 비교 유의미한 차이는 없음  struct ContentView: View { @State var count = 1 var body: some View { VStack { Button("count up") { count *= 10 } Button("act") { print("count:", count) DispatchQueue.global(qos: .default).async { let time1 = ContinuousClock().measure { for _ in 1...co.. 2025. 3. 30.
Swift: async let 수행 순서 async let의 수행 순서는 await 순서에 따름func function(_ name: String, _ i: Int) async -> Int { print("sleep: ", name, i) sleep(UInt32(i)) print("wake up: ", name, i) return i}async let a = function("a", 10)async let b = function("b", 3)async let c = function("c", 2)async let d = function("d", 5)async let e = function("e", 3)async let f = function("f", 5)async let g = function("g", 3)async let .. 2025. 3. 30.
Swift 알고리즘 관련 문법 조건 splitlet str = "abd124kbksbjb62".split { !$0.isNumber }print(str) // ["124", "62"] dict 필터let s = [1, 2, 2, 3, 3, 3, 4, 4, 4]let dict = Dictionary(grouping: Array(s).map(String.init), by: { $0 }).filter { $0.value.count > 1 }print(dict) // ["3": ["3", "3", "3"], "2": ["2", "2"], "4": ["4", "4", "4"]] 여러 조건 splitlet str = "nabcvcvacbacac".split { $0 == "a" || $0 == "b" || $0 == "c" }.map { Str.. 2025. 3. 30.
Reference to invalid associated type 'Entry' of type 'ShortCutProvider' 문제: Swift 버전 업데이트 이후 위젯의 Entry의 타입을 참조하지 못하는 문제해결: typealias를 통해 내가 사용할 Entry를 명시적으로 지정   문제 코드:struct ShortCutProvider: TimelineProvider { func placeholder(in context: Context) -> ShortCutEntry { ShortCutEntry(date: Date()) } func getSnapshot(in context: Context, completion: @escaping (Entry) -> Void) { let entry = ShortCutEntry(date: Date()) completion.. 2025. 2. 22.
Swift Concurrency Meet async/await in Swifthttps://developer.apple.com/videos/play/wwdc2021/10132Discover concurrency in SwiftUIhttps://developer.apple.com/videos/play/wwdc2021/10019Swift concurrency: Behind the sceneshttps://developer.apple.com/videos/play/wwdc2021/10254 Meet async/await in Swift소개비동기 코드는 장황하고, 복잡하며 부정확하게 작성하기 쉬우며, 이러한 코드에 async/await이 도움이 될 수 있다.async/await을 사용하면 일반 코드를 작성하는 것처럼 쉽게 비동기 코드를 작성할 .. 2025. 2. 4.
알쓸스잡 - 8 Closure클로저는 코드에서 주변에 전달 및 사용할 수 있는 함수 블록Swift의 클로저는 다른 프로그래밍 언어에서 클로저, 익명 함수, 람다, 블록과 유사정의된 컨텍스트 내에서 모든 상수와 변수에 대한 참조를 캡처하고 저장이러한 상수와 변수를 폐쇄(closing over)라고 한다.Swift는 캡처의 모든 메모리 관리를 처리 함수 페이지에서 소개한 전역, 중첩 함수는 클로저의 특별한 케이스로 클로저는 3가지 형태 중 하나를 취한다.전역 함수는 이름을 가지고, 어떠한 값도 캡처하지 않는 클로저중첩 함수는 이름을 가지고, 둘러싼 함수로부터 값을 캡처할 수 있는 클로저클로저 표현식은 이름을 가지지 않고, 주변 컨텍스트에서 값을 캡처할 수 있는 클로저클로저 표현식은 간단하고 깔끔한 구문을 장려하는 최적화로 .. 2025. 2. 2.
알쓸스잡 - 7 가변 파라미터, Variadic Parameters함수에선 가변 파라미터라는 0개 이상의 특정 타입의 값을 허용한다.함수가 호출될 때 여러 개의 입력 값을 전달할 수 있음파라미터 타입 이름 뒤에 세 개의 간격 문자(...)를 추가하여 작성여러 개의 가변 파라미터를 가질 수 있음func sumOfArray(numbers: Int...) -> Int { numbers.reduce(0, +)}func sumOfTwoArray(numbers1: Int..., numbers2: Int...) -> Int { (numbers1 + numbers2).reduce(0, +)}print(sumOfArray(numbers: 1, 2, 3, 4, 5))print(sumOfTwoArray(numbers1: 1, 2.. 2025. 2. 1.
팀네이버 컨퍼런스 DAN 24, 20년된 Naver Cafe 서비스가 모듈화로 진화 하기 그후 1년 원문(안드로이드): https://tv.naver.com/v/67446433  네이버 카페 아키텍처사용했던 것: mvp현재: mvvm + clean architecture 모듈appsharedrepository, domain, utilmodelntt, apijava어노테이션 프로세스 2개UI 접근 방식데이터 바인딩, 버터나이프 아키텍처 목표오래된 기술 스택 버리기유지보수 어려움뷰 모델기능이 많아서 데이터 흐름 파악 어려움모범 사례일관된 설계로 코드 해석 쉽게 구글이 말하는 모듈화장점코드의 재사용성 증가기능별 코드 분리로 관리 용이성 향상독립적인 테스트 환경 제공전략UI, 도메인, 데이터 레이어제일 강조하고 싶은 거빌드 시간모듈화로 각각의 모듈 개별 빌드를 통해 빠른 결과 빌드를 언제 하나배포TDD개발빌드.. 2025. 2. 1.
알쓸스잡 - 6 stridestride(from: , to: , by:)열린 범위 -> 0...5stride(from: , through: , by:)닫힌 범위 -> 0.. switch 연속 케이스fallthrough를 사용하면 C 처럼 케이스 이후 다음 케이스로 넘어감let integerToDescribe = 5var description = "The number \(integerToDescribe) is"switch integerToDescribe {case 2, 3, 5, 7, 11, 13, 17, 19: description += " a prime number, and also" fallthroughdefault: description += " an integer."}print(descriptio.. 2025. 1. 21.
알쓸스잡 - 5 스위프트의 콜렉션 타입지원하는 원시 콜렉션 타입은 3개Array, Dictionary, Set콜렉션 타입은 제네릭을 통해 구현됨집합 연산intersection: 두 집합의 공통 값을 가지는 새로운 집합을 생성symmetricDifference: 두 집합의 공통 값을 제외한 새로운 집합을 생성union: 두 집합의 모든 값으로 새로운 집합을 생성subtracting: 특정 집합의 공통 값을 제외한 새로운 집합을 생성집합 equality== : 두 집합이 같은 값을 모두 포함하고 있는지 판단isSubset: 집합이 특정 집합에 모든 값이 포함되어 있는지 판단isSuperset: 집합에 특정 집합에 모든 값을 포함 하는지 판단isStrictSubset, isStrictSuperset: 집합이 특정 집합과 같지.. 2025. 1. 17.
객체 지향의 SOLID 원칙 원: Bob Martin SOLID Principles of Object Oriented and Agile Design(https://www.youtube.com/watch?v=TMuno5RZNeE)/* 영상에선 리스코프 치환 이야기하다 강의 종료 */ 우리는 나쁜 코드가 프로그램을 느리게 만든다는 것을 알고 있다.그렇다면 우리는 왜 프로그램을 느리게 만드는 나쁜 코드를 작성하는가?시간에 쫒겨서 나쁜 코드를 작성하게 된다.그렇다면 나쁜 코드란 무엇인가.나쁜 코드 -> 설명해줘야 함이게 무슨 코드지? 이걸 수정하면 어떤 일이 일어나는 거지? -> 나쁜 코드좋은 코드 -> 읽어보면 앎음, 그렇군. 이렇게 동작하는 건가? -> 좋은 코드경직성코드를 수정할 때, 일관성을 유지하기 위해 다른 코드를 대량으로 수정.. 2025. 1. 17.
알쓸스잡 - 4 여러 줄 문자열 리터럴여러 줄 문자열 리터럴은 줄 바꿈을 포함만약, 문자열의 줄바꿈을 원치 않는다면 역슬래시 사용 let softWrappedQuotation = """The White Rabbit put on his spectacles. "Where shall I begin, \please your Majesty?" he asked."Begin at the beginning," the King said gravely, "and go on \till you come to the end; then stop.""""print(softWrappedQuotation)// The White Rabbit put on his spectacles. "Where shall I begin, please your Maj.. 2024. 12. 30.
알쓸스잡 - 3 나머지 연산자나머지 연산자 %는 정수에서만 사용 가능let x = 10let y = 3print(x % y)// 1 소수에서 나머지 연산을 하기 위해선 다른 연산자 사용remainder(dividingBy: )truncatingRemainder(dividingBy: )formRemainder(dividingBy: )formTruncatingRemainder(dividingBy: )let a = 10.0let b = 3.0print(a % b) // %' is unavailable: For floating point numbers use truncatingRemainder instead 튜플 비교 연산자Swift에서는 튜플 간 값 비교를 지원(1, "zebra")  튜플 간 값 비교는 최대 6개까지 지원7.. 2024. 12. 30.
알쓸스잡 - 2 Swift에서 제공하는 데이터 타입기본 데이터 타입: Int, Double, Bool, ...컬렉션 타입: Array, Set, Dictionary 플랫폼에 따른 Int플랫폼에 따라 Int의 크기가 달라짐32 bit: Int -> Int3264 bit: Int -> Int64UInt 또한 동일 Double, Float 크기Double: 64 bit 부동 소수점, 15자리의 소수점 정확도Float: 32 bit 부동 소수점, 6자리의 소수점 정확도 타입 세이프티, 타입 추론 시점타입 세이프티, 타입 추론은 컴파일 단계에서 검사 숫자 리터럴0b 접두사: 2진수0o 접두사: 8진수0x 접두사: 16진수 아래는 모두 10진수 17let decimalInteger = 17let binaryInteger = 0b1.. 2024. 12. 26.
알쓸스잡 - 1 알아두면 쓸모 있는 스위프트 잡지식 문자열 들여 쓰기큰따옴표(") 3개를 쓰는 문자열에서 들여 쓰기의 기준은 닫는 따옴표 기준let (apples, oranges) = (3, 5)let quotation1 = """ Even though there's whitespace to the left, the actual lines aren't indented. Except for this line. Double quotes (") can appear without being escaped. I still have \(apples + oranges) pieces of fruit. """//Even though there's whit.. 2024. 12. 25.
프로젝트가 프로세스가 되기까지 - 2 프로세스시작커널이 프로세스를 생성메모리 영역 할당빈 메모리 공간을 할당가상 메모리 공간 설정스택, 힙, 코드, 데이터 영역앱 실행 파일 로드dyld가 Mach-O 실행 파일을 로드하며 앱 시작dyldDynamic Link Editor의 약자macOS, iOS 운영 체제의 구성 요소앱을 사용할 수 있도록 준비  로딩 dyld가 수행하는 작업동적 프레임워크 로드시스템 프레임워크 및 종속 라이브러리(UIKit, Foundation, ...)을 메모리에 로드실행 파일, 라이브러리 내의 함수와 변수들의 심볼을 해결하고 연결참조할 수 있는 코드가 메모리에 로드symbol을 관리하고, 프로그램에서 사용할 수 있도록 담당iOS는 ASLR을 통해 메모리 배치가 매번 달라지며, 해당 주소 공간을 기준으로 포인터를 reba.. 2024. 12. 18.
This bundle is invalid. Apple is not currently accepting applications built with this version of Xcode. 워크플로우에서 지원하는 빌드 버전이 프로젝트의 버전을 지원하지 않아서 발생.빌드 설정에서 테스트를 위한 버전을 오늘 업데이트된 버전(16.2) 보다 낮은 버전으로 변경해서 해결 2024. 12. 13.