SlideShare uma empresa Scribd logo
1 de 110
Baixar para ler offline
Implementing Data Visualization Apps
          on iOS Devices

      Douglass Turner
      Elastic Image Software
      tweets: @dugla
      email: douglass.turner@gmail.com




              Elastic Image Software LLC
iOS software development is done using Objective-C an
object-oriented superset of C.

It was developed in the spirit of Smalltalk.




                     Elastic Image Software LLC

                                 2
• Objective-C is simple, approachable, lightweight,
 and pragmatic. No frills.
• Objective-C and C can be intermingled freely.
• Think OOP for C hackers and Unix heads.




                 Elastic Image Software LLC

                             3
Objective-C Supports


• Class: Grouping of data + code. The type of an object.
• Instance: A specific copy of a class.
• Method: A message that an object can respond to.
• Instance variable (ivar): A piece of data belonging to an object




                         Elastic Image Software LLC

                                     4
Interface - .h file


@interface className : superclassName

@property(nonatomic, retain) Type *propertyForType;

+(return_type)classMethod;

+(return_type)classMethodWithParam:(paramType) paramName;

-(return_type)instanceMethodWithParam1:(param1Type)param1Name
	 	    	 	 	                 andParam2:(param2Type) param2Name;

@end




                               Elastic Image Software LLC

                                           5
Implementation - .m file

@implementation classname

@synthesize propertyForType;

+(return_type)classMethod {
    // do stuff
}

+(return_type)classMethodWithParam:(paramType) paramName {
    // do stuff
}

-(return_type)instanceMethodWithParam1:(param1Type)param1Name
	 	    	 	 	                 andParam2:(param2Type) param2Name {
    // do stuff
}

@end


                              Elastic Image Software LLC

                                          6
Apple style tends towards longSelfDocumentingMethodNames.




                    Elastic Image Software LLC

                                7
Instantiation
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];



Property setting
self.window.backgroundColor = [UIColor whiteColor];



Message passing
[self.window makeKeyAndVisible];




                               Elastic Image Software LLC

                                           8
Objective-C Types




   Elastic Image Software LLC

               9
Dynamically-typed:      id whoCaresWhatThisIs;

   Statically-typed:     Thang* aThang;




                  Elastic Image Software LLC

                             10
Selectors identify methods by name




@interface Observer : NSObject

- (id)initWithTarget:(id)object action:(SEL)action;
@property(nonatomic, strong) id targetObject;
@property(nonatomic) SEL targetAction;

@end




                   Elastic Image Software LLC

                              11
Selectors identify methods by name




observer = [[Observer alloc] initWithTarget:self
	 	    	 	 	 	 	                     action:@selector(updateDisplay:)];




                           Elastic Image Software LLC

                                      12
Objective Lifecycle



• Create an instance.
• Futz with it (Send messages. Pass it around.)
• Discard it.




                  Elastic Image Software LLC

                             13
iOS is designed around one foundational pattern: Model View Controller.

Much of iOS development - excluding Model development - involves
customization and extension of this pattern.




                            Elastic Image Software LLC

                                       14
reference

Model                                          View



        reference                  reference




            Controller

            Elastic Image Software LLC

                       15
Model                                                View
                      Key-value Observing
                               or
                          Notification




                                                   Target - Action
Key-value Observing
         or
    Notification




                      Controller

                      Elastic Image Software LLC

                                 16
iOS has rich support for a loose, flat, decoupled style of
programming



           •   Notification
           •   Target - Action
           •   Key-value Observing (KVO)
           •   Block & Dispatch Queue
           •   Delegation (Protocol)




                    Elastic Image Software LLC

                               17
Notifications




Elastic Image Software LLC

           18
Notification




Notifier

[[NSNotificationCenter defaultCenter] postNotificationName:MyNotification object:self];




                                   Elastic Image Software LLC

                                              19
Notification


 Notification respondent


[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(respondToMyNotification:)
                                             name:MyNotification
                                           object:nil];




- (void) respondToMyNotification:(NSNotification *)notification {
    // do stuff
}




                                  Elastic Image Software LLC

                                             20
Target - Action




Elastic Image Software LLC

           21
Target - Action




 Elastic Image Software LLC

            22
Target - Action




 Elastic Image Software LLC

            23
Target - Action




 Elastic Image Software LLC

            24
Target - Action




@interface Counter : NSObject

@property(nonatomic, strong) NSNumber *count;
- (IBAction)trackSlider:(UISlider *)slider;

@end




           Elastic Image Software LLC

                      25
Target - Action




@implementation Counter

-(IBAction) trackSlider:(UISlider *)slider; {!
    self.count = [NSNumber numberWithFloat:slider.value];
}

@end




                   Elastic Image Software LLC

                              26
Target - Action




@class Observer;
@class Counter;

@interface EIViewController : UIViewController
@property(nonatomic, strong) IBOutlet UILabel *label;
@property(nonatomic, strong)          Observer *observer;
@property(nonatomic, strong) IBOutlet Counter *counter;
- (void)updateLabel:(NSNumber *)newValue;
@end




                   Elastic Image Software LLC

                              27
Target - Action



@implementation EIViewController

- (void)viewDidLoad {

       self.observer = [[Observer alloc] initWithTarget:self
                                                 action:@selector(updateLabel:)];

       [self.counter addObserver:self.observer
                      forKeyPath:@"count"
                         options:NSKeyValueObservingOptionNew
                         context:NULL];
}

-(void) updateLabel:(NSNumber *)newValue {

       self.label.text = [NSString stringWithFormat:@"%.2f", [newValue floatValue]];
}

@end




                                  Elastic Image Software LLC

                                             28
Key-value Observing (KVO)




     Elastic Image Software LLC

                29
Any property is by default “Key-value Compliant” allowing it
to be observed.




                      Elastic Image Software LLC

                                 30
Example: HelloSlider
GitHub: http://bit.ly/XDxIvp




   Elastic Image Software LLC

              31
Example: HelloSlider
GitHub: http://bit.ly/XDxIvp




   Elastic Image Software LLC

              32
Example: HelloSlider
GitHub: http://bit.ly/XDxIvp




   Elastic Image Software LLC

              33
Example: HelloSlider
           GitHub: http://bit.ly/XDxIvp




@interface Counter : NSObject

@property(nonatomic, strong) NSNumber *count;
- (IBAction)trackSlider:(UISlider *)slider;

@end




              Elastic Image Software LLC

                         34
Example: HelloSlider
                 GitHub: http://bit.ly/XDxIvp




@implementation Counter

-(IBAction) trackSlider:(UISlider *)slider; {!
    self.count = [NSNumber numberWithFloat:slider.value];
}

@end




                    Elastic Image Software LLC

                               35
Example: HelloSlider
              GitHub: http://bit.ly/XDxIvp




@interface Observer : NSObject
- (id)initWithTarget:(id)object action:(SEL)action;
@property(nonatomic, strong) id targetObject;
@property(nonatomic) SEL targetAction;
@end




                 Elastic Image Software LLC

                            36
Example: HelloSlider
                                  GitHub: http://bit.ly/XDxIvp




@implementation Observer

- (void)observeValueForKeyPath:(NSString *)keyPath
                      ofObject:(id)object
                        change:(NSDictionary *)change
                       context:(void *)context {

       [self.targetObject performSelectorOnMainThread:self.targetAction
                                           withObject:[object valueForKeyPath:keyPath]
                                        waitUntilDone:NO];

}

@end




                                     Elastic Image Software LLC

                                                37
Example: HelloSlider
                               GitHub: http://bit.ly/XDxIvp


@implementation EIViewController

- (void)viewDidLoad {

       self.observer = [[Observer alloc] initWithTarget:self
                                                 action:@selector(updateLabel:)];

       [self.counter addObserver:self.observer
                      forKeyPath:@"count"
                         options:NSKeyValueObservingOptionNew
                         context:NULL];
}

-(void) updateLabel:(NSNumber *)newValue {

       self.label.text = [NSString stringWithFormat:@"%.2f", [newValue floatValue]];
}

@end




                                  Elastic Image Software LLC

                                             38
Blocks & Dispatch Queues




    Elastic Image Software LLC

               39
Blocks & Dispatch Queues



Block

^{ NSLog(@"Doing something"); }




Dispatch Queue

dispatch_queue_t queue = dispatch_get_global_queue(0,0);

dispatch_async(queue, ^{
 NSLog(@"Doing something");
});




                     Elastic Image Software LLC

                                40
Blocks & Dispatch Queues



- (void)updateFeaturesWithNotification:(NSNotification *)notification {

    dispatch_async([UIApplication sharedIGVAppDelegate].trackControllerQueue, ^{

          [self updateFeatures];

          dispatch_async(dispatch_get_main_queue(), ^{

                [self.coverageTrack setNeedsDisplay];
                [self.track setNeedsDisplay];

          });
    });

}




                                    Elastic Image Software LLC

                                               41
Delegation (Protocol)




  Elastic Image Software LLC

             42
Delegation (Protocol)




A protocol is identical to an interface in Java. A collection of
method signatures implemented by the object that “conforms” to
the protocol.

The delegate/protocol pattern is ubiquitous throughout iOS.




                         Elastic Image Software LLC

                                    43
Delegation (Protocol)




@interface UITableViewController:UIViewController <UITableViewDelegate, UITableViewDataSource>


                  UITableViewController inherits from UIViewController and conforms to
                  the UITableViewDelegate and UITableViewDataSource protocols




                                         Elastic Image Software LLC

                                                    44
UITableViewDelegate




@protocol UITableViewDelegate<NSObject, UIScrollViewDelegate>

@optional
	 - (NSIndexPath *)tableView:willSelectRowAtIndexPath:;
	 - (NSIndexPath *)tableView:willDeselectRowAtIndexPath:;

@end




                     Elastic Image Software LLC

                                45
UITableViewDataSource



@protocol UITableViewDataSource<NSObject>

@required
- (NSInteger)tableView:numberOfRowsInSection:;

@optional
- (NSInteger)numberOfSectionsInTableView:;
- (NSArray *)sectionIndexTitlesForTableView:;

@end




               Elastic Image Software LLC

                          46
iOS devices combine mobility, gesture, and a
powerful GPU. This makes iOS App development
an entirely new form of software development.




               Elastic Image Software LLC

                          47
Mobility introduces context as a driver for usage.
New app types appear to meet user needs driven
by context.




                 Elastic Image Software LLC

                            48
Gesture forces a “no interface”, approach to
app design and U/X mindset.

Data representation drives interaction and
associated affordances.




              Elastic Image Software LLC

                         49
GPU. That cute little iPhone in your hand is a
graphics processing beast.

It is a GPU device tamed for domestic use.
The entire interface is GPU driven.

That is why iOS apps feel the way they do.
Light. Effortless. Friction free. Like butter.




               Elastic Image Software LLC

                          50
Developers must discard many of their desktop
assumptions when developing for iOS

           • No mouse
           • No interface
           • Minimal keyboard
           • Arms length interaction
           • One handed Interaction
           • Two handed Interaction
           • Untethered resources




               Elastic Image Software LLC

                          51
Demos & Code




Elastic Image Software LLC

           52
Multi-resolution Image




• CATiledLayer
• UIScrollView
• Amazon Web Services (S3)




       Elastic Image Software LLC

                  53
Multi-resolution Image




• 8k x 8k image resolution. 101MB on disk.
• Subsampled 4 successive times
• Diced into 256 x 256 tiles
• Stored on Amazon S3




             Elastic Image Software LLC

                        54
Elastic Image Software LLC

           55
Elastic Image Software LLC

           56
Elastic Image Software LLC

           57
IGV for iPad




• CoreGraphics
• Dispatch Queues
• UIScrollView




  Elastic Image Software LLC

             58
Elastic Image Software LLC

           59
Elastic Image Software LLC

           60
Elastic Image Software LLC

           61
Elastic Image Software LLC

           62
Elastic Image Software LLC

           63
Elastic Image Software LLC

           64
Elastic Image Software LLC

           65
Elastic Image Software LLC

           66
Elastic Image Software LLC

           67
Elastic Image Software LLC

           68
Elastic Image Software LLC

           69
Elastic Image Software LLC

           70
Elastic Image Software LLC

           71
The Elastic Image




• OpenGL
• GLSL - OpenGL Shading Language
• Shader/Gesture plug-ability via plist
• UISplitViewController




            Elastic Image Software LLC

                       72
Elastic Image Software LLC

           73
Elastic Image Software LLC

           74
Elastic Image Software LLC

           75
Elastic Image Software LLC

           76
Elastic Image Software LLC

           77
Elastic Image Software LLC

           78
Elastic Image Software LLC

           79
Elastic Image Software LLC

           80
Elastic Image Software LLC

           81
Elastic Image Software LLC

           82
Elastic Image Software LLC

           83
Elastic Image Software LLC

           84
Elastic Image Software LLC

           85
Elastic Image Software LLC

           86
Elastic Image Software LLC

           87
The Elastic Image

Gestures are fundamental to iOS apps. A gesture is attached to a
UIView. Gestures come in different flavors.

Pan
self.panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self
                                                          action:@selector(handlePanGesture:)];
[self addGestureRecognizer:self.panGesture];


Pinch
self.scaleGesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self
                                                              action:@selector(handleScaleGesture:)];
[self addGestureRecognizer:self. scaleGesture];




Tap
self.toggleGesture = [[UITapGestureRecognizer alloc] initWithTarget:self
                                                             action:@selector(handleToggleGesture:)];
self.toggleGesture.numberOfTapsRequired!!   = 1;
self.toggleGesture.numberOfTouchesRequired! = 1;
[self addGestureRecognizer:self.toggleGesture];




                                         Elastic Image Software LLC

                                                    88
The Elastic Image




Photo f/x are implemented in GLSL. The OpenGL Shading
Language. Shaders are written in a C-like language and
evaluated in a SIMD manner on the entire image in
realtime.




                   Elastic Image Software LLC

                              89
The Elastic Image


TextureMapShader - apply a texture (the photo) to a quad (the rendering surface).

varying!
       vec2 v_st;

uniform sampler2D hero;

void main() {
!
!   gl_FragColor =
(heroChannels == 1) ? vec4(texture2D(hero, v_st).a) : texture2D(hero, v_st);
!
}


varying!
       vec2 v_st;

uniform sampler2D hero;

void main() {
!
!   gl_FragColor =
    (heroChannels == 1) ? vec4(texture2D(hero, v_st).a) : texture2D(hero, v_st);
!
}


                                    Elastic Image Software LLC

                                               90
The Elastic Image

Property lists enable simple specification of a shader gesture and its handler.
The Objective-C runtimes enables easy conversion from string to class instance




                                  Elastic Image Software LLC

                                             91
The Elastic Image



Property lists enable simple specification of a shader gesture and its handler.
The Objective-C runtimes enables easy conversion from string to class instance

- (UIGestureRecognizer *)createGestureWithDictionary:(NSDictionary *)gestureDictionary {

    NSString *gestureClassName = [gestureDictionary objectForKey:@"class"];
    Class _gesture = NSClassFromString(gestureClassName);

    NSString *selectorName = [gestureDictionary objectForKey:@"selector"];
    SEL _selector = NSSelectorFromString(selectorName);

    UIGestureRecognizer *shaderGesture =
    [[[_gesture alloc] initWithTarget:self action:_selector] autorelease];

    shaderGesture.delegate = self.detailController;

    return shaderGesture;
}




                                    Elastic Image Software LLC

                                               92
Beautiful Panoramas




• OpenGL
• GLSL - OpenGL Shading Language
• Proprietary Panorama Engine
• UIPopoverController




           Elastic Image Software LLC

                      93
Elastic Image Software LLC

           94
Elastic Image Software LLC

           95
Elastic Image Software LLC

           96
Elastic Image Software LLC

           97
Elastic Image Software LLC

           98
Elastic Image Software LLC

           99
Elastic Image Software LLC

           100
BMW Interior Panorama




• OpenGL
• GLSL - OpenGL Shading Language
• Proprietary Panorama Engine
• 3D Spatial Picking




            Elastic Image Software LLC

                       101
Elastic Image Software LLC

           102
Elastic Image Software LLC

           103
Elastic Image Software LLC

           104
Elastic Image Software LLC

           105
Elastic Image Software LLC

           106
Elastic Image Software LLC

           107
RadPad



• OpenGL
• GLSL - OpenGL Shading Language
• Wavelet Image Decompression
• UISplitViewController
• UIScrollViewController




           Elastic Image Software LLC

                      108
Elastic Image Software LLC

           109
Thank You

Douglass Turner
Elastic Image Software
tweets: @dugla
email: douglass.turner@gmail.com




        Elastic Image Software LLC

Mais conteúdo relacionado

Mais procurados

Distributing information on iOS
Distributing information on iOSDistributing information on iOS
Distributing information on iOSMake School
 
Microservices for building an IDE - The innards of JetBrains Rider - NDC Oslo...
Microservices for building an IDE - The innards of JetBrains Rider - NDC Oslo...Microservices for building an IDE - The innards of JetBrains Rider - NDC Oslo...
Microservices for building an IDE - The innards of JetBrains Rider - NDC Oslo...Maarten Balliauw
 
Reactive Programming with JavaScript
Reactive Programming with JavaScriptReactive Programming with JavaScript
Reactive Programming with JavaScriptCodemotion
 
Jetpack, with new features in 2021 GDG Georgetown IO Extended
Jetpack, with new features in 2021 GDG Georgetown IO ExtendedJetpack, with new features in 2021 GDG Georgetown IO Extended
Jetpack, with new features in 2021 GDG Georgetown IO ExtendedToru Wonyoung Choi
 
Android Building, Testing and reversing
Android Building, Testing and reversingAndroid Building, Testing and reversing
Android Building, Testing and reversingEnrique López Mañas
 
Dependency Inversion and Dependency Injection in PHP
Dependency Inversion and Dependency Injection in PHPDependency Inversion and Dependency Injection in PHP
Dependency Inversion and Dependency Injection in PHPmtoppa
 
Sharper Better Faster Dagger ‡ - Droidcon SF
Sharper Better Faster Dagger ‡ - Droidcon SFSharper Better Faster Dagger ‡ - Droidcon SF
Sharper Better Faster Dagger ‡ - Droidcon SFPierre-Yves Ricau
 
Best Practices in Qt Quick/QML - Part 2
Best Practices in Qt Quick/QML - Part 2Best Practices in Qt Quick/QML - Part 2
Best Practices in Qt Quick/QML - Part 2Janel Heilbrunn
 
Using hilt in a modularized project
Using hilt in a modularized projectUsing hilt in a modularized project
Using hilt in a modularized projectFabio Collini
 

Mais procurados (12)

Distributing information on iOS
Distributing information on iOSDistributing information on iOS
Distributing information on iOS
 
Microservices for building an IDE - The innards of JetBrains Rider - NDC Oslo...
Microservices for building an IDE - The innards of JetBrains Rider - NDC Oslo...Microservices for building an IDE - The innards of JetBrains Rider - NDC Oslo...
Microservices for building an IDE - The innards of JetBrains Rider - NDC Oslo...
 
Reactive Programming with JavaScript
Reactive Programming with JavaScriptReactive Programming with JavaScript
Reactive Programming with JavaScript
 
Jetpack, with new features in 2021 GDG Georgetown IO Extended
Jetpack, with new features in 2021 GDG Georgetown IO ExtendedJetpack, with new features in 2021 GDG Georgetown IO Extended
Jetpack, with new features in 2021 GDG Georgetown IO Extended
 
Android Building, Testing and reversing
Android Building, Testing and reversingAndroid Building, Testing and reversing
Android Building, Testing and reversing
 
Dependency Inversion and Dependency Injection in PHP
Dependency Inversion and Dependency Injection in PHPDependency Inversion and Dependency Injection in PHP
Dependency Inversion and Dependency Injection in PHP
 
Introduction of Xcode
Introduction of XcodeIntroduction of Xcode
Introduction of Xcode
 
Sharper Better Faster Dagger ‡ - Droidcon SF
Sharper Better Faster Dagger ‡ - Droidcon SFSharper Better Faster Dagger ‡ - Droidcon SF
Sharper Better Faster Dagger ‡ - Droidcon SF
 
Solid OOPS
Solid OOPSSolid OOPS
Solid OOPS
 
02 objective-c session 2
02  objective-c session 202  objective-c session 2
02 objective-c session 2
 
Best Practices in Qt Quick/QML - Part 2
Best Practices in Qt Quick/QML - Part 2Best Practices in Qt Quick/QML - Part 2
Best Practices in Qt Quick/QML - Part 2
 
Using hilt in a modularized project
Using hilt in a modularized projectUsing hilt in a modularized project
Using hilt in a modularized project
 

Semelhante a Implementing Data Visualization Apps on iOS Devices

Tools and practices for rapid application development
Tools and practices for rapid application developmentTools and practices for rapid application development
Tools and practices for rapid application developmentZoltán Váradi
 
iOS overview
iOS overviewiOS overview
iOS overviewgupta25
 
Pentesting iOS Apps - Runtime Analysis and Manipulation
Pentesting iOS Apps - Runtime Analysis and ManipulationPentesting iOS Apps - Runtime Analysis and Manipulation
Pentesting iOS Apps - Runtime Analysis and ManipulationAndreas Kurtz
 
UIViewControllerのコーナーケース
UIViewControllerのコーナーケースUIViewControllerのコーナーケース
UIViewControllerのコーナーケースKatsumi Kishikawa
 
Android UI Development: Tips, Tricks, and Techniques
Android UI Development: Tips, Tricks, and TechniquesAndroid UI Development: Tips, Tricks, and Techniques
Android UI Development: Tips, Tricks, and TechniquesEdgar Gonzalez
 
Android UI Tips, Tricks and Techniques
Android UI Tips, Tricks and TechniquesAndroid UI Tips, Tricks and Techniques
Android UI Tips, Tricks and TechniquesMarakana Inc.
 
From C++ to Objective-C
From C++ to Objective-CFrom C++ to Objective-C
From C++ to Objective-Ccorehard_by
 
Code camp 2011 Getting Started with IOS, Una Daly
Code camp 2011 Getting Started with IOS, Una DalyCode camp 2011 Getting Started with IOS, Una Daly
Code camp 2011 Getting Started with IOS, Una DalyUna Daly
 
Azure functions
Azure functionsAzure functions
Azure functions명신 김
 
Mobile Developers Talks: Delve Mobile
Mobile Developers Talks: Delve MobileMobile Developers Talks: Delve Mobile
Mobile Developers Talks: Delve MobileKonstantin Loginov
 
Intro to computer vision in .net
Intro to computer vision in .netIntro to computer vision in .net
Intro to computer vision in .netStephen Lorello
 
【Unite 2017 Tokyo】ScriptableObjectを使ってプログラマーもアーティストも幸せになろう
【Unite 2017 Tokyo】ScriptableObjectを使ってプログラマーもアーティストも幸せになろう【Unite 2017 Tokyo】ScriptableObjectを使ってプログラマーもアーティストも幸せになろう
【Unite 2017 Tokyo】ScriptableObjectを使ってプログラマーもアーティストも幸せになろうUnity Technologies Japan K.K.
 
MobSecCon 2015 - Dynamic Analysis of Android Apps
MobSecCon 2015 - Dynamic Analysis of Android AppsMobSecCon 2015 - Dynamic Analysis of Android Apps
MobSecCon 2015 - Dynamic Analysis of Android AppsRon Munitz
 
TDD: Develop, Refactor and Release With Confidence
TDD: Develop, Refactor and Release With ConfidenceTDD: Develop, Refactor and Release With Confidence
TDD: Develop, Refactor and Release With ConfidenceMehdi Valikhani
 
Iphone os dev sharing with new examples
Iphone os dev sharing with new examplesIphone os dev sharing with new examples
Iphone os dev sharing with new exampleskenshin03
 
React Native for multi-platform mobile applications
React Native for multi-platform mobile applicationsReact Native for multi-platform mobile applications
React Native for multi-platform mobile applicationsMatteo Manchi
 
React Native custom components
React Native custom componentsReact Native custom components
React Native custom componentsJeremy Grancher
 

Semelhante a Implementing Data Visualization Apps on iOS Devices (20)

Tools and practices for rapid application development
Tools and practices for rapid application developmentTools and practices for rapid application development
Tools and practices for rapid application development
 
iOS overview
iOS overviewiOS overview
iOS overview
 
Pentesting iOS Apps - Runtime Analysis and Manipulation
Pentesting iOS Apps - Runtime Analysis and ManipulationPentesting iOS Apps - Runtime Analysis and Manipulation
Pentesting iOS Apps - Runtime Analysis and Manipulation
 
UIViewControllerのコーナーケース
UIViewControllerのコーナーケースUIViewControllerのコーナーケース
UIViewControllerのコーナーケース
 
Android UI Development: Tips, Tricks, and Techniques
Android UI Development: Tips, Tricks, and TechniquesAndroid UI Development: Tips, Tricks, and Techniques
Android UI Development: Tips, Tricks, and Techniques
 
Android UI Tips, Tricks and Techniques
Android UI Tips, Tricks and TechniquesAndroid UI Tips, Tricks and Techniques
Android UI Tips, Tricks and Techniques
 
iOS
iOSiOS
iOS
 
From C++ to Objective-C
From C++ to Objective-CFrom C++ to Objective-C
From C++ to Objective-C
 
Code camp 2011 Getting Started with IOS, Una Daly
Code camp 2011 Getting Started with IOS, Una DalyCode camp 2011 Getting Started with IOS, Una Daly
Code camp 2011 Getting Started with IOS, Una Daly
 
Azure functions
Azure functionsAzure functions
Azure functions
 
Mobile Developers Talks: Delve Mobile
Mobile Developers Talks: Delve MobileMobile Developers Talks: Delve Mobile
Mobile Developers Talks: Delve Mobile
 
Intro to computer vision in .net
Intro to computer vision in .netIntro to computer vision in .net
Intro to computer vision in .net
 
iOS OpenGL
iOS OpenGLiOS OpenGL
iOS OpenGL
 
【Unite 2017 Tokyo】ScriptableObjectを使ってプログラマーもアーティストも幸せになろう
【Unite 2017 Tokyo】ScriptableObjectを使ってプログラマーもアーティストも幸せになろう【Unite 2017 Tokyo】ScriptableObjectを使ってプログラマーもアーティストも幸せになろう
【Unite 2017 Tokyo】ScriptableObjectを使ってプログラマーもアーティストも幸せになろう
 
OpenCV+Android.pptx
OpenCV+Android.pptxOpenCV+Android.pptx
OpenCV+Android.pptx
 
MobSecCon 2015 - Dynamic Analysis of Android Apps
MobSecCon 2015 - Dynamic Analysis of Android AppsMobSecCon 2015 - Dynamic Analysis of Android Apps
MobSecCon 2015 - Dynamic Analysis of Android Apps
 
TDD: Develop, Refactor and Release With Confidence
TDD: Develop, Refactor and Release With ConfidenceTDD: Develop, Refactor and Release With Confidence
TDD: Develop, Refactor and Release With Confidence
 
Iphone os dev sharing with new examples
Iphone os dev sharing with new examplesIphone os dev sharing with new examples
Iphone os dev sharing with new examples
 
React Native for multi-platform mobile applications
React Native for multi-platform mobile applicationsReact Native for multi-platform mobile applications
React Native for multi-platform mobile applications
 
React Native custom components
React Native custom componentsReact Native custom components
React Native custom components
 

Último

Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"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
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
"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
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
"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
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 

Último (20)

Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"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
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
"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...
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
"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
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 

Implementing Data Visualization Apps on iOS Devices