전체 글

굉장할 나
· iOS/Swift
Hash란?데이터를 관리, 유지하는 자료구조로 데이터들을 해시 함수를 통해 key로 분류하고, 그 key에 따라 value를 저장하는 형태를 뜻한다. HashTable이란 Key를 이용해 배열의 Index를 찾고, 그 인덱스를 통해 값을 가져온다.  "제리"의 영어 이름을 찾기 위해1. "제리"라는 key를 hash 함수에 전달한다2. hash 함수 내에 hash함수를 통해 찾을 value의 인덱스를 찾는다.3. 찾은 인덱스를 통해 value값 "jarry"를 얻는다.  Hashable이란?https://developer.apple.com/documentation/swift/hashable Hashable | Apple Developer DocumentationA type that can be hashe..
· iOS
UIAlertAction을 사용하면서 어떤 버튼을 눌렀을 때 UIAlertAction을 그 함수 내에서 설정하여 addAction()하는 경우로만 사용했었는데 필요한 Actions를 미리 프로퍼티로 저장해둔 후 추후 미리 만들어둔 UIAlertAction을 전달하여 UIAlertController로 띄우는 방법을 사용해보게 되었다. var myActions: [UIAlertAction] = [] 먼저 내가 저장할 액션 배열을 클래스 내 프로퍼티로 미리 선언해둔다. private func setupAlertActions() { let action1 = UIAlertAction(title: "action1", style: .default, handler: { _ in print("select action1"..
· iOS
나는 새로운 개념을 접할 때 뭔가 이걸 사용해서 어떤 문제를 해결하는데 도움이 되고, 왜 사용하는지를 체감했을 때 그 개념을 완전히 받아들일 수 있는 것 같다. 뭔가 내가 이 개념의 필요성을 온전히 느끼지 못하면 사용을 하면서도 마음 한켠에 의문이 작게 자리잡는 것 같다. 그래도 협업을 하고 일을 하기 위해서는 내가 마음으로 완전히 받아들이지 않았음에도 그게 무엇인지 알고 빠르게 받아들일 수 있는 준비는 되어있어야 하는게 맞다고는 생각한다.(근데 그렇게 안했음ㅋㅜ) 이번에 Coordinator Pattern을 처음 공부하게 되었다. 예전에 다른 프로젝트를 통해 개념을 접한 적은 있었지만 그때는 실력이 부족해서 인가 필요성을 온전히 느끼지 못했다. 왜 그랬는지 생각해보면 너무 작은 프로젝트에 이 개념을 ..
· iOS
RxSwift를 사용하게 되면 자주 접하게 되는 subscribe, bind, drive를 비교하여 정리해보자! 1. subscribe public func subscribe( onNext: ((Element) -> Void)? = nil, onError: ((Swift.Error) -> Void)? = nil, onCompleted: (() -> Void)? = nil, onDisposed: (() -> Void)? = nil ) -> Disposable { let disposable: Disposable if let disposed = onDisposed { disposable = Disposables.create(with: disposed) } else { disposable = Disposable..
· iOS
자주 사용되는 Operator인데 생각해보니 차이점을 명확하게 이해한 후 사용하지 않고 그때그때 찾아서 사용했었어서 이번 기회에 명확히 개념을 정리하고자 한다. Merge 여러 Observable이 방출하는 항목들을 하나의 Observable이 방출하도록 병합한다. 마블 다이어그램과 같이 첫번째 스트림과 두번째 스트림을 합쳐 하나의 스트림으로 만들어준다. 이때 첫번째 스트림, 두번째 스트림에 이벤트가 발생할 때 마다 바로바로 이벤트를 방출한다. 단순히 두 스트림의 이벤트를 하나로 합하기 때문에 스트림을 구별 할 수는 없다. let firstSubject = BehaviorSubject(value: 1) let secondSubject = BehaviorSubject(value: 2) let thirdSu..
스케줄링? 하나의 관리자로 프로세스들의 여러 상황을 고려하여 cpu와 시스템 자원을 어떻게 배정할 지 결정하는 역할을 함 - 고수준 스케줄링 (가장 큰 틀에서 이루어지는 스케줄링) 어떤 작업요청이 오면 스케줄러가 시스템의 상황을 고려하여 작업을 승인할지, 거부할지 결정함(승인 스케줄링 이라고도 함) - 중간수준 스케줄링 전체 시스템의 활성화된 프로세스 수를 조절하여 과부화를 막음 - 저수준 스케줄링 어떤 프로세스에 CPU를 할당하고 어떤 프로세스를 대기 상태로 보낼지 등을 결정함 아주 짧은 시간에 일어나기 때문에 단기 스케줄링이라고도 함 스케줄링의 목적 근본적으로 이런 스케줄링을 왜 할까? 모든 프로세스가 공평하게 작업하도록 하기 위해서이다. 엄청나게 오래 걸리는 프로세스만을 처리하기 위해 상대적으로 짧..
· iOS
클린코드 독후감 .. :) 더보기 클린코드를 읽고 더 좋은 코드에 관심이 생기게 되었다. 기존 개발 방식은 구현을 위주로 고민을 하였는데, 클린코드에 나온 내용을 내 프로젝트에 직접 적용해보는 과정을 통해 더 좋은 코드를 작성하고 싶다는 고민을 하게 되었다. 클린코드에 나와있는 내용들이 전부 다 맞는 말이라고 생각하지 않는다. 상황에 따라 좋지 못한 방법, 비효율적인 방법이 효율적일 수 있고, 효율적인, 다른사람들이 선호하는 그런 방식들이 비효율적일 수 있다. 예를들어 어떤 러닝커브가 높은 아키텍처를 도입하기 위해 팀원들이 많은 시간과 노력을 소비해야 한다면, 그런데 이 때 프로젝트 기한이 짧다면 과연 그 아키텍처를 도입하는게 올바른 선택일까? 현재의 나는 올바르지 않다고 생각한다. 좋은 아키텍처, 고민..
1. CPU의 구성에 대해 설명하시오 - CPU는 명령어를 해석하여 실행하는 장치이며 핵심 요소라 볼 수 있다. 산술논리 연산장치, 제어장치, 레지스터로 구성되며 이것들이 협업하여 작업을 처리한다. 1) 산술논리 연산장치 데이터를 연산하는 장치로 덧셈, 뺄셈, 곱셈, 나눗셈과 같은 산술연산, AND, OR과 같은 연산 수행 2) 제어장치 작업을 지시하는 부분 3) 레지스터 데이터를 임시로 보관하는 곳 -> 왜? 임시로 보관해야 할까? -> 연산을 하기 위해 필요한 데이터를 CPU로 가져와 임시로 보관해야 함 (저장되어 있는 값을 CPU로 가져와서 계산해야 하는데 계산할 때 둘 곳이라고 생각!) 2. 폰노이만 구조의 가장 중요한 특징을 설명하시오 CPU, 메모리, 입출력장치, 저장장치가 버스로 연결되어 있..
hilily
Hi Lily