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
It's All in the Tools
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Nathan Eror
April 25, 2014
Programming
0
280
It's All in the Tools
These slides are from the 2014 edition my talk "It's All in the Tools" for CocoaConf.
Nathan Eror
April 25, 2014
Tweet
Share
More Decks by Nathan Eror
See All by Nathan Eror
Concurrent and Asynchronous Programming with Grand Central Dispatch
neror
1
89
Practical UIKit: Creating Custom Views and Components
neror
0
190
Building Fun and Touchable Interfaces
neror
0
73
Using Core Animation
neror
0
290
Other Decks in Programming
See All in Programming
Oxlint JS plugins
kazupon
1
960
IFSによる形状設計/デモシーンの魅力 @ 慶應大学SFC
gam0022
1
300
Architectural Extensions
denyspoltorak
0
290
AIフル活用時代だからこそ学んでおきたい働き方の心得
shinoyu
0
140
Lambda のコードストレージ容量に気をつけましょう
tattwan718
0
130
React 19でつくる「気持ちいいUI」- 楽観的UIのすすめ
himorishige
11
7.4k
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
1
2.5k
dchart: charts from deck markup
ajstarks
3
990
CSC307 Lecture 03
javiergs
PRO
1
490
今こそ知るべき耐量子計算機暗号(PQC)入門 / PQC: What You Need to Know Now
mackey0225
3
380
2026年 エンジニアリング自己学習法
yumechi
0
140
責任感のあるCloudWatchアラームを設計しよう
akihisaikeda
3
180
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
463
34k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
57
50k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.1k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
Into the Great Unknown - MozCon
thekraken
40
2.3k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
110
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.6k
Documentation Writing (for coders)
carmenintech
77
5.3k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
66
37k
WCS-LA-2024
lcolladotor
0
450
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
250
Transcript
IT’S ALL IN THE TOOLS Nathan Eror @neror /
[email protected]
WHY?
WHAT?
USE THE KEYBOARD Stacking Modifiers ⌘⌥⌃ Jump Bar ⌃[1-6] a.k.a.
Optional Navigation
⌥ Is for Assistant Editor
None
None
None
BEHAVIORS RS BEHAVIO U
None
DEBUGGER
None
None
None
Advanced Breakpoints
Debugger Quick Look UIViewController+NEQuickLookDebug.m #import "UIViewController+NEQuickLookDebug.h" ! @implementation UIViewController (NEQuickLookDebug)
! #if DEBUG ! - (id)debugQuickLookObject { UIView *view = [self view]; UIGraphicsBeginImageContextWithOptions(view.bounds.size, NO, 0.f); [view drawViewHierarchyInRect:view.bounds afterScreenUpdates:NO]; UIImage *snapshotImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return snapshotImage; } ! #endif ! @end
LLDB CUSTOMIZATION
.lldbinit custom summaries python scripting .lldbinit-Xcode
TERMINAL
Makefile SQLITE_DB_FILE=AppData.sqlite SIMULATOR_HOME=$(HOME)/Library/Application\ Support/iPhone\ Simulator ! dbshell: find $(SIMULATOR_HOME) -name
"$(SQLITE_DB_FILE)" -exec sqlite3 {} ';' ! killdb: find $(SIMULATOR_HOME) -name "$(SQLITE_DB_FILE)" -exec rm {} ';' ! dbschema: find $(SIMULATOR_HOME) -name "$(SQLITE_DB_FILE)" -exec sqlite3 {} .schema ';' ! dbdump: find $(SIMULATOR_HOME) -name "$(SQLITE_DB_FILE)" -exec sqlite3 {} .dump ';'
Shell - Redirection & Piping $ cat Makefile | pbcopy
...or... $ pbcopy < Makefile
Shell - Expansions $ ls screen.png $ cp screen{,_copy}.png $
ls screen.png screen_copy.png ... $ ls screen.png $ touch file{1,2,3} $ ls file1 file2 file3 screen.png
ALFRED BONUS!
None
None
DIY Python Ruby bash
Python #!/usr/bin/python ! from Quartz.CoreGraphics import * from Quartz.ImageIO import
* ! inurl = CFURLCreateWithFileSystemPath(None, "File.jpg", kCFURLPOSIXPathStyle, False) outurl = CFURLCreateWithFileSystemPath(None, "File_thumb.jpg", kCFURLPOSIXPathStyle, False) thumb_options = { kCGImageSourceCreateThumbnailWithTransform : True, kCGImageSourceCreateThumbnailFromImageAlways : True, kCGImageSourceThumbnailMaxPixelSize : 300 }; imgsrc = CGImageSourceCreateWithURL(inurl, thumb_options) thumb_image = CGImageSourceCreateThumbnailAtIndex(imgsrc, 0, thumb_options) ! outsrc = CGImageSourceCreateWithURL(outurl, thumb_options) ! dest = CGImageDestinationCreateWithURL(outurl, CGImageSourceGetType(outsrc), 1, None) CGImageDestinationAddImage(dest, thumb_image, None) CGImageDestinationFinalize(dest)
None
YOUR BODY IS A TOOL, TOO Eat Well Exercise Don’t
sit down all day!
THANK YOU Nathan Eror @neror
[email protected]
[email protected]