파이썬(Python) Jupyter notebook 설치 (MacBook)
2020. 12. 3. 20:35
프로그래밍 언어/Python
1. 터미널에서 pip 버전 확인 pip3 --version 2. pip upgrade pip3 install --upgrade pip 3. jupyter install pip install jupyter (밑으로 쭈주죽 내려감 ㅎㅎ) 4. jupyter notebook 실행 jupyter notebook 설치 완료 😆
[Swift] 26. 익스텐션 (extension)
2020. 12. 3. 19:56
iOS/Swift
익스텐션 (extension) 익스텐션은 스위프트의 강력한 기능 중 하나다. 익스텐션은 구조체, 클래스, 열거형, 프로토콜 타입에 새로운 기능을 추가할 수 있는 기능이다. 기능을 추가하려는 타입의 구현된 소스 코드를 알지 못하거나 볼 수 없다 해도, 타입만 알고 있다면 그 타입의 기능을 확장할 수 있다. 스위프트의 익스텐션이 타입에 추가할 수 있는 기능 연산 타입 프로퍼티 / 연산 인스턴스 프로퍼티 타입 메서드 / 인스턴스 메서드 이니셜라이저 서브스크립트 중첩 타입 특정 프로토콜을 준수할 수 있도록 기능 추가 ‼️ 익스텐션은 타입에 새로운 기능을 추가할 수는 있지만, 기존에 존재하는 기능을 재정의할 수는 없다. 클래스의 상속과 익스텐션의 비교 클래스의 상속 클래스 타입에서만 가능하다. 특정 타입을 물려받..
[Swift] 25. 델리게이션(delegation), 델리게이트 패턴 공부
2020. 12. 3. 19:23
iOS/Swift
델리게이션은 사전상 의미로 대표자, 위임하다, 대리자 라고 해석할 수 있다. 클래스나 구조체가 따로 혹은 일부 수행해야 하는 일을 다른 타입의 인스턴스에게 위임하는 디자인 패턴이다. 특정 액션에 반응하거나 외부 소스의 기본 타입을 알 필요 없이 외부 소스로부터 데이터를 가져오는데 사용될 수 있다. 간단하게 말해서, A 인스턴스가 하나의 일에만 충실하고 싶을 때, 그 밖의 일들을 B 인스턴스가 대신해서 처리해준다는 것이다. 스위스트에서는 이런 델리게이션의 개념이 적용된 것이 프로토콜이다. 프로토콜은 이전에 공부했듯이 특정 역할을 수행하기 위한 프로퍼티, 메서드, 이니셜라이저 등의 청사진을 정의한다고 알고 있다. 델리게이트는 대신 처리해줄 객체와 처리하라고 시키는 객체로 구분해서 생각하면 된다. 그래서 델리..
[Swift] 24. 프로토콜 (protocol)
2020. 12. 3. 17:29
iOS/Swift
프로토콜 (Protocol) 프로토콜은 특정 역할을 수행하기 위한 메서드, 프로퍼티, 기타 요구사항 등의 청사진을 정의한다. 구조체, 클래스, 열거형은 프로토콜을 채택 해서 특정 기능을 수행하기 위한 프고토콜의 요구사항을 실제로 구현할 수 있다. 어떤 프로토콜의 요구사항을 모두 따르는 타입은 그 프로토콜을 준수한다 라고 표현한다. 타입에서 프로토콜의 요구사항을 충족시키려면 프로토콜이 제시하는 청사진의 기능을 모두 구현해야 한다. 즉, 프로토콜은 기능을 정의하고 제시할 뿐, 스스로 기능을 구현하지 않는다. 프로토콜 정의 프로토콜은 다음과 같이 protocol 키워드를 사용해서 정의할 수 있다. protocol 프로토콜 이름 { /* 프로토콜 정의 */ } 그리고 다음과 같이 프로퍼티, 메서드, 이니셜라이저..
[Swift] 23. assert / guard
2020. 11. 29. 20:08
iOS/Swift
Assertion assert(_:_file:line:) 함수를 사용한다. assert 함수는 디버깅 모드에서만 동작한다. 배포하는 애플리케이션에서는 제외된다. 예상했던 조건의 검증을 위하여 사용한다. 다음과 같이 사용해볼 수 있다. var someInt: Int = 0 assert(someInt == 0, "someInt != 0") // 확인을 위해 someInt 의 값을 1로 변경 someInt = 1 assert(someInt == 0, "someInt != 0") ========== 출력 결과 ========== Assertion failed: someInt != 0: file __lldb_expr_33/study23.playground, line 8 검증에 실패했고 실패한 메시지가 나타나고 f..
스위프트는 어떻게 동작할까?
2020. 11. 25. 18:43
iOS/Swift
스위프트가 어떻게 컴파일 되서 동작하는지 궁금해서 이것저것 찾아보았다. 스위프트는 뛰어난 고성능 LLVM 컴파일러를 사용하여 최신 하드웨어를 최대한 활용할 수 있도록 최적화된 기본 코드로 변환된다. LLVM? low-level virtual machine 언어에 가상 기계를 생성, 가상 기계가 언어에 독립적인 최적화를 실행 언어와 구조로부터 독립적이며, 언어 모듈과 시스템을 위한 코드 생성 부의 사이에 위치한다고 한다. 소스 코드 -> 프론트엔드 -> LLVM Optimizer -> 백엔드 -> 기계어 프 라고 설명이 되어있지만 당장은 무슨소린지..ㅎㅎ 더 이해가 필요해보인다 그래서 아래 위키 참고 😅 그래서 다양한 블로그를 통해 알아보긴 했지만 당장 완벽하게 이해하기는 어렵게 느껴진다. 😄 더 공부해서..
[Swift] 22. 타입 캐스팅 (type casting)
2020. 11. 25. 18:27
iOS/Swift
스위프트의 타입캐스팅 타입 캐스팅은 인스턴스의 타입을 확인하는 용도 이다. 클래스의 인스턴스를 부모 혹은 자식 클래스의 타입으로 사용할 수 있는지 확인하는 용도 is , as 연산자를 사용한다. 정리해서, 인스턴스의 타입을 확인하거나 인스턴스 타입의 슈퍼클래스 또는 서브클래스 타입처럼 다루기 위해 사용! 다음 클래스를 통해 예를 들어서 확인해보려고 한다. class Person { var name: String = "" func breath() { print("하트 비트") } } // Person 클래스 상속 class Student: Person { var school: String = "" func goToSchool() { print("학교 가자") } } // Student 클래스 상속 clas..
[Swift] 21. 옵셔널 체이닝과 nil 병합
2020. 11. 18. 19:18
iOS/Swift
이전에 옵셔널 체이닝에 대해서 다루었던 것이 기억난다. 옵셔널 체이닝은 옵셔널 내부의 내부의 내부로 옵셔널이 연결되어 있을 때 유용하게 활용할 수 있다. 매번 nil 을 확인하지 않아도 최종적으로 원하는 값이 있는지 없는지 확인할 수 있다. 이렇게 말하면 이해가 잘 되지 않으니 예제를 통해 알아봐야겠다. 옵셔널 체이닝 | Optional Chaining 우선, 두 개의 클래스를 만들었다. class Person { var name: String var job: String? var home: Apartment? init(name: String) { self.name = name } } class Apartment { var buildingNumber: String var roomNumber: String..