[Swift] 20. 인스턴스 생성 및 소멸 (init / deinit)
2020. 11. 11. 18:16
iOS/Swift
인스턴스를 생성하는 이니셜라이저와 인스턴스가 소멸될 때 호출되는 디이니셜라이저에 대해서 공부하려고 한다. 클래스나 구조체 등을 만들때 프로퍼티의 값을 할당해주었던 것을 생각해보자. 저장 프로퍼티에 값을 할당하지 않으면 에러가 발생한다. 그래서 인스턴스를 생성함과 동시에 초기값을 따로 할당해서 사용했다. 그런데 초기화와 동시에 프로퍼티의 값을 할당하고 싶을 때 이니셜라이저를 사용할 수 있다. 프로퍼티 초기값 스위프트의 모든 인스턴스는 초기화와 동시에 모든 프로퍼티에 유효한 값이 할당되어야 한다. 프로퍼티에 미리 기본 값을 할당해두면 인스턴스가 생성됨과 동시에 초기값을 지니게 된다. 다음 예를 통해 확인할 수 있다. class PersonPropertyInit { // 모든 저장 프로퍼티에 기본값 할당 va..
리눅스 uniq 명령어
2020. 11. 9. 20:43
리눅스/Command
uinq 명령어 중복된 내용의 행이 연속으로 있으면 중복없이 하나의 행으로 만들어주는 명령어다. sort 명령어와 주로 사용한다. uinq [-c | -d | -u] [-i] [-f num] [-s chars] [input file [output file]] [옵션] -c : 각 출력 행 앞에 입력에서 중복된 행의 횟수를 출력 -d : 입력에서 중복된 행만 출력 -f num : 비교할 때 지정된 수 만큼 비교 대상에서 제외 -s chars : 하나의 행에서 지정된 수 만큼 문자를 비교대상에서 제외 -u : 원래 파일에서 연속으로 중복되지 않는 행만 출력 -i : 비교할 때 대소문자 구분 안함 uniq 명령어 옵션 사용 다음과 같이 중복된 파일을 하나 만들어보았다. $ cat uniq1.txt apple ..
[Swift] 19. 상속(Inheritance)
2020. 11. 9. 20:20
iOS/Swift
스위프트 상속(Inheritance) 상속은 클래스, 프로토콜 등에서 가능하다. 열거형, 구조체는 상속이 불가능하다. 스위프트의 클래스는 단일 상속으로, 다중 상속을 지원하지 않는다. 프로토콜의 경우 여러개를 채택할 수 있다. 상속하는 클래스는 하위클래스(subclass), 상속받은 클래스는 슈퍼클래스(superclass) 로 알려져있다. 이번에는 클래스의 상속에 대해서 공부할 예정이다. 클래스에서 상속은 다음과 같이 사용할 수 있다. class 이름: 상속받을 클래스 이름 { 구현부 } 클래스를 정의한 후 변수나 상수에 타입을 정해줄 때 처럼 상속을 해줄 수 있다. 예를 들어, 상속할 상위 클래스를 만들어 보았다. class Person { var name: String = "" func selfInt..
[Swift] 18. 프로퍼티 (Property) - 추가적인 보완 필요
2020. 11. 5. 21:06
iOS/Swift
프로퍼티(Property) 지난 번에도 프로퍼티에 대해서 간단하게 이해하고 넘어간 것 같은데 이번에는 자세하게 공부해보려고 한다. 프로퍼티는 직역해보면 재산, 소유물 이라는 의미로 번역할 수 있다. 보통은 속성이란 단어로 대체하는데 여기에서 말하는 프로퍼티는 클래스, 구조체, 열거형 등의 객체 인스턴스가 그 내부에 가지고 있는 객체의 상태에 관한 정보를 말한다. 즉, 프로퍼티는 속성 값에 접근하는 방법을 말한다. 따라서, 프로퍼티는 다음과 같이 사용할 수 있다. 프로퍼티는 구조체, 클래스, 열거형 내부에 구현할 수 있다. 열거형 내부에는 연산 프로퍼티만 구현할 수 있다. 연산 프로퍼티는 var 로만 선언할 수 있다. 연산 프로퍼티를 읽기 전용으로는 구현할 수 있지만, 쓰기 전용으로는 구현할 수 없다. 읽..
리눅스 sort 명령어
2020. 11. 4. 17:37
리눅스/Command
sort 명령어 사용자가 지정한 파일의 내용을 정렬하거나 정렬된 파일의 내용을 병합할 때 사용한다. # sort [옵션] ... [파일명] ... [자주 사용하는 옵션] -r, --reverse : 역순으로 정렬한다. -k, --key=POS1 : 정해진 필드를 기준으로 정렬한다. ex) sort -k2 : 2번째 필드로 정렬 -u, --unique : 정렬 후 중복된 내용을 제거한다. -t, --field-separator=SEP : 필드 구분자를 지정, -k 옵션으로 필드를 지정해서 사용할 때 좋다. -f, --ignore-case : 대소문자를 구분하지 않고 정렬한다. sort 명령어 옵션 사용 기본적으로 명령어를 사용하면 결과는 다음과 같다. // sort 명령어를 사용할 텍스트 파일 # cat ..
[Swift] 17. 클로저(closure) 고급
2020. 11. 3. 16:12
iOS/Swift
클로저를 다양하게 사용하는 방법에 대해서 공부했다. 후행클로저, 반환타입 생략, 단축 인자 이름, 암시적 반환 표현 의 다양한 모습으로 클로저를 표현할 수 있다. 일반적으로 클로저는 다음과 같이 사용할 수 있다. // 클로저 기본 표현 func calcluate(a: Int, b: Int, method: (Int, Int) -> Int) -> Int { return method(a, b) } 지난 번에 클로저 기본에 대해서 공부할 때 함수의 인자로 받아 사용했던 기억이 있다. 이번에는 클로저의 기본 문법에서 다양한 모습으로 바꿔서 사용해보려고 한다. 후행 클로저 함수의 매개변수 마지막으로 전달되는 클로저는 후행 클로저(trailing closure)로 함수 밖에 구현할 수 있다. 클로저가 함수의 마지막 ..
[Swift] 16. 클로저(closure) 기본
2020. 11. 2. 20:36
iOS/Swift
클로저 | Closures 클로저는 실행 가능한 코드 블럭 {} 이다. 오브젝트-C 의 블럭과 다른 언어의 람다와 유사하다고 한다. 함수와 다르게 이름 정의는 필요하지 않지만, 매개변수 전달과 반환 값이 존재할 수 없다는 점이 동일하다. 함수는 이름이 있는 클로저 다. 일급 객체로 전달인자, 변수, 상수 등에 저장 및 전달이 가능하다. 참조 타입 이다. 그럼 클로저는 어떻게 사용하는가? { (매개변수 목록) -> 반환타입 in 실행 코드 } 실행 가능한 코드 블럭이라고 했기 때문에 { } 중괄호로 감싸져있다. 괄호를 이용해 파라미터를 정의하고 -> 을 이용해 반환 타입을 명시한다. "in" 키워드를 이용해 실행 코드와 분리한다. func sumFunction(a: Int, b: Int) -> Int { ..
네트워크 장비(브릿지, 스위치, 라우터)
2020. 10. 28. 21:13
시스템/네트워크
하나의 컴퓨터에서 일정 지역에 도달할 수 있는 신호를 주변 모든 컴퓨터에게 전달한다. 이때, 신호를 전달할 수 있는 범위를 세그먼트(Segment)라고 한다. 하나의 세그먼트는 하나의 신호를 보낼 수 있다. 그래서 세그먼트가 동시에 두개의 신호를 보낼 수 없다. 브릿지 그래서 세그먼트를 분리해주는 브릿지(Bridge) 가 나오게 되었다. 브릿지는 콜리전 도메인(세그먼트)을 분리해 연결해주고 패킷을 전달해준다. 그래서 동일한 세그먼트로 이동하는 것을 차단해주고 다른 세그먼트로 이동시 전달해준다. 전달 받은 데이터 MAC 주소와 브릿지가 가지고 있는 MAC 주소를 비교해서 MAC 테이블에 있는 주소라고 하면 해당 포트로만 데이터를 전송하는데 없는 주소라고 하면 송신 포트를 제외하고 모든 포트로 보낸다. 또한..