Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Alcatraz internals
Search
Marin Usalj
April 29, 2014
Programming
360
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Alcatraz internals
Talk given on NSLondon, April 2014
Marin Usalj
April 29, 2014
More Decks by Marin Usalj
See All by Marin Usalj
Code signing on iOS/OSX
supermarin
2
520
Launch Arguments - the mysteries
supermarin
1
270
Swift for CLI tools
supermarin
16
25k
CocoaPods intro
supermarin
2
260
Private pods - best practices
supermarin
1
200
CLI apps. For fun and profit
supermarin
4
16k
ObjectiveSugar & ObjectiveRecord
supermarin
5
610
Alcatraz - Xcode package manager
supermarin
3
370
BubbleWrap
supermarin
3
370
Other Decks in Programming
See All in Programming
AI時代のシニアエンジニアとは
yosuke_furukawa
PRO
12
11k
當我們開始不讀 Code - AI Agent 時代,Code Review 與 Clean Code 還剩下什麼?
jame2408
1
340
AIがコードを書いてくれる時代、我々は何を確かめるのか
yosuke_furukawa
PRO
13
5.1k
SFCで実現する病院・医療システムの動的組み立て式UI
koukimiura
1
140
Spec-driven Development with AI
simas
PRO
0
2.2k
Kotlinの15年とServer-Side Kotlin
n_takehata
1
170
dotNET_vulnclicker_intro.pdf
deka_morita
0
160
TanStack Vue Query と Pinia Colada から学ぶ非同期状態の型設計
aoshi
0
360
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
1.1k
React Native에 현대적인 빌드 도구 더하기: Rollipop 구현기
leegeunhyeok
0
160
LLM 101
dalinaum
0
120
Lambda durable functionsでHuman in the Loopを楽に…楽に……
har1101
2
220
Featured
See All Featured
What the history of the web can teach us about the future of AI
inesmontani
PRO
2
760
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
470
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
23k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
640
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
310
StorybookのUI Testing Handbookを読んだ
zakiyama
31
7k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
1k
Ruling the World: When Life Gets Gamed
codingconduct
0
420
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
510
Transcript
Alcatraz the package manager for Xcode
None
how does this even
~/Library/Application\ Support\ /Developer/Shared/Xcode/Plug-ins
./Plug-ins VVDocumenter.xcplugin BeginningOfLine.xcplugin OMColorSense.xcplugin BBUFullIssueNavigator.xcplugin
ZOMG ! PLUGINS!!!!11!! <3 <3
None
+ (void)pluginDidLoad:(NSBundle *)plugin { ! if ([currentApplicationName isEqual:@"Xcode"]) { static
dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ sharedPlugin = [[self alloc] initWithBundle:plugin]; }); } ! }
Everything’s terrible Sincerely, FileMerge.app
+ (void)pluginDidLoad:(NSBundle *)plugin { ! if ([currentApplicationName isEqual:@"Xcode"]) { static
dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ sharedPlugin = [[self alloc] initWithBundle:plugin]; }); } ! }
aapl
I’ll need you to come in tommmmoroooow
and add these DVTPlugInCompatibility UUIDs
that’d be GRRREEEEEAT
Cou … l ..dn’t ww we use. Semantic Versioning?
Oh, almost forgot…
I’ll need you to stop filling radars
and crashing Xcode
otherwise we’ll disable plugins entirely
THANKS
Xcode UUID 5.0 640F884E-CE55-4B40-87C0-8869546CAB7A 5.0.1 640F884E-CE55-4B40-87C0-8869546CAB7A 5.1 A2E4D43F-41F4-4FB9-BB94-7177011C9AED 5.1.1 A2E4D43F-41F4-4FB9-BB94-7177011C9AED
Xcode UUID 5.0 640F884E-CE55-4B40-87C0-8869546CAB7A YOUR PLUGIN 5.1 A2E4D43F-41F4-4FB9-BB94-7177011C9AED
Xcode UUID 5.0 640F884E-CE55-4B40-87C0-8869546CAB7A YOUR PLUGIN 5.1 A2E4D43F-41F4-4FB9-BB94-7177011C9AED 6.0 BASDSDII-JWM3-2987-KKHH-82890MSEBUEM
internals
None
Color scheme Templates Xcode Plugin
Color scheme Templates Xcode Plugin
-name -description -iconName -remotePath -isInstalled -screenshotPath ATZPackage.h
@implementation ATZColorScheme ! - (ATZInstaller *)installer { return [ATZColorSchemeInstaller sharedInstaller];
} ! - (NSString *)type { return COLOR_SCHEME; } ! - (BOOL)requiresRestart { return YES; } ! - (NSString *)extension { return DVTCOLORSCHEME; } ! - (NSString *)iconName { return COLOR_SCHEME_ICON_NAME; } ! @end
@implementation ATZPlugin @synthesize requiresRestart; ! - (ATZInstaller *)installer { return
[ATZPluginInstaller sharedInstaller]; } ! - (NSString *)type { return PLUGIN; } ! - (NSString *)extension { return XCPLUGIN; } ! - (NSString *)iconName { return PLUGIN_ICON_NAME; } ! @end
@implementation ATZTemplate ! - (ATZInstaller *)installer { @throw [NSException exceptionWithName:@"Abstract
template" reason:@"Please use one of ATZTemplate subclasses" userInfo:nil]; } ! - (NSString *)type { return nil; } ! - (BOOL)requiresRestart { return NO; } ! - (NSString *)extension { return XCTEMPLATE; } ! - (NSString *)iconName { return TEMPLATE_ICON_NAME; } ! @end
ATZInstaller.h -installPackage:progress:completion: -updatePackage:progress:completion: -removePackage:progress:completion: ! -isPackageInstalled:
ATZInstaller.h ATZColorSchemeInstaller.h ATZTemplateInstaller.h ATZPluginInstaller.h
ATZPluginInstaller.h
ATZTemplateInstaller.h
ATZColorSchemeInstaller.h
updates
git fetch git reset —hard
None
git yolo
how do we update Alcatraz?
Alcatraz is just a plugin
ALCATRAZ USES ALCATRAZ TO UPDATE ALCATRAZ
roadmap
NDA
May 2013
Mar 2014
NDA
CocoaPods
the band
@kattrali KEYBOARDS KEYBOARDS
@jurre KEYBOARDS KEYBOARDS
many awesome contributors THE ORCHESTRA
thank you Marin Usalj @supermarin | supermar.in