The document provides an overview of options for iOS development including HTML5, cross-platform frameworks like Titanium and PhoneGap, and native iOS development using Objective-C. HTML5 allows using existing web technologies but has limited hardware access and cross-browser issues. Cross-platform frameworks provide better hardware access but compatibility may vary. Native development using Objective-C offers the most control and best performance but only works on iOS. Xcode is used for native iOS development. An introduction to Objective-C covers classes, methods, and basic syntax similar to C with object-oriented additions.
The document provides an overview of iOS 5 development using Objective-C. It begins with introductions and contact information, then outlines the agenda which includes a review of Objective-C and iOS, an overview of new iOS 5 features, and a demonstration of the Lobstagram app. The document then discusses iOS development requirements and provides a 10 minute crash course on Objective-C, covering classes, methods, properties, and implementation.
Scala in-practice-3-years by Patric Fornasier, Springr, presented at Pune Sca...Thoughtworks
3 years ago, Springer decided to use Scala on a large, strategic project. This talk is about the journey the development teams made. Why did they choose Scala in the first place? Did they get what they hoped for? What challenges and surprises did they encounter along the way? And, most importantly, are they still happy with their choice?
JRuby 9000 introduced a new intermediate representation that allows us to use classic compiler strategies to optimize Ruby. This talk describes what we're doing with this new IR and why current JVM capabilities are not sufficient.
Slides from a talk I gave about using the Ruby on Rails console (and irb) to develop Web applications. Describes the features of the console, and how you might want to use it.
The document discusses Guild, a new concurrency abstraction for Ruby that allows parallel execution across Guilds while avoiding data races. It provides demonstrations of Guild performance on a 40 vCPU system. Guilds allow sharing immutable and specially defined mutable objects between Guilds, while normal mutable objects cannot be shared to avoid data races. Inter-Guild communication uses an actor model with sending/receiving semantics. Non-shareable objects can be sent between Guilds either by copying or moving ownership.
JRuby 9000 - Taipei Ruby User's Group 2015Charles Nutter
The document discusses JRuby 9000, a new version of JRuby that runs on a new runtime based on an intermediate representation (IR). Some key points:
- JRuby 9000 includes major performance improvements like just-in-time compiling of blocks and optimized define_method performance.
- The new runtime represents code as IR instructions instead of an AST for better optimization capabilities. It allows registering passes to optimize the IR.
- Future work includes improved inlining, numeric specialization to use primitives on the JVM, and leveraging ahead-of-time compilation capabilities being added to the JVM to improve startup time.
- The overall goal is to continue optimizing JRuby to perform
Type Profiler: An Analysis to guess type signaturesmametter
This document discusses type profiling, which is a technique for extracting type information from Ruby code without requiring type annotations. It proposes three type profilers:
1. Static Analysis 1 (SA1) guesses type signatures for method parameters based on which methods are called on those parameters.
2. Static Analysis 2 (SA2) focuses on guessing types for built-in classes.
3. Dynamic Analysis (DA) enhances the existing RubyTypeInference tool by running test suites and monitoring method calls and returns to aggregate type information.
The document evaluates SA1 on a sample WEBrick codebase and finds some common failures in the guessed types. Overall, type profiling aims to extract type information automatically as an alternative
The document provides an overview of iOS 5 development using Objective-C. It begins with introductions and contact information, then outlines the agenda which includes a review of Objective-C and iOS, an overview of new iOS 5 features, and a demonstration of the Lobstagram app. The document then discusses iOS development requirements and provides a 10 minute crash course on Objective-C, covering classes, methods, properties, and implementation.
Scala in-practice-3-years by Patric Fornasier, Springr, presented at Pune Sca...Thoughtworks
3 years ago, Springer decided to use Scala on a large, strategic project. This talk is about the journey the development teams made. Why did they choose Scala in the first place? Did they get what they hoped for? What challenges and surprises did they encounter along the way? And, most importantly, are they still happy with their choice?
JRuby 9000 introduced a new intermediate representation that allows us to use classic compiler strategies to optimize Ruby. This talk describes what we're doing with this new IR and why current JVM capabilities are not sufficient.
Slides from a talk I gave about using the Ruby on Rails console (and irb) to develop Web applications. Describes the features of the console, and how you might want to use it.
The document discusses Guild, a new concurrency abstraction for Ruby that allows parallel execution across Guilds while avoiding data races. It provides demonstrations of Guild performance on a 40 vCPU system. Guilds allow sharing immutable and specially defined mutable objects between Guilds, while normal mutable objects cannot be shared to avoid data races. Inter-Guild communication uses an actor model with sending/receiving semantics. Non-shareable objects can be sent between Guilds either by copying or moving ownership.
JRuby 9000 - Taipei Ruby User's Group 2015Charles Nutter
The document discusses JRuby 9000, a new version of JRuby that runs on a new runtime based on an intermediate representation (IR). Some key points:
- JRuby 9000 includes major performance improvements like just-in-time compiling of blocks and optimized define_method performance.
- The new runtime represents code as IR instructions instead of an AST for better optimization capabilities. It allows registering passes to optimize the IR.
- Future work includes improved inlining, numeric specialization to use primitives on the JVM, and leveraging ahead-of-time compilation capabilities being added to the JVM to improve startup time.
- The overall goal is to continue optimizing JRuby to perform
Type Profiler: An Analysis to guess type signaturesmametter
This document discusses type profiling, which is a technique for extracting type information from Ruby code without requiring type annotations. It proposes three type profilers:
1. Static Analysis 1 (SA1) guesses type signatures for method parameters based on which methods are called on those parameters.
2. Static Analysis 2 (SA2) focuses on guessing types for built-in classes.
3. Dynamic Analysis (DA) enhances the existing RubyTypeInference tool by running test suites and monitoring method calls and returns to aggregate type information.
The document evaluates SA1 on a sample WEBrick codebase and finds some common failures in the guessed types. Overall, type profiling aims to extract type information automatically as an alternative
Down the Rabbit Hole: An Adventure in JVM WonderlandCharles Nutter
The document discusses exploring interesting Java features and how they are compiled and executed by the JVM. It will look at bytecode, compiler logs, and native code generated for simple Java examples. The goal is to understand hidden performance costs, how code design impacts performance, and what the JVM can and cannot optimize. It begins with a "Hello World" example and examines the bytecode, compiler logs showing inlining, and native assembly code generated by the JIT compiler.
Louis Loizides iOS Programming IntroductionLou Loizides
This document provides an introduction and overview of iOS development using Objective-C. It discusses key concepts like classes, inheritance, memory management, and pointers. It also covers setting up an iOS development environment with Xcode and Cocoa Touch frameworks. Specific topics covered include Objective-C syntax and conventions, the stack and heap, creating and initializing classes, and using Automatic Reference Counting for memory management.
This document provides an overview of iOS development using Objective-C. It discusses key concepts like classes, inheritance, pointers and memory management. It also covers setting up development with Xcode on Mac, and recommends books for learning iPhone programming and Objective-C.
This document provides an overview of upcoming technologies related to the Java Virtual Machine (JVM). It begins with introductions and goals of the talk. It then discusses what the JVM is and lists many open-source JVMs. Next it explores reasons for and against using the JVM. A timeline of the OpenJDK project is presented. Features of Java 7 and 8 are highlighted. Alternative languages that run on the JVM are listed. Native interoperability via JNI and the Java Native Runtime (JNR) are described. Performance of JNR compared to JNA is shown.
Slides from Ajax Experience 2009. In this session:
- Object creation patterns
- Code reuse patterns
- Functional patterns
- More on object creation
- Design patterns
Some example patterns: object creation with literals and constructos, prototypes, inheritance and other code reuse patterns, lazy definition, callbacks, singleton, factory, classical and prototypal inheritance, namespaces, chaining, modules, static methods, private and privileged members
For more information, see:
http://jspatterns.com
My column in the JavaScript Magazine (http://jsmag.com)
Blog: http://phpied.com
InvokeDynamic is a new JVM instruction that allows method calls to be dynamically dispatched at runtime based on the actual object type, enabling just-in-time compilation optimizations for any language by making non-Java call sites visible to the HotSpot JVM compiler. It uses bootstrap methods, call sites holding method handle chains, and switch points to dynamically bind calls based on guard conditions checking the actual object type and rebinding if needed.
Introduction to Kotlin Language and its application to Android platformEastBanc Tachnologies
Author: Oleg Godovykh, eastbanctech.com
Kotlin is a new programming language built by Jetbrains and is a new member of JVM family. As opposed to typical reason to introduce some new language, Kotlin main goal isn't to create new paradigm or fill a new niche, but to make routine tasks much easier and safer. Kotlin gains popularity across Android developer community, and in this presentation it is shown how Kotlin usage can dramatically simplify typical mobile app development.
This document provides an overview of upcoming technologies beyond the Java Virtual Machine (JVM). It begins with introductions and then discusses several topics:
- There are many open-source JVMs beyond Oracle's HotSpot such as JamVM, Maxine, and JikesRVM.
- Reasons for using the JVM include its large standard library and ease of portability compared to alternative virtual machines. However, startup time can be slow.
- Techniques for improving JVM startup time are discussed, such as saving JIT-compiled code and using the Drip tool to pre-initialize JVMs.
- Native interoperability is explored through the Java Native Interface (JNI
This document summarizes a lecture on efficiency oriented programming using Groovy and Grails. The key points are:
- Biological experiments produce huge amounts of data requiring powerful tools for analysis. Excel is not sufficient.
- The goal of the course is to make students efficient in the lab with programming skills and a computer at their fingertips. It will cover programming fundamentals, independence, and real-life challenges.
- Groovy and Grails were selected as the languages for the course because they offer a compact syntax, support for modern web applications, natural storage of data in databases, and encouragement of agile development practices.
In this talk we will explore the hype around the programming language Kotlin from JetBrains. We will explore the goodies and gotchas of Kotlin and why Kotlin might be a good investment for JVM and Android based applications. Come and see how JetBrains practical approach to language design increases expressiveness and code safety without necessarily sacrificing readability. The talk will give a proper introduction to the language and its syntax and continue to cover a lot of things from functional constructs to extension functions and builders.
TypeProf for IDE: Enrich Development Experience without Annotationsmametter
The document discusses TypeProf for IDE, a VSCode extension powered by TypeProf, a static type analyzer for Ruby. It allows achieving aspects of modern development experience like on-the-fly error reporting and type inference without type annotations. The demo shows features like method signature hints, error reporting, and completion working through the language server protocol. Future work includes improving parser robustness and optimizing analysis performance.
To hit Ruby3x3, we must first figure out **what** we're going to measure, **how** we're going to measure it, in order to get what we actually want. I'll cover some standard definitions of benchmarking in dynamic languages, as well as the tradeoffs that must be made when benchmarking. I'll look at some of the possible benchmarks that could be considered for Ruby 3x3, and evaluate them for what they're good for measuring, and what they're less good for measuring, in order to help the Ruby community decide what the 3x goal is going to be measured against.
Code Examples: https://github.com/nolanerck/modern-cfml-demos
The recent versions of ColdFusion have added many new language features. We’ve now got closures, functional programming constructs, QueryExecute, the safe navigation operator, the Elvis operator, and even more coming in future releases. For people new to functional programming or object oriented programming, it can be hard to see where these features can be beneficial. Let’s fix that!
In this talk we’ll discuss many of the new language enhancements in CFML. But rather than stopping with an “x = 1” example, we’ll look at blocks of code that are more real-world in nature. The code demos will all be based on scenarios you’ll run across in your daily development. That's right, we'll run real live code! You'll get to see these language features in action, right before your very eyes!
This document discusses object-oriented programming concepts like inheritance, subtyping, and polymorphism. It uses an example database application called DoME to demonstrate how inheritance can be used to avoid code duplication between similar classes like CD and Video. The key concepts covered are defining subclasses that inherit from a common superclass, allowing subclass objects to be used where the superclass is expected, and storing heterogeneous objects in polymorphic collections.
The document discusses the agenda for an Enterprise JavaScript session, which includes recapping functions, exceptions, and the history object in JavaScript. It then goes into detail on the typeof operator, function properties like arguments and this, and how to use the call and apply methods. Hands-on exercises demonstrate working with arguments and exceptions. Finally, the document explains how the history object works and how HTML5 introduced new methods like pushState and replaceState to programmatically modify the browser history.
The document discusses best practices for testing with mocks in Ruby on Rails applications. It recommends that tests run fast by avoiding loading Rails and using factories, and that mocks should assert messages rather than state. Tests become more maintainable by mocking roles instead of concrete objects, and by isolating code into single responsibility classes rather than putting logic in fat models. When code is well-encapsulated with messages, mocks can make tests clearer; but mocks may indicate problems when they are difficult to set up or when tests become brittle.
The document provides an overview of the content to be covered in Day 2 of training, including: reviewing classes and objects; exploring collection classes like NSArray, NSDictionary, and NSSet; learning about protocols and categories; and using NSUserDefaults for storage. It then describes building a simple contact list app that uses the Person, Employee, and Client classes, allows filtering contacts by name and sorting by last name, and distinguishes employee and client objects through introspection. Exercises are provided to practice these concepts by modifying existing classes and creating categories.
New features in iOS 5 include iCloud for syncing content across devices, Notification Center for managing alerts, iMessage for messaging between iOS 5 users, and Newsstand for organizing magazine and newspaper subscriptions. Additional features are Reminders, integrated Twitter support, camera and photo enhancements, and PC-free backup and updating using iCloud. iOS 5 also brings multitasking gestures and AirPlay mirroring to the iPad as well as new features for Safari, Mail, Calendar, Game Center, and Wi-Fi sync. Developers benefit from tools like Automatic Reference Counting and the new LLVM compiler in Xcode 4.2.
Paternity testing using DNA is the most accurate way to determine a child's biological father. DNA testing is now inexpensive, convenient, and accurate. Samples can be collected via a non-invasive oral swab at home, and results are provided within a few days. DNA testing establishes paternity with over 99.99% accuracy, providing a definitive yes or no answer regarding biological parentage.
This document provides an overview of the fourth grade mathematics curriculum for Unit 6 on fractions and decimals. The unit focuses on problem solving strategies, representing fractions and decimals, and understanding that fractions represent parts of a whole. Key concepts covered include equivalent fractions, comparing fractions, and adding/subtracting fractions. Students will represent fractions using visual models and explore strategies like finding common denominators. The unit aims to develop students' conceptual understanding of fractions and decimals through exploration of essential questions.
iOS 5 introduces a new notification center that makes notifications more prominent and engaging, Twitter integration that allows for easy sharing from apps, the ability to download updates, music, and apps without a PC, iCloud for seamless access to data across devices, and iMessage for integrated messaging. These changes will affect marketers by providing more effective ways to use notifications, enabling mass reach through Twitter, ensuring consumers have the latest version of apps and OS, allowing brands to be experienced uniformly across platforms, and potentially spurring new messaging channels for brands to engage in conversations.
Down the Rabbit Hole: An Adventure in JVM WonderlandCharles Nutter
The document discusses exploring interesting Java features and how they are compiled and executed by the JVM. It will look at bytecode, compiler logs, and native code generated for simple Java examples. The goal is to understand hidden performance costs, how code design impacts performance, and what the JVM can and cannot optimize. It begins with a "Hello World" example and examines the bytecode, compiler logs showing inlining, and native assembly code generated by the JIT compiler.
Louis Loizides iOS Programming IntroductionLou Loizides
This document provides an introduction and overview of iOS development using Objective-C. It discusses key concepts like classes, inheritance, memory management, and pointers. It also covers setting up an iOS development environment with Xcode and Cocoa Touch frameworks. Specific topics covered include Objective-C syntax and conventions, the stack and heap, creating and initializing classes, and using Automatic Reference Counting for memory management.
This document provides an overview of iOS development using Objective-C. It discusses key concepts like classes, inheritance, pointers and memory management. It also covers setting up development with Xcode on Mac, and recommends books for learning iPhone programming and Objective-C.
This document provides an overview of upcoming technologies related to the Java Virtual Machine (JVM). It begins with introductions and goals of the talk. It then discusses what the JVM is and lists many open-source JVMs. Next it explores reasons for and against using the JVM. A timeline of the OpenJDK project is presented. Features of Java 7 and 8 are highlighted. Alternative languages that run on the JVM are listed. Native interoperability via JNI and the Java Native Runtime (JNR) are described. Performance of JNR compared to JNA is shown.
Slides from Ajax Experience 2009. In this session:
- Object creation patterns
- Code reuse patterns
- Functional patterns
- More on object creation
- Design patterns
Some example patterns: object creation with literals and constructos, prototypes, inheritance and other code reuse patterns, lazy definition, callbacks, singleton, factory, classical and prototypal inheritance, namespaces, chaining, modules, static methods, private and privileged members
For more information, see:
http://jspatterns.com
My column in the JavaScript Magazine (http://jsmag.com)
Blog: http://phpied.com
InvokeDynamic is a new JVM instruction that allows method calls to be dynamically dispatched at runtime based on the actual object type, enabling just-in-time compilation optimizations for any language by making non-Java call sites visible to the HotSpot JVM compiler. It uses bootstrap methods, call sites holding method handle chains, and switch points to dynamically bind calls based on guard conditions checking the actual object type and rebinding if needed.
Introduction to Kotlin Language and its application to Android platformEastBanc Tachnologies
Author: Oleg Godovykh, eastbanctech.com
Kotlin is a new programming language built by Jetbrains and is a new member of JVM family. As opposed to typical reason to introduce some new language, Kotlin main goal isn't to create new paradigm or fill a new niche, but to make routine tasks much easier and safer. Kotlin gains popularity across Android developer community, and in this presentation it is shown how Kotlin usage can dramatically simplify typical mobile app development.
This document provides an overview of upcoming technologies beyond the Java Virtual Machine (JVM). It begins with introductions and then discusses several topics:
- There are many open-source JVMs beyond Oracle's HotSpot such as JamVM, Maxine, and JikesRVM.
- Reasons for using the JVM include its large standard library and ease of portability compared to alternative virtual machines. However, startup time can be slow.
- Techniques for improving JVM startup time are discussed, such as saving JIT-compiled code and using the Drip tool to pre-initialize JVMs.
- Native interoperability is explored through the Java Native Interface (JNI
This document summarizes a lecture on efficiency oriented programming using Groovy and Grails. The key points are:
- Biological experiments produce huge amounts of data requiring powerful tools for analysis. Excel is not sufficient.
- The goal of the course is to make students efficient in the lab with programming skills and a computer at their fingertips. It will cover programming fundamentals, independence, and real-life challenges.
- Groovy and Grails were selected as the languages for the course because they offer a compact syntax, support for modern web applications, natural storage of data in databases, and encouragement of agile development practices.
In this talk we will explore the hype around the programming language Kotlin from JetBrains. We will explore the goodies and gotchas of Kotlin and why Kotlin might be a good investment for JVM and Android based applications. Come and see how JetBrains practical approach to language design increases expressiveness and code safety without necessarily sacrificing readability. The talk will give a proper introduction to the language and its syntax and continue to cover a lot of things from functional constructs to extension functions and builders.
TypeProf for IDE: Enrich Development Experience without Annotationsmametter
The document discusses TypeProf for IDE, a VSCode extension powered by TypeProf, a static type analyzer for Ruby. It allows achieving aspects of modern development experience like on-the-fly error reporting and type inference without type annotations. The demo shows features like method signature hints, error reporting, and completion working through the language server protocol. Future work includes improving parser robustness and optimizing analysis performance.
To hit Ruby3x3, we must first figure out **what** we're going to measure, **how** we're going to measure it, in order to get what we actually want. I'll cover some standard definitions of benchmarking in dynamic languages, as well as the tradeoffs that must be made when benchmarking. I'll look at some of the possible benchmarks that could be considered for Ruby 3x3, and evaluate them for what they're good for measuring, and what they're less good for measuring, in order to help the Ruby community decide what the 3x goal is going to be measured against.
Code Examples: https://github.com/nolanerck/modern-cfml-demos
The recent versions of ColdFusion have added many new language features. We’ve now got closures, functional programming constructs, QueryExecute, the safe navigation operator, the Elvis operator, and even more coming in future releases. For people new to functional programming or object oriented programming, it can be hard to see where these features can be beneficial. Let’s fix that!
In this talk we’ll discuss many of the new language enhancements in CFML. But rather than stopping with an “x = 1” example, we’ll look at blocks of code that are more real-world in nature. The code demos will all be based on scenarios you’ll run across in your daily development. That's right, we'll run real live code! You'll get to see these language features in action, right before your very eyes!
This document discusses object-oriented programming concepts like inheritance, subtyping, and polymorphism. It uses an example database application called DoME to demonstrate how inheritance can be used to avoid code duplication between similar classes like CD and Video. The key concepts covered are defining subclasses that inherit from a common superclass, allowing subclass objects to be used where the superclass is expected, and storing heterogeneous objects in polymorphic collections.
The document discusses the agenda for an Enterprise JavaScript session, which includes recapping functions, exceptions, and the history object in JavaScript. It then goes into detail on the typeof operator, function properties like arguments and this, and how to use the call and apply methods. Hands-on exercises demonstrate working with arguments and exceptions. Finally, the document explains how the history object works and how HTML5 introduced new methods like pushState and replaceState to programmatically modify the browser history.
The document discusses best practices for testing with mocks in Ruby on Rails applications. It recommends that tests run fast by avoiding loading Rails and using factories, and that mocks should assert messages rather than state. Tests become more maintainable by mocking roles instead of concrete objects, and by isolating code into single responsibility classes rather than putting logic in fat models. When code is well-encapsulated with messages, mocks can make tests clearer; but mocks may indicate problems when they are difficult to set up or when tests become brittle.
The document provides an overview of the content to be covered in Day 2 of training, including: reviewing classes and objects; exploring collection classes like NSArray, NSDictionary, and NSSet; learning about protocols and categories; and using NSUserDefaults for storage. It then describes building a simple contact list app that uses the Person, Employee, and Client classes, allows filtering contacts by name and sorting by last name, and distinguishes employee and client objects through introspection. Exercises are provided to practice these concepts by modifying existing classes and creating categories.
New features in iOS 5 include iCloud for syncing content across devices, Notification Center for managing alerts, iMessage for messaging between iOS 5 users, and Newsstand for organizing magazine and newspaper subscriptions. Additional features are Reminders, integrated Twitter support, camera and photo enhancements, and PC-free backup and updating using iCloud. iOS 5 also brings multitasking gestures and AirPlay mirroring to the iPad as well as new features for Safari, Mail, Calendar, Game Center, and Wi-Fi sync. Developers benefit from tools like Automatic Reference Counting and the new LLVM compiler in Xcode 4.2.
Paternity testing using DNA is the most accurate way to determine a child's biological father. DNA testing is now inexpensive, convenient, and accurate. Samples can be collected via a non-invasive oral swab at home, and results are provided within a few days. DNA testing establishes paternity with over 99.99% accuracy, providing a definitive yes or no answer regarding biological parentage.
This document provides an overview of the fourth grade mathematics curriculum for Unit 6 on fractions and decimals. The unit focuses on problem solving strategies, representing fractions and decimals, and understanding that fractions represent parts of a whole. Key concepts covered include equivalent fractions, comparing fractions, and adding/subtracting fractions. Students will represent fractions using visual models and explore strategies like finding common denominators. The unit aims to develop students' conceptual understanding of fractions and decimals through exploration of essential questions.
iOS 5 introduces a new notification center that makes notifications more prominent and engaging, Twitter integration that allows for easy sharing from apps, the ability to download updates, music, and apps without a PC, iCloud for seamless access to data across devices, and iMessage for integrated messaging. These changes will affect marketers by providing more effective ways to use notifications, enabling mass reach through Twitter, ensuring consumers have the latest version of apps and OS, allowing brands to be experienced uniformly across platforms, and potentially spurring new messaging channels for brands to engage in conversations.
This document summarizes a technical seminar presentation on Apple's iOS mobile operating system. The presentation covered the history and architecture of iOS, developments in iOS versions, and new features in iOS 5. It discussed the core layers and frameworks that make up the iOS architecture, including the core OS layer, core services layer, media layer and Cocoa Touch layer. It also provided an overview of the iOS software development kit and Xcode tools used for iOS application development.
C++ was originally developed as an extension of C to add object-oriented capabilities. While C++ retains much of C's syntax and functionality, it introduces important new concepts like classes, objects, and inheritance. A class defines the common properties and behaviors (methods) that objects of that class will have. Objects are instances of classes that allocate memory at runtime. This allows C++ to support object-oriented programming by encapsulating data into objects that can receive messages.
Mal ganz ehrlich: Testen im Frontend hat noch nie viel Spaß gemacht. In meinem Talk möchte ich mit Jest eine Testbibliothek vorstellen, die genau das ändern kann. Jest ist ohne viel Konfiguration direkt einsetzbar und bringt alles mit, was man von einer Testbibliothek erwartet (und noch mehr). An vielen praktischen Beispielen möchte ich meine Lieblingsfeatures wie z.B. Snapshot-Tests, Mocking oder das tolle CLI erläutern und zeigen, dass Testen im Frontend durchaus Spaß machen kann. Eine Ausrede weniger, um auf das Testen im Frontend zu verzichten!
The document compares the programming languages Swift and Kotlin. It provides background on the speakers and an outline of the topics to be discussed, including brief introductions to Swift and Kotlin, common language features between the two, demonstrations of code samples, and conclusions. IDEs like Xcode, Android Studio, and AppCode will also be demonstrated.
Mock what? What Mock?Learn What is Mocking, and how to use Mocking with ColdFusion testing, development, and continuous integration. Look at Mocking and Stubbing with a touch of Theory and a lot of Examples, including what you could test, and what you should test… and what you shouldn't test (but might be fun).
COMP 4026 Advanced HCI lecture 6 on OpenFrameworks and Google's Project Soli. Taught by Mark Billinghurst at the University of South Australia on August 25th 2016.
Object Oriented Programming in Swift Ch0 - EncapsulationChihyang Li
This document introduces object oriented programming concepts in Swift. It discusses key OOP principles like encapsulation, inheritance and polymorphism. It also covers object oriented analysis, design and programming levels. Specific concepts explained include data abstraction, access control, class invariants, pre/postconditions and design by contract. Common programming paradigms like procedural, object oriented and spaghetti code are compared. Modularization benefits like reusability, maintainability and debugging are highlighted.
An introduction to C++. These slides were used to guide a presentation on C++. The target audience was programmers learning C++ for the first time. As such the content covered basics of modern C++ and some other things that I feel was helpful to know about when starting with C++.
Никита Корчагин - Programming Apple iOS with Objective-CDataArt
This document provides an overview of programming iOS apps with Objective-C, including how to get started, the Objective-C and Swift languages, Model-View-Controller (MVC) pattern, differences between desktop and mobile development, and human interface guidelines. Key topics covered include installing the necessary software, understanding core Objective-C concepts like classes, methods, and memory management, using view controllers and the MVC pattern to structure apps, and important considerations for mobile like limited resources and touch interfaces.
Be armed to the teeth to maintain a high quality iOS codeAnastasia Kazakova
1. To maintain high quality iOS code, one should follow a code style, generate code using tools, and use static analysis tools to find problems and issues.
2. Key tools include Clang-Format for code style, Xcode for code generation, and OCLint and SwiftLint for static analysis to find defects, bad practices, and code smells.
3. After analyzing code using tools, one should refactor code to clean up any issues found and then cover all code with unit tests.
iPhone, the next generation mobile platform has revolutionized the way one uses phones as it's a combination of a phone, an iPod and an internet device. The iPhone is a richer platform for application delivery due to an exponential growth and wide spread usage.
The critical factor, for a successful mobile application is the end user experience: application usability, reliability, and performance which the iPhone delivers in style. There are thousands of applications created by hundreds of developers for the iPhone. This kind of innovation helps you start developing the next generation of innovative mobile applications now.
Topics Covered
* Current State of iPhone Development
* Fast Track to Objective C
* Fast Track to XCode and Interface Builder
* Getting Productive using OR-Framework, Testing, Serialization
Munjal Budhabhatti is a senior solution developer at ThoughtWorks. He possesses over 10 years of experience in designing large-scale enterprise applications and has implemented innovative solutions for some of the largest microfinance, insurance and financial organizations. He loves writing well-designed enterprise applications using Agile processes. His article on "Test-Driven Development and Continuous Integration for Mobile Applications" was recently published in the Microsoft Architecture Journal.
Cappuccino - A Javascript Application FrameworkAndreas Korth
Cappuccino is a framework for building desktop-class applications for the web. It is based on Objective-J, an object-oriented language extension to Javascript.
The document discusses unit testing and JUnit. It provides an overview of JUnit basics like test methods, assertions and fixtures. It also covers more advanced testing topics such as mocking, testing private methods, dealing with singletons, timing issues, and testing Java EE applications. The presentation encourages writing high-quality test code and tuning test performance.
The document discusses the author's experience with optional types in software design. It describes the author's shifting views on types over their career from enthusiast to professional to advocate for optional types. The author details how optional types can lead to cleaner, smaller code that is easier to change and requires fewer tests. Deep questions are also posed about the cognitive costs of abstractions, whether strong typing enables strong coupling, and how important names and contracts are in minimalist design. The conclusion is that minimalism exerts positive pressure on design through smaller code, better names, clear responsibilities and contracts, and clear tests.
Drupal and its contributed modules provides an impressive amount of functionality without needing to write a single line of code by storing information in Drupal’s database tables. Unfortunately this poses a challenge for developers wanting to stage changes between servers. This talk starts to address these issues by describing the problem and presenting a variety of solutions as well as their pros and cons. I also discuss some possible paths to make this easier coming down the pipe.
JavaScript has a well deserved reputation of be hard to write and debug. Put it on a mobile device and the problems increase exponentially. Mobile browsers lack all of the niceties that developers rely on to do testing and debugging including the most fundamental tool, the debugger. But it is possible to write quality JavaScript on a mobile device without relying on blind luck. In this talk I will show all of the tools and tricks that I learned in my 12 month development of the new KBB.com mobile site.
This document discusses Python tools for testing, including py.test, tox, and TravisCI. It provides information about each tool: py.test is an improved unit testing library compared to nose, with readable test results, mocking features, and JUnit XML output; tox runs tests across multiple Python versions using virtualenv; and TravisCI is a continuous integration service that runs tests automatically on GitHub code commits for open source projects in various languages including Python. Examples of configuration files for tox and TravisCI are also included.
Dependency Injection: Why is awesome and why should I care?devObjective
This document introduces dependency injection (DI), a design pattern that allows for flexible organization of classes. DI frameworks allow objects to be constructed and injected with their dependencies automatically based on configuration, avoiding hardcoded dependencies. Aspect oriented programming (AOP) allows cross-cutting concerns like logging or error handling to be defined separately from application code. Inversion of control (IOC) "flips" construction such that classes request fully initialized dependencies rather than constructing them directly. DI promotes loose coupling, testability, and flexibility in swapping implementations.
This document introduces dependency injection (DI), a design pattern that allows for flexible organization of classes. DI frameworks allow objects to be constructed and injected with their dependencies automatically based on configuration, avoiding hardcoded dependencies. Aspect oriented programming (AOP) allows cross-cutting concerns like logging or error handling to be defined separately from application code. Inversion of control (IOC) "flips" construction such that classes request fully initialized dependencies rather than constructing them directly. DI promotes loose coupling, testability, and flexibility in swapping implementations.
This document introduces behavior driven development (BDD) and the TestBox testing framework for ColdFusion. It discusses how BDD builds upon test-driven development (TDD) principles by focusing on user stories and scenarios over isolated functions. TestBox allows writing BDD-style tests with expectations and supports different styles like xUnit. It provides features for parallel testing, mocking, reporting and integrating with build tools.
Objective-C is a general-purpose programming language that adds object-oriented messaging capabilities to C. It is the main programming language used by Apple for iOS and macOS. The document provides an overview of Objective-C, including its history and influence, language characteristics, data types, variables, operators, flow control, and functions. It also gives examples of Xcode project file layouts and basic Objective-C code snippets.
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc
How does your privacy program stack up against your peers? What challenges are privacy teams tackling and prioritizing in 2024?
In the fifth annual Global Privacy Benchmarks Survey, we asked over 1,800 global privacy professionals and business executives to share their perspectives on the current state of privacy inside and outside of their organizations. This year’s report focused on emerging areas of importance for privacy and compliance professionals, including considerations and implications of Artificial Intelligence (AI) technologies, building brand trust, and different approaches for achieving higher privacy competence scores.
See how organizational priorities and strategic approaches to data security and privacy are evolving around the globe.
This webinar will review:
- The top 10 privacy insights from the fifth annual Global Privacy Benchmarks Survey
- The top challenges for privacy leaders, practitioners, and organizations in 2024
- Key themes to consider in developing and maintaining your privacy program
Full-RAG: A modern architecture for hyper-personalizationZilliz
Mike Del Balso, CEO & Co-Founder at Tecton, presents "Full RAG," a novel approach to AI recommendation systems, aiming to push beyond the limitations of traditional models through a deep integration of contextual insights and real-time data, leveraging the Retrieval-Augmented Generation architecture. This talk will outline Full RAG's potential to significantly enhance personalization, address engineering challenges such as data management and model training, and introduce data enrichment with reranking as a key solution. Attendees will gain crucial insights into the importance of hyperpersonalization in AI, the capabilities of Full RAG for advanced personalization, and strategies for managing complex data integrations for deploying cutting-edge AI solutions.
Threats to mobile devices are more prevalent and increasing in scope and complexity. Users of mobile devices desire to take full advantage of the features
available on those devices, but many of the features provide convenience and capability but sacrifice security. This best practices guide outlines steps the users can take to better protect personal devices and information.
Best 20 SEO Techniques To Improve Website Visibility In SERPPixlogix Infotech
Boost your website's visibility with proven SEO techniques! Our latest blog dives into essential strategies to enhance your online presence, increase traffic, and rank higher on search engines. From keyword optimization to quality content creation, learn how to make your site stand out in the crowded digital landscape. Discover actionable tips and expert insights to elevate your SEO game.
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-und-domino-lizenzkostenreduzierung-in-der-welt-von-dlau/
DLAU und die Lizenzen nach dem CCB- und CCX-Modell sind für viele in der HCL-Community seit letztem Jahr ein heißes Thema. Als Notes- oder Domino-Kunde haben Sie vielleicht mit unerwartet hohen Benutzerzahlen und Lizenzgebühren zu kämpfen. Sie fragen sich vielleicht, wie diese neue Art der Lizenzierung funktioniert und welchen Nutzen sie Ihnen bringt. Vor allem wollen Sie sicherlich Ihr Budget einhalten und Kosten sparen, wo immer möglich. Das verstehen wir und wir möchten Ihnen dabei helfen!
Wir erklären Ihnen, wie Sie häufige Konfigurationsprobleme lösen können, die dazu führen können, dass mehr Benutzer gezählt werden als nötig, und wie Sie überflüssige oder ungenutzte Konten identifizieren und entfernen können, um Geld zu sparen. Es gibt auch einige Ansätze, die zu unnötigen Ausgaben führen können, z. B. wenn ein Personendokument anstelle eines Mail-Ins für geteilte Mailboxen verwendet wird. Wir zeigen Ihnen solche Fälle und deren Lösungen. Und natürlich erklären wir Ihnen das neue Lizenzmodell.
Nehmen Sie an diesem Webinar teil, bei dem HCL-Ambassador Marc Thomas und Gastredner Franz Walder Ihnen diese neue Welt näherbringen. Es vermittelt Ihnen die Tools und das Know-how, um den Überblick zu bewahren. Sie werden in der Lage sein, Ihre Kosten durch eine optimierte Domino-Konfiguration zu reduzieren und auch in Zukunft gering zu halten.
Diese Themen werden behandelt
- Reduzierung der Lizenzkosten durch Auffinden und Beheben von Fehlkonfigurationen und überflüssigen Konten
- Wie funktionieren CCB- und CCX-Lizenzen wirklich?
- Verstehen des DLAU-Tools und wie man es am besten nutzt
- Tipps für häufige Problembereiche, wie z. B. Team-Postfächer, Funktions-/Testbenutzer usw.
- Praxisbeispiele und Best Practices zum sofortigen Umsetzen
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
Driving Business Innovation: Latest Generative AI Advancements & Success StorySafe Software
Are you ready to revolutionize how you handle data? Join us for a webinar where we’ll bring you up to speed with the latest advancements in Generative AI technology and discover how leveraging FME with tools from giants like Google Gemini, Amazon, and Microsoft OpenAI can supercharge your workflow efficiency.
During the hour, we’ll take you through:
Guest Speaker Segment with Hannah Barrington: Dive into the world of dynamic real estate marketing with Hannah, the Marketing Manager at Workspace Group. Hear firsthand how their team generates engaging descriptions for thousands of office units by integrating diverse data sources—from PDF floorplans to web pages—using FME transformers, like OpenAIVisionConnector and AnthropicVisionConnector. This use case will show you how GenAI can streamline content creation for marketing across the board.
Ollama Use Case: Learn how Scenario Specialist Dmitri Bagh has utilized Ollama within FME to input data, create custom models, and enhance security protocols. This segment will include demos to illustrate the full capabilities of FME in AI-driven processes.
Custom AI Models: Discover how to leverage FME to build personalized AI models using your data. Whether it’s populating a model with local data for added security or integrating public AI tools, find out how FME facilitates a versatile and secure approach to AI.
We’ll wrap up with a live Q&A session where you can engage with our experts on your specific use cases, and learn more about optimizing your data workflows with AI.
This webinar is ideal for professionals seeking to harness the power of AI within their data management systems while ensuring high levels of customization and security. Whether you're a novice or an expert, gain actionable insights and strategies to elevate your data processes. Join us to see how FME and AI can revolutionize how you work with data!
UiPath Test Automation using UiPath Test Suite series, part 5DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 5. In this session, we will cover CI/CD with devops.
Topics covered:
CI/CD with in UiPath
End-to-end overview of CI/CD pipeline with Azure devops
Speaker:
Lyndsey Byblow, Test Suite Sales Engineer @ UiPath, Inc.
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!SOFTTECHHUB
As the digital landscape continually evolves, operating systems play a critical role in shaping user experiences and productivity. The launch of Nitrux Linux 3.5.0 marks a significant milestone, offering a robust alternative to traditional systems such as Windows 11. This article delves into the essence of Nitrux Linux 3.5.0, exploring its unique features, advantages, and how it stands as a compelling choice for both casual users and tech enthusiasts.
UiPath Test Automation using UiPath Test Suite series, part 6DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 6. In this session, we will cover Test Automation with generative AI and Open AI.
UiPath Test Automation with generative AI and Open AI webinar offers an in-depth exploration of leveraging cutting-edge technologies for test automation within the UiPath platform. Attendees will delve into the integration of generative AI, a test automation solution, with Open AI advanced natural language processing capabilities.
Throughout the session, participants will discover how this synergy empowers testers to automate repetitive tasks, enhance testing accuracy, and expedite the software testing life cycle. Topics covered include the seamless integration process, practical use cases, and the benefits of harnessing AI-driven automation for UiPath testing initiatives. By attending this webinar, testers, and automation professionals can gain valuable insights into harnessing the power of AI to optimize their test automation workflows within the UiPath ecosystem, ultimately driving efficiency and quality in software development processes.
What will you get from this session?
1. Insights into integrating generative AI.
2. Understanding how this integration enhances test automation within the UiPath platform
3. Practical demonstrations
4. Exploration of real-world use cases illustrating the benefits of AI-driven test automation for UiPath
Topics covered:
What is generative AI
Test Automation with generative AI and Open AI.
UiPath integration with generative AI
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...Neo4j
Leonard Jayamohan, Partner & Generative AI Lead, Deloitte
This keynote will reveal how Deloitte leverages Neo4j’s graph power for groundbreaking digital twin solutions, achieving a staggering 100x performance boost. Discover the essential role knowledge graphs play in successful generative AI implementations. Plus, get an exclusive look at an innovative Neo4j + Generative AI solution Deloitte is developing in-house.
Building Production Ready Search Pipelines with Spark and MilvusZilliz
Spark is the widely used ETL tool for processing, indexing and ingesting data to serving stack for search. Milvus is the production-ready open-source vector database. In this talk we will show how to use Spark to process unstructured data to extract vector representations, and push the vectors to Milvus vector database for search serving.
Programming Foundation Models with DSPy - Meetup SlidesZilliz
Prompting language models is hard, while programming language models is easy. In this talk, I will discuss the state-of-the-art framework DSPy for programming foundation models with its powerful optimizers and runtime constraint system.
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Speck&Tech
ABSTRACT: A prima vista, un mattoncino Lego e la backdoor XZ potrebbero avere in comune il fatto di essere entrambi blocchi di costruzione, o dipendenze di progetti creativi e software. La realtà è che un mattoncino Lego e il caso della backdoor XZ hanno molto di più di tutto ciò in comune.
Partecipate alla presentazione per immergervi in una storia di interoperabilità, standard e formati aperti, per poi discutere del ruolo importante che i contributori hanno in una comunità open source sostenibile.
BIO: Sostenitrice del software libero e dei formati standard e aperti. È stata un membro attivo dei progetti Fedora e openSUSE e ha co-fondato l'Associazione LibreItalia dove è stata coinvolta in diversi eventi, migrazioni e formazione relativi a LibreOffice. In precedenza ha lavorato a migrazioni e corsi di formazione su LibreOffice per diverse amministrazioni pubbliche e privati. Da gennaio 2020 lavora in SUSE come Software Release Engineer per Uyuni e SUSE Manager e quando non segue la sua passione per i computer e per Geeko coltiva la sua curiosità per l'astronomia (da cui deriva il suo nickname deneb_alpha).
2. iOS Development
• About Me:
• Pat Zearfoss
• Mindgrub Technologies, LLC
• BS Computer Science - UMBC 2008
• Working with mobile and iOS for 3
years.
3. iOS Development
• Web:
pzearfoss@gmail.com
http://zearfoss.wordpress.com
@pzearfoss
http://www.github.com/pzearfoss
10. HTML 5
• Use the technologies you already know.
• Can be loaded into an app webview and
distributed on the app store.
11. HTML 5
• Use the technologies you already know.
• Can be loaded into an app webview and
distributed on the app store.
• Limited use of device hardware.
12. HTML 5
• Use the technologies you already know.
• Can be loaded into an app webview and
distributed on the app store.
• Limited use of device hardware.
• Cross Platform
13. HTML 5
• Use the technologies you already know.
• Can be loaded into an app webview and
distributed on the app store.
• Limited use of device hardware.
• Cross Platform
• Except for all the cross browser
problems you already know and love.
16. Cross Platform
Frameworks
• Titanium, PhoneGap, Others
• Use the technologies you already know.
17. Cross Platform
Frameworks
• Titanium, PhoneGap, Others
• Use the technologies you already know.
• Titanium generates native code.
18. Cross Platform
Frameworks
• Titanium, PhoneGap, Others
• Use the technologies you already know.
• Titanium generates native code.
• PhoneGap uses web code in a webview.
19. Cross Platform
Frameworks
• Titanium, PhoneGap, Others
• Use the technologies you already know.
• Titanium generates native code.
• PhoneGap uses web code in a webview.
• Better use of device hardware.
20. Cross Platform
Frameworks
• Titanium, PhoneGap, Others
• Use the technologies you already know.
• Titanium generates native code.
• PhoneGap uses web code in a webview.
• Better use of device hardware.
• “Cross Platform”
21. Cross Platform
Frameworks
• Titanium, PhoneGap, Others
• Use the technologies you already know.
• Titanium generates native code.
• PhoneGap uses web code in a webview.
• Better use of device hardware.
• “Cross Platform”
• Your mileage may vary.
24. Native
• Offers the most control over your product.
• Access to all device frameworks.
25. Native
• Offers the most control over your product.
• Access to all device frameworks.
• Requires Objective-C
26. Native
• Offers the most control over your product.
• Access to all device frameworks.
• Requires Objective-C
• Only runs on iOS (obviously)
27. Native
• Offers the most control over your product.
• Access to all device frameworks.
• Requires Objective-C
• Only runs on iOS (obviously)
• Will generally run with the absolute best
performance.
41. Getting Started
• Recommended but not required
• Some knowledge of C
• malloc() . . . free() ?
• Some knowledge of design patterns:
42. Getting Started
• Recommended but not required
• Some knowledge of C
• malloc() . . . free() ?
• Some knowledge of design patterns:
• MVC, Singleton, Delegation
50. Obj-C in 10 minutes
• All the things you know from C
51. Obj-C in 10 minutes
• All the things you know from C
• Variables are typed:
52. Obj-C in 10 minutes
• All the things you know from C
• Variables are typed:
• int, float, double, char
53. Obj-C in 10 minutes
• All the things you know from C
• Variables are typed:
• int, float, double, char
int foo = 5;
54. Obj-C in 10 minutes
• All the things you know from C
• Variables are typed:
• int, float, double, char
int foo = 5;
• Separate compilation
55. Obj-C in 10 minutes
• All the things you know from C
• Variables are typed:
• int, float, double, char
int foo = 5;
• Separate compilation
• .h for interface declaration
56. Obj-C in 10 minutes
• All the things you know from C
• Variables are typed:
• int, float, double, char
int foo = 5;
• Separate compilation
• .h for interface declaration
• .m for implementation (instead of .c)
58. Obj-C in 10 minutes
• Functions / Methods have return types and
typed arguments
59. Obj-C in 10 minutes
• Functions / Methods have return types and
typed arguments
int sumOfItems(int i, int j)
{
return i + j;
}
60. Obj-C in 10 minutes
• Functions / Methods have return types and
typed arguments
int sumOfItems(int i, int j)
{
return i + j;
}
• Other types
61. Obj-C in 10 minutes
• Functions / Methods have return types and
typed arguments
int sumOfItems(int i, int j)
{
return i + j;
}
• Other types
• void, NULL
62. Obj-C in 10 minutes
• Functions / Methods have return types and
typed arguments
int sumOfItems(int i, int j)
{
return i + j;
}
• Other types
• void, NULL
• pointers to types (int *, void *)
65. Obj-C in 10 minutes
• Objective-C Additions:
• BOOL - YES / NO
66. Obj-C in 10 minutes
• Objective-C Additions:
• BOOL - YES / NO
BOOL isSet = YES;
67. Obj-C in 10 minutes
• Objective-C Additions:
• BOOL - YES / NO
BOOL isSet = YES;
• id - strictly a pointer to an object
68. Obj-C in 10 minutes
• Objective-C Additions:
• BOOL - YES / NO
BOOL isSet = YES;
• id - strictly a pointer to an object
• nil - a zero’d out pointer
69. Obj-C in 10 minutes
• Objective-C Additions:
• BOOL - YES / NO
BOOL isSet = YES;
• id - strictly a pointer to an object
• nil - a zero’d out pointer
• nil != (necessarily) NULL or 0
72. Obj-C in 10 minutes
• Classes
• Exist as a class pair
73. Obj-C in 10 minutes
• Classes
• Exist as a class pair
• Instance variables and instance methods act
on an instance object
74. Obj-C in 10 minutes
• Classes
• Exist as a class pair
• Instance variables and instance methods act
on an instance object
• Class (static) methods act on the class
object
75. Obj-C in 10 minutes
• Classes
• Exist as a class pair
• Instance variables and instance methods act
on an instance object
• Class (static) methods act on the class
object
• There is only ever one class object at any
given time
76. Obj-C in 10 minutes
• Classes
• Exist as a class pair
• Instance variables and instance methods act
on an instance object
• Class (static) methods act on the class
object
• There is only ever one class object at any
given time
• Class variables really don’t exist
77. Obj-C in 10 minutes
• Classes
#import <Foundation/Foundation.h>
@interface MyClass : NSObject
{
id aChildObject;
NSArray *someItems;
}
+ (NSString *)className;
- (void)logMe;
@property (nonatomic, retain) id aChildObject;
@end
78. Obj-C in 10 minutes
• Classes Include a header
#import <Foundation/Foundation.h>
file
@interface MyClass : NSObject
{
id aChildObject;
NSArray *someItems;
}
+ (NSString *)className;
- (void)logMe;
@property (nonatomic, retain) id aChildObject;
@end
102. Obj-C in 10 minutes
• What’s with all the ‘@’ and ‘[ ]’?
103. Obj-C in 10 minutes
• What’s with all the ‘@’ and ‘[ ]’?
•@
• Objective-C keywords
• Initializer for string constants
104. Obj-C in 10 minutes
• What’s with all the ‘@’ and ‘[ ]’?
•@
• Objective-C keywords
• Initializer for string constants
• ‘[]’
• “Send a message to an object”
• Like calling a method, but more dynamic
139. Model
• Defines the data to be displayed in
a view.
• Model objects
• Database
Model
• Web
140. Controller
• Negotiates communication
between the model and the view.
• Controls presentation logic
• Updates the model
Controller
• Reflects those updates on the
view
141. View
• Contains controls and UI Widgets
• Informs the controller of
updates.
View
142. Hello World
Model Controller View
(Hello_WorldViewController) (.xib)
Label
view
143. Hello World
Model Controller View
(Hello_WorldViewController) (.xib)
Label
view
144. Hello World
Model Controller View
(Hello_WorldViewController) (.xib)
Label
view