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
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
Pythonではじめるオープンデータ分析〜書籍の紹介と書籍で紹介しきれなかった事例の紹介〜
welliving
3
790
フルサイクルエンジニアリングをAI Agentで全自動化したい 〜構想と現在地〜
kamina_zzz
0
360
Findy AI+の開発、運用におけるMCP活用事例
starfish719
0
2.2k
AI Agent Dojo #4: watsonx Orchestrate ADK体験
oniak3ibm
PRO
0
130
AI Agent Tool のためのバックエンドアーキテクチャを考える #encraft
izumin5210
6
1.6k
Claude Codeの「Compacting Conversation」を体感50%減! CLAUDE.md + 8 Skills で挑むコンテキスト管理術
kmurahama
1
760
生成AIを利用するだけでなく、投資できる組織へ
pospome
2
450
CSC307 Lecture 04
javiergs
PRO
0
640
はじめてのカスタムエージェント【GitHub Copilot Agent Mode編】
satoshi256kbyte
0
170
GISエンジニアから見たLINKSデータ
nokonoko1203
0
190
SQL Server 2025 LT
odashinsuke
0
160
公共交通オープンデータ × モバイルUX 複雑な運行情報を 『直感』に変換する技術
tinykitten
PRO
0
190
Featured
See All Featured
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
130
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
120
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
2
80
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
47
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
150
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.3k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
270
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
39
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.8k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
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]