SlideShare a Scribd company logo
1 of 39
Download to read offline
Develop with Swift
森田 直樹
morizotter
2015
Github
http://github.com/morizotter
Github Award
https://github-awards.com/users/search?login=morizotter
TouchVisualizer
https://github.com/morizotter/TouchVisualizer
SwiftyDrop
https://github.com/morizotter/SwiftyDrop
Coggle
https://coggle.it
Coggle
https://coggle.it
Coggle
https://coggle.it
Coggle
https://coggle.it
angularjs-style-guide
https://github.com/mgechev/angularjs-style-guide/blob/
master/README-ja-jp.md
angularjs-style-guide
https://github.com/mgechev/angularjs-style-guide/blob/
master/README-ja-jp.md
Other contributions
• SDWebImage
• SwiftBond - Japanese 2 way binding
• Evernote SDK
• Treasuredata SDK
• DateTools
• Carthage
• NVActivityIndicatorView
• TagListView
• FlatUIColors
• …
Develop with Swift
Qolk
Cozy Qiita Reader for iOS.
Qolk
Cozy Qiita Reader for iOS.
Qolk
QiitaクライアントのQolkをMacbookとCarthageで作った話
http://qiita.com/morizotter/items/90d6d6024a6e7e0e9e84
Powerful Swift OSSs.
• Dependency Manager: Carthage
• Networking: Alamofire
• JSON parser: SwiftyJSON
• Database: Realm
• Future(promise): BrightFutures
• View binding: SwiftBond
• Image loading: Kingfisher
• AutoLayout: SnapKit
Powerful Swift OSSs.
• Dependency Manager: Carthage Cocoapods
• Networking: Alamofire AFNetworking
• JSON parser: SwiftyJSON Mantle
• Database: Realm MagicalRecord/CoreData
• Future(promise): BrightFutures Bolts/PromiseKit
• View binding: SwiftBond ReactiveCocoa?
• Image loading: Kingfisher SDWebImage
• AutoLayout: SnapKit Masonry
Objective-C?
Core OSSs
• Carthage
• Alamofire
• BrightFutures
• SwiftyJSON
Carthage for all
Carthage
• Decentralized
• No .xcworkspace
• Clean & Simple
• Very Easy to
distribute
• Increasing
• Centralized
• .xcworkspace
• Easy to use
• Easy to distribute

• Already many
Cocoapods
https://github.com/Carthage/Carthage https://cocoapods.org/
Carthage
$ brew update
$ brew install carthage
$ cd move/to/app/root
$ vi Cartfile
github "Alamofire/Alamofire" == 3.1.2
wq
$ carthage update -platform ios
Carthage
Carthage
• Pros:
• Project remains clean.
• No build time.
• Cons:
• Library build time.
• Relatively fewer libraries.
If library doesn’t
compatible with
Carthage?
Fork!
Tweak!
(Pull Request!)
Just 4 steps
1. Create CocoaTouch
Framework
2. Add files to Framework
target
3. Make scheme shared
4. git push and tag in Github
I made 5 libraries
or more
Carthage Compatible
for Qolk.
Many Thanks.
Alamofire
SwiftyJSON
BrightFutures
cooperate.
BrightFutures
Networking system
API Server
App
SwiftyJSON
Alamofire & BrightFutures
// AlamofireClient.swift
struct AlamofireClient {
static let sharedInstance = AlamofireClient()
let alamofire: Manager
init() {
let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
configuration.timeoutIntervalForResource = RequestTimeoutSec
alamofire = Manager(configuration: configuration)
}
static func requestJSON(URLRequest: URLRequestConvertible) -> Future<JSONResponse, ErrorResponse> {
let promise = Promise<JSONResponse, ErrorResponse>()
sharedInstance.alamofire.request(URLRequest)
.validate()
.responseJSON(options: .AllowFragments) { (response) -> Void in
log.debug("REQUEST: (response.request)")
log.debug("RESPONSE: (response.response)”)
switch response.result {
case .Success(let json):
log.debug("[QIITA] JSON: (json)")
promise.success(JSONResponse(json: json, response: response.response!))
case .Failure(let error):
log.debug("[QIITA] ERROR: (error.localizedDescription)")
self.errorHandling(error, response: response.response)
promise.failure(ErrorResponse(nsError: error, response: response.response))
}
}
return promise.future
}
…
} Return future.
Responses
// AlamofireClient.swift
struct JSONResponse {
var json = JSON([])
var response: NSHTTPURLResponse?
var rateLimit: Int?
var rateRemaining: Int?
init(json: AnyObject?, response: NSHTTPURLResponse?) {
if let json = json {
self.json = JSON(json)
}
if let response = response {
self.response = response
let headers = JSON(response.allHeaderFields)
self.rateLimit = headers["Rate-Limit"].int
self.rateRemaining = headers["Rate-Remaining"].int
}
}
}
struct ErrorResponse: ErrorType {
var error: NSError
var response: NSHTTPURLResponse?
init(error: NSError, response: NSHTTPURLResponse? = nil) {
self.nsError = error
self.response = response
}
}
Make original struct
for easy handling.
BrightFutures & SwiftyJSON
// AppManager.swift
func getItems(pageInfo: PageInfo, query: String?) -> PageResponseFuture {
let promise = Promise<PageResponse, ErrorResponse>()
AlamofireClient.requestJSON(QiitaAPIRouter.Items(pageInfo: pageInfo, query: query))
.onSuccess { (result: JSONResponse) in
let pageResponse = PageResponse(json: result.json, pageInfo: pageInfo, response: result.response!)
promise.success(pageResponse)
}
.onFailure { (errorResponse: ErrorResponse) in
promise.failure(errorResponse)
}
return promise.future
}
struct PageResponse {
var json: JSON
var totalCount: Int?
var pageInfo: PageInfo
init(json: JSON, pageInfo: PageInfo, response: NSHTTPURLResponse?) {
self.json = json
self.pageInfo = pageInfo
if let response = response {
let headers = JSON(response.allHeaderFields)
self.totalCount = headers["Total-Count"].intValue
}
}
}
typealias PageResponseFuture = Future<PageResponse, ErrorResponse>
Inject something
before network
returns.
SwiftyJSON
final class Item: Object, ObjectCopyable {
dynamic var renderedBody = ""
dynamic var body = ""
dynamic var coediting = false
dynamic var createdAt = ""
dynamic var itemId = ""
dynamic var isPrivate = false
let tags = List<Tag>()
dynamic var title = ""
dynamic var updatedAt = ""
dynamic var url = ""
dynamic var user: User?
override static func primaryKey() -> String? {
return "itemId"
}
class func fromJSON(json: JSON) -> Item {
let item = Item()
item.renderedBody = json["rendered_body"].stringValue
item.body = json["body"].stringValue
item.coediting = json["coediting"].boolValue
item.createdAt = json["created_at"].stringValue
item.itemId = json["id"].stringValue
item.isPrivate = json["private"].boolValue
item.title = json["title"].stringValue
item.updatedAt = json["updated_at"].stringValue
item.url = json["url"].stringValue
item.user = User.fromJSON(json["user"])
for (_, subJson): (String, JSON) in json["tags"] {
item.tags.append(Tag.fromJSON(subJson))
}
return item
}
…
}
Sync Wantedly

More Related Content

What's hot

Back to the future: Isomorphic javascript applications
Back to the future:  Isomorphic javascript applicationsBack to the future:  Isomorphic javascript applications
Back to the future: Isomorphic javascript applicationsLuciano Colosio
 
How to add Fixtures into your Django app with Mixer
How to add Fixtures into your Django app with MixerHow to add Fixtures into your Django app with Mixer
How to add Fixtures into your Django app with MixerGuinsly Mondesir
 
Everything-as-code. Polyglotte Software-Entwicklung in der Praxis.
Everything-as-code. Polyglotte Software-Entwicklung in der Praxis.Everything-as-code. Polyglotte Software-Entwicklung in der Praxis.
Everything-as-code. Polyglotte Software-Entwicklung in der Praxis.QAware GmbH
 
Server Side Swift
Server Side SwiftServer Side Swift
Server Side SwiftJens Ravens
 
Ratpack - Classy and Compact Groovy Web Apps
Ratpack - Classy and Compact Groovy Web AppsRatpack - Classy and Compact Groovy Web Apps
Ratpack - Classy and Compact Groovy Web AppsJames Williams
 

What's hot (8)

Back to the future: Isomorphic javascript applications
Back to the future:  Isomorphic javascript applicationsBack to the future:  Isomorphic javascript applications
Back to the future: Isomorphic javascript applications
 
How to add Fixtures into your Django app with Mixer
How to add Fixtures into your Django app with MixerHow to add Fixtures into your Django app with Mixer
How to add Fixtures into your Django app with Mixer
 
Everything-as-code. Polyglotte Software-Entwicklung in der Praxis.
Everything-as-code. Polyglotte Software-Entwicklung in der Praxis.Everything-as-code. Polyglotte Software-Entwicklung in der Praxis.
Everything-as-code. Polyglotte Software-Entwicklung in der Praxis.
 
Grooscript greach
Grooscript greachGrooscript greach
Grooscript greach
 
Grooscript gr8conf 2015
Grooscript gr8conf 2015Grooscript gr8conf 2015
Grooscript gr8conf 2015
 
Server Side Swift
Server Side SwiftServer Side Swift
Server Side Swift
 
Grooscript greach 2015
Grooscript greach 2015Grooscript greach 2015
Grooscript greach 2015
 
Ratpack - Classy and Compact Groovy Web Apps
Ratpack - Classy and Compact Groovy Web AppsRatpack - Classy and Compact Groovy Web Apps
Ratpack - Classy and Compact Groovy Web Apps
 

Viewers also liked

Sima Vasa - Cutting Edge of NewMR 2015
Sima Vasa - Cutting Edge of NewMR 2015Sima Vasa - Cutting Edge of NewMR 2015
Sima Vasa - Cutting Edge of NewMR 2015Ray Poynter
 
My toolbox (materials, shapes and Tools)
My toolbox  (materials, shapes and Tools) My toolbox  (materials, shapes and Tools)
My toolbox (materials, shapes and Tools) Anna Capdevila
 
WOW pro file 2
WOW pro file 2WOW pro file 2
WOW pro file 2WOWCOIN
 
Parry_2011_Exploration_Revived_Bergen_Opening_of_the_ North_ Atlantic_Basin_L...
Parry_2011_Exploration_Revived_Bergen_Opening_of_the_ North_ Atlantic_Basin_L...Parry_2011_Exploration_Revived_Bergen_Opening_of_the_ North_ Atlantic_Basin_L...
Parry_2011_Exploration_Revived_Bergen_Opening_of_the_ North_ Atlantic_Basin_L...Chris Parry
 
Realm - Phoenix Mobile Festival
Realm - Phoenix Mobile FestivalRealm - Phoenix Mobile Festival
Realm - Phoenix Mobile FestivalDJ Rausch
 
Grand Union Digital Index - Brand internazionali della cosmetica
Grand Union Digital Index - Brand internazionali della cosmeticaGrand Union Digital Index - Brand internazionali della cosmetica
Grand Union Digital Index - Brand internazionali della cosmeticaGrand Union Italia
 
Continuous Delivery with VS2015 and TFS2015
Continuous Delivery with VS2015 and TFS2015Continuous Delivery with VS2015 and TFS2015
Continuous Delivery with VS2015 and TFS2015Tung Nguyen Thanh
 
Agile .NET Development with BDD and Continuous Integration
Agile .NET Development with BDD and Continuous IntegrationAgile .NET Development with BDD and Continuous Integration
Agile .NET Development with BDD and Continuous IntegrationTung Nguyen Thanh
 
Building Realtime Apps with Ember.js and WebSockets
Building Realtime Apps with Ember.js and WebSocketsBuilding Realtime Apps with Ember.js and WebSockets
Building Realtime Apps with Ember.js and WebSocketsBen Limmer
 
BCG-Business Model Strip: A Visual Tool for Continuously Improving and Innova...
BCG-Business Model Strip: A Visual Tool for Continuously Improving and Innova...BCG-Business Model Strip: A Visual Tool for Continuously Improving and Innova...
BCG-Business Model Strip: A Visual Tool for Continuously Improving and Innova...Rod King, Ph.D.
 
Crear formulario windows form con visual c++ 2015
Crear formulario windows form con visual c++ 2015Crear formulario windows form con visual c++ 2015
Crear formulario windows form con visual c++ 2015Ángel Acaymo M. G.
 
«10 лет измерений. эволюция или революция»
«10 лет измерений. эволюция или революция» «10 лет измерений. эволюция или революция»
«10 лет измерений. эволюция или революция» PR News
 
Software y energía cpc
Software y energía cpcSoftware y energía cpc
Software y energía cpcandrea_135
 
Dojo Grids in XPages
Dojo Grids in XPagesDojo Grids in XPages
Dojo Grids in XPagesTeamstudio
 
Aect480 lecture 7
Aect480 lecture 7Aect480 lecture 7
Aect480 lecture 7cloudc123
 
Importanos 2016. Cidadania e participación contra a pobreza 151216 Xosé Cuns
Importanos 2016. Cidadania e participación contra a pobreza 151216 Xosé CunsImportanos 2016. Cidadania e participación contra a pobreza 151216 Xosé Cuns
Importanos 2016. Cidadania e participación contra a pobreza 151216 Xosé CunsXose Cuns Traba
 
Selections womens wovens aw 2014
Selections womens wovens aw 2014Selections womens wovens aw 2014
Selections womens wovens aw 2014TFCExpress
 

Viewers also liked (20)

Sima Vasa - Cutting Edge of NewMR 2015
Sima Vasa - Cutting Edge of NewMR 2015Sima Vasa - Cutting Edge of NewMR 2015
Sima Vasa - Cutting Edge of NewMR 2015
 
My toolbox (materials, shapes and Tools)
My toolbox  (materials, shapes and Tools) My toolbox  (materials, shapes and Tools)
My toolbox (materials, shapes and Tools)
 
Siphokuhle Mahonga cv false bay
Siphokuhle Mahonga cv false baySiphokuhle Mahonga cv false bay
Siphokuhle Mahonga cv false bay
 
WOW pro file 2
WOW pro file 2WOW pro file 2
WOW pro file 2
 
Parry_2011_Exploration_Revived_Bergen_Opening_of_the_ North_ Atlantic_Basin_L...
Parry_2011_Exploration_Revived_Bergen_Opening_of_the_ North_ Atlantic_Basin_L...Parry_2011_Exploration_Revived_Bergen_Opening_of_the_ North_ Atlantic_Basin_L...
Parry_2011_Exploration_Revived_Bergen_Opening_of_the_ North_ Atlantic_Basin_L...
 
Realm - Phoenix Mobile Festival
Realm - Phoenix Mobile FestivalRealm - Phoenix Mobile Festival
Realm - Phoenix Mobile Festival
 
Grand Union Digital Index - Brand internazionali della cosmetica
Grand Union Digital Index - Brand internazionali della cosmeticaGrand Union Digital Index - Brand internazionali della cosmetica
Grand Union Digital Index - Brand internazionali della cosmetica
 
Continuous Delivery with VS2015 and TFS2015
Continuous Delivery with VS2015 and TFS2015Continuous Delivery with VS2015 and TFS2015
Continuous Delivery with VS2015 and TFS2015
 
Agile .NET Development with BDD and Continuous Integration
Agile .NET Development with BDD and Continuous IntegrationAgile .NET Development with BDD and Continuous Integration
Agile .NET Development with BDD and Continuous Integration
 
Building Realtime Apps with Ember.js and WebSockets
Building Realtime Apps with Ember.js and WebSocketsBuilding Realtime Apps with Ember.js and WebSockets
Building Realtime Apps with Ember.js and WebSockets
 
BCG-Business Model Strip: A Visual Tool for Continuously Improving and Innova...
BCG-Business Model Strip: A Visual Tool for Continuously Improving and Innova...BCG-Business Model Strip: A Visual Tool for Continuously Improving and Innova...
BCG-Business Model Strip: A Visual Tool for Continuously Improving and Innova...
 
Пожежна безпека
Пожежна безпекаПожежна безпека
Пожежна безпека
 
Crear formulario windows form con visual c++ 2015
Crear formulario windows form con visual c++ 2015Crear formulario windows form con visual c++ 2015
Crear formulario windows form con visual c++ 2015
 
«10 лет измерений. эволюция или революция»
«10 лет измерений. эволюция или революция» «10 лет измерений. эволюция или революция»
«10 лет измерений. эволюция или революция»
 
Onderweg naar Accountant3.0
Onderweg naar Accountant3.0Onderweg naar Accountant3.0
Onderweg naar Accountant3.0
 
Software y energía cpc
Software y energía cpcSoftware y energía cpc
Software y energía cpc
 
Dojo Grids in XPages
Dojo Grids in XPagesDojo Grids in XPages
Dojo Grids in XPages
 
Aect480 lecture 7
Aect480 lecture 7Aect480 lecture 7
Aect480 lecture 7
 
Importanos 2016. Cidadania e participación contra a pobreza 151216 Xosé Cuns
Importanos 2016. Cidadania e participación contra a pobreza 151216 Xosé CunsImportanos 2016. Cidadania e participación contra a pobreza 151216 Xosé Cuns
Importanos 2016. Cidadania e participación contra a pobreza 151216 Xosé Cuns
 
Selections womens wovens aw 2014
Selections womens wovens aw 2014Selections womens wovens aw 2014
Selections womens wovens aw 2014
 

Similar to Develop with Swift

Marvel of Annotation Preprocessing in Java by Alexey Buzdin
Marvel of Annotation Preprocessing in Java by Alexey BuzdinMarvel of Annotation Preprocessing in Java by Alexey Buzdin
Marvel of Annotation Preprocessing in Java by Alexey BuzdinJava User Group Latvia
 
Designing and developing mobile web applications with Mockup, Sencha Touch an...
Designing and developing mobile web applications with Mockup, Sencha Touch an...Designing and developing mobile web applications with Mockup, Sencha Touch an...
Designing and developing mobile web applications with Mockup, Sencha Touch an...Matteo Collina
 
Reactive programming with RxJS - Taiwan
Reactive programming with RxJS - TaiwanReactive programming with RxJS - Taiwan
Reactive programming with RxJS - Taiwanmodernweb
 
Adopting F# at SBTech
Adopting F# at SBTechAdopting F# at SBTech
Adopting F# at SBTechAntya Dev
 
Event-driven IO server-side JavaScript environment based on V8 Engine
Event-driven IO server-side JavaScript environment based on V8 EngineEvent-driven IO server-side JavaScript environment based on V8 Engine
Event-driven IO server-side JavaScript environment based on V8 EngineRicardo Silva
 
All a flutter about Flutter.io
All a flutter about Flutter.ioAll a flutter about Flutter.io
All a flutter about Flutter.ioSteven Cooper
 
An opinionated intro to Node.js - devrupt hospitality hackathon
An opinionated intro to Node.js - devrupt hospitality hackathonAn opinionated intro to Node.js - devrupt hospitality hackathon
An opinionated intro to Node.js - devrupt hospitality hackathonLuciano Mammino
 
Reactive, component 그리고 angular2
Reactive, component 그리고  angular2Reactive, component 그리고  angular2
Reactive, component 그리고 angular2Jeado Ko
 
Why the Dark Side should use Swift and a SOLID Architecture
Why the Dark Side should use Swift and a SOLID ArchitectureWhy the Dark Side should use Swift and a SOLID Architecture
Why the Dark Side should use Swift and a SOLID ArchitectureJorge Ortiz
 
Swift and Kotlin Presentation
Swift and Kotlin PresentationSwift and Kotlin Presentation
Swift and Kotlin PresentationAndrzej Sitek
 
Getting Started With Kotlin Development - Rivu
Getting Started With Kotlin Development - Rivu Getting Started With Kotlin Development - Rivu
Getting Started With Kotlin Development - Rivu CodeOps Technologies LLP
 
Advanced Javascript Unit Testing
Advanced Javascript Unit TestingAdvanced Javascript Unit Testing
Advanced Javascript Unit TestingLars Thorup
 
2018 (codeone) Graal VM and MicroProfile a polyglot microservices solution [d...
2018 (codeone) Graal VM and MicroProfile a polyglot microservices solution [d...2018 (codeone) Graal VM and MicroProfile a polyglot microservices solution [d...
2018 (codeone) Graal VM and MicroProfile a polyglot microservices solution [d...César Hernández
 
Everything-as-code. A polyglot journey.
Everything-as-code. A polyglot journey.Everything-as-code. A polyglot journey.
Everything-as-code. A polyglot journey.Mario-Leander Reimer
 
Everything-as-code - a polyglot journey.
Everything-as-code - a polyglot journey.Everything-as-code - a polyglot journey.
Everything-as-code - a polyglot journey.QAware GmbH
 
Android architecture component - FbCircleDev Yogyakarta Indonesia
Android architecture component - FbCircleDev Yogyakarta IndonesiaAndroid architecture component - FbCircleDev Yogyakarta Indonesia
Android architecture component - FbCircleDev Yogyakarta IndonesiaPratama Nur Wijaya
 

Similar to Develop with Swift (20)

Marvel of Annotation Preprocessing in Java by Alexey Buzdin
Marvel of Annotation Preprocessing in Java by Alexey BuzdinMarvel of Annotation Preprocessing in Java by Alexey Buzdin
Marvel of Annotation Preprocessing in Java by Alexey Buzdin
 
Go react codelab
Go react codelabGo react codelab
Go react codelab
 
Designing and developing mobile web applications with Mockup, Sencha Touch an...
Designing and developing mobile web applications with Mockup, Sencha Touch an...Designing and developing mobile web applications with Mockup, Sencha Touch an...
Designing and developing mobile web applications with Mockup, Sencha Touch an...
 
Reactive programming with RxJS - Taiwan
Reactive programming with RxJS - TaiwanReactive programming with RxJS - Taiwan
Reactive programming with RxJS - Taiwan
 
Adopting F# at SBTech
Adopting F# at SBTechAdopting F# at SBTech
Adopting F# at SBTech
 
Event-driven IO server-side JavaScript environment based on V8 Engine
Event-driven IO server-side JavaScript environment based on V8 EngineEvent-driven IO server-side JavaScript environment based on V8 Engine
Event-driven IO server-side JavaScript environment based on V8 Engine
 
All a flutter about Flutter.io
All a flutter about Flutter.ioAll a flutter about Flutter.io
All a flutter about Flutter.io
 
An opinionated intro to Node.js - devrupt hospitality hackathon
An opinionated intro to Node.js - devrupt hospitality hackathonAn opinionated intro to Node.js - devrupt hospitality hackathon
An opinionated intro to Node.js - devrupt hospitality hackathon
 
"Javascript" por Tiago Rodrigues
"Javascript" por Tiago Rodrigues"Javascript" por Tiago Rodrigues
"Javascript" por Tiago Rodrigues
 
Reactive, component 그리고 angular2
Reactive, component 그리고  angular2Reactive, component 그리고  angular2
Reactive, component 그리고 angular2
 
Why the Dark Side should use Swift and a SOLID Architecture
Why the Dark Side should use Swift and a SOLID ArchitectureWhy the Dark Side should use Swift and a SOLID Architecture
Why the Dark Side should use Swift and a SOLID Architecture
 
Swift and Kotlin Presentation
Swift and Kotlin PresentationSwift and Kotlin Presentation
Swift and Kotlin Presentation
 
Getting Started With Kotlin Development - Rivu
Getting Started With Kotlin Development - Rivu Getting Started With Kotlin Development - Rivu
Getting Started With Kotlin Development - Rivu
 
NodeJS
NodeJSNodeJS
NodeJS
 
Advanced Javascript Unit Testing
Advanced Javascript Unit TestingAdvanced Javascript Unit Testing
Advanced Javascript Unit Testing
 
2018 (codeone) Graal VM and MicroProfile a polyglot microservices solution [d...
2018 (codeone) Graal VM and MicroProfile a polyglot microservices solution [d...2018 (codeone) Graal VM and MicroProfile a polyglot microservices solution [d...
2018 (codeone) Graal VM and MicroProfile a polyglot microservices solution [d...
 
Everything-as-code. A polyglot journey.
Everything-as-code. A polyglot journey.Everything-as-code. A polyglot journey.
Everything-as-code. A polyglot journey.
 
Everything-as-code - a polyglot journey.
Everything-as-code - a polyglot journey.Everything-as-code - a polyglot journey.
Everything-as-code - a polyglot journey.
 
GWT Extreme!
GWT Extreme!GWT Extreme!
GWT Extreme!
 
Android architecture component - FbCircleDev Yogyakarta Indonesia
Android architecture component - FbCircleDev Yogyakarta IndonesiaAndroid architecture component - FbCircleDev Yogyakarta Indonesia
Android architecture component - FbCircleDev Yogyakarta Indonesia
 

Recently uploaded

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 

Recently uploaded (20)

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 

Develop with Swift