iOS 뉴비입니다.

커링(Currying) in Swift

April 20, 2015 Blog

커링(Currying) 수학과 컴퓨터 과학에서 커링은 다중 인수를 갖는 함수를 단일 인수로 갖는 함수들의 함수열로 바꾸는 것입니다.[1] 언커링(UnCurrying)은 커링의 듀얼 변형으로 f(x) 함수를 취하면 그 결과로 g(y)라는 다른 함수를...

Swift – Set 정리

April 14, 2015 Blog

이번에 업데이트 된 Swift 1.2에서는 Set 타입이 추가되었습니다. 따라서 Set을 정리해볼려고 합니다. 더 자세한 내용을 보길 원하시면 Apple Document를 참고하시기 바랍니다. Set Swift의 Set 타입은 NSSet 클래스를 브릿지된...

Insertion Sort in swift

April 14, 2015 Blog

Insertion Sort 삽입 정렬은 이전에 정렬된 배열과 비교하여 자신의 위치를 찾아 삽입합니다. 시간복잡도는 O(n2)입니다. 의사 코드는 다음과 같습니다. function insertionSort(array A) for i from 1 to length[A]-1 do...

예제로 살펴본 함수형 프로그래밍 in Swift

April 12, 2015 Blog

들어가기전에 이 글은 Functional Programming in Swift의 BattleShip 예제를 참고하였으며, 해당 예제는 1994년에 작성된 논문에서 확인할 수 있습니다. 함수형 프로그래밍 함수형 프로그래밍은 자료처리를 수학적 함수( f(x)=y )의 계산으로...

디자인패턴 – 데코레이터 패턴(Decorator Pattern)

April 8, 2015 Blog

데코레이터 패턴(Decorator Pattern) 데코레이터 패턴은 기존의 코드를 건드리지 않고 확장하도록 합니다. 디자인의 원칙 중 하나인 OCP(Open-Closed Principle)을 준수합니다. 출처 : Head First Design Pattern Component 추상 클래스로 데코레이터로...

BubbleSort in swift

April 6, 2015 Blog

Bubble Sort 두 인접한 원소를 검사하여 정렬하는 방법으로 시간 복잡도는 O(n^2)입니다. func bubbleSort<T: Comparable where T == T>(var arr: [T]) -> [T]{ for (i, iValue) in enumerate(arr) {...

디자인패턴 – 커맨드 패턴(Command Pattern)

April 4, 2015 Blog

커맨드 패턴(Command Pattern) 커맨드 패턴은 요청을 객체로 캡슐화하여 명령을 단순화합니다. 요청과 수행에 있어서 분리하여 느슨한 관계를 가집니다. 클라이언트(client)는 커맨드 객체를 생성하며, 인보커(invoker)에 커맨드 객체를 저장합니다. 또한, 커맨드 객체에는...

내 블로그.. 이대로 좋은가?

April 3, 2015 Blog

작년 9월 이후 반년 넘은 뒤에 블로그 이곳 저곳 태그 깨진 글들을 찾아 수정하면서 '내 블로그가 이대로 좋은가' 라는 생각에 접어들게 되었다. 사람마다 각각의 스타일이 있지만, 다른 분들의...

MergeSort in swift

April 2, 2015 Blog

MergeSort MergeSort의 로직은 다음과 같습니다. 정렬되지 않은 리스트를 n개의 서브리스트를 만들고 리스트의 개수가 1이라면 정렬된 것으로 처리합니다. 1개의 서브리스트로 될때까지 정렬하면서 합칩니다. 다음은 정렬되지 않은 리스트를 n개의 서브리스트로...

Quick Sort in swift

April 1, 2015 Blog

QuickSort는 분할 정복(Divide and Conquer) 방법을 통해 리스트를 정렬합니다. 따라서 분할하는 부분에 대해서 고차함수인 filter를 이용하여 처리할 수 있습니다. func quickSort(var array: [Int]) -> [Int] { if array.isEmpty...

쉽게 값을 교환하기 in swift

April 1, 2015 Blog

일반적으로 값을 Swap 하기 위해서는 임시로 값을 저장하고 꺼내어 쓰게 됩니다. var tmp = str1 str1 = str2 str2 = tmp Swift에서는 다음과 같이 한줄로 처리할 수 있습니다....

테이블뷰의 List에 게으르게 데이터를 반영하기 in Swift

March 31, 2015 Blog

원래는 blur 관련하여 검색을 하다 Raywenderlich의 예제 소스에서 tableview에 GCD를 이용하여 row를 추가하는 방법을 보고 성능에 대해서 이러한 방식도 괜찮다고 생각되었습니다. 데이터 가져오기 우선 데이터를 저장할 클래스를 만듭니다....

Go 시작하기(초간단) on Mac

March 27, 2015 Blog

Mac 환경에서 brew가 설치되어 있다면 아주 간단하게 Go를 설치할 수 있습니다. $ brew install go 이제 hello, world를 출력해보록 hello.go 파일을 작성합니다. package main import "fmt" func main()...

GCD를 이용한 RaceCodition 만들기 in Swift

March 26, 2015 Blog

GCD를 이용한 RaceCondition 발생시키기 예전에 코딩테스트를 보는데 다음과 같은 문제가 나와 풀었던 적이 있습니다. 해당 문제를 Swift 방식으로 쉽게 풀고자 합니다. 문제는 다음과 같습니다. localCountLabel이 3개 있고 globalCountLabel이...

NSUserDefaults 값 초기화하기 in Swift

March 6, 2015 Blog

NSUserDefaults 값 모두 초기화 하기 간혹 테스트 및 초기 값 상태에서 작업할 시 NSUserdefault 값을 다 날려야할 경우가 있는데 이를 수행하는 Code Snippet 입니다. for key in NSUserDefaults.standardUserDefaults().dictionaryRepresentation().keys...

유럽 여행 끝!

March 3, 2015 Blog

첫 배낭 여행이자 유럽여행이 끝났다. 30.09.14 ~ 02.03.15, 달수로는 7개월, 154일 기간으로 여행을 다녀왔다. 영국(런던,윈저,바스,브리스톨,맨체스터) 스코틀랜드(글래스고,에든버러-하이랜드투어) 프랑스(파리,릴,리옹,마르세유,니스) 벨기에(브뤼헤,겐트,브뤼셀) 네덜란드(암스테르담) 독일(뒤셀도르프,쾰른,레버쿠젠,코플렌츠,프랑크푸르트,비스바덴,하이델베르크,퓌센,드레스덴,베를린,하노버,함부르크) 체코(프라하,체스키크룸로프) 덴마크(코펜하겐) 스웨덴(스톡홀름) 핀란드(헬싱키) 러시아(상트페테르부르크) 리트비아(리가) 폴란드(바르샤바,크라쿠프) 헝가리(부다페스트)...

2014년 마지막 포스팅

September 27, 2014 Blog

올해는 정말 다사다난한 한해로 기억될 것 같다. 회사에서 이런저런 사정으로 퇴사하였고, 집이 경매 넘어가서 돈 날릴까봐 전전긍긍하다 거의 마지막 순위로 돈을 다 받았기도 하였고, 경력은 3년차지만.. 기술에 대한...

Swift – Map, Filter, Reduce 그리고 추론

September 25, 2014 Blog

우선 Swift의 Map, Filter, Reduce에 설명하기 앞서 Closure에서 사용될 추론에 대해 먼저 설명하고자 합니다. 추론(Inference) 애플 문서에도 나와있지만 Swift에서 추론은 아주 강력하며, 코드의 양을 줄여줍니다. 대신, 추론을 이해하지...

swift – ?? 중위 연산자

September 24, 2014 Blog

Swift의 연산자 중에 ?? 라는 중위 연산자가 있습니다. ?? 중위 연산자는 두 값을 비교하여 왼쪽의 값이 nil이라면, 오른쪽 값을 반환하는 동작을 합니다. 우선 기본적인 예제로, i값이 nil이고 j이...

Swift – Advanced Operators 정리

September 23, 2014 Blog

고급 연산자(Advanced Operators) Swift는 더 복잡한 값 조작을 동작하는 몇가지 고급 연산자를 제공한다. 비트 관련 연산자는 C와 Objective-C와 유사하다. Swift에 산술 연산자는 기본적으로 오버플로우를 제공하지 않는다. 오버플로우 행동은...

Swift – Access Control 정리

September 21, 2014 Blog

접근 제어(Access Control) 접근 제어는 다른 소스 파일과 모듈에 코드로부터 코드의 일부에 접근을 제한한다. 코드의 상세 구현을 숨기며, 코드가 접근하고 사용하도록 바람직한 인터페이스를 지정한다. 지정한 접근 수준을 개별적인...

Swift – Generics 정리

September 19, 2014 Blog

제네릭(Generics) 제네릭 코드는 유연하게 작성할 수 있고, 재사용가능한 함수와 타입이 어떤 타입과 작업할 수 있도록 요구사항을 정의한다. 중복을 피하고 의도를 명확하게 표현하고, 추상적인 방법으로 코드를 작성할 수 있다....

Swift – Protocols 정리

September 18, 2014 Blog

프로토콜(Protocols) 프로토콜은 메소드, 속성 그리고 다른 특정 작업 또는 기능의 부분에 맞는 요구 사항의 청사진을 정의한다. 프로토콜은 실제로 이들 요구사항 구현을 제공하지 않는다. - 구현 처럼 보이도록 설명한다....

Swift – Extensions 정리

September 16, 2014 Blog

확장(Extensions) 확장은 기존 클래스, 구조체 또는 열거형 타입에 새로운 기능을 추가한다. 기존 소스 코드에서 접근하지 못하는 타입들을 확장하는 능력이다(소급 적용 모델링). 확장은 Objective-C의 카테고리와 유사하다(Swift 확장은 이름을 가지지...

Swift – Automatic Reference Counting 정리

September 11, 2014 Blog

자동 참조 계수(Automatic Reference Counting) Swift는 앱의 메모리 사용을 추적하고 관리하는 자동 참조 계수(ARC)를 사용. 대부분의 경우에 메모리 작업은 잘 작동하며, 메모리 관리를 생각할 필요 없다. ARC는 인스턴스가...

node.js debugging

September 9, 2014 Blog

node-inspector 1.Chrome이 깔려 있는지 확인한다.(firefox, safari에서는 테스트 하지는 못하였다.아마도 웹킷을 지원하는 브라우저이면 가능하지 않을까 싶다.) 2.nodeJS가 0.3.0버전 이후인지 확인한다. $ node -v 3.node-inspector를 설치한다. $ npm isntall -g...