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
Simone Civetta
November 09, 2016
Programming
0
54
Server-Side Swift
Talk given in French during XebiCon 2016.
Simone Civetta
November 09, 2016
Tweet
Share
More Decks by Simone Civetta
See All by Simone Civetta
2021: CI for Mobile: State of The Art
viteinfinite
0
340
MVI : une architecture robuste et moderne pour vos applications mobiles
viteinfinite
2
480
Cross-Platform Modules with Kotlin/Native (v. 2018.10)
viteinfinite
0
66
Face Recognition with Vision & Core ML
viteinfinite
1
840
Shared Cross-Platform Modules with Kotlin/Native
viteinfinite
1
240
Server-Side Swift @ Devoxx FR
viteinfinite
0
70
Swift on the Raspberry PI
viteinfinite
0
76
Be the Quality You Want to See in Your App [Swift Edition]
viteinfinite
1
310
Swift : Nouvelles du front
viteinfinite
0
56
Other Decks in Programming
See All in Programming
Hanami and htmx
bkuhlmann
0
190
Elm Form Validation
bkuhlmann
0
500
Build with AI 2024 Seoul - 제로부터 시작하는 Flutter with Gemini 생활 - 박제창
itsmedreamwalker
0
200
OpenAPIを中心に考えるAPI開発入門 / Introduction to API Development with a Focus on OpenAPI
seike460
PRO
2
120
PHP8.3の機能を振り返る / Review of PHP 8.3 features
seike460
PRO
1
110
ONE WEDGE_company_guide
1wedge_one
0
380
デザインシステムで Tailwind CSSとCSS in JSに分散投資をしたら良かった話
fsubal
18
4.8k
From Spring Boot 2 to Spring Boot 3 with Java 22 and Jakarta EE
ivargrimstad
0
900
エンターテイメント業界で利用されるAWS
demuyan
0
200
VSCodeでのDatabricks開発もお勧めしたい/I would also recommend Databricks development with VSCode.
kazumain
0
240
Ruby製社内ツールのGo移行
bgpat
2
330
Rubyでたのしむクリエイティブコーディング/Enjoy Creative coding with Ruby
chobishiba
1
160
Featured
See All Featured
How to train your dragon (web standard)
notwaldorf
72
5.1k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
6
990
The Invisible Side of Design
smashingmag
294
49k
Intergalactic Javascript Robots from Outer Space
tanoku
266
26k
Art, The Web, and Tiny UX
lynnandtonic
288
19k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
501
140k
Embracing the Ebb and Flow
colly
79
4.1k
The Brand Is Dead. Long Live the Brand.
mthomps
48
28k
Fashionably flexible responsive web design (full day workshop)
malarkey
397
65k
4 Signs Your Business is Dying
shpigford
175
21k
The MySQL Ecosystem @ GitHub 2015
samlambert
242
12k
What’s in a name? Adding method to the madness
productmarketing
PRO
15
2.6k
Transcript
1
Salut 2
Simone Civetta 3
Je suis un développeur iOS 4
6 ans 5
6
3,5 ans 7
8
9
10
11
12
13
Enfin... 14
Plan ➀ Les Origines ➁ État de l'art ➂ Pourquoi
l'utiliser ? ➃ Swift Server dans la vraie vie ➄ Évolutions 15
1. Les origines 16
17
18
Pourquoi Open Source ? 19
20
21
22
23
24
2. État de l'art 25
Swift 3 26
1.0 27
1.1 28
1.2 29
2.0 30
2.1 31
2.2 32
2.3 33
Swift 3 34
1 version tous les 3,42 mois 35
Un langage complet 36
37
38
39
40
41
Bibliothèques tierces 42
Bibliothèques tierces stables 43
44
45
46
Bibliothèques C 47
Frameworks Web 48
49
50
51
52
53
Swift Package Manager 54
SPM swift package init swift package fetch swift package update
swift package generate-xcodeproj 55
Swift Package Catalog 56
57
58
59
Quelques images Docker ☞ swiftdocker/swift/ ☞ ibmcom/kitura-ubuntu/ ☞ zewo/todobackend/ 60
Qualité du code 61
62
63
64
65
Metriques de qualité Pour en savoir plus... speakerdeck.com/viteinfinite/be-the-quality-you-want-to-see-in- your-app-swift-edition 66
67
68
Enfin... 69
3. Pourquoi l'utiliser ? 70
Développement actif 71
72
73
74
75
76
77
Performance 78
Performance 79
Performance 80
Memory Source: http://benchmarksgame.alioth.debian.org 81
Applications isomorphes 82
4. Dans la vraie vie 83
84
85
86
Package.swift import PackageDescription let package = Package( name: "xebicon", dependencies:
[ .Package(url: "https://github.com/IBM-Swift/Kitura.git", majorVersion: 1, minor: 0), .Package(url: "https://github.com/feinstruktur/CRabbitMQ", majorVersion: 1) ]) 87
Serveur HTTP import Kitura let router = Router() router.post("/vote/station", handler:
{ request, response, next in do { try processVoteRequest(request) } catch { debugPrint(error) response.send(status: .badRequest) } next() }) Kitura.addHTTPServer(onPort: 8080, with: router) Kitura.run() 88
Build $ swift build Linking CHTTPParser Compile Swift Module 'Socket'
(3 sources) Compile Swift Module 'HeliumLogger' (1 sources) Compile Swift Module 'SwiftyJSON' (2 sources) Compile Swift Module 'SSLService' (1 sources) Compile Swift Module 'KituraNet' (29 sources) Compile Swift Module 'Kitura' (40 sources) Compile Swift Module 'xebicon' (12 sources) Linking ./.build/debug/xebicon 89
Bilbliothèques C func publish(message: String, exchange: String, key: String) throws
{ guard let connection = self.connection else { throw AMQPConnectorError.notConnected } amqp_basic_publish(connection, Constants.defaultChannel, amqp_cstring_bytes(exchange), amqp_cstring_bytes(key), 0, 0, nil, amqp_cstring_bytes(message)) } 90
Tests func testPostVote() { let router = HTTPController().router performServerTest(router) {
expectation in self.performRequest("post", path: "vote/station", requestModifier: { request in request.write(from: "{" + "\"trainId\": 1," + "\"media\": \"MOBILE\"," + "\"userId\": \"23de45f\"" + "}") }) { response in XCTAssertEqual(response!.statusCode, HTTPStatusCode.OK) expectation.fulfill() } } } 91
92
Tout s'est bien passé™ 93
Enfin... 94
95
96
97
98
Cross platform #if os(Linux) import Glibc #else import Darwin #endif
99
Swift Build 100
Swift Package Manager Mess swift package generate-xcodeproj 101
Tester c'est linker Undefined symbols for architecture x86_64: "test2.test2.init ()
-> test2.test2", referenced from: test2Tests.test2Tests.(testExample () -> ()). (implicit closure #1) in test2Tests.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 102
5. Évolutions 103
Encore plus de Frameworks 104
Encore plus de APIs Swift 105
106
107
Peut-on le déployer en prod ? 108
Oui ! 109
Enfin... 110
Merci ! 111
Simone Civetta 112
Je suis un développeur iOS 113
Je suis un développeur Back 114
Enfin... 115
116