Programming
-
Swift - Initializer 기초Programming/Swift 2021. 11. 13. 14:15
안녕하세요 BeePeach입니다 :) 오늘은 Initializer(생성자)에 대해서 공부해보도록 하겠습니다. class, struct, enum의 인스턴스를 사용하기 위한 준비과정을 Initialization(초기화)라고 합니다. 초기화 과정에는 해당 타입이 가지고 있는 모든 stored property가 초기값을 가지도록 해야 합니다. 이러한 초기화 과정을 Initailizer(생성자)에서 구현하면 됩니다. 다시 말하자면 인스턴스를 생성하는 작업을 초기화라고 하고 생성자는 초기화를 담당합니다. Initialzer 위에서 class와 sturct의 stored property는 인스턴스가 생성될 시점에 반드시 초기값을 가지고 있어야 한다고 했습니다. 초기값은 initializer에서 구현하거나 defau..
-
Swift - Inheritance (상속)Programming/Swift 2021. 11. 11. 00:24
안녕하세요 BeePeach입니다 :) 오늘은 class에서만 사용 가능한 특별한 기능 중에 하나인 Inheritance(상속)에 대해서 공부를 해보려 합니다. class는 method, property 등을 다른 class에게 상속시킬 수 있습니다. 이때 물려주는 class를 superclass, parentclass, 물림을 받는 class를 subclass childclass라고 합니다. Swift에서는 한 subclass가 2개 이상의 superclass를 가질 수 없습니다. 그럼 상속에 대해서 천천히 알아보도록 하겠습니다. Base Class Base class란 아무것도 상속받지 않은 class를 말합니다. 저장 프로퍼티, 연산 프로퍼티, 메서드를 가지는 Figure라는 baseClass를 만들..
-
iOS - Cocoapods 기초Programming/Library 2021. 11. 10. 14:37
안녕하세요. BeePeach입니다 :) CocoaPods란 외부 라이브러리를 관리하기 쉽도록 도와주는 의존성 관리 도구입니다. 의존성 관리 도구에는 CocoaPods만 있는 게 아니라 Carthage, Swift Package Manger 등 다른 관리 도구도 존재합니다. 의존성 관리도구는 왜 사용할까요?? 다른 개발자분들이 작성해놓은 코드를 사용하려고 할 때 해당 코드를 복사해서 내 프로젝트에 붙여 넣기 한 뒤에 사용해도 되지만 방대한 양의 코드들을 모두 복사해 오는 것은 힘든 작업입니다. 만약 모두 복사해왔다고해도 버전업이 되어서 변경사항이 존재한다면...? 그 부분만 찾아서 또 변경한다고하면 없느니만 못하겠죠? 의존성 관리도구를 사용하면 외부 라이브러리를 손쉽게 관리하고 사용할 수 있게 됩니다. 그..
-
OS - Process SchedulingProgramming/CS 2021. 11. 9. 20:00
안녕하세요 BeePeach입니다 :) 오늘은 Process scheduling에 대해서 공부해보도록 하겠습니다. 여기서 process란 간단하게 하나의 실행 중인 프로그램(응용프로그램)으로 이해해주시면 됩니다. (자세히 들어가면 하나의 프로그램에 여러개의 프로세스가 존재할 수 있는데 이해하기 쉽도록 프로세스란 실행 중인 프로그램으로 설명했습니다.) 그리고 기본적으로 CPU에서 한번에 하나의 프로세스만 실행할 수 있다고 가정하겠습니다. (지금의 CPU는 여러개의 코어가 있고 하나의 프로세스에서도 여러 스레드로 나뉘지만 여기서는 특별한 말이 없다면 1개의 코어를 가진 CPU를 사용하고 프로세스도 1개의 스레드만 가진다고 생각해주세요.) Process Scheduling Process Scheduling는 O..
-
Time Complexity (시간 복잡도)Programming/Data Structure & Algorithm 2021. 11. 9. 15:40
안녕하세요 BeePeach입니다 :) 오늘은 알고리즘이나 데이터 구조를 배울 때 한 번쯤 들어보는 Time Complexity(시간 복잡도)에 대해서 공부해보도록 하겠습니다. 시간 복잡도의 개념이 필요한 이유 어떤 한 가지 문제를 해결할 때 정해진 정답은 없습니다. 그 문제를 해결하는 방법은 매우매우 많겠죠. 어떤 해결방법(알고리즘)이 더 좋은 해결 방법인지 분석하기 위해서 시간 복잡도라는 것을 사용합니다. 시간 복잡도는 알고리즘의 실행 속도를 나타냅니다. 비슷한 예로 Space Complexity(공간 복잡도)가 있습니다. 공간복잡도는 알고리즘에 필요한 메모리 크기를 나타냅니다. 요즘 시대에는 메모리가 충분하기 때문에 공간복잡도의 중요성은 많이 낮아졌습니다. 그래서 대부분 시간 복잡도를 이용해 이 문제..
-
OS - KernelProgramming/CS 2021. 11. 7. 21:38
안녕하세요 BeePeach입니다. 오늘 공부해볼 내용은 Kernel, Shell, SysytemCall입니다. 지난번 포스팅에서 OS는 system resource를 관리하고 사용자와 컴퓨터 사이에 인터페이스를 제공한다고 했습니다. 여기에 핵심이 되는 개념이 Kernel, Shell, SystemCall입니다. Kernel Kernel의 사전적 의미는 알맹이입니다. 의미처럼 Kernel은 리소스를 관리하고 프로세스와 하드웨어의 보안등 OS의 핵심 프로그램을 의미합니다. 이런 중요한 기능을하기때문에 아무나 접근해서는 안되겠죠?? 그래서 OS에는 2가지 모드가 존재합니다. User mode 리소스에 마음대로 접근할 수 없는 모드입니다. 일반적으로 application이 실행되는 모드가 바로 사용자모드입니다...
-
Swift - SubscriptProgramming/Swift 2021. 11. 7. 20:19
안녕하세요 BeePeach입니다 :) 오늘은 Subscript (서브스크립트)에 대해서 공부해보려 합니다. 서브스크립트란 colletcion, seqence의 멤버에 쉽게 접근할 수 있도록 해주는 문법입니다. 메서드를 따로 생성하지 않고 멤버의 값을 바꾸거나 읽을 수 있게 해 줍니다. 단어는 생소하지만 우리는 이미 사용하고 있었습니다. 배열과 딕셔너리에서 []로 접근하는 문법이 바로 subscript입니다. 래퍼런스에 가서 Array를 보면 이렇게 subscript가 이미 구현되어 제공되는 것을 볼 수 있습니다. 그럼 어떻게 구현하는지 서브스크립트를 만들어 보겠습니다. Syntax struct, class, enum에서 서브스크립트를 구현할 수 있습니다. 문법은 subscipt 키워드를 이용합니다. 한 ..
-
Swift - MethodProgramming/Swift 2021. 11. 6. 14:51
안녕하세요 BeePeach입니다 :) 지금까지 struct, class의 구성 멤버들 중에 Property에 대해서 공부해봤습니다. 오늘은 Method(메서드)에 대해서 공부해보려고 합니다. 그럼 시작하겠습니다! Method 메서드는 이름은 거창해 보이지만 우리가 이전에 공부했던 function(함수)와 다를 게 없습니다. 특정한 Type에 속해있는 함수를 메서드라고 합니다. 메서드는 struct, class, enum에서 선언할 수 있습니다. 그리고 프로퍼티처럼 Instance Method(인스턴스 메서드), Type Method(타입 메서드)로 나뉩니다. 인스턴스 메서드는 Instance(인스턴스)와 관련된 메서드입니다. 당연히 호출할 때도 인스턴스를 통해서 호출하겠죠?? 타입 메서드는 Type과 관..