본문 바로가기

분류 전체보기

(77)
같은 계정으로 다른 컴퓨터에서 git 사용하기 git 명령어 중에 clone을 통해, 원격 저장소의 데이터를 기존 컴퓨터가 아닌 다른 컴퓨터(현재 컴퓨터)로 복제할 수 있다. 그전에 원격 저장소에서 사용하던 이름과 계정을 현재 컴퓨터에 등록시켜 줘야 한다. 기존 컴퓨터에서 Terminal을 열어 아래 명령어를 입력한다. git config --list 그럼 기존 컴퓨터에 등록된 계정 정보가 나타난다. 그중에서 user.name과 user.email 정보를 현재 컴퓨터에 등록해야 한다. 등록하는 방법은 다음과 같다. git config --global user.name abc git config --global user.email def@hij.com 이렇게 사전 준비는 모두 끝이 났다. 이제 저장할 디렉터리로 이동하여, 아래 명령어를 입력하면 해당 ..
생성 패턴 - 싱글톤(Singleton) 1 singleton은 다음과 같은 뜻을 갖고 있다. 디자인 패턴에서의 싱글톤도 singleton의 사전적 의미와 크게 다르지 않다. 싱글톤을 살펴보기 전에 다음 코드를 살펴보자. // NonSingleton.swift class NonSingleton { var number: Int init(_ number: Int = 0) { self.number = number print("number가 \(number)인 인스턴스 생성") } } 해당 클래스의 인스턴스는 number라는 하나의 속성을 갖는다. 이 클래스를 이용해 두 개의 인스턴스를 다음과 같이 생성할 수 있다. 두 객체가 포함하는 각각의 number 변수는 1이라는 같은 값을 갖고 있지만, 두 객체는 명백히 다르다. 따라서 obj1에 포함되어 있는 ..
생성 패턴 - 팩토리(Factory) Factory는 공장을 뜻하는 영어 단어이다. 디자인 패턴 중 팩토리가 왜 팩토리라는 이름을 갖게 되었는지는 유추하면서 포스팅을 읽어 나가는 것도 좋을 것 같다. 먼저 다음 코드를 보자. (클래스 별로 파일을 쪼개고 싶지만, 너무 짧아서 Language.swift에 함께 넣었다) // Language.swift enum LanguageType { case Ko; case En; } protocol Language { func hello() -> String } class Korean: Language { public func hello() -> String { return "안녕" } } class English: Language { public func hello() -> String { return ..
디자인 패턴(Design Pattern) 얼마 전부터 "쉽게 배워 바로 써먹는 디자인 패턴(이호진 지음, 한빛미디어)" 책을 중심으로 디자인 패턴에 대해 공부하고 있는데, 객체 지향 언어에 대한 실용적인 활용을 알 수 있게 되어 좋은 것 같다. 책 소개를 잠깐 하자면, 패턴에 따라 3개(생성 패턴, 구조 패턴, 행위 패턴)의 파트로 되어 있고, 각각의 파트는 다시 여러 개의 챕터로 이루어져 있다. 각각의 챕터는 하나의 디자인 패턴을 중심으로 전개된다. 여기서 다루는 디자인 패턴은 GoF(Gang of Four)가 제시한 23개의 디자인 패턴을 포함하며, 추가로 Factory가 있다. (참고로 Factory은 Factory Method와 Abstract Factory으로 구체화된다) 책을 읽으면서 좋았던 점은, 각각의 챕터가 완전히 독립적이라는 ..
.gitignore 사용하기 .git을 사용하다 보면, commit 하길 원하지 않는 파일이 생길 때가 있다. 이런 경우 .gitignore을 사용하면 쉽게 파일들을 관리할 수 있다. 나의 경우에는 개인 정보(URL 또는 비밀 번호 등)가 GitHub와 같은 온라인 원격 저장소에 commit 되는 것을 원하지 않아서 .gitignore을 사용할 필요성을 느꼈다. 다시 말해, 컴파일을 하는데에 있어 개인 정보가 저장된 파일이 필요하지만 해당 파일을 GitHub에 공유되는 것은 원하지 않아 .gitignore을 사용하였다. 사용 방법은 어렵지 않지만 처음 할 때 많이 헤맸다. 특히 Xcode에서 제공하는 GUI 기반의 git을 함께 사용하면 무언가 잘못했는지 모르지만, 계속해서 오류가 발생했다. 그래서 cache를 제거하고 commit..
접근 수준 활용하여 프레임워크 만들기 연결 리스트에 관한 프레임워크를 만들다가, 서로 연결된 데이터의 수를 반환하는 좋은 방법이 떠올랐다. 연결 리스트 관련 포스팅: https://taeminator1.tistory.com/36 연결 리스트 관련 소스 코드: https://github.com/Taeminator1/Data-Structure 프레임워크 관련 포스팅: https://taeminator1.tistory.com/38 해당 변수의 이름은 Array에서와 마찬가지로 count로 정해줬다. count는 인스턴스의 첫 번째 노드를 시작으로 연결된 노드의 총개수를 반환하는 변수이다. 이러한 count를 구현하기 위해 처음에는 다음과 같이 구현하였다. public class LinkedList { var first: Node? var last..
[Swift]허프만 코딩 구현 3 - 검증 검증하기 전에 압축과 추출에서 구현한 다양한 동작들을 구조체로 묶어보자. Compressor와 Extractor 구조체를 생성하였다. 코드는 지난 시간에 전부 구현을 하였기 때문에 클래스 다이어그램만 제시하고 따로 구현은 필요 없어 보인다. 몇 가지 특성은 다음과 같다. 두 구조체 모두 input을 속성으로 갖는데, 해당 속성은 입력받은 데이터를 의미한다. pNumber는 지난 시간과 동일하게 이진 문자열을 쪼개는 개수이다. ASCII가 7bit의 이진수를 나타내므로 기본값은 7이다. Compressor 구조체의 makeHuffmanCodes()는 허프만 코드를 반환하는데, 이전에 설명한 바와 같이, 허프만 코드는 구할 때마다 값이 다를 수 있어 private으로 선언해 다른 곳에서의 사용을 방지하였다...
[Swift] 유니코드와 숫자 간의 변환 프로그래밍을 하다 보면 데이터 타입 간의 다양한 변환(conversion)이 필요하다. 데이터 변환 중에서 문자를 숫자로 변환하는 것이 종종 필요할 때가 있다. 이 번 시간에는 해당 변환을 하는 방법과 주의 사항에 대한 포스팅이다. 문자를 숫자로 변환하는 방법 중에서 String 타입의 유니코드를 Int 타입의 숫자로 변환하는 방법에 대해 살펴보자. (유니 코드에 대한 설명은 다음 포스팅을 참고하길 바란다. https://taeminator1.tistory.com/50) 유니코드 "A"와 그에 해당하는 숫자 65를 예시로 해서 변환 방법을 살펴보겠다. 먼저 유니코드(String)를 숫자(Int)로 변환하는 방법이다. // 유니코드(String)에 해당하는 Int 값으로 반환 let str: String ..