SlideShare una empresa de Scribd logo
1 de 133
Descargar para leer sin conexión
Swift
by Ray Fix for iOSDC
Ray Fix
Photo by Renato Sanchez Lozada on Unsplash
iOSDC 

RayWenderlich.com
Ray Ray Wenderlich 😉
REVOLVE
REVOLVE
Swift
Swift Python R
•
• Swift
•
• Swift
•
• Swift
WWDC 2017 — fox2
https://developer.apple.com/videos/play/wwdc2017/604/
WWDC 2017 — fox2
https://developer.apple.com/videos/play/wwdc2017/604/
WWDC 2017 — ARKit
https://developer.apple.com/videos/play/wwdc2017/602/
WWDC 2017 — ARKit
https://developer.apple.com/videos/play/wwdc2017/602/
Fall 2017 — ARFaceAnchor
https://developer.apple.com/documentation/arkit/arfaceanchor?changes=latest_beta
I❤Swift
I❤Swift
https://github.com/rayfix/TypedTransforms
degrees radians
protocol AngleProtocol {
}
associatedtype TT
protocol AngleProtocol {
}
associatedtype T
protocol AngleProtocol {
}
associatedtype Real
protocol AngleProtocol {
}
associatedtype Real : FloatingPoint
AngleProtocol
protocol AngleProtocol {
associatedtype Real: FloatingPoint
init(radians: Real)
var radians: Real { set get }
}
(1)
extension AngleProtocol {
}
(1)
extension AngleProtocol {
}
static func +(lhs: Self, rhs: Self) -> Self {
return Self(radians: lhs.radians + rhs.radians)
}
(1)
extension AngleProtocol {
}
static func +=(lhs: inout Self, rhs: Self) {
lhs = lhs + rhs
}
static func +(lhs: Self, rhs: Self) -> Self {
return Self(radians: lhs.radians + rhs.radians)
}
(2)
extension AngleProtocol {
}
(2)
extension AngleProtocol {
}
static prefix func -(angle: Self) -> Self {
return Self(radians: -angle.radians)
}
(2)
extension AngleProtocol {
}
static prefix func -(angle: Self) -> Self {
return Self(radians: -angle.radians)
}
static func -(lhs: Self, rhs: Self) -> Self {
return lhs+(-rhs)
}
(2)
extension AngleProtocol {
}
static prefix func -(angle: Self) -> Self {
return Self(radians: -angle.radians)
}
static func -(lhs: Self, rhs: Self) -> Self {
return lhs+(-rhs)
}
static func -=(lhs: inout Self, rhs: Self) {
lhs = lhs - rhs
}
(3)
extension AngleProtocol {
}
(3)
extension AngleProtocol {
}
static func *(multiple: Real, angle: Self) -> Self {
return Self(radians: multiple * angle.radians)
}
(3)
extension AngleProtocol {
}
static func *(multiple: Real, angle: Self) -> Self {
return Self(radians: multiple * angle.radians)
}
static func *(angle: Self, multiple: Real) -> Self {
return multiple * angle
}
(3)
extension AngleProtocol {
}
static func *(multiple: Real, angle: Self) -> Self {
return Self(radians: multiple * angle.radians)
}
static func *(angle: Self, multiple: Real) -> Self {
return multiple * angle
}
static func /(angle: Self, divisor: Real) -> Self {
return angle * (1/divisor)
}
extension AngleProtocol: Hashable, Comparable {
} Stepanov, Alexander; McJones, Paul (2009). Elements of Programming. Addison-Wesley. ISBN 978-0-321-63537-2.
extension AngleProtocol: Hashable, Comparable {
}
static func ==(lhs: Self, rhs: Self) -> Bool {
return lhs.radians == rhs.radians
}
Stepanov, Alexander; McJones, Paul (2009). Elements of Programming. Addison-Wesley. ISBN 978-0-321-63537-2.
extension AngleProtocol: Hashable, Comparable {
}
static func ==(lhs: Self, rhs: Self) -> Bool {
return lhs.radians == rhs.radians
}
var hashValue: Int {
return radians.hashValue
}
Stepanov, Alexander; McJones, Paul (2009). Elements of Programming. Addison-Wesley. ISBN 978-0-321-63537-2.
extension AngleProtocol: Hashable, Comparable {
}
static func ==(lhs: Self, rhs: Self) -> Bool {
return lhs.radians == rhs.radians
}
var hashValue: Int {
return radians.hashValue
}
static func <(lhs: Self, rhs: Self) -> Bool {
return lhs.radians < rhs.radians
}
Stepanov, Alexander; McJones, Paul (2009). Elements of Programming. Addison-Wesley. ISBN 978-0-321-63537-2.
protocol AngleDegreesConvertible: AngleProtocol {
init(degrees: Real)
var degrees: Real { set get }
static var radiansToDegrees: Real { get }
}
(1)
extension AngleDegreesConvertible {
var degrees: Real {
get {
return radians * Self.radiansToDegrees
}
}
}
(1)
extension AngleDegreesConvertible {
var degrees: Real {
get {
return radians * Self.radiansToDegrees
}
}
}
radiansToDegrees
(1)
extension AngleDegreesConvertible {
var degrees: Real {
get {
return radians * Self.radiansToDegrees
}
}
}
radiansToDegrees
radiansToDegreesradians
(1)
extension AngleDegreesConvertible {
var degrees: Real {
get {
return radians * Self.radiansToDegrees
}
}
}
radiansToDegrees
radiansToDegrees degrees
(2)
init(degrees: Real) {
self.init(radians: degrees * Self.radiansToDegrees)
}
(2)
init(degrees: Real) {
self.init(radians: degrees * Self.radiansToDegrees)
}
(2)
init(degrees: Real) {
self.init(radians: degrees * Self.radiansToDegrees)
}
Inverse Transform
(2)
init(degrees: Real) {
self.init(radians: degrees * Self.radiansToDegrees)
}
ToDegreesradians
Inverse Transform
(2)
init(degrees: Real) {
self.init(radians: degrees * Self.radiansToDegrees)
}
ToDegrees radians
Inverse Transform
Radiansdegrees
(2)
init(degrees: Real) {
self.init(radians: degrees * Self.radiansToDegrees)
}
(2)
init(degrees: Real) {
self.init(radians: degrees * Self.radiansToDegrees)
}
(2)
init(degrees: Real) {
self.init(radians: degrees * Self.radiansToDegrees)
}
init(degrees: Real) {
let degreesToRadians = 1 / Self.radiansToDegrees
self.init(radians: degrees * degreesToRadians)
}
(2)
init(degrees: Real) {
self.init(radians: degrees * Self.radiansToDegrees)
}
init(degrees: Real) {
let degreesToRadians = 1 / Self.radiansToDegrees
self.init(radians: degrees * degreesToRadians)
}
(2)
init(degrees: Real) {
self.init(radians: degrees * Self.radiansToDegrees)
}
init(degrees: Real) {
let degreesToRadians = 1 / Self.radiansToDegrees
self.init(radians: degrees * degreesToRadians)
}
var degrees: Real {
set(newDegrees) {
let degreesToRadians = 1 / Self.radiansToDegrees
radians = newDegrees * degreesToRadians
}
}
(3)
var degrees: Real {
set(newDegrees) {
let degreesToRadians = 1 / Self.radiansToDegrees
radians = newDegrees * degreesToRadians
}
}
(3)
var degrees: Real {
set(newDegrees) {
let degreesToRadians = 1 / Self.radiansToDegrees
radians = newDegrees * degreesToRadians
}
}
(3)
To
🐶
🐕
🐩 😸
🐈
😽
To
🐶
🐕
🐩 😸
🐈
😽
To
🐶
🐕
🐩😸
🐈
😽
protocol AngleProtocol {
associatedtype Real:
init(radians: Real)
var radians: Real { set get }
}
FloatingPoint
protocol AngleProtocol {
associatedtype Real:
init(radians: Real)
var radians: Real { set get }
}
FloatingPoint
protocol AngleProtocol {
associatedtype Real:
init(radians: Real)
var radians: Real { set get }
}
TrigonometricFloatingPoint
protocol AngleProtocol {
associatedtype Real:
init(radians: Real)
var radians: Real { set get }
}
TrigonometricFloatingPoint
protocol TrigonometricFloatingPoint: FloatingPoint {
static func sine(radians: Self) -> Self
static func cosine(radians: Self) -> Self
}
sin
sin
func sin(_ angle: AngleProtocol) -> ???? {
}
sin
func sin(_ angle: AngleProtocol) -> ???? {
}
sin
func sin<A: AngleProtocol>(_ angle: A) -> A.Real {
return A.Real.sine(radians: angle.radians)
}
func sin(_ angle: AngleProtocol) -> ???? {
}
CGAngle
struct CGAngle: AngleDegreesConvertible {
var radians: CGFloat
static var radiansToDegrees: CGFloat {
return 180/CGFloat.pi
}
}
😍
CGAngle
struct CGAngle: AngleDegreesConvertible {
var radians: CGFloat
static var radiansToDegrees: CGFloat {
return 180/CGFloat.pi
}
}
😍
protocol Point2DProtocol {
associatedtype Scalar: FloatingPoint
init(_ x: Scalar, _ y: Scalar)
var x: Scalar { get set }
var y: Scalar { get set }
}
…
static func +(lhs: Self, rhs: Self) -> Self {
return Self(lhs.x + rhs.x, lhs.y + rhs.y)
}
static prefix func -(p: Self) -> Self {
return Self(-p.x, -p.y)
}
static func -(lhs: Self, rhs: Self) -> Self {
return lhs+(-rhs)
}
extension Point2DProtocol {
}
…
extension Point2DProtocol {
}
var lengthSquared: Scalar {
return self*self
}
var length: Scalar {
return lengthSquared.squareRoot()
}
func projected(on other: Self) -> Self {
return ((self*other)/(other*other))*other
}
🤠
extension CGPoint: Point2DProtocol {
public init(_ x: CGFloat, _ y: CGFloat) {
self.x = x
self.y = y
}
}
💯
let newPoint = transform * point
[ ]a
db
c
[x
y
]=[ax + cy
]bx + dy
let newPoint = transform * point
[ ]a
db
c
1
tx
ty
0 0 [x
y
1 ]=[ax + cy + tx
1 ]bx + dy + ty
CGAffineTransform
CGAffineTransform
Think Different
CGAffineTransform
Think Different
][ax + cy + tx 1bx + dy + ty
[ ]a
d
b
c
1tx ty
0
0
[x y 1
]=
let newPoint = transform * point
][ax + cy + tx 1bx + dy + ty
[ ]a
d
b
c
1tx ty
0
0
[x y 1
]=
let newPoint = transform * point
][ax + cy + tx 1bx + dy + ty
[ ]a
d
b
c
1tx ty
0
0
[x y 1
]=
let newPoint = transform * point
let newPoint = point * transform
][ax + cy + tx 1bx + dy + ty
[ ]a
d
b
c
1tx ty
0
0
[x y 1
]=
A
C
(0, 0)
A
C
(7, 7)
xa = (7, 7)
(0, 0)
A
C
(7, 7)
yc = xa * aToC
xa = (7, 7)
(0, 0)
A
C
(7, 7)
(1,0)
yc = xa * aToC
xa = (7, 7)
yc == (1, 0)
(0, 0)
A
C
(7, 7)
(1,0)
yc = xa * aToC
xa = (7, 7)
yc == (1, 0)
yc * aToC
(0, 0)
A
C
(7, 7)
(1,0)
yc = xa * aToC
xa = (7, 7)
yc == (1, 0)
yc * aToC
(0, 0)
A
A
B
A
C
A
C
aToB * bToC
A
C
aToB * bToC
aToC
=
[ ]1
10
0
1
0
0
tx ty [ ]sx
sy0
0
1
0
0
0 0 [ ]
cos a
cos a-sin a
sin a
1
0
0
0 0
translation scale rotation
[ ]1
10
0
1
0
0
0 0
identity
[ ]-1
10
0
1
0
0
0 0
horizontal flip
[ ]1
-10
0
1
0
0
0 0
vertical flip
ctm
[ ]2
-20
0
1
0
0
0 1096
userToDevice
CGAffineTransform
extension CGAffineTransform {
static func *(point: CGPoint, transform: CGAffineTransform)
-> CGPoint
{
return point.applying(transform)
}
static func *(lhs: CGAffineTransform, rhs: CGAffineTransform)
-> CGAffineTransform
{
return lhs.concatenating(rhs)
}
}
modelToDevice = modelToUser * userToDevice
devicePoint = userPoint * userToDevice
2
let house: [CGPoint] = [CGPoint(1,-1),
CGPoint(1,1),
CGPoint(0,2),
CGPoint(-1,1),
CGPoint(-1,-1)]
2
let house: [CGPoint] = [CGPoint(1,-1),
CGPoint(1,1),
CGPoint(0,2),
CGPoint(-1,1),
CGPoint(-1,-1)]
context.saveGState()
defer {
context.restoreGState()
}
let userToDevice = context.ctm
context.concatenate(userToDevice.inverted())
2
let modelToUser =
CGAffineTransform(scaleX: 1, y: -1) *
CGAffineTransform(scaleX: 100, y: 100) *
CGAffineTransform(translationX: bounds.width/2,
y: bounds.height/2)
2
let modelToUser =
CGAffineTransform(scaleX: 1, y: -1) *
CGAffineTransform(scaleX: 100, y: 100) *
CGAffineTransform(translationX: bounds.width/2,
y: bounds.height/2)
let modelToDevice = modelToUser * userToDevice
context.concatenate(modelToDevice)
2
context.move(to: house.first!)
house.dropFirst().forEach { context.addLine(to: $0)}
context.closePath()
context.strokePath()
protocol CoordinateSpace {}
enum ModelSpace: CoordinateSpace {}
enum UserSpace: CoordinateSpace {}
enum DeviceSpace: CoordinateSpace {}
struct CGPointT<Space: CoordinateSpace>: Point2DProtocol {
var xy: CGPoint
:
}
let house: [CGPointT<ModelSpace>] = [CGPointT(1,-1),
CGPointT(1,1),
CGPointT(0,2),
CGPointT(-1,1),
CGPointT(-1,-1)]
struct CGAffineTransformT<From: CoordinateSpace,
To: CoordinateSpace>
{
var matrix: CGAffineTransform
public func inverted() -> CGAffineTransformT<To,From> {
return CGAffineTransformT<To,From>(matrix.inverted())
}
}
struct CGAffineTransformT<From: CoordinateSpace,
To: CoordinateSpace>
{
var matrix: CGAffineTransform
public func inverted() -> CGAffineTransformT<To,From> {
return CGAffineTransformT<To,From>(matrix.inverted())
}
}
public func * <From,To,I>(from: CGAffineTransformT<From, I>,
to: CGAffineTransformT<I, To>) ->
CGAffineTransformT<From, To>
{
return CGAffineTransformT<From,To>
(from.matrix.concatenating(to.matrix))
}
To
🐶
🐕
🐩 😸
🐈
😽
To
🐶
🐕
🐩 😸
🐈
😽
To
😸
🐈
😽
To
😸
🐈
😽
ARKit 3
SIMD
[ ]matrix_float4x4
[ ]float4
post multiply To
[ ]float4
ARKit 3
From
worldFromCameralet worldPoint = * cameraPoint
float4_t
struct float4_t<Space: CoordinateSpace> {
var point: float4
init(_ point: float4) {
self.point = point
}
}
matrix_float4x4_t
struct matrix_float4x4_t<To: CoordinateSpace,
From: CoordinateSpace> {
var matrix: matrix_float4x4
init(_ matrix: matrix_float4x4) {
self.matrix = matrix
}
}
extension matrix_float4x4_t {
static func *<To, From>(lhs: matrix_float4x4_t<To, From>,
rhs: float4_t<From>) -> float4_t<To>
{
return float4_t<To>(lhs.matrix * rhs.point)
}
}
transform
transform
transform
cameraFromWorld
worldFromCamera
transform
cameraFromWorld
worldFromCamera
final class TypedTransforms<Base> {
let base: Base
init(_ base: Base) {
self.base = base
}
}
final class TypedTransforms<Base> {
let base: Base
init(_ base: Base) {
self.base = base
}
}
protocol TypedTransformAdditions {
associatedtype Typed
var typed: Typed { get }
}
final class TypedTransforms<Base> {
let base: Base
init(_ base: Base) {
self.base = base
}
}
protocol TypedTransformAdditions {
associatedtype Typed
var typed: Typed { get }
}
extension TypedTransformAdditions {
var typed: TypedTransforms<Self> {
return TypedTransforms(self)
}
}
extension ARCamera: TypedTransformAdditions {}
extension TypedTransforms where Base: ARCamera {
var worldFromCamera: matrix_float4x4_t<WorldSpace,
CameraSpace>
{
return matrix_float4x4_t(base.transform)
}
}
extension ARCamera: TypedTransformAdditions {}
let worldFromCamera =
frame.camera.typed.worldFromCamera
let shotDirectionCamera =
float4_t<CameraSpace>(float4(0, 0, -3, 1))
let shotDirectionWorld = worldFromCamera *
shotDirectionCamera
let direction =
SCNVector3(float4: shotDirectionWorld.point)
let worldFromCamera =
frame.camera.typed.worldFromCamera
let position =
SCNVector3(float4: worldFromCamera.matrix.columns.3)
[ ]
matrix_float4x4
tx
ty
tz
1
0 21 3
let ball = Ball()
ball.position = position
ball.physicsBody?.applyForce(direction,
asImpulse: true)
sceneView.scene.rootNode.addChildNode(ball)
視覚化とSwiftのタイプについて
視覚化とSwiftのタイプについて
視覚化とSwiftのタイプについて

Más contenido relacionado

La actualidad más candente

Делаем пользовательское Api на базе Shapeless
Делаем пользовательское Api на базе ShapelessДелаем пользовательское Api на базе Shapeless
Делаем пользовательское Api на базе Shapeless
Вадим Челышов
 

La actualidad más candente (20)

Apache PIG - User Defined Functions
Apache PIG - User Defined FunctionsApache PIG - User Defined Functions
Apache PIG - User Defined Functions
 
Делаем пользовательское Api на базе Shapeless
Делаем пользовательское Api на базе ShapelessДелаем пользовательское Api на базе Shapeless
Делаем пользовательское Api на базе Shapeless
 
Intro to Pig UDF
Intro to Pig UDFIntro to Pig UDF
Intro to Pig UDF
 
openCypher Technology Compatibility Kit (TCK)
openCypher Technology Compatibility Kit (TCK)openCypher Technology Compatibility Kit (TCK)
openCypher Technology Compatibility Kit (TCK)
 
Compositional I/O Stream in Scala
Compositional I/O Stream in ScalaCompositional I/O Stream in Scala
Compositional I/O Stream in Scala
 
The Ring programming language version 1.5.4 book - Part 77 of 185
The Ring programming language version 1.5.4 book - Part 77 of 185The Ring programming language version 1.5.4 book - Part 77 of 185
The Ring programming language version 1.5.4 book - Part 77 of 185
 
F(3)
F(3)F(3)
F(3)
 
Lecture 5, c++(complete reference,herbet sheidt)chapter-15
Lecture 5, c++(complete reference,herbet sheidt)chapter-15Lecture 5, c++(complete reference,herbet sheidt)chapter-15
Lecture 5, c++(complete reference,herbet sheidt)chapter-15
 
FS2 for Fun and Profit
FS2 for Fun and ProfitFS2 for Fun and Profit
FS2 for Fun and Profit
 
The Ring programming language version 1.9 book - Part 90 of 210
The Ring programming language version 1.9 book - Part 90 of 210The Ring programming language version 1.9 book - Part 90 of 210
The Ring programming language version 1.9 book - Part 90 of 210
 
operator overloading
operator overloadingoperator overloading
operator overloading
 
Higher Order Components and Render Props
Higher Order Components and Render PropsHigher Order Components and Render Props
Higher Order Components and Render Props
 
Command line arguments
Command line argumentsCommand line arguments
Command line arguments
 
Rcpp11 genentech
Rcpp11 genentechRcpp11 genentech
Rcpp11 genentech
 
Mca 2nd sem u-4 operator overloading
Mca 2nd  sem u-4 operator overloadingMca 2nd  sem u-4 operator overloading
Mca 2nd sem u-4 operator overloading
 
Scala @ TomTom
Scala @ TomTomScala @ TomTom
Scala @ TomTom
 
Variadic functions
Variadic functionsVariadic functions
Variadic functions
 
The Ring programming language version 1.5.1 book - Part 20 of 180
The Ring programming language version 1.5.1 book - Part 20 of 180The Ring programming language version 1.5.1 book - Part 20 of 180
The Ring programming language version 1.5.1 book - Part 20 of 180
 
Functional Stream Processing with Scalaz-Stream
Functional Stream Processing with Scalaz-StreamFunctional Stream Processing with Scalaz-Stream
Functional Stream Processing with Scalaz-Stream
 
The Ring programming language version 1.5.2 book - Part 21 of 181
The Ring programming language version 1.5.2 book - Part 21 of 181The Ring programming language version 1.5.2 book - Part 21 of 181
The Ring programming language version 1.5.2 book - Part 21 of 181
 

Similar a 視覚化とSwiftのタイプについて

Lecture 5: Functional Programming
Lecture 5: Functional ProgrammingLecture 5: Functional Programming
Lecture 5: Functional Programming
Eelco Visser
 
Rcpp: Seemless R and C++
Rcpp: Seemless R and C++Rcpp: Seemless R and C++
Rcpp: Seemless R and C++
Romain Francois
 
Rcpp: Seemless R and C++
Rcpp: Seemless R and C++Rcpp: Seemless R and C++
Rcpp: Seemless R and C++
Romain Francois
 
Apache Spark for Library Developers with William Benton and Erik Erlandson
 Apache Spark for Library Developers with William Benton and Erik Erlandson Apache Spark for Library Developers with William Benton and Erik Erlandson
Apache Spark for Library Developers with William Benton and Erik Erlandson
Databricks
 
Ti1220 Lecture 2: Names, Bindings, and Scopes
Ti1220 Lecture 2: Names, Bindings, and ScopesTi1220 Lecture 2: Names, Bindings, and Scopes
Ti1220 Lecture 2: Names, Bindings, and Scopes
Eelco Visser
 
Extend R with Rcpp!!!
Extend R with Rcpp!!!Extend R with Rcpp!!!
Extend R with Rcpp!!!
mickey24
 

Similar a 視覚化とSwiftのタイプについて (20)

Graphics Programming for Web Developers
Graphics Programming for Web DevelopersGraphics Programming for Web Developers
Graphics Programming for Web Developers
 
[Codemotion 2015] patrones de diseño con java8
[Codemotion 2015] patrones de diseño con java8[Codemotion 2015] patrones de diseño con java8
[Codemotion 2015] patrones de diseño con java8
 
Дмитрий Верескун «Синтаксический сахар C#»
Дмитрий Верескун «Синтаксический сахар C#»Дмитрий Верескун «Синтаксический сахар C#»
Дмитрий Верескун «Синтаксический сахар C#»
 
Swift for tensorflow
Swift for tensorflowSwift for tensorflow
Swift for tensorflow
 
Lecture 5: Functional Programming
Lecture 5: Functional ProgrammingLecture 5: Functional Programming
Lecture 5: Functional Programming
 
Rcpp: Seemless R and C++
Rcpp: Seemless R and C++Rcpp: Seemless R and C++
Rcpp: Seemless R and C++
 
R and C++
R and C++R and C++
R and C++
 
Functional Programming In Java
Functional Programming In JavaFunctional Programming In Java
Functional Programming In Java
 
Creating Custom Charts With Ruby Vector Graphics
Creating Custom Charts With Ruby Vector GraphicsCreating Custom Charts With Ruby Vector Graphics
Creating Custom Charts With Ruby Vector Graphics
 
Rcpp: Seemless R and C++
Rcpp: Seemless R and C++Rcpp: Seemless R and C++
Rcpp: Seemless R and C++
 
Apache Spark for Library Developers with William Benton and Erik Erlandson
 Apache Spark for Library Developers with William Benton and Erik Erlandson Apache Spark for Library Developers with William Benton and Erik Erlandson
Apache Spark for Library Developers with William Benton and Erik Erlandson
 
Ti1220 Lecture 2: Names, Bindings, and Scopes
Ti1220 Lecture 2: Names, Bindings, and ScopesTi1220 Lecture 2: Names, Bindings, and Scopes
Ti1220 Lecture 2: Names, Bindings, and Scopes
 
Ray: A Cluster Computing Engine for Reinforcement Learning Applications with ...
Ray: A Cluster Computing Engine for Reinforcement Learning Applications with ...Ray: A Cluster Computing Engine for Reinforcement Learning Applications with ...
Ray: A Cluster Computing Engine for Reinforcement Learning Applications with ...
 
Compose Async with RxJS
Compose Async with RxJSCompose Async with RxJS
Compose Async with RxJS
 
Functional object
Functional objectFunctional object
Functional object
 
Extend R with Rcpp!!!
Extend R with Rcpp!!!Extend R with Rcpp!!!
Extend R with Rcpp!!!
 
Scala @ TechMeetup Edinburgh
Scala @ TechMeetup EdinburghScala @ TechMeetup Edinburgh
Scala @ TechMeetup Edinburgh
 
Zero to Streaming: Spark and Cassandra
Zero to Streaming: Spark and CassandraZero to Streaming: Spark and Cassandra
Zero to Streaming: Spark and Cassandra
 
User Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love StoryUser Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love Story
 
User Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love StoryUser Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love Story
 

Último

%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
masabamasaba
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
masabamasaba
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
masabamasaba
 

Último (20)

Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT  - Elevating Productivity in Today's Agile EnvironmentHarnessing ChatGPT  - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 

視覚化とSwiftのタイプについて