SlideShare une entreprise Scribd logo
1  sur  61
Télécharger pour lire hors ligne
RMod
1
Mariano Martinez Peck
marianopeck@gmail.com
http://marianopeck.wordpress.com/
Monday, August 22, 2011
What is a proxy?
2
A proxy object is a surrogate or
placeholder that controls access to
another target object.
Monday, August 22, 2011
Glossary
Target: object to proxify.
Client: user of the proxy.
Interceptor: object that intercepts message
sending.
Handler: object that performs a desired
action as a consequence of an interception.
3
Monday, August 22, 2011
Forwarder and
Logging example
4
Monday, August 22, 2011
With or without
Object replacement?
In proxies with object replacement
(#become:), the target object is replaced by a
proxy.
Proxies without object replacement are a
kind of factory.
5
Monday, August 22, 2011
With or without
Object replacement?
In proxies with object replacement
(#become:), the target object is replaced by a
proxy.
Proxies without object replacement are a
kind of factory.
5
Monday, August 22, 2011
Traditional proxy
implementations
6
Usage of a minimal object together with an implementation of a
custom #doesNotUnderstand
doesNotUnderstand:
executeBeforeHandling
executeAfterHandling
target
Proxy
identityHash
pointersTo
nextObject
...
ProtoObject
Monday, August 22, 2011
7
We are going to play
a little game...
Monday, August 22, 2011
8
Are both prints in Transcript the same or not?
Monday, August 22, 2011
8
Are both prints in Transcript the same or not?
Conclusion: methods understood are NOT intercepted.
Is that bad?
Monday, August 22, 2011
8
Are both prints in Transcript the same or not?
Conclusion: methods understood are NOT intercepted.
Is that bad?
Different execution paths Errors difficult to find
Monday, August 22, 2011
9
Do we want the regular #doesNotUnderstand
or to intercept the message?
Monday, August 22, 2011
10
Do we want the regular #doesNotUnderstand
or to intercept the message?
Monday, August 22, 2011
11
I wanted the normal #doesNotUnderstand!!!
Monday, August 22, 2011
12
I wanted the normal #doesNotUnderstand!!!
Monday, August 22, 2011
Problems
#doesNotUnderstand: cannot be trapped like a
regular message.
Mix of handling procedure and proxy
interception.
Only methods that are not understood are
intercepted.
No separation between proxies and handlers
13
This approach is not stratified
Monday, August 22, 2011
14
Subclassing from nil does not solve
the problem.
Monday, August 22, 2011
15
VM CRASH
This solution is not uniform
Monday, August 22, 2011
16
A Uniform, Light-weight and Stratified Proxy
Model and Implementation.
Monday, August 22, 2011
Used hooks
Object replacement (#become:)
Change an object’s class (#adoptInstance:)
Objects as methods (#run:with:in:)
Classes with no method dictionary
(#cannotInterpret:)
17
Monday, August 22, 2011
Object replacement
18
A
B
C
D
A
B
C
D
c become: d
Monday, August 22, 2011
Objects as methods
19
The VM sends #run: aSelector with: anArray in: aReceiver
Monday, August 22, 2011
Objects as methods
19
The VM sends #run: aSelector with: anArray in: aReceiver
So.....We can implement in Proxy:
Monday, August 22, 2011
CLasses with no
method dictionary
20
aProxy
aProxy username
1: #username send
methodDict := nil
ProxyTrap
cannotInterpret: aMessage
Proxy
Object
2: #aProxy lookup
3: Since the method dictionary was nil,
the VM sends #cannotInterpret to
the receiver but starting the lookup in the superclass
4: #cannotInterpret: lookup
References
instance of
message send
lookup
subclass
Monday, August 22, 2011
Ghost model
21
cannotInterpret:
proxyFor:
handler
target
Proxy
initialize
nilMethodDict
ProxyTrap
Object
handleInterception: anInterception
ProxyHandler
handleInterception: anInterception
SimpleForwarderHandler
message
proxy
proxyState
Interception
Monday, August 22, 2011
How it works?
22
cannotInterpret:
proxyFor:
handler
target
Proxy
initialize
nilMethodDict
ProxyTrap
Object
Monday, August 22, 2011
How it works?
22
cannotInterpret:
proxyFor:
handler
target
Proxy
initialize
nilMethodDict
ProxyTrap
Object
Proxy class >>
Monday, August 22, 2011
How it works?
22
cannotInterpret:
proxyFor:
handler
target
Proxy
initialize
nilMethodDict
ProxyTrap
Object
aProxy
‘Mariano’aHandler
instanceOf
Proxy class >>
Monday, August 22, 2011
How it works?
22
cannotInterpret:
proxyFor:
handler
target
Proxy
initialize
nilMethodDict
ProxyTrap
Object
aProxy
‘Mariano’aHandler
instanceOf
Proxy class >>
ProxyTrap class >>
Monday, August 22, 2011
How it works?
22
cannotInterpret:
proxyFor:
handler
target
Proxy
initialize
nilMethodDict
ProxyTrap
Object
aProxy
‘Mariano’aHandler
instanceOf
Proxy class >>
ProxyTrap class >>
Monday, August 22, 2011
How it works?
22
cannotInterpret:
proxyFor:
handler
target
Proxy
initialize
nilMethodDict
ProxyTrap
Object
aProxy
‘Mariano’aHandler
instanceOf
Proxy class >>
Monday, August 22, 2011
aProxy
aProxy username
1: #username send
methodDict := nil
ProxyTrap
cannotInterpret: aMessage
Proxy
Object
2: #aProxy lookup
3: Since the method dictionary was nil,
the VM sends #cannotInterpret to
the receiver but starting the lookup in the superclass
4: #cannotInterpret: lookup
References
instance of
message send
lookup
subclass
How it works?
23
Monday, August 22, 2011
aProxy
aProxy username
1: #username send
methodDict := nil
ProxyTrap
cannotInterpret: aMessage
Proxy
Object
2: #aProxy lookup
3: Since the method dictionary was nil,
the VM sends #cannotInterpret to
the receiver but starting the lookup in the superclass
4: #cannotInterpret: lookup
References
instance of
message send
lookup
subclass
How it works?
23
Monday, August 22, 2011
aProxy
aProxy username
1: #username send
methodDict := nil
ProxyTrap
cannotInterpret: aMessage
Proxy
Object
2: #aProxy lookup
3: Since the method dictionary was nil,
the VM sends #cannotInterpret to
the receiver but starting the lookup in the superclass
4: #cannotInterpret: lookup
References
instance of
message send
lookup
subclass
How it works?
23
Monday, August 22, 2011
aProxy
aProxy username
1: #username send
methodDict := nil
ProxyTrap
cannotInterpret: aMessage
Proxy
Object
2: #aProxy lookup
3: Since the method dictionary was nil,
the VM sends #cannotInterpret to
the receiver but starting the lookup in the superclass
4: #cannotInterpret: lookup
References
instance of
message send
lookup
subclass
How it works?
23
Monday, August 22, 2011
aProxy
aProxy username
1: #username send
methodDict := nil
ProxyTrap
cannotInterpret: aMessage
Proxy
Object
2: #aProxy lookup
3: Since the method dictionary was nil,
the VM sends #cannotInterpret to
the receiver but starting the lookup in the superclass
4: #cannotInterpret: lookup
References
instance of
message send
lookup
subclass
How it works?
23
Monday, August 22, 2011
aProxy
aProxy username
1: #username send
methodDict := nil
ProxyTrap
cannotInterpret: aMessage
Proxy
Object
2: #aProxy lookup
3: Since the method dictionary was nil,
the VM sends #cannotInterpret to
the receiver but starting the lookup in the superclass
4: #cannotInterpret: lookup
References
instance of
message send
lookup
subclass
How it works?
23
Proxy >>
Monday, August 22, 2011
aProxy
aProxy username
1: #username send
methodDict := nil
ProxyTrap
cannotInterpret: aMessage
Proxy
Object
2: #aProxy lookup
3: Since the method dictionary was nil,
the VM sends #cannotInterpret to
the receiver but starting the lookup in the superclass
4: #cannotInterpret: lookup
References
instance of
message send
lookup
subclass
How it works?
23
Proxy >>
SimpleForwarderHandler >>
Monday, August 22, 2011
24
Traditional Ghost
#doesNotUnderstand:
cannot be trapped like a
regular message.
#cannotInterpret: is
trapped like a regular
message.
Mix of handling
procedure and proxy
interception.
No mix of handling
procedure and proxy
interception.
Only methods that are
not understood are
intercepted.
“All” methods are
intercepted.
No separation between
proxies and handlers.
Clear separation between
proxies and handlers.
Monday, August 22, 2011
25
is stratified
Monday, August 22, 2011
Methods not intercepted
26
1) Optimizations done by the Compiler
2) Special shortcut bytecodes between Compiler and VM
2.1) Methods NEVER sent: #== and #class
2.2) Methods that may or may not be executed depending
on the receiver and arguments: e.g. in ‘1+1’ #+ is not
executed. But with ‘1+$C’ #+ is executed.
2.3)Always executed, they are just little optimizations.
Examples #new, #next, #nextPut:, #size, etc.
Monday, August 22, 2011
Methods not intercepted
26
1) Optimizations done by the Compiler
2) Special shortcut bytecodes between Compiler and VM
2.1) Methods NEVER sent: #== and #class
2.2) Methods that may or may not be executed depending
on the receiver and arguments: e.g. in ‘1+1’ #+ is not
executed. But with ‘1+$C’ #+ is executed.
2.3)Always executed, they are just little optimizations.
Examples #new, #next, #nextPut:, #size, etc.
Monday, August 22, 2011
Methods not intercepted
26
1) Optimizations done by the Compiler
2) Special shortcut bytecodes between Compiler and VM
2.1) Methods NEVER sent: #== and #class
2.2) Methods that may or may not be executed depending
on the receiver and arguments: e.g. in ‘1+1’ #+ is not
executed. But with ‘1+$C’ #+ is executed.
2.3)Always executed, they are just little optimizations.
Examples #new, #next, #nextPut:, #size, etc.
Monday, August 22, 2011
Proxy for classes
27
cannotInterpret:
proxyFor:
handler
target
Proxy
initialize
nilMethodDict
ProxyTrap
Object
cannotInterpret:
proxyFor:
superclass
methodDict
format
handler
target
ClassProxy
initialize
nilMethodDict
ClassProxyTrap
logIn:
validate:
username
age
User
Monday, August 22, 2011
Proxy for classes
27
cannotInterpret:
proxyFor:
handler
target
Proxy
initialize
nilMethodDict
ProxyTrap
Object
cannotInterpret:
proxyFor:
superclass
methodDict
format
handler
target
ClassProxy
initialize
nilMethodDict
ClassProxyTrap
logIn:
validate:
username
age
User
Monday, August 22, 2011
Proxy for classes
27
cannotInterpret:
proxyFor:
handler
target
Proxy
initialize
nilMethodDict
ProxyTrap
Object
cannotInterpret:
proxyFor:
superclass
methodDict
format
handler
target
ClassProxy
initialize
nilMethodDict
ClassProxyTrap
logIn:
validate:
username
age
User
Monday, August 22, 2011
Proxy for classes
27
cannotInterpret:
proxyFor:
handler
target
Proxy
initialize
nilMethodDict
ProxyTrap
Object
cannotInterpret:
proxyFor:
superclass
methodDict
format
handler
target
ClassProxy
initialize
nilMethodDict
ClassProxyTrap
logIn:
validate:
username
age
User
Monday, August 22, 2011
Proxy for classes
27
cannotInterpret:
proxyFor:
handler
target
Proxy
initialize
nilMethodDict
ProxyTrap
Object
cannotInterpret:
proxyFor:
superclass
methodDict
format
handler
target
ClassProxy
initialize
nilMethodDict
ClassProxyTrap
aUser
aClassProxy
methodDict = nil
superclass = ClassProxy
logIn:
validate:
username
age
User
instance of
Monday, August 22, 2011
Proxy for classes
27
cannotInterpret:
proxyFor:
handler
target
Proxy
initialize
nilMethodDict
ProxyTrap
Object
cannotInterpret:
proxyFor:
superclass
methodDict
format
handler
target
ClassProxy
initialize
nilMethodDict
ClassProxyTrap
aUser
aClassProxy
methodDict = nil
superclass = ClassProxy
logIn:
validate:
username
age
User
instance of
User name
Monday, August 22, 2011
Proxy for classes
27
cannotInterpret:
proxyFor:
handler
target
Proxy
initialize
nilMethodDict
ProxyTrap
Object
cannotInterpret:
proxyFor:
superclass
methodDict
format
handler
target
ClassProxy
initialize
nilMethodDict
ClassProxyTrap
aUser
aClassProxy
methodDict = nil
superclass = ClassProxy
logIn:
validate:
username
age
User
instance of
aUser username
User name
Monday, August 22, 2011
Proxy for methods
28
Monday, August 22, 2011
Proxy for methods
28
Regular message
Monday, August 22, 2011
Proxy for methods
28
Regular message
Method execution
Monday, August 22, 2011
Proxy for methods
28
Just handling #run:with:in correctly is enough to also
intercept method execution.
Regular message
Method execution
Monday, August 22, 2011
is
29
Uniform
Monday, August 22, 2011
is
29
moreUniform
Monday, August 22, 2011
More features
Low memory footprint.
Compact classes.
Store the minimal needed state.
Easy debugging.
Custom list of messages.
30
Monday, August 22, 2011
Conclusion
31
With a little bit of special support from
the VM (#cannotInterpret hook), we
can have an image-side proxy solution
much better than the classic
#doesNotUnderstand:
Monday, August 22, 2011
Future work
Experiment with immediate proxies
(memory address tag) in VM side.
Think how to correctly intercept non-
executed methods.
32
Monday, August 22, 2011
Links
http://rmod.lille.inria.fr/web/pier/software/
Marea/GhostProxies
http://www.squeaksource.com/Marea.html
33
Monday, August 22, 2011
Mariano Martinez Peck
marianopeck@gmail.com
http://marianopeck.wordpress.com/
RMod
A Uniform, Light-weight and Stratified Proxy Model and
Implementation
Monday, August 22, 2011

Contenu connexe

En vedette

Building you own Pharo images with Metacello
Building you own Pharo images with Metacello Building you own Pharo images with Metacello
Building you own Pharo images with Metacello Mariano Martínez Peck
 
Fungisil vs Zetaclear
Fungisil vs ZetaclearFungisil vs Zetaclear
Fungisil vs Zetaclearemileylogan
 
Store Zones And Communication Styles
Store Zones And Communication StylesStore Zones And Communication Styles
Store Zones And Communication Stylesbeckirowe
 

En vedette (6)

Building you own Pharo images with Metacello
Building you own Pharo images with Metacello Building you own Pharo images with Metacello
Building you own Pharo images with Metacello
 
Fungisil vs Zetaclear
Fungisil vs ZetaclearFungisil vs Zetaclear
Fungisil vs Zetaclear
 
Samsung Vice0
Samsung Vice0Samsung Vice0
Samsung Vice0
 
Clustered Serialization with Fuel
Clustered Serialization with FuelClustered Serialization with Fuel
Clustered Serialization with Fuel
 
TDD with BabyMock 2
TDD with BabyMock 2TDD with BabyMock 2
TDD with BabyMock 2
 
Store Zones And Communication Styles
Store Zones And Communication StylesStore Zones And Communication Styles
Store Zones And Communication Styles
 

Similaire à Understanding Proxies in Smalltalk

Ghost
GhostGhost
GhostESUG
 
Android 1.5 to 3.0: a compatibility journey
Android 1.5 to 3.0: a compatibility journeyAndroid 1.5 to 3.0: a compatibility journey
Android 1.5 to 3.0: a compatibility journeyEmanuele Di Saverio
 
David Glasser in Chicago - Meteor: Past, Present, & Future
David Glasser in Chicago - Meteor: Past, Present, & Future David Glasser in Chicago - Meteor: Past, Present, & Future
David Glasser in Chicago - Meteor: Past, Present, & Future yaliceme
 
Drupal Dev Days 2018 - Autopsy of Vulnerabilities
Drupal Dev Days 2018 - Autopsy of VulnerabilitiesDrupal Dev Days 2018 - Autopsy of Vulnerabilities
Drupal Dev Days 2018 - Autopsy of Vulnerabilitieszekivazquez
 
Lecture: "Advanced Reflection: MetaLinks"
Lecture: "Advanced Reflection: MetaLinks"Lecture: "Advanced Reflection: MetaLinks"
Lecture: "Advanced Reflection: MetaLinks"Marcus Denker
 
VUB Brussels Lecture 2019: Advanced Reflection: MetaLinks
VUB Brussels Lecture 2019: Advanced Reflection: MetaLinksVUB Brussels Lecture 2019: Advanced Reflection: MetaLinks
VUB Brussels Lecture 2019: Advanced Reflection: MetaLinksMarcus Denker
 
Angular 2.0 change detection
Angular 2.0 change detectionAngular 2.0 change detection
Angular 2.0 change detectionRan Wahle
 
Selenium Webdriver Interview Questions
Selenium Webdriver Interview QuestionsSelenium Webdriver Interview Questions
Selenium Webdriver Interview QuestionsJai Singh
 
Are Java Programmers Transitioning to Multicore?
Are Java Programmers Transitioning to Multicore? Are Java Programmers Transitioning to Multicore?
Are Java Programmers Transitioning to Multicore? UFPA
 
Evolve Your Code
Evolve Your CodeEvolve Your Code
Evolve Your CodeRookieOne
 
Дмитрий Копляров , Потокобезопасные сигналы в C++
Дмитрий Копляров , Потокобезопасные сигналы в C++Дмитрий Копляров , Потокобезопасные сигналы в C++
Дмитрий Копляров , Потокобезопасные сигналы в C++Sergey Platonov
 
Lecture. Advanced Reflection: MetaLinks
Lecture. Advanced Reflection: MetaLinksLecture. Advanced Reflection: MetaLinks
Lecture. Advanced Reflection: MetaLinksMarcus Denker
 
DevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation SlidesDevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation SlidesFab L
 
Selenium Training in Chennai Demo Part-2
Selenium Training in Chennai Demo Part-2 Selenium Training in Chennai Demo Part-2
Selenium Training in Chennai Demo Part-2 Thecreating Experts
 
Transparent Object Proxies for JavaScript
Transparent Object Proxies for JavaScriptTransparent Object Proxies for JavaScript
Transparent Object Proxies for JavaScriptMatthias Keil
 
Objective of c in IOS , iOS Live Project Training Ahmedabad, MCA Live Project...
Objective of c in IOS , iOS Live Project Training Ahmedabad, MCA Live Project...Objective of c in IOS , iOS Live Project Training Ahmedabad, MCA Live Project...
Objective of c in IOS , iOS Live Project Training Ahmedabad, MCA Live Project...NicheTech Com. Solutions Pvt. Ltd.
 
We continue checking Microsoft projects: analysis of PowerShell
We continue checking Microsoft projects: analysis of PowerShellWe continue checking Microsoft projects: analysis of PowerShell
We continue checking Microsoft projects: analysis of PowerShellPVS-Studio
 
Nt1310 Unit 3 Language Analysis
Nt1310 Unit 3 Language AnalysisNt1310 Unit 3 Language Analysis
Nt1310 Unit 3 Language AnalysisNicole Gomez
 

Similaire à Understanding Proxies in Smalltalk (20)

Ghost
GhostGhost
Ghost
 
Android 1.5 to 3.0: a compatibility journey
Android 1.5 to 3.0: a compatibility journeyAndroid 1.5 to 3.0: a compatibility journey
Android 1.5 to 3.0: a compatibility journey
 
David Glasser in Chicago - Meteor: Past, Present, & Future
David Glasser in Chicago - Meteor: Past, Present, & Future David Glasser in Chicago - Meteor: Past, Present, & Future
David Glasser in Chicago - Meteor: Past, Present, & Future
 
Drupal Dev Days 2018 - Autopsy of Vulnerabilities
Drupal Dev Days 2018 - Autopsy of VulnerabilitiesDrupal Dev Days 2018 - Autopsy of Vulnerabilities
Drupal Dev Days 2018 - Autopsy of Vulnerabilities
 
Lecture: "Advanced Reflection: MetaLinks"
Lecture: "Advanced Reflection: MetaLinks"Lecture: "Advanced Reflection: MetaLinks"
Lecture: "Advanced Reflection: MetaLinks"
 
VUB Brussels Lecture 2019: Advanced Reflection: MetaLinks
VUB Brussels Lecture 2019: Advanced Reflection: MetaLinksVUB Brussels Lecture 2019: Advanced Reflection: MetaLinks
VUB Brussels Lecture 2019: Advanced Reflection: MetaLinks
 
Angular 2.0 change detection
Angular 2.0 change detectionAngular 2.0 change detection
Angular 2.0 change detection
 
Selenium Webdriver Interview Questions
Selenium Webdriver Interview QuestionsSelenium Webdriver Interview Questions
Selenium Webdriver Interview Questions
 
Are Java Programmers Transitioning to Multicore?
Are Java Programmers Transitioning to Multicore? Are Java Programmers Transitioning to Multicore?
Are Java Programmers Transitioning to Multicore?
 
Evolve Your Code
Evolve Your CodeEvolve Your Code
Evolve Your Code
 
Дмитрий Копляров , Потокобезопасные сигналы в C++
Дмитрий Копляров , Потокобезопасные сигналы в C++Дмитрий Копляров , Потокобезопасные сигналы в C++
Дмитрий Копляров , Потокобезопасные сигналы в C++
 
Lecture. Advanced Reflection: MetaLinks
Lecture. Advanced Reflection: MetaLinksLecture. Advanced Reflection: MetaLinks
Lecture. Advanced Reflection: MetaLinks
 
DevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation SlidesDevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation Slides
 
Selenium Training in Chennai Demo Part-2
Selenium Training in Chennai Demo Part-2 Selenium Training in Chennai Demo Part-2
Selenium Training in Chennai Demo Part-2
 
Transparent Object Proxies for JavaScript
Transparent Object Proxies for JavaScriptTransparent Object Proxies for JavaScript
Transparent Object Proxies for JavaScript
 
Objective of c in IOS , iOS Live Project Training Ahmedabad, MCA Live Project...
Objective of c in IOS , iOS Live Project Training Ahmedabad, MCA Live Project...Objective of c in IOS , iOS Live Project Training Ahmedabad, MCA Live Project...
Objective of c in IOS , iOS Live Project Training Ahmedabad, MCA Live Project...
 
Basics of Java
Basics of JavaBasics of Java
Basics of Java
 
We continue checking Microsoft projects: analysis of PowerShell
We continue checking Microsoft projects: analysis of PowerShellWe continue checking Microsoft projects: analysis of PowerShell
We continue checking Microsoft projects: analysis of PowerShell
 
Angular meteor presentation
Angular meteor presentationAngular meteor presentation
Angular meteor presentation
 
Nt1310 Unit 3 Language Analysis
Nt1310 Unit 3 Language AnalysisNt1310 Unit 3 Language Analysis
Nt1310 Unit 3 Language Analysis
 

Plus de Mariano Martínez Peck

Plus de Mariano Martínez Peck (9)

Smalltalk and Business
Smalltalk and BusinessSmalltalk and Business
Smalltalk and Business
 
Web Development with Smalltalk
Web Development with SmalltalkWeb Development with Smalltalk
Web Development with Smalltalk
 
Object garphs swapping
Object garphs swappingObject garphs swapping
Object garphs swapping
 
Metacello
MetacelloMetacello
Metacello
 
DBXTalk: Smalltalk Relational Database Suite
DBXTalk: Smalltalk Relational Database SuiteDBXTalk: Smalltalk Relational Database Suite
DBXTalk: Smalltalk Relational Database Suite
 
PhD Thesis Defense Presentation
PhD Thesis Defense PresentationPhD Thesis Defense Presentation
PhD Thesis Defense Presentation
 
Visualizing Objects and Memory Usage
Visualizing Objects and Memory UsageVisualizing Objects and Memory Usage
Visualizing Objects and Memory Usage
 
Object swapping issues and the imagesegment implementation
Object swapping issues and the imagesegment implementationObject swapping issues and the imagesegment implementation
Object swapping issues and the imagesegment implementation
 
SqueakDBX
SqueakDBXSqueakDBX
SqueakDBX
 

Dernier

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 

Dernier (20)

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 

Understanding Proxies in Smalltalk