SlideShare ist ein Scribd-Unternehmen logo
1 von 184
Downloaden Sie, um offline zu lesen
안녕하세요 SWIFT
WWDC 2014
OSXDEV 김영후
짤방이 제거된 버전
출처
• WWDC 2014 키노트
• WWDC 2014 402, 403, 404, 407
• The Swift Programming Language
• Using Swift with Cocoa and Objective-C
• https://medium.com/swift-programming/
–가로수길 M사 W대표님
“이제 다시 같은 출발선에 섰다 ㅋㅋㅋ”
스위프트에 대한 소개
누구를 대상으로 할 것인가?
기존의 iOS 개발자들
Objective-C 마스터
iOS 경험은 있지만
마성의 [[[ObjectiveC 가] 싫어서] 중단];
스위프트 떡밥을 문 타 언어 고수
비 개발자
“스위프트 좀 쉽다는데?”
기존의 iOS 개발자들
+ 다른 언어에 경험이 있는 개발자
ㅠㅠ 죄송
스위프트의 주요 기능에 대한 전반적인 개요
양이 너무 많음
그래서
여러분이 스위프트를 공부한다면
여기쯤에서?
클래스까진 봐야지
그래서
골라봤습니다
목차
• 소개
• Optional
• Memory Management
• Initialization
• String
• Closures
• Pattern Matching
• Generics and Protocols
목차
• 소개
• Optional!
• Memory Management!
• Initialization!
• String!
• Closures
• Pattern Matching
• Generics and Protocols
꼼꼼하게 책으로 공부하실때
생각 나실 수 있도록
SWIFT 소개
Chris Lattner
• 2000년 일리노이 석사시절 LLVM
• 2005년 애플 합류
• 2010년에 Swift 개발을 시작
• 2011년에 개발자들이 합류, 2013년에 애플 개발 툴의 주요
포커스가 됨
• “Objective-C, Rust, Haskell, Ruby, Python, C#, CLU,
and far too many others to list.” (Chris Lattner)
[크리스 래트너 김정님]
SWIFT
• LLVM 기반
• SWIFT는 SWIFT다
• 함수형
• Safety (Safe, Modern, Powerful)
LLVM & SWIFT
“더 이상의 자세한 설명은 생략한다”
SWIFT는 SWIFT
Objective-C
• C언어의 프리프로세서 + 런타임 확장 = 슈퍼셋
• 모든 코드에 존재론적 의문을 가질 수 있음
• 클래스는 C에서 어떻게 표현되는가?
• 메세징은 C에서 어떻게 수행되는가?
• 대신 엄청난 메타프로그래밍이 가능
• class_replaceMethod,
• class_getClassMethod
• imp_implementationWithBlock
Objective-C
런타임에 NSValueTransformer의 서브클래스 생성
NSValueTransformer+TransformerKit.m
SWIFT
• Objective-C와 상호운용성이 뛰어나지만 의존하진 않음
• Enum은 스위프트 Enum
• Class는 스위프트 Class
• Struct는 스위프트 Struct
• String은 스위프트 String
Safety
Safe, Modern, Powerful
Optional
• var optionalNumber: Int?
• 값이 있을수도 / 없을수도 있는 상황을 표현
• optionalNumber = 6
• optionalNumber = nil
Non-Optional
• var myString:String = “aString”
• myString = nil 

//컴파일 에러
한편 Objective-C에선…
부재를 표현하는 것들
• nil
• Nil
• NULL
• [NSNull null]
• -1
• 0
• NSNotFound = NSIntegerMax
• INT_MAX
• nullable (C#): int? i
NSString *f
pointer to NSString or nil
char *
pointer to char or NULL
nil/NULL의 존재는 정적 타입 시스템이
커버하지 못하는 약점
C = Static but not Strong
[nil isEqual: nil]
참이어야 하지만 nil에다 메세징을 하면 값은 0
NSUInteger index = [array indexOfObject: obj]

[array removeObjectAtIndex: index] 

//index가 NSNotFound라면 Runtime Error
//SWIFT

func indexOfObject(obj: T) -> Int?
array.removeObjectAtIndex(array.indexOfObject(obj)) 

//Compile error
Optional Return Types
• let age:Int? = mySomeString.toInt()
• Type Inference
• let age = mySomeString.toInt()

Unwrapping Optional
• let age = mySomeString.toInt()
• println(age); //컴파일 에러
• println(age!);
Optional Binding
• println(“My age is, (age!)”); 

//age가 nil이면 에러
• var age:Int? = mySomeString.toInt()

if let ageValue = age {

println(“나는 (ageValue)살 입니다”)

} else {

println(“나는 태어나지 않았습니다”)

}
Optional Binding
• if let age = mySomeString.toInt() {

println(“나는 (age)살 입니다”)

} else {

println(“나는 태어나지 않았습니다”)

}
Optional Chaining
Optional Chaining
Optional Chaining
여기서 안전하게
buildingNumber를 가져오려면?
Residence가 nil인가?
Address가 nil인가?
buildingNumber가 nil인가?
Optional Chaining
Optional Chaining
Optionals
• 없을 수도 있는 값에 대한 안전한 표현형
• 없으면 nil
• 값을 꺼내기 위해 ! 오퍼레이터를 사용해야 하지만
• if let을 사용하자
• Optional Chaining은 복잡한 구조와의 작업을 간결하게
Memory Management
• Automatic Reference Counting
• Reference cycle
• weak and unowned
Reference cycle
weak
• Optional
• 레퍼하는 객체가 deallocated되면 그 값이 nil이 됨
• Objective-C에서 애용
weak
unowned
• weak처럼 레퍼 객체를 strong hold하지 않음
• nil이 되는 weak과 달리 값이 항상 있다고 가정함
• unowned를 쓰는 객체는 unowned 객체가 해제될 때
같이 날라감
unowned
상하관계가 있는 레퍼런스 사이클
을 만들때
unowned가 우리가 보통 생각하는 것
weak, unowned
• weak 독립적인 라이프사이클을 가지는 객체들에 사용
• unowned 같은 라이프사이클을 가지는 객체들에 사용
Initialization
모든 값은 사용되기 전에 초기화 되어야 한다
Initialization
• var message: String
• if sessionStarted {

message = “스위프트 세미나에 오신걸 환영합니다”

}
• println(message) 

//컴파일 에러
Initialization
• var message: String
• if sessionStarted {

message = “스위프트 세미나에 오신걸 환영합니다”

} else {

message = “”

}
• println(message)
Initializers
• Initailizer는 모든 프로퍼티를 초기화 해야한다
• struct Color {

let red, green, blue: Double

init(grayScale: Double) {

green = grayScale

blue = grayScale

}

} //컴파일 에러: red 값이 초기화 되지 않음
Initializers
• struct Color {

let red, green, blue: Double

init(grayScale: Double) {

red = grayScale

green = grayScale

blue = grayScale

}

}
Initializers
• struct Color {

let red, green, colour: Double

mutating func validateColor() { … }

init(grayScale: Double) {

red = grayScale

green = grayScale

validateColor()

blue = grayScale

}

} //error
Initializers
• struct Color {

let red, green, colour: Double

mutating func validateColor() { … }

init(grayScale: Double) {

red = grayScale

green = grayScale

blue = grayscale

validateColor()

}

}
Memberwise Initializers
• struct Color {

let red, green, blue: Double

}
• let magenta = Color(red: 1.0, green: 0.0, blue: 1.0)
Default Values
• struct Color {

let red = 0.0, green = 0.0, blue = 0.0

}
클래스
• class Home {

var phone:Phone?

var mac:Mac



init() {



}

} //컴파일 에러
클래스
• class Home {

var phone:Phone?

var mac:Mac



init() {

mac = Mac()

}

}
클래스
• class Home {

var phone:Phone?

var mac:Mac?

}
클래스 상속
슈퍼 콜이 뒤에 와야함
Designated
• 모든 프로퍼티를 초기화 시키는 생성자
Convenience
• 최종적으로 Designated Initializer를 호출하는 짧은 생성자
• 다른 Convenience를 호출하여 Designated로 가도 됨
생성자는 어떻게 상속되나
모든 프로퍼티를 초기화하라지만
그 값이 비쌀 경우
@lazy를 씁니다
deinit
객체 라이프사이클이 종료될 때 호출 됨
ARC 때문에 별로 쓸일은 없지만 리소스/옵저버 해제용
Initailization 정리
• 모든 값은 사용전에 초기화 되어야 한다
• super.init 전에 모든 프로퍼티 값이 초기화 되어야 한다
• Designated는 상위 생성자만을 호출한다
• Convenience는 상위 생성자를 호출하지 않는다
이 모든걸
컴파일 타임에!
이제 Optional과 Init을 알았으니
정리 겸 설명안하고 넘어간 Optional 기능
Implicitly Unwrapped Optionals
또 다른 느낌표
흔히 Objective-C에서 작성하던 코드
viewDidLoad에서 UITableView를 초기화
컴파일이 될까요?
안됨
initializers가 필요한 이유는? 

TimelineViewController가 생성될 때 tableView가 초기화 되지 않음
하지만 난 viewDidLoad에서 UITableView를 초기화 하고 싶은데?
self.view.bounds/frame을 쓸 수 있잖아
이렇게 된 이상 Optional로 간다
매번 느낌표를 써야함
tableView!.delegate = self
Implicitly Unwrapped Optionals
를 이래서 씁니다
UITableView! 와 같이 선언하면 Optional이지만 개발자와의 

으리로 생성후엔 !를 안써도 컴파일러가 믿어줌
보통 Optional과 완전 동일
런타임 크래시도 동일
!로 언래핑 명시를 안하는건 개발자와의 으리
Non-Optional과 구별이 안되잖아요?
타입 선언부를 보지 않고선 그렇습니다
불완전한 세상
Objective-C로 만들어진 프레임워크를 이용할 때는 너무 옵셔널이 많으므
로 너무 많은 Unwrapping!을 피하기 위해 고육지책으로 넣지 않았나 싶음
아직 판단 유보
하지만 애플은 대부분의 UI 프로퍼티에 잘 씁니다
UITableViewController도 UITableView!로 선언
!
애플의 Interoperability 가이드에도 전부 사용
원점으로 돌아가서
이 UIViewController에서 이 UITableView가 nil일 가능성이 있는가?
없는데 Optional을 써야하는가?
물론 init에서 초기화를 하면 Optional을 안쓸 수 있습니다
더 안전한 세상
var 대신 let
Optional 대신 Non-Optional
Implicitly Unwrapped Optionals
이 방향성에 약간 물음을 가지게 되는 기능
하지만 이해는 한다…
String
and NSString
String
• NSString이 아니다
• 단 스위프트가 자동으로 NSString과 브릿지를 만듬
• NSString이 필요 한곳에 String을 넣으면 알아서 처리됨
• NSString을 명시적으로 쓸 일은 거의 없다고…
String - NSString
• 스위프트가 Objective-C API를 임포트하면
• 모든 NSString타입을 String타입으로 암묵적으로 변환
• vice versa
Mutability
• NSString의 대응이 아니라는 확실한 예
NSString 메소드
• commaSeparatedNames는 String
• componentsSeparatedByString은 NSString의 메소드
• 자동적으로 String -> NSString -> String 변환
두 메소드만
• length와 characterAtIndex는 String에서 불가능
• Character 타입이 추가되었고 String은 Character의
컬렉션으로 바뀌었기 때문
• countElement(mySwiftString) //글로벌 메소드
• 유니코드 문제
NSString
• NSString을 명시적으로 선언하면
• 두 메소드를 사용가능
NSString
NSString + NSString
String + NSString
Closure
리턴 없애기
인자 없애기
괄호를 없애자
Trailing Closures
• dispatch_async(queue, ^{

…

});
• dispatch_async(queue) {

…

}

다른 언어에서 많이 보던거
__block은 없어
Closure Are ARC Objects
이것이 문제
Objective-C에선
• __weak MyObject *weakSelf = self;

[self setMyBlock:^(id obj) {

__typeof__(self) strongSelf = weakSelf;

if (strongSelf) {

//일 좀 하자…

}

}];
weak은 스위프트에서 유효함
하지만 unowned가 출동하면 어떨까
다
TempNotifier가 해제될 때 블록도 해제 됨
무조건 예뻐야 함
패턴매칭
패턴?
패턴매칭
Switch, Tuple, Enum, Guard
enum과 함께
연관된 값을 가지는 enum, Delayed
enum의 값을 바인딩해서 사용 가능
일반 스위치문
조건이 A면 X코드를 실행, B면 Y코드를 실행, C면 Z코드를 실행
단순한 조건 체크에 따른 분기
패턴매칭
패턴매칭은 X,Y,Z에서 X와 Y가 어떤 패턴이면 Y와 Z값을 쓰겠다
튜플, 바인딩, _
조건문도 가능 (Guard)
딕셔너리 값을 검증하는 함수
딕셔너리 값을 검증하는 함수
abbr은 꼭 2글자여야 함
Declarative programming
한편 함수형 힙스터들에게
패턴매칭은 사랑입니다
Assignment가 없음 = 는 패턴 매칭일 뿐
Erlang
함수 호출에 패턴 매칭을 적용하여 함수를 분리해서 구현 가능
Erlang
SWIFT도 충분히 좋음
FizzBuzz
• “Why Can't Programmers.. Program?” -
CodingHorror
• 1부터 100까지 출력하되 3의 배수는 fizz, 5의 배수는
buzz, 3과 5의 공배수면 fizzbuzz
• func fizzbuzz(i: Int) -> String {

switch (i % 3, i %5) {

case (0, _):

return “Fizz”

case (_, 0):

return “Buzz”

case (0, 0):

return “FizzBuzz”

default:

return “(i)”

}

}



for number in 1..100 {

println(fizzbuzz(number))

}
Scala
고통받는 Python
파이썬 좋습니다 (List Comprehension)
Protocols and Generic
프로토콜
프로토콜 확인
• if let pullableObject = object as Pullable {
• as는 타입 캐스팅
• as Thing (클래스) 와 as Pullable (프로토콜)의 문법이 동일
Special Protocol
class MyObject : FloatLiteralConvertible
let myObject:MyObject = 2.0
언어 확장에 큰 역할을 함
XXXLiteralConvertible
DSL을 구현
SWIFT-JSON
https://medium.com/swift-programming/swift-and-json-reborn-b6f4f232e35e
Generic
하지만 제네릭이 출동하면 어떨까
제! 네! 릭!
Generic한 스택을 만들어봅시다
이 Stack으로 for를 돌고 싶다면?
컴파일 에러!
for in의 비밀
파이썬의 이터레이터 프로토콜
Generator Protocol
Advanced Swift = Protocol Hacking
정리
• Optional과 Initalization을 이해하자
• unowned 짱
• 스위프트 타입(String)은 오브젝티브씨 타입(NSString)이 아니다
• 더 안전한 코드를 쓰려고 하자
• 프로토콜이나 패턴매칭등의 멋진 기능들은 당장 몰라도 좋지만 할
수 있는 길이 열렸다
Safety
Safe, Modern, Powerful
감사합니다

Weitere ähnliche Inhalte

Was ist angesagt?

Angular2를 위한 타입스크립트
Angular2를 위한 타입스크립트Angular2를 위한 타입스크립트
Angular2를 위한 타입스크립트Jin wook
 
Effective c++ 2
Effective c++ 2Effective c++ 2
Effective c++ 2현찬 양
 
Effective c++chapter4
Effective c++chapter4Effective c++chapter4
Effective c++chapter4성연 김
 
Effective c++chapter1 and2
Effective c++chapter1 and2Effective c++chapter1 and2
Effective c++chapter1 and2성연 김
 
More effective c++ 1
More effective c++ 1More effective c++ 1
More effective c++ 1현찬 양
 
Effective c++ chapter3, 4 요약본
Effective c++ chapter3, 4 요약본Effective c++ chapter3, 4 요약본
Effective c++ chapter3, 4 요약본Dong Chan Shin
 
이펙티브 C++ (7~9)
이펙티브 C++ (7~9)이펙티브 C++ (7~9)
이펙티브 C++ (7~9)익성 조
 
Effective c++chapter8
Effective c++chapter8Effective c++chapter8
Effective c++chapter8성연 김
 
effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리Injae Lee
 
Effective c++chapter3
Effective c++chapter3Effective c++chapter3
Effective c++chapter3성연 김
 
Effective c++ 1
Effective c++ 1Effective c++ 1
Effective c++ 1현찬 양
 
이펙티브 C++ 스터디
이펙티브 C++ 스터디이펙티브 C++ 스터디
이펙티브 C++ 스터디quxn6
 
More effective c++ 2
More effective c++ 2More effective c++ 2
More effective c++ 2현찬 양
 
More effective c++ 항목30부터
More effective c++ 항목30부터More effective c++ 항목30부터
More effective c++ 항목30부터Dong Chan Shin
 
Chapter7~9 ppt
Chapter7~9 pptChapter7~9 ppt
Chapter7~9 pptInjae Lee
 
More effective c++ chapter1,2
More effective c++ chapter1,2More effective c++ chapter1,2
More effective c++ chapter1,2문익 장
 
More effective c++ 3
More effective c++ 3More effective c++ 3
More effective c++ 3현찬 양
 
Refelction의 개념과 RTTR 라이브러리
Refelction의 개념과 RTTR 라이브러리Refelction의 개념과 RTTR 라이브러리
Refelction의 개념과 RTTR 라이브러리ssuser7c5a40
 
[Toolcon2014] WebStorm에서 자바스크립트 리팩토링하기
[Toolcon2014] WebStorm에서 자바스크립트 리팩토링하기[Toolcon2014] WebStorm에서 자바스크립트 리팩토링하기
[Toolcon2014] WebStorm에서 자바스크립트 리팩토링하기우영 주
 

Was ist angesagt? (19)

Angular2를 위한 타입스크립트
Angular2를 위한 타입스크립트Angular2를 위한 타입스크립트
Angular2를 위한 타입스크립트
 
Effective c++ 2
Effective c++ 2Effective c++ 2
Effective c++ 2
 
Effective c++chapter4
Effective c++chapter4Effective c++chapter4
Effective c++chapter4
 
Effective c++chapter1 and2
Effective c++chapter1 and2Effective c++chapter1 and2
Effective c++chapter1 and2
 
More effective c++ 1
More effective c++ 1More effective c++ 1
More effective c++ 1
 
Effective c++ chapter3, 4 요약본
Effective c++ chapter3, 4 요약본Effective c++ chapter3, 4 요약본
Effective c++ chapter3, 4 요약본
 
이펙티브 C++ (7~9)
이펙티브 C++ (7~9)이펙티브 C++ (7~9)
이펙티브 C++ (7~9)
 
Effective c++chapter8
Effective c++chapter8Effective c++chapter8
Effective c++chapter8
 
effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리
 
Effective c++chapter3
Effective c++chapter3Effective c++chapter3
Effective c++chapter3
 
Effective c++ 1
Effective c++ 1Effective c++ 1
Effective c++ 1
 
이펙티브 C++ 스터디
이펙티브 C++ 스터디이펙티브 C++ 스터디
이펙티브 C++ 스터디
 
More effective c++ 2
More effective c++ 2More effective c++ 2
More effective c++ 2
 
More effective c++ 항목30부터
More effective c++ 항목30부터More effective c++ 항목30부터
More effective c++ 항목30부터
 
Chapter7~9 ppt
Chapter7~9 pptChapter7~9 ppt
Chapter7~9 ppt
 
More effective c++ chapter1,2
More effective c++ chapter1,2More effective c++ chapter1,2
More effective c++ chapter1,2
 
More effective c++ 3
More effective c++ 3More effective c++ 3
More effective c++ 3
 
Refelction의 개념과 RTTR 라이브러리
Refelction의 개념과 RTTR 라이브러리Refelction의 개념과 RTTR 라이브러리
Refelction의 개념과 RTTR 라이브러리
 
[Toolcon2014] WebStorm에서 자바스크립트 리팩토링하기
[Toolcon2014] WebStorm에서 자바스크립트 리팩토링하기[Toolcon2014] WebStorm에서 자바스크립트 리팩토링하기
[Toolcon2014] WebStorm에서 자바스크립트 리팩토링하기
 

Andere mochten auch

Red Rock International 레드록인터네셔널 공개강좌안내
Red Rock International 레드록인터네셔널 공개강좌안내Red Rock International 레드록인터네셔널 공개강좌안내
Red Rock International 레드록인터네셔널 공개강좌안내John lee
 
2014 SXSW Interactive Awards Finalists
2014 SXSW Interactive Awards Finalists2014 SXSW Interactive Awards Finalists
2014 SXSW Interactive Awards FinalistsBaik Seunggwon
 
Swift 0x01 환경 설정
Swift 0x01   환경 설정Swift 0x01   환경 설정
Swift 0x01 환경 설정Hyun Jin Moon
 
KTH_Detail day_안드로메다에서 온 디자이너이야기_3차_디자인기본요소_박지환
KTH_Detail day_안드로메다에서 온 디자이너이야기_3차_디자인기본요소_박지환KTH_Detail day_안드로메다에서 온 디자이너이야기_3차_디자인기본요소_박지환
KTH_Detail day_안드로메다에서 온 디자이너이야기_3차_디자인기본요소_박지환KTH, 케이티하이텔
 
Unity Auto Build iOS
Unity Auto Build iOSUnity Auto Build iOS
Unity Auto Build iOSGiseok Lee
 
[제7회 인터넷리더십] 마음을 움직이는 스토리텔링 - 한명수
[제7회 인터넷리더십] 마음을 움직이는 스토리텔링 - 한명수[제7회 인터넷리더십] 마음을 움직이는 스토리텔링 - 한명수
[제7회 인터넷리더십] 마음을 움직이는 스토리텔링 - 한명수daumfoundation
 
브랜드갭 _ 한국어버전
브랜드갭 _ 한국어버전브랜드갭 _ 한국어버전
브랜드갭 _ 한국어버전Sangkyu Kim
 
Sns ws twitter-facebook
Sns ws twitter-facebookSns ws twitter-facebook
Sns ws twitter-facebookYoonwhan Lee
 
2010 artezine book
2010 artezine book2010 artezine book
2010 artezine bookJinho Jung
 
Cascadia.js: Don't Cross the Streams
Cascadia.js: Don't Cross the StreamsCascadia.js: Don't Cross the Streams
Cascadia.js: Don't Cross the Streamsmattpodwysocki
 
[1B4]안드로이드 동시성_프로그래밍
[1B4]안드로이드 동시성_프로그래밍[1B4]안드로이드 동시성_프로그래밍
[1B4]안드로이드 동시성_프로그래밍NAVER D2
 
Functional Reactive Programming With RxSwift
Functional Reactive Programming With RxSwiftFunctional Reactive Programming With RxSwift
Functional Reactive Programming With RxSwift선협 이
 
Functional Reactive Programming with RxJS
Functional Reactive Programming with RxJSFunctional Reactive Programming with RxJS
Functional Reactive Programming with RxJSstefanmayer13
 
서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015
서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015
서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015NAVER / MusicPlatform
 
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기Jong Wook Kim
 
RxJS and Reactive Programming - Modern Web UI - May 2015
RxJS and Reactive Programming - Modern Web UI - May 2015RxJS and Reactive Programming - Modern Web UI - May 2015
RxJS and Reactive Programming - Modern Web UI - May 2015Ben Lesh
 
우글우글[1] (1)
우글우글[1] (1)우글우글[1] (1)
우글우글[1] (1)enfkclzk00
 
Visual Design with Data
Visual Design with DataVisual Design with Data
Visual Design with DataSeth Familian
 

Andere mochten auch (20)

Red Rock International 레드록인터네셔널 공개강좌안내
Red Rock International 레드록인터네셔널 공개강좌안내Red Rock International 레드록인터네셔널 공개강좌안내
Red Rock International 레드록인터네셔널 공개강좌안내
 
2014 SXSW Interactive Awards Finalists
2014 SXSW Interactive Awards Finalists2014 SXSW Interactive Awards Finalists
2014 SXSW Interactive Awards Finalists
 
Swift 0x01 환경 설정
Swift 0x01   환경 설정Swift 0x01   환경 설정
Swift 0x01 환경 설정
 
KTH_Detail day_안드로메다에서 온 디자이너이야기_3차_디자인기본요소_박지환
KTH_Detail day_안드로메다에서 온 디자이너이야기_3차_디자인기본요소_박지환KTH_Detail day_안드로메다에서 온 디자이너이야기_3차_디자인기본요소_박지환
KTH_Detail day_안드로메다에서 온 디자이너이야기_3차_디자인기본요소_박지환
 
Unity Auto Build iOS
Unity Auto Build iOSUnity Auto Build iOS
Unity Auto Build iOS
 
Snsuxdesign1124
Snsuxdesign1124Snsuxdesign1124
Snsuxdesign1124
 
[제7회 인터넷리더십] 마음을 움직이는 스토리텔링 - 한명수
[제7회 인터넷리더십] 마음을 움직이는 스토리텔링 - 한명수[제7회 인터넷리더십] 마음을 움직이는 스토리텔링 - 한명수
[제7회 인터넷리더십] 마음을 움직이는 스토리텔링 - 한명수
 
브랜드갭 _ 한국어버전
브랜드갭 _ 한국어버전브랜드갭 _ 한국어버전
브랜드갭 _ 한국어버전
 
Sns ws twitter-facebook
Sns ws twitter-facebookSns ws twitter-facebook
Sns ws twitter-facebook
 
2010 artezine book
2010 artezine book2010 artezine book
2010 artezine book
 
Cascadia.js: Don't Cross the Streams
Cascadia.js: Don't Cross the StreamsCascadia.js: Don't Cross the Streams
Cascadia.js: Don't Cross the Streams
 
[1B4]안드로이드 동시성_프로그래밍
[1B4]안드로이드 동시성_프로그래밍[1B4]안드로이드 동시성_프로그래밍
[1B4]안드로이드 동시성_프로그래밍
 
Functional Reactive Programming With RxSwift
Functional Reactive Programming With RxSwiftFunctional Reactive Programming With RxSwift
Functional Reactive Programming With RxSwift
 
Functional Reactive Programming with RxJS
Functional Reactive Programming with RxJSFunctional Reactive Programming with RxJS
Functional Reactive Programming with RxJS
 
서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015
서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015
서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015
 
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기
 
RxJS and Reactive Programming - Modern Web UI - May 2015
RxJS and Reactive Programming - Modern Web UI - May 2015RxJS and Reactive Programming - Modern Web UI - May 2015
RxJS and Reactive Programming - Modern Web UI - May 2015
 
우글우글[1] (1)
우글우글[1] (1)우글우글[1] (1)
우글우글[1] (1)
 
Endocarditis
EndocarditisEndocarditis
Endocarditis
 
Visual Design with Data
Visual Design with DataVisual Design with Data
Visual Design with Data
 

Ähnlich wie [Osxdev]4.swift

[1B1]스위프트프로그래밍언어
[1B1]스위프트프로그래밍언어[1B1]스위프트프로그래밍언어
[1B1]스위프트프로그래밍언어NAVER D2
 
당신의 디버깅에 니코니코니
당신의 디버깅에 니코니코니당신의 디버깅에 니코니코니
당신의 디버깅에 니코니코니Lusain Kim
 
OpenJigWare(V02.00.04)
OpenJigWare(V02.00.04)OpenJigWare(V02.00.04)
OpenJigWare(V02.00.04)Jinwook On
 
Objective-C에서 Swift로 전향할 때 생각해 볼 거리들
Objective-C에서 Swift로 전향할 때 생각해 볼 거리들Objective-C에서 Swift로 전향할 때 생각해 볼 거리들
Objective-C에서 Swift로 전향할 때 생각해 볼 거리들SeongGyu Jo
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010Ryan Park
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10Ryan Park
 
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013devCAT Studio, NEXON
 
Objective-C에서 멀티스레드 사용하기
Objective-C에서 멀티스레드 사용하기Objective-C에서 멀티스레드 사용하기
Objective-C에서 멀티스레드 사용하기Jaeeun Lee
 
Go로 새 프로젝트 시작하기
Go로 새 프로젝트 시작하기Go로 새 프로젝트 시작하기
Go로 새 프로젝트 시작하기Joonsung Lee
 
코드리뷰 짝 매칭 프로그램 구현기
코드리뷰 짝 매칭 프로그램 구현기코드리뷰 짝 매칭 프로그램 구현기
코드리뷰 짝 매칭 프로그램 구현기Yong Hoon Kim
 
온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기Seungjae Lee
 
학교에서 배우지 않는 C
학교에서 배우지 않는 C학교에서 배우지 않는 C
학교에서 배우지 않는 CHeesuk Kang
 
JMI Techtalk: 강재욱 - Toward tf.keras from tf.estimator - From TensorFlow 2.0 p...
JMI Techtalk: 강재욱 - Toward tf.keras from tf.estimator - From TensorFlow 2.0 p...JMI Techtalk: 강재욱 - Toward tf.keras from tf.estimator - From TensorFlow 2.0 p...
JMI Techtalk: 강재욱 - Toward tf.keras from tf.estimator - From TensorFlow 2.0 p...Lablup Inc.
 
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들영욱 오
 
코딩클럽 왕초보 아두이노따라잡기 1탄
코딩클럽 왕초보 아두이노따라잡기 1탄코딩클럽 왕초보 아두이노따라잡기 1탄
코딩클럽 왕초보 아두이노따라잡기 1탄Eunhee Ha
 
자바에서 null을 안전하게 다루는 방법
자바에서 null을 안전하게 다루는 방법자바에서 null을 안전하게 다루는 방법
자바에서 null을 안전하게 다루는 방법Sungchul Park
 
A tour of C++ : the basics
A tour of C++ : the basicsA tour of C++ : the basics
A tour of C++ : the basicsJaewon Choi
 
Effective C++ Chapter 1 Summary
Effective C++ Chapter 1 SummaryEffective C++ Chapter 1 Summary
Effective C++ Chapter 1 SummarySeungYeonChoi10
 

Ähnlich wie [Osxdev]4.swift (20)

[1B1]스위프트프로그래밍언어
[1B1]스위프트프로그래밍언어[1B1]스위프트프로그래밍언어
[1B1]스위프트프로그래밍언어
 
당신의 디버깅에 니코니코니
당신의 디버깅에 니코니코니당신의 디버깅에 니코니코니
당신의 디버깅에 니코니코니
 
Open Jig Ware
Open Jig WareOpen Jig Ware
Open Jig Ware
 
OpenJigWare(V02.00.04)
OpenJigWare(V02.00.04)OpenJigWare(V02.00.04)
OpenJigWare(V02.00.04)
 
Objective-C에서 Swift로 전향할 때 생각해 볼 거리들
Objective-C에서 Swift로 전향할 때 생각해 볼 거리들Objective-C에서 Swift로 전향할 때 생각해 볼 거리들
Objective-C에서 Swift로 전향할 때 생각해 볼 거리들
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
 
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
 
Objective-C에서 멀티스레드 사용하기
Objective-C에서 멀티스레드 사용하기Objective-C에서 멀티스레드 사용하기
Objective-C에서 멀티스레드 사용하기
 
Go로 새 프로젝트 시작하기
Go로 새 프로젝트 시작하기Go로 새 프로젝트 시작하기
Go로 새 프로젝트 시작하기
 
코드리뷰 짝 매칭 프로그램 구현기
코드리뷰 짝 매칭 프로그램 구현기코드리뷰 짝 매칭 프로그램 구현기
코드리뷰 짝 매칭 프로그램 구현기
 
온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기
 
학교에서 배우지 않는 C
학교에서 배우지 않는 C학교에서 배우지 않는 C
학교에서 배우지 않는 C
 
JMI Techtalk: 강재욱 - Toward tf.keras from tf.estimator - From TensorFlow 2.0 p...
JMI Techtalk: 강재욱 - Toward tf.keras from tf.estimator - From TensorFlow 2.0 p...JMI Techtalk: 강재욱 - Toward tf.keras from tf.estimator - From TensorFlow 2.0 p...
JMI Techtalk: 강재욱 - Toward tf.keras from tf.estimator - From TensorFlow 2.0 p...
 
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
 
코딩클럽 왕초보 아두이노따라잡기 1탄
코딩클럽 왕초보 아두이노따라잡기 1탄코딩클럽 왕초보 아두이노따라잡기 1탄
코딩클럽 왕초보 아두이노따라잡기 1탄
 
자바에서 null을 안전하게 다루는 방법
자바에서 null을 안전하게 다루는 방법자바에서 null을 안전하게 다루는 방법
자바에서 null을 안전하게 다루는 방법
 
A tour of C++ : the basics
A tour of C++ : the basicsA tour of C++ : the basics
A tour of C++ : the basics
 
Swift2
Swift2Swift2
Swift2
 
Effective C++ Chapter 1 Summary
Effective C++ Chapter 1 SummaryEffective C++ Chapter 1 Summary
Effective C++ Chapter 1 Summary
 

Mehr von NAVER D2

[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다NAVER D2
 
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...NAVER D2
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기NAVER D2
 
[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발NAVER D2
 
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈NAVER D2
 
[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&ANAVER D2
 
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기NAVER D2
 
[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep LearningNAVER D2
 
[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applicationsNAVER D2
 
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingOld version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingNAVER D2
 
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지NAVER D2
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기NAVER D2
 
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화NAVER D2
 
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)NAVER D2
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기NAVER D2
 
[213] Fashion Visual Search
[213] Fashion Visual Search[213] Fashion Visual Search
[213] Fashion Visual SearchNAVER D2
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화NAVER D2
 
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지NAVER D2
 
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터NAVER D2
 
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?NAVER D2
 

Mehr von NAVER D2 (20)

[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다
 
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기
 
[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발
 
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
 
[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A
 
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기
 
[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning
 
[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications
 
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingOld version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
 
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
 
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화
 
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
 
[213] Fashion Visual Search
[213] Fashion Visual Search[213] Fashion Visual Search
[213] Fashion Visual Search
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화
 
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
 
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
 
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?
 

[Osxdev]4.swift