SlideShare une entreprise Scribd logo
B 
 
DSL

G VM










M 
M
@mthmuldersOGB
APAC
Virtual
Tour
D 
S 
L
https://pxhere.com/en/photo/1057524
@mthmuldersOGB
APAC
Virtual
Tour
SELECT


country,










COUNT(1)
AS
count

FROM




Customer

GROUP
BY
country;

@mthmuldersOGB
APAC
Virtual
Tour
Given
my
account
has
a
balance
of
€
430

When
I
receive
a
money
transfer
of
€
500

Then
my
account
should
have
a
balance
of
€
930

@mthmuldersOGB
APAC
Virtual
Tour
Setup(





Boat
on
StartingShore,





Wolf
on
StartingShore,





Sheep
on
StartingShore,





Cabbage
on
StartingShore

)
execute
(





Boat
move
Cabbage
to
StartingShore,





Boat
move
Sheep
to
DestinationShore,





Boat
move
None
to
StartingShore,





Boat
move
Cabbage
to
DestinationShore,





Boat
move
Sheep
to
StartingShore,





Boat
move
Wolf
to
DestinationShore,





Boat
move
None
to
StartingShore,





Boat
move
Sheep
to
DestinationShore

)

https://github.com/NRBPerdijk/dsl-for-the-dense/
@mthmuldersOGB
APAC
Virtual
Tour
+
+
>
+
+
+
+
+
[
<
+
>
-
]
+
+
+
+
+
+
+
+
[
<
+
+
+
+
+
+
>
-
]
<
.

@mthmuldersOGB
APAC
Virtual
Tour
B
This
program
adds
the
numbers
2
and
5



+
+















Store
the
number
2
in
the
f rst
slot

>
+
+
+
+
+







Store
the
number
5
in
the
second
slot



[

















Move
back
and
forth
between
f rst
and
second
slot







<
+
>
-







While
"moving"
ones
from
the
second
to
the
f rst
slot

]



The
f rst
slot
now
has
'7'
in
it
but
we
need
to
output
the
ASCII
value
for
that

The
ASCII
value
is
48
higher
than
the
number
we
have



The
second
slot
is
now
empty

It
will
act
as
a
counter
so
we
can
add
6
*
8
to
the
f rst
slot

+
+
+
+
+
+
+
+



Store
8
in
it



[

















Again
move
back
and
forth
between
f rst
and
second
slot





<
+
+
+
+
+
+

while
adding
6
to
the
f rst
slot





>
-











before
reducing
the
counter
in
the
second
slot

]



<
.















Go
back
to
the
f rst
slot
and
print
it

@mthmuldersOGB
APAC
Virtual
Tour
0 1 2 3 4 ... 29
997 29
998 29
999
2 5 3 0 0 0 0 0
↑
@mthmuldersOGB
APAC
Virtual
Tour
command meaning
+ increase
value
­ decrease
value
. print
value
to
std
out
, read
one
byte
from
std
in
[ if
value
eq
0,
jump
after
matching
]
] if
value
neq
0,
jump
after
matching
[
< move
pointer
left
> move
pointer
right
@mthmuldersOGB
APAC
Virtual
Tour
https://www.thepinkhumanist.com/articles/330-life-of-alan-turing-examined-in-a-new-graphic-novel
@mthmuldersOGB
APAC
Virtual
Tour
https://commons.wikimedia.org/wiki/File:USA_tar_bubble_la_brea_CA.jpg
@mthmuldersOGB
APAC
Virtual
Tour
G VM
“One
VM
to
rule
them
all
cc-by-sa/2.0
-
©
Lairich
Rig
-
https://www.geograph.org.uk/photo/3203827
@mthmuldersOGB
APAC
Virtual
Tour
@mthmuldersOGB
APAC
Virtual
Tour
B
yapi.bf
calculating
15
digits
of
π
Runtime Average
time
(ms/op) Error
Java
HotSpot(TM)
64-Bit
Server
VM 53 ±
1
OpenJDK
GraalVM
CE
19.0.0 45 ±
1
All
tests
are
ran
on
an
2018
MacBook
Pro
with
2.6
GHz
Intel
Core
i7
and
16
GB
2400
MHz
DDR4.
The
machine
runs
macOS
Mojave
10.14.4
and
JDK
1.8.0_212.
Tests
measured
with
 .
Each
test
ran
5
times
with
5
warmup
iterations.jmh
@mthmuldersOGB
APAC
Virtual
Tour
B
yapi.bf
calculating
45
digits
of
π
Runtime Average
time
(ms/op) Error
Java
HotSpot(TM)
64-Bit
Server
VM 207 ±
2
OpenJDK
GraalVM
CE
19.0.0 185 ±
3
All
tests
are
ran
on
an
2018
MacBook
Pro
with
2.6
GHz
Intel
Core
i7
and
16
GB
2400
MHz
DDR4.
The
machine
runs
macOS
Mojave
10.14.4
and
JDK
1.8.0_212.
Tests
measured
with
 .
Each
test
ran
5
times
with
5
warmup
iterations.jmh
@mthmuldersOGB
APAC
Virtual
Tour
T
cc-by-sa/2.5
-
©
Darvin
DeShazer
-
https://mushroomobserver.org/2538
“open
source
library
for
building
programming
language
implementations
as
interpreters
for
self-modifying
Abstract
Syntax
Trees.
@mthmuldersOGB
APAC
Virtual
Tour
A 
S 
T
ROOT
INCR_VAL INCR_VAL INCR_VAL INCR_VAL INCR_VAL JUMP INCR_VAL INCR_VAL
DECR_PTR INCR_VAL INCR_PTR DECR_VAL
(part
of
the
program
that
adds
5
and
2)
@mthmuldersOGB
APAC
Virtual
Tour
https://chrisseaton.com/rubytruffle/pldi17-truffle/pldi17-truffle.pdf
@mthmuldersOGB
APAC
Virtual
Tour
P 
E
Calculate
 
for
positive
integers
If
we
know
(or
assume)
that
 ,
the
program
becomes
simpler:
x
n
f (x, n) =
⎧
⎩
⎨
⎪
⎪
1
,(f (x, 0.5 ∗ n))
2
x ∗ f (x, n − 1),
if n = 0
if n is
even
otherwise
n = 5
f (x) = x ∗ ( )x
2
2
@mthmuldersOGB
APAC
Virtual
Tour
N 
 
POJO
public
class
BFIncrementByteNode
extends
Node
{





/**
The
slot
that
holds
the
data
pointer.
 





private
f nal
FrameSlot
dataPointerSlot;







public
BFIncrementByteNode(f nal
FrameSlot
dataPointerSlot)
{









this.dataPointerSlot
=
dataPointerSlot;





}







@Override
public
void
execute(f nal
VirtualFrame
frame)
{









 
Find
the
memory
location









f nal
int
dataPointer
=
FrameUtil.getIntSafe(frame,
dataPointerSlot);









f nal
FrameSlot
currentByteSlot
=
frame.getFrameDescriptor().f ndFrameSlot(dataPointer);











 
Find
the
current
value
in
that
location









f nal
byte
currentValue
=
FrameUtil.getByteSafe(frame,
currentByteSlot);











 
Increase
the
current
value









f nal
byte
newValue
=
(byte)
(1
+
currentValue);











 
Store
the
current
value









frame.setByte(getSlot(frame),
newValue);





}

}

@mthmuldersOGB
APAC
Virtual
Tour
B
https://pxhere.com/en/photo/493605
@mthmuldersOGB
APAC
Virtual
Tour
B
@Override

public
void
execute(f nal
VirtualFrame
frame)
{





f nal
int
currentValue
=
someCalculation();





doPrint(getContext().getOutput(),
(char)
currentValue);

}



@TruffleBoundary

private
void
doPrint(f nal
PrintWriter
out,
f nal
char
value)
{





out.print(value);





out.flush();

}

@mthmuldersOGB
APAC
Virtual
Tour
S
https://www.mammoet.com/cases/Tennet/
@mthmuldersOGB
APAC
Virtual
Tour
S
@Specialization(guards
=
"b
 
0")

public
double
divide(int
a,
int
b)
{





return
a
/
b;

}

@mthmuldersOGB
APAC
Virtual
Tour
S
@Specialization(rewriteOn
=
ArithmeticException.class)

int
doAddNoOverflow(int
a,
int
b)
{





return
Math.addExact(a,
b);

}



@Specialization

long
doAddWithOverflow(int
a,
int
b)
{





return
a
+
b;

}

execute(Integer.MAX_VALUE
-
1,
1)
 
doAddNoOverflow(Integer.MAX_VALUE
-
1,
1)



execute(Integer.MAX_VALUE



,
1)
 
doAddNoOverflow(Integer.MAX_VALUE,
1)






































throws
ArithmeticException



































 
doAddWithOverflow(Integer.MAX_VALUE,
1)



execute(Integer.MAX_VALUE
-
1,
1)
 
doAddWithOverflow(Integer.MAX_VALUE
-
1,
1)

@mthmuldersOGB
APAC
Virtual
Tour
W 
 
G VM
 
 
 
 
JVM
function
abs
(int
i)






if
(
 
we
saw
only
positive
integers
in
the
input
 
)
{









return
i;





}
else
{










transferToInterpreterAndInvalidate;









return
i
<
0
?
 i
:
i;





}

}

@mthmuldersOGB
APAC
Virtual
Tour
B 
 
 
 
T
@mthmuldersOGB
APAC
Virtual
Tour
@mthmuldersOGB
APAC
Virtual
Tour
L
Converts
a
sequence
of
characters
into
a
sequence
of
tokens.








@mthmuldersOGB
APAC
Virtual
Tour
P
Converts
a
sequence
of
tokens
into
(hierarchical)
data
structure.








@mthmuldersOGB
APAC
Virtual
Tour
P 
 
L 

1.
Write
some
regular
expressions
2.
Use
a
parser
generator
(like
 )ANTLR
cc-by-nc/2.5
-
©
Randall
Munroe
-
https://www.xkcd.com/1171/
@mthmuldersOGB
APAC
Virtual
Tour
I 
 

@mthmuldersOGB
APAC
Virtual
Tour
G VM
U
GraalVM
comes
with
the
GraalVM
Updater
(gu)
Use
gu
to
install
components,
such
as
language
packs
or
tools.
e.g.
gu
install
native­image
gu
-L
install
brainfuck-0.1-SNAPSHOT-component.jar

@mthmuldersOGB
APAC
Virtual
Tour
C
Distribute
your
language
implementation
as
a
component:
$
tree

.

├──
META-INF

│


├──
MANIFEST.MF

│


├──
permissions

│


└──
symlinks

└──
jre





└──
languages









└──
bf













├──
bin













│


└──
bf













├──
brainfuck.jar













└──
launcher

















└──
bf launcher.jar



6
directories,
6
f les

@mthmuldersOGB
APAC
Virtual
Tour
U 
 
 

1.
Prepare
source
code
2.
Prepare
GraalVM
polyglot
context
3.
Evaluate
the
source
code
input
=
"+
+
>
+
+
+
+
+
[
<
+
>
-
]
+
+
+
+
+
+
+
+
[
<
+
+
+
+
+
+
>
-
]
<
.";

source
=
Source.newBuilder("bf",
input,
"user
input").build();

output
=
new
ByteArrayOutputStream();

context
=
Context.newBuilder("bf").out(output).build();

context.eval(source);

System.out.println(output.toString());

@mthmuldersOGB
APAC
Virtual
Tour
T
“Implementing
your
own
language
using
GraalVM
will
not
only
give
you
high
performance.
More
importantly,
it
allows
your
language
to
connect
with
the
rich
tooling
provided
by
the
GraalVM
ecosystem.
https://www.graalvm.org/docs/graalvm-as-a-platform/
https://pxhere.com/en/photo/1067853
@mthmuldersOGB
APAC
Virtual
Tour
G 
L 
D
Start
the
launcher
with
­­inspect
Debugger
listening
on
port
9229.

To
start
debugging,
open
the
following
URL
in
Chrome:





chrome­devtools://devtools/bundled/js_app.html?ws=127.0.0.1:9229/77b52d12­53f20cb0ab35

@mthmuldersOGB
APAC
Virtual
Tour
@mthmuldersOGB
APAC
Virtual
Tour
G 
L 
C 

Start
the
launcher
with
­­coverage,
and
optionally


­­coverage.Output=detailed

­­coverage.OutputFile=coverage.txt


Code
coverage
histogram.



Shows
what
percent
of
each
element
was
covered
during
execution




Path






















































|

Statements
|



Lines
|



Roots





~/Code/brainfuck jvm/launcher/src/test/resources/sample.bf
|




100.00%
|

100.00%
|



0.00%




@mthmuldersOGB
APAC
Virtual
Tour
W 
 
 

The
Truffle
framework
has
an
Instrument
API
to
write
other
tools:
1.
Source
code-related
events
2.
Allocation
events
3.
Language
runtime
and
thread
creation
events
4.
Application
execution
events
@mthmuldersOGB
APAC
Virtual
Tour
W 

Yes,
you
can
run
any
language
with
GraalVM.

...
but
it
may
take
some
time.
It's
certainly
fun

...
and
it
might
even
be
profitable.
@mthmuldersOGB
APAC
Virtual
Tour
T 

You
don't
need
to
write
a
parser
yourself

(and
maybe
you
don't
want
to,
either)
Take
time
to
think
about
the
AST
using
a
wrong
structure
leads
to
hard-to-track
bugs
refactoring
it
later
is
very
hard
and
time-consuming
@mthmuldersOGB
APAC
Virtual
Tour
Q
 
A








Sample
code:

Follow-up
project:

http://bit.ly/brainfuck-jvm
https://bit.ly/scheme4graalvm
@mthmuldersOGB
APAC
Virtual
Tour

Contenu connexe

Plus de Maarten Mulders

React in 40 minutes (JCON)
React in 40 minutes (JCON) React in 40 minutes (JCON)
React in 40 minutes (JCON)
Maarten Mulders
 
React in 50 minutes (Bucharest Software Craftsmanship Community)
React in 50 minutes (Bucharest Software Craftsmanship Community)React in 50 minutes (Bucharest Software Craftsmanship Community)
React in 50 minutes (Bucharest Software Craftsmanship Community)
Maarten Mulders
 
React in 50 Minutes (JNation)
 React in 50 Minutes (JNation)  React in 50 Minutes (JNation)
React in 50 Minutes (JNation)
Maarten Mulders
 
SSL/TLS for Mortals (JavaLand)
SSL/TLS for Mortals (JavaLand) SSL/TLS for Mortals (JavaLand)
SSL/TLS for Mortals (JavaLand)
Maarten Mulders
 
Making Maven Marvellous (J-Fall)
Making Maven Marvellous (J-Fall)Making Maven Marvellous (J-Fall)
Making Maven Marvellous (J-Fall)
Maarten Mulders
 
SSL/TLS for Mortals (Oracle Groundbreaker EMEA Virtual Tour)
SSL/TLS for Mortals (Oracle Groundbreaker EMEA Virtual Tour)SSL/TLS for Mortals (Oracle Groundbreaker EMEA Virtual Tour)
SSL/TLS for Mortals (Oracle Groundbreaker EMEA Virtual Tour)
Maarten Mulders
 
SSL/TLS for Mortals (UtrechtJUG)
SSL/TLS for Mortals (UtrechtJUG)SSL/TLS for Mortals (UtrechtJUG)
SSL/TLS for Mortals (UtrechtJUG)
Maarten Mulders
 
Building a DSL with GraalVM (javaBin online)
Building a DSL with GraalVM (javaBin online)Building a DSL with GraalVM (javaBin online)
Building a DSL with GraalVM (javaBin online)
Maarten Mulders
 
SSL/TLS for Mortals (Lockdown Lecture)
SSL/TLS for Mortals (Lockdown Lecture)SSL/TLS for Mortals (Lockdown Lecture)
SSL/TLS for Mortals (Lockdown Lecture)
Maarten Mulders
 
React in 50 Minutes (OpenValue)
React in 50 Minutes (OpenValue) React in 50 Minutes (OpenValue)
React in 50 Minutes (OpenValue)
Maarten Mulders
 
React in 50 Minutes (DevNexus)
React in 50 Minutes (DevNexus) React in 50 Minutes (DevNexus)
React in 50 Minutes (DevNexus)
Maarten Mulders
 
React in 45 Minutes (Jfokus)
React in 45 Minutes (Jfokus)React in 45 Minutes (Jfokus)
React in 45 Minutes (Jfokus)
Maarten Mulders
 
Building web applications with React (Jfokus)
Building web applications with React (Jfokus)Building web applications with React (Jfokus)
Building web applications with React (Jfokus)
Maarten Mulders
 
SSL/TLS for Mortals (Devoxx)
 SSL/TLS for Mortals (Devoxx) SSL/TLS for Mortals (Devoxx)
SSL/TLS for Mortals (Devoxx)
Maarten Mulders
 
Building a DSL with GraalVM (CodeOne)
Building a DSL with GraalVM (CodeOne)Building a DSL with GraalVM (CodeOne)
Building a DSL with GraalVM (CodeOne)
Maarten Mulders
 
Building a DSL with GraalVM (Full Stack Antwerpen)
Building a DSL with GraalVM (Full Stack Antwerpen)Building a DSL with GraalVM (Full Stack Antwerpen)
Building a DSL with GraalVM (Full Stack Antwerpen)
Maarten Mulders
 
Building a DSL with GraalVM (Devoxx PL)
Building a DSL with GraalVM (Devoxx PL) Building a DSL with GraalVM (Devoxx PL)
Building a DSL with GraalVM (Devoxx PL)
Maarten Mulders
 
Building a DSL with GraalVM (VoxxedDays Luxembourg)
Building a DSL with GraalVM (VoxxedDays Luxembourg)Building a DSL with GraalVM (VoxxedDays Luxembourg)
Building a DSL with GraalVM (VoxxedDays Luxembourg)
Maarten Mulders
 
Mastering Microservices with Kong (DevoxxUK 2019)
Mastering Microservices with Kong (DevoxxUK 2019)Mastering Microservices with Kong (DevoxxUK 2019)
Mastering Microservices with Kong (DevoxxUK 2019)
Maarten Mulders
 
Mastering Microservices with Kong (CodeMotion 2019)
Mastering Microservices with Kong (CodeMotion 2019)Mastering Microservices with Kong (CodeMotion 2019)
Mastering Microservices with Kong (CodeMotion 2019)
Maarten Mulders
 

Plus de Maarten Mulders (20)

React in 40 minutes (JCON)
React in 40 minutes (JCON) React in 40 minutes (JCON)
React in 40 minutes (JCON)
 
React in 50 minutes (Bucharest Software Craftsmanship Community)
React in 50 minutes (Bucharest Software Craftsmanship Community)React in 50 minutes (Bucharest Software Craftsmanship Community)
React in 50 minutes (Bucharest Software Craftsmanship Community)
 
React in 50 Minutes (JNation)
 React in 50 Minutes (JNation)  React in 50 Minutes (JNation)
React in 50 Minutes (JNation)
 
SSL/TLS for Mortals (JavaLand)
SSL/TLS for Mortals (JavaLand) SSL/TLS for Mortals (JavaLand)
SSL/TLS for Mortals (JavaLand)
 
Making Maven Marvellous (J-Fall)
Making Maven Marvellous (J-Fall)Making Maven Marvellous (J-Fall)
Making Maven Marvellous (J-Fall)
 
SSL/TLS for Mortals (Oracle Groundbreaker EMEA Virtual Tour)
SSL/TLS for Mortals (Oracle Groundbreaker EMEA Virtual Tour)SSL/TLS for Mortals (Oracle Groundbreaker EMEA Virtual Tour)
SSL/TLS for Mortals (Oracle Groundbreaker EMEA Virtual Tour)
 
SSL/TLS for Mortals (UtrechtJUG)
SSL/TLS for Mortals (UtrechtJUG)SSL/TLS for Mortals (UtrechtJUG)
SSL/TLS for Mortals (UtrechtJUG)
 
Building a DSL with GraalVM (javaBin online)
Building a DSL with GraalVM (javaBin online)Building a DSL with GraalVM (javaBin online)
Building a DSL with GraalVM (javaBin online)
 
SSL/TLS for Mortals (Lockdown Lecture)
SSL/TLS for Mortals (Lockdown Lecture)SSL/TLS for Mortals (Lockdown Lecture)
SSL/TLS for Mortals (Lockdown Lecture)
 
React in 50 Minutes (OpenValue)
React in 50 Minutes (OpenValue) React in 50 Minutes (OpenValue)
React in 50 Minutes (OpenValue)
 
React in 50 Minutes (DevNexus)
React in 50 Minutes (DevNexus) React in 50 Minutes (DevNexus)
React in 50 Minutes (DevNexus)
 
React in 45 Minutes (Jfokus)
React in 45 Minutes (Jfokus)React in 45 Minutes (Jfokus)
React in 45 Minutes (Jfokus)
 
Building web applications with React (Jfokus)
Building web applications with React (Jfokus)Building web applications with React (Jfokus)
Building web applications with React (Jfokus)
 
SSL/TLS for Mortals (Devoxx)
 SSL/TLS for Mortals (Devoxx) SSL/TLS for Mortals (Devoxx)
SSL/TLS for Mortals (Devoxx)
 
Building a DSL with GraalVM (CodeOne)
Building a DSL with GraalVM (CodeOne)Building a DSL with GraalVM (CodeOne)
Building a DSL with GraalVM (CodeOne)
 
Building a DSL with GraalVM (Full Stack Antwerpen)
Building a DSL with GraalVM (Full Stack Antwerpen)Building a DSL with GraalVM (Full Stack Antwerpen)
Building a DSL with GraalVM (Full Stack Antwerpen)
 
Building a DSL with GraalVM (Devoxx PL)
Building a DSL with GraalVM (Devoxx PL) Building a DSL with GraalVM (Devoxx PL)
Building a DSL with GraalVM (Devoxx PL)
 
Building a DSL with GraalVM (VoxxedDays Luxembourg)
Building a DSL with GraalVM (VoxxedDays Luxembourg)Building a DSL with GraalVM (VoxxedDays Luxembourg)
Building a DSL with GraalVM (VoxxedDays Luxembourg)
 
Mastering Microservices with Kong (DevoxxUK 2019)
Mastering Microservices with Kong (DevoxxUK 2019)Mastering Microservices with Kong (DevoxxUK 2019)
Mastering Microservices with Kong (DevoxxUK 2019)
 
Mastering Microservices with Kong (CodeMotion 2019)
Mastering Microservices with Kong (CodeMotion 2019)Mastering Microservices with Kong (CodeMotion 2019)
Mastering Microservices with Kong (CodeMotion 2019)
 

Dernier

ppt on the brain chip neuralink.pptx
ppt  on   the brain  chip neuralink.pptxppt  on   the brain  chip neuralink.pptx
ppt on the brain chip neuralink.pptx
Reetu63
 
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
safelyiotech
 
Kubernetes at Scale: Going Multi-Cluster with Istio
Kubernetes at Scale:  Going Multi-Cluster  with IstioKubernetes at Scale:  Going Multi-Cluster  with Istio
Kubernetes at Scale: Going Multi-Cluster with Istio
Severalnines
 
Superpower Your Apache Kafka Applications Development with Complementary Open...
Superpower Your Apache Kafka Applications Development with Complementary Open...Superpower Your Apache Kafka Applications Development with Complementary Open...
Superpower Your Apache Kafka Applications Development with Complementary Open...
Paul Brebner
 
42 Ways to Generate Real Estate Leads - Sellxpert
42 Ways to Generate Real Estate Leads - Sellxpert42 Ways to Generate Real Estate Leads - Sellxpert
42 Ways to Generate Real Estate Leads - Sellxpert
vaishalijagtap12
 
ACE - Team 24 Wrapup event at ahmedabad.
ACE - Team 24 Wrapup event at ahmedabad.ACE - Team 24 Wrapup event at ahmedabad.
ACE - Team 24 Wrapup event at ahmedabad.
Maitrey Patel
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
Grant Fritchey
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
美洲杯赔率投注网【​网址​🎉3977·EE​🎉】
美洲杯赔率投注网【​网址​🎉3977·EE​🎉】美洲杯赔率投注网【​网址​🎉3977·EE​🎉】
美洲杯赔率投注网【​网址​🎉3977·EE​🎉】
widenerjobeyrl638
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
Marcin Chrost
 
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
gapen1
 
Enhanced Screen Flows UI/UX using SLDS with Tom Kitt
Enhanced Screen Flows UI/UX using SLDS with Tom KittEnhanced Screen Flows UI/UX using SLDS with Tom Kitt
Enhanced Screen Flows UI/UX using SLDS with Tom Kitt
Peter Caitens
 
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
Luigi Fugaro
 
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdfBaha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid
 
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
XfilesPro
 
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Paul Brebner
 
The Comprehensive Guide to Validating Audio-Visual Performances.pdf
The Comprehensive Guide to Validating Audio-Visual Performances.pdfThe Comprehensive Guide to Validating Audio-Visual Performances.pdf
The Comprehensive Guide to Validating Audio-Visual Performances.pdf
kalichargn70th171
 
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Julian Hyde
 
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
The Third Creative Media
 

Dernier (20)

ppt on the brain chip neuralink.pptx
ppt  on   the brain  chip neuralink.pptxppt  on   the brain  chip neuralink.pptx
ppt on the brain chip neuralink.pptx
 
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
 
Kubernetes at Scale: Going Multi-Cluster with Istio
Kubernetes at Scale:  Going Multi-Cluster  with IstioKubernetes at Scale:  Going Multi-Cluster  with Istio
Kubernetes at Scale: Going Multi-Cluster with Istio
 
Superpower Your Apache Kafka Applications Development with Complementary Open...
Superpower Your Apache Kafka Applications Development with Complementary Open...Superpower Your Apache Kafka Applications Development with Complementary Open...
Superpower Your Apache Kafka Applications Development with Complementary Open...
 
42 Ways to Generate Real Estate Leads - Sellxpert
42 Ways to Generate Real Estate Leads - Sellxpert42 Ways to Generate Real Estate Leads - Sellxpert
42 Ways to Generate Real Estate Leads - Sellxpert
 
ACE - Team 24 Wrapup event at ahmedabad.
ACE - Team 24 Wrapup event at ahmedabad.ACE - Team 24 Wrapup event at ahmedabad.
ACE - Team 24 Wrapup event at ahmedabad.
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
美洲杯赔率投注网【​网址​🎉3977·EE​🎉】
美洲杯赔率投注网【​网址​🎉3977·EE​🎉】美洲杯赔率投注网【​网址​🎉3977·EE​🎉】
美洲杯赔率投注网【​网址​🎉3977·EE​🎉】
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
 
Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
 
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
 
Enhanced Screen Flows UI/UX using SLDS with Tom Kitt
Enhanced Screen Flows UI/UX using SLDS with Tom KittEnhanced Screen Flows UI/UX using SLDS with Tom Kitt
Enhanced Screen Flows UI/UX using SLDS with Tom Kitt
 
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
 
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdfBaha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
 
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
 
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
 
The Comprehensive Guide to Validating Audio-Visual Performances.pdf
The Comprehensive Guide to Validating Audio-Visual Performances.pdfThe Comprehensive Guide to Validating Audio-Visual Performances.pdf
The Comprehensive Guide to Validating Audio-Visual Performances.pdf
 
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)
 
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
 

Building a DSL with GraalVM (Oracle Groundbreaker APAC Virtual Tour)