SlideShare uma empresa Scribd logo
1 de 61
Baixar para ler offline
IT Saturday • @aleks_voronov • Stanfy
BUILDING CLI WITH SWIFT
ALEXANDER VORONOV, STANFY
@aleks_voronov
IT Saturday • @aleks_voronov • Stanfy
REASON WHY?
IT Saturday • @aleks_voronov • Stanfy
OTHER PLATFORMS
IT Saturday • @aleks_voronov • Stanfy
JAVASCRIPT
NODEJS
NPM
BOWER
GULP
GRUNT
IT Saturday • @aleks_voronov • Stanfy
RUBY
RACK
RAILS
SINATRA
RUBYGEMS
RAKE
IT Saturday • @aleks_voronov • Stanfy
PYTHON
PYPI
PIP
…
IT Saturday • @aleks_voronov • Stanfy
SWIFT
COCOAPODS
CARTHAGE
SPM
PERFECT
COMMANDANT
IT Saturday • @aleks_voronov • Stanfy
FULLSTACK
MULTIPLATFORM
IT Saturday • @aleks_voronov • Stanfy
FULLSTACK
MULTIPLATFORM
IT Saturday • @aleks_voronov • Stanfy
WHAT IS CLI?
IT Saturday • @aleks_voronov • Stanfy
WHAT IS CLI?
IT Saturday • @aleks_voronov • Stanfy
CLI ARGUMENTS
IT Saturday • @aleks_voronov • Stanfy
POSIX STANDARD 📘
SHORT FLAGS
$ ls -a
$ ruby -v
$ git commit -m "..."
IT Saturday • @aleks_voronov • Stanfy
GNU STANDARD 📙
LONG FLAGS
$ ls --all
$ ruby --version
$ git commit --message "..."
IT Saturday • @aleks_voronov • Stanfy
COMBINED FLAGS 🏴
$ git commit -a -m "..."
$ git commit -am "..."
IT Saturday • @aleks_voronov • Stanfy
SUBCOMMANDS 🏘
$ git log -2
$ git status
$ git commit -am "..."
IT Saturday • @aleks_voronov • Stanfy
STANDARD IO 📥📤
0 - STDIN
1 - STDOUT
2 - STDERR
IT Saturday • @aleks_voronov • Stanfy
0 - STDIN
1 - STDOUT
2 - STDERR
$ cat nofile
> cat: nofile: No such file or directory
IT Saturday • @aleks_voronov • Stanfy
0 - STDIN
1 - STDOUT
2 - STDERR
$ cat nofile 2>>err.log
IT Saturday • @aleks_voronov • Stanfy
0 - STDIN
1 - STDOUT
2 - STDERR
$ cat nofile 2>&1
IT Saturday • @aleks_voronov • Stanfy
0 - STDIN
1 - STDOUT
2 - STDERR
$ cat nofile 2>>err.log 1>>out.log
IT Saturday • @aleks_voronov • Stanfy
0 - STDIN
1 - STDOUT
2 - STDERR
$ cat nofile 2>/dev/null
IT Saturday • @aleks_voronov • Stanfy
0 - STDIN
1 - STDOUT
2 - STDERR
$ cat nofile 2>&1 | grep kernel
IT Saturday • @aleks_voronov • Stanfy
UNIX PIPELINES ⛓
$ ls -l | grep "Mar" | sort
IT Saturday • @aleks_voronov • Stanfy
UNIX PIPELINES ⛓
$ ps aux | grep Xcode | awk '{print $2}'
IT Saturday • @aleks_voronov • Stanfy
UNIX PIPELINES ⛓
$ git branch | xargs git branch -D
😈
IT Saturday • @aleks_voronov • Stanfy
CLI WITH SWIFT 🖥
IT Saturday • @aleks_voronov • Stanfy
SWIFT REPL 🔃
(READ-EVALUATION-PRINT-LOOP)
$ swift
IT Saturday • @aleks_voronov • Stanfy
IMMEDIATE MODE 🚀
$ swift script.swift
IT Saturday • @aleks_voronov • Stanfy
SWIFT COMPILE ⚙
$ swiftc script.swift
$ ./script
IT Saturday • @aleks_voronov • Stanfy
SWIFT COMPILE ⚙
$ swiftc script.swift -o myscript
$ ./myscript
IT Saturday • @aleks_voronov • Stanfy
EXECUTABLE SCRIPTS 💾
IT Saturday • @aleks_voronov • Stanfy
EXECUTABLE SCRIPTS
#!/USR/BIN/SWIFT
HASHBANG
IT Saturday • @aleks_voronov • Stanfy
EXECUTABLE SCRIPTS
CHMOD +X SCRIPT.SWIFT
IT Saturday • @aleks_voronov • Stanfy
SCALING OUR CLI 🏗
WORKING WITH MULTIPLE FILES
IT Saturday • @aleks_voronov • Stanfy
MAIN.SWIFT 👑
IT Saturday • @aleks_voronov • Stanfy
EXECUTING MULTIPLE FILES📄📄
$ swift main.swift script.swift
IT Saturday • @aleks_voronov • Stanfy
$ swiftc main.swift script.swift -o script
EXECUTING MULTIPLE FILES📄📄
IT Saturday • @aleks_voronov • Stanfy
$ swiftc script.swift main.swift -o script
EXECUTING MULTIPLE FILES📄📄
IT Saturday • @aleks_voronov • Stanfy
$ swiftc *.swift -o script
EXECUTING MULTIPLE FILES📄📄
IT Saturday • @aleks_voronov • Stanfy
$ find . -iname '*.swift' | xargs swiftc -o script
EXECUTING MULTIPLE FILES📄📄
IT Saturday • @aleks_voronov • Stanfy
EXTERNAL RESOURCES 🎁
IT Saturday • @aleks_voronov • Stanfy
SYSTEM DEPENDENCIES 💼
$ swiftc script.swift
$ xcrun -sdk macosx swiftc script.swift
IT Saturday • @aleks_voronov • Stanfy
CUSTOM DEPENDENCIES 🛠
-F
$ swift -F /Carthage/Build/Mac script.swift
IT Saturday • @aleks_voronov • Stanfy
CUSTOM DEPENDENCIES
#!/USR/BIN/SWIFT -F Carthage/Build/Mac
HASHBANG
IT Saturday • @aleks_voronov • Stanfy
COMPILING DEPENDENT SCRIPT 🤖
IT Saturday • @aleks_voronov • Stanfy
$ xcrun 
-sdk macosx swiftc 
-F Carthage/Build/Mac script.swift
COMPILING DEPENDENT SCRIPT
> dyld: Library not loaded: @rpath
IT Saturday • @aleks_voronov • Stanfy
$ xcrun 
-sdk macosx swiftc 
-F Carthage/Build/Mac script.swift 
-Xlinker -rpath 
-Xlinker @executable_path/Carthage/Build/Mac
COMPILING DEPENDENT SCRIPT
IT Saturday • @aleks_voronov • Stanfy
DEPENDENCIES MANAGEMENT 🍴
IT Saturday • @aleks_voronov • Stanfy
COCOAPODS 🤔
IT Saturday • @aleks_voronov • Stanfy
CARTHAGE 😏
IT Saturday • @aleks_voronov • Stanfy
SPM 😳
SWIFT PACKAGE MANAGER
IT Saturday • @aleks_voronov • Stanfy
PARSING ARGUMENTS 📬
IT Saturday • @aleks_voronov • Stanfy
PARSING ARGUMENTS
$ ./script one two three
$ ./script one two three
$ ./script "one two three"
3 args
1 arg
1 arg
IT Saturday • @aleks_voronov • Stanfy
PROCESS ENUM
Process.arguments == [
"./script.swift",
"one",
"two",
"three"
]
IT Saturday • @aleks_voronov • Stanfy
FILESYSTEM 🗄
IT Saturday • @aleks_voronov • Stanfy
FILESYSTEM
NSFILEMANAGER
NSFILEHANDLER
NSTASK
NSPIPE
IT Saturday • @aleks_voronov • Stanfy
HANDY
LIBRARIES

🏛
COMMANDER
OPTIONKIT
COMMANDANT
REACTIVETASKS
PRETTYCOLORS
IT Saturday • @aleks_voronov • Stanfy
REAL WORLD EXAMPLES 🌍
CARTHAGEKIT

CARTHAGE CLI
IT Saturday • @aleks_voronov • Stanfy
THANK YOU!
IT Saturday • @aleks_voronov • Stanfy
Q/A
@ALEKS_VORONOV A-VORONOV

Mais conteúdo relacionado

Mais procurados

The brief seeds of Padrino
The brief seeds of PadrinoThe brief seeds of Padrino
The brief seeds of PadrinoHanae Aoki
 
Voice interface project
Voice interface projectVoice interface project
Voice interface projectJoão Ricardo
 
20150118 學個 Sinatra 好過年
20150118 學個 Sinatra 好過年20150118 學個 Sinatra 好過年
20150118 學個 Sinatra 好過年Mu-Fan Teng
 
Andrew Mager, Spotify
Andrew Mager, SpotifyAndrew Mager, Spotify
Andrew Mager, SpotifyMashery
 
SoundCloud @ Music Hackday Barcelona 2010
SoundCloud @ Music Hackday Barcelona 2010SoundCloud @ Music Hackday Barcelona 2010
SoundCloud @ Music Hackday Barcelona 2010Eric Wahlforss
 
Acquia Company Update on Drupal 8.2/8.3/OCTO
Acquia Company Update on Drupal 8.2/8.3/OCTOAcquia Company Update on Drupal 8.2/8.3/OCTO
Acquia Company Update on Drupal 8.2/8.3/OCTOAngela Byron
 
ATLRUG Announcments - May 2016
ATLRUG Announcments - May 2016ATLRUG Announcments - May 2016
ATLRUG Announcments - May 2016jasnow
 
4Developers 2015: Lessons for Erlang VM - Michał Ślaski
4Developers 2015: Lessons for Erlang VM - Michał Ślaski4Developers 2015: Lessons for Erlang VM - Michał Ślaski
4Developers 2015: Lessons for Erlang VM - Michał ŚlaskiPROIDEA
 
MWC/ADC 2013 Using the Nokia Music Windows Phone APIs
MWC/ADC 2013 Using the Nokia Music Windows Phone APIsMWC/ADC 2013 Using the Nokia Music Windows Phone APIs
MWC/ADC 2013 Using the Nokia Music Windows Phone APIsMicrosoft Mobile Developer
 
Google Panda and Penguine: A quick Summary
Google Panda and Penguine: A quick SummaryGoogle Panda and Penguine: A quick Summary
Google Panda and Penguine: A quick SummaryRahul Kumar
 
How to Tame TDD - ISTA 2017
How to Tame TDD - ISTA 2017How to Tame TDD - ISTA 2017
How to Tame TDD - ISTA 2017Vladik Khononov
 

Mais procurados (12)

The brief seeds of Padrino
The brief seeds of PadrinoThe brief seeds of Padrino
The brief seeds of Padrino
 
Voice interface project
Voice interface projectVoice interface project
Voice interface project
 
20150118 學個 Sinatra 好過年
20150118 學個 Sinatra 好過年20150118 學個 Sinatra 好過年
20150118 學個 Sinatra 好過年
 
Andrew Mager, Spotify
Andrew Mager, SpotifyAndrew Mager, Spotify
Andrew Mager, Spotify
 
SoundCloud @ Music Hackday Barcelona 2010
SoundCloud @ Music Hackday Barcelona 2010SoundCloud @ Music Hackday Barcelona 2010
SoundCloud @ Music Hackday Barcelona 2010
 
Acquia Company Update on Drupal 8.2/8.3/OCTO
Acquia Company Update on Drupal 8.2/8.3/OCTOAcquia Company Update on Drupal 8.2/8.3/OCTO
Acquia Company Update on Drupal 8.2/8.3/OCTO
 
ATLRUG Announcments - May 2016
ATLRUG Announcments - May 2016ATLRUG Announcments - May 2016
ATLRUG Announcments - May 2016
 
Arduino
ArduinoArduino
Arduino
 
4Developers 2015: Lessons for Erlang VM - Michał Ślaski
4Developers 2015: Lessons for Erlang VM - Michał Ślaski4Developers 2015: Lessons for Erlang VM - Michał Ślaski
4Developers 2015: Lessons for Erlang VM - Michał Ślaski
 
MWC/ADC 2013 Using the Nokia Music Windows Phone APIs
MWC/ADC 2013 Using the Nokia Music Windows Phone APIsMWC/ADC 2013 Using the Nokia Music Windows Phone APIs
MWC/ADC 2013 Using the Nokia Music Windows Phone APIs
 
Google Panda and Penguine: A quick Summary
Google Panda and Penguine: A quick SummaryGoogle Panda and Penguine: A quick Summary
Google Panda and Penguine: A quick Summary
 
How to Tame TDD - ISTA 2017
How to Tame TDD - ISTA 2017How to Tame TDD - ISTA 2017
How to Tame TDD - ISTA 2017
 

Destaque

"Frameworks in 2015" Андрей Листочкин
"Frameworks in 2015" Андрей Листочкин"Frameworks in 2015" Андрей Листочкин
"Frameworks in 2015" Андрей ЛисточкинFwdays
 
Андрей Шумада | Tank.ly
Андрей Шумада | Tank.ly Андрей Шумада | Tank.ly
Андрей Шумада | Tank.ly Fwdays
 
Евгений Обрезков "Behind the terminal"
Евгений Обрезков "Behind the terminal"Евгений Обрезков "Behind the terminal"
Евгений Обрезков "Behind the terminal"Fwdays
 
Скрам и Канбан: применимость самых распространенных методов организации умств...
Скрам и Канбан: применимость самых распространенных методов организации умств...Скрам и Канбан: применимость самых распространенных методов организации умств...
Скрам и Канбан: применимость самых распространенных методов организации умств...Fwdays
 
Lightweight APIs in mRuby (Михаил Бортник)
Lightweight APIs in mRuby (Михаил Бортник)Lightweight APIs in mRuby (Михаил Бортник)
Lightweight APIs in mRuby (Михаил Бортник)Fwdays
 
Павел Тайкало: "Optimistic Approach : How to show results instead spinners wi...
Павел Тайкало: "Optimistic Approach : How to show results instead spinners wi...Павел Тайкало: "Optimistic Approach : How to show results instead spinners wi...
Павел Тайкало: "Optimistic Approach : How to show results instead spinners wi...Fwdays
 
"После OOD: как моделировать предметную область в пост-объектном мире" Руслан...
"После OOD: как моделировать предметную область в пост-объектном мире" Руслан..."После OOD: как моделировать предметную область в пост-объектном мире" Руслан...
"После OOD: как моделировать предметную область в пост-объектном мире" Руслан...Fwdays
 
"Spring Boot. Boot up your development" Сергей Моренец
"Spring Boot. Boot up your development" Сергей Моренец"Spring Boot. Boot up your development" Сергей Моренец
"Spring Boot. Boot up your development" Сергей МоренецFwdays
 
Светлана Старикова "Building a self-managing team: why you should not have e...
 Светлана Старикова "Building a self-managing team: why you should not have e... Светлана Старикова "Building a self-managing team: why you should not have e...
Светлана Старикова "Building a self-managing team: why you should not have e...Fwdays
 
Алексей Рыбаков: "Wearable OS год спустя: Apple Watch 2.0, Android Wear 5.1.1...
Алексей Рыбаков: "Wearable OS год спустя: Apple Watch 2.0, Android Wear 5.1.1...Алексей Рыбаков: "Wearable OS год спустя: Apple Watch 2.0, Android Wear 5.1.1...
Алексей Рыбаков: "Wearable OS год спустя: Apple Watch 2.0, Android Wear 5.1.1...Fwdays
 
Алексей Волков "Интерактивные декларативные графики на React+D3"
Алексей Волков "Интерактивные декларативные графики на React+D3"Алексей Волков "Интерактивные декларативные графики на React+D3"
Алексей Волков "Интерактивные декларативные графики на React+D3"Fwdays
 
"Красная книга веб-разработчика" Виктор Полищук
"Красная книга веб-разработчика" Виктор Полищук"Красная книга веб-разработчика" Виктор Полищук
"Красная книга веб-разработчика" Виктор ПолищукFwdays
 
Сергей Яковлев "Phalcon 2 - стабилизация и производительность"
Сергей Яковлев "Phalcon 2 - стабилизация и производительность"Сергей Яковлев "Phalcon 2 - стабилизация и производительность"
Сергей Яковлев "Phalcon 2 - стабилизация и производительность"Fwdays
 
"Query Execution: Expectation - Reality (Level 300)" Денис Резник
"Query Execution: Expectation - Reality (Level 300)" Денис Резник"Query Execution: Expectation - Reality (Level 300)" Денис Резник
"Query Execution: Expectation - Reality (Level 300)" Денис РезникFwdays
 
Michael North "The Road to Native Web Components"
Michael North "The Road to Native Web Components"Michael North "The Road to Native Web Components"
Michael North "The Road to Native Web Components"Fwdays
 
Илья Прукко: "Как дизайнеру не становиться художником"
Илья Прукко: "Как дизайнеру не становиться художником"Илья Прукко: "Как дизайнеру не становиться художником"
Илья Прукко: "Как дизайнеру не становиться художником"Fwdays
 
Анастасия Войтова: "Building profanity filters on mobile: clbuttic sh!t"
Анастасия Войтова: "Building profanity filters on mobile: clbuttic sh!t"Анастасия Войтова: "Building profanity filters on mobile: clbuttic sh!t"
Анастасия Войтова: "Building profanity filters on mobile: clbuttic sh!t"Fwdays
 
Трансформация команды: от инди разработки к играм с коммерческой успешностью
Трансформация команды: от инди разработки к играм с коммерческой успешностьюТрансформация команды: от инди разработки к играм с коммерческой успешностью
Трансформация команды: от инди разработки к играм с коммерческой успешностьюFwdays
 
Александр Махомет "Feature Flags. Уменьшаем риски при выпуске изменений"
Александр Махомет "Feature Flags. Уменьшаем риски при выпуске изменений" Александр Махомет "Feature Flags. Уменьшаем риски при выпуске изменений"
Александр Махомет "Feature Flags. Уменьшаем риски при выпуске изменений" Fwdays
 

Destaque (20)

"Frameworks in 2015" Андрей Листочкин
"Frameworks in 2015" Андрей Листочкин"Frameworks in 2015" Андрей Листочкин
"Frameworks in 2015" Андрей Листочкин
 
Андрей Шумада | Tank.ly
Андрей Шумада | Tank.ly Андрей Шумада | Tank.ly
Андрей Шумада | Tank.ly
 
Евгений Обрезков "Behind the terminal"
Евгений Обрезков "Behind the terminal"Евгений Обрезков "Behind the terminal"
Евгений Обрезков "Behind the terminal"
 
Скрам и Канбан: применимость самых распространенных методов организации умств...
Скрам и Канбан: применимость самых распространенных методов организации умств...Скрам и Канбан: применимость самых распространенных методов организации умств...
Скрам и Канбан: применимость самых распространенных методов организации умств...
 
Lightweight APIs in mRuby (Михаил Бортник)
Lightweight APIs in mRuby (Михаил Бортник)Lightweight APIs in mRuby (Михаил Бортник)
Lightweight APIs in mRuby (Михаил Бортник)
 
Павел Тайкало: "Optimistic Approach : How to show results instead spinners wi...
Павел Тайкало: "Optimistic Approach : How to show results instead spinners wi...Павел Тайкало: "Optimistic Approach : How to show results instead spinners wi...
Павел Тайкало: "Optimistic Approach : How to show results instead spinners wi...
 
"После OOD: как моделировать предметную область в пост-объектном мире" Руслан...
"После OOD: как моделировать предметную область в пост-объектном мире" Руслан..."После OOD: как моделировать предметную область в пост-объектном мире" Руслан...
"После OOD: как моделировать предметную область в пост-объектном мире" Руслан...
 
"Spring Boot. Boot up your development" Сергей Моренец
"Spring Boot. Boot up your development" Сергей Моренец"Spring Boot. Boot up your development" Сергей Моренец
"Spring Boot. Boot up your development" Сергей Моренец
 
Designing for Privacy
Designing for PrivacyDesigning for Privacy
Designing for Privacy
 
Светлана Старикова "Building a self-managing team: why you should not have e...
 Светлана Старикова "Building a self-managing team: why you should not have e... Светлана Старикова "Building a self-managing team: why you should not have e...
Светлана Старикова "Building a self-managing team: why you should not have e...
 
Алексей Рыбаков: "Wearable OS год спустя: Apple Watch 2.0, Android Wear 5.1.1...
Алексей Рыбаков: "Wearable OS год спустя: Apple Watch 2.0, Android Wear 5.1.1...Алексей Рыбаков: "Wearable OS год спустя: Apple Watch 2.0, Android Wear 5.1.1...
Алексей Рыбаков: "Wearable OS год спустя: Apple Watch 2.0, Android Wear 5.1.1...
 
Алексей Волков "Интерактивные декларативные графики на React+D3"
Алексей Волков "Интерактивные декларативные графики на React+D3"Алексей Волков "Интерактивные декларативные графики на React+D3"
Алексей Волков "Интерактивные декларативные графики на React+D3"
 
"Красная книга веб-разработчика" Виктор Полищук
"Красная книга веб-разработчика" Виктор Полищук"Красная книга веб-разработчика" Виктор Полищук
"Красная книга веб-разработчика" Виктор Полищук
 
Сергей Яковлев "Phalcon 2 - стабилизация и производительность"
Сергей Яковлев "Phalcon 2 - стабилизация и производительность"Сергей Яковлев "Phalcon 2 - стабилизация и производительность"
Сергей Яковлев "Phalcon 2 - стабилизация и производительность"
 
"Query Execution: Expectation - Reality (Level 300)" Денис Резник
"Query Execution: Expectation - Reality (Level 300)" Денис Резник"Query Execution: Expectation - Reality (Level 300)" Денис Резник
"Query Execution: Expectation - Reality (Level 300)" Денис Резник
 
Michael North "The Road to Native Web Components"
Michael North "The Road to Native Web Components"Michael North "The Road to Native Web Components"
Michael North "The Road to Native Web Components"
 
Илья Прукко: "Как дизайнеру не становиться художником"
Илья Прукко: "Как дизайнеру не становиться художником"Илья Прукко: "Как дизайнеру не становиться художником"
Илья Прукко: "Как дизайнеру не становиться художником"
 
Анастасия Войтова: "Building profanity filters on mobile: clbuttic sh!t"
Анастасия Войтова: "Building profanity filters on mobile: clbuttic sh!t"Анастасия Войтова: "Building profanity filters on mobile: clbuttic sh!t"
Анастасия Войтова: "Building profanity filters on mobile: clbuttic sh!t"
 
Трансформация команды: от инди разработки к играм с коммерческой успешностью
Трансформация команды: от инди разработки к играм с коммерческой успешностьюТрансформация команды: от инди разработки к играм с коммерческой успешностью
Трансформация команды: от инди разработки к играм с коммерческой успешностью
 
Александр Махомет "Feature Flags. Уменьшаем риски при выпуске изменений"
Александр Махомет "Feature Flags. Уменьшаем риски при выпуске изменений" Александр Махомет "Feature Flags. Уменьшаем риски при выпуске изменений"
Александр Махомет "Feature Flags. Уменьшаем риски при выпуске изменений"
 

Semelhante a Александр Воронов | Building CLI with Swift

iOS and Android Acceptance Testing with Calabash - Xcake Dublin
iOS and Android Acceptance Testing with Calabash - Xcake DubliniOS and Android Acceptance Testing with Calabash - Xcake Dublin
iOS and Android Acceptance Testing with Calabash - Xcake Dublinroland99
 
🐲 Here be Stacktraces — Flink SQL for Non-Java Developers
🐲 Here be Stacktraces — Flink SQL for Non-Java Developers🐲 Here be Stacktraces — Flink SQL for Non-Java Developers
🐲 Here be Stacktraces — Flink SQL for Non-Java DevelopersHostedbyConfluent
 
A Modest Introduction to Swift
A Modest Introduction to SwiftA Modest Introduction to Swift
A Modest Introduction to SwiftAll Things Open
 
A Modest Introduction To Swift
A Modest Introduction To SwiftA Modest Introduction To Swift
A Modest Introduction To SwiftJohn Anderson
 
スマートフォン勉強会@関東 #11 LT 5分で語る SQLite暗号化
スマートフォン勉強会@関東 #11 LT 5分で語る SQLite暗号化スマートフォン勉強会@関東 #11 LT 5分で語る SQLite暗号化
スマートフォン勉強会@関東 #11 LT 5分で語る SQLite暗号化Taro Matsuzawa
 
YAPC::Tiny Introduction
YAPC::Tiny IntroductionYAPC::Tiny Introduction
YAPC::Tiny IntroductionKang-min Liu
 
Kubernetes and AWS Lambda can play nicely together
Kubernetes and AWS Lambda can play nicely togetherKubernetes and AWS Lambda can play nicely together
Kubernetes and AWS Lambda can play nicely togetherEdward Wilde
 
Forensic Challenge 10 - FC5 Attack Dataset Visualization
Forensic Challenge 10 - FC5 Attack Dataset VisualizationForensic Challenge 10 - FC5 Attack Dataset Visualization
Forensic Challenge 10 - FC5 Attack Dataset VisualizationVincent Ohprecio
 

Semelhante a Александр Воронов | Building CLI with Swift (10)

iOS and Android Acceptance Testing with Calabash - Xcake Dublin
iOS and Android Acceptance Testing with Calabash - Xcake DubliniOS and Android Acceptance Testing with Calabash - Xcake Dublin
iOS and Android Acceptance Testing with Calabash - Xcake Dublin
 
🐲 Here be Stacktraces — Flink SQL for Non-Java Developers
🐲 Here be Stacktraces — Flink SQL for Non-Java Developers🐲 Here be Stacktraces — Flink SQL for Non-Java Developers
🐲 Here be Stacktraces — Flink SQL for Non-Java Developers
 
Faraday Blackhat 2011 Arsenal
Faraday Blackhat 2011 ArsenalFaraday Blackhat 2011 Arsenal
Faraday Blackhat 2011 Arsenal
 
A Modest Introduction to Swift
A Modest Introduction to SwiftA Modest Introduction to Swift
A Modest Introduction to Swift
 
A Modest Introduction To Swift
A Modest Introduction To SwiftA Modest Introduction To Swift
A Modest Introduction To Swift
 
スマートフォン勉強会@関東 #11 LT 5分で語る SQLite暗号化
スマートフォン勉強会@関東 #11 LT 5分で語る SQLite暗号化スマートフォン勉強会@関東 #11 LT 5分で語る SQLite暗号化
スマートフォン勉強会@関東 #11 LT 5分で語る SQLite暗号化
 
YAPC::Tiny Introduction
YAPC::Tiny IntroductionYAPC::Tiny Introduction
YAPC::Tiny Introduction
 
Kubernetes and AWS Lambda can play nicely together
Kubernetes and AWS Lambda can play nicely togetherKubernetes and AWS Lambda can play nicely together
Kubernetes and AWS Lambda can play nicely together
 
Sniffing
SniffingSniffing
Sniffing
 
Forensic Challenge 10 - FC5 Attack Dataset Visualization
Forensic Challenge 10 - FC5 Attack Dataset VisualizationForensic Challenge 10 - FC5 Attack Dataset Visualization
Forensic Challenge 10 - FC5 Attack Dataset Visualization
 

Mais de Fwdays

"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y..."How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...Fwdays
 
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil TopchiiFwdays
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro SpodaretsFwdays
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym KindritskyiFwdays
 
"Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl..."Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl...Fwdays
 
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T..."How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...Fwdays
 
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ..."The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...Fwdays
 
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu..."[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...Fwdays
 
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care..."[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...Fwdays
 
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"..."4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...Fwdays
 
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast..."Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...Fwdays
 
"Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others..."Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others...Fwdays
 
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?", Oleksandra MyronovaFwdays
 
"Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv..."Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv...Fwdays
 
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin..."How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...Fwdays
 

Mais de Fwdays (20)

"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y..."How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
 
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
 
"Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl..."Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl...
 
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T..."How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
 
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ..."The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
 
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu..."[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
 
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care..."[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
 
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"..."4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
 
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast..."Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
 
"Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others..."Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others...
 
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
 
"Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv..."Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv...
 
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin..."How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
 

Último

FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
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
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKJago de Vreede
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 

Último (20)

FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
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
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 

Александр Воронов | Building CLI with Swift

  • 1. IT Saturday • @aleks_voronov • Stanfy BUILDING CLI WITH SWIFT ALEXANDER VORONOV, STANFY @aleks_voronov
  • 2. IT Saturday • @aleks_voronov • Stanfy REASON WHY?
  • 3. IT Saturday • @aleks_voronov • Stanfy OTHER PLATFORMS
  • 4. IT Saturday • @aleks_voronov • Stanfy JAVASCRIPT NODEJS NPM BOWER GULP GRUNT
  • 5. IT Saturday • @aleks_voronov • Stanfy RUBY RACK RAILS SINATRA RUBYGEMS RAKE
  • 6. IT Saturday • @aleks_voronov • Stanfy PYTHON PYPI PIP …
  • 7. IT Saturday • @aleks_voronov • Stanfy SWIFT COCOAPODS CARTHAGE SPM PERFECT COMMANDANT
  • 8. IT Saturday • @aleks_voronov • Stanfy FULLSTACK MULTIPLATFORM
  • 9. IT Saturday • @aleks_voronov • Stanfy FULLSTACK MULTIPLATFORM
  • 10. IT Saturday • @aleks_voronov • Stanfy WHAT IS CLI?
  • 11. IT Saturday • @aleks_voronov • Stanfy WHAT IS CLI?
  • 12. IT Saturday • @aleks_voronov • Stanfy CLI ARGUMENTS
  • 13. IT Saturday • @aleks_voronov • Stanfy POSIX STANDARD 📘 SHORT FLAGS $ ls -a $ ruby -v $ git commit -m "..."
  • 14. IT Saturday • @aleks_voronov • Stanfy GNU STANDARD 📙 LONG FLAGS $ ls --all $ ruby --version $ git commit --message "..."
  • 15. IT Saturday • @aleks_voronov • Stanfy COMBINED FLAGS 🏴 $ git commit -a -m "..." $ git commit -am "..."
  • 16. IT Saturday • @aleks_voronov • Stanfy SUBCOMMANDS 🏘 $ git log -2 $ git status $ git commit -am "..."
  • 17. IT Saturday • @aleks_voronov • Stanfy STANDARD IO 📥📤 0 - STDIN 1 - STDOUT 2 - STDERR
  • 18. IT Saturday • @aleks_voronov • Stanfy 0 - STDIN 1 - STDOUT 2 - STDERR $ cat nofile > cat: nofile: No such file or directory
  • 19. IT Saturday • @aleks_voronov • Stanfy 0 - STDIN 1 - STDOUT 2 - STDERR $ cat nofile 2>>err.log
  • 20. IT Saturday • @aleks_voronov • Stanfy 0 - STDIN 1 - STDOUT 2 - STDERR $ cat nofile 2>&1
  • 21. IT Saturday • @aleks_voronov • Stanfy 0 - STDIN 1 - STDOUT 2 - STDERR $ cat nofile 2>>err.log 1>>out.log
  • 22. IT Saturday • @aleks_voronov • Stanfy 0 - STDIN 1 - STDOUT 2 - STDERR $ cat nofile 2>/dev/null
  • 23. IT Saturday • @aleks_voronov • Stanfy 0 - STDIN 1 - STDOUT 2 - STDERR $ cat nofile 2>&1 | grep kernel
  • 24. IT Saturday • @aleks_voronov • Stanfy UNIX PIPELINES ⛓ $ ls -l | grep "Mar" | sort
  • 25. IT Saturday • @aleks_voronov • Stanfy UNIX PIPELINES ⛓ $ ps aux | grep Xcode | awk '{print $2}'
  • 26. IT Saturday • @aleks_voronov • Stanfy UNIX PIPELINES ⛓ $ git branch | xargs git branch -D 😈
  • 27. IT Saturday • @aleks_voronov • Stanfy CLI WITH SWIFT 🖥
  • 28. IT Saturday • @aleks_voronov • Stanfy SWIFT REPL 🔃 (READ-EVALUATION-PRINT-LOOP) $ swift
  • 29. IT Saturday • @aleks_voronov • Stanfy IMMEDIATE MODE 🚀 $ swift script.swift
  • 30. IT Saturday • @aleks_voronov • Stanfy SWIFT COMPILE ⚙ $ swiftc script.swift $ ./script
  • 31. IT Saturday • @aleks_voronov • Stanfy SWIFT COMPILE ⚙ $ swiftc script.swift -o myscript $ ./myscript
  • 32. IT Saturday • @aleks_voronov • Stanfy EXECUTABLE SCRIPTS 💾
  • 33. IT Saturday • @aleks_voronov • Stanfy EXECUTABLE SCRIPTS #!/USR/BIN/SWIFT HASHBANG
  • 34. IT Saturday • @aleks_voronov • Stanfy EXECUTABLE SCRIPTS CHMOD +X SCRIPT.SWIFT
  • 35. IT Saturday • @aleks_voronov • Stanfy SCALING OUR CLI 🏗 WORKING WITH MULTIPLE FILES
  • 36. IT Saturday • @aleks_voronov • Stanfy MAIN.SWIFT 👑
  • 37. IT Saturday • @aleks_voronov • Stanfy EXECUTING MULTIPLE FILES📄📄 $ swift main.swift script.swift
  • 38. IT Saturday • @aleks_voronov • Stanfy $ swiftc main.swift script.swift -o script EXECUTING MULTIPLE FILES📄📄
  • 39. IT Saturday • @aleks_voronov • Stanfy $ swiftc script.swift main.swift -o script EXECUTING MULTIPLE FILES📄📄
  • 40. IT Saturday • @aleks_voronov • Stanfy $ swiftc *.swift -o script EXECUTING MULTIPLE FILES📄📄
  • 41. IT Saturday • @aleks_voronov • Stanfy $ find . -iname '*.swift' | xargs swiftc -o script EXECUTING MULTIPLE FILES📄📄
  • 42. IT Saturday • @aleks_voronov • Stanfy EXTERNAL RESOURCES 🎁
  • 43. IT Saturday • @aleks_voronov • Stanfy SYSTEM DEPENDENCIES 💼 $ swiftc script.swift $ xcrun -sdk macosx swiftc script.swift
  • 44. IT Saturday • @aleks_voronov • Stanfy CUSTOM DEPENDENCIES 🛠 -F $ swift -F /Carthage/Build/Mac script.swift
  • 45. IT Saturday • @aleks_voronov • Stanfy CUSTOM DEPENDENCIES #!/USR/BIN/SWIFT -F Carthage/Build/Mac HASHBANG
  • 46. IT Saturday • @aleks_voronov • Stanfy COMPILING DEPENDENT SCRIPT 🤖
  • 47. IT Saturday • @aleks_voronov • Stanfy $ xcrun -sdk macosx swiftc -F Carthage/Build/Mac script.swift COMPILING DEPENDENT SCRIPT > dyld: Library not loaded: @rpath
  • 48. IT Saturday • @aleks_voronov • Stanfy $ xcrun -sdk macosx swiftc -F Carthage/Build/Mac script.swift -Xlinker -rpath -Xlinker @executable_path/Carthage/Build/Mac COMPILING DEPENDENT SCRIPT
  • 49. IT Saturday • @aleks_voronov • Stanfy DEPENDENCIES MANAGEMENT 🍴
  • 50. IT Saturday • @aleks_voronov • Stanfy COCOAPODS 🤔
  • 51. IT Saturday • @aleks_voronov • Stanfy CARTHAGE 😏
  • 52. IT Saturday • @aleks_voronov • Stanfy SPM 😳 SWIFT PACKAGE MANAGER
  • 53. IT Saturday • @aleks_voronov • Stanfy PARSING ARGUMENTS 📬
  • 54. IT Saturday • @aleks_voronov • Stanfy PARSING ARGUMENTS $ ./script one two three $ ./script one two three $ ./script "one two three" 3 args 1 arg 1 arg
  • 55. IT Saturday • @aleks_voronov • Stanfy PROCESS ENUM Process.arguments == [ "./script.swift", "one", "two", "three" ]
  • 56. IT Saturday • @aleks_voronov • Stanfy FILESYSTEM 🗄
  • 57. IT Saturday • @aleks_voronov • Stanfy FILESYSTEM NSFILEMANAGER NSFILEHANDLER NSTASK NSPIPE
  • 58. IT Saturday • @aleks_voronov • Stanfy HANDY LIBRARIES
 🏛 COMMANDER OPTIONKIT COMMANDANT REACTIVETASKS PRETTYCOLORS
  • 59. IT Saturday • @aleks_voronov • Stanfy REAL WORLD EXAMPLES 🌍 CARTHAGEKIT
 CARTHAGE CLI
  • 60. IT Saturday • @aleks_voronov • Stanfy THANK YOU!
  • 61. IT Saturday • @aleks_voronov • Stanfy Q/A @ALEKS_VORONOV A-VORONOV