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
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
それ、本当に安全? ファイルアップロードで見落としがちなセキュリティリスクと対策
penpeen
7
3.9k
dchart: charts from deck markup
ajstarks
3
990
FOSDEM 2026: STUNMESH-go: Building P2P WireGuard Mesh Without Self-Hosted Infrastructure
tjjh89017
0
170
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
200
[KNOTS 2026登壇資料]AIで拡張‧交差する プロダクト開発のプロセス および携わるメンバーの役割
hisatake
0
280
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
1
230
コマンドとリード間の連携に対する脅威分析フレームワーク
pandayumi
1
450
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
2
1.9k
15年続くIoTサービスのSREエンジニアが挑む分散トレーシング導入
melonps
2
200
そのAIレビュー、レビューしてますか? / Are you reviewing those AI reviews?
rkaga
6
4.6k
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
690
SourceGeneratorのススメ
htkym
0
200
Featured
See All Featured
Deep Space Network (abreviated)
tonyrice
0
48
BBQ
matthewcrist
89
10k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
280
How to make the Groovebox
asonas
2
1.9k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
54
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1k
My Coaching Mixtape
mlcsv
0
48
Abbi's Birthday
coloredviolet
1
4.7k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
170
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.4k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.1k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
7.9k
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