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
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Server-Side Swift
Talk given in French during XebiCon 2016.
Simone Civetta
November 09, 2016
More Decks by Simone Civetta
See All by Simone Civetta
2021: CI for Mobile: State of The Art
viteinfinite
0
400
MVI : une architecture robuste et moderne pour vos applications mobiles
viteinfinite
2
560
Cross-Platform Modules with Kotlin/Native (v. 2018.10)
viteinfinite
0
120
Face Recognition with Vision & Core ML
viteinfinite
1
1.1k
Shared Cross-Platform Modules with Kotlin/Native
viteinfinite
1
360
Server-Side Swift @ Devoxx FR
viteinfinite
0
140
Swift on the Raspberry PI
viteinfinite
0
150
Be the Quality You Want to See in Your App [Swift Edition]
viteinfinite
1
450
Swift : Nouvelles du front
viteinfinite
0
130
Other Decks in Programming
See All in Programming
AI時代に学ぶ 好きなルール 嫌いなルール Linter編
shorty5121
0
830
リアルな遅延を測る仕様
kota_yata
1
140
新人はどこまで自力でやり、どこからAIに頼るべきか/エンジニア育成に向き合う_先輩たちの悩みと知見共有会
toppan_digital_dev
1
560
一参加者から『中の人』へ 〜全通PHPerがブースに立って学んだ、カンファレンスを100倍楽しむコツ〜
wp_daisuke
0
110
「つくるAI」だけではバグは見つからない ~テストに必要な「見つけるAI」を分離させる戦略~
mfunaki
0
230
AI に Inclusive UI を書かせよう — Design Rules Skill で Compose UI を作り直す
theoriatec2024
1
440
コンパウンドプロダクト開発のためのローカルプロセスマネージャー再発明 #layerxgo
izumin5210
0
630
【DroidKaigi 2026】「アクセシビリティを利用するとき、 アクセシビリティもまたこちらを利用している」 〜マルウェアによる攻撃と防衛について〜
halunoyo
0
350
Claude Codeを組織的に動かして月400PRを実現した話
happy_ryo
0
250
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
3
460
型解析で実現する Go の言語内 DSL / Conference に Go! タイムテーブルの歩き方 for Gophers
mazrean
0
130
kubernetes コンポーネント開発入門 / 新卒N年目の勉強会&交流会!〜〇〇への誘い〜 #n_study
mazrean
0
160
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
How to build a perfect <img>
jonoalderson
1
6k
Balancing Empowerment & Direction
lara
6
1.3k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
250
Typedesign – Prime Four
hannesfritz
42
3.2k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
890
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.1k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
650
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