The document discusses several new features introduced in Swift 4 including multi-line string literals, improvements to strings and collections, private access control, smart keypaths, existentials, one-sided ranges, and limiting automatic @objc inference. It also introduces the Codable protocol for encoding and decoding types to and from data, which provides a standard way to serialize and deserialize objects to formats like JSON.
Rust
Why do you care about Rust? Who has the time to learn all these new languages? It seems like a new one is popping up every other week and this trend is growing at an exponential rate. Good news, a fair number of them are crafted really well and efficiently solve specific problems. Bad news, how do you keep up with all of this, let alone decide which languages to include in your companies technology portfolio.
Despite the challenges of all these new languages, a majority of developers are intrigued about the idea of becoming a polyglot, but don't know where to begin or don't have the time. In my polyglot travels, there is one language of late that is the sure-fire answer to the above questions, Rust.
In this talk I’ll explore the value behind becoming more polyglotic as a developer, how to pick languages to learn, and then dive deep in the the language of Rust. Which in my opinion, is hands down the best up and coming languages to learn.
About the Presenter
Anthony Broad-Crawford has been a developer since the year 2000 with a short side stint as a semi-professional poker player. Since his transition to software development Anthony has...
1. Built 8 patent receiving technologies
2. Founded two global companies
3. Been a CTO (3x), CPO (1x), and CEO (1x)
and is currently the CTO at Fooda where he manages product, user experience, and engineering. Fooda is predominantly web and mobile technology company focused on bringing great & healthy food from the best restaurant's to people while at the office.
Through his career, in production applications Anthony has used Ruby, Java, Jave (Android), Objective-C and Swift, .NET, Erlang, Scala, Node.JS, LISP, Smalltalk, and even assembly, with his recent favorite, Rust . No, not all at the same time in the same application.
Anthony now spends his time building great teams, that leverage great technology, to build great products, but still looks to codes every chance he can get :)
How to become an Android dev starting from iOS (and vice versa)Giuseppe Filograno
Starting from my working experience I want to describe the similarities between Android and iOS platforms, demonstrating that these worlds are not so far!
This slides was presented for the first time at the Google DevFest Milano 2018
Rust
Why do you care about Rust? Who has the time to learn all these new languages? It seems like a new one is popping up every other week and this trend is growing at an exponential rate. Good news, a fair number of them are crafted really well and efficiently solve specific problems. Bad news, how do you keep up with all of this, let alone decide which languages to include in your companies technology portfolio.
Despite the challenges of all these new languages, a majority of developers are intrigued about the idea of becoming a polyglot, but don't know where to begin or don't have the time. In my polyglot travels, there is one language of late that is the sure-fire answer to the above questions, Rust.
In this talk I’ll explore the value behind becoming more polyglotic as a developer, how to pick languages to learn, and then dive deep in the the language of Rust. Which in my opinion, is hands down the best up and coming languages to learn.
About the Presenter
Anthony Broad-Crawford has been a developer since the year 2000 with a short side stint as a semi-professional poker player. Since his transition to software development Anthony has...
1. Built 8 patent receiving technologies
2. Founded two global companies
3. Been a CTO (3x), CPO (1x), and CEO (1x)
and is currently the CTO at Fooda where he manages product, user experience, and engineering. Fooda is predominantly web and mobile technology company focused on bringing great & healthy food from the best restaurant's to people while at the office.
Through his career, in production applications Anthony has used Ruby, Java, Jave (Android), Objective-C and Swift, .NET, Erlang, Scala, Node.JS, LISP, Smalltalk, and even assembly, with his recent favorite, Rust . No, not all at the same time in the same application.
Anthony now spends his time building great teams, that leverage great technology, to build great products, but still looks to codes every chance he can get :)
How to become an Android dev starting from iOS (and vice versa)Giuseppe Filograno
Starting from my working experience I want to describe the similarities between Android and iOS platforms, demonstrating that these worlds are not so far!
This slides was presented for the first time at the Google DevFest Milano 2018
Slides from talk about Node.js held on JavaScript Fullstack Day at International JavaScript Conference 2019 (https://javascript-conference.com/web-development-architecture/javascript-fullstack-day-from-zero-to-hero/)
Taming Core Data by Arek Holko, MacoscopeMacoscope
Core Data is a framework that you use to manage the model layer objects in your application. A framework that you use to build the persistence layer in your application.
Android & Kotlin - The code awakens #03Omar Miatello
A series of 3 events for building apps with Kotlin on Android.
Introduction to Kotlin, a modern language, developed by JetBrains (those who developed the IDE on which is based Android Studio) that compared to Java is more concise, versatile and with better error handling. The code is 100% interoperable with Java, and can be used to write native Android apps or small component.
This slides were used for the FlashAir x Android App Development Workshop held in Tokyo. The APIs, development tutorials, and Q&A forum for FlashAir Android App Development are now available for free on "FlashAir Developers" > https://flashair-developers.com
Scaladroids: Developing Android Apps with ScalaOstap Andrusiv
Android is a fast-growing mobile operating system with millions of users worldwide.
Scala is a modern programming language designed to express common programming patterns in a concise, elegant, and type-safe way. Why not combine both of them?
Kotlin is a statically typed programming language for the JVM, Android and the browser.
More and more in the Android community start using Kotlin, we’ll see why and how you can do it too.
Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014hwilming
The slide to the Java User Group Talk Exploring Ceylon from Gavin King.
Abstrakt:
Ceylon is a new programming language designed for writing large programs in teams. The language emphasizes readability, modularity, typesafety, and tooling. Ceylon programs execute on Java and JavaScript virtual machines. In this session, Gavin King will talk about the ideas behind Ceylon and demonstrate the language, its type system, its module architecture, and its IDE.
Speaker:
Gavin King leads the Ceylon project at Red Hat. He is the creator of Hibernate, a popular object/relational persistence solution for Java, and the Seam Framework, an application framework for enterprise Java. He's contributed to the Java Community Process as JBoss and then Red Hat representative for the EJB and JPA specifications and as lead of the CDI specification.
Now he works full time on Ceylon, polishing the language specification, developing the compiler frontend, and thinking about the SDK and future of the platform. He's still a fan of Java, and of other languages, especially Smalltalk, Python, and ML.
Listen to the keynote address and hear about the latest developments from Rachana Ananthakrishnan and Ian Foster who review the updates to the Globus Platform and Service, and the relevance of Globus to the scientific community as an automation platform to accelerate scientific discovery.
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns
Unlocking Business Potential: Tailored Technology Solutions by Prosigns
Discover how Prosigns, a leading technology solutions provider, partners with businesses to drive innovation and success. Our presentation showcases our comprehensive range of services, including custom software development, web and mobile app development, AI & ML solutions, blockchain integration, DevOps services, and Microsoft Dynamics 365 support.
Custom Software Development: Prosigns specializes in creating bespoke software solutions that cater to your unique business needs. Our team of experts works closely with you to understand your requirements and deliver tailor-made software that enhances efficiency and drives growth.
Web and Mobile App Development: From responsive websites to intuitive mobile applications, Prosigns develops cutting-edge solutions that engage users and deliver seamless experiences across devices.
AI & ML Solutions: Harnessing the power of Artificial Intelligence and Machine Learning, Prosigns provides smart solutions that automate processes, provide valuable insights, and drive informed decision-making.
Blockchain Integration: Prosigns offers comprehensive blockchain solutions, including development, integration, and consulting services, enabling businesses to leverage blockchain technology for enhanced security, transparency, and efficiency.
DevOps Services: Prosigns' DevOps services streamline development and operations processes, ensuring faster and more reliable software delivery through automation and continuous integration.
Microsoft Dynamics 365 Support: Prosigns provides comprehensive support and maintenance services for Microsoft Dynamics 365, ensuring your system is always up-to-date, secure, and running smoothly.
Learn how our collaborative approach and dedication to excellence help businesses achieve their goals and stay ahead in today's digital landscape. From concept to deployment, Prosigns is your trusted partner for transforming ideas into reality and unlocking the full potential of your business.
Join us on a journey of innovation and growth. Let's partner for success with Prosigns.
Enterprise Resource Planning System includes various modules that reduce any business's workload. Additionally, it organizes the workflows, which drives towards enhancing productivity. Here are a detailed explanation of the ERP modules. Going through the points will help you understand how the software is changing the work dynamics.
To know more details here: https://blogs.nyggs.com/nyggs/enterprise-resource-planning-erp-system-modules/
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar
The European Union Agency for Law Enforcement Cooperation (Europol) has suffered an alleged data breach after a notorious threat actor claimed to have exfiltrated data from its systems. Infamous data leaker IntelBroker posted on the even more infamous BreachForums hacking forum, saying that Europol suffered a data breach this month.
The alleged breach affected Europol agencies CCSE, EC3, Europol Platform for Experts, Law Enforcement Forum, and SIRIUS. Infiltration of these entities can disrupt ongoing investigations and compromise sensitive intelligence shared among international law enforcement agencies.
However, this is neither the first nor the last activity of IntekBroker. We have compiled for you what happened in the last few days. To track such hacker activities on dark web sources like hacker forums, private Telegram channels, and other hidden platforms where cyber threats often originate, you can check SOCRadar’s Dark Web News.
Stay Informed on Threat Actors’ Activity on the Dark Web with SOCRadar!
A Comprehensive Look at Generative AI in Retail App Testing.pdfkalichargn70th171
Traditional software testing methods are being challenged in retail, where customer expectations and technological advancements continually shape the landscape. Enter generative AI—a transformative subset of artificial intelligence technologies poised to revolutionize software testing.
How Recreation Management Software Can Streamline Your Operations.pptxwottaspaceseo
Recreation management software streamlines operations by automating key tasks such as scheduling, registration, and payment processing, reducing manual workload and errors. It provides centralized management of facilities, classes, and events, ensuring efficient resource allocation and facility usage. The software offers user-friendly online portals for easy access to bookings and program information, enhancing customer experience. Real-time reporting and data analytics deliver insights into attendance and preferences, aiding in strategic decision-making. Additionally, effective communication tools keep participants and staff informed with timely updates. Overall, recreation management software enhances efficiency, improves service delivery, and boosts customer satisfaction.
Accelerate Enterprise Software Engineering with PlatformlessWSO2
Key takeaways:
Challenges of building platforms and the benefits of platformless.
Key principles of platformless, including API-first, cloud-native middleware, platform engineering, and developer experience.
How Choreo enables the platformless experience.
How key concepts like application architecture, domain-driven design, zero trust, and cell-based architecture are inherently a part of Choreo.
Demo of an end-to-end app built and deployed on Choreo.
Globus Connect Server Deep Dive - GlobusWorld 2024Globus
We explore the Globus Connect Server (GCS) architecture and experiment with advanced configuration options and use cases. This content is targeted at system administrators who are familiar with GCS and currently operate—or are planning to operate—broader deployments at their institution.
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus
As part of the DOE Integrated Research Infrastructure (IRI) program, NERSC at Lawrence Berkeley National Lab and ALCF at Argonne National Lab are working closely with General Atomics on accelerating the computing requirements of the DIII-D experiment. As part of the work the team is investigating ways to speedup the time to solution for many different parts of the DIII-D workflow including how they run jobs on HPC systems. One of these routes is looking at Globus Compute as a way to replace the current method for managing tasks and we describe a brief proof of concept showing how Globus Compute could help to schedule jobs and be a tool to connect compute at different facilities.
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamtakuyayamamoto1800
In this slide, we show the simulation example and the way to compile this solver.
In this solver, the Helmholtz equation can be solved by helmholtzFoam. Also, the Helmholtz equation with uniformly dispersed bubbles can be simulated by helmholtzBubbleFoam.
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Globus
Large Language Models (LLMs) are currently the center of attention in the tech world, particularly for their potential to advance research. In this presentation, we'll explore a straightforward and effective method for quickly initiating inference runs on supercomputers using the vLLM tool with Globus Compute, specifically on the Polaris system at ALCF. We'll begin by briefly discussing the popularity and applications of LLMs in various fields. Following this, we will introduce the vLLM tool, and explain how it integrates with Globus Compute to efficiently manage LLM operations on Polaris. Attendees will learn the practical aspects of setting up and remotely triggering LLMs from local machines, focusing on ease of use and efficiency. This talk is ideal for researchers and practitioners looking to leverage the power of LLMs in their work, offering a clear guide to harnessing supercomputing resources for quick and effective LLM inference.
First Steps with Globus Compute Multi-User EndpointsGlobus
In this presentation we will share our experiences around getting started with the Globus Compute multi-user endpoint. Working with the Pharmacology group at the University of Auckland, we have previously written an application using Globus Compute that can offload computationally expensive steps in the researcher's workflows, which they wish to manage from their familiar Windows environments, onto the NeSI (New Zealand eScience Infrastructure) cluster. Some of the challenges we have encountered were that each researcher had to set up and manage their own single-user globus compute endpoint and that the workloads had varying resource requirements (CPUs, memory and wall time) between different runs. We hope that the multi-user endpoint will help to address these challenges and share an update on our progress here.
May Marketo Masterclass, London MUG May 22 2024.pdfAdele Miller
Can't make Adobe Summit in Vegas? No sweat because the EMEA Marketo Engage Champions are coming to London to share their Summit sessions, insights and more!
This is a MUG with a twist you don't want to miss.
Navigating the Metaverse: A Journey into Virtual Evolution"Donna Lenk
Join us for an exploration of the Metaverse's evolution, where innovation meets imagination. Discover new dimensions of virtual events, engage with thought-provoking discussions, and witness the transformative power of digital realms."
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Globus
The U.S. Geological Survey (USGS) has made substantial investments in meeting evolving scientific, technical, and policy driven demands on storing, managing, and delivering data. As these demands continue to grow in complexity and scale, the USGS must continue to explore innovative solutions to improve its management, curation, sharing, delivering, and preservation approaches for large-scale research data. Supporting these needs, the USGS has partnered with the University of Chicago-Globus to research and develop advanced repository components and workflows leveraging its current investment in Globus. The primary outcome of this partnership includes the development of a prototype enterprise repository, driven by USGS Data Release requirements, through exploration and implementation of the entire suite of the Globus platform offerings, including Globus Flow, Globus Auth, Globus Transfer, and Globus Search. This presentation will provide insights into this research partnership, introduce the unique requirements and challenges being addressed and provide relevant project progress.
6. Swift 1.2
if let data = dataStream.data {
if let encoding = data.encoding {
//Swift 1.0
}
}
if let data = dataStream.data, let encoding = data.encoding
where somethingTrue {
//Swift 2.0
}
}
7. Swift 2
guard let frog = frog, let cow = cow else {
return
}
extension MyViewController: UITableViewDataSource {
//implement UITableViewDataSource
}
8. Swift 2
enum DrinkError: ErrorType {
case NoBeerRemainingError
}
func drinkWithError() throws {
if beer.isAvailable() {
} else {
throw DrinkError.NoBeerRemainingError
}
}
do {
try drinkWithError()
} catch {
print(error)
}
16. Multi-Line Literals
let indentation = """
1
2
3
“""
//Error: change indentation of this line to match closing
delimiter
let indentation = """
1
2
3
"""
23. private, fileprivate
class Person {
private let name: String
init(name: String, age: Int) {
self.name = name
}
}
extension Person: CustomStringConvertible {
var description: String {
//Swift 3에선 fileprivate로 해야 컴파일 가능
return "(self.name)"
}
}
24. fileprivate in Swift 3
Extension Oriented Programming을 밀면서
fileprivate이 사실상 private 역할을 하게 됨
Swift3 private은 extension에서 접근 하지 못하는 필
드들을 구분할 수 있으나 과연 의미가 있는 구분인가?
Swift4 private “같은 소스 파일”에 있는 extension은
private 필드에 접근 가능함
25. fileprivate in Swift 4.0
class Person {
fileprivate var name: String
init(name: String) {
self.name = name
}
}
func run() {
let p = Person(name: "Younghoo")
p.name = "0hoo"
//fileprivate 필드는 같은 파일에서 접근 가능
}
27. KeyPaths
struct Person {
var name: String
}
struct Book {
var title: String
var authors: [Person]
var primaryAuthor: Person {
return authors.first!
}
}
let abelson = Person(name: "Harold Abelson")
let sussman = Person(name: "Gerald Jay Sussman")
let book = Book(title: "Structure and Interpretation of
Computer Programs", authors: [abelson, sussman])
28. KeyPaths
book[keyPath: Book.title]
//"Structure and Interpretation of Computer Programs"
book[keyPath: Book.primaryAuthor.name]
//"Harold Abelson”
let authorKeyPath = Book.primaryAuthor
let nameKeyPath = authorKeyPath.appending(path: .name)
book[keyPath: nameKeyPath]
//"Harold Abelson"
29. KVO
import Foundation
class Child: NSObject {
let name: String
// KVO-enabled properties must be @objc dynamic
@objc dynamic var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
super.init()
}
func celebrateBirthday() {
age += 1
}
}
30. KVO, KeyPaths
let eugene = Child(name: "Eugene", age: 0)
let observation = eugene.observe(.age, options: [.initial, .old]) {
(child, change) in
if let oldValue = change.oldValue {
print("(child.name)’s age changed from (oldValue) to (child.age)")
} else {
print("(child.name)’s age is now (child.age)")
}
}
//Eugene’s age is now 0
eugene.celebrateBirthday()
//Eugene’s age changed from 0 to 1
38. One-Sided Ranges
let planets = ["Mercury", "Venus", "Earth", "Mars",
"Jupiter", "Saturn", "Uranus", “Neptune"]
let outsideAsteroidBelt = planets[4...]
// Before: planets[4..<planets.endIndex]
let firstThree = planets[..<4]
// Before: planets[planets.startIndex..<4]
39. Pattern Matching
func temperature(planetNumber: Int) {
switch planetNumber {
case ...2: // anything less than or equal to 2
print("더워")
case 4...: // anything greater than or equal to 4
print("추워")
default:
print("좋아")
}
}
temperature(planetNumber: 3)
47. Before Swift4
struct Todo {
var id: Int?
var title: String
var userId: Int
var completed: Bool
init?(json: [String: Any]) {
guard let title = json["title"] as? String,
let id = json["id"] as? Int,
let userId = json["userId"] as? Int,
let completed = json["completed"] as? Bool else {
return nil
}
self.title = title
self.userId = userId
self.completed = completed
self.id = id
}
}
49. Codable
let dict = [
"id": 1, "title":
"Let's Swift 준비",
"userId": 1,
"completed": false
] as [String: Any]
do {
let data = try JSONSerialization.data(withJSONObject: dict, options: .prettyPrinted)
let todo = try JSONDecoder().decode(Todo.self, from: data)
print(todo.title)
} catch {
}
50. Before Swift4
struct Todo {
var id: Int?
var title: String
var userId: Int
var completed: Bool
func toJSON() -> [String: Any] {
var json = [String: Any]()
json["title"] = title
json["userId"] = userId
json["completed"] = completed
if let id = id {
json["id"] = id
}
return json
}
}
51. Before Swift4
let urlRequest = URLRequest(url: URL(string: “http://
letswift/api")!)
do {
let jsonTodo = try
JSONSerialization.data(withJSONObject: todo.toJSON(),
options: [])
urlRequest.httpBody = jsonTodo
}
52. Codable
let urlRequest = URLRequest(url: URL(string: “http://
letswift.com/api")!)
let encoder = JSONEncoder()
do {
let todo = Todo(id: nil, title: "Let's Swift 준비",
userId: 1, completed: false)
let json = try encoder.encode(todo)
urlRequest.httpBody = json
} catch {
}
53. Nested, Codable
struct Address: Codable {
let city: String
let zipcode: String
}
struct User: Codable {
let id: Int?
let name: String
let email: String
let address: Address
}
54. Decodable
struct Developer: Decodable {
let id: Int
let fullName: String
let iOS: Bool
}
let json = """
{
"id": 123456,
"fullName": "Kim Younghoo",
"iOS": false
}
""".data(using: .utf8)!
let dev = try JSONDecoder().decode(Developer.self, from:
json)
print(dev)
65. Swift 5.0
Late 2018
Rust-inspired memory ownership model
Syntactic additions
Groundwork for a new concurrency model
• Non-goal for Swift 5
• maybe async/await