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
👾&⌚️
Search
giginet
PRO
March 03, 2017
Programming
11k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
👾&⌚️
try! Swift 2017
giginet
PRO
March 03, 2017
More Decks by giginet
See All by giginet
🀄️ on swiftc
giginet
PRO
0
530
15年メンテしてきたdotfilesから開発トレンドを振り返る 2011 - 2026
giginet
PRO
2
410
Claude Codeログ基盤の構築
giginet
PRO
7
4.4k
Inside of Swift Export
giginet
PRO
1
2.9k
Swiftビルド弾丸ツアー - Swift Buildが作る新しいエコシステム
giginet
PRO
0
2.8k
SwiftでMCPサーバーを作ろう!
giginet
PRO
3
450
Creating Intuitive Developer Tool in Swift
giginet
PRO
0
1.6k
Mergeable Libraryで 高速なアプリ起動を実現しよう!
giginet
PRO
2
8.1k
5分でわかるExplicitly Built Modules
giginet
PRO
2
1.9k
Other Decks in Programming
See All in Programming
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
180
Lessons from Spec-Driven Development
simas
PRO
0
230
dRuby over BLE
makicamel
2
400
SLOをサービス品質の共通言語にするために 取り組んできたこと
wakana0222
0
200
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
12
4.6k
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
180
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
1k
どこまでゆるくて許されるのか
tk3fftk
0
290
スマートグラスで並列バイブコーディング
hyshu
0
270
ローカルLLMでどこまでコードが書けるか -縮小版 / How much code can be written on a local LLM Shortened
kishida
2
150
Even G2とAWSで推しのエージェントを召喚しよう!
har1101
1
140
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
200
Featured
See All Featured
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
180
The agentic SEO stack - context over prompts
schlessera
0
840
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
We Are The Robots
honzajavorek
0
260
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.4k
30 Presentation Tips
portentint
PRO
1
340
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
BBQ
matthewcrist
89
10k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
270
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
A better future with KSS
kneath
240
18k
Transcript
@giginet
&⌚
None
None
None
None
None
FCEUX(C++)
try! Objective-C
Metal OpenGL ES RENDERING
var texture: SKTexture { guard let videoBuffer: UnsafeRawPointer = emulatorCore.videoBuffer()
else { fatalError() } let data = Data(bytes: videoBuffer, count: Int(bufferCount)) let size = CGSize(width: 256, height: 240) return SKTexture(data: data, size: size, flipped: true) }
import AVFoundation // let destinationBuffer: AVAudioPCMBuffer! // Get source buffer
let sourceBuffer = UnsafeBufferPointer<Int16>(start: head.assumingMemoryBound(to: Int16.self), count: bufferLength) // Copy samples to AVAudioPCMBuffer for channel in 0..<channelCount { let samples = UnsafeMutableBufferPointer<Float32>(start: destinationBuffer.floatChannelData?.pointee, count: bufferLength) for frame in 0..<frameLength { // Cast 16bit audio to 32bit samples[frame] = Float32(audioBuffer[frame * channelCount + channel]) } } AUDIO
▸CoreMotion ▸WKGestureRecognizer ▸Tap ▸LongPress ▸Swipe ▸Pan ▸WKCrownDelegate, WKCrownSequencer INPUTS
Touch Down Touch Up WKTapGestureRecognizer
// super rapidly long press(1 frame) longPressGestureRecognizer.minimumPressDuration = 1.0 /
60.0 WKLongPressGestureRecognizer
None
public enum Button: UInt32 { case a = 1 case
b = 2 case select = 4 case start = 8 case up = 16 case down = 32 case left = 64 case right = 128 } if sender.state == .began { controllerState |= button.rawValue } else if sender.state == .ended { controllerState &= ~button.rawValue }
https://github.com/giginet/NESEmulator-watchOS
None
Have a nice Pokémon GO Life!
None