SlideShare ist ein Scribd-Unternehmen 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

Weitere ähnliche Inhalte

Mehr von 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
 

Mehr von 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)
 

Kürzlich hochgeladen

Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
Remote DBA Services
 
Preparing Non - Technical Founders for Engaging a Tech Agency
Preparing Non - Technical Founders for Engaging  a  Tech AgencyPreparing Non - Technical Founders for Engaging  a  Tech Agency
Preparing Non - Technical Founders for Engaging a Tech Agency
ISH Technologies
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
ICS
 
Lecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptxLecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptx
TaghreedAltamimi
 
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
kalichargn70th171
 
UI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design SystemUI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design System
Peter Muessig
 
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
 
All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
Alina Yurenko
 
14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision
ShulagnaSarkar2
 
YAML crash COURSE how to write yaml file for adding configuring details
YAML crash COURSE how to write yaml file for adding configuring detailsYAML crash COURSE how to write yaml file for adding configuring details
YAML crash COURSE how to write yaml file for adding configuring details
NishanthaBulumulla1
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
dakas1
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
Sven Peters
 
What next after learning python programming basics
What next after learning python programming basicsWhat next after learning python programming basics
What next after learning python programming basics
Rakesh Kumar R
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
Green Software Development
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
rodomar2
 
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
kalichargn70th171
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
Rakesh Kumar R
 
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
 
SQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure MalaysiaSQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure Malaysia
GohKiangHock
 
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
 

Kürzlich hochgeladen (20)

Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
 
Preparing Non - Technical Founders for Engaging a Tech Agency
Preparing Non - Technical Founders for Engaging  a  Tech AgencyPreparing Non - Technical Founders for Engaging  a  Tech Agency
Preparing Non - Technical Founders for Engaging a Tech Agency
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
 
Lecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptxLecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptx
 
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
 
UI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design SystemUI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design System
 
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 !
 
All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
 
14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision
 
YAML crash COURSE how to write yaml file for adding configuring details
YAML crash COURSE how to write yaml file for adding configuring detailsYAML crash COURSE how to write yaml file for adding configuring details
YAML crash COURSE how to write yaml file for adding configuring details
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
 
What next after learning python programming basics
What next after learning python programming basicsWhat next after learning python programming basics
What next after learning python programming basics
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
 
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
 
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)
 
SQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure MalaysiaSQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure Malaysia
 
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
 

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