SlideShare ist ein Scribd-Unternehmen logo
1 von 97
Downloaden Sie, um offline zu lesen
End-to-end:
Building a Web Service in Swift
Who am I?
How many of you
have build web
services or APIs?
What is a web
service?
Why Swift on
Server?
Swift
Why do many use scripting
languages for the web?
Code Sharing
Accessible to
mobile developers
Performance
Performance Graph
Server | Language | request/sec | Comparison
---------|----------|-------------|------------
Curassow | Swift | 7715.83 |
Gunicorn | Python | 5269.49 | 32% less req/s than Curassow
Unicorn | Ruby | 4253.33 | 45% less req/s Curassow
How
/// Format the given string for presentation
func formatForDate(date: NSDate) -> String {
let formatter = NSDateFormatter()
formatter.formatString = "DD MM yyyy"
return formatter.stringForDate(date)
}
func viewDidLoad() {
super.viewDidLoad()
// Using our date formatting in iOS
button.title = formatForDate(NSDate())
}
import Frank
get {
return formatForDate(NSDate())
}
$ swift build
$ .build/debug/date-example
$ curl http://localhost:8000/
21 04 2016
Where to begin
Life-cycle
Planning
https://apiblueprint.org/
# Render [POST /render]
+ Request (application/json)
{
"template": "Hello {{ name }}",
"context": {
"name": "Kyle"
}
}
# Preview [POST /preview]
+ Response 200
Hello Kyle
Development
Swift Package
Manager
Swift 2 vs Swift 3
swiftenv
https://swiftenv.fuller.li/
$ swiftenv install 2.2
$ swiftenv local DEVELOPMENT-SNAPSHOT-2016-02-08-a
$ cat .swift-version
DEVELOPMENT-SNAPSHOT-2016-02-08-a
$ swift --version
Apple Swift version 2.2
$ cd Stencil
$ swift --version
Apple Swift version 3.0-dev
Web Frameworks
Separation of
Concerns
Web Servers / Web Frameworks
Frank
get("users", "kyle", "followers") { request in
}
get("users", *) { (request, username: String) in
}
Custom Parameter Type
enum Status {
case Open
case Closed
}
Custom Parameter Type
extension Status : ParameterConvertible {
init?(parser: ParameterParser) {
switch parser.shift() ?? "" {
case "open":
self = .Open
case "closed":
self = .Closed
default:
return nil
}
}
}
get("issues", *) { (request, status: Status) in
return "Issues using status: (status)"
}
Swift Safety
get("/users/:username") { (request, params) in
let username = params["username"]!
return "Hello (username)"
}
let router = Router()
router.get("/users/:username") { request, response, next in
let username = request.params["username"] ?? "(nil)"
try response.status(HttpStatusCode.OK).send("Hello (username)")
}
let server = HttpServer.listen(8090, delegate: router)
Server.run()
Web Server
Curassow
https://curassow.fuller.li/
$ curassow --workers 5
[INFO] Listening at http://localhost:8080 (65416)
[INFO] Booting worker process with pid: 65417
[INFO] Booting worker process with pid: 65418
[INFO] Booting worker process with pid: 65419
[INFO] Booting worker process with pid: 65420
[INFO] Booting worker process with pid: 65421
Standards
Learn from others' mistakes
Tight Coupling
Nest
https://github.com/nestproject/Nest
func application(request: RequestType) -> ResponseType {
return Response(.Ok, body: "Hello World")
}
Nest Enhancement
Proposals
Template Languages
Stencil
http://stencil.fuller.li/
There are {{ articles.count }} articles.
{% for article in articles %}
- {{ article.title }} by {{ article.author }}.
{% endfor %}
<h1>Users</h1>
<ul>
{% for user in users %}
<li>{{ user }}</li>
{% endfor %}
</ul>
Persistence
ORM
Object Relational Mapping
QueryKit
http://querykit.org/
let user = User.queryset(context)
.filter { $0.name == "Kyle" }
.orderBy {}
.first
Redis (Redbird)
let client = try Redbird(config: ...)
// Set name to MCE
try client.command("SET", params: ["name", "MCE"])
// Get the name
try client.command("GET", params: ["name"])
PostgreSQL
let connection = Connection(host: "localhost", databaseName: "db")
try connection.open()
let usernames = try connection.execute("SELECT username FROM users").map {
try $0.data("username")
}
Testing
Spectre
http://spectre.fuller.li/
describe("a person") {
let person = Person(name: "Kyle")
$0.it("has a name") {
try expect(person.name) == "Kyle"
}
$0.it("returns the name as description") {
try expect(person.description) == "Kyle"
}
}
XCTest
class PersonTests: XCTestCase {
let person = Person(name: "Kyle")
func testPersonName() {
XCTAssertEqual(person.name, "Kyle")
}
func testPersonDescription() {
XCTAssertEqual(person.description, "Kyle")
}
}
extension PersonTests: XCTestCaseProvider {
var allTests : [(String, () throws -> Void)] {
return [
("testPersonName", testPersonName),
("testPersonDescription", testPersonDescription),
]
}
}
XCTMain([
PersonTests(),
])
Dredd
https://github.com/apiaryio/dredd
Swift on Travis CI
https://swiftenv.fuller.li/en/latest/
integrations/travis-ci.html
Deployment
https://github.com/kylef/heroku-buildpack-swift
$ cat Package.swift
import PackageDescription
let package = Package(
name: "Hello",
dependencies: [
.Package(url: "https://github.com/nestproject/Frank.git",
majorVersion: 0, minor: 3),
]
)
$ cat Sources/main.swift
import Frank
get { _ in
return "Hello World"
}
get(*) { (_, username: String) in
return "Hello (username)"
}
$ cat .swift-version
2.2-SNAPSHOT-2016-01-11-a
$ swift build
$ .build/debug/Hello
[INFO] Listening at http://0.0.0.0:8000 (48827)
[INFO] Booting worker process with pid: 48828
$ cat Procfile
web: Hello
$ heroku create --buildpack https://github.com/kylef/heroku-buildpack-swift.git
$ git push heroku master
remote: -----> Swift app detected
remote: -----> Installing 2.2-SNAPSHOT-2016-01-11-a
remote: -----> Installing clang-3.7.0
remote: -----> Building Package
remote: -----> Copying binaries to 'bin'
Manual Deployment
Monitoring
Logging
print("ERROR: Connection to database failed (error)")
Papertrail
What's Next?
Swift 3
Stability
Maturity
What have we covered today
• Why you might want to build a web application
in Swift
• How you can design, develop, deploy Swift web
applications
kylefuller
https://fuller.li/talks

Weitere ähnliche Inhalte

Andere mochten auch

Atmosphere 2016 - Catalin Jora - Microservices continuous delivery with MANT...
Atmosphere 2016 - Catalin Jora -  Microservices continuous delivery with MANT...Atmosphere 2016 - Catalin Jora -  Microservices continuous delivery with MANT...
Atmosphere 2016 - Catalin Jora - Microservices continuous delivery with MANT...PROIDEA
 
MCE^3 - Felix Krause - Continuous Delivery for Mobile Apps Using Fastlane
MCE^3 - Felix Krause - Continuous Delivery for Mobile Apps Using FastlaneMCE^3 - Felix Krause - Continuous Delivery for Mobile Apps Using Fastlane
MCE^3 - Felix Krause - Continuous Delivery for Mobile Apps Using FastlanePROIDEA
 
infraxstructure: Rafał Wiosna "Pomarańczowe M jak "Miłość" w regionach czyli...
infraxstructure: Rafał Wiosna  "Pomarańczowe M jak "Miłość" w regionach czyli...infraxstructure: Rafał Wiosna  "Pomarańczowe M jak "Miłość" w regionach czyli...
infraxstructure: Rafał Wiosna "Pomarańczowe M jak "Miłość" w regionach czyli...PROIDEA
 
4Developers: Adam Sznajder Taking advantage of microservice architecture and ...
4Developers: Adam Sznajder Taking advantage of microservice architecture and ...4Developers: Adam Sznajder Taking advantage of microservice architecture and ...
4Developers: Adam Sznajder Taking advantage of microservice architecture and ...PROIDEA
 
JDD 2016 - Łukasz Sawicki - WHY? + Impact Mapping
JDD 2016 - Łukasz Sawicki - WHY? + Impact MappingJDD 2016 - Łukasz Sawicki - WHY? + Impact Mapping
JDD 2016 - Łukasz Sawicki - WHY? + Impact MappingPROIDEA
 
MCE^3 - Jonathan Flint - What I Cannot Create, I Do Not Understand
MCE^3 - Jonathan Flint - What I Cannot Create, I Do Not UnderstandMCE^3 - Jonathan Flint - What I Cannot Create, I Do Not Understand
MCE^3 - Jonathan Flint - What I Cannot Create, I Do Not UnderstandPROIDEA
 
[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...
[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...
[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...PROIDEA
 
PLNOG 17 - Bartosz Musznicki - Mobilne i domowe hotspoty Wi-Fi w INEA
PLNOG 17 - Bartosz Musznicki - Mobilne i domowe hotspoty Wi-Fi w INEAPLNOG 17 - Bartosz Musznicki - Mobilne i domowe hotspoty Wi-Fi w INEA
PLNOG 17 - Bartosz Musznicki - Mobilne i domowe hotspoty Wi-Fi w INEAPROIDEA
 
2016 - Daniel Lebrero - REPL driven development
2016 - Daniel Lebrero - REPL driven development2016 - Daniel Lebrero - REPL driven development
2016 - Daniel Lebrero - REPL driven developmentPROIDEA
 
DOD 2016 - Tomasz Torcz - The Song of JBoss and Chef
DOD 2016 - Tomasz Torcz - The Song of JBoss and Chef DOD 2016 - Tomasz Torcz - The Song of JBoss and Chef
DOD 2016 - Tomasz Torcz - The Song of JBoss and Chef PROIDEA
 
PLNOG 17 - Alexis Dacquay - 100 G, Skalowalność i Widoczność
PLNOG 17 - Alexis Dacquay - 100 G, Skalowalność i WidocznośćPLNOG 17 - Alexis Dacquay - 100 G, Skalowalność i Widoczność
PLNOG 17 - Alexis Dacquay - 100 G, Skalowalność i WidocznośćPROIDEA
 
PLNOG 17 - Piotr Gruszczyński - Mobile Fronthaul - ewolucja (a może i rewoluc...
PLNOG 17 - Piotr Gruszczyński - Mobile Fronthaul - ewolucja (a może i rewoluc...PLNOG 17 - Piotr Gruszczyński - Mobile Fronthaul - ewolucja (a może i rewoluc...
PLNOG 17 - Piotr Gruszczyński - Mobile Fronthaul - ewolucja (a może i rewoluc...PROIDEA
 
DOD 2016 - Ignat Korchagin - Managing Server Secrets at Scale
DOD 2016 - Ignat Korchagin - Managing Server Secrets at ScaleDOD 2016 - Ignat Korchagin - Managing Server Secrets at Scale
DOD 2016 - Ignat Korchagin - Managing Server Secrets at ScalePROIDEA
 
JDD 2016 - Philippe Charrière - Golo, The Tiny Language That Gives Super Powers
JDD 2016 - Philippe Charrière -  Golo, The Tiny Language That Gives Super PowersJDD 2016 - Philippe Charrière -  Golo, The Tiny Language That Gives Super Powers
JDD 2016 - Philippe Charrière - Golo, The Tiny Language That Gives Super PowersPROIDEA
 
JDD 2016 - Bartosz Majsak - Meet The Assertable Chaos Monkeys
JDD 2016 - Bartosz Majsak - Meet The Assertable Chaos Monkeys JDD 2016 - Bartosz Majsak - Meet The Assertable Chaos Monkeys
JDD 2016 - Bartosz Majsak - Meet The Assertable Chaos Monkeys PROIDEA
 
JDD 2016 - Grzegorz Piwowarek - Davaslang - Functional Java Done Right
JDD 2016 - Grzegorz Piwowarek - Davaslang - Functional Java Done RightJDD 2016 - Grzegorz Piwowarek - Davaslang - Functional Java Done Right
JDD 2016 - Grzegorz Piwowarek - Davaslang - Functional Java Done RightPROIDEA
 
JDD 2016 - Wojciech Oczkowski - Testowanie Wydajnosci Za Pomoca Narzedzia JMH
JDD 2016 - Wojciech Oczkowski - Testowanie Wydajnosci Za Pomoca Narzedzia JMHJDD 2016 - Wojciech Oczkowski - Testowanie Wydajnosci Za Pomoca Narzedzia JMH
JDD 2016 - Wojciech Oczkowski - Testowanie Wydajnosci Za Pomoca Narzedzia JMHPROIDEA
 
JDD 2016 - Joseph W. Yoder - Deliver Fast "With Confidence"
JDD 2016 - Joseph W. Yoder - Deliver Fast "With Confidence"JDD 2016 - Joseph W. Yoder - Deliver Fast "With Confidence"
JDD 2016 - Joseph W. Yoder - Deliver Fast "With Confidence"PROIDEA
 

Andere mochten auch (18)

Atmosphere 2016 - Catalin Jora - Microservices continuous delivery with MANT...
Atmosphere 2016 - Catalin Jora -  Microservices continuous delivery with MANT...Atmosphere 2016 - Catalin Jora -  Microservices continuous delivery with MANT...
Atmosphere 2016 - Catalin Jora - Microservices continuous delivery with MANT...
 
MCE^3 - Felix Krause - Continuous Delivery for Mobile Apps Using Fastlane
MCE^3 - Felix Krause - Continuous Delivery for Mobile Apps Using FastlaneMCE^3 - Felix Krause - Continuous Delivery for Mobile Apps Using Fastlane
MCE^3 - Felix Krause - Continuous Delivery for Mobile Apps Using Fastlane
 
infraxstructure: Rafał Wiosna "Pomarańczowe M jak "Miłość" w regionach czyli...
infraxstructure: Rafał Wiosna  "Pomarańczowe M jak "Miłość" w regionach czyli...infraxstructure: Rafał Wiosna  "Pomarańczowe M jak "Miłość" w regionach czyli...
infraxstructure: Rafał Wiosna "Pomarańczowe M jak "Miłość" w regionach czyli...
 
4Developers: Adam Sznajder Taking advantage of microservice architecture and ...
4Developers: Adam Sznajder Taking advantage of microservice architecture and ...4Developers: Adam Sznajder Taking advantage of microservice architecture and ...
4Developers: Adam Sznajder Taking advantage of microservice architecture and ...
 
JDD 2016 - Łukasz Sawicki - WHY? + Impact Mapping
JDD 2016 - Łukasz Sawicki - WHY? + Impact MappingJDD 2016 - Łukasz Sawicki - WHY? + Impact Mapping
JDD 2016 - Łukasz Sawicki - WHY? + Impact Mapping
 
MCE^3 - Jonathan Flint - What I Cannot Create, I Do Not Understand
MCE^3 - Jonathan Flint - What I Cannot Create, I Do Not UnderstandMCE^3 - Jonathan Flint - What I Cannot Create, I Do Not Understand
MCE^3 - Jonathan Flint - What I Cannot Create, I Do Not Understand
 
[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...
[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...
[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...
 
PLNOG 17 - Bartosz Musznicki - Mobilne i domowe hotspoty Wi-Fi w INEA
PLNOG 17 - Bartosz Musznicki - Mobilne i domowe hotspoty Wi-Fi w INEAPLNOG 17 - Bartosz Musznicki - Mobilne i domowe hotspoty Wi-Fi w INEA
PLNOG 17 - Bartosz Musznicki - Mobilne i domowe hotspoty Wi-Fi w INEA
 
2016 - Daniel Lebrero - REPL driven development
2016 - Daniel Lebrero - REPL driven development2016 - Daniel Lebrero - REPL driven development
2016 - Daniel Lebrero - REPL driven development
 
DOD 2016 - Tomasz Torcz - The Song of JBoss and Chef
DOD 2016 - Tomasz Torcz - The Song of JBoss and Chef DOD 2016 - Tomasz Torcz - The Song of JBoss and Chef
DOD 2016 - Tomasz Torcz - The Song of JBoss and Chef
 
PLNOG 17 - Alexis Dacquay - 100 G, Skalowalność i Widoczność
PLNOG 17 - Alexis Dacquay - 100 G, Skalowalność i WidocznośćPLNOG 17 - Alexis Dacquay - 100 G, Skalowalność i Widoczność
PLNOG 17 - Alexis Dacquay - 100 G, Skalowalność i Widoczność
 
PLNOG 17 - Piotr Gruszczyński - Mobile Fronthaul - ewolucja (a może i rewoluc...
PLNOG 17 - Piotr Gruszczyński - Mobile Fronthaul - ewolucja (a może i rewoluc...PLNOG 17 - Piotr Gruszczyński - Mobile Fronthaul - ewolucja (a może i rewoluc...
PLNOG 17 - Piotr Gruszczyński - Mobile Fronthaul - ewolucja (a może i rewoluc...
 
DOD 2016 - Ignat Korchagin - Managing Server Secrets at Scale
DOD 2016 - Ignat Korchagin - Managing Server Secrets at ScaleDOD 2016 - Ignat Korchagin - Managing Server Secrets at Scale
DOD 2016 - Ignat Korchagin - Managing Server Secrets at Scale
 
JDD 2016 - Philippe Charrière - Golo, The Tiny Language That Gives Super Powers
JDD 2016 - Philippe Charrière -  Golo, The Tiny Language That Gives Super PowersJDD 2016 - Philippe Charrière -  Golo, The Tiny Language That Gives Super Powers
JDD 2016 - Philippe Charrière - Golo, The Tiny Language That Gives Super Powers
 
JDD 2016 - Bartosz Majsak - Meet The Assertable Chaos Monkeys
JDD 2016 - Bartosz Majsak - Meet The Assertable Chaos Monkeys JDD 2016 - Bartosz Majsak - Meet The Assertable Chaos Monkeys
JDD 2016 - Bartosz Majsak - Meet The Assertable Chaos Monkeys
 
JDD 2016 - Grzegorz Piwowarek - Davaslang - Functional Java Done Right
JDD 2016 - Grzegorz Piwowarek - Davaslang - Functional Java Done RightJDD 2016 - Grzegorz Piwowarek - Davaslang - Functional Java Done Right
JDD 2016 - Grzegorz Piwowarek - Davaslang - Functional Java Done Right
 
JDD 2016 - Wojciech Oczkowski - Testowanie Wydajnosci Za Pomoca Narzedzia JMH
JDD 2016 - Wojciech Oczkowski - Testowanie Wydajnosci Za Pomoca Narzedzia JMHJDD 2016 - Wojciech Oczkowski - Testowanie Wydajnosci Za Pomoca Narzedzia JMH
JDD 2016 - Wojciech Oczkowski - Testowanie Wydajnosci Za Pomoca Narzedzia JMH
 
JDD 2016 - Joseph W. Yoder - Deliver Fast "With Confidence"
JDD 2016 - Joseph W. Yoder - Deliver Fast "With Confidence"JDD 2016 - Joseph W. Yoder - Deliver Fast "With Confidence"
JDD 2016 - Joseph W. Yoder - Deliver Fast "With Confidence"
 

Ähnlich wie End-to-end Web Service in Swift

Battle Of The Microservice Frameworks: Micronaut versus Quarkus edition!
Battle Of The Microservice Frameworks: Micronaut versus Quarkus edition! Battle Of The Microservice Frameworks: Micronaut versus Quarkus edition!
Battle Of The Microservice Frameworks: Micronaut versus Quarkus edition! Michel Schudel
 
Devfest 2023 - Service Weaver Introduction - Taipei.pdf
Devfest 2023 - Service Weaver Introduction - Taipei.pdfDevfest 2023 - Service Weaver Introduction - Taipei.pdf
Devfest 2023 - Service Weaver Introduction - Taipei.pdfKAI CHU CHUNG
 
Clojure and the Web
Clojure and the WebClojure and the Web
Clojure and the Webnickmbailey
 
AngularJS with TypeScript and Windows Azure Mobile Services
AngularJS with TypeScript and Windows Azure Mobile ServicesAngularJS with TypeScript and Windows Azure Mobile Services
AngularJS with TypeScript and Windows Azure Mobile ServicesRainer Stropek
 
Introduction to CloudStack API
Introduction to CloudStack APIIntroduction to CloudStack API
Introduction to CloudStack APIKrunal Jain
 
Building a web application with ontinuation monads
Building a web application with ontinuation monadsBuilding a web application with ontinuation monads
Building a web application with ontinuation monadsSeitaro Yuuki
 
Timings API: Performance Assertion during the functional testing
 Timings API: Performance Assertion during the functional testing Timings API: Performance Assertion during the functional testing
Timings API: Performance Assertion during the functional testingPetrosPlakogiannis
 
StrongLoop Overview
StrongLoop OverviewStrongLoop Overview
StrongLoop OverviewShubhra Kar
 
202107 - Orion introduction - COSCUP
202107 - Orion introduction - COSCUP202107 - Orion introduction - COSCUP
202107 - Orion introduction - COSCUPRonald Hsu
 
Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applicationsTom Croucher
 
Ruby on Rails vs ASP.NET MVC
Ruby on Rails vs ASP.NET MVCRuby on Rails vs ASP.NET MVC
Ruby on Rails vs ASP.NET MVCSimone Chiaretta
 
Running your Spring Apps in the Cloud Javaone 2014
Running your Spring Apps in the Cloud Javaone 2014Running your Spring Apps in the Cloud Javaone 2014
Running your Spring Apps in the Cloud Javaone 2014cornelia davis
 
OpenDaylight and YANG
OpenDaylight and YANGOpenDaylight and YANG
OpenDaylight and YANGCoreStack
 
GDG Devfest 2019 - Build go kit microservices at kubernetes with ease
GDG Devfest 2019 - Build go kit microservices at kubernetes with easeGDG Devfest 2019 - Build go kit microservices at kubernetes with ease
GDG Devfest 2019 - Build go kit microservices at kubernetes with easeKAI CHU CHUNG
 
Up and Running with Angular
Up and Running with AngularUp and Running with Angular
Up and Running with AngularJustin James
 
Maciej Treder "Server-side rendering with Angular—be faster and more SEO, CDN...
Maciej Treder "Server-side rendering with Angular—be faster and more SEO, CDN...Maciej Treder "Server-side rendering with Angular—be faster and more SEO, CDN...
Maciej Treder "Server-side rendering with Angular—be faster and more SEO, CDN...Fwdays
 
REST to JavaScript for Better Client-side Development
REST to JavaScript for Better Client-side DevelopmentREST to JavaScript for Better Client-side Development
REST to JavaScript for Better Client-side DevelopmentHyunghun Cho
 

Ähnlich wie End-to-end Web Service in Swift (20)

Battle Of The Microservice Frameworks: Micronaut versus Quarkus edition!
Battle Of The Microservice Frameworks: Micronaut versus Quarkus edition! Battle Of The Microservice Frameworks: Micronaut versus Quarkus edition!
Battle Of The Microservice Frameworks: Micronaut versus Quarkus edition!
 
Devfest 2023 - Service Weaver Introduction - Taipei.pdf
Devfest 2023 - Service Weaver Introduction - Taipei.pdfDevfest 2023 - Service Weaver Introduction - Taipei.pdf
Devfest 2023 - Service Weaver Introduction - Taipei.pdf
 
Clojure and the Web
Clojure and the WebClojure and the Web
Clojure and the Web
 
AngularJS with TypeScript and Windows Azure Mobile Services
AngularJS with TypeScript and Windows Azure Mobile ServicesAngularJS with TypeScript and Windows Azure Mobile Services
AngularJS with TypeScript and Windows Azure Mobile Services
 
Introduction to CloudStack API
Introduction to CloudStack APIIntroduction to CloudStack API
Introduction to CloudStack API
 
Building a web application with ontinuation monads
Building a web application with ontinuation monadsBuilding a web application with ontinuation monads
Building a web application with ontinuation monads
 
Timings API: Performance Assertion during the functional testing
 Timings API: Performance Assertion during the functional testing Timings API: Performance Assertion during the functional testing
Timings API: Performance Assertion during the functional testing
 
StrongLoop Overview
StrongLoop OverviewStrongLoop Overview
StrongLoop Overview
 
202107 - Orion introduction - COSCUP
202107 - Orion introduction - COSCUP202107 - Orion introduction - COSCUP
202107 - Orion introduction - COSCUP
 
Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applications
 
Ruby on Rails vs ASP.NET MVC
Ruby on Rails vs ASP.NET MVCRuby on Rails vs ASP.NET MVC
Ruby on Rails vs ASP.NET MVC
 
Running your Spring Apps in the Cloud Javaone 2014
Running your Spring Apps in the Cloud Javaone 2014Running your Spring Apps in the Cloud Javaone 2014
Running your Spring Apps in the Cloud Javaone 2014
 
OpenDaylight and YANG
OpenDaylight and YANGOpenDaylight and YANG
OpenDaylight and YANG
 
GDG Devfest 2019 - Build go kit microservices at kubernetes with ease
GDG Devfest 2019 - Build go kit microservices at kubernetes with easeGDG Devfest 2019 - Build go kit microservices at kubernetes with ease
GDG Devfest 2019 - Build go kit microservices at kubernetes with ease
 
Servlet
ServletServlet
Servlet
 
Up and Running with Angular
Up and Running with AngularUp and Running with Angular
Up and Running with Angular
 
Maciej Treder "Server-side rendering with Angular—be faster and more SEO, CDN...
Maciej Treder "Server-side rendering with Angular—be faster and more SEO, CDN...Maciej Treder "Server-side rendering with Angular—be faster and more SEO, CDN...
Maciej Treder "Server-side rendering with Angular—be faster and more SEO, CDN...
 
Intro to PSGI and Plack
Intro to PSGI and PlackIntro to PSGI and Plack
Intro to PSGI and Plack
 
REST to JavaScript for Better Client-side Development
REST to JavaScript for Better Client-side DevelopmentREST to JavaScript for Better Client-side Development
REST to JavaScript for Better Client-side Development
 
Ecom 1
Ecom 1Ecom 1
Ecom 1
 

Kürzlich hochgeladen

04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
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
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
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
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
[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
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
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
 
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
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
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
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
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
 
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
 

Kürzlich hochgeladen (20)

04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
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
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
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
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
[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
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
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...
 
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
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 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)
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
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...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 

End-to-end Web Service in Swift