This document discusses proxy objects in Smalltalk. It begins by defining a proxy as a surrogate or placeholder that controls access to another target object. It then describes different approaches to implementing proxies and their limitations, such as issues with traditional approaches that use #doesNotUnderstand:. The document proposes an alternative "ghost model" using #cannotInterpret: to intercept all messages in a uniform way while keeping proxies and handlers separate. It explains how this approach works and advantages it has over traditional proxies. The document also discusses extending this approach to proxy classes and methods.
2015 JavaOne Java EE Connectors - The Secret Weapon ReloadedJonathan Gallimore
The Connector Architecture is one of the least well known and most underused parts of Java EE and often perceived as complicated. Yet this flexible and powerful API can be leveraged to integrate your application with just about any protocol or system. This session breaks through the complexities and explores the possibilities unlocked by key Connector improvements in Java EE 7. It explores simple but powerful real-world connectors—covering SSH, e-mail, and Twitter—that can be used in your own projects. It then presents a simple starter project to show how to build an in-bound connector backed by MDBs, connect to native clients, and employ advanced techniques such as using use CDI scopes for state. There is life beyond HTTP; live it.
BCA, Department of Information Technology and Software Development teaches JAVA Language in the fourth semester. The curriculum of the BCA Course of JIMS is very well updated. In this PDF, the Constructor topic is explained. It is one of the very important Concepts and you need to understand it thoroughly.
Get More on http://www.ManzoorTheTrainer.com
This eBook contains 109 important interview questions along with answers that any web developer looking for a job on MS.Net platform needs to know. This eBook starts with two articles one of which talks about why most of the engineers are jobless and the other say the solution for it. As a technical part I have covered the following MS.Net technologies ASP.Net, C#.Net & ADO.Net and MS SQL Server.
Second edition is also on the way with focus on at least one real time example on each question.
Key features: Point to point | Simple language
2015 JavaOne Java EE Connectors - The Secret Weapon ReloadedJonathan Gallimore
The Connector Architecture is one of the least well known and most underused parts of Java EE and often perceived as complicated. Yet this flexible and powerful API can be leveraged to integrate your application with just about any protocol or system. This session breaks through the complexities and explores the possibilities unlocked by key Connector improvements in Java EE 7. It explores simple but powerful real-world connectors—covering SSH, e-mail, and Twitter—that can be used in your own projects. It then presents a simple starter project to show how to build an in-bound connector backed by MDBs, connect to native clients, and employ advanced techniques such as using use CDI scopes for state. There is life beyond HTTP; live it.
BCA, Department of Information Technology and Software Development teaches JAVA Language in the fourth semester. The curriculum of the BCA Course of JIMS is very well updated. In this PDF, the Constructor topic is explained. It is one of the very important Concepts and you need to understand it thoroughly.
Get More on http://www.ManzoorTheTrainer.com
This eBook contains 109 important interview questions along with answers that any web developer looking for a job on MS.Net platform needs to know. This eBook starts with two articles one of which talks about why most of the engineers are jobless and the other say the solution for it. As a technical part I have covered the following MS.Net technologies ASP.Net, C#.Net & ADO.Net and MS SQL Server.
Second edition is also on the way with focus on at least one real time example on each question.
Key features: Point to point | Simple language
Fungisil et ZetaClear sont remède efficace pour infection fongique des ongles. Ses ingrédients naturels soulagent les infections des ongles et des orteils sans effets secondaires.
Presentation of the research paper entitled "Clustered Serialization with Fuel" in ESUG International Workshop on Smalltalk Technologies (IWST 2011), Edinburgh, Scotland.
Having problems with Android application compatibility? You're not alone.
From the very beginning of the Android platform, developers always had to cope with a very difficult target: developing on a moving platform, a very fast moving one.
Release after release, features and goodies piled up, but, to a minor extent, so did API differentiation. This talk will step through how platform releases can risk jeopardizing professional development of Android applications, analyzing how to keep consistent UI patterns and implementation, and ending with the biggest release since 1.0: Honeycomb.
David Glasser in Chicago - Meteor: Past, Present, & Future yaliceme
David Glasser is a core developer at Meteor Development Group (see his bio at http://www.meteor.com/about/people).
On September 26, 2013, David was a guest at the Meteor Chicago meetup group (http://www.meetup.com/Meteor-Chicago). He spoke about how Meteor has changed in the year since he joined Meteor in September 2012 and showed us what's on the horizon for Meteor's future.
Dear readers, these set of interview questions are designed in a way to help in cracking the automation testing with Selenium Webdriver. In this document we will try to cover all those topics which we generally use with Selenium Webdriver, such as Maven, TestNG etc.
Presentation I gave at the Houston TechFest Sept 2009. This presentation goes over Extension Methods, Lambdas, Expression Trees, and Fluent Interfaces. I also show examples from popular frameworks using these techniques.
Дмитрий Копляров , Потокобезопасные сигналы в C++Sergey Platonov
Распространённые подходы к реализации сигналов (boost, Qt) удобны в однопоточном окружении, но, к сожалению, имеют два недостатка при использовании из нескольких потоков: 1. Нет возможности атомарно подключиться к сигналу и получить текущее состояние объекта. 2. Отключение от сигнала плохо совместимо с идиомой RAII. В результате, “очевидный” код приводит к race condition’ам и обращениям к разрушенным объектам, а “правильный” подразумевает сложные схемы владения (shared_from_this, либо введение функционально избыточных объектов).
В докладе я расскажу об альтернативной реализации сигналов, лишённой этих недостатков, и объясню на примерах её преимущества перед boost::signals2.
We provide best Selenium training in Chennai with real time scenarios. We are the best training institute in Chennai providing the real time training in Chennai
So if you want to learn selenium then you can reach us.We provide best selenium training.
NicheTech is the best mobile development company in Ahmedabad,
We are providing iOS Live Project Training Ahmedabad, We are offering iOS Training Ahmedabad.
Get the best iOS Live Project Training Ahmedabad .
iOS Live Project Training Ahmedabad, iPhone Live Project Training Ahmedabad, iPhone classes Ahmedabad, iPhone Course Ahmedabad
iOS Live Project Ahmedabad:- http://liveprojecttraining.in/
Fungisil et ZetaClear sont remède efficace pour infection fongique des ongles. Ses ingrédients naturels soulagent les infections des ongles et des orteils sans effets secondaires.
Presentation of the research paper entitled "Clustered Serialization with Fuel" in ESUG International Workshop on Smalltalk Technologies (IWST 2011), Edinburgh, Scotland.
Having problems with Android application compatibility? You're not alone.
From the very beginning of the Android platform, developers always had to cope with a very difficult target: developing on a moving platform, a very fast moving one.
Release after release, features and goodies piled up, but, to a minor extent, so did API differentiation. This talk will step through how platform releases can risk jeopardizing professional development of Android applications, analyzing how to keep consistent UI patterns and implementation, and ending with the biggest release since 1.0: Honeycomb.
David Glasser in Chicago - Meteor: Past, Present, & Future yaliceme
David Glasser is a core developer at Meteor Development Group (see his bio at http://www.meteor.com/about/people).
On September 26, 2013, David was a guest at the Meteor Chicago meetup group (http://www.meetup.com/Meteor-Chicago). He spoke about how Meteor has changed in the year since he joined Meteor in September 2012 and showed us what's on the horizon for Meteor's future.
Dear readers, these set of interview questions are designed in a way to help in cracking the automation testing with Selenium Webdriver. In this document we will try to cover all those topics which we generally use with Selenium Webdriver, such as Maven, TestNG etc.
Presentation I gave at the Houston TechFest Sept 2009. This presentation goes over Extension Methods, Lambdas, Expression Trees, and Fluent Interfaces. I also show examples from popular frameworks using these techniques.
Дмитрий Копляров , Потокобезопасные сигналы в C++Sergey Platonov
Распространённые подходы к реализации сигналов (boost, Qt) удобны в однопоточном окружении, но, к сожалению, имеют два недостатка при использовании из нескольких потоков: 1. Нет возможности атомарно подключиться к сигналу и получить текущее состояние объекта. 2. Отключение от сигнала плохо совместимо с идиомой RAII. В результате, “очевидный” код приводит к race condition’ам и обращениям к разрушенным объектам, а “правильный” подразумевает сложные схемы владения (shared_from_this, либо введение функционально избыточных объектов).
В докладе я расскажу об альтернативной реализации сигналов, лишённой этих недостатков, и объясню на примерах её преимущества перед boost::signals2.
We provide best Selenium training in Chennai with real time scenarios. We are the best training institute in Chennai providing the real time training in Chennai
So if you want to learn selenium then you can reach us.We provide best selenium training.
NicheTech is the best mobile development company in Ahmedabad,
We are providing iOS Live Project Training Ahmedabad, We are offering iOS Training Ahmedabad.
Get the best iOS Live Project Training Ahmedabad .
iOS Live Project Training Ahmedabad, iPhone Live Project Training Ahmedabad, iPhone classes Ahmedabad, iPhone Course Ahmedabad
iOS Live Project Ahmedabad:- http://liveprojecttraining.in/
Ideal for learning the basics of java, and can also be used as a school project for class 10 and 12. The document contains illustrative pictures, and carefully selected information to make the basics of java strong. Pls ignore small spelling mistakes made.
We continue checking Microsoft projects: analysis of PowerShellPVS-Studio
It has become a "good tradition" for Microsoft to make their products open-source: CoreFX, .Net Compiler Platform (Roslyn), Code Contracts, MSBuild, and other projects. For us, the developers of PVS-Studio analyzer, it's an opportunity to check well-known projects, tell people (including the project authors themselves) about the bugs we find, and additionally test our analyzer. Today we are going to talk about the errors found in another project by Microsoft, PowerShell.
PhD in Computer Science (mention très honorable) at Ecole Des Mines de Douai and Université
des Sciences et Technologies de Lille 1 (USTL) – INRIA Lille Nord Europe
Title : « Application-Level Virtual Memory for Object-Oriented Systems »
Funding : Ecole Des Mines de Douai.
Supervisor : Prof. Stéphane Ducasse.
Co-supervisors : Dr. Noury Bouraqadi, Dr. Marcus Denker and Dr. Luc Fabresse.
Defended : October, 29th, 2012
Jury : Prof. Robert Hirschfeld, Prof. Christophe Dony, Prof. Jean-Bernard Stefani, Prof. Roel Wuyts,
Prof. Stéphane Ducasse, Dr. Noury Bouraqadi, Dr. Marcus Denker, Dr. Luc Fabresse
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Communications Mining Series - Zero to Hero - Session 1DianaGray10
This session provides introduction to UiPath Communication Mining, importance and platform overview. You will acquire a good understand of the phases in Communication Mining as we go over the platform with you. Topics covered:
• Communication Mining Overview
• Why is it important?
• How can it help today’s business and the benefits
• Phases in Communication Mining
• Demo on Platform overview
• Q/A
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfPeter Spielvogel
Building better applications for business users with SAP Fiori.
• What is SAP Fiori and why it matters to you
• How a better user experience drives measurable business benefits
• How to get started with SAP Fiori today
• How SAP Fiori elements accelerates application development
• How SAP Build Code includes SAP Fiori tools and other generative artificial intelligence capabilities
• How SAP Fiori paves the way for using AI in SAP apps
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
2. What is a proxy?
2
A proxy object is a surrogate or
placeholder that controls access to
another target object.
Monday, August 22, 2011
3. 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
5. 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
6. 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
7. 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
8. 7
We are going to play
a little game...
Monday, August 22, 2011
9. 8
Are both prints in Transcript the same or not?
Monday, August 22, 2011
10. 8
Are both prints in Transcript the same or not?
Conclusion: methods understood are NOT intercepted.
Is that bad?
Monday, August 22, 2011
11. 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
12. 9
Do we want the regular #doesNotUnderstand
or to intercept the message?
Monday, August 22, 2011
13. 10
Do we want the regular #doesNotUnderstand
or to intercept the message?
Monday, August 22, 2011
14. 11
I wanted the normal #doesNotUnderstand!!!
Monday, August 22, 2011
15. 12
I wanted the normal #doesNotUnderstand!!!
Monday, August 22, 2011
16. 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
20. 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
22. Objects as methods
19
The VM sends #run: aSelector with: anArray in: aReceiver
Monday, August 22, 2011
23. Objects as methods
19
The VM sends #run: aSelector with: anArray in: aReceiver
So.....We can implement in Proxy:
Monday, August 22, 2011
24. 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
32. 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
33. 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
34. 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
35. 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
36. 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
37. 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
38. 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
39. 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
41. 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
42. 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
43. 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
54. 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
57. More features
Low memory footprint.
Compact classes.
Store the minimal needed state.
Easy debugging.
Custom list of messages.
30
Monday, August 22, 2011
58. 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
59. 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