This document summarizes a presentation about the open source Verilog simulator Verilator. It discusses why open source simulation is useful, provides an introduction and overview of Verilator's features, and addresses questions about getting started with and using Verilator. The presentation also covers Verilator's performance advantages over other simulators, considerations for whether Verilator may be suitable, its future development, and how users can contribute back to the project.
This document discusses running shellcode from Java by overwriting the pointer to a Java method with a pointer to shellcode. It explains that Java is cross-platform, has an extensive library, and is widely deployed. It then provides an example of NOP shellcode in C to call the shellcode. It links to resources on injecting shellcode from Java without JNI. The document shows a Java method with volatile variables that is overwritten by the shellcode and demonstrates calling the shellcode from Java.
Let's talk about the job of a product manager and how to do it really well. Based off of this post: https://medium.com/@joshelman/a-product-managers-job-63c09a43d0ec#.v0kdyf816
Buffer culture 0.6 (With a change to Be a No Ego Doer)Buffer
油
This is the 6th evolution of the cultural values we try to live to at Buffer. Read more about our values and approach to business at http://open.bufferapp.com
InterConnect: Server Side Swift for Java DevelopersChris Bailey
油
The range of languages and frameworks that are available for building server applications has exploded over the last few years, with the most recent of these being the Swift programming language, which IBM has been backing along with the Kitura application framework. But does this mean that Swift is the future and you should stop developing Java server applications? This session will give you an introduction to where and when you might use Kitura, and take you through the experiences of a long-time Java EE developer building their first Angular.js based Kitura application, and how that compares to building the same application with IBM WebSphere Liberty.
Video and slides synchronized, mp3 and slide download available at URL https://bit.ly/344PnB1.
Steve Klabnik goes over the deep details of how async/await works in Rust, covering concepts like coroutines, generators, stack-less vs stack-ful, "pinning", and more. Filmed at qconsf.com.
Steve Klabnik is on the core team of Rust, leads the documentation team, and is an author of "The Rust Programming Language." He is a frequent speaker at conferences and is a prolific open source contributor, previously working on projects such as Ruby and Ruby on Rails.
With the typical Apple understatement, Craig Federighi defined Swift as "how really everyone should be programming for the next 20 years". Is it true? Is it convenient? Is it safe? Is it fun?
With the typical Apple understatement, Craig Federighi defined Swift as "how really everyone should be programming for the next 20 years".
Is it true? Is it convenient? Is it safe? Is it fun?
In this talk, we'll see what happened since Swift was released, and then OpenSourced, presenting pros and cons of using it as Server Side programming language.
We'll see the major web frameworks in the Swift ecosystem, similarities and differences, and finally, we'll tinker with two "real world" Swift on Linux apps.
With the typical Apple understatement, Craig Federighi defined Swift as "how really everyone should be programming for the next 20 years". Is it true? Is it convenient? Is it safe? Is it fun?
asyncio - is young library for asynchronous network programming. Lack of information on proper use and writing code in asyncio as well as production war stories slows down asyncio adoption.
In this talk I'll cover my experience with asyncio in production, best practices for writing reliable and testable asynchronous code as well as bunch of asyncio tips and tricks. We will discuss how run asyncio application in standalone mode, execute blocking code in event loop and moreover how embed asyncio in your synchronous application.
This document provides an introduction to FreeRTOS version 6.0.5. It outlines the course objectives, which are to understand FreeRTOS services and APIs, experience different FreeRTOS features through labs, and understand the FreeRTOS porting process. The document describes key FreeRTOS concepts like tasks, task states, priorities, and provides an overview of task management APIs for creation, deletion, delaying, and querying tasks.
Slowly but surely, promises have spread throughout the JavaScript ecosystem, standardized by ES 2015 and embraced by the web platform. But the world of asynchronous programming contains more patterns than the simple single-valued async function call that promises represent. What about things like streams, observables, async iteratorsor even just cancelable promises? How do they fit, both in the conceptual landscape and in your day-to-day programming?
For the last year, I've been working to bring an implementation of I/O streams to the browser. Meanwhile, designs for a cancelable promise type (sometimes called "tasks") are starting to form, driven by the needs of web platform APIs. And TC39 has several proposals floating around for more general asynchronous iteration. We'll learn about these efforts and more, as I guide you through the frontiers of popular libraries, language design, and web standards.
Swift is a powerful new language, with a rapidly growing user basewhich now includes Linux server-side developers. This presentation is a briief overview of the current Swift web server frameworks, as well as a highlight of the best features that Swift has to offer.
Why the Dark Side should use Swift and a SOLID ArchitectureJorge Ortiz
油
The document discusses how adopting a SOLID architecture and design patterns can help address weaknesses of the "Dark Side" like lack of robustness, testability, and team collaboration. It promotes using SOLID principles like single responsibility, open/closed, Liskov substitution, and dependency inversion. Examples show applying these principles through concepts like entities, use cases, presenters, and segregating interfaces. Adopting these practices leads to code that is more reusable, flexible, and replaceable.
invokedynamic for Mere Mortals [Code One 2019]David Buck
油
The invokedynamic instruction (part of JSR 292) has been around since JDK7. Despite its importance to most languages that run on the JVM, many developers still do not understand how it is used or implemented. Most resources available about JSR 292 are aimed at language implementers who are experts in compiler theory and language design. This session is different, offering an overview of JSR 292 for people who are curious about how things work but do not necessarily spend all day working on java bytecode. This update of the speakers 2015 session on the same topic has been updated to include new uses and related changes since Java 8.
LAU ACM - Introduction to Swift - Dani ArnaoutDani Arnaout
油
This document is an introduction to the Swift programming language presented by Dani Arnaout. It covers Swift data types, operators, strings, collection types, control flow, functions, and classes. The introduction includes examples to illustrate key concepts of the Swift syntax. It encourages readers to start coding in Swift and provides resources for learning more about the language.
Kotlin coroutines provide a way to write asynchronous and concurrent code using suspending functions and structured concurrency. Coroutines avoid callbacks and are lighter weight than threads. They allow suspending execution and resuming it later without blocking threads. This makes asynchronous code look synchronous and avoids issues like callback hell. Coroutines provide features like parallelism, cancellation, exception handling and context propagation to simplify concurrent programming.
This document discusses using Swift for server-side development with Docker and Kitura. It provides an agenda that covers a WWDC 2016 Swift session on server-side development, discusses common backend frameworks, and demonstrates setting up a Kitura project in a VirtualBox virtual machine and building and running a Docker container for the project. Code examples are provided for initializing a Swift package, defining routes and starting a Kitura server.
This document discusses multithreading on iOS. It begins with an overview of multithreading basics and why threads are needed to avoid blocking the UI. It then covers how to implement multithreading on iOS using Grand Central Dispatch (GCD), including dispatching work to background queues and updating the UI on the main queue. The document also discusses challenges like synchronization, deadlocks, and race conditions that can occur with multithreaded code and tools in Swift like serial dispatch queues, NSOperationQueues, and dispatch semaphores that can help address these issues.
forwarder.java.txt java forwarder class waits for an in.docxbudbarber38650
油
forwarder.java.txt
// java forwarder class
// waits for an inbound connection A on port INPORT
// when it is received, it launches a connection B to <OUTHOST,OUTPORT>
// and creates threads to read-B-write-A and read-A-write-B.
import java.net.*;
import java.io.*;
import java.util.*;
import java.text.*;
class forwarder {
public static String OUTHOST;
public static InetAddress OUTDEST;
public static short OUTPORT = 22;
public static short INPORT = 2345;
public static boolean DEBUG = true;
public static void main(String[] v) {
// get command-line parameters
if (v.length < 3) {
System.err.println("args: inport outhost outport");
return;
}
INPORT = (short)(new Integer(v[0])).intValue();
OUTHOST = v[1];
OUTPORT = (short)(new Integer(v[2])).intValue();
// DNS lookup, done just once!
System.err.print("Looking up address of " + OUTHOST + "...");
try {
OUTDEST = InetAddress.getByName(OUTHOST);
}
catch (UnknownHostException uhe) {
System.err.println("unknown host: " + OUTHOST);
return;
}
System.err.println(" got it!");
// initialize LISTENER socket
// wait for connection
ServerSocket ss = null;
ss = new ServerSocket(INPORT);// needs try-catch
Socket s1;
while(true) { // accept loop
s1 = ss.accept();// needs try-catch
// now set up the second connection from here to <OUTDEST,OUTPORT>,
// represented by a second socket s2
// Then create the two Copier instances, as described in the
// project description, and start() the two threads.
// At that point, this main loop simply continues
// by going back to the ss.accept() call.
} // accept loop
}// main
/**
* The Copier class handles unidirectional copying from one socket to another.
* You will need to create two of these in the main loop above,
* one for each direction. You create the Copier object, and then
* create and start a Thread object that runs that Copier.
* If c is your Copier instance (created with Copier c = new Copier(sock1, sock2)),
* then the thread is Thread t = new Thread(c), and you start the thread
* with t.start(). Or, in one step, (new Thread(c)).start()
*/
static class Copier implements Runnable {
private Socket _from;
private Socket _to;
public Copier (Socket from, Socket to) {
_from = from;
_to = to;
}
public void run() {
InputStream fis;
OutputStream tos;
try {
fis = _from.getInputStream();
tos = _to.getOutputStream();
} catch (IOException ioe) {
System.err.println("can't get IO streams from sockets");
return;
}
byte[] buf = new byte[2048];
int readsize;
while (true) {
try {
readsize = fis.read(buf);
} catch (IOException ioe) {
break;
}
if (readsize <= 0) break;
try {
tos.write(buf, 0, readsize);
} catch (IOException ioe) {
break;
}
}
// these should be safe close() calls!!
try {
fis.close();
tos.close();
_from.close();
_to.close();
} catch (IOException ioe) {
Syst.
Avec la version 9 sortie en septembre 2017, Java appuie sur la p辿dale ! Le rythme des livraisons passe une version majeure tous les 6 mois. Java 10 est sorti en mars, prochaine version en septembre. Java 10 apporte le 'var' et l'inf辿rence de type pour les variables locales. D'autres nouveaut辿s sont en pr辿paration : les constantes dynamiques, les classes de donn辿es, un nouveau switch base de lambda, des interfaces ferm辿es, de nouvelles choses du cot辿 des g辿n辿riques et bien plus encore.
Cela viendra-t-il en 11, 12, 15 ? Ne sp辿culons pas, mais quand ces nouveaut辿s seront pr棚tes, elles sortiront en quelques mois. On se propose de pr辿senter ces nouveaut辿s, celles qui sont presque pr棚tes, celles qui seront pr棚tes bient担t, et celles qui ne seront pas pr棚tes avant un moment. Quels seront les impacts sur le langage, sur la JVM et donc sur les performances ? Que cela va-t-il nous apporter au quotidien, en tant que d辿veloppeurs ? Quels seront les nouveaux patterns ? Voici le programme de cette pr辿sentation, avec des slides, du code, de la joie et de la bonne humeur !
Building a scalable learning platform - Erik Veld - Codemotion Amsterdam 2018Codemotion
油
Erik is one of the founders of Instruqt, a learning platform for DevOps tooling and Cloud technology. With Instruqt, each participant gets his/her own personal infrastructure, that is being created in seconds. In this talk I will show how we leveraged Terraform, Kubernetes and Google Cloud to create a scalable and cost-effective learning platform. I will discuss the choices we've made, the problems we encountered and the lessons learned.
"Less Painful iOS Development" by Samuel Edwin (Tokopedia)Tech in Asia ID
油
The document discusses several tools to help with iOS development including Tweaks, FLEX, Knuff, SwiftFormat, and SwiftLint. Tweaks allows modifying server URLs and other values at runtime. FLEX enables debugging network requests, inspecting views and memory, and modifying user defaults. Knuff simplifies testing push notifications. SwiftFormat formats code to follow style rules. SwiftLint finds and fixes style and quality issues.
An unconventional tutorial to basic socket.io features. Socket.io basic features are explained first of all taking a look directly at the browser (hacker approach) and then taking a look at the documentation (and some code examples).
CP3108B (Mozilla) Sharing Session on Add-on SDKMifeng
油
The document provides an overview of how to build Firefox add-ons using the Add-On SDK. It discusses key aspects like using JavaScript, HTML and CSS with no XUL needed. It outlines the packaging and testing tools as well as CommonJS module format. It provides guidance on getting started including reading documentation, tutorials and API references. It also covers topics like using the cfx tool, Package.json, the console, modules, JavaScript best practices and asynchronous programming.
際際滷s from talk I have as part of Vapor Meetup 2 in Tokyo on 2018-07-06.
The video recording from this talk is available on YouTube (https://www.youtube.com/watch?v=Uq1fJifXcOc) but unfortunately, audio issues plagued my talk. At the very least, here are slides from that evening.
The Evolution of Async-Programming on .NET Platform (.Net China, C#)jeffz
油
This document discusses the evolution of asynchronous programming on the .NET platform. It covers early approaches using Begin/End methods and event-based patterns in .NET 1.0. It then discusses improvements with yield in .NET 2.0/C# 2.0 and async workflows in F# for .NET 3.0. It also covers the Reactive Framework for .NET 4.0 which treats asynchronous computations as push-based collections. Finally, it discusses potential future improvements in C# vNext.
This document provides an overview of Java basics including:
- Java is an object-oriented programming language like C++.
- The basic unit in Java is the object, which contains both state in the form of variables and behavior in the form of methods.
- Classes define the structure and behavior of objects through methods and variables. The main method is required to execute a Java program.
Put Trust back in your Software Branching Strategy with Ship/Show/Ask
Pull requests have become a bottleneck. Engineers waste hours waiting for code reviews or long builds, switching between branches or reworking changes.
We are wasting time with no measurable improvement in quality.
Ship/Show/Ask is a new software branching strategy that combines the features of Pull Requests with the ability to keep shipping changes.
In this session, we'll look at branching in a more inclusive, dynamic way to unlock impactful code reviews without creating bottlenecks.
Adobe Marketo Engage Champion Deep Dive: Extending Marketo With AEM FormsBradBedford3
油
Discover the various ways and use cases for using Marketo forms vs. AEM forms.. In this session, Adobe experts will explore the different types of forms, key use cases, the pros and cons of each type and more! Learn how to leverage these different types of forms to best suit your business needs and use case.
Agenda
1.What is a Form?
2.Marketo Forms overview
3.AEM Forms overview
4.Use Case: Extend communications with personalized PDFs
5.Use Case: Complete journeys with personalized web applications
6.Use Case: Contact Us form
7.Q&A
Target Audience
Marketo Users: Professionals already using or considering Marketo who want to expand their marketing capabilities to AEM
AEM Users: Professionals already using or considering AEM who want to expand their marketing capabilities in Marketo
With the typical Apple understatement, Craig Federighi defined Swift as "how really everyone should be programming for the next 20 years". Is it true? Is it convenient? Is it safe? Is it fun?
asyncio - is young library for asynchronous network programming. Lack of information on proper use and writing code in asyncio as well as production war stories slows down asyncio adoption.
In this talk I'll cover my experience with asyncio in production, best practices for writing reliable and testable asynchronous code as well as bunch of asyncio tips and tricks. We will discuss how run asyncio application in standalone mode, execute blocking code in event loop and moreover how embed asyncio in your synchronous application.
This document provides an introduction to FreeRTOS version 6.0.5. It outlines the course objectives, which are to understand FreeRTOS services and APIs, experience different FreeRTOS features through labs, and understand the FreeRTOS porting process. The document describes key FreeRTOS concepts like tasks, task states, priorities, and provides an overview of task management APIs for creation, deletion, delaying, and querying tasks.
Slowly but surely, promises have spread throughout the JavaScript ecosystem, standardized by ES 2015 and embraced by the web platform. But the world of asynchronous programming contains more patterns than the simple single-valued async function call that promises represent. What about things like streams, observables, async iteratorsor even just cancelable promises? How do they fit, both in the conceptual landscape and in your day-to-day programming?
For the last year, I've been working to bring an implementation of I/O streams to the browser. Meanwhile, designs for a cancelable promise type (sometimes called "tasks") are starting to form, driven by the needs of web platform APIs. And TC39 has several proposals floating around for more general asynchronous iteration. We'll learn about these efforts and more, as I guide you through the frontiers of popular libraries, language design, and web standards.
Swift is a powerful new language, with a rapidly growing user basewhich now includes Linux server-side developers. This presentation is a briief overview of the current Swift web server frameworks, as well as a highlight of the best features that Swift has to offer.
Why the Dark Side should use Swift and a SOLID ArchitectureJorge Ortiz
油
The document discusses how adopting a SOLID architecture and design patterns can help address weaknesses of the "Dark Side" like lack of robustness, testability, and team collaboration. It promotes using SOLID principles like single responsibility, open/closed, Liskov substitution, and dependency inversion. Examples show applying these principles through concepts like entities, use cases, presenters, and segregating interfaces. Adopting these practices leads to code that is more reusable, flexible, and replaceable.
invokedynamic for Mere Mortals [Code One 2019]David Buck
油
The invokedynamic instruction (part of JSR 292) has been around since JDK7. Despite its importance to most languages that run on the JVM, many developers still do not understand how it is used or implemented. Most resources available about JSR 292 are aimed at language implementers who are experts in compiler theory and language design. This session is different, offering an overview of JSR 292 for people who are curious about how things work but do not necessarily spend all day working on java bytecode. This update of the speakers 2015 session on the same topic has been updated to include new uses and related changes since Java 8.
LAU ACM - Introduction to Swift - Dani ArnaoutDani Arnaout
油
This document is an introduction to the Swift programming language presented by Dani Arnaout. It covers Swift data types, operators, strings, collection types, control flow, functions, and classes. The introduction includes examples to illustrate key concepts of the Swift syntax. It encourages readers to start coding in Swift and provides resources for learning more about the language.
Kotlin coroutines provide a way to write asynchronous and concurrent code using suspending functions and structured concurrency. Coroutines avoid callbacks and are lighter weight than threads. They allow suspending execution and resuming it later without blocking threads. This makes asynchronous code look synchronous and avoids issues like callback hell. Coroutines provide features like parallelism, cancellation, exception handling and context propagation to simplify concurrent programming.
This document discusses using Swift for server-side development with Docker and Kitura. It provides an agenda that covers a WWDC 2016 Swift session on server-side development, discusses common backend frameworks, and demonstrates setting up a Kitura project in a VirtualBox virtual machine and building and running a Docker container for the project. Code examples are provided for initializing a Swift package, defining routes and starting a Kitura server.
This document discusses multithreading on iOS. It begins with an overview of multithreading basics and why threads are needed to avoid blocking the UI. It then covers how to implement multithreading on iOS using Grand Central Dispatch (GCD), including dispatching work to background queues and updating the UI on the main queue. The document also discusses challenges like synchronization, deadlocks, and race conditions that can occur with multithreaded code and tools in Swift like serial dispatch queues, NSOperationQueues, and dispatch semaphores that can help address these issues.
forwarder.java.txt java forwarder class waits for an in.docxbudbarber38650
油
forwarder.java.txt
// java forwarder class
// waits for an inbound connection A on port INPORT
// when it is received, it launches a connection B to <OUTHOST,OUTPORT>
// and creates threads to read-B-write-A and read-A-write-B.
import java.net.*;
import java.io.*;
import java.util.*;
import java.text.*;
class forwarder {
public static String OUTHOST;
public static InetAddress OUTDEST;
public static short OUTPORT = 22;
public static short INPORT = 2345;
public static boolean DEBUG = true;
public static void main(String[] v) {
// get command-line parameters
if (v.length < 3) {
System.err.println("args: inport outhost outport");
return;
}
INPORT = (short)(new Integer(v[0])).intValue();
OUTHOST = v[1];
OUTPORT = (short)(new Integer(v[2])).intValue();
// DNS lookup, done just once!
System.err.print("Looking up address of " + OUTHOST + "...");
try {
OUTDEST = InetAddress.getByName(OUTHOST);
}
catch (UnknownHostException uhe) {
System.err.println("unknown host: " + OUTHOST);
return;
}
System.err.println(" got it!");
// initialize LISTENER socket
// wait for connection
ServerSocket ss = null;
ss = new ServerSocket(INPORT);// needs try-catch
Socket s1;
while(true) { // accept loop
s1 = ss.accept();// needs try-catch
// now set up the second connection from here to <OUTDEST,OUTPORT>,
// represented by a second socket s2
// Then create the two Copier instances, as described in the
// project description, and start() the two threads.
// At that point, this main loop simply continues
// by going back to the ss.accept() call.
} // accept loop
}// main
/**
* The Copier class handles unidirectional copying from one socket to another.
* You will need to create two of these in the main loop above,
* one for each direction. You create the Copier object, and then
* create and start a Thread object that runs that Copier.
* If c is your Copier instance (created with Copier c = new Copier(sock1, sock2)),
* then the thread is Thread t = new Thread(c), and you start the thread
* with t.start(). Or, in one step, (new Thread(c)).start()
*/
static class Copier implements Runnable {
private Socket _from;
private Socket _to;
public Copier (Socket from, Socket to) {
_from = from;
_to = to;
}
public void run() {
InputStream fis;
OutputStream tos;
try {
fis = _from.getInputStream();
tos = _to.getOutputStream();
} catch (IOException ioe) {
System.err.println("can't get IO streams from sockets");
return;
}
byte[] buf = new byte[2048];
int readsize;
while (true) {
try {
readsize = fis.read(buf);
} catch (IOException ioe) {
break;
}
if (readsize <= 0) break;
try {
tos.write(buf, 0, readsize);
} catch (IOException ioe) {
break;
}
}
// these should be safe close() calls!!
try {
fis.close();
tos.close();
_from.close();
_to.close();
} catch (IOException ioe) {
Syst.
Avec la version 9 sortie en septembre 2017, Java appuie sur la p辿dale ! Le rythme des livraisons passe une version majeure tous les 6 mois. Java 10 est sorti en mars, prochaine version en septembre. Java 10 apporte le 'var' et l'inf辿rence de type pour les variables locales. D'autres nouveaut辿s sont en pr辿paration : les constantes dynamiques, les classes de donn辿es, un nouveau switch base de lambda, des interfaces ferm辿es, de nouvelles choses du cot辿 des g辿n辿riques et bien plus encore.
Cela viendra-t-il en 11, 12, 15 ? Ne sp辿culons pas, mais quand ces nouveaut辿s seront pr棚tes, elles sortiront en quelques mois. On se propose de pr辿senter ces nouveaut辿s, celles qui sont presque pr棚tes, celles qui seront pr棚tes bient担t, et celles qui ne seront pas pr棚tes avant un moment. Quels seront les impacts sur le langage, sur la JVM et donc sur les performances ? Que cela va-t-il nous apporter au quotidien, en tant que d辿veloppeurs ? Quels seront les nouveaux patterns ? Voici le programme de cette pr辿sentation, avec des slides, du code, de la joie et de la bonne humeur !
Building a scalable learning platform - Erik Veld - Codemotion Amsterdam 2018Codemotion
油
Erik is one of the founders of Instruqt, a learning platform for DevOps tooling and Cloud technology. With Instruqt, each participant gets his/her own personal infrastructure, that is being created in seconds. In this talk I will show how we leveraged Terraform, Kubernetes and Google Cloud to create a scalable and cost-effective learning platform. I will discuss the choices we've made, the problems we encountered and the lessons learned.
"Less Painful iOS Development" by Samuel Edwin (Tokopedia)Tech in Asia ID
油
The document discusses several tools to help with iOS development including Tweaks, FLEX, Knuff, SwiftFormat, and SwiftLint. Tweaks allows modifying server URLs and other values at runtime. FLEX enables debugging network requests, inspecting views and memory, and modifying user defaults. Knuff simplifies testing push notifications. SwiftFormat formats code to follow style rules. SwiftLint finds and fixes style and quality issues.
An unconventional tutorial to basic socket.io features. Socket.io basic features are explained first of all taking a look directly at the browser (hacker approach) and then taking a look at the documentation (and some code examples).
CP3108B (Mozilla) Sharing Session on Add-on SDKMifeng
油
The document provides an overview of how to build Firefox add-ons using the Add-On SDK. It discusses key aspects like using JavaScript, HTML and CSS with no XUL needed. It outlines the packaging and testing tools as well as CommonJS module format. It provides guidance on getting started including reading documentation, tutorials and API references. It also covers topics like using the cfx tool, Package.json, the console, modules, JavaScript best practices and asynchronous programming.
際際滷s from talk I have as part of Vapor Meetup 2 in Tokyo on 2018-07-06.
The video recording from this talk is available on YouTube (https://www.youtube.com/watch?v=Uq1fJifXcOc) but unfortunately, audio issues plagued my talk. At the very least, here are slides from that evening.
The Evolution of Async-Programming on .NET Platform (.Net China, C#)jeffz
油
This document discusses the evolution of asynchronous programming on the .NET platform. It covers early approaches using Begin/End methods and event-based patterns in .NET 1.0. It then discusses improvements with yield in .NET 2.0/C# 2.0 and async workflows in F# for .NET 3.0. It also covers the Reactive Framework for .NET 4.0 which treats asynchronous computations as push-based collections. Finally, it discusses potential future improvements in C# vNext.
This document provides an overview of Java basics including:
- Java is an object-oriented programming language like C++.
- The basic unit in Java is the object, which contains both state in the form of variables and behavior in the form of methods.
- Classes define the structure and behavior of objects through methods and variables. The main method is required to execute a Java program.
Put Trust back in your Software Branching Strategy with Ship/Show/Ask
Pull requests have become a bottleneck. Engineers waste hours waiting for code reviews or long builds, switching between branches or reworking changes.
We are wasting time with no measurable improvement in quality.
Ship/Show/Ask is a new software branching strategy that combines the features of Pull Requests with the ability to keep shipping changes.
In this session, we'll look at branching in a more inclusive, dynamic way to unlock impactful code reviews without creating bottlenecks.
Adobe Marketo Engage Champion Deep Dive: Extending Marketo With AEM FormsBradBedford3
油
Discover the various ways and use cases for using Marketo forms vs. AEM forms.. In this session, Adobe experts will explore the different types of forms, key use cases, the pros and cons of each type and more! Learn how to leverage these different types of forms to best suit your business needs and use case.
Agenda
1.What is a Form?
2.Marketo Forms overview
3.AEM Forms overview
4.Use Case: Extend communications with personalized PDFs
5.Use Case: Complete journeys with personalized web applications
6.Use Case: Contact Us form
7.Q&A
Target Audience
Marketo Users: Professionals already using or considering Marketo who want to expand their marketing capabilities to AEM
AEM Users: Professionals already using or considering AEM who want to expand their marketing capabilities in Marketo
EASEUS Partition Master Crack with License Code [Latest]bhagasufyan
油
https://ncracked.com/7961-2/
Note: >> Please copy the link and paste it into Google New Tab now Download link
EASEUS Partition Master Crack is a professional hard disk partition management tool and system partition optimization software. It is an all-in-one PC and server disk management toolkit for IT professionals, system administrators, technicians, and consultants to provide technical services to customers with unlimited use.
EASEUS Partition Master 18.0 Technician Edition Crack interface is clean and tidy, so all options are at your fingertips. Whether you want to resize, move, copy, merge, browse, check, convert partitions, or change their labels, you can do everything with a few clicks. The defragmentation tool is also designed to merge fragmented files and folders and store them in contiguous locations on the hard drive.
Web Development Services by Icubetechnolabs.pdfICUBETECHNOLABS
油
Discover innovative web and mobile app solutions with ICUBE Technolabs. We specialize in digital transformation through cutting-edge technologies, custom software development, and tailored digital strategies to help your business thrive. Explore our expertise today!
Web Design,Development Services, mobile apps, digital marketing,e-commerce
Rise of the Phoenix: Lesson Learned Build an AI-powered Test Gen Enginestevebrudz1
油
In this talk, I give an overview and demo of Phoenix, an AI-powered test generation engine for Ruby on Rails applications, and share lessons learned while building it. I presented this at the Artificial Ruby Meet Up in NYC on March 4, 2025.
Click this link to download NOW : https://shorturl.at/zvrcM
Wondershare Filmora Crack is a user-friendly video editing software designed for both beginners and intermediate users. It provides an intuitive interface and powerful features that make it easy to create and edit high-quality videos without needing extensive video editing experience. It is popular among content creators, YouTubers, and anyone looking to create professional-looking videos for personal or business use.
Trivium: A Framework For Symbolic Metaprogramming in C++andreasmaniotis
油
Metaprogrammed code in C++ can be as simple, clear, reusable, modular and configurable as code that is written in a functional language like Lisp or Haskell.
Template metaprogramming (TMP) code tends to be unfriendly to humans. The code is generally neither easy to read nor easy to write.
The Trivium framework gives a solution to this problem by organising TMP indirectly by the means of Trivium Lisp, a symbolic domain specific language (DSL) for metaprogramming. Metaprograms are not encoded directly in C++, but as symbolic expressions in Trivium-Lisp.
Online Software Testing Training Institute in Delhi NcrHome
油
Geekonik is a chief Online Computer program Testing Preparing Founded in Delhi NCR, advertising expert-led courses in manual testing, computerization testing (Selenium, Appium), API testing, and execution testing. Our preparing incorporates hands-on ventures, real-world case ponders, and certification programs, guaranteeing industry-ready abilities. With adaptable online classes, personalized mentorship, and work situation help, we offer assistance you construct a fruitful career in program testing. Connect Geekonik nowadays and improve your specialized skill with cutting-edge program testing methodologies!
Copy & paste Link: https://digitalcrackpro.com/chimera-tool-samsung-crack/
Chimera Tool 41.26.2101 Crack 2024 Free Download
Chimera Tool Crack Latest has emerged as a go-to solution for mobile repair services, n the fast-paced world of mobile technology. With over a decade of experience, Chimera Tool Full Version is designed to be user-friendly while offering a robust suite of features tailored to the needs of both professionals and hobbyists. Whether youre looking to perform complex repairs or simple maintenance, this tool is a reliable partner in your workflow.
Chimera Tool 40.89.1430 Crack 2024 Free Download
This article will explore the various functionalities and applications of the Chimera Tool Acrivation Key Free, showcasing how it can enhance productivity and efficiency. Well highlight key features, the latest updates, pros and cons, system requirements, and more. By the end, youll have a comprehensive understanding of why the Chimera Tool is a valuable asset in the mobile repair industry.
Also, you can download Pandora Tool 7.5 Crack
And UnlockTool 2024.08.15.0 Crack
Uses of the Chimera Tool Crack
How John started to like TDD (instead of hating it) - TED talkNacho Cougil
油
John, a typical developer, used to dread writing tests, finding them boring and unnecessary. Test Driven Development (TDD)? Even worsehe couldnt see how it worked outside of basic exercises. But something clicked. Through his journey, John discovered the magic of writing tests before the production code: fewer bugs, quicker feedback, and cleaner code. Now, hes hooked and wont code any other way. This is the story of how TDD turned a skeptic into a believer.
PS: Think of John as a random person, as if he was even the speaker of this talk !
---
Presentation shared at Talent Arena '25
Feedback form:
http://tiny.cc/how-john-tdd-feedback
Why Hire Python Developers? Key Benefits for Your BusinessMypcot Infotech
油
Python developers bring expertise in building scalable, secure, and high-performance applications. They enhance productivity with clean, efficient code, ensuring faster development and seamless integration. With strong community support and versatility across industries, they drive innovation and cost-effective solutions. Boost your business growthhire Python developers today!
For more information please visit here https://www.mypcot.com/hire-python-developer
S端ni intellekt d旦vr端nd AI Agents, avtomatlad脹rma v otonom sistemlrin sas脹n脹 tkil edir. Smolagents framework g端c端n端 旦yrnmk v bu texnologiyalarla 旦z AI Assistant-inizi yaratmaq istyirsiniz? Bu tdbir tam siz g旦rdir!
Douwan Preactivated Plus Crack 2025-Latestmubeen010khan
油
copy and past on google も https://drfiles.net/
Browse Douwan crack version download pc AIs. Includes tasks such as Video enhancement, Code debugging, Drawings, SQL queries and Images.
Odoo WooCommerce Connector, Multiple Woocommerce store connectionAagam infotech
油
Integrate Odoo with WooCommerce and streamline your online store and business operations today! Enjoy powerful features such as importing orders and customer data, updating order statuses, syncing products, managing inventory, and organizing product categories and tags effortlessly.
Visit And Buy Now : https://bit.ly/48Pg1B4
Lets check out Important Key features of odoo woocommerece Connector :
Key features of Woocommerece store connections :
Analytical and Operational Dashboard
History logs and Mapping
Import/Export Operations - WooCommerce to Odoo
Product details to sync
Cron jobs for automation
And more...
Just Click on below App link and download Odoo Woocommerece store connection module :
App download now :
Odoo 18 : https://bit.ly/48Pg1B4
Odoo 17 : https://bit.ly/3SkqflA
Odoo 16 : https://bit.ly/3EBBoIb
Odoo 15 : https://bit.ly/3sG8Y94
Odoo 14 : https://bit.ly/3gKcxFJ
Odoo 13 : https://bit.ly/3sG90xI
Odoo 12 : https://bit.ly/3JxhduH
Odoo 11 : https://bit.ly/3rSgZIV
Ask us for free Demo ? business@aagaminfotech.com
Explore more odoo Apps: https://bit.ly/3y02ofI
Want to discuss: http://www.aagaminfotech.com/
Click this link to download NOW : https://shorturl.at/zvrcM
Enscape Latest 2025 Crack is a real-time 3D rendering and virtual reality (VR) software that integrates seamlessly with architectural design software like Autodesk Revit, SketchUp, Rhino, ArchiCAD, and Vectorworks. It is widely used by architects, designers, and visualization professionals to create photorealistic visualizations, immersive virtual walkthroughs, and high-quality renderings directly from their 3D models.
In 2025, AI-powered cyber threats are growing, but so are AI-driven security measures! Heres how were fighting back:
AI-Powered Fraud Detection Spot & stop attacks in real-time
Behavioral Biometrics AI learns user behavior & detects anomalies
Adaptive Security Models Auto-adjust security levels based on risk
AI-Powered Encryption Data stays safe, even in transit
At iProgrammer, we build intelligent, AI-driven security solutions to keep your app one step ahead of cyber threats!
How secure is your app? Lets talk!
https://www.iprogrammer.com/mobile-app-development-service/
Software Development Services: A Complete GuideAndrew Wade
油
This guide provides an in-depth look at software development services, explaining their importance for businesses of all sizes. It outlines the different types of services, including custom software, web and mobile development, enterprise solutions, and cloud-based applications. The blog highlights the key benefits of hiring a software development company, such as expertise, cost-effectiveness, faster time to market, scalability, and ongoing support. Additionally, it offers practical tips for selecting the right software development agency, emphasizing factors like portfolio evaluation, technical expertise, and post-development support. Ultimately, choosing a reliable software development firm can drive business growth, innovation, and efficiency.
VADY: Unlocking Growth Through Data-Driven CFO StrategiesNewFangledVision
油
VADY helps CFOs leverage AI-powered data visualization and enterprise AI solutions to drive business growth. By incorporating smart decision-making tools and AI-driven competitive advantage, finance leaders can enhance forecasting, improve financial performance, and streamline investment strategies. VADY data analytics solutions ensure that CFOs have access to real-time insights, helping them make proactive and profit-driven decisions.
2. WHO AM I?
IOS DEV @
iOS dev since iOS 6
Talks, blog, online courses, etc.
3. FORWARD SWIFT 16: SWIFT INITIALIZERS
WHY TALK ABOUT SWIFTS INITIALIZERS?
A common point of friction
there is no escaping them
let foo = Box()
4. FORWARD SWIFT 16: SWIFT INITIALIZERS
OBJECTIVE-C INIT
- (instancetype)init
{
self = [super init];
if (self)
{
//Setup code...
}
return self;
}
5. FORWARD SWIFT 16: SWIFT INITIALIZERS
TRYING THAT IN SWIFT
class Foo
{
init()
{
self = super.init()
if self
{
}
return self
}
}
6. FORWARD SWIFT 16: SWIFT INITIALIZERS
OBJECTIVE-C INITS != SWIFT INITS
Why?
7. FORWARD SWIFT 16: SWIFT INITIALIZERS
SWIFTS DESIGN GOALS
SAFE
FAST
EXPRESSIVE
8. FORWARD SWIFT 16: SWIFT INITIALIZERS
SWIFTS DESIGN GOALS
SAFE
FAST
EXPRESSIVE
SAFE
EXPRESSIVE
9. OPTING FOR SAFETY SOMETIMES MEANS SWIFT WILL FEEL
STRICT, BUT WE BELIEVE THAT CLARITY SAVES TIME IN THE
LONG RUN.
FORWARD SWIFT 16: SWIFT INITIALIZERS
SWIFTS DESIGN GOALS
SAFE
EXPRESSIVESWIFT BENEFITS FROM DECADES
OF ADVANCEMENT IN COMPUTER
SCIENCE TO OFFER SYNTAX THAT
IS A JOY TO USE, WITH MODERN
FEATURES DEVELOPERS EXPECT.
10. FORWARD SWIFT 16: SWIFT INITIALIZERS
THE MOST BASIC SWIFT INIT: TAKE TWO
class Foo
{
init()
{
self = super.init()
if self
{
}
return self
}
}
class Foo
{
init()
{
}
}
class Foo
{
}
let aFoo = Foo()
11. Phase One
Init() is called
Memory allocated
Each of the instance stored props gets a value
Memory is fully initialized
Init() delegation kicks in - does the same thing
Instance methods or self are not allowed here
FORWARD SWIFT 16: SWIFT INITIALIZERS
TWO PHASE INITIALIZATION
class Foo { }
let aFoo = Foo()
Memory
12. Phase Two
Each Init() can customize the instance further
Self is allowed, instance methods can be called
but they de鍖nitely dont have to
FORWARD SWIFT 16: SWIFT INITIALIZERS
TWO PHASE INITIALIZATION
class Foo { }
let aFoo = Foo()
Memory
13. FORWARD SWIFT 16: SWIFT INITIALIZERS
BUT WAITTHERES MORE!
class Foo
{
init() {}
}
class Foo
{
required init() {}
}
class Foo
{
convenience init() {}
}
class Foo
{
init?()
}
struct Foo
{
init() {}
}
14. FORWARD SWIFT 16: SWIFT INITIALIZERS
KEY POINTS TO REMEMBER WITH SWIFT INITIALIZERS
Swift inits vs Objective-C inits are very different
More thought comes into play with inheritance
Its largely driven by de鍖nitive initialization
which means, all properties need a value!
Swift properties cannot be in an indeterminate
state before the instance is used
15. This wont compile - why?
FORWARD SWIFT 16: SWIFT INITIALIZERS
WORKING WITH STRUCTS
struct ConferenceTalk
{
var talkName:String
init() { }
}
16. This wont compile - why?
FORWARD SWIFT 16: SWIFT INITIALIZERS
WORKING WITH STRUCTS
struct ConferenceTalk
{
var talkName:String?
init() { }
}
struct ConferenceTalk
{
var talkName:String
init() { }
}
This becomes the designated initializer for ConferenceTalk
17. FORWARD SWIFT 16: SWIFT INITIALIZERS
WORKING WITH STRUCTS
struct ConferenceTalk
{
var talkName:String?
init() { }
}
struct ConferenceTalk
{
var talkName = ""
init() { }
}
struct ConferenceTalk
{
var talkName:String
init() { self.talkName = "" }
}
struct ConferenceTalk
{
var talkName = { /*...*/ return ""}()
init() { }
}
18. struct ConferenceTalk
{
var presenter:String?
var talkName = {
self.presenter = "Something"
return ""
}()
init() { }
}
FORWARD SWIFT 16: SWIFT INITIALIZERS
WORKING WITH STRUCTS
struct ConferenceTalk
{
var talkName = { /*...*/ return ""}()
init() { }
}
Compilation Error!
19. Ties a propertys init closely to its declaration
Intent is clear
Initializers inheritance
Type inference!
default init() for free
//Use defaults
struct ConferenceTalk
{
var talkDuration = 0.0
}
FORWARD SWIFT 16: SWIFT INITIALIZERS
WORKING WITH STRUCTS - USE DEFAULT VALUES
20. FORWARD SWIFT 16: SWIFT INITIALIZERS
WORKING WITH STRUCTS
What about when defaults dont make sense?
struct ConferenceTalk
{
var talkDuration = 0.0
var speakerName:String
var topics:[String]
}
21. Memberwise Initializers
No default values? No prob! *
Custom inits() wipe this out
FORWARD SWIFT 16: SWIFT INITIALIZERS
WORKING WITH STRUCTS
struct ConferenceTalk
{
var talkDuration = 0.0
var speakerName:String
var topics:[String]
}
let fsTalk = ConferenceTalk(talkDuration: 45,
speakerName: "Jordan",
topics: ["Swift", "Inits"])
22. but dont wanna lose my free one!
Extensions allow this
Only convenience inits() though
FORWARD SWIFT 16: SWIFT INITIALIZERS
WORKING WITH STRUCTS - WAIT, I WANT A CUSTOM INIT()
extension ConferenceTalk
{
//An init
}
23. FORWARD SWIFT 16: SWIFT INITIALIZERS
WORKING WITH STRUCTS - WAIT, I WANT A CUSTOM INIT()
extension ConferenceTalk
{
init(jordansTalk duration:Double)
{
self.init(talkDuration:duration,
speakerName:"Jordan",
topics:["Swift", "Inits"])
}
}
let myTalk = ConferenceTalk(jordansTalk: 45)
24. FORWARD SWIFT 16: SWIFT INITIALIZERS
WORKING WITH CLASSES A.K.A. HARD MODE
not really, but there is more to think about
Swift properties cannot be in an indeterminate
state before the instance is used
- and -
Any instance must have 鍖rst dibs on setting any
properties that it introduced
25. FORWARD SWIFT 16: SWIFT INITIALIZERS
DESIGNATED INITIALIZERS - EVERY CLASS NEEDS ONE
Eventually, every instance gets initialized from a designated init()
Enforces that each property introduced by that class has a value
Then it calls an initializer from its superclass
class ConferenceTalk
{
var speakerName:String
init(speaker:String)
{
self.speakerName = speaker
}
}
let conTalk = ConferenceTalk(speaker: "Jordan")
26. FORWARD SWIFT 16: SWIFT INITIALIZERS
DESIGNATED INITIALIZERS CONT.
Think of them as a funnel
Typically, each class only has one of these
public init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?)
27. FORWARD SWIFT 16: SWIFT INITIALIZERS
CONVENIENCE INITIALIZERS - HELPFUL BUT NOT REQUIRED
Supporting, helpful initializers
Great for speci鍖c use cases
Theyll eventually hit a designated initializer
28. FORWARD SWIFT 16: SWIFT INITIALIZERS
CONVENIENCE INITIALIZERS - EXAMPLE
class ConferenceTalk
{
var speakerName:String
init(speaker:String)
{
self.speakerName = speaker
}
convenience init()
{
self.init(speaker:"Unknown")
}
}
let unknownTalk = ConferenceTalk() //unknownTalk.speakerName == "Unknown"
29. FORWARD SWIFT 16: SWIFT INITIALIZERS
CONVENIENCE INITIALIZERS - HELPFUL/NOT REQUIRED
init(speaker:String)
{
self.speakerName = speaker
}
convenience init()
{
self.init(speaker:"Unknown")
}
let unknownTalk = ConferenceTalk()
30. FORWARD SWIFT 16: SWIFT INITIALIZERS
LAWS OF THE LAND
Rule 1
A designated initializer must call a designated initializer
from its immediate superclass.
class ForwardSwiftTalk : ConferenceTalk
{
let talkLocation:String
init(location:String)
{
self.talkLocation = location
super.init(speaker: "")
}
}
31. FORWARD SWIFT 16: SWIFT INITIALIZERS
LAWS OF THE LAND
Rule 2
A convenience initializer must call another initializer
from the same class.
class ForwardSwiftTalk : ConferenceTalk
{
let talkLocation:String
init(location:String)
{
self.talkLocation = location
super.init(speaker: "")
}
convenience init()
{
self.init(location: "Hall A")
}
}
32. FORWARD SWIFT 16: SWIFT INITIALIZERS
LAWS OF THE LAND
Rule 3
A convenience initializer must ultimately call a
designated initializer.
class ForwardSwiftTalk : ConferenceTalk
{
let talkLocation:String
init(location:String)
{
self.talkLocation = location
super.init(speaker: "")
}
convenience init()
{
self.init(location: "Hall A")
}
}
33. FORWARD SWIFT 16: SWIFT INITIALIZERS
THE EASY WAY TO REMEMBER THIS?
Designated Initializers delegate up
Convenience Initializers delegate across
34. FORWARD SWIFT 16: SWIFT INITIALIZERS
WHAT HAPPENS WHEN I SUBCLASS?
class ConferenceTalk
{
var speakerName:String
init(speaker:String)
{
self.speakerName = speaker
}
convenience init()
{
self.init(speaker:"Unknown")
}
}
class ForwardSwiftTalk : ConferenceTalk
{
//Now Wut ???
}
35. FORWARD SWIFT 16: SWIFT INITIALIZERS
INHERITANCE
Unlike Objective-C - you dont always get supers inits()
But if:
The subclass doesnt have any custom inits() then
If you have an implementation of all of supers designated inits
either from rule 1 or by a custom implementation - then you get
convenience inits() too!
let fsTalk = ForwardSwiftTalk()
36. FORWARD SWIFT 16: SWIFT INITIALIZERS
INHERITANCE IN ACTION
class ConferenceTalk
{
var speakerName:String
init(speaker:String)
{
self.speakerName = speaker
}
convenience init()
{
self.init(speaker:"Unknown")
}
}
class ForwardSwiftTalk : ConferenceTalk
{
let talkLocation:String
init(location:String)
{
self.talkLocation = location
super.init(speaker: "")
}
}
let fsTalk = ForwardSwiftTalk(location: "Hall A")
37. FORWARD SWIFT 16: SWIFT INITIALIZERS
class ConferenceTalk
class ForwardSwiftTalk : ConferenceTalk
init(location:String)
{
self.talkLocation = location
super.init(speaker: "")
}
init(location:String)
{
self.talkLocation = location
super.init(speaker: "")
}
38. FORWARD SWIFT 16: SWIFT INITIALIZERS
SUBCLASS CONVENIENCE HAVE THE SAME RULES
class ForwardSwiftTalk : ConferenceTalk
{
let talkLocation:String
init(location:String)
{
self.talkLocation = location
super.init(speaker: "")
}
convenience init()
{
self.init(location: "Hall A")
}
}
let fsTalk = ForwardSwiftTalk()
39. Each class is responsible for setting initial values for things
that it introduces!
FORWARD SWIFT 16: SWIFT INITIALIZERS
THE TRICK REALLY IS TO REMEMBER THAT
class ForwardSwiftTalk : ConferenceTalk
{
let talkLocation:String
init(location:String)
{
self.talkLocation = location
super.init(speaker: "")
}
}
class ForwardSwiftTalk : ConferenceTalk
{
let talkLocation:String
init(location:String)
{
super.init(speaker: "")
self.talkLocation = location
}
}
40. Why? Because supers designated init() had the chance to
set them before anyone else did (i.e. FowardSwiftTalk)
FORWARD SWIFT 16: SWIFT INITIALIZERS
AFTER THAT POINT - YOU CAN CUSTOMIZE SUPERS PROPS
class ForwardSwiftTalk : ConferenceTalk
{
let talkLocation:String
init(location:String)
{
self.talkLocation = location
super.init(speaker: "")
self.speakerName = "俗_( )_/俗"
}
}
FYI: This is crazy town if youre still wearing Objective-C glasses
41. Failable inits() allow for you to say This might not work
Most famously
Here, weve got an optional UIImage instance
FORWARD SWIFT 16: SWIFT INITIALIZERS
ENOUGH ABOUT INHERITANCE - LETS TALK FAILURE
let maybeAnImage = UIImage(named: "Jordan_Excercising")
42. FORWARD SWIFT 16: SWIFT INITIALIZERS
FAILABLE INITIALIZERS EXAMPLE
class ConferenceTalk
{
var speakerName:String
init?(speaker:String)
{
if speaker.isEmpty
{
return nil
}
self.speakerName = speaker
}
}
let emptyTalk = ConferenceTalk(speaker: "")
if let aTalk = emptyTalk
{
//We've got something
}
43. FORWARD SWIFT 16: SWIFT INITIALIZERS
FAILABLE INITIALIZERS ARE QUITE FANCY, BECAUSE
They can delegate up
and across
to one of supers failable initializers
to another failable initializer within the instance
44. FORWARD SWIFT 16: SWIFT INITIALIZERS
FLEXIBLE: OVERRIDE A FAILABLE WITH A NON-FAILABLE
class ConferenceTalk
{
var speakerName:String?
init(){}
init?(speaker:String)
{
if speaker.isEmpty
{
return nil
}
self.speakerName = speaker
}
}
class ForwardSwiftTalk : ConferenceTalk
{
let talkLocation:String
override init()
{
self.talkLocation = ""
super.init()
self.speakerName = "No Speaker Set"
}
override init(speaker:String)
{
self.talkLocation = ""
super.init()
self.speakerName = speaker.isEmpty ? "No
Speaker Set" : speaker
}
}
45. FORWARD SWIFT 16: SWIFT INITIALIZERS
YOU CAN TRIGGER A FAILURE ANYTIME
class ConferenceTalk
{
var speakerName:String
init?(speaker:String)
{
if speaker.isEmpty
{
return nil
}
self.speakerName = speaker
}
}
class ForwardSwiftTalk : ConferenceTalk
{
let talkLocation:String
init?(location:String, speaker:String)
{
if location.isEmpty
{
return nil
}
self.talkLocation = location
super.init(speaker: speaker)
}
}
46. FORWARD SWIFT 16: SWIFT INITIALIZERS
LASTLY, LETS TALK REQUIRED INITIALIZERS
Use these to signify that subclasses must implement it
class ConferenceTalk
{
var speakerName:String
required init(speaker:String)
{
self.speakerName = speaker
}
}
class ForwardSwiftTalk : ConferenceTalk
{
let talkLocation:String
init(location:String)
{
self.talkLocation = location
super.init(speaker: "")
}
}
Compilation Error!
47. FORWARD SWIFT 16: SWIFT INITIALIZERS
ISSUES WITH SUBCLASSING UIVIEWCONTROLLER? THIS IS WHY.
class FooViewController:UIViewController
{
let aValue:String
init(someValue:String)
{
self.aValue = someValue
super.init(nibName: "", bundle: nil)
}
}
48. FORWARD SWIFT 16: SWIFT INITIALIZERS
ISSUES WITH SUBCLASSING UIVIEWCONTROLLER? THIS IS WHY.
class FooViewController:UIViewController
{
let aValue:String
init(someValue:String)
{
self.aValue = someValue
super.init(nibName: "", bundle: nil)
}
}
class FooViewController:UIViewController
{
let aValue:String
init(someValue:String)
{
self.aValue = someValue
super.init(nibName: "", bundle: nil)
}
required init?(coder aDecoder: NSCoder)
{
self.aValue = ""
super.init(coder: aDecoder)
}
}
49. FORWARD SWIFT 16: SWIFT INITIALIZERS
WRAP UP: TO MAKE THINGS EASY JUST REMEMBER THAT
Always start with making sure your properties have a value
before anything else
An instance always has 鍖rsties on setting its introduced
instances. So when inheriting, call supers init before you try and
set its properties
Look out for required inits (i.e. UIViewController)
Value types are easier (no inheritance to worry about)
Dont think about Objective-C inits at all when writing Swift
ones
50. FORWARD SWIFT 16: SWIFT INITIALIZERS
THE PLUGS
@jordanmorgan10 on the Twittersphere
bit.ly/iosdevguide - Also pluralsight.com for iOS courses.
@bufferdevs | over鍖ow.buffer.com | github for open source