Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Server-side Swift
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Petr Pavlik
June 20, 2016
Programming
0
100
Server-side Swift
Petr Pavlik
June 20, 2016
Tweet
Share
More Decks by Petr Pavlik
See All by Petr Pavlik
XcodeGen
petrpavlik
0
160
Video Streaming
petrpavlik
0
16
Danger feat. SwiftLint on Linux
petrpavlik
0
560
Other Decks in Programming
See All in Programming
Architectural Extensions
denyspoltorak
0
290
今こそ知るべき耐量子計算機暗号(PQC)入門 / PQC: What You Need to Know Now
mackey0225
3
380
0→1 フロントエンド開発 Tips🚀 #レバテックMeetup
bengo4com
0
570
AtCoder Conference 2025
shindannin
0
1.1k
それ、本当に安全? ファイルアップロードで見落としがちなセキュリティリスクと対策
penpeen
7
3.9k
Basic Architectures
denyspoltorak
0
670
360° Signals in Angular: Signal Forms with SignalStore & Resources @ngLondon 01/2026
manfredsteyer
PRO
0
130
「ブロックテーマでは再現できない」は本当か?
inc2734
0
1k
dchart: charts from deck markup
ajstarks
3
990
SourceGeneratorのススメ
htkym
0
200
Fluid Templating in TYPO3 14
s2b
0
130
AIフル活用時代だからこそ学んでおきたい働き方の心得
shinoyu
0
130
Featured
See All Featured
Practical Orchestrator
shlominoach
191
11k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
62
50k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
3.9k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
350
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2k
WCS-LA-2024
lcolladotor
0
450
The Curse of the Amulet
leimatthew05
1
8.6k
How to Think Like a Performance Engineer
csswizardry
28
2.4k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
130
How to train your dragon (web standard)
notwaldorf
97
6.5k
Transcript
Server-side Swift Petr Pavlik wormapp.co @ptrpavlik
Why Swift?
Why Swift? It helps you write safer code
Swift struct User { let id: String = guuid() var
name: String var aboutMe: String? } var user = User(name: "Petr", aboutMe: nil)
Swift var user = User(name: "Petr", aboutMe: nil) print("\(user)") User(id:
"34jk43k43k", name: "Petr", aboutMe: nil)
Swift var user = User(name: "Petr", aboutMe: nil) user.id =
"123" //error
Swift var user = User(name: "Petr", aboutMe: nil) user.aboutMe =
"something creative" //ok let immutableUser = user immutableUser.aboutMe = "!"#" //error
What Is Open Source
What Is Open Source • Swift Compiler
What Is Open Source • Swift Compiler • Foundation Framework
& GCD • Networking, calendar, filesystem, threading, ...
What Is Open Source • Swift Compiler • Foundation Framework
& GCD • Networking, calendar, filesystem, threading, ... • Swift Package Manager • Dependency manager
None
What Is Open Source • Swift Compiler • Foundation Framework
& GCD • Networking, calendar, filesystem, threading, ... • Swift Package Manager • Dependency manager • XCTest • Unit testing
Example App feat. Kitura
Example App $ swift build --init
Example App $ swift build --init !
Example App Example ├── Package.swift ├── Sources │ └── main.swift
└── .swiftenv
Package.swift import PackageDescription let package = Package( name: "example", dependencies:
[ .Package(url: "https://github.com/IBM-Swift/Kitura.git", majorVersion: 0, minor: 17) ])
main.swift import Kitura
main.swift import Kitura let router = Router()
main.swift import Kitura let router = Router() router.get("/") { request,
response, next in response.send("Hello, World!") next() }
main.swift import Kitura let router = Router() router.get("/") { request,
response, next in response.send("Hello, World!") next() } Kitura.addHTTPServer(onPort: 8090, with: router)
main.swift import Kitura let router = Router() router.get("/") { request,
response, next in response.send("Hello, World!") next() } Kitura.addHTTPServer(onPort: 8090, with: router) Kitura.run()
main.swift import Kitura let router = Router() router.get("/") { request,
response, next in response.send("Hello, World!") next() } Kitura.addHTTPServer(onPort: 8090, with: router) Kitura.run() //!
Example App $ swift build
Example App Example ├── Package.swift ├── Sources │ └── main.swift
├── Packages │ └── Kitura-0.16.1 │ └── Kitura-net-0.16.0 │ └── Kitura-Sys-0.16.0 │ └── LoggerAPI-0.8.0 └── .build └── debug └── example
Example App $ .build/debug/example
Example App $ .build/debug/example $ curl http://localhost:8090 Hello, World!
Example App $ swift build -X generates an Xcode project
None
Frameworks • Kitura - !/IBM-Swift/Kitura • Perfect - !/PerfectlySoft/Perfect •
Vapor - !/qutheory/vapor
Deployment • Docker • https://hub.docker.com/r/ibmcom/kitura-ubuntu/ • http://kubernetes.io • Heroku, IBM
Bluemix • Buildpack • Procfile • .swiftenv
Thank you! @ptrpavlik